Compare commits

...

65 Commits

Author SHA1 Message Date
9e87130d6c Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
0f6a9cdae2 -> v1.30.14 (332) 2023-02-13 13:09:20 +01:00
79ec6430f6 implementata libreria compatibilità LocalDate 2023-02-13 13:08:09 +01:00
0c46fb09c1 Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
8aad7337bf Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
c49197d002 -> v1.30.13 (331) 2023-02-13 11:59:20 +01:00
16f611c147 Merge branch 'master' into develop 2023-02-13 11:56:18 +01:00
7b623913d8 Aggiunto controllo in avvio chiamate rest per evitare che i terminali con android inferiore all'8.0 2023-02-13 11:56:03 +01:00
0a8997f30b Finish v1.30.12(330)#2 2023-02-09 12:09:36 +01:00
702d0a7348 Finish v1.30.12(330)#2 2023-02-09 12:09:36 +01:00
f4ae1fbed3 -> v1.30.12 (330) #2 2023-02-09 12:09:29 +01:00
8c0639be9b Finish v1.30.12(330) 2023-02-09 12:08:34 +01:00
c9ea13a1d2 Finish v1.30.12(330) 2023-02-09 12:08:34 +01:00
bef5423a06 -> v1.30.12 (330) 2023-02-09 12:08:28 +01:00
22b072aff7 Fix su nessun elemento selezionato in DialogChooseArtsFromMtbColrList 2023-02-09 12:07:50 +01:00
50acee47e9 Finish v1.30.11(329) 2023-02-08 17:29:03 +01:00
ba041d1133 Finish v1.30.11(329) 2023-02-08 17:29:03 +01:00
21c26ab3ad -> v1.30.11 (329) 2023-02-08 17:28:55 +01:00
5288ad8bb0 Fix su qta inviate al magazzino automatico 2023-02-08 17:15:47 +01:00
0ccff458f7 Finish v1.30.10(328) 2023-02-08 10:56:46 +01:00
a1c8a52dd2 Finish v1.30.10(328) 2023-02-08 10:56:45 +01:00
e6e8b22554 -> v1.30.10 (328) 2023-02-08 10:56:35 +01:00
9371e5824f Implementato pick extra item sui magazzini automatici 2023-02-08 10:55:33 +01:00
bda1328dec Migliorie nel KeyboardEmulatorBarcodeReader 2023-02-06 18:36:15 +01:00
2030893249 Finish Hotfix-1 2023-02-06 12:59:21 +01:00
fa695ca9a4 Merge branch 'master' into develop 2023-02-06 12:59:21 +01:00
8b9c9437ae -> v1.30.09 (327) #2 2023-02-06 12:59:11 +01:00
6f026145ef Finish v1.30.09(327) 2023-02-06 12:43:23 +01:00
0744d3713e Finish v1.30.09(327) 2023-02-06 12:43:23 +01:00
3275422af8 -> v1.30.09 (327) 2023-02-06 12:43:12 +01:00
a49aab1fb0 Implementata gestione del magazzino automatico in posizionamento merce 2023-02-06 12:33:15 +01:00
e25cc9e825 Refactoring DialogChooseArtsFromMtbColr 2023-02-06 10:46:46 +01:00
92e9529cc5 Merge remote-tracking branch 'origin/develop' into develop 2023-02-02 19:49:25 +01:00
7990f38c37 Completata implementazione del magazzino automatico in Picking Libero 2023-02-02 19:49:18 +01:00
134dff5aba Merge remote-tracking branch 'origin/develop' into develop 2023-02-02 16:47:52 +01:00
0c359e5110 [CARELLI - ORDINI ACQUISTO]
- incrementato tempo di timeout in salvataggio per evitare che gli operatori salvino più volte lo stesso ordine in caso di errore
- aggiunto controllo in caso di qtaProporta nulla
2023-02-02 16:47:44 +01:00
7b913e607e Completata implementazione del magazzino automatico in Picking di Uscita 2023-01-30 19:11:33 +01:00
ee5d30ff80 Rinominato DialogChooseArtsFromListaArts in DialogChooseArtsFromMtbColrList 2023-01-27 10:09:42 +01:00
6c41506a97 Prima implementazione magazzino automatico 2023-01-25 17:44:32 +01:00
ab14d6736c Refactoring dei servizi utilizzati nelle gestioni di Lavorazione / Vendita.
Fix su scansione articoli in Documenti Interni.
2023-01-25 17:11:25 +01:00
b6c82c869e Merge tag 'v1.30.07__325' into develop
v1.30.07 (325)
2023-01-16 12:17:23 +01:00
f3f04e9473 Merge branch 'release/v1.30.07__325' 2023-01-16 12:17:22 +01:00
ef753f9bcd -> v1.30.07 (325) 2023-01-16 12:15:20 +01:00
e764ad1148 Implementata gestione Ean Peso in rettifica giacenze 2023-01-16 11:42:24 +01:00
82cc4f989c Finish v1.30.06__324 2022-12-27 19:05:57 +01:00
650d1670de Finish v1.30.06__324 2022-12-27 19:05:57 +01:00
6ca7943d78 -> v1.30.06 (324) 2022-12-27 19:05:47 +01:00
013646eae3 [CARELLI - ORDINI ACQUISTI] rimossa data cons in salvataggio ordini 2022-12-27 19:03:20 +01:00
341359d871 Merge branch 'release/v1.30.05__323' 2022-12-16 12:54:12 +01:00
545081444c Merge tag 'v1.30.05__323' into develop
v1.30.05__323
2022-12-16 12:54:12 +01:00
b35819c9c9 -> v1.30.05 (323) 2022-12-16 12:52:13 +01:00
ec44275e41 aggiunto destinatario in creazione documenti trasferimento
corretta gestione modifica articolo in ordini acquisto pv
2022-12-16 12:50:56 +01:00
f5d78edfd1 Merge tag 'v1.30.04__322' into develop
v1.30.04__322
2022-12-15 16:20:44 +01:00
9390cd0320 Merge branch 'release/v1.30.04__322' 2022-12-15 16:20:43 +01:00
ca448542c3 -> v1.30.04 (322) 2022-12-15 16:20:20 +01:00
9d3f6f73d9 Rimossa substring del codice GTIN se inizia con 0 o 9. Se ne occupa già il servizio di decodeEan128. 2022-12-15 16:17:39 +01:00
ee35a14518 Merge branch 'release/v1.30.03__321' 2022-12-14 12:42:35 +01:00
b7bb6ad6ac Merge tag 'v1.30.03__321' into develop 2022-12-14 12:42:35 +01:00
011deafb90 -> v1.30.03 (321) 2022-12-14 12:42:10 +01:00
214d98f181 modifiche bottom sheet dialog 2022-12-14 12:35:31 +01:00
dfa2a1106e modifiche bottom sheet dialog 2022-12-14 12:33:36 +01:00
08841537f5 rimosse eccezioni generiche da documenti interni e ordini di acquisto PV 2022-12-14 11:16:34 +01:00
21cf03a50b Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java
2022-12-14 11:15:22 +01:00
356b146e3d rimosse eccezioni generiche da documenti interni e ordini di acquisto PV 2022-12-14 11:14:18 +01:00
a4c9b0cd3a Merge tag 'v1.30.02__320' into develop
v1.30.02__320
2022-12-13 15:42:00 +01:00
163 changed files with 4057 additions and 2276 deletions

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="20119B1E55" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-12-12T15:40:54.351888Z" />
</component>
</project>

15
.idea/git_toolbox_prj.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationEnabledOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
</component>
</project>

View File

@@ -0,0 +1,8 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,com.annimon.stream.Stream,of" />
</inspection_tool>
</profile>
</component>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 320 def appVersionCode = 332
def appVersionName = '1.30.02' def appVersionName = '1.30.14'
signingConfigs { signingConfigs {
release { release {
@@ -31,16 +31,17 @@ android {
} }
} }
compileSdkVersion 32 compileSdkVersion 33
defaultConfig { defaultConfig {
applicationId "it.integry.integrywmsnative" applicationId "it.integry.integrywmsnative"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 32 targetSdkVersion 33
versionCode appVersionCode versionCode appVersionCode
versionName appVersionName versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release signingConfig signingConfigs.release
multiDexEnabled true
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { annotationProcessorOptions {
@@ -115,9 +116,9 @@ dependencies {
implementation 'com.google.android.gms:play-services-basement:18.1.0' implementation 'com.google.android.gms:play-services-basement:18.1.0'
implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.recyclerview:recyclerview:1.2.1'
@@ -156,12 +157,12 @@ dependencies {
implementation 'com.github.pedromassango:doubleClick:3.0' implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM //SQLite ROOM
def room_version = "2.4.3" def room_version = "2.5.0"
implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-rxjava3:$room_version" implementation "androidx.room:room-rxjava3:$room_version"
androidTestImplementation "androidx.room:room-testing:2.4.3" androidTestImplementation "androidx.room:room-testing:2.5.0"
//AppUpdate //AppUpdate
implementation 'com.github.javiersantos:AppUpdater:2.7' implementation 'com.github.javiersantos:AppUpdater:2.7'
@@ -188,9 +189,7 @@ dependencies {
// RxJava is also required. // RxJava is also required.
implementation 'io.reactivex.rxjava2:rxjava:2.1.12' implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.0'
} }
repositories { repositories {

View File

@@ -88,10 +88,14 @@ import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponen
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditComponent; import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditComponent;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditModule; import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditModule;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalComponent;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListModule;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent;
@@ -146,7 +150,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
ProdOrdineProduzioneElencoModule.class, ProdOrdineProduzioneElencoModule.class,
ProdRecuperoMaterialeModule.class, ProdRecuperoMaterialeModule.class,
ProdVersamentoMaterialeModule.class, ProdVersamentoMaterialeModule.class,
DialogChooseArtsFromListaArtsModule.class, DialogChooseArtsFromMtbColrListModule.class,
DocInterniModule.class, DocInterniModule.class,
DialogSelectDocInfoModule.class, DialogSelectDocInfoModule.class,
DocInterniEditFormModule.class, DocInterniEditFormModule.class,
@@ -163,6 +167,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
BottomSheetItemEditModule.class, BottomSheetItemEditModule.class,
BottomSheetInventarioActionsModule.class, BottomSheetInventarioActionsModule.class,
BottomSheetInventarioRowActionsModule.class, BottomSheetInventarioRowActionsModule.class,
BottomSheetMtbColrEditModalModule.class,
DialogChooseArtsFromMtbAartListModule.class,
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
@@ -240,7 +247,7 @@ public interface MainApplicationComponent {
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent(); ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent(); DialogChooseArtsFromMtbColrListComponent.Factory dialogChooseArtsFromListaArtsComponent();
DocInterniComponent.Factory docInterniComponent(); DocInterniComponent.Factory docInterniComponent();
@@ -274,6 +281,10 @@ public interface MainApplicationComponent {
BottomSheetInventarioRowActionsComponent.Factory bottomSheetInventarioRowActionsComponent(); BottomSheetInventarioRowActionsComponent.Factory bottomSheetInventarioRowActionsComponent();
BottomSheetMtbColrEditModalComponent.Factory bottomSheetMtbColrEditModalComponent();
DialogChooseArtsFromMtbAartListComponent.Factory dialogDialogDialogChooseArtsFromMtbAartListViewComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);

View File

@@ -22,13 +22,16 @@ import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DocumentiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
@@ -254,4 +257,22 @@ public class MainApplicationModule {
return new DocumentiRESTConsumer(); return new DocumentiRESTConsumer();
} }
@Provides
@Singleton
ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer() {
return new ColliSpedizioneRESTConsumer();
}
@Provides
@Singleton
ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer() {
return new ColliLavorazioneRESTConsumer();
}
@Provides
@Singleton
MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer() {
return new MagazzinoAutomaticoRESTConsumer();
}
} }

View File

@@ -1,13 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public interface IOrdiniVendita {
void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
}

View File

@@ -0,0 +1,11 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public interface OrdiniVenditaInterface {
boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini);
}

View File

@@ -255,7 +255,7 @@ public class ArticoloOrdine {
public int checkQtaProposta() { public int checkQtaProposta() {
int check = 0; int check = 0;
if (!qtaProposta.equals(BigDecimal.ZERO)) { if (qtaProposta != null && !qtaProposta.equals(BigDecimal.ZERO)) {
check = BigDecimal.valueOf(qtaOrd).compareTo(qtaProposta); check = BigDecimal.valueOf(qtaOrd).compareTo(qtaProposta);
} }
return check; return check;

View File

@@ -15,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository { public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository {
@@ -53,6 +54,7 @@ public class ArticoliOrdineDataSource extends BaseDataSource implements Articoli
} }
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) { public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
articolo.setDataIns(UtilityDate.getDateInstance());
if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) { if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) {
execute(() -> mArticoloOrdineDao.update(articolo), onSuccess, onError); execute(() -> mArticoloOrdineDao.update(articolo), onSuccess, onError);
} else { } else {

View File

@@ -18,7 +18,6 @@ public class BindableBoolean implements Observable {
this.mValue = startValue; this.mValue = startValue;
} }
@Override @Override
public void addOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) { public void addOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) {
synchronized (this) { synchronized (this) {

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class ArtNotFoundInGridException extends Exception {
public ArtNotFoundInGridException() {
super(UtilityResources.getString(R.string.lu_already_attache_to_doc));
}
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class GridNotFoundException extends Exception {
public GridNotFoundException() {
super(UtilityResources.getString(R.string.grid_not_found));
}
public GridNotFoundException(String codAlis) {
super(UtilityResources.getString(R.string.grid_not_found) + " (" + codAlis + ")");
}
}

View File

@@ -0,0 +1,11 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class InvalidLicenseException extends Exception {
public InvalidLicenseException() {
super(UtilityResources.getString(R.string.invalid_license));
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class InvalidOrderedQtyException extends Exception {
public InvalidOrderedQtyException() {
super(UtilityResources.getString(R.string.invalid_quantity_ordered));
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class NoArtsInGridException extends Exception {
public NoArtsInGridException() {
super(UtilityResources.getString(R.string.no_arts_in_grid));
}
}

View File

@@ -0,0 +1,11 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public final class NoDocTypeSelectedException extends Exception {
public NoDocTypeSelectedException() {
super(UtilityResources.getString(R.string.no_doc_type_selected));
}
}

View File

@@ -1,8 +0,0 @@
package it.integry.integrywmsnative.core.exception;
public class NotValidLicenseException extends Exception {
public NotValidLicenseException() {
super("Licenza non valida");
}
}

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.exception;
public class RestException extends Exception {
public RestException(String message) {
super(message);
}
}

View File

@@ -37,14 +37,12 @@ public class BaseActivity extends AppCompatActivity {
public void onLoadingEnded() { public void onLoadingEnded() {
this.closeProgress(); this.closeProgress();
BarcodeManager.enable();
} }
public void onError(Exception ex) { public void onError(Exception ex) {
this.runOnUiThread(() -> { this.runOnUiThread(() -> {
this.closeProgress(); this.closeProgress();
UtilityExceptions.defaultException(this, ex); UtilityExceptions.defaultException(this, ex);
BarcodeManager.enable();
}); });
} }

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.expansion; package it.integry.integrywmsnative.core.expansion;
import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
@@ -18,7 +19,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class BaseDialogFragment extends DialogFragment { public class BaseDialogFragment extends DialogFragment implements DialogInterface.OnShowListener {
@Inject @Inject
public DialogProgressView mCurrentProgress; public DialogProgressView mCurrentProgress;
@@ -41,20 +42,7 @@ public class BaseDialogFragment extends DialogFragment {
@Override @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
this.initialize();
MainApplication.appComponent
.baseDialogFragmentComponent()
.create()
.inject(this);
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
getDialog().setOnKeyListener((dialog, keyCode, event) -> {
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false;
});
}
} }
public void onLoadingStarted() { public void onLoadingStarted() {
@@ -107,4 +95,24 @@ public class BaseDialogFragment extends DialogFragment {
} }
@Override
public void onShow(DialogInterface dialogInterface) {
this.initialize();
}
private void initialize() {
MainApplication.appComponent
.baseDialogFragmentComponent()
.create()
.inject(this);
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator() && getDialog() != null) {
getDialog().setOnKeyListener((dialog, keyCode, event) -> {
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false;
});
}
}
} }

View File

@@ -0,0 +1,6 @@
package it.integry.integrywmsnative.core.expansion;
public interface RunnableArgsssss<S, T, U, V, X> {
void run(S data1, T data2, U data3, V data4, X data5);
}

View File

@@ -2,16 +2,16 @@ package it.integry.integrywmsnative.core.model;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsItemModel; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListItemModel;
public class CheckableMtbColr { public class CheckableMtbColr {
private DialogChooseArtsFromListaArtsItemModel item; private DialogChooseArtsFromMtbColrListItemModel item;
private BindableBoolean checked = new BindableBoolean(false); private BindableBoolean checked = new BindableBoolean(false);
private BindableBoolean hidden = new BindableBoolean(false); private BindableBoolean hidden = new BindableBoolean(false);
public CheckableMtbColr(DialogChooseArtsFromListaArtsItemModel item) { public CheckableMtbColr(DialogChooseArtsFromMtbColrListItemModel item) {
this.item = item; this.item = item;
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@@ -22,11 +22,11 @@ public class CheckableMtbColr {
}); });
} }
public DialogChooseArtsFromListaArtsItemModel getItem() { public DialogChooseArtsFromMtbColrListItemModel getItem() {
return item; return item;
} }
public CheckableMtbColr setItem(DialogChooseArtsFromListaArtsItemModel item) { public CheckableMtbColr setItem(DialogChooseArtsFromMtbColrListItemModel item) {
this.item = item; this.item = item;
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@@ -60,8 +60,4 @@ public class CheckableMtbColr {
this.hidden = hidden; this.hidden = hidden;
return this; return this;
} }
public void toggleCheck() {
this.checked.set(!this.checked.get());
}
} }

View File

@@ -600,33 +600,6 @@ public class MtbColt extends EntityBase {
} }
} }
/*if (filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) {
for (int i = 0; i < filtroOrdineDtos.size(); i++) {
FiltroOrdineDTO x = filtroOrdineDtos.get(i);
try {
whereCond.append("(");
whereCond.append(String.format("d.g = %s AND d.d = %s and d.n = %s",
UtilityDB.valueToString(x.getGestioneOrd()),
UtilityDB.valueToString(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)),
UtilityDB.valueToString(x.getNumOrd())));
if (!UtilityString.isNullOrEmpty(x.getDataConsS())) {
whereCond.append(String.format(" AND dr.dc = %s",
UtilityDB.valueToString(UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))));
}
whereCond.append(")");
if (i < filtroOrdineDtos.size() - 1) {
whereCond.append(" OR ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}*/
whereCond = TextUtils.join(" OR ", conditions); whereCond = TextUtils.join(" OR ", conditions);
this.filtroOrdini = xmlPrefix + whereCond + xmlSuffix; this.filtroOrdini = xmlPrefix + whereCond + xmlSuffix;

View File

@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.model; package it.integry.integrywmsnative.core.model;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class MtbDepoPosizione { public class MtbDepoPosizione {
@@ -11,6 +12,8 @@ public class MtbDepoPosizione {
private String flagLineaProduzione; private String flagLineaProduzione;
private Integer priorita; private Integer priorita;
private String tipoMagazAutomatico;
public MtbDepoPosizione clone() { public MtbDepoPosizione clone() {
@@ -85,4 +88,17 @@ public class MtbDepoPosizione {
this.priorita = priorita; this.priorita = priorita;
return this; return this;
} }
public String getTipoMagazAutomatico() {
return tipoMagazAutomatico;
}
public MtbDepoPosizione setTipoMagazAutomatico(String tipoMagazAutomatico) {
this.tipoMagazAutomatico = tipoMagazAutomatico;
return this;
}
public boolean isMagazzinoAutomatico() {
return !UtilityString.isNullOrEmpty(getTipoMagazAutomatico());
}
} }

View File

@@ -270,4 +270,23 @@ public class MvwSitArtUdcDetInventario {
this.mtbAart = mtbAart; this.mtbAart = mtbAart;
return this; return this;
} }
public MtbColr toMtbColr() {
return new MtbColr()
.setCodJcom(getCodJcom())
.setCodMart(getCodMart())
.setDataCollo(getDataCollo())
.setNumCollo(getNumCollo())
.setSerCollo(getSerCollo())
.setGestione(getGestione())
.setMtbAart(getMtbAart())
.setNumCnf(getNumCnf())
.setQtaCnf(getQtaCnf())
.setQtaCol(getQtaCol())
.setPartitaMag(getPartitaMag())
.setPesoNettoKg(getPesoNettoKg())
.setPesoLordoKg(getPesoLordoKg())
.setUntMis(getUntMis());
}
} }

View File

@@ -59,20 +59,17 @@ public class RESTBuilder {
String endpoint = "http://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : ""); String endpoint = "http://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : "");
Gson gson = new GsonBuilder() Gson gson = new GsonBuilder()
.setDateFormat("dd/MM/yyyy HH:mm:ss") .setDateFormat("dd/MM/yyyy HH:mm:ss")
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.registerTypeAdapter(LocalDate.class, new LocalDateDeserializer()) .registerTypeAdapter(LocalDate.class, new LocalDateDeserializer())
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer()) .registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer()) .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()) .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.create(); .create();
Retrofit retrofit = new Retrofit.Builder() Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(endpoint).client(client).build();
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(endpoint)
.client(client)
.build();
return retrofit.create(service); return retrofit.create(service);
} }

View File

@@ -0,0 +1,158 @@
package it.integry.integrywmsnative.core.rest.consumers;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.uds.CanUDSBeDeletedRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements ColliScaricoRESTConsumerInterface {
public void createUDS(CreateUDSRequestDTO createUDSRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.createUDS(createUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<CreateUDSResponseDTO>> call, Response<ServiceRESTResponse<CreateUDSResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/createUDS", data -> onComplete.run(data.getMtbColt()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<CreateUDSResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override
public void closeUDS(CloseUDSRequestDTO closeUDSRequestDTO, RunnableArgs<CloseUDSResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.closeUDS(closeUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<CloseUDSResponseDTO>> call, Response<ServiceRESTResponse<CloseUDSResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/closeUDS", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<CloseUDSResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override
public void canUDSBeDeleted(CanUDSBeDeletedRequestDTO canUDSBeDeletedRequestDTO, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.canUDSBeDeleted(canUDSBeDeletedRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Boolean>> call, Response<ServiceRESTResponse<Boolean>> response) {
analyzeAnswer(response, "lavorazione/canUDSBeDeleted", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Boolean>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override
public void deleteUDS(DeleteUDSRequestDTO deleteUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.deleteUDS(deleteUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "lavorazione/deleteUDS", Void -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override
public void printUDS(PrintUDSRequestDTO printUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.printUDS(printUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "lavorazione/printUDS", Void -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override
public void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.insertUDSRow(insertUDSRowRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> call, Response<ServiceRESTResponse<InsertUDSRowResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/insertUDSRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override
public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.deleteUDSRow(deleteUDSRowRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "lavorazione/deleteUDSRow", data -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,41 @@
package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.uds.CanUDSBeDeletedRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface ColliLavorazioneRESTConsumerService {
@POST("wms/lavorazione/createUDS")
Call<ServiceRESTResponse<CreateUDSResponseDTO>> createUDS(@Body CreateUDSRequestDTO createUDSRequestDTO);
@POST("wms/lavorazione/closeUDS")
Call<ServiceRESTResponse<CloseUDSResponseDTO>> closeUDS(@Body CloseUDSRequestDTO createUDSRequestDTO);
@POST("wms/lavorazione/canUDSBeDeleted")
Call<ServiceRESTResponse<Boolean>> canUDSBeDeleted(@Body CanUDSBeDeletedRequestDTO canUDSBeDeletedRequestDTO);
@POST("wms/lavorazione/deleteUDS")
Call<ServiceRESTResponse<Void>> deleteUDS(@Body DeleteUDSRequestDTO deleteUDSRequestDTO);
@POST("wms/lavorazione/printUDS")
Call<ServiceRESTResponse<Void>> printUDS(@Body PrintUDSRequestDTO printUDSRequestDTO);
@POST("wms/lavorazione/insertUDSRow")
Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> insertUDSRow(@Body InsertUDSRowRequestDTO insertUDSRowRequestDTO);
@POST("wms/lavorazione/deleteUDSRow")
Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO);
}

View File

@@ -4,8 +4,6 @@ import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Optional; import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -29,7 +27,6 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO;
@@ -280,48 +277,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();
}, onFailed); }, onFailed);
} }
public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
DistribuzioneColloDTO distribuzioneColloDTO = new DistribuzioneColloDTO()
.setCriterioDistribuzione(criterioDistribuzione)
.setDataCollo(mtbColtToDistribute.getDataColloS())
.setNumCollo(mtbColtToDistribute.getNumCollo())
.setGestione(mtbColtToDistribute.getGestione())
.setSerCollo(mtbColtToDistribute.getSerCollo());
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.distribuisciCollo(distribuzioneColloDTO)
.enqueue(new Callback<ServiceRESTResponse<JsonObject>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) {
analyzeAnswerList(response, "DistribuzioneCollo", obj -> {
Gson gson = new Gson();
List<JsonObject> jsons = response.body().getEntityList();
List<MtbColt> newList = new ArrayList<>();
if (jsons != null) {
for (int i = 0; i < jsons.size(); i++) {
JsonObject jsonTmp = jsons.get(i);
newList.add(gson.fromJson(jsonTmp, MtbColt.class));
}
}
onComplete.run(newList);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<JsonObject>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() { colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() {

View File

@@ -0,0 +1,154 @@
package it.integry.integrywmsnative.core.rest.consumers;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.uds.CanUDSBeDeletedRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements ColliScaricoRESTConsumerInterface {
public void createUDS(CreateUDSRequestDTO createUDSRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.createUDS(createUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<CreateUDSResponseDTO>> call, Response<ServiceRESTResponse<CreateUDSResponseDTO>> response) {
analyzeAnswer(response, "spedizione/createUDS", data -> onComplete.run(data.getMtbColt()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<CreateUDSResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void closeUDS(CloseUDSRequestDTO closeUDSRequestDTO, RunnableArgs<CloseUDSResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.closeUDS(closeUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<CloseUDSResponseDTO>> call, Response<ServiceRESTResponse<CloseUDSResponseDTO>> response) {
analyzeAnswer(response, "spedizione/closeUDS", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<CloseUDSResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void canUDSBeDeleted(CanUDSBeDeletedRequestDTO canUDSBeDeletedRequestDTO, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.canUDSBeDeleted(canUDSBeDeletedRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Boolean>> call, Response<ServiceRESTResponse<Boolean>> response) {
analyzeAnswer(response, "spedizione/canUDSBeDeleted", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Boolean>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void deleteUDS(DeleteUDSRequestDTO deleteUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.deleteUDS(deleteUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "spedizione/deleteUDS", Void -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void printUDS(PrintUDSRequestDTO printUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.printUDS(printUDSRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "spedizione/printUDS", Void -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.insertUDSRow(insertUDSRowRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> call, Response<ServiceRESTResponse<InsertUDSRowResponseDTO>> response) {
analyzeAnswer(response, "spedizione/insertUDSRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.deleteUDSRow(deleteUDSRowRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "spedizione/deleteUDSRow", data -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,41 @@
package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.uds.CanUDSBeDeletedRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface ColliSpedizioneRESTConsumerService {
@POST("wms/spedizione/createUDS")
Call<ServiceRESTResponse<CreateUDSResponseDTO>> createUDS(@Body CreateUDSRequestDTO createUDSRequestDTO);
@POST("wms/spedizione/closeUDS")
Call<ServiceRESTResponse<CloseUDSResponseDTO>> closeUDS(@Body CloseUDSRequestDTO createUDSRequestDTO);
@POST("wms/spedizione/canUDSBeDeleted")
Call<ServiceRESTResponse<Boolean>> canUDSBeDeleted(@Body CanUDSBeDeletedRequestDTO canUDSBeDeletedRequestDTO);
@POST("wms/spedizione/deleteUDS")
Call<ServiceRESTResponse<Void>> deleteUDS(@Body DeleteUDSRequestDTO deleteUDSRequestDTO);
@POST("wms/spedizione/printUDS")
Call<ServiceRESTResponse<Void>> printUDS(@Body PrintUDSRequestDTO printUDSRequestDTO);
@POST("wms/spedizione/insertUDSRow")
Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> insertUDSRow(@Body InsertUDSRowRequestDTO insertUDSRowRequestDTO);
@POST("wms/spedizione/deleteUDSRow")
Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO);
}

View File

@@ -2,11 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Optional; import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -15,7 +11,11 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton @Singleton
public class GiacenzaRESTConsumer extends _BaseRESTConsumer { public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
@@ -30,17 +30,12 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
} }
public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) { public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) {
GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
giacenzaRESTConsumerService.retrieveAvailableItems(posizione.getPosizione()).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Response<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> response) {
analyzeAnswer(response, "getGiacenzeInPosizione", inventarioList -> {
HashMap<String, Object> params = new HashMap<>();
params.put("posizione", posizione.getPosizione());
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
String query = "SELECT * from mvw_sitart_udc_det_inventario" +
" WHERE " + whereCond;
Type typeOfObjectsList = new TypeToken<ArrayList<MvwSitArtUdcDetInventario>>() {
}.getType();
this.mSystemRESTConsumer.<ArrayList<MvwSitArtUdcDetInventario>>processSql(query, typeOfObjectsList, inventarioList -> {
List<String> codMarts = Stream.of(inventarioList) List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim()) .map(x -> x.getCodMart().trim())
.toList(); .toList();
@@ -65,5 +60,12 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
}, onFailed); }, onFailed);
} }
@Override
public void onFailure(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
} }

View File

@@ -1,4 +1,17 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface GiacenzaRESTConsumerService { public interface GiacenzaRESTConsumerService {
@GET("wms/giacenza/availableItems")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItems(
@Query("posizione") String posizione);
} }

View File

@@ -0,0 +1,52 @@
package it.integry.integrywmsnative.core.rest.consumers;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer {
public void pickItems(MtbDepoPosizione posizione, MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class);
magazzinoAutomaticoRESTConsumerService.pickItems(posizione.getPosizione(), magazzinoAutomaticoPickItemsRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "magazzino-automatico/pickItems", data -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void putItems(MtbDepoPosizione posizione, MagazzinoAutomaticoPutItemsRequestDTO magazzinoAutomaticoPutItemsRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class);
magazzinoAutomaticoRESTConsumerService.putItems(posizione.getPosizione(), magazzinoAutomaticoPutItemsRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "magazzino-automatico/putItems", data -> onComplete.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface MagazzinoAutomaticoRESTConsumerService {
@POST("wms/magazzino-automatico/{posizione}/pickItems")
Call<ServiceRESTResponse<Void>> pickItems(
@Path("posizione") String posizione,
@Body MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO);
@POST("wms/magazzino-automatico/{posizione}/putItems")
Call<ServiceRESTResponse<Void>> putItems(
@Path("posizione") String posizione,
@Body MagazzinoAutomaticoPutItemsRequestDTO magazzinoAutomaticoPutItemsRequestDTO);
}

View File

@@ -47,7 +47,7 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
public void saveOrdine(SaveDTO saveDTO, RunnableArgs<DtbOrdt> onComplete, RunnableArgs<Exception> onFailed) { public void saveOrdine(SaveDTO saveDTO, RunnableArgs<DtbOrdt> onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class, 240);
service.saveOrdine(saveDTO) service.saveOrdine(saveDTO)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@Override @Override

View File

@@ -46,9 +46,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
} }
public void getSuggestedPickingList(String codMdep, List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete, RunnableArgs<Exception> onFailed) { public void getSuggestedPickingList(String codMdep, List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete, RunnableArgs<Exception> onFailed) {
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90);
service service
.getSuggestedPickingList(codMdep, sitArtOrdList) .getSuggestedPickingList(codMdep, sitArtOrdList)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@@ -109,7 +107,6 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Throwable t) {
UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@@ -97,7 +97,6 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
} }
ordineDTO.setChiaveGriglia(ordine.getCodAlis()); ordineDTO.setChiaveGriglia(ordine.getCodAlis());
ordineDTO.setDataCons(UtilityDate.getDateInstance());
ordineDTO.setArtRows(artRows); ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O"); saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO); saveDTO.setOrdineDTO(ordineDTO);

View File

@@ -66,10 +66,9 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
} }
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
Call<ServiceRESTResponse<Object>> callable = null; printerService
callable = printerService.printCollo(testataColloToPrint); .printCollo(testataColloToPrint)
.enqueue(new Callback<>() {
callable.enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) { public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "printCollo", data -> { analyzeAnswer(response, "printCollo", data -> {

View File

@@ -5,11 +5,11 @@ import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.exception.NotValidLicenseException; import it.integry.integrywmsnative.core.exception.InvalidLicenseException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.CommonRESTException; import it.integry.integrywmsnative.core.rest.CommonRESTException;
import it.integry.integrywmsnative.core.rest.model.EsitoType; import it.integry.integrywmsnative.core.rest.model.EsitoType;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Response; import retrofit2.Response;
@@ -30,8 +30,9 @@ public abstract class _BaseRESTConsumer {
onComplete.run(dataObj); onComplete.run(dataObj);
} }
} else { } else {
Log.e(logTitle, response.body().getErrorMessage()); String errorMessage = UtilityString.isNull(response.body().getErrorMessage(), "Empty message");
onFailed.run(CommonRESTException.tryRecognizeException(response.body().getErrorMessage())); Log.e(logTitle, errorMessage);
onFailed.run(CommonRESTException.tryRecognizeException(errorMessage));
} }
} else { } else {
Log.e(logTitle, response.message()); Log.e(logTitle, response.message());
@@ -39,11 +40,10 @@ public abstract class _BaseRESTConsumer {
} }
} else { } else {
if (response.code() == 404) { if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url() + ")"); Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url().toString() + ")");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url() + ")")); onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} } else if (response.code() == 550)
else if (response.code() == 550) onFailed.run(new InvalidLicenseException());
onFailed.run(new NotValidLicenseException());
else { else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message()); Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
@@ -78,7 +78,7 @@ public abstract class _BaseRESTConsumer {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata"); Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} else if (response.code() == 550) } else if (response.code() == 550)
onFailed.run(new NotValidLicenseException()); onFailed.run(new InvalidLicenseException());
else { else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message()); Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
@@ -117,7 +117,7 @@ public abstract class _BaseRESTConsumer {
Log.e(logTitle, "Errore " + responseList.code() + ": risorsa non trovata"); Log.e(logTitle, "Errore " + responseList.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + responseList.code() + ": risorsa non trovata (" + logTitle + ")")); onFailed.run(new Exception("Errore " + responseList.code() + ": risorsa non trovata (" + logTitle + ")"));
} else if (responseList.code() == 550) } else if (responseList.code() == 550)
onFailed.run(new NotValidLicenseException()); onFailed.run(new InvalidLicenseException());
else { else {
Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message()); Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message())); onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));

View File

@@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.rest.consumers.interfaces;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.uds.CanUDSBeDeletedRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
public interface ColliScaricoRESTConsumerInterface {
void createUDS(CreateUDSRequestDTO createUDSRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed);
void closeUDS(CloseUDSRequestDTO closeUDSRequestDTO, RunnableArgs<CloseUDSResponseDTO> onComplete, RunnableArgs<Exception> onFailed);
void canUDSBeDeleted(CanUDSBeDeletedRequestDTO canUDSBeDeletedRequestDTO, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed);
void deleteUDS(DeleteUDSRequestDTO deleteUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed);
void printUDS(PrintUDSRequestDTO printUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed);
void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed);
void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed);
}

View File

@@ -26,6 +26,7 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
private String ragSocCom; private String ragSocCom;
private String ragSocOrd; private String ragSocOrd;
private String destinatario; private String destinatario;
private String codVdes;
private String citta; private String citta;
private String provincia; private String provincia;
private String indirizzo; private String indirizzo;
@@ -424,4 +425,13 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
return this; return this;
} }
} }
public String getCodVdes() {
return codVdes;
}
public OrdineUscitaInevasoDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
} }

View File

@@ -0,0 +1,71 @@
package it.integry.integrywmsnative.core.rest.model.magazzino_automatico;
import java.math.BigDecimal;
public class MagazzinoAutomaticoPickItemRequestDTO {
private String codMart;
private String partitaMag;
private String untMis;
private BigDecimal qtaTot;
private BigDecimal qtaCnf;
private BigDecimal numCnf;
public MagazzinoAutomaticoPickItemRequestDTO(String codMart) {
this.codMart = codMart;
}
public String getCodMart() {
return codMart;
}
public MagazzinoAutomaticoPickItemRequestDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public MagazzinoAutomaticoPickItemRequestDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getUntMis() {
return untMis;
}
public MagazzinoAutomaticoPickItemRequestDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaTot() {
return qtaTot;
}
public MagazzinoAutomaticoPickItemRequestDTO setQtaTot(BigDecimal qtaTot) {
this.qtaTot = qtaTot;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public MagazzinoAutomaticoPickItemRequestDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public MagazzinoAutomaticoPickItemRequestDTO setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
}

View File

@@ -0,0 +1,59 @@
package it.integry.integrywmsnative.core.rest.model.magazzino_automatico;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
public class MagazzinoAutomaticoPickItemsRequestDTO {
private boolean shouldCreateUDS;
private String defaultGestioneOfNewUDS;
private List<MagazzinoAutomaticoPickOrderRequestDTO> ordersOfNewUDS;
private MtbColt inputMtbColt;
private List<MagazzinoAutomaticoPickItemRequestDTO> itemsToPick;
public boolean isShouldCreateUDS() {
return shouldCreateUDS;
}
public MagazzinoAutomaticoPickItemsRequestDTO setShouldCreateUDS(boolean shouldCreateUDS) {
this.shouldCreateUDS = shouldCreateUDS;
return this;
}
public String getDefaultGestioneOfNewUDS() {
return defaultGestioneOfNewUDS;
}
public MagazzinoAutomaticoPickItemsRequestDTO setDefaultGestioneOfNewUDS(String defaultGestioneOfNewUDS) {
this.defaultGestioneOfNewUDS = defaultGestioneOfNewUDS;
return this;
}
public List<MagazzinoAutomaticoPickOrderRequestDTO> getOrdersOfNewUDS() {
return ordersOfNewUDS;
}
public MagazzinoAutomaticoPickItemsRequestDTO setOrdersOfNewUDS(List<MagazzinoAutomaticoPickOrderRequestDTO> ordersOfNewUDS) {
this.ordersOfNewUDS = ordersOfNewUDS;
return this;
}
public MtbColt getInputMtbColt() {
return inputMtbColt;
}
public MagazzinoAutomaticoPickItemsRequestDTO setInputMtbColt(MtbColt inputMtbColt) {
this.inputMtbColt = inputMtbColt;
return this;
}
public List<MagazzinoAutomaticoPickItemRequestDTO> getItemsToPick() {
return itemsToPick;
}
public MagazzinoAutomaticoPickItemsRequestDTO setItemsToPick(List<MagazzinoAutomaticoPickItemRequestDTO> itemsToPick) {
this.itemsToPick = itemsToPick;
return this;
}
}

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.rest.model.magazzino_automatico;
import java.time.LocalDate;
public class MagazzinoAutomaticoPickOrderRequestDTO {
private final String type = "dtb_ordr";
private LocalDate dataCons;
private LocalDate dataOrd;
private String gestione;
private int numOrd;
public MagazzinoAutomaticoPickOrderRequestDTO(LocalDate dataOrd, String gestione, int numOrd) {
this.dataOrd = dataOrd;
this.gestione = gestione;
this.numOrd = numOrd;
}
public LocalDate getDataOrd() {
return dataOrd;
}
public String getGestione() {
return gestione;
}
public int getNumOrd() {
return numOrd;
}
public LocalDate getDataCons() {
return dataCons;
}
public MagazzinoAutomaticoPickOrderRequestDTO setDataCons(LocalDate dataCons) {
this.dataCons = dataCons;
return this;
}
public String getType() {
return type;
}
}

View File

@@ -0,0 +1,18 @@
package it.integry.integrywmsnative.core.rest.model.magazzino_automatico;
import it.integry.integrywmsnative.core.model.MtbColt;
public class MagazzinoAutomaticoPutItemsRequestDTO {
private MtbColt inputMtbColt;
public MtbColt getInputMtbColt() {
return inputMtbColt;
}
public MagazzinoAutomaticoPutItemsRequestDTO setInputMtbColt(MtbColt inputMtbColt) {
this.inputMtbColt = inputMtbColt;
return this;
}
}

View File

@@ -0,0 +1,18 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColt;
public class CanUDSBeDeletedRequestDTO {
private MtbColt mtbColt;
public MtbColt getMtbColt() {
return mtbColt;
}
public CanUDSBeDeletedRequestDTO setMtbColt(MtbColt mtbColt) {
this.mtbColt = mtbColt;
return this;
}
}

View File

@@ -0,0 +1,47 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColt;
public class CloseUDSRequestDTO {
private boolean printSSCC;
private boolean enableTransferLogic;
private String orderCodMdep;
private MtbColt mtbColt;
public boolean isPrintSSCC() {
return printSSCC;
}
public CloseUDSRequestDTO setPrintSSCC(boolean printSSCC) {
this.printSSCC = printSSCC;
return this;
}
public boolean isEnableTransferLogic() {
return enableTransferLogic;
}
public CloseUDSRequestDTO setEnableTransferLogic(boolean enableTransferLogic) {
this.enableTransferLogic = enableTransferLogic;
return this;
}
public String getOrderCodMdep() {
return orderCodMdep;
}
public CloseUDSRequestDTO setOrderCodMdep(String orderCodMdep) {
this.orderCodMdep = orderCodMdep;
return this;
}
public MtbColt getMtbColt() {
return mtbColt;
}
public CloseUDSRequestDTO setMtbColt(MtbColt mtbColt) {
this.mtbColt = mtbColt;
return this;
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
public class CloseUDSResponseDTO {
private boolean saved;
private boolean deleted;
private List<MtbColt> generatedMtbColts;
public boolean isSaved() {
return saved;
}
public boolean isDeleted() {
return deleted;
}
public List<MtbColt> getGeneratedMtbColts() {
return generatedMtbColts;
}
}

View File

@@ -0,0 +1,85 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import java.util.List;
public class CreateUDSRequestDTO {
private String codMdep;
private int segno;
private String ragSoc;
private Integer numCollo;
private String serCollo;
private int causaleCollo;
private List<CreateUDSRequestOrderDTO> orders;
public String getCodMdep() {
return codMdep;
}
public CreateUDSRequestDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public int getSegno() {
return segno;
}
public CreateUDSRequestDTO setSegno(int segno) {
this.segno = segno;
return this;
}
public String getRagSoc() {
return ragSoc;
}
public CreateUDSRequestDTO setRagSoc(String ragSoc) {
this.ragSoc = ragSoc;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public CreateUDSRequestDTO setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public CreateUDSRequestDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public int getCausaleCollo() {
return causaleCollo;
}
public CreateUDSRequestDTO setCausaleCollo(int causaleCollo) {
this.causaleCollo = causaleCollo;
return this;
}
public List<CreateUDSRequestOrderDTO> getOrders() {
return orders;
}
public CreateUDSRequestDTO setOrders(List<CreateUDSRequestOrderDTO> orders) {
this.orders = orders;
return this;
}
public static class Causale {
public static final int SCARICO = 0;
public static final int POSIZIONAMENTO = 1;
}
}

View File

@@ -0,0 +1,49 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import java.time.LocalDate;
public class CreateUDSRequestOrderDTO {
private String gestione;
private LocalDate dataOrd;
private LocalDate dataCons;
private int numOrd;
public String getGestione() {
return gestione;
}
public CreateUDSRequestOrderDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public LocalDate getDataOrd() {
return dataOrd;
}
public CreateUDSRequestOrderDTO setDataOrd(LocalDate dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public LocalDate getDataCons() {
return dataCons;
}
public CreateUDSRequestOrderDTO setDataCons(LocalDate dataCons) {
this.dataCons = dataCons;
return this;
}
public int getNumOrd() {
return numOrd;
}
public CreateUDSRequestOrderDTO setNumOrd(int numOrd) {
this.numOrd = numOrd;
return this;
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColt;
public class CreateUDSResponseDTO {
private MtbColt mtbColt;
public MtbColt getMtbColt() {
return mtbColt;
}
}

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColt;
public class DeleteUDSRequestDTO {
private MtbColt mtbColt;
public MtbColt getMtbColt() {
return mtbColt;
}
public DeleteUDSRequestDTO setMtbColt(MtbColt mtbColt) {
this.mtbColt = mtbColt;
return this;
}
}

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColr;
public class DeleteUDSRowRequestDTO {
private MtbColr mtbColrToDelete;
public MtbColr getMtbColrToDelete() {
return mtbColrToDelete;
}
public DeleteUDSRowRequestDTO setMtbColrToDelete(MtbColr mtbColrToDelete) {
this.mtbColrToDelete = mtbColrToDelete;
return this;
}
}

View File

@@ -0,0 +1,92 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import java.math.BigDecimal;
import java.time.LocalDate;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
public class InsertUDSRowRequestDTO {
private MtbColr sourceMtbColr;
private MtbColt targetMtbColt;
private String codMart;
private BigDecimal qtaTot;
private BigDecimal qtaCnf;
private BigDecimal numCnf;
private String partitaMag;
private LocalDate dataScad;
public MtbColr getSourceMtbColr() {
return sourceMtbColr;
}
public InsertUDSRowRequestDTO setSourceMtbColr(MtbColr sourceMtbColr) {
this.sourceMtbColr = sourceMtbColr;
return this;
}
public MtbColt getTargetMtbColt() {
return targetMtbColt;
}
public InsertUDSRowRequestDTO setTargetMtbColt(MtbColt targetMtbColt) {
this.targetMtbColt = targetMtbColt;
return this;
}
public String getCodMart() {
return codMart;
}
public InsertUDSRowRequestDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public BigDecimal getQtaTot() {
return qtaTot;
}
public InsertUDSRowRequestDTO setQtaTot(BigDecimal qtaTot) {
this.qtaTot = qtaTot;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public InsertUDSRowRequestDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public InsertUDSRowRequestDTO setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public InsertUDSRowRequestDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public LocalDate getDataScad() {
return dataScad;
}
public InsertUDSRowRequestDTO setDataScad(LocalDate dataScad) {
this.dataScad = dataScad;
return this;
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColr;
public class InsertUDSRowResponseDTO {
private MtbColr savedMtbColr;
public MtbColr getSavedMtbColr() {
return savedMtbColr;
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
public class PrintUDSRequestDTO {
private List<MtbColt> mtbColts;
public List<MtbColt> getMtbColts() {
return mtbColts;
}
public PrintUDSRequestDTO setMtbColts(List<MtbColt> mtbColts) {
this.mtbColts = mtbColts;
return this;
}
}

View File

@@ -12,12 +12,12 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class ServerStatusChecker { public class ServerStatusChecker {
private static ServerStatusChecker instance = new ServerStatusChecker(); private static final ServerStatusChecker instance = new ServerStatusChecker();
private List<RunnableArgs<Boolean>> mCallback = new ArrayList<>(); private final List<RunnableArgs<Boolean>> mCallback = new ArrayList<>();
private RunnableArgs<Boolean> mInternalCallback = value -> { private final RunnableArgs<Boolean> mInternalCallback = value -> {
for (RunnableArgs callback : mCallback) { for (RunnableArgs<Boolean> callback : mCallback) {
callback.run(value); callback.run(value);
} }
}; };
@@ -26,8 +26,8 @@ public class ServerStatusChecker {
private final long MILLIS_DELAY = 5 * 1000; private final long MILLIS_DELAY = 5 * 1000;
private Handler handler = new Handler(); private final Handler handler = new Handler();
private Runnable runnableCode = new Runnable() { private final Runnable runnableCode = new Runnable() {
@Override @Override
public void run() { public void run() {
if (shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().getServer().getHost())) { if (shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().getServer().getHost())) {

View File

@@ -215,15 +215,6 @@ public class DBSettingsModel {
return this; return this;
} }
public boolean isFlagUseNewPickingListSpedizione() {
return flagUseNewPickingListSpedizione;
}
public DBSettingsModel setFlagUseNewPickingListSpedizione(boolean flagUseNewPickingListSpedizione) {
this.flagUseNewPickingListSpedizione = flagUseNewPickingListSpedizione;
return this;
}
public boolean isFlagVersamentoDirettoProduzione() { public boolean isFlagVersamentoDirettoProduzione() {
return flagVersamentoDirettoProduzione; return flagVersamentoDirettoProduzione;
} }

View File

@@ -356,7 +356,6 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "SPEDIZIONE", "ENABLE_CHECK_DEPOSITO", Boolean.class)); dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "SPEDIZIONE", "ENABLE_CHECK_DEPOSITO", Boolean.class));
dbSettingsModelIstance.setFlagForceAllToColli(getValueFromList(list, "SETUP", "FLAG_FORCE_ALL_TO_COLLI", Boolean.class)); dbSettingsModelIstance.setFlagForceAllToColli(getValueFromList(list, "SETUP", "FLAG_FORCE_ALL_TO_COLLI", Boolean.class));
dbSettingsModelIstance.setFlagAskPesoColloSpedizione(getValueFromList(list, "SETUP", "FLAG_ASK_PESO_COLLO", Boolean.class)); dbSettingsModelIstance.setFlagAskPesoColloSpedizione(getValueFromList(list, "SETUP", "FLAG_ASK_PESO_COLLO", Boolean.class));
dbSettingsModelIstance.setFlagUseNewPickingListSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_NEW_PICKING_LIST", Boolean.class));
dbSettingsModelIstance.setFlagVersamentoDirettoProduzione(getValueFromList(list, "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO", Boolean.class)); dbSettingsModelIstance.setFlagVersamentoDirettoProduzione(getValueFromList(list, "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO", Boolean.class));
dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class));
dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class));

View File

@@ -44,9 +44,9 @@ public class UtilityDate {
} }
public static Date recognizeDateWithExceptionHandler(String dateString) { public static Date recognizeDateWithExceptionHandler(String dateString) {
try{ try {
return UtilityDate.recognizeDate(dateString); return UtilityDate.recognizeDate(dateString);
} catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex){ } catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex) {
UtilityLogger.error(pex); UtilityLogger.error(pex);
return null; return null;
} }
@@ -64,9 +64,9 @@ public class UtilityDate {
char dateSeparator; char dateSeparator;
String onlyDateSubstring = dateString.substring(0, 10); String onlyDateSubstring = dateString.substring(0, 10);
if(onlyDateSubstring.contains("/")) dateSeparator = '/'; if (onlyDateSubstring.contains("/")) dateSeparator = '/';
else if(onlyDateSubstring.contains("-")) dateSeparator = '-'; else if (onlyDateSubstring.contains("-")) dateSeparator = '-';
else if(onlyDateSubstring.contains(".")) dateSeparator = '.'; else if (onlyDateSubstring.contains(".")) dateSeparator = '.';
else throw new DateNotRecognizedException(dateString); else throw new DateNotRecognizedException(dateString);
String dateFormatString = (dateString.charAt(2) == dateSeparator) String dateFormatString = (dateString.charAt(2) == dateSeparator)
@@ -74,13 +74,13 @@ public class UtilityDate {
: "yyyy" + dateSeparator + "MM" + dateSeparator + "dd"; : "yyyy" + dateSeparator + "MM" + dateSeparator + "dd";
if(dateString.length() > 10){ if (dateString.length() > 10) {
char timeSeparator; char timeSeparator;
String onlyTimeSubstring = dateString.substring(10, 14); String onlyTimeSubstring = dateString.substring(10, 14);
if(onlyTimeSubstring.contains("-")) timeSeparator = '-'; if (onlyTimeSubstring.contains("-")) timeSeparator = '-';
else if(onlyTimeSubstring.contains(":")) timeSeparator = ':'; else if (onlyTimeSubstring.contains(":")) timeSeparator = ':';
else throw new TimeNotRecognizedException(dateString); else throw new TimeNotRecognizedException(dateString);
String timeFormatString = "HH" + timeSeparator + "mm" + timeSeparator + "ss"; String timeFormatString = "HH" + timeSeparator + "mm" + timeSeparator + "ss";
@@ -99,12 +99,11 @@ public class UtilityDate {
public static String formatDate(Date dateToFormat, String format) { public static String formatDate(Date dateToFormat, String format) {
if(dateToFormat != null) { if (dateToFormat != null) {
SimpleDateFormat sdf = new SimpleDateFormat(format); SimpleDateFormat sdf = new SimpleDateFormat(format);
//sdf.setTimeZone(TimeZone.getTimeZone("GMT")); //sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
return sdf.format(dateToFormat); return sdf.format(dateToFormat);
} } else return null;
else return null;
} }
@@ -116,7 +115,7 @@ public class UtilityDate {
public static Date getDateInstance(boolean removeTime) { public static Date getDateInstance(boolean removeTime) {
var calendar = getCalendarInstance(); var calendar = getCalendarInstance();
if(removeTime) { if (removeTime) {
calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.SECOND, 0);
@@ -131,8 +130,6 @@ public class UtilityDate {
} }
public static String formatDate(LocalDate dateToFormat, String format) { public static String formatDate(LocalDate dateToFormat, String format) {
if (dateToFormat != null) { if (dateToFormat != null) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
@@ -185,7 +182,6 @@ public class UtilityDate {
} }
public static LocalDate getNow() { public static LocalDate getNow() {
return Instant.now() return Instant.now()
.atZone(currentZone) .atZone(currentZone)
@@ -197,6 +193,7 @@ public class UtilityDate {
.atZone(currentZone) .atZone(currentZone)
.toLocalDateTime(); .toLocalDateTime();
} }
public static LocalDate timeToLocalDate(long time, @Nullable String timezone) { public static LocalDate timeToLocalDate(long time, @Nullable String timezone) {
return Instant.ofEpochSecond(time) return Instant.ofEpochSecond(time)
.atZone(timezone == null ? currentZone : ZoneId.of(timezone)) .atZone(timezone == null ? currentZone : ZoneId.of(timezone))
@@ -210,7 +207,6 @@ public class UtilityDate {
} }
public static long localDateTimeToTime(LocalDateTime localDateTime, @Nullable String timezone) { public static long localDateTimeToTime(LocalDateTime localDateTime, @Nullable String timezone) {
return localDateTime return localDateTime
.atZone(timezone == null ? currentZone : ZoneId.of(timezone)) .atZone(timezone == null ? currentZone : ZoneId.of(timezone))

View File

@@ -5,7 +5,7 @@ import java.net.InetSocketAddress;
import java.net.Socket; import java.net.Socket;
import java.net.SocketAddress; import java.net.SocketAddress;
import it.integry.integrywmsnative.core.exception.NotValidLicenseException; import it.integry.integrywmsnative.core.exception.InvalidLicenseException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.gest.login.exception.ServerNotReachableException; import it.integry.integrywmsnative.gest.login.exception.ServerNotReachableException;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
@@ -43,7 +43,7 @@ public class UtilityServer {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(String.format("http://%s:%d/ems-api/retail/status", serverAddress, serverTCPport)) .url(String.format("http://%s:%d/ems-api/system/ok", serverAddress, serverTCPport))
.build(); .build();
try { try {
@@ -54,7 +54,7 @@ public class UtilityServer {
else if (response.code() == 404) else if (response.code() == 404)
onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, null)); onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, null));
else if (response.code() == 550) else if (response.code() == 550)
onFailed.run(new NotValidLicenseException()); onFailed.run(new InvalidLicenseException());
else onFailed.run(new Exception("Errore non identificato (STATUS: " + response.code() + ")")); else onFailed.run(new Exception("Errore non identificato (STATUS: " + response.code() + ")"));
} catch (IOException e) { } catch (IOException e) {
onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, e)); onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, e));

View File

@@ -294,9 +294,6 @@ public class AccettazionePickingViewModel {
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
this.sendError(new LUScanNotGrantedException()); this.sendError(new LUScanNotGrantedException());
} else { } else {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1);
}
PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model); PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model);
this.loadArticolo(barcodeProd, pickDataDTO, onComplete); this.loadArticolo(barcodeProd, pickDataDTO, onComplete);

View File

@@ -12,6 +12,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.di.BindableInteger;
import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel;
@@ -160,7 +161,7 @@ public class DocInterniViewModel {
public void newDocument() { public void newDocument() {
SqlMtbColt document = new SqlMtbColt(); SqlMtbColt document = new SqlMtbColt();
if (this.dtbTipi.getValue() == null) { if (this.dtbTipi.getValue() == null) {
this.sendError(new Exception("Nessun tipo documento selezionato!")); this.sendError(new NoDocTypeSelectedException());
return; return;
} }
document.setCodDtipProvv(this.getCodDtip()); document.setCodDtipProvv(this.getCodDtip());

View File

@@ -43,13 +43,13 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
public class DocInterniEditFormActivity extends BaseActivity implements DocInterniEditFormViewModel.Listener, BottomSheetMtbColrEditView.Listener { public class DocInterniEditFormActivity extends BaseActivity implements DocInterniEditFormViewModel.Listener, BottomSheetMtbColrEditModalView.Listener {
private static final String DATA_KEY_DOCUMENT = "document"; private static final String DATA_KEY_DOCUMENT = "document";
private static final String DATA_KEY_PRODUCTS_LIST = "productsList"; private static final String DATA_KEY_PRODUCTS_LIST = "productsList";
@@ -144,7 +144,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
binding.toolbar.setTitle(R.string.edit_doc); binding.toolbar.setTitle(R.string.edit_doc);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp); FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
binding.bottomSheetMtbColrEdit.setListener(this);
} }
private void initViewModel() { private void initViewModel() {
@@ -159,8 +159,9 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
binding.documentRowsList.setAdapter(listAdapter); binding.documentRowsList.setAdapter(listAdapter);
binding.documentRowsList.setLayoutManager(new LinearLayoutManager(this)); binding.documentRowsList.setLayoutManager(new LinearLayoutManager(this));
listAdapter.setOnItemClicked(row -> { listAdapter.setOnItemClicked(row -> {
binding.bottomSheetMtbColrEdit.setMtbColr(sqlToEntity(row)); new BottomSheetMtbColrEditModalView(sqlToEntity(row))
binding.bottomSheetMtbColrEdit.expand(); .setListener(this)
.show(getSupportFragmentManager(), "BottomSheetMtbColrEditModal");
}); });
} }

View File

@@ -19,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -129,12 +130,12 @@ public class DocInterniEditFormViewModel {
public void onSearch(String search) { public void onSearch(String search) {
GrigliaAcquistiChildDTO articolo = this.searchArticolo(search); GrigliaAcquistiChildDTO articolo = this.searchArticolo(search);
if (articolo == null) { if (articolo == null) {
this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); this.sendError(new NoResultFromBarcodeException());
return; return;
} }
List<SqlMtbColr> rows = this.getRowsForArticolo(articolo); List<SqlMtbColr> rows = this.getRowsForArticolo(articolo);
if (rows.isEmpty()) { if (rows.isEmpty()) {
this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); this.sendError(new NoResultFromBarcodeException());
} }
if (rows.size() > 1) { if (rows.size() > 1) {
this.listener.onMultipleRowsFound(rows, articolo); this.listener.onMultipleRowsFound(rows, articolo);

View File

@@ -4,6 +4,7 @@ import com.google.gson.JsonObject;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.exception.RestException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
@@ -35,7 +36,7 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<DocInterniSetupDTO>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<DocInterniSetupDTO>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new RestException(t.getMessage()));
} }
}); });
} }
@@ -50,7 +51,7 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new RestException(t.getMessage()));
} }
}); });
} }

View File

@@ -82,6 +82,7 @@ public class DialogAskInfoInventarioView extends BaseDialogFragment {
.create(); .create();
alertDialog.setCanceledOnTouchOutside(cancelable); alertDialog.setCanceledOnTouchOutside(cancelable);
alertDialog.setOnShowListener(this);
return alertDialog; return alertDialog;
} }
} }

View File

@@ -30,7 +30,7 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration; import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverDTO; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverDTO;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -40,13 +40,16 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDimension; import it.integry.integrywmsnative.core.utility.UtilityDimension;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainBinding; import it.integry.integrywmsnative.databinding.FragmentMainBinding;
import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding; import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
@@ -61,6 +64,13 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
@Inject @Inject
ColliDataRecoverService colliDataRecoverService; ColliDataRecoverService colliDataRecoverService;
@Inject
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer;
@Inject
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer;
@Inject @Inject
MenuService menuService; MenuService menuService;
@@ -189,36 +199,50 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
cyclicRecover(sessionsIterator, onComplete, onFailed); cyclicRecover(sessionsIterator, onComplete, onFailed);
}; };
if (sessionsIterator.hasNext()) { if (!sessionsIterator.hasNext()) {
onComplete.run();
return;
}
Integer recoveredMtbColtID = sessionsIterator.next(); Integer recoveredMtbColtID = sessionsIterator.next();
ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID); ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID);
MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt(); MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt();
if (recoveredMtbColt != null && (recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA || recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) { if (recoveredMtbColt != null &&
(recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA ||
recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) {
IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
boolean isTransferLogicEnabled = ordiniVendita != null && ordiniVendita.isTrasfOrder(recoveredMtbColtDto.getTestateOrdini());
this.colliMagazzinoRESTConsumer.updateDataFine(recoveredMtbColt, () -> { var closeUDSRequestDto = new CloseUDSRequestDTO()
ordiniVendita.distribuisciCollo(recoveredMtbColt, recoveredMtbColtDto.getTestateOrdini(), .setMtbColt(recoveredMtbColt)
mtbColts -> { //.setPrintSSCC(shouldPrint)
.setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep())
.setEnableTransferLogic(isTransferLogicEnabled);
RunnableArgs<CloseUDSResponseDTO> onRequestComplete = closeUDSResponseDto -> {
colliDataRecoverService.closeSession(recoveredMtbColtID); colliDataRecoverService.closeSession(recoveredMtbColtID);
cyclicRecover(sessionsIterator, onComplete, onFailed); cyclicRecover(sessionsIterator, onComplete, onFailed);
}, ex -> { };
tmpOnFailed.run(ex, recoveredMtbColtID);
} switch (recoveredMtbColt.getGestioneEnum()) {
); case LAVORAZIONE:
}, ex -> { colliLavorazioneRESTConsumer.closeUDS(closeUDSRequestDto, onRequestComplete, ex -> {
tmpOnFailed.run(ex, recoveredMtbColtID); tmpOnFailed.run(ex, recoveredMtbColtID);
}); });
break;
case VENDITA:
colliSpedizioneRESTConsumer.closeUDS(closeUDSRequestDto, onRequestComplete, ex -> {
tmpOnFailed.run(ex, recoveredMtbColtID);
});
break;
}
} else { } else {
colliDataRecoverService.closeSession(recoveredMtbColtID); colliDataRecoverService.closeSession(recoveredMtbColtID);
cyclicRecover(sessionsIterator, onComplete, onFailed); cyclicRecover(sessionsIterator, onComplete, onFailed);
} }
} else {
onComplete.run();
}
} }
private void collapseNoConnectionLayout() { private void collapseNoConnectionLayout() {
@@ -314,7 +338,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
public void toggleEasterEggMode() { public void toggleEasterEggMode() {
easterEggToggle =! easterEggToggle; easterEggToggle = !easterEggToggle;
int rootBgStart, rootBgEnd; int rootBgStart, rootBgEnd;

View File

@@ -12,6 +12,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaese
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViaggioLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViaggioLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
public class OrdiniUscitaElencoBindings { public class OrdiniUscitaElencoBindings {
@@ -28,6 +29,7 @@ public class OrdiniUscitaElencoBindings {
public static final int TERM_CONS_FILTER_ID = 8; public static final int TERM_CONS_FILTER_ID = 8;
public static final int DATA_CONS_FILTER_ID = 9; public static final int DATA_CONS_FILTER_ID = 9;
public static final int GRUPPO_MERC_FILTER_ID = 10; public static final int GRUPPO_MERC_FILTER_ID = 10;
public static final int COMMESSA_FILTER_ID = 11;
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{ public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
put(DEPOSITO_FILTER_ID, new FilterChipDTO() put(DEPOSITO_FILTER_ID, new FilterChipDTO()
@@ -94,6 +96,12 @@ public class OrdiniUscitaElencoBindings {
.setPosizione(7) .setPosizione(7)
.setFilterChipText("Gruppo merceologico") .setFilterChipText("Gruppo merceologico")
.setFilterLayoutView(new FilterGruppoMercLayoutView())); .setFilterLayoutView(new FilterGruppoMercLayoutView()));
put(COMMESSA_FILTER_ID, new FilterChipDTO()
.setID(COMMESSA_FILTER_ID)
.setPosizione(11)
.setFilterChipText("Commessa")
.setFilterLayoutView(new FilterCommessaLayoutView()));
}}; }};
} }

View File

@@ -38,6 +38,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.model.MtbDepo;
@@ -45,6 +46,7 @@ import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
@@ -66,6 +68,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViagg
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.VenditaFiltroOrdiniViewModel; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.VenditaFiltroOrdiniViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
@@ -83,6 +86,9 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
@Inject @Inject
ArticoloRESTConsumer mArticoloRESTConsumer; ArticoloRESTConsumer mArticoloRESTConsumer;
@Inject
CommessaRESTConsumer mCommessaRESTConsumer;
@Inject @Inject
OrdiniUscitaElencoViewModel mViewModel; OrdiniUscitaElencoViewModel mViewModel;
@@ -104,6 +110,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
private List<MtbDepo> mtbDepoCache; private List<MtbDepo> mtbDepoCache;
private List<MtbGrup> mtbGrupCache; private List<MtbGrup> mtbGrupCache;
private List<JtbComt> jtbComtCache;
public OrdiniUscitaElencoFragment() { public OrdiniUscitaElencoFragment() {
// Required empty public constructor // Required empty public constructor
@@ -193,7 +200,9 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), v -> { this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), v -> {
this.onLoadingStarted(); this.onLoadingStarted();
this.initMtbGrupsCache(this::onLoadingEnded); this.initMtbGrupsCache(() -> {
this.initJtbComtCache(this::onLoadingEnded);
});
mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue()); mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
@@ -265,6 +274,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentTermConsPredicate().addOnPropertyChangedCallback(onPredicateChanged); mAppliedFilterViewModel.getCurrentTermConsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentDataConsPredicate().addOnPropertyChangedCallback(onPredicateChanged); mAppliedFilterViewModel.getCurrentDataConsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged); mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(onPredicateChanged);
List<FilterChipDTO> filterList = Stream.of(OrdiniUscitaElencoBindings.AVAILABLE_FILTERS.entrySet()) List<FilterChipDTO> filterList = Stream.of(OrdiniUscitaElencoBindings.AVAILABLE_FILTERS.entrySet())
.map(Map.Entry::getValue) .map(Map.Entry::getValue)
@@ -527,6 +537,31 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
}); });
break; break;
case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID:
mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentCommessaPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> {
mAppliedFilterViewModel.setCommessaFilter(null);
mAppliedFilterViewModel.getCurrentCommessaPredicate().set(null);
});
break;
} }
this.mBindings.filterChipsGroup.addView(filterChipView); this.mBindings.filterChipsGroup.addView(filterChipView);
@@ -559,6 +594,19 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
.getFilterLayoutView(); .getFilterLayoutView();
switch (filterChipDTO.getID()) { switch (filterChipDTO.getID()) {
case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID:
((FilterCommessaLayoutView) filterLayoutView)
.setAllCommesse(mAppliedFilterViewModel.getAllCommesse(this.jtbComtCache))
.setAvailableCommesse(mAppliedFilterViewModel.getAvailableCommesse(this.jtbComtCache))
.setOnFilterApplied(mAppliedFilterViewModel::setCommessaFilter)
.setPreSelectedCommesse(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentCommessaPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentCommessaPredicate().get())
.map(x -> Stream.of(jtbComtCache).filter(y -> x.getCodJcom().equalsIgnoreCase(y.getCodJcom())).findFirst().get())
.toList());
break;
case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID: case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID:
((FilterDepositoLayoutView) filterLayoutView) ((FilterDepositoLayoutView) filterLayoutView)
.setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache)) .setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache))
@@ -865,4 +913,23 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
onComplete.run(); onComplete.run();
}, this::onError); }, this::onError);
} }
private void initJtbComtCache(Runnable onComplete) {
if (this.mViewModel.getOrderList().getValue() == null) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue()))
.flatMap(x -> Stream.of(x.getCodJcom()))
.toList();
this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> {
this.jtbComtCache = jtbComtCache;
onComplete.run();
}, this::onError);
}
} }

View File

@@ -13,6 +13,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbGrup; import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
@@ -33,6 +34,7 @@ public class VenditaFiltroOrdiniViewModel {
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentAutomezzoPredicate = new ObservableField<>(); private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentAutomezzoPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentPaesePredicate = new ObservableField<>(); private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentPaesePredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentGruppoMercPredicate = new ObservableField<>(); private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentGruppoMercPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentCommessaPredicate = new ObservableField<>();
private Date selectedDataCons = null; private Date selectedDataCons = null;
private List<MtbGrup> selectedMtbGrup = new ArrayList<>(); private List<MtbGrup> selectedMtbGrup = new ArrayList<>();
@@ -123,6 +125,14 @@ public class VenditaFiltroOrdiniViewModel {
} }
} }
public void setCommessaFilter(List<JtbComt> jtbComtList) {
if (jtbComtList == null || jtbComtList.isEmpty()) currentCommessaPredicate.set(null);
else {
List<String> codJcoms = Stream.of(jtbComtList).map(JtbComt::getCodJcom).toList();
currentCommessaPredicate.set(o -> codJcoms.contains(o.getCodJcom()));
}
}
public void setGruppoMercFilter(List<MtbGrup> mtbGrupList) { public void setGruppoMercFilter(List<MtbGrup> mtbGrupList) {
if (mtbGrupList == null || mtbGrupList.isEmpty()) { if (mtbGrupList == null || mtbGrupList.isEmpty()) {
currentGruppoMercPredicate.set(null); currentGruppoMercPredicate.set(null);
@@ -159,7 +169,8 @@ public class VenditaFiltroOrdiniViewModel {
currentIdViaggioPredicate.get() == null && currentIdViaggioPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
returnList = this.initialOrderList; returnList = this.initialOrderList;
} else { } else {
@@ -175,7 +186,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) && (currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
); );
returnList = tmpStream.toList(); returnList = tmpStream.toList();
@@ -228,6 +240,10 @@ public class VenditaFiltroOrdiniViewModel {
return currentGruppoMercPredicate; return currentGruppoMercPredicate;
} }
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentCommessaPredicate() {
return currentCommessaPredicate;
}
public List<MtbDepo> getAllCodMdeps(List<MtbDepo> mtbDepoFullList) { public List<MtbDepo> getAllCodMdeps(List<MtbDepo> mtbDepoFullList) {
List<String> codMdeps = Stream.of(initialOrderList) List<String> codMdeps = Stream.of(initialOrderList)
.map(OrdineInevasoDTO::getCodMdep) .map(OrdineInevasoDTO::getCodMdep)
@@ -253,7 +269,8 @@ public class VenditaFiltroOrdiniViewModel {
currentIdViaggioPredicate.get() == null && currentIdViaggioPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllCodMdeps(mtbDepoFullList); return getAllCodMdeps(mtbDepoFullList);
} else { } else {
@@ -268,7 +285,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) && (currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineInevasoDTO::getCodMdep) .map(OrdineInevasoDTO::getCodMdep)
.distinct() .distinct()
@@ -305,7 +323,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllIDViaggio(); return getAllIDViaggio();
} else { } else {
@@ -320,7 +339,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getIdViaggio) .map(OrdineUscitaInevasoDTO::getIdViaggio)
.distinct() .distinct()
@@ -350,7 +370,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllNumOrds(); return getAllNumOrds();
} else { } else {
@@ -365,7 +386,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getNumOrd) .map(OrdineUscitaInevasoDTO::getNumOrd)
.distinct() .distinct()
@@ -395,7 +417,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllClienti(); return getAllClienti();
} else { } else {
@@ -410,7 +433,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getRagSocOrd) .map(OrdineUscitaInevasoDTO::getRagSocOrd)
.distinct() .distinct()
@@ -440,7 +464,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllVettori(); return getAllVettori();
} else { } else {
@@ -455,7 +480,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : "")) .map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : ""))
.distinct() .distinct()
@@ -485,7 +511,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllAutomezzi(); return getAllAutomezzi();
} else { } else {
@@ -500,7 +527,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getDescrizioneAuto) .map(OrdineUscitaInevasoDTO::getDescrizioneAuto)
.distinct() .distinct()
@@ -530,7 +558,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentAutomezzoPredicate.get() == null && currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
List<String> all = getAllPaesi(); List<String> all = getAllPaesi();
return all; return all;
@@ -546,7 +575,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) && (currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getCitta) .map(OrdineUscitaInevasoDTO::getCitta)
.distinct() .distinct()
@@ -576,7 +606,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentAutomezzoPredicate.get() == null && currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
List<String> all = getAllAgenti(); List<String> all = getAllAgenti();
return all; return all;
@@ -592,7 +623,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) && (currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getNomeAgente) .map(OrdineUscitaInevasoDTO::getNomeAgente)
.distinct() .distinct()
@@ -622,7 +654,8 @@ public class VenditaFiltroOrdiniViewModel {
currentDepositoPredicate.get() == null && currentDepositoPredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentAutomezzoPredicate.get() == null && currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null currentGruppoMercPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllTermCons(); return getAllTermCons();
} else { } else {
@@ -637,7 +670,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) && (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) && (currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.map(OrdineUscitaInevasoDTO::getTermCons) .map(OrdineUscitaInevasoDTO::getTermCons)
.distinct() .distinct()
@@ -646,6 +680,62 @@ public class VenditaFiltroOrdiniViewModel {
} }
public List<JtbComt> getAllCommesse(List<JtbComt> commesseFullList) {
List<String> codJcom = Stream.of(initialOrderList)
.map(OrdiniUscitaElencoDTO::getCodJcom)
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(commesseFullList))
.filter(x -> codJcom.contains(x.getCodJcom()))
.distinct()
.withoutNulls()
.sortBy(JtbComt::getCodJcom)
.toList();
}
public List<JtbComt> getAvailableCommesse(List<JtbComt> commesseFullList) {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentClientePredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null &&
currentTermConsPredicate.get() == null) {
return getAllCommesse(commesseFullList);
} else {
List<String> availableCommesse = Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getCodJcom)
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(commesseFullList))
.filter(x -> availableCommesse.contains(x.getCodJcom()))
.distinct()
.withoutNulls()
.sortBy(JtbComt::getCodJcom)
.toList();
}
}
public List<MtbGrup> getAllGruppoMerc(List<MtbGrup> mtbGrupFullList) { public List<MtbGrup> getAllGruppoMerc(List<MtbGrup> mtbGrupFullList) {
var codMgrp = Stream.of(initialOrderList) var codMgrp = Stream.of(initialOrderList)
.flatMap(ordiniUscitaElencoDTO -> .flatMap(ordiniUscitaElencoDTO ->
@@ -676,7 +766,8 @@ public class VenditaFiltroOrdiniViewModel {
currentIdViaggioPredicate.get() == null && currentIdViaggioPredicate.get() == null &&
currentAgentePredicate.get() == null && currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null && currentPaesePredicate.get() == null &&
currentDepositoPredicate.get() == null currentDepositoPredicate.get() == null &&
currentCommessaPredicate.get() == null
) { ) {
return getAllGruppoMerc(mtbGrupFullList); return getAllGruppoMerc(mtbGrupFullList);
} else { } else {
@@ -691,7 +782,8 @@ public class VenditaFiltroOrdiniViewModel {
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) && (currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) && (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) && (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
) )
.flatMap(x -> Stream.of(x.getAvailableClassMerc())) .flatMap(x -> Stream.of(x.getAvailableClassMerc()))
.map(OrdineUscitaInevasoDTO.AvailableClassMerc::getCodMgrp) .map(OrdineUscitaInevasoDTO.AvailableClassMerc::getCodMgrp)

View File

@@ -52,17 +52,17 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
/** /**
* A simple {@link Fragment} subclass. * A simple {@link Fragment} subclass.
*/ */
public class PickingLiberoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ILifecycleFragment, PickingLiberoViewModel.Listener, BottomSheetMtbColrEditView.Listener { public class PickingLiberoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ILifecycleFragment, PickingLiberoViewModel.Listener, BottomSheetMtbColrEditModalView.Listener {
private FragmentPickingLiberoBinding mBindings; private FragmentPickingLiberoBinding mBindings;
@@ -135,7 +135,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
this.initVars(); this.initVars();
this.initBarcodeReader(); this.initBarcodeReader();
this.initBottomSheet();
this.initRecyclerView(); this.initRecyclerView();
boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero(); boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero();
@@ -162,10 +162,6 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
BarcodeManager.enable(); BarcodeManager.enable();
} }
private void initBottomSheet() {
mBindings.bottomSheetMtbColrEdit.setListener(this);
}
private void initRecyclerView() { private void initRecyclerView() {
mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false); mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false);
@@ -182,8 +178,9 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
mBindings.pickingLiberoMainList.setAdapter(mAdapter); mBindings.pickingLiberoMainList.setAdapter(mAdapter);
this.mAdapter.setOnItemClickListener(clickedMtbColr -> { this.mAdapter.setOnItemClickListener(clickedMtbColr -> {
mBindings.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr); new BottomSheetMtbColrEditModalView(clickedMtbColr)
mBindings.bottomSheetMtbColrEdit.expand(); .setListener(this)
.show(getParentFragmentManager(), "BottomSheetMtbColrEditModal");
}); });
} }
@@ -291,7 +288,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
@Override @Override
public void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) { public void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) {
DialogChooseArtsFromListaArts DialogChooseArtsFromMtbColrList
.newInstance(mtbColrsToPick, mtbAart, onComplete, () -> { .newInstance(mtbColrsToPick, mtbAart, onComplete, () -> {
onAbort.run(); onAbort.run();
BarcodeManager.enable(); BarcodeManager.enable();

View File

@@ -7,6 +7,8 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@Module(subcomponents = {PickingLiberoComponent.class}) @Module(subcomponents = {PickingLiberoComponent.class})
@@ -17,8 +19,10 @@ public class PickingLiberoModule {
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer
) { ) {
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer); return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, giacenzaRESTConsumer, magazzinoAutomaticoRESTConsumer);
} }
} }

View File

@@ -15,6 +15,7 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
@@ -25,15 +26,20 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.model.VtbDest; import it.integry.integrywmsnative.core.model.VtbDest;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
@@ -53,6 +59,8 @@ public class PickingLiberoViewModel {
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final PosizioniRESTConsumer mPosizioniRESTConsumer; private final PosizioniRESTConsumer mPosizioniRESTConsumer;
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
private boolean mFlagAskCliente; private boolean mFlagAskCliente;
@@ -66,12 +74,15 @@ public class PickingLiberoViewModel {
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer PosizioniRESTConsumer posizioniRESTConsumer,
) { GiacenzaRESTConsumer giacenzaRESTConsumer,
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer; this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer; this.mPosizioniRESTConsumer = posizioniRESTConsumer;
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
} }
@@ -120,7 +131,52 @@ public class PickingLiberoViewModel {
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single(); .single();
if (foundPosizione == null) {
//Nessuna posizione trovata con questo barcode
this.sendError(new ScannedPositionNotExistException());
return;
}
if (foundPosizione.isMagazzinoAutomatico()) {
//Eseguo picking da magazzino automatico
this.executeMagazzinoAutomatico(foundPosizione, onComplete);
} else {
this.executePosizione(foundPosizione, null, onComplete); this.executePosizione(foundPosizione, null, onComplete);
}
}
private void executeMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
mGiacenzaRESTConsumer.getGiacenzeInPosizione(mtbDepoPosizione, availableItems -> {
var mtbColrs = Stream.of(availableItems)
.map(MvwSitArtUdcDetInventario::toMtbColr)
.toList();
this.sendArtSelectionRequest(mtbColrs, null, selectedMtbColrs -> {
final List<MagazzinoAutomaticoPickItemRequestDTO> magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>();
for (MtbColr selectedArt : selectedMtbColrs) {
MagazzinoAutomaticoPickItemRequestDTO itemDto = new MagazzinoAutomaticoPickItemRequestDTO(selectedArt.getCodMart())
.setQtaTot(selectedArt.getQtaCol())
.setNumCnf(selectedArt.getNumCnf())
.setUntMis(selectedArt.getUntMis());
magazzinoAutomaticoPickItemRequestDTOList.add(itemDto);
}
var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPickItemsRequestDTO()
.setShouldCreateUDS(true)
.setDefaultGestioneOfNewUDS(mDefaultGestione.getText())
.setItemsToPick(magazzinoAutomaticoPickItemRequestDTOList);
mMagazzinoAutomaticoRESTConsumer.pickItems(mtbDepoPosizione,
magazzinoAutomaticoPickRequest, onComplete, this::sendError);
}, this::sendOnLoadingEnded);
}, this::sendError);
} }
@@ -183,9 +239,6 @@ public class PickingLiberoViewModel {
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
this.executeEtichettaLU(ean128Model.Sscc, onComplete); this.executeEtichettaLU(ean128Model.Sscc, onComplete);
} else if (!UtilityString.isNullOrEmpty(barcodeProd)) { } else if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1);
}
this.loadArticolo(barcodeProd, ean128Model, onComplete); this.loadArticolo(barcodeProd, ean128Model, onComplete);
} else { } else {
this.sendError(new NoLUFoundException()); this.sendError(new NoLUFoundException());

View File

@@ -32,7 +32,7 @@ import it.integry.integrywmsnative.gest.prod_rientro_merce.order_list.ProdRientr
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class ProdRientroMerceFragment extends BaseFragment implements public class ProdRientroMerceFragment extends BaseFragment implements
@@ -41,7 +41,7 @@ public class ProdRientroMerceFragment extends BaseFragment implements
ILifecycleFragment, ILifecycleFragment,
ProdRientroMerceViewModel.Listener, ProdRientroMerceViewModel.Listener,
BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentView.Listener,
BottomSheetMtbColrEditView.Listener, BottomSheetMtbColrEditModalView.Listener,
ProdRientroMerceOrderListFragment.OnRefreshListener { ProdRientroMerceOrderListFragment.OnRefreshListener {
@@ -64,7 +64,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements
} }
@Override @Override
public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -77,7 +76,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements
mProdRientroMerceOrderDetailFragment = ProdRientroMerceOrderDetailFragment.newInstance(); mProdRientroMerceOrderDetailFragment = ProdRientroMerceOrderDetailFragment.newInstance();
mProdRientroMerceOrderListFragment mProdRientroMerceOrderListFragment
.setOnItemSelectedRunnable(order -> { .setOnItemSelectedRunnable(order -> {
if (!isLargeLayout) { if (!isLargeLayout) {
@@ -92,8 +90,9 @@ public class ProdRientroMerceFragment extends BaseFragment implements
}) })
.setOnRefreshListener(this); .setOnRefreshListener(this);
mProdRientroMerceOrderDetailFragment.setOnMtbColtClicked(item -> { mProdRientroMerceOrderDetailFragment.setOnMtbColtClicked(item -> {
mBindings.bottomSheetMtbColrEdit.setMtbColr(item.getMtbColr().get(0)); new BottomSheetMtbColrEditModalView(item.getMtbColr().get(0))
mBindings.bottomSheetMtbColrEdit.expand(); .setListener(this)
.show(getParentFragmentManager(), "BottomSheetMtbColrEditModal");
}); });
if (isLargeLayout) { if (isLargeLayout) {
@@ -128,7 +127,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements
mViewModel.setListener(this); mViewModel.setListener(this);
this.initBottomSheet();
return mBindings.getRoot(); return mBindings.getRoot();
} }
@@ -182,11 +180,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements
} }
private void initBottomSheet() {
mBindings.bottomSheetMtbColrEdit.setListener(this);
mBindings.bottomSheetMtbColrEdit.disableEditButton();
}
@Override @Override
public void onMtbColrEdit(MtbColr mtbColr) { public void onMtbColrEdit(MtbColr mtbColr) {
@@ -222,7 +215,7 @@ public class ProdRientroMerceFragment extends BaseFragment implements
@Override @Override
public void onPreDestroy(Runnable onComplete) { public void onPreDestroy(Runnable onComplete) {
if(getChildFragmentManager().getBackStackEntryCount() > 0) if (getChildFragmentManager().getBackStackEntryCount() > 0)
getChildFragmentManager().popBackStack(); getChildFragmentManager().popBackStack();
else onComplete.run(); else onComplete.run();

View File

@@ -159,15 +159,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
DialogAskActionView.newInstance(articoloOrdine.getDescrizione(), DialogAskActionView.newInstance(articoloOrdine.getDescrizione(),
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(), articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
() -> { () -> this.onItemDispatched(articoloOrdine, () -> {
this.mViewModel.checkArticolo(articoloOrdine.getCodMart(),
artOrd -> { }),
this.onItemDispatched(artOrd);
BarcodeManager.enable();
},
this::onError);
BarcodeManager.enable();
},
() -> { () -> {
this.deleteArticolo(articoloOrdine); this.deleteArticolo(articoloOrdine);
BarcodeManager.enable(); BarcodeManager.enable();
@@ -186,24 +180,17 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
} }
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
mBinding.closeActivityFab.close(false); this.mViewModel.processBarcode(data.getStringValue());
this.onLoadingStarted();
BarcodeManager.disable();
this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded);
}; };
@Override @Override
public void onItemDispatched(ArticoloOrdine articoloOrdine) { public void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
DialogEditArticoloView DialogEditArticoloView
.newInstance(articoloOrdine, articolo -> { .newInstance(articoloOrdine, articolo -> {
runOnUiThread(() -> {
if (articolo != null) { if (articolo != null) {
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
} }
this.mViewModel.refreshListArticoli(); this.mViewModel.refreshListArticoli(onSuccess);
});
}, null).show(this.getSupportFragmentManager(), "DialogEditArticoloView"); }, null).show(this.getSupportFragmentManager(), "DialogEditArticoloView");
} }
@@ -214,11 +201,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
public void exportOrdine() { public void exportOrdine() {
this.mViewModel.exportOrdine(() -> { this.mViewModel.exportOrdine(() -> {
runOnUiThread(() -> {
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
close(); close();
}); });
});
} }
public void close() { public void close() {
@@ -233,16 +218,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
public void manualSearch() { public void manualSearch() {
BarcodeManager.disable(); BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> { DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", barcode -> {
this.onLoadingStarted(); this.onLoadingStarted();
this.mViewModel.checkArticolo(codice, this.mViewModel.processBarcode(barcode);
articoloOrdine -> {
this.onItemDispatched(articoloOrdine);
this.onLoadingEnded();
BarcodeManager.enable();
},
this::onError
);
}, BarcodeManager::enable).show(); }, BarcodeManager::enable).show();
} }

View File

@@ -9,11 +9,12 @@ import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
@@ -21,6 +22,8 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGriglia
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
@@ -67,19 +70,23 @@ public class PVOrdineAcquistoEditViewModel {
public void init(Ordine ordine, List<ArticoloDTO> articoliGriglia) { public void init(Ordine ordine, List<ArticoloDTO> articoliGriglia) {
this.mCurrentOrdine = ordine; this.mCurrentOrdine = ordine;
this.sendOnLoadingStarted();
mArticoliGriglia.clear(); mArticoliGriglia.clear();
mArticoliGriglia.addAll(articoliGriglia); mArticoliGriglia.addAll(articoliGriglia);
this.refreshListArticoli(); this.refreshListArticoli();
} }
public void refreshListArticoli() { public void refreshListArticoli() {
refreshListArticoli(null);
}
public void refreshListArticoli(Runnable onSuccess) {
this.sendOnLoadingStarted();
this.loadArticoli(mCurrentOrdine, articoli -> { this.loadArticoli(mCurrentOrdine, articoli -> {
articoli = Stream.of(articoli).map(this::completeDataArticoli).toList(); articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
this.mArticoli.postValue(articoli); this.mArticoli.postValue(articoli);
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
if (onSuccess != null)
onSuccess.run();
}); });
} }
@@ -90,6 +97,12 @@ public class PVOrdineAcquistoEditViewModel {
art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta())); art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta()));
art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita())); art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita()));
art.setBgTint(getBgTint(art)); art.setBgTint(getBgTint(art));
art.setMediaSett(artGrid.getMediaSett());
art.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile());
art.setMerceDaRic(artGrid.getMerceDaRic());
art.setNewNoPromo(artGrid.isNewNoPromo());
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
art.setSystemNote(artGrid.generateSystemNote());
return art; return art;
} }
@@ -109,15 +122,24 @@ public class PVOrdineAcquistoEditViewModel {
return mArticoli; return mArticoli;
} }
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcode(String barcode) {
this.checkArticolo( try {
barcodeScanDTO.getStringValue(), this.sendOnLoadingStarted();
articoloOrdine -> {
this.sendOnItemDispatched(articoloOrdine); ArticoloDTO articoloDTO = getArticoloFromBarcode(barcode);
onComplete.run(); if (articoloDTO == null) {
}, throw new NoResultFromBarcodeException(barcode);
}
this.addArticoloToOrdine(
articoloDTO,
this::sendOnLoadingEnded,
this::sendError this::sendError
); );
} catch (Exception e) {
this.sendError(e);
BarcodeManager.enable();
} finally {
}
} }
private void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad) { private void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad) {
@@ -128,54 +150,21 @@ public class PVOrdineAcquistoEditViewModel {
} }
} }
public void checkArticolo(String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) { public void addArticoloToOrdine(ArticoloDTO art, Runnable onSuccess, RunnableArgs<Exception> onFail) {
try { try {
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
onFail.run(new Exception("Nessun articolo è presente nella griglia"));
return;
}
ArticoloDTO art = Stream.of(mArticoliGriglia).filter(articolo ->
articolo.getCodMart().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
if (art == null) { mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, foundArt -> {
onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
return;
}
mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, (articolo) -> { var articolo = foundArt != null ? foundArt : art.convertToArticoloOrdine(mCurrentOrdine);
if (articolo != null) {
if (isAutoOrderOnScan()) { if (isAutoOrderOnScan()) {
articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf()); articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf());
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, this::refreshListArticoli, this::sendError); mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail);
} else { } else {
articolo this.sendOnItemDispatched(articolo, onSuccess);
.setQtaPrevistaVendita(BigDecimal.valueOf(art.getQtaPrevistaVendita()))
.setQtaProposta(BigDecimal.valueOf(art.getQtaProposta()))
.setGiacenza(BigDecimal.valueOf(art.getGiacenza()))
.setMediaSett(art.getMediaSett());
articolo.setQtaMinOrdinabile(art.getQtaMinOrdinabile());
articolo.setMerceDaRic(art.getMerceDaRic());
articolo.setNewNoPromo(art.isNewNoPromo());
articolo.setFlagQtaMultipla(art.getFlagQtaMultipla());
articolo.setSystemNote(art.generateSystemNote());
onSuccess.run(articolo);
} }
} else {
articolo = art.convertToArticoloOrdine(mCurrentOrdine);
if (isAutoOrderOnScan()) {
articolo.setQtaOrd(articolo.getQtaCnf());
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, this::refreshListArticoli, this::sendError);
} else {
onSuccess.run(articolo);
}
}
}, onFail); }, onFail);
@@ -184,17 +173,30 @@ public class PVOrdineAcquistoEditViewModel {
} }
} }
public ArticoloDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException {
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
throw new NoArtsInGridException();
}
return Stream.of(mArticoliGriglia).filter(articolo ->
articolo.getCodMart().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
}
private boolean isAutoOrderOnScan() { private boolean isAutoOrderOnScan() {
return SettingsManager.iDB().isFlagOrdinaArticoliOnScan(); return SettingsManager.iDB().isFlagOrdinaArticoliOnScan();
} }
private List<ArticoloDTO> getNewArticoli() { private List<ArticoloDTO> getNewArticoli() {
return Stream.of(mArticoliGriglia).filter(x -> x.getQtaOrd() > 0f).toList(); return mArticoliGriglia.stream()
.filter(x -> x.getQtaOrd() > 0f)
.collect(Collectors.toList());
} }
public void orderNewProducts() { public void orderNewProducts() {
this.sendOnLoadingStarted();
List<ArticoloDTO> newArts = getNewArticoli(); List<ArticoloDTO> newArts = getNewArticoli();
if (!newArts.isEmpty()) { if (!newArts.isEmpty()) {
List<ArticoloOrdine> articoliToSave = new ArrayList<>(); List<ArticoloOrdine> articoliToSave = new ArrayList<>();
@@ -241,8 +243,8 @@ public class PVOrdineAcquistoEditViewModel {
}, this::sendError); }, this::sendError);
} }
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine) { private void sendOnItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
if (this.mListener != null) mListener.onItemDispatched(articoloOrdine); if (this.mListener != null) mListener.onItemDispatched(articoloOrdine, onSuccess);
} }
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
@@ -258,7 +260,7 @@ public class PVOrdineAcquistoEditViewModel {
} }
public interface Listener extends ILoadingListener { public interface Listener extends ILoadingListener {
void onItemDispatched(ArticoloOrdine articoloOrdine); void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
int getColorFromResource(int resId); int getColorFromResource(int resId);

View File

@@ -7,6 +7,7 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.exception.InvalidOrderedQtyException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
@@ -105,7 +106,7 @@ public class DialogEditArticoloViewModel {
public void save(RunnableArgs<ArticoloOrdine> onComplete) { public void save(RunnableArgs<ArticoloOrdine> onComplete) {
if (UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) { if (UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) {
this.mListener.onError(new Exception("La quantità ordinata deve essere maggiore di 0")); this.mListener.onError(new InvalidOrderedQtyException());
return; return;
} }

View File

@@ -22,6 +22,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.exception.GridNotFoundException;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
@@ -71,6 +72,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
var alertDialog = alertDialogBuilder.create(); var alertDialog = alertDialogBuilder.create();
alertDialog.setCanceledOnTouchOutside(true); alertDialog.setCanceledOnTouchOutside(true);
alertDialog.setOnShowListener(this);
return alertDialog; return alertDialog;
} }
@@ -106,7 +108,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
pvOrdiniAcquistoRESTConsumer.getArticoliListino(codAlis, dto -> { pvOrdiniAcquistoRESTConsumer.getArticoliListino(codAlis, dto -> {
this.onLoadingEnded(); this.onLoadingEnded();
if (dto.getGrigliaAcquistiChild().size() <= 0) { if (dto.getGrigliaAcquistiChild().size() <= 0) {
onFailed.run(new Exception("La griglia selezionata (" + codAlis + ") non esiste o non presenta articoli")); onFailed.run(new GridNotFoundException(codAlis));
return; return;
} }

View File

@@ -55,7 +55,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@@ -65,7 +65,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener { public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditModalView.Listener {
private FragmentMainRettificaGiacenzeBinding mBinding = null; private FragmentMainRettificaGiacenzeBinding mBinding = null;
@@ -132,7 +132,6 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
this.initVars(); this.initVars();
this.initBarcodeReader(); this.initBarcodeReader();
this.initBottomSheet();
this.initRecyclerView(); this.initRecyclerView();
this.init(); this.init();
@@ -152,10 +151,6 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
} }
private void initBottomSheet() {
mBinding.bottomSheetMtbColrEdit.setListener(this);
}
private void initRecyclerView() { private void initRecyclerView() {
mBinding.rettificaGiacenzeMainList.setNestedScrollingEnabled(false); mBinding.rettificaGiacenzeMainList.setNestedScrollingEnabled(false);
mBinding.rettificaGiacenzeMainList.setHasFixedSize(true); mBinding.rettificaGiacenzeMainList.setHasFixedSize(true);
@@ -173,8 +168,11 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
this.mAdapter.setOnItemClickListener(clickedMtbColr -> { this.mAdapter.setOnItemClickListener(clickedMtbColr -> {
mBinding.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr); new BottomSheetMtbColrEditModalView(clickedMtbColr)
mBinding.bottomSheetMtbColrEdit.expand(); .setListener(this)
.show(getParentFragmentManager(), "tag");
// mBinding.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr);
// mBinding.bottomSheetMtbColrEdit.expand();
}); });
mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter); mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter);

View File

@@ -28,6 +28,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -105,6 +106,10 @@ public class RettificaGiacenzeViewModel {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(barcodeScanDTO, onComplete); this.executeEtichettaEan128(barcodeScanDTO, onComplete);
} else if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
//Cerco tramite articolo ean peso
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
} else if (UtilityBarcode.isEtichettaArt(barcodeScanDTO)) { } else if (UtilityBarcode.isEtichettaArt(barcodeScanDTO)) {
this.searchArtInt(barcodeScanDTO.getStringValue(), onComplete); this.searchArtInt(barcodeScanDTO.getStringValue(), onComplete);
@@ -129,9 +134,6 @@ public class RettificaGiacenzeViewModel {
if (!UtilityString.isNullOrEmpty(barcodeProd)) { if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1);
}
PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model); PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model);
this.loadArticolo(barcodeProd, pickDataDTO, onComplete); this.loadArticolo(barcodeProd, pickDataDTO, onComplete);
@@ -144,6 +146,15 @@ public class RettificaGiacenzeViewModel {
}, this::sendError); }, this::sendError);
} }
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
try {
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
this.loadArticolo(ean13PesoModel.getPrecode(), PickDataDTO.fromEan128(ean13PesoModel.toEan128()), onComplete);
} catch (Exception ex) {
this.sendError(ex);
}
}
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();

View File

@@ -73,6 +73,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListView;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView;
@@ -224,7 +225,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
} }
private boolean isOrdTrasf() { private boolean isOrdTrasf() {
return mTestateOrdini != null && !mTestateOrdini.isEmpty() && Stream.of(mTestateOrdini) return mTestateOrdini != null && !mTestateOrdini.isEmpty() && Stream.of(mTestateOrdini)
@@ -249,7 +249,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
} else if (!noLUPresent.get()) { } else if (!noLUPresent.get()) {
this.mShouldCloseActivity = true; this.mShouldCloseActivity = true;
BarcodeManager.removeCallback(barcodeScannerIstanceID); BarcodeManager.removeCallback(barcodeScannerIstanceID);
this.mViewmodel.closeLU(true); this.mViewmodel.requestCloseLU(true);
} else { } else {
BarcodeManager.removeCallback(barcodeScannerIstanceID); BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onBackPressed(); super.onBackPressed();
@@ -410,7 +410,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) && y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) &&
UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) &&
UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) &&
UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/ y.getRefMtbColr().equals(mtbColrToDispatch)) UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/
y.getRefMtbColr().equals(mtbColrToDispatch))
.map(MtbColr::getNumCnf) .map(MtbColr::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -655,6 +656,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
if (status == DialogConsts.Results.YES) { if (status == DialogConsts.Results.YES) {
this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr); this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr);
} }
}, pickMagazzinoAutomaticoPosizione -> {
this.onLoadingStarted();
this.mViewmodel.executeEmptyMagazzinoAutomaticoRequest(pickMagazzinoAutomaticoPosizione, this::onLoadingEnded);
}) })
.show(getSupportFragmentManager(), "tag"); .show(getSupportFragmentManager(), "tag");
} }
@@ -832,7 +836,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setCanOverflowOrderQuantity(canOverflowOrderQuantity) .setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO.getStatoArticoloDTO()) .setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)
.setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus()); .setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus());
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
@@ -926,7 +930,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override @Override
public void onCreateDocsRequest() { public void onCreateDocsRequest() {
DialogYesNoView.newInstance("Chiusura ordine", "Vuoi creare i documenti per gli ordini selezionati?", result -> { DialogYesNoView.newInstance("Chiusura ordine", "Vuoi creare i documenti per gli ordini selezionati?", result -> {
this.mViewmodel.onCreateDocsAnswered(result);
switch (result) {
case YES:
this.mViewmodel.createDocs();
break;
case NO:
this.onOrderClosed();
break;
}
}).show(this.getSupportFragmentManager(), "tag"); }).show(this.getSupportFragmentManager(), "tag");
} }
@@ -936,6 +949,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.show(getSupportFragmentManager(), "tag"); .show(getSupportFragmentManager(), "tag");
} }
@Override
public void onChooseArtsRequest(List<MtbAart> artsList, RunnableArgs<List<MtbAart>> onComplete) {
DialogChooseArtsFromMtbAartListView.newInstance(artsList, onComplete, this::onLoadingEnded)
.show(getSupportFragmentManager(), "tag");
}
@Override @Override
public void onOrderClosed() { public void onOrderClosed() {
this.onLoadingEnded(); this.onLoadingEnded();
@@ -949,7 +968,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override @Override
public void onBottomSheetLUClose() { public void onBottomSheetLUClose() {
this.mViewmodel.closeLU(true); this.mViewmodel.requestCloseLU(true);
} }
@Override @Override
@@ -959,7 +978,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override @Override
public void onMtbColrDelete(MtbColr mtbColr) { public void onMtbColrDelete(MtbColr mtbColr) {
this.mViewmodel.deleteRow(mtbColr); this.mViewmodel.requestDeleteRow(mtbColr);
} }

View File

@@ -5,8 +5,11 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DocumentiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
@@ -21,8 +24,28 @@ public class SpedizioneModule {
} }
@Provides @Provides
SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, DocumentiRESTConsumer documentiRESTConsumer) { SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, posizioniRESTConsumer, documentiRESTConsumer); ColliDataRecoverService colliDataRecoverService,
OrdiniRESTConsumer ordiniRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
DocumentiRESTConsumer documentiRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer) {
return new SpedizioneViewModel(articoloRESTConsumer,
barcodeRESTConsumer,
colliDataRecoverService,
ordiniRESTConsumer,
colliMagazzinoRESTConsumer,
printerRESTConsumer,
posizioniRESTConsumer,
documentiRESTConsumer,
colliSpedizioneRESTConsumer,
colliLavorazioneRESTConsumer,
magazzinoAutomaticoRESTConsumer);
} }
} }

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.gest.spedizione.exceptions;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
public class InvalidMagazzinoAutomaticoMovementException extends Exception {
public InvalidMagazzinoAutomaticoMovementException(MtbDepoPosizione mtbDepoPosizione) {
super(String.format("Non è possibile movimentare una posizione legata ad un magazzino automatico (%s)", mtbDepoPosizione.getPosizione()));
}
}

View File

@@ -44,7 +44,7 @@ import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.ui.UltimiArriviFornitoreListAdapter; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.ui.UltimiArriviFornitoreListAdapter;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
/** /**
* A simple {@link BaseFragment} subclass. * A simple {@link BaseFragment} subclass.
@@ -255,15 +255,17 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl
@Override @Override
public void onMtbColtScanned(MtbColt scannedMtbColt) { public void onMtbColtScanned(MtbColt scannedMtbColt) {
DialogChooseArtsFromListaArts DialogChooseArtsFromMtbColrList
.newInstance(scannedMtbColt.getMtbColr(), items -> { .newInstance(scannedMtbColt.getMtbColr(), items -> {
List<MtbAart> mtbAarts = new ArrayList<>();
List<MtbAart> mtbAarts = Stream.of(items) if(items != null && !items.isEmpty()) {
mtbAarts = Stream.of(items)
.map(MtbColr::getMtbAart) .map(MtbColr::getMtbAart)
.toList(); .toList();
}
filterItems(mtbAarts); filterItems(mtbAarts);
}, null) }, null)
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
} }

View File

@@ -37,7 +37,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione; import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
@@ -170,8 +170,12 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
@Override @Override
public void onArtsChooseRequired(List<MtbColr> mtbColrList, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) { public void onArtsChooseRequired(List<MtbColr> mtbColrList, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) {
this.requireActivity().runOnUiThread(() -> { this.requireActivity().runOnUiThread(() -> {
DialogChooseArtsFromListaArts DialogChooseArtsFromMtbColrList
.newInstance(mtbColrList, onComplete, onAbort) .newInstance(mtbColrList, data -> {
if(data == null || data.isEmpty()) {
onAbort.run();
} else onComplete.run(data);
}, onAbort)
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
}); });
} }

View File

@@ -4,14 +4,18 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@Module(subcomponents = VersamentoMerceComponent.class) @Module(subcomponents = VersamentoMerceComponent.class)
public class VersamentoMerceModule { public class VersamentoMerceModule {
@Provides @Provides
VersamentoMerceViewModel providesVersamentoMerceViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer) { VersamentoMerceViewModel providesVersamentoMerceViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
return new VersamentoMerceViewModel(colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer); BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer) {
return new VersamentoMerceViewModel(colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, magazzinoAutomaticoRESTConsumer);
} }
} }

View File

@@ -17,6 +17,7 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException; import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
import it.integry.integrywmsnative.core.exception.NoArtsInLUException; import it.integry.integrywmsnative.core.exception.NoArtsInLUException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
@@ -27,7 +28,9 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -44,12 +47,14 @@ public class VersamentoMerceViewModel {
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final PosizioniRESTConsumer mPosizioniRESTConsumer; private final PosizioniRESTConsumer mPosizioniRESTConsumer;
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
@Inject @Inject
public VersamentoMerceViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer) { public VersamentoMerceViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer; this.mPosizioniRESTConsumer = posizioniRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
} }
@@ -71,22 +76,19 @@ public class VersamentoMerceViewModel {
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single(); .single();
if (foundPosizione.isFlagMonoCollo()) {
this.mPosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> {
if (mtbColtList == null || mtbColtList.size() == 0) { if (foundPosizione == null) {
this.sendError(new NoLUFoundException()); //Nessuna posizione trovata con questo barcode
} else if (mtbColtList.size() == 1) { this.sendError(new ScannedPositionNotExistException());
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { return;
//TAKE HERE
pickMerceULtoUL(mtbColt, onComplete);
}, this::sendError);
} else {
this.sendError(new TooManyLUFoundInMonoLUPositionException());
} }
}, this::sendError);
if (foundPosizione.isMagazzinoAutomatico()) {
//La posizione è di un magazzino automatico
this.executePosizioneMagazzinoAutomatico(foundPosizione, onComplete);
} else if (foundPosizione.isFlagMonoCollo()) {
this.executePosizioneMonocollo(onComplete, foundPosizione);
} else { } else {
if (!UtilityString.equalsIgnoreCase(mCurrentMtbColt.getValue().getCodMdep(), foundPosizione.getCodMdep())) { if (!UtilityString.equalsIgnoreCase(mCurrentMtbColt.getValue().getCodMdep(), foundPosizione.getCodMdep())) {
@@ -113,6 +115,36 @@ public class VersamentoMerceViewModel {
} }
private void executePosizioneMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPutItemsRequestDTO()
.setInputMtbColt(this.mCurrentMtbColt.getValue());
mMagazzinoAutomaticoRESTConsumer.putItems(mtbDepoPosizione,
magazzinoAutomaticoPickRequest, () -> {
onComplete.run();
this.sendOnDataSaved();
}, this::sendError);
}
private void executePosizioneMonocollo(Runnable onComplete, MtbDepoPosizione foundPosizione) {
this.mPosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> {
if (mtbColtList == null || mtbColtList.size() == 0) {
this.sendError(new NoLUFoundException());
} else if (mtbColtList.size() == 1) {
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
//TAKE HERE
pickMerceULtoUL(mtbColt, onComplete);
}, this::sendError);
} else {
this.sendError(new TooManyLUFoundInMonoLUPositionException());
}
}, this::sendError);
}
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onBarcodeScanComplete) { private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onBarcodeScanComplete) {
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {

View File

@@ -6,6 +6,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import androidx.databinding.ObservableList; import androidx.databinding.ObservableList;
@@ -19,9 +20,9 @@ import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentBinding; import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentBinding;
import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView; import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseView implements BottomSheetMtbColrEditView.Listener { public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseView implements BottomSheetMtbColrEditModalView.Listener {
private BottomSheetFragmentLuContentBinding mBinding; private BottomSheetFragmentLuContentBinding mBinding;
private BottomSheetFragmentLUContentViewModel mViewModel; private BottomSheetFragmentLUContentViewModel mViewModel;
@@ -41,7 +42,6 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
mViewModel = new BottomSheetFragmentLUContentViewModel(); mViewModel = new BottomSheetFragmentLUContentViewModel();
mBinding.setViewModel(mViewModel); mBinding.setViewModel(mViewModel);
mBinding.bottomSheetMtbColrEdit.setListener(this);
mBinding.titleLayout.setOnClickListener(new OnSingleClickListener() { mBinding.titleLayout.setOnClickListener(new OnSingleClickListener() {
@Override @Override
@@ -67,8 +67,11 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
this.mBinding.mtbColrRecyclerView.setAdapter(this.mAdapter); this.mBinding.mtbColrRecyclerView.setAdapter(this.mAdapter);
this.mAdapter.setOnItemClickListener(clickedMtbColr -> { this.mAdapter.setOnItemClickListener(clickedMtbColr -> {
this.mBinding.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr);
this.mBinding.bottomSheetMtbColrEdit.expand(); new BottomSheetMtbColrEditModalView(clickedMtbColr)
.setListener(this)
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag");
}); });
} }

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit;
import dagger.Subcomponent;
@Subcomponent
public interface BottomSheetMtbColrEditModalComponent {
@Subcomponent.Factory
interface Factory {
BottomSheetMtbColrEditModalComponent create();
}
void inject(BottomSheetMtbColrEditModalView bottomSheetMtbColrEditModalView);
}

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit;
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = BottomSheetMtbColrEditModalComponent.class)
public class BottomSheetMtbColrEditModalModule {
@Provides
BottomSheetMtbColrEditViewModel providesBottomSheetMtbColrEditViewModel() {
return new BottomSheetMtbColrEditViewModel();
}
}

View File

@@ -0,0 +1,106 @@
package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.ObservableField;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.databinding.BottomSheetMtbColrEditBinding;
public class BottomSheetMtbColrEditModalView extends BottomSheetDialogFragment {
@Inject
BottomSheetMtbColrEditViewModel mViewModel;
public ObservableField<Boolean> enabledEditButton = new ObservableField<>(true);
public ObservableField<Boolean> enabledDeleteButton = new ObservableField<>(true);
private BottomSheetMtbColrEditBinding mBinding;
private Listener mListener;
public final ObservableField<MtbColr> inputMtbColr = new ObservableField<>();
public BottomSheetMtbColrEditModalView(MtbColr inputMtbColr) {
this.inputMtbColr.set(inputMtbColr);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainApplication.appComponent
.bottomSheetMtbColrEditModalComponent()
.create()
.inject(this);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBinding = BottomSheetMtbColrEditBinding.inflate(inflater, container, true);
mBinding.setLifecycleOwner(this);
mBinding.setView(this);
mBinding.executePendingBindings();
return mBinding.getRoot();
}
public BottomSheetMtbColrEditModalView enableEditButton() {
this.enabledEditButton.set(true);
return this;
}
public BottomSheetMtbColrEditModalView disableEditButton() {
this.enabledEditButton.set(false);
return this;
}
public BottomSheetMtbColrEditModalView enableDeleteButton() {
this.enabledDeleteButton.set(true);
return this;
}
public BottomSheetMtbColrEditModalView disableDeleteButton() {
this.enabledDeleteButton.set(false);
return this;
}
public void editMtbColr() {
if (this.mListener != null) this.mListener.onMtbColrEdit(this.inputMtbColr.get());
this.dismiss();
}
public void deleteMtbColr() {
if (this.mListener != null) this.mListener.onMtbColrDelete(this.inputMtbColr.get());
this.dismiss();
}
public BottomSheetMtbColrEditModalView setListener(Listener listener) {
this.mListener = listener;
return this;
}
public interface Listener {
void onMtbColrEdit(MtbColr mtbColr);
void onMtbColrDelete(MtbColr mtbColr);
}
}

View File

@@ -1,116 +0,0 @@
package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.databinding.BottomSheetMtbColrEditBinding;
import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.exceptions.NullMtbColrException;
public class BottomSheetMtbColrEditView extends BottomSheetFragmentBaseView {
private final BottomSheetMtbColrEditBinding mBinding;
private final BottomSheetMtbColrEditViewModel mViewModel;
public ObservableField<Boolean> enabledEditButton = new ObservableField<>(true);
public ObservableField<Boolean> enabledDeleteButton = new ObservableField<>(true);
private Listener mListener;
public BottomSheetMtbColrEditView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBinding = DataBindingUtil.inflate(inflater, R.layout.bottom_sheet__mtb_colr_edit, this, true);
mViewModel = new BottomSheetMtbColrEditViewModel();
mBinding.setViewModel(mViewModel);
mBinding.setView(this);
}
public void setMtbColr(MtbColr mtbColr) {
this.mBinding.invalidateAll();
this.mViewModel.setMtbColr(mtbColr);
this.mBinding.executePendingBindings();
this.parentView.requestLayout();
}
public void editMtbColr() {
if(this.mListener != null) this.mListener.onMtbColrEdit(this.mViewModel.getMtbColr());
this.collapse();
}
public void deleteMtbColr() {
if(this.mListener != null) this.mListener.onMtbColrDelete(this.mViewModel.getMtbColr());
this.collapse();
}
@Override
public void expand() {
if(this.mViewModel.getMtbColr() == null) {
UtilityLogger.error(new NullMtbColrException());
return;
}
super.expand();
}
@Override
protected void onStateChangedCallback(State newState) {
if(newState == State.COLLAPSED) this.mViewModel.setMtbColr(null);
}
@Override
protected void onSlideCallback(float slideOffset) {
}
public void enableEditButton() {
this.enabledEditButton.set(true);
}
public void disableEditButton() {
this.enabledEditButton.set(false);
}
public void enableDeleteButton() {
this.enabledDeleteButton.set(true);
}
public void disableDeleteButton() {
this.enabledDeleteButton.set(false);
}
public BottomSheetMtbColrEditViewModel getViewModelInstance() {
return this.mViewModel;
}
public BottomSheetMtbColrEditView setListener(Listener listener) {
this.mListener = listener;
return this;
}
public interface Listener {
void onMtbColrEdit(MtbColr mtbColr);
void onMtbColrDelete(MtbColr mtbColr);
}
}

View File

@@ -1,22 +1,5 @@
package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit; package it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit;
import androidx.databinding.ObservableField;
import it.integry.integrywmsnative.core.model.MtbColr;
public class BottomSheetMtbColrEditViewModel { public class BottomSheetMtbColrEditViewModel {
private final ObservableField<MtbColr> mtbColr = new ObservableField<>();
public MtbColr getMtbColr() {
return mtbColr.get();
}
public BottomSheetMtbColrEditViewModel setMtbColr(MtbColr mtbColr) {
this.mtbColr.set(mtbColr);
return this;
}
} }

View File

@@ -44,6 +44,7 @@ public class DialogBasketLUView extends BaseDialogFragment {
.create(); .create();
alertDialog.setCanceledOnTouchOutside(false); alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setOnShowListener(this);
this.initViewPager(alertDialog); this.initViewPager(alertDialog);
return alertDialog; return alertDialog;

View File

@@ -7,7 +7,6 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -15,12 +14,13 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding; import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogChooseArtFromListaArtsView extends DialogFragment { public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
private final List<MtbAart> mListaArts; private final List<MtbAart> mListaArts;
@@ -47,6 +47,7 @@ public class DialogChooseArtFromListaArtsView extends DialogFragment {
.create(); .create();
alertDialog.setCanceledOnTouchOutside(false); alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setOnShowListener(this);
return alertDialog; return alertDialog;
} }

View File

@@ -1,368 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SearchView;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
public class DialogChooseArtsFromListaArts extends BaseDialogFragment {
@Inject
BarcodeRESTConsumer barcodeRESTConsumer;
@Inject
ArticoloRESTConsumer articoloRESTConsumer;
private Context context;
private DialogChooseArtsFromListaArtsLayoutBinding mBindings;
private DialogChooseArtsFromListaArtsAdapter currentAdapter;
private final RunnableArgs<List<MtbColr>> mOnItemsChoosed;
private final Runnable mOnAbort;
private final List<DialogChooseArtsFromListaArtsItemModel> mDataset;
private int mBarcodeScannerIstanceID;
private MtbAart selectedArt;
public static DialogChooseArtsFromListaArts newInstance(List<MtbColr> listaMtbColr, RunnableArgs<List<MtbColr>> onItemsChoosed, Runnable onAbort) {
return new DialogChooseArtsFromListaArts(listaMtbColr, onItemsChoosed, onAbort);
}
public static DialogChooseArtsFromListaArts newInstance(List<MtbColr> listaMtbColr, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onItemsChoosed, Runnable onAbort) {
DialogChooseArtsFromListaArts dialog = newInstance(listaMtbColr, onItemsChoosed, onAbort);
dialog.setSelectedArt(mtbAart);
return dialog;
}
public void setSelectedArt(MtbAart mtbAart) {
this.selectedArt = mtbAart;
}
private DialogChooseArtsFromListaArts(List<MtbColr> listaMtbColr, RunnableArgs<List<MtbColr>> onItemsChoosed, Runnable onAbort) {
super();
mOnItemsChoosed = onItemsChoosed;
mOnAbort = onAbort;
mDataset = new ArrayList<>();
if (listaMtbColr != null) {
for (MtbColr mtbColr : listaMtbColr) {
if (UtilityString.isNullOrEmpty(mtbColr.getUntMis()) && mtbColr.getMtbAart() != null) {
mtbColr.setUntMis(mtbColr.getMtbAart().getUntMis());
}
mDataset.add(new DialogChooseArtsFromListaArtsItemModel().setMtbColr(mtbColr));
}
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
this.context = getActivity();
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_arts_from_lista_arts_layout, null, false);
mBindings.setLifecycleOwner(getViewLifecycleOwner());
MainApplication.appComponent
.dialogChooseArtsFromListaArtsComponent()
.create()
.inject(this);
UtilityDialog.setTo90PercentWidth(context, this);
mBindings.emptyView.setVisibility(mDataset != null && mDataset.size() > 0 ? View.GONE : View.VISIBLE);
initRecyclerView();
initFilter();
setupBarcode();
mBindings.positiveButton.setOnClickListener(v -> {
dismiss();
onPositiveClick();
});
mBindings.negativeButton.setOnClickListener(v -> {
dismiss();
onNegativeClick();
});
getDialog().setCanceledOnTouchOutside(false);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
return mBindings.getRoot();
}
@Override
public void onStart() {
super.onStart();
if (selectedArt != null) {
this.loadArticolo(selectedArt.getBarCode(), null);
}
}
private void initRecyclerView() {
mBindings.listaArts.setNestedScrollingEnabled(false);
mBindings.listaArts.setHasFixedSize(true);
mBindings.listaArts.setLayoutManager(new LinearLayoutManager(context));
currentAdapter = new DialogChooseArtsFromListaArtsAdapter(context, mDataset);
mBindings.listaArts.setAdapter(currentAdapter);
}
private void initFilter() {
mBindings.mainSearch.setOnCloseListener(() -> {
this.removeListFilter();
return true;
});
mBindings.mainSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// removeListFilter();
//
// if (!UtilityString.isNullOrEmpty(query) && query.trim().length() > 3) {
// List<DialogChooseArtsFromListaArtsItemModel> foundRowsList = Stream.of(mDataset)
// .filter(x -> {
// String codMart = x.getMtbColr().getMtbAart().getCodMart();
// String descrizioneArt = x.getMtbColr().getMtbAart().getDescrizioneEstesa();
// String diacod = x.getMtbColr().getMtbAart().getDiacod();
//
// return ((codMart.startsWith(query) ||
// codMart.endsWith(query) ||
// codMart.contains(query) ||
// codMart.equalsIgnoreCase(query)) ||
// (descrizioneArt.startsWith(query) ||
// descrizioneArt.endsWith(query) ||
// descrizioneArt.contains(query) ||
// descrizioneArt.equalsIgnoreCase(query)) ||
// (diacod.startsWith(query) ||
// diacod.endsWith(query) ||
// diacod.contains(query) ||
// diacod.equalsIgnoreCase(query))) &&
// !x.isHidden();
// })
// .toList();
//
// for (int i = 0; i < mDataset.size(); i++) {
// mDataset.get(i).setHidden(!foundRowsList.contains(mDataset.get(i)));
// }
// }
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
removeListFilter();
newText = newText.toLowerCase();
if (!UtilityString.isNullOrEmpty(newText) && newText.trim().length() > 2) {
String finalNewText = newText;
List<DialogChooseArtsFromListaArtsItemModel> foundRowsList = Stream.of(mDataset)
.filter(x -> {
String codMart = x.getMtbColr().getMtbAart().getCodMart().toLowerCase();
String descrizioneArt = x.getMtbColr().getMtbAart().getDescrizioneEstesa().toLowerCase();
String diacod = x.getMtbColr().getMtbAart().getDiacod();
if (!UtilityString.isNullOrEmpty(diacod)) {
diacod = diacod.toLowerCase();
}
return ((codMart.startsWith(finalNewText) ||
codMart.endsWith(finalNewText) ||
codMart.contains(finalNewText) ||
codMart.equalsIgnoreCase(finalNewText)) ||
(descrizioneArt.startsWith(finalNewText) ||
descrizioneArt.endsWith(finalNewText) ||
descrizioneArt.contains(finalNewText) ||
descrizioneArt.equalsIgnoreCase(finalNewText)) ||
(!UtilityString.isNullOrEmpty(diacod) && (diacod.startsWith(finalNewText) ||
diacod.endsWith(finalNewText) ||
diacod.contains(finalNewText) ||
diacod.equalsIgnoreCase(finalNewText)))) &&
!x.isHidden();
})
.toList();
for (int i = 0; i < mDataset.size(); i++) {
mDataset.get(i).setHidden(!foundRowsList.contains(mDataset.get(i)));
}
}
return true;
}
});
}
private void setupBarcode() {
BarcodeManager.enable();
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
this.mOnAbort.run();
super.onDismiss(dialog);
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
onLoadingStarted();
if (UtilityBarcode.isEan13(data)) {
this.loadArticolo(data.getStringValue(), null);
} else if (UtilityBarcode.isEtichetta128(data)) {
this.executeEtichettaEan128(data);
} else {
onLoadingEnded();
}
};
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO) {
this.barcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null;
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
barcodeProd = ean128Model.Content;
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin) || !UtilityString.isNullOrEmpty(ean128Model.Content)) {
this.loadArticolo(barcodeProd, ean128Model);
} else {
DialogCommon.showNoArtFoundDialog(context, () -> {
onLoadingEnded();
});
}
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
DialogCommon.showNoArtFoundDialog(context, () -> {
onLoadingEnded();
});
}
}, this::onError);
}
private void loadArticolo(String barcodeProd, Ean128Model ean128Model) {
this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
this.mBindings.mainSearch.setQuery(barcodeProd, false);
this.searchArtInList(mtbAartList.get(0), ean128Model);
onLoadingEnded();
} else {
DialogCommon.showNoArtFoundDialog(context, () -> {
onLoadingEnded();
});
}
}, this::onError);
}
private void searchArtInList(MtbAart mtbAart, Ean128Model ean128Model) {
removeListFilter();
List<DialogChooseArtsFromListaArtsItemModel> foundRowsList = Stream.of(mDataset)
.filter(x -> x.getMtbColr().getMtbAart().getCodMart().equalsIgnoreCase(mtbAart.getCodMart()) &&
!x.isHidden())
.toList();
if (foundRowsList.size() == 0) {
DialogCommon.showNoArtFoundDialog(context, null);
} else {
for (int i = 0; i < mDataset.size(); i++) {
mDataset.get(i).setHidden(!foundRowsList.contains(mDataset.get(i)));
}
}
}
private void removeListFilter() {
for (DialogChooseArtsFromListaArtsItemModel itemModel : mDataset) {
itemModel.setHidden(false);
}
}
private void onPositiveClick() {
if (mOnItemsChoosed != null) {
mOnItemsChoosed.run(currentAdapter.getSelectedItems());
}
}
private void onNegativeClick() {
this.dismiss();
}
}

Some files were not shown because too many files have changed in this diff Show More