Modifiche varie per Frudis

This commit is contained in:
Giuseppe Scorrano 2019-12-09 19:39:01 +01:00
parent 44851db845
commit ccfba252ec
15 changed files with 264 additions and 60 deletions

View File

@ -167,6 +167,9 @@ public class MainActivity extends BaseActivity
Menu menu = mBinding.navView.getMenu(); Menu menu = mBinding.navView.getMenu();
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
if(customConfiguration == null) return;
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION); BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups(); List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();

View File

@ -8,11 +8,14 @@ import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -28,10 +31,13 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.SingleValueDTO;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -106,6 +112,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
public static void saveRigaCollo(MtbColr mtbColrToSave, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed){ public static void saveRigaCollo(MtbColr mtbColrToSave, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed){
mtbColrToSave.setMtbAart(null);
mtbColrToSave.setRifPartitaMag(null);
EntityRESTConsumer.processEntity(mtbColrToSave, new ISimpleOperationCallback<MtbColr>() { EntityRESTConsumer.processEntity(mtbColrToSave, new ISimpleOperationCallback<MtbColr>() {
@Override @Override
public void onSuccess(MtbColr value) { public void onSuccess(MtbColr value) {
@ -507,6 +516,25 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
public static void doesColloContainsAnyRow(MtbColt mtbColt, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> params = new HashMap<>();
params.put("gestione", mtbColt.getGestione());
params.put("ser_collo", mtbColt.getSerCollo());
params.put("num_collo", mtbColt.getNumCollo());
params.put("data_collo", mtbColt.getDataColloD());
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
String query = "SELECT COUNT(*) as value FROM mtb_colr " +
"WHERE " + whereCond;
Type typeOfObjectsList = new TypeToken<ArrayList<SingleValueDTO<Integer>>>() {}.getType();
SystemRESTConsumer.<ArrayList<SingleValueDTO<Integer>>>processSql(query, typeOfObjectsList, data -> {
onComplete.run(data.get(0).getValue() > 0);
}, onFailed);
}
} }

View File

@ -32,7 +32,7 @@ import retrofit2.Response;
public class SystemRESTConsumer extends _BaseRESTConsumer { public class SystemRESTConsumer extends _BaseRESTConsumer {
public static <T> void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) { public static <T> void processSql(String nativeSql, final Type clazz, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) {
NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO(); NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO();
nativeSqlDTO.nativeSql = nativeSql; nativeSqlDTO.nativeSql = nativeSql;
@ -51,12 +51,12 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
Reader reader = new InputStreamReader(ims); Reader reader = new InputStreamReader(ims);
T gsonObj = gson.fromJson(reader, clazz); T gsonObj = gson.fromJson(reader, clazz);
callback.onSuccess(gsonObj); onComplete.run(gsonObj);
} }
@Override @Override
public void onFailed(Exception ex) { public void onFailed(Exception ex) {
callback.onFailed(ex); onFailed.run(ex);
} }
}); });
} }
@ -64,12 +64,18 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
Log.e("ProcessSql", t.toString()); Log.e("ProcessSql", t.toString());
callback.onFailed(new Exception(t)); onFailed.run(new Exception(t));
// UtilityLogger.errorMe(new Exception(t), nativeSql);
} }
}); });
} }
public static <T> void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) {
processSql(nativeSql, clazz, data -> {
callback.onSuccess((T) data);
}, callback::onFailed);
}
public static void getAvailableProfiles(final ISimpleOperationCallback<List<String>> callback){ public static void getAvailableProfiles(final ISimpleOperationCallback<List<String>> callback){

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.core.rest.model;
public class SingleValueDTO<T> {
private T value;
public T getValue() {
return value;
}
public SingleValueDTO<T> setValue(T value) {
this.value = value;
return this;
}
}

View File

@ -1,4 +0,0 @@
package it.integry.integrywmsnative.core.rest.model;
public class SlackMessageDTO {
}

View File

@ -25,6 +25,7 @@ public class DBSettingsModel {
private boolean flagCanAddExtraItemSpedizione; private boolean flagCanAddExtraItemSpedizione;
private boolean flagCanAutoOpenNewULAccettazione; private boolean flagCanAutoOpenNewULAccettazione;
private boolean flagCanAddExtraQuantitySpedizione; private boolean flagCanAddExtraQuantitySpedizione;
private boolean flagEnableCheckDepositoSpedizione;
public List<String> getAvailableProfiles() { public List<String> getAvailableProfiles() {
return availableProfiles; return availableProfiles;
@ -139,4 +140,14 @@ public class DBSettingsModel {
this.flagCanAddExtraQuantitySpedizione = flagCanAddExtraQuantitySpedizione; this.flagCanAddExtraQuantitySpedizione = flagCanAddExtraQuantitySpedizione;
return this; return this;
} }
public boolean isFlagEnableCheckDepositoSpedizione() {
return flagEnableCheckDepositoSpedizione;
}
public DBSettingsModel setFlagEnableCheckDepositoSpedizione(boolean flagEnableCheckDepositoSpedizione) {
this.flagEnableCheckDepositoSpedizione = flagEnableCheckDepositoSpedizione;
return this;
}
} }

View File

@ -214,6 +214,10 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
.setKeySection("FLAG_CAN_ADD_EXTRA_QUANTITY")); .setKeySection("FLAG_CAN_ADD_EXTRA_QUANTITY"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("ENABLE_CHECK_DEPOSITO"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@ -226,6 +230,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "FLAG_AUTO_OPEN_NEW_UL", Boolean.class)); dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "ENABLE_CHECK_DEPOSITO", Boolean.class));
if(onComplete != null) onComplete.run(); if(onComplete != null) onComplete.run();
}, onFailed); }, onFailed);

View File

@ -11,6 +11,11 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UtilityBarcode { public class UtilityBarcode {
public static boolean isBarcodeOrdineV(BarcodeScanDTO barcodeScanDTO) {
return (isEan13(barcodeScanDTO) || isEtichetta128(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("3");
}
public static boolean isEtichettaAnonima(BarcodeScanDTO barcodeScanDTO){ public static boolean isEtichettaAnonima(BarcodeScanDTO barcodeScanDTO){
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128 && barcodeScanDTO.getStringValue().startsWith("U"); return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128 && barcodeScanDTO.getStringValue().startsWith("U");
} }

View File

@ -0,0 +1,31 @@
package it.integry.integrywmsnative.core.utility;
import java.util.HashMap;
public class UtilityQuery {
public static String concatFieldsInWhereCond(HashMap<String, Object> inputData) {
StringBuilder sbWhereCond = new StringBuilder();
HashMap<String, Object> singleInputData = inputData;
Object[] keys = singleInputData.keySet().toArray();
sbWhereCond.append("(");
for(int k = 0; k < keys.length; k++) {
Object value = singleInputData.get(keys[k]);
sbWhereCond.append(keys[k] + (value == null ? " IS NULL" : " = " + UtilityDB.valueToString(value)));
if(k < keys.length - 1) sbWhereCond.append(" AND ");
}
sbWhereCond.append(")");
return sbWhereCond.toString();
}
}

View File

@ -40,4 +40,22 @@ public class UtilityString {
return tmp; return tmp;
} }
public static String mid(String string, Integer start) {
return mid(string, start, 0);
}
public static String mid(String string, Integer start, Integer length){
String value = "";
if(start <= string.length()) {
if(length == 0){
length = string.length() - start + 1;
} else if (length > string.length() - start){
length = string.length() - start + 1;
}
value = string.substring(start - 1, start + length - 1).trim();
}
return value;
}
} }

View File

@ -107,14 +107,12 @@ public class ListaBancaliActivity extends BaseActivity {
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Check which request we're responding to // Check which request we're responding to
if (requestCode == PICK_UL_REQUEST) { if (requestCode == PICK_UL_REQUEST) {
// Make sure the request was successful // Make sure the request was successful
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
// MtbColt recoveredMtbColt = data.getParcelableExtra("key");
this.setResult(RESULT_OK, data); this.setResult(RESULT_OK, data);
this.finish(); this.finish();
} }

View File

@ -97,6 +97,8 @@ public class VenditaHelper {
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_pick_v"); Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_pick_v");
perfTrace.start(); perfTrace.start();
codMdep = SettingsManager.iDB().isFlagEnableCheckDepositoSpedizione() ? codMdep : null;
service.getPickingList(codMdep, dateCons, joinedBarcodes).enqueue(new Callback<ServiceRESTResponse<List<PickingObjectDTO>>>() { service.getPickingList(codMdep, dateCons, joinedBarcodes).enqueue(new Callback<ServiceRESTResponse<List<PickingObjectDTO>>>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Response<ServiceRESTResponse<List<PickingObjectDTO>>> response) { public void onResponse(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Response<ServiceRESTResponse<List<PickingObjectDTO>>> response) {

View File

@ -8,7 +8,10 @@ import android.text.SpannableString;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
@ -57,7 +60,9 @@ public class VenditaViewModel {
BarcodeManager.disable(); BarcodeManager.disable();
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
if(UtilityBarcode.isEtichettaAnonima(data)) { if(UtilityBarcode.isBarcodeOrdineV(data)) {
this.executeEtichettaOrdineV(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichettaAnonima(data)) {
this.executeEtichettaLU(data.getStringValue(), progressDialog); this.executeEtichettaLU(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)){ } else if(UtilityBarcode.isEtichetta128(data)){
this.executeEtichettaEan128(data, progressDialog); this.executeEtichettaEan128(data, progressDialog);
@ -103,6 +108,46 @@ public class VenditaViewModel {
} }
private void executeEtichettaOrdineV(String barcode, Dialog progressDialog) {
String gestione = "";
char c = barcode.charAt(0);
if (c == '1')
gestione = "A";
else if (c == '2')
gestione = "L";
else if (c == '3')
gestione = "V";
int numOrd = Integer.parseInt(UtilityString.mid(barcode, 10));
Date date = null;
try {
date = new SimpleDateFormat("ddMMyyyy")
.parse(UtilityString.mid(barcode, 2, 8));
} catch (ParseException ex) {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
return;
}
final String finalGestione = gestione;
final Date finalDate = date;
List<OrdineVenditaInevasoDTO> filteredOrders = Stream.of(mOrdini)
.filter(x -> x.getNumOrd() == numOrd && x.getGestione().equalsIgnoreCase(finalGestione) && x.getDataOrdD().equals(finalDate)).toList();
mFragment.refreshOrdini(filteredOrders);
mFragment.refreshRecyclerView();
progressDialog.dismiss();
BarcodeManager.enable();
}
private void executeEtichettaLU(String SSCC, Dialog progressDialog) { private void executeEtichettaLU(String SSCC, Dialog progressDialog) {
ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {

View File

@ -305,7 +305,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
} }
public void refreshOrderBy(boolean forceHiddenCheck){ private void refreshOrderBy(boolean forceHiddenCheck){
try { try {
List<MtbColr> mtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get() != null ? mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() : null; List<MtbColr> mtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get() != null ? mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() : null;
@ -317,7 +317,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
} }
public void applyFilter(String descriptionText) { private void applyFilter(String descriptionText) {
this.mBindings.filteredArtsInListExpandableLayout.expand(true); this.mBindings.filteredArtsInListExpandableLayout.expand(true);
@ -750,20 +750,20 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
if (matchedRows.get(0).getTempPickData() != null && if (matchedRows.get(0).getTempPickData() != null &&
matchedRows.get(0).getTempPickData().getSourceMtbColt() != null ) { matchedRows.get(0).getTempPickData().getSourceMtbColt() != null ) {
MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt(); // MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt();
if (tempSourceMtbColt.getGestione().equals(matchedRows.get(0).getGestione()) && // if (tempSourceMtbColt.getGestione().equals(matchedRows.get(0).getGestione()) &&
tempSourceMtbColt.getNumCollo() == matchedRows.get(0).getNumCollo() && // tempSourceMtbColt.getNumCollo() == matchedRows.get(0).getNumCollo() &&
tempSourceMtbColt.getSerCollo().equals(matchedRows.get(0).getSerCollo()) && // tempSourceMtbColt.getSerCollo().equals(matchedRows.get(0).getSerCollo()) &&
tempSourceMtbColt.getDataColloS().equals(matchedRows.get(0).getDataColloS())) { // tempSourceMtbColt.getDataColloS().equals(matchedRows.get(0).getDataColloS())) {
onOrdineRowDispatch(matchedRows.get(0)); onOrdineRowDispatch(matchedRows.get(0));
} else { // } else {
//Se sto pickando da una UL diversa da quella suggerita allora non te la apro in // //Se sto pickando da una UL diversa da quella suggerita allora non te la apro in
//automatico ma ti mostro il filtro // //automatico ma ti mostro il filtro
applyFilter(""); // applyFilter("");
refreshOrderBy(false); // refreshOrderBy(false);
} // }
} else if(matchedRows.get(0).isDeactivated()) { } else if(matchedRows.get(0).isDeactivated()) {
applyFilter(""); applyFilter("");
@ -861,22 +861,31 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mActivity); final Dialog progress = UtilityProgress.createDefaultProgressDialog(mActivity);
if(thereIsAnyRowInUL()) { final MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
ColliMagazzinoRESTConsumer.updateDataFine(
mActivity, ColliMagazzinoRESTConsumer.doesColloContainsAnyRow(currentMtbColt, containRows -> {
progress,
mArticoliInColloBottomSheetViewModel.mtbColt.get(), if(containRows) {
() -> distribuisciCollo(progress, (generatedMtbColts) -> { ColliMagazzinoRESTConsumer.updateDataFine(
if(shouldPrint) printCollo(progress, generatedMtbColts, onComplete); mActivity,
else { progress,
postCloseOperations(generatedMtbColts, onComplete); currentMtbColt,
progress.dismiss(); () -> distribuisciCollo(progress, (generatedMtbColts) -> {
} if(shouldPrint) printCollo(progress, generatedMtbColts, onComplete);
})); else {
} else { postCloseOperations(generatedMtbColts, onComplete);
if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID); progress.dismiss();
deleteCollo(progress, onComplete); }
} }));
} else {
if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID);
deleteCollo(progress, onComplete);
}
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
});
} else { } else {
if(onComplete != null) onComplete.run(); if(onComplete != null) onComplete.run();
@ -1115,10 +1124,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
batchLotEnabled = tmpPickData.getMtbPartitaMag().getFlagStato() == null || tmpPickData.getMtbPartitaMag().getFlagStato().equalsIgnoreCase("A"); batchLotEnabled = tmpPickData.getMtbPartitaMag().getFlagStato() == null || tmpPickData.getMtbPartitaMag().getFlagStato().equalsIgnoreCase("A");
} }
boolean useQtaDaEvadere; boolean useQtaDaEvadere = false;
if(tmpPickData.getQtaTot() != null) { if(tmpPickData.getQtaTot() != null) {
useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa(); useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue();// && item.getMtbAart().isFlagQtaCnfFissa();
if (useQtaDaEvadere) { if (useQtaDaEvadere) {
dto.setQtaTot(qtaDaEvadere); dto.setQtaTot(qtaDaEvadere);
dto.setMaxQta(qtaDaEvadere); dto.setMaxQta(qtaDaEvadere);
@ -1141,8 +1150,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
if(dto.getQtaTot() != null && dto.getQtaTot().floatValue() > 0 && dto.getQtaCnf() != null && dto.getQtaCnf().floatValue() > 0) { if(dto.getQtaDaEvadere() != null && dto.getQtaDaEvadere().floatValue() > 0 && dto.getQtaCnf() != null && dto.getQtaCnf().floatValue() > 0) {
dto.setNumCnf(dto.getQtaTot().divide(dto.getQtaCnf()).intValue()); if(useQtaDaEvadere && (dto.getQtaDaEvadere() != null && dto.getQtaDaEvadere().floatValue() > 0)) {
dto.setNumCnf(dto.getQtaDaEvadere().divide(dto.getQtaCnf()).intValue());
} else {
dto.setNumCnf((dto.getQtaTot().compareTo(dto.getQtaDaEvadere()) < 0 ? dto.getQtaTot() : dto.getQtaDaEvadere()).divide(dto.getQtaCnf()).intValue());
}
} }

View File

@ -5,6 +5,7 @@ import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.databinding.ObservableList; import androidx.databinding.ObservableList;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -22,8 +23,11 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.math.BigDecimal;
import java.util.ArrayList;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
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;
@ -32,6 +36,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding; import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetMtbcolrItemBinding; import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetMtbcolrItemBinding;
import it.integry.integrywmsnative.view.bottomsheet.ArticoliInColloBottomSheetHelper; import it.integry.integrywmsnative.view.bottomsheet.ArticoliInColloBottomSheetHelper;
@ -153,18 +158,27 @@ public class ArticoliInColloBottomSheetViewModel {
mBindings.bottomSheetActionsTitle.setText(clickedItem.getDescrizione()); mBindings.bottomSheetActionsTitle.setText(clickedItem.getDescrizione());
mBindings.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart()); mBindings.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart());
//Setting qty with unt_mis
if(clickedItem.getMtbAart() != null) {
if (clickedItem.getMtbAart().isFlagQtaCnfFissa()) {
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + (!UtilityString.isNullOrEmpty(clickedItem.getMtbAart().getUntMis()) ? ("" + clickedItem.getMtbAart().getUntMis()) : ""));
} else {
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getNumCnf()) + " " + mContext.getString(R.string.unt_mis_col));
}
} else {
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()));
}
mBindings.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(position)); mBindings.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(position));
mBindings.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(position)); mBindings.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(position));
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getUntMis());
}; };
private void onItemEdit(int position) { private void onItemEdit(int position) {
MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position); MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position);
MtbColr cloneItemToEdit = (MtbColr) itemToEdit.clone();
MtbColr originalItem = (MtbColr) itemToEdit.clone(); MtbColr originalItem = (MtbColr) itemToEdit.clone();
@ -184,12 +198,16 @@ public class ArticoliInColloBottomSheetViewModel {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
itemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
itemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
ColliMagazzinoRESTConsumer.updateRiga(itemToEdit, () ->{ cloneItemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
cloneItemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
ColliMagazzinoRESTConsumer.updateRiga(cloneItemToEdit, () ->{
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
itemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
itemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
progress.dismiss(); progress.dismiss();
mtbColt.get().getMtbColr().set(position, itemToEdit); mtbColt.get().getMtbColr().set(position, itemToEdit);
@ -205,19 +223,29 @@ public class ArticoliInColloBottomSheetViewModel {
String text = mContext.getResources().getString(R.string.alert_delete_mtb_colr); String text = mContext.getResources().getString(R.string.alert_delete_mtb_colr);
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(text), null, () -> { DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(text), null, () -> {
MtbColr itemToDelete = mtbColt.get().getMtbColr().get(position);
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
progress.show(); MtbColt mtbColtClone = (MtbColt) mtbColt.get().clone();
mtbColtClone.setMtbColr(new ObservableArrayList<>());
mtbColtClone.setOperation(CommonModelConsts.OPERATION.NO_OP);
ColliMagazzinoRESTConsumer.deleteRiga(itemToDelete, () -> { MtbColr itemToDelete = (MtbColr) mtbColt.get().getMtbColr().get(position).clone();
itemToDelete.setQtaCol(itemToDelete.getQtaCol().multiply(new BigDecimal(-1)));
itemToDelete.setNumCnf(itemToDelete.getNumCnf().multiply(new BigDecimal(-1)));
itemToDelete.setRiga(null);
itemToDelete.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
mtbColtClone.getMtbColr().add(itemToDelete);
ColliMagazzinoRESTConsumer.saveCollo(mtbColtClone, (newMtbColt) -> {
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
progress.dismiss(); MtbColr deletedItem = mtbColt.get().getMtbColr().get(position);
mtbColt.get().getMtbColr().remove(position); mtbColt.get().getMtbColr().remove(deletedItem);
if(this.mOnItemDeletedCallback != null) this.mOnItemDeletedCallback.run(itemToDelete); progress.dismiss();
if(this.mOnItemDeletedCallback != null) this.mOnItemDeletedCallback.run(deletedItem);
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); }, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
}, null).show(); }, null).show();