Compare commits

...

126 Commits

Author SHA1 Message Date
e7d06c9752 Finish v1.40.20(437) 2024-05-27 13:27:22 +02:00
76a0fe9b6f -> v1.40.20 (437) 2024-05-27 13:27:08 +02:00
a9bab6db56 Fix format LocalDate in recupero materiale 2024-05-27 13:26:11 +02:00
85197c1f9b Finish v1.40.19(436) 2024-05-21 12:15:37 +02:00
ece434806f Finish v1.40.19(436) 2024-05-21 12:15:36 +02:00
0962192144 -> v1.40.19 (436) 2024-05-21 12:15:29 +02:00
38139a1ec9 Merge remote-tracking branch 'origin/develop' into develop 2024-05-21 12:14:19 +02:00
56e5603256 Fix date in recupero materiale 2024-05-21 12:14:03 +02:00
b5c2efa9e2 Finish v1.40.18(435) 2024-05-14 16:57:12 +02:00
26f9f0e16c Finish v1.40.18(435) 2024-05-14 16:57:12 +02:00
9abba0ce82 -> v.1.40.18 (435) 2024-05-14 16:56:58 +02:00
c616a9d31a Fix InputQuantity in rettifica giaccenze 2024-05-14 16:55:45 +02:00
e45a980ce3 Aggiunto dateTimeRow in ArtDTO 2024-05-10 15:44:23 +02:00
46c9fa184d Finish v1.40.17(434) 2024-05-07 18:22:31 +02:00
3a31fba1b4 Finish v1.40.17(434) 2024-05-07 18:22:30 +02:00
6cded1d2d1 -> v1.40.17 (434) 2024-05-07 18:22:23 +02:00
027d0e891b Fix stream in spedizione 2024-05-07 18:21:40 +02:00
93abea0823 Merge remote-tracking branch 'origin/develop' into develop 2024-05-06 12:52:35 +02:00
5c5216e207 Aggiornato gradle plugin 8.4.0 2024-05-06 12:49:18 +02:00
7a20ff6ddc Finish v1.40.16(433) 2024-05-03 15:05:52 +02:00
048b7d7f56 Finish v1.40.16(433) 2024-05-03 15:05:51 +02:00
f009726cf0 -> v1.40.16 (433) 2024-05-03 15:05:37 +02:00
fb213cbdbb Aggiunta data delle righe dei colli nella generazione dei documenti interni 2024-05-03 11:33:12 +02:00
971dcaed87 Finish v1.40.15(432) 2024-04-30 16:46:14 +02:00
7b132def2a Finish v1.40.15(432) 2024-04-30 16:46:13 +02:00
998dc54292 -> v1.40.15 (432) 2024-04-30 16:46:08 +02:00
157eaf8760 Cambiate alcune logiche in versamento su Ordine 2024-04-29 12:08:10 +02:00
10ffcf7806 Refactoring progress views 2024-04-29 11:33:28 +02:00
392dd18338 Cambiata lettura barcode in Versamento su Ordine 2024-04-24 19:46:11 +02:00
d4c7cdf400 Fix codAnag vettore 2024-04-23 18:14:27 +02:00
cde96ae694 Fix codAnag vettore 2024-04-23 18:04:42 +02:00
e49d35fdbc Implementata gestione degli imballi in spedizione 2024-04-23 16:32:40 +02:00
55db6d362d Merge remote-tracking branch 'origin/develop' into develop 2024-04-19 17:33:03 +02:00
925cb6ae07 Implementata gestione degli imballi in accettazione 2024-04-19 17:32:32 +02:00
c4f1d53199 Finish v1.40.14(431) 2024-04-19 13:57:08 +02:00
e18ac7a390 Finish v1.40.14(431) 2024-04-19 13:57:08 +02:00
cc454aea1a -> v1.40.14 (431) 2024-04-19 13:56:55 +02:00
5cf275e43c Fix nullPoint StatoArtInventarioDto 2024-04-19 13:18:46 +02:00
53fe1db488 Finish v1.40.13(430)_2 2024-04-16 10:53:44 +02:00
64082fc5ee Finish v1.40.13(430)_2 2024-04-16 10:53:43 +02:00
f9c642ad13 Aggiornamenti librerie 2024-04-16 10:53:01 +02:00
bd7edf2357 Finish v1.40.13(430)_1 2024-04-16 10:48:05 +02:00
b7605bd28c Finish v1.40.13(430)_1 2024-04-16 10:48:04 +02:00
ad01283511 Aggiornamenti librerie 2024-04-16 10:46:56 +02:00
adeab93b17 Finish v1.40.13(430) 2024-04-16 08:56:03 +02:00
51480c2b06 Finish v1.40.13(430) 2024-04-16 08:56:03 +02:00
d04b3797ce -> v1.40.13 (430) 2024-04-16 08:55:44 +02:00
518a00becf Fix check newPartitaMag 2024-04-16 08:51:27 +02:00
c808cf7ce3 Finish v1.40.12(429) 2024-04-10 13:30:08 +02:00
8cb488d81f Finish v1.40.12(429) 2024-04-10 13:30:07 +02:00
ed3f84d0ea -> v1.40.12 (429) 2024-04-10 13:29:53 +02:00
d9b02c4402 Fix import MagazzinoRESTConsumer 2024-04-10 13:28:49 +02:00
23522c9370 Finish v1.40.11(428) 2024-04-10 13:27:26 +02:00
f79b40c574 Finish v1.40.11(428) 2024-04-10 13:27:26 +02:00
835915b46a -> v1.40.11 (428) 2024-04-10 13:27:06 +02:00
e643f25aa3 Fix response retrievePartitaMagSyncronized 2024-04-10 13:26:12 +02:00
230a32139d Aggiunto retrievePartitaMagSyncronized in MagazzinoRESTConsumer 2024-04-10 12:21:29 +02:00
b0272cd9e0 Fix thread in validation DialogInputQuantityV2 2024-04-10 12:07:41 +02:00
fa9947f22b Finish v1.40.10(427) 2024-04-09 10:06:58 +02:00
5d3bb333e1 Finish v1.40.10(427) 2024-04-09 10:06:58 +02:00
9f7085dfed -> v1.40.10 (427) 2024-04-09 10:06:32 +02:00
95f765756c Fix vari 2024-04-09 10:04:12 +02:00
a846ec00d7 Finish v1.40.09(426) 2024-04-04 12:26:54 +02:00
6edc1917e1 Finish v1.40.09(426) 2024-04-04 12:26:54 +02:00
1b864253b5 -> v1.40.09 (426) 2024-04-04 12:26:38 +02:00
f212987547 Aggiunto in UtilityString determineDateFormat 2024-04-04 12:25:25 +02:00
76f9c7030b Finish v1.40.08(425) 2024-04-04 11:54:19 +02:00
05bc6e3fbe Finish v1.40.08(425) 2024-04-04 11:54:18 +02:00
38dc5e134c -> v1.40.08 (425) 2024-04-04 11:53:56 +02:00
76cf6c7d66 Fix LocalDate deserializer 2024-04-04 11:52:24 +02:00
21100d517c Finish v1.40.07(424) 2024-03-27 18:16:12 +01:00
37f83cd642 Finish v1.40.07(424) 2024-03-27 18:16:11 +01:00
f29f832387 -> v1.40.07 (424) 2024-03-27 18:16:05 +01:00
dd523ed6d8 Rimossa apertura loading popup che causava crash 2024-03-27 18:15:11 +01:00
879cfc5f7e Fix vari 2024-03-25 12:45:21 +01:00
83a6dd29f2 Aggiornato AGP 2024-03-25 10:58:19 +01:00
cc85d83267 Finish v1.40.06(423) 2024-03-18 12:09:26 +01:00
5d427a258e Finish v1.40.06(423) 2024-03-18 12:09:26 +01:00
75e0a13f10 -> v1.40.06 (423) 2024-03-18 12:09:07 +01:00
0862727176 Fix nessun selezionato filtro gruppo merceologico 2024-03-18 12:06:58 +01:00
6c02fcc9d5 Finish v1.40.05(422) 2024-03-15 18:28:52 +01:00
cd38c1b301 Finish v1.40.05(422) 2024-03-15 18:28:51 +01:00
c822f14a10 -> v1.40.05 (422) 2024-03-15 18:28:29 +01:00
76683cb80c Fix nullPoint List<StatoArtInventarioDTO> in riposizionamento da prod 2024-03-15 18:25:48 +01:00
3041498ff1 Fix modal stato inventario 2024-03-14 16:44:39 +01:00
66e0ce15cb Fix filtro gruppo merceologico in approvvigionamento linee 2024-03-14 15:22:10 +01:00
e12da84fa3 Nel "riposizionamento da produzione" aggiunte le informazioni per "in arrivo" e "in magazzino" 2024-03-14 13:04:48 +01:00
bd4f28eb6d Fix rettifica giacenza 2024-03-13 12:59:26 +01:00
c25b2e6cb5 Aggiunto filtro per per gruppo merceologico in approvvigionamento linee 2024-03-13 11:08:55 +01:00
b86a1eb1bd Nella sezione "rettifica giacenza" aggiunto avviso nell'inserimento di una nuova della partita per articolo 2024-03-12 16:34:52 +01:00
a9b5483005 Refactor nomi varibili setup 2024-03-12 16:10:38 +01:00
29c181cff1 Refactor nomi varibili setup in settinsManager 2024-03-12 16:07:46 +01:00
614da5ec5a Refactor nomi varibili setup 2024-03-12 16:05:58 +01:00
5342f96076 Finish v1.40.04(421) 2024-03-11 17:33:45 +01:00
479950df14 Finish v1.40.04(421) 2024-03-11 17:33:44 +01:00
51fa32d48d -> v1.40.04 (421) 2024-03-11 17:33:38 +01:00
e491c56f3f Merge remote-tracking branch 'origin/develop' into develop 2024-03-11 17:32:28 +01:00
5c505e2fe1 Implementato flag per gestire la qta suggerita in accettazione bolle 2024-03-11 17:32:09 +01:00
67e88d01e7 Implementato in rettifica giacenza avviso se l'articolo che si sta inserendo è attivo o meno 2024-03-11 13:32:08 +01:00
9454614af6 Rimosso tipo report WMS_SPEDIZIONE_ETICHETTE_SSCC_ORD 2024-03-07 16:11:52 +01:00
535a095b0a Finish v1.40.03(420) 2024-03-07 12:10:19 +01:00
c6457ccf1c Finish v1.40.03(420) 2024-03-07 12:10:19 +01:00
3f470df462 -> v1.40.03 (420) 2024-03-07 12:10:04 +01:00
af5c5338b7 Fix linea di impiego in dialog in approv. linee 2024-03-07 12:03:44 +01:00
e832db3214 Finish v1.40.02(419) 2024-03-07 10:17:55 +01:00
8b432d1b19 Finish v1.40.02(419) 2024-03-07 10:17:55 +01:00
d33eb81968 -> v1.40.02 (419) 2024-03-07 10:17:50 +01:00
be60cdb971 Merge remote-tracking branch 'origin/develop' into develop 2024-03-07 10:16:46 +01:00
062f877777 Fix su folder di download degli aggiornamenti 2024-03-07 10:16:37 +01:00
5187564250 Aggiunta setup per dialog info situazione articolo in picking da ordine di lavorazione 2024-03-05 16:22:59 +01:00
fc22c119f6 Finish v1.40.01(418) 2024-03-05 11:08:45 +01:00
dd8b696862 Finish v1.40.01(418) 2024-03-05 11:08:44 +01:00
99a5e162de -> v1.40.01 (418) 2024-03-05 11:08:28 +01:00
84dcf30aac In Accettazione bolla evidenziato di un colore diverso le righe in cui è stata accettata più merce del previsto 2024-03-05 11:04:54 +01:00
388c0641cf Finish v1.40.00(417) 2024-03-04 14:51:40 +01:00
40f2c86eec Finish v1.40.00(417) 2024-03-04 14:51:39 +01:00
34bd0109c0 -> v1.40.00 (417) 2024-03-04 14:50:58 +01:00
b4199f38aa Creata gestione "Articoli in giacenza" 2024-03-04 14:45:25 +01:00
299e066436 Finish v1.39.03(416) 2024-03-01 18:01:33 +01:00
0098fdaf5a Finish v1.39.03(416) 2024-03-01 18:01:32 +01:00
76d26765ef -> v1.39.03 (416) 2024-03-01 18:01:29 +01:00
c5b6e80aaf Merge remote-tracking branch 'origin/develop' into develop 2024-03-01 18:00:46 +01:00
a1b3517b07 Fix su serializzatore GSON 2024-03-01 18:00:28 +01:00
bd3fdd9ab1 Aggiunto filtro descrizione in gestione Riposizionamento da prod 2024-02-26 13:04:31 +01:00
377950c978 Aggiunto try catch per catturare le eccezioni in caso di re-add del dialog di progress 2024-02-22 15:53:42 +01:00
d17e528158 Finish v1.39.02(415) 2024-02-22 12:34:12 +01:00
207 changed files with 5594 additions and 1825 deletions

10
.idea/deploymentTargetSelector.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>

View File

@@ -84,6 +84,11 @@ Create the following layout resource file [dialog_${dashName}.xml]
private Dialog${NAME}View() {
super();
MainApplication.appComponent
.dialog${NAME}Component()
.create()
.inject(this);
}
@@ -105,10 +110,6 @@ Create the following layout resource file [dialog_${dashName}.xml]
[b] into interface body
Dialog${NAME}Component.Factory dialog${NAME}Component();
*/
MainApplication.appComponent
.dialog${NAME}Component()
.create()
.inject(this);
setCancelable(false);

2
.idea/kotlinc.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.9.0" />
<option name="version" value="1.9.20" />
</component>
</project>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 415
def appVersionName = '1.39.02'
def appVersionCode = 437
def appVersionName = '1.40.20'
signingConfigs {
release {
@@ -103,17 +103,16 @@ dependencies {
//Firebase
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:29.1.0')
implementation platform('com.google.firebase:firebase-bom:32.8.1')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-core'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf'
implementation 'com.google.android.gms:play-services-basement:18.2.0'
implementation 'com.google.android.gms:play-services-basement:18.3.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.10.0'
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
@@ -128,7 +127,7 @@ dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.annimon:stream:1.2.2'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.7.0'
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'org.apache.commons:commons-text:1.9'

View File

@@ -33,31 +33,25 @@
android:requestLegacyExternalStorage="true">
<activity
android:name=".gest.spedizione.SpedizioneActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.prod_dettaglio_linea.ProdDettaglioLineaActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.picking_resi.PickingResiActivity"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.main.MainActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:exported="true">
<intent-filter>
@@ -68,28 +62,23 @@
</activity>
<activity
android:name=".gest.login.LoginActivity"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:windowSoftInputMode="adjustPan"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.lista_bancali.ListaBancaliActivity"
android:label="@string/activity_lista_bancali_title"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.contenuto_bancale.ContenutoBancaleActivity"
android:label="@string/activity_contenuto_bancale_title"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.inventario.picking.PickingInventarioActivity"
android:label="@string/activity_picking_inventario_title"
android:windowSoftInputMode="adjustNothing"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden"/>
<meta-data
@@ -110,8 +99,7 @@
<activity
android:name=".gest.accettazione_bolla_picking.AccettazioneBollaPickingActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" />
android:screenOrientation="portrait" />
<provider
android:name=".core.update.GenericFileProvider"

View File

@@ -19,6 +19,8 @@ import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazi
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoModule;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingComponent;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingModule;
import it.integry.integrywmsnative.gest.articoli_in_giacenza.ArticoliInGiacenzaComponent;
import it.integry.integrywmsnative.gest.articoli_in_giacenza.ArticoliInGiacenzaModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent;
@@ -112,6 +114,8 @@ import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaPro
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreComponent;
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreModule;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
@@ -136,6 +140,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiComponent;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiModule;
// Definition of the Application graph
@Singleton
@@ -206,7 +212,10 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogInfoAggiuntiveLUModule.class,
DialogAskLineaProdModule.class,
ProdRiposizionamentoDaProdModule.class,
DialogInfoGiacenzaModule.class
DialogInfoGiacenzaModule.class,
ArticoliInGiacenzaModule.class,
DialogTracciamentoImballiModule.class,
DialogAskVettoreModule.class
})
public interface MainApplicationComponent {
@@ -346,6 +355,12 @@ public interface MainApplicationComponent {
DialogInfoGiacenzaComponent.Factory dialogInfoGiacenzaComponent();
ArticoliInGiacenzaComponent.Factory controlloGiacenzeComponent();
DialogTracciamentoImballiComponent.Factory dialogTracciamentoImballiComponent();
DialogAskVettoreComponent.Factory dialogAskVettoreComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@@ -32,6 +32,7 @@ import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoBufferRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
@@ -42,6 +43,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.sound.SoundAlertService;
@@ -172,8 +174,8 @@ public class MainApplicationModule {
@Provides
@Singleton
MagazzinoRESTConsumer provideMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new MagazzinoRESTConsumer(systemRESTConsumer);
MagazzinoRESTConsumer provideMagazzinoRESTConsumer(ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
return new MagazzinoRESTConsumer(executorService, systemRESTConsumer);
}
@Provides
@@ -247,8 +249,20 @@ public class MainApplicationModule {
@Provides
@Singleton
GiacenzaRESTConsumer provideGiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new GiacenzaRESTConsumer(systemRESTConsumer, articoloRESTConsumer);
GiacenzaRESTConsumer provideGiacenzaRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) {
return new GiacenzaRESTConsumer(articoloRESTConsumer);
}
@Provides
@Singleton
ImballiRESTConsumer provideImballiRESTConsumer(ExecutorService executorService) {
return new ImballiRESTConsumer(executorService);
}
@Provides
@Singleton
VettoriRESTConsumer provideVettoriRESTConsumer(ExecutorService executorService) {
return new VettoriRESTConsumer(executorService);
}
@Provides

View File

@@ -5,6 +5,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoFragment;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoFragment;
import it.integry.integrywmsnative.gest.articoli_in_giacenza.ArticoliInGiacenzaFragment;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariFragment;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment;
@@ -115,7 +116,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null)))
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, SettingsManager.iDB().isFlagProduzioneShowInfo() ? DialogInfoSituazioneArticoloView.class : null)))
.addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking)
@@ -218,6 +219,13 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(ElencoInventariFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_articoli_in_giacenza)
.setCodMenu("MG070")
.setTitleText(R.string.articoli_in_giacenza_title)
.setTitleIcon(R.drawable.ic_dashboard_articoli_in_giacenza)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(ArticoliInGiacenzaFragment::newInstance))
).addGroup(
new MenuGroup()

View File

@@ -22,6 +22,7 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityGson;
@Singleton
public class ColliDataRecoverService {
@@ -108,7 +109,7 @@ public class ColliDataRecoverService {
private void loadLocalFile() {
InputStream inputStream;
Gson gson = new Gson();
Gson gson = UtilityGson.createObject();
try {
inputStream = mApplicationContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
@@ -130,7 +131,7 @@ public class ColliDataRecoverService {
private void updateLocalFile() {
FileOutputStream outputStream;
Gson gson = new Gson();
Gson gson = UtilityGson.createObject();
String jsonText = gson.toJson(mtbColtsSessions);
try {

View File

@@ -211,16 +211,19 @@ public class Converters {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
observableBigDecimal.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableBigDecimal, watcher));
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? new BigDecimal(view.getText().toString()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
@@ -238,8 +241,11 @@ public class Converters {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
String newValueString = s.toString().trim();
if (!UtilityString.isNullOrEmpty(newValueString))
value = new BigDecimal(newValueString);
observableBigDecimal.set(value);
}
};
@@ -247,7 +253,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? new BigDecimal(view.getText().toString()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));

View File

@@ -52,7 +52,11 @@ public class BaseActivity extends AppCompatActivity {
if (!progressOpened && !this.mCurrentProgress.isAdded() && !this.mCurrentProgress.isInLayout()) {
this.progressOpened = true;
runOnUiThread(() -> {
this.mCurrentProgress.show(getSupportFragmentManager(), "tag");
try {
this.mCurrentProgress.show(getSupportFragmentManager(), "tag");
} catch (IllegalStateException ise) {
//ignored
}
});
}
}

View File

@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -19,7 +20,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class BaseDialogFragment extends DialogFragment implements DialogInterface.OnShowListener {
public abstract class BaseDialogFragment extends DialogFragment implements DialogInterface.OnShowListener {
@Inject
public DialogProgressView mCurrentProgress;
@@ -111,7 +112,14 @@ public class BaseDialogFragment extends DialogFragment implements DialogInterfac
@Override
public void onShow(DialogInterface dialogInterface) {
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
this.initialize();
this.onInit(dialogInterface);
}
public void onInit(DialogInterface dialogInterface) {
}
private void initialize() {

View File

@@ -261,6 +261,11 @@ public class MtbColr extends EntityBase {
return this;
}
public MtbColr setDataColloRif(LocalDate dataColloRif) {
this.dataColloRif = UtilityDate.formatDate(dataColloRif, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}

View File

@@ -10,6 +10,7 @@ import com.annimon.stream.Stream;
import org.jetbrains.annotations.Nullable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -170,6 +171,11 @@ public class MtbColt extends EntityBase {
return this;
}
public MtbColt setDataCollo(LocalDate dataCollo) {
this.dataCollo = UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
return this;
}
public String getSerCollo() {
return serCollo;
}

View File

@@ -1,5 +1,7 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class MtbTCol {
@@ -13,7 +15,7 @@ public class MtbTCol {
private BigDecimal taraKg;
private String descrizione;
private String codMart;
private String flagUIUL;
private FlagUiUlEnum flagUIUL;
private String circuito;
public String getCodTcol() {
@@ -88,13 +90,12 @@ public class MtbTCol {
return this;
}
public String getFlagUIUL() {
public FlagUiUlEnum getFlagUIUL() {
return flagUIUL;
}
public MtbTCol setFlagUIUL(String flagUIUL) {
public void setFlagUIUL(FlagUiUlEnum flagUIUL) {
this.flagUIUL = flagUIUL;
return this;
}
public String getCircuito() {
@@ -107,4 +108,29 @@ public class MtbTCol {
}
public enum FlagUiUlEnum {
@SerializedName("UI")
UI("UI"),
@SerializedName("UL")
UL("UL");
private final String text;
FlagUiUlEnum(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
public static FlagUiUlEnum fromString(String text) {
for (FlagUiUlEnum b : FlagUiUlEnum.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
}
}

View File

@@ -2,8 +2,11 @@ package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString;
/**
* Created by ValerioC on 06/03/2018.
@@ -39,6 +42,7 @@ public class MvwSitArtUdcDetInventario {
private String codJfas;
private MtbAart mtbAart;
private Integer numOrd;
private Date dataOrd;
public String getGestione() {
return gestione;
@@ -292,6 +296,12 @@ public class MvwSitArtUdcDetInventario {
return this;
}
public String getQtaText(){
String text = UtilityNumber.decimalToString(this.qtaCol);
text += !UtilityString.isNullOrEmpty(this.untMis) ? "\n" + this.untMis : "";
return text;
}
public MtbColr toMtbColr() {
return new MtbColr()
.setCodJcom(getCodJcom())
@@ -309,4 +319,13 @@ public class MvwSitArtUdcDetInventario {
.setPesoLordoKg(getPesoLordoKg())
.setUntMis(getUntMis());
}
public Date getDataOrd() {
return dataOrd;
}
public MvwSitArtUdcDetInventario setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
}

View File

@@ -0,0 +1,95 @@
package it.integry.integrywmsnative.core.model;
import android.os.Parcelable;
import java.math.BigDecimal;
public class VtbVetr extends EntityBase {
public VtbVetr() {
type = "vtb_vetr";
}
private String codVvet;
private String codSpes;
private String idRiga;
private BigDecimal daQta;
private BigDecimal aQta;
private BigDecimal impUnt;
private BigDecimal impFisso;
private String codDivi;
public String getCodVvet() {
return codVvet;
}
public VtbVetr setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public String getCodSpes() {
return codSpes;
}
public VtbVetr setCodSpes(String codSpes) {
this.codSpes = codSpes;
return this;
}
public String getIdRiga() {
return idRiga;
}
public VtbVetr setIdRiga(String idRiga) {
this.idRiga = idRiga;
return this;
}
public BigDecimal getDaQta() {
return daQta;
}
public VtbVetr setDaQta(BigDecimal daQta) {
this.daQta = daQta;
return this;
}
public BigDecimal getaQta() {
return aQta;
}
public VtbVetr setaQta(BigDecimal aQta) {
this.aQta = aQta;
return this;
}
public BigDecimal getImpUnt() {
return impUnt;
}
public VtbVetr setImpUnt(BigDecimal impUnt) {
this.impUnt = impUnt;
return this;
}
public BigDecimal getImpFisso() {
return impFisso;
}
public VtbVetr setImpFisso(BigDecimal impFisso) {
this.impFisso = impFisso;
return this;
}
public String getCodDivi() {
return codDivi;
}
public VtbVetr setCodDivi(String codDivi) {
this.codDivi = codDivi;
return this;
}
}

View File

@@ -0,0 +1,273 @@
package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal;
import java.util.List;
public class VtbVett extends EntityBase {
public VtbVett() {
type = "vtb_vett";
}
private String codVvet;
private String codLettVett;
private String codAnag;
private String ragSoc;
private String indirizzo;
private String cap;
private String citta;
private String prov;
private String nazione;
private String telefono;
private String fax;
private String partIva;
private String note;
private String eMail;
private String modStamp;
private BigDecimal coefVol;
private String flagAttivo;
private String numAutoriz;
private List<VtbVetr> vtbVetr;
public String getCodVvet() {
return codVvet;
}
public VtbVett setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public String getCodLettVett() {
return codLettVett;
}
public VtbVett setCodLettVett(String codLettVett) {
this.codLettVett = codLettVett;
return this;
}
public String getCodAnag() {
return codAnag;
}
public VtbVett setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getRagSoc() {
return ragSoc;
}
public VtbVett setRagSoc(String ragSoc) {
this.ragSoc = ragSoc;
return this;
}
public String getIndirizzo() {
return indirizzo;
}
public VtbVett setIndirizzo(String indirizzo) {
this.indirizzo = indirizzo;
return this;
}
public String getCap() {
return cap;
}
public VtbVett setCap(String cap) {
this.cap = cap;
return this;
}
public String getCitta() {
return citta;
}
public VtbVett setCitta(String citta) {
this.citta = citta;
return this;
}
public String getProv() {
return prov;
}
public VtbVett setProv(String prov) {
this.prov = prov;
return this;
}
public String getNazione() {
return nazione;
}
public VtbVett setNazione(String nazione) {
this.nazione = nazione;
return this;
}
public String getTelefono() {
return telefono;
}
public VtbVett setTelefono(String telefono) {
this.telefono = telefono;
return this;
}
public String getFax() {
return fax;
}
public VtbVett setFax(String fax) {
this.fax = fax;
return this;
}
public String getPartIva() {
return partIva;
}
public VtbVett setPartIva(String partIva) {
this.partIva = partIva;
return this;
}
public String getNote() {
return note;
}
public VtbVett setNote(String note) {
this.note = note;
return this;
}
public String geteMail() {
return eMail;
}
public VtbVett seteMail(String eMail) {
this.eMail = eMail;
return this;
}
public String getModStamp() {
return modStamp;
}
public VtbVett setModStamp(String modStamp) {
this.modStamp = modStamp;
return this;
}
public BigDecimal getCoefVol() {
return coefVol;
}
public VtbVett setCoefVol(BigDecimal coefVol) {
this.coefVol = coefVol;
return this;
}
public String getFlagAttivo() {
return flagAttivo;
}
public VtbVett setFlagAttivo(String flagAttivo) {
this.flagAttivo = flagAttivo;
return this;
}
public String getNumAutoriz() {
return numAutoriz;
}
public VtbVett setNumAutoriz(String numAutoriz) {
this.numAutoriz = numAutoriz;
return this;
}
public List<VtbVetr> getVtbVetr() {
return vtbVetr;
}
public VtbVett setVtbVetr(List<VtbVetr> vtbVetr) {
this.vtbVetr = vtbVetr;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
VtbVett vtbVett = (VtbVett) o;
if (!getCodVvet().equals(vtbVett.getCodVvet())) return false;
if (getCodLettVett() != null ? !getCodLettVett().equals(vtbVett.getCodLettVett()) : vtbVett.getCodLettVett() != null)
return false;
if (getCodAnag() != null ? !getCodAnag().equals(vtbVett.getCodAnag()) : vtbVett.getCodAnag() != null)
return false;
if (getRagSoc() != null ? !getRagSoc().equals(vtbVett.getRagSoc()) : vtbVett.getRagSoc() != null)
return false;
if (getIndirizzo() != null ? !getIndirizzo().equals(vtbVett.getIndirizzo()) : vtbVett.getIndirizzo() != null)
return false;
if (getCap() != null ? !getCap().equals(vtbVett.getCap()) : vtbVett.getCap() != null)
return false;
if (getCitta() != null ? !getCitta().equals(vtbVett.getCitta()) : vtbVett.getCitta() != null)
return false;
if (getProv() != null ? !getProv().equals(vtbVett.getProv()) : vtbVett.getProv() != null)
return false;
if (getNazione() != null ? !getNazione().equals(vtbVett.getNazione()) : vtbVett.getNazione() != null)
return false;
if (getTelefono() != null ? !getTelefono().equals(vtbVett.getTelefono()) : vtbVett.getTelefono() != null)
return false;
if (getFax() != null ? !getFax().equals(vtbVett.getFax()) : vtbVett.getFax() != null)
return false;
if (getPartIva() != null ? !getPartIva().equals(vtbVett.getPartIva()) : vtbVett.getPartIva() != null)
return false;
if (getNote() != null ? !getNote().equals(vtbVett.getNote()) : vtbVett.getNote() != null)
return false;
if (geteMail() != null ? !geteMail().equals(vtbVett.geteMail()) : vtbVett.geteMail() != null)
return false;
if (getModStamp() != null ? !getModStamp().equals(vtbVett.getModStamp()) : vtbVett.getModStamp() != null)
return false;
if (getCoefVol() != null ? !getCoefVol().equals(vtbVett.getCoefVol()) : vtbVett.getCoefVol() != null)
return false;
if (getFlagAttivo() != null ? !getFlagAttivo().equals(vtbVett.getFlagAttivo()) : vtbVett.getFlagAttivo() != null)
return false;
if (getNumAutoriz() != null ? !getNumAutoriz().equals(vtbVett.getNumAutoriz()) : vtbVett.getNumAutoriz() != null)
return false;
return getVtbVetr() != null ? getVtbVetr().equals(vtbVett.getVtbVetr()) : vtbVett.getVtbVetr() == null;
}
@Override
public int hashCode() {
int result = getCodVvet().hashCode();
result = 31 * result + (getCodLettVett() != null ? getCodLettVett().hashCode() : 0);
result = 31 * result + (getCodAnag() != null ? getCodAnag().hashCode() : 0);
result = 31 * result + (getRagSoc() != null ? getRagSoc().hashCode() : 0);
result = 31 * result + (getIndirizzo() != null ? getIndirizzo().hashCode() : 0);
result = 31 * result + (getCap() != null ? getCap().hashCode() : 0);
result = 31 * result + (getCitta() != null ? getCitta().hashCode() : 0);
result = 31 * result + (getProv() != null ? getProv().hashCode() : 0);
result = 31 * result + (getNazione() != null ? getNazione().hashCode() : 0);
result = 31 * result + (getTelefono() != null ? getTelefono().hashCode() : 0);
result = 31 * result + (getFax() != null ? getFax().hashCode() : 0);
result = 31 * result + (getPartIva() != null ? getPartIva().hashCode() : 0);
result = 31 * result + (getNote() != null ? getNote().hashCode() : 0);
result = 31 * result + (geteMail() != null ? geteMail().hashCode() : 0);
result = 31 * result + (getModStamp() != null ? getModStamp().hashCode() : 0);
result = 31 * result + (getCoefVol() != null ? getCoefVol().hashCode() : 0);
result = 31 * result + (getFlagAttivo() != null ? getFlagAttivo().hashCode() : 0);
result = 31 * result + (getNumAutoriz() != null ? getNumAutoriz().hashCode() : 0);
result = 31 * result + (getVtbVetr() != null ? getVtbVetr().hashCode() : 0);
return result;
}
}

View File

@@ -10,8 +10,6 @@ public enum ReportType {
ETICHETTA_SSCC_LAVORAZIONE(1),
@SerializedName("2")
ETICHETTA_SSCC_SPEDIZIONE(2),
@SerializedName("3")
WMS_SPEDIZIONE_ETICHETTE_SSCC_ORD(3),
@SerializedName("4")
WMS_SPEDIZIONE_PACKING_LIST_ORD(4),
@SerializedName("5")

View File

@@ -61,7 +61,11 @@ public class RESTBuilder {
Gson gson = UtilityGson.createObject();
Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(endpoint).client(client).build();
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(endpoint)
.client(client)
.build();
return retrofit.create(service);
}

View File

@@ -40,7 +40,7 @@ public class EntityRESTConsumer extends _BaseRESTConsumer {
if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) {
Gson gson = new Gson();
Gson gson = UtilityGson.createObject();
T object = gson.fromJson(response.body().getEntity(), type);
callback.onSuccess(object);
@@ -133,7 +133,7 @@ public class EntityRESTConsumer extends _BaseRESTConsumer {
if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) {
Gson gson = new Gson();
Gson gson = UtilityGson.createObject();
List<JsonObject> jsons = response.body().getEntityList();
List<T> newList = new ArrayList<T>();

View File

@@ -25,11 +25,9 @@ import retrofit2.Response;
@Singleton
public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer mSystemRESTConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
public GiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
public GiacenzaRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
}
@@ -41,27 +39,31 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
public void onResponse(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Response<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> response) {
analyzeAnswer(response, "getGiacenzeInPosizione", inventarioList -> {
List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim())
.toList();
if(inventarioList != null && !inventarioList.isEmpty()){
List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim())
.toList();
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var row : inventarioList) {
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var row : inventarioList) {
MtbAart foundMtbAart = null;
Optional<MtbAart> mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
.findFirst();
MtbAart foundMtbAart = null;
Optional<MtbAart> mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
.findFirst();
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
}
row.setMtbAart(foundMtbAart);
}
row.setMtbAart(foundMtbAart);
}
onComplete.run(inventarioList);
}, onFailed);
onComplete.run(inventarioList);
}, onFailed);
}else{
onComplete.run(new ArrayList<>());
}
}, onFailed);
}

View File

@@ -0,0 +1,92 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.imballi.ImballoQuantityDTO;
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraCaricoImballiRequestDTO;
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraScaricoImballiRequestDTO;
import retrofit2.Response;
@Singleton
public class ImballiRESTConsumer extends _BaseRESTConsumer {
private final ExecutorService executorService;
public ImballiRESTConsumer(ExecutorService executorService) {
this.executorService = executorService;
}
public List<MtbTCol> retrieveTipiColloSyncronized(MtbTCol.FlagUiUlEnum tipoImballo) throws Exception {
ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class);
Response<ServiceRESTResponse<List<MtbTCol>>> response = service.retrieveTipiCollo(tipoImballo)
.execute();
return analyzeAnswer(response, "retrieveTipiCollo");
}
public void retrieveTipiCollo(MtbTCol.FlagUiUlEnum tipoImballo, RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
var response = retrieveTipiColloSyncronized(tipoImballo);
if (onComplete != null) onComplete.run(response);
} catch (Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
}
public void registraCaricoSyncronized(String codAnag, List<ImballoQuantityDTO> imballi) throws Exception {
ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class);
Response<ServiceRESTResponse<Void>> response = service.registraCarico(
new RegistraCaricoImballiRequestDTO()
.setCodAnag(codAnag)
.setUsedImballi(imballi))
.execute();
analyzeAnswer(response, "registraCarico");
}
public void registraCarico(String codAnag, List<ImballoQuantityDTO> imballi, Runnable onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
registraCaricoSyncronized(codAnag, imballi);
if (onComplete != null) onComplete.run();
} catch (Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
}
public void registraScaricoSyncronized(String codVettore, List<ImballoQuantityDTO> imballi) throws Exception {
ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class);
Response<ServiceRESTResponse<Void>> response = service.registraScarico(
new RegistraScaricoImballiRequestDTO()
.setCodVettore(codVettore)
.setUsedImballi(imballi))
.execute();
analyzeAnswer(response, "registraScarico");
}
public void registraScarico(String idVettore, List<ImballoQuantityDTO> imballi, Runnable onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
registraScaricoSyncronized(idVettore, imballi);
if (onComplete != null) onComplete.run();
} catch (Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraCaricoImballiRequestDTO;
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraScaricoImballiRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface ImballiRESTConsumerService {
@GET("wms/imballi/retrieve/{tipo}")
Call<ServiceRESTResponse<List<MtbTCol>>> retrieveTipiCollo(@Path("tipo") MtbTCol.FlagUiUlEnum tipo);
@POST("wms/imballi/registraCarico")
Call<ServiceRESTResponse<Void>> registraCarico(@Body RegistraCaricoImballiRequestDTO registraCaricoImballiRequest);
@POST("wms/imballi/registraScarico")
Call<ServiceRESTResponse<Void>> registraScarico(@Body RegistraScaricoImballiRequestDTO registraScaricoImballiRequest);
}

View File

@@ -1,16 +1,11 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
@@ -21,56 +16,14 @@ import retrofit2.Response;
@Singleton
public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
private final ExecutorService executorService;
private final SystemRESTConsumer mSystemRESTConsumer;
public MagazzinoRESTConsumer(SystemRESTConsumer mSystemRESTConsumer) {
public MagazzinoRESTConsumer(ExecutorService executorService, SystemRESTConsumer mSystemRESTConsumer) {
this.executorService = executorService;
this.mSystemRESTConsumer = mSystemRESTConsumer;
}
public void getTipiCollo(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol ";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {
}.getType();
mSystemRESTConsumer.<ArrayList<MtbTCol>>processSql(baseSql, typeOfObjectsList, values -> {
if (onComplete != null) {
onComplete.run(values);
}
}, ex -> {
if (onFailed != null) onFailed.run(ex);
});
}
public void saveOrdine(SaveDTO saveDTO, RunnableArgs<DtbOrdt> onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class, 240);
service.saveOrdine(saveDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) {
if (response.body() != null && response.body().size() > 0) {
analyzeListOfAnswers(response, "saveOrdine", dtoList -> {
if (dtoList.size() > 0) {
onComplete.run(dtoList.get(0));
} else {
onFailed.run(new Exception("Nessun ordine generato"));
}
}, onFailed);
} else {
onFailed.run(new Exception("Nessun ordine generato"));
}
}
@Override
public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void saveTerminalinoWMS(SaveDTO saveDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.saveTerminalinoWMS(saveDTO)
@@ -86,4 +39,24 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
}
});
}
public MtbPartitaMag retrievePartitaMagSyncronized(String partitaMag, String codMart) throws Exception {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
Response<ServiceRESTResponse<MtbPartitaMag>> response = service.retrievePartitaMag(codMart, partitaMag)
.execute();
return analyzeAnswer(response, "retrievePartitaMag");
}
public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs<MtbPartitaMag> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
var response = retrievePartitaMagSyncronized(partitaMag, codMart);
if (onComplete != null) onComplete.run(response);
} catch (Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@@ -2,19 +2,26 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
public interface MagazzinoRESTConsumerService {
@POST("SM2SaveTerminalinoWMS")
Call<ServiceRESTResponse<Void>> saveTerminalinoWMS(@Body SaveDTO saveDTO);
@POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO);
@GET("wms/partita-magazzino/retrievePartitaMag")
Call<ServiceRESTResponse<MtbPartitaMag>> retrievePartitaMag(@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag);
}

View File

@@ -157,6 +157,10 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}
public void printClosedOrders(PrintOrderCloseDTO dto, String codMdep, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if (BuildConfig.DEBUG) {
onComplete.run();
return;
}
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class, 240);
Call<ServiceRESTResponse<Object>> callable = printerService.printClosedOrders(codMdep, dto);

View File

@@ -32,6 +32,7 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityGson;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call;
import retrofit2.Callback;
@@ -72,15 +73,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "ProcessSql", o -> {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, (JsonDeserializer<?>) (json, typeOfT, context) -> {
try {
return UtilityDate.recognizeDate(json.getAsString());
} catch (Exception e) {
throw new JsonParseException(e);
}
})
.create();
Gson gson = UtilityGson.createObject();
String json = gson.toJson(o);

View File

@@ -0,0 +1,44 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.VtbVett;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Response;
@Singleton
public class VettoriRESTConsumer extends _BaseRESTConsumer {
private final ExecutorService executorService;
public VettoriRESTConsumer(ExecutorService executorService) {
this.executorService = executorService;
}
public List<VtbVett> retrieveRecentlyUsedInOrdersSyncronized(GestioneEnum gestione) throws Exception {
var service = RESTBuilder.getService(VettoriRESTConsumerService.class);
Response<ServiceRESTResponse<List<VtbVett>>> response = service.retrieveRecentlyUsedInOrders(gestione)
.execute();
return analyzeAnswer(response, "retrieveRecentlyUsedInOrders");
}
public void retrieveRecentlyUsedInOrders(GestioneEnum gestione, RunnableArgs<List<VtbVett>> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
var response = retrieveRecentlyUsedInOrdersSyncronized(gestione);
if (onComplete != null) onComplete.run(response);
} catch (Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.VtbVett;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface VettoriRESTConsumerService {
@GET("wms/vettore/recentlyUsedInOrders")
Call<ServiceRESTResponse<List<VtbVett>>> retrieveRecentlyUsedInOrders(@Query("gestione") GestioneEnum gestioneEnum);
}

View File

@@ -13,15 +13,13 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class LocalDateDeserializer implements JsonDeserializer<LocalDate> {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
@Override
public LocalDate deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
String date = element.getAsString();
if (UtilityString.isNullOrEmpty(date)) return null;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UtilityString.determineDateFormat(date));
return LocalDate.parse(date, formatter);
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.integrywmsnative.core.rest.deserializer;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import it.integry.integrywmsnative.core.model.MtbTCol;
public class MtbTcolFlagUiUlDeserializer implements JsonDeserializer<MtbTCol.FlagUiUlEnum> {
@Override
public MtbTCol.FlagUiUlEnum deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (json.isJsonNull()) {
return null;
}
String text = json.getAsString();
return MtbTCol.FlagUiUlEnum.fromString(text);
}
}

View File

@@ -328,13 +328,13 @@ public class Ean128Model {
public String InternalPart;
///<summary>Informazioni interne</summary>
public String Internal1;
public String Internal1; //Cod-Mart
///<summary>Informazioni interne</summary>
public String Internal2;
public String Internal2; //IDLotto
///<summary>Informazioni interne</summary>
public String Internal3;
public String Internal3; //Cod-Jfas
///<summary>Informazioni interne</summary>
public String Internal4;

View File

@@ -0,0 +1,25 @@
package it.integry.integrywmsnative.core.rest.model.imballi;
public class ImballoQuantityDTO {
private String codMart;
private Integer qta;
public String getCodMart() {
return codMart;
}
public ImballoQuantityDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public Integer getQta() {
return qta;
}
public ImballoQuantityDTO setQta(Integer qta) {
this.qta = qta;
return this;
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.integrywmsnative.core.rest.model.imballi;
import java.util.List;
public class RegistraCaricoImballiRequestDTO {
private String codAnag;
private List<ImballoQuantityDTO> usedImballi;
public String getCodAnag() {
return codAnag;
}
public RegistraCaricoImballiRequestDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public List<ImballoQuantityDTO> getUsedImballi() {
return usedImballi;
}
public RegistraCaricoImballiRequestDTO setUsedImballi(List<ImballoQuantityDTO> usedImballi) {
this.usedImballi = usedImballi;
return this;
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.integrywmsnative.core.rest.model.imballi;
import java.util.List;
public class RegistraScaricoImballiRequestDTO {
private String codVettore;
private List<ImballoQuantityDTO> usedImballi;
public String getCodVettore() {
return codVettore;
}
public RegistraScaricoImballiRequestDTO setCodVettore(String codVettore) {
this.codVettore = codVettore;
return this;
}
public List<ImballoQuantityDTO> getUsedImballi() {
return usedImballi;
}
public RegistraScaricoImballiRequestDTO setUsedImballi(List<ImballoQuantityDTO> usedImballi) {
this.usedImballi = usedImballi;
return this;
}
}

View File

@@ -14,6 +14,7 @@ public class CreateUDSRequestDTO {
private String codAnag;
private String codVdes;
private String rifOrd;
private Integer idLotto;
private boolean orderRequired;
private List<CreateUDSRequestOrderDTO> orders;
@@ -125,6 +126,14 @@ public class CreateUDSRequestDTO {
return this;
}
public Integer getIdLotto() {
return idLotto;
}
public CreateUDSRequestDTO setIdLotto(Integer idLotto) {
this.idLotto = idLotto;
return this;
}
public static class Causale {

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.rest.serializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
import it.integry.integrywmsnative.core.model.MtbTCol;
public class MtbTcolFlagUiUlSerializer implements JsonSerializer<MtbTCol.FlagUiUlEnum> {
@Override
public JsonElement serialize(MtbTCol.FlagUiUlEnum src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src.getText());
}
}

View File

@@ -20,7 +20,6 @@ public class DBSettingsModel {
private boolean enableCheckPartitaMagCheckPickingV;
private boolean flagMultiClienteOrdV;
private boolean flagUseCodAnagAziendale;
private String defaultCausaleRettificaGiacenze;
private boolean flagAskClienteInPickingLibero;
private boolean flagPickLiberoAllowEmptyCliente;
@@ -28,7 +27,6 @@ public class DBSettingsModel {
private boolean flagCanAutoOpenNewULAccettazione;
private boolean flagCanAddExtraQuantitySpedizione;
private boolean flagEnableCheckDepositoSpedizione;
private boolean flagUseNewPickingListSpedizione;
private boolean flagVersamentoDirettoProduzione;
private boolean flagAskPesoColloSpedizione;
private boolean flagForceAllToColli;
@@ -62,18 +60,24 @@ public class DBSettingsModel {
private String commessaMagazzino;
private boolean flagGeneraDocumentoSpedizione = false;
private boolean flagIsInventarioCacheEnabled = false;
private boolean flagAskPrintUlAccettazioneBolla = false;
private boolean flagAskTipoColloAccettazioneBolla = false;
private boolean flagAskVersamentoAutomaticoAccettazioneBolla = false;
private boolean flagCanAddUnknownItemsAccettazioneBolla = false;
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false;
private boolean flagEnableFastPickAccettazioneBolla = false;
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
private boolean flagAllowULRecoverAccettazioneBolla = true;
private boolean flagOverflowQuantityWarning = false;
private boolean flagAccettazioneBollaAskPrintUl = false;
private boolean flagAccettazioneBollaAskTipoCollo = false;
private boolean flagAccettazioneBollaAskVersamentoAutomatico = false;
private boolean flagAccettazioneBollaCanAddUnknownItems = false;
private boolean flagAccettazioneBollaCanAddUnknownBarcodes = false;
private boolean flagAccettazioneBollaEnableFastPick = false;
private boolean flagAccettazioneBollaDisableMandatoryTracciabilita = false;
private boolean flagAccettazioneBollaAllowULRecover = true;
private boolean flagSpedizioneOverflowQuantityWarning = false;
private String viewPosizioni;
private boolean flagDeleteRowOnClose = false;
private boolean flagAllowBarcodeFornitore = false;
private boolean flagAccettazioneDeleteRowOnClose = false;
private boolean flagAccettazioneAllowBarcodeFornitore = false;
private boolean flagProduzioneShowInfo = false;
private boolean flagAccettazioneBollaUseQtaOrd = true;
private boolean flagWarningNewPartitaMag = false;
private boolean flagTracciamentoImballiCaricoEnabled = false;
private boolean flagTracciamentoImballiScaricoEnabled = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -490,84 +494,84 @@ public class DBSettingsModel {
return this;
}
public boolean isFlagAskPrintUlAccettazioneBolla() {
return flagAskPrintUlAccettazioneBolla;
public boolean isFlagAccettazioneBollaAskPrintUl() {
return flagAccettazioneBollaAskPrintUl;
}
public DBSettingsModel setFlagAskPrintUlAccettazioneBolla(boolean flagAskPrintUlAccettazioneBolla) {
this.flagAskPrintUlAccettazioneBolla = flagAskPrintUlAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaAskPrintUl(boolean flagAccettazioneBollaAskPrintUl) {
this.flagAccettazioneBollaAskPrintUl = flagAccettazioneBollaAskPrintUl;
return this;
}
public boolean isFlagAskTipoColloAccettazioneBolla() {
return flagAskTipoColloAccettazioneBolla;
public boolean isFlagAccettazioneBollaAskTipoCollo() {
return flagAccettazioneBollaAskTipoCollo;
}
public DBSettingsModel setFlagAskTipoColloAccettazioneBolla(boolean flagAskTipoColloAccettazioneBolla) {
this.flagAskTipoColloAccettazioneBolla = flagAskTipoColloAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaAskTipoCollo(boolean flagAccettazioneBollaAskTipoCollo) {
this.flagAccettazioneBollaAskTipoCollo = flagAccettazioneBollaAskTipoCollo;
return this;
}
public boolean isFlagAskVersamentoAutomaticoAccettazioneBolla() {
return flagAskVersamentoAutomaticoAccettazioneBolla;
public boolean isFlagAccettazioneBollaAskVersamentoAutomatico() {
return flagAccettazioneBollaAskVersamentoAutomatico;
}
public DBSettingsModel setFlagAskVersamentoAutomaticoAccettazioneBolla(boolean flagAskVersamentoAutomaticoAccettazioneBolla) {
this.flagAskVersamentoAutomaticoAccettazioneBolla = flagAskVersamentoAutomaticoAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaAskVersamentoAutomatico(boolean flagAccettazioneBollaAskVersamentoAutomatico) {
this.flagAccettazioneBollaAskVersamentoAutomatico = flagAccettazioneBollaAskVersamentoAutomatico;
return this;
}
public boolean isFlagCanAddUnknownItemsAccettazioneBolla() {
return flagCanAddUnknownItemsAccettazioneBolla;
public boolean isFlagAccettazioneBollaCanAddUnknownItems() {
return flagAccettazioneBollaCanAddUnknownItems;
}
public DBSettingsModel setFlagCanAddUnknownItemsAccettazioneBolla(boolean flagCanAddUnknownItemsAccettazioneBolla) {
this.flagCanAddUnknownItemsAccettazioneBolla = flagCanAddUnknownItemsAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaCanAddUnknownItems(boolean flagAccettazioneBollaCanAddUnknownItems) {
this.flagAccettazioneBollaCanAddUnknownItems = flagAccettazioneBollaCanAddUnknownItems;
return this;
}
public boolean isFlagCanAddUnknownBarcodesAccettazioneBolla() {
return flagCanAddUnknownBarcodesAccettazioneBolla;
public boolean isFlagAccettazioneBollaCanAddUnknownBarcodes() {
return flagAccettazioneBollaCanAddUnknownBarcodes;
}
public DBSettingsModel setFlagCanAddUnknownBarcodesAccettazioneBolla(boolean flagCanAddUnknownBarcodesAccettazioneBolla) {
this.flagCanAddUnknownBarcodesAccettazioneBolla = flagCanAddUnknownBarcodesAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaCanAddUnknownBarcodes(boolean flagAccettazioneBollaCanAddUnknownBarcodes) {
this.flagAccettazioneBollaCanAddUnknownBarcodes = flagAccettazioneBollaCanAddUnknownBarcodes;
return this;
}
public boolean isFlagEnableFastPickAccettazioneBolla() {
return flagEnableFastPickAccettazioneBolla;
public boolean isFlagAccettazioneBollaEnableFastPick() {
return flagAccettazioneBollaEnableFastPick;
}
public DBSettingsModel setFlagEnableFastPickAccettazioneBolla(boolean flagEnableFastPickAccettazioneBolla) {
this.flagEnableFastPickAccettazioneBolla = flagEnableFastPickAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaEnableFastPick(boolean flagAccettazioneBollaEnableFastPick) {
this.flagAccettazioneBollaEnableFastPick = flagAccettazioneBollaEnableFastPick;
return this;
}
public boolean isFlagDisableMandatoryTracciabilitaAccettazioneBolla() {
return flagDisableMandatoryTracciabilitaAccettazioneBolla;
public boolean isFlagAccettazioneBollaDisableMandatoryTracciabilita() {
return flagAccettazioneBollaDisableMandatoryTracciabilita;
}
public DBSettingsModel setFlagDisableMandatoryTracciabilitaAccettazioneBolla(boolean flagDisableMandatoryTracciabilitaAccettazioneBolla) {
this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaDisableMandatoryTracciabilita(boolean flagAccettazioneBollaDisableMandatoryTracciabilita) {
this.flagAccettazioneBollaDisableMandatoryTracciabilita = flagAccettazioneBollaDisableMandatoryTracciabilita;
return this;
}
public boolean isFlagAllowULRecoverAccettazioneBolla() {
return flagAllowULRecoverAccettazioneBolla;
public boolean isFlagAccettazioneBollaAllowULRecover() {
return flagAccettazioneBollaAllowULRecover;
}
public DBSettingsModel setFlagAllowULRecoverAccettazioneBolla(boolean flagAllowULRecoverAccettazioneBolla) {
this.flagAllowULRecoverAccettazioneBolla = flagAllowULRecoverAccettazioneBolla;
public DBSettingsModel setFlagAccettazioneBollaAllowULRecover(boolean flagAccettazioneBollaAllowULRecover) {
this.flagAccettazioneBollaAllowULRecover = flagAccettazioneBollaAllowULRecover;
return this;
}
public boolean isFlagOverflowQuantityWarning() {
return flagOverflowQuantityWarning;
public boolean isFlagSpedizioneOverflowQuantityWarning() {
return flagSpedizioneOverflowQuantityWarning;
}
public DBSettingsModel setFlagOverflowQuantityWarning(boolean flagOverflowQuantityWarning) {
this.flagOverflowQuantityWarning = flagOverflowQuantityWarning;
public DBSettingsModel setFlagSpedizioneOverflowQuantityWarning(boolean flagSpedizioneOverflowQuantityWarning) {
this.flagSpedizioneOverflowQuantityWarning = flagSpedizioneOverflowQuantityWarning;
return this;
}
@@ -589,21 +593,65 @@ public class DBSettingsModel {
return this;
}
public boolean isFlagDeleteRowOnClose() {
return flagDeleteRowOnClose;
public boolean isFlagAccettazioneDeleteRowOnClose() {
return flagAccettazioneDeleteRowOnClose;
}
public DBSettingsModel setFlagDeleteRowOnClose(boolean flagDeleteRowOnClose) {
this.flagDeleteRowOnClose = flagDeleteRowOnClose;
public DBSettingsModel setFlagAccettazioneDeleteRowOnClose(boolean flagAccettazioneDeleteRowOnClose) {
this.flagAccettazioneDeleteRowOnClose = flagAccettazioneDeleteRowOnClose;
return this;
}
public boolean isFlagAllowBarcodeFornitore() {
return flagAllowBarcodeFornitore;
public boolean isFlagAccettazioneAllowBarcodeFornitore() {
return flagAccettazioneAllowBarcodeFornitore;
}
public DBSettingsModel setFlagAllowBarcodeFornitore(boolean flagAllowBarcodeFornitore) {
this.flagAllowBarcodeFornitore = flagAllowBarcodeFornitore;
public DBSettingsModel setFlagAccettazioneAllowBarcodeFornitore(boolean flagAccettazioneAllowBarcodeFornitore) {
this.flagAccettazioneAllowBarcodeFornitore = flagAccettazioneAllowBarcodeFornitore;
return this;
}
public boolean isFlagProduzioneShowInfo() {
return flagProduzioneShowInfo;
}
public DBSettingsModel setFlagProduzioneShowInfo(boolean flagProduzioneShowInfo) {
this.flagProduzioneShowInfo = flagProduzioneShowInfo;
return this;
}
public boolean isFlagAccettazioneBollaUseQtaOrd() {
return flagAccettazioneBollaUseQtaOrd;
}
public void setFlagAccettazioneBollaUseQtaOrd(boolean flagAccettazioneBollaUseQtaOrd) {
this.flagAccettazioneBollaUseQtaOrd = flagAccettazioneBollaUseQtaOrd;
}
public boolean isFlagWarningNewPartitaMag() {
return flagWarningNewPartitaMag;
}
public DBSettingsModel setFlagWarningNewPartitaMag(boolean flagWarningNewPartitaMag) {
this.flagWarningNewPartitaMag = flagWarningNewPartitaMag;
return this;
}
public boolean isFlagTracciamentoImballiCaricoEnabled() {
return flagTracciamentoImballiCaricoEnabled;
}
public DBSettingsModel setFlagTracciamentoImballiCaricoEnabled(boolean flagTracciamentoImballiCaricoEnabled) {
this.flagTracciamentoImballiCaricoEnabled = flagTracciamentoImballiCaricoEnabled;
return this;
}
public boolean isFlagTracciamentoImballiScaricoEnabled() {
return flagTracciamentoImballiScaricoEnabled;
}
public DBSettingsModel setFlagTracciamentoImballiScaricoEnabled(boolean flagTracciamentoImballiScaricoEnabled) {
this.flagTracciamentoImballiScaricoEnabled = flagTracciamentoImballiScaricoEnabled;
return this;
}
}

View File

@@ -24,6 +24,7 @@ import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
@Singleton
public class SettingsManager {
@@ -246,7 +247,7 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("ACCETTAZIONE")
.setKeySection("FLAG_DELETE_ROW_ON_CLOSE")
.setSetter(dbSettingsModelIstance::setFlagDeleteRowOnClose));
.setSetter(dbSettingsModelIstance::setFlagAccettazioneDeleteRowOnClose));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
@@ -283,6 +284,12 @@ public class SettingsManager {
.setKeySection("FLAG_GROUP_BY_GRP_MERC")
.setSetter(dbSettingsModelIstance::setGroupPoductionByCommodityGroup)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("PRODUZIONE")
.setKeySection("FLAG_SHOW_INFO")
.setSetter(dbSettingsModelIstance::setFlagProduzioneShowInfo)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
.setGestName("PICKING")
.setSection("PRODUZIONE")
@@ -443,62 +450,90 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ASK_PRINT_UL")
.setSetter(dbSettingsModelIstance::setFlagAskPrintUlAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskPrintUl)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ASK_TIPO_COLLO")
.setSetter(dbSettingsModelIstance::setFlagAskTipoColloAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskTipoCollo)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ASK_VERSAMENTO_AUTOMATICO")
.setSetter(dbSettingsModelIstance::setFlagAskVersamentoAutomaticoAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskVersamentoAutomatico)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS")
.setSetter(dbSettingsModelIstance::setFlagCanAddUnknownItemsAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaCanAddUnknownItems)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_CAN_ADD_UNKNOWN_BARCODES")
.setSetter(dbSettingsModelIstance::setFlagCanAddUnknownBarcodesAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaCanAddUnknownBarcodes)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ENABLE_FAST_PICK")
.setSetter(dbSettingsModelIstance::setFlagEnableFastPickAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaEnableFastPick)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA")
.setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaDisableMandatoryTracciabilita)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ALLOW_UL_RECOVER")
.setSetter(dbSettingsModelIstance::setFlagAllowULRecoverAccettazioneBolla)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAllowULRecover)
.setDefaultValue(true));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_OVERFLOW_QUANTITY_WARNING")
.setSetter(dbSettingsModelIstance::setFlagOverflowQuantityWarning)
.setSetter(dbSettingsModelIstance::setFlagSpedizioneOverflowQuantityWarning)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE")
.setKeySection("FLAG_ALLOW_BARCODE_FORNITORE")
.setSetter(dbSettingsModelIstance::setFlagAllowBarcodeFornitore)
.setSetter(dbSettingsModelIstance::setFlagAccettazioneAllowBarcodeFornitore)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_USE_QTA_ORD")
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaUseQtaOrd)
.setDefaultValue(true));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SETUP")
.setKeySection("FLAG_WARNING_NEW_PARTITA_MAG")
.setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
.setGestName("PICKING")
.setSection("IMBALLI")
.setKeySection("COD_DTIP_CARICO")
.setSetter(data -> {
dbSettingsModelIstance.setFlagTracciamentoImballiCaricoEnabled(!UtilityString.isNullOrEmpty(data));
}));
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
.setGestName("PICKING")
.setSection("IMBALLI")
.setKeySection("COD_DTIP_SCARICO")
.setSetter(data -> {
dbSettingsModelIstance.setFlagTracciamentoImballiScaricoEnabled(!UtilityString.isNullOrEmpty(data));
}));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();

View File

@@ -48,7 +48,7 @@ public class UpdatesManager {
private void installAPK(String downloadURL) {
String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
File destination = mContext.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
var progressDialogBuilder = new DialogProgressView("Download", null, false);
progressDialogBuilder.show(mContext.getSupportFragmentManager(), "tag");
@@ -74,10 +74,10 @@ public class UpdatesManager {
intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
fileLoc = GenericFileProvider.getUriForFile(mContext,
mContext.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider",
new File(destPath));
destPath);
} else {
intent = new Intent(Intent.ACTION_VIEW);
fileLoc = Uri.fromFile(new File(destPath));
fileLoc = Uri.fromFile(destPath);
}
intent.setDataAndType(fileLoc, "application/vnd.android.package-archive");

View File

@@ -15,23 +15,20 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class FileDownloader {
private String urlString;
private String destFolder;
private File destFolder;
private RunnableArgs<Integer> onProgressUpdate;
private RunnableArgs<String> onDownloadCompleted;
private RunnableArgs<File> onDownloadCompleted;
public void download() throws Exception {
InputStream input = null;
OutputStream output = null;
HttpURLConnection connection = null;
String destPathFile;
File downloadFile = null;
try {
File direct = new File(destFolder);
if (!direct.exists()) {
direct.mkdirs();
}
if (!destFolder.exists()) destFolder.mkdirs();
URL url = new URL(urlString);
connection = (HttpURLConnection) url.openConnection();
@@ -46,13 +43,12 @@ public class FileDownloader {
int downloadedBytes = 0;
String title = URLUtil.guessFileName(String.valueOf(url), null, null);
downloadFile = new File(destFolder, title);
destPathFile = destFolder + title;
if (downloadFile.exists())
downloadFile.delete();
if (new File(destPathFile).exists())
new File(destPathFile).delete();
output = new FileOutputStream(destPathFile);
output = new FileOutputStream(downloadFile);
byte[] buf = new byte[1024];
int len;
@@ -79,7 +75,7 @@ public class FileDownloader {
connection.disconnect();
}
if (onDownloadCompleted != null) onDownloadCompleted.run(destPathFile);
if (onDownloadCompleted != null) onDownloadCompleted.run(downloadFile);
}
@@ -92,11 +88,11 @@ public class FileDownloader {
return this;
}
public String getDestFolder() {
public File getDestFolder() {
return destFolder;
}
public FileDownloader setDestFolder(String destFolder) {
public FileDownloader setDestFolder(File destFolder) {
this.destFolder = destFolder;
return this;
}
@@ -106,7 +102,7 @@ public class FileDownloader {
return this;
}
public FileDownloader setOnDownloadCompleted(RunnableArgs<String> onDownloadCompleted) {
public FileDownloader setOnDownloadCompleted(RunnableArgs<File> onDownloadCompleted) {
this.onDownloadCompleted = onDownloadCompleted;
return this;
}

View File

@@ -7,12 +7,15 @@ import java.lang.reflect.Modifier;
import java.time.LocalDate;
import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.MtbTcolFlagUiUlDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.StatoPartitaMagDeserializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateTimeSerializer;
import it.integry.integrywmsnative.core.rest.serializer.MtbTcolFlagUiUlSerializer;
import it.integry.integrywmsnative.core.rest.serializer.StatoPartitaMagSerializer;
public class UtilityGson {
@@ -27,6 +30,8 @@ public class UtilityGson {
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagDeserializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagSerializer())
.registerTypeAdapter(MtbTCol.FlagUiUlEnum.class, new MtbTcolFlagUiUlDeserializer())
.registerTypeAdapter(MtbTCol.FlagUiUlEnum.class, new MtbTcolFlagUiUlSerializer())
.create();
}

View File

@@ -5,6 +5,8 @@ import android.text.Spanned;
import androidx.annotation.StringRes;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -13,9 +15,101 @@ import java.util.regex.Pattern;
*/
public class UtilityString {
private static final Map<String, String> DATE_FORMAT_REGEXPS = new HashMap<String, String>() {{
//-----------------------------------------------------------------------------------------
//giorno-mese-giorno
put("^\\d{1,2}/\\d{1,2}/\\d{4}$", "dd/MM/yyyy");
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$", "dd.MM.yyyy");
put("^\\d{1,2}-\\d{1,2}-\\d{4}$", "dd-MM-yyyy");
//anno-mese-giorno
put("^\\d{4}/\\d{1,2}/\\d{1,2}$", "yyyy/MM/dd");
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}$", "yyyy.MM.dd");
put("^\\d{4}-\\d{1,2}-\\d{1,2}$", "yyyy-MM-dd");
//-----------------------------------------------------------------------------------------
//senza spazi
put("^\\d{8}$", "yyyyMMdd");
put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}$", "dd MMM yyyy");
put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}$", "dd MMMM yyyy");
put("^\\d{12}$", "yyyyMMddHHmm");
put("^\\d{8}\\s\\d{4}$", "yyyyMMdd HHmm");
put("^\\d{14}$", "yyyyMMddHHmmss");
put("^\\d{8}\\s\\d{6}$", "yyyyMMdd HHmmss");
//-----------------------------------------------------------------------------------------
//giorno-mese-anno hhmm
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}\\.\\d{2}$", "dd/MM/yyyy HH.mm");
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}$", "dd/MM/yyyy HH:mm");
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}\\.\\d{2}$", "dd.MM.yyyy HH.mm");
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}:\\d{2}$", "dd.MM.yyyy HH:mm");
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}\\.\\d{2}$", "dd-MM-yyyy HH.mm");
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}$", "dd-MM-yyyy HH:mm");
//anno-mese-giorno hhmm
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}\\.\\d{2}$", "yyyy/MM/dd HH.mm");
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy/MM/dd HH:mm");
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}\\.\\d{2}$", "yyyy.MM.dd HH.mm");
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy.MM.dd HH:mm");
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}\\.\\d{2}$", "yyyy-MM-dd HH.mm");
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy-MM-dd HH:mm");
//-----------------------------------------------------------------------------------------
//giorno-mese-anno hhmmss
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "dd/MM/yyyy HH.mm.ss");
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd/MM/yyyy HH:mm:ss");
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "dd.MM.yyyy HH.mm.ss");
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd.MM.yyyy HH:mm:ss");
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "dd-MM-yyyy HH.mm.ss");
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd-MM-yyyy HH:mm:ss");
//anno-mese-giorno hhmmss
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "yyyy/MM/dd HH.mm.ss");
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy/MM/dd HH:mm:ss");
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "yyyy.MM.dd HH.mm.ss");
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy.MM.dd HH:mm:ss");
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "yyyy-MM-dd HH.mm.ss");
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy-MM-dd HH:mm:ss");
//anno-mese-giorno hhmmssS
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}.\\d{1,3}$", "yyyy-MM-dd HH:mm:ss.SSS");
//-----------------------------------------------------------------------------------------
//altri formati
put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd MMM yyyy HH:mm:ss");
put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd MMMM yyyy HH:mm:ss");
put("^\\d{4}-\\d{1,2}-\\d{1,2}[T]\\d{1,2}:\\d{2}:\\d{2}$", "yyyy-MM-ddTHH:mm:ss");
put("^\\d{4}-\\d{1,2}-\\d{1,2}t\\d{1,2}:\\d{2}:\\d{2}.\\d{1,3}z$", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
put("^(\\d{4})-(\\d{2})-(\\d{2})t(\\d{2}):(\\d{2}):(\\d{2})((\\+|-)(\\d{2}):(\\d{2}))$", "yyyy-MM-dd'T'HH:mm:ss");
}};
public static String determineDateFormat(String dateString) {
for (String regexp : DATE_FORMAT_REGEXPS.keySet()) {
if (dateString.toLowerCase().matches(regexp)) {
return DATE_FORMAT_REGEXPS.get(regexp);
}
}
return null; // Unknown format.
}
public static boolean isNullOrEmpty(String stringToCheck){
return stringToCheck == null || stringToCheck.trim().length() == 0;
return stringToCheck == null || stringToCheck.trim().isEmpty();
}
public static String isNull(String stringToCheck, String alternativeString){
@@ -23,7 +117,7 @@ public class UtilityString {
}
public static String empty2null(String stringToCheck) {
return (stringToCheck == null || stringToCheck.trim().length() == 0) ? null : stringToCheck.trim();
return (stringToCheck == null || stringToCheck.trim().isEmpty()) ? null : stringToCheck.trim();
}
public static String capitalizeWords(String capString){

View File

@@ -153,7 +153,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
// this.initFilters();
this.initFab();
boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneBollaUseQtaOrd();
mViewModel.setListeners(this);
mViewModel.init(
@@ -221,7 +221,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
fabPopupMenu.getMenu().findItem(R.id.show_created_ul).setVisible(SettingsManager.iDB().isFlagAllowULRecoverAccettazioneBolla());
fabPopupMenu.getMenu().findItem(R.id.show_created_ul).setVisible(SettingsManager.iDB().isFlagAccettazioneBollaAllowULRecover());
fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
@@ -526,7 +526,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(true)
.setCanOverflowOrderQuantity(canOverflowQuantity)
.setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagDisableMandatoryTracciabilitaAccettazioneBolla());
.setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagAccettazioneBollaDisableMandatoryTracciabilita());
if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View

View File

@@ -356,7 +356,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageUnknownBarcode(String barcode, Runnable onComplete) {
if (SettingsManager.iDB().isFlagCanAddUnknownBarcodesAccettazioneBolla()) {
if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownBarcodes()) {
//TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato
this.sendOnUnknownBarcodeScanned(barcode, notes -> {
this.manageDispatchBollaRow(new PickingObjectDTO()
@@ -376,7 +376,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) {
if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) {
if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownItems()) {
this.manageDispatchBollaRow(new PickingObjectDTO()
.setMtbAart(mtbAart)
@@ -410,7 +410,7 @@ public class AccettazioneBollaPickingViewModel {
}
private void manageInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
if (!SettingsManager.iDB().isFlagAskTipoColloAccettazioneBolla()) {
if (!SettingsManager.iDB().isFlagAccettazioneBollaAskTipoCollo()) {
onComplete.run(null, null);
return;
}
@@ -420,15 +420,15 @@ public class AccettazioneBollaPickingViewModel {
public void manageDispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
String partitaMag = null;
if(pickingObjectDTO.getTempPickData() != null){
if(pickingObjectDTO.getTempPickData().getManualPickDTO() != null){
if(pickingObjectDTO.getTempPickData().getManualPickDTO().getMtbPartitaMag() != null){
if (pickingObjectDTO.getTempPickData() != null) {
if (pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
if (pickingObjectDTO.getTempPickData().getManualPickDTO().getMtbPartitaMag() != null) {
partitaMag = pickingObjectDTO.getTempPickData().getManualPickDTO().getMtbPartitaMag().getPartitaMag();
}
}
}
if (SettingsManager.iDB().isFlagEnableFastPickAccettazioneBolla()) {
if (SettingsManager.iDB().isFlagAccettazioneBollaEnableFastPick()) {
this.saveNewRow(pickingObjectDTO,
BigDecimal.ONE,
pickingObjectDTO.getMtbAart().getQtaCnf(),
@@ -550,11 +550,15 @@ public class AccettazioneBollaPickingViewModel {
initialQtaTot = mtbAart.getQtaCnf();
}
if (!this.mUseQtaBolla &&
UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) &&
UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
if (!this.mUseQtaBolla) {
if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) &&
UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
} else if(UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) {
initialNumCnf = BigDecimal.ONE;
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
}
}
if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
@@ -603,7 +607,8 @@ public class AccettazioneBollaPickingViewModel {
}
public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) {
public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal
qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) {
if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
resetMatchedRows();
@@ -691,7 +696,8 @@ public class AccettazioneBollaPickingViewModel {
});
}
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) {
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal
qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) {
this.sendOnLoadingStarted();
MtbColr mtbColrClone = (MtbColr) mtbColrToUpdate.clone();
@@ -802,7 +808,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageVersamentoAutomatico(Runnable onComplete) {
if (!SettingsManager.iDB().isFlagAskVersamentoAutomaticoAccettazioneBolla()) {
if (!SettingsManager.iDB().isFlagAccettazioneBollaAskVersamentoAutomatico()) {
onComplete.run();
return;
}
@@ -825,7 +831,7 @@ public class AccettazioneBollaPickingViewModel {
}
private void managePrintCollo(Runnable onComplete) {
if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAskPrintUlAccettazioneBolla()) {
if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAccettazioneBollaAskPrintUl()) {
onComplete.run();
return;
}
@@ -998,12 +1004,14 @@ public class AccettazioneBollaPickingViewModel {
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
}
private void notifyVersamentoAutomaticoResult(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) {
private void notifyVersamentoAutomaticoResult(VersamentoAutomaticoULResponseDTO
versamentoAutomaticoULResponseDTO, Runnable onComplete) {
if (this.mListener != null)
mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete);
}
private void sendOnUnknownBarcodeScanned(String barocde, RunnableArgs<String> onComplete, Runnable onAbort) {
private void sendOnUnknownBarcodeScanned(String
barocde, RunnableArgs<String> onComplete, Runnable onAbort) {
if (this.mListener != null)
mListener.onUnknownBarcodeScanned(barocde, onComplete, onAbort);
}

View File

@@ -101,7 +101,9 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd
public void onBindItemViewHolder(final AccettazioneBollaPickingListAdapter.SingleItemViewHolder holder, final int position) {
AccettazioneBollaPickingListModel pickingObjectDTO = this.mDataset.get(position);
if (pickingObjectDTO.getQtaEvasa().subtract(pickingObjectDTO.getQtaTot()).floatValue() >= 0) {
if (pickingObjectDTO.getQtaEvasa().subtract(pickingObjectDTO.getQtaTot()).floatValue() > 0) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.blue_100));
} else if (pickingObjectDTO.getQtaEvasa().subtract(pickingObjectDTO.getQtaTot()).floatValue() == 0) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
} else if (pickingObjectDTO.getQtaEvasa().floatValue() > 0) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));

View File

@@ -78,6 +78,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView;
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.tracciamento_imballi.DialogTracciamentoImballiView;
import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView;
public class AccettazioneOrdiniPickingActivity extends BaseActivity implements AccettazioneOrdiniPickingViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener {
@@ -151,28 +152,30 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
mViewModel.setListeners(this);
mViewModel.init(
mOrders,
mSitArts,
useQtaOrd);
mViewModel.init(mOrders, mSitArts, useQtaOrd);
}
private void initFab() {
fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab,
(Gravity.END | Gravity.BOTTOM),
androidx.appcompat.R.attr.popupMenuStyle,
com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab, (Gravity.END | Gravity.BOTTOM), androidx.appcompat.R.attr.popupMenuStyle, com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
if (!SettingsManager.iDB().isFlagTracciamentoImballiCaricoEnabled())
fabPopupMenu.getMenu().removeItem(R.id.track_packaging);
fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.show_created_ul) {
showCreatedUL();
return true;
} else if (itemId == R.id.track_packaging) {
trackPackaging();
return true;
} else if (itemId == R.id.create_ul) {
createNewLU();
return true;
}
return false;
@@ -192,17 +195,11 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentPosPredicate().addOnPropertyChangedCallback(onPredicateChanged);
List<FilterChipDTO> filterList = Stream.of(AccettazioneOrdiniPickingBindings.AVAILABLE_FILTERS.entrySet())
.map(Map.Entry::getValue)
.sortBy(FilterChipDTO::getPosizione)
.toList();
List<FilterChipDTO> filterList = Stream.of(AccettazioneOrdiniPickingBindings.AVAILABLE_FILTERS.entrySet()).map(Map.Entry::getValue).sortBy(FilterChipDTO::getPosizione).toList();
for (FilterChipDTO filterChipDTO : filterList) {
FilterChipView filterChipView = new FilterChipView(
this,
filterChipDTO.getFilterChipText(),
v -> initBottomSheetDialogFilter(filterChipDTO));
FilterChipView filterChipView = new FilterChipView(this, filterChipDTO.getFilterChipText(), v -> initBottomSheetDialogFilter(filterChipDTO));
switch (filterChipDTO.getID()) {
case AccettazioneOrdiniPickingBindings.COD_ART_FILTER_ID -> {
@@ -280,52 +277,20 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
filterChipDTO
.getFilterLayoutView()
.setFilterName(filterChipDTO.getFilterChipText())
.setContext(this);
filterChipDTO.getFilterLayoutView().setFilterName(filterChipDTO.getFilterChipText()).setContext(this);
var filterLayoutView = filterChipDTO
.getFilterLayoutView();
var filterLayoutView = filterChipDTO.getFilterLayoutView();
switch (filterChipDTO.getID()) {
case AccettazioneOrdiniPickingBindings.COD_ART_FILTER_ID ->
((FilterCodArtLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllCodArts())
.setAvailable(mAppliedFilterViewModel.getAvailableCodArts())
.setOnFilterApplied(mAppliedFilterViewModel::setCodArtFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentCodArtPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentCodArtPredicate().get())
.map(x -> x.getSitArtOrdDTO().getCodMart())
.toList());
((FilterCodArtLayoutView) filterLayoutView).setAll(mAppliedFilterViewModel.getAllCodArts()).setAvailable(mAppliedFilterViewModel.getAvailableCodArts()).setOnFilterApplied(mAppliedFilterViewModel::setCodArtFilter).setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())).filter(mAppliedFilterViewModel.getCurrentCodArtPredicate().get() == null ? x -> false : mAppliedFilterViewModel.getCurrentCodArtPredicate().get()).map(x -> x.getSitArtOrdDTO().getCodMart()).toList());
case AccettazioneOrdiniPickingBindings.DESCR_FILTER_ID ->
((FilterDescrLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllDescrs())
.setAvailable(mAppliedFilterViewModel.getAvailableDescrs())
.setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentDescrPredicate().get())
.map(x -> x.getSitArtOrdDTO().getDescrizioneEstesaArt())
.toList());
((FilterDescrLayoutView) filterLayoutView).setAll(mAppliedFilterViewModel.getAllDescrs()).setAvailable(mAppliedFilterViewModel.getAvailableDescrs()).setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter).setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())).filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ? x -> false : mAppliedFilterViewModel.getCurrentDescrPredicate().get()).map(x -> x.getSitArtOrdDTO().getDescrizioneEstesaArt()).toList());
case AccettazioneOrdiniPickingBindings.POS_FILTER_ID ->
((FilterPosizioneLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllPos())
.setAvailable(mAppliedFilterViewModel.getAvailablePos())
.setOnFilterApplied(mAppliedFilterViewModel::setPosFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentPosPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentPosPredicate().get())
.map(x -> x.getMtbAart().getPosizione())
.toList());
((FilterPosizioneLayoutView) filterLayoutView).setAll(mAppliedFilterViewModel.getAllPos()).setAvailable(mAppliedFilterViewModel.getAvailablePos()).setOnFilterApplied(mAppliedFilterViewModel::setPosFilter).setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())).filter(mAppliedFilterViewModel.getCurrentPosPredicate().get() == null ? x -> false : mAppliedFilterViewModel.getCurrentPosPredicate().get()).map(x -> x.getMtbAart().getPosizione()).toList());
}
if (!filterLayoutView.isAdded())
filterLayoutView.show(getSupportFragmentManager(), "TAG");
if (!filterLayoutView.isAdded()) filterLayoutView.show(getSupportFragmentManager(), "TAG");
}
@Override
@@ -374,9 +339,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
}
private void initBarcodeReader() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO().setOnScanSuccessful(onScanSuccessful).setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
}
private void initRecyclerView() {
@@ -417,9 +380,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
}
private List<AccettazioneOrdiniPickingListModel> convertDataModelToListModel(List<PickingObjectDTO> dataList) {
List<PickingObjectDTO> tmpList = Stream.of(dataList)
.filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaDaEvadere(), BigDecimal.ZERO))
.toList();
List<PickingObjectDTO> tmpList = Stream.of(dataList).filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaDaEvadere(), BigDecimal.ZERO)).toList();
return switch (mCurrentOrderBy) {
case COD_ART_FOR -> convertDataModelToListModel__CodArtForn(tmpList);
@@ -430,133 +391,118 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
private List<AccettazioneOrdiniPickingListModel> convertDataModelToListModel__CodArtForn(List<PickingObjectDTO> dataList) {
ArrayList<AccettazioneOrdiniPickingListModel> list = new ArrayList<>();
Stream.of(dataList)
.sortBy(x -> UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()) +
(UtilityString.isNullOrEmpty(x.getMtbAart().getDescrizioneEstesa()) ? "" : " - " + x.getMtbAart().getDescrizioneEstesa()))
.forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
Stream.of(dataList).sortBy(x -> UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()) + (UtilityString.isNullOrEmpty(x.getMtbAart().getDescrizioneEstesa()) ? "" : " - " + x.getMtbAart().getDescrizioneEstesa())).forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
accettazioneOrdiniPickingListModel.setGroupTitle(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()) +
(UtilityString.isNullOrEmpty(x.getMtbAart().getDescrizioneEstesa()) ? "" : " - " + x.getMtbAart().getDescrizioneEstesa()));
accettazioneOrdiniPickingListModel.setGroupTitle(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()) + (UtilityString.isNullOrEmpty(x.getMtbAart().getDescrizioneEstesa()) ? "" : " - " + x.getMtbAart().getDescrizioneEstesa()));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setSubDescrizione1("Consegna: " + UtilityDate.formatDate(x.getSitArtOrdDTO().getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
accettazioneOrdiniPickingListModel.setSubDescrizione1("Consegna: " + UtilityDate.formatDate(x.getSitArtOrdDTO().getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add);
}
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getQtaCol)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setOriginalModel(x);
accettazioneOrdiniPickingListModel.setOriginalModel(x);
list.add(accettazioneOrdiniPickingListModel);
});
list.add(accettazioneOrdiniPickingListModel);
});
return list;
}
private List<AccettazioneOrdiniPickingListModel> convertDataModelToListModel__DescrArt(List<PickingObjectDTO> dataList) {
ArrayList<AccettazioneOrdiniPickingListModel> list = new ArrayList<>();
Stream.of(dataList)
.sortBy(x -> x.getMtbAart().getDescrizioneEstesa())
.forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
Stream.of(dataList).sortBy(x -> x.getMtbAart().getDescrizioneEstesa()).forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
accettazioneOrdiniPickingListModel.setGroupTitle(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart())
+ (UtilityString.isNullOrEmpty(x.getMtbAart().getDescrizioneEstesa()) ? "" : " - " + x.getMtbAart().getDescrizioneEstesa()));
accettazioneOrdiniPickingListModel.setGroupTitle(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()) + (UtilityString.isNullOrEmpty(x.getMtbAart().getDescrizioneEstesa()) ? "" : " - " + x.getMtbAart().getDescrizioneEstesa()));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add);
}
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getQtaCol)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setOriginalModel(x);
accettazioneOrdiniPickingListModel.setOriginalModel(x);
list.add(accettazioneOrdiniPickingListModel);
});
list.add(accettazioneOrdiniPickingListModel);
});
return list;
}
@@ -564,136 +510,122 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
private List<AccettazioneOrdiniPickingListModel> convertDataModelToListModel__RagSocCom(List<PickingObjectDTO> dataList) {
ArrayList<AccettazioneOrdiniPickingListModel> list = new ArrayList<>();
Stream.of(dataList)
.filter(x -> !UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneCommessa()) && !x.getSitArtOrdDTO().getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG))
.sortBy(x -> x.getSitArtOrdDTO().getDescrizioneCommessa())
.forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
Stream.of(dataList).filter(x -> !UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneCommessa()) && !x.getSitArtOrdDTO().getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)).sortBy(x -> x.getSitArtOrdDTO().getDescrizioneCommessa()).forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
accettazioneOrdiniPickingListModel.setGroupTitle(x.getSitArtOrdDTO().getCodJcom() + (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneCommessa()) ? " - " + x.getSitArtOrdDTO().getDescrizioneCommessa() : ""));
accettazioneOrdiniPickingListModel.setGroupTitle(x.getSitArtOrdDTO().getCodJcom() + (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneCommessa()) ? " - " + x.getSitArtOrdDTO().getDescrizioneCommessa() : ""));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add);
}
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getQtaCol)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneEstesaOrd());
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneEstesaOrd());
if (x.getMtbAart() != null) {
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
}
if (x.getMtbAart() != null) {
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
}
accettazioneOrdiniPickingListModel.setOriginalModel(x);
accettazioneOrdiniPickingListModel.setOriginalModel(x);
list.add(accettazioneOrdiniPickingListModel);
});
list.add(accettazioneOrdiniPickingListModel);
});
Stream.of(dataList)
.filter(x -> UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneCommessa()) || x.getSitArtOrdDTO().getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG))
.forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
Stream.of(dataList).filter(x -> UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneCommessa()) || x.getSitArtOrdDTO().getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)).forEach(x -> {
AccettazioneOrdiniPickingListModel accettazioneOrdiniPickingListModel = new AccettazioneOrdiniPickingListModel();
accettazioneOrdiniPickingListModel.setActive(true);
accettazioneOrdiniPickingListModel.setGroupTitle(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setGroupTitle(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodArtFor(), x.getSitArtOrdDTO().getCodMart()));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
//Calc Num CNF
BigDecimal numCnfEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add);
}
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
//Calc qta col
BigDecimal qtaEvasa = BigDecimal.ZERO;
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
.map(MtbColr::getQtaCol)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (x.getWithdrawMtbColrs().size() > 0) {
qtaEvasa = Stream.of(x.getWithdrawMtbColrs()).map(MtbColr::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add);
}
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
accettazioneOrdiniPickingListModel.setQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setSecUntMis(x.getMtbAart().getUntMis());
} else {
accettazioneOrdiniPickingListModel.setQtaEvasa(qtaEvasa);
accettazioneOrdiniPickingListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
accettazioneOrdiniPickingListModel.setSecQtaEvasa(numCnfEvasa);
accettazioneOrdiniPickingListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
}
if (x.getMtbAart() != null) {
accettazioneOrdiniPickingListModel.setDescrizione(x.getMtbAart().getDescrizioneEstesa());
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
}
if (x.getMtbAart() != null) {
accettazioneOrdiniPickingListModel.setDescrizione(x.getMtbAart().getDescrizioneEstesa());
accettazioneOrdiniPickingListModel.setUntMis(x.getMtbAart().getUntMis());
}
accettazioneOrdiniPickingListModel.setOriginalModel(x);
accettazioneOrdiniPickingListModel.setOriginalModel(x);
list.add(accettazioneOrdiniPickingListModel);
});
list.add(accettazioneOrdiniPickingListModel);
});
return list;
}
private boolean isThereAnyItemToPick(List<PickingObjectDTO> dataList) {
return Stream.of(dataList)
.anyMatch(x -> !x.isHidden());
return Stream.of(dataList).anyMatch(x -> !x.isHidden());
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
@@ -718,20 +650,26 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
});
}
public void trackPackaging() {
this.fabPopupMenu.dismiss();
DialogTracciamentoImballiView.newInstance(data -> {
if (data != null && !data.isEmpty())
mViewModel.registraImballi(data);
}).show(getSupportFragmentManager(), DialogTracciamentoImballiView.class.getName());
}
public void showCreatedUL() {
this.fabPopupMenu.dismiss();
this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity);
}
private void showOrderByDialog() {
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle(this.getText(R.string.action_orderBy))
.setSingleChoiceItems(AccettazioneOrdineInevasoOrderBy.descriptions, mCurrentOrderBy.getVal(), (dialog12, which) -> {
mCurrentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.fromInt(which);
SettingsManager.i().getUserSession().setDefaultOrdinamentoPickingAccettazione(which);
})
.setPositiveButton(getText(R.string.ok), (dialog1, which) -> this.refreshList())
.create();
AlertDialog dialog = new AlertDialog.Builder(this).setTitle(this.getText(R.string.action_orderBy)).setSingleChoiceItems(AccettazioneOrdineInevasoOrderBy.descriptions, mCurrentOrderBy.getVal(), (dialog12, which) -> {
mCurrentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.fromInt(which);
SettingsManager.i().getUserSession().setDefaultOrdinamentoPickingAccettazione(which);
}).setPositiveButton(getText(R.string.ok), (dialog1, which) -> this.refreshList()).create();
dialog.show();
}
@@ -739,14 +677,9 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
Intent myIntent = ListaBancaliActivity.createIntent(this,
Stream.of(mtbColts)
.map(AlreadyRegisteredUDCDTO::getMtbColt)
.toList(),
Stream.of(mtbColts).map(AlreadyRegisteredUDCDTO::getMtbColt).toList(),
input -> Stream.of(mtbColts)
.filter(x -> x.getMtbColt() == input)
.findFirstOrElse(null)
.isCanBeRecovered(),
input -> Stream.of(mtbColts).filter(x -> x.getMtbColt() == input).findFirstOrElse(null).isCanBeRecovered(),
ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
@@ -757,9 +690,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
public void onLUSuccessullyPrinted() {
Resources res = getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageView
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
.show(getSupportFragmentManager(), "tag");
DialogSimpleMessageView.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(getSupportFragmentManager(), "tag");
}
@Override
@@ -769,13 +700,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override
public void onLUPrintError(Exception ex, Runnable onComplete) {
this.onLoadingEnded();
DialogSimpleMessageView.makeErrorDialog(
new SpannableString(ex.getMessage()),
null,
null,
R.string.button_ignore_print,
onComplete)
.show(getSupportFragmentManager(), "tag");
DialogSimpleMessageView.makeErrorDialog(new SpannableString(ex.getMessage()), null, null, R.string.button_ignore_print, onComplete).show(getSupportFragmentManager(), "tag");
}
@Override
@@ -795,20 +720,12 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override
public void onVersamentoAutomaticoULRequest(RunnableArgs<Boolean> onComplete) {
runOnUiThread(() -> {
DialogAskShouldVersamentoAutomaticoULView.newInstance(onComplete)
.show(getSupportFragmentManager(), "tag");
});
DialogAskShouldVersamentoAutomaticoULView.newInstance(onComplete).show(getSupportFragmentManager(), "tag");
}
@Override
public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
// runOnUiThread(() -> {
// DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
// });
DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded).show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
}
@Override
@@ -826,41 +743,13 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, String customArtDescription, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
.setMtbAart(mtbAart)
.setInitialNumCnf(initialNumCnf)
.setInitialQtaCnf(initialQtaCnf)
.setInitialQtaTot(initialQtaTot)
.setTotalQtaOrd(totalQtaOrd)
.setTotalNumCnfOrd(totalNumCnfOrd)
.setQtaCnfOrd(qtaCnfOrd)
.setTotalQtaToBeTaken(totalQtaToBeTaken)
.setTotalNumCnfToBeTaken(totalNumCnfToBeTaken)
.setQtaCnfToBeTaken(qtaCnfToBeTaken)
.setTotalQtaAvailable(totalQtaAvailable)
.setTotalNumCnfAvailable(totalNumCnfAvailable)
.setQtaCnfAvailable(qtaCnfAvailable)
.setPartitaMag(partitaMag)
.setDataScad(dataScad)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(true)
.setCanOverflowOrderQuantity(canOverflowQuantity)
.setCustomArtDescription(customArtDescription);
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO().setMtbAart(mtbAart).setInitialNumCnf(initialNumCnf).setInitialQtaCnf(initialQtaCnf).setInitialQtaTot(initialQtaTot).setTotalQtaOrd(totalQtaOrd).setTotalNumCnfOrd(totalNumCnfOrd).setQtaCnfOrd(qtaCnfOrd).setTotalQtaToBeTaken(totalQtaToBeTaken).setTotalNumCnfToBeTaken(totalNumCnfToBeTaken).setQtaCnfToBeTaken(qtaCnfToBeTaken).setTotalQtaAvailable(totalQtaAvailable).setTotalNumCnfAvailable(totalNumCnfAvailable).setQtaCnfAvailable(qtaCnfAvailable).setPartitaMag(partitaMag).setDataScad(dataScad).setCanPartitaMagBeChanged(canPartitaMagBeChanged).setCanLUBeClosed(true).setCanOverflowOrderQuantity(canOverflowQuantity).setCustomArtDescription(customArtDescription);
if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
.setOnComplete((resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())
.setQtaCnf(resultDTO.getQtaCnf())
.setQtaTot(resultDTO.getQtaTot())
.setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad());
onComplete.run(pickedQuantityDTO, shouldCloseLU);
})
.setOnAbort(() -> this.mViewModel.resetMatchedRows())
.show(getSupportFragmentManager(), "tag");
mDialogInputQuantityV2View.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO).setOnComplete((resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO().setNumCnf(resultDTO.getNumCnf()).setQtaCnf(resultDTO.getQtaCnf()).setQtaTot(resultDTO.getQtaTot()).setPartitaMag(resultDTO.getPartitaMag()).setDataScad(resultDTO.getDataScad());
onComplete.run(pickedQuantityDTO, shouldCloseLU);
}).setOnAbort(() -> this.mViewModel.resetMatchedRows()).show(getSupportFragmentManager(), "tag");
}
@Override
@@ -894,9 +783,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
public void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) {
runOnUiThread(() -> {
DialogVersamentoAutomaticoULDoneView
.newInstance(versamentoAutomaticoULResponseDTO, onComplete)
.show(getSupportFragmentManager(), "tag");
DialogVersamentoAutomaticoULDoneView.newInstance(versamentoAutomaticoULResponseDTO, onComplete).show(getSupportFragmentManager(), "tag");
});
}
@@ -905,11 +792,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
runOnUiThread(() -> {
String text = getResources().getString(R.string.alert_delete_mtb_colr);
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
null,
() -> onComplete.run(true),
() -> onComplete.run(false)
).show(getSupportFragmentManager(), "tag");
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false)).show(getSupportFragmentManager(), "tag");
});
}
@@ -925,15 +808,11 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override
public void onLUClosed() {
runOnUiThread(() -> {
noLUPresent.set(true);
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
noLUPresent.set(true);
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
this.refreshList();
this.refreshList();
if (this.mShouldCloseActivity) super.onBackPressed();
});
if (this.mShouldCloseActivity) super.onBackPressed();
}
@Override

View File

@@ -8,7 +8,7 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.rest.AccettazioneOrdiniPickingRESTConsumer;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
@@ -31,18 +31,19 @@ public class AccettazioneOrdiniPickingModule {
ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
Ean128Service ean128Service) {
Ean128Service ean128Service,
ImballiRESTConsumer imballiRESTConsumer) {
return new AccettazioneOrdiniPickingViewModel(articoloRESTConsumer,
barcodeRESTConsumer,
colliMagazzinoRESTConsumer,
printerRESTConsumer,
accettazioneOrdiniPickingRESTConsumer,
colliAccettazioneRESTConsumer,
colliLavorazioneRESTConsumer, ean128Service);
colliLavorazioneRESTConsumer,
ean128Service,
imballiRESTConsumer);
}
}

View File

@@ -11,6 +11,7 @@ import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.inject.Inject;
@@ -40,11 +41,12 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliCaricoRESTConsumerInterface;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
import it.integry.integrywmsnative.core.rest.model.imballi.ImballoQuantityDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestOrderDTO;
@@ -66,17 +68,18 @@ import it.integry.integrywmsnative.gest.accettazione_ordini_picking.rest.Accetta
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO;
public class AccettazioneOrdiniPickingViewModel {
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final PrinterRESTConsumer mPrinterRESTConsumer;
private final AccettazioneOrdiniPickingRESTConsumer mAccettazioneOrdiniPickingRESTConsumer;
private final ColliAccettazioneRESTConsumer mColliAccettazioneRESTConsumer;
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
private final Ean128Service mEan128Service;
private final ImballiRESTConsumer mImballiRESTConsumer;
private ColliCaricoRESTConsumerInterface mColliCaricoRESTConsumer;
@@ -88,6 +91,7 @@ public class AccettazioneOrdiniPickingViewModel {
private MtbColt mCurrentMtbColt = null;
private GestioneEnum defaultGestioneOfUL = null;
private String foundCodAnag = null;
private final List<HistoryMtbAartDTO> mHistoryUsedAarts = new ArrayList<>();
@@ -95,19 +99,19 @@ public class AccettazioneOrdiniPickingViewModel {
public AccettazioneOrdiniPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
Ean128Service ean128Service) {
Ean128Service ean128Service,
ImballiRESTConsumer imballiRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mPrinterRESTConsumer = printerRESTConsumer;
this.mAccettazioneOrdiniPickingRESTConsumer = accettazioneOrdiniPickingRESTConsumer;
this.mColliAccettazioneRESTConsumer = colliAccettazioneRESTConsumer;
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
this.mEan128Service = ean128Service;
this.mImballiRESTConsumer = imballiRESTConsumer;
}
@@ -131,6 +135,15 @@ public class AccettazioneOrdiniPickingViewModel {
.findFirst()
.get();
//Definizione codAnag
var codAnagsOrd = mOrders.stream()
.map(OrdineAccettazioneInevasoDTO::getCodAnagOrd)
.distinct()
.collect(Collectors.toList());
if(codAnagsOrd.size() == 1) foundCodAnag = codAnagsOrd.get(0);
//Definizione della gestione collo di default
List<GestioneEnum> foundGestioni = Stream.of(mOrders)
.map(OrdineAccettazioneInevasoDTO::getGestioneEnum)
@@ -214,7 +227,7 @@ public class AccettazioneOrdiniPickingViewModel {
//dell'etichetta anonima
this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
} else {
if (SettingsManager.iDB().isFlagAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
if (SettingsManager.iDB().isFlagAccettazioneAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeSSCCFornitore(barcodeScanDTO, onComplete);
} else {
this.processBarcodeNotOpenedLU(barcodeScanDTO, null, onComplete);
@@ -275,7 +288,7 @@ public class AccettazioneOrdiniPickingViewModel {
null,
false,
() -> {
if(UtilityString.isNullOrEmpty(customSSCC))
if (UtilityString.isNullOrEmpty(customSSCC))
processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
else onComplete.run();
});
@@ -767,9 +780,6 @@ public class AccettazioneOrdiniPickingViewModel {
} else {
postCloseOperations();
}
this.sendLUClosed();
this.sendOnLoadingEnded();
};
sendVersamentoAutomaticoULRequest(response -> {
@@ -815,13 +825,13 @@ public class AccettazioneOrdiniPickingViewModel {
}
private void calculateQtaDaEvadere() {
if (SettingsManager.iDB().isFlagDeleteRowOnClose()) {
if (SettingsManager.iDB().isFlagAccettazioneDeleteRowOnClose()) {
for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) {
List<MtbColr> withdrawMtbColrs = pickingObjectDTO.getWithdrawMtbColrs();
BigDecimal qtaEvasa = BigDecimal.ZERO;
BigDecimal numCnf = BigDecimal.ZERO;
if (withdrawMtbColrs.size() > 0) {
if (!withdrawMtbColrs.isEmpty()) {
qtaEvasa = Stream.of(withdrawMtbColrs)
.map(MtbColr::getQtaCol)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -887,6 +897,22 @@ public class AccettazioneOrdiniPickingViewModel {
return optional.isPresent() ? optional.get() : null;
}
public void registraImballi(List<TracciamentoImballoDTO> data) {
this.sendOnLoadingStarted();
var inputData = data.stream()
.map(x -> new ImballoQuantityDTO()
.setQta(x.getQta().get())
.setCodMart(x.getCodMart().get()))
.collect(Collectors.toList());
mImballiRESTConsumer.registraCarico(foundCodAnag, inputData, () -> {
this.sendOnLoadingEnded();
}, this::sendError);
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.articoli_in_giacenza;
import dagger.Subcomponent;
@Subcomponent
public interface ArticoliInGiacenzaComponent {
@Subcomponent.Factory
interface Factory {
ArticoliInGiacenzaComponent create();
}
void inject(ArticoliInGiacenzaFragment ControlloGiacenzeFragment);
}

View File

@@ -0,0 +1,139 @@
package it.integry.integrywmsnative.gest.articoli_in_giacenza;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import com.ravikoradiya.liveadapter.LiveAdapter;
import com.ravikoradiya.liveadapter.Type;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.databinding.FragmentArticoliInGiacenzaBinding;
import it.integry.integrywmsnative.databinding.ListaGiacenzePerPosizioneModelBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
public class ArticoliInGiacenzaFragment extends BaseFragment implements ITitledFragment, ArticoliInGiacenzaViewModel.Listener {
@Inject
ArticoliInGiacenzaViewModel mViewModel;
private FragmentArticoliInGiacenzaBinding mBindings;
private final ObservableArrayList<MvwSitArtUdcDetInventario> mItemsInventario = new ObservableArrayList<>();
public ArticoliInGiacenzaFragment() {
// Required empty public constructor
}
public static ArticoliInGiacenzaFragment newInstance() {
return new ArticoliInGiacenzaFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_articoli_in_giacenza, container, false);
MainApplication.appComponent
.controlloGiacenzeComponent()
.create()
.inject(this);
mViewModel.setListener(this);
mBindings.setLifecycleOwner(this);
mBindings.setView(this);
mBindings.setViewmodel(mViewModel);
this.initRecyclerView();
return mBindings.getRoot();
}
private void initRecyclerView() {
mViewModel.getMvwSitArtUdcDetInventario().observe(getViewLifecycleOwner(), data -> {
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
this.refreshList(null);
});
var itemType = new Type<MvwSitArtUdcDetInventario, ListaGiacenzePerPosizioneModelBinding>(R.layout.lista_giacenze_per_posizione_model, BR.item);
new LiveAdapter(mItemsInventario)
.map(MvwSitArtUdcDetInventario.class, itemType)
.into(this.mBindings.inventarioList);
}
public void refreshList(List<MvwSitArtUdcDetInventario> filteredList) {
List<MvwSitArtUdcDetInventario> tmpList;
if (filteredList != null) {
tmpList = filteredList;
} else {
tmpList = mViewModel.getMvwSitArtUdcDetInventario().getValue();
}
this.mItemsInventario.clear();
if (tmpList != null) {
this.mItemsInventario.addAll(tmpList);
}
}
private void choosePosition(RunnableArgs<MtbDepoPosizione> onComplete) {
DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> {
if (status == DialogConsts.Results.ABORT) {
popMe();
} else {
onComplete.run(mtbDepoPosizione);
}
}, this::onError)
.show(requireActivity().getSupportFragmentManager(), "tag");
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
titleText.setText(context.getText(R.string.articoli_in_giacenza_title).toString());
}
@Override
public void onStart() {
super.onStart();
mViewModel.init();
}
@Override
public void onDestroy() {
mViewModel.setListener(null);
for (Runnable onPreDestroy : mOnPreDestroyList) {
onPreDestroy.run();
}
super.onDestroy();
}
@Override
public void onRequestChoosePosition(RunnableArgs<MtbDepoPosizione> onComplete) {
choosePosition(onComplete);
}
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.gest.articoli_in_giacenza;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
@Module(subcomponents = ArticoliInGiacenzaComponent.class)
public class ArticoliInGiacenzaModule {
@Provides
ArticoliInGiacenzaViewModel providesControlloGiacenzeViewModel(InventarioService inventarioService) {
return new ArticoliInGiacenzaViewModel(inventarioService);
}
}

View File

@@ -0,0 +1,68 @@
package it.integry.integrywmsnative.gest.articoli_in_giacenza;
import androidx.lifecycle.MutableLiveData;
import java.util.List;
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
public class ArticoliInGiacenzaViewModel {
private final InventarioService mInventarioService;
private final MutableLiveData<List<MvwSitArtUdcDetInventario>> mvwSitArtUdcDetInventario = new MutableLiveData<>();
private Listener mListener;
public ArticoliInGiacenzaViewModel(InventarioService inventarioService){
this.mInventarioService = inventarioService;
}
public void init() {
this.sendRequestChoosePosition(this::setPosizione);
}
private void setPosizione(MtbDepoPosizione posizione){
if (posizione == null) {
//Nessuna posizione trovata con questo barcode
this.sendError(new ScannedPositionNotExistException());
}else{
this.sendOnLoadingStarted();
mInventarioService.getInventarioDaPosizione(posizione, inventario -> {
mvwSitArtUdcDetInventario.postValue(inventario);
this.sendOnLoadingEnded();
}, this::sendError);
}
}
public MutableLiveData<List<MvwSitArtUdcDetInventario>> getMvwSitArtUdcDetInventario() {
return mvwSitArtUdcDetInventario;
}
public void setListener(Listener listener) {
this.mListener = listener;
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
private void sendRequestChoosePosition(RunnableArgs<MtbDepoPosizione> onComplete) {
if (this.mListener != null) mListener.onRequestChoosePosition(onComplete);
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onRequestChoosePosition(RunnableArgs<MtbDepoPosizione> onComplete);
}
}

View File

@@ -29,8 +29,11 @@ public class ArtDTO {
private LocalDate dataScad;
private String systemNote;
private String codAlis;
private Date datetimeRow;
public Integer getRigaOrd() {
return rigaOrd;
}
@@ -135,4 +138,13 @@ public class ArtDTO {
this.codAlis = codAlis;
return this;
}
public Date getDatetimeRow() {
return datetimeRow;
}
public ArtDTO setDatetimeRow(Date datetimeRow) {
this.datetimeRow = datetimeRow;
return this;
}
}

View File

@@ -6,6 +6,7 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -125,7 +126,12 @@ public class DocInterniEditFormViewModel {
}
public void loadArticoloByCodMartOrBarcode(String codMart) {
var matchedArt = Stream.of(productsList)
if(productsList == null) {
this.sendError(new NoResultFromCodMartException(codMart));
return;
}
var matchedArt = productsList.stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart) ||
x.getBarcode().contains(codMart))
.findFirst()
@@ -234,6 +240,7 @@ public class DocInterniEditFormViewModel {
artDto.setBarcode(row.getCodBarre());
artDto.setQta(BigDecimal.valueOf(row.getQtaCol()));
artDto.setDataIns(row.getDataCollo());
artDto.setDatetimeRow(row.getDatetimeRow());
artDto.setColli(BigDecimal.valueOf(row.getNumCnf()));
artDto.setUntMis(row.getUntMis());
artDto.setCodMart(row.getCodMart());
@@ -350,6 +357,7 @@ public class DocInterniEditFormViewModel {
row.setQtaCnf(resultDTO.getQtaCnf().floatValue());
row.setNumCnf(resultDTO.getNumCnf().floatValue());
row.setQtaCol(resultDTO.getQtaTot().floatValue());
row.setDatetimeRow(new Date());
row.setNote(resultDTO.getNote());
row.setDataScad(resultDTO.getDataScad());
row.setPartitaMag(resultDTO.getPartitaMag());

View File

@@ -90,7 +90,7 @@ public class LoginViewModel {
this.mSystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> {
SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps);
if (availableCodMdeps == null || availableCodMdeps.size() == 0) {
if (availableCodMdeps == null || availableCodMdeps.isEmpty()) {
this.sendError(new InvalidUserDepositException());
return;
}

View File

@@ -55,6 +55,7 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
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_linea_prod.DialogAskLineaProdView;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
@@ -297,7 +298,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
}
@Override
public void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
public void onLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
DialogAskLineaProdView.newInstance(onComplete, onAbort)
.show(getParentFragmentManager(), DialogAskLineaProdView.class.getName());
}

View File

@@ -55,6 +55,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse;
public class PickingLiberoViewModel {
@@ -324,25 +325,27 @@ public class PickingLiberoViewModel {
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
if (this.mFlagAskLineaProd) {
this.sendLULineaProdRequired(codJfas -> {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, codJfas, onComplete);
}, () -> {
this.sendLULineaProdRequired(response -> {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete);
}, () -> {
this.sendOnLoadingEnded();
});
} else {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, onComplete);
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, null, onComplete);
}
}
private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Runnable onComplete) {
private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Integer idLotto, Runnable onComplete) {
this.sendOnLoadingStarted();
var createUDSRequest = new CreateUDSRequestDTO()
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE && !mFlagAskLineaProd ? "PICKING LIBERO" : null)
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
.setOrderRequired(mFlagAskLineaProd);
.setIdLotto(idLotto)
.setOrderRequired(false);
if (customNumCollo != null) {
createUDSRequest.setNumCollo(customNumCollo);
@@ -529,9 +532,9 @@ public class PickingLiberoViewModel {
this.sendArtSelectionRequest(mtbColrsToPick, mtbAart, pickedAarts -> {
List<MtbColr> destNewMtbColr = new ArrayList<>();
if (pickedAarts.size() > 0) {
if (!pickedAarts.isEmpty()) {
askQuantities(pickedAarts.iterator(), destNewMtbColr, () -> {
if (destNewMtbColr.size() > 0) {
if (!destNewMtbColr.isEmpty()) {
MtbColt clonedTestata = (MtbColt) this.mCurrentMtbColt.clone();
clonedTestata.setOperation(CommonModelConsts.OPERATION.UPDATE);
@@ -563,8 +566,6 @@ public class PickingLiberoViewModel {
clonedTestata.setMtbColr(mtbColrObservableField);
this.sendOnLoadingStarted();
new Thread(() -> {
mColliMagazzinoRESTConsumer.saveCollo(clonedTestata, value -> {
for (int i = 0; i < mtbColrObservableField.size(); i++) {
@@ -950,7 +951,7 @@ public class PickingLiberoViewModel {
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
}
private void sendLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
private void sendLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort);
}
@@ -1010,7 +1011,7 @@ public class PickingLiberoViewModel {
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort);
void onLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort);
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);

View File

@@ -2,19 +2,27 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import java.util.HashMap;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
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.filters.FilterNumeroOrdineLayoutView;
public class ProdFabbisognoLineeProdBindings {
public static final int NUM_ORD_FILTER_ID = 0;
public static final int MGRP_FILTER_ID = 1;
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
put(NUM_ORD_FILTER_ID, new FilterChipDTO()
.setID(NUM_ORD_FILTER_ID)
.setPosizione(0)
.setFilterChipText("Numero ordine")
.setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
put(MGRP_FILTER_ID, new FilterChipDTO()
.setID(MGRP_FILTER_ID)
.setPosizione(1)
.setFilterChipText("Gruppo merceologico")
.setFilterLayoutView(new FilterGruppoMercLayoutView()));
}};
}

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.inject.Inject;
@@ -33,8 +34,13 @@ import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
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.MtbGrup;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
@@ -44,6 +50,7 @@ import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeListSi
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
@@ -68,11 +75,17 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
@Inject
ProdFabbisognoLineeProdViewModel mViewModel;
@Inject
ArticoloRESTConsumer mArticoloRESTConsumer;
@Inject
CommessaRESTConsumer mCommessaRESTConsumer;
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
private final ObservableArrayList<Object> mProdFabbisognoItemModel = new ObservableArrayList<>();
private FragmentProdFabbisognoLineeProdBinding mBindings;
private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel();
private List<MtbGrup> mtbGrupCache;
private List<JtbComt> jtbComtCache;
public ProdFabbisognoLineeProdFragment() {
// Required empty public constructor
@@ -120,6 +133,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> {
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
this.onLoadingStarted();
this.initMtbGrupsCache(() -> {
this.initJtbComtCache(this::onLoadingEnded);
});
mFilterViewModel.init(mViewModel.getOrdiniList().getValue());
this.refreshList(null);
});
@@ -211,34 +229,67 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
};
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged);
for (var filterChipDTO : ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet()) {
List<FilterChipDTO> filterList = Stream.of(ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet())
.map(Map.Entry::getValue)
.sortBy(FilterChipDTO::getPosizione)
.toList();
for (FilterChipDTO filterChipDTO : filterList) {
FilterChipView filterChipView = new FilterChipView(
requireActivity(),
filterChipDTO.getValue().getFilterChipText(),
v -> initBottomSheetDialogFilter(filterChipDTO.getValue()));
filterChipDTO.getFilterChipText(),
v -> initBottomSheetDialogFilter(filterChipDTO));
if (filterChipDTO.getKey() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) {
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) {
filterChipView.disableCloseIcon();
switch (filterChipDTO.getID()) {
case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID -> {
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mFilterViewModel.getCurrentNumOrdsPredicate().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);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
}
});
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null));
});
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null));
}
case ProdFabbisognoLineeProdBindings.MGRP_FILTER_ID -> {
mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mFilterViewModel.getCurrentGruppoMercPredicate().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(() -> {
mFilterViewModel.setGruppoMercFilter(null);
mFilterViewModel.getCurrentGruppoMercPredicate().set(null);
});
}
}
this.mBindings.filterChipsGroup.addView(filterChipView);
}
@@ -253,16 +304,24 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
var filterLayoutView = filterChipDTO
.getFilterLayoutView();
if (filterChipDTO.getID() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) {
((FilterNumeroOrdineLayoutView) filterLayoutView)
.setAllNumOrds(mFilterViewModel.getAllNumOrds())
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
.setOnFilterApplied(mFilterViewModel::setNumOrdFilter)
.setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue()))
.filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ?
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get()))
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
.toList());
switch (filterChipDTO.getID()) {
case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID ->
((FilterNumeroOrdineLayoutView) filterLayoutView)
.setAllNumOrds(mFilterViewModel.getAllNumOrds())
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
.setOnFilterApplied(mFilterViewModel::setNumOrdFilter)
.setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue()))
.filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ?
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get()))
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
.toList());
case ProdFabbisognoLineeProdBindings.MGRP_FILTER_ID ->
((FilterGruppoMercLayoutView) filterLayoutView)
.setAllGroupMerc(mFilterViewModel.getAllGruppoMerc(mtbGrupCache))
.setAvailableGroupMerc(mFilterViewModel.getAvailableGruppoMerc(mtbGrupCache))
.setOnFilterApplied(mFilterViewModel::setGruppoMercFilter)
.setPreSelectedGroupMerc(mFilterViewModel.getSelectedMtbGrup());
}
if (!filterLayoutView.isAdded())
@@ -270,6 +329,44 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
}
private void initMtbGrupsCache(Runnable onComplete) {
var codMgrpArts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrdiniList().getValue()))
.flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc() != null ?
x.getOrdineLavorazioneDTO().getAvailableClassMerc() : new ArrayList<>()))
.map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp)
.withoutNulls()
.distinct()
.toList();
this.mArticoloRESTConsumer.getArtsGroups(codMgrpArts, mtbGrupCache -> {
this.mtbGrupCache = mtbGrupCache;
onComplete.run();
}, this::onError);
}
private void initJtbComtCache(Runnable onComplete) {
if (this.mViewModel.getOrdiniList().getValue() == null) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrdiniList().getValue()))
.flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getCodJcom()))
.distinct().withoutNulls()
.toList();
if (jtbComts.isEmpty()) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> {
this.jtbComtCache = jtbComtCache;
onComplete.run();
}, this::onError);
}
@Override
public void onDestroy() {
for (Runnable onPreDestroy : mOnPreDestroyList) {
@@ -305,15 +402,32 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
.max(Date::compareTo)
.orElse(null);
this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, this::startPickingActivity);
List<MtbGrup> listMtbGrup = Stream.of(mProdFabbisognoItemModel)
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
.flatMap(x -> Stream.of(((ProdFabbisognoLineeItemModelDto) x).getSelectedMtbGrup()))
.toList();
this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, onCompleteData -> {
startPickingActivity(listMtbGrup, onCompleteData);
});
}
private void startPickingActivity(List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
private void startPickingActivity(List<MtbGrup> listMtbGrup, List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
List<SitArtOrdDTO> sitArtOrdDTOS = Stream.of(fabbisognoList)
.map(x -> {
String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel)
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
.map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd().toString())
.toList());
Stream<ProdFabbisognoLineeProdDTO> streamSitArtOrd = Stream.of(fabbisognoList);
streamSitArtOrd = listMtbGrup != null && !listMtbGrup.isEmpty() ?
streamSitArtOrd.filter(x -> Stream.of(listMtbGrup).anyMatch(y -> y.getCodMgrp().equalsIgnoreCase(x.getCodMgrp()))) :
streamSitArtOrd;
List<SitArtOrdDTO> sitArtOrdDTOS = streamSitArtOrd.map(x -> {
SitArtOrdDTO sitArtOrdDTO = new SitArtOrdDTO()
.setCodMart(x.getCodMart())
.setCodMdep(codMdep)
@@ -328,6 +442,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
sitArtOrdDTO.getExtraInfo().put("dataInizio", x.getDataInizio());
sitArtOrdDTO.getExtraInfo().put("dataFine", x.getDataFine());
sitArtOrdDTO.getExtraInfo().put("ordini", ordini);
return sitArtOrdDTO;
})

View File

@@ -1,12 +1,17 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class ProdFabbisognoLineeItemModelDto {
public BindableBoolean selected = new BindableBoolean();
public OrdineLavorazioneDTO ordineLavorazioneDTO;
List<MtbGrup> selectedMtbGrup = new ArrayList<>();
public BindableBoolean getSelected() {
return selected;
@@ -20,4 +25,13 @@ public class ProdFabbisognoLineeItemModelDto {
this.ordineLavorazioneDTO = ordineLavorazioneDTO;
return this;
}
public List<MtbGrup> getSelectedMtbGrup() {
return selectedMtbGrup;
}
public ProdFabbisognoLineeItemModelDto setSelectedMtbGrup(List<MtbGrup> selectedMtbGrup) {
this.selectedMtbGrup = selectedMtbGrup;
return this;
}
}

View File

@@ -6,18 +6,25 @@ import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class ProdFabbisognoLineeProdFilterViewModel {
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentNumOrdsPredicate = new ObservableField<>();
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentGruppoMercPredicate = new ObservableField<>();
private List<ProdFabbisognoLineeItemModelDto> initialList;
private List<MtbGrup> selectedMtbGrup = new ArrayList<>();
private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> currentList = new MutableLiveData<>();
public void init(List<ProdFabbisognoLineeItemModelDto> initialList){
public void init(List<ProdFabbisognoLineeItemModelDto> initialList) {
this.initialList = initialList;
this.currentList.setValue(this.initialList);
}
@@ -26,23 +33,37 @@ public class ProdFabbisognoLineeProdFilterViewModel {
return this.currentList;
}
public void setNumOrdFilter(List<Integer> numOrds){
public void setNumOrdFilter(List<Integer> numOrds) {
if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null);
else{
else {
currentNumOrdsPredicate.set(x -> numOrds.contains(x.getOrdineLavorazioneDTO().getNumOrd()));
}
}
public void applyAllTests(){
public void setGruppoMercFilter(List<MtbGrup> mtbGrupList) {
if (mtbGrupList == null || mtbGrupList.isEmpty()) {
currentGruppoMercPredicate.set(null);
this.selectedMtbGrup = new ArrayList<>();
} else {
this.selectedMtbGrup = mtbGrupList;
var mtbGrups = Stream.of(mtbGrupList).map(MtbGrup::getCodMgrp).toList();
currentGruppoMercPredicate.set(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc())
.anyMatch(y -> mtbGrups.contains(y.getCodMgrp())));
}
}
public void applyAllTests() {
List<ProdFabbisognoLineeItemModelDto> returnList = null;
if (currentNumOrdsPredicate.get() == null){
if (currentNumOrdsPredicate.get() == null &&
currentGruppoMercPredicate.get() == null) {
returnList = this.initialList;
}else {
Stream<ProdFabbisognoLineeItemModelDto> tmpStream = Stream.of(this.initialList)
.filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))));
returnList = tmpStream.toList();
} else {
returnList = Stream.of(this.initialList)
.filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
).map(x -> x.setSelectedMtbGrup(this.selectedMtbGrup)).toList();
}
this.currentList.setValue(returnList);
@@ -52,7 +73,11 @@ public class ProdFabbisognoLineeProdFilterViewModel {
return currentNumOrdsPredicate;
}
public List<Integer> getAllNumOrds(){
public ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> getCurrentGruppoMercPredicate() {
return currentGruppoMercPredicate;
}
public List<Integer> getAllNumOrds() {
return Stream
.of(Objects.requireNonNull(initialList))
.filter(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null)
@@ -62,13 +87,59 @@ public class ProdFabbisognoLineeProdFilterViewModel {
.toList();
}
public List<Integer> getAvailableNumOrds(){
if (currentNumOrdsPredicate.get() == null) return getAllNumOrds();
public List<Integer> getAvailableNumOrds() {
if (currentGruppoMercPredicate.get() == null) return getAllNumOrds();
else {
return Stream.of(this.initialList)
.filter(x -> (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))))
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
.distinct()
.toList();
}
}
public List<MtbGrup> getSelectedMtbGrup() {
return selectedMtbGrup;
}
public List<MtbGrup> getAllGruppoMerc(List<MtbGrup> mtbGrupFullList) {
var codMgrp = Stream.of(initialList)
.flatMap(x ->
Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc() != null ?
x.getOrdineLavorazioneDTO().getAvailableClassMerc() :
new ArrayList<>()))
.map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp)
.withoutNulls()
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(mtbGrupFullList))
.filter(x -> codMgrp.contains(x.getCodMgrp()))
.distinct()
.withoutNulls()
.sortBy(MtbGrup::getDescrizione)
.toList();
}
public List<MtbGrup> getAvailableGruppoMerc(List<MtbGrup> mtbGrupFullList){
if (currentNumOrdsPredicate.get() == null){
return getAllGruppoMerc(mtbGrupFullList);
} else {
List<String> availableCodMgrups = Stream.of(this.initialList)
.filter(x ->
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x)))
)
.flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc()))
.map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp)
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(mtbGrupFullList))
.filter(x -> availableCodMgrups.contains(x.getCodMgrp()))
.distinct()
.withoutNulls()
.sortBy(MtbGrup::getDescrizione)
.toList();
}
}
}

View File

@@ -50,123 +50,26 @@ public class ProdFabbisognoLineeProdRESTConsumer extends _BaseRESTConsumer {
}
public void loadFabbisogno(String codMart, Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "WITH input_values AS ( " +
" SELECT " + UtilityDB.valueToString(startDate) + " AS data_inizio, " +
" " + UtilityDB.valueToString(endDate) + " AS data_fine, " +
// " " + UtilityDB.valueToString(lineaProd) + " AS linea_prod, " +
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep)," +
" withdraw_mtb_colr AS ( " +
" SELECT cod_mart, " +
" SUM(ISNULL(qta_col, 0)) as qta_col, " +
" SUM(ISNULL(num_cnf, 0)) as num_cnf, " +
" mtb_colr.data_ord, " +
" mtb_colr.num_ord, " +
" mtb_colr.gestione " +
" FROM mtb_colr " +
" INNER JOIN mtb_colt mc on mtb_colr.gestione = mc.gestione and mtb_colr.data_collo = mc.data_collo and " +
" mtb_colr.ser_collo = mc.ser_collo and mtb_colr.num_collo = mc.num_collo " +
" WHERE segno = -1 " +
" AND cod_dtip IS NULL " +
" GROUP BY cod_mart, " +
" mtb_colr.data_ord, " +
" mtb_colr.num_ord, " +
" mtb_colr.gestione " +
" ), " +
" custom_mtb_colr AS (SELECT cod_mart, " +
" SUM(qta_col) AS qta_col, " +
" SUM(num_cnf) AS num_cnf, " +
" posizione " +
" FROM mvw_sitart_udc_det_inventario " +
" GROUP BY cod_mart, posizione), " +
" grouped_ord AS ( " +
" SELECT dtb_ordr.cod_mart, " +
" dtb_ordt.cod_jfas, " +
" dtb_ordt.cod_mdep, " +
" dtb_ordt.gestione, " +
" CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) - " +
" SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord, " +
" SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord, " +
" SUM(ISNULL(withdraw_mtb_colr.qta_col, 0)) AS qta_col_scaricata, " +
" SUM(ISNULL(withdraw_mtb_colr.num_cnf, 0)) AS num_cnf_scaricata " +
" FROM dtb_ordr " +
" INNER JOIN dtb_ordt on dtb_ordr.gestione = dtb_ordt.gestione AND " +
" dtb_ordr.data_ord = dtb_ordt.data_ord AND " +
" dtb_ordr.num_ord = dtb_ordt.num_ord " +
" LEFT OUTER JOIN withdraw_mtb_colr " +
" ON withdraw_mtb_colr.gestione = dtb_ordt.gestione AND " +
" withdraw_mtb_colr.num_ord = dtb_ordt.num_ord AND " +
" withdraw_mtb_colr.data_ord = dtb_ordt.data_ord AND " +
" withdraw_mtb_colr.cod_mart = dtb_ordr.cod_mart " +
" CROSS APPLY input_values " +
" WHERE dtb_ordt.gestione = 'L' " +
" AND flag_evaso = 'I' " +
" AND dtb_ordr.flag_evaso_forzato = 'N' " +
" AND flag_annulla = 'N' " +
" AND dtb_ordt.cod_mdep = input_values.cod_mdep " +
" AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine " +
" GROUP BY dtb_ordr.cod_mart, dtb_ordt.cod_jfas, dtb_ordt.cod_mdep, dtb_ordt.gestione " +
" ), " +
" tmp_ord AS (SELECT grouped_ord.cod_mart, " +
" mtb_aart.unt_mis, " +
" grouped_ord.cod_jfas, " +
" SUM(qta_ord) - SUM(qta_col_scaricata) AS qta_ord, " +
" SUM(num_cnf_ord) - SUM(num_cnf_scaricata) AS num_cnf_ord " +
" FROM grouped_ord " +
" INNER JOIN mtb_aart ON grouped_ord.cod_mart = mtb_aart.cod_mart " +
" CROSS APPLY input_values " +
" GROUP BY grouped_ord.cod_mart, mtb_aart.unt_mis, grouped_ord.cod_jfas " +
" ), " +
" ord_without_positioned_mtb_colt AS ( " +
" SELECT tmp_ord.cod_mart, " +
" tmp_ord.cod_jfas, " +
" ISNULL(custom_mtb_colr_on_linea.posizione, tmp_ord.cod_jfas) AS posizione, " +
" unt_mis, " +
" qta_ord AS qta_ord_calc, " +
" num_cnf_ord AS num_cnf_ord_calc, " +
" ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " +
" ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " +
" qta_ord - ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_fabbisogno, " +
" num_cnf_ord - ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_fabbisogno " +
" FROM tmp_ord " +
" INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " +
" AND tmp_ord.cod_jfas = jrl_fase_posizioni.posizione " +
" LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " +
" ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " +
" tmp_ord.cod_jfas = custom_mtb_colr_on_linea.posizione " +
" " +
" UNION ALL " +
" " +
" SELECT DISTINCT tmp_ord.cod_mart, " +
" null AS cod_jfas, " +
" jrl_fase_posizioni.posizione, " +
" unt_mis, " +
" 0 AS qta_ord_calc, " +
" 0 AS num_cnf_ord_calc, " +
" ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " +
" ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " +
" 0 AS qta_fabbisogno, " +
" 0 AS num_cnf_fabbisogno " +
" FROM tmp_ord " +
" INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " +
" AND tmp_ord.cod_jfas <> jrl_fase_posizioni.posizione " +
" " +
" " +
" LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " +
" ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " +
" jrl_fase_posizioni.posizione = custom_mtb_colr_on_linea.posizione " +
" ) " +
"SELECT DISTINCT cod_mart, " +
" unt_mis, " +
" cod_jfas, " +
" input_values.data_inizio, " +
" input_values.data_fine " +
"FROM ord_without_positioned_mtb_colt " +
"CROSS APPLY input_values " +
"WHERE cod_mart = " + UtilityDB.valueToString(codMart) + " " +
"GROUP BY cod_mart, unt_mis, cod_jfas, input_values.data_inizio, input_values.data_fine " +
"HAVING SUM(qta_ord_calc - qta_gia_posizionata) > 0 AND SUM(num_cnf_ord_calc - num_cnf_gia_posizionata) > 0 " +
"ORDER BY cod_mart";
public void loadFabbisogno(String codMart, String ordini, Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT DISTINCT cod_jfas\n" +
"FROM (SELECT DENSE_RANK() OVER (PARTITION BY dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord ORDER BY dtb_ord_steps.data_iniz DESC) AS row_n,\n" +
" dtb_ord_steps.*\n" +
" FROM dtb_ord_steps\n" +
" INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" +
" AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" +
" AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" +
" INNER JOIN dtb_ordr ON dtb_ordr.gestione = dtb_ord_steps.gestione AND\n" +
" dtb_ordr.data_ord = dtb_ord_steps.data_ord AND\n" +
" dtb_ordr.num_ord = dtb_ord_steps.num_ord\n" +
" WHERE dtb_ordt.gestione = 'L'\n" +
" AND dtb_ordr.flag_evaso = 'I'\n" +
" AND dtb_ordr.flag_evaso_forzato = 'N'\n" +
" AND flag_annulla = 'N'\n" +
" AND dtb_ordt.cod_mdep = " + UtilityDB.valueToString(codMdep) + "\n" +
" AND dtb_ordt.num_ord IN ( " + ordini + " )\n" +
" AND dtb_ordt.data_ord BETWEEN " + UtilityDB.valueToString(startDate) + " AND " + UtilityDB.valueToString(endDate) + "\n" +
" AND dtb_ordr.cod_mart = " + UtilityDB.valueToString(codMart) + ") t\n" +
"WHERE t.row_n = 1";
Type typeOfObjectsList = new TypeToken<ArrayList<ProdFabbisognoLineeProdDTO>>() {}.getType();

View File

@@ -3,13 +3,12 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale;
import androidx.databinding.ObservableArrayList;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.inject.Inject;
@@ -93,14 +92,14 @@ public class ProdRecuperoMaterialeViewModel {
private HistoryVersamentoProdULDTO getHistoryElementFromMtbColt(MtbColt mtbColt) {
List<HistoryVersamentoProdULDTO> filteredItems = Stream.of(this.mUlList.getValue())
List<HistoryVersamentoProdULDTO> filteredItems = this.mUlList.getValue().stream()
.filter(x -> Objects.equals(x.getNumColloRif(), mtbColt.getNumCollo()) &&
x.getDataColloRif().equals(mtbColt.getDataColloS()) &&
x.getDataColloRif().equals(UtilityDate.toLocalDate(mtbColt.getDataColloD())) &&
x.getSerColloRif().equalsIgnoreCase(mtbColt.getSerCollo()) &&
x.getGestioneRif().equalsIgnoreCase(mtbColt.getGestione()))
.toList();
.collect(Collectors.toList());
if (filteredItems != null && filteredItems.size() > 0) {
if (!filteredItems.isEmpty()) {
return filteredItems.get(0);
}

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale.dto;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@@ -11,7 +12,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
public class HistoryVersamentoProdULDTO {
private String gestione;
private String dataCollo;
private LocalDate dataCollo;
private String serCollo;
private Integer numCollo;
private String segno;
@@ -28,7 +29,7 @@ public class HistoryVersamentoProdULDTO {
private String descrizioneArt;
private String untMis;
private String gestioneRif;
private String dataColloRif;
private LocalDate dataColloRif;
private String serColloRif;
private Integer numColloRif;
@@ -50,11 +51,11 @@ public class HistoryVersamentoProdULDTO {
return this;
}
public String getDataCollo() {
public LocalDate getDataCollo() {
return dataCollo;
}
public HistoryVersamentoProdULDTO setDataCollo(String dataCollo) {
public HistoryVersamentoProdULDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
@@ -203,11 +204,11 @@ public class HistoryVersamentoProdULDTO {
return this;
}
public String getDataColloRif() {
public LocalDate getDataColloRif() {
return dataColloRif;
}
public HistoryVersamentoProdULDTO setDataColloRif(String dataColloRif) {
public HistoryVersamentoProdULDTO setDataColloRif(LocalDate dataColloRif) {
this.dataColloRif = dataColloRif;
return this;
}

View File

@@ -1,16 +1,16 @@
package it.integry.integrywmsnative.gest.prod_recupero_materiale.dto;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class HistoryVersamentoProdULRestDTO {
private String gestione;
private String dataCollo;
private LocalDate dataCollo;
private String serCollo;
private Integer numCollo;
private String segno;
@@ -27,7 +27,7 @@ public class HistoryVersamentoProdULRestDTO {
private String descrizioneArt;
private String untMis;
private String gestioneRif;
private String dataColloRif;
private LocalDate dataColloRif;
private String serColloRif;
private Integer numColloRif;
@@ -55,11 +55,11 @@ public class HistoryVersamentoProdULRestDTO {
return this;
}
public String getDataCollo() {
public LocalDate getDataCollo() {
return dataCollo;
}
public HistoryVersamentoProdULRestDTO setDataCollo(String dataCollo) {
public HistoryVersamentoProdULRestDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
@@ -208,11 +208,11 @@ public class HistoryVersamentoProdULRestDTO {
return this;
}
public String getDataColloRif() {
public LocalDate getDataColloRif() {
return dataColloRif;
}
public HistoryVersamentoProdULRestDTO setDataColloRif(String dataColloRif) {
public HistoryVersamentoProdULRestDTO setDataColloRif(LocalDate dataColloRif) {
this.dataColloRif = dataColloRif;
return this;
}

View File

@@ -264,7 +264,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer {
});
if (newUlList.size() > 0) {
if (!newUlList.isEmpty()) {
List<String> codMarts = Stream.of(newUlList)
.map(HistoryVersamentoProdULDTO::getCodMart)
.withoutNulls()

View File

@@ -15,6 +15,7 @@ import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import com.ravikoradiya.liveadapter.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -29,8 +30,8 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.ISearchableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@@ -42,11 +43,10 @@ import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsIn
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.filter.ProdRiposizionamentoDaProdFilterViewModel;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements ITitledFragment, ProdRiposizionamentoDaProdViewModel.Listener {
public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements ISearchableFragment, ITitledFragment, ProdRiposizionamentoDaProdViewModel.Listener {
@Inject
ProdRiposizionamentoDaProdViewModel mViewModel;
@@ -57,6 +57,8 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
private final Handler mHandler = new Handler();
private final int mInterval = 120 * 1000; //2 minuti
private int barcodeScannerIstanceID = -1;
private AppCompatTextView mAppBarTitle;
private String mTextFilter;
public ProdRiposizionamentoDaProdFragment() {
@@ -123,7 +125,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
mViewModel.getItemsInventario().observe(getViewLifecycleOwner(), data -> {
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
mFilterViewModel.init(mViewModel.getItemsInventario().getValue());
mFilterViewModel.init(getFilteredList(mTextFilter));
this.refreshList(null);
});
@@ -134,6 +136,14 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
return null;
});
itemType.areContentsTheSame((oldObject, newObject) ->
oldObject.getCodMart().equalsIgnoreCase(newObject.getCodMart()) &&
oldObject.getNumOrd().equals(newObject.getNumOrd()) &&
oldObject.getDataOrd().equals(newObject.getDataOrd())
);
itemType.areItemSame((oldObject, newObject) -> oldObject == newObject);
new LiveAdapter(mItemsInventario)
.map(ArtsInGiacenzaDTO.class, itemType)
.into(this.mBindings.inventarioList);
@@ -197,10 +207,10 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
.setOnFilterApplied(mFilterViewModel::setPositionFilter)
.setPreselected(
Stream.of(Objects.requireNonNull(mViewModel.getItemsInventario().getValue()))
.filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ?
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get()))
.map(ArtsInGiacenzaDTO::getPosizione)
.toList()
.filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ?
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get()))
.map(ArtsInGiacenzaDTO::getPosizione)
.toList()
);
}
@@ -209,8 +219,9 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
}
public void onInfoClick(List<MvwSitArtUdcDetInventario> item) {
public void onInfoClick(ArtsInGiacenzaDTO item) {
try {
BarcodeManager.disable();
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
} catch (Exception e) {
UtilityExceptions.defaultException(this.getContext(), e);
@@ -254,6 +265,44 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
.show(requireActivity().getSupportFragmentManager(), "tag");
}
@Override
public void onSearchEnabled() {
mAppBarTitle.setVisibility(View.GONE);
}
@Override
public void onSearchDisabled() {
mAppBarTitle.setVisibility(View.VISIBLE);
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
List<ArtsInGiacenzaDTO> originalList = this.mViewModel.getItemsInventario().getValue();
if (originalList == null || originalList.isEmpty()) return false;
mTextFilter = newText;
List<ArtsInGiacenzaDTO> filteredOrders = getFilteredList(newText);
refreshList(filteredOrders);
return true;
}
private List<ArtsInGiacenzaDTO> getFilteredList(String newText) {
List<ArtsInGiacenzaDTO> filteredOrders = new ArrayList<>();
List<ArtsInGiacenzaDTO> originalList = this.mViewModel.getItemsInventario().getValue();
if (originalList == null || originalList.isEmpty() || newText == null) return originalList;
for (int i = 0; i < originalList.size(); i++) {
if (originalList.get(i).getDescrizione().toLowerCase().contains(newText.toLowerCase())) {
filteredOrders.add(originalList.get(i));
}
}
return filteredOrders;
}
@Override
public void onStart() {
super.onStart();
@@ -274,7 +323,8 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
titleText.setText(context.getText(R.string.prod_riposizionamento_da_prod_title).toString());
mAppBarTitle = titleText;
mAppBarTitle.setText(context.getText(R.string.prod_riposizionamento_da_prod_title).toString());
}
@Override

View File

@@ -6,6 +6,7 @@ import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
@@ -13,8 +14,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
@@ -32,6 +31,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO;
public class ProdRiposizionamentoDaProdViewModel {
private final SoundAlertService mSoundAlertService;
@@ -41,6 +41,7 @@ public class ProdRiposizionamentoDaProdViewModel {
private final MutableLiveData<List<ArtsInGiacenzaDTO>> itemsInventario = new MutableLiveData<>();
private final MutableLiveData<MtbColt> mtbColtMutableLiveData = new MutableLiveData<>();
private final MutableLiveData<List<MvwSitArtUdcDetInventario>> mMvwSitArtUdcDetInventarioLiveData = new MutableLiveData<>();
private final MutableLiveData<List<StatoArtInventarioDTO>> mStatoArticoli = new MutableLiveData<>();
private Listener mListener;
public ProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, SoundAlertService soundAlertService) {
@@ -100,6 +101,13 @@ public class ProdRiposizionamentoDaProdViewModel {
mMvwSitArtUdcDetInventarioLiveData.setValue(mvwSitArtUdcDetInventario);
List<StatoArtInventarioDTO> statoArticolo = Stream.of(Objects.requireNonNull(itemsInventario.getValue()))
.flatMap(x -> Stream.of(x.getStatoArtInventario())
.filter(Objects::nonNull))
.toList();
mStatoArticoli.setValue(statoArticolo);
boolean isPresent = Stream.of(mvwSitArtUdcDetInventario)
.anyMatch(x ->
x.getGestione().equals(mtbColt.getGestione()) &&
@@ -161,6 +169,35 @@ public class ProdRiposizionamentoDaProdViewModel {
.map(MvwSitArtUdcDetInventario::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
List<StatoArtInventarioDTO> statoArticoli = mStatoArticoli.getValue();
if (statoArticoli == null)
statoArticoli = new ArrayList<>();
StatoArtInventarioDTO statoArticolo = Stream.of(statoArticoli)
.filter(x -> x.getCodProd().equalsIgnoreCase(dtoList.get(0).getCodMart()) &&
Objects.equals(x.getNumOrd(), dtoList.get(0).getNumOrd()) &&
Objects.equals(x.getDataOrd(), dtoList.get(0).getDataOrd())
)
.findFirstOrElse(new StatoArtInventarioDTO());
MvwSitArtUdcDetInventario mvwInventario = mvwSitArtUdcDetInventario.get();
if (mvwInventario.getCodMart().equalsIgnoreCase(dtoList.get(0).getCodMart()) &&
Objects.equals(mvwInventario.getNumOrd(), dtoList.get(0).getNumOrd()) &&
Objects.equals(mvwInventario.getDataOrd(), dtoList.get(0).getDataOrd())) {
BigDecimal colliMag = statoArticolo.getColliMag();
Integer pedMag = statoArticolo.getPedMag();
BigDecimal qtaMag = statoArticolo.getQtaMag();
BigDecimal numCnf = mvwInventario.getNumCnf();
BigDecimal qtaCol = mvwInventario.getQtaCol();
statoArticolo.setColliMag(colliMag.add(numCnf));
statoArticolo.setQtaMag(qtaMag.add(qtaCol));
statoArticolo.setPedMag(pedMag + 1);
}
return new ArtsInGiacenzaDTO()
.setCodMart(dtoList.get(0).getCodMart())
.setPartitaMag(dtoList.get(0).getPartitaMag())
@@ -169,6 +206,7 @@ public class ProdRiposizionamentoDaProdViewModel {
.setNumOrd(dtoList.get(0).getNumOrd())
.setNumCnf(totalNumCnf)
.setCount(dtoList.size())
.setStatoArtInventario(statoArticolo)
.setMvwSitArtUdcDetInventarioDTO(dtoList);
})
.sorted(Comparator.comparing(ArtsInGiacenzaDTO::getPosizione))

View File

@@ -5,24 +5,23 @@ import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.annimon.stream.Stream;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaBinding;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
public class DialogInfoGiacenzaView extends BaseDialogFragment {
@@ -30,23 +29,22 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
DialogInfoGiacenzaViewModel mViewModel;
private DialogInfoGiacenzaBinding mBindings;
private Context mContext;
private List<MvwSitArtUdcDetInventario> item;
private final ArtsInGiacenzaDTO item;
public static DialogInfoGiacenzaView newInstance(List<MvwSitArtUdcDetInventario> item) {
public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) {
return new DialogInfoGiacenzaView(item);
}
public DialogInfoGiacenzaView(List<MvwSitArtUdcDetInventario> item) {
public DialogInfoGiacenzaView(ArtsInGiacenzaDTO item) {
this.item = item;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
Context mContext = requireContext();
mBindings = DialogInfoGiacenzaBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings = DialogInfoGiacenzaBinding.inflate(LayoutInflater.from(mContext), null, false);
mBindings.setLifecycleOwner(this);
MainApplication.appComponent
@@ -56,7 +54,7 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
setCancelable(true);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
var alertDialog = new MaterialAlertDialogBuilder(mContext)
.setView(mBindings.getRoot())
.setNeutralButton(R.string.action_close, null)
.setCancelable(isCancelable())
@@ -78,17 +76,38 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
this.onLoadingEnded();
}
private void initAvailableItemsList(List<MvwSitArtUdcDetInventario> availableItems) {
if(availableItems == null || availableItems.isEmpty())
private void initAvailableItemsList(ArtsInGiacenzaDTO availableItems) {
if (availableItems == null)
return;
var itemList = Stream.of(availableItems)
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
.toList();
StatoArtInventarioDTO statoArtInventario = availableItems.getStatoArtInventario();
if (statoArtInventario != null) {
if (statoArtInventario.colliArrivoIsLessThenZero() &&
statoArtInventario.colliMagIsLessThenZero()) {
this.mBindings.situazioneArticolo.setVisibility(View.GONE);
}
} else {
this.mBindings.situazioneArticolo.setVisibility(View.GONE);
}
new LiveAdapter(itemList, BR.item)
new LiveAdapter(this.item.getSituazioneArticoloAvailableListItem(), BR.item)
.map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item)
.into(this.mBindings.availableList);
new LiveAdapter(this.item.getStatoInventario(), BR.item)
.map(StatoArtInventarioDTO.class, R.layout.dialog_info_giacenza_situazione_articolo)
.into(this.mBindings.situazioneArticolo);
}
@Override
public void onLoadingStarted() {
this.mBindings.loadingView.setVisibility(View.VISIBLE);
this.mBindings.listItem.setVisibility(View.GONE);
}
@Override
public void onLoadingEnded() {
this.mBindings.loadingView.setVisibility(View.GONE);
this.mBindings.listItem.setVisibility(View.VISIBLE);
}
}

View File

@@ -1,9 +1,13 @@
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
public class ArtsInGiacenzaDTO {
@@ -13,7 +17,9 @@ public class ArtsInGiacenzaDTO {
private String posizione;
private BigDecimal numCnf;
private Integer numOrd;
private Date dataOrd;
private Integer count;
private StatoArtInventarioDTO statoArtInventario;
private List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioDTO;
public String getCodMart() {
@@ -92,4 +98,34 @@ public class ArtsInGiacenzaDTO {
this.numOrd = numOrd;
return this;
}
public StatoArtInventarioDTO getStatoArtInventario() {
return statoArtInventario;
}
public ArtsInGiacenzaDTO setStatoArtInventario(StatoArtInventarioDTO statoArtInventario) {
this.statoArtInventario = statoArtInventario;
return this;
}
public Date getDataOrd() {
return dataOrd;
}
public ArtsInGiacenzaDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public List<DialogInfoSituazioneArticoloAvailableListItem> getSituazioneArticoloAvailableListItem() {
return Stream.of(this)
.flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO())
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
)
.toList();
}
public List<StatoArtInventarioDTO> getStatoInventario(){
return Stream.of(this.statoArtInventario).toList();
}
}

View File

@@ -0,0 +1,181 @@
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto;
import java.math.BigDecimal;
import java.util.Date;
public class StatoArtInventarioDTO {
private String codProd;
private Integer numOrd;
private Date dataOrd;
private String untMis;
private BigDecimal qtaProd;
private BigDecimal colliProd;
private BigDecimal pedProd;
private BigDecimal qtaInArrivo;
private BigDecimal colliArrivo;
private BigDecimal pedArrivo;
private BigDecimal qtaLinea;
private BigDecimal colliLinea;
private Integer pedLinea;
private BigDecimal qtaMag;
private BigDecimal colliMag;
private Integer pedMag;
public String getCodProd() {
return codProd;
}
public StatoArtInventarioDTO setCodProd(String codProd) {
this.codProd = codProd;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public StatoArtInventarioDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
public String getUntMis() {
return untMis;
}
public StatoArtInventarioDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaProd() {
return qtaProd;
}
public StatoArtInventarioDTO setQtaProd(BigDecimal qtaProd) {
this.qtaProd = qtaProd;
return this;
}
public BigDecimal getColliProd() {
return colliProd;
}
public StatoArtInventarioDTO setColliProd(BigDecimal colliProd) {
this.colliProd = colliProd;
return this;
}
public BigDecimal getPedProd() {
return pedProd;
}
public StatoArtInventarioDTO setPedProd(BigDecimal pedProd) {
this.pedProd = pedProd;
return this;
}
public BigDecimal getQtaInArrivo() {
return qtaInArrivo;
}
public StatoArtInventarioDTO setQtaInArrivo(BigDecimal qtaInArrivo) {
this.qtaInArrivo = qtaInArrivo;
return this;
}
public BigDecimal getColliArrivo() {
return colliArrivo;
}
public StatoArtInventarioDTO setColliArrivo(BigDecimal colliArrivo) {
this.colliArrivo = colliArrivo;
return this;
}
public BigDecimal getPedArrivo() {
if (pedArrivo.compareTo(BigDecimal.ZERO) < 0)
return BigDecimal.ZERO;
else
return pedArrivo;
}
public StatoArtInventarioDTO setPedArrivo(BigDecimal pedArrivo) {
this.pedArrivo = pedArrivo;
return this;
}
public BigDecimal getQtaLinea() {
return qtaLinea;
}
public StatoArtInventarioDTO setQtaLinea(BigDecimal qtaLinea) {
this.qtaLinea = qtaLinea;
return this;
}
public BigDecimal getColliLinea() {
return colliLinea;
}
public StatoArtInventarioDTO setColliLinea(BigDecimal colliLinea) {
this.colliLinea = colliLinea;
return this;
}
public Integer getPedLinea() {
return pedLinea;
}
public StatoArtInventarioDTO setPedLinea(Integer pedLinea) {
this.pedLinea = pedLinea;
return this;
}
public BigDecimal getQtaMag() {
return qtaMag;
}
public StatoArtInventarioDTO setQtaMag(BigDecimal qtaMag) {
this.qtaMag = qtaMag;
return this;
}
public BigDecimal getColliMag() {
return colliMag;
}
public StatoArtInventarioDTO setColliMag(BigDecimal colliMag) {
this.colliMag = colliMag;
return this;
}
public Integer getPedMag() {
if (pedMag == null || pedMag < 0)
return 0;
else
return pedMag;
}
public StatoArtInventarioDTO setPedMag(Integer pedMag) {
this.pedMag = pedMag;
return this;
}
public Date getDataOrd() {
return dataOrd;
}
public StatoArtInventarioDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public boolean colliArrivoIsLessThenZero(){
return this.colliArrivo.compareTo(BigDecimal.ZERO) <= 0;
}
public boolean colliMagIsLessThenZero(){
return this.colliMag.compareTo(BigDecimal.ZERO) <= 0;
}
}

View File

@@ -3,8 +3,10 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableFloat;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineLavorazioneDTO {
@@ -101,6 +103,7 @@ public class OrdineLavorazioneDTO {
private Object mtbColtToEdit;
private int hrNum;
private List<AvailableClassMerc> availableClassMerc;
private BindableFloat qtaColVersamento = new BindableFloat();
@@ -533,4 +536,37 @@ public class OrdineLavorazioneDTO {
this.descrizioneAttivita = descrizioneAttivita;
return this;
}
public List<AvailableClassMerc> getAvailableClassMerc() {
return availableClassMerc;
}
public OrdineLavorazioneDTO setAvailableClassMerc(List<AvailableClassMerc> availableClassMerc) {
this.availableClassMerc = availableClassMerc;
return this;
}
public static class AvailableClassMerc {
private String codMgrp;
private List<String> codMsgr;
public String getCodMgrp() {
return codMgrp;
}
public AvailableClassMerc setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public List<String> getCodMsgr() {
return codMsgr;
}
public AvailableClassMerc setCodMsgr(List<String> codMsgr) {
this.codMsgr = codMsgr;
return this;
}
}
}

View File

@@ -5,6 +5,7 @@ import android.content.pm.ActivityInfo;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
@@ -46,6 +47,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
@@ -398,24 +400,38 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(canLUBeClosed);
if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
.setOnComplete((resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())
.setQtaCnf(resultDTO.getQtaCnf())
.setQtaTot(resultDTO.getQtaTot())
.setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad());
String codMart = dialogInputQuantityV2DTO.getMtbAart().getCodMart();
String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato();
this.onLoadingStarted();
onComplete.run(pickedQuantityDTO, shouldCloseLU);
})
.setOnAbort(this::onLoadingEnded)
.show(requireActivity().getSupportFragmentManager(), "tag");
checkIfItemIsActive(flagStato, codMart, () -> {
if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
.setOnComplete((resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())
.setQtaCnf(resultDTO.getQtaCnf())
.setQtaTot(resultDTO.getQtaTot())
.setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad());
else this.onLoadingEnded();
onComplete.run(pickedQuantityDTO, shouldCloseLU);
})
.show(requireActivity().getSupportFragmentManager(), "tag");
}, () -> {});
}
private void checkIfItemIsActive(String flagStato, String codMart, Runnable onContinue, Runnable onNegativeClick){
if (flagStato.equalsIgnoreCase("I")) {
DialogSimpleMessageView.makeWarningDialog(
new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))),
null,
onContinue,
onNegativeClick)
.show(getActivity().getSupportFragmentManager(), "tag");
} else {
onContinue.run();
}
}
@Override

View File

@@ -167,8 +167,8 @@ public class RettificaGiacenzeViewModel {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (onComplete != null) onComplete.run();
if (mtbAartList != null && mtbAartList.size() > 0) {
this.dispatchArts(mtbAartList);
if (mtbAartList != null && !mtbAartList.isEmpty()) {
this.dispatchArts(mtbAartList, pickData);
} else {
this.sendError(new NoResultFromBarcodeException(barcodeProd));
}
@@ -189,7 +189,7 @@ public class RettificaGiacenzeViewModel {
.map(x -> (MtbAart) x.getMtbAart())
.toList();
dispatchArts(mtbAarts);
dispatchArts(mtbAarts, null);
}, this::sendError);
}
@@ -199,14 +199,13 @@ public class RettificaGiacenzeViewModel {
mRettificaGiacenzeRESTConsumer.searchArtInt(queryText, listaArts -> {
this.sendOnLoadingEnded();
dispatchArts(listaArts);
dispatchArts(listaArts, null);
if (onComplete != null) onComplete.run();
}, this::sendError);
}
private void dispatchArts(List<MtbAart> artsList) {
private void dispatchArts(List<MtbAart> artsList, PickDataDTO pickData) {
if (artsList == null || artsList.size() == 0) {
this.sendError(new NoArtsFoundException());
return;
@@ -219,7 +218,7 @@ public class RettificaGiacenzeViewModel {
.toList();
if (matchRows.size() != 1) {
dispatchArt(mtbAart, null);
dispatchArt(mtbAart, pickData);
} else {
dispatchRowEdit(matchRows.get(0));
}

View File

@@ -1,17 +1,18 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.ui;
import android.content.Context;
import androidx.databinding.DataBindingUtil;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.databinding.RettificaGiacenzeAutocompleteFornitoreLayoutBinding;
@@ -24,7 +25,7 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
private ArrayList<FornitoreDTO> suggestions;
public AutoCompleteFornitoreAdapter(@NonNull Context context, @NonNull ArrayList<FornitoreDTO> items) {
super(context, 0 , items);
super(context, 0, items);
this.items = items;
this.itemsAll = (ArrayList<FornitoreDTO>) items.clone();
this.suggestions = new ArrayList<>();
@@ -33,7 +34,7 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
@NonNull
@Override
public Filter getFilter() {
return fornitoreFilter;
return new FornitoreFilter(itemsAll);
}
@NonNull
@@ -49,55 +50,53 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
return binding.getRoot();
}
private class FornitoreFilter extends Filter {
private ArrayList<FornitoreDTO> sourceObjects;
private Filter fornitoreFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
if(constraint != null) {
suggestions.clear();
for (FornitoreDTO fornitore : itemsAll) {
String tmpDescr = fornitore.getCodAlis() + " " + fornitore.getDescrizione();
public FornitoreFilter(List<FornitoreDTO> objects) {
if (objects == null) return;
sourceObjects = new ArrayList<>();
if(tmpDescr.toLowerCase().contains(constraint.toString().toLowerCase())){
suggestions.add(fornitore);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
return filterResults;
} else {
return new FilterResults();
synchronized (this) {
sourceObjects.addAll(objects);
}
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults result = new FilterResults();
if (constraint != null) {
suggestions.clear();
for (FornitoreDTO fornitore : sourceObjects) {
String tmpDescr = fornitore.getCodAlis() + " " + fornitore.getDescrizione();
if (tmpDescr.toLowerCase().contains(constraint.toString().toLowerCase())) {
suggestions.add(fornitore);
}
}
result.values = suggestions;
result.count = suggestions.size();
} else {
// add all objects
synchronized (this) {
result.values = sourceObjects;
result.count = sourceObjects.size();
}
}
return result;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
boolean error;
do {
try {
ArrayList<FornitoreDTO> filteredList = (ArrayList<FornitoreDTO>) results.values;
if (results.count > 0) {
clear();
for (FornitoreDTO c : filteredList) {
add(c);
}
notifyDataSetChanged();
}
error = false;
} catch (ConcurrentModificationException ex) {
error = true;
}
} while (error);
if(constraint != null && constraint.length() > 2) {
ArrayList<FornitoreDTO> filtered = (ArrayList<FornitoreDTO>) results.values;
notifyDataSetChanged();
clear();
for (int i = 0, l = filtered.size(); i < l; i++)
add(filtered.get(i));
notifyDataSetInvalidated();
}
}
@@ -105,5 +104,6 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
public CharSequence convertResultToString(Object resultValue) {
return ((FornitoreDTO) resultValue).getCodAlis();
}
};
}
}

View File

@@ -6,8 +6,10 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.SpannableString;
import android.view.Gravity;
import android.widget.Toast;
import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.preference.PreferenceManager;
@@ -68,6 +70,7 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
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_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
@@ -78,6 +81,7 @@ import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUV
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.scan_art.DialogScanArtView;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener {
@@ -99,7 +103,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
public BindableBoolean noItemsToPick = new BindableBoolean(false);
public BindableBoolean noLUPresent = new BindableBoolean(true);
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
public BindableBoolean closeOrderButtonEnabled = new BindableBoolean(false);
private boolean mEnableFakeGiacenza;
private boolean mFlagShowCodForn;
@@ -119,6 +122,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
private final int PICK_UL_REQUEST = 1;
private PopupMenu fabPopupMenu;
public static void startActivity(Context context,
List<SitArtOrdDTO> ordini,
List<OrdineUscitaInevasoDTO> selectedOrders,
@@ -196,13 +201,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
this.initVars();
this.initBarcodeReader();
this.initFab();
this.initRecyclerView();
closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()
|| SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()
|| (this.isOrdTrasf() && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV()))
);
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mEnableFakeGiacenza = SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza();
@@ -223,17 +224,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
mGestioneCol, mSegnoCol, mDefaultCausaleUL,
mEnableQuantityReset,
useQtaOrd);
}
private boolean isOrdTrasf() {
return mTestateOrdini != null && !mTestateOrdini.isEmpty() && Stream.of(mTestateOrdini)
.map(OrdineUscitaInevasoDTO::isOrdTrasf)
.withoutNulls()
.distinctBy(x -> x)
.findFirst()
.get();
}
@Override
@@ -271,6 +262,48 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
BarcodeManager.enable();
}
private void initFab() {
fabPopupMenu = new PopupMenu(this,
this.mBindings.spedizioneOrdineInevasoFab, (Gravity.END | Gravity.BOTTOM),
androidx.appcompat.R.attr.popupMenuStyle,
com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.spedizione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
boolean isCloseOrderEnabled = SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()
|| SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()
|| (mViewmodel.isOrdTrasf() && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV()));
if (!isCloseOrderEnabled) {
fabPopupMenu.getMenu().removeItem(R.id.close_order);
}
if(!SettingsManager.iDB().isFlagTracciamentoImballiScaricoEnabled())
fabPopupMenu.getMenu().removeItem(R.id.track_packaging);
fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.close_order) {
closeOrder();
return true;
} else if (itemId == R.id.show_created_ul) {
showCreatedUL();
return true;
} else if (itemId == R.id.track_packaging) {
trackPackaging();
return true;
} else if (itemId == R.id.create_ul) {
createNewUL();
return true;
}
return false;
});
}
private void initRecyclerView() {
this.mViewmodel.getPickingList().observe(this, updatedData -> {
this.mSpedizioneMutableData.clear();
@@ -383,7 +416,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null;
if (mtbColrToDispatch != null) {
if(!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
if (!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
if (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getCodJcom())) {
@@ -642,13 +675,18 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
return sortedList;
}
public void showFabMenu() {
fabPopupMenu.show();
}
private String getCommessa(String codJcom) {
var commessaMagazzino = SettingsManager.iDB().getCommessaMagazzino();
if(UtilityString.isNullOrEmpty(commessaMagazzino)) {
if (UtilityString.isNullOrEmpty(commessaMagazzino)) {
return UtilityString.isNull(codJcom, "Magazzino").toUpperCase();
} else {
if(commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null)
if (commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null)
return "Magazzino".toUpperCase();
else
return codJcom.toUpperCase();
@@ -698,7 +736,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
public void createNewUL() {
this.mBindings.spedizioneFab.close(true);
this.fabPopupMenu.dismiss();
this.onLoadingStarted();
@@ -707,8 +745,23 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
});
}
public void trackPackaging() {
this.fabPopupMenu.dismiss();
DialogTracciamentoImballiView.newInstance(imballiData -> {
if (imballiData != null && !imballiData.isEmpty()) {
DialogAskVettoreView.newInstance(mViewmodel.getDefaultVettore(), vettoreData -> {
mViewmodel.registraImballi(vettoreData, imballiData);
})
.show(getSupportFragmentManager(), DialogAskVettoreView.class.getName());
}
}).show(getSupportFragmentManager(), DialogTracciamentoImballiView.class.getName());
}
public void showCreatedUL() {
this.mBindings.spedizioneFab.close(true);
this.fabPopupMenu.dismiss();
ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts();
@@ -718,7 +771,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
public void closeOrder() {
this.mBindings.spedizioneFab.close(true);
this.fabPopupMenu.dismiss();
this.mViewmodel.closeOrder();
}
@@ -727,7 +780,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
public void onLUOpened(MtbColt mtbColt) {
this.addExtraItemsEnabled.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
noLUPresent.set(false);
closeOrderButtonEnabled.set(false);
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
@@ -739,7 +791,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
this.addExtraItemsEnabled.set(false);
noLUPresent.set(true);
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose());
if (this.mShouldCloseActivity) super.onBackPressed();
}
@@ -776,7 +827,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
R.string.button_ignore_print,
onComplete)
.show(getSupportFragmentManager(), "tag");
;
}
@Override
@@ -853,7 +903,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setPartitaMag(partitaMag)
.setDataScad(dataScad)
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagOverflowQuantityWarning())
.setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagSpedizioneOverflowQuantityWarning())
.setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)

View File

@@ -9,6 +9,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsu
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@@ -34,7 +35,8 @@ public class SpedizioneModule {
DocumentRESTConsumer documentRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer) {
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
ImballiRESTConsumer imballiRESTConsumer) {
return new SpedizioneViewModel(articoloRESTConsumer,
barcodeRESTConsumer,
colliDataRecoverService,
@@ -45,7 +47,8 @@ public class SpedizioneModule {
documentRESTConsumer,
colliSpedizioneRESTConsumer,
colliLavorazioneRESTConsumer,
magazzinoAutomaticoRESTConsumer);
magazzinoAutomaticoRESTConsumer,
imballiRESTConsumer);
}
}

View File

@@ -3,16 +3,16 @@ package it.integry.integrywmsnative.gest.spedizione;
import androidx.databinding.ObservableArrayList;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.NotImplementedException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.inject.Inject;
@@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.VtbVett;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
@@ -51,6 +52,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsu
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@@ -61,6 +63,7 @@ import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.rest.model.imballi.ImballoQuantityDTO;
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.rest.model.magazzino_automatico.MagazzinoAutomaticoPickOrderRequestDTO;
@@ -86,6 +89,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadExceptio
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO;
public class SpedizioneViewModel {
@@ -101,6 +105,7 @@ public class SpedizioneViewModel {
private String mDefaultCodMdep = null;
private final List<FiltroOrdineDTO> mDefaultFiltroOrdine = new ArrayList<>();
private Integer mDefaultCausaleOfUL = null;
private VtbVett mDefaultVettore = null;
private boolean mEnableGiacenza;
private boolean mEnableCheckPartitaMag;
@@ -124,13 +129,24 @@ public class SpedizioneViewModel {
private final DocumentRESTConsumer mDocumentRESTConsumer;
private final ColliSpedizioneRESTConsumer mColliSpedizioneRESTConsumer;
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
private final ImballiRESTConsumer mImballiRESTConsumer;
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
@Inject
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, DocumentRESTConsumer documentRESTConsumer, ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
ColliDataRecoverService colliDataRecoverService,
OrdiniRESTConsumer ordiniRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
DocumentRESTConsumer documentRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
ImballiRESTConsumer imballiRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliDataRecoverService = colliDataRecoverService;
@@ -142,6 +158,7 @@ public class SpedizioneViewModel {
this.mColliSpedizioneRESTConsumer = colliSpedizioneRESTConsumer;
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
this.mImballiRESTConsumer = imballiRESTConsumer;
}
@@ -159,10 +176,6 @@ public class SpedizioneViewModel {
this.mEnableQuantityReset = enableQuantityReset;
this.mUseQtaOrd = useQtaOrd;
if (testateOrdini != null && testateOrdini.size() > 0) {
this.mIsOrdTrasf = Stream.of(testateOrdini).map(OrdineUscitaInevasoDTO::isOrdTrasf).withoutNulls().distinctBy(x -> x).findFirst().get();
}
if (enableGiacenza) {
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
this.mPickingList.postValue(pickingObjectList);
@@ -183,38 +196,67 @@ public class SpedizioneViewModel {
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
List<String> codMarts = Stream.of(sitArtOrdList).map(x -> x.getCodMart().trim()).toList();
List<String> codMarts = sitArtOrdList.stream()
.map(x -> x.getCodMart().trim())
.collect(Collectors.toList());
this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> {
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList).map(sitArtOrdDTO -> {
MtbAart mtbAart = null;
List<PickingObjectDTO> pickingList = sitArtOrdList.stream()
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;
for (MtbAart mtbAartItem : listMtbAarts) {
if (mtbAartItem.getCodMart().trim().equalsIgnoreCase(sitArtOrdDTO.getCodMart().trim())) {
mtbAart = mtbAartItem;
break;
}
}
for (MtbAart mtbAartItem : listMtbAarts) {
if (mtbAartItem.getCodMart().trim().equalsIgnoreCase(sitArtOrdDTO.getCodMart().trim())) {
mtbAart = mtbAartItem;
break;
}
}
return new PickingObjectDTO().setSitArtOrdDTO(sitArtOrdDTO).setMtbAart(mtbAart);
}).toList();
return new PickingObjectDTO().setSitArtOrdDTO(sitArtOrdDTO).setMtbAart(mtbAart);
}).collect(Collectors.toList());
onComplete.run(pickingList);
}, this::sendError);
}
private void initDefaultVars() {
if (this.mTestateOrdini != null && this.mTestateOrdini.size() > 0) {
if (this.mTestateOrdini != null && !this.mTestateOrdini.isEmpty()) {
List<String> foundRagSoc = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getRagSocOrd).distinctBy(x -> x).toList();
this.mIsOrdTrasf = mTestateOrdini.stream()
.map(OrdineUscitaInevasoDTO::isOrdTrasf)
.filter(Objects::nonNull)
.distinct()
.findFirst()
.orElse(false);
if (foundRagSoc != null && foundRagSoc.size() == 1) {
List<String> foundRagSoc = mTestateOrdini.stream()
.map(OrdineUscitaInevasoDTO::getRagSocOrd)
.distinct()
.collect(Collectors.toList());
if (foundRagSoc.size() == 1) {
mDefaultRagSocOfUL = foundRagSoc.get(0);
}
List<VtbVett> foundVett = mTestateOrdini.stream()
.filter(x -> !UtilityString.isNullOrEmpty(x.getCodVvet()))
.map(x -> new VtbVett()
.setCodVvet(x.getCodVvet())
.setRagSoc(x.getDescrizioneVettore()))
.distinct()
.collect(Collectors.toList());
if (foundVett.size() == 1) {
mDefaultVettore = foundVett.get(0);
}
if (mDefaultGestioneOfUL == null) {
//Definizione della gestione collo di default
List<GestioneEnum> foundGestioni = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getGestioneEnum).withoutNulls().distinct().toList();
List<GestioneEnum> foundGestioni = mTestateOrdini.stream()
.map(OrdineUscitaInevasoDTO::getGestioneEnum)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (foundGestioni.size() > 1) {
return;
@@ -254,6 +296,11 @@ public class SpedizioneViewModel {
}
}
public boolean isOrdTrasf() {
return mIsOrdTrasf;
}
private void onOrderClosedPrintingDone() {
if (this.mIsOrdTrasf && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV())) {
this.sendCreateDocsRequest();
@@ -492,7 +539,8 @@ public class SpedizioneViewModel {
}
} else {
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep()
.stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) {
@@ -537,7 +585,7 @@ public class SpedizioneViewModel {
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) {
@@ -560,7 +608,7 @@ public class SpedizioneViewModel {
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
if (mtbColt.getSegno() != -1) {
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) {
@@ -633,26 +681,28 @@ public class SpedizioneViewModel {
}
private void executeMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
var magazzinoAutomaticoPickableArts = Stream.of(Objects.requireNonNull(this.mPickingList.getValue()))
.filter(x -> Stream.of(x.getMtbColts()).anyMatch(y -> y.getPosizione() != null && y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())) &&
var magazzinoAutomaticoPickableArts = Objects.requireNonNull(this.mPickingList.getValue())
.stream()
.filter(x -> x.getMtbColts().stream()
.anyMatch(y -> y.getPosizione() != null && y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())) &&
x.getSitArtOrdDTO() != null &&
UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaOrd(), BigDecimal.ZERO))
.toList();
.collect(Collectors.toList());
var mtbAarts = Stream.of(magazzinoAutomaticoPickableArts)
var mtbAarts = magazzinoAutomaticoPickableArts.stream()
.map(PickingObjectDTO::getMtbAart)
.toList();
.collect(Collectors.toList());
this.sendChooseArtsRequest(mtbAarts, selectedArts -> {
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = Stream.of(this.mTestateOrdini)
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = this.mTestateOrdini.stream()
.map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd())
.setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null))
.toList();
.collect(Collectors.toList());
final List<MagazzinoAutomaticoPickItemRequestDTO> magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>();
for (MtbAart selectedArt : selectedArts) {
final PickingObjectDTO pickingObjectDTO = Stream.of(magazzinoAutomaticoPickableArts)
final PickingObjectDTO pickingObjectDTO = magazzinoAutomaticoPickableArts.stream()
.filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(selectedArt.getCodMart()))
.findFirst()
.orElse(null);
@@ -682,10 +732,10 @@ public class SpedizioneViewModel {
}
public void executeEmptyMagazzinoAutomaticoRequest(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = Stream.of(this.mTestateOrdini)
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = this.mTestateOrdini.stream()
.map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd())
.setDataCons(UtilityDate.toLocalDate(x.getDataConsD())))
.toList();
.collect(Collectors.toList());
var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPickItemsRequestDTO()
.setShouldCreateUDS(true)
@@ -703,21 +753,22 @@ public class SpedizioneViewModel {
if (mEnableGiacenza) {
Stream.of(pickingList).forEach(pickingObjectDTO -> {
if (Stream.of(pickingObjectDTO.getMtbColts())
.anyMatch(x ->
Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
pickingList
.forEach(pickingObjectDTO -> {
if (pickingObjectDTO.getMtbColts().stream()
.anyMatch(x ->
Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
matchPickingObject.add(pickingObjectDTO);
}
});
matchPickingObject.add(pickingObjectDTO);
}
});
}
//Controllo se nel collo ho degli articoli che corrispondono per codice / taglia / colore / lotto
Stream.of(scannedUL.getMtbColr()).filter(x -> !UtilityString.isNullOrEmpty(x.getCodMart())).forEach(x -> {
scannedUL.getMtbColr().stream().filter(x -> !UtilityString.isNullOrEmpty(x.getCodMart())).forEach(x -> {
for (PickingObjectDTO pickingObject : pickingList) {
//Da verificare se il controllo per partita deve essere sempre effettuato
@@ -736,7 +787,7 @@ public class SpedizioneViewModel {
ObservableArrayList<MtbColr> cloneMtbColrs = (ObservableArrayList<MtbColr>) cloneMtbColt.getMtbColr().clone();
Stream.of(cloneMtbColt.getMtbColr())
cloneMtbColt.getMtbColr().stream()
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
@@ -760,12 +811,12 @@ public class SpedizioneViewModel {
private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, Runnable onComplete) {
final List<PickingObjectDTO> pickingList = mPickingList.getValue();
List<PickingObjectDTO> matchPickingObject = Stream.of(pickingList)
List<PickingObjectDTO> matchPickingObject = pickingList.stream()
.filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitArtOrdDTO().getCodMart()))
.filter(x -> x.getSitArtOrdDTO().isFlagEnableScanArt()).filter(x -> {
MtbPartitaMag mtbPartitaMag = pickData != null && pickData.getManualPickDTO() != null && pickData.getManualPickDTO().getMtbPartitaMag() != null ? pickData.getManualPickDTO().getMtbPartitaMag() : null;
return !mEnableCheckPartitaMag || (mtbPartitaMag != null && UtilityString.equalsIgnoreCase(x.getSitArtOrdDTO().getPartitaMag(), mtbPartitaMag.getPartitaMag()));
}).toList();
}).collect(Collectors.toList());
for (PickingObjectDTO pickingObjectDTO : matchPickingObject) {
pickingObjectDTO.setTempPickData(pickData);
@@ -787,7 +838,7 @@ public class SpedizioneViewModel {
List<PickingObjectDTO> pickingList = mPickingList.getValue();
Stream.of(pickingList).filter(x -> x != matchedItem).forEach(x -> x.setHidden(true));
pickingList.stream().filter(x -> x != matchedItem).forEach(x -> x.setHidden(true));
this.sendFilterApplied(null);
this.getPickingList().postValue(pickingList);
@@ -828,14 +879,14 @@ public class SpedizioneViewModel {
List<MtbColr> scannedMtbColrs = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr();
List<MtbPartitaMag> availableBatchLots = Stream.of(scannedMtbColrs)
List<MtbPartitaMag> availableBatchLots = scannedMtbColrs.stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
(x.getPartitaMag() == null || x.getMtbPartitaMag().getDataScad() == null ||
UtilityDate.getNow().isBefore(x.getMtbPartitaMag().getDataScad())))
.distinctBy(MtbColr::getPartitaMag)
.map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag())
.toList();
.distinct()
.collect(Collectors.toList());
//Controllo se una delle partite combacia con quella che voglio evadere
// if (refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) {
@@ -854,24 +905,30 @@ public class SpedizioneViewModel {
List<MtbPartitaMag> tmp = new ArrayList<>();
if (Stream.of(availableBatchLots).anyMatch(x -> x.getDataScad() != null)) {
tmp.addAll(Stream.of(availableBatchLots)
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() != null)) {
tmp.addAll(availableBatchLots.stream()
.filter(x -> x.getDataScad() != null && UtilityDate.getNow().isBefore(x.getDataScad()))
.sortBy(MtbPartitaMag::getDataScad).
toList());
.sorted(Comparator.comparing(MtbPartitaMag::getDataScad))
.collect(Collectors.toList()));
}
if (Stream.of(availableBatchLots).anyMatch(x -> x.getDataScad() == null)) {
tmp.addAll(Stream.of(availableBatchLots)
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() == null)) {
tmp.addAll(availableBatchLots.stream()
.filter(x -> x.getDataScad() == null)
.sortBy(x -> UtilityString.isNull(x.getPartitaMag(), "")).toList());
.sorted(Comparator.comparing(MtbPartitaMag::getPartitaMag))
.collect(Collectors.toList()));
}
this.sendBatchLotSelectionRequest(tmp, selected -> {
this.sendOnLoadingEnded();
if (selected != null) {
MtbColr scannedMtbColr = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr()).filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && ((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag())) || (x.getPartitaMag() == null && selected.getPartitaMag() == null))).toList().get(0);
MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag()))
|| (x.getPartitaMag() == null && selected.getPartitaMag() == null)))
.findFirst()
.orElse(null);
dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged);
}
@@ -894,10 +951,11 @@ public class SpedizioneViewModel {
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal();
Stream.of(pickingObjectDTO.getWithdrawMtbColrs()).forEach(row -> {
numCnfWithdrawRows.addAndGet(row.getNumCnf());
qtaColWithdrawRows.addAndGet(row.getQtaCol());
});
pickingObjectDTO.getWithdrawMtbColrs().stream()
.forEach(row -> {
numCnfWithdrawRows.addAndGet(row.getNumCnf());
qtaColWithdrawRows.addAndGet(row.getQtaCol());
});
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(numCnfWithdrawRows.getBigDecimalValue());
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(qtaColWithdrawRows.getBigDecimalValue());
@@ -1158,7 +1216,10 @@ public class SpedizioneViewModel {
public void dispatchRowEdit(final MtbColr mtbColrToEdit) {
this.sendOnLoadingStarted();
Optional<PickingObjectDTO> optionalPickingObjectDTO = Stream.of(this.mPickingList.getValue()).filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToEdit)).findSingle();
Optional<PickingObjectDTO> optionalPickingObjectDTO =
this.mPickingList.getValue().stream()
.filter(x -> x.getWithdrawMtbColrs().stream().anyMatch(y -> y == mtbColrToEdit))
.findFirst();
PickingObjectDTO pickingObjectDTO = null;
@@ -1187,10 +1248,11 @@ public class SpedizioneViewModel {
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(0);
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(0);
Stream.of(finalPickingObjectDTO.getWithdrawMtbColrs()).forEach(row -> {
numCnfWithdrawRows.addAndGet(row.getNumCnf());
qtaColWithdrawRows.addAndGet(row.getQtaCol());
});
finalPickingObjectDTO.getWithdrawMtbColrs()
.forEach(row -> {
numCnfWithdrawRows.addAndGet(row.getNumCnf());
qtaColWithdrawRows.addAndGet(row.getQtaCol());
});
numCnfDaEvadere = totalNumCnfOrd.subtract(numCnfWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getNumCnf());
qtaDaEvadere = totalQtaOrd.subtract(qtaColWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getQtaCol());
@@ -1215,7 +1277,13 @@ public class SpedizioneViewModel {
if (mtbColrRifs != null && mtbColrRifs.size() > 0) {
//TODO: Da capire se è necessario controllare anche il cod_jcom
Optional<MtbColr> optionalMtbColr = Stream.of(mtbColrRifs).filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag())).findSingle();
Optional<MtbColr> optionalMtbColr =
mtbColrRifs.stream()
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag()))
.findFirst();
mtbColrRif = optionalMtbColr.isPresent() ? optionalMtbColr.get() : null;
}
@@ -1270,15 +1338,16 @@ public class SpedizioneViewModel {
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
int causaleCollo = 0;
if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1) causaleCollo = 1;
if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1)
causaleCollo = 1;
final List<CreateUDSRequestOrderDTO> orders = Stream.of(this.mTestateOrdini)
final List<CreateUDSRequestOrderDTO> orders = this.mTestateOrdini.stream()
.map(x -> new CreateUDSRequestOrderDTO()
.setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null)
.setDataOrd(UtilityDate.toLocalDate(x.getDataOrdD()))
.setGestione(x.getGestione())
.setNumOrd(x.getNumOrd()))
.toList();
.collect(Collectors.toList());
final CreateUDSRequestDTO createUDSRequestDTO = new CreateUDSRequestDTO()
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
@@ -1407,9 +1476,10 @@ public class SpedizioneViewModel {
.setQtaCnf(savedMtbColr.getQtaCnf())
.setQtaCol(savedMtbColr.getQtaCol());
Optional<PickingObjectDTO> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
.filter(x -> Stream.of(x.getWithdrawMtbColrs())
.anyMatch(y -> y == mtbColrToUpdate)).findSingle();
Optional<PickingObjectDTO> pickingObjectDTO = this.mPickingList.getValue().stream()
.filter(x -> x.getWithdrawMtbColrs().stream()
.anyMatch(y -> y == mtbColrToUpdate))
.findFirst();
if (pickingObjectDTO.isPresent()) {
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
@@ -1437,9 +1507,9 @@ public class SpedizioneViewModel {
.setMtbColrToDelete(mtbColrToDelete);
this.mColliScaricoRESTConsumer.deleteUDSRow(deleteUDSRowRequestoDTO, () -> {
Optional<PickingObjectDTO> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete))
.findSingle();
Optional<PickingObjectDTO> pickingObjectDTO = this.mPickingList.getValue().stream()
.filter(x -> x.getWithdrawMtbColrs().stream().anyMatch(y -> y == mtbColrToDelete))
.findFirst();
if (pickingObjectDTO.isPresent()) {
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete);
@@ -1485,7 +1555,7 @@ public class SpedizioneViewModel {
positionedMtbColts -> {
this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> {
Stream.of(positionedMtbColts)
positionedMtbColts.stream()
.filter(x -> !this.mColliRegistrati.contains(x))
.forEach(x -> this.mColliRegistrati.add(x));
@@ -1514,7 +1584,8 @@ public class SpedizioneViewModel {
clonedLuToClose.setMtbColr(null);
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
if(mTestateOrdini != null && !mTestateOrdini.isEmpty()) codMdep = mTestateOrdini.get(0).getCodMdep();
if (mTestateOrdini != null && !mTestateOrdini.isEmpty())
codMdep = mTestateOrdini.get(0).getCodMdep();
var closeUDSRequestDto = new CloseUDSRequestDTO()
.setMtbColt(clonedLuToClose)
@@ -1716,7 +1787,7 @@ public class SpedizioneViewModel {
private void postCloseOperations(List<MtbColt> mtbColtList) {
if (mTestateOrdini != null) {
for (MtbColt mtbColt : mtbColtList) {
Stream.of(mTestateOrdini)
mTestateOrdini.stream()
.filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum())
.forEach(x -> x.setExistColloBoolean(true));
}
@@ -1735,7 +1806,17 @@ public class SpedizioneViewModel {
if (pickingObjectDTO.getMtbColts() != null) {
Optional<MtbColr> optionalMtbColrReference = Stream.of(pickingObjectDTO.getMtbColts()).filter(y -> withdrawMtbColr.getRefMtbColr() != null && withdrawMtbColr.getRefMtbColr().getNumCollo().equals(y.getNumCollo()) && withdrawMtbColr.getRefMtbColr().getDataColloD().equals(y.getDataColloD()) && withdrawMtbColr.getRefMtbColr().getSerCollo().equals(y.getSerCollo()) && withdrawMtbColr.getRefMtbColr().getGestioneEnum().equals(y.getGestioneEnum()) && UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodMart(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodMart() : null) && UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodTagl(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodTagl() : null) && UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodCol(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodCol() : null)).map(y -> y.getMtbColr().get(0)).findFirst();
Optional<MtbColr> optionalMtbColrReference = pickingObjectDTO.getMtbColts().stream()
.filter(y -> withdrawMtbColr.getRefMtbColr() != null &&
withdrawMtbColr.getRefMtbColr().getNumCollo().equals(y.getNumCollo()) &&
withdrawMtbColr.getRefMtbColr().getDataColloD().equals(y.getDataColloD()) &&
withdrawMtbColr.getRefMtbColr().getSerCollo().equals(y.getSerCollo()) &&
withdrawMtbColr.getRefMtbColr().getGestioneEnum().equals(y.getGestioneEnum()) &&
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodMart(), y.getMtbColr() != null && !y.getMtbColr().isEmpty() ? y.getMtbColr().get(0).getCodMart() : null) &&
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodTagl(), y.getMtbColr() != null && !y.getMtbColr().isEmpty() ? y.getMtbColr().get(0).getCodTagl() : null) &&
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodCol(), y.getMtbColr() != null && !y.getMtbColr().isEmpty() ? y.getMtbColr().get(0).getCodCol() : null))
.map(y -> y.getMtbColr().get(0))
.findFirst();
if (optionalMtbColrReference.isPresent()) {
@@ -1783,11 +1864,14 @@ public class SpedizioneViewModel {
onOrderClosedPrintingDone();
return;
}
List<DtbOrdt> closedOrders = Stream.of(this.mTestateOrdini).map(ord -> {
DtbOrdt ordV = new DtbOrdt();
ordV.setDataOrd(ord.getDataOrdS()).setNumOrd(ord.getNumOrd()).setGestione(ord.getGestione()).setCodAnag(ord.getCodAnagOrd());
return ordV;
}).toList();
List<DtbOrdt> closedOrders = this.mTestateOrdini.stream()
.map(ord -> new DtbOrdt()
.setDataOrd(ord.getDataOrdS())
.setNumOrd(ord.getNumOrd())
.setGestione(ord.getGestione())
.setCodAnag(ord.getCodAnagOrd())
)
.collect(Collectors.toList());
dto.setPrintList(closedOrders);
printClosedOrders(dto, this::onOrderClosedPrintingDone, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded));
@@ -1798,6 +1882,23 @@ public class SpedizioneViewModel {
}
public void registraImballi(VtbVett vettore, List<TracciamentoImballoDTO> imballi) {
this.sendOnLoadingStarted();
var inputData = imballi.stream()
.map(x -> new ImballoQuantityDTO()
.setQta(x.getQta().get())
.setCodMart(x.getCodMart().get()))
.collect(Collectors.toList());
mImballiRESTConsumer.registraScarico(
vettore != null ? vettore.getCodVvet() : null, inputData,
() -> {
this.sendOnLoadingEnded();
}, this::sendError);
}
public MutableLiveData<List<PickingObjectDTO>> getPickingList() {
return mPickingList;
}
@@ -1806,11 +1907,24 @@ public class SpedizioneViewModel {
return (ArrayList<MtbColt>) this.mColliRegistrati;
}
void createDocs() {
public VtbVett getDefaultVettore() {
return mDefaultVettore;
}
void createDocs() {
var loadCollidto = new LoadColliDTO();
var codAnag = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getCodAnagOrd).withoutNulls().distinctBy(x -> x).findFirst().get();
var codVdes = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getCodVdes).withoutNulls().distinctBy(x -> x).findFirst().get();
var codAnag = mTestateOrdini.stream().map(OrdineUscitaInevasoDTO::getCodAnagOrd)
.filter(Objects::nonNull)
.distinct()
.findFirst()
.get();
var codVdes = mTestateOrdini.stream().map(OrdineUscitaInevasoDTO::getCodVdes)
.filter(Objects::nonNull)
.distinct()
.findFirst()
.get();
loadCollidto.setColli(getCreatedMtbColts());
loadCollidto.setCodDtip(SettingsManager.iDB().getCodDtipOrdTrasfV());

View File

@@ -76,6 +76,7 @@ public class DialogRowInfoProdFabbisognoLineeProdView extends BaseDialogRowInfoV
this.mViewModel.init(
sitArtOrdDTO.getCodMart(),
sitArtOrdDTO.getCodMdep(),
(String) sitArtOrdDTO.getExtraInfo().get("ordini"),
(Date) sitArtOrdDTO.getExtraInfo().get("dataInizio"),
(Date) sitArtOrdDTO.getExtraInfo().get("dataFine"));
}

View File

@@ -23,10 +23,10 @@ public class DialogRowInfoProdFabbisognoLineeProdViewModel {
}
public void init(String codMart, String codMdep, Date startDate, Date endDate) {
public void init(String codMart, String codMdep, String ordni, Date startDate, Date endDate) {
this.sendOnLoadingStarted();
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(codMart, startDate, endDate, codMdep, fabbisognoList -> {
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(codMart, ordni, startDate, endDate, codMdep, fabbisognoList -> {
this.mFabbisognoList.postValue(fabbisognoList);
this.sendOnLoadingEnded();
}, this::sendError);

View File

@@ -189,15 +189,7 @@ public class VersamentoMerceViewModel {
} else {
if (mtbColt == null) {
this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(sscc, GestioneEnum.LAVORAZIONE, mtbColtAnonimo -> {
onComplete.run();
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) {
pickMerceULtoUL(mtbColtAnonimo, onComplete);
} else this.sendError(new InvalidCodMdepException());
pickMerceULtoUL(mtbColtAnonimo, onComplete);
}, this::sendError);
} else {
@@ -228,7 +220,7 @@ public class VersamentoMerceViewModel {
.filter(x -> x.getQtaCol().floatValue() > 0)
.toList();
if (mtbColrsToPick.size() == 0) {
if (mtbColrsToPick.isEmpty()) {
this.sendError(new NoArtsInLUException());
return;
}

View File

@@ -0,0 +1,121 @@
package it.integry.integrywmsnative.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.databinding.ArrayAdapterTwoLinesItemBinding;
public class SimpleAutoCompleteTwoLinesDropdownAdapter<T> extends ArrayAdapter<SimpleAutoCompleteTwoLinesDropdownListModel<T>> {
private List<SimpleAutoCompleteTwoLinesDropdownListModel<T>> mObjects;
public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, int resource) {
super(context, resource);
}
public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull SimpleAutoCompleteTwoLinesDropdownListModel<T>[] objects) {
super(context, R.layout.array_adapter_two_lines_item, objects);
mObjects = Arrays.asList(objects);
}
public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull List<SimpleAutoCompleteTwoLinesDropdownListModel<T>> objects) {
super(context, R.layout.array_adapter_two_lines_item, objects);
mObjects = objects;
}
@NonNull
@Override
public Filter getFilter() {
return new StringFilter(mObjects);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
SimpleAutoCompleteTwoLinesDropdownListModel<T> item = mObjects.get(position);
// Check if an existing view is being reused, otherwise inflate the view
ArrayAdapterTwoLinesItemBinding bindings = ArrayAdapterTwoLinesItemBinding.inflate(LayoutInflater.from(getContext()), parent, false);
// if (convertView == null) {
// bindings = ArrayAdapterTwoLinesItemBinding.inflate(LayoutInflater.from(getContext()), parent, false);
// convertView = bindings.getRoot();
// convertView.setTag(bindings);
// } else {
// bindings = (ArrayAdapterTwoLinesItemBinding) convertView.getTag();
// }
// Populate the data into the template view using the data object
bindings.itemTitle.setText(item.getTitle());
bindings.itemDescription.setText(item.getDescription());
return bindings.getRoot();
}
private class StringFilter extends Filter {
private ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>> sourceObjects;
public StringFilter(List<SimpleAutoCompleteTwoLinesDropdownListModel<T>> objects) {
if(objects == null) return;
sourceObjects = new ArrayList<>();
synchronized (this) {
sourceObjects.addAll(objects);
}
}
@Override
protected FilterResults performFiltering(CharSequence chars) {
String filterSeq = chars.toString().toLowerCase();
FilterResults result = new FilterResults();
if (!filterSeq.isEmpty()) {
ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>> filter = new ArrayList<>();
for (SimpleAutoCompleteTwoLinesDropdownListModel<T> object : sourceObjects) {
// the filtering itself:
if (object.getDescription().toLowerCase().contains(filterSeq) ||
object.getTitle().toLowerCase().contains(filterSeq))
filter.add(object);
}
result.count = filter.size();
result.values = filter;
} else {
// add all objects
synchronized (this) {
result.values = sourceObjects;
result.count = sourceObjects.size();
}
}
return result;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// NOTE: this function is *always* called from the UI thread.
if(constraint != null && constraint.length() > 2) {
ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>> filtered = (ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>>) results.values;
notifyDataSetChanged();
clear();
for (int i = 0, l = filtered.size(); i < l; i++)
add(filtered.get(i));
notifyDataSetInvalidated();
}
}
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.integrywmsnative.ui.adapter;
public class SimpleAutoCompleteTwoLinesDropdownListModel<T> {
private String title;
private String description;
private T originalModel;
public String getTitle() {
return title;
}
public SimpleAutoCompleteTwoLinesDropdownListModel<T> setTitle(String title) {
this.title = title;
return this;
}
public String getDescription() {
return description;
}
public SimpleAutoCompleteTwoLinesDropdownListModel<T> setDescription(String description) {
this.description = description;
return this;
}
public T getOriginalModel() {
return originalModel;
}
public SimpleAutoCompleteTwoLinesDropdownListModel<T> setOriginalModel(T originalModel) {
this.originalModel = originalModel;
return this;
}
}

View File

@@ -2,13 +2,14 @@ package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@Module(subcomponents = DialogAskLineaProdComponent.class)
public class DialogAskLineaProdModule {
@Provides
DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel() {
return new DialogAskLineaProdViewModel();
DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
return new DialogAskLineaProdViewModel(barcodeRESTConsumer);
}
}

View File

@@ -21,13 +21,14 @@ 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.databinding.DialogAskLineaProdBinding;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse;
public class DialogAskLineaProdView extends BaseDialogFragment implements DialogAskLineaProdViewModel.Listener {
@Inject
DialogAskLineaProdViewModel mViewModel;
private final RunnableArgs<String> onComplete;
private final RunnableArgs<DialogAskLineaProdResponse> onComplete;
private final Runnable onAbort;
private DialogAskLineaProdBinding mBindings;
@@ -37,11 +38,11 @@ public class DialogAskLineaProdView extends BaseDialogFragment implements Dialog
private int mBarcodeScannerIstanceID;
//Pass here all external parameters
public static DialogAskLineaProdView newInstance(RunnableArgs<String> onComplete, Runnable onAbort) {
public static DialogAskLineaProdView newInstance(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
return new DialogAskLineaProdView(onComplete, onAbort);
}
private DialogAskLineaProdView(RunnableArgs<String> onComplete, Runnable onAbort) {
private DialogAskLineaProdView(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
super();
this.onComplete = onComplete;
this.onAbort = onAbort;
@@ -101,8 +102,8 @@ public class DialogAskLineaProdView extends BaseDialogFragment implements Dialog
};
@Override
public void onProductionLineSelected(String codJfas) {
this.onComplete.run(codJfas);
public void onProductionLineSelected(DialogAskLineaProdResponse response) {
this.onComplete.run(response);
requireActivity().runOnUiThread(this::dismiss);
}

View File

@@ -1,37 +1,86 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidLineaProdBarcodeException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse;
public class DialogAskLineaProdViewModel {
private Listener mListener;
private final BarcodeRESTConsumer barcodeRESTConsumer;
@Inject
public DialogAskLineaProdViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
this.barcodeRESTConsumer = barcodeRESTConsumer;
}
public void processBarcodeDTO(BarcodeScanDTO data, Runnable onComplete) {
if (UtilityBarcode.isEtichettaPosizione(data)) {
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue());
if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) {
this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue()));
onComplete.run();
return;
}
onComplete.run();
this.sendOnProductionLineSelected(foundPosizione.getPosizione());
if (UtilityBarcode.isEtichetta128(data)) {
this.executeEtichettaEan128(data, onComplete);
} else if (UtilityBarcode.isEtichettaPosizione(data)) {
executeEtichettaPosizione(data, onComplete);
} else {
this.sendError(new NoResultFromBarcodeException());
onComplete.run();
}
}
private void executeEtichettaEan128(BarcodeScanDTO data, Runnable onComplete) {
this.barcodeRESTConsumer.decodeEan128(data, ean128Model -> {
if (UtilityString.isNullOrEmpty(ean128Model.Internal2)) {
this.sendError(new InvalidLineaProdBarcodeException("Id lotto non presente"));
onComplete.run();
return;
}
if (UtilityString.isNullOrEmpty(ean128Model.Internal3)) {
this.sendError(new InvalidLineaProdBarcodeException("Fase non presente"));
onComplete.run();
return;
}
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(ean128Model.Internal3);
if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) {
this.sendError(new InvalidLineaProdBarcodeException(ean128Model.Internal3));
onComplete.run();
return;
}
onComplete.run();
this.sendOnProductionLineSelected(
new DialogAskLineaProdResponse(foundPosizione.getPosizione(), Integer.parseInt(ean128Model.Internal2)));
}, this::sendError);
}
private void executeEtichettaPosizione(BarcodeScanDTO data, Runnable onComplete) {
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue());
if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) {
this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue()));
onComplete.run();
return;
}
onComplete.run();
this.sendOnProductionLineSelected(new DialogAskLineaProdResponse(foundPosizione.getPosizione(), null));
}
public DialogAskLineaProdViewModel setListener(Listener listener) {
this.mListener = listener;
return this;
@@ -45,8 +94,8 @@ public class DialogAskLineaProdViewModel {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendOnProductionLineSelected(String codJfas) {
if (this.mListener != null) mListener.onProductionLineSelected(codJfas);
private void sendOnProductionLineSelected(DialogAskLineaProdResponse response) {
if (this.mListener != null) mListener.onProductionLineSelected(response);
}
private void sendError(Exception ex) {
@@ -55,6 +104,7 @@ public class DialogAskLineaProdViewModel {
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onProductionLineSelected(String codJfas);
void onProductionLineSelected(DialogAskLineaProdResponse response);
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto;
public class DialogAskLineaProdResponse {
private String posizione;
private final Integer idLotto;
public DialogAskLineaProdResponse(String posizione, Integer idLotto) {
this.posizione = posizione;
this.idLotto = idLotto;
}
public String getPosizione() {
return posizione;
}
public Integer getIdLotto() {
return idLotto;
}
}

View File

@@ -1,17 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.jetbrains.annotations.NotNull;
@@ -22,10 +19,9 @@ import it.integry.integrywmsnative.databinding.DialogAskShouldVersamentoAutomati
public class DialogAskShouldVersamentoAutomaticoULView extends BaseDialogFragment {
private RunnableArgs<Boolean> mOnDismiss;
private final RunnableArgs<Boolean> mOnDismiss;
private DialogAskShouldVersamentoAutomaticoUlBinding mBindings;
private boolean returnValue = false;
private Context mContext;
public static DialogAskShouldVersamentoAutomaticoULView newInstance(@NotNull RunnableArgs<Boolean> onDismiss) {
return new DialogAskShouldVersamentoAutomaticoULView(onDismiss);
@@ -37,39 +33,32 @@ public class DialogAskShouldVersamentoAutomaticoULView extends BaseDialogFragmen
this.mOnDismiss = onDismiss;
}
@Nullable
@NonNull
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_should_versamento_automatico_ul, container, false);
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogAskShouldVersamentoAutomaticoUlBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
getDialog().setCanceledOnTouchOutside(false);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mBindings.setView(this);
return mBindings.getRoot();
}
setCancelable(false);
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setCancelable(isCancelable())
.setNegativeButton(R.string.no, (dialog, which) -> {
this.mOnDismiss.run(false);
})
.setPositiveButton(R.string.yes, (dialog, which) -> {
this.mOnDismiss.run(true);
})
.create();
if (mOnDismiss != null) {
this.mOnDismiss.run(returnValue);
}
}
public void confirm() {
this.returnValue = true;
dismiss();
}
public void abort() {
this.returnValue = false;
dismiss();
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this);
return alertDialog;
}
}

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
import dagger.Subcomponent;
@Subcomponent
public interface DialogAskVettoreComponent {
@Subcomponent.Factory
interface Factory {
DialogAskVettoreComponent create();
}
void inject(DialogAskVettoreView dialogAskVettoreView);
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
@Module(subcomponents = DialogAskVettoreComponent.class)
public class DialogAskVettoreModule {
@Provides
DialogAskVettoreViewModel providesDialogAskVettoreViewModel(VettoriRESTConsumer vettoriRESTConsumer) {
return new DialogAskVettoreViewModel(vettoriRESTConsumer);
}
}

View File

@@ -0,0 +1,147 @@
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.ListPopupWindow;
import androidx.databinding.ObservableField;
import androidx.databinding.ObservableList;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.jetbrains.annotations.NotNull;
import java.util.Comparator;
import java.util.stream.Collectors;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.VtbVett;
import it.integry.integrywmsnative.databinding.DialogAskVettoreBinding;
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteTwoLinesDropdownAdapter;
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteTwoLinesDropdownListModel;
public class DialogAskVettoreView extends BaseDialogFragment implements DialogAskVettoreViewModel.Listener {
@Inject
DialogAskVettoreViewModel mViewModel;
private ListPopupWindow listPopupWindow;
private DialogAskVettoreBinding mBindings;
private Context mContext;
private final RunnableArgs<VtbVett> onComplete;
public ObservableField<VtbVett> selectedVettore = new ObservableField<>();
//Pass here all external parameters
public static DialogAskVettoreView newInstance(VtbVett preselectedVett, @NotNull RunnableArgs<VtbVett> onComplete) {
return new DialogAskVettoreView(preselectedVett, onComplete);
}
private DialogAskVettoreView(VtbVett preselectedVett, @NotNull RunnableArgs<VtbVett> onComplete) {
super();
this.selectedVettore.set(preselectedVett);
this.onComplete = onComplete;
MainApplication.appComponent
.dialogAskVettoreComponent()
.create()
.inject(this);
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogAskVettoreBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
mBindings.setView(this);
mBindings.setViewmodel(mViewModel);
setCancelable(false);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setNeutralButton(R.string.skip, (dialog, which) -> {
if(this.onComplete != null) this.onComplete.run(null);
})
.setPositiveButton(R.string.confirm, (dialog, which) -> {
if(this.onComplete != null) this.onComplete.run(selectedVettore.get());
})
.setCancelable(isCancelable())
.create();
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this);
return alertDialog;
}
@Override
public void onInit(DialogInterface dialogInterface) {
super.onInit(dialogInterface);
mViewModel
.setListener(this)
.init();
listPopupWindow = new ListPopupWindow(requireActivity());
listPopupWindow.setAnchorView(mBindings.buttonVettore);
mViewModel.getVettoriDisponibili().addOnListChangedCallback(new OnListGeneralChangedCallback() {
@Override
public void onChanged(ObservableList sender) {
var list = mViewModel.getVettoriDisponibili().stream()
.sorted(Comparator.comparing(VtbVett::getCodVvet))
.map(x -> new SimpleAutoCompleteTwoLinesDropdownListModel<VtbVett>()
.setTitle(x.getCodVvet())
.setDescription(x.getRagSoc())
.setOriginalModel(x))
.collect(Collectors.toList());
list.add(0, new SimpleAutoCompleteTwoLinesDropdownListModel<VtbVett>()
.setTitle("")
.setDescription("Nessuna selezione")
.setOriginalModel(null));
requireActivity().runOnUiThread(() -> {
listPopupWindow.setAdapter(new SimpleAutoCompleteTwoLinesDropdownAdapter<>(requireActivity(), list));
listPopupWindow.setOnItemClickListener((parent, view, position, id) -> {
if(position == 0)
selectedVettore.set(null);
else selectedVettore.set(list.get(position).getOriginalModel());
listPopupWindow.dismiss();
});
});
}
});
}
public void togglePopupShow() {
if(this.listPopupWindow.isShowing())
this.listPopupWindow.dismiss();
else
this.listPopupWindow.show();
}
}

View File

@@ -0,0 +1,58 @@
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
import androidx.databinding.ObservableArrayList;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.VtbVett;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
public class DialogAskVettoreViewModel {
private final VettoriRESTConsumer vettoriRESTConsumer;
private final ObservableArrayList<VtbVett> vettoriDisponibili = new ObservableArrayList<>();
private Listener mListener;
public DialogAskVettoreViewModel(VettoriRESTConsumer vettoriRESTConsumer) {
this.vettoriRESTConsumer = vettoriRESTConsumer;
}
public void init() {
this.vettoriRESTConsumer.retrieveRecentlyUsedInOrders(GestioneEnum.VENDITA, recentlyUsedVett -> {
if (recentlyUsedVett == null || recentlyUsedVett.isEmpty())
return;
vettoriDisponibili.addAll(recentlyUsedVett);
}, this::sendError);
}
public ObservableArrayList<VtbVett> getVettoriDisponibili() {
return vettoriDisponibili;
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public DialogAskVettoreViewModel setListener(Listener listener) {
this.mListener = listener;
return this;
}
interface Listener extends ILoadingListener {
void onError(Exception ex);
}
}

View File

@@ -2,14 +2,14 @@ package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
@Module(subcomponents = DialogInfoAggiuntiveLUComponent.class)
public class DialogInfoAggiuntiveLUModule {
@Provides
DialogInfoAggiuntiveLUViewModel providesDialogInfoAggiuntiveLUViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DialogInfoAggiuntiveLUViewModel(magazzinoRESTConsumer);
DialogInfoAggiuntiveLUViewModel providesDialogInfoAggiuntiveLUViewModel(ImballiRESTConsumer imballiRESTConsumer) {
return new DialogInfoAggiuntiveLUViewModel(imballiRESTConsumer);
}
}

View File

@@ -6,6 +6,7 @@ import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import androidx.annotation.NonNull;
@@ -98,19 +99,20 @@ public class DialogInfoAggiuntiveLUView extends BaseDialogFragment implements Di
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this);
alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
return alertDialog;
}
@Override
public void onShow(DialogInterface dialogInterface) {
super.onShow(dialogInterface);
public void onInit(DialogInterface dialogInterface) {
super.onInit(dialogInterface);
this.init();
this.mViewModel.init();
}
private void init() {
if (this.currentMtbColt != null)
this.additionalNotes.set(currentMtbColt.getAnnotazioni());

View File

@@ -2,32 +2,33 @@ package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import androidx.lifecycle.MutableLiveData;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
public class DialogInfoAggiuntiveLUViewModel {
private final MutableLiveData<List<MtbTCol>> tipiCollo = new MutableLiveData<>();
private Listener mListener;
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
private final ImballiRESTConsumer imballiRESTConsumer;
@Inject
public DialogInfoAggiuntiveLUViewModel(MagazzinoRESTConsumer mMagazzinoRESTConsumer) {
this.mMagazzinoRESTConsumer = mMagazzinoRESTConsumer;
public DialogInfoAggiuntiveLUViewModel(ImballiRESTConsumer imballiRESTConsumer) {
this.imballiRESTConsumer = imballiRESTConsumer;
}
public void init() {
this.sendOnLoadingStarted();
mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> {
this.tipiCollo.postValue(tipiCollo);
imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UL, tipiCollo -> {
this.tipiCollo.postValue(tipiCollo == null ? new ArrayList<>() : tipiCollo);
this.sendOnLoadingEnded();
}, this::sendError);
}

View File

@@ -2,15 +2,15 @@ package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
@Module(subcomponents = DialogInputLUProdComponent.class)
public class DialogInputLUProdModule {
@Provides
DialogInputLUProdViewModel providesDialogInputLUProdViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) {
return new DialogInputLUProdViewModel(magazzinoRESTConsumer, mesRESTConsumer);
DialogInputLUProdViewModel providesDialogInputLUProdViewModel(ImballiRESTConsumer imballiRESTConsumer, MesRESTConsumer mesRESTConsumer) {
return new DialogInputLUProdViewModel(imballiRESTConsumer, mesRESTConsumer);
}
}

View File

@@ -12,12 +12,12 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL
import it.integry.integrywmsnative.core.model.JtbFasi;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidGrossWeightQuantityException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidProductionLineException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidNumCnfQuantityException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidProductionLineException;
public class DialogInputLUProdViewModel {
@@ -50,19 +50,19 @@ public class DialogInputLUProdViewModel {
private Listener mListener;
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
private final ImballiRESTConsumer imballiRESTConsumer;
private final MesRESTConsumer mMesRESTConsumer;
@Inject
public DialogInputLUProdViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) {
this.mMagazzinoRESTConsumer = magazzinoRESTConsumer;
public DialogInputLUProdViewModel(ImballiRESTConsumer imballiRESTConsumer, MesRESTConsumer mesRESTConsumer) {
this.imballiRESTConsumer = imballiRESTConsumer;
this.mMesRESTConsumer = mesRESTConsumer;
}
public void init(String codJfasParent) {
new Thread(this::sendOnLoadingStarted).start();
this.sendOnLoadingStarted();
mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> {
imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UL, tipiCollo -> {
this.mTipiColloLiveData.postValue(tipiCollo);
mMesRESTConsumer.getLineeProduzione(codJfasParent, jtbFasi -> {

View File

@@ -24,7 +24,7 @@ import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding;
@@ -35,7 +35,7 @@ public class DialogInputPesoLUView extends BaseDialogFragment {
DialogInputPesoLUViewModel mViewModel;
@Inject
MagazzinoRESTConsumer magazzinoRESTConsumer;
ImballiRESTConsumer imballiRESTConsumer;
private DialogInputPesoLuBinding mBindings;
private Context mContext;
@@ -98,7 +98,7 @@ public class DialogInputPesoLUView extends BaseDialogFragment {
private void init() {
magazzinoRESTConsumer.getTipiCollo(codTcols -> {
imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UL, codTcols -> {
this.codTcolList = codTcols;
List<String> codTcolDescriptions = Stream.of(codTcols)

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