In accettazione da bolla aggiunta possibilità di scansionare barcode non presenti in bolla o anche barcode non riconosciuti (con delle note)
This commit is contained in:
parent
99f21b19f1
commit
a7dbe55ad2
@ -102,6 +102,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM
|
|||||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
|
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
|
||||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
|
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
|
||||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
|
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
|
||||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
|
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
|
||||||
@ -186,7 +188,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
|
|||||||
DialogSelectArtToOrderModule.class,
|
DialogSelectArtToOrderModule.class,
|
||||||
MainAccettazioneBollaElencoModule.class,
|
MainAccettazioneBollaElencoModule.class,
|
||||||
AccettazioneBollaPickingModule.class,
|
AccettazioneBollaPickingModule.class,
|
||||||
DialogBindProductBarcodeWithPackageModule.class
|
DialogBindProductBarcodeWithPackageModule.class,
|
||||||
|
DialogAskUnknownBarcodeNotesModule.class
|
||||||
})
|
})
|
||||||
public interface MainApplicationComponent {
|
public interface MainApplicationComponent {
|
||||||
|
|
||||||
@ -313,6 +316,7 @@ public interface MainApplicationComponent {
|
|||||||
AccettazioneBollaPickingComponent.Factory accettazioneBollaPickingComponent();
|
AccettazioneBollaPickingComponent.Factory accettazioneBollaPickingComponent();
|
||||||
|
|
||||||
DialogBindProductBarcodeWithPackageComponent.Factory dialogBindProductBarcodeWithPackageComponent();
|
DialogBindProductBarcodeWithPackageComponent.Factory dialogBindProductBarcodeWithPackageComponent();
|
||||||
|
DialogAskUnknownBarcodeNotesComponent.Factory dialogAskUnknownBarcodeNotesComponent();
|
||||||
|
|
||||||
void inject(MainApplication mainApplication);
|
void inject(MainApplication mainApplication);
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,8 @@ public class InsertUDCRowRequestDTO {
|
|||||||
private MtbColt targetMtbColt;
|
private MtbColt targetMtbColt;
|
||||||
|
|
||||||
private String codMart;
|
private String codMart;
|
||||||
|
private String descrizione;
|
||||||
|
private String barcode;
|
||||||
private BigDecimal qtaTot;
|
private BigDecimal qtaTot;
|
||||||
private BigDecimal qtaCnf;
|
private BigDecimal qtaCnf;
|
||||||
private BigDecimal numCnf;
|
private BigDecimal numCnf;
|
||||||
@ -45,6 +47,24 @@ public class InsertUDCRowRequestDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDescrizione() {
|
||||||
|
return descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InsertUDCRowRequestDTO setDescrizione(String descrizione) {
|
||||||
|
this.descrizione = descrizione;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBarcode() {
|
||||||
|
return barcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InsertUDCRowRequestDTO setBarcode(String barcode) {
|
||||||
|
this.barcode = barcode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public BigDecimal getQtaTot() {
|
public BigDecimal getQtaTot() {
|
||||||
return qtaTot;
|
return qtaTot;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,6 +66,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagAskTipoColloAccettazioneBolla = false;
|
private boolean flagAskTipoColloAccettazioneBolla = false;
|
||||||
private boolean flagAskVersamentoAutomaticoAccettazioneBolla = false;
|
private boolean flagAskVersamentoAutomaticoAccettazioneBolla = false;
|
||||||
private boolean flagCanAddUnknownItemsAccettazioneBolla = false;
|
private boolean flagCanAddUnknownItemsAccettazioneBolla = false;
|
||||||
|
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false;
|
||||||
|
|
||||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||||
return flagSpedizioneEnableFakeGiacenza;
|
return flagSpedizioneEnableFakeGiacenza;
|
||||||
@ -526,4 +527,13 @@ public class DBSettingsModel {
|
|||||||
this.flagCanAddUnknownItemsAccettazioneBolla = flagCanAddUnknownItemsAccettazioneBolla;
|
this.flagCanAddUnknownItemsAccettazioneBolla = flagCanAddUnknownItemsAccettazioneBolla;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagCanAddUnknownBarcodesAccettazioneBolla() {
|
||||||
|
return flagCanAddUnknownBarcodesAccettazioneBolla;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagCanAddUnknownBarcodesAccettazioneBolla(boolean flagCanAddUnknownBarcodesAccettazioneBolla) {
|
||||||
|
this.flagCanAddUnknownBarcodesAccettazioneBolla = flagCanAddUnknownBarcodesAccettazioneBolla;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -404,6 +404,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("ACCETTAZIONE_BOLLA")
|
.setSection("ACCETTAZIONE_BOLLA")
|
||||||
.setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS"));
|
.setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("ACCETTAZIONE_BOLLA")
|
||||||
|
.setKeySection("FLAG_CAN_ADD_UNKNOWN_BARCODES"));
|
||||||
|
|
||||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
|
|
||||||
@ -450,6 +454,7 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setFlagAskTipoColloAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_ASK_TIPO_COLLO", Boolean.class, Boolean.FALSE));
|
dbSettingsModelIstance.setFlagAskTipoColloAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_ASK_TIPO_COLLO", Boolean.class, Boolean.FALSE));
|
||||||
dbSettingsModelIstance.setFlagAskVersamentoAutomaticoAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_ASK_VERSAMENTO_AUTOMATICO", Boolean.class, Boolean.FALSE));
|
dbSettingsModelIstance.setFlagAskVersamentoAutomaticoAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_ASK_VERSAMENTO_AUTOMATICO", Boolean.class, Boolean.FALSE));
|
||||||
dbSettingsModelIstance.setFlagCanAddUnknownItemsAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_CAN_ADD_UNKNOWN_ITEMS", Boolean.class, Boolean.FALSE));
|
dbSettingsModelIstance.setFlagCanAddUnknownItemsAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_CAN_ADD_UNKNOWN_ITEMS", Boolean.class, Boolean.FALSE));
|
||||||
|
dbSettingsModelIstance.setFlagCanAddUnknownBarcodesAccettazioneBolla(getValueFromList(list, "ACCETTAZIONE_BOLLA", "FLAG_CAN_ADD_UNKNOWN_BARCODES", Boolean.class, Boolean.FALSE));
|
||||||
|
|
||||||
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
|
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
|
||||||
if (notePerdita != null)
|
if (notePerdita != null)
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
package it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto;
|
package it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class TestataBollaAccettazioneDTO {
|
public class TestataBollaAccettazioneDTO {
|
||||||
private String codAnag;
|
private String codAnag;
|
||||||
private String ragSoc;
|
private String ragSoc;
|
||||||
private String codDtip;
|
private String codDtip;
|
||||||
private Date dataDoc;
|
private LocalDate dataDoc;
|
||||||
private String serDoc;
|
private String serDoc;
|
||||||
private int numDoc;
|
private int numDoc;
|
||||||
private String listino;
|
private String listino;
|
||||||
@ -25,7 +25,7 @@ public class TestataBollaAccettazioneDTO {
|
|||||||
return codDtip;
|
return codDtip;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getDataDoc() {
|
public LocalDate getDataDoc() {
|
||||||
return dataDoc;
|
return dataDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -60,6 +60,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
|||||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
||||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
|
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageView;
|
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU;
|
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU;
|
||||||
@ -199,7 +200,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
|||||||
});
|
});
|
||||||
|
|
||||||
adapter.setOnItemClicked(clickedItem -> {
|
adapter.setOnItemClicked(clickedItem -> {
|
||||||
this.mViewModel.dispatchOrdineRow(clickedItem);
|
this.mViewModel.dispatchBollaRow(clickedItem);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -540,9 +541,9 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUnknownBarcodeScanned(String barcode) {
|
public void onUnknownBarcodeScanned(String barcode, RunnableArgs<String> done, Runnable abort) {
|
||||||
DialogBindProductBarcodeWithPackageView
|
DialogAskUnknownBarcodeNotesView
|
||||||
.newInstance(barcode, null)
|
.newInstance(barcode, done, abort)
|
||||||
.show(getSupportFragmentManager(), DialogBindProductBarcodeWithPackageView.class.getName());
|
.show(getSupportFragmentManager(), DialogBindProductBarcodeWithPackageView.class.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import it.integry.integrywmsnative.core.CommonConst;
|
|||||||
import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException;
|
import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException;
|
||||||
import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException;
|
import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||||
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
|
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
@ -66,7 +67,6 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
|||||||
public class AccettazioneBollaPickingViewModel {
|
public class AccettazioneBollaPickingViewModel {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||||
@ -76,12 +76,9 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
|
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private ColliCaricoRESTConsumerInterface mColliCaricoRESTConsumer;
|
private ColliCaricoRESTConsumerInterface mColliCaricoRESTConsumer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Listener mListener;
|
private Listener mListener;
|
||||||
|
|
||||||
private List<TestataBollaAccettazioneDTO> mBolle;
|
private List<TestataBollaAccettazioneDTO> mBolle;
|
||||||
@ -117,7 +114,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
|
|
||||||
List<SitBollaAccettazioneDTO> mSitArts = Stream.of(sitArts)
|
List<SitBollaAccettazioneDTO> mSitArts = Stream.of(sitArts)
|
||||||
.filter(x ->
|
.filter(x ->
|
||||||
UtilityBigDecimal.greaterThan(x.getQtaDaAccettare(), BigDecimal.ZERO))
|
UtilityBigDecimal.greaterThan(x.getQtaDaAccettare(), BigDecimal.ZERO))
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
getEmptyPickingList(mSitArts, this.mPickingList::postValue);
|
getEmptyPickingList(mSitArts, this.mPickingList::postValue);
|
||||||
@ -170,7 +167,6 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void retrieveExistentLU(RunnableArgs<List<AlreadyRegisteredUDCDTO>> onComplete) {
|
public void retrieveExistentLU(RunnableArgs<List<AlreadyRegisteredUDCDTO>> onComplete) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
@ -319,8 +315,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||||
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
|
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
|
||||||
} else {
|
} else {
|
||||||
onComplete.run();
|
this.manageUnknownBarcode(barcodeProd, onComplete);
|
||||||
this.sendOnUnknownBarcodeScanned(barcodeProd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
@ -338,15 +333,15 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
pickingObjectDTO.setTempPickData(pickData);
|
pickingObjectDTO.setTempPickData(pickData);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.loadMatchedRows(matchPickingObject);
|
this.loadMatchedRows(matchPickingObject, mtbAart);
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadMatchedRows(List<PickingObjectDTO> matchedRows) {
|
private void loadMatchedRows(List<PickingObjectDTO> matchedRows, MtbAart mtbAart) {
|
||||||
if (matchedRows == null || matchedRows.size() == 0) {
|
if (matchedRows == null || matchedRows.size() == 0) {
|
||||||
this.sendError(new NoArtsFoundException());
|
manageNoArtFound(mtbAart);
|
||||||
} else if (matchedRows.size() == 1) {
|
} else if (matchedRows.size() == 1) {
|
||||||
this.dispatchOrdineRow(matchedRows.get(0));
|
this.dispatchBollaRow(matchedRows.get(0));
|
||||||
} else {
|
} else {
|
||||||
//So che il codMart sarà solo 1
|
//So che il codMart sarà solo 1
|
||||||
var firstCodMart = Stream.of(matchedRows)
|
var firstCodMart = Stream.of(matchedRows)
|
||||||
@ -360,10 +355,38 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void manageUnknownBarcode(String barcode, Runnable onComplete) {
|
||||||
|
if (SettingsManager.iDB().isFlagCanAddUnknownBarcodesAccettazioneBolla()) {
|
||||||
|
//TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato
|
||||||
|
this.sendOnUnknownBarcodeScanned(barcode, notes -> {
|
||||||
|
this.dispatchBollaRow(new PickingObjectDTO()
|
||||||
|
.setMtbAart(new MtbAart()
|
||||||
|
.setDescrizione(notes)
|
||||||
|
.setDescrizioneEstesa(notes)
|
||||||
|
.setFlagTracciabilita("N")
|
||||||
|
.setFlagQtaCnfFissa("S")
|
||||||
|
.setQtaCnf(BigDecimal.ONE)
|
||||||
|
.setBarCode(barcode)));
|
||||||
|
onComplete.run();
|
||||||
|
}, onComplete);
|
||||||
|
} else {
|
||||||
|
this.sendError(new NoResultFromBarcodeException(barcode));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void manageNoArtFound(MtbAart mtbAart) {
|
||||||
|
if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) {
|
||||||
|
|
||||||
|
this.dispatchBollaRow(new PickingObjectDTO()
|
||||||
|
.setMtbAart(mtbAart));
|
||||||
|
} else
|
||||||
|
this.sendError(new NoArtsFoundException());
|
||||||
|
}
|
||||||
|
|
||||||
public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) {
|
public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) {
|
||||||
this.manageInfoAggiuntiveRequest((additionalNotes, tCol) -> {
|
this.manageInfoAggiuntiveRequest((additionalNotes, tCol) -> {
|
||||||
|
|
||||||
|
|
||||||
final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO()
|
final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO()
|
||||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||||
.setAnnotazioni(additionalNotes)
|
.setAnnotazioni(additionalNotes)
|
||||||
@ -386,7 +409,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void manageInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
|
private void manageInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
|
||||||
if(!SettingsManager.iDB().isFlagAskTipoColloAccettazioneBolla()) {
|
if (!SettingsManager.iDB().isFlagAskTipoColloAccettazioneBolla()) {
|
||||||
onComplete.run(null, null);
|
onComplete.run(null, null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -394,13 +417,9 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
this.sendOnInfoAggiuntiveRequest(onComplete);
|
this.sendOnInfoAggiuntiveRequest(onComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) {
|
public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
|
||||||
if (this.mCurrentMtbColt == null) return;
|
if (this.mCurrentMtbColt == null) return;
|
||||||
|
|
||||||
BigDecimal totalQtaDoc = pickingObjectDTO.getSitBollaAccettazione().getQtaDaAccettare();
|
|
||||||
BigDecimal totalNumCnfDoc = pickingObjectDTO.getSitBollaAccettazione().getNumCnfDaAccettare();
|
|
||||||
BigDecimal qtaCnfDoc = pickingObjectDTO.getSitBollaAccettazione().getQtaCnfDoc();
|
|
||||||
|
|
||||||
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
|
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
|
||||||
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal();
|
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal();
|
||||||
|
|
||||||
@ -410,12 +429,30 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||||
});
|
});
|
||||||
|
|
||||||
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitBollaAccettazione().getNumCnfDaAccettare().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
BigDecimal totalQtaDoc = null;
|
||||||
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitBollaAccettazione().getQtaDaAccettare().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
BigDecimal totalNumCnfDoc = null;
|
||||||
BigDecimal qtaCnfDaEvadere = qtaCnfDoc;
|
BigDecimal qtaCnfDoc = null;
|
||||||
|
|
||||||
numCnfDaEvadere = UtilityBigDecimal.getGreaterBetween(numCnfDaEvadere, BigDecimal.ZERO);
|
BigDecimal numCnfDaEvadere = null;
|
||||||
qtaDaEvadere = UtilityBigDecimal.getGreaterBetween(qtaDaEvadere, BigDecimal.ZERO);
|
BigDecimal qtaDaEvadere = null;
|
||||||
|
BigDecimal qtaCnfDaEvadere = null;
|
||||||
|
|
||||||
|
final MtbAart mtbAart = pickingObjectDTO.getMtbAart();
|
||||||
|
final SitBollaAccettazioneDTO sitBollaAccettazione = pickingObjectDTO.getSitBollaAccettazione();
|
||||||
|
|
||||||
|
if (sitBollaAccettazione != null) {
|
||||||
|
|
||||||
|
totalQtaDoc = sitBollaAccettazione.getQtaDaAccettare();
|
||||||
|
totalNumCnfDoc = sitBollaAccettazione.getNumCnfDaAccettare();
|
||||||
|
qtaCnfDoc = sitBollaAccettazione.getQtaCnfDoc();
|
||||||
|
|
||||||
|
numCnfDaEvadere = sitBollaAccettazione.getNumCnfDaAccettare().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
||||||
|
qtaDaEvadere = sitBollaAccettazione.getQtaDaAccettare().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
||||||
|
qtaCnfDaEvadere = qtaCnfDoc;
|
||||||
|
|
||||||
|
numCnfDaEvadere = UtilityBigDecimal.getGreaterBetween(numCnfDaEvadere, BigDecimal.ZERO);
|
||||||
|
qtaDaEvadere = UtilityBigDecimal.getGreaterBetween(qtaDaEvadere, BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
BigDecimal numCnfDaPrelevare = null;
|
BigDecimal numCnfDaPrelevare = null;
|
||||||
BigDecimal qtaColDaPrelevare = null;
|
BigDecimal qtaColDaPrelevare = null;
|
||||||
@ -427,7 +464,6 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
||||||
//Oppure le info del barcode scansionato
|
//Oppure le info del barcode scansionato
|
||||||
PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO();
|
PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO();
|
||||||
MtbAart mtbAart = pickingObjectDTO.getMtbAart();
|
|
||||||
|
|
||||||
|
|
||||||
qtaColDaPrelevare = manualPickDTO.getQtaTot();
|
qtaColDaPrelevare = manualPickDTO.getQtaTot();
|
||||||
@ -478,10 +514,14 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
initialQtaCnf = qtaCnfDaPrelevare;
|
initialQtaCnf = qtaCnfDaPrelevare;
|
||||||
initialQtaTot = qtaColDaPrelevare;
|
initialQtaTot = qtaColDaPrelevare;
|
||||||
|
|
||||||
} else {
|
} else if (totalQtaDoc != null) {
|
||||||
initialNumCnf = totalNumCnfDoc;
|
initialNumCnf = totalNumCnfDoc;
|
||||||
initialQtaCnf = qtaCnfDoc;
|
initialQtaCnf = qtaCnfDoc;
|
||||||
initialQtaTot = totalQtaDoc;
|
initialQtaTot = totalQtaDoc;
|
||||||
|
} else {
|
||||||
|
initialNumCnf = BigDecimal.ONE;
|
||||||
|
initialQtaCnf = mtbAart.getQtaCnf();
|
||||||
|
initialQtaTot = mtbAart.getQtaCnf();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.mUseQtaBolla &&
|
if (!this.mUseQtaBolla &&
|
||||||
@ -497,7 +537,10 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (partitaMag == null && dataScad == null) {
|
if (partitaMag == null && dataScad == null) {
|
||||||
HistoryMtbAartDTO historyMtbAartDTO = this.getHistoryItemIfExists(pickingObjectDTO.getMtbAart().getCodMart());
|
HistoryMtbAartDTO historyMtbAartDTO =
|
||||||
|
pickingObjectDTO.getMtbAart().getCodMart() != null ?
|
||||||
|
this.getHistoryItemByCodMartIfExists(pickingObjectDTO.getMtbAart().getCodMart()) :
|
||||||
|
this.getHistoryItemByBarcodeIfExists(pickingObjectDTO.getMtbAart().getBarCode());
|
||||||
|
|
||||||
if (historyMtbAartDTO != null) {
|
if (historyMtbAartDTO != null) {
|
||||||
partitaMag = historyMtbAartDTO.getPartitaMag();
|
partitaMag = historyMtbAartDTO.getPartitaMag();
|
||||||
@ -548,17 +591,22 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
var clonedTargetMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
var clonedTargetMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||||
clonedTargetMtbColt.setMtbColr(null);
|
clonedTargetMtbColt.setMtbColr(null);
|
||||||
|
|
||||||
|
var sitBolla = pickingObjectDTO.getSitBollaAccettazione();
|
||||||
|
var firstAvailableBolla = mBolle.get(0);
|
||||||
|
|
||||||
var insertUDCRowRequestDto = new InsertUDCRowRequestDTO()
|
var insertUDCRowRequestDto = new InsertUDCRowRequestDTO()
|
||||||
.setCodMart(pickingObjectDTO.getMtbAart().getCodMart())
|
.setCodMart(pickingObjectDTO.getMtbAart().getCodMart())
|
||||||
|
.setDescrizione(pickingObjectDTO.getMtbAart().getCodMart() == null ? pickingObjectDTO.getMtbAart().getDescrizione() : null)
|
||||||
|
.setBarcode(pickingObjectDTO.getMtbAart().getBarCode())
|
||||||
.setQtaTot(qtaTot)
|
.setQtaTot(qtaTot)
|
||||||
.setQtaCnf(qtaCnf)
|
.setQtaCnf(qtaCnf)
|
||||||
.setNumCnf(numCnf)
|
.setNumCnf(numCnf)
|
||||||
.setPartitaMag(partitaMag)
|
.setPartitaMag(partitaMag)
|
||||||
// .setCodJcom(pickingObjectDTO.getSitBollaAccettazione().getCodJcom())
|
// .setCodJcom(pickingObjectDTO.getSitBollaAccettazione().getCodJcom())
|
||||||
.setDataDoc(pickingObjectDTO.getSitBollaAccettazione().getDataDoc())
|
.setDataDoc(sitBolla != null ? sitBolla.getDataDoc() : firstAvailableBolla.getDataDoc())
|
||||||
.setNumDoc(pickingObjectDTO.getSitBollaAccettazione().getNumDoc())
|
.setNumDoc(sitBolla != null ? sitBolla.getNumDoc() : firstAvailableBolla.getNumDoc())
|
||||||
.setCodDtip(pickingObjectDTO.getSitBollaAccettazione().getCodDtip())
|
.setCodDtip(sitBolla != null ? sitBolla.getCodDtip() : firstAvailableBolla.getCodDtip())
|
||||||
.setSerDoc(pickingObjectDTO.getSitBollaAccettazione().getSerDoc())
|
.setSerDoc(sitBolla != null ? sitBolla.getSerDoc() : firstAvailableBolla.getSerDoc())
|
||||||
.setTargetMtbColt(clonedTargetMtbColt);
|
.setTargetMtbColt(clonedTargetMtbColt);
|
||||||
|
|
||||||
if (dataScad != null)
|
if (dataScad != null)
|
||||||
@ -728,7 +776,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
|
|
||||||
private void manageVersamentoAutomatico(Runnable onComplete) {
|
private void manageVersamentoAutomatico(Runnable onComplete) {
|
||||||
|
|
||||||
if(!SettingsManager.iDB().isFlagAskVersamentoAutomaticoAccettazioneBolla()) {
|
if (!SettingsManager.iDB().isFlagAskVersamentoAutomaticoAccettazioneBolla()) {
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -751,7 +799,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void managePrintCollo(Runnable onComplete) {
|
private void managePrintCollo(Runnable onComplete) {
|
||||||
if(!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAskPrintUlAccettazioneBolla()) {
|
if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAskPrintUlAccettazioneBolla()) {
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -799,7 +847,8 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
|
|
||||||
private void addHistoryItem(@NonNull MtbColr mtbColr) {
|
private void addHistoryItem(@NonNull MtbColr mtbColr) {
|
||||||
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||||
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()))
|
.filter(x -> (x.getCodMart() != null && x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) ||
|
||||||
|
(x.getCodMart() == null && x.getBarcode().equalsIgnoreCase(mtbColr.getCodBarre())))
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if (optional.isPresent()) {
|
if (optional.isPresent()) {
|
||||||
@ -809,12 +858,13 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
} else {
|
} else {
|
||||||
this.mHistoryUsedAarts.add(new HistoryMtbAartDTO()
|
this.mHistoryUsedAarts.add(new HistoryMtbAartDTO()
|
||||||
.setCodMart(mtbColr.getCodMart())
|
.setCodMart(mtbColr.getCodMart())
|
||||||
|
.setBarcode(mtbColr.getCodBarre())
|
||||||
.setPartitaMag(mtbColr.getPartitaMag())
|
.setPartitaMag(mtbColr.getPartitaMag())
|
||||||
.setDataScad(mtbColr.getDataScadPartita()));
|
.setDataScad(mtbColr.getDataScadPartita()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private HistoryMtbAartDTO getHistoryItemIfExists(@NonNull String codMart) {
|
private HistoryMtbAartDTO getHistoryItemByCodMartIfExists(@NonNull String codMart) {
|
||||||
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||||
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||||
.findFirst();
|
.findFirst();
|
||||||
@ -822,6 +872,14 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
return optional.isPresent() ? optional.get() : null;
|
return optional.isPresent() ? optional.get() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HistoryMtbAartDTO getHistoryItemByBarcodeIfExists(@NonNull String barcode) {
|
||||||
|
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||||
|
.filter(x -> x.getBarcode().equalsIgnoreCase(barcode))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
return optional.isPresent() ? optional.get() : null;
|
||||||
|
}
|
||||||
|
|
||||||
private void sendOnLoadingStarted() {
|
private void sendOnLoadingStarted() {
|
||||||
if (this.mListener != null) mListener.onLoadingStarted();
|
if (this.mListener != null) mListener.onLoadingStarted();
|
||||||
}
|
}
|
||||||
@ -919,9 +977,9 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete);
|
mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendOnUnknownBarcodeScanned(String barocde) {
|
private void sendOnUnknownBarcodeScanned(String barocde, RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||||
if (this.mListener != null)
|
if (this.mListener != null)
|
||||||
mListener.onUnknownBarcodeScanned(barocde);
|
mListener.onUnknownBarcodeScanned(barocde, onComplete, onAbort);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AccettazioneBollaPickingViewModel setListeners(Listener listener) {
|
public AccettazioneBollaPickingViewModel setListeners(Listener listener) {
|
||||||
@ -930,8 +988,6 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener, ILUPrintListener, ILUBaseOperationsListener {
|
public interface Listener extends ILoadingListener, ILUPrintListener, ILUBaseOperationsListener {
|
||||||
|
|
||||||
void onVersamentoAutomaticoULRequest(RunnableArgs<Boolean> onComplete);
|
void onVersamentoAutomaticoULRequest(RunnableArgs<Boolean> onComplete);
|
||||||
@ -966,7 +1022,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
|
|
||||||
void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete);
|
void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete);
|
||||||
|
|
||||||
void onUnknownBarcodeScanned(String barcode);
|
void onUnknownBarcodeScanned(String barcode, RunnableArgs<String> done, Runnable abort);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import java.time.LocalDate;
|
|||||||
public class HistoryMtbAartDTO {
|
public class HistoryMtbAartDTO {
|
||||||
|
|
||||||
private String codMart;
|
private String codMart;
|
||||||
|
private String barcode;
|
||||||
private String partitaMag;
|
private String partitaMag;
|
||||||
private LocalDate dataScad;
|
private LocalDate dataScad;
|
||||||
|
|
||||||
@ -17,6 +18,15 @@ public class HistoryMtbAartDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getBarcode() {
|
||||||
|
return barcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HistoryMtbAartDTO setBarcode(String barcode) {
|
||||||
|
this.barcode = barcode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public String getPartitaMag() {
|
public String getPartitaMag() {
|
||||||
return partitaMag;
|
return partitaMag;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -187,7 +187,10 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
private void cyclicRecover(Iterator<Integer> sessionsIterator, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
private void cyclicRecover(Iterator<Integer> sessionsIterator, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
|
||||||
RunnableArgss<Exception, Integer> tmpOnFailed = (ex, recoveredMtbColtID) -> {
|
RunnableArgss<Exception, Integer> tmpOnFailed = (ex, recoveredMtbColtID) -> {
|
||||||
if (ex.getMessage().contains("Dati entity mtb_colt non trovati") || ex.getMessage().contains("Dati collo non corretti") || (ex.getMessage().contains("Il collo numero") && ex.getMessage().contains("non esiste"))) {
|
if (ex.getMessage().contains("Dati entity mtb_colt non trovati") ||
|
||||||
|
ex.getMessage().contains("Dati collo non corretti") ||
|
||||||
|
(ex.getMessage().contains("Il collo numero") && ex.getMessage().contains("non esiste")) ||
|
||||||
|
ex.getMessage().contains("Impossibile eliminare un collo agganciato a documento")) {
|
||||||
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
||||||
onFailed.run(ex);
|
onFailed.run(ex);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -43,22 +43,27 @@ public class BottomSheetFragmentLUContentViewModel {
|
|||||||
|
|
||||||
public void calcPesi() {
|
public void calcPesi() {
|
||||||
MtbColt collo = this.mtbColt.get();
|
MtbColt collo = this.mtbColt.get();
|
||||||
if (collo != null) {
|
if (collo == null) return;
|
||||||
MtbTCol tipoPedana = collo.getMtbTCol();
|
|
||||||
BigDecimal taraPedana = tipoPedana != null ? tipoPedana.getTaraKg() : BigDecimal.ZERO;
|
MtbTCol tipoPedana = collo.getMtbTCol();
|
||||||
BigDecimal pesoNetto = BigDecimal.ZERO;
|
BigDecimal taraPedana = tipoPedana != null ? tipoPedana.getTaraKg() : BigDecimal.ZERO;
|
||||||
for (MtbColr mtbColr : collo.getMtbColr()) {
|
BigDecimal pesoNetto = BigDecimal.ZERO;
|
||||||
MtbAart articolo = mtbColr.getMtbAart();
|
|
||||||
if (articolo != null) {
|
for (MtbColr mtbColr : collo.getMtbColr()) {
|
||||||
BigDecimal pesoRiga = articolo.isFlagQtaCnfFissaBoolean() ? mtbColr.getNumCnf().multiply(articolo.getPesoKg()) : mtbColr.getQtaCol();
|
MtbAart articolo = mtbColr.getMtbAart();
|
||||||
BigDecimal pesoTara = articolo.getTaraKg().multiply(mtbColr.getNumCnf());
|
|
||||||
pesoRiga = pesoRiga.add(pesoTara);
|
if (articolo == null || articolo.getPesoKg() == null)
|
||||||
pesoNetto = pesoNetto.add(pesoRiga);
|
continue;
|
||||||
}
|
|
||||||
}
|
BigDecimal pesoRiga = articolo.isFlagQtaCnfFissaBoolean() ? mtbColr.getNumCnf().multiply(articolo.getPesoKg()) : mtbColr.getQtaCol();
|
||||||
this.pesoNettoKg.set(pesoNetto.setScale(2, RoundingMode.CEILING).toString());
|
BigDecimal pesoTara = articolo.getTaraKg().multiply(mtbColr.getNumCnf());
|
||||||
this.pesoKg.set(pesoNetto.add(taraPedana).setScale(2, RoundingMode.CEILING).toString());
|
pesoRiga = pesoRiga.add(pesoTara);
|
||||||
|
pesoNetto = pesoNetto.add(pesoRiga);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.pesoNettoKg.set(pesoNetto.setScale(2, RoundingMode.CEILING).toString());
|
||||||
|
this.pesoKg.set(pesoNetto.add(taraPedana).setScale(2, RoundingMode.CEILING).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface Listener {
|
public interface Listener {
|
||||||
|
|||||||
@ -0,0 +1,14 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface DialogAskUnknownBarcodeNotesComponent {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
DialogAskUnknownBarcodeNotesComponent create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void inject(DialogAskUnknownBarcodeNotesView dialogBindProductBarcodeWithPackageView);
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
|
|
||||||
|
@Module(subcomponents = DialogAskUnknownBarcodeNotesComponent.class)
|
||||||
|
public class DialogAskUnknownBarcodeNotesModule {
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
DialogAskUnknownBarcodeNotesViewModel providesDialogAskUnknownBarcodeNotesViewModel(ArticoloRESTConsumer articoloRESTConsumer) {
|
||||||
|
return new DialogAskUnknownBarcodeNotesViewModel(articoloRESTConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,128 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
|
||||||
|
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.BaseDialogFragment;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.databinding.DialogAskUnknownBarcodeNotesBinding;
|
||||||
|
|
||||||
|
public class DialogAskUnknownBarcodeNotesView extends BaseDialogFragment {
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogAskUnknownBarcodeNotesViewModel mViewModel;
|
||||||
|
|
||||||
|
private DialogAskUnknownBarcodeNotesBinding mBindings;
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
|
private final String unknownBarcode;
|
||||||
|
private final RunnableArgs<String> onComplete;
|
||||||
|
private final Runnable onAbort;
|
||||||
|
|
||||||
|
|
||||||
|
private int mBarcodeScannerIstanceID;
|
||||||
|
|
||||||
|
//Pass here all external parameters
|
||||||
|
public static DialogAskUnknownBarcodeNotesView newInstance(String unknownBarcode, RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||||
|
return new DialogAskUnknownBarcodeNotesView(unknownBarcode, onComplete, onAbort);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogAskUnknownBarcodeNotesView(String unknownBarcode, RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.unknownBarcode = unknownBarcode;
|
||||||
|
this.onComplete = onComplete;
|
||||||
|
this.onAbort = onAbort;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
|
this.mContext = requireContext();
|
||||||
|
|
||||||
|
mBindings = DialogAskUnknownBarcodeNotesBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||||
|
mBindings.setLifecycleOwner(this);
|
||||||
|
|
||||||
|
setCancelable(false);
|
||||||
|
|
||||||
|
MainApplication.appComponent
|
||||||
|
.dialogAskUnknownBarcodeNotesComponent()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
|
||||||
|
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||||
|
.setView(mBindings.getRoot())
|
||||||
|
.setPositiveButton(R.string.confirm, ((dialogInterface, i) -> {
|
||||||
|
if(this.onComplete != null) onComplete.run(mViewModel.userNotes.get());
|
||||||
|
}))
|
||||||
|
.setNegativeButton(R.string.abort, (dialogInterface, i) -> {
|
||||||
|
if(this.onAbort != null) onAbort.run();
|
||||||
|
})
|
||||||
|
.setCancelable(isCancelable())
|
||||||
|
.create();
|
||||||
|
|
||||||
|
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||||
|
alertDialog.setOnShowListener(this);
|
||||||
|
|
||||||
|
initBarcode();
|
||||||
|
mViewModel.init(unknownBarcode);
|
||||||
|
|
||||||
|
mBindings.setViewmodel(mViewModel);
|
||||||
|
|
||||||
|
return alertDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
|
||||||
|
BarcodeManager.enable();
|
||||||
|
super.onDismiss(dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void initBarcode() {
|
||||||
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
|
.setOnScanSuccessful(onScanSuccessfull)
|
||||||
|
.setOnScanFailed(this::onError));
|
||||||
|
BarcodeManager.enable();
|
||||||
|
setBarcodeListener(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||||
|
this.onLoadingStarted();
|
||||||
|
|
||||||
|
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||||
|
this.onLoadingEnded();
|
||||||
|
|
||||||
|
dismiss();
|
||||||
|
}, this::onError);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Exception ex) {
|
||||||
|
super.onError(ex);
|
||||||
|
BarcodeManager.enable();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes;
|
||||||
|
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import io.reactivex.Observable;
|
||||||
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
|
|
||||||
|
public class DialogAskUnknownBarcodeNotesViewModel {
|
||||||
|
public ObservableField<String> userNotes = new ObservableField<>();
|
||||||
|
|
||||||
|
private ArticoloRESTConsumer articoloRESTConsumer;
|
||||||
|
|
||||||
|
private String unknownBarcode;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public DialogAskUnknownBarcodeNotesViewModel(ArticoloRESTConsumer articoloRESTConsumer) {
|
||||||
|
this.articoloRESTConsumer = articoloRESTConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(String unknownBarcode) {
|
||||||
|
this.unknownBarcode = unknownBarcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO) ||
|
||||||
|
UtilityBarcode.isEtichettaPosizione(barcodeScanDTO) ||
|
||||||
|
UtilityBarcode.isEtichetta128(barcodeScanDTO) ||
|
||||||
|
UtilityBarcode.isEanPeso(barcodeScanDTO)) {
|
||||||
|
|
||||||
|
onFailed.run(new Exception("E' necessario scansionare un'etichetta EAN13 per procedere"));
|
||||||
|
} else {
|
||||||
|
this.loadArticolo(barcodeScanDTO.getStringValue(), onComplete, onFailed);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadArticolo(String stringValue, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
this.articoloRESTConsumer.searchByBarcode(stringValue, mtbAarts -> {
|
||||||
|
|
||||||
|
if(mtbAarts == null || mtbAarts.isEmpty()) {
|
||||||
|
onFailed.run(new Exception("Nessun articolo trovato con il barcode: " + stringValue));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mtbAarts.size() > 1) {
|
||||||
|
onFailed.run(new Exception("Sono stati trovati " + mtbAarts.size() + " articoli agganciati al barcode: " + stringValue));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var mtbAart = mtbAarts.get(0);
|
||||||
|
|
||||||
|
articoloRESTConsumer.updateBarcodeImballo(mtbAart.getCodMart(), unknownBarcode, onComplete, onFailed);
|
||||||
|
}, onFailed);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -83,7 +83,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="2"
|
||||||
android:paddingStart="0dp"
|
android:paddingStart="0dp"
|
||||||
android:paddingEnd="8dp"
|
android:paddingEnd="8dp"
|
||||||
android:text="@{mtbColr.getDescrizione()}"
|
android:text="@{mtbColr.getDescrizione()}"
|
||||||
|
|||||||
74
app/src/main/res/layout/dialog_ask_unknown_barcode_notes.xml
Normal file
74
app/src/main/res/layout/dialog_ask_unknown_barcode_notes.xml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
<variable
|
||||||
|
name="viewmodel"
|
||||||
|
type="it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesViewModel" />
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
android:paddingVertical="16dp">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
|
||||||
|
android:layout_width="36dp"
|
||||||
|
android:layout_height="36dp"
|
||||||
|
android:src="@drawable/ic_black_barcode_scanner"
|
||||||
|
app:tint="?colorPrimary" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/title_text"
|
||||||
|
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
android:text="Aggiungi una nota" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/description_text"
|
||||||
|
style="@style/TextAppearance.Material3.BodyMedium"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:text="Il barcode che hai scansionato non è stato riconosciuto, è necessario aggiungere delle note sul prodotto" />
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:hint="Note">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="false"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
app:binding="@{viewmodel.userNotes}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
</layout>
|
||||||
Loading…
x
Reference in New Issue
Block a user