Finish v1.36.06(399)

This commit is contained in:
Marco Elefante 2023-11-21 14:49:13 +01:00
commit 7c936bc387
17 changed files with 219 additions and 39 deletions

17
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="21088B8EFD" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-11-20T09:49:24.751485900Z" />
</component>
</project>

View File

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App"> <configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS.app.main" /> <module name="WMS_Native.app.main" />
<option name="DEPLOY" value="true" /> <option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" /> <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" /> <option name="DEPLOY_AS_INSTANT" value="false" />
@ -9,7 +9,6 @@
<option name="ALL_USERS" value="false" /> <option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" /> <option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="CLEAR_APP_STORAGE" value="false" /> <option name="CLEAR_APP_STORAGE" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base,WMS.dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" /> <option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" /> <option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="false" /> <option name="CLEAR_LOGCAT" value="false" />
@ -25,6 +24,8 @@
<option name="WORKING_DIR" value="" /> <option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" /> <option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Auto> </Auto>
<Hybrid> <Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
@ -32,14 +33,21 @@
<option name="WORKING_DIR" value="" /> <option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" /> <option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Hybrid> </Hybrid>
<Java /> <Java>
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Java>
<Native> <Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" /> <option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" /> <option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" /> <option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Native> </Native>
<Profilers> <Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" /> <option name="ADVANCED_PROFILING_ENABLED" value="false" />

View File

@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 398 def appVersionCode = 399
def appVersionName = '1.36.05' def appVersionName = '1.36.06'
signingConfigs { signingConfigs {
release { release {

View File

@ -69,6 +69,7 @@ public class DBSettingsModel {
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false; private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false;
private boolean flagEnableFastPickAccettazioneBolla = false; private boolean flagEnableFastPickAccettazioneBolla = false;
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false; private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
private boolean flagOverflowQuantityWarning = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@ -556,4 +557,13 @@ public class DBSettingsModel {
this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla; this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla;
return this; return this;
} }
public boolean isFlagOverflowQuantityWarning() {
return flagOverflowQuantityWarning;
}
public DBSettingsModel setFlagOverflowQuantityWarning(boolean flagOverflowQuantityWarning) {
this.flagOverflowQuantityWarning = flagOverflowQuantityWarning;
return this;
}
} }

View File

@ -470,6 +470,12 @@ public class SettingsManager {
.setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA") .setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA")
.setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_OVERFLOW_QUANTITY_WARNING")
.setSetter(dbSettingsModelIstance::setFlagOverflowQuantityWarning)
.setDefaultValue(false));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();

View File

@ -333,13 +333,13 @@ public class AccettazioneBollaPickingViewModel {
pickingObjectDTO.setTempPickData(pickData); pickingObjectDTO.setTempPickData(pickData);
} }
this.loadMatchedRows(matchPickingObject, mtbAart); this.loadMatchedRows(matchPickingObject, mtbAart, pickData);
onComplete.run(); onComplete.run();
} }
private void loadMatchedRows(List<PickingObjectDTO> matchedRows, MtbAart mtbAart) { private void loadMatchedRows(List<PickingObjectDTO> matchedRows, MtbAart mtbAart, PickDataDTO pickDataDTO) {
if (matchedRows == null || matchedRows.size() == 0) { if (matchedRows == null || matchedRows.size() == 0) {
manageNoArtFound(mtbAart); manageNoArtFound(mtbAart, pickDataDTO);
} else if (matchedRows.size() == 1) { } else if (matchedRows.size() == 1) {
this.manageDispatchBollaRow(matchedRows.get(0)); this.manageDispatchBollaRow(matchedRows.get(0));
} else { } else {
@ -375,11 +375,12 @@ public class AccettazioneBollaPickingViewModel {
} }
private void manageNoArtFound(MtbAart mtbAart) { private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) {
if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) { if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) {
this.manageDispatchBollaRow(new PickingObjectDTO() this.manageDispatchBollaRow(new PickingObjectDTO()
.setMtbAart(mtbAart)); .setMtbAart(mtbAart)
.setTempPickData(pickDataDTO));
} else } else
this.sendError(new NoArtsFoundException()); this.sendError(new NoArtsFoundException());
} }
@ -418,12 +419,21 @@ public class AccettazioneBollaPickingViewModel {
} }
public void manageDispatchBollaRow(final PickingObjectDTO pickingObjectDTO) { public void manageDispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
String partitaMag = null;
if(pickingObjectDTO.getTempPickData() != null){
if(pickingObjectDTO.getTempPickData().getManualPickDTO() != null){
if(pickingObjectDTO.getTempPickData().getManualPickDTO().getMtbPartitaMag() != null){
partitaMag = pickingObjectDTO.getTempPickData().getManualPickDTO().getMtbPartitaMag().getPartitaMag();
}
}
}
if (SettingsManager.iDB().isFlagEnableFastPickAccettazioneBolla()) { if (SettingsManager.iDB().isFlagEnableFastPickAccettazioneBolla()) {
this.saveNewRow(pickingObjectDTO, this.saveNewRow(pickingObjectDTO,
BigDecimal.ONE, BigDecimal.ONE,
pickingObjectDTO.getMtbAart().getQtaCnf(), pickingObjectDTO.getMtbAart().getQtaCnf(),
pickingObjectDTO.getMtbAart().getQtaCnf(), pickingObjectDTO.getMtbAart().getQtaCnf(),
null, partitaMag,
null, null,
false); false);

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
@ -33,6 +34,17 @@ public class SitArtOrdDTO {
private String descrizioneCommessa; private String descrizioneCommessa;
private String termCons; private String termCons;
private String descrizioneEstesaArt; private String descrizioneEstesaArt;
private String descrizioneEstesaOrd;
private Date dataCons;
public String getDescrizioneEstesaOrd() {
return descrizioneEstesaOrd;
}
public SitArtOrdDTO setDescrizioneEstesaOrd(String descrizioneEstesaOrd) {
this.descrizioneEstesaOrd = descrizioneEstesaOrd;
return this;
}
public String getCodJcom() { public String getCodJcom() {
return codJcom; return codJcom;
@ -280,4 +292,13 @@ public class SitArtOrdDTO {
this.descrizioneEstesaArt = descrizioneEstesaArt; this.descrizioneEstesaArt = descrizioneEstesaArt;
return this; return this;
} }
public Date getDataCons() {
return dataCons;
}
public SitArtOrdDTO setDataCons(Date dataCons) {
this.dataCons = dataCons;
return this;
}
} }

View File

@ -47,6 +47,7 @@ import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@ -415,6 +416,8 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG)); accettazioneOrdiniPickingListModel.setBadge1(UtilityString.isNull(x.getSitArtOrdDTO().getCodJcom(), CommonConst.Config.COMMESSA_MAG));
accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd())); accettazioneOrdiniPickingListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
accettazioneOrdiniPickingListModel.setSubDescrizione1("Consegna: " + UtilityDate.formatDate(x.getSitArtOrdDTO().getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa()); accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
if (x.getMtbAart() != null) if (x.getMtbAart() != null)
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione()); accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
@ -585,8 +588,9 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col)); accettazioneOrdiniPickingListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
} }
accettazioneOrdiniPickingListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneEstesaOrd());
if (x.getMtbAart() != null) { if (x.getMtbAart() != null) {
accettazioneOrdiniPickingListModel.setDescrizione(x.getMtbAart().getDescrizioneEstesa());
accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione()); accettazioneOrdiniPickingListModel.setPosizione(x.getMtbAart().getPosizione());
} }
@ -788,7 +792,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
} }
@Override @Override
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) { public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, String customArtDescription, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
.setMtbAart(mtbAart) .setMtbAart(mtbAart)
.setInitialNumCnf(initialNumCnf) .setInitialNumCnf(initialNumCnf)
@ -807,7 +811,8 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
.setDataScad(dataScad) .setDataScad(dataScad)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanOverflowOrderQuantity(canOverflowQuantity); .setCanOverflowOrderQuantity(canOverflowQuantity)
.setCustomArtDescription(customArtDescription);
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View mDialogInputQuantityV2View

View File

@ -539,6 +539,7 @@ public class AccettazioneOrdiniPickingViewModel {
partitaMag, partitaMag,
dataScad, dataScad,
true, true,
pickingObjectDTO.getSitArtOrdDTO().getDescrizioneEstesaOrd(),
(pickedQuantityDTO, shouldCloseLU) -> { (pickedQuantityDTO, shouldCloseLU) -> {
this.saveNewRow(pickingObjectDTO, this.saveNewRow(pickingObjectDTO,
pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getNumCnf(),
@ -625,6 +626,7 @@ public class AccettazioneOrdiniPickingViewModel {
mtbColrToEdit.getPartitaMag(), mtbColrToEdit.getPartitaMag(),
mtbColrToEdit.getDataScadPartita(), mtbColrToEdit.getDataScadPartita(),
true, true,
null,
(pickedQuantityDTO, shouldCloseLU) -> { (pickedQuantityDTO, shouldCloseLU) -> {
this.saveEditedRow(mtbColrToEdit, this.saveEditedRow(mtbColrToEdit,
@ -883,6 +885,7 @@ public class AccettazioneOrdiniPickingViewModel {
String partitaMag, String partitaMag,
LocalDate dataScad, LocalDate dataScad,
boolean canPartitaMagBeChanged, boolean canPartitaMagBeChanged,
String customArtDescription,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) { RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO,
mtbAart, mtbAart,
@ -902,6 +905,7 @@ public class AccettazioneOrdiniPickingViewModel {
dataScad, dataScad,
canPartitaMagBeChanged, canPartitaMagBeChanged,
true, true,
customArtDescription,
onComplete); onComplete);
} }
@ -958,6 +962,7 @@ public class AccettazioneOrdiniPickingViewModel {
LocalDate dataScad, LocalDate dataScad,
boolean canPartitaMagBeChanged, boolean canPartitaMagBeChanged,
boolean canOverflowQuantity, boolean canOverflowQuantity,
String customArtDescription,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete); RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onFilterCodMartApplied(String codMartToFilter); void onFilterCodMartApplied(String codMartToFilter);

View File

@ -21,6 +21,7 @@ import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.AccettazioneOrdineInevasoMainListGroupHeaderBinding; import it.integry.integrywmsnative.databinding.AccettazioneOrdineInevasoMainListGroupHeaderBinding;
@ -119,7 +120,10 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA
holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione()); holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione());
holder.mBinding.descrizione.setTextColor(pickingObjectDTO.isDescrizionePresente() ? Color.BLACK : Color.GRAY); holder.mBinding.descrizione.setTextColor(pickingObjectDTO.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
holder.mBinding.descrizione.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getDescrizione()) ? View.GONE : View.VISIBLE);
holder.mBinding.descrizioneSub1.setText(pickingObjectDTO.getSubDescrizione1());
holder.mBinding.descrizioneSub1.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione1()) ? View.GONE : View.VISIBLE);
holder.mBinding.badge1.setText(pickingObjectDTO.getBadge1()); holder.mBinding.badge1.setText(pickingObjectDTO.getBadge1());
holder.mBinding.badge2.setText(pickingObjectDTO.getBadge2()); holder.mBinding.badge2.setText(pickingObjectDTO.getBadge2());

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_picking.ui;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.PickingObjectDTO;

View File

@ -849,6 +849,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setPartitaMag(partitaMag) .setPartitaMag(partitaMag)
.setDataScad(dataScad) .setDataScad(dataScad)
.setCanOverflowOrderQuantity(canOverflowOrderQuantity) .setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagOverflowQuantityWarning())
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null) .setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)

View File

@ -44,6 +44,7 @@ public class DialogInputQuantityV2DTO {
private boolean saveOnImeDone = false; private boolean saveOnImeDone = false;
private boolean notifyProductLotStatus = false; private boolean notifyProductLotStatus = false;
private boolean disableTracciabilitaCheck = false; private boolean disableTracciabilitaCheck = false;
private boolean warnOnQuantityOverflow = false;
private StatoArticoloDTO statoPartitaMag; private StatoArticoloDTO statoPartitaMag;
@ -54,6 +55,8 @@ public class DialogInputQuantityV2DTO {
private boolean canOverflowOrderQuantity; private boolean canOverflowOrderQuantity;
private String customArtDescription;
public MtbAart getMtbAart() { public MtbAart getMtbAart() {
return mtbAart; return mtbAart;
} }
@ -359,4 +362,22 @@ public class DialogInputQuantityV2DTO {
this.disableTracciabilitaCheck = disableTracciabilitaCheck; this.disableTracciabilitaCheck = disableTracciabilitaCheck;
return this; return this;
} }
public String getCustomArtDescription() {
return customArtDescription;
}
public DialogInputQuantityV2DTO setCustomArtDescription(String customArtDescription) {
this.customArtDescription = customArtDescription;
return this;
}
public boolean isWarnOnQuantityOverflow() {
return warnOnQuantityOverflow;
}
public DialogInputQuantityV2DTO setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
return this;
}
} }

View File

@ -48,6 +48,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@ -151,6 +152,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
this.mViewModel this.mViewModel
.setMtbAart(mDialogInputQuantityV2DTO.getMtbAart()) .setMtbAart(mDialogInputQuantityV2DTO.getMtbAart())
.setArtDescription(UtilityString.isNull(mDialogInputQuantityV2DTO.getCustomArtDescription(), mDialogInputQuantityV2DTO.getMtbAart().getDescrizioneEstesa()))
.setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf()) .setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf())
.setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf()) .setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf())
.setInitialQtaTot(mDialogInputQuantityV2DTO.getInitialQtaTot()) .setInitialQtaTot(mDialogInputQuantityV2DTO.getInitialQtaTot())
@ -168,6 +170,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.setTotalQtaAvailable(mDialogInputQuantityV2DTO.getTotalQtaAvailable()) .setTotalQtaAvailable(mDialogInputQuantityV2DTO.getTotalQtaAvailable())
.setCanInputZeroQuantity(mDialogInputQuantityV2DTO.isCanInputZeroQuantity()) .setCanInputZeroQuantity(mDialogInputQuantityV2DTO.isCanInputZeroQuantity())
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity()) .setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
.setWarnOnQuantityOverflow(mDialogInputQuantityV2DTO.isWarnOnQuantityOverflow())
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable()) .setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable())
.setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag()) .setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag())
.setNote(mDialogInputQuantityV2DTO.getNote()) .setNote(mDialogInputQuantityV2DTO.getNote())
@ -254,19 +257,23 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
}; };
public void save() { public void save() {
if (this.mViewModel.validate()) { this.mViewModel.validate(validated -> {
this.mAbort = false; if (validated) {
dismiss(); this.mAbort = false;
this.mOnComplete.run(this.mViewModel.getResult(), false); dismiss();
} this.mOnComplete.run(this.mViewModel.getResult(), false);
}
});
} }
public void saveAndCloseLU() { public void saveAndCloseLU() {
if (this.mViewModel.validate()) { this.mViewModel.validate(validated -> {
this.mAbort = false; if (validated) {
dismiss(); this.mAbort = false;
this.mOnComplete.run(this.mViewModel.getResult(), true); dismiss();
} this.mOnComplete.run(this.mViewModel.getResult(), true);
}
});
} }
// @Override // @Override
@ -530,4 +537,13 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
} }
@Override
public void onWarning(String text, RunnableArgs<Boolean> result) {
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)),
null,
() -> result.run(true),
() -> result.run(false)
).show(requireActivity().getSupportFragmentManager(), "tag");
}
} }

View File

@ -3,11 +3,14 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@ -32,6 +35,7 @@ public class DialogInputQuantityV2ViewModel {
private final int UPDATE_QTA_TOT = 2; private final int UPDATE_QTA_TOT = 2;
public ObservableField<MtbAart> mtbAart = new ObservableField<>(); public ObservableField<MtbAart> mtbAart = new ObservableField<>();
public BindableString artDescription = new BindableString();
public ObservableField<Boolean> blockedNumCnf = new ObservableField<>(); public ObservableField<Boolean> blockedNumCnf = new ObservableField<>();
public ObservableField<Boolean> blockedQtaCnf = new ObservableField<>(); public ObservableField<Boolean> blockedQtaCnf = new ObservableField<>();
@ -78,6 +82,7 @@ public class DialogInputQuantityV2ViewModel {
private int onNumCnfInputChanged; private int onNumCnfInputChanged;
private int onQtaTotInputChanged; private int onQtaTotInputChanged;
private boolean disableTracciabilitaCheck; private boolean disableTracciabilitaCheck;
private boolean warnOnQuantityOverflow;
private Listener mListener; private Listener mListener;
@ -236,6 +241,11 @@ public class DialogInputQuantityV2ViewModel {
return this; return this;
} }
public DialogInputQuantityV2ViewModel setArtDescription(String artDescription) {
this.artDescription.set(artDescription);
return this;
}
public DialogInputQuantityV2ViewModel setInitialNumCnf(BigDecimal initialNumCnf) { public DialogInputQuantityV2ViewModel setInitialNumCnf(BigDecimal initialNumCnf) {
this.initialNumCnf = initialNumCnf; this.initialNumCnf = initialNumCnf;
return this; return this;
@ -326,6 +336,11 @@ public class DialogInputQuantityV2ViewModel {
return this; return this;
} }
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
return this;
}
public DialogInputQuantityV2ViewModel setCanPartitaMagBeChanged(boolean canPartitaMagBeChanged) { public DialogInputQuantityV2ViewModel setCanPartitaMagBeChanged(boolean canPartitaMagBeChanged) {
this.canPartitaMagBeChanged = canPartitaMagBeChanged; this.canPartitaMagBeChanged = canPartitaMagBeChanged;
return this; return this;
@ -450,11 +465,12 @@ public class DialogInputQuantityV2ViewModel {
this.blockedQtaTot.set(false); this.blockedQtaTot.set(false);
} }
public boolean validate() { public void validate(RunnableArgs<Boolean> onValidated) {
if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) {
this.mListener.onError(new InvalidQtaCnfQuantityException()); this.mListener.onError(new InvalidQtaCnfQuantityException());
return false; onValidated.run(false);
return;
} }
if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
@ -462,51 +478,59 @@ public class DialogInputQuantityV2ViewModel {
internalPartitaMag = suggestPartitaMagRunnable.run(this); internalPartitaMag = suggestPartitaMagRunnable.run(this);
if (internalPartitaMag == null) { if (internalPartitaMag == null) {
this.mListener.onError(new InvalidBatchLotException()); this.mListener.onError(new InvalidBatchLotException());
return false; onValidated.run(false);
return;
} }
} else { } else {
this.mListener.onError(new InvalidBatchLotException()); this.mListener.onError(new InvalidBatchLotException());
return false; onValidated.run(false);
return;
} }
} }
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
this.mListener.onError(new InvalidBatchLotException()); this.mListener.onError(new InvalidBatchLotException());
return false; onValidated.run(false);
return;
} }
if (this.shouldAskDataScad && this.internalDataScad == null) { if (this.shouldAskDataScad && this.internalDataScad == null) {
this.mListener.onError(new InvalidExpireDateException()); this.mListener.onError(new InvalidExpireDateException());
return false; onValidated.run(false);
return;
} }
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); this.mListener.onError(new OverflowQtaTotOrderedQuantityException());
return false; onValidated.run(false);
return;
} }
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); this.mListener.onError(new OverflowNumCnfOrderedQuantityException());
return false; onValidated.run(false);
return;
} }
if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) {
this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); this.mListener.onError(new OverflowQtaTotAvailableQuantityException());
return false; onValidated.run(false);
return;
} }
if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); this.mListener.onError(new OverflowNumCnfAvailableQuantityException());
return false; onValidated.run(false);
return;
} }
if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null ||
@ -515,17 +539,36 @@ public class DialogInputQuantityV2ViewModel {
UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) {
this.mListener.onError(new InvalidQuantityException()); this.mListener.onError(new InvalidQuantityException());
return false; onValidated.run(false);
return;
} }
if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) {
this.mListener.onError(new InvalidNotesException()); this.mListener.onError(new InvalidNotesException());
return false; onValidated.run(false);
return;
} }
if (!UtilityString.isNullOrEmpty(this.internalPartitaMag)) if (!UtilityString.isNullOrEmpty(this.internalPartitaMag))
this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); this.internalPartitaMag = this.internalPartitaMag.toUpperCase();
return true;
//Gli ultimi due controlli sono in coda a causa della callBack di onWarning, non eseguirebbe i controlli messi dopo
if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onWarning("Hai inserito una quantità superiore rispetto a quella presente nell'ordine. <br>Continuare?", onValidated);
return;
}
if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onWarning("Hai inserito una quantità superiore rispetto a quella presente nell'ordine. <br>Continuare?", onValidated);
return;
}
onValidated.run(true);
} }
public DialogInputQuantityV2ResultDTO getResult() { public DialogInputQuantityV2ResultDTO getResult() {
@ -536,7 +579,6 @@ public class DialogInputQuantityV2ViewModel {
.setQtaCnf(this.internalQtaCnf) .setQtaCnf(this.internalQtaCnf)
.setNote(this.internalNote) .setNote(this.internalNote)
.setQtaTot(this.internalQtaTot); .setQtaTot(this.internalQtaTot);
} }
public void setListener(Listener listener) { public void setListener(Listener listener) {
@ -570,5 +612,6 @@ public class DialogInputQuantityV2ViewModel {
void onDataChanged(); void onDataChanged();
void onError(Exception ex); void onError(Exception ex);
void onWarning(String text, RunnableArgs<Boolean> result);
} }
} }

View File

@ -147,6 +147,18 @@
android:textSize="16sp" android:textSize="16sp"
tools:text="DESCRIZIONE" /> tools:text="DESCRIZIONE" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/descrizione_sub_1"
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginTop="2dp"
android:layout_toStartOf="@id/secondary_unt_mis"
android:layout_below="@+id/descrizione"
android:textColor="@android:color/black"
android:textSize="14sp"
tools:text="DATA ORD" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/secondary_unt_mis" android:id="@+id/secondary_unt_mis"

View File

@ -108,7 +108,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:singleLine="false" android:singleLine="false"
android:text="@{viewmodel.mtbAart.descrizioneEstesa}" android:text="@{viewmodel.artDescription}"
tools:text="RAD 25 D H/L 200 - 10 EL B BIANCO" /> tools:text="RAD 25 D H/L 200 - 10 EL B BIANCO" />