Merge branch 'develop' into feature/Refactoring_PickingResi

# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
This commit is contained in:
Giuseppe Scorrano 2020-11-05 18:31:13 +01:00
commit 598372675f
25 changed files with 820 additions and 253 deletions

View File

@ -7,8 +7,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 161 def appVersionCode = 162
def appVersionName = '1.13.15' def appVersionName = '1.13.16'
signingConfigs { signingConfigs {
release { release {

View File

@ -18,6 +18,8 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComp
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
// Definition of the Application graph // Definition of the Application graph
@Singleton @Singleton
@ -31,7 +33,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
RettificaGiacenzeModule.class, RettificaGiacenzeModule.class,
SpedizioneModule.class, SpedizioneModule.class,
AccettazionePickingModule.class, AccettazionePickingModule.class,
PickingResiModule.class}) PickingResiModule.class,
DialogInputQuantityV2Module.class})
public interface MainApplicationComponent { public interface MainApplicationComponent {
MainActivityComponent.Factory mainActivityComponent(); MainActivityComponent.Factory mainActivityComponent();
@ -42,5 +45,6 @@ public interface MainApplicationComponent {
SpedizioneComponent.Factory spedizioneComponent(); SpedizioneComponent.Factory spedizioneComponent();
AccettazionePickingComponent.Factory accettazionePickingComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent();
PickingResiComponent.Factory pickingResiComponent(); PickingResiComponent.Factory pickingResiComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
} }

View File

@ -1,23 +1,6 @@
package it.integry.integrywmsnative.core.di; package it.integry.integrywmsnative.core.di;
import androidx.annotation.ColorRes;
import androidx.annotation.IdRes;
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.databinding.BindingAdapter;
import androidx.databinding.BindingConversion;
import androidx.constraintlayout.widget.Guideline;
import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textfield.TextInputLayout;
import androidx.core.util.Pair;
import androidx.appcompat.widget.AppCompatCheckBox;
import androidx.appcompat.widget.AppCompatTextView;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.content.Context;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@ -25,10 +8,25 @@ import android.widget.AutoCompleteTextView;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import androidx.annotation.ColorRes;
import androidx.appcompat.widget.AppCompatCheckBox;
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.constraintlayout.widget.Guideline;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.util.Pair;
import androidx.databinding.BindingAdapter;
import androidx.databinding.BindingConversion;
import androidx.databinding.Observable;
import androidx.databinding.ObservableField;
import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textfield.TextInputLayout;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
@ -37,15 +35,10 @@ import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.Locale; import java.util.Locale;
import androidx.databinding.Observable;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@ -386,7 +379,7 @@ public class Converters {
} }
@BindingAdapter({"app:visibility"}) @BindingAdapter({"visibility"})
public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) { public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) { if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean); view.setTag(R.id.bound_observable, bindableBoolean);

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model;
public class Ean13PesoModel { public class Ean13PesoModel {
private String precode; private String precode;
//TODO: Change to bigdecimal
private Float peso; private Float peso;
public String getPrecode() { public String getPrecode() {

View File

@ -412,7 +412,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
.anyMatch(x -> !x.isHidden()); .anyMatch(x -> !x.isHidden());
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
this.openProgress(); this.openProgress();

View File

@ -2,18 +2,18 @@ package it.integry.integrywmsnative.gest.lista_bancali;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import androidx.databinding.DataBindingUtil;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import androidx.databinding.DataBindingUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding; import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel; import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
@ -25,6 +25,7 @@ public class ListaBancaliActivity extends BaseActivity {
private static final String CanRecoverUL = "canRecoverUL"; private static final String CanRecoverUL = "canRecoverUL";
private static final String PrinterType = "printerType"; private static final String PrinterType = "printerType";
private static final String ReportName = "reportName"; private static final String ReportName = "reportName";
private static final String FlagOnlyResiduo = "flagOnlyResiduo";
} }
public ActivityListaBancaliBinding bindings; public ActivityListaBancaliBinding bindings;
@ -34,6 +35,7 @@ public class ListaBancaliActivity extends BaseActivity {
private boolean mCanRecoverUl; private boolean mCanRecoverUl;
private PrinterRESTConsumer.Type mPrinterType; private PrinterRESTConsumer.Type mPrinterType;
private String mReportName; private String mReportName;
private boolean mFlagOnlyResiduo;
private static final int PICK_UL_REQUEST = 1; // The request code private static final int PICK_UL_REQUEST = 1; // The request code
@ -54,10 +56,13 @@ public class ListaBancaliActivity extends BaseActivity {
String reportNameKey = DataCache.addItem(reportName); String reportNameKey = DataCache.addItem(reportName);
myIntent.putExtra(Key.ReportName, reportNameKey); myIntent.putExtra(Key.ReportName, reportNameKey);
String flagOnlyResiduoKey = DataCache.addItem(true);
myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey);
return myIntent; return myIntent;
} }
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) { public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
Intent myIntent = new Intent(context, ListaBancaliActivity.class); Intent myIntent = new Intent(context, ListaBancaliActivity.class);
String mtbColtsKey = DataCache.addItem(items); String mtbColtsKey = DataCache.addItem(items);
@ -69,6 +74,9 @@ public class ListaBancaliActivity extends BaseActivity {
String printerTypeKey = DataCache.addItem(printerType); String printerTypeKey = DataCache.addItem(printerType);
myIntent.putExtra(Key.PrinterType, printerTypeKey); myIntent.putExtra(Key.PrinterType, printerTypeKey);
String flagOnlyResiduoKey = DataCache.addItem(onlyResiduo);
myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey);
return myIntent; return myIntent;
} }
@ -81,9 +89,10 @@ public class ListaBancaliActivity extends BaseActivity {
mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo));
List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey)); List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey));
mViewModel = new ListaBancaliViewModel(this, mtbColts); mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo);
setSupportActionBar(this.bindings.toolbar); setSupportActionBar(this.bindings.toolbar);

View File

@ -26,11 +26,15 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
private MainListListaColliAdapter mAdapter; private MainListListaColliAdapter mAdapter;
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts){ private boolean mLoadOnlyResiduo;
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts, boolean loadOnlyResiduo){
mContext = context; mContext = context;
mMtbColts = new ObservableArrayList<>(); mMtbColts = new ObservableArrayList<>();
mMtbColts.addAll(mtbColts); mMtbColts.addAll(mtbColts);
this.mLoadOnlyResiduo = loadOnlyResiduo;
initRecyclerView(); initRecyclerView();
} }
@ -56,7 +60,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
try { try {
ColliMagazzinoRESTConsumer.getByTestataStatic(item, true, false, mtbColt -> { ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> {
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>(); ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());

View File

@ -191,7 +191,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
mAdapter = null; mAdapter = null;
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
this.openProgress(); this.openProgress();

View File

@ -98,7 +98,7 @@ public class ProdRecuperoMaterialeViewModel {
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);

View File

@ -75,7 +75,7 @@ public class DialogScanLisA {
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);

View File

@ -545,7 +545,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
this.openProgress(); this.openProgress();
@ -601,7 +601,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts(); ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts();
Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA); Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA, false);
this.startActivityForResult(myIntent, PICK_UL_REQUEST); this.startActivityForResult(myIntent, PICK_UL_REQUEST);
} }

View File

@ -298,7 +298,8 @@ public class SpedizioneViewModel {
} }
private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) { private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) {
if (this.mListener != null) mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); if (this.mListener != null)
mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete);
} }
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) { private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
@ -606,7 +607,7 @@ public class SpedizioneViewModel {
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) && .filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) && UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag())))) (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag()))))
.forEach(cloneMtbColrs::remove); .forEach(cloneMtbColrs::remove);
cloneMtbColt.setMtbColr(cloneMtbColrs); cloneMtbColt.setMtbColr(cloneMtbColrs);
@ -708,13 +709,14 @@ public class SpedizioneViewModel {
if (mtbColrToDispatch != null) { if (mtbColrToDispatch != null) {
if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) { if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere) || UtilityBigDecimal.equalsTo(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) {
numCnfDaPrelevare = mtbColrToDispatch.getNumCnf(); numCnfDaPrelevare = mtbColrToDispatch.getNumCnf();
qtaColDaPrelevare = mtbColrToDispatch.getQtaCol(); qtaColDaPrelevare = mtbColrToDispatch.getQtaCol();
} else { } else {
numCnfDaPrelevare = numCnfDaEvadere; numCnfDaPrelevare = numCnfDaEvadere;
qtaColDaPrelevare = qtaDaEvadere; qtaColDaPrelevare = qtaDaEvadere;
} }
qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf(); qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf();
@ -762,7 +764,8 @@ public class SpedizioneViewModel {
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
if (!mtbAart.isFlagQtaCnfFissaBoolean()) { if (!mtbAart.isFlagQtaCnfFissaBoolean()) {
if(UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO)) numCnfDaPrelevare = BigDecimal.ONE; if (UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO))
numCnfDaPrelevare = BigDecimal.ONE;
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
} }
} else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) { } else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) {
@ -954,12 +957,14 @@ public class SpedizioneViewModel {
if (mtbColrRifs != null && mtbColrRifs.size() > 0) { if (mtbColrRifs != null && mtbColrRifs.size() > 0) {
//TODO: Da capire se è necessario controllare anche il cod_jcom //TODO: Da capire se è necessario controllare anche il cod_jcom
mtbColrRif = Stream.of(mtbColrRifs) Optional<MtbColr> optionalMtbColr = Stream.of(mtbColrRifs)
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) && .filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) && UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag())) UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag()))
.single(); .findSingle();
mtbColrRif = optionalMtbColr.isPresent() ? optionalMtbColr.get() : null;
} }
@ -969,6 +974,9 @@ public class SpedizioneViewModel {
totalNumCnfAvailable = mtbColrRif.getNumCnf(); totalNumCnfAvailable = mtbColrRif.getNumCnf();
qtaCnfAvailable = mtbColrRif.getQtaCnf(); qtaCnfAvailable = mtbColrRif.getQtaCnf();
totalNumCnfAvailable = totalNumCnfAvailable.add(mtbColrToEdit.getNumCnf());
totalQtaAvailable = totalQtaAvailable.add(mtbColrToEdit.getQtaCol());
} else { } else {
totalQtaAvailable = mtbColrToEdit.getQtaCol(); totalQtaAvailable = mtbColrToEdit.getQtaCol();
@ -977,9 +985,6 @@ public class SpedizioneViewModel {
} }
totalNumCnfAvailable = totalNumCnfAvailable.add(mtbColrToEdit.getNumCnf());
totalQtaAvailable = totalQtaAvailable.add(mtbColrToEdit.getQtaCol());
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO)) if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
numCnfDaPrelevare = BigDecimal.ZERO; numCnfDaPrelevare = BigDecimal.ZERO;
@ -1401,7 +1406,9 @@ public class SpedizioneViewModel {
} }
private void postCloseOperations(List<MtbColt> mtbColtList) { private void postCloseOperations(List<MtbColt> mtbColtList) {
this.mColliRegistrati.addAll(mtbColtList); Stream.of(mtbColtList)
.filter(x -> !this.mColliRegistrati.contains(x))
.forEach(x -> this.mColliRegistrati.add(x));
for (MtbColt mtbColt : mtbColtList) { for (MtbColt mtbColt : mtbColtList) {
Stream.of(mTestateOrdini) Stream.of(mTestateOrdini)

View File

@ -101,6 +101,10 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size())); mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size()));
} }
public void collapseMtbColrActionSheet(){
this.mBinding.bottomSheetMtbColrEdit.collapse();
}
public BottomSheetFragmentLUContentView setListener(Listener listener) { public BottomSheetFragmentLUContentView setListener(Listener listener) {
this.mListener = listener; this.mListener = listener;
return this; return this;

View File

@ -146,7 +146,7 @@ public class DialogAskPositionOfLU {
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable(); BarcodeManager.disable();

View File

@ -138,7 +138,7 @@ public class DialogChooseArtsFromListaArts {
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);

View File

@ -409,7 +409,7 @@ public class DialogInputQuantity {
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
if(UtilityBarcode.isEanPeso(data)){ if(UtilityBarcode.isEanPeso(data)){

View File

@ -1,5 +1,6 @@
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
@ -27,16 +28,26 @@ import org.jetbrains.annotations.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbUntMis; 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.UtilityObservable;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener { public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener {
private DialogInputQuantityV2ViewModel mViewModel; @Inject
DialogInputQuantityV2ViewModel mViewModel;
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete; private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
private Runnable mOnAbort; private Runnable mOnAbort;
@ -60,6 +71,9 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
private DialogInputQuantityV2Binding mBindings; private DialogInputQuantityV2Binding mBindings;
private boolean mEnableDataCallback = true; 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) { public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort); return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort);
} }
@ -74,6 +88,8 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
this.initBarcode();
} }
@Nullable @Nullable
@ -85,7 +101,12 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
mBindings.toolbar.setTitle("Inserimento articolo"); mBindings.toolbar.setTitle("Inserimento articolo");
this.mViewModel = new DialogInputQuantityV2ViewModel() MainApplication.appComponent
.dialogInputQuantityV2Component()
.create()
.inject(this);
this.mViewModel
.setMtbAart(mDialogInputQuantityV2DTO.getMtbAart()) .setMtbAart(mDialogInputQuantityV2DTO.getMtbAart())
.setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf()) .setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf())
.setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf()) .setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf())
@ -114,6 +135,35 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
return mBindings.getRoot(); return mBindings.getRoot();
} }
private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false)));
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable();
this.openProgress();
this.mViewModel.processBarcodeDTO(data, () -> {
BarcodeManager.enable();
this.closeProgress();
});
};
private void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
}
private void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
}
public void save() { public void save() {
if (this.mViewModel.validate()) { if (this.mViewModel.validate()) {

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import dagger.Subcomponent;
@Subcomponent
public interface DialogInputQuantityV2Component {
@Subcomponent.Factory
interface Factory {
DialogInputQuantityV2Component create();
}
void inject(DialogInputQuantityV2 dialogInputQuantityV2);
}

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@Module(subcomponents = DialogInputQuantityV2Component.class)
public class DialogInputQuantityV2Module {
@Provides
DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer);
}
}

View File

@ -5,8 +5,15 @@ import androidx.databinding.ObservableField;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException;
@ -55,6 +62,13 @@ public class DialogInputQuantityV2ViewModel {
private Listener mListener; private Listener mListener;
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
@Inject
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
}
public void init() { public void init() {
if(this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) { if(this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) {
this.internalNumCnf = this.initialNumCnf; this.internalNumCnf = this.initialNumCnf;
@ -87,6 +101,61 @@ public class DialogInputQuantityV2ViewModel {
this.mListener.onDataChanged(); this.mListener.onDataChanged();
} }
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
if(UtilityBarcode.isEanPeso(barcodeScanDTO)) {
Ean13PesoModel ean13PesoModel;
try {
ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
} catch (Exception ex) {
this.mListener.onError(ex);
onComplete.run();
return;
}
if(this.mtbAart.get() != null && this.mtbAart.get().getBarCode() != null && ean13PesoModel.getPrecode().contains(this.mtbAart.get().getBarCode())) {
this.setQtaTot(BigDecimal.valueOf(ean13PesoModel.getPeso()));
}
onComplete.run();
} else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
if(ean128Model == null) {
onComplete.run();
return;
}
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
this.setPartitaMag(ean128Model.BatchLot);
}
try {
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
this.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
this.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
}
} catch (Exception ex) {
this.mListener.onError(ex);
}
if(ean128Model.Count != null && ean128Model.Count > 0) {
this.setNumCnf(BigDecimal.valueOf(ean128Model.Count));
} else if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
this.setQtaTot(BigDecimal.valueOf(ean128Model.NetWeightKg));
}
this.mListener.onDataChanged();
onComplete.run();
}, ex -> {
this.mListener.onError(ex);
onComplete.run();
});
}
}
public String getPartitaMag() { public String getPartitaMag() {
return internalPartitaMag; return internalPartitaMag;
} }

View File

@ -82,7 +82,7 @@ public class DialogScanArt {
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);

View File

@ -126,7 +126,7 @@ public class DialogScanOrCreateLU {
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);

View File

@ -390,7 +390,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#99000000" android:background="#99000000"
android:visibility="gone" /> android:visibility="gone"
singleClick="@{() -> view.collapseMtbColrActionSheet()}"/>
<it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView <it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView
android:id="@+id/bottom_sheet__mtb_colr_edit" android:id="@+id/bottom_sheet__mtb_colr_edit"

View File

@ -1,13 +1,22 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate.COMMONS_DATE_FORMATS" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" /> <import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="it.integry.integrywmsnative.core.settings.SettingsManager" /> <import type="it.integry.integrywmsnative.core.settings.SettingsManager" />
<variable <variable
name="mtbColr" name="mtbColr"
type="it.integry.integrywmsnative.core.model.MtbColr" /> type="it.integry.integrywmsnative.core.model.MtbColr" />
@ -18,16 +27,23 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp"> android:padding="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/art_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout <LinearLayout
android:id="@+id/linearLayout" android:id="@+id/linearLayout"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/qta_box" app:layout_constraintEnd_toStartOf="@+id/qta_box"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"> app:layout_constraintTop_toTopOf="parent">
<RelativeLayout <RelativeLayout
@ -35,70 +51,70 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{mtbColr.codMart}" android:text="@{mtbColr.codMart}"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Small"
tools:text="COD MART" /> tools:text="COD MART" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol) + mtbColr.mtbAart.untMis}"
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null &amp;&amp; !mtbColr.mtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}"
android:textSize="14sp"
android:textStyle="bold"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:background="@drawable/badge2_round_corner"
android:paddingStart="6dp" android:paddingStart="6dp"
android:paddingEnd="6dp" android:paddingEnd="6dp"
android:background="@drawable/badge2_round_corner" android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol) + mtbColr.mtbAart.untMis}"
android:textColor="@android:color/white" android:textColor="@android:color/white"
style="@style/AppTheme.NewMaterial.Text.Small" android:textSize="14sp"
android:textStyle="bold"
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null &amp;&amp; !mtbColr.mtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}"
tools:text="PESO KG" /> tools:text="PESO KG" />
</RelativeLayout> </RelativeLayout>
<TextView <TextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:paddingStart="0dp"
android:paddingEnd="8dp"
android:text="@{mtbColr.getDescrizione()}" android:text="@{mtbColr.getDescrizione()}"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="16sp" android:textSize="16sp"
android:paddingStart="0dp"
android:paddingEnd="8dp"
style="@style/AppTheme.NewMaterial.Text.Small"
tools:text="Descrizione lunga articolo" /> tools:text="Descrizione lunga articolo" />
<TextView <TextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}" android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}"
android:textSize="14sp" android:textSize="14sp"
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}" android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}"
style="@style/AppTheme.NewMaterial.Text.Small"
tools:text="Lotto: ABCDE" /> tools:text="Lotto: ABCDE" />
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/qta_box" android:id="@+id/qta_box"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="12dp" android:paddingStart="12dp"
android:paddingEnd="12dp" android:paddingEnd="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent">
app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/qta_textview" android:id="@+id/qta_textview"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner" android:background="@drawable/badge1_round_corner"
@ -107,13 +123,195 @@
android:paddingTop="2dp" android:paddingTop="2dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingBottom="2dp" android:paddingBottom="2dp"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:textAllCaps="true" android:textAllCaps="true"
style="@style/AppTheme.NewMaterial.Text.Small" android:textColor="@android:color/white"
android:textSize="16sp"
android:textStyle="bold"
tools:text="280.45\nCONF" /> tools:text="280.45\nCONF" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:visibility="@{mtbColr.numColloRif != null ? View.VISIBLE : View.GONE}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/art_detail">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/badge1_round_corner"
android:backgroundTint="@color/green_600"
android:orientation="horizontal"
android:padding="2dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner"
android:backgroundTint="@android:color/white"
android:orientation="horizontal"
android:padding="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="2dp"
android:paddingEnd="4dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_horizontal"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:src="@drawable/ic_box"
android:tint="@color/green_600" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/refs_title"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prelevato da"
android:textColor="@color/green_600"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="@color/green_600" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="2">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Num: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.numColloRif.toString()}"
android:textColor="@android:color/black"
android:textStyle="bold"
tools:text="5230" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gest: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.gestioneRif}"
android:textColor="@android:color/black"
android:textStyle="bold"
tools:text="V" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityDate.formatDate(mtbColr.dataColloRifD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textColor="@android:color/black"
android:textStyle="bold"
tools:text="02 mar 2020" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Serie: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.serColloRif}"
android:textColor="@android:color/black"
android:textStyle="bold"
tools:text="UL" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout> </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,23 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools" <layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate.COMMONS_DATE_FORMATS" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" /> <import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="it.integry.integrywmsnative.core.settings.SettingsManager" /> <import type="it.integry.integrywmsnative.core.settings.SettingsManager" />
<variable <variable
name="mtbColr" name="mtbColr"
type="it.integry.integrywmsnative.core.model.MtbColr" /> type="it.integry.integrywmsnative.core.model.MtbColr" />
</data> </data>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp"> android:padding="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/art_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout <LinearLayout
android:id="@+id/linearLayout" android:id="@+id/linearLayout"
@ -27,6 +42,7 @@
app:layout_constraintEnd_toStartOf="@+id/qta_box" app:layout_constraintEnd_toStartOf="@+id/qta_box"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<RelativeLayout <RelativeLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -34,50 +50,50 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/cod_mart" android:id="@+id/cod_mart"
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{mtbColr.codMart}" android:text="@{mtbColr.codMart}"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text"
tools:text="COD MART" /> tools:text="COD MART" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/diacod" android:id="@+id/diacod"
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_toEndOf="@id/cod_mart"
android:text="@{`(` + mtbColr.mtbAart.diacod + `)`}" android:text="@{`(` + mtbColr.mtbAart.diacod + `)`}"
android:textColor="@color/red_600" android:textColor="@color/red_600"
android:textSize="13sp" android:textSize="13sp"
android:textStyle="bold" android:textStyle="bold"
android:layout_marginStart="8dp"
android:layout_toEndOf="@id/cod_mart"
android:visibility="@{(mtbColr.mtbAart != null &amp;&amp; !UtilityString.isNullOrEmpty(mtbColr.mtbAart.diacod)) ? View.VISIBLE : View.GONE}" android:visibility="@{(mtbColr.mtbAart != null &amp;&amp; !UtilityString.isNullOrEmpty(mtbColr.mtbAart.diacod)) ? View.VISIBLE : View.GONE}"
style="@style/AppTheme.NewMaterial.Text"
tools:text="(12345)" /> tools:text="(12345)" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol) + mtbColr.mtbAart.untMis}"
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null &amp;&amp; !mtbColr.mtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}"
android:textSize="14sp"
android:textStyle="bold"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:background="@drawable/badge2_round_corner"
android:paddingStart="6dp" android:paddingStart="6dp"
android:paddingEnd="6dp" android:paddingEnd="6dp"
android:background="@drawable/badge2_round_corner" android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol) + mtbColr.mtbAart.untMis}"
android:textColor="@android:color/white" android:textColor="@android:color/white"
style="@style/AppTheme.NewMaterial.Text.Small" android:textSize="14sp"
android:textStyle="bold"
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null &amp;&amp; !mtbColr.mtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}"
tools:text="PESO KG" /> tools:text="PESO KG" />
</RelativeLayout> </RelativeLayout>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
@ -85,17 +101,16 @@
android:text="@{mtbColr.getDescrizione()}" android:text="@{mtbColr.getDescrizione()}"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="16sp" android:textSize="16sp"
tools:text="Descrizione lunga articolo" tools:text="Descrizione lunga articolo" />
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}" android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}"
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}" android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}"
tools:text="Lotto: ABCDE" tools:text="Lotto: ABCDE" />
style="@style/AppTheme.NewMaterial.Text.Small" />
</LinearLayout> </LinearLayout>
@ -106,12 +121,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="12dp" android:paddingStart="12dp"
android:paddingEnd="12dp" android:paddingEnd="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent">
app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/qta_textview" android:id="@+id/qta_textview"
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner" android:background="@drawable/badge1_round_corner"
@ -120,16 +136,198 @@
android:paddingTop="2dp" android:paddingTop="2dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingBottom="2dp" android:paddingBottom="2dp"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:textAllCaps="true" android:textAllCaps="true"
style="@style/AppTheme.NewMaterial.Text" android:textColor="@android:color/white"
android:textSize="16sp"
android:textStyle="bold"
tools:text="280.45\nCONF" /> tools:text="280.45\nCONF" />
</RelativeLayout> </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:visibility="@{mtbColr.numColloRif != null ? View.VISIBLE : View.GONE}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/art_detail">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/badge1_round_corner"
android:backgroundTint="@color/green_600"
android:orientation="horizontal"
android:padding="2dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner"
android:backgroundTint="@android:color/white"
android:orientation="horizontal"
android:padding="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="2dp"
android:paddingEnd="4dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_horizontal"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:src="@drawable/ic_box"
android:tint="@color/green_600" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/refs_title"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prelevato da"
android:textColor="@color/green_600"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="@color/green_600"/>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="2">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Num: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.numColloRif.toString()}"
tools:text="5230"
android:textColor="@android:color/black"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="2dp">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gest: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.gestioneRif}"
tools:text="V"
android:textColor="@android:color/black"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityDate.formatDate(mtbColr.dataColloRifD, &quot;dd MMM yy&quot;)}"
tools:text="02 mar 2020"
android:textColor="@android:color/black"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="2dp">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Serie: "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.serColloRif}"
tools:text="UL"
android:textColor="@android:color/black"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>