Finish v1.40.13(430)_1
This commit is contained in:
commit
b7605bd28c
2
.idea/kotlinc.xml
generated
2
.idea/kotlinc.xml
generated
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="KotlinJpsPluginSettings">
|
<component name="KotlinJpsPluginSettings">
|
||||||
<option name="version" value="1.9.0" />
|
<option name="version" value="1.9.20" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 424
|
def appVersionCode = 430
|
||||||
def appVersionName = '1.40.07'
|
def appVersionName = '1.40.13'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
@ -103,17 +103,17 @@ dependencies {
|
|||||||
//Firebase
|
//Firebase
|
||||||
|
|
||||||
// Import the Firebase BoM
|
// Import the Firebase BoM
|
||||||
implementation platform('com.google.firebase:firebase-bom:29.1.0')
|
implementation platform('com.google.firebase:firebase-bom:32.8.1')
|
||||||
implementation 'com.google.firebase:firebase-analytics'
|
implementation 'com.google.firebase:firebase-analytics'
|
||||||
implementation 'com.google.firebase:firebase-core'
|
implementation 'com.google.firebase:firebase-core'
|
||||||
implementation 'com.google.firebase:firebase-crashlytics'
|
implementation 'com.google.firebase:firebase-crashlytics'
|
||||||
implementation 'com.google.firebase:firebase-perf'
|
implementation 'com.google.firebase:firebase-perf'
|
||||||
implementation 'com.google.android.gms:play-services-basement:18.2.0'
|
implementation 'com.google.android.gms:play-services-basement:18.3.0'
|
||||||
|
|
||||||
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
implementation 'com.google.android.material:material:1.10.0'
|
implementation 'com.google.android.material:material:1.11.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||||
implementation 'androidx.cardview:cardview:1.0.0'
|
implementation 'androidx.cardview:cardview:1.0.0'
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.3.2'
|
implementation 'androidx.recyclerview:recyclerview:1.3.2'
|
||||||
@ -128,7 +128,7 @@ dependencies {
|
|||||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||||
implementation 'com.annimon:stream:1.2.2'
|
implementation 'com.annimon:stream:1.2.2'
|
||||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
|
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.7.0'
|
||||||
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||||
implementation 'org.apache.commons:commons-text:1.9'
|
implementation 'org.apache.commons:commons-text:1.9'
|
||||||
|
|
||||||
|
|||||||
@ -90,7 +90,15 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs<MtbPartitaMag> onComplete, RunnableArgs<Exception> onFailed){
|
public MtbPartitaMag retrievePartitaMagSyncronized(String partitaMag, String codMart, RunnableArgs<Exception> onFailed) throws Exception {
|
||||||
|
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
|
||||||
|
Response<ServiceRESTResponse<MtbPartitaMag>> response = service.retrievePartitaMag(codMart, partitaMag)
|
||||||
|
.execute();
|
||||||
|
|
||||||
|
return analyzeAnswer(response, "retrievePartitaMag");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs<MtbPartitaMag> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
|
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
|
||||||
service.retrievePartitaMag(codMart, partitaMag)
|
service.retrievePartitaMag(codMart, partitaMag)
|
||||||
.enqueue(new Callback<>() {
|
.enqueue(new Callback<>() {
|
||||||
|
|||||||
@ -13,15 +13,13 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
|
|
||||||
public class LocalDateDeserializer implements JsonDeserializer<LocalDate> {
|
public class LocalDateDeserializer implements JsonDeserializer<LocalDate> {
|
||||||
|
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LocalDate deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
|
public LocalDate deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
|
||||||
String date = element.getAsString();
|
String date = element.getAsString();
|
||||||
if (UtilityString.isNullOrEmpty(date)) return null;
|
if (UtilityString.isNullOrEmpty(date)) return null;
|
||||||
|
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UtilityString.determineDateFormat(date));
|
||||||
|
|
||||||
return LocalDate.parse(date, formatter);
|
return LocalDate.parse(date, formatter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,8 @@ import android.text.Spanned;
|
|||||||
|
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -13,6 +15,98 @@ import java.util.regex.Pattern;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class UtilityString {
|
public class UtilityString {
|
||||||
|
private static final Map<String, String> DATE_FORMAT_REGEXPS = new HashMap<String, String>() {{
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------
|
||||||
|
//giorno-mese-giorno
|
||||||
|
put("^\\d{1,2}/\\d{1,2}/\\d{4}$", "dd/MM/yyyy");
|
||||||
|
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$", "dd.MM.yyyy");
|
||||||
|
put("^\\d{1,2}-\\d{1,2}-\\d{4}$", "dd-MM-yyyy");
|
||||||
|
|
||||||
|
//anno-mese-giorno
|
||||||
|
put("^\\d{4}/\\d{1,2}/\\d{1,2}$", "yyyy/MM/dd");
|
||||||
|
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}$", "yyyy.MM.dd");
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}$", "yyyy-MM-dd");
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------
|
||||||
|
//senza spazi
|
||||||
|
put("^\\d{8}$", "yyyyMMdd");
|
||||||
|
put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}$", "dd MMM yyyy");
|
||||||
|
put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}$", "dd MMMM yyyy");
|
||||||
|
|
||||||
|
put("^\\d{12}$", "yyyyMMddHHmm");
|
||||||
|
put("^\\d{8}\\s\\d{4}$", "yyyyMMdd HHmm");
|
||||||
|
|
||||||
|
put("^\\d{14}$", "yyyyMMddHHmmss");
|
||||||
|
put("^\\d{8}\\s\\d{6}$", "yyyyMMdd HHmmss");
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------
|
||||||
|
//giorno-mese-anno hhmm
|
||||||
|
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}\\.\\d{2}$", "dd/MM/yyyy HH.mm");
|
||||||
|
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}$", "dd/MM/yyyy HH:mm");
|
||||||
|
|
||||||
|
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}\\.\\d{2}$", "dd.MM.yyyy HH.mm");
|
||||||
|
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}:\\d{2}$", "dd.MM.yyyy HH:mm");
|
||||||
|
|
||||||
|
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}\\.\\d{2}$", "dd-MM-yyyy HH.mm");
|
||||||
|
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}$", "dd-MM-yyyy HH:mm");
|
||||||
|
|
||||||
|
//anno-mese-giorno hhmm
|
||||||
|
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}\\.\\d{2}$", "yyyy/MM/dd HH.mm");
|
||||||
|
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy/MM/dd HH:mm");
|
||||||
|
|
||||||
|
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}\\.\\d{2}$", "yyyy.MM.dd HH.mm");
|
||||||
|
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy.MM.dd HH:mm");
|
||||||
|
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}\\.\\d{2}$", "yyyy-MM-dd HH.mm");
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy-MM-dd HH:mm");
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------
|
||||||
|
//giorno-mese-anno hhmmss
|
||||||
|
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "dd/MM/yyyy HH.mm.ss");
|
||||||
|
put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd/MM/yyyy HH:mm:ss");
|
||||||
|
|
||||||
|
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "dd.MM.yyyy HH.mm.ss");
|
||||||
|
put("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd.MM.yyyy HH:mm:ss");
|
||||||
|
|
||||||
|
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "dd-MM-yyyy HH.mm.ss");
|
||||||
|
put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd-MM-yyyy HH:mm:ss");
|
||||||
|
|
||||||
|
//anno-mese-giorno hhmmss
|
||||||
|
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "yyyy/MM/dd HH.mm.ss");
|
||||||
|
put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy/MM/dd HH:mm:ss");
|
||||||
|
|
||||||
|
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "yyyy.MM.dd HH.mm.ss");
|
||||||
|
put("^\\d{4}\\.\\d{1,2}\\.\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy.MM.dd HH:mm:ss");
|
||||||
|
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}\\.\\d{2}\\.\\d{2}$", "yyyy-MM-dd HH.mm.ss");
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
|
//anno-mese-giorno hhmmssS
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}.\\d{1,3}$", "yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------
|
||||||
|
//altri formati
|
||||||
|
put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd MMM yyyy HH:mm:ss");
|
||||||
|
put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$", "dd MMMM yyyy HH:mm:ss");
|
||||||
|
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}[T]\\d{1,2}:\\d{2}:\\d{2}$", "yyyy-MM-ddTHH:mm:ss");
|
||||||
|
|
||||||
|
put("^\\d{4}-\\d{1,2}-\\d{1,2}t\\d{1,2}:\\d{2}:\\d{2}.\\d{1,3}z$", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
|
||||||
|
put("^(\\d{4})-(\\d{2})-(\\d{2})t(\\d{2}):(\\d{2}):(\\d{2})((\\+|-)(\\d{2}):(\\d{2}))$", "yyyy-MM-dd'T'HH:mm:ss");
|
||||||
|
}};
|
||||||
|
|
||||||
|
public static String determineDateFormat(String dateString) {
|
||||||
|
for (String regexp : DATE_FORMAT_REGEXPS.keySet()) {
|
||||||
|
if (dateString.toLowerCase().matches(regexp)) {
|
||||||
|
return DATE_FORMAT_REGEXPS.get(regexp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null; // Unknown format.
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isNullOrEmpty(String stringToCheck){
|
public static boolean isNullOrEmpty(String stringToCheck){
|
||||||
return stringToCheck == null || stringToCheck.trim().isEmpty();
|
return stringToCheck == null || stringToCheck.trim().isEmpty();
|
||||||
|
|||||||
@ -136,6 +136,14 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
|
|||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
itemType.areContentsTheSame((oldObject, newObject) ->
|
||||||
|
oldObject.getCodMart().equalsIgnoreCase(newObject.getCodMart()) &&
|
||||||
|
oldObject.getNumOrd().equals(newObject.getNumOrd()) &&
|
||||||
|
oldObject.getDataOrd().equals(newObject.getDataOrd())
|
||||||
|
);
|
||||||
|
|
||||||
|
itemType.areItemSame((oldObject, newObject) -> oldObject == newObject);
|
||||||
|
|
||||||
new LiveAdapter(mItemsInventario)
|
new LiveAdapter(mItemsInventario)
|
||||||
.map(ArtsInGiacenzaDTO.class, itemType)
|
.map(ArtsInGiacenzaDTO.class, itemType)
|
||||||
.into(this.mBindings.inventarioList);
|
.into(this.mBindings.inventarioList);
|
||||||
@ -199,10 +207,10 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
|
|||||||
.setOnFilterApplied(mFilterViewModel::setPositionFilter)
|
.setOnFilterApplied(mFilterViewModel::setPositionFilter)
|
||||||
.setPreselected(
|
.setPreselected(
|
||||||
Stream.of(Objects.requireNonNull(mViewModel.getItemsInventario().getValue()))
|
Stream.of(Objects.requireNonNull(mViewModel.getItemsInventario().getValue()))
|
||||||
.filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ?
|
.filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ?
|
||||||
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get()))
|
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get()))
|
||||||
.map(ArtsInGiacenzaDTO::getPosizione)
|
.map(ArtsInGiacenzaDTO::getPosizione)
|
||||||
.toList()
|
.toList()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,6 +221,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
|
|||||||
|
|
||||||
public void onInfoClick(ArtsInGiacenzaDTO item) {
|
public void onInfoClick(ArtsInGiacenzaDTO item) {
|
||||||
try {
|
try {
|
||||||
|
BarcodeManager.disable();
|
||||||
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
|
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
UtilityExceptions.defaultException(this.getContext(), e);
|
UtilityExceptions.defaultException(this.getContext(), e);
|
||||||
|
|||||||
@ -179,7 +179,24 @@ public class ProdRiposizionamentoDaProdViewModel {
|
|||||||
Objects.equals(x.getNumOrd(), dtoList.get(0).getNumOrd()) &&
|
Objects.equals(x.getNumOrd(), dtoList.get(0).getNumOrd()) &&
|
||||||
Objects.equals(x.getDataOrd(), dtoList.get(0).getDataOrd())
|
Objects.equals(x.getDataOrd(), dtoList.get(0).getDataOrd())
|
||||||
)
|
)
|
||||||
.findFirstOrElse(null);
|
.findFirstOrElse(new StatoArtInventarioDTO());
|
||||||
|
|
||||||
|
MvwSitArtUdcDetInventario mvwInventario = mvwSitArtUdcDetInventario.get();
|
||||||
|
|
||||||
|
if (mvwInventario.getCodMart().equalsIgnoreCase(dtoList.get(0).getCodMart()) &&
|
||||||
|
Objects.equals(mvwInventario.getNumOrd(), dtoList.get(0).getNumOrd()) &&
|
||||||
|
Objects.equals(mvwInventario.getDataOrd(), dtoList.get(0).getDataOrd())) {
|
||||||
|
BigDecimal colliMag = statoArticolo.getColliMag();
|
||||||
|
Integer pedMag = statoArticolo.getPedMag();
|
||||||
|
BigDecimal qtaMag = statoArticolo.getQtaMag();
|
||||||
|
|
||||||
|
BigDecimal numCnf = mvwInventario.getNumCnf();
|
||||||
|
BigDecimal qtaCol = mvwInventario.getQtaCol();
|
||||||
|
|
||||||
|
statoArticolo.setColliMag(colliMag.add(numCnf));
|
||||||
|
statoArticolo.setQtaMag(qtaMag.add(qtaCol));
|
||||||
|
statoArticolo.setPedMag(pedMag + 1);
|
||||||
|
}
|
||||||
|
|
||||||
return new ArtsInGiacenzaDTO()
|
return new ArtsInGiacenzaDTO()
|
||||||
.setCodMart(dtoList.get(0).getCodMart())
|
.setCodMart(dtoList.get(0).getCodMart())
|
||||||
|
|||||||
@ -10,13 +10,9 @@ import android.view.View;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.BR;
|
import it.integry.integrywmsnative.BR;
|
||||||
@ -24,7 +20,6 @@ import it.integry.integrywmsnative.MainApplication;
|
|||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaBinding;
|
import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaBinding;
|
||||||
import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaSituazioneArticoloBinding;
|
|
||||||
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
||||||
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO;
|
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
|
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
|
||||||
@ -34,8 +29,7 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
|
|||||||
DialogInfoGiacenzaViewModel mViewModel;
|
DialogInfoGiacenzaViewModel mViewModel;
|
||||||
|
|
||||||
private DialogInfoGiacenzaBinding mBindings;
|
private DialogInfoGiacenzaBinding mBindings;
|
||||||
private Context mContext;
|
private final ArtsInGiacenzaDTO item;
|
||||||
private ArtsInGiacenzaDTO item;
|
|
||||||
|
|
||||||
public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) {
|
public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) {
|
||||||
return new DialogInfoGiacenzaView(item);
|
return new DialogInfoGiacenzaView(item);
|
||||||
@ -48,9 +42,9 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
this.mContext = requireContext();
|
Context mContext = requireContext();
|
||||||
|
|
||||||
mBindings = DialogInfoGiacenzaBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
mBindings = DialogInfoGiacenzaBinding.inflate(LayoutInflater.from(mContext), null, false);
|
||||||
mBindings.setLifecycleOwner(this);
|
mBindings.setLifecycleOwner(this);
|
||||||
|
|
||||||
MainApplication.appComponent
|
MainApplication.appComponent
|
||||||
@ -60,7 +54,7 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
|
|||||||
|
|
||||||
setCancelable(true);
|
setCancelable(true);
|
||||||
|
|
||||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
var alertDialog = new MaterialAlertDialogBuilder(mContext)
|
||||||
.setView(mBindings.getRoot())
|
.setView(mBindings.getRoot())
|
||||||
.setNeutralButton(R.string.action_close, null)
|
.setNeutralButton(R.string.action_close, null)
|
||||||
.setCancelable(isCancelable())
|
.setCancelable(isCancelable())
|
||||||
@ -86,17 +80,8 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
|
|||||||
if (availableItems == null)
|
if (availableItems == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var listItem = Stream.of(availableItems)
|
|
||||||
.flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO())
|
|
||||||
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
|
|
||||||
)
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
List<StatoArtInventarioDTO> statoArticolo = null;
|
|
||||||
StatoArtInventarioDTO statoArtInventario = availableItems.getStatoArtInventario();
|
StatoArtInventarioDTO statoArtInventario = availableItems.getStatoArtInventario();
|
||||||
if (statoArtInventario != null) {
|
if (statoArtInventario != null) {
|
||||||
statoArticolo = Stream.of(statoArtInventario).toList();
|
|
||||||
|
|
||||||
if (statoArtInventario.colliArrivoIsLessThenZero() &&
|
if (statoArtInventario.colliArrivoIsLessThenZero() &&
|
||||||
statoArtInventario.colliMagIsLessThenZero()) {
|
statoArtInventario.colliMagIsLessThenZero()) {
|
||||||
this.mBindings.situazioneArticolo.setVisibility(View.GONE);
|
this.mBindings.situazioneArticolo.setVisibility(View.GONE);
|
||||||
@ -105,11 +90,11 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
|
|||||||
this.mBindings.situazioneArticolo.setVisibility(View.GONE);
|
this.mBindings.situazioneArticolo.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
new LiveAdapter(listItem, BR.item)
|
new LiveAdapter(this.item.getSituazioneArticoloAvailableListItem(), BR.item)
|
||||||
.map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item)
|
.map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item)
|
||||||
.into(this.mBindings.availableList);
|
.into(this.mBindings.availableList);
|
||||||
|
|
||||||
new LiveAdapter(statoArticolo, BR.item)
|
new LiveAdapter(this.item.getStatoInventario(), BR.item)
|
||||||
.map(StatoArtInventarioDTO.class, R.layout.dialog_info_giacenza_situazione_articolo)
|
.map(StatoArtInventarioDTO.class, R.layout.dialog_info_giacenza_situazione_articolo)
|
||||||
.into(this.mBindings.situazioneArticolo);
|
.into(this.mBindings.situazioneArticolo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,13 @@
|
|||||||
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto;
|
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
||||||
|
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
|
||||||
|
|
||||||
public class ArtsInGiacenzaDTO {
|
public class ArtsInGiacenzaDTO {
|
||||||
|
|
||||||
@ -113,4 +116,16 @@ public class ArtsInGiacenzaDTO {
|
|||||||
this.dataOrd = dataOrd;
|
this.dataOrd = dataOrd;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<DialogInfoSituazioneArticoloAvailableListItem> getSituazioneArticoloAvailableListItem() {
|
||||||
|
return Stream.of(this)
|
||||||
|
.flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO())
|
||||||
|
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
|
||||||
|
)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<StatoArtInventarioDTO> getStatoInventario(){
|
||||||
|
return Stream.of(this.statoArtInventario).toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -403,32 +403,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
String codMart = dialogInputQuantityV2DTO.getMtbAart().getCodMart();
|
String codMart = dialogInputQuantityV2DTO.getMtbAart().getCodMart();
|
||||||
String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato();
|
String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato();
|
||||||
|
|
||||||
if (flagStato.equalsIgnoreCase("I")) {
|
checkIfItemIsActive(flagStato, codMart, () -> {
|
||||||
DialogSimpleMessageView.makeWarningDialog(
|
|
||||||
new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))),
|
|
||||||
null,
|
|
||||||
() -> {
|
|
||||||
if (!mDialogInputQuantityV2View.isVisible())
|
|
||||||
mDialogInputQuantityV2View
|
|
||||||
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
|
||||||
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
|
||||||
.setQtaTot(resultDTO.getQtaTot())
|
|
||||||
.setPartitaMag(resultDTO.getPartitaMag())
|
|
||||||
.setDataScad(resultDTO.getDataScad());
|
|
||||||
|
|
||||||
this.onLoadingStarted();
|
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
|
||||||
})
|
|
||||||
.setOnAbort(this::onLoadingEnded)
|
|
||||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
|
||||||
},
|
|
||||||
this::onLoadingEnded)
|
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
|
||||||
} else {
|
|
||||||
this.onLoadingEnded();
|
|
||||||
if (!mDialogInputQuantityV2View.isVisible())
|
if (!mDialogInputQuantityV2View.isVisible())
|
||||||
mDialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
@ -440,13 +415,23 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
.setPartitaMag(resultDTO.getPartitaMag())
|
.setPartitaMag(resultDTO.getPartitaMag())
|
||||||
.setDataScad(resultDTO.getDataScad());
|
.setDataScad(resultDTO.getDataScad());
|
||||||
|
|
||||||
this.onLoadingStarted();
|
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
})
|
})
|
||||||
.setOnAbort(this::onLoadingEnded)
|
|
||||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
|
}, () -> {});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkIfItemIsActive(String flagStato, String codMart, Runnable onContinue, Runnable onNegativeClick){
|
||||||
|
if (flagStato.equalsIgnoreCase("I")) {
|
||||||
|
DialogSimpleMessageView.makeWarningDialog(
|
||||||
|
new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))),
|
||||||
|
null,
|
||||||
|
onContinue,
|
||||||
|
onNegativeClick)
|
||||||
|
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||||
|
} else {
|
||||||
|
onContinue.run();
|
||||||
}
|
}
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -256,14 +256,19 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
};
|
};
|
||||||
|
|
||||||
public void save() {
|
public void save() {
|
||||||
|
this.onLoadingStarted();
|
||||||
|
|
||||||
this.mViewModel.validate(validated -> {
|
this.mViewModel.validate(validated -> {
|
||||||
if (validated) {
|
|
||||||
this.mAbort = false;
|
requireActivity().runOnUiThread(() -> {
|
||||||
dismiss();
|
|
||||||
this.mOnComplete.run(this.mViewModel.getResult(), false);
|
|
||||||
}else {
|
|
||||||
this.onLoadingEnded();
|
this.onLoadingEnded();
|
||||||
}
|
|
||||||
|
if (validated) {
|
||||||
|
this.mAbort = false;
|
||||||
|
dismiss();
|
||||||
|
this.mOnComplete.run(this.mViewModel.getResult(), false);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,9 +276,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
this.mViewModel.validate(validated -> {
|
this.mViewModel.validate(validated -> {
|
||||||
if (validated) {
|
if (validated) {
|
||||||
this.mAbort = false;
|
this.mAbort = false;
|
||||||
dismiss();this.onLoadingEnded();
|
dismiss();
|
||||||
this.mOnComplete.run(this.mViewModel.getResult(), true);
|
this.mOnComplete.run(this.mViewModel.getResult(), true);
|
||||||
}else {
|
} else {
|
||||||
this.onLoadingEnded();
|
this.onLoadingEnded();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -527,13 +532,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
this.mEnableDataCallback = true;
|
this.mEnableDataCallback = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(Exception ex) {
|
|
||||||
DialogSimpleMessageView
|
|
||||||
.makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
|
|
||||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWarning(String text, RunnableArgs<Boolean> result) {
|
public void onWarning(String text, RunnableArgs<Boolean> result) {
|
||||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)),
|
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)),
|
||||||
|
|||||||
@ -99,7 +99,6 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
|
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
|
||||||
|
|
||||||
private StatoPartitaMag statoArt;
|
private StatoPartitaMag statoArt;
|
||||||
private MtbPartitaMag mtbPartitaMag;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
||||||
@ -485,46 +484,66 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void validate(RunnableArgs<Boolean> onValidated) {
|
public void validate(RunnableArgs<Boolean> onValidated) {
|
||||||
this.sendOnLoadingStarted();
|
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) {
|
if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) {
|
||||||
|
|
||||||
this.mListener.onError(new InvalidQtaCnfQuantityException());
|
this.sendError(new InvalidQtaCnfQuantityException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean()) {
|
||||||
if (suggestPartitaMagRunnable != null) {
|
if (UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
||||||
internalPartitaMag = suggestPartitaMagRunnable.run(this);
|
if (suggestPartitaMagRunnable != null) {
|
||||||
if (internalPartitaMag == null) {
|
internalPartitaMag = suggestPartitaMagRunnable.run(this);
|
||||||
this.mListener.onError(new InvalidBatchLotException());
|
if (internalPartitaMag == null) {
|
||||||
|
this.sendError(new InvalidBatchLotException());
|
||||||
|
onValidated.run(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.sendError(new InvalidBatchLotException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.mListener.onError(new InvalidBatchLotException());
|
if (SettingsManager.iDB().isFlagWarningNewPartitaMag()) {
|
||||||
onValidated.run(false);
|
MtbPartitaMag mtbPartitaMag = null;
|
||||||
return;
|
try {
|
||||||
|
mtbPartitaMag = retrievePartitaMag(internalPartitaMag, this.getMtbAart().getCodMart());
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.sendError(e);
|
||||||
|
onValidated.run(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mtbPartitaMag == null) {
|
||||||
|
boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.batch_lot_inexistent_error_message));
|
||||||
|
if (!result) {
|
||||||
|
onValidated.run(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.statoArt == StatoPartitaMag.DISATTIVO) {
|
if (this.statoArt == StatoPartitaMag.DISATTIVO) {
|
||||||
this.mListener.onError(new InactiveBatchLotException(internalPartitaMag));
|
this.sendError(new InactiveBatchLotException(internalPartitaMag));
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
||||||
|
|
||||||
this.mListener.onError(new InvalidBatchLotException());
|
this.sendError(new InvalidBatchLotException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.shouldAskDataScad && this.internalDataScad == null) {
|
if (this.shouldAskDataScad && this.internalDataScad == null) {
|
||||||
|
|
||||||
this.mListener.onError(new InvalidExpireDateException());
|
this.sendError(new InvalidExpireDateException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -532,7 +551,7 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
|
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
|
||||||
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
|
|
||||||
this.mListener.onError(new OverflowQtaTotOrderedQuantityException());
|
this.sendError(new OverflowQtaTotOrderedQuantityException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -540,14 +559,14 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
|
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
|
||||||
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
|
|
||||||
this.mListener.onError(new OverflowNumCnfOrderedQuantityException());
|
this.sendError(new OverflowNumCnfOrderedQuantityException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) {
|
if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) {
|
||||||
|
|
||||||
this.mListener.onError(new OverflowQtaTotAvailableQuantityException());
|
this.sendError(new OverflowQtaTotAvailableQuantityException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -555,7 +574,7 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) &&
|
if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) &&
|
||||||
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
|
|
||||||
this.mListener.onError(new OverflowNumCnfAvailableQuantityException());
|
this.sendError(new OverflowNumCnfAvailableQuantityException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -565,13 +584,13 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) ||
|
UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) ||
|
||||||
UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) {
|
UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) {
|
||||||
|
|
||||||
this.mListener.onError(new InvalidQuantityException());
|
this.sendError(new InvalidQuantityException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) {
|
if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) {
|
||||||
this.mListener.onError(new InvalidNotesException());
|
this.sendError(new InvalidNotesException());
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -579,22 +598,10 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
if (!UtilityString.isNullOrEmpty(this.internalPartitaMag))
|
if (!UtilityString.isNullOrEmpty(this.internalPartitaMag))
|
||||||
this.internalPartitaMag = this.internalPartitaMag.toUpperCase();
|
this.internalPartitaMag = this.internalPartitaMag.toUpperCase();
|
||||||
|
|
||||||
if (SettingsManager.iDB().isFlagWarningNewPartitaMag()) {
|
|
||||||
asyncMagazzinoRESTConsumer(internalPartitaMag, this.getMtbAart().getCodMart());
|
|
||||||
|
|
||||||
if (mtbPartitaMag == null) {
|
|
||||||
boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.batch_lot_inexistent_error_message));
|
|
||||||
if (!result) {
|
|
||||||
onValidated.run(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
|
if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
|
||||||
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
|
|
||||||
boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message));
|
boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message));
|
||||||
if (!result) {
|
if (!result) {
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
@ -604,19 +611,18 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
|
if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
|
||||||
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
|
|
||||||
boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message));
|
boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message));
|
||||||
if (!result) {
|
if (!result) {
|
||||||
onValidated.run(false);
|
onValidated.run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sendOnLoadingEnded();
|
|
||||||
onValidated.run(true);
|
onValidated.run(true);
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean runAsyncWarningDialog(String text) {
|
private boolean runWarningDialogSyncronized(String text) {
|
||||||
try {
|
try {
|
||||||
final FutureTask<Object> ft = new FutureTask<>(() -> {
|
final FutureTask<Object> ft = new FutureTask<>(() -> {
|
||||||
}, new Object());
|
}, new Object());
|
||||||
@ -634,26 +640,9 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void asyncMagazzinoRESTConsumer(String partitaMag, String codMart) {
|
private MtbPartitaMag retrievePartitaMag(String partitaMag, String codMart) throws Exception {
|
||||||
try {
|
return mMagazzinoRESTConsumer.retrievePartitaMagSyncronized(partitaMag, codMart, this::sendError);
|
||||||
final FutureTask<Object> ft = new FutureTask<>(() -> {
|
|
||||||
}, new Object());
|
|
||||||
mMagazzinoRESTConsumer.retrievePartitaMag(
|
|
||||||
partitaMag,
|
|
||||||
codMart,
|
|
||||||
returnPartitaMag -> {
|
|
||||||
mtbPartitaMag = returnPartitaMag;
|
|
||||||
ft.run();
|
|
||||||
},
|
|
||||||
e -> {
|
|
||||||
this.sendError(e);
|
|
||||||
ft.run();
|
|
||||||
});
|
|
||||||
|
|
||||||
ft.get();
|
|
||||||
} catch (Exception e) {
|
|
||||||
this.sendError(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogInputQuantityV2ResultDTO getResult() {
|
public DialogInputQuantityV2ResultDTO getResult() {
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package it.integry.integrywmsnative.view.dialogs.scan_or_create_lu;
|
|||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
|
import it.integry.integrywmsnative.core.CommonConst;
|
||||||
import it.integry.integrywmsnative.core.exception.AlreadyAttachedDocumentToLUException;
|
import it.integry.integrywmsnative.core.exception.AlreadyAttachedDocumentToLUException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||||
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
|
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
|
||||||
@ -114,7 +115,20 @@ public class DialogScanOrCreateLUViewModel {
|
|||||||
|
|
||||||
if (mtbColt == null) {
|
if (mtbColt == null) {
|
||||||
if (mEnableCreation) {
|
if (mEnableCreation) {
|
||||||
this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(barcodeScanDTO, GestioneEnum.LAVORAZIONE, createdMtbColt -> {
|
Integer customNumCollo = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
this.sendError(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
var createUdcRequest = new CreateUDCRequestDTO()
|
||||||
|
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||||
|
.setNumCollo(customNumCollo)
|
||||||
|
.setSerCollo(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE);
|
||||||
|
|
||||||
|
this.mColliLavorazioneRESTConsumer.createUDC(createUdcRequest, createdMtbColt -> {
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
this.sendOnLUOpened(createdMtbColt, true);
|
this.sendOnLUOpened(createdMtbColt, true);
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
|
|||||||
@ -354,8 +354,8 @@
|
|||||||
<string name="delivered_on">Consegnato il %s</string>
|
<string name="delivered_on">Consegnato il %s</string>
|
||||||
<string name="title_dynamic_frudis">Personalizzazioni Frudis</string>
|
<string name="title_dynamic_frudis">Personalizzazioni Frudis</string>
|
||||||
|
|
||||||
<string name="batch_lot_not_enabled"><![CDATA[Il lotto: <b>%s</b> non è attivo.]]></string>
|
<string name="batch_lot_not_enabled"><![CDATA[Il lotto: <b>%s</b> non è attivo. Continuare?]]></string>
|
||||||
<string name="item_not_enabled"><![CDATA[L\'articolo: <b>%s</b> non è attivo.]]></string>
|
<string name="item_not_enabled"><![CDATA[L\'articolo: <b>%s</b> non è attivo. Continuare?]]></string>
|
||||||
<string name="punto_vendita">Punto Vendita</string>
|
<string name="punto_vendita">Punto Vendita</string>
|
||||||
<string name="title_dynamic_saporiveri_pv">SaporiVeri PV</string>
|
<string name="title_dynamic_saporiveri_pv">SaporiVeri PV</string>
|
||||||
<string name="generate_orders">Genera ordini di acquisto</string>
|
<string name="generate_orders">Genera ordini di acquisto</string>
|
||||||
|
|||||||
@ -359,8 +359,8 @@
|
|||||||
<string name="delivered_on">Delivered on %s</string>
|
<string name="delivered_on">Delivered on %s</string>
|
||||||
<string name="title_dynamic_frudis">Frudis customizations</string>
|
<string name="title_dynamic_frudis">Frudis customizations</string>
|
||||||
|
|
||||||
<string name="batch_lot_not_enabled"><![CDATA[Batch lot: <b>%s</b> is inactive.]]></string>
|
<string name="batch_lot_not_enabled"><![CDATA[Batch lot: <b>%s</b> is inactive. To continue?]]></string>
|
||||||
<string name="item_not_enabled"><![CDATA[Item: <b>%s</b> is inactive.]]></string>
|
<string name="item_not_enabled"><![CDATA[Item: <b>%s</b> is inactive. To continue?]]></string>
|
||||||
<string name="other">Other</string>
|
<string name="other">Other</string>
|
||||||
<string name="home">Home</string>
|
<string name="home">Home</string>
|
||||||
<string name="logout">Logout</string>
|
<string name="logout">Logout</string>
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext {
|
ext {
|
||||||
kotlin_version = '1.9.0'
|
kotlin_version = '1.9.20'
|
||||||
agp_version = '8.3.1'
|
agp_version = '8.3.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@ -13,7 +13,7 @@ buildscript {
|
|||||||
dependencies {
|
dependencies {
|
||||||
classpath "com.android.tools.build:gradle:$agp_version"
|
classpath "com.android.tools.build:gradle:$agp_version"
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.4.0'
|
classpath 'com.google.gms:google-services:4.4.1'
|
||||||
|
|
||||||
classpath 'com.google.firebase:perf-plugin:1.4.2'
|
classpath 'com.google.firebase:perf-plugin:1.4.2'
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user