Implementata gestione degli imballi in spedizione
This commit is contained in:
parent
55db6d362d
commit
e49d35fdbc
9
.idea/fileTemplates/Android Dialog.java
generated
9
.idea/fileTemplates/Android Dialog.java
generated
@ -84,6 +84,11 @@ Create the following layout resource file [dialog_${dashName}.xml]
|
||||
|
||||
private Dialog${NAME}View() {
|
||||
super();
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialog${NAME}Component()
|
||||
.create()
|
||||
.inject(this);
|
||||
}
|
||||
|
||||
|
||||
@ -105,10 +110,6 @@ Create the following layout resource file [dialog_${dashName}.xml]
|
||||
[b] into interface body
|
||||
Dialog${NAME}Component.Factory dialog${NAME}Component();
|
||||
*/
|
||||
MainApplication.appComponent
|
||||
.dialog${NAME}Component()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
setCancelable(false);
|
||||
|
||||
|
||||
@ -114,6 +114,8 @@ import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaPro
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
|
||||
@ -212,7 +214,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc
|
||||
ProdRiposizionamentoDaProdModule.class,
|
||||
DialogInfoGiacenzaModule.class,
|
||||
ArticoliInGiacenzaModule.class,
|
||||
DialogTracciamentoImballiModule.class
|
||||
DialogTracciamentoImballiModule.class,
|
||||
DialogAskVettoreModule.class
|
||||
})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
@ -356,6 +359,8 @@ public interface MainApplicationComponent {
|
||||
|
||||
DialogTracciamentoImballiComponent.Factory dialogTracciamentoImballiComponent();
|
||||
|
||||
DialogAskVettoreComponent.Factory dialogAskVettoreComponent();
|
||||
|
||||
void inject(MainApplication mainApplication);
|
||||
|
||||
void inject(AppContext mainApplication);
|
||||
|
||||
@ -43,6 +43,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.sound.SoundAlertService;
|
||||
@ -258,6 +259,12 @@ public class MainApplicationModule {
|
||||
return new ImballiRESTConsumer(executorService);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
VettoriRESTConsumer provideVettoriRESTConsumer(ExecutorService executorService) {
|
||||
return new VettoriRESTConsumer(executorService);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
InventarioService provideInventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) {
|
||||
|
||||
@ -113,7 +113,6 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
|
||||
@Override
|
||||
public void onShow(DialogInterface dialogInterface) {
|
||||
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
|
||||
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||
|
||||
this.initialize();
|
||||
this.onInit(dialogInterface);
|
||||
|
||||
@ -0,0 +1,95 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class VtbVetr extends EntityBase {
|
||||
|
||||
public VtbVetr() {
|
||||
type = "vtb_vetr";
|
||||
}
|
||||
|
||||
private String codVvet;
|
||||
private String codSpes;
|
||||
private String idRiga;
|
||||
private BigDecimal daQta;
|
||||
private BigDecimal aQta;
|
||||
private BigDecimal impUnt;
|
||||
private BigDecimal impFisso;
|
||||
private String codDivi;
|
||||
|
||||
public String getCodVvet() {
|
||||
return codVvet;
|
||||
}
|
||||
|
||||
public VtbVetr setCodVvet(String codVvet) {
|
||||
this.codVvet = codVvet;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodSpes() {
|
||||
return codSpes;
|
||||
}
|
||||
|
||||
public VtbVetr setCodSpes(String codSpes) {
|
||||
this.codSpes = codSpes;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getIdRiga() {
|
||||
return idRiga;
|
||||
}
|
||||
|
||||
public VtbVetr setIdRiga(String idRiga) {
|
||||
this.idRiga = idRiga;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getDaQta() {
|
||||
return daQta;
|
||||
}
|
||||
|
||||
public VtbVetr setDaQta(BigDecimal daQta) {
|
||||
this.daQta = daQta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getaQta() {
|
||||
return aQta;
|
||||
}
|
||||
|
||||
public VtbVetr setaQta(BigDecimal aQta) {
|
||||
this.aQta = aQta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getImpUnt() {
|
||||
return impUnt;
|
||||
}
|
||||
|
||||
public VtbVetr setImpUnt(BigDecimal impUnt) {
|
||||
this.impUnt = impUnt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getImpFisso() {
|
||||
return impFisso;
|
||||
}
|
||||
|
||||
public VtbVetr setImpFisso(BigDecimal impFisso) {
|
||||
this.impFisso = impFisso;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodDivi() {
|
||||
return codDivi;
|
||||
}
|
||||
|
||||
public VtbVetr setCodDivi(String codDivi) {
|
||||
this.codDivi = codDivi;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,273 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
public class VtbVett extends EntityBase {
|
||||
|
||||
public VtbVett() {
|
||||
type = "vtb_vett";
|
||||
}
|
||||
|
||||
private String codVvet;
|
||||
private String codLettVett;
|
||||
private String codAnag;
|
||||
private String ragSoc;
|
||||
private String indirizzo;
|
||||
private String cap;
|
||||
private String citta;
|
||||
private String prov;
|
||||
private String nazione;
|
||||
private String telefono;
|
||||
private String fax;
|
||||
private String partIva;
|
||||
private String note;
|
||||
private String eMail;
|
||||
private String modStamp;
|
||||
private BigDecimal coefVol;
|
||||
private String flagAttivo;
|
||||
private String numAutoriz;
|
||||
private List<VtbVetr> vtbVetr;
|
||||
|
||||
|
||||
public String getCodVvet() {
|
||||
return codVvet;
|
||||
}
|
||||
|
||||
public VtbVett setCodVvet(String codVvet) {
|
||||
this.codVvet = codVvet;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodLettVett() {
|
||||
return codLettVett;
|
||||
}
|
||||
|
||||
public VtbVett setCodLettVett(String codLettVett) {
|
||||
this.codLettVett = codLettVett;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
|
||||
public VtbVett setCodAnag(String codAnag) {
|
||||
this.codAnag = codAnag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRagSoc() {
|
||||
return ragSoc;
|
||||
}
|
||||
|
||||
public VtbVett setRagSoc(String ragSoc) {
|
||||
this.ragSoc = ragSoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getIndirizzo() {
|
||||
return indirizzo;
|
||||
}
|
||||
|
||||
public VtbVett setIndirizzo(String indirizzo) {
|
||||
this.indirizzo = indirizzo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCap() {
|
||||
return cap;
|
||||
}
|
||||
|
||||
public VtbVett setCap(String cap) {
|
||||
this.cap = cap;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCitta() {
|
||||
return citta;
|
||||
}
|
||||
|
||||
public VtbVett setCitta(String citta) {
|
||||
this.citta = citta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getProv() {
|
||||
return prov;
|
||||
}
|
||||
|
||||
public VtbVett setProv(String prov) {
|
||||
this.prov = prov;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNazione() {
|
||||
return nazione;
|
||||
}
|
||||
|
||||
public VtbVett setNazione(String nazione) {
|
||||
this.nazione = nazione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getTelefono() {
|
||||
return telefono;
|
||||
}
|
||||
|
||||
public VtbVett setTelefono(String telefono) {
|
||||
this.telefono = telefono;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFax() {
|
||||
return fax;
|
||||
}
|
||||
|
||||
public VtbVett setFax(String fax) {
|
||||
this.fax = fax;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartIva() {
|
||||
return partIva;
|
||||
}
|
||||
|
||||
public VtbVett setPartIva(String partIva) {
|
||||
this.partIva = partIva;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNote() {
|
||||
return note;
|
||||
}
|
||||
|
||||
public VtbVett setNote(String note) {
|
||||
this.note = note;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String geteMail() {
|
||||
return eMail;
|
||||
}
|
||||
|
||||
public VtbVett seteMail(String eMail) {
|
||||
this.eMail = eMail;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getModStamp() {
|
||||
return modStamp;
|
||||
}
|
||||
|
||||
public VtbVett setModStamp(String modStamp) {
|
||||
this.modStamp = modStamp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getCoefVol() {
|
||||
return coefVol;
|
||||
}
|
||||
|
||||
public VtbVett setCoefVol(BigDecimal coefVol) {
|
||||
this.coefVol = coefVol;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagAttivo() {
|
||||
return flagAttivo;
|
||||
}
|
||||
|
||||
public VtbVett setFlagAttivo(String flagAttivo) {
|
||||
this.flagAttivo = flagAttivo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNumAutoriz() {
|
||||
return numAutoriz;
|
||||
}
|
||||
|
||||
public VtbVett setNumAutoriz(String numAutoriz) {
|
||||
this.numAutoriz = numAutoriz;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<VtbVetr> getVtbVetr() {
|
||||
return vtbVetr;
|
||||
}
|
||||
|
||||
public VtbVett setVtbVetr(List<VtbVetr> vtbVetr) {
|
||||
this.vtbVetr = vtbVetr;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
VtbVett vtbVett = (VtbVett) o;
|
||||
|
||||
if (!getCodVvet().equals(vtbVett.getCodVvet())) return false;
|
||||
if (getCodLettVett() != null ? !getCodLettVett().equals(vtbVett.getCodLettVett()) : vtbVett.getCodLettVett() != null)
|
||||
return false;
|
||||
if (getCodAnag() != null ? !getCodAnag().equals(vtbVett.getCodAnag()) : vtbVett.getCodAnag() != null)
|
||||
return false;
|
||||
if (getRagSoc() != null ? !getRagSoc().equals(vtbVett.getRagSoc()) : vtbVett.getRagSoc() != null)
|
||||
return false;
|
||||
if (getIndirizzo() != null ? !getIndirizzo().equals(vtbVett.getIndirizzo()) : vtbVett.getIndirizzo() != null)
|
||||
return false;
|
||||
if (getCap() != null ? !getCap().equals(vtbVett.getCap()) : vtbVett.getCap() != null)
|
||||
return false;
|
||||
if (getCitta() != null ? !getCitta().equals(vtbVett.getCitta()) : vtbVett.getCitta() != null)
|
||||
return false;
|
||||
if (getProv() != null ? !getProv().equals(vtbVett.getProv()) : vtbVett.getProv() != null)
|
||||
return false;
|
||||
if (getNazione() != null ? !getNazione().equals(vtbVett.getNazione()) : vtbVett.getNazione() != null)
|
||||
return false;
|
||||
if (getTelefono() != null ? !getTelefono().equals(vtbVett.getTelefono()) : vtbVett.getTelefono() != null)
|
||||
return false;
|
||||
if (getFax() != null ? !getFax().equals(vtbVett.getFax()) : vtbVett.getFax() != null)
|
||||
return false;
|
||||
if (getPartIva() != null ? !getPartIva().equals(vtbVett.getPartIva()) : vtbVett.getPartIva() != null)
|
||||
return false;
|
||||
if (getNote() != null ? !getNote().equals(vtbVett.getNote()) : vtbVett.getNote() != null)
|
||||
return false;
|
||||
if (geteMail() != null ? !geteMail().equals(vtbVett.geteMail()) : vtbVett.geteMail() != null)
|
||||
return false;
|
||||
if (getModStamp() != null ? !getModStamp().equals(vtbVett.getModStamp()) : vtbVett.getModStamp() != null)
|
||||
return false;
|
||||
if (getCoefVol() != null ? !getCoefVol().equals(vtbVett.getCoefVol()) : vtbVett.getCoefVol() != null)
|
||||
return false;
|
||||
if (getFlagAttivo() != null ? !getFlagAttivo().equals(vtbVett.getFlagAttivo()) : vtbVett.getFlagAttivo() != null)
|
||||
return false;
|
||||
if (getNumAutoriz() != null ? !getNumAutoriz().equals(vtbVett.getNumAutoriz()) : vtbVett.getNumAutoriz() != null)
|
||||
return false;
|
||||
return getVtbVetr() != null ? getVtbVetr().equals(vtbVett.getVtbVetr()) : vtbVett.getVtbVetr() == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = getCodVvet().hashCode();
|
||||
result = 31 * result + (getCodLettVett() != null ? getCodLettVett().hashCode() : 0);
|
||||
result = 31 * result + (getCodAnag() != null ? getCodAnag().hashCode() : 0);
|
||||
result = 31 * result + (getRagSoc() != null ? getRagSoc().hashCode() : 0);
|
||||
result = 31 * result + (getIndirizzo() != null ? getIndirizzo().hashCode() : 0);
|
||||
result = 31 * result + (getCap() != null ? getCap().hashCode() : 0);
|
||||
result = 31 * result + (getCitta() != null ? getCitta().hashCode() : 0);
|
||||
result = 31 * result + (getProv() != null ? getProv().hashCode() : 0);
|
||||
result = 31 * result + (getNazione() != null ? getNazione().hashCode() : 0);
|
||||
result = 31 * result + (getTelefono() != null ? getTelefono().hashCode() : 0);
|
||||
result = 31 * result + (getFax() != null ? getFax().hashCode() : 0);
|
||||
result = 31 * result + (getPartIva() != null ? getPartIva().hashCode() : 0);
|
||||
result = 31 * result + (getNote() != null ? getNote().hashCode() : 0);
|
||||
result = 31 * result + (geteMail() != null ? geteMail().hashCode() : 0);
|
||||
result = 31 * result + (getModStamp() != null ? getModStamp().hashCode() : 0);
|
||||
result = 31 * result + (getCoefVol() != null ? getCoefVol().hashCode() : 0);
|
||||
result = 31 * result + (getFlagAttivo() != null ? getFlagAttivo().hashCode() : 0);
|
||||
result = 31 * result + (getNumAutoriz() != null ? getNumAutoriz().hashCode() : 0);
|
||||
result = 31 * result + (getVtbVetr() != null ? getVtbVetr().hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -11,6 +11,7 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.imballi.ImballoQuantityDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraCaricoImballiRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraScaricoImballiRequestDTO;
|
||||
import retrofit2.Response;
|
||||
|
||||
@Singleton
|
||||
@ -43,20 +44,45 @@ public class ImballiRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public void registraCaricoSyncronized(List<ImballoQuantityDTO> imballi) throws Exception {
|
||||
public void registraCaricoSyncronized(String codAnag, List<ImballoQuantityDTO> imballi) throws Exception {
|
||||
ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class);
|
||||
Response<ServiceRESTResponse<Void>> response = service.registraCarico(
|
||||
new RegistraCaricoImballiRequestDTO()
|
||||
.setCodAnag(codAnag)
|
||||
.setUsedImballi(imballi))
|
||||
.execute();
|
||||
|
||||
analyzeAnswer(response, "registraCarico");
|
||||
}
|
||||
|
||||
public void registraCarico(List<ImballoQuantityDTO> imballi, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void registraCarico(String codAnag, List<ImballoQuantityDTO> imballi, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
executorService.execute(() -> {
|
||||
try {
|
||||
registraCaricoSyncronized(imballi);
|
||||
registraCaricoSyncronized(codAnag, imballi);
|
||||
if (onComplete != null) onComplete.run();
|
||||
} catch (Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void registraScaricoSyncronized(String codVettore, String codAnagVettore, List<ImballoQuantityDTO> imballi) throws Exception {
|
||||
ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class);
|
||||
Response<ServiceRESTResponse<Void>> response = service.registraScarico(
|
||||
new RegistraScaricoImballiRequestDTO()
|
||||
.setCodVettore(codVettore)
|
||||
.setCodAnagVettore(codAnagVettore)
|
||||
.setUsedImballi(imballi))
|
||||
.execute();
|
||||
|
||||
analyzeAnswer(response, "registraScarico");
|
||||
}
|
||||
|
||||
public void registraScarico(String idVettore, String codAnagVettore, List<ImballoQuantityDTO> imballi, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
executorService.execute(() -> {
|
||||
try {
|
||||
registraScaricoSyncronized(idVettore, codAnagVettore, imballi);
|
||||
if (onComplete != null) onComplete.run();
|
||||
} catch (Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
|
||||
@ -5,6 +5,7 @@ import java.util.List;
|
||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraCaricoImballiRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.imballi.RegistraScaricoImballiRequestDTO;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.GET;
|
||||
@ -20,4 +21,7 @@ public interface ImballiRESTConsumerService {
|
||||
@POST("wms/imballi/registraCarico")
|
||||
Call<ServiceRESTResponse<Void>> registraCarico(@Body RegistraCaricoImballiRequestDTO registraCaricoImballiRequest);
|
||||
|
||||
@POST("wms/imballi/registraScarico")
|
||||
Call<ServiceRESTResponse<Void>> registraScarico(@Body RegistraScaricoImballiRequestDTO registraScaricoImballiRequest);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.VtbVett;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import retrofit2.Response;
|
||||
|
||||
@Singleton
|
||||
public class VettoriRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
private final ExecutorService executorService;
|
||||
|
||||
public VettoriRESTConsumer(ExecutorService executorService) {
|
||||
this.executorService = executorService;
|
||||
}
|
||||
|
||||
|
||||
public List<VtbVett> retrieveRecentlyUsedInOrdersSyncronized(GestioneEnum gestione) throws Exception {
|
||||
var service = RESTBuilder.getService(VettoriRESTConsumerService.class);
|
||||
Response<ServiceRESTResponse<List<VtbVett>>> response = service.retrieveRecentlyUsedInOrders(gestione)
|
||||
.execute();
|
||||
|
||||
return analyzeAnswer(response, "retrieveRecentlyUsedInOrders");
|
||||
}
|
||||
|
||||
public void retrieveRecentlyUsedInOrders(GestioneEnum gestione, RunnableArgs<List<VtbVett>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
executorService.execute(() -> {
|
||||
try {
|
||||
var response = retrieveRecentlyUsedInOrdersSyncronized(gestione);
|
||||
if (onComplete != null) onComplete.run(response);
|
||||
} catch (Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.VtbVett;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
public interface VettoriRESTConsumerService {
|
||||
|
||||
@GET("wms/vettore/recentlyUsedInOrders")
|
||||
Call<ServiceRESTResponse<List<VtbVett>>> retrieveRecentlyUsedInOrders(@Query("gestione") GestioneEnum gestioneEnum);
|
||||
|
||||
}
|
||||
@ -4,8 +4,18 @@ import java.util.List;
|
||||
|
||||
public class RegistraCaricoImballiRequestDTO {
|
||||
|
||||
private String codAnag;
|
||||
private List<ImballoQuantityDTO> usedImballi;
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
|
||||
public RegistraCaricoImballiRequestDTO setCodAnag(String codAnag) {
|
||||
this.codAnag = codAnag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<ImballoQuantityDTO> getUsedImballi() {
|
||||
return usedImballi;
|
||||
}
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package it.integry.integrywmsnative.core.rest.model.imballi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RegistraScaricoImballiRequestDTO {
|
||||
|
||||
private String codVettore;
|
||||
private String codAnagVettore;
|
||||
private List<ImballoQuantityDTO> usedImballi;
|
||||
|
||||
public String getCodVettore() {
|
||||
return codVettore;
|
||||
}
|
||||
|
||||
public RegistraScaricoImballiRequestDTO setCodVettore(String codVettore) {
|
||||
this.codVettore = codVettore;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodAnagVettore() {
|
||||
return codAnagVettore;
|
||||
}
|
||||
|
||||
public RegistraScaricoImballiRequestDTO setCodAnagVettore(String codAnagVettore) {
|
||||
this.codAnagVettore = codAnagVettore;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<ImballoQuantityDTO> getUsedImballi() {
|
||||
return usedImballi;
|
||||
}
|
||||
|
||||
public RegistraScaricoImballiRequestDTO setUsedImballi(List<ImballoQuantityDTO> usedImballi) {
|
||||
this.usedImballi = usedImballi;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -76,6 +76,9 @@ public class DBSettingsModel {
|
||||
private boolean flagAccettazioneBollaUseQtaOrd = true;
|
||||
private boolean flagWarningNewPartitaMag = false;
|
||||
|
||||
private boolean flagTracciamentoImballiCaricoEnabled = false;
|
||||
private boolean flagTracciamentoImballiScaricoEnabled = false;
|
||||
|
||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||
return flagSpedizioneEnableFakeGiacenza;
|
||||
}
|
||||
@ -633,4 +636,22 @@ public class DBSettingsModel {
|
||||
this.flagWarningNewPartitaMag = flagWarningNewPartitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagTracciamentoImballiCaricoEnabled() {
|
||||
return flagTracciamentoImballiCaricoEnabled;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagTracciamentoImballiCaricoEnabled(boolean flagTracciamentoImballiCaricoEnabled) {
|
||||
this.flagTracciamentoImballiCaricoEnabled = flagTracciamentoImballiCaricoEnabled;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagTracciamentoImballiScaricoEnabled() {
|
||||
return flagTracciamentoImballiScaricoEnabled;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagTracciamentoImballiScaricoEnabled(boolean flagTracciamentoImballiScaricoEnabled) {
|
||||
this.flagTracciamentoImballiScaricoEnabled = flagTracciamentoImballiScaricoEnabled;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
@Singleton
|
||||
public class SettingsManager {
|
||||
@ -518,6 +519,22 @@ public class SettingsManager {
|
||||
.setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag)
|
||||
.setDefaultValue(false));
|
||||
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("IMBALLI")
|
||||
.setKeySection("COD_DTIP_CARICO")
|
||||
.setSetter(data -> {
|
||||
dbSettingsModelIstance.setFlagTracciamentoImballiCaricoEnabled(!UtilityString.isNullOrEmpty(data));
|
||||
}));
|
||||
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("IMBALLI")
|
||||
.setKeySection("COD_DTIP_SCARICO")
|
||||
.setSetter(data -> {
|
||||
dbSettingsModelIstance.setFlagTracciamentoImballiScaricoEnabled(!UtilityString.isNullOrEmpty(data));
|
||||
}));
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
|
||||
|
||||
@ -128,7 +128,10 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
|
||||
MainApplication.appComponent.accettazionePickingComponent().create().inject(this);
|
||||
MainApplication.appComponent
|
||||
.accettazionePickingComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
setSupportActionBar(mBindings.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
@ -158,6 +161,9 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
fabPopupMenu.setForceShowIcon(true);
|
||||
fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
|
||||
|
||||
if (!SettingsManager.iDB().isFlagTracciamentoImballiCaricoEnabled())
|
||||
fabPopupMenu.getMenu().removeItem(R.id.track_packaging);
|
||||
|
||||
fabPopupMenu.setOnMenuItemClickListener(item -> {
|
||||
int itemId = item.getItemId();
|
||||
|
||||
@ -648,7 +654,8 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
this.fabPopupMenu.dismiss();
|
||||
|
||||
DialogTracciamentoImballiView.newInstance(data -> {
|
||||
mViewModel.registraImballi(data);
|
||||
if (data != null && !data.isEmpty())
|
||||
mViewModel.registraImballi(data);
|
||||
}).show(getSupportFragmentManager(), DialogTracciamentoImballiView.class.getName());
|
||||
}
|
||||
|
||||
|
||||
@ -91,6 +91,7 @@ public class AccettazioneOrdiniPickingViewModel {
|
||||
|
||||
private MtbColt mCurrentMtbColt = null;
|
||||
private GestioneEnum defaultGestioneOfUL = null;
|
||||
private String foundCodAnag = null;
|
||||
|
||||
private final List<HistoryMtbAartDTO> mHistoryUsedAarts = new ArrayList<>();
|
||||
|
||||
@ -134,6 +135,15 @@ public class AccettazioneOrdiniPickingViewModel {
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
//Definizione codAnag
|
||||
var codAnagsOrd = mOrders.stream()
|
||||
.map(OrdineAccettazioneInevasoDTO::getCodAnagOrd)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if(codAnagsOrd.size() == 1) foundCodAnag = codAnagsOrd.get(0);
|
||||
|
||||
|
||||
//Definizione della gestione collo di default
|
||||
List<GestioneEnum> foundGestioni = Stream.of(mOrders)
|
||||
.map(OrdineAccettazioneInevasoDTO::getGestioneEnum)
|
||||
@ -890,13 +900,14 @@ public class AccettazioneOrdiniPickingViewModel {
|
||||
public void registraImballi(List<TracciamentoImballoDTO> data) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
|
||||
var inputData = data.stream()
|
||||
.map(x -> new ImballoQuantityDTO()
|
||||
.setQta(x.getQta().get())
|
||||
.setCodMart(x.getCodMart().get()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
mImballiRESTConsumer.registraCarico(inputData, () -> {
|
||||
mImballiRESTConsumer.registraCarico(foundCodAnag, inputData, () -> {
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
@ -1,17 +1,18 @@
|
||||
package it.integry.integrywmsnative.gest.rettifica_giacenze.ui;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Filter;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.databinding.RettificaGiacenzeAutocompleteFornitoreLayoutBinding;
|
||||
@ -24,7 +25,7 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
|
||||
private ArrayList<FornitoreDTO> suggestions;
|
||||
|
||||
public AutoCompleteFornitoreAdapter(@NonNull Context context, @NonNull ArrayList<FornitoreDTO> items) {
|
||||
super(context, 0 , items);
|
||||
super(context, 0, items);
|
||||
this.items = items;
|
||||
this.itemsAll = (ArrayList<FornitoreDTO>) items.clone();
|
||||
this.suggestions = new ArrayList<>();
|
||||
@ -33,7 +34,7 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
|
||||
@NonNull
|
||||
@Override
|
||||
public Filter getFilter() {
|
||||
return fornitoreFilter;
|
||||
return new FornitoreFilter(itemsAll);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ -49,55 +50,53 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
private class FornitoreFilter extends Filter {
|
||||
|
||||
private ArrayList<FornitoreDTO> sourceObjects;
|
||||
|
||||
private Filter fornitoreFilter = new Filter() {
|
||||
@Override
|
||||
protected FilterResults performFiltering(CharSequence constraint) {
|
||||
if(constraint != null) {
|
||||
suggestions.clear();
|
||||
for (FornitoreDTO fornitore : itemsAll) {
|
||||
String tmpDescr = fornitore.getCodAlis() + " " + fornitore.getDescrizione();
|
||||
public FornitoreFilter(List<FornitoreDTO> objects) {
|
||||
if (objects == null) return;
|
||||
sourceObjects = new ArrayList<>();
|
||||
|
||||
if(tmpDescr.toLowerCase().contains(constraint.toString().toLowerCase())){
|
||||
suggestions.add(fornitore);
|
||||
}
|
||||
}
|
||||
FilterResults filterResults = new FilterResults();
|
||||
filterResults.values = suggestions;
|
||||
filterResults.count = suggestions.size();
|
||||
return filterResults;
|
||||
} else {
|
||||
return new FilterResults();
|
||||
synchronized (this) {
|
||||
sourceObjects.addAll(objects);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FilterResults performFiltering(CharSequence constraint) {
|
||||
FilterResults result = new FilterResults();
|
||||
if (constraint != null) {
|
||||
suggestions.clear();
|
||||
for (FornitoreDTO fornitore : sourceObjects) {
|
||||
String tmpDescr = fornitore.getCodAlis() + " " + fornitore.getDescrizione();
|
||||
|
||||
if (tmpDescr.toLowerCase().contains(constraint.toString().toLowerCase())) {
|
||||
suggestions.add(fornitore);
|
||||
}
|
||||
}
|
||||
result.values = suggestions;
|
||||
result.count = suggestions.size();
|
||||
} else {
|
||||
// add all objects
|
||||
synchronized (this) {
|
||||
result.values = sourceObjects;
|
||||
result.count = sourceObjects.size();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void publishResults(CharSequence constraint, FilterResults results) {
|
||||
|
||||
boolean error;
|
||||
|
||||
do {
|
||||
try {
|
||||
ArrayList<FornitoreDTO> filteredList = (ArrayList<FornitoreDTO>) results.values;
|
||||
if (results.count > 0) {
|
||||
clear();
|
||||
|
||||
for (FornitoreDTO c : filteredList) {
|
||||
add(c);
|
||||
}
|
||||
|
||||
notifyDataSetChanged();
|
||||
|
||||
}
|
||||
error = false;
|
||||
} catch (ConcurrentModificationException ex) {
|
||||
error = true;
|
||||
}
|
||||
} while (error);
|
||||
|
||||
|
||||
if(constraint != null && constraint.length() > 2) {
|
||||
ArrayList<FornitoreDTO> filtered = (ArrayList<FornitoreDTO>) results.values;
|
||||
notifyDataSetChanged();
|
||||
clear();
|
||||
for (int i = 0, l = filtered.size(); i < l; i++)
|
||||
add(filtered.get(i));
|
||||
notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -105,5 +104,6 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
|
||||
public CharSequence convertResultToString(Object resultValue) {
|
||||
return ((FornitoreDTO) resultValue).getCodAlis();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,8 +6,10 @@ import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.Gravity;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.preference.PreferenceManager;
|
||||
@ -68,6 +70,7 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreView;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
|
||||
@ -78,6 +81,7 @@ import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUV
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView;
|
||||
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||
|
||||
public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener {
|
||||
@ -99,7 +103,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
||||
public BindableBoolean noLUPresent = new BindableBoolean(true);
|
||||
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
|
||||
public BindableBoolean closeOrderButtonEnabled = new BindableBoolean(false);
|
||||
|
||||
private boolean mEnableFakeGiacenza;
|
||||
private boolean mFlagShowCodForn;
|
||||
@ -119,6 +122,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
private final int PICK_UL_REQUEST = 1;
|
||||
|
||||
private PopupMenu fabPopupMenu;
|
||||
|
||||
public static void startActivity(Context context,
|
||||
List<SitArtOrdDTO> ordini,
|
||||
List<OrdineUscitaInevasoDTO> selectedOrders,
|
||||
@ -196,13 +201,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
this.initVars();
|
||||
this.initBarcodeReader();
|
||||
this.initFab();
|
||||
this.initRecyclerView();
|
||||
|
||||
closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()
|
||||
|| SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()
|
||||
|| (this.isOrdTrasf() && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV()))
|
||||
);
|
||||
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
mEnableFakeGiacenza = SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza();
|
||||
@ -223,17 +224,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mGestioneCol, mSegnoCol, mDefaultCausaleUL,
|
||||
mEnableQuantityReset,
|
||||
useQtaOrd);
|
||||
}
|
||||
|
||||
|
||||
private boolean isOrdTrasf() {
|
||||
|
||||
return mTestateOrdini != null && !mTestateOrdini.isEmpty() && Stream.of(mTestateOrdini)
|
||||
.map(OrdineUscitaInevasoDTO::isOrdTrasf)
|
||||
.withoutNulls()
|
||||
.distinctBy(x -> x)
|
||||
.findFirst()
|
||||
.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -271,6 +262,48 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
|
||||
private void initFab() {
|
||||
fabPopupMenu = new PopupMenu(this,
|
||||
this.mBindings.spedizioneOrdineInevasoFab, (Gravity.END | Gravity.BOTTOM),
|
||||
androidx.appcompat.R.attr.popupMenuStyle,
|
||||
com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
|
||||
|
||||
fabPopupMenu.setForceShowIcon(true);
|
||||
fabPopupMenu.getMenuInflater().inflate(R.menu.spedizione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
|
||||
|
||||
boolean isCloseOrderEnabled = SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()
|
||||
|| SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()
|
||||
|| (mViewmodel.isOrdTrasf() && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV()));
|
||||
|
||||
if (!isCloseOrderEnabled) {
|
||||
fabPopupMenu.getMenu().removeItem(R.id.close_order);
|
||||
}
|
||||
|
||||
if(!SettingsManager.iDB().isFlagTracciamentoImballiScaricoEnabled())
|
||||
fabPopupMenu.getMenu().removeItem(R.id.track_packaging);
|
||||
|
||||
fabPopupMenu.setOnMenuItemClickListener(item -> {
|
||||
int itemId = item.getItemId();
|
||||
|
||||
if (itemId == R.id.close_order) {
|
||||
closeOrder();
|
||||
return true;
|
||||
} else if (itemId == R.id.show_created_ul) {
|
||||
showCreatedUL();
|
||||
return true;
|
||||
} else if (itemId == R.id.track_packaging) {
|
||||
trackPackaging();
|
||||
return true;
|
||||
} else if (itemId == R.id.create_ul) {
|
||||
createNewUL();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
this.mViewmodel.getPickingList().observe(this, updatedData -> {
|
||||
this.mSpedizioneMutableData.clear();
|
||||
@ -383,7 +416,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null;
|
||||
if (mtbColrToDispatch != null) {
|
||||
if(!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
|
||||
if (!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
|
||||
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getCodJcom())) {
|
||||
@ -642,13 +675,18 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
return sortedList;
|
||||
}
|
||||
|
||||
|
||||
public void showFabMenu() {
|
||||
fabPopupMenu.show();
|
||||
}
|
||||
|
||||
private String getCommessa(String codJcom) {
|
||||
var commessaMagazzino = SettingsManager.iDB().getCommessaMagazzino();
|
||||
|
||||
if(UtilityString.isNullOrEmpty(commessaMagazzino)) {
|
||||
if (UtilityString.isNullOrEmpty(commessaMagazzino)) {
|
||||
return UtilityString.isNull(codJcom, "Magazzino").toUpperCase();
|
||||
} else {
|
||||
if(commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null)
|
||||
if (commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null)
|
||||
return "Magazzino".toUpperCase();
|
||||
else
|
||||
return codJcom.toUpperCase();
|
||||
@ -698,7 +736,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
|
||||
public void createNewUL() {
|
||||
this.mBindings.spedizioneFab.close(true);
|
||||
this.fabPopupMenu.dismiss();
|
||||
|
||||
this.onLoadingStarted();
|
||||
|
||||
@ -707,8 +745,23 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void trackPackaging() {
|
||||
this.fabPopupMenu.dismiss();
|
||||
|
||||
DialogTracciamentoImballiView.newInstance(imballiData -> {
|
||||
|
||||
if (imballiData != null && !imballiData.isEmpty()) {
|
||||
DialogAskVettoreView.newInstance(mViewmodel.getDefaultVettore(), vettoreData -> {
|
||||
mViewmodel.registraImballi(vettoreData, imballiData);
|
||||
})
|
||||
.show(getSupportFragmentManager(), DialogAskVettoreView.class.getName());
|
||||
}
|
||||
}).show(getSupportFragmentManager(), DialogTracciamentoImballiView.class.getName());
|
||||
}
|
||||
|
||||
public void showCreatedUL() {
|
||||
this.mBindings.spedizioneFab.close(true);
|
||||
this.fabPopupMenu.dismiss();
|
||||
|
||||
ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts();
|
||||
|
||||
@ -718,7 +771,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
|
||||
public void closeOrder() {
|
||||
this.mBindings.spedizioneFab.close(true);
|
||||
this.fabPopupMenu.dismiss();
|
||||
|
||||
this.mViewmodel.closeOrder();
|
||||
}
|
||||
@ -727,7 +780,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
public void onLUOpened(MtbColt mtbColt) {
|
||||
this.addExtraItemsEnabled.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
|
||||
noLUPresent.set(false);
|
||||
closeOrderButtonEnabled.set(false);
|
||||
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
@ -739,7 +791,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
this.addExtraItemsEnabled.set(false);
|
||||
noLUPresent.set(true);
|
||||
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
|
||||
closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose());
|
||||
|
||||
if (this.mShouldCloseActivity) super.onBackPressed();
|
||||
}
|
||||
@ -776,7 +827,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
R.string.button_ignore_print,
|
||||
onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -9,6 +9,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsu
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
@ -34,7 +35,8 @@ public class SpedizioneModule {
|
||||
DocumentRESTConsumer documentRESTConsumer,
|
||||
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
|
||||
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
||||
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer) {
|
||||
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
|
||||
ImballiRESTConsumer imballiRESTConsumer) {
|
||||
return new SpedizioneViewModel(articoloRESTConsumer,
|
||||
barcodeRESTConsumer,
|
||||
colliDataRecoverService,
|
||||
@ -45,7 +47,8 @@ public class SpedizioneModule {
|
||||
documentRESTConsumer,
|
||||
colliSpedizioneRESTConsumer,
|
||||
colliLavorazioneRESTConsumer,
|
||||
magazzinoAutomaticoRESTConsumer);
|
||||
magazzinoAutomaticoRESTConsumer,
|
||||
imballiRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,16 +3,16 @@ package it.integry.integrywmsnative.gest.spedizione;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.NotImplementedException;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
import it.integry.integrywmsnative.core.model.VtbVett;
|
||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
@ -51,6 +52,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsu
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
@ -61,6 +63,7 @@ import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.imballi.ImballoQuantityDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickOrderRequestDTO;
|
||||
@ -86,6 +89,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadExceptio
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO;
|
||||
|
||||
public class SpedizioneViewModel {
|
||||
|
||||
@ -101,6 +105,7 @@ public class SpedizioneViewModel {
|
||||
private String mDefaultCodMdep = null;
|
||||
private final List<FiltroOrdineDTO> mDefaultFiltroOrdine = new ArrayList<>();
|
||||
private Integer mDefaultCausaleOfUL = null;
|
||||
private VtbVett mDefaultVettore = null;
|
||||
|
||||
private boolean mEnableGiacenza;
|
||||
private boolean mEnableCheckPartitaMag;
|
||||
@ -124,13 +129,24 @@ public class SpedizioneViewModel {
|
||||
private final DocumentRESTConsumer mDocumentRESTConsumer;
|
||||
private final ColliSpedizioneRESTConsumer mColliSpedizioneRESTConsumer;
|
||||
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
|
||||
|
||||
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
|
||||
private final ImballiRESTConsumer mImballiRESTConsumer;
|
||||
|
||||
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
|
||||
|
||||
@Inject
|
||||
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, DocumentRESTConsumer documentRESTConsumer, ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
|
||||
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliDataRecoverService colliDataRecoverService,
|
||||
OrdiniRESTConsumer ordiniRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
PosizioniRESTConsumer posizioniRESTConsumer,
|
||||
DocumentRESTConsumer documentRESTConsumer,
|
||||
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
|
||||
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
||||
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
|
||||
ImballiRESTConsumer imballiRESTConsumer) {
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mColliDataRecoverService = colliDataRecoverService;
|
||||
@ -142,6 +158,7 @@ public class SpedizioneViewModel {
|
||||
this.mColliSpedizioneRESTConsumer = colliSpedizioneRESTConsumer;
|
||||
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
|
||||
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
|
||||
this.mImballiRESTConsumer = imballiRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
@ -159,10 +176,6 @@ public class SpedizioneViewModel {
|
||||
this.mEnableQuantityReset = enableQuantityReset;
|
||||
this.mUseQtaOrd = useQtaOrd;
|
||||
|
||||
if (testateOrdini != null && testateOrdini.size() > 0) {
|
||||
this.mIsOrdTrasf = Stream.of(testateOrdini).map(OrdineUscitaInevasoDTO::isOrdTrasf).withoutNulls().distinctBy(x -> x).findFirst().get();
|
||||
}
|
||||
|
||||
if (enableGiacenza) {
|
||||
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
||||
this.mPickingList.postValue(pickingObjectList);
|
||||
@ -183,38 +196,67 @@ public class SpedizioneViewModel {
|
||||
|
||||
|
||||
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
|
||||
List<String> codMarts = Stream.of(sitArtOrdList).map(x -> x.getCodMart().trim()).toList();
|
||||
List<String> codMarts = sitArtOrdList.stream()
|
||||
.map(x -> x.getCodMart().trim())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> {
|
||||
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList).map(sitArtOrdDTO -> {
|
||||
MtbAart mtbAart = null;
|
||||
List<PickingObjectDTO> pickingList = sitArtOrdList.stream()
|
||||
.map(sitArtOrdDTO -> {
|
||||
MtbAart mtbAart = null;
|
||||
|
||||
for (MtbAart mtbAartItem : listMtbAarts) {
|
||||
if (mtbAartItem.getCodMart().trim().equalsIgnoreCase(sitArtOrdDTO.getCodMart().trim())) {
|
||||
mtbAart = mtbAartItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (MtbAart mtbAartItem : listMtbAarts) {
|
||||
if (mtbAartItem.getCodMart().trim().equalsIgnoreCase(sitArtOrdDTO.getCodMart().trim())) {
|
||||
mtbAart = mtbAartItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new PickingObjectDTO().setSitArtOrdDTO(sitArtOrdDTO).setMtbAart(mtbAart);
|
||||
}).toList();
|
||||
return new PickingObjectDTO().setSitArtOrdDTO(sitArtOrdDTO).setMtbAart(mtbAart);
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
onComplete.run(pickingList);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void initDefaultVars() {
|
||||
if (this.mTestateOrdini != null && this.mTestateOrdini.size() > 0) {
|
||||
if (this.mTestateOrdini != null && !this.mTestateOrdini.isEmpty()) {
|
||||
|
||||
List<String> foundRagSoc = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getRagSocOrd).distinctBy(x -> x).toList();
|
||||
this.mIsOrdTrasf = mTestateOrdini.stream()
|
||||
.map(OrdineUscitaInevasoDTO::isOrdTrasf)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.findFirst()
|
||||
.orElse(false);
|
||||
|
||||
if (foundRagSoc != null && foundRagSoc.size() == 1) {
|
||||
List<String> foundRagSoc = mTestateOrdini.stream()
|
||||
.map(OrdineUscitaInevasoDTO::getRagSocOrd)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (foundRagSoc.size() == 1) {
|
||||
mDefaultRagSocOfUL = foundRagSoc.get(0);
|
||||
}
|
||||
|
||||
List<VtbVett> foundVett = mTestateOrdini.stream()
|
||||
.filter(x -> !UtilityString.isNullOrEmpty(x.getCodVvet()))
|
||||
.map(x -> new VtbVett()
|
||||
.setCodVvet(x.getCodVvet())
|
||||
.setRagSoc(x.getDescrizioneVettore()))
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (foundVett.size() == 1) {
|
||||
mDefaultVettore = foundVett.get(0);
|
||||
}
|
||||
|
||||
if (mDefaultGestioneOfUL == null) {
|
||||
//Definizione della gestione collo di default
|
||||
List<GestioneEnum> foundGestioni = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getGestioneEnum).withoutNulls().distinct().toList();
|
||||
List<GestioneEnum> foundGestioni = mTestateOrdini.stream()
|
||||
.map(OrdineUscitaInevasoDTO::getGestioneEnum)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (foundGestioni.size() > 1) {
|
||||
return;
|
||||
@ -254,6 +296,11 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean isOrdTrasf() {
|
||||
return mIsOrdTrasf;
|
||||
}
|
||||
|
||||
private void onOrderClosedPrintingDone() {
|
||||
if (this.mIsOrdTrasf && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV())) {
|
||||
this.sendCreateDocsRequest();
|
||||
@ -492,7 +539,8 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
} else {
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep()
|
||||
.stream()
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
@ -537,7 +585,7 @@ public class SpedizioneViewModel {
|
||||
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream()
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
@ -560,7 +608,7 @@ public class SpedizioneViewModel {
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
if (mtbColt.getSegno() != -1) {
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream()
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
@ -633,26 +681,28 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
private void executeMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
|
||||
var magazzinoAutomaticoPickableArts = Stream.of(Objects.requireNonNull(this.mPickingList.getValue()))
|
||||
.filter(x -> Stream.of(x.getMtbColts()).anyMatch(y -> y.getPosizione() != null && y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())) &&
|
||||
var magazzinoAutomaticoPickableArts = Objects.requireNonNull(this.mPickingList.getValue())
|
||||
.stream()
|
||||
.filter(x -> x.getMtbColts().stream()
|
||||
.anyMatch(y -> y.getPosizione() != null && y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())) &&
|
||||
x.getSitArtOrdDTO() != null &&
|
||||
UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaOrd(), BigDecimal.ZERO))
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
var mtbAarts = Stream.of(magazzinoAutomaticoPickableArts)
|
||||
var mtbAarts = magazzinoAutomaticoPickableArts.stream()
|
||||
.map(PickingObjectDTO::getMtbAart)
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
this.sendChooseArtsRequest(mtbAarts, selectedArts -> {
|
||||
|
||||
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = Stream.of(this.mTestateOrdini)
|
||||
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = this.mTestateOrdini.stream()
|
||||
.map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd())
|
||||
.setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null))
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
final List<MagazzinoAutomaticoPickItemRequestDTO> magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>();
|
||||
for (MtbAart selectedArt : selectedArts) {
|
||||
final PickingObjectDTO pickingObjectDTO = Stream.of(magazzinoAutomaticoPickableArts)
|
||||
final PickingObjectDTO pickingObjectDTO = magazzinoAutomaticoPickableArts.stream()
|
||||
.filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(selectedArt.getCodMart()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
@ -682,10 +732,10 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
public void executeEmptyMagazzinoAutomaticoRequest(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
|
||||
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = Stream.of(this.mTestateOrdini)
|
||||
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = this.mTestateOrdini.stream()
|
||||
.map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd())
|
||||
.setDataCons(UtilityDate.toLocalDate(x.getDataConsD())))
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPickItemsRequestDTO()
|
||||
.setShouldCreateUDS(true)
|
||||
@ -703,21 +753,22 @@ public class SpedizioneViewModel {
|
||||
|
||||
if (mEnableGiacenza) {
|
||||
|
||||
Stream.of(pickingList).forEach(pickingObjectDTO -> {
|
||||
if (Stream.of(pickingObjectDTO.getMtbColts())
|
||||
.anyMatch(x ->
|
||||
Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
|
||||
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
|
||||
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
|
||||
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
|
||||
pickingList
|
||||
.forEach(pickingObjectDTO -> {
|
||||
if (pickingObjectDTO.getMtbColts().stream()
|
||||
.anyMatch(x ->
|
||||
Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
|
||||
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
|
||||
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
|
||||
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
|
||||
|
||||
matchPickingObject.add(pickingObjectDTO);
|
||||
}
|
||||
});
|
||||
matchPickingObject.add(pickingObjectDTO);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//Controllo se nel collo ho degli articoli che corrispondono per codice / taglia / colore / lotto
|
||||
Stream.of(scannedUL.getMtbColr()).filter(x -> !UtilityString.isNullOrEmpty(x.getCodMart())).forEach(x -> {
|
||||
scannedUL.getMtbColr().stream().filter(x -> !UtilityString.isNullOrEmpty(x.getCodMart())).forEach(x -> {
|
||||
|
||||
for (PickingObjectDTO pickingObject : pickingList) {
|
||||
//Da verificare se il controllo per partita deve essere sempre effettuato
|
||||
@ -736,7 +787,7 @@ public class SpedizioneViewModel {
|
||||
ObservableArrayList<MtbColr> cloneMtbColrs = (ObservableArrayList<MtbColr>) cloneMtbColt.getMtbColr().clone();
|
||||
|
||||
|
||||
Stream.of(cloneMtbColt.getMtbColr())
|
||||
cloneMtbColt.getMtbColr().stream()
|
||||
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
|
||||
@ -760,12 +811,12 @@ public class SpedizioneViewModel {
|
||||
private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, Runnable onComplete) {
|
||||
final List<PickingObjectDTO> pickingList = mPickingList.getValue();
|
||||
|
||||
List<PickingObjectDTO> matchPickingObject = Stream.of(pickingList)
|
||||
List<PickingObjectDTO> matchPickingObject = pickingList.stream()
|
||||
.filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitArtOrdDTO().getCodMart()))
|
||||
.filter(x -> x.getSitArtOrdDTO().isFlagEnableScanArt()).filter(x -> {
|
||||
MtbPartitaMag mtbPartitaMag = pickData != null && pickData.getManualPickDTO() != null && pickData.getManualPickDTO().getMtbPartitaMag() != null ? pickData.getManualPickDTO().getMtbPartitaMag() : null;
|
||||
return !mEnableCheckPartitaMag || (mtbPartitaMag != null && UtilityString.equalsIgnoreCase(x.getSitArtOrdDTO().getPartitaMag(), mtbPartitaMag.getPartitaMag()));
|
||||
}).toList();
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
for (PickingObjectDTO pickingObjectDTO : matchPickingObject) {
|
||||
pickingObjectDTO.setTempPickData(pickData);
|
||||
@ -787,7 +838,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
List<PickingObjectDTO> pickingList = mPickingList.getValue();
|
||||
|
||||
Stream.of(pickingList).filter(x -> x != matchedItem).forEach(x -> x.setHidden(true));
|
||||
pickingList.stream().filter(x -> x != matchedItem).forEach(x -> x.setHidden(true));
|
||||
|
||||
this.sendFilterApplied(null);
|
||||
this.getPickingList().postValue(pickingList);
|
||||
@ -828,14 +879,14 @@ public class SpedizioneViewModel {
|
||||
|
||||
List<MtbColr> scannedMtbColrs = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr();
|
||||
|
||||
List<MtbPartitaMag> availableBatchLots = Stream.of(scannedMtbColrs)
|
||||
List<MtbPartitaMag> availableBatchLots = scannedMtbColrs.stream()
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
|
||||
(x.getPartitaMag() == null || x.getMtbPartitaMag().getDataScad() == null ||
|
||||
UtilityDate.getNow().isBefore(x.getMtbPartitaMag().getDataScad())))
|
||||
|
||||
.distinctBy(MtbColr::getPartitaMag)
|
||||
.map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag())
|
||||
.toList();
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//Controllo se una delle partite combacia con quella che voglio evadere
|
||||
// if (refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) {
|
||||
@ -854,24 +905,30 @@ public class SpedizioneViewModel {
|
||||
|
||||
List<MtbPartitaMag> tmp = new ArrayList<>();
|
||||
|
||||
if (Stream.of(availableBatchLots).anyMatch(x -> x.getDataScad() != null)) {
|
||||
tmp.addAll(Stream.of(availableBatchLots)
|
||||
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() != null)) {
|
||||
tmp.addAll(availableBatchLots.stream()
|
||||
.filter(x -> x.getDataScad() != null && UtilityDate.getNow().isBefore(x.getDataScad()))
|
||||
.sortBy(MtbPartitaMag::getDataScad).
|
||||
toList());
|
||||
.sorted(Comparator.comparing(MtbPartitaMag::getDataScad))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
if (Stream.of(availableBatchLots).anyMatch(x -> x.getDataScad() == null)) {
|
||||
tmp.addAll(Stream.of(availableBatchLots)
|
||||
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() == null)) {
|
||||
tmp.addAll(availableBatchLots.stream()
|
||||
.filter(x -> x.getDataScad() == null)
|
||||
.sortBy(x -> UtilityString.isNull(x.getPartitaMag(), "")).toList());
|
||||
.sorted(Comparator.comparing(MtbPartitaMag::getPartitaMag))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
this.sendBatchLotSelectionRequest(tmp, selected -> {
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
if (selected != null) {
|
||||
MtbColr scannedMtbColr = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr()).filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && ((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag())) || (x.getPartitaMag() == null && selected.getPartitaMag() == null))).toList().get(0);
|
||||
MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().stream()
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
|
||||
((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag()))
|
||||
|| (x.getPartitaMag() == null && selected.getPartitaMag() == null)))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged);
|
||||
}
|
||||
@ -894,10 +951,11 @@ public class SpedizioneViewModel {
|
||||
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
|
||||
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal();
|
||||
|
||||
Stream.of(pickingObjectDTO.getWithdrawMtbColrs()).forEach(row -> {
|
||||
numCnfWithdrawRows.addAndGet(row.getNumCnf());
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
pickingObjectDTO.getWithdrawMtbColrs().stream()
|
||||
.forEach(row -> {
|
||||
numCnfWithdrawRows.addAndGet(row.getNumCnf());
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
|
||||
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
||||
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
||||
@ -1158,7 +1216,10 @@ public class SpedizioneViewModel {
|
||||
public void dispatchRowEdit(final MtbColr mtbColrToEdit) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
Optional<PickingObjectDTO> optionalPickingObjectDTO = Stream.of(this.mPickingList.getValue()).filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToEdit)).findSingle();
|
||||
Optional<PickingObjectDTO> optionalPickingObjectDTO =
|
||||
this.mPickingList.getValue().stream()
|
||||
.filter(x -> x.getWithdrawMtbColrs().stream().anyMatch(y -> y == mtbColrToEdit))
|
||||
.findFirst();
|
||||
|
||||
PickingObjectDTO pickingObjectDTO = null;
|
||||
|
||||
@ -1187,10 +1248,11 @@ public class SpedizioneViewModel {
|
||||
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(0);
|
||||
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(0);
|
||||
|
||||
Stream.of(finalPickingObjectDTO.getWithdrawMtbColrs()).forEach(row -> {
|
||||
numCnfWithdrawRows.addAndGet(row.getNumCnf());
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
finalPickingObjectDTO.getWithdrawMtbColrs()
|
||||
.forEach(row -> {
|
||||
numCnfWithdrawRows.addAndGet(row.getNumCnf());
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
|
||||
numCnfDaEvadere = totalNumCnfOrd.subtract(numCnfWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getNumCnf());
|
||||
qtaDaEvadere = totalQtaOrd.subtract(qtaColWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getQtaCol());
|
||||
@ -1215,7 +1277,13 @@ public class SpedizioneViewModel {
|
||||
|
||||
if (mtbColrRifs != null && mtbColrRifs.size() > 0) {
|
||||
//TODO: Da capire se è necessario controllare anche il cod_jcom
|
||||
Optional<MtbColr> optionalMtbColr = Stream.of(mtbColrRifs).filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag())).findSingle();
|
||||
Optional<MtbColr> optionalMtbColr =
|
||||
mtbColrRifs.stream()
|
||||
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag()))
|
||||
.findFirst();
|
||||
|
||||
mtbColrRif = optionalMtbColr.isPresent() ? optionalMtbColr.get() : null;
|
||||
}
|
||||
@ -1270,15 +1338,16 @@ public class SpedizioneViewModel {
|
||||
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
int causaleCollo = 0;
|
||||
if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1) causaleCollo = 1;
|
||||
if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1)
|
||||
causaleCollo = 1;
|
||||
|
||||
final List<CreateUDSRequestOrderDTO> orders = Stream.of(this.mTestateOrdini)
|
||||
final List<CreateUDSRequestOrderDTO> orders = this.mTestateOrdini.stream()
|
||||
.map(x -> new CreateUDSRequestOrderDTO()
|
||||
.setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null)
|
||||
.setDataOrd(UtilityDate.toLocalDate(x.getDataOrdD()))
|
||||
.setGestione(x.getGestione())
|
||||
.setNumOrd(x.getNumOrd()))
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
final CreateUDSRequestDTO createUDSRequestDTO = new CreateUDSRequestDTO()
|
||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||
@ -1407,9 +1476,10 @@ public class SpedizioneViewModel {
|
||||
.setQtaCnf(savedMtbColr.getQtaCnf())
|
||||
.setQtaCol(savedMtbColr.getQtaCol());
|
||||
|
||||
Optional<PickingObjectDTO> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColrs())
|
||||
.anyMatch(y -> y == mtbColrToUpdate)).findSingle();
|
||||
Optional<PickingObjectDTO> pickingObjectDTO = this.mPickingList.getValue().stream()
|
||||
.filter(x -> x.getWithdrawMtbColrs().stream()
|
||||
.anyMatch(y -> y == mtbColrToUpdate))
|
||||
.findFirst();
|
||||
|
||||
if (pickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
||||
@ -1437,9 +1507,9 @@ public class SpedizioneViewModel {
|
||||
.setMtbColrToDelete(mtbColrToDelete);
|
||||
|
||||
this.mColliScaricoRESTConsumer.deleteUDSRow(deleteUDSRowRequestoDTO, () -> {
|
||||
Optional<PickingObjectDTO> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete))
|
||||
.findSingle();
|
||||
Optional<PickingObjectDTO> pickingObjectDTO = this.mPickingList.getValue().stream()
|
||||
.filter(x -> x.getWithdrawMtbColrs().stream().anyMatch(y -> y == mtbColrToDelete))
|
||||
.findFirst();
|
||||
|
||||
if (pickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete);
|
||||
@ -1485,7 +1555,7 @@ public class SpedizioneViewModel {
|
||||
positionedMtbColts -> {
|
||||
|
||||
this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> {
|
||||
Stream.of(positionedMtbColts)
|
||||
positionedMtbColts.stream()
|
||||
.filter(x -> !this.mColliRegistrati.contains(x))
|
||||
.forEach(x -> this.mColliRegistrati.add(x));
|
||||
|
||||
@ -1514,7 +1584,8 @@ public class SpedizioneViewModel {
|
||||
clonedLuToClose.setMtbColr(null);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
if(mTestateOrdini != null && !mTestateOrdini.isEmpty()) codMdep = mTestateOrdini.get(0).getCodMdep();
|
||||
if (mTestateOrdini != null && !mTestateOrdini.isEmpty())
|
||||
codMdep = mTestateOrdini.get(0).getCodMdep();
|
||||
|
||||
var closeUDSRequestDto = new CloseUDSRequestDTO()
|
||||
.setMtbColt(clonedLuToClose)
|
||||
@ -1716,7 +1787,7 @@ public class SpedizioneViewModel {
|
||||
private void postCloseOperations(List<MtbColt> mtbColtList) {
|
||||
if (mTestateOrdini != null) {
|
||||
for (MtbColt mtbColt : mtbColtList) {
|
||||
Stream.of(mTestateOrdini)
|
||||
mTestateOrdini.stream()
|
||||
.filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum())
|
||||
.forEach(x -> x.setExistColloBoolean(true));
|
||||
}
|
||||
@ -1735,7 +1806,17 @@ public class SpedizioneViewModel {
|
||||
|
||||
if (pickingObjectDTO.getMtbColts() != null) {
|
||||
|
||||
Optional<MtbColr> optionalMtbColrReference = Stream.of(pickingObjectDTO.getMtbColts()).filter(y -> withdrawMtbColr.getRefMtbColr() != null && withdrawMtbColr.getRefMtbColr().getNumCollo().equals(y.getNumCollo()) && withdrawMtbColr.getRefMtbColr().getDataColloD().equals(y.getDataColloD()) && withdrawMtbColr.getRefMtbColr().getSerCollo().equals(y.getSerCollo()) && withdrawMtbColr.getRefMtbColr().getGestioneEnum().equals(y.getGestioneEnum()) && UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodMart(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodMart() : null) && UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodTagl(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodTagl() : null) && UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodCol(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodCol() : null)).map(y -> y.getMtbColr().get(0)).findFirst();
|
||||
Optional<MtbColr> optionalMtbColrReference = pickingObjectDTO.getMtbColts().stream()
|
||||
.filter(y -> withdrawMtbColr.getRefMtbColr() != null &&
|
||||
withdrawMtbColr.getRefMtbColr().getNumCollo().equals(y.getNumCollo()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getDataColloD().equals(y.getDataColloD()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getSerCollo().equals(y.getSerCollo()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getGestioneEnum().equals(y.getGestioneEnum()) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodMart(), y.getMtbColr() != null && !y.getMtbColr().isEmpty() ? y.getMtbColr().get(0).getCodMart() : null) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodTagl(), y.getMtbColr() != null && !y.getMtbColr().isEmpty() ? y.getMtbColr().get(0).getCodTagl() : null) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodCol(), y.getMtbColr() != null && !y.getMtbColr().isEmpty() ? y.getMtbColr().get(0).getCodCol() : null))
|
||||
.map(y -> y.getMtbColr().get(0))
|
||||
.findFirst();
|
||||
|
||||
|
||||
if (optionalMtbColrReference.isPresent()) {
|
||||
@ -1783,11 +1864,13 @@ public class SpedizioneViewModel {
|
||||
onOrderClosedPrintingDone();
|
||||
return;
|
||||
}
|
||||
List<DtbOrdt> closedOrders = Stream.of(this.mTestateOrdini).map(ord -> {
|
||||
DtbOrdt ordV = new DtbOrdt();
|
||||
ordV.setDataOrd(ord.getDataOrdS()).setNumOrd(ord.getNumOrd()).setGestione(ord.getGestione()).setCodAnag(ord.getCodAnagOrd());
|
||||
return ordV;
|
||||
}).toList();
|
||||
List<DtbOrdt> closedOrders = this.mTestateOrdini.stream()
|
||||
.map(ord -> new DtbOrdt()
|
||||
.setDataOrd(ord.getDataOrdS())
|
||||
.setNumOrd(ord.getNumOrd())
|
||||
.setGestione(ord.getGestione())
|
||||
.setCodAnag(ord.getCodAnagOrd())
|
||||
).toList();
|
||||
|
||||
dto.setPrintList(closedOrders);
|
||||
printClosedOrders(dto, this::onOrderClosedPrintingDone, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded));
|
||||
@ -1798,6 +1881,24 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
|
||||
public void registraImballi(VtbVett vettore, List<TracciamentoImballoDTO> imballi) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
var inputData = imballi.stream()
|
||||
.map(x -> new ImballoQuantityDTO()
|
||||
.setQta(x.getQta().get())
|
||||
.setCodMart(x.getCodMart().get()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
mImballiRESTConsumer.registraScarico(
|
||||
vettore != null ? vettore.getCodVvet() : null,
|
||||
vettore != null ? vettore.getCodAnag() : null, inputData,
|
||||
() -> {
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<PickingObjectDTO>> getPickingList() {
|
||||
return mPickingList;
|
||||
}
|
||||
@ -1806,11 +1907,24 @@ public class SpedizioneViewModel {
|
||||
return (ArrayList<MtbColt>) this.mColliRegistrati;
|
||||
}
|
||||
|
||||
void createDocs() {
|
||||
public VtbVett getDefaultVettore() {
|
||||
return mDefaultVettore;
|
||||
}
|
||||
|
||||
void createDocs() {
|
||||
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();
|
||||
|
||||
var codAnag = mTestateOrdini.stream().map(OrdineUscitaInevasoDTO::getCodAnagOrd)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
var codVdes = mTestateOrdini.stream().map(OrdineUscitaInevasoDTO::getCodVdes)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
loadCollidto.setColli(getCreatedMtbColts());
|
||||
loadCollidto.setCodDtip(SettingsManager.iDB().getCodDtipOrdTrasfV());
|
||||
|
||||
@ -0,0 +1,121 @@
|
||||
package it.integry.integrywmsnative.ui.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Filter;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.databinding.ArrayAdapterTwoLinesItemBinding;
|
||||
|
||||
public class SimpleAutoCompleteTwoLinesDropdownAdapter<T> extends ArrayAdapter<SimpleAutoCompleteTwoLinesDropdownListModel<T>> {
|
||||
|
||||
private List<SimpleAutoCompleteTwoLinesDropdownListModel<T>> mObjects;
|
||||
|
||||
public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, int resource) {
|
||||
super(context, resource);
|
||||
}
|
||||
|
||||
public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull SimpleAutoCompleteTwoLinesDropdownListModel<T>[] objects) {
|
||||
super(context, R.layout.array_adapter_two_lines_item, objects);
|
||||
mObjects = Arrays.asList(objects);
|
||||
}
|
||||
|
||||
public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull List<SimpleAutoCompleteTwoLinesDropdownListModel<T>> objects) {
|
||||
super(context, R.layout.array_adapter_two_lines_item, objects);
|
||||
mObjects = objects;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Filter getFilter() {
|
||||
return new StringFilter(mObjects);
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
SimpleAutoCompleteTwoLinesDropdownListModel<T> item = mObjects.get(position);
|
||||
// Check if an existing view is being reused, otherwise inflate the view
|
||||
ArrayAdapterTwoLinesItemBinding bindings = ArrayAdapterTwoLinesItemBinding.inflate(LayoutInflater.from(getContext()), parent, false);
|
||||
|
||||
// if (convertView == null) {
|
||||
// bindings = ArrayAdapterTwoLinesItemBinding.inflate(LayoutInflater.from(getContext()), parent, false);
|
||||
// convertView = bindings.getRoot();
|
||||
// convertView.setTag(bindings);
|
||||
// } else {
|
||||
// bindings = (ArrayAdapterTwoLinesItemBinding) convertView.getTag();
|
||||
// }
|
||||
|
||||
// Populate the data into the template view using the data object
|
||||
bindings.itemTitle.setText(item.getTitle());
|
||||
bindings.itemDescription.setText(item.getDescription());
|
||||
|
||||
return bindings.getRoot();
|
||||
}
|
||||
|
||||
private class StringFilter extends Filter {
|
||||
|
||||
private ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>> sourceObjects;
|
||||
|
||||
public StringFilter(List<SimpleAutoCompleteTwoLinesDropdownListModel<T>> objects) {
|
||||
if(objects == null) return;
|
||||
sourceObjects = new ArrayList<>();
|
||||
|
||||
synchronized (this) {
|
||||
sourceObjects.addAll(objects);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FilterResults performFiltering(CharSequence chars) {
|
||||
String filterSeq = chars.toString().toLowerCase();
|
||||
FilterResults result = new FilterResults();
|
||||
if (!filterSeq.isEmpty()) {
|
||||
ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>> filter = new ArrayList<>();
|
||||
|
||||
for (SimpleAutoCompleteTwoLinesDropdownListModel<T> object : sourceObjects) {
|
||||
// the filtering itself:
|
||||
if (object.getDescription().toLowerCase().contains(filterSeq) ||
|
||||
object.getTitle().toLowerCase().contains(filterSeq))
|
||||
filter.add(object);
|
||||
}
|
||||
|
||||
result.count = filter.size();
|
||||
result.values = filter;
|
||||
} else {
|
||||
// add all objects
|
||||
synchronized (this) {
|
||||
result.values = sourceObjects;
|
||||
result.count = sourceObjects.size();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
protected void publishResults(CharSequence constraint,
|
||||
FilterResults results) {
|
||||
// NOTE: this function is *always* called from the UI thread.
|
||||
if(constraint != null && constraint.length() > 2) {
|
||||
ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>> filtered = (ArrayList<SimpleAutoCompleteTwoLinesDropdownListModel<T>>) results.values;
|
||||
notifyDataSetChanged();
|
||||
clear();
|
||||
for (int i = 0, l = filtered.size(); i < l; i++)
|
||||
add(filtered.get(i));
|
||||
notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
package it.integry.integrywmsnative.ui.adapter;
|
||||
|
||||
public class SimpleAutoCompleteTwoLinesDropdownListModel<T> {
|
||||
|
||||
private String title;
|
||||
private String description;
|
||||
|
||||
private T originalModel;
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public SimpleAutoCompleteTwoLinesDropdownListModel<T> setTitle(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public SimpleAutoCompleteTwoLinesDropdownListModel<T> setDescription(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
public T getOriginalModel() {
|
||||
return originalModel;
|
||||
}
|
||||
|
||||
public SimpleAutoCompleteTwoLinesDropdownListModel<T> setOriginalModel(T originalModel) {
|
||||
this.originalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface DialogAskVettoreComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
DialogAskVettoreComponent create();
|
||||
}
|
||||
|
||||
void inject(DialogAskVettoreView dialogAskVettoreView);
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
|
||||
|
||||
@Module(subcomponents = DialogAskVettoreComponent.class)
|
||||
public class DialogAskVettoreModule {
|
||||
|
||||
@Provides
|
||||
DialogAskVettoreViewModel providesDialogAskVettoreViewModel(VettoriRESTConsumer vettoriRESTConsumer) {
|
||||
return new DialogAskVettoreViewModel(vettoriRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,147 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.ListPopupWindow;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.databinding.ObservableList;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.VtbVett;
|
||||
import it.integry.integrywmsnative.databinding.DialogAskVettoreBinding;
|
||||
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteTwoLinesDropdownAdapter;
|
||||
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteTwoLinesDropdownListModel;
|
||||
|
||||
public class DialogAskVettoreView extends BaseDialogFragment implements DialogAskVettoreViewModel.Listener {
|
||||
|
||||
|
||||
@Inject
|
||||
DialogAskVettoreViewModel mViewModel;
|
||||
|
||||
private ListPopupWindow listPopupWindow;
|
||||
|
||||
private DialogAskVettoreBinding mBindings;
|
||||
private Context mContext;
|
||||
|
||||
private final RunnableArgs<VtbVett> onComplete;
|
||||
|
||||
public ObservableField<VtbVett> selectedVettore = new ObservableField<>();
|
||||
|
||||
//Pass here all external parameters
|
||||
public static DialogAskVettoreView newInstance(VtbVett preselectedVett, @NotNull RunnableArgs<VtbVett> onComplete) {
|
||||
return new DialogAskVettoreView(preselectedVett, onComplete);
|
||||
}
|
||||
|
||||
private DialogAskVettoreView(VtbVett preselectedVett, @NotNull RunnableArgs<VtbVett> onComplete) {
|
||||
super();
|
||||
|
||||
this.selectedVettore.set(preselectedVett);
|
||||
this.onComplete = onComplete;
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialogAskVettoreComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
this.mContext = requireContext();
|
||||
|
||||
mBindings = DialogAskVettoreBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(mViewModel);
|
||||
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setNeutralButton(R.string.skip, (dialog, which) -> {
|
||||
if(this.onComplete != null) this.onComplete.run(null);
|
||||
})
|
||||
.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||
if(this.onComplete != null) this.onComplete.run(selectedVettore.get());
|
||||
})
|
||||
.setCancelable(isCancelable())
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onInit(DialogInterface dialogInterface) {
|
||||
super.onInit(dialogInterface);
|
||||
|
||||
mViewModel
|
||||
.setListener(this)
|
||||
.init();
|
||||
|
||||
listPopupWindow = new ListPopupWindow(requireActivity());
|
||||
listPopupWindow.setAnchorView(mBindings.buttonVettore);
|
||||
|
||||
mViewModel.getVettoriDisponibili().addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
public void onChanged(ObservableList sender) {
|
||||
var list = mViewModel.getVettoriDisponibili().stream()
|
||||
.sorted(Comparator.comparing(VtbVett::getCodVvet))
|
||||
.map(x -> new SimpleAutoCompleteTwoLinesDropdownListModel<VtbVett>()
|
||||
.setTitle(x.getCodVvet())
|
||||
.setDescription(x.getRagSoc())
|
||||
.setOriginalModel(x))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
list.add(0, new SimpleAutoCompleteTwoLinesDropdownListModel<VtbVett>()
|
||||
.setTitle("")
|
||||
.setDescription("Nessuna selezione")
|
||||
.setOriginalModel(null));
|
||||
|
||||
requireActivity().runOnUiThread(() -> {
|
||||
|
||||
listPopupWindow.setAdapter(new SimpleAutoCompleteTwoLinesDropdownAdapter<>(requireActivity(), list));
|
||||
|
||||
listPopupWindow.setOnItemClickListener((parent, view, position, id) -> {
|
||||
if(position == 0)
|
||||
selectedVettore.set(null);
|
||||
else selectedVettore.set(list.get(position).getOriginalModel());
|
||||
|
||||
listPopupWindow.dismiss();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void togglePopupShow() {
|
||||
if(this.listPopupWindow.isShowing())
|
||||
this.listPopupWindow.dismiss();
|
||||
else
|
||||
this.listPopupWindow.show();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.ask_vettore;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.VtbVett;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
|
||||
|
||||
public class DialogAskVettoreViewModel {
|
||||
|
||||
private final VettoriRESTConsumer vettoriRESTConsumer;
|
||||
|
||||
private final ObservableArrayList<VtbVett> vettoriDisponibili = new ObservableArrayList<>();
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
public DialogAskVettoreViewModel(VettoriRESTConsumer vettoriRESTConsumer) {
|
||||
this.vettoriRESTConsumer = vettoriRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void init() {
|
||||
this.vettoriRESTConsumer.retrieveRecentlyUsedInOrders(GestioneEnum.VENDITA, recentlyUsedVett -> {
|
||||
|
||||
if (recentlyUsedVett == null || recentlyUsedVett.isEmpty())
|
||||
return;
|
||||
|
||||
vettoriDisponibili.addAll(recentlyUsedVett);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
public ObservableArrayList<VtbVett> getVettoriDisponibili() {
|
||||
return vettoriDisponibili;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnLoadingEnded() {
|
||||
if (this.mListener != null) mListener.onLoadingEnded();
|
||||
}
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public DialogAskVettoreViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
interface Listener extends ILoadingListener {
|
||||
void onError(Exception ex);
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,7 +3,7 @@
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="@color/colorPrimary">
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,3c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM10,17l-4,-4 1.41,-1.41L10,14.17l6.59,-6.59L18,9l-8,8z"/>
|
||||
|
||||
@ -213,77 +213,17 @@
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.github.clans.fab.FloatingActionMenu
|
||||
android:id="@+id/spedizione_fab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
app:layout_anchor="@+id/spedizione_empty_view"
|
||||
app:layout_anchorGravity="center"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:menu_animationDelayPerItem="50"
|
||||
app:menu_backgroundColor="@color/white_bg_alpha"
|
||||
app:menu_buttonSpacing="0dp"
|
||||
app:menu_colorNormal="@color/colorSecondary"
|
||||
app:menu_colorPressed="@color/colorSecondaryDark"
|
||||
app:menu_fab_size="normal"
|
||||
app:menu_labels_colorNormal="@color/white"
|
||||
app:menu_labels_colorPressed="@color/white_pressed"
|
||||
app:menu_labels_colorRipple="#66FFFFFF"
|
||||
app:menu_labels_cornerRadius="3dp"
|
||||
app:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
|
||||
app:menu_labels_margin="0dp"
|
||||
app:menu_labels_padding="8dp"
|
||||
app:menu_labels_paddingBottom="4dp"
|
||||
app:menu_labels_paddingLeft="8dp"
|
||||
app:menu_labels_paddingRight="8dp"
|
||||
app:menu_labels_paddingTop="4dp"
|
||||
app:menu_labels_position="left"
|
||||
app:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
|
||||
app:menu_labels_showShadow="true"
|
||||
app:menu_labels_textColor="@color/black_semi_transparent"
|
||||
app:menu_labels_textSize="18sp"
|
||||
app:menu_openDirection="up"
|
||||
app:menu_shadowColor="#66000000"
|
||||
app:menu_shadowRadius="4dp"
|
||||
app:menu_shadowXOffset="1dp"
|
||||
app:menu_shadowYOffset="3dp"
|
||||
app:menu_showShadow="true"
|
||||
app:visibility="@{spedizioneView.noLUPresent}">
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_assignment_turned_in_24"
|
||||
app:visibility="@{spedizioneView.closeOrderButtonEnabled}"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:fab_label="@string/action_close_order"
|
||||
app:onClick="@{() -> spedizioneView.closeOrder()}" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_box"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:fab_label="@string/action_show_created_ul"
|
||||
app:onClick="@{() -> spedizioneView.showCreatedUL()}" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_add_24dp"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:fab_label="@string/action_create_ul"
|
||||
app:onClick="@{() -> spedizioneView.createNewUL()}" />
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/spedizione_ordine_inevaso_fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp"
|
||||
android:onClick="@{() -> spedizioneView.showFabMenu()}"
|
||||
app:srcCompat="@drawable/ic_add_24dp"
|
||||
app:visibility="@{spedizioneView.noLUPresent}"
|
||||
style="?attr/floatingActionButtonPrimaryStyle" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
|
||||
32
app/src/main/res/layout/array_adapter_two_lines_item.xml
Normal file
32
app/src/main/res/layout/array_adapter_two_lines_item.xml
Normal file
@ -0,0 +1,32 @@
|
||||
<layout>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingVertical="4dp"
|
||||
android:paddingHorizontal="8dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/item_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?attr/textAppearanceLabelSmall"
|
||||
android:textStyle="bold"
|
||||
tools:text="Small title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/item_description"
|
||||
style="@style/AppTheme.NewMaterial.Text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="?attr/textAppearanceListItem"
|
||||
tools:text="Description" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</layout>
|
||||
101
app/src/main/res/layout/dialog_ask_vettore.xml
Normal file
101
app/src/main/res/layout/dialog_ask_vettore.xml
Normal file
@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="viewmodel"
|
||||
type="it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreViewModel" />
|
||||
|
||||
<variable
|
||||
name="view"
|
||||
type="it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreView" />
|
||||
</data>
|
||||
|
||||
<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="@string/carrier" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/button_vettore"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/gray_detail_background_round16"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
android:onClick="@{() -> view.togglePopupShow()}"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:visibility="@{view.selectedVettore == null}"
|
||||
tools:visibility="gone"
|
||||
android:text="@string/select_a_carrier_action" />
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:visibility="@{view.selectedVettore != null}">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?attr/textAppearanceLabelSmall"
|
||||
android:textStyle="bold"
|
||||
android:text="@{view.selectedVettore.codVvet}"
|
||||
tools:text="Small title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/item_description"
|
||||
style="@style/AppTheme.NewMaterial.Text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="?attr/textAppearanceListItem"
|
||||
android:text="@{view.selectedVettore.ragSoc}"
|
||||
tools:text="Description" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</layout>
|
||||
@ -51,9 +51,11 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/article"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:imeOptions="actionNext"
|
||||
android:singleLine="true" />
|
||||
android:singleLine="true"
|
||||
android:inputType="none"
|
||||
android:focusableInTouchMode="false"
|
||||
android:cursorVisible="false" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
|
||||
20
app/src/main/res/menu/spedizione_ordine_inevaso_fab_menu.xml
Normal file
20
app/src/main/res/menu/spedizione_ordine_inevaso_fab_menu.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/close_order"
|
||||
android:icon="@drawable/ic_baseline_assignment_turned_in_24"
|
||||
android:title="@string/action_close_order" />
|
||||
<item
|
||||
android:id="@+id/show_created_ul"
|
||||
android:icon="@drawable/ic_inventory_2_material3"
|
||||
android:title="@string/action_show_created_ul" />
|
||||
<item
|
||||
android:id="@+id/track_packaging"
|
||||
android:icon="@drawable/ic_add_to_inbox"
|
||||
android:title="@string/action_track_packaging" />
|
||||
<item
|
||||
android:id="@+id/create_ul"
|
||||
android:icon="@drawable/ic_add_material3"
|
||||
android:title="@string/action_create_ul" />
|
||||
|
||||
</menu>
|
||||
@ -70,6 +70,7 @@
|
||||
<string name="action_delete_ul">Cancella UL</string>
|
||||
<string name="action_print">Stampa</string>
|
||||
<string name="confirm">Conferma</string>
|
||||
<string name="skip">Salta</string>
|
||||
<string name="action_save">Salva</string>
|
||||
<string name="hint_additional_notes">Note Aggiuntive</string>
|
||||
<string name="dialog_message_additional_notes">Inserisci eventuali note aggiuntive della tua UL</string>
|
||||
@ -346,6 +347,7 @@
|
||||
<string name="prod_recupero_materiale_title_fragment">Recupero materiale</string>
|
||||
<string name="please_select_an_item">Seleziona un elemento per continuare</string>
|
||||
|
||||
<string name="select_a_carrier_action">Seleziona un vettore</string>
|
||||
<string name="select_a_customer_message">Prima di procedere seleziona un <b>cliente</b></string>
|
||||
<string name="select_a_recipient_message">Prima di procedere seleziona un <b>destinatario</b></string>
|
||||
<string name="not_valid_customer_error">Cliente non valido</string>
|
||||
|
||||
@ -115,6 +115,7 @@
|
||||
<string name="action_print_ul">Print LU</string>
|
||||
<string name="action_print">Print</string>
|
||||
<string name="confirm">Confirm</string>
|
||||
<string name="skip">Skip</string>
|
||||
<string name="action_save">Save</string>
|
||||
<string name="hint_additional_notes">Additional notes</string>
|
||||
<string name="dialog_message_additional_notes">Enter any additional notes in your logistics unit</string>
|
||||
@ -351,6 +352,7 @@
|
||||
<string name="please_select_an_item">Please select an item before proceed</string>
|
||||
|
||||
|
||||
<string name="select_a_carrier_action">Select a carrier</string>
|
||||
<string name="select_a_customer_message">Please, select a <b>customer</b> before proceeding</string>
|
||||
<string name="select_a_recipient_message">Please, select a <b>recipient</b> before proceeding</string>
|
||||
<string name="not_valid_customer_error">Invalid customer</string>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user