Finish Popup_InfoArticolo

This commit is contained in:
Giuseppe Scorrano 2023-03-16 19:26:21 +01:00
commit 4f2dfb82e6
28 changed files with 1282 additions and 41 deletions

View File

@ -80,6 +80,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent;
@ -172,7 +174,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
BottomSheetMtbColrEditModalModule.class, BottomSheetMtbColrEditModalModule.class,
DialogChooseArtsFromMtbAartListModule.class, DialogChooseArtsFromMtbAartListModule.class,
MainSettingsModule.class, MainSettingsModule.class,
DialogInfoSituazioneArticoloModule.class
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
@ -290,6 +292,8 @@ public interface MainApplicationComponent {
MainSettingsComponent.Factory mainSettingsFragmentComponent(); MainSettingsComponent.Factory mainSettingsFragmentComponent();
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);

View File

@ -15,6 +15,7 @@ import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragm
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloView;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
@ -58,7 +59,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.vendita_title_fragment) .setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione) .setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_upload) .setDrawerIcon(R.drawable.ic_upload)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, DialogInfoSituazioneArticoloView.class)))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(R.id.nav_rettifica_spedizione) .setID(R.id.nav_rettifica_spedizione)
@ -107,9 +108,9 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking) .setID(R.id.nav_free_lav_picking)
.setCodMenu("MG051") .setCodMenu("MG051")
.setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking) .setTitleText(R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) .setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
.addItem(new MenuItem() .addItem(new MenuItem()
@ -117,7 +118,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setCodMenu("MG052") .setCodMenu("MG052")
.setTitleText(R.string.prod_fabbisogno_linee_prod_title) .setTitleText(R.string.prod_fabbisogno_linee_prod_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) .setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance)) .setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
.addItem(new MenuItem() .addItem(new MenuItem()
@ -137,19 +138,19 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce) .setID(R.id.nav_prod_rientro_merce)
.setCodMenu("MG059") .setCodMenu("MG059")
.setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title) .setTitleText(R.string.rientro_merce_fragment_title)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) .setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRientroMerceFragment::newInstance)) .setFragmentFactory(ProdRientroMerceFragment::newInstance))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_linee) .setID(R.id.nav_prod_linee)
.setCodMenu("MG061") .setCodMenu("MG061")
.setTitleText(it.integry.integrywmsnative.R.string.nav_prod_linee_title) .setTitleText(R.string.nav_prod_linee_title)
.setTitleIcon(R.drawable.ic_production_line) .setTitleIcon(R.drawable.ic_production_line)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_production_line) .setDrawerIcon(R.drawable.ic_production_line)
.setFragmentFactory(ProdLineeProduzioneFragment::newInstance)) .setFragmentFactory(ProdLineeProduzioneFragment::newInstance))
).addGroup( ).addGroup(
new MenuGroup() new MenuGroup()

View File

@ -860,4 +860,9 @@ public class MtbAart extends EntityBase {
this.numCnfImpegnata = numCnfImpegnata; this.numCnfImpegnata = numCnfImpegnata;
return this; return this;
} }
public MtbUntMis getFirstUntMis() {
return getMtbUntMis() != null && !getMtbUntMis().isEmpty() ? getMtbUntMis().get(0) : null;
}
} }

View File

@ -38,6 +38,7 @@ public class MtbUntMis extends EntityBase {
} }
public BigDecimal getCifreDec() { public BigDecimal getCifreDec() {
if(isFlagDig()) return BigDecimal.ZERO;
return cifreDec; return cifreDec;
} }

View File

@ -1,7 +1,9 @@
package it.integry.integrywmsnative.core.model; package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.time.LocalDate;
import it.integry.integrywmsnative.core.utility.UtilityDate;
/** /**
* Created by ValerioC on 06/03/2018. * Created by ValerioC on 06/03/2018.
@ -10,7 +12,7 @@ import java.util.Date;
public class MvwSitArtUdcDetInventario { public class MvwSitArtUdcDetInventario {
private String gestione; private String gestione;
private Date dataCollo; private LocalDate dataCollo;
private String serCollo; private String serCollo;
private Integer numCollo; private Integer numCollo;
private Integer segno; private Integer segno;
@ -25,6 +27,7 @@ public class MvwSitArtUdcDetInventario {
private String diacod; private String diacod;
private String descrizioneEstesa; private String descrizioneEstesa;
private String partitaMag; private String partitaMag;
private LocalDate dataScad;
private String codJcom; private String codJcom;
private String commessa; private String commessa;
private String untMis; private String untMis;
@ -46,11 +49,11 @@ public class MvwSitArtUdcDetInventario {
return this; return this;
} }
public Date getDataCollo() { public LocalDate getDataCollo() {
return dataCollo; return dataCollo;
} }
public MvwSitArtUdcDetInventario setDataCollo(Date dataCollo) { public MvwSitArtUdcDetInventario setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo; this.dataCollo = dataCollo;
return this; return this;
} }
@ -181,6 +184,15 @@ public class MvwSitArtUdcDetInventario {
return this; return this;
} }
public LocalDate getDataScad() {
return dataScad;
}
public MvwSitArtUdcDetInventario setDataScad(LocalDate dataScad) {
this.dataScad = dataScad;
return this;
}
public String getCodJcom() { public String getCodJcom() {
return codJcom; return codJcom;
} }
@ -276,7 +288,7 @@ public class MvwSitArtUdcDetInventario {
return new MtbColr() return new MtbColr()
.setCodJcom(getCodJcom()) .setCodJcom(getCodJcom())
.setCodMart(getCodMart()) .setCodMart(getCodMart())
.setDataCollo(getDataCollo()) .setDataCollo(UtilityDate.toDate(getDataCollo()))
.setNumCollo(getNumCollo()) .setNumCollo(getNumCollo())
.setSerCollo(getSerCollo()) .setSerCollo(getSerCollo())
.setGestione(getGestione()) .setGestione(getGestione())

View File

@ -13,6 +13,8 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -67,5 +69,66 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void getGiacenzeByArticolo(String codMart, String partitaMag, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) {
GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
var serviceRESTResponseCall =
UtilityString.isNullOrEmpty(partitaMag) ?
giacenzaRESTConsumerService.retrieveAvailableItemsByArt(codMart) :
giacenzaRESTConsumerService.retrieveAvailableItemsByArt(codMart, partitaMag);
serviceRESTResponseCall.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Response<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> response) {
analyzeAnswer(response, "getGiacenzeByArticolo", inventarioList -> {
List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim())
.distinct()
.toList();
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var row : inventarioList) {
MtbAart foundMtbAart = null;
Optional<MtbAart> mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
.findFirst();
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
}
row.setMtbAart(foundMtbAart);
}
onComplete.run(inventarioList);
}, onFailed);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> onFailed) {
GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) {
analyzeAnswer(response, "getInstantItemSituation", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
} }

View File

@ -4,6 +4,7 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.Query; import retrofit2.http.Query;
@ -23,4 +24,11 @@ public interface GiacenzaRESTConsumerService {
@Query("codMart") String codMart, @Query("codMart") String codMart,
@Query("partitaMag") String partitaMag); @Query("partitaMag") String partitaMag);
@GET("wms/giacenza/instantItemSituation")
Call<ServiceRESTResponse<InstantItemSituationResponseDto>> retrieveInstantItemSituation(
@Query("codMdep") String codMdep,
@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag,
@Query("codJcom") String codJcom);
} }

View File

@ -0,0 +1,88 @@
package it.integry.integrywmsnative.core.rest.model.giacenza;
import java.math.BigDecimal;
import java.time.LocalDate;
public class InstantItemSituationIncomingItemDto {
private BigDecimal qtaOrd;
private BigDecimal qtaEvasa;
private BigDecimal numCnf;
private BigDecimal numCnfEvasa;
private BigDecimal qtaCnf;
private String gestione;
private LocalDate dataOrd;
private int numOrd;
private int rigaOrd;
private LocalDate dataCons;
private String codMart;
private String descrizione;
private String partitaMag;
private String codJcom;
private String codMdep;
private String untMis;
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public BigDecimal getQtaEvasa() {
return qtaEvasa;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public BigDecimal getNumCnfEvasa() {
return numCnfEvasa;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public String getGestione() {
return gestione;
}
public LocalDate getDataOrd() {
return dataOrd;
}
public int getNumOrd() {
return numOrd;
}
public int getRigaOrd() {
return rigaOrd;
}
public LocalDate getDataCons() {
return dataCons;
}
public String getCodMart() {
return codMart;
}
public String getDescrizione() {
return descrizione;
}
public String getPartitaMag() {
return partitaMag;
}
public String getCodJcom() {
return codJcom;
}
public String getCodMdep() {
return codMdep;
}
public String getUntMis() {
return untMis;
}
}

View File

@ -0,0 +1,19 @@
package it.integry.integrywmsnative.core.rest.model.giacenza;
import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
public class InstantItemSituationResponseDto {
private List<InstantItemSituationIncomingItemDto> incomingItems;
private List<MvwSitArtUdcDetInventario> availableItems;
public List<InstantItemSituationIncomingItemDto> getIncomingItems() {
return incomingItems;
}
public List<MvwSitArtUdcDetInventario> getAvailableItems() {
return availableItems;
}
}

View File

@ -16,6 +16,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@Singleton @Singleton
public class InventarioService { public class InventarioService {
@ -47,7 +48,7 @@ public class InventarioService {
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt.setGestione(inventario.getGestione()); mtbColt.setGestione(inventario.getGestione());
mtbColt.setDataCollo(inventario.getDataCollo()); mtbColt.setDataCollo(UtilityDate.toDate(inventario.getDataCollo()));
mtbColt.setSerCollo(inventario.getSerCollo()); mtbColt.setSerCollo(inventario.getSerCollo());
mtbColt.setNumCollo(inventario.getNumCollo()); mtbColt.setNumCollo(inventario.getNumCollo());
mtbColt.setSegno(inventario.getSegno()); mtbColt.setSegno(inventario.getSegno());
@ -70,7 +71,7 @@ public class InventarioService {
MtbColr mtbColr = new MtbColr(); MtbColr mtbColr = new MtbColr();
mtbColr.setGestione(inventario.getGestione()); mtbColr.setGestione(inventario.getGestione());
mtbColr.setDataCollo(inventario.getDataCollo()); mtbColr.setDataCollo(UtilityDate.toDate(inventario.getDataCollo()));
mtbColr.setSerCollo(inventario.getSerCollo()); mtbColr.setSerCollo(inventario.getSerCollo());
mtbColr.setNumCollo(inventario.getNumCollo()); mtbColr.setNumCollo(inventario.getNumCollo());
mtbColr.setCodMart(inventario.getCodMart()); mtbColr.setCodMart(inventario.getCodMart());

View File

@ -157,6 +157,18 @@ public class UtilityDate {
return inputDate != null && inputDate.toLocalDate().isEqual(getNow()); return inputDate != null && inputDate.toLocalDate().isEqual(getNow());
} }
public static boolean isBeforeToday(LocalDate inputDate) {
return inputDate != null && inputDate.isBefore(getNow());
}
public static boolean isAfterToday(LocalDate inputDate) {
return inputDate != null && inputDate.isAfter(getNow());
}
public static boolean isToday(LocalDate inputDate) {
return inputDate != null && inputDate.isEqual(getNow());
}
public static LocalDate toLocalDate(Date dateToConvert) { public static LocalDate toLocalDate(Date dateToConvert) {
return dateToConvert.toInstant() return dateToConvert.toInstant()
.atZone(currentZone) .atZone(currentZone)

View File

@ -35,7 +35,7 @@ public class UtilityNumber {
decimalFormat.setMaximumFractionDigits(decimal); decimalFormat.setMaximumFractionDigits(decimal);
decimalFormat.setDecimalFormatSymbols(otherSymbols); decimalFormat.setDecimalFormatSymbols(otherSymbols);
decimalFormat.setGroupingUsed(false); decimalFormat.setGroupingUsed(false);
decimalFormat.setMinimumFractionDigits(2); decimalFormat.setMinimumFractionDigits(Math.min(2, decimal));
return decimalFormat.format(floatValue); return decimalFormat.format(floatValue);
} }

View File

@ -180,7 +180,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
public void manualSearch() { public void manualSearch() {
BarcodeManager.disable(); BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this, "Ricerca articolo", null, "Cod articolo / Barcode", this.viewModel::loadArticolo, BarcodeManager::enable).show(); DialogSimpleInputHelper.makeInputDialog(this,
"Ricerca articolo",
null,
"Cod articolo / Barcode",
barcodeProd -> this.viewModel.loadArticolo(barcodeProd, null), BarcodeManager::enable).show();
} }

View File

@ -22,8 +22,11 @@ import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSour
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO; import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO;
@ -90,7 +93,7 @@ public class DocInterniEditFormViewModel {
} }
public void dispatchRowEdit(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) { public void dispatchRowEdit(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) {
this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag,isUntMisDig); this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag, isUntMisDig);
} }
private Integer getNextIdRiga() { private Integer getNextIdRiga() {
@ -115,18 +118,18 @@ public class DocInterniEditFormViewModel {
public void deleteDocument() { public void deleteDocument() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
SqlMtbColt document = this.getDocument(); SqlMtbColt document = this.getDocument();
mtbColtRepository.delete(document, () -> { mtbColtRepository.delete(document, () -> {
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
this.listener.onDocDeleted(); this.listener.onDocDeleted();
}, this::sendError); }, this::sendError);
} }
public void holdDocument() { public void holdDocument() {
this.listener.onDocumentHoldRequest(); this.listener.onDocumentHoldRequest();
} }
public void loadArticolo(String barcodeProd) { public void loadArticolo(String barcodeProd, Ean128Model ean128Model) {
DocumentoArtDTO matchedArt; DocumentoArtDTO matchedArt;
String usedBarcode = null; String usedBarcode = null;
@ -135,7 +138,7 @@ public class DocInterniEditFormViewModel {
matchedArt = Stream.of(productsList) matchedArt = Stream.of(productsList)
.filter(x -> x.getCodMart().equalsIgnoreCase(barcodeProd) || .filter(x -> x.getCodMart().equalsIgnoreCase(barcodeProd) ||
leftBarcode.equalsIgnoreCase(x.getCodMart()) || leftBarcode.equalsIgnoreCase(x.getCodMart()) ||
x.getBarcode().contains(barcodeProd)) x.getBarcode().contains(leftBarcode))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
@ -143,7 +146,6 @@ public class DocInterniEditFormViewModel {
usedBarcode = matchedArt.getBarcode().contains(barcodeProd) ? barcodeProd : null; usedBarcode = matchedArt.getBarcode().contains(barcodeProd) ? barcodeProd : null;
if (matchedArt == null) { if (matchedArt == null) {
this.sendError(new NoResultFromBarcodeException(barcodeProd)); this.sendError(new NoResultFromBarcodeException(barcodeProd));
return; return;
@ -280,8 +282,27 @@ public class DocInterniEditFormViewModel {
} }
public void processBarcode(BarcodeScanDTO dto) { public void processBarcode(BarcodeScanDTO dto) {
String code = dto.getStringValue(); this.processBarcodeDTO(dto);
this.loadArticolo(code); }
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) {
if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
//Cerco tramite etichetta ean peso
this.executeEtichettaEanPeso(barcodeScanDTO);
} else {
this.loadArticolo(barcodeScanDTO.getStringValue(), null);
}
}
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO) {
try {
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128());
} catch (Exception ex) {
this.sendError(ex);
}
} }
public void saveRow(SqlMtbColr row, DialogInputQuantityV2ResultDTO resultDTO) { public void saveRow(SqlMtbColr row, DialogInputQuantityV2ResultDTO resultDTO) {

View File

@ -865,7 +865,14 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
+ "<br />" + + "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), "<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
null, null,
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol, MtbColr.Causale.DEFAULT, mDialogRowInfo) () -> SpedizioneActivity.startActivity(getActivity(),
sitArts,
orders,
alreadyRegisteredMtbColts,
mCurrentGestioneCol,
mCurrentSegnoCol,
MtbColr.Causale.DEFAULT,
mDialogRowInfo)
).show(getActivity().getSupportFragmentManager(), "tag"); ).show(getActivity().getSupportFragmentManager(), "tag");
} }

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo;
import dagger.Subcomponent;
@Subcomponent
public interface DialogInfoSituazioneArticoloComponent {
@Subcomponent.Factory
interface Factory {
DialogInfoSituazioneArticoloComponent create();
}
void inject(DialogInfoSituazioneArticoloView dialogInfoSituazioneArticoloView);
}

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo;
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = DialogInfoSituazioneArticoloComponent.class)
public class DialogInfoSituazioneArticoloModule {
@Provides
DialogInfoSituazioneArticoloViewModel providesDialogInfoSituazioneArticoloViewModel() {
return new DialogInfoSituazioneArticoloViewModel();
}
}

View File

@ -0,0 +1,154 @@
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.annimon.stream.Stream;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.ravikoradiya.liveadapter.LiveAdapter;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.DialogInfoSituazioneArticoloBinding;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel;
public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView {
@Inject
DialogInfoSituazioneArticoloViewModel mViewModel;
@Inject
GiacenzaRESTConsumer giacenzaRESTConsumer;
private DialogInfoSituazioneArticoloBinding mBindings;
private Context mContext;
public DialogInfoSituazioneArticoloView(@NotNull SpedizioneListModel spedizioneListModel, @NotNull Runnable onComplete, @NotNull Runnable onAbort) {
super(spedizioneListModel, onComplete, onAbort);
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogInfoSituazioneArticoloBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
MainApplication.appComponent
.dialogInfoSituazioneArticoloComponent()
.create()
.inject(this);
var cancelable = true;
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setNeutralButton(R.string.action_close, null)
.setCancelable(cancelable)
.create();
alertDialog.setCanceledOnTouchOutside(cancelable);
alertDialog.setOnShowListener(this);
return alertDialog;
}
@Override
public void onShow(DialogInterface dialogInterface) {
super.onShow(dialogInterface);
this.onLoadingStarted();
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
String codMart = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodMart();
String partitaMag = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getPartitaMag();
String codJcom = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodJcom();
giacenzaRESTConsumer.getInstantItemSituation(
codMdep,
codMart,
partitaMag,
codJcom,
result -> {
this.initIncomingItemsList(result.getIncomingItems());
this.initAvailableItemsList(result.getAvailableItems());
this.onLoadingEnded();
}, this::onError);
}
private void initIncomingItemsList(List<InstantItemSituationIncomingItemDto> incomingItems) {
mBindings.incomingLabel.setVisibility(incomingItems == null || incomingItems.isEmpty() ? View.GONE : View.VISIBLE);
if(incomingItems == null || incomingItems.isEmpty())
return;
new LiveAdapter(incomingItems, BR.item)
.map(InstantItemSituationIncomingItemDto.class, R.layout.dialog_info_situazione_articolo_incoming_list_item)
.into(this.mBindings.incomingList);
}
private void initAvailableItemsList(List<MvwSitArtUdcDetInventario> availableItems) {
mBindings.availableLabel.setVisibility(availableItems == null || availableItems.isEmpty() ? View.GONE : View.VISIBLE);
if(availableItems == null)
availableItems = new ArrayList<>();
availableItems = Stream.of(availableItems)
.filter(x -> UtilityDate.isAfterToday(x.getDataScad()))
.toList();
if(availableItems.isEmpty())
return;
var preferedCodJcom = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodJcom();
var preferedPartitaMag = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getPartitaMag();
var itemList = Stream.of(availableItems)
.map(mvwSitArtUdcDetInventario -> DialogInfoSituazioneArticoloAvailableListItem.fromMvwSitArtUdcDetInventario(mvwSitArtUdcDetInventario)
.setCommessaMatch(mvwSitArtUdcDetInventario.getCodJcom() != null && mvwSitArtUdcDetInventario.getCodJcom().equalsIgnoreCase(preferedCodJcom))
.setPartitaMagMatch(mvwSitArtUdcDetInventario.getPartitaMag() != null && mvwSitArtUdcDetInventario.getPartitaMag().equalsIgnoreCase(preferedPartitaMag)))
.toList();
var itemListCommessaMatch = Stream.of(itemList)
.filter(DialogInfoSituazioneArticoloAvailableListItem::isCommessaMatch)
.toList();
var itemListCommessaNotMatchMatch = Stream.of(itemList)
.filter(dialogInfoSituazioneArticoloAvailableListItem -> !dialogInfoSituazioneArticoloAvailableListItem.isCommessaMatch())
.sortBy(x -> x.getDataScad())
.toList();
itemListCommessaMatch.addAll(itemListCommessaNotMatchMatch);
new LiveAdapter(itemListCommessaMatch, BR.item)
.map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_situazione_articolo_available_list_item)
.into(this.mBindings.availableList);
}
}

View File

@ -0,0 +1,5 @@
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo;
public class DialogInfoSituazioneArticoloViewModel {
}

View File

@ -0,0 +1,333 @@
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui;
import java.math.BigDecimal;
import java.time.LocalDate;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
public class DialogInfoSituazioneArticoloAvailableListItem {
private String gestione;
private LocalDate dataCollo;
private String serCollo;
private Integer numCollo;
private Integer segno;
private String codMdep;
private String posizione;
private Integer priorita;
private String codGruppo;
private String gruppo;
private String codSgruppo;
private String sottogruppo;
private String codMart;
private String diacod;
private String descrizioneEstesa;
private String partitaMag;
private String codJcom;
private String commessa;
private String untMis;
private BigDecimal qtaCol;
private BigDecimal numCnf;
private BigDecimal qtaCnf;
private BigDecimal pesoNettoKg;
private BigDecimal pesoLordoKg;
private String codJfas;
private LocalDate dataScad;
private MtbAart mtbAart;
private boolean partitaMagMatch;
private boolean commessaMatch;
public String getGestione() {
return gestione;
}
public DialogInfoSituazioneArticoloAvailableListItem setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public LocalDate getDataCollo() {
return dataCollo;
}
public DialogInfoSituazioneArticoloAvailableListItem setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public DialogInfoSituazioneArticoloAvailableListItem setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public DialogInfoSituazioneArticoloAvailableListItem setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public Integer getSegno() {
return segno;
}
public DialogInfoSituazioneArticoloAvailableListItem setSegno(Integer segno) {
this.segno = segno;
return this;
}
public String getCodMdep() {
return codMdep;
}
public DialogInfoSituazioneArticoloAvailableListItem setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getPosizione() {
return posizione;
}
public DialogInfoSituazioneArticoloAvailableListItem setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public Integer getPriorita() {
return priorita;
}
public DialogInfoSituazioneArticoloAvailableListItem setPriorita(Integer priorita) {
this.priorita = priorita;
return this;
}
public String getCodGruppo() {
return codGruppo;
}
public DialogInfoSituazioneArticoloAvailableListItem setCodGruppo(String codGruppo) {
this.codGruppo = codGruppo;
return this;
}
public String getGruppo() {
return gruppo;
}
public DialogInfoSituazioneArticoloAvailableListItem setGruppo(String gruppo) {
this.gruppo = gruppo;
return this;
}
public String getCodSgruppo() {
return codSgruppo;
}
public DialogInfoSituazioneArticoloAvailableListItem setCodSgruppo(String codSgruppo) {
this.codSgruppo = codSgruppo;
return this;
}
public String getSottogruppo() {
return sottogruppo;
}
public DialogInfoSituazioneArticoloAvailableListItem setSottogruppo(String sottogruppo) {
this.sottogruppo = sottogruppo;
return this;
}
public String getCodMart() {
return codMart;
}
public DialogInfoSituazioneArticoloAvailableListItem setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getDiacod() {
return diacod;
}
public DialogInfoSituazioneArticoloAvailableListItem setDiacod(String diacod) {
this.diacod = diacod;
return this;
}
public String getDescrizioneEstesa() {
return descrizioneEstesa;
}
public DialogInfoSituazioneArticoloAvailableListItem setDescrizioneEstesa(String descrizioneEstesa) {
this.descrizioneEstesa = descrizioneEstesa;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public DialogInfoSituazioneArticoloAvailableListItem setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getCodJcom() {
return codJcom;
}
public DialogInfoSituazioneArticoloAvailableListItem setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public String getCommessa() {
return commessa;
}
public DialogInfoSituazioneArticoloAvailableListItem setCommessa(String commessa) {
this.commessa = commessa;
return this;
}
public String getUntMis() {
return untMis;
}
public DialogInfoSituazioneArticoloAvailableListItem setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaCol() {
return qtaCol;
}
public DialogInfoSituazioneArticoloAvailableListItem setQtaCol(BigDecimal qtaCol) {
this.qtaCol = qtaCol;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public DialogInfoSituazioneArticoloAvailableListItem setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public DialogInfoSituazioneArticoloAvailableListItem setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public DialogInfoSituazioneArticoloAvailableListItem setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getPesoLordoKg() {
return pesoLordoKg;
}
public DialogInfoSituazioneArticoloAvailableListItem setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoLordoKg = pesoLordoKg;
return this;
}
public String getCodJfas() {
return codJfas;
}
public DialogInfoSituazioneArticoloAvailableListItem setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public LocalDate getDataScad() {
return dataScad;
}
public DialogInfoSituazioneArticoloAvailableListItem setDataScad(LocalDate dataScad) {
this.dataScad = dataScad;
return this;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public DialogInfoSituazioneArticoloAvailableListItem setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public boolean isPartitaMagMatch() {
return partitaMagMatch;
}
public DialogInfoSituazioneArticoloAvailableListItem setPartitaMagMatch(boolean partitaMagMatch) {
this.partitaMagMatch = partitaMagMatch;
return this;
}
public boolean isCommessaMatch() {
return commessaMatch;
}
public DialogInfoSituazioneArticoloAvailableListItem setCommessaMatch(boolean commessaMatch) {
this.commessaMatch = commessaMatch;
return this;
}
public static DialogInfoSituazioneArticoloAvailableListItem fromMvwSitArtUdcDetInventario(MvwSitArtUdcDetInventario mvwSitArtUdcDetInventario) {
return new DialogInfoSituazioneArticoloAvailableListItem()
.setCodGruppo(mvwSitArtUdcDetInventario.getCodGruppo())
.setCodJcom(mvwSitArtUdcDetInventario.getCodJcom())
.setCodJfas(mvwSitArtUdcDetInventario.getCodJfas())
.setCodMart(mvwSitArtUdcDetInventario.getCodMart())
.setCodMdep(mvwSitArtUdcDetInventario.getCodMdep())
.setCodSgruppo(mvwSitArtUdcDetInventario.getCodSgruppo())
.setCommessa(mvwSitArtUdcDetInventario.getCommessa())
.setDataCollo(mvwSitArtUdcDetInventario.getDataCollo())
.setDescrizioneEstesa(mvwSitArtUdcDetInventario.getDescrizioneEstesa())
.setDiacod(mvwSitArtUdcDetInventario.getDiacod())
.setGestione(mvwSitArtUdcDetInventario.getGestione())
.setGruppo(mvwSitArtUdcDetInventario.getGruppo())
.setMtbAart(mvwSitArtUdcDetInventario.getMtbAart())
.setNumCnf(mvwSitArtUdcDetInventario.getNumCnf())
.setNumCollo(mvwSitArtUdcDetInventario.getNumCollo())
.setPartitaMag(mvwSitArtUdcDetInventario.getPartitaMag())
.setDataScad(mvwSitArtUdcDetInventario.getDataScad())
.setPesoLordoKg(mvwSitArtUdcDetInventario.getPesoLordoKg())
.setPesoNettoKg(mvwSitArtUdcDetInventario.getPesoNettoKg())
.setPosizione(mvwSitArtUdcDetInventario.getPosizione())
.setPriorita(mvwSitArtUdcDetInventario.getPriorita())
.setQtaCnf(mvwSitArtUdcDetInventario.getQtaCnf())
.setQtaCol(mvwSitArtUdcDetInventario.getQtaCol())
.setSegno(mvwSitArtUdcDetInventario.getSegno())
.setSerCollo(mvwSitArtUdcDetInventario.getSerCollo())
.setSottogruppo(mvwSitArtUdcDetInventario.getSottogruppo())
.setUntMis(mvwSitArtUdcDetInventario.getUntMis());
}
}

View File

@ -1,12 +1,16 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <level-list>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" /> <solid android:color="@color/white" />
<padding <padding
android:left="6dp" android:left="6dp"
android:right="6dp" android:right="6dp"
android:top="1dp" /> android:top="1dp" />
<corners android:radius="12dp" /> <corners android:radius="12dp" />
</shape> </shape>
</item>
</level-list>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="96dp"
android:height="96dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M6,0C2.7,0 0,2.7 0,6C0,9.3 2.7,12 6,12C9.3,12 12,9.3 12,6C12,2.7 9.3,0 6,0zM6,2C8.2,2 10,3.8 10,6C10,8.2 8.2,10 6,10C3.8,10 2,8.2 2,6C2,3.8 3.8,2 6,2zM17,2C16.448,2 16,2.448 16,3L16,4L13.738,4C13.903,4.64 14,5.308 14,6C14,7.062 13.788,8.073 13.412,9L19,9L19.002,20L5,20L5,15C5,14.448 4.552,14 4,14C3.448,14 3,14.448 3,15L3,20C3,21.105 3.895,22 5,22L19,22C20.105,22 21,21.105 21,20L21,6C21,4.895 20.105,4 19,4L18,4L18,3C18,2.448 17.552,2 17,2zM6.9,3.199L5.199,6.1L7.4,8.301L8.301,7.301L6.801,5.9L8,3.801L6.9,3.199z"
android:fillColor="#5B5B5B"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M11.586,3.586l-9,9c-0.781,0.781 -0.781,2.047 0,2.828l6,6c0.781,0.781 2.047,0.781 2.828,0l9,-9C20.789,12.039 21,11.53 21,11V5c0,-1.105 -0.895,-2 -2,-2h-6C12.47,3 11.961,3.211 11.586,3.586zM17.5,8C16.672,8 16,7.328 16,6.5S16.672,5 17.5,5S19,5.672 19,6.5S18.328,8 17.5,8z"
android:fillColor="#5B5B5B"/>
</vector>

View File

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
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_error_white_24dp"-->
<!-- 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:layout_marginBottom="16dp"
android:gravity="center_horizontal"
android:text="Situazione articolo" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/incoming_label"
style="@style/TextAppearance.Material3.TitleMedium"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/gray_200"
android:textAllCaps="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
android:paddingHorizontal="12dp"
android:text="In arrivo" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/incoming_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:listitem="@layout/dialog_info_situazione_articolo_incoming_list_item"
tools:itemCount="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/available_label"
style="@style/TextAppearance.Material3.TitleMedium"
android:textAllCaps="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/gray_200"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:paddingHorizontal="12dp"
android:text="In giacenza" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/available_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:listitem="@layout/dialog_info_situazione_articolo_available_list_item"
tools:itemCount="3"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="androidx.core.content.ContextCompat" />
<import type="it.integry.integrywmsnative.R" />
<import type="android.view.View" />
<variable
name="item"
type="it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingVertical="8dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/qta_box"
android:gravity="center_vertical"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{&quot;UL &quot; + item.numCollo.toString() + &quot; del &quot; + UtilityDate.formatDate(item.dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textStyle="bold"
tools:text="UL 109467 del 17 mar 2023" />
<!-- <androidx.appcompat.widget.AppCompatTextView-->
<!-- style="@style/TextAppearance.AppCompat.Small"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:ellipsize="end"-->
<!-- android:maxLines="2"-->
<!-- android:text="@{UtilityString.isNull(item.descrizioneEstesa, &quot;Nessuna descrizione&quot;)}"-->
<!-- tools:text="Descrizione lunga articolo" />-->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:background="@drawable/badge_round_corner_without_padding"
android:backgroundTint="@color/green_200"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="@{item.partitaMag != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@{ContextCompat.getColor(context, item.partitaMagMatch ? R.color.green_200 : R.color.white)}"
android:gravity="center_vertical"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:src="@drawable/ic_info_78dp"
android:tint="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@{item.partitaMag}"
android:textColor="@android:color/black"
tools:text="PARTITA" />
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginStart="8dp"
android:visibility="@{item.dataScad != null ? View.VISIBLE : View.GONE}"
android:src="@drawable/ic_calendar_schedule"
android:tint="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:visibility="@{item.dataScad != null ? View.VISIBLE : View.GONE}"
android:text="@{UtilityDate.formatDate(item.dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textColor="@android:color/black"
tools:text="17 mag 2023" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:background="@drawable/badge_round_corner_without_padding"
android:backgroundTint="@color/light_blue_500"
android:gravity="center_vertical"
android:visibility="@{item.posizione != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/light_blue_500"
android:gravity="center_vertical"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/position_label_icon"
android:layout_width="12dp"
android:layout_height="12dp"
android:src="@drawable/ic_location_24"
android:tint="@android:color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@{item.posizione}"
app:layout_constraintStart_toEndOf="@id/position_label_icon"
tools:text="POSIZIONE" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:background="@drawable/badge_round_corner_without_padding"
android:backgroundTint="@color/red_300"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="@{item.codJcom != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@{ContextCompat.getColor(context, item.commessaMatch ? R.color.red_300 : R.color.white)}"
android:gravity="center_vertical"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:src="@drawable/ic_tag"
android:tint="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@{item.codJcom}"
tools:text="COMMESSA" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/qta_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="6dp"
android:visibility="@{item.qtaCol != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaCol, item.mtbAart.firstUntMis.cifreDec.intValue())}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@{item.untMis}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</layout>

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="android.view.View" />
<variable
name="item"
type="it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingVertical="8dp"
android:gravity="center_vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_toStartOf="@id/qta_box">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityDate.formatDate(item.dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textStyle="bold"
tools:text="Data cons" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="@{UtilityString.isNull(item.descrizione, &quot;Nessuna descrizione&quot;)}"
tools:text="Descrizione lunga articolo" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/qta_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:padding="6dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="@{item.qtaOrd != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaOrd, 2)}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@{item.untMis}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</layout>

View File

@ -113,6 +113,10 @@
<color name="teal_500">#009688</color> <color name="teal_500">#009688</color>
<color name="yellow_100">#FFF9C4</color> <color name="yellow_100">#FFF9C4</color>
<color name="yellow_200">#FFF59D</color>
<color name="yellow_300">#FFF176</color>
<color name="yellow_400">#FFEE58</color>
<color name="yellow_500">#FFEB3B</color>
<color name="yellow_600">#FDD835</color> <color name="yellow_600">#FDD835</color>
<color name="yellow_800">#F9A825</color> <color name="yellow_800">#F9A825</color>