Implementato criterio distribuzione in setup gest.

Implementata stampa di N colli una volta che essi vengono distribuiti.
This commit is contained in:
Giuseppe Scorrano 2019-01-24 10:16:59 +01:00
parent 0baee207ee
commit 0e503e3f23
13 changed files with 88 additions and 55 deletions

View File

@ -7,7 +7,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
public class ReportManager { public class ReportManager {
public static void getRightReportNameByMtbColt(MtbColt mtbColt, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) throws Exception{ public static void getRightReportNameByMtbColt(MtbColt mtbColt, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) {
if(mtbColt != null){ if(mtbColt != null){
@ -28,7 +28,7 @@ public class ReportManager {
} }
} else { } else {
throw new Exception("mtbColt cannot be NULL"); onFailed.run(new Exception("mtbColt cannot be NULL"));
} }
} }

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.settings;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
@ -19,6 +20,7 @@ public class DBSettingsModel {
private boolean flagMultiClienteOrdV; private boolean flagMultiClienteOrdV;
private String defaultCodAnag; private String defaultCodAnag;
private String defaultCausaleRettificaGiacenze; private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
public List<String> getAvailableProfiles() { public List<String> getAvailableProfiles() {
return availableProfiles; return availableProfiles;
@ -88,4 +90,13 @@ public class DBSettingsModel {
this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze; this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
return this; return this;
} }
public DistribuzioneColloDTO.CriterioDistribuzione getDefaultCriterioDistribuzione() {
return defaultCriterioDistribuzione;
}
public DBSettingsModel setDefaultCriterioDistribuzione(String defaultCriterioDistribuzione) {
this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione);
return this;
}
} }

View File

@ -184,7 +184,15 @@ public class SettingsManager {
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> { GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value); dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", valueDefaultCriterioDistribuzione -> {
dbSettingsModelIstance.setDefaultCriterioDistribuzione(valueDefaultCriterioDistribuzione.value);
if(onComplete != null) onComplete.run(); if(onComplete != null) onComplete.run();
}, ex -> {
if(onFailed != null) onFailed.run(ex);
});
}, ex -> { }, ex -> {
if(onFailed != null) onFailed.run(ex); if(onFailed != null) onFailed.run(ex);
}); });

View File

@ -748,7 +748,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
dto.setShouldAskDataScad(true); dto.setShouldAskDataScad(true);
} }
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value)).show(); DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value), null).show();
} }
} }

View File

@ -117,7 +117,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
MtbColt recoveredMtbColt = ColliDataRecover.getSession(recoveredMtbColtID); MtbColt recoveredMtbColt = ColliDataRecover.getSession(recoveredMtbColtID);
if(recoveredMtbColt != null && recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) { if(recoveredMtbColt != null && recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) {
ColliMagazzinoRESTConsumer.distribuisciCollo(recoveredMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE, ColliMagazzinoRESTConsumer.distribuisciCollo(recoveredMtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
mtbColts -> { mtbColts -> {
ColliDataRecover.closeSession(recoveredMtbColtID); ColliDataRecover.closeSession(recoveredMtbColtID);
endRecoverMode(); endRecoverMode();

View File

@ -393,7 +393,6 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
.setMaxQta(mtbColr.getQtaCol()); .setMaxQta(mtbColr.getQtaCol());
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> { DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
if(quantityDTO != null) {
mtbColr mtbColr
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())) .setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get())) .setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get()))
@ -401,8 +400,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
.setDatetimeRow(new Date()); .setDatetimeRow(new Date());
onComplete.run(mtbColr); onComplete.run(mtbColr);
} else onAbort.run(); }, onAbort).show();
}).show();
} }

View File

@ -301,7 +301,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> { DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
onPostDispatch(mtbAart, quantityDTO); onPostDispatch(mtbAart, quantityDTO);
}).show(); }, null).show();
} }
@ -520,7 +520,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
UtilityExceptions.defaultException(mContext, ex, progressDialog); UtilityExceptions.defaultException(mContext, ex, progressDialog);
}); });
}).show(); }, null).show();
} }

View File

@ -11,6 +11,7 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -707,7 +708,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.show(); progress.show();
if(thereIsAnyRowInUL()) { if(thereIsAnyRowInUL()) {
updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress))); updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts)));
} else { } else {
ColliDataRecover.closeSession(mtbColtSessionID); ColliDataRecover.closeSession(mtbColtSessionID);
deleteCollo(progress); deleteCollo(progress);
@ -742,7 +743,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE, ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
mtbColts -> { mtbColts -> {
ColliDataRecover.closeSession(mtbColtSessionID); ColliDataRecover.closeSession(mtbColtSessionID);
onComplete.run(mtbColts); onComplete.run(mtbColts);
@ -750,7 +751,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
ex -> UtilityExceptions.defaultException(mActivity, ex, progress)); ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
} }
private void printCollo(ProgressDialog progress) { private void printCollo(ProgressDialog progress, List<MtbColt> mtbColtsToPrint) {
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> { DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
if(shouldPrint) { if(shouldPrint) {
@ -760,20 +761,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
if (value.size() > 0) { if (value.size() > 0) {
try { try {
MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); cyclicPrint(mtbColtsToPrint.iterator(), value.get(0), () -> {
postCloseOperations(mtbColtsToPrint);
ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> {
PrinterRESTConsumer.printCollo(
value.get(0),
currentMtbColt,
1, reportName, () -> {
postCloseOperations();
progress.dismiss(); progress.dismiss();
}, ex -> { }, ex -> {
progress.dismiss(); progress.dismiss();
String errorMessage = ex.getMessage(); String errorMessage = ex.getMessage();
DialogSimpleMessageHelper.makeErrorDialog( DialogSimpleMessageHelper.makeErrorDialog(
@ -782,19 +773,17 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
null, null,
null, null,
R.string.button_ignore_print, R.string.button_ignore_print,
() -> postCloseOperations()).show(); () -> postCloseOperations(mtbColtsToPrint)).show();
}); });
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)
);
} catch (Exception ex) { } catch (Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress); UtilityExceptions.defaultException(mActivity, ex, progress);
postCloseOperations(); postCloseOperations(mtbColtsToPrint);
} }
} else { } else {
progress.dismiss(); progress.dismiss();
String errorMessage = "Nessuna stampante configurata"; String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show(); DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtsToPrint)).show();
} }
} }
@ -804,12 +793,36 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
}); });
} else { } else {
postCloseOperations(); postCloseOperations(mtbColtsToPrint);
progress.dismiss(); progress.dismiss();
} }
}).show(); }).show();
} }
private void cyclicPrint(Iterator<MtbColt> sourceMtbColts, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
if(sourceMtbColts.hasNext()){
singlePrint(sourceMtbColts.next(), printerName, () -> {
cyclicPrint(sourceMtbColts, printerName, onComplete, onAbort);
}, onAbort);
} else {
onComplete.run();
}
}
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
ReportManager.getRightReportNameByMtbColt(mtbColtToPrint, reportName -> {
PrinterRESTConsumer.printCollo(
printerName,
mtbColtToPrint,
1,
reportName, onComplete, onAbort);
}, onAbort);
}
private void deleteCollo(ProgressDialog progress) { private void deleteCollo(ProgressDialog progress) {
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> { ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
@ -833,11 +846,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
private void postCloseOperations() { private void postCloseOperations(List<MtbColt> generatedMtbColt) {
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
this.mColliRegistrati.add(mtbColt); this.mColliRegistrati.addAll(generatedMtbColt);
mArticoliInColloBottomSheetViewModel.mtbColt.set(null); mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
isFabVisible.set(true); isFabVisible.set(true);
@ -965,7 +978,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value)).show(); DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value), null).show();
} }
} }

View File

@ -333,7 +333,7 @@ public class VersamentoMerceViewModel {
.setDatetimeRow(new Date()); .setDatetimeRow(new Date());
onComplete.run(mtbColr); onComplete.run(mtbColr);
}).show(); }, null).show();
} }

View File

@ -188,7 +188,7 @@ public class ArticoliInColloBottomSheetViewModel {
}, },
ex -> UtilityExceptions.defaultException(mContext, ex, progress)); ex -> UtilityExceptions.defaultException(mContext, ex, progress));
}).show(); }, null).show();
} }
private void onItemDelete(int position) { private void onItemDelete(int position) {

View File

@ -214,11 +214,11 @@ public class DialogInputQuantity {
private QuantityDTO currentQuantityDto; private QuantityDTO currentQuantityDto;
private DTO currentDTO; private DTO currentDTO;
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) { public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback, final Runnable onAbort) {
return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback).currentAlert; return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback, onAbort).currentAlert;
} }
public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) { public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback, final Runnable onAbort) {
currentContext = context; currentContext = context;
currentMtbAart = dto.getMtbAart(); currentMtbAart = dto.getMtbAart();
currentDTO = dto; currentDTO = dto;
@ -253,7 +253,7 @@ public class DialogInputQuantity {
.setView(currentBinding.getRoot()) .setView(currentBinding.getRoot())
.setPositiveButton(context.getText(R.string.confirm), null) .setPositiveButton(context.getText(R.string.confirm), null)
.setNegativeButton(context.getText(R.string.abort), (dialog, which) -> { .setNegativeButton(context.getText(R.string.abort), (dialog, which) -> {
dialogCallback.onResult(null); if(onAbort != null) onAbort.run();
}); });
currentAlert = alertDialog.create(); currentAlert = alertDialog.create();

View File

@ -27,7 +27,8 @@
<LinearLayout <LinearLayout
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:padding="16dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -39,11 +40,12 @@
android:id="@+id/print_message" android:id="@+id/print_message"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_margin="16dp"
android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary" style="@style/TextInputLayout.OutlinePrimary"
android:textColor="#5F6368" android:textColor="#5F6368"
android:textSize="16sp" android:textSize="16sp"
android:layout_gravity="center"
android:gravity="center_horizontal"
tools:text="La procedura stamperà una packing list"/> tools:text="La procedura stamperà una packing list"/>
</LinearLayout> </LinearLayout>

View File

@ -24,7 +24,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@+id/qta_box" app:layout_constraintEnd_toStartOf="@+id/qta_box"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView