Finish v1_10_2(105)

This commit is contained in:
Giuseppe Scorrano 2019-12-09 19:44:06 +01:00
commit deaa6c6839
21 changed files with 302 additions and 72 deletions

View File

@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 103
def appVersionName = '1.10.0'
def appVersionCode = 105
def appVersionName = '1.10.2'
signingConfigs {
release {

View File

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

View File

@ -1,10 +1,12 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
@ -13,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
public interface ArticoloGrigliaDao {
@Query("SELECT * from articoli_griglia")
List<ArticoloGriglia> getAll();
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia")
Integer getIdArticoloByGrigliaAndCodMart(int idGriglia, String codMart);
@ -25,6 +28,9 @@ public interface ArticoloGrigliaDao {
@Update
void update(ArticoloGriglia articolo);
@Delete
void deleteList(List<ArticoloGriglia> toDelete);
@Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia);
@ -36,4 +42,7 @@ public interface ArticoloGrigliaDao {
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1")
Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
}

View File

@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
@ -8,6 +11,7 @@ import java.util.List;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliGrigliaRepository extends Repository{
@ -18,13 +22,15 @@ public class ArticoliGrigliaRepository extends Repository{
this.mRepository = MainApplication.getArticoliGrigliaRepository();
}
public void saveArticoliToGriglia(List<ArticoloGriglia> articoli, Runnable onSuccess, RunnableArgs<Exception> onFail) {
public void saveArticoliToGriglia(List<ArticoloGriglia> articoli, Griglia griglia, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(()->{
try{
List<ArticoloGriglia> toUpdate = new ArrayList<>();
List<ArticoloGriglia> toInsert = new ArrayList<>();
List<String> codMarts = new ArrayList<>();
for (ArticoloGriglia art : articoli){
Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(art.getIdGriglia(),art.getBarCode(),art.getCodMart());
Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(griglia.getGrigliaId(),art.getBarCode(),art.getCodMart());
codMarts.add(art.getCodMart());
if (id != null){
art.setArticoloGrigliaId(id);
toUpdate.add(art);
@ -34,6 +40,9 @@ public class ArticoliGrigliaRepository extends Repository{
}
mRepository.insertAll(toInsert);
mRepository.updateAll(toUpdate);
List<ArticoloGriglia> articoliGriglia = mRepository.getArticoliFromGriglia(griglia.getGrigliaId());
List<ArticoloGriglia> toDelete =Stream.of(articoliGriglia).filter(articolo-> !codMarts.contains(articolo.getCodMart())).toList();
mRepository.deleteList(toDelete);
onSuccess.run();
}catch (Exception e){
onFail.run(e);

View File

@ -12,10 +12,20 @@ public class BaseActivity extends AppCompatActivity {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) {
if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
}
return super.dispatchKeyEvent(event);
}
private boolean isControlKey(KeyEvent keyEvent) {
int keyCode = keyEvent.getKeyCode();
return (
keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
);
}
}

View File

@ -32,8 +32,8 @@ public class BaseDialog extends Dialog {
int keyCode = keyEvent.getKeyCode();
return (
keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
);
}

View File

@ -8,11 +8,14 @@ import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Stream;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
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.model.DistribuzioneColloDTO;
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.UtilityDate;
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.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@ -106,6 +112,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
public static void saveRigaCollo(MtbColr mtbColrToSave, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed){
mtbColrToSave.setMtbAart(null);
mtbColrToSave.setRifPartitaMag(null);
EntityRESTConsumer.processEntity(mtbColrToSave, new ISimpleOperationCallback<MtbColr>() {
@Override
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 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();
nativeSqlDTO.nativeSql = nativeSql;
@ -51,12 +51,12 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
Reader reader = new InputStreamReader(ims);
T gsonObj = gson.fromJson(reader, clazz);
callback.onSuccess(gsonObj);
onComplete.run(gsonObj);
}
@Override
public void onFailed(Exception ex) {
callback.onFailed(ex);
onFailed.run(ex);
}
});
}
@ -64,12 +64,18 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
Log.e("ProcessSql", t.toString());
callback.onFailed(new Exception(t));
// UtilityLogger.errorMe(new Exception(t), nativeSql);
onFailed.run(new Exception(t));
}
});
}
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){

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 flagCanAutoOpenNewULAccettazione;
private boolean flagCanAddExtraQuantitySpedizione;
private boolean flagEnableCheckDepositoSpedizione;
public List<String> getAvailableProfiles() {
return availableProfiles;
@ -139,4 +140,14 @@ public class DBSettingsModel {
this.flagCanAddExtraQuantitySpedizione = flagCanAddExtraQuantitySpedizione;
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")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_CAN_ADD_EXTRA_QUANTITY"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("ENABLE_CHECK_DEPOSITO"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@ -226,6 +230,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_ITEMS", 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.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "ENABLE_CHECK_DEPOSITO", Boolean.class));
if(onComplete != null) onComplete.run();
}, onFailed);

View File

@ -11,6 +11,11 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UtilityBarcode {
public static boolean isBarcodeOrdineV(BarcodeScanDTO barcodeScanDTO) {
return (isEan13(barcodeScanDTO) || isEtichetta128(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("3");
}
public static boolean isEtichettaAnonima(BarcodeScanDTO barcodeScanDTO){
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;
}
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
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Check which request we're responding to
if (requestCode == PICK_UL_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// MtbColt recoveredMtbColt = data.getParcelableExtra("key");
this.setResult(RESULT_OK, data);
this.finish();
}

View File

@ -50,9 +50,7 @@ public class OrdineAcquistoPvHelper {
griglia.setDescrLisa(dto.getDescrLisa());
griglia.setDescrDepo(dto.getDescrDepo());
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
mGrigliaRepository.saveGriglia(griglia, id -> {
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail);
}, onFail);
mGrigliaRepository.saveGriglia(griglia, id -> saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail), onFail);
}, onFail);
}
@ -64,7 +62,7 @@ public class OrdineAcquistoPvHelper {
toSave.setIdGriglia(griglia.getGrigliaId());
articoliGriglia.add(toSave);
}
mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, () -> onSave.run(griglia), onFail);
mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia,griglia, () -> onSave.run(griglia), onFail);
}
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {

View File

@ -97,6 +97,8 @@ public class VenditaHelper {
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_pick_v");
perfTrace.start();
codMdep = SettingsManager.iDB().isFlagEnableCheckDepositoSpedizione() ? codMdep : null;
service.getPickingList(codMdep, dateCons, joinedBarcodes).enqueue(new Callback<ServiceRESTResponse<List<PickingObjectDTO>>>() {
@Override
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 java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.R;
@ -57,7 +60,9 @@ public class VenditaViewModel {
BarcodeManager.disable();
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);
} else if(UtilityBarcode.isEtichetta128(data)){
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) {
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 {
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);
@ -750,20 +750,20 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
if (matchedRows.get(0).getTempPickData() != 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()) &&
tempSourceMtbColt.getNumCollo() == matchedRows.get(0).getNumCollo() &&
tempSourceMtbColt.getSerCollo().equals(matchedRows.get(0).getSerCollo()) &&
tempSourceMtbColt.getDataColloS().equals(matchedRows.get(0).getDataColloS())) {
// if (tempSourceMtbColt.getGestione().equals(matchedRows.get(0).getGestione()) &&
// tempSourceMtbColt.getNumCollo() == matchedRows.get(0).getNumCollo() &&
// tempSourceMtbColt.getSerCollo().equals(matchedRows.get(0).getSerCollo()) &&
// tempSourceMtbColt.getDataColloS().equals(matchedRows.get(0).getDataColloS())) {
onOrdineRowDispatch(matchedRows.get(0));
} else {
//Se sto pickando da una UL diversa da quella suggerita allora non te la apro in
//automatico ma ti mostro il filtro
applyFilter("");
refreshOrderBy(false);
}
// } else {
// //Se sto pickando da una UL diversa da quella suggerita allora non te la apro in
// //automatico ma ti mostro il filtro
// applyFilter("");
// refreshOrderBy(false);
// }
} else if(matchedRows.get(0).isDeactivated()) {
applyFilter("");
@ -861,11 +861,15 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mActivity);
if(thereIsAnyRowInUL()) {
final MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
ColliMagazzinoRESTConsumer.doesColloContainsAnyRow(currentMtbColt, containRows -> {
if(containRows) {
ColliMagazzinoRESTConsumer.updateDataFine(
mActivity,
progress,
mArticoliInColloBottomSheetViewModel.mtbColt.get(),
currentMtbColt,
() -> distribuisciCollo(progress, (generatedMtbColts) -> {
if(shouldPrint) printCollo(progress, generatedMtbColts, onComplete);
else {
@ -878,6 +882,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
deleteCollo(progress, onComplete);
}
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
});
} else {
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");
}
boolean useQtaDaEvadere;
boolean useQtaDaEvadere = false;
if(tmpPickData.getQtaTot() != null) {
useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa();
useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue();// && item.getMtbAart().isFlagQtaCnfFissa();
if (useQtaDaEvadere) {
dto.setQtaTot(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) {
dto.setNumCnf(dto.getQtaTot().divide(dto.getQtaCnf()).intValue());
if(dto.getQtaDaEvadere() != null && dto.getQtaDaEvadere().floatValue() > 0 && dto.getQtaCnf() != null && dto.getQtaCnf().floatValue() > 0) {
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 androidx.databinding.DataBindingUtil;
import androidx.databinding.Observable;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.databinding.ObservableList;
import androidx.annotation.NonNull;
@ -22,8 +23,11 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.lang.ref.WeakReference;
import java.math.BigDecimal;
import java.util.ArrayList;
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.expansion.RunnableArgs;
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.UtilityNumber;
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.FragmentArticoliInColloBottomSheetMtbcolrItemBinding;
import it.integry.integrywmsnative.view.bottomsheet.ArticoliInColloBottomSheetHelper;
@ -153,18 +158,27 @@ public class ArticoliInColloBottomSheetViewModel {
mBindings.bottomSheetActionsTitle.setText(clickedItem.getDescrizione());
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.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(position));
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getUntMis());
};
private void onItemEdit(int position) {
MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position);
MtbColr cloneItemToEdit = (MtbColr) itemToEdit.clone();
MtbColr originalItem = (MtbColr) itemToEdit.clone();
@ -184,12 +198,16 @@ public class ArticoliInColloBottomSheetViewModel {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
cloneItemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
cloneItemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
ColliMagazzinoRESTConsumer.updateRiga(cloneItemToEdit, () ->{
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
itemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
itemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
ColliMagazzinoRESTConsumer.updateRiga(itemToEdit, () ->{
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
progress.dismiss();
mtbColt.get().getMtbColr().set(position, itemToEdit);
@ -205,19 +223,29 @@ public class ArticoliInColloBottomSheetViewModel {
String text = mContext.getResources().getString(R.string.alert_delete_mtb_colr);
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(text), null, () -> {
MtbColr itemToDelete = mtbColt.get().getMtbColr().get(position);
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);
progress.dismiss();
mtbColt.get().getMtbColr().remove(position);
MtbColr deletedItem = mtbColt.get().getMtbColr().get(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));
}, null).show();