From 1a0af4761322778bc1211d0fdb5734ef33b0f877 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 27 Apr 2022 18:43:23 +0200 Subject: [PATCH 01/21] Modifiche stampa per tipo report --- .../core/report/ReportType.java | 40 ++++++++++ .../rest/consumers/GestSetupRESTConsumer.java | 18 ++--- .../rest/consumers/PrinterRESTConsumer.java | 43 ++++++++++- .../consumers/PrinterRESTConsumerService.java | 6 ++ .../core/rest/model/ReportTypeDTO.java | 51 +++++++++++++ .../core/settings/DBSettingsModel.java | 20 +++-- .../core/settings/SettingsManager.java | 19 ++++- .../gest/spedizione/SpedizioneActivity.java | 8 +- .../gest/spedizione/SpedizioneViewModel.java | 75 +++++++++++++------ 9 files changed, 231 insertions(+), 49 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/report/ReportType.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/ReportTypeDTO.java 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/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index 85bda60e..038c879e 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,9 +12,11 @@ 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; @@ -63,7 +65,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 +117,43 @@ 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); + } + + } 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..833c3adf 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,6 +4,7 @@ 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 retrofit2.Call; import retrofit2.http.Body; @@ -26,6 +27,11 @@ public interface PrinterRESTConsumerService { @Body JasperDTO jasperDTO ); + @POST("printReportType") + Call> printReportType( + @Body ReportTypeDTO reportTypeDTO + ); + @POST("wms/printEtichettaSSCC") Call> printCollo( @Body MtbColt mtbColtToPrint 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..d0a41ab6 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 @@ -273,7 +273,11 @@ public class SettingsManager { stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SPEDIZIONE") - .setKeySection("REPORT_PACKING_LIST")); + .setKeySection("FLAG_PRINT_PACKING_LIST_ON_CLOSE")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PICKING") + .setSection("SPEDIZIONE") + .setKeySection("FLAG_PRINT_ETICHETTE_ON_CLOSE")); stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SPEDIZIONE") @@ -327,7 +331,8 @@ 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.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class)); +// dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.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 +349,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/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index db6cf599..ebf9b083 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 @@ -192,9 +192,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 +202,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 +211,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mSitArtOrd, mTestateOrdini, mColliRegistrati, - reportNameSpedizioneChiudiOrdine, mGestioneCol, mSegnoCol, mDefaultCausaleUL, mEnableQuantityReset, useQtaOrd); @@ -696,7 +692,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(); } 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..489b59c4 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; @@ -45,6 +44,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 +55,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; @@ -91,7 +92,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 +133,6 @@ public class SpedizioneViewModel { List pickingList, List testateOrdini, List colliRegistrati, - String reportNameSpedizioneChiudiOrdine, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, @@ -148,7 +147,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; @@ -1854,48 +1852,77 @@ 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; + Runnable printEtichetteOrderRunnable = () -> { + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { + cyclicPrintListEtichette( + this.mTestateOrdini.iterator(), + this::sendOnLoadingEnded, + ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); } + }; + + if (SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { cyclicPrintPackingList( this.mTestateOrdini.iterator(), - printerList.get(0), - onComplete, - ex -> this.sendLUPrintError(ex, onComplete)); - }, this::sendError); + printEtichetteOrderRunnable, + ex -> this.sendLUPrintError(ex, printEtichetteOrderRunnable)); + } else { + printEtichetteOrderRunnable.run(); + } + } - private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs 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); From 0d021e6bada3f39c6554165b526a146f5c1e9261 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 3 May 2022 10:31:38 +0200 Subject: [PATCH 02/21] aggiunto controllo su mtbColrRif null in picking libero --- .../gest/picking_libero/PickingLiberoViewModel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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..49dff4bd 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 { @@ -626,7 +626,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); } From 4f140d0d589b327743d12760aa23774ada16527b Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 3 May 2022 10:49:07 +0200 Subject: [PATCH 03/21] -> v1.26.0 (283) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a8839861..297c3a8f 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 = 283 + def appVersionName = '1.26.0' signingConfigs { release { From 63e4e4e791adc087c410fb615cc9900a303eb724 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 5 May 2022 16:09:48 +0200 Subject: [PATCH 04/21] aggiunto controllo su aggiunta articoli extra senza collo --- .../view/dialogs/scan_art/DialogScanArtView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); From 7d263699da29a9f6afe514b7139de8e07055a794 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 5 May 2022 16:11:27 +0200 Subject: [PATCH 05/21] -> v1.26.1 (284) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 297c3a8f..ae687d62 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 283 - def appVersionName = '1.26.0' + def appVersionCode = 284 + def appVersionName = '1.26.1' signingConfigs { release { From d6979289e2ea2b0255b58229a827ad8810fcfa95 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Fri, 6 May 2022 15:20:34 +0200 Subject: [PATCH 06/21] spostate stampe in chiusura ordine su servizio dedicato --- .../rest/consumers/PrinterRESTConsumer.java | 22 +++++++++++ .../consumers/PrinterRESTConsumerService.java | 7 ++++ .../gest/spedizione/SpedizioneViewModel.java | 39 +++++++++---------- 3 files changed, 48 insertions(+), 20 deletions(-) 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 038c879e..97050900 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 @@ -11,6 +11,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.report.ReportType; import it.integry.integrywmsnative.core.rest.RESTBuilder; @@ -155,5 +156,26 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { printReportType(reportType, codMdep, null, params, onComplete, onFailed); } + public void printClosedOrders(List closedOrders, String codMdep, Runnable onComplete, RunnableArgs onFailed) { + + PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class, 240); + Call> callable = printerService.printClosedOrders(codMdep, closedOrders); + 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 833c3adf..f4bd2e97 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 @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; +import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.JasperDTO; import it.integry.integrywmsnative.core.rest.model.ReportTypeDTO; @@ -37,4 +38,10 @@ public interface PrinterRESTConsumerService { @Body MtbColt mtbColtToPrint ); + @POST("wms/printClosedOrders") + Call> printClosedOrders( + @Query("codMdep") String codMdep, + @Body List closedOrders + ); + } 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 489b59c4..42809d10 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 @@ -36,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; @@ -1851,29 +1852,27 @@ public class SpedizioneViewModel { public void closeOrder() { this.sendOnLoadingStarted(); - - Runnable printEtichetteOrderRunnable = () -> { - if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()) { - cyclicPrintListEtichette( - this.mTestateOrdini.iterator(), - this::sendOnLoadingEnded, - ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); - } - - }; - - if (SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { - - cyclicPrintPackingList( - this.mTestateOrdini.iterator(), - - printEtichetteOrderRunnable, - ex -> this.sendLUPrintError(ex, printEtichetteOrderRunnable)); - } else { - printEtichetteOrderRunnable.run(); + if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { + printClosedOrders(this.mTestateOrdini, this::sendOnLoadingEnded, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); } + } + private void printClosedOrders(List listOrdiniInevasi, Runnable onSuccess, RunnableArgs onAbort) { + HashMap params = new HashMap<>(); + List closedOrders = Stream.of(listOrdiniInevasi).map(ord -> { + DtbOrdt ordV = new DtbOrdt(); + ordV.setDataOrd(ord.getDataOrdS()) + .setNumOrd(ord.getNumOrd()) + .setGestione(ord.getGestione()) + .setCodAnag(ord.getCodAnagOrd()); + return ordV; + }).toList(); + this.mPrinterRESTConsumer.printClosedOrders( + closedOrders, + SettingsManager.i().getUserSession().getDepo().getCodMdep(), + onSuccess, + onAbort); } private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, Runnable onComplete, RunnableArgs onAbort) { From 66f58ea20d79df0e51bdf7829307f53fc93d53ee Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 11 May 2022 09:49:12 +0200 Subject: [PATCH 07/21] Aggiunte qta_proposta e giacenza in system note degli ordini di acquisto pv --- .../core/data_store/db/AppDatabase.java | 2 +- .../data_store/db/entity/ArticoloGriglia.java | 12 ++++++++++++ .../data_store/db/entity/ArticoloOrdine.java | 11 +++++++++++ .../consumers/PVOrdiniAcquistoRESTConsumer.java | 16 ++++++++-------- .../PVOrdineAcquistoEditViewModel.java | 1 + .../gest/pv_ordine_acquisto_edit/dto/ArtDTO.java | 12 ++++++++++++ 6 files changed, 45 insertions(+), 9 deletions(-) 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/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/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; + } } From b5c6ce2aa50b8c23ba733f06c1a0374f4c7f4230 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 11 May 2022 09:49:54 +0200 Subject: [PATCH 08/21] -> v1.26.2 (285) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ae687d62..8cd90a00 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 284 - def appVersionName = '1.26.1' + def appVersionCode = 285 + def appVersionName = '1.26.2' signingConfigs { release { From ca96bacde601447a9b98add5ba2720b82ad565b0 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 12 May 2022 12:54:33 +0200 Subject: [PATCH 09/21] =?UTF-8?q?aggiunto=20controllo=20per=20evitare=20l'?= =?UTF-8?q?nizializzazione=20degli=20observables=20in=20pi=C3=B9=20punti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../input_quantity_v2/DialogInputQuantityV2View.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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..535bc6e7 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 initObservables() { UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> { if (this.mEnableDataCallback) { @@ -347,6 +347,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } }); + mObservablesInitated = true; + } + + private void init() { + + if (!mObservablesInitated) { + initObservables(); + } //Init double taps this.mBindings.inputNumCnfText.setOnClickListener(new DoubleClick(new DoubleClickListener() { @Override From f43a7acf352dc94b312e80fe2c0af7652c679417 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 12 May 2022 13:03:46 +0200 Subject: [PATCH 10/21] -> v1.26.3 (286) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8cd90a00..2a614131 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 285 - def appVersionName = '1.26.2' + def appVersionCode = 286 + def appVersionName = '1.26.3' signingConfigs { release { From 84cbab334f4100a36b41b3d08eaec3e115723334 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 18 May 2022 18:07:14 +0200 Subject: [PATCH 11/21] =?UTF-8?q?Aggiunta=20possibilit=C3=A0=20di=20stampa?= =?UTF-8?q?=20dei=20soli=20colli=20non=20stampati?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainApplicationComponent.java | 7 +- .../rest/consumers/PrinterRESTConsumer.java | 6 +- .../consumers/PrinterRESTConsumerService.java | 4 +- .../core/settings/SettingsManager.java | 10 -- .../gest/spedizione/SpedizioneActivity.java | 66 ++++++++-- .../gest/spedizione/SpedizioneViewModel.java | 32 ++++- .../DialogPrintOrderSSCCListComponent.java | 14 ++ .../DialogPrintOrderSSCCListModule.java | 15 +++ .../DialogPrintOrderSSCCListView.java | 115 +++++++++++++++++ .../DialogPrintOrderSSCCListViewModel.java | 6 + .../spedizione/model/PrintOrderCloseDTO.java | 48 +++++++ .../layout/dialog_print_order_sscc_list.xml | 121 ++++++++++++++++++ app/src/main/res/values-it/strings.xml | 7 + app/src/main/res/values/buttons_style.xml | 53 ++++---- app/src/main/res/values/strings.xml | 4 + 15 files changed, 455 insertions(+), 53 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/print_sscc_list/DialogPrintOrderSSCCListViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/model/PrintOrderCloseDTO.java create mode 100644 app/src/main/res/layout/dialog_print_order_sscc_list.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 0557c19c..264185c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -61,6 +61,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 +130,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DocInterniEditFormModule.class, DialogSelectDocRowsModule.class, DialogAskClienteModule.class, - DialogEditArticoloModule.class + DialogEditArticoloModule.class, + DialogPrintOrderSSCCListModule.class }) public interface MainApplicationComponent { @@ -216,6 +219,8 @@ public interface MainApplicationComponent { DialogEditArticoloComponent.Factory dialogEditArticoloComponent(); + DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); 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 97050900..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 @@ -11,7 +11,6 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.report.ReportType; import it.integry.integrywmsnative.core.rest.RESTBuilder; @@ -21,6 +20,7 @@ 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; @@ -156,10 +156,10 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { printReportType(reportType, codMdep, null, params, onComplete, onFailed); } - public void printClosedOrders(List closedOrders, String codMdep, Runnable onComplete, RunnableArgs onFailed) { + public void printClosedOrders(PrintOrderCloseDTO dto, String codMdep, Runnable onComplete, RunnableArgs onFailed) { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class, 240); - Call> callable = printerService.printClosedOrders(codMdep, closedOrders); + Call> callable = printerService.printClosedOrders(codMdep, dto); callable.enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { 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 f4bd2e97..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 @@ -2,11 +2,11 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; -import it.integry.integrywmsnative.core.model.DtbOrdt; 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; @@ -41,7 +41,7 @@ public interface PrinterRESTConsumerService { @POST("wms/printClosedOrders") Call> printClosedOrders( @Query("codMdep") String codMdep, - @Body List closedOrders + @Body PrintOrderCloseDTO printOrderCloseDTO ); } 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 d0a41ab6..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,14 +270,6 @@ public class SettingsManager { .setGestName("PICKING") .setSection("SPEDIZIONE") .setKeySection("FLAG_CAN_SELECT_MULTIPLE_ORDERS")); - stbGestSetupList.add(new StbGestSetup() - .setGestName("PICKING") - .setSection("SPEDIZIONE") - .setKeySection("FLAG_PRINT_PACKING_LIST_ON_CLOSE")); - stbGestSetupList.add(new StbGestSetup() - .setGestName("PICKING") - .setSection("SPEDIZIONE") - .setKeySection("FLAG_PRINT_ETICHETTE_ON_CLOSE")); stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SPEDIZIONE") @@ -331,8 +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.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class)); -// dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.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)); 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 ebf9b083..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; @@ -722,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"); ; } @@ -747,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"); } @@ -849,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 42809d10..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 @@ -68,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 { @@ -304,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,13 +1862,16 @@ public class SpedizioneViewModel { public void closeOrder() { this.sendOnLoadingStarted(); if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { - printClosedOrders(this.mTestateOrdini, this::sendOnLoadingEnded, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); + this.sendOnCloseOrderPrintRequest(this::onCloseOrderPrintRequest); } } - private void printClosedOrders(List listOrdiniInevasi, Runnable onSuccess, RunnableArgs onAbort) { - HashMap params = new HashMap<>(); - List closedOrders = Stream.of(listOrdiniInevasi).map(ord -> { + 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()) @@ -1867,9 +1879,15 @@ public class SpedizioneViewModel { .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( - closedOrders, + dto, SettingsManager.i().getUserSession().getDepo().getCodMdep(), onSuccess, onAbort); @@ -1974,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/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..072982a3 --- /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/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 8c33f7c0..d1ea02c3 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -267,6 +267,9 @@ Recupero dati Attendi qualche istante + VGAlimenti personalizzazione + Base personalizzazione + IME personalizzazione Stampante Accettazione @@ -277,6 +280,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 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/strings.xml b/app/src/main/res/values/strings.xml index 798447af..3ed64bb0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -283,6 +283,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 From e0e9e657c974f792800cd60d23560373852a58e4 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 25 May 2022 17:17:48 +0200 Subject: [PATCH 12/21] Nuova gestione linee di produzione --- .../core/di/binders/ImageViewBinders.java | 12 + .../ProductionLinesRESTConsumer.java | 91 +++++++ .../ProductionLinesRESTConsumerService.java | 27 +++ .../ProdLineeProduzioneComponent.java | 14 ++ .../ProdLineeProduzioneFragment.java | 187 ++++++++++++++ .../ProdLineeProduzioneModule.java | 25 ++ .../ProdLineeProduzioneViewModel.java | 142 +++++++++++ .../dialogs/BottomSheetLineAction.java | 111 +++++++++ .../dialogs/DialogStartProduction.java | 77 ++++++ .../dto/ProdLineStatusDTO.java | 129 ++++++++++ .../ui/LinesListAdapter.java | 62 +++++ .../res/drawable/ic_baseline_pause_24.xml | 5 + .../drawable/ic_baseline_person_add_24.xml | 5 + .../drawable/ic_baseline_play_arrow_24.xml | 5 + .../main/res/drawable/ic_baseline_stop_24.xml | 5 + .../main/res/drawable/ic_production_line.png | Bin 0 -> 827 bytes .../main/res/drawable/ic_stop_circle_24.xml | 6 + .../res/layout/bottom_sheet_line_actions.xml | 211 ++++++++++++++++ .../res/layout/dialog_start_production.xml | 81 +++++++ .../main/res/layout/fragment_linee_prod.xml | 86 +++++++ .../fragment_linee_prod_main_list_model.xml | 228 ++++++++++++++++++ 21 files changed, 1509 insertions(+) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/di/binders/ImageViewBinders.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumerService.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ui/LinesListAdapter.java create mode 100644 app/src/main/res/drawable/ic_baseline_pause_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_person_add_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_play_arrow_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_stop_24.xml create mode 100644 app/src/main/res/drawable/ic_production_line.png create mode 100644 app/src/main/res/drawable/ic_stop_circle_24.xml create mode 100644 app/src/main/res/layout/bottom_sheet_line_actions.xml create mode 100644 app/src/main/res/layout/dialog_start_production.xml create mode 100644 app/src/main/res/layout/fragment_linee_prod.xml create mode 100644 app/src/main/res/layout/fragment_linee_prod_main_list_model.xml 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/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/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/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 0000000000000000000000000000000000000000..19f5ada7b6327098d12965ecf863f3535d814e21 GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lNlJ8K6tt~ zhE&XXduM;XP@>H7kLN!ZFfuW=u?4+JTD11+7yA##7fo*V^V>DcLQ=i_KT~>oY;WM} zWuD1DxqaGST`<|Wl{fa6vzEf0#|zfV{yGqA`^V(Y^R4%6@5}75v{0~gZ~+4qU!P0N z(eEElnz8x6Vy9-k=sI=db z1B%uZzw^7#Hh-ON{@t!U8B^S+1gWNfcy(&}v%?zJ+6OWs9-q0ak>14A(^tx-ucx0s zS8~hc&iA5%Rtd$sd!NOz|DG$yuwVjrfcA5P$diYU?b-ik#yRcCW_5;lzn{%}p|#>R z_r@*zn!}dYznPV!ci>KlOqm{}{H z*us57*gYQOgFd>FnnbH?+A{C%bynXjDs`QrDq zO+bSfv_X8IuumFp6;DNq8DC9($UeWT^4yu<*N*Zf@EVwh%2fog$NTh1{wpmdKI;Vst0FZ-bJOBUy literal 0 HcmV?d00001 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_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/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 From 9dc3996aef5b9e85c11286ba98660153c4fb0dfb Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 25 May 2022 17:17:58 +0200 Subject: [PATCH 13/21] Nuova gestione linee di produzione --- .../MainApplicationComponent.java | 7 +- .../configs/MenuConfiguration.java | 247 +++++++++--------- .../core/utility/UtilityBarcode.java | 4 + .../dialogs/base/DialogSimpleInputHelper.java | 51 +++- .../layout/dialog_print_order_sscc_list.xml | 2 +- .../res/layout/doc_interni_list_model.xml | 10 +- app/src/main/res/values-it/strings.xml | 14 + app/src/main/res/values/config.xml | 5 +- app/src/main/res/values/strings.xml | 14 + 9 files changed, 215 insertions(+), 139 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 264185c6..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; @@ -131,7 +133,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogSelectDocRowsModule.class, DialogAskClienteModule.class, DialogEditArticoloModule.class, - DialogPrintOrderSSCCListModule.class + DialogPrintOrderSSCCListModule.class, + ProdLineeProduzioneModule.class }) public interface MainApplicationComponent { @@ -221,6 +224,8 @@ public interface MainApplicationComponent { 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/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/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/res/layout/dialog_print_order_sscc_list.xml b/app/src/main/res/layout/dialog_print_order_sscc_list.xml index 072982a3..775bc03c 100644 --- a/app/src/main/res/layout/dialog_print_order_sscc_list.xml +++ b/app/src/main/res/layout/dialog_print_order_sscc_list.xml @@ -67,7 +67,7 @@ android:id="@+id/radioGroup" android:layout_width="match_parent" android:layout_height="wrap_content" - android:onCheckedChanged="@{view.onCheckChange}" + android:onCheckedChanged="@{view::onCheckChange}" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@id/description_text"> 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/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d1ea02c3..bfbeb35a 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]]> @@ -390,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 + Ridistribuisci 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/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 3ed64bb0..76328c7f 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 @@ -396,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 + Redistribute resources + Start production + Stop production + Production start + Last production + No production line available From aabc4310fd07c64225816e67abad487437b7969c Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 25 May 2022 17:19:40 +0200 Subject: [PATCH 14/21] -> v1.27.0 (287) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2a614131..8cf696ff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 286 - def appVersionName = '1.26.3' + def appVersionCode = 287 + def appVersionName = '1.27.0' signingConfigs { release { From ee8fa96c40dfdfebb25b824eda018313a45577d0 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 25 May 2022 19:10:35 +0200 Subject: [PATCH 15/21] mmodifica label impostazione risorse --- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bfbeb35a..ced4feb4 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -398,7 +398,7 @@ Ferma Risorse allocate Ordini in lavorazione - Ridistribuisci risorse + Assegna risorse Avvia nuova produzione Arresta produzione Inizio produzione diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 76328c7f..56d8af0c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -404,7 +404,7 @@ Stopped Resources set Orders in progress - Redistribute resources + Set resources Start production Stop production Production start From df13a6e29da68b94e33b69859e25c2ef360e0fe8 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 25 May 2022 19:11:23 +0200 Subject: [PATCH 16/21] -> v1.27.1 (288) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8cf696ff..d8c02b37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 287 - def appVersionName = '1.27.0' + def appVersionCode = 288 + def appVersionName = '1.7.1' signingConfigs { release { From 82ff37f4ee66ee1d1812ac0837266ee655bd4a93 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 26 May 2022 12:09:21 +0200 Subject: [PATCH 17/21] Bug Fix: eliminazione righe in picking libero --- .../gest/picking_libero/PickingLiberoViewModel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 49dff4bd..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 @@ -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)); } From cb5e36ffb729a68fa4a4116680ca222659e93783 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 26 May 2022 12:10:16 +0200 Subject: [PATCH 18/21] -> v1.27.2 (289) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d8c02b37..5c277d96 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 288 - def appVersionName = '1.7.1' + def appVersionCode = 289 + def appVersionName = '1.7.2' signingConfigs { release { From c11858aea288182ea336fa1a9e3a037e27352b7c Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 26 May 2022 12:35:26 +0200 Subject: [PATCH 19/21] Ottimizzazione funzione rettifica giacenza. Evitare di uscire dalla gestione dopo aver rettificato una pedana. --- .../RettificaGiacenzeFragment.java | 33 +++++++++---------- .../RettificaGiacenzeViewModel.java | 15 +++++---- 2 files changed, 25 insertions(+), 23 deletions(-) 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; From abfd92ce0775f7d0c33e2809f6c3915fcd934aa3 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 26 May 2022 16:16:13 +0200 Subject: [PATCH 20/21] Fix su inizializzazione observables in DialogInputQuantityV2 --- .../core/data_cache/DataCache.java | 2 +- .../DialogInputQuantityV2View.java | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) 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/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 535bc6e7..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 @@ -224,7 +224,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mViewModel.init(onNumCnfInputChanged); } - private void initObservables() { + 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,15 +352,16 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } } }); - - mObservablesInitated = true; } private void init() { - if (!mObservablesInitated) { - initObservables(); + initViewObservables(); + mObservablesInitated = true; } + + initViewModelObservables(); + //Init double taps this.mBindings.inputNumCnfText.setOnClickListener(new DoubleClick(new DoubleClickListener() { @Override From 9db8337f9b7428c2d4deda200ae8493880c81c3a Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 26 May 2022 16:18:10 +0200 Subject: [PATCH 21/21] -> v1.27.3 (290) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5c277d96..b576cdb8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 289 - def appVersionName = '1.7.2' + def appVersionCode = 290 + def appVersionName = '1.27.3' signingConfigs { release {