aggiunta stampa etichetta da rientro merce

This commit is contained in:
2022-07-22 18:49:58 +02:00
parent 7f0f6c969a
commit 79192ce337
12 changed files with 389 additions and 12 deletions

View File

@@ -86,6 +86,8 @@ import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdC
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCComponent;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCModule;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
@@ -137,7 +139,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogEditArticoloModule.class,
DialogPrintOrderSSCCListModule.class,
ProdLineeProduzioneModule.class,
ProdDettaglioLineaModule.class
ProdDettaglioLineaModule.class,
DialogPrintUlSSCCModule.class
})
public interface MainApplicationComponent {
@@ -231,6 +234,8 @@ public interface MainApplicationComponent {
ProdDettaglioLineaComponent.Factory prodDettaglioLineaComponent();
DialogPrintUlSSCCComponent.Factory dialogPrintUlSSCCComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@@ -700,4 +700,29 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public void loadShipmentUlFromProductionUL(MtbColt mtbColt, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> params = new HashMap<>();
params.put("mtb_colr.gestione_rif", mtbColt.getGestione());
params.put("mtb_colr.ser_collo_rif", mtbColt.getSerCollo());
params.put("mtb_colr.num_collo_rif", mtbColt.getNumCollo());
params.put("mtb_colr.data_collo_rif", mtbColt.getDataColloD());
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
String query = "select distinct mtb_colt.*\n" +
"from mtb_colt\n" +
" left join mtb_colr on mtb_colt.gestione = mtb_colr.gestione and mtb_colt.data_collo = mtb_colr.data_collo and\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo and mtb_colt.num_collo = mtb_colr.num_collo\n" +
"where mtb_colt.gestione = 'V'" +
" AND " + whereCond;
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {
}.getType();
this.mSystemRESTConsumer.<ArrayList<MtbColt>>processSql(query, typeOfObjectsList, data -> {
onComplete.run(data.get(0));
}, onFailed);
}
}

View File

@@ -51,6 +51,8 @@ import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdDTO;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdView;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCView;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.dto.PrintUlDTO;
/**
* A simple {@link Fragment} subclass.
@@ -248,7 +250,19 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
}
@Override
public void onDataSaved() {
public void onDataSaved(MtbColt mtbColt) {
PrintUlDTO dto = new PrintUlDTO();
dto.setMtbColt(mtbColt);
String codJcom = currentOrder.getValue().getCodJcom();
dto.setFlagPrintShipmentLabel(!UtilityString.isNullOrEmpty(codJcom));
dto.setFlagPrintProductionLabel(UtilityString.isNullOrEmpty(codJcom));
DialogPrintUlSSCCView.newInstance(dto, result -> {
if (result.isFlagPrintShipmentLabel() || result.isFlagPrintProductionLabel()) {
this.mViewModel.printSavedMtbColt(result);
} else {
this.mViewModel.refreshMtbColts();
}
}).show(requireActivity().getSupportFragmentManager(), "DialogPrintUlSSCC");
}

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer;
@@ -17,8 +18,9 @@ public class ProdRientroMerceOrderDetailModule {
@Provides
ProdRientroMerceOrderDetailViewModel provideProdRientroMerceOrderDetailViewModel(
ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
return new ProdRientroMerceOrderDetailViewModel(prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer);
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer) {
return new ProdRientroMerceOrderDetailViewModel(prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer);
}
}

View File

@@ -6,32 +6,42 @@ import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportType;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto.ImportColliDaProduzioneRequestDTO;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.dto.PrintUlDTO;
public class ProdRientroMerceOrderDetailViewModel {
public MutableLiveData<List<MtbColt>> mtbColtsOfOrder = new MutableLiveData<>();
public final MutableLiveData<List<MtbColt>> mtbColtsOfOrder = new MutableLiveData<>();
private OrdineLavorazioneDTO currentOrder;
private final ProdRientroMerceOrderDetailRESTConsumer mProdRientroMerceOrderDetailRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final PrinterRESTConsumer mPrinterRESTConsumer;
private Listener mListener;
@Inject
public ProdRientroMerceOrderDetailViewModel(ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer) {
this.mProdRientroMerceOrderDetailRESTConsumer = prodRientroMerceOrderDetailRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mPrinterRESTConsumer = printerRESTConsumer;
}
public void setOrder(OrdineLavorazioneDTO order) {
@@ -40,7 +50,7 @@ public class ProdRientroMerceOrderDetailViewModel {
refreshMtbColts();
}
private void refreshMtbColts() {
public void refreshMtbColts() {
this.sendOnLoadingStarted();
this.mtbColtsOfOrder.postValue(null);
@@ -81,12 +91,9 @@ public class ProdRientroMerceOrderDetailViewModel {
.setPesoNetto(pickedQuantityDTO.getPesoNetto());
this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> {
synchronized (this.mtbColtsOfOrder) {
refreshMtbColts();
this.mListener.onDataSaved(mtbColtSaved);
}
this.sendOnLoadingEnded();
}, this::sendError);
@@ -136,9 +143,39 @@ public class ProdRientroMerceOrderDetailViewModel {
if (this.mListener != null) mListener.onError(ex);
}
public void printSavedMtbColt(PrintUlDTO result) {
if (result.isFlagPrintProductionLabel()) {
this.startPrint(result.getMtbColt(), ReportType.ETICHETTA_SSCC_LAVORAZIONE, currentOrder.getCodAnag());
} else {
this.loadShipmentUlFromProductionUL(result.getMtbColt(), mtbColt -> {
this.startPrint(mtbColt, ReportType.ETICHETTA_SSCC_SPEDIZIONE, mtbColt.getCodAnag());
}, this::sendError);
}
}
private void loadShipmentUlFromProductionUL(MtbColt productionUL, RunnableArgs<MtbColt> onLoad, RunnableArgs<Exception> onError) {
this.mColliMagazzinoRESTConsumer.loadShipmentUlFromProductionUL(productionUL, onLoad, onError);
}
private void startPrint(MtbColt mtbColt, ReportType reportType, String codAnag) {
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", UtilityDate.formatDate(mtbColt.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH));
this.mPrinterRESTConsumer.printReportType(
reportType,
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
codAnag,
params,
this::refreshMtbColts,
this::sendError);
}
public interface Listener extends ILoadingListener {
void onDataSaved();
void onDataSaved(MtbColt mtbColt);
void onError(Exception ex);

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.printSsccUl;
import dagger.Subcomponent;
@Subcomponent
public interface DialogPrintUlSSCCComponent {
@Subcomponent.Factory
interface Factory {
DialogPrintUlSSCCComponent create();
}
void inject(DialogPrintUlSSCCView dialogPrintUlSSCCView);
}

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.view.dialogs.printSsccUl;
import dagger.Module;
@Module(subcomponents = DialogPrintUlSSCCComponent.class)
public class DialogPrintUlSSCCModule {
}

View File

@@ -0,0 +1,110 @@
package it.integry.integrywmsnative.view.dialogs.printSsccUl;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioGroup;
import androidx.annotation.NonNull;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.DialogPrintUlSsccBinding;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.dto.PrintUlDTO;
public class DialogPrintUlSSCCView extends BaseDialogFragment {
private Context mContext;
private DialogPrintUlSsccBinding mBindings;
private final PrintUlDTO printUlDTO;
private final RunnableArgs<PrintUlDTO> onDialogClose;
public static DialogPrintUlSSCCView newInstance(
PrintUlDTO printUlDTO,
RunnableArgs<PrintUlDTO> onDismiss
) {
return new DialogPrintUlSSCCView(printUlDTO, onDismiss);
}
public DialogPrintUlSSCCView(@NotNull PrintUlDTO printUlDTO, @NotNull RunnableArgs<PrintUlDTO> onDismiss) {
this.printUlDTO = printUlDTO;
this.onDialogClose = onDismiss;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
this.mContext = getActivity();
mBindings = DialogPrintUlSsccBinding.inflate(inflater, container, false);
MainApplication.appComponent
.dialogPrintUlSSCCComponent()
.create();
mBindings.setView(this);
setCancelable(true);
getDialog().setCanceledOnTouchOutside(true);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
return mBindings.getRoot();
}
public void onCheckChange(RadioGroup radioGroup, int id) {
this.printUlDTO.setFlagPrintProductionLabel(id == mBindings.printProductionLabel.getId());
this.printUlDTO.setFlagPrintShipmentLabel(id == mBindings.printShippingLabel.getId());
}
public void onPositiveClick() {
this.dismiss();
}
public void onNegativeClick() {
this.printUlDTO.setFlagPrintProductionLabel(false);
this.printUlDTO.setFlagPrintShipmentLabel(false);
this.dismiss();
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
this.onDialogClose.run(this.printUlDTO);
super.onDismiss(dialog);
}
@Override
public void onCancel(@NonNull DialogInterface dialog) {
this.onNegativeClick();
super.onCancel(dialog);
}
@Override
public void onStart() {
if (this.printUlDTO.isFlagPrintShipmentLabel()) {
mBindings.printShippingLabel.setChecked(true);
} else {
mBindings.printProductionLabel.setChecked(true);
}
super.onStart();
}
@Override
public void onError(Exception ex) {
UtilityExceptions.defaultException(this.mContext, ex);
dismiss();
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.integrywmsnative.view.dialogs.printSsccUl.dto;
import it.integry.integrywmsnative.core.model.MtbColt;
public class PrintUlDTO {
private boolean flagPrintShipmentLabel = false;
private boolean flagPrintProductionLabel = false;
private MtbColt mtbColt;
public boolean isFlagPrintShipmentLabel() {
return flagPrintShipmentLabel;
}
public PrintUlDTO setFlagPrintShipmentLabel(boolean flagPrintShipmentLabel) {
this.flagPrintShipmentLabel = flagPrintShipmentLabel;
return this;
}
public boolean isFlagPrintProductionLabel() {
return flagPrintProductionLabel;
}
public PrintUlDTO setFlagPrintProductionLabel(boolean flagPrintProductionLabel) {
this.flagPrintProductionLabel = flagPrintProductionLabel;
return this;
}
public MtbColt getMtbColt() {
return mtbColt;
}
public PrintUlDTO setMtbColt(MtbColt mtbColt) {
this.mtbColt = mtbColt;
return this;
}
}