Creata gestione fabbisogni linea di produzione

This commit is contained in:
Giuseppe Scorrano 2021-02-15 19:18:03 +01:00
parent 278f13ca6d
commit 14035b4c92
57 changed files with 1562 additions and 439 deletions

View File

@ -13,8 +13,10 @@ import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdComponent;
import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
@ -41,10 +43,11 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
SpedizioneModule.class,
AccettazionePickingModule.class,
PickingResiModule.class,
ProdPosizionamentoDaOrdModule.class,
OrdiniUscitaElencoModule.class,
DialogInputQuantityV2Module.class,
DialogScanArtModule.class})
DialogScanArtModule.class,
ProdFabbisognoLineeProdModule.class,
DialogAskMagazzinoProssimitaModule.class})
public interface MainApplicationComponent {
MainActivityComponent.Factory mainActivityComponent();
@ -55,11 +58,11 @@ public interface MainApplicationComponent {
SpedizioneComponent.Factory spedizioneComponent();
AccettazionePickingComponent.Factory accettazionePickingComponent();
PickingResiComponent.Factory pickingResiComponent();
ProdPosizionamentoDaOrdComponent.Factory prodPosizionamentoDaOrdComponent();
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
DialogScanArtComponent.Factory dialogScanArtComponent();
ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();
DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();
void inject(AppContext appContext);

View File

@ -6,6 +6,7 @@ import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
@ -92,7 +93,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, 1)))
.setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_prod_versamento_materiale)

View File

@ -6,7 +6,6 @@ import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.exception.MyExceptionHandler;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
public class BaseActivity extends AppCompatActivity {
@ -15,7 +14,7 @@ public class BaseActivity extends AppCompatActivity {
protected Dialog mCurrentProgress;
public BaseActivity() {
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class));
//Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class));
}
@Override

View File

@ -1,14 +1,17 @@
package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.view.KeyEvent;
import androidx.fragment.app.DialogFragment;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
public class BaseDialogFragment extends DialogFragment {
private boolean mBarcodeListener = false;
private Dialog mCurrentProgress;
public BaseDialogFragment() {
super();
@ -34,4 +37,17 @@ public class BaseDialogFragment extends DialogFragment {
public void setBarcodeListener(boolean listen) {
this.mBarcodeListener = listen;
}
protected void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
}
protected void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
}
}

View File

@ -0,0 +1,26 @@
package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import androidx.fragment.app.Fragment;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
public class BaseFragment extends Fragment {
protected Dialog mCurrentProgress;
protected void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
}
protected void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
}
}

View File

@ -3,7 +3,7 @@ package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal;
import java.util.Date;
public class GtbAnag {
public class GtbAnag extends EntityBase {
private String codAnag;
private String ragSoc;
@ -45,6 +45,10 @@ public class GtbAnag {
private String precode;
private Boolean insDestinatario;
public GtbAnag() {
this.type = "gtb_anag";
}
public String getCodAnag() {
return codAnag;
}

View File

@ -0,0 +1,180 @@
package it.integry.integrywmsnative.core.model;
import androidx.annotation.NonNull;
import java.math.BigDecimal;
public class JtbFasi extends EntityBase {
private String codJfas;
private String codJfasParent;
private String descrizione;
private String descrizEstesa;
private String codMfas;
private String pathIcona;
private String umAllocazione;
private BigDecimal maxAllocazione;
private String codJCal;
private String idJfas;
private String flagAttivo;
private String flagCheck;
private String umProd;
private BigDecimal prodStd;
private String codMdepLav;
private String tipoProd;
public JtbFasi() {
this.type = "jtb_fasi";
}
public String getCodJfas() {
return codJfas;
}
public JtbFasi setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getCodJfasParent() {
return codJfasParent;
}
public JtbFasi setCodJfasParent(String codJfasParent) {
this.codJfasParent = codJfasParent;
return this;
}
public String getDescrizione() {
return descrizione;
}
public JtbFasi setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getDescrizEstesa() {
return descrizEstesa;
}
public JtbFasi setDescrizEstesa(String descrizEstesa) {
this.descrizEstesa = descrizEstesa;
return this;
}
public String getCodMfas() {
return codMfas;
}
public JtbFasi setCodMfas(String codMfas) {
this.codMfas = codMfas;
return this;
}
public String getPathIcona() {
return pathIcona;
}
public JtbFasi setPathIcona(String pathIcona) {
this.pathIcona = pathIcona;
return this;
}
public String getUmAllocazione() {
return umAllocazione;
}
public JtbFasi setUmAllocazione(String umAllocazione) {
this.umAllocazione = umAllocazione;
return this;
}
public BigDecimal getMaxAllocazione() {
return maxAllocazione;
}
public JtbFasi setMaxAllocazione(BigDecimal maxAllocazione) {
this.maxAllocazione = maxAllocazione;
return this;
}
public String getCodJCal() {
return codJCal;
}
public JtbFasi setCodJCal(String codJCal) {
this.codJCal = codJCal;
return this;
}
public String getIdJfas() {
return idJfas;
}
public JtbFasi setIdJfas(String idJfas) {
this.idJfas = idJfas;
return this;
}
public String getFlagAttivo() {
return flagAttivo;
}
public JtbFasi setFlagAttivo(String flagAttivo) {
this.flagAttivo = flagAttivo;
return this;
}
public String getFlagCheck() {
return flagCheck;
}
public JtbFasi setFlagCheck(String flagCheck) {
this.flagCheck = flagCheck;
return this;
}
public String getUmProd() {
return umProd;
}
public JtbFasi setUmProd(String umProd) {
this.umProd = umProd;
return this;
}
public BigDecimal getProdStd() {
return prodStd;
}
public JtbFasi setProdStd(BigDecimal prodStd) {
this.prodStd = prodStd;
return this;
}
public String getCodMdepLav() {
return codMdepLav;
}
public JtbFasi setCodMdepLav(String codMdepLav) {
this.codMdepLav = codMdepLav;
return this;
}
public String getTipoProd() {
return tipoProd;
}
public JtbFasi setTipoProd(String tipoProd) {
this.tipoProd = tipoProd;
return this;
}
@NonNull
@Override
public String toString() {
return String.format("%s - %s", getCodJfas(), getDescrizione());
}
}

View File

@ -9,7 +9,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
* Created by GiuseppeS on 06/03/2018.
*/
public class MtbAart extends EntityBase{
public class MtbAart extends EntityBase {
private String codMart;
private String descrizione;

View File

@ -135,16 +135,10 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
baseSql += "(" + UtilityQuery.concatFieldListInWhereCond(whereCondMapList) + ")";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
this.mSystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override
public void onSuccess(List<MtbColt> value) {
this.mSystemRESTConsumer.<List<MtbColt>>processSql(baseSql, typeOfObjectsList, value -> {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
}, ex -> {
if(onFailed != null) onFailed.run(ex);
}
});
}

View File

@ -60,7 +60,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
@Override
public void onFailed(Exception ex) {
onFailed.run(ex);
if(onFailed != null) onFailed.run(ex);
}
});
}
@ -81,12 +81,8 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
}
public <T> void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) {
processSqlStatic(nativeSql, clazz, data -> {
callback.onSuccess((T) data);
}, callback::onFailed);
public <T> void processSql(String nativeSql, final Type clazz, final RunnableArgs<T> onComplete, final RunnableArgs<Exception> onFailed) {
processSqlStatic(nativeSql, clazz, onComplete, onFailed);
}

View File

@ -27,17 +27,17 @@ public class UpdatesManager {
public static void init(Activity context) {
String suffix;
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
try{
try {
suffix = customConfiguration.getConfig(BaseCustomConfiguration.Keys.CUSTOM_DYNAMIC_VERSION_PATH);
if (suffix == null){
if (suffix == null) {
suffix = "";
}
}catch (Exception e){
} catch (Exception e) {
suffix = "";
}
String currentVersionUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/currentVersion";
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release"+suffix+".apk";
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk";
AppUpdater appUpdater = new AppUpdater(context)

View File

@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.utility;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class UtilityBigDecimal {
@ -50,23 +51,28 @@ public class UtilityBigDecimal {
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor) {
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
return divide(input1, divisor, RoundingMode.HALF_EVEN);
}
return input1.divide(divisor, 3, BigDecimal.ROUND_HALF_EVEN);
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
return input1.divide(divisor, 3, roundingMode);
}
public static BigDecimal divideToInteger(BigDecimal input1, BigDecimal divisor) {
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
return new BigDecimal(input1.divide(divisor,3, BigDecimal.ROUND_HALF_EVEN).intValue());
}
public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor) {
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
return divideAndRoundToInteger(input1, divisor, RoundingMode.HALF_EVEN);
}
return new BigDecimal(input1.divide(divisor,0, BigDecimal.ROUND_HALF_EVEN).intValue());
public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
return new BigDecimal(input1.divide(divisor,0, roundingMode).intValue());
}
public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) {

View File

@ -59,7 +59,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
@ -554,7 +554,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
.setCanLUBeClosed(true)
.setCanOverflowOrderQuantity(canOverflowQuantity);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())

View File

@ -12,7 +12,6 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
@ -134,17 +133,9 @@ public class AccettazionePickingRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<RecoverMtbColt>>() {
}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<RecoverMtbColt>>() {
@Override
public void onSuccess(ArrayList<RecoverMtbColt> value) {
mSystemRestConsumer.<ArrayList<RecoverMtbColt>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
}, onFailed);
}

View File

@ -33,6 +33,7 @@ import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
@ -298,7 +299,7 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
+ "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
null,
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol)
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol, MtbColr.Causale.DEFAULT)
).show();
}

View File

@ -58,7 +58,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
/**
@ -373,7 +373,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(canLUBeClosed);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())

View File

@ -50,7 +50,7 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
@ -309,7 +309,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
.setCanLUBeClosed(false)
.setCanPartitaMagBeChanged(false);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())

View File

@ -15,7 +15,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
@ -55,9 +54,7 @@ public class PickingResiRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
@Override
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
this.mSystemRestConsumer.<ArrayList<WithdrawableDtbDocr>>processSql(sql, typeOfObjectsList, values -> {
if(values != null && values.size() > 0){
List<String> codMarts = Stream.of(values)
@ -92,13 +89,7 @@ public class PickingResiRESTConsumer {
} else {
if(onComplete != null) onComplete.run(values);
}
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}, onFailed);
}
}

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import dagger.Subcomponent;
@Subcomponent
public interface ProdFabbisognoLineeProdComponent {
@Subcomponent.Factory
interface Factory {
ProdFabbisognoLineeProdComponent create();
}
void inject(ProdFabbisognoLineeProdFragment prodFabbisognoLineeProdFragment);
}

View File

@ -0,0 +1,154 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaView;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ProdFabbisognoLineeProdFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, ProdFabbisognoLineeProdViewModel.Listener {
@Inject
ProdFabbisognoLineeProdViewModel mViewModel;
private ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
private FragmentProdFabbisognoLineeProdBinding mBindings;
public ProdFabbisognoLineeProdFragment() {
// Required empty public constructor
}
public static ProdFabbisognoLineeProdFragment newInstance() {
ProdFabbisognoLineeProdFragment fragment = new ProdFabbisognoLineeProdFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_fabbisogno_linee_prod, container, false);
mBindings.setLifecycleOwner(this);
MainApplication.appComponent
.prodFabbisognoLineeProdComponent()
.create()
.inject(this);
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
DialogAskMagazzinoProssimitaView
.newInstance((jtbFase, startDate, endDate) -> {
if (jtbFase == null) {
((IPoppableActivity) getActivity()).pop();
} else {
//Load fabbisogno
this.mViewModel.loadFabbisogno(startDate, endDate, jtbFase.getCodJfas(), codMdep, fabbisognoList -> {
startPickingActivity(fabbisognoList);
});
}
})
.show(getActivity().getSupportFragmentManager(), "tag");
return mBindings.getRoot();
}
@Override
public void onPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy);
}
@Override
public void onDestroy() {
for (Runnable onPreDestroy : mOnPreDestroyList) {
onPreDestroy.run();
}
super.onDestroy();
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
titleText.setText(context.getText(R.string.prod_fabbisogno_linee_prod_title).toString());
}
@Override
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
this.mOnPreDestroyList.add(onActionBarPreDestroy);
}
@Override
public void onError(Exception ex) {
this.closeProgress();
UtilityExceptions.defaultException(getActivity(), ex);
}
@Override
public void onLoadingStarted() {
this.openProgress();
}
@Override
public void onLoadingEnded() {
this.closeProgress();
}
private void startPickingActivity(List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
List<SitArtOrdDTO> sitArtOrdDTOS = Stream.of(fabbisognoList)
.map(x -> new SitArtOrdDTO()
.setCodMart(x.getCodMart())
.setQtaOrd(x.getQtaFabbisogno())
.setNumCnfOrd(x.getNumCnfFabbisogno())
.setFlagEnablePickManuale(false))
.toList();
SpedizioneActivity.startActivity(getActivity(),
sitArtOrdDTOS,
null,
new ArrayList<>(),
GestioneEnum.LAVORAZIONE,
+1,
MtbColr.Causale.VERSAMENTO);
}
}

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
@Module(subcomponents = ProdFabbisognoLineeProdComponent.class)
public class ProdFabbisognoLineeProdModule {
@Provides
ProdFabbisognoLineeProdViewModel providesProdFabbisognoLineeProdViewModel(SystemRESTConsumer systemRESTConsumer) {
return new ProdFabbisognoLineeProdViewModel(systemRESTConsumer);
}
}

View File

@ -0,0 +1,120 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
public class ProdFabbisognoLineeProdViewModel {
private final SystemRESTConsumer mSystemRESTConsumer;
private Listener mListener;
public ProdFabbisognoLineeProdViewModel(SystemRESTConsumer systemRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
}
public void init() {
}
public void loadFabbisogno(Date startDate, Date endDate, String lineaProd, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete) {
this.sendOnLoadingStarted();
String sql = "WITH input_values AS ( " +
" SELECT " + UtilityDB.valueToString(startDate) + " AS data_inizio, " +
" " + UtilityDB.valueToString(endDate) + " AS data_fine, " +
" " + UtilityDB.valueToString(lineaProd) + " AS linea_prod, " +
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep " +
"), " +
" custom_mtb_colr AS ( " +
" SELECT cod_mart, " +
" sum(qta_col) AS qta_col, " +
" sum(num_cnf) AS num_cnf, " +
" sum(qta_col) / sum(num_cnf) AS qta_cnf, " +
" posizione " +
" FROM mvw_sitart_udc_det_inventario " +
" GROUP BY cod_mart, posizione " +
" ), " +
" tmp_ord AS ( " +
" SELECT dtb_ordr.cod_mart, " +
" CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) - " +
" SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord, " +
" SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord, " +
" mtb_aart.unt_mis, " +
" SUM(ISNULL(custom_mtb_colr.qta_col, 0)) AS qta_col_versata, " +
" SUM(ISNULL(custom_mtb_colr.qta_cnf, 0)) AS qta_cnf_versata, " +
" SUM(ISNULL(custom_mtb_colr.num_cnf, 0)) AS num_cnf_versata" +
" FROM dtb_ordr " +
" INNER JOIN dtb_ordt " +
" on dtb_ordr.gestione = dtb_ordt.gestione AND dtb_ordr.data_ord = dtb_ordt.data_ord AND " +
" dtb_ordr.num_ord = dtb_ordt.num_ord " +
" INNER JOIN jrl_fase_posizioni ON dtb_ordt.cod_jfas = jrl_fase_posizioni.cod_jfas " +
" LEFT OUTER JOIN custom_mtb_colr ON custom_mtb_colr.posizione = jrl_fase_posizioni.posizione AND " +
" dtb_ordr.cod_mart = custom_mtb_colr.cod_mart " +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart " +
" CROSS APPLY input_values " +
" WHERE dtb_ordt.gestione = 'L' " +
" AND dtb_ordt.cod_mdep = input_values.cod_mdep " +
" AND jrl_fase_posizioni.posizione = input_values.linea_prod " +
" AND flag_evaso = 'I' " +
" AND dtb_ordr.flag_evaso_forzato = 'N' " +
" AND flag_annulla = 'N' " +
" AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine " +
" GROUP BY dtb_ordr.cod_mart, " +
" mtb_aart.unt_mis " +
" ) " +
"SELECT cod_mart, " +
" qta_ord, " +
" num_cnf_ord, " +
" unt_mis, " +
" qta_col_versata, " +
" num_cnf_versata, " +
" CASE WHEN qta_ord - qta_col_versata < 0 THEN 0 ELSE qta_ord - qta_col_versata END AS qta_fabbisogno, " +
" CASE WHEN num_cnf_ord - num_cnf_versata < 0 THEN 0 ELSE num_cnf_ord - num_cnf_versata END AS num_cnf_fabbisogno " +
"FROM tmp_ord " +
"ORDER BY cod_mart";
Type typeOfObjectsList = new TypeToken<ArrayList<ProdFabbisognoLineeProdDTO>>() {}.getType();
this.mSystemRESTConsumer.<List<ProdFabbisognoLineeProdDTO>>processSql(sql, typeOfObjectsList, jtbFasi -> {
onComplete.run(jtbFasi);
this.sendOnLoadingEnded();
}, this::sendError);
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public void setListener(Listener listener) {
this.mListener = listener;
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
}
}

View File

@ -0,0 +1,114 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.JtbFasi;
public class DialogAskMagazzinoProssimitaAdapter extends ArrayAdapter<JtbFasi> implements Filterable {
private final Context mContext;
private final List<JtbFasi> mDataset;
private List<JtbFasi> mDatasetAllItems;
private final ListFilter listFilter = new ListFilter();
public DialogAskMagazzinoProssimitaAdapter(@NonNull Context context, @NonNull List<JtbFasi> list) {
super(context, 0, list);
mContext = context;
mDataset = list;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItem = convertView;
if (listItem == null) {
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false);
}
if (position < mDataset.size()) {
AppCompatTextView textView = listItem.findViewById(R.id.text);
textView.setText(mDataset.get(position).toString());
return listItem;
}
return null;
}
@NonNull
@Override
public Filter getFilter() {
return listFilter;
}
public class ListFilter extends Filter {
private Object lock = new Object();
@Override
protected FilterResults performFiltering(CharSequence prefix) {
FilterResults results = new FilterResults();
if (mDatasetAllItems == null) {
synchronized (lock) {
mDatasetAllItems = new ArrayList<>(mDataset);
}
}
if (prefix == null || prefix.length() == 0) {
synchronized (lock) {
results.values = mDatasetAllItems;
results.count = mDatasetAllItems.size();
}
} else {
final String searchStrLowerCase = prefix.toString().toLowerCase();
ArrayList<JtbFasi> matchValues = new ArrayList<>();
for (JtbFasi dataItem : mDatasetAllItems) {
if (dataItem.getCodJfas().toLowerCase().startsWith(searchStrLowerCase) ||
dataItem.getDescrizione().toLowerCase().startsWith(searchStrLowerCase)) {
matchValues.add(dataItem);
}
}
results.values = matchValues;
results.count = matchValues.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.values != null) {
mDataset.clear();
mDataset.addAll((ArrayList<JtbFasi>) results.values);
} else {
mDataset.clear();
}
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
import dagger.Subcomponent;
@Subcomponent
public interface DialogAskMagazzinoProssimitaComponent {
@Subcomponent.Factory
interface Factory {
DialogAskMagazzinoProssimitaComponent create();
}
void inject(DialogAskMagazzinoProssimitaView dialogAskMagazzinoProssimitaView);
}

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
@Module
public class DialogAskMagazzinoProssimitaModule {
@Provides
DialogAskMagazzinoProssimitaViewModel providesDialogAskMagazzinoProssimitaViewModel(SystemRESTConsumer systemRESTConsumer) {
return new DialogAskMagazzinoProssimitaViewModel(systemRESTConsumer);
}
}

View File

@ -0,0 +1,202 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
import android.app.DatePickerDialog;
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.AutoCompleteTextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import com.tfb.fbtoast.FBToast;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.model.JtbFasi;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.DialogAskMagazzinoProssimitaBinding;
public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment implements DialogAskMagazzinoProssimitaViewModel.Listener {
@Inject
DialogAskMagazzinoProssimitaViewModel mViewModel;
private final RunnableArgsss<JtbFasi, Date, Date> mOnItemSelected;
private Context mContext;
private DialogAskMagazzinoProssimitaBinding mBindings;
private JtbFasi mSelectedItem;
public static DialogAskMagazzinoProssimitaView newInstance(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) {
return new DialogAskMagazzinoProssimitaView(onItemSelected);
}
private DialogAskMagazzinoProssimitaView(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) {
super();
this.mOnItemSelected = onItemSelected;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
this.mContext = getActivity();
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_magazzino_prossimita, container, false);
MainApplication.appComponent
.dialogAskMagazzinoProssimitaComponent()
.create()
.inject(this);
mBindings.setView(this);
mBindings.setViewmodel(this.mViewModel);
getDialog().setCanceledOnTouchOutside(false);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBindings.buttonConfirm.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
if(mSelectedItem != null) {
getDialog().dismiss();
} else {
FBToast.warningToast(mContext, getResources().getString(R.string.please_select_an_item), Toast.LENGTH_LONG);
}
}
});
mBindings.buttonAbort.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
getDialog().dismiss();
}
});
mBindings.filledExposedDropdownStartDate.setOnClickListener(onStartDateClickListener);
mBindings.filledExposedDropdownEndDate.setOnClickListener(onEndDateClickListener);
return mBindings.getRoot();
}
@Override
public void onStart() {
super.onStart();
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
this.mViewModel.setListener(this);
this.mViewModel.init(codMdep);
this.mViewModel.getJtbFasi().observe(getViewLifecycleOwner(), this::onPosizioniLoaded);
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
mOnItemSelected.run(mSelectedItem, mViewModel.startDate, mViewModel.endDate);
}
private final View.OnClickListener onStartDateClickListener = new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
Calendar c = UtilityDate.getCalendarInstance();
if(mViewModel.startDateBindable != null) {
c.setTime(mViewModel.startDate);
}
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
(view2, year, month, day) -> {
mViewModel.startDate = new GregorianCalendar(year, month, day).getTime();
mViewModel.startDateBindable.set(UtilityDate.formatDate(mViewModel.startDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
};
private final View.OnClickListener onEndDateClickListener = new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
Calendar c = UtilityDate.getCalendarInstance();
if(mViewModel.endDateBindable != null) {
c.setTime(mViewModel.endDate);
}
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
(view2, year, month, day) -> {
mViewModel.endDate = new GregorianCalendar(year, month, day).getTime();
mViewModel.endDateBindable.set(UtilityDate.formatDate(mViewModel.endDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
};
private void onPosizioniLoaded(List<JtbFasi> items) {
DialogAskMagazzinoProssimitaAdapter adapter = new DialogAskMagazzinoProssimitaAdapter(mContext, items);
AutoCompleteTextView editTextDropdownCliente = mBindings.dropdownLineaProd;
editTextDropdownCliente.setThreshold(0);
editTextDropdownCliente.setAdapter(adapter);
editTextDropdownCliente.setOnItemClickListener((parent, view, position, id) -> {
mSelectedItem = items.get(position);
});
}
@Override
public void onError(Exception ex) {
this.closeProgress();
UtilityExceptions.defaultException(mContext, ex);
BarcodeManager.enable();
}
@Override
public void onLoadingStarted() {
this.openProgress();
}
@Override
public void onLoadingEnded() {
this.closeProgress();
}
}

View File

@ -0,0 +1,99 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
import androidx.lifecycle.MutableLiveData;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.JtbFasi;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class DialogAskMagazzinoProssimitaViewModel {
public BindableString startDateBindable = new BindableString();
public BindableString endDateBindable = new BindableString();
public Date startDate = new Date();
public Date endDate = new Date();
private Listener mListener;
private final MutableLiveData<List<JtbFasi>> mJtbFasi = new MutableLiveData<>();
private final SystemRESTConsumer mSystemRESTConsumer;
public DialogAskMagazzinoProssimitaViewModel(SystemRESTConsumer systemRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
}
public void init(String codMdep) {
this.sendOnLoadingStarted();
Calendar c = UtilityDate.getCalendarInstance();
c.set(Calendar.DAY_OF_WEEK, c.getActualMinimum(Calendar.DAY_OF_WEEK));
c.add(Calendar.DAY_OF_MONTH, -7);
startDate = c.getTime();
startDateBindable.set(UtilityDate.formatDate(startDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
c.add(Calendar.DAY_OF_MONTH, 7);
endDate = c.getTime();
endDateBindable.set(UtilityDate.formatDate(endDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
String sql = "SELECT DISTINCT jrl_fase_posizioni.posizione as cod_jfas, " +
" descrizione, " +
" jrl_fase_posizioni.cod_mdep " +
"FROM jrl_fase_posizioni " +
" INNER JOIN mtb_depo_posizioni mdp ON jrl_fase_posizioni.cod_mdep = mdp.cod_mdep AND " +
" jrl_fase_posizioni.posizione = mdp.posizione " +
"WHERE cod_jfas IN (SELECT cod_jfas FROM jtb_fasi WHERE um_prod IS NOT NULL) " +
" AND jrl_fase_posizioni.cod_mdep = " + UtilityDB.valueToString(codMdep) + " " +
"ORDER BY jrl_fase_posizioni.posizione";
Type typeOfObjectsList = new TypeToken<ArrayList<JtbFasi>>() {}.getType();
this.mSystemRESTConsumer.<List<JtbFasi>>processSql(sql, typeOfObjectsList, jtbFasi -> {
this.mJtbFasi.postValue(jtbFasi);
this.sendOnLoadingEnded();
}, this::sendError);
}
public MutableLiveData<List<JtbFasi>> getJtbFasi() {
return mJtbFasi;
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public void setListener(Listener listener) {
this.mListener = listener;
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
}
}

View File

@ -0,0 +1,87 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto;
import java.math.BigDecimal;
public class ProdFabbisognoLineeProdDTO {
private String codMart;
private BigDecimal qtaOrd;
private BigDecimal numCnfOrd;
private String untMis;
private BigDecimal qtaColVersata;
private BigDecimal numCnfVersata;
private BigDecimal qtaFabbisogno;
private BigDecimal numCnfFabbisogno;
public String getCodMart() {
return codMart;
}
public ProdFabbisognoLineeProdDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public ProdFabbisognoLineeProdDTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public BigDecimal getNumCnfOrd() {
return numCnfOrd;
}
public ProdFabbisognoLineeProdDTO setNumCnfOrd(BigDecimal numCnfOrd) {
this.numCnfOrd = numCnfOrd;
return this;
}
public String getUntMis() {
return untMis;
}
public ProdFabbisognoLineeProdDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaColVersata() {
return qtaColVersata;
}
public ProdFabbisognoLineeProdDTO setQtaColVersata(BigDecimal qtaColVersata) {
this.qtaColVersata = qtaColVersata;
return this;
}
public BigDecimal getNumCnfVersata() {
return numCnfVersata;
}
public ProdFabbisognoLineeProdDTO setNumCnfVersata(BigDecimal numCnfVersata) {
this.numCnfVersata = numCnfVersata;
return this;
}
public BigDecimal getQtaFabbisogno() {
return qtaFabbisogno;
}
public ProdFabbisognoLineeProdDTO setQtaFabbisogno(BigDecimal qtaFabbisogno) {
this.qtaFabbisogno = qtaFabbisogno;
return this;
}
public BigDecimal getNumCnfFabbisogno() {
return numCnfFabbisogno;
}
public ProdFabbisognoLineeProdDTO setNumCnfFabbisogno(BigDecimal numCnfFabbisogno) {
this.numCnfFabbisogno = numCnfFabbisogno;
return this;
}
}

View File

@ -1,15 +0,0 @@
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
import dagger.Subcomponent;
@Subcomponent
public interface ProdPosizionamentoDaOrdComponent {
@Subcomponent.Factory
interface Factory {
ProdPosizionamentoDaOrdComponent create();
}
void inject(ProdPosizionamentoDaOrdFragment prodPosizionamentoDaOrdFragment);
}

View File

@ -1,63 +0,0 @@
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.databinding.FragmentProdPosizionamentoDaOrdBinding;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ProdPosizionamentoDaOrdFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ProdPosizionamentoDaOrdFragment extends Fragment {
private FragmentProdPosizionamentoDaOrdBinding mBinding = null;
@Inject
ProdPosizionamentoDaOrdViewModel mViewModel;
public ProdPosizionamentoDaOrdFragment() {
// Required empty public constructor
}
public static ProdPosizionamentoDaOrdFragment newInstance() {
ProdPosizionamentoDaOrdFragment fragment = new ProdPosizionamentoDaOrdFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_posizionamento_da_ord, container,false);
MainApplication.appComponent
.prodPosizionamentoDaOrdComponent()
.create()
.inject(this);
// mViewModel.setListener(this);
mBinding.setLifecycleOwner(this);
mBinding.setView(this);
mBinding.setViewmodel(mViewModel);
return mBinding.getRoot();
}
}

View File

@ -1,20 +0,0 @@
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = ProdPosizionamentoDaOrdComponent.class)
public class ProdPosizionamentoDaOrdModule {
@Provides
@Singleton
ProdPosizionamentoDaOrdViewModel providesProdPosizionamentoDaOrdViewModel() {
return new ProdPosizionamentoDaOrdViewModel();
}
}

View File

@ -1,13 +0,0 @@
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
import javax.inject.Inject;
public class ProdPosizionamentoDaOrdViewModel {
@Inject
public ProdPosizionamentoDaOrdViewModel() {
}
}

View File

@ -43,8 +43,8 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersa
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
public class ProdRecuperoMaterialeViewModel {
@ -82,6 +82,7 @@ public class ProdRecuperoMaterialeViewModel {
private void initBarcode() {
BarcodeManager.enable();
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
@ -204,7 +205,7 @@ public class ProdRecuperoMaterialeViewModel {
.setCanOverflowOrderQuantity(false)
.setCanLUBeClosed(false);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())
@ -213,14 +214,15 @@ public class ProdRecuperoMaterialeViewModel {
.setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad());
onItemDispatched(item, resultDTO.getQtaTot(), sourceMtbColt, dialogProgress);
onItemDispatched(item, resultDTO.getQtaTot(), resultDTO.getNumCnf(), resultDTO.getQtaCnf(), sourceMtbColt, dialogProgress);
}, () -> {
if (dialogProgress != null) dialogProgress.dismiss();
BarcodeManager.enable();
})
.show(mContext.getSupportFragmentManager(), "tag");
}
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal quantity, MtbColt sourceMtbColt, Dialog progress) {
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal inputQtaTot, BigDecimal inputNumCnf, BigDecimal inputQtaCnf, MtbColt sourceMtbColt, Dialog progress) {
if (progress == null) {
progress = UtilityProgress.createDefaultProgressDialog(mContext);
@ -234,14 +236,37 @@ public class ProdRecuperoMaterialeViewModel {
.setGestione(item.getGestione())
.setMtbColr(new ObservableArrayList<>());
BigDecimal totalSumOfQtaCol = BigDecimal.ZERO;
BigDecimal totalSumOfNumCnf = BigDecimal.ZERO;
for (HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) {
BigDecimal qtaCol = quantity.multiply(new BigDecimal(-1).multiply(new BigDecimal(ordine.getPercentageHr()))).divide(new BigDecimal(100), 3, RoundingMode.HALF_EVEN);
BigDecimal qtaColToSave;
BigDecimal numCnfToSave;
if (SettingsManager.iDB().isFlagForceAllToColli() || (item.getMtbAart() != null && !item.getMtbAart().isFlagQtaCnfFissaBoolean()) ){
numCnfToSave = UtilityBigDecimal.divideAndRoundToInteger(inputNumCnf.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR);
qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, BigDecimal.ROUND_FLOOR);
} else {
qtaColToSave = UtilityBigDecimal.divideAndRoundToInteger(inputQtaTot.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR);
numCnfToSave = UtilityBigDecimal.divide(qtaColToSave, item.getQtaCnf(), RoundingMode.FLOOR);
}
totalSumOfQtaCol = totalSumOfQtaCol.add(qtaColToSave);
totalSumOfNumCnf = totalSumOfNumCnf.add(numCnfToSave);
numCnfToSave = numCnfToSave.multiply(BigDecimal.valueOf(-1));
qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1));
final MtbColr mtbColrScarico = new MtbColr()
.setCodMart(item.getCodMart())
.setPartitaMag(UtilityString.empty2null(item.getPartitaMag()))
.setQtaCol(qtaCol)
.setQtaCnf(ordine.getQtaCnf())
.setQtaCol(qtaColToSave)
.setQtaCnf(inputQtaCnf)
.setNumCnf(numCnfToSave)
.setDescrizione(UtilityString.isNullOrEmpty(item.getMtbAart().getDescrizioneEstesa()) ? item.getMtbAart().getDescrizione() : item.getMtbAart().getDescrizioneEstesa())
.setDatetimeRow(UtilityDate.getDateInstance())
.setNumColloRif(item.getNumColloRif())
@ -256,6 +281,24 @@ public class ProdRecuperoMaterialeViewModel {
mtbColtScarico.getMtbColr().add(mtbColrScarico);
}
boolean updateQtaCnfFirstRow = false;
if(UtilityBigDecimal.lowerThan(totalSumOfNumCnf, inputNumCnf)) {
BigDecimal diff = inputNumCnf.subtract(totalSumOfNumCnf).multiply(BigDecimal.valueOf(-1));
mtbColtScarico.getMtbColr().get(0).setNumCnf(mtbColtScarico.getMtbColr().get(0).getNumCnf().add(diff));
updateQtaCnfFirstRow = true;
}
if(UtilityBigDecimal.lowerThan(totalSumOfQtaCol, inputQtaTot)) {
BigDecimal diff = inputQtaTot.subtract(totalSumOfQtaCol).multiply(BigDecimal.valueOf(-1));
mtbColtScarico.getMtbColr().get(0).setQtaCol(mtbColtScarico.getMtbColr().get(0).getQtaCol().add(diff));
updateQtaCnfFirstRow = true;
}
if(updateQtaCnfFirstRow) {
mtbColtScarico.getMtbColr().get(0).setQtaCnf(
UtilityBigDecimal.divide(mtbColtScarico.getMtbColr().get(0).getQtaCol(), mtbColtScarico.getMtbColr().get(0).getNumCnf()));
}
mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
@ -280,7 +323,9 @@ public class ProdRecuperoMaterialeViewModel {
final MtbColr mtbColrCarico = new MtbColr()
.setCodMart(item.getCodMart())
.setPartitaMag(UtilityString.empty2null(item.getPartitaMag()))
.setQtaCol(quantity)
.setQtaCol(inputQtaTot)
.setNumCnf(inputNumCnf)
.setQtaCnf(inputQtaCnf)
.setDescrizione(UtilityString.isNullOrEmpty(item.getMtbAart().getDescrizioneEstesa()) ? item.getMtbAart().getDescrizione() : item.getMtbAart().getDescrizioneEstesa())
.setDatetimeRow(UtilityDate.getDateInstance())
.setNumColloRif(item.getNumColloRif())

View File

@ -13,18 +13,19 @@ import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
import it.integry.integrywmsnative.core.model.CheckableOrdineLavoro;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityResources;
@ -76,38 +77,52 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
MtbColr mtbColr = mMtbColr;
BigDecimal residuoCol = mtbColr.getQtaCol();
BigDecimal residuoCnf = mtbColr.getNumCnf();
BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol);
BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf);
mtbColr.setQtaCnf(mtbColr.getQtaCol().divide(mtbColr.getNumCnf(),5,BigDecimal.ROUND_HALF_UP));
BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol); //Forced clone
BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf); //Forced clone
mtbColr.setQtaCnf(UtilityBigDecimal.divide(mtbColr.getQtaCol(), mtbColr.getNumCnf()));
List<CheckableOrdineLavoro> ordiniSelezionati = getSelectedData();
int totalHr = Stream.of(ordiniSelezionati).mapToInt(x -> x.getItem().getOrdineLav().getHrNum()).sum();
int totalHr = Stream.of(ordiniSelezionati)
.mapToInt(x -> x.getItem().getOrdineLav().getHrNum())
.sum();
for (CheckableOrdineLavoro c : ordiniSelezionati) {
BigDecimal usedCol, usedCnf;
float perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr;
int perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr;
if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean()) ){
usedCnf = residuoCnf.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
if (usedCnf.compareTo(BigDecimal.ZERO) <= 0 && offsetCnf.compareTo(BigDecimal.ZERO) > 0){
usedCnf = UtilityBigDecimal.divideAndRoundToInteger(residuoCnf.multiply(BigDecimal.valueOf(perc)), BigDecimal.valueOf(100), RoundingMode.FLOOR);
if(UtilityBigDecimal.equalsOrLowerThan(usedCnf, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCnf, BigDecimal.ZERO)) {
usedCnf = BigDecimal.ONE;
}
usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR);
} else {
usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
if (usedCol.compareTo(BigDecimal.ZERO) <= 0 && offsetCol.compareTo(BigDecimal.ZERO) > 0){
usedCol = UtilityBigDecimal.divideAndRoundToInteger(residuoCol.multiply(BigDecimal.valueOf(perc)), BigDecimal.valueOf(100), RoundingMode.FLOOR);
if (UtilityBigDecimal.equalsOrLowerThan(usedCol, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCol, BigDecimal.ZERO)){
usedCol = BigDecimal.ONE;
}
usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(3, BigDecimal.ROUND_FLOOR);
usedCnf = UtilityBigDecimal.divide(usedCol, mtbColr.getQtaCnf(), RoundingMode.FLOOR);
}
offsetCol = offsetCol.subtract(usedCol);
offsetCnf = offsetCnf.subtract(usedCnf);
c.setQtaCol(usedCol.floatValue());
c.setNumCnf(usedCnf.floatValue());
}
if (ordiniSelezionati.size() > 0) {
CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get();
if (majorOrder == null) {
majorOrder = ordiniSelezionati.get(0);
}
if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){
if ( SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) {
majorOrder.setNumCnf(majorOrder.getNumCnf().get() + offsetCnf.floatValue());
@ -116,8 +131,6 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue());
majorOrder.setNumCnf(majorOrder.getQtaCol().get() / mtbColr.getQtaCnf().floatValue());
}
}
}
}

View File

@ -61,7 +61,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
@ -416,7 +416,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(canLUBeClosed);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())

View File

@ -10,11 +10,9 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
@Singleton
@ -29,19 +27,12 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
public void loadListaFornitori(RunnableArgs<ArrayList<FornitoreDTO>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'";
Type typeOfObjectsList = new TypeToken<ArrayList<FornitoreDTO>>() {}.getType();
Type typeOfObjectsList = new TypeToken<ArrayList<FornitoreDTO>>() {
}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<FornitoreDTO>>() {
@Override
public void onSuccess(ArrayList<FornitoreDTO> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
onFailed.run(ex);
}
});
mSystemRestConsumer.<ArrayList<FornitoreDTO>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}, onFailed);
}
@ -55,18 +46,11 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
" ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAartWithFornitore>>() {
@Override
public void onSuccess(ArrayList<MtbAartWithFornitore> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {
}.getType();
mSystemRestConsumer.<ArrayList<MtbAartWithFornitore>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}, onFailed);
}
@ -84,18 +68,11 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
"OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " +
"OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAart>>() {
@Override
public void onSuccess(ArrayList<MtbAart> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {
}.getType();
mSystemRestConsumer.<ArrayList<MtbAart>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}, onFailed);
}
}

View File

@ -67,9 +67,9 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.camera_barcode_reader.DialogCameraBarcodeReader;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener {
@ -100,12 +100,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
private ArrayList<MtbColt> mColliRegistrati;
private GestioneEnum mGestioneCol;
private int mSegnoCol;
private Integer mDefaultCausaleUL;
private boolean mShouldCloseActivity;
private final int PICK_UL_REQUEST = 1;
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineUscitaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList, GestioneEnum gestioneCol, int segnoCol) {
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineUscitaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL) {
Intent myIntent = new Intent(context, SpedizioneActivity.class);
String keyPickingList = DataCache.addItem(ordini);
@ -123,6 +124,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
String keySegnoCol = DataCache.addItem(segnoCol);
myIntent.putExtra("keySegnoCol", keySegnoCol);
String keyDefaultCausaleUL = DataCache.addItem(defaultCausaleUL);
myIntent.putExtra("keyDefaultCausaleCol", keyDefaultCausaleUL);
context.startActivity(myIntent);
}
@ -135,6 +139,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
mColliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati"));
mGestioneCol = DataCache.retrieveItem(getIntent().getStringExtra("keyGestioneCol"));
mSegnoCol = DataCache.retrieveItem(getIntent().getStringExtra("keySegnoCol"));
mDefaultCausaleUL = DataCache.retrieveItem(getIntent().getStringExtra("keyDefaultCausaleCol"));
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione);
@ -186,7 +191,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
mTestateOrdini,
mColliRegistrati,
reportNameSpedizioneChiudiOrdine,
mGestioneCol, mSegnoCol);
mGestioneCol, mSegnoCol, mDefaultCausaleUL);
}
@Override
@ -586,7 +591,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
};
public void addExtraItem() {
DialogScanArt
DialogScanArtView
.newInstance((status, mtbAart, ean128Model, mtbColr) -> {
if(status == DialogConsts.Results.YES) {
this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr);
@ -779,7 +784,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setCanLUBeClosed(true);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())

View File

@ -63,7 +63,6 @@ import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.NoOrdersSelectedException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
@ -87,6 +86,7 @@ public class SpedizioneViewModel {
private Integer mDefaultNumOrdOfUL = null;
private Date mDefaultDataOrdOfUL = null;
private String mDefaultCodJFasOfUL = null;
private Integer mDefaultCausaleOfUL = null;
private boolean mEnableGiacenza;
private boolean mEnableCheckPartitaMag;
@ -133,7 +133,8 @@ public class SpedizioneViewModel {
List<MtbColt> colliRegistrati,
String reportNameSpedizioneChiudiOrdine,
GestioneEnum gestioneCol,
int segnoCol) {
int segnoCol,
Integer defaultCausaleUL) {
this.sendOnLoadingStarted();
this.mDefaultCodMdep = codMdep;
@ -144,6 +145,7 @@ public class SpedizioneViewModel {
this.mCanOverflowOrderQuantity = canOverflowOrderQuantity;
this.mShouldAskPesoLU = shouldAskPesoLU;
this.mReportNameSpedizioneChiudiOrdine = reportNameSpedizioneChiudiOrdine;
this.mDefaultCausaleOfUL = defaultCausaleUL;
if (enableGiacenza) {
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
@ -192,10 +194,7 @@ public class SpedizioneViewModel {
}
private void initDefaultVars() {
if (this.mTestateOrdini == null || this.mTestateOrdini.size() == 0) {
sendError(new NoOrdersSelectedException());
return;
}
if (this.mTestateOrdini != null && this.mTestateOrdini.size() > 0) {
if (mDefaultGestioneOfUL == null) {
//Definizione della gestione collo di default
@ -294,6 +293,7 @@ public class SpedizioneViewModel {
}
}
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
@ -1249,6 +1249,7 @@ public class SpedizioneViewModel {
this.sendOnLoadingStarted();
final MtbColr mtbColr = new MtbColr()
.setCausale(mDefaultCausaleOfUL)
.setCodMart(pickingObjectDTO.getMtbAart().getCodMart())
.setPartitaMag(partitaMag)
.setDataScadPartita(dataScad)

View File

@ -1,4 +1,12 @@
package it.integry.integrywmsnative.gest.spedizione.exceptions;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public final class NoOrdersSelectedException extends Exception {
public NoOrdersSelectedException() {
super(UtilityResources.getString(R.string.no_one_order_selected));
}
}

View File

@ -42,7 +42,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
@ -379,7 +379,7 @@ public class VersamentoMerceViewModel {
.setCanPartitaMagBeChanged(false)
.setCanLUBeClosed(false);
DialogInputQuantityV2
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
// PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
// .setNumCnf(resultDTO.getNumCnf())

View File

@ -37,7 +37,7 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<Di
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItem = convertView;
if(listItem == null) {
listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item, parent, false);
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false);
}
if(position < mDataset.size()) {

View File

@ -37,7 +37,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<S
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItem = convertView;
if(listItem == null) {
listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item, parent, false);
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false);
}
if(position < getCount()) {

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.choose_art_from_lista_arts;
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
import android.content.Context;
import android.view.LayoutInflater;
@ -19,8 +19,8 @@ public class DialogChooseArtFromListaMtbColrAdapter extends RecyclerView.Adapter
protected Context mContext;
private List<MtbColr> mDataset;
private IRecyclerItemClicked<MtbColr> mOnItemClickListener;
private final List<MtbColr> mDataset;
private final IRecyclerItemClicked<MtbColr> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
protected DialogChooseArtFromListaArtItemModelBinding mViewDataBinding;

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.choose_art_from_lista_arts;
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
import android.app.Dialog;
import android.content.Context;
@ -20,7 +20,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
public class DialogChooseArtFromListaMtbColr {
public class DialogChooseArtFromListaMtbColrView {
private Context currentContext;
@ -31,11 +31,11 @@ public class DialogChooseArtFromListaMtbColr {
private RunnableArgs<MtbColr> mOnItemChoosed;
public static Dialog make(final Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
return new DialogChooseArtFromListaMtbColr(context, mtbColrList, onItemChoosed).mDialog;
return new DialogChooseArtFromListaMtbColrView(context, mtbColrList, onItemChoosed).mDialog;
}
private DialogChooseArtFromListaMtbColr(Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
private DialogChooseArtFromListaMtbColrView(Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
currentContext = context;
mOnItemChoosed = onItemChoosed;

View File

@ -10,5 +10,5 @@ public interface DialogInputQuantityV2Component {
DialogInputQuantityV2Component create();
}
void inject(DialogInputQuantityV2 dialogInputQuantityV2);
void inject(DialogInputQuantityV2View dialogInputQuantityV2);
}

View File

@ -1,6 +1,5 @@
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
@ -41,11 +40,10 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class DialogInputQuantityV2 extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener {
public class DialogInputQuantityV2View extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener {
@Inject
DialogInputQuantityV2ViewModel mViewModel;
@ -74,13 +72,12 @@ public class DialogInputQuantityV2 extends BaseDialogFragment implements DialogI
private boolean mEnableDataCallback = true;
private int mBarcodeScannerIstanceID;
private Dialog mCurrentProgress;
public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort);
public static DialogInputQuantityV2View newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
return new DialogInputQuantityV2View(dialogInputQuantityV2DTO, onComplete, onAbort);
}
private DialogInputQuantityV2(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
private DialogInputQuantityV2View(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
super();
this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO;
@ -156,19 +153,6 @@ public class DialogInputQuantityV2 extends BaseDialogFragment implements DialogI
});
};
private void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this.context);
}
}
private void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
}
public void save() {
if (this.mViewModel.validate()) {
this.mOnComplete.run(this.mViewModel.getResult(), false);

View File

@ -10,6 +10,6 @@ public interface DialogScanArtComponent {
DialogScanArtComponent create();
}
void inject(DialogScanArt dialogScanArt);
void inject(DialogScanArtView dialogScanArtView);
}

View File

@ -1,6 +1,5 @@
package it.integry.integrywmsnative.view.dialogs.scan_art;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
@ -29,12 +28,11 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.choose_art_from_lista_arts.DialogChooseArtFromListaMtbColr;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView;
public class DialogScanArt extends BaseDialogFragment implements DialogScanArtViewModel.Listener {
public class DialogScanArtView extends BaseDialogFragment implements DialogScanArtViewModel.Listener {
@Inject
DialogScanArtViewModel mViewModel;
@ -44,16 +42,15 @@ public class DialogScanArt extends BaseDialogFragment implements DialogScanArtVi
private DialogScanArtBinding mBindings;
private int mBarcodeScannerIstanceID;
private Dialog mCurrentProgress;
private RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> mOnItemChoosed = null;
public static DialogScanArt newInstance(@NotNull RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onComplete) {
return new DialogScanArt(onComplete);
public static DialogScanArtView newInstance(@NotNull RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onComplete) {
return new DialogScanArtView(onComplete);
}
private DialogScanArt(RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onItemChoosed) {
private DialogScanArtView(RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onItemChoosed) {
super();
mOnItemChoosed = onItemChoosed;
}
@ -114,7 +111,7 @@ public class DialogScanArt extends BaseDialogFragment implements DialogScanArtVi
this.mViewModel.processBarcodeDTO(data, (status, mtbAart, ean128Model, mtbColrList) -> {
if(mtbColrList != null && mtbColrList.size() > 0) {
DialogChooseArtFromListaMtbColr.make(mContext, mtbColrList, mtbColrChose -> {
DialogChooseArtFromListaMtbColrView.make(mContext, mtbColrList, mtbColrChose -> {
mOnItemChoosed.run(status, mtbAart, ean128Model, mtbColrChose);
}).show();
} else {
@ -132,21 +129,7 @@ public class DialogScanArt extends BaseDialogFragment implements DialogScanArtVi
@Override
public void onError(Exception ex) {
this.closeProgress();
UtilityExceptions.defaultException(mContext, ex, mCurrentProgress);
UtilityExceptions.defaultException(mContext, ex);
BarcodeManager.enable();
}
protected void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(mContext);
}
}
protected void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
}
}

View File

@ -130,7 +130,6 @@ public class DialogScanArtViewModel {
if (this.mListener != null) mListener.onError(ex);
}
public void setListener(Listener listener) {
this.mListener = listener;
}

View File

@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="it.integry.integrywmsnative.core.utility.UtilityBigDecimal" />
<import type="android.view.View" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaViewModel" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaView" />
</data>
<androidx.cardview.widget.CardView
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_blue_300"
android:gravity="center_horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_error_white_24dp"
android:layout_margin="24dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="24dp"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/production_line"
android:gravity="center_horizontal"/>
<LinearLayout
android:layout_marginTop="16dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_linea_prod"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/production_line">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/dropdown_linea_prod"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"/>
</com.google.android.material.textfield.TextInputLayout>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2"
android:layout_marginTop="8dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_start_date"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/start_date"
android:layout_weight="1"
android:paddingEnd="4dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filled_exposed_dropdown_start_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:focusable="false"
android:singleLine="true"
app:binding="@{viewmodel.startDateBindable}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_end_date"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/end_date"
android:layout_weight="1"
android:paddingStart="4dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filled_exposed_dropdown_end_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:focusable="false"
android:singleLine="true"
app:binding="@{viewmodel.endDateBindable}"/>
</com.google.android.material.textfield.TextInputLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:gravity="bottom|center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_abort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
app:icon="@drawable/ic_clear_24dp"
app:strokeColor="@color/colorPrimary"
android:layout_marginEnd="8dp"
android:text="@string/abort"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
app:icon="@drawable/ic_save_24dp"
android:text="@string/confirm"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -43,7 +43,7 @@
app:icon="@drawable/ic_clear_24dp"
app:strokeColor="@color/colorPrimary"
android:layout_marginEnd="8dp"
android:text="Annulla"/>
android:text="@string/abort"/>
<com.google.android.material.button.MaterialButton
@ -52,7 +52,7 @@
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
app:icon="@drawable/ic_save_24dp"
android:text="Salva"/>
android:text="@string/confirm"/>
</LinearLayout>
</LinearLayout>

View File

@ -19,7 +19,7 @@
<variable
name="view"
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2" />
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment">
</FrameLayout>
</layout>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto">
<data>
<import type="androidx.databinding.ObservableList" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="android.view.View" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdFragment" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdViewModel" />
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
</layout>

View File

@ -19,6 +19,7 @@
<string name="accettazione_ordine_inevaso_title_multiple_order">Ordini di accettazione</string>
<string name="vendita_title_fragment">Spedizione</string>
<string name="rettifica_giacenze_fragment_title">Rettifica giacenze</string>
<string name="prod_fabbisogno_linee_prod_title">Fabbisogno linee prod.</string>
<string name="versamento_merce_fragment_title">Posizionamento merce</string>
<string name="error">Errore</string>
<string name="ops">Ops</string>
@ -203,6 +204,8 @@
<string name="job">Commessa</string>
<string name="recipient">Destinatario</string>
<string name="ship_date">Data consegna</string>
<string name="start_date">Data inizio</string>
<string name="end_date">Data fine</string>
<string name="document_date">Data documento</string>
<string name="terms_of_delivery">Termini di consegna</string>
<string name="vehicle">Automezzo</string>
@ -215,6 +218,7 @@
<string name="no_items_found_message">Nessun articolo trovato</string>
<string name="no_lu_found_message">Nessuna UL trovata</string>
<string name="no_orders_found_message">Non sono stati trovati ordini</string>
<string name="no_one_order_selected">Non è stato selezionato alcun ordine</string>
<string name="gestione_A_L_only_accepted_message">Sono ammesse solo UL di <b>Acquisto</b> o <b>Lavorazione</b> qui</string>
<string name="gestione_A_V_not_accepted_message"><![CDATA[Le UL di tipo <b>Acquisto</b> o <b>Vendita</b> non sono ammesse qui]]></string>
<string name="gestione_V_not_accepted_message"><![CDATA[Le UL di tipo <b>Vendita</b> non sono ammesse qui]]></string>
@ -268,11 +272,13 @@
<string name="checkout">Vendita</string>
<string name="manufacture">Lav. terzi / Trasf. interni</string>
<string name="production">Produzione</string>
<string name="production_line">Linea di produzione</string>
<string name="internal_handling">Movimentazione interna</string>
<string name="prod_ordine_produzione_title_fragment">Accettazione da ordine</string>
<string name="prod_ordine_lavorazione_title_fragment">Picking da ordine</string>
<string name="prod_versamento_materiale_title_fragment">Versamento materiale</string>
<string name="prod_recupero_materiale_title_fragment">Recupero materiale</string>
<string name="please_select_an_item">Seleziona un elemento per continuare</string>
<string name="select_a_customer_message">Prima di procedere seleziona un <b>cliente</b></string>
<string name="select_a_recipient_message">Prima di procedere seleziona un <b>destinatario</b></string>

View File

@ -57,6 +57,7 @@
<string name="accettazione_ordine_inevaso_title_multiple_order">Multiple acceptance orders</string>
<string name="vendita_title_fragment">Check out</string>
<string name="rettifica_giacenze_fragment_title">Inventory</string>
<string name="prod_fabbisogno_linee_prod_title">Production line requirements</string>
<string name="versamento_merce_fragment_title">Items placement</string>
<string name="free_picking_title_fragment">Free picking</string>
<string name="error">Error</string>
@ -206,6 +207,8 @@
<string name="job">Job</string>
<string name="recipient">Recipient</string>
<string name="ship_date">Ship date</string>
<string name="start_date">Start date</string>
<string name="end_date">End date</string>
<string name="document_date">Document date</string>
<string name="terms_of_delivery">Terms of delivery</string>
<string name="vehicle">Vehicle</string>
@ -218,6 +221,7 @@
<string name="no_items_found_message">No items found</string>
<string name="no_lu_found_message">No LU found</string>
<string name="no_orders_found_message">No orders found</string>
<string name="no_one_order_selected">No one order is selected</string>
<string name="gestione_A_L_only_accepted_message">Only <b>Purchase</b> or <b>Production\'s</b> LU are accepted here</string>
<string name="gestione_A_V_not_accepted_message">The LU of type Purchase or Sale is not accepted here</string>
<string name="gestione_V_not_accepted_message">The LU of type Sale is not accepted here</string>
@ -273,11 +277,13 @@
<string name="checkout">Check out</string>
<string name="manufacture">Manufacture / Internal movement</string>
<string name="production">Production</string>
<string name="production_line">Production line</string>
<string name="internal_handling">Internal handling</string>
<string name="prod_ordine_produzione_title_fragment">Production picking</string>
<string name="prod_ordine_lavorazione_title_fragment">Manufacture picking</string>
<string name="prod_versamento_materiale_title_fragment">Deposit raw material</string>
<string name="prod_recupero_materiale_title_fragment">Recover raw material</string>
<string name="please_select_an_item">Please select an item before proceed</string>
<string name="select_a_customer_message">Please, select a <b>customer</b> before proceeding</string>