diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgsWithReturn.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgsWithReturn.java new file mode 100644 index 00000000..c569a9b5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgsWithReturn.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.expansion; + +public interface RunnableArgsWithReturn { + + R run(T data); + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index 22994dce..4c867d49 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -52,6 +52,7 @@ import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneLi import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListModel; import it.integry.integrywmsnative.gest.accettazione_picking.dto.AccettazioneOrdineInevasoOrderBy; import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; @@ -455,8 +456,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta } - public void startListaBancaliRegistratiActivity(ArrayList mtbColts){ - Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO)); + public void startListaBancaliRegistratiActivity(ArrayList mtbColts) { + + Intent myIntent = ListaBancaliActivity.createIntent(this, + Stream.of(mtbColts).map(x -> (MtbColt)x).toList(), + input -> ((RecoverMtbColt) input).isFlagCanBeRecovered(), + PrinterRESTConsumer.Type.SECONDARIA, + ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO)); this.startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index ef9ad593..672b1c39 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -54,6 +54,7 @@ import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; import it.integry.integrywmsnative.gest.accettazione_picking.dto.HistoryMtbAartDTO; import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.accettazione_picking.rest.AccettazionePickingRESTConsumer; +import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; @@ -165,7 +166,7 @@ public class AccettazionePickingViewModel { return mPickingList; } - public void retrieveExistentLU(RunnableArgs> onComplete) { + public void retrieveExistentLU(RunnableArgs> onComplete) { this.sendOnLoadingStarted(); this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mSitArts, mtbColtList -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java index c1e5b818..7c4ddf56 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java @@ -5,18 +5,18 @@ import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Date; +import java.util.HashMap; import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; @Singleton @@ -29,56 +29,87 @@ public class AccettazionePickingRESTConsumer { this.mSystemRestConsumer = systemRESTConsumer; } - public void getBancaliGiaRegistrati(List ordiniToShow, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getBancaliGiaRegistrati(List ordiniToShow, RunnableArgs> onComplete, RunnableArgs onFailed) { + List> whereCondListMap = new ArrayList<>(); - List colliWhereCond = new ArrayList<>(); + Stream + .of(ordiniToShow) + .distinctBy(x -> x.getDataOrd() + " " + x.getGestione() + " " + x.getNumOrd()) + .forEach(x -> { + try { + HashMap whereCondMap = new HashMap<>(); + whereCondMap.put("mtb_colr.data_ord", UtilityDate.recognizeDate(x.getDataOrd())); + whereCondMap.put("mtb_colr.gestione", x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione()); + whereCondMap.put("mtb_colr.num_ord", x.getNumOrd()); + + whereCondListMap.add(whereCondMap); + } catch (Exception ex) { + UtilityLogger.errorMe(ex); + } + }); - Stream.of(ordiniToShow).forEach(x -> { - try { - Date date = UtilityDate.recognizeDate(x.getDataOrd()); - String dateString = UtilityDate.formatDate(date, "yyyy/MM/dd"); - - if (!colliWhereCond.contains(x.getGestione() + " " + dateString + " " + x.getNumOrd())) { - String gestione = x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione(); - colliWhereCond.add(gestione + " " + dateString + " " + x.getNumOrd()); - } - } catch (Exception ex){ - UtilityLogger.errorMe(ex); - } - }); + String sql = "SELECT DISTINCT CAST(CASE WHEN MAX(ISNULL(mtb_colr_scar.num_collo, 0)) = 0 THEN 1 ELSE 0 END AS BIT) AS flagCanBeRecovered, " + + " mtb_colt.* " + + "FROM mtb_colt" + + " INNER JOIN mtb_colr ON " + + " mtb_colt.gestione = mtb_colr.gestione AND " + + " mtb_colt.ser_collo = mtb_colr.ser_collo AND " + + " mtb_colt.data_collo = mtb_colr.data_collo AND " + + " mtb_colt.num_collo = mtb_colr.num_collo " + + " LEFT OUTER JOIN mtb_colr mtb_colr_scar ON mtb_colr_scar.num_collo_rif = mtb_colr.num_collo AND " + + " mtb_colr_scar.gestione_rif = mtb_colr.gestione AND " + + " mtb_colr_scar.ser_collo_rif = mtb_colr.ser_collo AND " + + " mtb_colr_scar.data_collo_rif = mtb_colr.data_collo " + + " WHERE (" + UtilityQuery.concatFieldListInWhereCond(whereCondListMap) + ") " + + " AND mtb_colt.data_doc IS NULL " + + " GROUP BY mtb_colt.gestione," + + " mtb_colt.data_collo," + + " mtb_colt.num_collo," + + " segno," + + " peso_kg," + + " lunghezza_cm," + + " larghezza_cm," + + " altezza_cm," + + " cod_anag," + + " cod_dtip," + + " mtb_colt.data_doc," + + " mtb_colt.ser_doc," + + " mtb_colt.num_doc," + + " rif_ord," + + " mtb_colt.ser_collo," + + " cod_tcol," + + " mtb_colt.data_ord," + + " mtb_colt.num_ord," + + " cod_vdes," + + " cod_mdep," + + " cod_vlis," + + " preparato_da," + + " ora_iniz_prep," + + " ora_fine_prep," + + " filtro_ordini," + + " annotazioni," + + " posizione," + + " cod_dtip_provv," + + " data_doc_provv," + + " ser_doc_provv," + + " num_doc_provv," + + " cod_jfas," + + " data_vers," + + " mtb_colt.peso_netto_kg"; - StringBuilder colliINCondition = new StringBuilder(); - - for(int i = 0; i < colliWhereCond.size(); i ++){ - colliINCondition.append("'").append(colliWhereCond.get(i)).append("'"); - - if(i < (colliWhereCond.size()-1)) colliINCondition.append(","); - } - - - - String sql = "SELECT DISTINCT mtb_colt.* " + - "FROM mtb_colt, mtb_colr " + - "WHERE mtb_colt.gestione = mtb_colr.gestione AND " + - "mtb_colt.ser_collo = mtb_colr.ser_collo AND " + - "mtb_colt.data_collo = mtb_colr.data_collo AND " + - "mtb_colt.num_collo = mtb_colr.num_collo AND " + - "mtb_colt.gestione + ' ' + CONVERT(VARCHAR(15), mtb_colr.data_ord, 111) + ' ' + CONVERT(VARCHAR, mtb_colr.num_ord) IN (" + colliINCondition + - ") AND mtb_colt.data_doc IS NULL "; - - - Type typeOfObjectsList = new TypeToken>() {}.getType(); - mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); + public void onSuccess(ArrayList value) { + if (onComplete != null) onComplete.run(value); } @Override public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/RecoverMtbColt.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/RecoverMtbColt.java new file mode 100644 index 00000000..6fcd5b2d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/RecoverMtbColt.java @@ -0,0 +1,17 @@ +package it.integry.integrywmsnative.gest.accettazione_picking.rest; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class RecoverMtbColt extends MtbColt { + + private boolean flagCanBeRecovered; + + public boolean isFlagCanBeRecovered() { + return flagCanBeRecovered; + } + + public RecoverMtbColt setFlagCanBeRecovered(boolean flagCanBeRecovered) { + this.flagCanBeRecovered = flagCanBeRecovered; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index d929e473..2cddbae5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -6,12 +6,12 @@ import android.os.Bundle; import androidx.databinding.DataBindingUtil; -import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.BaseActivity; +import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding; @@ -32,7 +32,7 @@ public class ListaBancaliActivity extends BaseActivity { private ListaBancaliViewModel mViewModel; - private boolean mCanRecoverUl; + private RunnableArgsWithReturn mCanRecoverUl; private PrinterRESTConsumer.Type mPrinterType; private String mReportName; private boolean mFlagOnlyResiduo; @@ -41,34 +41,25 @@ public class ListaBancaliActivity extends BaseActivity { - public static Intent createIntent(Context context, ArrayList items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) { - Intent myIntent = new Intent(context, ListaBancaliActivity.class); - - String mtbColtsKey = DataCache.addItem(items); - myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey); - - String canRecoverULKey = DataCache.addItem(canRecoverUl); - myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey); - - String printerTypeKey = DataCache.addItem(printerType); - myIntent.putExtra(Key.PrinterType, printerTypeKey); - - String reportNameKey = DataCache.addItem(reportName); - myIntent.putExtra(Key.ReportName, reportNameKey); - - String flagOnlyResiduoKey = DataCache.addItem(true); - myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey); - - return myIntent; + public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, PrinterRESTConsumer.Type printerType, String reportName) { + return createIntent(context, items, canRecoverUlAction, printerType, true, reportName); } - public static Intent createIntent(Context context, ArrayList items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) { + public static Intent createIntent(Context context, List items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) { + return createIntent(context, items, input -> canRecoverUl, printerType, onlyResiduo); + } + + public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) { + return createIntent(context, items, canRecoverUlAction, printerType, onlyResiduo, null); + } + + public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo, String reportName) { Intent myIntent = new Intent(context, ListaBancaliActivity.class); String mtbColtsKey = DataCache.addItem(items); myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey); - String canRecoverULKey = DataCache.addItem(canRecoverUl); + String canRecoverULKey = DataCache.addItem(canRecoverUlAction); myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey); String printerTypeKey = DataCache.addItem(printerType); @@ -77,9 +68,13 @@ public class ListaBancaliActivity extends BaseActivity { String flagOnlyResiduoKey = DataCache.addItem(onlyResiduo); myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey); + String reportNameKey = DataCache.addItem(reportName); + myIntent.putExtra(Key.ReportName, reportNameKey); + return myIntent; } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -108,7 +103,7 @@ public class ListaBancaliActivity extends BaseActivity { } public void startContenutoBancaleActivity(MtbColt item){ - Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType, mReportName); + Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl.run(item), mPrinterType, mReportName); startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml index 6b9086bd..108e3ee8 100644 --- a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml +++ b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml @@ -124,7 +124,7 @@ + android:clipToPadding="false" + android:paddingBottom="72dp"/> @@ -186,7 +187,7 @@ - +