diff --git a/app/build.gradle b/app/build.gradle index a8839861..b576cdb8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 282 - def appVersionName = '1.25.5' + def appVersionCode = 290 + def appVersionName = '1.27.3' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 0557c19c..26d9a408 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -45,6 +45,8 @@ import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisogn import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule; +import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneComponent; +import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneModule; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeComponent; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule; import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent; @@ -61,6 +63,8 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComp import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; +import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent; +import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; @@ -128,7 +132,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DocInterniEditFormModule.class, DialogSelectDocRowsModule.class, DialogAskClienteModule.class, - DialogEditArticoloModule.class + DialogEditArticoloModule.class, + DialogPrintOrderSSCCListModule.class, + ProdLineeProduzioneModule.class }) public interface MainApplicationComponent { @@ -216,6 +222,10 @@ public interface MainApplicationComponent { DialogEditArticoloComponent.Factory dialogEditArticoloComponent(); + DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent(); + + ProdLineeProduzioneComponent.Factory prodLineeProduzioneComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index d446996f..8e1c4763 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -8,6 +8,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoF import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment; +import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneFragment; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; @@ -45,137 +46,145 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setDrawerIcon(R.drawable.ic_black_latest_delivery) .setFragmentFactory(UltimiArriviFornitoreFragment::newInstance)) ).addGroup( - new MenuGroup() - .setGroupText(R.string.checkout) - .setGroupId(R.id.nav_group_spedizione) - .setCodMenu("MM010") + new MenuGroup() + .setGroupText(R.string.checkout) + .setGroupId(R.id.nav_group_spedizione) + .setCodMenu("MM010") + + .addItem(new MenuItem() + .setID(R.id.nav_spedizione) + .setCodMenu("MG046") + .setTitleText(R.string.vendita_title_fragment) + .setTitleIcon(R.drawable.ic_dashboard_spedizione) + .setDrawerIcon(R.drawable.ic_black_upload) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) + + .addItem(new MenuItem() + .setID(R.id.nav_free_picking) + .setCodMenu("MG047") + .setTitleText(R.string.free_picking) + .setTitleIcon(R.drawable.ic_dashboard_picking_libero) + .setDrawerIcon(R.drawable.ic_black_barcode_scanner) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) + + .addItem(new MenuItem() + .setID(R.id.nav_resi_cliente) + .setCodMenu("MG048") + .setTitleText(R.string.fragment_ultime_consegne_cliente_title) + .setTitleIcon(R.drawable.ic_latest_delivery_customer) + .setDrawerIcon(R.drawable.ic_black_latest_delivery) + .setFragmentFactory(UltimeConsegneClienteFragment::newInstance)) + ).addGroup(new MenuGroup() + .setGroupText(R.string.manufacture) + .setGroupId(R.id.nav_group_produzione) + .setCodMenu("MM009") .addItem(new MenuItem() - .setID(R.id.nav_spedizione) - .setCodMenu("MG046") - .setTitleText(R.string.vendita_title_fragment) - .setTitleIcon(R.drawable.ic_dashboard_spedizione) - .setDrawerIcon(R.drawable.ic_black_upload) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) + .setID(R.id.nav_prod_ordine_produzione) + .setCodMenu("MG049") + .setTitleText(R.string.prod_ordine_produzione_title_fragment) + .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione) + .setDrawerIcon(R.drawable.ic_black_external) + .setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance)) .addItem(new MenuItem() - .setID(R.id.nav_free_picking) - .setCodMenu("MG047") - .setTitleText(R.string.free_picking) - .setTitleIcon(R.drawable.ic_dashboard_picking_libero) - .setDrawerIcon(R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) + .setID(R.id.nav_prod_ordine_lavorazione) + .setCodMenu("MG050") + .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))) .addItem(new MenuItem() - .setID(R.id.nav_resi_cliente) - .setCodMenu("MG048") - .setTitleText(R.string.fragment_ultime_consegne_cliente_title) - .setTitleIcon(R.drawable.ic_latest_delivery_customer) - .setDrawerIcon(R.drawable.ic_black_latest_delivery) - .setFragmentFactory(UltimeConsegneClienteFragment::newInstance)) - ).addGroup(new MenuGroup() - .setGroupText(R.string.manufacture) - .setGroupId(R.id.nav_group_produzione) - .setCodMenu("MM009") - - .addItem(new MenuItem() - .setID(R.id.nav_prod_ordine_produzione) - .setCodMenu("MG049") - .setTitleText(R.string.prod_ordine_produzione_title_fragment) - .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance)) - - .addItem(new MenuItem() - .setID(R.id.nav_prod_ordine_lavorazione) - .setCodMenu("MG050") - .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))) - - .addItem(new MenuItem() - .setID(R.id.nav_free_lav_picking) - .setCodMenu("MG051") - .setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking) - .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) - - .addItem(new MenuItem() - .setID(R.id.nav_prod_posizionamento_da_ord) - .setCodMenu("MG052") - .setTitleText(R.string.prod_fabbisogno_linee_prod_title) - .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) - .setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance)) - - .addItem(new MenuItem() - .setID(R.id.nav_prod_versamento_materiale) - .setCodMenu("MG053") - .setTitleText(R.string.prod_versamento_materiale_title_fragment) - .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale) - .setDrawerIcon(R.drawable.ic_black_external) - .setFragmentFactory(ProdVersamentoMaterialeFragment::newInstance)) - - .addItem(new MenuItem() - .setID(R.id.nav_prod_recupero_materiale) - .setCodMenu("MG054") - .setTitleText(R.string.prod_recupero_materiale_title_fragment) - .setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale) - .setDrawerIcon(R.drawable.ic_black_external) - .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce) - .setCodMenu("MG059") - .setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdRientroMerceFragment::newInstance)) - ).addGroup( - new MenuGroup() - .setGroupText(R.string.internal_handling) - .setGroupId(R.id.nav_group_movimentazione_interna) - .setCodMenu("MM011") + .setID(R.id.nav_free_lav_picking) + .setCodMenu("MG051") + .setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking) + .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) .addItem(new MenuItem() - .setID(R.id.nav_versamento_merce) - .setCodMenu("MG055") - .setTitleText(R.string.versamento_merce_fragment_title) - .setTitleIcon(R.drawable.ic_dashboard_versamento_merce) - .setDrawerIcon(R.drawable.ic_black_load_shelf) - .setFragmentFactory(VersamentoMerceFragment::newInstance)) + .setID(R.id.nav_prod_posizionamento_da_ord) + .setCodMenu("MG052") + .setTitleText(R.string.prod_fabbisogno_linee_prod_title) + .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) + .setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance)) .addItem(new MenuItem() - .setID(R.id.nav_rettifica_giacenze) - .setCodMenu("MG056") - .setTitleText(R.string.rettifica_giacenze_fragment_title) - .setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze) - .setDrawerIcon(R.drawable.ic_black_empty_box) - .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) - - - ).addGroup( - new MenuGroup() - .setCodMenu("MM012") - .setGroupText(it.integry.integrywmsnative.R.string.punto_vendita) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita) + .setID(R.id.nav_prod_versamento_materiale) + .setCodMenu("MG053") + .setTitleText(R.string.prod_versamento_materiale_title_fragment) + .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale) + .setDrawerIcon(R.drawable.ic_black_external) + .setFragmentFactory(ProdVersamentoMaterialeFragment::newInstance)) .addItem(new MenuItem() - .setCodMenu("MG057") - .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto) - .setTitleText(it.integry.integrywmsnative.R.string.generate_orders) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) - .setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance)) + .setID(R.id.nav_prod_recupero_materiale) + .setCodMenu("MG054") + .setTitleText(R.string.prod_recupero_materiale_title_fragment) + .setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale) + .setDrawerIcon(R.drawable.ic_black_external) + .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) + .addItem(new MenuItem() - .setCodMenu("MG058") - .setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni) - .setTitleText(it.integry.integrywmsnative.R.string.doc_interni) - .setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni) - .setFragmentFactory(DocInterniFragment::newInstance)) + .setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce) + .setCodMenu("MG059") + .setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title) + .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) + .setFragmentFactory(ProdRientroMerceFragment::newInstance)) + + .addItem(new MenuItem() + .setID(it.integry.integrywmsnative.R.id.nav_prod_linee) + .setCodMenu("MG061") + .setTitleText(it.integry.integrywmsnative.R.string.nav_prod_linee_title) + .setTitleIcon(R.drawable.ic_production_line) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_production_line) + .setFragmentFactory(ProdLineeProduzioneFragment::newInstance)) + ).addGroup( + new MenuGroup() + .setGroupText(R.string.internal_handling) + .setGroupId(R.id.nav_group_movimentazione_interna) + .setCodMenu("MM011") + + .addItem(new MenuItem() + .setID(R.id.nav_versamento_merce) + .setCodMenu("MG055") + .setTitleText(R.string.versamento_merce_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_versamento_merce) + .setDrawerIcon(R.drawable.ic_black_load_shelf) + .setFragmentFactory(VersamentoMerceFragment::newInstance)) + + .addItem(new MenuItem() + .setID(R.id.nav_rettifica_giacenze) + .setCodMenu("MG056") + .setTitleText(R.string.rettifica_giacenze_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze) + .setDrawerIcon(R.drawable.ic_black_empty_box) + .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) + + + ).addGroup( + new MenuGroup() + .setCodMenu("MM012") + .setGroupText(it.integry.integrywmsnative.R.string.punto_vendita) + .setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita) + + .addItem(new MenuItem() + .setCodMenu("MG057") + .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto) + .setTitleText(it.integry.integrywmsnative.R.string.generate_orders) + .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) + .setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance)) + .addItem(new MenuItem() + .setCodMenu("MG058") + .setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni) + .setTitleText(it.integry.integrywmsnative.R.string.doc_interni) + .setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni) + .setFragmentFactory(DocInterniFragment::newInstance)) // .addItem(new MenuItem() // .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) @@ -183,7 +192,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { // .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) // .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) // .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance())) - ); + ); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java b/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java index 85870e11..56556e71 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_cache/DataCache.java @@ -8,7 +8,7 @@ import java.util.UUID; public class DataCache { - private static List dataCacheList = new ArrayList<>(); + private static final List dataCacheList = new ArrayList<>(); public static String addItem(Object item) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index 18107973..c03ca174 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; -@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 8, exportSchema = false) +@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 9, exportSchema = false) @TypeConverters({ DateConverter.class, BigDecimalConverter.class diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java index 2a109a0c..329820ba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java @@ -6,7 +6,10 @@ import androidx.room.ForeignKey; import androidx.room.Index; import androidx.room.PrimaryKey; +import org.json.JSONObject; + import java.math.BigDecimal; +import java.util.HashMap; import it.integry.integrywmsnative.core.utility.UtilityDate; @@ -202,6 +205,14 @@ public class ArticoloGriglia { this.newNoPromo = newNoPromo; } + public String generateSystemNote() { + HashMap pairs = new HashMap<>(); + pairs.put("qta_proposta", String.valueOf(qtaProposta)); + pairs.put("giacenza", String.valueOf(giacenza)); + + return new JSONObject(pairs).toString(); + } + public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { ArticoloOrdine articolo = new ArticoloOrdine(); @@ -222,6 +233,7 @@ public class ArticoloGriglia { articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita())); articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta())); articolo.setNewNoPromo(this.isNewNoPromo()); + articolo.setSystemNote(generateSystemNote()); articolo.setQtaOrd(0); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java index 37fe4fea..bb0f8709 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java @@ -70,6 +70,9 @@ public class ArticoloOrdine { @ColumnInfo(name = "new_no_promo") private boolean newNoPromo; + @ColumnInfo(name = "system_note") + private String systemNote; + @Ignore private int ggScadenza = 0; @@ -266,4 +269,12 @@ public class ArticoloOrdine { this.bgTint = bgTint; return this; } + + public String getSystemNote() { + return systemNote; + } + + public void setSystemNote(String systemNote) { + this.systemNote = systemNote; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ImageViewBinders.java b/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ImageViewBinders.java new file mode 100644 index 00000000..3f135d3c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ImageViewBinders.java @@ -0,0 +1,12 @@ +package it.integry.integrywmsnative.core.di.binders; + +import androidx.appcompat.widget.AppCompatImageView; +import androidx.databinding.BindingAdapter; + +public class ImageViewBinders { + @BindingAdapter("tint") + public static void bindImageViewTint(final AppCompatImageView view, final int color) { + view.setColorFilter(color, android.graphics.PorterDuff.Mode.MULTIPLY); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/report/ReportType.java b/app/src/main/java/it/integry/integrywmsnative/core/report/ReportType.java new file mode 100644 index 00000000..3800524f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/report/ReportType.java @@ -0,0 +1,40 @@ +package it.integry.integrywmsnative.core.report; + +import com.google.gson.annotations.SerializedName; + +public enum ReportType { + + @SerializedName("0") + ETICHETTA_SSCC_ACCETTAZIONE(0), + @SerializedName("1") + 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") + STAMPA_LISTINI_VENDITA(5); + + private final int value; + + ReportType(int value) { + this.value = value; + } + + public static ReportType from(Object value) { + int castValue = (int) value; + for (ReportType b : ReportType.values()) { + if (b.value == castValue) + return b; + } + return null; + } + + + public int getValue() { + return this.value; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java index 23fd711d..384c6d0d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java @@ -6,11 +6,11 @@ import java.util.List; import javax.inject.Singleton; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.StbGestSetup; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.GestSetupDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityLogger; import retrofit2.Call; import retrofit2.Callback; @@ -35,18 +35,18 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer { public void onFailure(Call> call, Throwable t) { Log.e("GestSetup", t.toString()); // UtilityLogger.errorMe(new Exception(t)); - if(onFailed != null) onFailed.run(new Exception(t)); + if (onFailed != null) onFailed.run(new Exception(t)); } }); } public static void getBooleanValue(String gestName, String sectionName, String keySection, RunnableArgs onComplete, RunnableArgs onFailed) { getValueStatic(gestName, sectionName, keySection, value -> { - if(value != null){ + if (value != null) { onComplete.run("S".equalsIgnoreCase(value.value)); } else onComplete.run(false); }, ex -> { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } @@ -62,25 +62,25 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer { public void onFailure(Call> call, Throwable t) { Log.e("PrintCollo", t.toString()); UtilityLogger.errorMe(new Exception(t)); - if(onFailed != null) onFailed.run(new Exception(t)); + if (onFailed != null) onFailed.run(new Exception(t)); } }); } public static void getBooleanValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) { getValueStatic(gestName, sectionName, keySection, codMdep, value -> { - if(value != null){ + if (value != null) { onComplete.run("S".equalsIgnoreCase(value.value)); } else onComplete.run(false); }, ex -> { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } public static void getValues(List stbGestSetupList, RunnableArgs> onComplete, RunnableArgs onFailed) { GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class); - service.getGestSetupValues(stbGestSetupList).enqueue(new Callback>>() { + service.getGestSetupValues(stbGestSetupList).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "GestSetup", onComplete, onFailed); @@ -89,7 +89,7 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer { @Override public void onFailure(Call>> call, Throwable t) { UtilityLogger.errorMe(new Exception(t)); - if(onFailed != null) onFailed.run(new Exception(t)); + if (onFailed != null) onFailed.run(new Exception(t)); } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index c335508e..88a2dea9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -56,7 +56,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { .groupBy(ArticoloDTO::getCodMart) .forEach(entry -> { - if(entry.getValue().size() == 1) { + if (entry.getValue().size() == 1) { listaArticoli.add(entry.getValue().get(0)); } else { for (ArticoloDTO articolo : entry.getValue()) { @@ -93,7 +93,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { int i = 0; for (ArticoloOrdine art : articoli) { i++; - artRows.add(convertArtToDTO(art,i)); + artRows.add(convertArtToDTO(art, i)); } ordineDTO.setChiaveGriglia(griglia.getCodAlis()); @@ -109,9 +109,9 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { .enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { - if (response.body() != null && response.body().size() > 0){ - analyzeListOfAnswers(response, "getArticoliListino", dtoList-> { - if (dtoList.size() > 0){ + if (response.body() != null && response.body().size() > 0) { + analyzeListOfAnswers(response, "getArticoliListino", dtoList -> { + if (dtoList.size() > 0) { DtbOrdt dto = dtoList.get(0); ordine.setTransmitted(true); ordine.setTransmissionDate(UtilityDate.getDateInstance()); @@ -120,7 +120,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { ordine.setCodMdep(dto.getCodMdep()); ordine.setNumOrd(dto.getNumOrd()); onSuccess.run(ordine); - }else{ + } else { onFailed.run(new Exception("Nessun ordine generato")); } }, onFailed); @@ -128,7 +128,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { } @Override - public void onFailure(Call>>call, Throwable t) { + public void onFailure(Call>> call, Throwable t) { Log.e("saveOrdineTerminale_pv", t.toString()); UtilityLogger.errorMe(new Exception(t)); onFailed.run(new Exception(t)); @@ -136,7 +136,6 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { }); - } private ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) { @@ -147,6 +146,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { dto.setDescrizione(art.getDescrizione()); dto.setDataInsD(art.getDataIns()); dto.setUntMis(art.getUntMis()); + dto.setSystemNote(art.getSystemNote()); dto.setQta(BigDecimal.valueOf(art.getQtaOrd())); dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf())); dto.setColli(BigDecimal.ZERO); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index 85bda60e..1bb11bd7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -12,12 +12,15 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.report.ReportType; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.JasperDTO; import it.integry.integrywmsnative.core.rest.model.JasperPairDTO; +import it.integry.integrywmsnative.core.rest.model.ReportTypeDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -63,7 +66,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); Call> callable = null; - callable = printerService.printCollo(testataColloToPrint); + callable = printerService.printCollo(testataColloToPrint); callable.enqueue(new Callback<>() { @Override @@ -115,4 +118,64 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { }); } + public void printReportType(ReportType reportType, String codMdep, String codAnag, HashMap params, Runnable onComplete, RunnableArgs onFailed) { + + ReportTypeDTO reportTypeDTO = new ReportTypeDTO(); + reportTypeDTO.setReportType(reportType); + reportTypeDTO.setCodAnag(codAnag); + reportTypeDTO.setCodMdep(codMdep); + + Stream.of(params) + .forEach(x -> reportTypeDTO.getParams().add(new JasperPairDTO(x.getKey(), x.getValue()))); + + PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); + printerService + .printReportType(reportTypeDTO) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "printReportType", data -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + if (t.getMessage().contains("Printer not found")) { + onFailed.run(new NoPrintersFoundException()); + } else onFailed.run(new Exception(t)); + } + }); + } + + public void printReportType(ReportType reportType, HashMap params, Runnable onComplete, RunnableArgs onFailed) { + printReportType(reportType, null, null, params, onComplete, onFailed); + } + + public void printReportType(ReportType reportType, String codMdep, HashMap params, Runnable onComplete, RunnableArgs onFailed) { + printReportType(reportType, codMdep, null, params, onComplete, onFailed); + } + + public void printClosedOrders(PrintOrderCloseDTO dto, String codMdep, Runnable onComplete, RunnableArgs onFailed) { + + PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class, 240); + Call> callable = printerService.printClosedOrders(codMdep, dto); + callable.enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "printCollo", data -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + if (t.getMessage().contains("Printer not found")) { + onFailed.run(new NoPrintersFoundException()); + } else onFailed.run(new Exception(t)); + } + }); + } + + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java index ebde3247..6706bee0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java @@ -4,7 +4,9 @@ import java.util.List; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.JasperDTO; +import it.integry.integrywmsnative.core.rest.model.ReportTypeDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.POST; @@ -26,9 +28,20 @@ public interface PrinterRESTConsumerService { @Body JasperDTO jasperDTO ); + @POST("printReportType") + Call> printReportType( + @Body ReportTypeDTO reportTypeDTO + ); + @POST("wms/printEtichettaSSCC") Call> printCollo( @Body MtbColt mtbColtToPrint ); + @POST("wms/printClosedOrders") + Call> printClosedOrders( + @Query("codMdep") String codMdep, + @Body PrintOrderCloseDTO printOrderCloseDTO + ); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java new file mode 100644 index 00000000..035536f1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java @@ -0,0 +1,91 @@ +package it.integry.integrywmsnative.core.rest.consumers; + +import com.google.gson.JsonObject; + +import java.util.List; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +@Singleton +public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { + + public void avviaLineaDiProduzione(String codJfas, Integer hrNum, Runnable onComplete, RunnableArgs onFailed) { + ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + Call> callable = restService.avviaLineaDiProduzione(codJfas, hrNum); + callable.enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "avviaLineaDiProduzione", data -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + public void arrestaLineaDiProduzione(String codJfas, Runnable onComplete, RunnableArgs onFailed) { + ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + Call> callable = restService.arrestaLineaDiProduzione(codJfas); + callable.enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "arrestaLineaDiProduzione", data -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + public void avviaProduzioneArticoloSuLinea(String codJfas, String codMart, String partitaMag, Runnable onComplete, RunnableArgs onFailed) { + ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class, 300); + Call> callable = restService.avviaProduzioneArticoloSuLinea(codJfas, codMart, partitaMag); + callable.enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "avviaProduzioneArticoloSuLinea", data -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + public void getStatoLinee(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { + ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + Call>> callable = restService.getStatoLinee(codMdep); + callable.enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getStatoLinee", onComplete::run, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumerService.java new file mode 100644 index 00000000..c225d8d4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumerService.java @@ -0,0 +1,27 @@ +package it.integry.integrywmsnative.core.rest.consumers; + +import com.google.gson.JsonObject; + +import java.util.List; + +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Query; + +public interface ProductionLinesRESTConsumerService { + + @POST("mes_v2/avviaLineaDiProduzione") + Call> avviaLineaDiProduzione(@Query("codJfas") String codJfas, @Query("hrNum") Integer hrNum); + + @POST("mes_v2/arrestaLineaDiProduzione") + Call> arrestaLineaDiProduzione(@Query("codJfas") String codJfas); + + @POST("mes_v2/avviaProduzioneArticoloSuLinea") + Call> avviaProduzioneArticoloSuLinea(@Query("codJfas") String codJfas, @Query("codMart") String codMart, @Query("partitaMag") String partitaMag); + + @GET("mes_v2/statoLineeProd") + Call>> getStatoLinee(@Query("codMdep") String codMdep); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/ReportTypeDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/ReportTypeDTO.java new file mode 100644 index 00000000..88f74a88 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/ReportTypeDTO.java @@ -0,0 +1,51 @@ +package it.integry.integrywmsnative.core.rest.model; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.core.report.ReportType; + +public class ReportTypeDTO { + + + private ReportType reportType; + private String codAnag; + private String codMdep; + private List params = new ArrayList<>(); + + public List getParams() { + return params; + } + + public ReportTypeDTO setParams(List params) { + this.params = params; + return this; + } + + public ReportType getReportType() { + return reportType; + } + + public ReportTypeDTO setReportType(ReportType reportType) { + this.reportType = reportType; + return this; + } + + public String getCodAnag() { + return codAnag; + } + + public ReportTypeDTO setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + + public String getCodMdep() { + return codMdep; + } + + public ReportTypeDTO setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 520cbb78..b36c11e2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -42,7 +42,8 @@ public class DBSettingsModel { private boolean flagOrdinaArticoliOnScan; private String docInterniCheckFornitore; private String produzioneDefaultCodAnag; - private String reportNameSpedizionChiudiOrdine; + private boolean flagPrintPackingListOnOrderClose; + private boolean flagPrintEtichetteOnOrderClose; private int onNumCnfInputChanged = 1; private boolean flagAccettazioneUseQtaOrd = false; private boolean flagPickLiberoAllowEmptyDest = false; @@ -281,12 +282,21 @@ public class DBSettingsModel { return this; } - public String getReportNameSpedizionChiudiOrdine() { - return reportNameSpedizionChiudiOrdine; + public boolean isFlagPrintPackingListOnOrderClose() { + return flagPrintPackingListOnOrderClose; } - public DBSettingsModel setReportNameSpedizionChiudiOrdine(String reportNameSpedizionChiudiOrdine) { - this.reportNameSpedizionChiudiOrdine = reportNameSpedizionChiudiOrdine; + public DBSettingsModel setFlagPrintPackingListOnOrderClose(boolean flagPrintPackingListOnOrderClose) { + this.flagPrintPackingListOnOrderClose = flagPrintPackingListOnOrderClose; + return this; + } + + public boolean isFlagPrintEtichetteOnOrderClose() { + return flagPrintEtichetteOnOrderClose; + } + + public DBSettingsModel setFlagPrintEtichetteOnOrderClose(boolean flagPrintEtichetteOnOrderClose) { + this.flagPrintEtichetteOnOrderClose = flagPrintEtichetteOnOrderClose; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 89e1eb08..86c32edd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -270,10 +270,6 @@ public class SettingsManager { .setGestName("PICKING") .setSection("SPEDIZIONE") .setKeySection("FLAG_CAN_SELECT_MULTIPLE_ORDERS")); - stbGestSetupList.add(new StbGestSetup() - .setGestName("PICKING") - .setSection("SPEDIZIONE") - .setKeySection("REPORT_PACKING_LIST")); stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SPEDIZIONE") @@ -327,7 +323,6 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); - dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class)); @@ -344,8 +339,14 @@ public class SettingsManager { if (onNumCnfInputChanged != null) { dbSettingsModelIstance.setOnNumCnfInputChanged(onNumCnfInputChanged); } - - if (onComplete != null) onComplete.run(); + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", codMdep, (value) -> { + dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(value); + GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", codMdep, (gestSetupDTO) -> { + dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(value); + if (onComplete != null) onComplete.run(); + }, onFailed); + }, onFailed); }, onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java index fa6558ac..ef97b9d6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java @@ -32,6 +32,10 @@ public class UtilityBarcode { return barcodeScanDTO != null && (barcodeScanDTO.getType() == BarcodeType.CODE128 || barcodeScanDTO.getType() == BarcodeType.EAN128); } + public static boolean isEan128(BarcodeScanDTO barcodeScanDTO) { + return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN128; + } + public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) { return isEtichettaPosizione(barcodeScanDTO, true); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 92e8382e..99e069a2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -213,7 +213,7 @@ public class PickingLiberoViewModel { if (posizione != null && posizione.isFlagMonoCollo()) { this.executePosizione(posizione, articolo, onComplete); - } else if(mDefaultGestione == GestioneEnum.VENDITA){ + } else if (mDefaultGestione == GestioneEnum.VENDITA) { this.dispatchArt(articolo, ean128Model); onComplete.run(); } else { @@ -439,6 +439,7 @@ public class PickingLiberoViewModel { mColliMagazzinoRESTConsumer.saveCollo(clonedTestata, value -> { for (int i = 0; i < mtbColrObservableField.size(); i++) { MtbColr initialMtbColr = mtbColrObservableField.get(i); + var startIdx = (value.getMtbColr().size() - mtbColrObservableField.size()); initialMtbColr .setDataCollo(value.getDataColloS()) @@ -446,7 +447,7 @@ public class PickingLiberoViewModel { .setGestione(value.getGestione()) .setSerCollo(value.getSerCollo()); - initialMtbColr.setRiga(value.getMtbColr().get(i).getRiga()); + initialMtbColr.setRiga(value.getMtbColr().get(startIdx + i).getRiga()); mCurrentMtbColt.getMtbColr().add(mtbColrObservableField.get(i)); } @@ -626,7 +627,7 @@ public class PickingLiberoViewModel { UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToUpdate.getCodCol()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToUpdate.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToUpdate.getPartitaMag())) - .single(); + .findFirstOrElse(null); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneComponent.java new file mode 100644 index 00000000..b7167ea2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione; + +import dagger.Subcomponent; + +@Subcomponent +public interface ProdLineeProduzioneComponent { + + @Subcomponent.Factory + interface Factory { + ProdLineeProduzioneComponent create(); + } + + void inject(ProdLineeProduzioneFragment prodLineeProduzioneFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java new file mode 100644 index 00000000..92fa730b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java @@ -0,0 +1,187 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione; + +import android.content.Context; +import android.os.Bundle; +import android.text.Html; +import android.text.InputType; +import android.text.SpannableString; +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 androidx.recyclerview.widget.LinearLayoutManager; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; +import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.FragmentLineeProdBinding; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs.BottomSheetLineAction; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs.DialogStartProduction; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; +import it.integry.integrywmsnative.gest.prod_linee_produzione.ui.LinesListAdapter; +import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; + +public class ProdLineeProduzioneFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ProdLineeProduzioneViewModel.Listener { + + + @Inject + ProdLineeProduzioneViewModel mViewModel; + + private final ObservableArrayList mLinesObservableList = new ObservableArrayList<>(); + private FragmentLineeProdBinding mBinding; + private ElevatedToolbar mToolbar; + private int barcodeScannerIstanceID = -1; + private final RunnableArgs onScanSuccessful = data -> { + this.onLoadingStarted(); + + this.mViewModel.processBarcodeDTO(data); + }; + + public static ProdLineeProduzioneFragment newInstance() { + return new ProdLineeProduzioneFragment(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_linee_prod, container, false); + MainApplication.appComponent + .prodLineeProduzioneComponent() + .create() + .inject(this); + + mViewModel.setListener(this); + mBinding.setLifecycleOwner(this); + this.initRecyclerView(); + this.initBarcodeReader(); + mViewModel.init(); + + return mBinding.getRoot(); + } + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(onScanSuccessful) + .setOnScanFailed(this::onError)); + } + + @Override + public void setScrollToolbar(ElevatedToolbar toolbar) { + mToolbar = toolbar; + } + + public void refreshLineeProd(List linesList) { + this.mLinesObservableList.clear(); + if (linesList != null) { + + this.mLinesObservableList.addAll(linesList); + } + } + + private void initRecyclerView() { + this.mViewModel.getProdLinesList().observe(getViewLifecycleOwner(), this::refreshLineeProd); + LinesListAdapter prodLinesListAdapter = new LinesListAdapter(this.requireActivity(), this.mLinesObservableList); + prodLinesListAdapter.setEmptyView(this.mBinding.linesListEmptyView); + this.mBinding.linesMainList.setAdapter(prodLinesListAdapter); + this.mBinding.linesMainList.setLayoutManager(new LinearLayoutManager(this.requireActivity())); + prodLinesListAdapter.setOnItemClicked(this.mViewModel::onLineSelected); + if (mToolbar != null) + mToolbar.setRecyclerView(this.mBinding.linesMainList); + } + + public void requestResources(ProdLineStatusDTO prodLine) { + this.onLoadingEnded(); + BarcodeManager.disable(); + requireActivity().runOnUiThread(() -> { + + DialogSimpleInputHelper.makeInputDialog(requireContext(), "Inserisci il numero di risorse da allocare", qta -> { + this.onLoadingStarted(); + try { + Integer hrNum = Integer.parseInt(qta); + this.mViewModel.startProductionLine(prodLine, hrNum); + } catch (NumberFormatException ex) { + this.onError(new Exception("Inserire un numero di risorse valido")); + } + }, BarcodeManager::enable, InputType.TYPE_CLASS_NUMBER).show(); + }); + } + + public void requestOrderChange(ProdLineStatusDTO prodLine) { + this.onLoadingEnded(); + requireActivity().runOnUiThread(() -> { + DialogStartProduction.newInstance((dto) -> { + this.mViewModel.checkBarcodeAndStartOrdine(prodLine, dto); + }).show(getChildFragmentManager(), "DialogStartProduction"); + }); + } + + public void requestProductionStop(ProdLineStatusDTO prodLine) { + this.onLoadingEnded(); + BarcodeManager.disable(); + if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) { + mViewModel.stopProduction(prodLine); + } else { + this.confirmOrderClose(() -> { + mViewModel.stopProduction(prodLine); + }); + } + + } + + @Override + public void successDialog(String message, Runnable onComplete) { + BarcodeManager.disable(); + requireActivity().runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog(getResources().getString(R.string.success), + new SpannableString(message), null, onComplete).show(getChildFragmentManager(), "successDialog")); + + } + + @Override + public void selectLine(ProdLineStatusDTO dto) { + this.onLoadingEnded(); + BarcodeManager.disable(); + if (!dto.isStarted()) { + this.requestResources(dto); + } else { + BottomSheetLineAction.newInstance(dto, this::requestResources, this::requestOrderChange, this::requestProductionStop, BarcodeManager::enable).show(getChildFragmentManager(), "BottomSheetLineAction"); + } + } + + @Override + public void confirmOrderClose(Runnable onConfirm) { + this.onLoadingEnded(); + requireActivity().runOnUiThread(() -> { + DialogSimpleMessageView.makeWarningDialog( + Html.fromHtml("Per completare l'operazione è necessario chiudere gli ordini attualmente aperti sulla linea." + + "

" + + "Continuare?"), + null, + onConfirm, + BarcodeManager::enable + ).show(getChildFragmentManager(), "confirmOrderClose"); + }); + } + + + @Override + public void onCreateActionBar(AppCompatTextView titleText, Context context) { + titleText.setText(context.getText(R.string.nav_prod_linee_title).toString()); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java new file mode 100644 index 00000000..a36e3629 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; +import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent; + +@Module(subcomponents = ProdRientroMerceComponent.class) +public class ProdLineeProduzioneModule { + + @Provides + ProdLineeProduzioneViewModel providesProdRientroMerceViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { + return new ProdLineeProduzioneViewModel(productionLinesRESTConsumer, barcodeRESTConsumer); + } + + @Provides + @Singleton + ProductionLinesRESTConsumer providesProductionLinesRESTConsumer() { + return new ProductionLinesRESTConsumer(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java new file mode 100644 index 00000000..d2ac9714 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java @@ -0,0 +1,142 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione; + +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; + +public class ProdLineeProduzioneViewModel { + + + private final ProductionLinesRESTConsumer productionLinesRESTConsumer; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final MutableLiveData> prodLines = new MutableLiveData<>(); + + private Listener mListener; + + @Inject + public ProdLineeProduzioneViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { + this.productionLinesRESTConsumer = productionLinesRESTConsumer; + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + } + + public void init() { + this.sendOnLoadingStarted(); + reloadLines(); + + } + + private void reloadLines() { + BarcodeManager.disable(); + sendOnLoadingStarted(); + this.productionLinesRESTConsumer.getStatoLinee(SettingsManager.i().getUserSession().getDepo().getCodMdep(), lineeProdList -> { + this.sendOnLoadingEnded(); + BarcodeManager.enable(); + prodLines.postValue(lineeProdList); + }, this::sendError); + } + + public MutableLiveData> getProdLinesList() { + return prodLines; + } + + public void setListener(Listener listener) { + this.mListener = listener; + } + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) { + String codJfas = barcodeScanDTO.getStringValue(); + + ProdLineStatusDTO prodLine = prodLines.getValue() != null ? Stream.of(prodLines.getValue()).filter(x -> x.getCodJfas().equalsIgnoreCase(codJfas)).findFirstOrElse(null) : null; + if (prodLine != null) { + this.onLineSelected(prodLine); + } else { + this.sendError(new Exception("Linea di produzione " + codJfas + " non trovata")); + } + + + } + + + 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 void startProductionLine(ProdLineStatusDTO prodLine, Integer hrNum) { + this.sendOnLoadingStarted(); + this.productionLinesRESTConsumer.avviaLineaDiProduzione(prodLine.getCodJfas(), + hrNum, + () -> this.mListener.successDialog("Operazione completata", this::reloadLines), + this::sendError); + } + + public void onLineSelected(ProdLineStatusDTO lineSelected) { + mListener.selectLine(lineSelected); + } + + public void checkBarcodeAndStartOrdine(ProdLineStatusDTO prodLine, BarcodeScanDTO dto) { + this.sendOnLoadingStarted(); + mBarcodeRESTConsumer.decodeEan128(dto, (ean128) -> { + String codMart = ean128.Content; + String partitaMag = ean128.BatchLot; + if (!prodLine.isStarted()) { + this.sendError(new Exception("Impossibile avviare una produzione su una linea ferma!")); + } else if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) { + this.startProduction(prodLine, codMart, partitaMag); + } else { + this.mListener.confirmOrderClose(() -> { + this.startProduction(prodLine, codMart, partitaMag); + }); + } + }, this::sendError); + } + + private void startProduction(ProdLineStatusDTO prodLine, String codMart, String partitaMag) { + this.sendOnLoadingStarted(); + this.productionLinesRESTConsumer.avviaProduzioneArticoloSuLinea(prodLine.getCodJfas(), codMart, partitaMag, + () -> this.mListener.successDialog("Operazione completata", this::reloadLines), + this::sendError); + } + + public void stopProduction(ProdLineStatusDTO prodLine) { + this.sendOnLoadingStarted(); + this.productionLinesRESTConsumer.arrestaLineaDiProduzione(prodLine.getCodJfas(), + () -> this.mListener.successDialog("Operazione completata", this::reloadLines), + this::sendError); + } + + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + void successDialog(String message, Runnable onComplete); + + void selectLine(ProdLineStatusDTO prodLineStatusDTO); + + void confirmOrderClose(Runnable onConfirm); + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java new file mode 100644 index 00000000..07f3f01c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java @@ -0,0 +1,111 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs; + +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.BottomSheetLineActionsBinding; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; + +public class BottomSheetLineAction extends BottomSheetDialogFragment { + + private BottomSheetLineActionsBinding mBinding; + + private ProdLineStatusDTO prodLine; + private RunnableArgs onChangeResourcesRequest; + private RunnableArgs onChangeOrdersRequest; + private RunnableArgs onLineCloseRequest; + private Runnable onCancelAction; + + public static BottomSheetLineAction newInstance(ProdLineStatusDTO dto, RunnableArgs onChangeResourcesRequest, RunnableArgs onChangeOrdersRequest, RunnableArgs onLineCloseRequest, Runnable onCancel) { + BottomSheetLineAction fragment = new BottomSheetLineAction(); + fragment + .setProdLine(dto) + .setOnChangeResourcesRequest(onChangeResourcesRequest) + .setOnChangeOrdersRequest(onChangeOrdersRequest) + .setOnLineCloseRequest(onLineCloseRequest) + .setOnCancelAction(onCancel); + return fragment; + } + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBinding = BottomSheetLineActionsBinding.inflate(inflater, container, false); + mBinding.setLifecycleOwner(this); + mBinding.setView(this); + mBinding.setListModel(this.prodLine); + + return mBinding.getRoot(); + } + + public BottomSheetLineAction setOnCancelAction(Runnable onCancelAction) { + this.onCancelAction = onCancelAction; + return this; + } + + public BottomSheetLineAction setOnChangeResourcesRequest(RunnableArgs onChangeResourcesRequest) { + this.onChangeResourcesRequest = onChangeResourcesRequest; + return this; + } + + + public BottomSheetLineAction setOnChangeOrdersRequest(RunnableArgs onChangeOrdersRequest) { + this.onChangeOrdersRequest = onChangeOrdersRequest; + return this; + } + + + public BottomSheetLineAction setOnLineCloseRequest(RunnableArgs onLineCloseRequest) { + this.onLineCloseRequest = onLineCloseRequest; + return this; + } + + public ProdLineStatusDTO getProdLine() { + return prodLine; + } + + public BottomSheetLineAction setProdLine(ProdLineStatusDTO prodLine) { + this.prodLine = prodLine; + return this; + } + + public void onResourcesClicked() { + if (this.onChangeResourcesRequest != null) { + this.onChangeResourcesRequest.run(prodLine); + } + this.dismiss(); + + } + + public void onPlayClicked() { + if (this.onChangeOrdersRequest != null) { + this.onChangeOrdersRequest.run(prodLine); + } + this.dismiss(); + } + + public void onStopClicked() { + if (this.onLineCloseRequest != null) { + this.onLineCloseRequest.run(prodLine); + } + this.dismiss(); + } + + @Override + public void onCancel(@NonNull DialogInterface dialog) { + if (this.onCancelAction != null) { + onCancelAction.run(); + } + super.onCancel(dialog); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java new file mode 100644 index 00000000..d1fa80ba --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java @@ -0,0 +1,77 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.databinding.DialogStartProductionBinding; + +public class DialogStartProduction extends BaseDialogFragment { + private int barcodeScannerIstanceID = -1; + private RunnableArgs onScanSuccessful; + private DialogStartProductionBinding mBinding; + + public static DialogStartProduction newInstance(RunnableArgs onScanSuccessful) { + + Bundle args = new Bundle(); + + DialogStartProduction fragment = new DialogStartProduction(); + fragment.setArguments(args); + fragment.setOnScanSuccessful(onScanSuccessful); + return fragment; + } + + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + super.onDismiss(dialog); + } + + public DialogStartProduction setOnScanSuccessful(RunnableArgs onScanSuccessful) { + this.onScanSuccessful = onScanSuccessful; + return this; + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBinding = DialogStartProductionBinding.inflate(inflater, container, false); + mBinding.setLifecycleOwner(this); + this.initBarcodeReader(); + setCancelable(true); + getDialog().setCanceledOnTouchOutside(true); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + return mBinding.getRoot(); + } + + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(this::processBarcode) + .setOnScanFailed(this::onError)); + BarcodeManager.enable(); + } + + private void processBarcode(BarcodeScanDTO barcodeScanDTO) { + if (UtilityBarcode.isEan128(barcodeScanDTO)) { + this.onScanSuccessful.run(barcodeScanDTO); + this.dismiss(); + } else { + this.onError(new Exception("Il barcode scansionato non è valido!")); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java new file mode 100644 index 00000000..10808248 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java @@ -0,0 +1,129 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione.dto; + +import java.math.BigDecimal; +import java.util.Calendar; +import java.util.Date; + +public class ProdLineStatusDTO { + + private String codJfas; + + private String descrizione; + + private String codMdepLav; + + private Date datetimeStart; + + private Date datetimeEnd; + + private BigDecimal maxAllocazione; + + private Integer qtaAllocate; + + private String listaOrd; + + + public String getCodJfas() { + return codJfas; + } + + public ProdLineStatusDTO setCodJfas(String codJfas) { + this.codJfas = codJfas; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public ProdLineStatusDTO setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getCodMdepLav() { + return codMdepLav; + } + + public ProdLineStatusDTO setCodMdepLav(String codMdepLav) { + this.codMdepLav = codMdepLav; + return this; + } + + public Date getDatetimeStart() { + return datetimeStart; + } + + public ProdLineStatusDTO setDatetimeStart(Date datetimeStart) { + this.datetimeStart = datetimeStart; + return this; + } + + public Date getDatetimeEnd() { + return datetimeEnd; + } + + public ProdLineStatusDTO setDatetimeEnd(Date datetimeEnd) { + this.datetimeEnd = datetimeEnd; + return this; + } + + public BigDecimal getMaxAllocazione() { + return maxAllocazione; + } + + public ProdLineStatusDTO setMaxAllocazione(BigDecimal maxAllocazione) { + this.maxAllocazione = maxAllocazione; + return this; + } + + public Integer getQtaAllocate() { + return qtaAllocate; + } + + public ProdLineStatusDTO setQtaAllocate(Integer qtaAllocate) { + this.qtaAllocate = qtaAllocate; + return this; + } + + public String getListaOrd() { + return listaOrd; + } + + public ProdLineStatusDTO setListaOrd(String listaOrd) { + this.listaOrd = listaOrd; + return this; + } + + public boolean isStarted() { + return datetimeStart != null && datetimeEnd == null; + } + + + public boolean isPaused() { + if (datetimeEnd == null) { + return false; + } + Calendar today = Calendar.getInstance(); + today.set(Calendar.MILLISECOND, 0); + today.set(Calendar.SECOND, 0); + today.set(Calendar.MINUTE, 0); + today.set(Calendar.HOUR_OF_DAY, 0); + Calendar lastCloseTime = Calendar.getInstance(); + lastCloseTime.setTime(datetimeEnd); + lastCloseTime.set(Calendar.MILLISECOND, 0); + lastCloseTime.set(Calendar.SECOND, 0); + lastCloseTime.set(Calendar.MINUTE, 0); + lastCloseTime.set(Calendar.HOUR_OF_DAY, 0); + return datetimeStart != null && datetimeEnd != null && today.equals(lastCloseTime); + } + + public String getLabel() { + return codJfas + " - " + descrizione; + } + + public String getRisorseLabel() { + return qtaAllocate + (maxAllocazione != null && maxAllocazione.compareTo(BigDecimal.ZERO) > 0 ? "/" + maxAllocazione : ""); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ui/LinesListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ui/LinesListAdapter.java new file mode 100644 index 00000000..c7f01ae0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ui/LinesListAdapter.java @@ -0,0 +1,62 @@ +package it.integry.integrywmsnative.gest.prod_linee_produzione.ui; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; +import it.integry.integrywmsnative.databinding.FragmentLineeProdMainListModelBinding; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; + +public class LinesListAdapter extends ExtendedRecyclerView { + private Context mContext; + + private RunnableArgs mOnItemClicked; + + public LinesListAdapter(Context context, ObservableArrayList myDataset) { + super(myDataset); + this.mContext = context; + } + + @NonNull + @Override + public LinesListAdapter.SingleItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + FragmentLineeProdMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.fragment_linee_prod_main_list_model, parent, false); + return new LinesListAdapter.SingleItemViewHolder(binding); + } + + @Override + public void onBindViewHolder(@NonNull LinesListAdapter.SingleItemViewHolder holder, int position) { + final ProdLineStatusDTO line = mDataset.get(position); + + holder.binding.setListModel(line); + holder.binding.executePendingBindings(); + holder.binding.getRoot().setOnClickListener(v -> { + if (this.mOnItemClicked != null) + this.mOnItemClicked.run(line); + }); + } + + + public void setOnItemClicked(RunnableArgs onItemClicked) { + this.mOnItemClicked = onItemClicked; + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + FragmentLineeProdMainListModelBinding binding; + + SingleItemViewHolder(FragmentLineeProdMainListModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index d7961f9c..cd545753 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -163,6 +163,7 @@ public class PVOrdineAcquistoEditViewModel { articolo.setMerceDaRic(artGrid.getMerceDaRic()); articolo.setNewNoPromo(artGrid.isNewNoPromo()); articolo.setFlagQtaMultipla(artGrid.getFlagQtaMultipla()); + articolo.setSystemNote(artGrid.generateSystemNote()); onSuccess.run(articolo); } else { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java index 1a8d5d9e..9b0bcf4a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java @@ -28,6 +28,8 @@ public class ArtDTO { private String dataScad; + private String systemNote; + public Integer getRigaOrd() { return rigaOrd; } @@ -63,6 +65,7 @@ public class ArtDTO { public String getDataIns() { return dataIns; } + public Date getDataInsD() { return UtilityDate.recognizeDateWithExceptionHandler(getDataIns()); } @@ -70,6 +73,7 @@ public class ArtDTO { public void setDataIns(String dataIns) { this.dataIns = dataIns; } + public void setDataInsD(Date dataIns) { setDataIns(UtilityDate.formatDate(dataIns, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); } @@ -122,6 +126,7 @@ public class ArtDTO { public void setDataScad(String dataScad) { this.dataScad = dataScad; } + public Date getDataScadD() { return UtilityDate.recognizeDateWithExceptionHandler(getDataScad()); } @@ -130,5 +135,12 @@ public class ArtDTO { setDataScad(UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); } + public String getSystemNote() { + return systemNote; + } + public ArtDTO setSystemNote(String systemNote) { + this.systemNote = systemNote; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 59bfe4b7..3ef3d80f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -37,7 +37,6 @@ import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; -import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; @@ -319,18 +318,18 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr this.currentMtbColtObs.set(null); thereIsAnOpenedUL.set(false); - - if (getActivity() != null) ((IPoppableActivity) getActivity()).pop(); + this.mViewModel.requestLU(); + /*if (getActivity() != null) ((IPoppableActivity) getActivity()).pop();*/ } @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), - null, - () -> onComplete.run(true), - () -> onComplete.run(false) - ) + null, + () -> onComplete.run(true), + () -> onComplete.run(false) + ) .show(requireActivity().getSupportFragmentManager(), "tag"); } @@ -448,11 +447,11 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr @Override public void onLUPrintRequest(RunnableArgs onComplete) { DialogSimpleMessageView.makeInfoDialog( - getActivity().getResources().getString(R.string.action_print_ul), - new SpannableString(getActivity().getResources().getString(R.string.ask_print_message)), - null, - () -> onComplete.run(true), - () -> onComplete.run(false)) + getActivity().getResources().getString(R.string.action_print_ul), + new SpannableString(getActivity().getResources().getString(R.string.ask_print_message)), + null, + () -> onComplete.run(true), + () -> onComplete.run(false)) .show(getActivity().getSupportFragmentManager(), "tag"); ; } @@ -460,11 +459,11 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr @Override public void onLUPrintError(Exception ex, Runnable onComplete) { DialogSimpleMessageView.makeErrorDialog( - new SpannableString(ex.getMessage()), - null, - null, - R.string.button_ignore_print, - onComplete) + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete) .show(getActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index 6874e361..1f1eb997 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -85,15 +85,18 @@ public class RettificaGiacenzeViewModel { this.sendOnLoadingEnded(); - this.sendOnLUOpenRequest((mtbColt, created) -> { - this.mCurrentMtbColt = mtbColt; - this.mIsCreatedLU = created; - - this.sendLUOpened(mtbColt); - }); + this.requestLU(); }, this::sendError); } + public void requestLU() { + this.sendOnLUOpenRequest((mtbColt, created) -> { + this.mCurrentMtbColt = mtbColt; + this.mIsCreatedLU = created; + + this.sendLUOpened(mtbColt); + }); + } public RettificaGiacenzeViewModel setListener(RettificaGiacenzeViewModel.Listener listener) { this.mListener = listener; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index db6cf599..54b87d73 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -56,10 +56,12 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; +import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListView; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; 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.gest.spedizione.model.PrintOrderCloseDTO; import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListAdapter; import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; @@ -192,9 +194,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.initBarcodeReader(); this.initRecyclerView(); - - String reportNameSpedizioneChiudiOrdine = SettingsManager.iDB().getReportNameSpedizionChiudiOrdine(); - closeOrderButtonEnabled.set(!UtilityString.isNullOrEmpty(reportNameSpedizioneChiudiOrdine)); + closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); @@ -204,7 +204,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione(); boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd(); - if (!mEnableFakeGiacenza) this.onLoadingStarted(); mViewmodel.init( codMdep, !mEnableFakeGiacenza, @@ -214,7 +213,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mSitArtOrd, mTestateOrdini, mColliRegistrati, - reportNameSpedizioneChiudiOrdine, mGestioneCol, mSegnoCol, mDefaultCausaleUL, mEnableQuantityReset, useQtaOrd); @@ -696,7 +694,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.addExtraItemsEnabled.set(false); noLUPresent.set(true); this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null); - closeOrderButtonEnabled.set(!UtilityString.isNullOrEmpty(SettingsManager.iDB().getReportNameSpedizionChiudiOrdine())); + closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()); if (this.mShouldCloseActivity) super.onBackPressed(); } @@ -726,11 +724,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo public void onLUPrintError(Exception ex, Runnable onComplete) { this.onLoadingEnded(); DialogSimpleMessageView.makeErrorDialog( - new SpannableString(ex.getMessage()), - null, - null, - R.string.button_ignore_print, - onComplete) + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete) .show(getSupportFragmentManager(), "tag"); ; } @@ -751,10 +749,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), - null, - () -> onComplete.run(true), - () -> onComplete.run(false) - ) + null, + () -> onComplete.run(true), + () -> onComplete.run(false) + ) .show(getSupportFragmentManager(), "tag"); } @@ -853,12 +851,58 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }).show(); } + public void askShouldPrintPackingList(PrintOrderCloseDTO printOrderCloseDTO, RunnableArgs onComplete) { + DialogSimpleMessageView.makeInfoDialog( + getResources().getString(R.string.action_close_order), + new SpannableString(getResources().getString(R.string.message_print_packing_list_on_close_order)), + null, + () -> { + printOrderCloseDTO.setFlagPrintPackingList(true); + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { + this.askShouldPrintSSCC(printOrderCloseDTO, onComplete); + } else { + onComplete.run(printOrderCloseDTO); + } + }, + () -> { + printOrderCloseDTO.setFlagPrintPackingList(false); + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { + this.askShouldPrintSSCC(printOrderCloseDTO, onComplete); + } else { + onComplete.run(printOrderCloseDTO); + } + } + ) + .show(getSupportFragmentManager(), "tag"); + } + + public void askShouldPrintSSCC(PrintOrderCloseDTO printOrderCloseDTO, RunnableArgs onComplete) { + DialogPrintOrderSSCCListView.newInstance(printOrderCloseDTO, onComplete).show(this.getSupportFragmentManager(), "dialogPrintOrderSSCCListView"); + } + @Override public void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete) { DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete) .show(getSupportFragmentManager(), "tag"); } + @Override + public void onCloseOrderPrintRequest(RunnableArgs onComplete) { + PrintOrderCloseDTO printOrderCloseDTO = new PrintOrderCloseDTO(); + if (SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { + this.askShouldPrintPackingList(printOrderCloseDTO, onComplete); + } else if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { + this.askShouldPrintSSCC(printOrderCloseDTO, onComplete); + } + + } + + @Override + public void onOrderClosed() { + this.onLoadingEnded(); + this.onBackPressed(); + } + @Override public void onRowSaved() { FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 913728d6..be80c0ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -26,7 +26,6 @@ import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.exception.InvalidLUException; import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; -import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; @@ -37,6 +36,7 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOp import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.CommonModelConsts; +import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.FiltroOrdineDTO; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; @@ -45,6 +45,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.report.ReportType; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -55,6 +56,7 @@ import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; 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.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; @@ -66,6 +68,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUEx import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; +import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO; public class SpedizioneViewModel { @@ -91,7 +94,6 @@ public class SpedizioneViewModel { private boolean mEnableCheckPartitaMag; private boolean mCanOverflowOrderQuantity; private boolean mShouldAskPesoLU; - private String mReportNameSpedizioneChiudiOrdine; private boolean mIsNewLU; private boolean mEnableQuantityReset; private boolean mUseQtaOrd; @@ -133,7 +135,6 @@ public class SpedizioneViewModel { List pickingList, List testateOrdini, List colliRegistrati, - String reportNameSpedizioneChiudiOrdine, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, @@ -148,7 +149,6 @@ public class SpedizioneViewModel { this.mEnableCheckPartitaMag = enableCheckPartitaMag; this.mCanOverflowOrderQuantity = canOverflowOrderQuantity; this.mShouldAskPesoLU = shouldAskPesoLU; - this.mReportNameSpedizioneChiudiOrdine = reportNameSpedizioneChiudiOrdine; this.mDefaultCausaleOfUL = defaultCausaleUL; this.mEnableQuantityReset = enableQuantityReset; this.mUseQtaOrd = useQtaOrd; @@ -305,6 +305,14 @@ public class SpedizioneViewModel { if (this.mListener != null) mListener.onLoadingStarted(); } + private void sendOnCloseOrderPrintRequest(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onCloseOrderPrintRequest(onComplete); + } + + private void sendOnOrderClosed() { + if (this.mListener != null) mListener.onOrderClosed(); + } + private void sendOnLoadingEnded() { if (this.mListener != null) mListener.onLoadingEnded(); } @@ -1853,49 +1861,85 @@ public class SpedizioneViewModel { public void closeOrder() { this.sendOnLoadingStarted(); - - Runnable onComplete = () -> this.sendOnLoadingEnded(); - - this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> { - - if (printerList == null || printerList.size() == 0) { - this.sendError(new NoPrintersFoundException()); - onComplete.run(); - return; - } - - - cyclicPrintPackingList( - this.mTestateOrdini.iterator(), - printerList.get(0), - onComplete, - ex -> this.sendLUPrintError(ex, onComplete)); - - }, this::sendError); - + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { + this.sendOnCloseOrderPrintRequest(this::onCloseOrderPrintRequest); + } } - private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs onAbort) { + private void onCloseOrderPrintRequest(PrintOrderCloseDTO dto) { + if (!dto.isFlagPrintPackingList() && !dto.isFlagPrintSSCC()) { + this.sendOnOrderClosed(); + return; + } + List 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(); + dto.setPrintList(closedOrders); + printClosedOrders(dto, this::sendOnOrderClosed, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); + } + + private void printClosedOrders(PrintOrderCloseDTO dto, Runnable onSuccess, RunnableArgs onAbort) { + + + this.mPrinterRESTConsumer.printClosedOrders( + dto, + SettingsManager.i().getUserSession().getDepo().getCodMdep(), + onSuccess, + onAbort); + } + + private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, Runnable onComplete, RunnableArgs onAbort) { if (sourceTestateOrdineVenditaIterator.hasNext()) { - singlePrintPackingList(sourceTestateOrdineVenditaIterator.next(), printerName, () -> { - cyclicPrintPackingList(sourceTestateOrdineVenditaIterator, printerName, onComplete, onAbort); + singlePrintPackingList(sourceTestateOrdineVenditaIterator.next(), () -> { + cyclicPrintPackingList(sourceTestateOrdineVenditaIterator, onComplete, onAbort); }, onAbort); } else { onComplete.run(); } } - private void singlePrintPackingList(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, String printerName, Runnable onComplete, RunnableArgs onFailed) { + private void cyclicPrintListEtichette(@NotNull Iterator sourceTestateOrdineVenditaIterator, Runnable onComplete, RunnableArgs onAbort) { + if (sourceTestateOrdineVenditaIterator.hasNext()) { + singlePrintListEtichette(sourceTestateOrdineVenditaIterator.next(), () -> { + cyclicPrintListEtichette(sourceTestateOrdineVenditaIterator, onComplete, onAbort); + }, onAbort); + } else { + onComplete.run(); + } + } + + private void singlePrintPackingList(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, Runnable onComplete, RunnableArgs onFailed) { HashMap params = new HashMap<>(); params.put("gestione", ordineUscitaInevasoDTO.getGestione()); params.put("num_ord", ordineUscitaInevasoDTO.getNumOrd()); params.put("data_ord", UtilityDate.formatDate(ordineUscitaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH)); - this.mPrinterRESTConsumer.printReport( - printerName, - this.mReportNameSpedizioneChiudiOrdine, + this.mPrinterRESTConsumer.printReportType( + ReportType.WMS_SPEDIZIONE_PACKING_LIST_ORD, + SettingsManager.i().getUserSession().getDepo().getCodMdep(), + ordineUscitaInevasoDTO.getCodAnagOrd(), + params, + onComplete, + onFailed); + + } + + private void singlePrintListEtichette(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, Runnable onComplete, RunnableArgs onFailed) { + HashMap params = new HashMap<>(); + params.put("gestione", ordineUscitaInevasoDTO.getGestione()); + params.put("num_ord", ordineUscitaInevasoDTO.getNumOrd()); + params.put("data_ord", UtilityDate.formatDate(ordineUscitaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH)); + + this.mPrinterRESTConsumer.printReportType( + ReportType.WMS_SPEDIZIONE_ETICHETTE_SSCC_ORD, + SettingsManager.i().getUserSession().getDepo().getCodMdep(), + ordineUscitaInevasoDTO.getCodAnagOrd(), params, - 1, onComplete, onFailed); @@ -1948,6 +1992,10 @@ public class SpedizioneViewModel { void onLUPositionChangeRequest(RunnableArgss onComplete); void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete); + + void onCloseOrderPrintRequest(RunnableArgs onComplete); + + void onOrderClosed(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListComponent.java new file mode 100644 index 00000000..a33db83c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogPrintOrderSSCCListComponent { + + @Subcomponent.Factory + interface Factory { + DialogPrintOrderSSCCListComponent create(); + } + + void inject(DialogPrintOrderSSCCListView dialogPrintOrderSSCCListView); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListModule.java new file mode 100644 index 00000000..8dbc4503 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListModule.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogPrintOrderSSCCListComponent.class) +public class DialogPrintOrderSSCCListModule { + + + @Provides + DialogPrintOrderSSCCListViewModel providesDialogPrintOrderSSCCListViewModel() { + return new DialogPrintOrderSSCCListViewModel(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java new file mode 100644 index 00000000..773d9daf --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java @@ -0,0 +1,115 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list; + +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RadioGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +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.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.databinding.DialogPrintOrderSsccListBinding; +import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO; + +public class DialogPrintOrderSSCCListView extends BaseDialogFragment { + + + @Inject + DialogPrintOrderSSCCListViewModel mViewModel; + + private Context mContext; + private DialogPrintOrderSsccListBinding mBindings; + private final PrintOrderCloseDTO printOrderCloseDTO; + private final RunnableArgs onDialogClose; + + + public static DialogPrintOrderSSCCListView newInstance( + PrintOrderCloseDTO printOrderCloseDTO, + RunnableArgs onDismiss + ) { + return new DialogPrintOrderSSCCListView(printOrderCloseDTO, onDismiss); + } + + public DialogPrintOrderSSCCListView(@NotNull PrintOrderCloseDTO printOrderCloseDTO, @NotNull RunnableArgs onDismiss) { + this.printOrderCloseDTO = printOrderCloseDTO; + this.onDialogClose = onDismiss; + } + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + this.mContext = getActivity(); + + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_print_order_sscc_list, container, false); + + MainApplication.appComponent + .dialogPrintOrderSSCCListComponent() + .create() + .inject(this); + mBindings.setView(this); + setCancelable(true); + getDialog().setCanceledOnTouchOutside(true); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + return mBindings.getRoot(); + } + + public void onCheckChange(RadioGroup radioGroup, int id) { + this.printOrderCloseDTO.setFlagSkipPrintedSSCC(id == mBindings.printOnlyNew.getId()); + } + + public void onPositiveClick() { + this.printOrderCloseDTO.setFlagPrintSSCC(true); + this.dismiss(); + } + + public void onNegativeClick() { + this.printOrderCloseDTO.setFlagPrintSSCC(false); + this.dismiss(); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + this.onDialogClose.run(this.printOrderCloseDTO); + super.onDismiss(dialog); + } + + @Override + public void onCancel(@NonNull DialogInterface dialog) { + this.onNegativeClick(); + super.onCancel(dialog); + } + + @Override + public void onStart() { + if (this.printOrderCloseDTO.isFlagSkipPrintedSSCC()) { + mBindings.printOnlyNew.setChecked(true); + } else { + mBindings.printAll.setChecked(true); + } + super.onStart(); + } + + + @Override + public void onError(Exception ex) { + UtilityExceptions.defaultException(this.mContext, ex); + dismiss(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListViewModel.java new file mode 100644 index 00000000..b516384b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListViewModel.java @@ -0,0 +1,6 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list; + +public class DialogPrintOrderSSCCListViewModel { + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/model/PrintOrderCloseDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/model/PrintOrderCloseDTO.java new file mode 100644 index 00000000..508b0e05 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/model/PrintOrderCloseDTO.java @@ -0,0 +1,48 @@ +package it.integry.integrywmsnative.gest.spedizione.model; + +import java.util.List; + +import it.integry.integrywmsnative.core.model.DtbOrdt; + +public class PrintOrderCloseDTO { + private boolean flagPrintPackingList = false; + private boolean flagPrintSSCC = false; + private boolean flagSkipPrintedSSCC = true; + private List printList; + + public boolean isFlagPrintPackingList() { + return flagPrintPackingList; + } + + public PrintOrderCloseDTO setFlagPrintPackingList(boolean flagPrintPackingList) { + this.flagPrintPackingList = flagPrintPackingList; + return this; + } + + public boolean isFlagPrintSSCC() { + return flagPrintSSCC; + } + + public PrintOrderCloseDTO setFlagPrintSSCC(boolean flagPrintSSCC) { + this.flagPrintSSCC = flagPrintSSCC; + return this; + } + + public boolean isFlagSkipPrintedSSCC() { + return flagSkipPrintedSSCC; + } + + public PrintOrderCloseDTO setFlagSkipPrintedSSCC(boolean flagSkipPrintedSSCC) { + this.flagSkipPrintedSSCC = flagSkipPrintedSSCC; + return this; + } + + public List getPrintList() { + return printList; + } + + public PrintOrderCloseDTO setPrintList(List printList) { + this.printList = printList; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java index 1ad3cfae..1bf800bb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java @@ -4,6 +4,7 @@ import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.text.InputType; import android.view.LayoutInflater; import androidx.databinding.DataBindingUtil; @@ -21,15 +22,14 @@ import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding; public class DialogSimpleInputHelper { - private static Dialog makeBase(Context mContext, String titleText, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick){ + private static Dialog makeBase(Context mContext, String titleText, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick, Integer inputType) { Dialog dialog = new Dialog(mContext); DialogSimpleInputViewModel viewModel = new DialogSimpleInputViewModel(dialog); - DialogInputGeneralBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_input_general, null, false); viewModel - .setOnPositive(()->{ + .setOnPositive(() -> { onPositiveClick.run(mBinding.generalInput.getText().toString()); }) @@ -38,50 +38,79 @@ public class DialogSimpleInputHelper { mBinding.setViewmodel(viewModel); //Title VIEW + mBinding.titleText.setText(titleText); - if (!UtilityString.isNullOrEmpty(hintText)){ + if (!UtilityString.isNullOrEmpty(hintText)) { mBinding.generalInput.setHint(hintText); } - if (!UtilityString.isNullOrEmpty(defaultTextValue)){ + if (!UtilityString.isNullOrEmpty(defaultTextValue)) { mBinding.generalInput.setText(defaultTextValue); } - + if (inputType != null) { + mBinding.generalInput.setInputType(InputType.TYPE_CLASS_NUMBER); + } //Content View dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(false); dialog.setContentView(mBinding.getRoot()); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - UtilityDialog.setTo90PercentWidth(mContext,dialog); + UtilityDialog.setTo90PercentWidth(mContext, dialog); return dialog; } - public static Dialog makeInputDialog(Context mContext, String title, RunnableArgs onPositiveClick, Runnable onNegativeClick){ + public static Dialog makeInputDialog(Context mContext, String title, RunnableArgs onPositiveClick, Runnable onNegativeClick) { return makeBase(mContext, title, null, null, onPositiveClick, - onNegativeClick); + onNegativeClick, + null); } - public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick){ + public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick) { return makeBase(mContext, title, defaultTextValue, hintText, onPositiveClick, - onNegativeClick); + onNegativeClick, + null); + + } + + public static Dialog makeInputDialog(Context mContext, String title, RunnableArgs onPositiveClick, Runnable onNegativeClick, Integer inputType) { + + return makeBase(mContext, + title, + null, + null, + onPositiveClick, + onNegativeClick, + inputType); } + public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick, Integer inputType) { + + return makeBase(mContext, + title, + defaultTextValue, + hintText, + onPositiveClick, + onNegativeClick, + inputType); + + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index d4ce25f9..4d285878 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -84,6 +84,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia private DialogInputQuantityV2Binding mBindings; private boolean mEnableDataCallback = true; + private boolean mObservablesInitated = false; private int mBarcodeScannerIstanceID; private boolean mFirstStart = true; @@ -203,7 +204,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Override public void onDismiss(@NonNull DialogInterface dialog) { - BarcodeManager.removeCallback(mBarcodeScannerIstanceID); if (mAbort) this.mOnAbort.run(); super.onDismiss(dialog); @@ -224,7 +224,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mViewModel.init(onNumCnfInputChanged); } - private void init() { + private void initViewObservables() { UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> { if (this.mEnableDataCallback) { @@ -281,6 +281,12 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } }); + + } + + + private void initViewModelObservables() { + final ColorStateList textColorsNumCnf = this.mBindings.inputNumCnfLayout.getEditText().getTextColors(); final ColorStateList textColorsQtaCnf = this.mBindings.inputQtaCnfLayout.getEditText().getTextColors(); final ColorStateList textColorsQtaTot = this.mBindings.inputQtaTotLayout.getEditText().getTextColors(); @@ -346,6 +352,15 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } } }); + } + + private void init() { + if (!mObservablesInitated) { + initViewObservables(); + mObservablesInitated = true; + } + + initViewModelObservables(); //Init double taps this.mBindings.inputNumCnfText.setOnClickListener(new DoubleClick(new DoubleClickListener() { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java index 1dcfaf2b..f62f9a16 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java @@ -110,7 +110,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA var filteredMtbColrList = mtbColrList; - if (mtbAart != null) { + if (mtbAart != null && filteredMtbColrList != null) { filteredMtbColrList = Stream.of(filteredMtbColrList) .filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart())) .toList(); diff --git a/app/src/main/res/drawable/ic_baseline_pause_24.xml b/app/src/main/res/drawable/ic_baseline_pause_24.xml new file mode 100644 index 00000000..938bd7f1 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_pause_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_person_add_24.xml b/app/src/main/res/drawable/ic_baseline_person_add_24.xml new file mode 100644 index 00000000..ee564be1 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_person_add_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml b/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml new file mode 100644 index 00000000..e3fd2e9d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_stop_24.xml b/app/src/main/res/drawable/ic_baseline_stop_24.xml new file mode 100644 index 00000000..19bcbee7 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_stop_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_production_line.png b/app/src/main/res/drawable/ic_production_line.png new file mode 100644 index 00000000..19f5ada7 Binary files /dev/null and b/app/src/main/res/drawable/ic_production_line.png differ diff --git a/app/src/main/res/drawable/ic_stop_circle_24.xml b/app/src/main/res/drawable/ic_stop_circle_24.xml new file mode 100644 index 00000000..d1561510 --- /dev/null +++ b/app/src/main/res/drawable/ic_stop_circle_24.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/layout/bottom_sheet_line_actions.xml b/app/src/main/res/layout/bottom_sheet_line_actions.xml new file mode 100644 index 00000000..9bd37c8e --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_line_actions.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_print_order_sscc_list.xml b/app/src/main/res/layout/dialog_print_order_sscc_list.xml new file mode 100644 index 00000000..775bc03c --- /dev/null +++ b/app/src/main/res/layout/dialog_print_order_sscc_list.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_start_production.xml b/app/src/main/res/layout/dialog_start_production.xml new file mode 100644 index 00000000..f9894f3a --- /dev/null +++ b/app/src/main/res/layout/dialog_start_production.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/doc_interni_list_model.xml b/app/src/main/res/layout/doc_interni_list_model.xml index ec1ec865..d1d26706 100644 --- a/app/src/main/res/layout/doc_interni_list_model.xml +++ b/app/src/main/res/layout/doc_interni_list_model.xml @@ -1,12 +1,12 @@ - + + - + tools:text="13 Apr" /> + tools:text="0 Articoli" /> diff --git a/app/src/main/res/layout/fragment_linee_prod.xml b/app/src/main/res/layout/fragment_linee_prod.xml new file mode 100644 index 00000000..13b3603a --- /dev/null +++ b/app/src/main/res/layout/fragment_linee_prod.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_linee_prod_main_list_model.xml b/app/src/main/res/layout/fragment_linee_prod_main_list_model.xml new file mode 100644 index 00000000..440ad8a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_linee_prod_main_list_model.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 8c33f7c0..ced4feb4 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -8,6 +8,7 @@ Attendere Caricamento Completato + Successo %s del %s]]> %s del %s]]> %s del %s]]> @@ -267,6 +268,9 @@ Recupero dati Attendi qualche istante + VGAlimenti personalizzazione + Base personalizzazione + IME personalizzazione Stampante Accettazione @@ -277,6 +281,10 @@ Posizionamento Vuoi procedere con la stampa di una %s + Vuoi stampare le packing list degli ordini chiusi? + Vuoi stampare le etichette SSCC degli ordini chiusi? + Stampa solo le nuove etichette + Stampa tutte le etichette Crea nuova UL Visualizza basket Apri UL @@ -383,4 +391,17 @@ Nuovo articolo in griglia Seleziona la riga da modificare Colli in arrivo + Linee di produzione + Nessuna linea disponibile + In lavorazione + In pausa + Ferma + Risorse allocate + Ordini in lavorazione + Assegna risorse + Avvia nuova produzione + Arresta produzione + Inizio produzione + Ultima produzione + Nessuna linea disponibile \ No newline at end of file diff --git a/app/src/main/res/values/buttons_style.xml b/app/src/main/res/values/buttons_style.xml index ab5ce6a4..32a7b14e 100644 --- a/app/src/main/res/values/buttons_style.xml +++ b/app/src/main/res/values/buttons_style.xml @@ -3,46 +3,53 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index 116c8646..189b3627 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -26,8 +26,9 @@ - - + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 798447af..56d8af0c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -45,6 +45,7 @@ Waiting Loading Completed + Success Search… Login Permissions are required for app to work properly @@ -283,6 +284,10 @@ Placement Do you want print a %s? + Do you want print the packing lists of the closed orders? + Do you want print the SSCC labels for the closed orders? + Print only new labels + Print all labels Create new LU View basket Open LU @@ -392,4 +397,17 @@ Newly added product Select document row to edit Incoming packages + Production lines + No line available + in progress + Stand by + Stopped + Resources set + Orders in progress + Set resources + Start production + Stop production + Production start + Last production + No production line available