diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 1cbe3cec..e07a6e5d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -16,6 +16,7 @@ import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; +import it.integry.integrywmsnative.core.ean128.Ean128Service; import it.integry.integrywmsnative.core.menu.MenuRESTConsumer; import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -103,6 +104,12 @@ public class MainApplicationModule { return colliDataRecoverService; } + @Provides + @Singleton + Ean128Service provideEan128Service() { + return new Ean128Service(); + } + @Provides @Singleton MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) { @@ -198,8 +205,8 @@ public class MainApplicationModule { @Provides @Singleton - BarcodeRESTConsumer provideBarcodeRESTConsumer() { - return new BarcodeRESTConsumer(); + BarcodeRESTConsumer provideBarcodeRESTConsumer(Ean128Service ean128Service) { + return new BarcodeRESTConsumer(ean128Service); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java index 24889430..df16aa11 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java @@ -75,7 +75,7 @@ public class BarcodeManager { var scanMode = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_MODE, null); var scanModeSetting = new Pair(BarcodeSetting.P_TRIGGER_SCAN_MODE, scanMode); additionalSettings.add(scanModeSetting); - + BarcodeManager.changeSettings(additionalSettings); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AI.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AI.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AI.java rename to app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AI.java index 88766729..9cd47532 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AI.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AI.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.core.utility.BarcodeEan128; +package it.integry.integrywmsnative.core.ean128; public enum Ean128AI { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AIModel.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModel.java similarity index 94% rename from app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AIModel.java rename to app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModel.java index 18f018c7..c7cb5aea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AIModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.core.utility.BarcodeEan128; +package it.integry.integrywmsnative.core.ean128; public class Ean128AIModel implements Cloneable { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AIModelBij.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModelBij.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AIModelBij.java rename to app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModelBij.java index 544b4306..a4a99183 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128AIModelBij.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModelBij.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.core.utility.BarcodeEan128; +package it.integry.integrywmsnative.core.ean128; import java.util.regex.MatchResult; import java.util.regex.Matcher; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128ISOValueModel.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128ISOValueModel.java similarity index 58% rename from app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128ISOValueModel.java rename to app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128ISOValueModel.java index cad0fd63..82aa3688 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/Ean128ISOValueModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128ISOValueModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.core.utility.BarcodeEan128; +package it.integry.integrywmsnative.core.ean128; public class Ean128ISOValueModel { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/UtilityBarcodeEan128.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java similarity index 69% rename from app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/UtilityBarcodeEan128.java rename to app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java index e367ae55..1a66bafa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/BarcodeEan128/UtilityBarcodeEan128.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java @@ -1,6 +1,4 @@ -package it.integry.integrywmsnative.core.utility.BarcodeEan128; - -import android.annotation.SuppressLint; +package it.integry.integrywmsnative.core.ean128; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -11,15 +9,14 @@ import it.integry.integrywmsnative.core.base.Callable; import it.integry.integrywmsnative.core.base.CallableII; import it.integry.integrywmsnative.core.rest.model.Ean128Model; -public class UtilityBarcodeEan128 { - public static Ean128Model decode(BarcodeScanDTO barcodeScanDTO){ +public class Ean128Service { + + public Ean128Model decode(BarcodeScanDTO barcodeScanDTO) throws Exception { byte[] inputEan128ByteArr = barcodeScanDTO.getStringValue().replaceAll("" + ((char) 29), "|").getBytes(); Ean128AIModelBij ean128AIModelBij = new Ean128AIModelBij(); String aiCodeBuffer = ""; - //char[] charList = barcodeAsString.ToCharArray(); - Ean128Model model = new Ean128Model(); for (int i = 0; i < inputEan128ByteArr.length; i++) { @@ -36,12 +33,12 @@ public class UtilityBarcodeEan128 { Ean128AIModel aiModel = ean128AIModelBij.getAI(aiIndex); - String aiValue = ""; + StringBuilder aiValue = new StringBuilder(); if (!aiModel.flagVariableLength) { for (int j = (i + 1); j < (i + 1) + aiModel.dataLength; j++) { - aiValue += (char) inputEan128ByteArr[j]; + aiValue.append((char) inputEan128ByteArr[j]); } //aiValue = barcodeAsString.Substring(i + 1, aiModel.DataLength); @@ -63,172 +60,173 @@ public class UtilityBarcodeEan128 { i++; } - aiValue = tempBuffer.replace("\r", "").replace("\n", ""); + aiValue = new StringBuilder(tempBuffer.replace("\r", "").replace("\n", "")); } switch (aiModel.AI) { case SSCC -> { if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) { - aiValue = aiValue.substring(1); + aiValue = new StringBuilder(aiValue.substring(1)); } - model.Sscc = aiValue; + model.Sscc = aiValue.toString(); } case GTIN -> { if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) { - aiValue = aiValue.substring(1); + aiValue = new StringBuilder(aiValue.substring(1)); } - model.Gtin = aiValue; + model.Gtin = aiValue.toString(); } case CONTENT -> { if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) { - aiValue = aiValue.substring(1); + aiValue = new StringBuilder(aiValue.substring(1)); } - model.Content = aiValue; + model.Content = aiValue.toString(); } - case BATCH_LOT -> model.BatchLot = aiValue; - case PROD_DATE -> model.ProdDate = convertToDateTime(aiValue); - case DUE_DATE -> model.DueDate = convertToDateTime(aiValue); - case PACK_DATE -> model.PackDate = convertToDateTime(aiValue); - case BEST_BEFORE -> model.BestBefore = String.valueOf(convertToDateTime(aiValue)); - case EXPIRY -> model.Expiry = String.valueOf(convertToDateTime(aiValue)); - case VARIANT -> model.Variant = aiValue; - case SERIAL -> model.Serial = aiValue; - case QTY_DATE_BATCH -> model.QtyDateBatch = aiValue; - case ADDITIONAL_ID -> model.AdditionalID = aiValue; - case CUST_PART_NO -> model.CustPartNumber = aiValue; - case SECONDARY_SERIAL -> model.SecondarySerial = aiValue; - case REF_TO_SOURCE -> model.RefToSource = aiValue; - case VAR_COUNT -> model.VarCount = aiValue; + case BATCH_LOT -> model.BatchLot = aiValue.toString(); + case PROD_DATE -> model.ProdDate = convertToDateTime(aiValue.toString()); + case DUE_DATE -> model.DueDate = convertToDateTime(aiValue.toString()); + case PACK_DATE -> model.PackDate = convertToDateTime(aiValue.toString()); + case BEST_BEFORE -> + model.BestBefore = String.valueOf(convertToDateTime(aiValue.toString())); + case EXPIRY -> model.Expiry = String.valueOf(convertToDateTime(aiValue.toString())); + case VARIANT -> model.Variant = aiValue.toString(); + case SERIAL -> model.Serial = aiValue.toString(); + case QTY_DATE_BATCH -> model.QtyDateBatch = aiValue.toString(); + case ADDITIONAL_ID -> model.AdditionalID = aiValue.toString(); + case CUST_PART_NO -> model.CustPartNumber = aiValue.toString(); + case SECONDARY_SERIAL -> model.SecondarySerial = aiValue.toString(); + case REF_TO_SOURCE -> model.RefToSource = aiValue.toString(); + case VAR_COUNT -> model.VarCount = aiValue.toString(); case NET_WEIGHT_KG -> - model.NetWeightKg = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetWeightKg = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_M -> - model.LengthM = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_M -> - model.WidthM = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_M -> - model.HeightM = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeightM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_M2 -> - model.AreaM2 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaM2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_L -> - model.NetVolumeL = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeL = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_M3 -> - model.NetVolumeM3 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeM3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_WEIGHT_LB -> - model.NetWeightLb = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetWeightLb = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_I -> - model.LengthI = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_F -> - model.LengthF = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_Y -> - model.LengthY = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_I -> - model.WidthI = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_F -> - model.WidthF = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_Y -> - model.WidthY = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_I -> - model.HeightI = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeightI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_F -> - model.HeightF = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeightF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_Y -> - model.HeightY = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeightY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case CROSSWEIGHT_KG_LOG -> - model.CrossweightKgLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.CrossweightKgLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case CROSSWEIGHT_LB_LOG -> - model.CrossweightLbLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.CrossweightLbLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_M_LOG -> - model.LengthMLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_M_LOG -> - model.WidthMLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_M_LOG -> - model.HeigthMLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeigthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_M2_LOG -> - model.AreaM2Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaM2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_L_LOG -> - model.VolumeLLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.VolumeLLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_M3_LOG -> - model.VolumeM3Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.VolumeM3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_I_LOG -> - model.LengthILog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_F_LOG -> - model.LengthFLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case LENGTH_Y_LOG -> - model.LengthYLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.LengthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_I_LOG -> - model.WidthILog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_F_LOG -> - model.WidthFLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case WIDTH_Y_LOG -> - model.WidthYLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.WidthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_I_LOG -> - model.HeigthILog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeigthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_F_LOG -> - model.HeigthFLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeigthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case HEIGHT_Y_LOG -> - model.HeigthYLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.HeigthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_I2 -> - model.AreaI2 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaI2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_F2 -> - model.AreaF2 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaF2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_Y2 -> - model.AreaY2 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaY2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_I2_LOG -> - model.AreaI2Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaI2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_F2_LOG -> - model.AreaF2Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaF2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AREA_Y2_LOG -> - model.AreaY2Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.AreaY2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_WEIGHT_T -> - model.NetWeightT = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetWeightT = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_OZ -> - model.NetVolumeOz = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeOz = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_LB -> - model.NetVolumeLb = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeLb = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_G -> - model.NetVolumeG = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeG = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_Q_LOG -> - model.VolumeQLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.VolumeQLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_G_LOG -> - model.VolumeGLog = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.VolumeGLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_I3 -> - model.NetVolumeI3 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeI3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_F3 -> - model.NetVolumeF3 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeF3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case NET_VOLUME_Y3 -> - model.NetVolumeY3 = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.NetVolumeY3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_I3_LOG -> - model.VolumeI3Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.VolumeI3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_F3_LOG -> - model.VolumeF3Log = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.VolumeF3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case VOLUME_Y3_LOG -> - model.VolumeY3Log = convertToDecimalString(aiValue, aiModel.decimalDigits); - case COUNT -> model.Count = Integer.parseInt(aiValue); + model.VolumeY3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); + case COUNT -> model.Count = Integer.parseInt(aiValue.toString()); case AMOUNT -> - model.Amount = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.Amount = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case AMOUNT_ISO -> - model.AmountISO = convertToIsoValueModel(aiValue, aiModel.decimalDigits, + model.AmountISO = convertToIsoValueModel(aiValue.toString(), aiModel.decimalDigits, Double::parseDouble, (input, input2) -> String.valueOf(convertToDecimalString(input, input2))); case PRICE -> - model.Price = convertToDecimalString(aiValue, aiModel.decimalDigits); + model.Price = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits); case PRICE_ISO -> - model.PriceISO = convertToIsoValueModel(aiValue, aiModel.decimalDigits, + model.PriceISO = convertToIsoValueModel(aiValue.toString(), aiModel.decimalDigits, Double::parseDouble, (input, input2) -> String.valueOf(convertToDecimalString(input, input2))); - case ORDER_NUMBER -> model.OrderNumber = aiValue; - case CONSIGNMENT -> model.Consignment = aiValue; - case SHIPMENT_NO -> model.ShipmentNo = aiValue; - case ROUTE -> model.Route = aiValue; - case SHIP_TO_LOC -> model.ShipToLoc = aiValue; - case BILL_TO_LOC -> model.BillToLoc = aiValue; - case PURCHASE_FROM_LOC -> model.PurchaseFromLoc = aiValue; - case SHIP_FOR_LOC -> model.ShipForLoc = aiValue; - case LOC_NO -> model.LocationNumber = aiValue; - case PAY_TO_LOC -> model.PayToLoc = aiValue; - case SHIP_TO_POST -> model.ShipToPost = aiValue; + case ORDER_NUMBER -> model.OrderNumber = aiValue.toString(); + case CONSIGNMENT -> model.Consignment = aiValue.toString(); + case SHIPMENT_NO -> model.ShipmentNo = aiValue.toString(); + case ROUTE -> model.Route = aiValue.toString(); + case SHIP_TO_LOC -> model.ShipToLoc = aiValue.toString(); + case BILL_TO_LOC -> model.BillToLoc = aiValue.toString(); + case PURCHASE_FROM_LOC -> model.PurchaseFromLoc = aiValue.toString(); + case SHIP_FOR_LOC -> model.ShipForLoc = aiValue.toString(); + case LOC_NO -> model.LocationNumber = aiValue.toString(); + case PAY_TO_LOC -> model.PayToLoc = aiValue.toString(); + case SHIP_TO_POST -> model.ShipToPost = aiValue.toString(); case SHIP_TO_POST_ISO -> - model.ShipToPostISO = convertToIsoValueModel(aiValue, 0, + model.ShipToPostISO = convertToIsoValueModel(aiValue.toString(), 0, new Callable() { @Override public String call(String input) { @@ -241,39 +239,39 @@ public class UtilityBarcodeEan128 { return input; } }); - case ORIGIN -> model.Origin = aiValue; + case ORIGIN -> model.Origin = aiValue.toString(); case COUNTRY_INITIAL_PROCESS -> - model.ShipToPostISO = convertToIsoValueModel(aiValue, 0, + model.ShipToPostISO = convertToIsoValueModel(aiValue.toString(), 0, input -> input, (input, input2) -> input); - case COUNTRY_PROCESS -> model.CountryProcess = aiValue; - case COUNTRY_DISASSEMBLY -> model.CountryDisassembly = aiValue; - case COUNTRY_FULL_PROCESS -> model.CountryFullProcess = aiValue; - case NSN -> model.NSN = aiValue; - case MEAT_CUT -> model.MeatCut = aiValue; - case DIMENSIONS -> model.Dimensions = aiValue; - case CMT_NO -> model.CmtNo = aiValue; - case GRAI -> model.Grai = aiValue; - case GIAI -> model.Giai = aiValue; - case PRICE_PER_UNIT -> model.PricePerUnit = aiValue; - case GCTIN -> model.Gctin = aiValue; - case IBAN -> model.Iban = aiValue; - case PROD_TIME -> model.ProdTime = convertToDateTime(aiValue); - case GSRN -> model.Gsrn = aiValue; - case REF_NO -> model.RefNo = aiValue; - case COUPON_1 -> model.Coupon1 = aiValue; - case COUPON_2 -> model.Coupon2 = aiValue; - case COUPON_3 -> model.Coupon3 = aiValue; - case INTERNAL_PART -> model.InternalPart = aiValue; - case INTERNAL_1 -> model.Internal1 = aiValue; - case INTERNAL_2 -> model.Internal2 = aiValue; - case INTERNAL_3 -> model.Internal3 = aiValue; - case INTERNAL_4 -> model.Internal4 = aiValue; - case INTERNAL_5 -> model.Internal5 = aiValue; - case INTERNAL_6 -> model.Internal6 = aiValue; - case INTERNAL_7 -> model.Internal7 = aiValue; - case INTERNAL_8 -> model.Internal8 = aiValue; - case INTERNAL_9 -> model.Internal9 = aiValue; + case COUNTRY_PROCESS -> model.CountryProcess = aiValue.toString(); + case COUNTRY_DISASSEMBLY -> model.CountryDisassembly = aiValue.toString(); + case COUNTRY_FULL_PROCESS -> model.CountryFullProcess = aiValue.toString(); + case NSN -> model.NSN = aiValue.toString(); + case MEAT_CUT -> model.MeatCut = aiValue.toString(); + case DIMENSIONS -> model.Dimensions = aiValue.toString(); + case CMT_NO -> model.CmtNo = aiValue.toString(); + case GRAI -> model.Grai = aiValue.toString(); + case GIAI -> model.Giai = aiValue.toString(); + case PRICE_PER_UNIT -> model.PricePerUnit = aiValue.toString(); + case GCTIN -> model.Gctin = aiValue.toString(); + case IBAN -> model.Iban = aiValue.toString(); + case PROD_TIME -> model.ProdTime = convertToDateTime(aiValue.toString()); + case GSRN -> model.Gsrn = aiValue.toString(); + case REF_NO -> model.RefNo = aiValue.toString(); + case COUPON_1 -> model.Coupon1 = aiValue.toString(); + case COUPON_2 -> model.Coupon2 = aiValue.toString(); + case COUPON_3 -> model.Coupon3 = aiValue.toString(); + case INTERNAL_PART -> model.InternalPart = aiValue.toString(); + case INTERNAL_1 -> model.Internal1 = aiValue.toString(); + case INTERNAL_2 -> model.Internal2 = aiValue.toString(); + case INTERNAL_3 -> model.Internal3 = aiValue.toString(); + case INTERNAL_4 -> model.Internal4 = aiValue.toString(); + case INTERNAL_5 -> model.Internal5 = aiValue.toString(); + case INTERNAL_6 -> model.Internal6 = aiValue.toString(); + case INTERNAL_7 -> model.Internal7 = aiValue.toString(); + case INTERNAL_8 -> model.Internal8 = aiValue.toString(); + case INTERNAL_9 -> model.Internal9 = aiValue.toString(); default -> { } } @@ -289,14 +287,14 @@ public class UtilityBarcodeEan128 { } - private static float convertToDecimalString(String sourceString, int numberOfdecimalDigits) { + private float convertToDecimalString(String sourceString, int numberOfdecimalDigits) { int divider = (int) Math.pow(10, numberOfdecimalDigits); return Float.parseFloat(sourceString) / divider; } - private static Ean128ISOValueModel convertToIsoValueModel(String sourceString, int numberOfDecimalDigits, Callable castFunc, CallableII splitFunc) { + private Ean128ISOValueModel convertToIsoValueModel(String sourceString, int numberOfDecimalDigits, Callable castFunc, CallableII splitFunc) { String isoCode = sourceString.substring(0, 3); T value = castFunc.call(splitFunc.call(sourceString.substring(3), numberOfDecimalDigits)); @@ -308,7 +306,7 @@ public class UtilityBarcodeEan128 { return isoModel; } - private static Date convertToDateTime(String sourceString) { + private Date convertToDateTime(String sourceString) { int year = Integer.parseInt(sourceString.substring(0, 2)); //Se l'anno รจ minore di 50 indica 2000-2050 altrimenti 1951-1999 @@ -320,14 +318,13 @@ public class UtilityBarcodeEan128 { Date d = null; try { - @SuppressLint("SimpleDateFormat") SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); d = formatter.parse(day + "/" + month + "/" + correctedYear); } catch (ParseException e) { e.printStackTrace(); } return d; - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java index ea97f448..51474031 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java @@ -3,16 +3,22 @@ package it.integry.integrywmsnative.core.rest.consumers; import javax.inject.Singleton; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.ean128.Ean128Service; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.model.Ean128Model; -import it.integry.integrywmsnative.core.utility.BarcodeEan128.UtilityBarcodeEan128; @Singleton public class BarcodeRESTConsumer extends _BaseRESTConsumer { + private final Ean128Service ean128Service; + + public BarcodeRESTConsumer(Ean128Service ean128Service) { + this.ean128Service = ean128Service; + } + public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) { try { - onComplete.run(UtilityBarcodeEan128.decode(barcodeObj)); + onComplete.run(this.ean128Service.decode(barcodeObj)); } catch (Exception e){ onFailed.run(e); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java index e5bbf592..98bcacec 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java @@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.rest.model; import java.util.Date; -import it.integry.integrywmsnative.core.utility.BarcodeEan128.Ean128ISOValueModel; +import it.integry.integrywmsnative.core.ean128.Ean128ISOValueModel; public class Ean128Model { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java index 137c1bcc..d726e2d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java @@ -713,7 +713,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A this.fabPopupMenu.dismiss(); this.onLoadingStarted(); - this.mViewModel.createNewLU(null, null, false, () -> { + this.mViewModel.createNewLU(null, null, null, false, () -> { this.onLoadingEnded(); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java index a83b471a..cbd87f03 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_picking; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.ean128.Ean128Service; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer; @@ -33,14 +34,15 @@ public class AccettazioneOrdiniPickingModule { PrinterRESTConsumer printerRESTConsumer, AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer, ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, - ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) { + ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, + Ean128Service ean128Service) { return new AccettazioneOrdiniPickingViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, accettazioneOrdiniPickingRESTConsumer, colliAccettazioneRESTConsumer, - colliLavorazioneRESTConsumer); + colliLavorazioneRESTConsumer, ean128Service); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index 46914200..e628e7c5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -16,6 +16,7 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.CommonConst; +import it.integry.integrywmsnative.core.ean128.Ean128Service; import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException; import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException; import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException; @@ -31,6 +32,7 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -52,12 +54,10 @@ import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.BarcodeEan128.UtilityBarcodeEan128; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.HistoryMtbAartDTO; @@ -76,6 +76,7 @@ public class AccettazioneOrdiniPickingViewModel { private final AccettazioneOrdiniPickingRESTConsumer mAccettazioneOrdiniPickingRESTConsumer; private final ColliAccettazioneRESTConsumer mColliAccettazioneRESTConsumer; private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer; + private final Ean128Service mEan128Service; private ColliCaricoRESTConsumerInterface mColliCaricoRESTConsumer; @@ -97,7 +98,8 @@ public class AccettazioneOrdiniPickingViewModel { PrinterRESTConsumer printerRESTConsumer, AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer, ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, - ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) { + ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, + Ean128Service ean128Service) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; @@ -105,6 +107,7 @@ public class AccettazioneOrdiniPickingViewModel { this.mAccettazioneOrdiniPickingRESTConsumer = accettazioneOrdiniPickingRESTConsumer; this.mColliAccettazioneRESTConsumer = colliAccettazioneRESTConsumer; this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer; + this.mEan128Service = ean128Service; } @@ -211,10 +214,10 @@ public class AccettazioneOrdiniPickingViewModel { //dell'etichetta anonima this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); } else { - if (SettingsManager.iDB().isFlagAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)){ - this.executeBarcodeFornitore(barcodeScanDTO); - }else{ - this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete); + if (SettingsManager.iDB().isFlagAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.executeSSCCFornitore(barcodeScanDTO, onComplete); + } else { + this.processBarcodeNotOpenedLU(barcodeScanDTO, null, onComplete); } } @@ -227,13 +230,14 @@ public class AccettazioneOrdiniPickingViewModel { } } - private void executeBarcodeFornitore(BarcodeScanDTO barcodeScanDTO) { - try{ - Ean128Model ean128Model = UtilityBarcodeEan128.decode(barcodeScanDTO); + private void executeSSCCFornitore(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + try { + Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO); - String barcodeProd = null; - if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc; - }catch (Exception e){ + //Nel caso trovo un SSCC lo aggiungo + this.processBarcodeNotOpenedLU(barcodeScanDTO, ean128Model.Sscc, onComplete); + + } catch (Exception e) { this.sendError(e); } } @@ -250,6 +254,7 @@ public class AccettazioneOrdiniPickingViewModel { try { numCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()); this.createNewLU( + null, numCollo, CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, true, onComplete); } catch (Exception ex) { @@ -263,12 +268,17 @@ public class AccettazioneOrdiniPickingViewModel { }, this::sendError); } - private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, String customSSCC, Runnable onComplete) { this.createNewLU( + customSSCC, null, null, false, - () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete)); + () -> { + if(UtilityString.isNullOrEmpty(customSSCC)) + processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete); + else onComplete.run(); + }); } private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -382,7 +392,7 @@ public class AccettazioneOrdiniPickingViewModel { } } - public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { + public void createNewLU(String customSSCC, Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { this.sendOnInfoAggiuntiveRequest((additionalNotes, tCol) -> { final List orders = Stream.of(this.mOrders) @@ -392,8 +402,8 @@ public class AccettazioneOrdiniPickingViewModel { .setDataOrd(UtilityDate.toLocalDate(x.getDataD())) .setNumOrd(x.getNumero()); - if(x.getGestioneEnum() == GestioneEnum.PRODUZIONE) { - if(x.isOrdTrasf()) + if (x.getGestioneEnum() == GestioneEnum.PRODUZIONE) { + if (x.isOrdTrasf()) createUDCRequestOrderDTO.setGestione(GestioneEnum.ACQUISTO.getText()); else createUDCRequestOrderDTO.setGestione(GestioneEnum.LAVORAZIONE.getText()); @@ -411,6 +421,7 @@ public class AccettazioneOrdiniPickingViewModel { .setCodTcol(tCol != null ? tCol.getCodTcol() : null) .setNumCollo(customNumCollo) .setSerCollo(customSerCollo) + .setBarcodeUl(customSSCC) .setOrders(orders); this.mColliCaricoRESTConsumer.createUDC(createUDCRequestDTO, createdUDS -> { @@ -803,8 +814,8 @@ public class AccettazioneOrdiniPickingViewModel { this.sendOnLoadingEnded(); } - private void calculateQtaDaEvadere(){ - if (SettingsManager.iDB().isFlagDeleteRowOnClose()){ + private void calculateQtaDaEvadere() { + if (SettingsManager.iDB().isFlagDeleteRowOnClose()) { for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { List withdrawMtbColrs = pickingObjectDTO.getWithdrawMtbColrs(); BigDecimal qtaEvasa = BigDecimal.ZERO; diff --git a/build.gradle b/build.gradle index b59726d4..7a03b6b3 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.9.0' - agp_version = '8.2.1' + agp_version = '8.2.2' } repositories {