diff --git a/app/build.gradle b/app/build.gradle index 54956e3c..eb4b5704 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 358 - def appVersionName = '1.32.18' + def appVersionCode = 359 + def appVersionName = '1.32.19' signingConfigs { release { diff --git a/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/15.json b/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/15.json index 8b480ae6..546382cf 100644 --- a/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/15.json +++ b/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/15.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 15, - "identityHash": "a7eb741d99ba4b54e55ac41684d3207a", + "identityHash": "0609508b3a8434bb8d3e3cc99e766d67", "entities": [ { "tableName": "articoli_griglia", @@ -192,7 +192,7 @@ }, { "tableName": "ordini", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`ordine_id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `data_ins` INTEGER, `annotazioni` TEXT, `transmitted` INTEGER NOT NULL, `transmission_date` INTEGER, `gestione` TEXT, `data_ord` INTEGER, `num_ord` INTEGER, `cod_mdep` TEXT, `id_griglia` INTEGER NOT NULL, `cod_alis` TEXT)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`ordine_id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `data_ins` INTEGER, `annotazioni` TEXT, `transmitted` INTEGER NOT NULL, `transmission_date` INTEGER, `gestione` TEXT, `data_ord` INTEGER, `num_ord` INTEGER, `cod_mdep` TEXT, `id_griglia` INTEGER, `cod_alis` TEXT)", "fields": [ { "fieldPath": "ordineId", @@ -252,7 +252,7 @@ "fieldPath": "idGriglia", "columnName": "id_griglia", "affinity": "INTEGER", - "notNull": true + "notNull": false }, { "fieldPath": "codAlis", @@ -1162,7 +1162,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a7eb741d99ba4b54e55ac41684d3207a')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0609508b3a8434bb8d3e3cc99e766d67')" ] } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java index 9243a88a..12dee055 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java @@ -53,9 +53,9 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer { - public void loadDocumentoAvailableArts(String codDtip, String codMgrp, RunnableArgs onComplete, RunnableArgs onFailed) { + public void loadDocumentoAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs onComplete, RunnableArgs onFailed) { var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); - inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp) + inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp, codAnagForn) .enqueue(new Callback<>() { @Override public void onResponse(@NonNull Call> call, @NonNull Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java index 437d74a5..2ba2c2d6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java @@ -26,6 +26,7 @@ public interface DocumentiRESTConsumerService { @GET("wms/documento/arts") Call> retrieveArts( @Query("codDtip") String codDtip, - @Query("codMgrp") String codMgrp); + @Query("codMgrp") String codMgrp, + @Query("codAnagForn") String codAnagForn); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java index 54e322cb..579890e1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java @@ -102,15 +102,19 @@ public class DocInterniViewModel { this.productsFetched = false; this.sendOnLoadingStarted(); - documentRESTConsumer.loadDocumentoAvailableArts(this.getCodDtip(), this.getCodMgrp(), data -> { - this.productsFetched = true; - this.availableArts = data.getArts(); - this.artsSize.set(this.availableArts.size()); + documentRESTConsumer.loadDocumentoAvailableArts( + this.getCodDtip(), + this.getCodMgrp(), + this.getCodAnagForn(), + data -> { + this.productsFetched = true; + this.availableArts = data.getArts(); + this.artsSize.set(this.availableArts.size()); - if (this.docsFetched) - this.sendOnLoadingEnded(); + if (this.docsFetched) + this.sendOnLoadingEnded(); - }, this::sendError); + }, this::sendError); } public void fetchDocuments() { @@ -159,6 +163,13 @@ public class DocInterniViewModel { return this.mtbGrup.getValue().getCodMgrp(); } + private String getCodAnagForn() { + if (this.fornitore.getValue() == null) { + return null; + } + return this.fornitore.getValue().getCodAnag(); + } + public void editDocument(SqlMtbColt document) { this.mListener.onDocumentEditRequest(document, availableArts); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 4f75d5a0..10cef1af 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -256,6 +256,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter .setSaveOnImeDone(true) .setPartitaMag(row.getPartitaMag()) .setDataScad(row.getDataScad()) + .setCanInputZeroQuantity(true) .setCanOverflowOrderQuantity(false) .setCanLUBeClosed(false) .setNotesAllowed(true) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 44c511bd..ab16adcd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -245,20 +245,32 @@ public class DocInterniEditFormViewModel { private void initCheckFornitore() { SqlMtbColt doc = this.document.getValue(); + + if (doc == null) + return; + boolean isCheckPartitaMag = false; - if (doc != null && this.checkFornitoreRules != null) { - String key = doc.getCodAnag(); - if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) { - key += "-" + doc.getCodVdes(); - } - try { - if (this.checkFornitoreRules.has(key) && ((String) ((JSONObject) this.checkFornitoreRules.get(key)).get(doc.getCodDtipProvv())).equalsIgnoreCase("check-partitaMag")) { + + try { + if (this.checkFornitoreRules != null && this.checkFornitoreRules.has("value")) { + isCheckPartitaMag = this.checkFornitoreRules.getBoolean("value"); + } else if (this.checkFornitoreRules != null) { + String key = doc.getCodAnag(); + if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) { + key += "-" + doc.getCodVdes(); + } + if (this.checkFornitoreRules.has(key) && + ((String) ((JSONObject) this.checkFornitoreRules.get(key)) + .get(doc.getCodDtipProvv())) + .equalsIgnoreCase("check-partitaMag")) { isCheckPartitaMag = true; } - } catch (Exception ignored) { } - + } catch (JSONException e) { + this.sendError(e); } + + this.isCheckPartitaMag = isCheckPartitaMag; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java index b0a3540f..21aa5c88 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java @@ -214,6 +214,7 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn .setTotalQtaToBeTaken(totalQtaToBeTaken) .setTotalNumCnfToBeTaken(totalNumCnfToBeTaken) .setQtaCnfToBeTaken(qtaCnfToBeTaken) + .setCanInputZeroQuantity(true) .setCanOverflowOrderQuantity(canOverflowOrderQuantity) .setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanLUBeClosed(canLUBeClosed) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index c02ebc58..6b337c49 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -33,6 +33,7 @@ public class DialogInputQuantityV2DTO { private BigDecimal totalNumCnfAvailable; private BigDecimal qtaCnfAvailable; + private boolean canInputZeroQuantity = false; private boolean canPartitaMagBeChanged = true; private boolean isDataScadMandatory = false; private boolean isNotesAllowed = false; @@ -214,6 +215,15 @@ public class DialogInputQuantityV2DTO { return this; } + public boolean isCanInputZeroQuantity() { + return canInputZeroQuantity; + } + + public DialogInputQuantityV2DTO setCanInputZeroQuantity(boolean canInputZeroQuantity) { + this.canInputZeroQuantity = canInputZeroQuantity; + return this; + } + public boolean isCanPartitaMagBeChanged() { return canPartitaMagBeChanged; } 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 ccbfd2bb..d2ae61cf 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 @@ -165,6 +165,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia .setQtaCnfToBeTaken(mDialogInputQuantityV2DTO.getQtaCnfToBeTaken()) .setTotalNumCnfAvailable(mDialogInputQuantityV2DTO.getTotalNumCnfAvailable()) .setTotalQtaAvailable(mDialogInputQuantityV2DTO.getTotalQtaAvailable()) + .setCanInputZeroQuantity(mDialogInputQuantityV2DTO.isCanInputZeroQuantity()) .setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity()) .setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable()) .setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag()) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 75f3a5ab..9fab765f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -72,6 +72,7 @@ public class DialogInputQuantityV2ViewModel { private RunnableArgsWithReturn suggestPartitaMagRunnable; + private boolean canInputZeroQuantity; private boolean canOverflowOrderQuantity; private boolean canPartitaMagBeChanged; private int onNumCnfInputChanged; @@ -314,6 +315,11 @@ public class DialogInputQuantityV2ViewModel { return this; } + public DialogInputQuantityV2ViewModel setCanInputZeroQuantity(boolean canInputZeroQuantity) { + this.canInputZeroQuantity = canInputZeroQuantity; + return this; + } + public DialogInputQuantityV2ViewModel setCanOverflowOrderQuantity(boolean canOverflowOrderQuantity) { this.canOverflowOrderQuantity = canOverflowOrderQuantity; return this; @@ -443,8 +449,8 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onError(new InvalidQtaCnfQuantityException()); return false; - } + if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (suggestPartitaMagRunnable != null) { internalPartitaMag = suggestPartitaMagRunnable.run(this); @@ -456,54 +462,54 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onError(new InvalidBatchLotException()); return false; } - } + if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { this.mListener.onError(new InvalidBatchLotException()); return false; - } + if (this.shouldAskDataScad && this.internalDataScad == null) { this.mListener.onError(new InvalidExpireDateException()); return false; - } + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); return false; - } + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd)) { this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); return false; - } + if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); return false; - } + if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable)) { this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); return false; - } - if (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || + + if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO) || UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || - UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) { + UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { this.mListener.onError(new InvalidQuantityException()); return false; - } + if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { this.mListener.onError(new InvalidNotesException()); return false; diff --git a/build.gradle b/build.gradle index 5424d897..0c93ba8e 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.8.0' - agp_version = '8.1.0-alpha09' + agp_version = '8.1.0-alpha10' } repositories {