Finish v1.40.29(446)
This commit is contained in:
commit
fa95ed1391
@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 438
|
def appVersionCode = 446
|
||||||
def appVersionName = '1.40.21'
|
def appVersionName = '1.40.29'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|||||||
@ -114,4 +114,21 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkBarcodeUl(String barcodeUl, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed){
|
||||||
|
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class);
|
||||||
|
|
||||||
|
colliAccettazioneRESTConsumerService.checkIfBarcodeUlAlreadyRegistered(barcodeUl)
|
||||||
|
.enqueue(new Callback<>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<ServiceRESTResponse<Boolean>> call, Response<ServiceRESTResponse<Boolean>> response) {
|
||||||
|
analyzeAnswer(response, "accettazione/checkIfBarcodeUlAlreadyRegistered", onComplete, onFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<ServiceRESTResponse<Boolean>> call, Throwable t) {
|
||||||
|
onFailed.run(new Exception(t));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,9 @@ import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO;
|
|||||||
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowResponseDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowResponseDTO;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
|
import retrofit2.http.GET;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
|
import retrofit2.http.Query;
|
||||||
|
|
||||||
public interface ColliAccettazioneRESTConsumerService {
|
public interface ColliAccettazioneRESTConsumerService {
|
||||||
|
|
||||||
@ -31,4 +33,7 @@ public interface ColliAccettazioneRESTConsumerService {
|
|||||||
@POST("wms/accettazione/deleteUDCRow")
|
@POST("wms/accettazione/deleteUDCRow")
|
||||||
Call<ServiceRESTResponse<Void>> deleteUDCRow(@Body DeleteUDCRowRequestDTO deleteUDCRowRequestDTO);
|
Call<ServiceRESTResponse<Void>> deleteUDCRow(@Body DeleteUDCRowRequestDTO deleteUDCRowRequestDTO);
|
||||||
|
|
||||||
|
@GET("wms/accettazione/checkIfBarcodeUlAlreadyRegistered")
|
||||||
|
Call<ServiceRESTResponse<Boolean>> checkIfBarcodeUlAlreadyRegistered(@Query("barcodeUl") String barcodeUl);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.core.rest.consumers;
|
package it.integry.integrywmsnative.core.rest.consumers;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
@ -13,6 +15,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
|
|||||||
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSResponseDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
||||||
@ -113,4 +117,21 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void duplicateUDS(DuplicateUDSRequestDTO duplicateUDSRequestDTO, RunnableArgs<DuplicateUDSResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
|
||||||
|
|
||||||
|
colliSpedizioneRESTConsumerService.duplicateUDS(duplicateUDSRequestDTO)
|
||||||
|
.enqueue(new Callback<>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull Call<ServiceRESTResponse<DuplicateUDSResponseDTO>> call, @NonNull Response<ServiceRESTResponse<DuplicateUDSResponseDTO>> response) {
|
||||||
|
analyzeAnswer(response, "spedizione/duplicateUDS", onComplete, onFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<ServiceRESTResponse<DuplicateUDSResponseDTO>> call, @NonNull Throwable t) {
|
||||||
|
onFailed.run(new Exception());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
|
|||||||
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSResponseDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
||||||
@ -35,4 +37,7 @@ public interface ColliSpedizioneRESTConsumerService {
|
|||||||
@POST("wms/spedizione/deleteUDSRow")
|
@POST("wms/spedizione/deleteUDSRow")
|
||||||
Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO);
|
Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO);
|
||||||
|
|
||||||
|
@POST("wms/spedizione/duplicateUDS")
|
||||||
|
Call<ServiceRESTResponse<DuplicateUDSResponseDTO>> duplicateUDS(@Body DuplicateUDSRequestDTO duplicateUDSRequestDTO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
@ -50,8 +51,21 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkFrumaDocument(String fornitore, String numDoc, String dataDoc, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
|
||||||
|
inventarioRESTConsumerService.checkFrumaDoc(fornitore, numDoc, dataDoc)
|
||||||
|
.enqueue(new Callback<>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull Call<ServiceRESTResponse<Boolean>> call, @NonNull Response<ServiceRESTResponse<Boolean>> response) {
|
||||||
|
analyzeAnswer(response, "checkDocument", onComplete, onFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<ServiceRESTResponse<Boolean>> call, @NonNull Throwable t) {
|
||||||
|
onFailed.run(new Exception(t));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void loadDocumentAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
public void loadDocumentAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
|
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.core.rest.consumers;
|
package it.integry.integrywmsnative.core.rest.consumers;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.model.DtbDoct;
|
import it.integry.integrywmsnative.core.model.DtbDoct;
|
||||||
@ -20,8 +21,11 @@ public interface DocumentiRESTConsumerService {
|
|||||||
@POST("createDocFromColli")
|
@POST("createDocFromColli")
|
||||||
Call<ServiceRESTResponse<DtbDoct>> createDocFromColli(@Body LoadColliDTO listColli);
|
Call<ServiceRESTResponse<DtbDoct>> createDocFromColli(@Body LoadColliDTO listColli);
|
||||||
|
|
||||||
|
@GET("wms/documento/checkFruma")
|
||||||
|
Call<ServiceRESTResponse<Boolean>> checkFrumaDoc(
|
||||||
|
@Query("fornitore") String fornitore,
|
||||||
|
@Query("numDoc") String numDoc,
|
||||||
|
@Query("dataDoc") String dataDoc);
|
||||||
|
|
||||||
@GET("wms/documento/arts")
|
@GET("wms/documento/arts")
|
||||||
Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> retrieveArts(
|
Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> retrieveArts(
|
||||||
|
|||||||
@ -1,13 +1,19 @@
|
|||||||
package it.integry.integrywmsnative.core.rest.consumers;
|
package it.integry.integrywmsnative.core.rest.consumers;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
@ -59,4 +65,20 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void retrieveAllPartitaMag(List<String> codMarts, Date dataScad, RunnableArgs<List<MtbPartitaMag>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
|
||||||
|
service.retrieveAllPartitaMag(codMarts, UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
|
||||||
|
.enqueue(new Callback<>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull Call<ServiceRESTResponse<List<MtbPartitaMag>>> call, @NonNull Response<ServiceRESTResponse<List<MtbPartitaMag>>> response) {
|
||||||
|
analyzeAnswer(response, "retrieveAllPartitaMag", onComplete, onFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<ServiceRESTResponse<List<MtbPartitaMag>>> call, @NonNull Throwable t) {
|
||||||
|
onFailed.run(new Exception(t));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,14 +3,12 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.GET;
|
import retrofit2.http.GET;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
import retrofit2.http.Path;
|
|
||||||
import retrofit2.http.Query;
|
import retrofit2.http.Query;
|
||||||
|
|
||||||
public interface MagazzinoRESTConsumerService {
|
public interface MagazzinoRESTConsumerService {
|
||||||
@ -22,6 +20,7 @@ public interface MagazzinoRESTConsumerService {
|
|||||||
Call<ServiceRESTResponse<MtbPartitaMag>> retrievePartitaMag(@Query("codMart") String codMart,
|
Call<ServiceRESTResponse<MtbPartitaMag>> retrievePartitaMag(@Query("codMart") String codMart,
|
||||||
@Query("partitaMag") String partitaMag);
|
@Query("partitaMag") String partitaMag);
|
||||||
|
|
||||||
|
@POST("wms/partita-magazzino/retrieveAllPartitaMag")
|
||||||
|
Call<ServiceRESTResponse<List<MtbPartitaMag>>> retrieveAllPartitaMag(@Body List<String> codMarts,
|
||||||
|
@Query("dataScad") String dataScad);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
package it.integry.integrywmsnative.core.rest.model.uds;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
|
||||||
|
public class DuplicateUDSRequestDTO {
|
||||||
|
|
||||||
|
private MtbColt mtbColt;
|
||||||
|
|
||||||
|
private int numOfDuplicates;
|
||||||
|
|
||||||
|
public MtbColt getMtbColt() {
|
||||||
|
return mtbColt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DuplicateUDSRequestDTO setMtbColt(MtbColt mtbColt) {
|
||||||
|
this.mtbColt = mtbColt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumOfDuplicates() {
|
||||||
|
return numOfDuplicates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DuplicateUDSRequestDTO setNumOfDuplicates(int numOfDuplicates) {
|
||||||
|
this.numOfDuplicates = numOfDuplicates;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package it.integry.integrywmsnative.core.rest.model.uds;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
|
||||||
|
public class DuplicateUDSResponseDTO {
|
||||||
|
|
||||||
|
private List<MtbColt> mtbColtList;
|
||||||
|
|
||||||
|
public List<MtbColt> getMtbColtList() {
|
||||||
|
return mtbColtList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DuplicateUDSResponseDTO setMtbColtList(List<MtbColt> mtbColtList) {
|
||||||
|
this.mtbColtList = mtbColtList;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -34,6 +34,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagSpedizioneCanSelectMultipleOrders;
|
private boolean flagSpedizioneCanSelectMultipleOrders;
|
||||||
private List<String> notePerditaDocInterni = new ArrayList<>();
|
private List<String> notePerditaDocInterni = new ArrayList<>();
|
||||||
private boolean flagSpedizioneUseQtaOrd;
|
private boolean flagSpedizioneUseQtaOrd;
|
||||||
|
private boolean flagSpedizioneUseColliPedana;
|
||||||
private boolean flagOrdinaNuoviArticoliInGriglia;
|
private boolean flagOrdinaNuoviArticoliInGriglia;
|
||||||
private boolean flagOrdinaArticoliOnScan;
|
private boolean flagOrdinaArticoliOnScan;
|
||||||
private boolean flagConsentiFuoriPianoLogistico;
|
private boolean flagConsentiFuoriPianoLogistico;
|
||||||
@ -78,6 +79,10 @@ public class DBSettingsModel {
|
|||||||
|
|
||||||
private boolean flagTracciamentoImballiCaricoEnabled = false;
|
private boolean flagTracciamentoImballiCaricoEnabled = false;
|
||||||
private boolean flagTracciamentoImballiScaricoEnabled = false;
|
private boolean flagTracciamentoImballiScaricoEnabled = false;
|
||||||
|
private boolean flagPickingLiberoEnableScanArt = false;
|
||||||
|
private boolean flagAskDuplicateUDSSpedizione = false;
|
||||||
|
|
||||||
|
private boolean suggestDataScad = false;
|
||||||
|
|
||||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||||
return flagSpedizioneEnableFakeGiacenza;
|
return flagSpedizioneEnableFakeGiacenza;
|
||||||
@ -268,6 +273,15 @@ public class DBSettingsModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagSpedizioneUseColliPedana() {
|
||||||
|
return flagSpedizioneUseColliPedana;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagSpedizioneUseColliPedana(boolean flagSpedizioneUseColliPedana) {
|
||||||
|
this.flagSpedizioneUseColliPedana = flagSpedizioneUseColliPedana;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) {
|
public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) {
|
||||||
this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia;
|
this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia;
|
||||||
return this;
|
return this;
|
||||||
@ -654,4 +668,31 @@ public class DBSettingsModel {
|
|||||||
this.flagTracciamentoImballiScaricoEnabled = flagTracciamentoImballiScaricoEnabled;
|
this.flagTracciamentoImballiScaricoEnabled = flagTracciamentoImballiScaricoEnabled;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagPickingLiberoEnableScanArt() {
|
||||||
|
return flagPickingLiberoEnableScanArt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagPickingLiberoEnableScanArt(boolean flagPickingLiberoEnableScanArt) {
|
||||||
|
this.flagPickingLiberoEnableScanArt = flagPickingLiberoEnableScanArt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFlagAskDuplicateUDSSpedizione() {
|
||||||
|
return flagAskDuplicateUDSSpedizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagAskDuplicateUDSSpedizione(boolean flagAskDuplicateUDSSpedizione) {
|
||||||
|
this.flagAskDuplicateUDSSpedizione = flagAskDuplicateUDSSpedizione;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSuggestDataScad() {
|
||||||
|
return suggestDataScad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setSuggestDataScad(boolean suggestDataScad) {
|
||||||
|
this.suggestDataScad = suggestDataScad;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -315,6 +315,11 @@ public class SettingsManager {
|
|||||||
.setSection("SPEDIZIONE")
|
.setSection("SPEDIZIONE")
|
||||||
.setKeySection("FLAG_USE_QTA_ORD")
|
.setKeySection("FLAG_USE_QTA_ORD")
|
||||||
.setSetter(dbSettingsModelIstance::setFlagSpedizioneUseQtaOrd));
|
.setSetter(dbSettingsModelIstance::setFlagSpedizioneUseQtaOrd));
|
||||||
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("SPEDIZIONE")
|
||||||
|
.setKeySection("FLAG_USE_COLLI_PEDANA")
|
||||||
|
.setSetter(dbSettingsModelIstance::setFlagSpedizioneUseColliPedana));
|
||||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Integer.class)
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(Integer.class)
|
||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("SETUP")
|
.setSection("SETUP")
|
||||||
@ -388,6 +393,11 @@ public class SettingsManager {
|
|||||||
.setSection("SPEDIZIONE")
|
.setSection("SPEDIZIONE")
|
||||||
.setKeySection("FLAG_ASK_INFO_AGGIUNTIVE")
|
.setKeySection("FLAG_ASK_INFO_AGGIUNTIVE")
|
||||||
.setSetter(dbSettingsModelIstance::setFlagAskInfoAggiuntiveSpedizione));
|
.setSetter(dbSettingsModelIstance::setFlagAskInfoAggiuntiveSpedizione));
|
||||||
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("SPEDIZIONE")
|
||||||
|
.setKeySection("FLAG_ASK_DUPLICATE_UDS")
|
||||||
|
.setSetter(dbSettingsModelIstance::setFlagAskDuplicateUDSSpedizione));
|
||||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("SPEDIZIONE")
|
.setSection("SPEDIZIONE")
|
||||||
@ -446,6 +456,12 @@ public class SettingsManager {
|
|||||||
.setKeySection("GENERA_DOC")
|
.setKeySection("GENERA_DOC")
|
||||||
.setSetter(dbSettingsModelIstance::setFlagGeneraDocumentoSpedizione)
|
.setSetter(dbSettingsModelIstance::setFlagGeneraDocumentoSpedizione)
|
||||||
.setDefaultValue(false));
|
.setDefaultValue(false));
|
||||||
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("SPEDIZIONE")
|
||||||
|
.setKeySection("SUGGEST_DATA_SCAD")
|
||||||
|
.setSetter(dbSettingsModelIstance::setSuggestDataScad)
|
||||||
|
.setDefaultValue(false));
|
||||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("ACCETTAZIONE_BOLLA")
|
.setSection("ACCETTAZIONE_BOLLA")
|
||||||
@ -518,6 +534,12 @@ public class SettingsManager {
|
|||||||
.setKeySection("FLAG_WARNING_NEW_PARTITA_MAG")
|
.setKeySection("FLAG_WARNING_NEW_PARTITA_MAG")
|
||||||
.setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag)
|
.setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag)
|
||||||
.setDefaultValue(false));
|
.setDefaultValue(false));
|
||||||
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("PICKING_LIBERO")
|
||||||
|
.setKeySection("ENABLE_SCAN_ART")
|
||||||
|
.setSetter(dbSettingsModelIstance::setFlagPickingLiberoEnableScanArt)
|
||||||
|
.setDefaultValue(true));
|
||||||
|
|
||||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
|
|||||||
@ -22,6 +22,8 @@ import java.math.BigDecimal;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@ -33,6 +35,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
|||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
@ -54,11 +57,15 @@ import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBo
|
|||||||
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO;
|
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.AccettazioneBollaPickingOrderBy;
|
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.AccettazioneBollaPickingOrderBy;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.filters.AccettazioneBollaPickingFilterViewModel;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListAdapter;
|
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListAdapter;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListModel;
|
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListModel;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterDescrLayoutView;
|
||||||
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
|
||||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
||||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
|
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
|
||||||
@ -83,6 +90,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
|||||||
|
|
||||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||||
|
|
||||||
|
private final AccettazioneBollaPickingFilterViewModel mAppliedFilterViewModel = new AccettazioneBollaPickingFilterViewModel();
|
||||||
|
|
||||||
private final ObservableArrayList<AccettazioneBollaPickingListModel> mAccettazioneMutableData = new ObservableArrayList<>();
|
private final ObservableArrayList<AccettazioneBollaPickingListModel> mAccettazioneMutableData = new ObservableArrayList<>();
|
||||||
|
|
||||||
@ -150,7 +158,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
|||||||
this.initVars();
|
this.initVars();
|
||||||
this.initBarcodeReader();
|
this.initBarcodeReader();
|
||||||
this.initRecyclerView();
|
this.initRecyclerView();
|
||||||
// this.initFilters();
|
this.initFilters();
|
||||||
this.initFab();
|
this.initFab();
|
||||||
|
|
||||||
boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneBollaUseQtaOrd();
|
boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneBollaUseQtaOrd();
|
||||||
@ -201,16 +209,85 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
|||||||
this.mBindings.accettazionePickingList.setAdapter(adapter);
|
this.mBindings.accettazionePickingList.setAdapter(adapter);
|
||||||
|
|
||||||
this.mViewModel.getPickingList().observe(this, updatedData -> {
|
this.mViewModel.getPickingList().observe(this, updatedData -> {
|
||||||
// mAppliedFilterViewModel.init(updatedData);
|
mAppliedFilterViewModel.init(updatedData);
|
||||||
|
|
||||||
refreshList();
|
refreshList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
adapter.setOnLongClickListener(clickedItem -> {
|
||||||
|
this.mViewModel.dispatchBollaRow(clickedItem, true);
|
||||||
|
});
|
||||||
|
|
||||||
adapter.setOnItemClicked(clickedItem -> {
|
adapter.setOnItemClicked(clickedItem -> {
|
||||||
this.mViewModel.dispatchBollaRow(clickedItem);
|
this.mViewModel.dispatchBollaRow(clickedItem);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initFilters() {
|
||||||
|
|
||||||
|
var onPredicateChanged = new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
refreshList();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||||
|
|
||||||
|
List<FilterChipDTO> filterList = Stream.of(AccettazioneBollaPickingBindings.AVAILABLE_FILTERS.entrySet()).map(Map.Entry::getValue).sortBy(FilterChipDTO::getPosizione).toList();
|
||||||
|
|
||||||
|
for (FilterChipDTO filterChipDTO : filterList) {
|
||||||
|
|
||||||
|
FilterChipView filterChipView = new FilterChipView(this, filterChipDTO.getFilterChipText(), v -> initBottomSheetDialogFilter(filterChipDTO));
|
||||||
|
|
||||||
|
if (filterChipDTO.getID() == AccettazioneBollaPickingBindings.DESCR_FILTER_ID) {
|
||||||
|
mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null) {
|
||||||
|
mViewModel.resetMatchedRows();
|
||||||
|
filterChipView.disableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
} else {
|
||||||
|
filterChipView.enableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView, 0);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDescrPredicate().set(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
|
||||||
|
|
||||||
|
filterChipDTO.getFilterLayoutView().setFilterName(filterChipDTO.getFilterChipText()).setContext(this);
|
||||||
|
|
||||||
|
var filterLayoutView = filterChipDTO.getFilterLayoutView();
|
||||||
|
|
||||||
|
if (filterChipDTO.getID() == AccettazioneBollaPickingBindings.DESCR_FILTER_ID) {
|
||||||
|
((FilterDescrLayoutView) filterLayoutView)
|
||||||
|
.setAll(mAppliedFilterViewModel.getAllDescrs())
|
||||||
|
.setAvailable(mAppliedFilterViewModel.getAvailableDescrs())
|
||||||
|
.setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter)
|
||||||
|
.setPreselected(
|
||||||
|
Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
|
||||||
|
.filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ? x -> false : Objects.requireNonNull(mAppliedFilterViewModel.getCurrentDescrPredicate().get()))
|
||||||
|
.map(x -> x.getMtbAart().getDescrizioneEstesa()).toList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!filterLayoutView.isAdded()) filterLayoutView.show(getSupportFragmentManager(), "TAG");
|
||||||
|
}
|
||||||
|
|
||||||
private void initFab() {
|
private void initFab() {
|
||||||
fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab,
|
fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab,
|
||||||
@ -246,13 +323,13 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
|||||||
runOnUiThread(() -> {
|
runOnUiThread(() -> {
|
||||||
List<PickingObjectDTO> tmpList;
|
List<PickingObjectDTO> tmpList;
|
||||||
|
|
||||||
// if (mAppliedFilterViewModel != null) {
|
if (mAppliedFilterViewModel != null) {
|
||||||
// mAppliedFilterViewModel.applyAllTests();
|
mAppliedFilterViewModel.applyAllTests();
|
||||||
// tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
||||||
// } else {
|
} else {
|
||||||
tmpList = mViewModel.getPickingList().getValue();
|
tmpList = mViewModel.getPickingList().getValue();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
var list = convertDataModelToListModel(tmpList);
|
var list = convertDataModelToListModel(tmpList);
|
||||||
|
|
||||||
this.mAccettazioneMutableData.clear();
|
this.mAccettazioneMutableData.clear();
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.accettazione_bolla_picking;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterDescrLayoutView;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
|
|
||||||
|
public class AccettazioneBollaPickingBindings {
|
||||||
|
|
||||||
|
public static final int DESCR_FILTER_ID = 0;
|
||||||
|
|
||||||
|
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {
|
||||||
|
{
|
||||||
|
|
||||||
|
put(DESCR_FILTER_ID, new FilterChipDTO()
|
||||||
|
.setID(DESCR_FILTER_ID)
|
||||||
|
.setPosizione(1)
|
||||||
|
.setFilterChipText("Descrizione articolo")
|
||||||
|
.setFilterLayoutView(new FilterDescrLayoutView()));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -443,7 +443,11 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
dispatchBollaRow(pickingObjectDTO);
|
dispatchBollaRow(pickingObjectDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
|
public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO){
|
||||||
|
dispatchBollaRow(pickingObjectDTO, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO, boolean longClick) {
|
||||||
if (this.mCurrentMtbColt == null) return;
|
if (this.mCurrentMtbColt == null) return;
|
||||||
|
|
||||||
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
|
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
|
||||||
@ -578,6 +582,7 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!longClick){
|
||||||
this.sendOnItemDispatched(
|
this.sendOnItemDispatched(
|
||||||
pickingObjectDTO,
|
pickingObjectDTO,
|
||||||
pickingObjectDTO.getMtbAart(),
|
pickingObjectDTO.getMtbAart(),
|
||||||
@ -603,6 +608,16 @@ public class AccettazioneBollaPickingViewModel {
|
|||||||
pickedQuantityDTO.getDataScad(),
|
pickedQuantityDTO.getDataScad(),
|
||||||
shouldCloseLU);
|
shouldCloseLU);
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
this.saveNewRow(
|
||||||
|
pickingObjectDTO,
|
||||||
|
initialNumCnf,
|
||||||
|
initialQtaCnf,
|
||||||
|
initialQtaTot,
|
||||||
|
partitaMag,
|
||||||
|
dataScad,
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,75 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.accettazione_bolla_picking.filters;
|
||||||
|
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.annimon.stream.function.Predicate;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO;
|
||||||
|
|
||||||
|
public class AccettazioneBollaPickingFilterViewModel {
|
||||||
|
private final ObservableField<Predicate<PickingObjectDTO>> currentDescrPredicate = new ObservableField<>();
|
||||||
|
|
||||||
|
private List<PickingObjectDTO> initialOrderList;
|
||||||
|
private final MutableLiveData<List<PickingObjectDTO>> currentFilteredOrderList = new MutableLiveData<>();
|
||||||
|
|
||||||
|
public void init(List<PickingObjectDTO> initialList) {
|
||||||
|
this.initialOrderList = initialList;
|
||||||
|
this.currentFilteredOrderList.setValue(this.initialOrderList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MutableLiveData<List<PickingObjectDTO>> getMutableFilteredOrderList() {
|
||||||
|
return this.currentFilteredOrderList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setDescrFilter(List<String> descrs) {
|
||||||
|
if (descrs == null || descrs.isEmpty()) currentDescrPredicate.set(null);
|
||||||
|
else {
|
||||||
|
currentDescrPredicate.set(o -> descrs.contains(o.getMtbAart().getDescrizione()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void applyAllTests() {
|
||||||
|
|
||||||
|
List<PickingObjectDTO> returnList;
|
||||||
|
|
||||||
|
if (currentDescrPredicate.get() == null) {
|
||||||
|
returnList = this.initialOrderList;
|
||||||
|
} else {
|
||||||
|
Stream<PickingObjectDTO> tmpStream = Stream.of(this.initialOrderList)
|
||||||
|
.filter(x ->(currentDescrPredicate.get() == null || (currentDescrPredicate.get().test(x)))
|
||||||
|
);
|
||||||
|
|
||||||
|
returnList = tmpStream.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.currentFilteredOrderList.setValue(returnList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableField<Predicate<PickingObjectDTO>> getCurrentDescrPredicate() {
|
||||||
|
return currentDescrPredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAllDescrs() {
|
||||||
|
return Stream
|
||||||
|
.of(Objects.requireNonNull(initialOrderList))
|
||||||
|
.filter(x -> x.getMtbAart().getDescrizioneEstesa() != null)
|
||||||
|
.sortBy(x -> x.getMtbAart().getDescrizioneEstesa())
|
||||||
|
.map(x -> x.getMtbAart().getDescrizioneEstesa() != null ? x.getMtbAart().getDescrizioneEstesa() : null)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAvailableDescrs() {
|
||||||
|
return Stream.of(this.initialOrderList)
|
||||||
|
.map(x -> x.getMtbAart().getDescrizioneEstesa())
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -33,6 +33,7 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd
|
|||||||
private final List<AccettazioneBollaPickingListModel> mDataset = new ArrayList<>();
|
private final List<AccettazioneBollaPickingListModel> mDataset = new ArrayList<>();
|
||||||
|
|
||||||
private RunnableArgs<PickingObjectDTO> mOnItemClicked;
|
private RunnableArgs<PickingObjectDTO> mOnItemClicked;
|
||||||
|
private RunnableArgs<PickingObjectDTO> mOnItemLongClicked;
|
||||||
|
|
||||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
@ -75,6 +76,9 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd
|
|||||||
this.mOnItemClicked = onItemClicked;
|
this.mOnItemClicked = onItemClicked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOnLongClickListener(RunnableArgs<PickingObjectDTO> onItemLongClicked){
|
||||||
|
this.mOnItemLongClicked = onItemLongClicked;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccettazioneBollaPickingListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
public AccettazioneBollaPickingListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||||
@ -160,6 +164,12 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd
|
|||||||
if (this.mOnItemClicked != null)
|
if (this.mOnItemClicked != null)
|
||||||
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel());
|
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
holder.mBinding.getRoot().setOnLongClickListener(v -> {
|
||||||
|
if (this.mOnItemLongClicked != null)
|
||||||
|
this.mOnItemLongClicked.run(pickingObjectDTO.getOriginalModel());
|
||||||
|
return true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import android.content.Intent;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.Html;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@ -741,6 +742,16 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
|||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWarning(String warningText, Runnable action) {
|
||||||
|
this.runOnUiThread(() -> {
|
||||||
|
this.onLoadingEnded();
|
||||||
|
DialogSimpleMessageView
|
||||||
|
.makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action)
|
||||||
|
.show(getSupportFragmentManager(), "tag");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, String customArtDescription, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, String customArtDescription, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO().setMtbAart(mtbAart).setInitialNumCnf(initialNumCnf).setInitialQtaCnf(initialQtaCnf).setInitialQtaTot(initialQtaTot).setTotalQtaOrd(totalQtaOrd).setTotalNumCnfOrd(totalNumCnfOrd).setQtaCnfOrd(qtaCnfOrd).setTotalQtaToBeTaken(totalQtaToBeTaken).setTotalNumCnfToBeTaken(totalNumCnfToBeTaken).setQtaCnfToBeTaken(qtaCnfToBeTaken).setTotalQtaAvailable(totalQtaAvailable).setTotalNumCnfAvailable(totalNumCnfAvailable).setQtaCnfAvailable(qtaCnfAvailable).setPartitaMag(partitaMag).setDataScad(dataScad).setCanPartitaMagBeChanged(canPartitaMagBeChanged).setCanLUBeClosed(true).setCanOverflowOrderQuantity(canOverflowQuantity).setCustomArtDescription(customArtDescription);
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO().setMtbAart(mtbAart).setInitialNumCnf(initialNumCnf).setInitialQtaCnf(initialQtaCnf).setInitialQtaTot(initialQtaTot).setTotalQtaOrd(totalQtaOrd).setTotalNumCnfOrd(totalNumCnfOrd).setQtaCnfOrd(qtaCnfOrd).setTotalQtaToBeTaken(totalQtaToBeTaken).setTotalNumCnfToBeTaken(totalNumCnfToBeTaken).setQtaCnfToBeTaken(qtaCnfToBeTaken).setTotalQtaAvailable(totalQtaAvailable).setTotalNumCnfAvailable(totalNumCnfAvailable).setQtaCnfAvailable(qtaCnfAvailable).setPartitaMag(partitaMag).setDataScad(dataScad).setCanPartitaMagBeChanged(canPartitaMagBeChanged).setCanLUBeClosed(true).setCanOverflowOrderQuantity(canOverflowQuantity).setCustomArtDescription(customArtDescription);
|
||||||
|
|||||||
@ -247,8 +247,14 @@ public class AccettazioneOrdiniPickingViewModel {
|
|||||||
try {
|
try {
|
||||||
Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO);
|
Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO);
|
||||||
|
|
||||||
|
mColliAccettazioneRESTConsumer.checkBarcodeUl(ean128Model.Sscc, result -> {
|
||||||
|
if (result){
|
||||||
|
this.sendWarning("Barcode ul già registrato!", onComplete);
|
||||||
|
} else {
|
||||||
//Nel caso trovo un SSCC lo aggiungo
|
//Nel caso trovo un SSCC lo aggiungo
|
||||||
this.processBarcodeNotOpenedLU(barcodeScanDTO, ean128Model.Sscc, onComplete);
|
this.processBarcodeNotOpenedLU(barcodeScanDTO, ean128Model.Sscc, onComplete);
|
||||||
|
}
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
this.sendError(e);
|
this.sendError(e);
|
||||||
@ -550,7 +556,7 @@ public class AccettazioneOrdiniPickingViewModel {
|
|||||||
|
|
||||||
if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
|
if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
|
||||||
dataScad = UtilityDate.getNow();
|
dataScad = UtilityDate.getNow();
|
||||||
dataScad.plusDays(pickingObjectDTO.getMtbAart().getGgScadPartita());
|
dataScad = dataScad.plusDays(pickingObjectDTO.getMtbAart().getGgScadPartita());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (partitaMag == null && dataScad == null) {
|
if (partitaMag == null && dataScad == null) {
|
||||||
@ -933,6 +939,10 @@ public class AccettazioneOrdiniPickingViewModel {
|
|||||||
if (this.mListener != null) mListener.onError(ex);
|
if (this.mListener != null) mListener.onError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendWarning(String warningText, Runnable action) {
|
||||||
|
if (this.mListener != null) mListener.onWarning(warningText, action);
|
||||||
|
}
|
||||||
|
|
||||||
private void sendLUOpened(MtbColt mtbColt) {
|
private void sendLUOpened(MtbColt mtbColt) {
|
||||||
if (this.mListener != null) mListener.onLUOpened(mtbColt);
|
if (this.mListener != null) mListener.onLUOpened(mtbColt);
|
||||||
}
|
}
|
||||||
@ -1050,6 +1060,8 @@ public class AccettazioneOrdiniPickingViewModel {
|
|||||||
|
|
||||||
void onFilterPosizioneApplied(String posizioneToFilter);
|
void onFilterPosizioneApplied(String posizioneToFilter);
|
||||||
|
|
||||||
|
void onWarning(String warningText, Runnable action);
|
||||||
|
|
||||||
void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete);
|
void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package it.integry.integrywmsnative.gest.contab_doc_interni;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.Html;
|
||||||
|
import android.text.SpannableString;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -37,6 +39,7 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniE
|
|||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
|
||||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||||
|
|
||||||
public class DocInterniFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, DocInterniViewModel.Listener {
|
public class DocInterniFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, DocInterniViewModel.Listener {
|
||||||
|
|
||||||
@ -120,10 +123,21 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
this.openDocumentSelectionDialog();
|
this.openDocumentSelectionDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWarning(String warningText, Runnable action) {
|
||||||
|
this.requireActivity().runOnUiThread(() -> {
|
||||||
|
this.onLoadingEnded();
|
||||||
|
DialogSimpleMessageView
|
||||||
|
.makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action)
|
||||||
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) {
|
public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) {
|
||||||
mViewModel.setSelectedDocDetails(selection);
|
mViewModel.setSelectedDocDetails(selection, () -> {
|
||||||
mBinding.invalidateAll();
|
mBinding.invalidateAll();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
|
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
|
||||||
@ -17,6 +18,8 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
|
||||||
@ -76,6 +79,14 @@ public class DocInterniViewModel {
|
|||||||
if (this.mListener != null) mListener.onError(ex);
|
if (this.mListener != null) mListener.onError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendWarning(String warningText, Runnable action) {
|
||||||
|
if (this.mListener != null) mListener.onWarning(warningText, action);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendDocDetailsChanged(DialogSelectDocInfoResponseDTO selection){
|
||||||
|
if (this.mListener != null) mListener.onDocDetailsChanged(selection);
|
||||||
|
}
|
||||||
|
|
||||||
public DocInterniViewModel setListeners(Listener listener) {
|
public DocInterniViewModel setListeners(Listener listener) {
|
||||||
this.mListener = listener;
|
this.mListener = listener;
|
||||||
return this;
|
return this;
|
||||||
@ -85,7 +96,7 @@ public class DocInterniViewModel {
|
|||||||
return mDocsList;
|
return mDocsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) {
|
public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection, Runnable action) {
|
||||||
this.fornitore = selection.getFornitore();
|
this.fornitore = selection.getFornitore();
|
||||||
this.dtbTipi = selection.getTipoDoc();
|
this.dtbTipi = selection.getTipoDoc();
|
||||||
|
|
||||||
@ -94,11 +105,32 @@ public class DocInterniViewModel {
|
|||||||
this.numDoc = selection.getNumDoc() != null ? selection.getNumDoc().toString() : null;
|
this.numDoc = selection.getNumDoc() != null ? selection.getNumDoc().toString() : null;
|
||||||
this.note = selection.getNote();
|
this.note = selection.getNote();
|
||||||
|
|
||||||
|
if (dtbTipi.getCodDtip().equalsIgnoreCase("FRUMA")) {
|
||||||
|
documentRESTConsumer.checkFrumaDocument(
|
||||||
|
fornitore.getCodAnag(),
|
||||||
|
numDoc,
|
||||||
|
UtilityDate.formatDate(dataDoc, "yyyy/MM/dd"),
|
||||||
|
data -> {
|
||||||
|
if (!data) {
|
||||||
|
this.sendWarning(UtilityResources.getString(R.string.no_doc_found_message), this::init);
|
||||||
|
} else {
|
||||||
|
action.run();
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
fetchProducts(() -> {
|
fetchProducts(() -> {
|
||||||
fetchDocuments(this::sendOnLoadingEnded);
|
fetchDocuments(this::sendOnLoadingEnded);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
this::sendError
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
action.run();
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
fetchProducts(() -> {
|
||||||
|
fetchDocuments(this::sendOnLoadingEnded);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void fetchProducts(Runnable onComplete) {
|
public void fetchProducts(Runnable onComplete) {
|
||||||
documentRESTConsumer.loadDocumentAvailableArts(
|
documentRESTConsumer.loadDocumentAvailableArts(
|
||||||
@ -210,6 +242,8 @@ public class DocInterniViewModel {
|
|||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
|
void onWarning(String warningText, Runnable action);
|
||||||
|
|
||||||
void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO);
|
void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO);
|
||||||
|
|
||||||
void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection);
|
void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection);
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import javax.inject.Inject;
|
|||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||||
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
|
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
|
||||||
@ -137,13 +138,15 @@ public class PickingLiberoViewModel {
|
|||||||
//Cerco tramite etichetta ean 128 (che può indicarmi una UL)
|
//Cerco tramite etichetta ean 128 (che può indicarmi una UL)
|
||||||
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
|
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
|
||||||
|
|
||||||
} else if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
|
} else if (UtilityBarcode.isEanPeso(barcodeScanDTO) && SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()) {
|
||||||
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||||
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
|
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
|
||||||
|
|
||||||
} else {
|
} else if (SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()){
|
||||||
//Cerco tramite ean13 un collo in posizione mono ul definita in anagrafica articolo, altrimenti se abilitato procedo con picking manuale
|
//Cerco tramite ean13 un collo in posizione mono ul definita in anagrafica articolo, altrimenti se abilitato procedo con picking manuale
|
||||||
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
|
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
|
||||||
|
} else {
|
||||||
|
this.sendError(new NoArtsFoundException());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,18 +272,16 @@ public class PickingLiberoViewModel {
|
|||||||
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
|
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
|
||||||
barcodeProd = ean128Model.Content;
|
barcodeProd = ean128Model.Content;
|
||||||
|
|
||||||
|
|
||||||
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||||
|
|
||||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||||
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
|
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
|
||||||
} else if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
} else if (!UtilityString.isNullOrEmpty(barcodeProd) && SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()) {
|
||||||
this.loadArticolo(barcodeProd, ean128Model, onComplete);
|
this.loadArticolo(barcodeProd, ean128Model, onComplete);
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoLUFoundException());
|
this.sendError(new NoLUFoundException());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||||
this.sendError(new NoLUFoundException());
|
this.sendError(new NoLUFoundException());
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import androidx.preference.PreferenceFragmentCompat;
|
|||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
||||||
import com.harrysoft.androidbluetoothserial.BluetoothManager;
|
import com.harrysoft.androidbluetoothserial.BluetoothManager;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -26,7 +27,9 @@ import java.io.FileInputStream;
|
|||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
@ -236,9 +239,10 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
|||||||
File logFilePath = appContext.getLogFilePath();
|
File logFilePath = appContext.getLogFilePath();
|
||||||
var files = logFilePath.listFiles();
|
var files = logFilePath.listFiles();
|
||||||
|
|
||||||
var fileToShare = Stream.of(files)
|
var fileToShare = Arrays.stream(files)
|
||||||
.sortBy(x -> -1 * x.lastModified())
|
.sorted(Comparator.reverseOrder())
|
||||||
.findFirstOrElse(null);
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
try {
|
try {
|
||||||
List<MailAttachmentDTO> attachmentDTOList = new ArrayList<>();
|
List<MailAttachmentDTO> attachmentDTOList = new ArrayList<>();
|
||||||
|
|
||||||
@ -294,6 +298,8 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
|||||||
.makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
|
.makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
|
||||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
FirebaseCrashlytics.getInstance().recordException(ex);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import android.content.Intent;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.Html;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -80,6 +81,7 @@ import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAgg
|
|||||||
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView;
|
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
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.input_quantity_v2.DialogInputQuantityV2View;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException;
|
||||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView;
|
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView;
|
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||||
@ -211,6 +213,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione();
|
boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione();
|
||||||
boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione();
|
boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione();
|
||||||
boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd();
|
boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd();
|
||||||
|
boolean useColliPedana = SettingsManager.iDB().isFlagSpedizioneUseColliPedana();
|
||||||
|
|
||||||
mViewmodel.init(
|
mViewmodel.init(
|
||||||
codMdep,
|
codMdep,
|
||||||
@ -223,7 +226,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
mColliRegistrati,
|
mColliRegistrati,
|
||||||
mGestioneCol, mSegnoCol, mDefaultCausaleUL,
|
mGestioneCol, mSegnoCol, mDefaultCausaleUL,
|
||||||
mEnableQuantityReset,
|
mEnableQuantityReset,
|
||||||
useQtaOrd);
|
useQtaOrd,
|
||||||
|
useColliPedana);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +284,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
fabPopupMenu.getMenu().removeItem(R.id.close_order);
|
fabPopupMenu.getMenu().removeItem(R.id.close_order);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!SettingsManager.iDB().isFlagTracciamentoImballiScaricoEnabled())
|
if (!SettingsManager.iDB().isFlagTracciamentoImballiScaricoEnabled())
|
||||||
fabPopupMenu.getMenu().removeItem(R.id.track_packaging);
|
fabPopupMenu.getMenu().removeItem(R.id.track_packaging);
|
||||||
|
|
||||||
fabPopupMenu.setOnMenuItemClickListener(item -> {
|
fabPopupMenu.setOnMenuItemClickListener(item -> {
|
||||||
@ -886,6 +890,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
boolean canPartitaMagBeChanged,
|
boolean canPartitaMagBeChanged,
|
||||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||||
|
|
||||||
|
if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
|
||||||
|
dataScad = UtilityDate.getNow();
|
||||||
|
dataScad = dataScad.plusDays(pickingObjectDTO.getMtbAart().getGgScadPartita());
|
||||||
|
}
|
||||||
|
|
||||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||||
.setMtbAart(mtbAart)
|
.setMtbAart(mtbAart)
|
||||||
.setInitialNumCnf(initialNumCnf)
|
.setInitialNumCnf(initialNumCnf)
|
||||||
@ -907,7 +916,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
.setCanLUBeClosed(true)
|
.setCanLUBeClosed(true)
|
||||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||||
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)
|
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)
|
||||||
.setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus());
|
.setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus())
|
||||||
|
.setMtbPartitaMagList(mViewmodel.getmPartitaMagList());
|
||||||
|
|
||||||
if (!mDialogInputQuantityV2View.isVisible())
|
if (!mDialogInputQuantityV2View.isVisible())
|
||||||
mDialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
@ -1072,4 +1082,32 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
DialogInfoAggiuntiveLUView.newInstance(mtbColt, onComplete, this::onLoadingEnded)
|
DialogInfoAggiuntiveLUView.newInstance(mtbColt, onComplete, this::onLoadingEnded)
|
||||||
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
|
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInputDuplicate(BigDecimal qtaTot, BigDecimal qtaEvasa, RunnableArgs<Integer> onComplete, Runnable onNegativeClick) {
|
||||||
|
String textWarning = UtilityResources.getString(R.string.ordered_quantity_overflow_error_message);
|
||||||
|
|
||||||
|
dialogInputQuantityToDuplicate(inputNumber -> {
|
||||||
|
if (qtaTot != null && qtaEvasa != null && UtilityBigDecimal.equalsOrGreaterThan(qtaEvasa.multiply(BigDecimal.valueOf(inputNumber)), qtaTot)) {
|
||||||
|
|
||||||
|
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(textWarning)),
|
||||||
|
null,
|
||||||
|
() -> this.onInputDuplicate(qtaTot, qtaEvasa, onComplete, onNegativeClick)
|
||||||
|
).show(getSupportFragmentManager(), "tag");
|
||||||
|
} else {
|
||||||
|
onComplete.run(inputNumber);
|
||||||
|
}
|
||||||
|
}, onNegativeClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dialogInputQuantityToDuplicate(RunnableArgs<Integer> onComplete, Runnable onNegativeClick) {
|
||||||
|
DialogSimpleInputHelper.makeInputDialog(this, "Numero pedane da duplicare", inputValue -> {
|
||||||
|
try {
|
||||||
|
Integer num = Integer.parseInt(inputValue);
|
||||||
|
onComplete.run(num);
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
this.onError(new Exception("Inserire un numero di risorse valido"));
|
||||||
|
}
|
||||||
|
}, onNegativeClick).show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsum
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
@ -36,7 +37,8 @@ public class SpedizioneModule {
|
|||||||
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
|
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
|
||||||
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
||||||
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
|
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
|
||||||
ImballiRESTConsumer imballiRESTConsumer) {
|
ImballiRESTConsumer imballiRESTConsumer,
|
||||||
|
MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
||||||
return new SpedizioneViewModel(articoloRESTConsumer,
|
return new SpedizioneViewModel(articoloRESTConsumer,
|
||||||
barcodeRESTConsumer,
|
barcodeRESTConsumer,
|
||||||
colliDataRecoverService,
|
colliDataRecoverService,
|
||||||
@ -48,7 +50,8 @@ public class SpedizioneModule {
|
|||||||
colliSpedizioneRESTConsumer,
|
colliSpedizioneRESTConsumer,
|
||||||
colliLavorazioneRESTConsumer,
|
colliLavorazioneRESTConsumer,
|
||||||
magazzinoAutomaticoRESTConsumer,
|
magazzinoAutomaticoRESTConsumer,
|
||||||
imballiRESTConsumer);
|
imballiRESTConsumer,
|
||||||
|
magazzinoRESTConsumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.gest.spedizione;
|
package it.integry.integrywmsnative.gest.spedizione;
|
||||||
|
|
||||||
|
import androidx.annotation.IntegerRes;
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
@ -9,14 +10,19 @@ import java.math.BigDecimal;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.CommonConst;
|
import it.integry.integrywmsnative.core.CommonConst;
|
||||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||||
import it.integry.integrywmsnative.core.exception.EmptyLUException;
|
import it.integry.integrywmsnative.core.exception.EmptyLUException;
|
||||||
@ -54,6 +60,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsum
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
@ -72,14 +79,17 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
|
|||||||
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestOrderDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestOrderDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UntMisUtils;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidMagazzinoAutomaticoMovementException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidMagazzinoAutomaticoMovementException;
|
||||||
@ -89,6 +99,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadExceptio
|
|||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException;
|
||||||
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO;
|
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO;
|
||||||
|
|
||||||
public class SpedizioneViewModel {
|
public class SpedizioneViewModel {
|
||||||
@ -96,6 +107,7 @@ public class SpedizioneViewModel {
|
|||||||
private List<OrdineUscitaInevasoDTO> mTestateOrdini;
|
private List<OrdineUscitaInevasoDTO> mTestateOrdini;
|
||||||
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
||||||
private List<MtbColt> mColliRegistrati = new ArrayList<>();
|
private List<MtbColt> mColliRegistrati = new ArrayList<>();
|
||||||
|
private List<MtbPartitaMag> mPartitaMagList = new ArrayList<>();
|
||||||
|
|
||||||
private Listener mListener;
|
private Listener mListener;
|
||||||
|
|
||||||
@ -114,6 +126,7 @@ public class SpedizioneViewModel {
|
|||||||
private boolean mIsNewLU;
|
private boolean mIsNewLU;
|
||||||
private boolean mEnableQuantityReset;
|
private boolean mEnableQuantityReset;
|
||||||
private boolean mUseQtaOrd;
|
private boolean mUseQtaOrd;
|
||||||
|
private boolean mUseColliPedana;
|
||||||
private boolean mIsOrdTrasf = false;
|
private boolean mIsOrdTrasf = false;
|
||||||
|
|
||||||
private MtbColt mCurrentMtbColt = null;
|
private MtbColt mCurrentMtbColt = null;
|
||||||
@ -133,6 +146,7 @@ public class SpedizioneViewModel {
|
|||||||
private final ImballiRESTConsumer mImballiRESTConsumer;
|
private final ImballiRESTConsumer mImballiRESTConsumer;
|
||||||
|
|
||||||
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
|
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
|
||||||
|
private MagazzinoRESTConsumer magazzinoRESTConsumer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
@ -146,7 +160,8 @@ public class SpedizioneViewModel {
|
|||||||
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
|
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
|
||||||
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
||||||
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
|
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
|
||||||
ImballiRESTConsumer imballiRESTConsumer) {
|
ImballiRESTConsumer imballiRESTConsumer,
|
||||||
|
MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
||||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
this.mColliDataRecoverService = colliDataRecoverService;
|
this.mColliDataRecoverService = colliDataRecoverService;
|
||||||
@ -159,10 +174,11 @@ public class SpedizioneViewModel {
|
|||||||
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
|
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
|
||||||
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
|
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
|
||||||
this.mImballiRESTConsumer = imballiRESTConsumer;
|
this.mImballiRESTConsumer = imballiRESTConsumer;
|
||||||
|
this.magazzinoRESTConsumer = magazzinoRESTConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void init(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, boolean shouldAskPesoLU, boolean canOverflowOrderQuantity, List<SitArtOrdDTO> pickingList, List<OrdineUscitaInevasoDTO> testateOrdini, List<MtbColt> colliRegistrati, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, boolean enableQuantityReset, boolean useQtaOrd) {
|
public void init(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, boolean shouldAskPesoLU, boolean canOverflowOrderQuantity, List<SitArtOrdDTO> pickingList, List<OrdineUscitaInevasoDTO> testateOrdini, List<MtbColt> colliRegistrati, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, boolean enableQuantityReset, boolean useQtaOrd, boolean useColliPedana) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
this.mDefaultCodMdep = codMdep;
|
this.mDefaultCodMdep = codMdep;
|
||||||
@ -175,25 +191,40 @@ public class SpedizioneViewModel {
|
|||||||
this.mDefaultCausaleOfUL = defaultCausaleUL;
|
this.mDefaultCausaleOfUL = defaultCausaleUL;
|
||||||
this.mEnableQuantityReset = enableQuantityReset;
|
this.mEnableQuantityReset = enableQuantityReset;
|
||||||
this.mUseQtaOrd = useQtaOrd;
|
this.mUseQtaOrd = useQtaOrd;
|
||||||
|
this.mUseColliPedana = useColliPedana;
|
||||||
|
|
||||||
if (enableGiacenza) {
|
if (enableGiacenza) {
|
||||||
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
||||||
this.mPickingList.postValue(pickingObjectList);
|
this.mPickingList.postValue(pickingObjectList);
|
||||||
this.sendOnLoadingEnded();
|
|
||||||
}, ex -> this.sendError(new OrdersLoadException(ex)));
|
}, ex -> this.sendError(new OrdersLoadException(ex)));
|
||||||
} else {
|
} else {
|
||||||
getEmptyPickingList(pickingList, pickingObjectList -> {
|
getEmptyPickingList(pickingList, pickingObjectList -> {
|
||||||
this.mPickingList.postValue(pickingObjectList);
|
this.mPickingList.postValue(pickingObjectList);
|
||||||
this.sendOnLoadingEnded();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPartitaMagList(pickingList, mtbPartitaMagList -> {
|
||||||
|
this.mPartitaMagList = mtbPartitaMagList;
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
});
|
||||||
|
|
||||||
this.mDefaultGestioneOfUL = gestioneCol;
|
this.mDefaultGestioneOfUL = gestioneCol;
|
||||||
this.mDefaultSegnoCol = segnoCol;
|
this.mDefaultSegnoCol = segnoCol;
|
||||||
|
|
||||||
this.initDefaultVars();
|
this.initDefaultVars();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getPartitaMagList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<MtbPartitaMag>> onComplete) {
|
||||||
|
if (SettingsManager.iDB().isSuggestDataScad()) {
|
||||||
|
List<String> codMarts = sitArtOrdList.stream()
|
||||||
|
.map(x -> x.getCodMart().trim())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
this.magazzinoRESTConsumer.retrieveAllPartitaMag(codMarts, new Date(), onComplete, this::sendError);
|
||||||
|
} else {
|
||||||
|
onComplete.run(new ArrayList<>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
|
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
|
||||||
List<String> codMarts = sitArtOrdList.stream()
|
List<String> codMarts = sitArtOrdList.stream()
|
||||||
@ -982,20 +1013,6 @@ public class SpedizioneViewModel {
|
|||||||
refMtbColt = pickingObjectDTO.getMtbColts().get(0);
|
refMtbColt = pickingObjectDTO.getMtbColts().get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MtbColr refMtbColr = null;
|
|
||||||
//
|
|
||||||
// if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) {
|
|
||||||
// Optional<MtbColr> optionalMtbColr = Stream.of(refMtbColt.getMtbColr())
|
|
||||||
// .filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) &&
|
|
||||||
// UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) &&
|
|
||||||
// UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) &&
|
|
||||||
// (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag())))
|
|
||||||
// .findFirst();
|
|
||||||
//
|
|
||||||
// if (optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get();
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
if (refMtbColr != null) {
|
if (refMtbColr != null) {
|
||||||
if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) {
|
if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) {
|
||||||
if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getQtaCol(), qtaDaEvadere)) {
|
if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getQtaCol(), qtaDaEvadere)) {
|
||||||
@ -1083,8 +1100,12 @@ public class SpedizioneViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BigDecimal initialNumCnf = mUseColliPedana ? pickingObjectDTO.getMtbAart().getColliPedana() : mUseQtaOrd ? numCnfDaPrelevare : null;
|
||||||
|
BigDecimal initialQtaCnf = mUseColliPedana ? pickingObjectDTO.getMtbAart().getQtaCnf() : mUseQtaOrd ? qtaCnfDaPrelevare : null;
|
||||||
|
BigDecimal initialQtaTot = mUseColliPedana ? initialNumCnf.multiply(initialQtaCnf) : mUseQtaOrd ? qtaColDaPrelevare : null;
|
||||||
|
|
||||||
MtbColt finalRefMtbColt = refMtbColt;
|
MtbColt finalRefMtbColt = refMtbColt;
|
||||||
this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), mUseQtaOrd ? numCnfDaPrelevare : null, mUseQtaOrd ? qtaCnfDaPrelevare : null, mUseQtaOrd ? qtaColDaPrelevare : null, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> {
|
this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> {
|
||||||
this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU);
|
this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1549,6 +1570,12 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
this.closeLU(generatedMtbColts -> {
|
this.closeLU(generatedMtbColts -> {
|
||||||
|
|
||||||
|
this.validateTheUdsToBeDuplicated(generatedMtbColts, duplicatedMtbColts -> {
|
||||||
|
|
||||||
|
if (duplicatedMtbColts != null) {
|
||||||
|
generatedMtbColts.addAll(duplicatedMtbColts);
|
||||||
|
}
|
||||||
|
|
||||||
this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> {
|
this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> {
|
||||||
|
|
||||||
this.askPositionChange(
|
this.askPositionChange(
|
||||||
@ -1573,7 +1600,7 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -1596,8 +1623,79 @@ public class SpedizioneViewModel {
|
|||||||
this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> {
|
this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> {
|
||||||
onComplete.run(closeResponse.getGeneratedMtbColts());
|
onComplete.run(closeResponse.getGeneratedMtbColts());
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateTheUdsToBeDuplicated(List<MtbColt> mtbColtList, RunnableArgs<List<MtbColt>> onComplete) {
|
||||||
|
var clonedLu = (MtbColt) this.mCurrentMtbColt.clone();
|
||||||
|
|
||||||
|
boolean noReference = clonedLu.getMtbColr().stream()
|
||||||
|
.allMatch(
|
||||||
|
x -> x.getGestioneRif() == null &&
|
||||||
|
x.getDataColloRifD() == null &&
|
||||||
|
x.getSerColloRif() == null &&
|
||||||
|
x.getNumColloRif() == null
|
||||||
|
);
|
||||||
|
|
||||||
|
if (mtbColtList.size() > 1 || !noReference || !SettingsManager.iDB().isFlagAskDuplicateUDSSpedizione()) {
|
||||||
|
onComplete.run(new ArrayList<>());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var savedMtbColt = mtbColtList.get(0);
|
||||||
|
|
||||||
|
//Controllo se si va in extra quantity
|
||||||
|
if (!SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione()) {
|
||||||
|
Map<String, List<MtbColr>> groupedByCodMart = savedMtbColt.getMtbColr()
|
||||||
|
.stream()
|
||||||
|
.filter(x -> x.getCodMart() != null)
|
||||||
|
.collect(Collectors.groupingBy(MtbColr::getCodMart));
|
||||||
|
|
||||||
|
for (PickingObjectDTO pickingObjectDTO : Objects.requireNonNull(this.mPickingList.getValue())) {
|
||||||
|
|
||||||
|
if (pickingObjectDTO.getMtbAart() != null) {
|
||||||
|
String codMart = pickingObjectDTO.getMtbAart().getCodMart();
|
||||||
|
|
||||||
|
if (groupedByCodMart.containsKey(codMart)) {
|
||||||
|
BigDecimal qtaTot = UntMisUtils.shouldBeShowInColli(pickingObjectDTO.getMtbAart()) ? pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd() : pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||||
|
|
||||||
|
BigDecimal qtaEvasa = Objects.requireNonNull(groupedByCodMart.get(codMart)).stream().map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
|
||||||
|
sendInputDuplicate(qtaTot, qtaEvasa, inputNumber -> {
|
||||||
|
duplicateUDS(savedMtbColt, inputNumber, onComplete);
|
||||||
|
}, () -> onComplete.run(null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sendInputDuplicate(inputNumber -> {
|
||||||
|
duplicateUDS(savedMtbColt, inputNumber, onComplete);
|
||||||
|
}, () -> onComplete.run(null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void duplicateUDS(MtbColt savedMtbColt, Integer inputNumber, RunnableArgs<List<MtbColt>> onComplete) {
|
||||||
|
var duplicateUDSRequestDTO = new DuplicateUDSRequestDTO()
|
||||||
|
.setMtbColt(savedMtbColt)
|
||||||
|
.setNumOfDuplicates(inputNumber);
|
||||||
|
|
||||||
|
this.mColliSpedizioneRESTConsumer.duplicateUDS(duplicateUDSRequestDTO, data -> {
|
||||||
|
Map<String, List<MtbColr>> groupedByCodMart = data.getMtbColtList()
|
||||||
|
.stream()
|
||||||
|
.flatMap(x -> x.getMtbColr().stream())
|
||||||
|
.filter(x -> x.getCodMart() != null)
|
||||||
|
.collect(Collectors.groupingBy(MtbColr::getCodMart));
|
||||||
|
|
||||||
|
for (PickingObjectDTO pickingObjectDTO : Objects.requireNonNull(this.mPickingList.getValue())) {
|
||||||
|
if (pickingObjectDTO.getMtbAart() != null) {
|
||||||
|
String codMart = pickingObjectDTO.getMtbAart().getCodMart();
|
||||||
|
if (groupedByCodMart.containsKey(codMart)) {
|
||||||
|
pickingObjectDTO.getWithdrawMtbColrs()
|
||||||
|
.addAll(Objects.requireNonNull(groupedByCodMart.get(codMart)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onComplete.run(data.getMtbColtList());
|
||||||
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkIfShouldBeDeleted(Runnable onDeleted, Runnable onContinue) {
|
private void checkIfShouldBeDeleted(Runnable onDeleted, Runnable onContinue) {
|
||||||
@ -1904,6 +2002,10 @@ public class SpedizioneViewModel {
|
|||||||
return mPickingList;
|
return mPickingList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MtbPartitaMag> getmPartitaMagList() {
|
||||||
|
return mPartitaMagList;
|
||||||
|
}
|
||||||
|
|
||||||
public ArrayList<MtbColt> getCreatedMtbColts() {
|
public ArrayList<MtbColt> getCreatedMtbColts() {
|
||||||
return (ArrayList<MtbColt>) this.mColliRegistrati;
|
return (ArrayList<MtbColt>) this.mColliRegistrati;
|
||||||
}
|
}
|
||||||
@ -1938,6 +2040,16 @@ public class SpedizioneViewModel {
|
|||||||
this.mDocumentRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError);
|
this.mDocumentRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendInputDuplicate(BigDecimal qtaTot, BigDecimal qtaEvasa, RunnableArgs<Integer> onComplete, Runnable onNegativeClick) {
|
||||||
|
if (this.mListener != null)
|
||||||
|
mListener.onInputDuplicate(qtaTot, qtaEvasa, onComplete, onNegativeClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendInputDuplicate(RunnableArgs<Integer> onComplete, Runnable onNegativeClick) {
|
||||||
|
if (this.mListener != null)
|
||||||
|
mListener.onInputDuplicate(null, null, onComplete, onNegativeClick);
|
||||||
|
}
|
||||||
|
|
||||||
public SpedizioneViewModel setListeners(Listener listener) {
|
public SpedizioneViewModel setListeners(Listener listener) {
|
||||||
this.mListener = listener;
|
this.mListener = listener;
|
||||||
return this;
|
return this;
|
||||||
@ -1970,6 +2082,8 @@ public class SpedizioneViewModel {
|
|||||||
void onChooseArtsRequest(List<MtbAart> artsList, RunnableArgs<List<MtbAart>> onComplete);
|
void onChooseArtsRequest(List<MtbAart> artsList, RunnableArgs<List<MtbAart>> onComplete);
|
||||||
|
|
||||||
void onOrderClosed();
|
void onOrderClosed();
|
||||||
|
|
||||||
|
void onInputDuplicate(BigDecimal qtaTot, BigDecimal qtaEvasa, RunnableArgs<Integer> onComplete, Runnable onNegativeClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,9 +2,11 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||||
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
|
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
|
|
||||||
@ -57,6 +59,8 @@ public class DialogInputQuantityV2DTO {
|
|||||||
|
|
||||||
private String customArtDescription;
|
private String customArtDescription;
|
||||||
|
|
||||||
|
private List<MtbPartitaMag> mtbPartitaMagList;
|
||||||
|
|
||||||
public MtbAart getMtbAart() {
|
public MtbAart getMtbAart() {
|
||||||
return mtbAart;
|
return mtbAart;
|
||||||
}
|
}
|
||||||
@ -380,4 +384,13 @@ public class DialogInputQuantityV2DTO {
|
|||||||
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
|
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MtbPartitaMag> getMtbPartitaMagList() {
|
||||||
|
return mtbPartitaMagList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2DTO setMtbPartitaMagList(List<MtbPartitaMag> mtbPartitaMagList) {
|
||||||
|
this.mtbPartitaMagList = mtbPartitaMagList;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import com.pedromassango.doubleclick.DoubleClickListener;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
@ -177,6 +178,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
|
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
|
||||||
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
|
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
|
||||||
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
|
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
|
||||||
|
.setmPartitaMagList(mDialogInputQuantityV2DTO.getMtbPartitaMagList())
|
||||||
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag() != null ? mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() : null);
|
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag() != null ? mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() : null);
|
||||||
|
|
||||||
mBindings.setView(this);
|
mBindings.setView(this);
|
||||||
@ -301,7 +303,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
|
|
||||||
UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> {
|
UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> {
|
||||||
if (this.mEnableDataCallback) {
|
if (this.mEnableDataCallback) {
|
||||||
this.mViewModel.setPartitaMag(value);
|
this.mViewModel.setNewPartitaMag(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -403,7 +405,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
UtilityObservable.addPropertyChanged(this.mViewModel.blockedQtaTot, (value) -> {
|
UtilityObservable.addPropertyChanged(this.mViewModel.blockedQtaTot, (value) -> {
|
||||||
toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value);
|
toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value);
|
||||||
|
|
||||||
if (this.mViewModel.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
if (Objects.requireNonNull(this.mViewModel.mtbAart.get()).isFlagQtaCnfFissaBoolean()) {
|
||||||
this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable() && !value);
|
this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable() && !value);
|
||||||
} else {
|
} else {
|
||||||
if (value) {
|
if (value) {
|
||||||
|
|||||||
@ -4,8 +4,13 @@ import androidx.databinding.ObservableField;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.concurrent.FutureTask;
|
import java.util.concurrent.FutureTask;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@ -100,6 +105,8 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
|
|
||||||
private StatoPartitaMag statoArt;
|
private StatoPartitaMag statoArt;
|
||||||
|
|
||||||
|
private List<MtbPartitaMag> mPartitaMagList;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
||||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
@ -354,6 +361,11 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2ViewModel setmPartitaMagList(List<MtbPartitaMag> mPartitaMagList) {
|
||||||
|
this.mPartitaMagList = mPartitaMagList;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
|
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
|
||||||
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
|
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
|
||||||
return this;
|
return this;
|
||||||
@ -378,6 +390,37 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setNewPartitaMag(String internalPartitaMag) {
|
||||||
|
this.internalPartitaMag = internalPartitaMag;
|
||||||
|
|
||||||
|
if (mPartitaMagList != null && SettingsManager.iDB().isSuggestDataScad()){
|
||||||
|
Optional<MtbPartitaMag> partitaMag = mPartitaMagList.stream()
|
||||||
|
.filter(x -> x.getPartitaMag().equalsIgnoreCase(internalPartitaMag))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
if (partitaMag.isPresent()){
|
||||||
|
setNewDataScad(partitaMag.get().getDataScad());
|
||||||
|
} else {
|
||||||
|
MtbAart localMtbAart = mtbAart.get();
|
||||||
|
LocalDate dataScad = null;
|
||||||
|
|
||||||
|
if (localMtbAart != null && localMtbAart.getGgScadPartita() != null && localMtbAart.getGgScadPartita() > 0) {
|
||||||
|
dataScad = UtilityDate.getNow();
|
||||||
|
dataScad.plusDays(localMtbAart.getGgScadPartita());
|
||||||
|
}
|
||||||
|
|
||||||
|
setNewDataScad(dataScad);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNewDataScad(LocalDate internalDataScad) {
|
||||||
|
this.internalDataScad = internalDataScad;
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
public DialogInputQuantityV2ViewModel setDataScad(LocalDate internalDataScad) {
|
public DialogInputQuantityV2ViewModel setDataScad(LocalDate internalDataScad) {
|
||||||
this.internalDataScad = internalDataScad;
|
this.internalDataScad = internalDataScad;
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user