diff --git a/app/build.gradle b/app/build.gradle index 98c748d9..55398606 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 269 - def appVersionName = '1.24.1' + def appVersionCode = 271 + def appVersionName = '1.24.3' signingConfigs { release { @@ -85,7 +85,6 @@ android { dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"] - } dependencies { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java index c19968d8..4723cd6b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java @@ -42,7 +42,7 @@ public class ColliDataRecoverService { } public boolean thereIsAnExistantSession() { - return mtbColtsSessions.size() > 0; + return mtbColtsSessions != null && mtbColtsSessions.size() > 0; } public List getAllSessionIDs() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index 950e296f..18107973 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -4,6 +4,7 @@ import androidx.room.Database; import androidx.room.RoomDatabase; import androidx.room.TypeConverters; +import it.integry.integrywmsnative.core.data_store.db.converter.BigDecimalConverter; import it.integry.integrywmsnative.core.data_store.db.converter.DateConverter; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao; @@ -20,7 +21,8 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; @Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 8, exportSchema = false) @TypeConverters({ - DateConverter.class + DateConverter.class, + BigDecimalConverter.class }) public abstract class AppDatabase extends RoomDatabase { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/converter/BigDecimalConverter.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/converter/BigDecimalConverter.java new file mode 100644 index 00000000..f801f8df --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/converter/BigDecimalConverter.java @@ -0,0 +1,17 @@ +package it.integry.integrywmsnative.core.data_store.db.converter; + +import androidx.room.TypeConverter; + +import java.math.BigDecimal; + +public class BigDecimalConverter { + @TypeConverter + public static BigDecimal fromFloat(Float value) { + return value == null ? null : BigDecimal.valueOf(value.doubleValue()); + } + + @TypeConverter + public static Float dateToTimestamp(BigDecimal value) { + return value == null ? null : value.floatValue(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java index e053f4ef..e7b43b26 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java @@ -8,9 +8,8 @@ import androidx.room.Update; import java.util.List; -import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; 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.wrappers.ArticoloOrdineWrapper; @Dao public interface ArticoloOrdineDao { @@ -34,8 +33,17 @@ public interface ArticoloOrdineDao { @Update void update(ArticoloOrdine articolo); - @Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId") - List findArticoliByOrdine(int ordineId); + @Query("SELECT articoli_ordine.*," + + "articoli_griglia.gg_scadenza," + + "articoli_griglia.giacenza," + + "articoli_griglia.qta_prevista_vendita," + + "articoli_griglia.qta_proposta " + + "FROM articoli_ordine " + + "INNER JOIN ordini on articoli_ordine.id_ordine = ordini.ordine_id " + + "LEFT OUTER JOIN articoli_griglia " + + "on articoli_ordine.cod_mart = articoli_griglia.cod_mart and ordini.id_griglia = articoli_griglia.id_griglia and articoli_ordine.bar_code = articoli_griglia.bar_code " + + "where id_ordine = :ordineId") + List findArticoliByOrdine(int ordineId); @Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1") ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java index 4706f3f5..37fe4fea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java @@ -82,6 +82,9 @@ public class ArticoloOrdine { @Ignore private BigDecimal qtaProposta = BigDecimal.ZERO; + @Ignore + private int bgTint; + public Integer getArticoloOrdineId() { return articoloOrdineId; @@ -244,6 +247,23 @@ public class ArticoloOrdine { } public float getCnfDaRic() { - return qtaCnf > 0.f ? merceDaRic / qtaCnf : 0; + return qtaCnf > 0.f ? merceDaRic * qtaCnf : 0; + } + + public int checkQtaProposta() { + int check = 0; + if (!qtaProposta.equals(BigDecimal.ZERO)) { + check = BigDecimal.valueOf(qtaOrd).compareTo(qtaProposta); + } + return check; + } + + public int getBgTint() { + return bgTint; + } + + public ArticoloOrdine setBgTint(int bgTint) { + this.bgTint = bgTint; + return this; } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java index a82c193e..cd1c3403 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.core.data_store.db.repository.implementations; +import com.annimon.stream.Stream; + import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; @@ -11,6 +13,7 @@ import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao; 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.data_store.db.wrappers.ArticoloOrdineWrapper; import it.integry.integrywmsnative.core.expansion.RunnableArgs; public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdineRepository { @@ -95,7 +98,15 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi public void findArticoliByOrdine(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) { execute(() -> { try { - onLoad.run(mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId())); + List list = mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()); + onLoad.run(Stream.of(list).map(x -> { + ArticoloOrdine art = x.getArticoloOrdine(); + art.setGgScadenza(x.getGgScadenza()); + art.setGiacenza(x.getGiacenza()); + art.setQtaProposta(x.getQtaProposta()); + art.setQtaPrevistaVendita(x.getQtaPrevistaVendita()); + return art; + }).toList()); } catch (Exception e) { onError.run(e); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/ArticoloOrdineWrapper.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/ArticoloOrdineWrapper.java new file mode 100644 index 00000000..b3060d16 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/ArticoloOrdineWrapper.java @@ -0,0 +1,65 @@ +package it.integry.integrywmsnative.core.data_store.db.wrappers; + +import androidx.room.ColumnInfo; +import androidx.room.Embedded; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; + +public class ArticoloOrdineWrapper { + @Embedded + private ArticoloOrdine articoloOrdine; + + @ColumnInfo(name = "gg_scadenza") + private int ggScadenza = 0; + + @ColumnInfo(name = "giacenza") + private BigDecimal giacenza = BigDecimal.ZERO; + + @ColumnInfo(name = "qta_prevista_vendita") + private BigDecimal qtaPrevistaVendita = BigDecimal.ZERO; + + @ColumnInfo(name = "qta_proposta") + private BigDecimal qtaProposta = BigDecimal.ZERO; + + public ArticoloOrdine getArticoloOrdine() { + return articoloOrdine; + } + + public void setArticoloOrdine(ArticoloOrdine articoloOrdine) { + this.articoloOrdine = articoloOrdine; + } + + public int getGgScadenza() { + return ggScadenza; + } + + public void setGgScadenza(int ggScadenza) { + this.ggScadenza = ggScadenza; + } + + public BigDecimal getGiacenza() { + return giacenza; + } + + public void setGiacenza(BigDecimal giacenza) { + this.giacenza = giacenza; + } + + public BigDecimal getQtaPrevistaVendita() { + return qtaPrevistaVendita; + } + + public void setQtaPrevistaVendita(BigDecimal qtaPrevistaVendita) { + this.qtaPrevistaVendita = qtaPrevistaVendita; + } + + public BigDecimal getQtaProposta() { + return qtaProposta; + } + + public void setQtaProposta(BigDecimal qtaProposta) { + this.qtaProposta = qtaProposta; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index 78f32639..09102422 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -119,6 +119,7 @@ public class MtbColt extends EntityBase { switch (gestioneEnum) { case ACQUISTO: case LAVORAZIONE: + case PRODUZIONE: if(SettingsManager.iDB().getInternalCodAnags() == null) break; Optional optCodAnagForn = Stream.of(SettingsManager.iDB().getInternalCodAnags()) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 8a5a9731..42bbb18e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -39,6 +39,7 @@ public class DBSettingsModel { private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; private boolean flagOrdinaNuoviArticoliInGriglia; + private boolean flagOrdinaArticoliOnScan; private String docInterniCheckFornitore; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; @@ -333,4 +334,14 @@ public class DBSettingsModel { this.flagPickLiberoAllowEmptyDest = flagPickLiberoAllowEmptyDest; return this; } + + + public boolean getFlagOrdinaArticoliOnScan() { + return flagOrdinaArticoliOnScan; + } + + public DBSettingsModel setFlagOrdinaArticoliOnScan(boolean flagOrdinaArticoliOnScan) { + this.flagOrdinaArticoliOnScan = flagOrdinaArticoliOnScan; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index e01b7eda..89e1eb08 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -92,7 +92,6 @@ public class SettingsManager { }; - onProgress.run("depositi"); loadAvailableCodMdeps(() -> { @@ -114,7 +113,7 @@ public class SettingsManager { SystemRESTConsumer.getAzienda(datiAzienda -> { SettingsManager.iDB().setDatiAzienda(datiAzienda); - if(!SettingsManager.iDB().isFlagUseCodAnagAziendale()) { + if (!SettingsManager.iDB().isFlagUseCodAnagAziendale()) { onComplete.run(); return; } @@ -127,7 +126,8 @@ public class SettingsManager { "LEFT OUTER JOIN vtb_clie vc on ga.cod_anag = vc.cod_anag AND vc.flag_stato = 'A'\n" + "LEFT OUTER JOIN atb_forn af on ga.cod_anag = af.cod_anag AND af.flag_stato = 'A'"; - Type type = new TypeToken>() {}.getType(); + Type type = new TypeToken>() { + }.getType(); SystemRESTConsumer.>processSqlStatic(internalCodAnagsQuery, type, internalCodAnagsList -> { SettingsManager.iDB().setInternalCodAnags(internalCodAnagsList); @@ -258,10 +258,6 @@ public class SettingsManager { .setGestName("PICKING") .setSection("PRODUZIONE") .setKeySection("FLAG_VERSAMENTO_DIRETTO")); - stbGestSetupList.add(new StbGestSetup() - .setGestName("PICKING") - .setSection("PRODUZIONE") - .setKeySection("DEFAULT_COD_ANAG")); stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SPEDIZIONE") @@ -294,6 +290,10 @@ public class SettingsManager { .setGestName("PVM") .setSection("ORDINI_A") .setKeySection("ORDINA_NUOVI_ARTICOLI")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("ORDINI_A") + .setKeySection("ORDINA_ARTICOLI_ON_SCAN")); stbGestSetupList.add(new StbGestSetup() .setGestName("PVM") .setSection("DOC_INTERNI") @@ -324,7 +324,6 @@ public class SettingsManager { dbSettingsModelIstance.setFlagAskPesoColloSpedizione(getValueFromList(list, "SETUP", "FLAG_ASK_PESO_COLLO", Boolean.class)); dbSettingsModelIstance.setFlagUseNewPickingListSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_NEW_PICKING_LIST", Boolean.class)); dbSettingsModelIstance.setFlagVersamentoDirettoProduzione(getValueFromList(list, "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO", Boolean.class)); - dbSettingsModelIstance.setProduzioneDefaultCodAnag(getValueFromList(list, "PRODUZIONE", "DEFAULT_COD_ANAG", String.class)); dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); @@ -334,6 +333,7 @@ public class SettingsManager { dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class)); dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class)); + dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class)); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); if (notePerdita != null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 4b11eb30..92e8382e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -246,7 +246,7 @@ public class PickingLiberoViewModel { MtbColt mtbColt = new MtbColt(); mtbColt.initDefaultFields(mDefaultGestione) .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null) - .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag()) +// .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag()) .setSegno(-1) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index 83b928fa..589f86a1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -160,7 +160,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi articoloOrdine.getDescrizione(), articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(), () -> { - this.onItemDispatched(articoloOrdine); + this.mViewModel.checkArticolo(mOrdine, articoloOrdine.getCodMart(), + artOrd -> { + this.onItemDispatched(artOrd); + BarcodeManager.enable(); + }, + this::onError); BarcodeManager.enable(); }, () -> { @@ -185,9 +190,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi mBinding.closeActivityFab.close(false); this.onLoadingStarted(); - this.mViewModel.processBarcodeDTO(data, () -> { - this.onLoadingEnded(); - }); + this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded); }; @@ -208,6 +211,11 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi }).show(this.getSupportFragmentManager(), "tag"); } + @Override + public int getColorFromResource(int resId) { + return getResources().getColor(resId); + } + public void exportOrdine() { this.mViewModel.exportOrdine(() -> { @@ -233,11 +241,13 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi BarcodeManager.disable(); DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> { this.onLoadingStarted(); - this.mViewModel.loadArticolo(codice, - () -> { + this.mViewModel.checkArticolo(mOrdine, codice, + articoloOrdine -> { + this.onItemDispatched(articoloOrdine); this.onLoadingEnded(); BarcodeManager.enable(); - } + }, + this::onError ); }, BarcodeManager::enable).show(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index 29cce26b..e6da19e0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -12,6 +12,7 @@ import java.util.Objects; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; @@ -23,6 +24,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepositor import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; public class PVOrdineAcquistoEditViewModel { @@ -70,15 +72,29 @@ public class PVOrdineAcquistoEditViewModel { this.loadGriglia(ordine.getIdGriglia(), griglia -> { mCurrentGriglia.postValue(griglia); - this.loadArticoli(mCurrentOrdine, articoli -> { + articoli = Stream.of(articoli).map(this::setBgTint).toList(); this.mArticoli.postValue(articoli); this.sendOnLoadingEnded(); - }); }); } + private ArticoloOrdine setBgTint(ArticoloOrdine art) { + int chk = art.checkQtaProposta(); + switch (chk) { + case -1: + art.setBgTint(this.mListener.getColorFromResource(R.color.red_600)); + break; + case 1: + art.setBgTint(this.mListener.getColorFromResource(R.color.orange_600)); + break; + default: + art.setBgTint(this.mListener.getColorFromResource(R.color.colorPrimary)); + } + return art; + } + public MutableLiveData getCurrentGriglia() { return mCurrentGriglia; } @@ -88,6 +104,7 @@ public class PVOrdineAcquistoEditViewModel { } public void saveArticolo(ArticoloOrdine articolo) { + setBgTint(articolo); var newList = this.mArticoli.getValue(); var alreadySavedItem = Stream.of(newList) @@ -101,29 +118,6 @@ public class PVOrdineAcquistoEditViewModel { } - public void loadArticolo(String barcode, Runnable onSuccess) { - try { - mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, barcode, (articolo) -> { - if (articolo != null) { - onSuccess.run(); - this.sendOnItemDispatched(articolo); - } else { - mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, mCurrentOrdine.getIdGriglia(), artGrid -> { - if (artGrid != null) { - onSuccess.run(); - this.sendOnItemDispatched(artGrid.convertToArticoloOrdine(mCurrentOrdine)); - } else { - this.sendError(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); - } - }, this::sendError); - } - }, this::sendError); - - } catch (Exception e) { - this.sendError(e); - } - } - public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { this.checkArticolo( mCurrentOrdine, @@ -153,15 +147,12 @@ public class PVOrdineAcquistoEditViewModel { } } - private void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { + public void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { try { mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> { if (artGrid != null) { - - mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> { if (articolo != null) { - articolo .setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita())) .setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta())) @@ -175,7 +166,17 @@ public class PVOrdineAcquistoEditViewModel { onSuccess.run(articolo); } else { - onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); + ArticoloOrdine art = artGrid.convertToArticoloOrdine(ordine); + if (isAutoOrderOnScan()) { + art.setQtaOrd(art.getQtaCnf()); + mArticoliOrdineRepository.saveArticoloToOrdine(art, () -> { + saveArticolo(art); + this.sendOnLoadingEnded(); + + }, this::sendError); + } else { + onSuccess.run(art); + } } }, onFail); @@ -190,6 +191,10 @@ public class PVOrdineAcquistoEditViewModel { } } + private boolean isAutoOrderOnScan() { + return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia(); + } + private void getNewArticoli(int idGrigla, RunnableArgs> onSuccess, RunnableArgs onError) { mArticoloGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError); } @@ -269,6 +274,8 @@ public class PVOrdineAcquistoEditViewModel { public interface Listener extends ILoadingListener { void onItemDispatched(ArticoloOrdine articoloOrdine); + int getColorFromResource(int resId); + void onError(Exception ex); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java index ce11e3ca..0a2188c2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java @@ -66,7 +66,7 @@ public class DialogEditArticoloViewModel { public void setQtaTot(BigDecimal newValue) { this.internalQtaTot = newValue; - + if (newValue == null) return; this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf) .setScale(0, RoundingMode.CEILING); @@ -104,7 +104,7 @@ public class DialogEditArticoloViewModel { public void save(RunnableArgs onComplete) { - if(UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) { + if (UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) { this.mListener.onError(new Exception("La quantità ordinata deve essere maggiore di 0")); return; } diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index 688eaf0e..c749808e 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -57,738 +57,744 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="vertical"> - + android:ellipsize="end" + android:text="@{viewmodel.mtbAart.codMart}" + android:textColor="@color/colorPrimary" + tools:text="COD MART (Partita mag)" /> - + android:ellipsize="end" + android:text="@{viewmodel.mtbAart.diacod}" + android:textColor="@color/red_600" + android:visibility="@{UtilityString.isNullOrEmpty(viewmodel.mtbAart.diacod) ? View.GONE : View.VISIBLE}" + tools:text="DIACOD" /> - - + android:layout_marginTop="4dp" + android:singleLine="false" + android:text="@{viewmodel.mtbAart.descrizioneEstesa}" + tools:text="RAD 25 D H/L 200 - 10 EL B BIANCO" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 6f0683a7..312fb1f0 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -48,765 +48,770 @@ - - - - - - - - - - - - - - - - + android:orientation="vertical"> - - - - + android:layout_marginTop="8dp"> + android:layout_alignParentStart="true" + android:layout_toStartOf="@id/unt_mis" + android:ellipsize="end" + android:text="@{viewmodel.mtbAart.codMart}" + android:textColor="@color/colorPrimary" + tools:text="COD MART (Partita mag)" /> - - - - - - - + android:textColor="@color/colorPrimary" + android:visibility="@{viewmodel.mtbAart.untMis != null ? View.VISIBLE : View.GONE}" + tools:text="UM" /> + + + + + + + + + + + + + + android:orientation="horizontal"> + + + + - + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + android:weightSum="1"> - - - + android:layout_gravity="center" + android:layout_marginEnd="2dp" + android:layout_weight="0.5" + android:background="@drawable/badge_round_corner" + android:backgroundTint="@color/green_600" + android:orientation="vertical" + android:padding="8dp" + android:visibility="@{viewmodel.totalNumCnfToBeTaken != null || viewmodel.totalQtaToBeTaken != null ? View.VISIBLE : View.GONE}"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + android:layout_weight="0.5" + android:background="@drawable/badge_round_corner" + android:backgroundTint="@color/colorPrimary" + android:orientation="vertical" + android:padding="8dp" + android:visibility="@{viewmodel.totalNumCnfAvailable != null || viewmodel.totalQtaAvailable != null ? View.VISIBLE : View.GONE}"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + android:layout_marginTop="8dp" + android:orientation="horizontal" + android:weightSum="2"> - - + android:layout_weight="@{viewmodel.shouldAskDataScad || viewmodel.shouldShowDataScad ? 1f : 2f}" + android:enabled="@{view.enabledChangePartitaMag}" + android:paddingEnd="4dp" + android:visibility="@{viewmodel.canPartitaMagBeChanged() || viewmodel.partitaMag != null ? View.VISIBLE : View.GONE}" + tools:layout_weight="1"> - + + + + + android:layout_weight="1" + android:enabled="@{view.enabledChangePartitaMag}" + android:visibility="@{viewmodel.shouldAskDataScad || viewmodel.shouldShowDataScad ? View.VISIBLE : View.GONE}"> - + android:focusableInTouchMode="false" + android:hint="@string/expire_date" + android:inputType="text" + app:binding="@{view.currentDataScad}" + app:parentView="@{view}" + app:warningOnOldDates="@{true}" /> - - - - - - - - - - - - - - - - - - + + android:layout_marginTop="8dp" + android:orientation="horizontal" + android:weightSum="3"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:paddingEnd="4dp" + tools:layout_weight="1"> - + + - - - - - - - + + + + + + + tools:layout_weight="1"> - + - - - - - - - - - - - + - + - - - + android:layout_marginTop="8dp" + android:orientation="horizontal" + android:visibility="@{viewmodel.mtbAart.isFlagQtaCnfFissaBoolean() ? View.GONE : View.VISIBLE}" + android:weightSum="3"> - + android:focusableInTouchMode="false" + android:paddingEnd="4dp" + tools:layout_weight="1"> - + - + - + + + + + + + tools:enabled="false" + tools:layout_weight="1"> - + - + + + + + + android:layout_marginTop="8dp" + android:orientation="horizontal"> - + android:enabled="@{view.enabledNotes}" + android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"> - + + + - + - - - + android:layout_margin="16dp" + android:gravity="center_horizontal" + android:orientation="horizontal" + android:weightSum="1"> - + android:layout_marginStart="0dp" + android:layout_marginEnd="4dp" + android:layout_weight="0.4" + android:onClick="@{() -> view.saveAndCloseLU()}" + android:text="@string/action_close_ul" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:strokeColor="@color/colorPrimary" + app:visibility="@{view.enabledLUCloseButton}" /> - + + + + + - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/dialog_pv_edit_articolo.xml b/app/src/main/res/layout/dialog_pv_edit_articolo.xml index 03ae4922..a06e93be 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -250,7 +250,7 @@ style="@style/AppTheme.NewMaterial.Text.Medium" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@{UtilityNumber.decimalToString(view.articolo.getCnfDaRic())}" + android:text="@{UtilityNumber.decimalToString(view.articolo.merceDaRic)}" android:textColor="@android:color/black" android:textStyle="bold" tools:text="1" /> @@ -281,7 +281,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="0dp" - android:text="@{UtilityNumber.decimalToString(view.articolo.merceDaRic)}" + android:text="@{UtilityNumber.decimalToString(view.articolo.getCnfDaRic())}" android:textColor="@android:color/black" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml index 055c1bcd..585543d8 100644 --- a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml +++ b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml @@ -94,7 +94,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/badge_round_corner" - android:backgroundTint="@color/colorPrimary" + android:backgroundTint="@{articolo.bgTint}" android:gravity="center" android:paddingLeft="6dp" android:paddingTop="2dp" @@ -104,6 +104,7 @@ android:textColor="@android:color/white" android:textSize="16sp" android:textStyle="bold" + tools:backgroundTint="@color/colorPrimary" tools:text="280.45\nCONF" />