Aggiunta la possibilità di recuperare una UL in accettazione che non ha alcuna UL che la referenzi

This commit is contained in:
Giuseppe Scorrano 2021-01-19 13:43:29 +01:00
parent 4e36053ba6
commit 1440c52322
8 changed files with 130 additions and 72 deletions

View File

@ -0,0 +1,7 @@
package it.integry.integrywmsnative.core.expansion;
public interface RunnableArgsWithReturn<T, R> {
R run(T data);
}

View File

@ -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<MtbColt> mtbColts){
Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
public void startListaBancaliRegistratiActivity(ArrayList<RecoverMtbColt> 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);
}

View File

@ -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<ArrayList<MtbColt>> onComplete) {
public void retrieveExistentLU(RunnableArgs<ArrayList<RecoverMtbColt>> onComplete) {
this.sendOnLoadingStarted();
this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mSitArts, mtbColtList -> {

View File

@ -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<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void getBancaliGiaRegistrati(List<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<RecoverMtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
List<HashMap<String, Object>> whereCondListMap = new ArrayList<>();
List<String> colliWhereCond = new ArrayList<>();
Stream.of(ordiniToShow).forEach(x -> {
Stream
.of(ordiniToShow)
.distinctBy(x -> x.getDataOrd() + " " + x.getGestione() + " " + x.getNumOrd())
.forEach(x -> {
try {
Date date = UtilityDate.recognizeDate(x.getDataOrd());
String dateString = UtilityDate.formatDate(date, "yyyy/MM/dd");
HashMap<String, Object> 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());
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){
whereCondListMap.add(whereCondMap);
} catch (Exception ex) {
UtilityLogger.errorMe(ex);
}
});
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 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";
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<ArrayList<MtbColt>>() {}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbColt>>() {
Type typeOfObjectsList = new TypeToken<ArrayList<RecoverMtbColt>>() {
}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<RecoverMtbColt>>() {
@Override
public void onSuccess(ArrayList<MtbColt> value) {
if(onComplete != null) onComplete.run(value);
public void onSuccess(ArrayList<RecoverMtbColt> 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);
}
});

View File

@ -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;
}
}

View File

@ -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<MtbColt, Boolean> 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<MtbColt> 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<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, String reportName) {
return createIntent(context, items, canRecoverUlAction, printerType, true, reportName);
}
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
public static Intent createIntent(Context context, List<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
return createIntent(context, items, input -> canRecoverUl, printerType, onlyResiduo);
}
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
return createIntent(context, items, canRecoverUlAction, printerType, onlyResiduo, null);
}
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> 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);
}

View File

@ -124,7 +124,7 @@
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/spedizione_empty_view"
android:id="@+id/accettazione_empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"

View File

@ -69,7 +69,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:clipToPadding="false"/>
android:clipToPadding="false"
android:paddingBottom="72dp"/>
</LinearLayout>
@ -186,7 +187,7 @@
<!-- android:id="@+id/empty_space_padding"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="?attr/actionBarSize"-->
<!-- android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"-->
<!-- android:visibility="@{pickingResiView.bottomSheetEnabled ? View.VISIBLE : View.GONE}"-->
<!-- android:layout_alignParentBottom="true">-->
<!-- </RelativeLayout>-->