aggiunto destinatario in creazione documenti trasferimento

corretta gestione modifica articolo in ordini acquisto pv
This commit is contained in:
Valerio Castellana 2022-12-16 12:50:56 +01:00
parent f5d78edfd1
commit ec44275e41
6 changed files with 80 additions and 93 deletions

View File

@ -1,17 +0,0 @@
<?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="20119B1E55" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-12-12T15:40:54.351888Z" />
</component>
</project>

View File

@ -15,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository {
@ -53,6 +54,7 @@ public class ArticoliOrdineDataSource extends BaseDataSource implements Articoli
}
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
articolo.setDataIns(UtilityDate.getDateInstance());
if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) {
execute(() -> mArticoloOrdineDao.update(articolo), onSuccess, onError);
} else {

View File

@ -26,6 +26,7 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
private String ragSocCom;
private String ragSocOrd;
private String destinatario;
private String codVdes;
private String citta;
private String provincia;
private String indirizzo;
@ -424,4 +425,13 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
return this;
}
}
public String getCodVdes() {
return codVdes;
}
public OrdineUscitaInevasoDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
}

View File

@ -159,15 +159,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
DialogAskActionView.newInstance(articoloOrdine.getDescrizione(),
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
() -> {
this.mViewModel.checkArticolo(articoloOrdine.getCodMart(),
artOrd -> {
this.onItemDispatched(artOrd);
BarcodeManager.enable();
},
this::onError);
BarcodeManager.enable();
},
() -> this.onItemDispatched(articoloOrdine, () -> {
}),
() -> {
this.deleteArticolo(articoloOrdine);
BarcodeManager.enable();
@ -186,23 +180,18 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
mBinding.closeActivityFab.close(false);
this.onLoadingStarted();
BarcodeManager.disable();
this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded);
this.mViewModel.processBarcode(data.getStringValue());
};
@Override
public void onItemDispatched(ArticoloOrdine articoloOrdine) {
public void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
DialogEditArticoloView
.newInstance(articoloOrdine, articolo -> {
runOnUiThread(() -> {
if (articolo != null) {
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
}
this.mViewModel.refreshListArticoli();
this.mViewModel.refreshListArticoli(onSuccess);
});
}, null).show(this.getSupportFragmentManager(), "DialogEditArticoloView");
}
@ -233,16 +222,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
public void manualSearch() {
BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> {
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", barcode -> {
this.onLoadingStarted();
this.mViewModel.checkArticolo(codice,
articoloOrdine -> {
this.onItemDispatched(articoloOrdine);
this.onLoadingEnded();
BarcodeManager.enable();
},
this::onError
);
this.mViewModel.processBarcode(barcode);
}, BarcodeManager::enable).show();
}

View File

@ -12,8 +12,8 @@ import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
@ -69,19 +69,23 @@ public class PVOrdineAcquistoEditViewModel {
public void init(Ordine ordine, List<ArticoloDTO> articoliGriglia) {
this.mCurrentOrdine = ordine;
this.sendOnLoadingStarted();
mArticoliGriglia.clear();
mArticoliGriglia.addAll(articoliGriglia);
this.refreshListArticoli();
}
public void refreshListArticoli() {
refreshListArticoli(null);
}
public void refreshListArticoli(Runnable onSuccess) {
this.sendOnLoadingStarted();
this.loadArticoli(mCurrentOrdine, articoli -> {
articoli = Stream.of(articoli).map(this::completeDataArticoli).toList();
articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
this.mArticoli.postValue(articoli);
this.sendOnLoadingEnded();
if (onSuccess != null)
onSuccess.run();
});
}
@ -92,6 +96,12 @@ public class PVOrdineAcquistoEditViewModel {
art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta()));
art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita()));
art.setBgTint(getBgTint(art));
art.setMediaSett(artGrid.getMediaSett());
art.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile());
art.setMerceDaRic(artGrid.getMerceDaRic());
art.setNewNoPromo(artGrid.isNewNoPromo());
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
art.setSystemNote(artGrid.generateSystemNote());
return art;
}
@ -111,15 +121,26 @@ public class PVOrdineAcquistoEditViewModel {
return mArticoli;
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
this.checkArticolo(
barcodeScanDTO.getStringValue(),
articoloOrdine -> {
this.sendOnItemDispatched(articoloOrdine);
onComplete.run();
},
this::sendError
);
public void processBarcode(String barcode) {
try {
BarcodeManager.disable();
this.sendOnLoadingStarted();
ArticoloDTO articoloDTO = getArticoloFromBarcode(barcode);
if (articoloDTO == null) {
throw new NoResultFromBarcodeException(barcode);
}
this.addArticoloToOrdine(
articoloDTO,
BarcodeManager::enable,
e -> {
this.sendError(e);
BarcodeManager.enable();
}
);
} catch (Exception e) {
this.sendError(e);
BarcodeManager.enable();
}
}
private void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad) {
@ -130,42 +151,17 @@ public class PVOrdineAcquistoEditViewModel {
}
}
public void checkArticolo(String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
public void addArticoloToOrdine(ArticoloDTO art, Runnable onSuccess, RunnableArgs<Exception> onFail) {
try {
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
onFail.run(new NoArtsInGridException());
return;
}
ArticoloDTO art = Stream.of(mArticoliGriglia).filter(articolo ->
articolo.getCodMart().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
if (art == null) {
onFail.run(new NoResultFromBarcodeException(barcode));
return;
}
mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, (articolo) -> {
this.sendOnLoadingEnded();
if (articolo != null) {
if (isAutoOrderOnScan()) {
articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf());
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, this::refreshListArticoli, this::sendError);
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail);
} else {
articolo
.setQtaPrevistaVendita(BigDecimal.valueOf(art.getQtaPrevistaVendita()))
.setQtaProposta(BigDecimal.valueOf(art.getQtaProposta()))
.setGiacenza(BigDecimal.valueOf(art.getGiacenza()))
.setMediaSett(art.getMediaSett());
articolo.setQtaMinOrdinabile(art.getQtaMinOrdinabile());
articolo.setMerceDaRic(art.getMerceDaRic());
articolo.setNewNoPromo(art.isNewNoPromo());
articolo.setFlagQtaMultipla(art.getFlagQtaMultipla());
articolo.setSystemNote(art.generateSystemNote());
onSuccess.run(articolo);
this.sendOnItemDispatched(articolo, onSuccess);
}
@ -173,9 +169,9 @@ public class PVOrdineAcquistoEditViewModel {
articolo = art.convertToArticoloOrdine(mCurrentOrdine);
if (isAutoOrderOnScan()) {
articolo.setQtaOrd(articolo.getQtaCnf());
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, this::refreshListArticoli, this::sendError);
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail);
} else {
onSuccess.run(articolo);
this.sendOnItemDispatched(articolo, onSuccess);
}
}
}, onFail);
@ -186,6 +182,19 @@ public class PVOrdineAcquistoEditViewModel {
}
}
public ArticoloDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException {
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
throw new NoArtsInGridException();
}
return Stream.of(mArticoliGriglia).filter(articolo ->
articolo.getCodMart().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(barcode) ||
articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
}
private boolean isAutoOrderOnScan() {
return SettingsManager.iDB().isFlagOrdinaArticoliOnScan();
}
@ -195,8 +204,6 @@ public class PVOrdineAcquistoEditViewModel {
}
public void orderNewProducts() {
this.sendOnLoadingStarted();
List<ArticoloDTO> newArts = getNewArticoli();
if (!newArts.isEmpty()) {
List<ArticoloOrdine> articoliToSave = new ArrayList<>();
@ -243,8 +250,8 @@ public class PVOrdineAcquistoEditViewModel {
}, this::sendError);
}
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine) {
if (this.mListener != null) mListener.onItemDispatched(articoloOrdine);
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
if (this.mListener != null) mListener.onItemDispatched(articoloOrdine, onSuccess);
}
private void sendOnLoadingStarted() {
@ -260,7 +267,7 @@ public class PVOrdineAcquistoEditViewModel {
}
public interface Listener extends ILoadingListener {
void onItemDispatched(ArticoloOrdine articoloOrdine);
void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
int getColorFromResource(int resId);

View File

@ -1734,10 +1734,13 @@ public class SpedizioneViewModel {
var loadCollidto = new LoadColliDTO();
var codAnag = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getCodAnagOrd).withoutNulls().distinctBy(x -> x).findFirst().get();
var codVdes = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getCodVdes).withoutNulls().distinctBy(x -> x).findFirst().get();
loadCollidto.setColli(getCreatedMtbColts());
loadCollidto.setCodDtip(SettingsManager.iDB().getCodDtipOrdTrasfV());
loadCollidto.setCodMdep(mDefaultCodMdep);
loadCollidto.setCodAnag(codAnag);
loadCollidto.setCodVdes(codVdes);
loadCollidto.setSaveDoc(true);
loadCollidto.setGestione("L");