Implementata lettura EAN128 in Rettifica Giacenze

This commit is contained in:
Giuseppe Scorrano 2019-03-20 09:47:06 +01:00
parent a88d59f1d7
commit b95dab2bcc
13 changed files with 134 additions and 37 deletions

Binary file not shown.

View File

@ -95,20 +95,20 @@ dependencies {
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.google.firebase:firebase-perf:16.2.3'
implementation 'com.google.firebase:firebase-perf:16.2.4'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha03'
implementation 'com.google.android.material:material:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha02'
implementation 'androidx.preference:preference:1.1.0-alpha03'
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha03'
implementation 'androidx.preference:preference:1.1.0-alpha04'
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.0'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.annimon:stream:1.2.1'
implementation 'androidx.lifecycle:lifecycle-runtime:2.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'

View File

@ -51,7 +51,7 @@ public class ContenutoBancaleActivity extends AppCompatActivity {
mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType);
bindings.waterfallToolbar.setNestedScrollView(bindings.scrollView);
bindings.elevatedToolbar.setNestedScrollView(bindings.scrollView);
setSupportActionBar(this.bindings.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

View File

@ -46,7 +46,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
mAdapter = new MainListListaColliAdapter(mContext, mMtbColts, this, mContext.bindings.listaBancaliEmptyView);
mContext.bindings.listaColliMainList.setAdapter(mAdapter);
mContext.bindings.waterfallToolbar.setRecyclerView(mContext.bindings.listaColliMainList);
mContext.bindings.elevatedToolbar.setRecyclerView(mContext.bindings.listaColliMainList);
}

View File

@ -77,7 +77,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment {
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
mBindings.waterfallToolbar.setNestedScrollView(mBindings.scrollView);
mBindings.elevatedToolbar.setNestedScrollView(mBindings.scrollView);
return mBindings.getRoot();
}

View File

@ -24,13 +24,14 @@ import java.util.Date;
import java.util.List;
import java.util.Objects;
import it.integry.integrywmsnative.MainActivity;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.REST.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.REST.model.Ean128Model;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@ -43,6 +44,8 @@ import it.integry.integrywmsnative.core.model.MtbCols;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
@ -53,7 +56,6 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenz
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.ui.StatusBarAlert;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
@ -160,15 +162,78 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
BarcodeManager.disable();
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
if(data.getType() == BarcodeType.EAN8 || data.getType() == BarcodeType.EAN13 || data.getType() == BarcodeType.UPCA){
searchArtInt(data.getStringValue());
searchArtInt(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)) {
this.executeEtichettaEan128(data, progressDialog);
} else {
BarcodeManager.enable();
progressDialog.dismiss();
}
};
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null;
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if(!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if(!UtilityString.isNullOrEmpty(ean128Model.Content)) barcodeProd = ean128Model.Content;
if(!UtilityString.isNullOrEmpty(barcodeProd)) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1, barcodeProd.length());
}
this.loadBarcodeArticolo(barcodeProd, ean128Model, progressDialog);
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
progressDialog.dismiss();
BarcodeManager.enable();
}
}, ex-> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private void loadBarcodeArticolo(String barcodeProd, Ean128Model ean128Model, ProgressDialog progressDialog) {
if(barcodeProd.length() == 14) {
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
ArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if(mtbAartList != null && mtbAartList.size() > 0) {
this.dispatchArt(mtbAartList.get(0), ean128Model);
BarcodeManager.enable();
progressDialog.dismiss();
} else {
BarcodeManager.enable();
progressDialog.dismiss();
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_result_from_barcode)),
null, null)
.show();
}
}, ex -> {
BarcodeManager.enable();
UtilityExceptions.defaultException(mContext, ex, progressDialog);
});
}
public void setupSearchFornitori(ArrayList<FornitoreDTO> listaFornitori) {
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori);
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);
@ -205,7 +270,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
return true;
}
searchArtInt(mBinding.inputCodArtDescrInt.getText().toString());
searchArtInt(mBinding.inputCodArtDescrInt.getText().toString(), UtilityProgress.createDefaultProgressDialog(mContext));
return true;
}
return false;
@ -248,8 +313,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog));
}
private void searchArtInt(String queryText) {
final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
private void searchArtInt(String queryText, ProgressDialog progressDialog) {
//progressDialog.show();
mHelper.searchArtInt(queryText, listaArts -> {
@ -269,9 +333,9 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
if(articoloFornitoreDTOS.size() == 0) {
showNoArtsFound();
} else if(articoloFornitoreDTOS.size() == 1) {
dispatchArt(articoloFornitoreDTOS.get(0));
dispatchArt(articoloFornitoreDTOS.get(0), null);
} else {
DialogChooseArtFromListaArts.make(mContext, articoloFornitoreDTOS, this::dispatchArt).show();
DialogChooseArtFromListaArts.make(mContext, articoloFornitoreDTOS, mtbAart -> this.dispatchArt(mtbAart, null)).show();
}
} else {
showNoArtsFound();
@ -285,7 +349,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
}
private void dispatchArt(MtbAart mtbAart){
private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model){
DialogInputQuantity.DTO qtaDto = new DialogInputQuantity.DTO();
qtaDto.setMtbAart(mtbAart);
@ -301,6 +365,41 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
qtaDto.setCanDataScadBeChanged(true);
if(ean128Model != null){
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
qtaDto.setBatchLot(ean128Model.BatchLot);
qtaDto.setCanPartitaMagBeChanged(false);
}
try {
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
qtaDto.setCanDataScadBeChanged(false);
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
qtaDto.setCanDataScadBeChanged(false);
}
} catch (Exception e) {
UtilityLogger.errorMe(e);
}
if(ean128Model.Count != null && ean128Model.Count > 0) {
qtaDto.setNumCnf(ean128Model.Count);
}
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
qtaDto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
} else {
qtaDto.setQtaTot(qtaDto.getQtaCnf().multiply(new BigDecimal(qtaDto.getNumCnf())));
}
qtaDto.setShouldAskDataScad(true);
}
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
onPostDispatch(mtbAart, quantityDTO);
}, null).show();

View File

@ -116,7 +116,7 @@ public class ElevatedToolbar extends CardView {
}
public void removeScrollViewScrollListener(){
if(mRecyclerView != null) {
if(mScrollView != null) {
mScrollView.getViewTreeObserver().removeOnScrollChangedListener(scrollViewScrollListener);
} else {
Log.e("ElevatedToolbar", "REMOVE: ScrollView is NULL");

View File

@ -25,8 +25,8 @@
android:orientation="vertical"
android:background="@color/full_white">
<it.integry.plugins.waterfalltoolbar.WaterfallToolbar
android:id="@+id/waterfall_toolbar"
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -37,7 +37,7 @@
tools:title="Contenuto bancale"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
</it.integry.integrywmsnative.ui.ElevatedToolbar>>
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"

View File

@ -12,8 +12,8 @@
android:orientation="vertical"
android:background="@color/full_white">
<it.integry.plugins.waterfalltoolbar.WaterfallToolbar
android:id="@+id/waterfall_toolbar"
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -22,7 +22,7 @@
android:layout_width="match_parent"
android:layout_height="?actionBarSize"/>
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
</it.integry.integrywmsnative.ui.ElevatedToolbar>
<RelativeLayout
android:layout_width="match_parent"

View File

@ -19,8 +19,8 @@
android:layout_height="match_parent"
android:orientation="vertical">
<it.integry.plugins.waterfalltoolbar.WaterfallToolbar
android:id="@+id/waterfall_toolbar"
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -41,7 +41,7 @@
</androidx.appcompat.widget.Toolbar>
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
</it.integry.integrywmsnative.ui.ElevatedToolbar>
<fragment
android:id="@+id/top_fragment"

View File

@ -26,8 +26,8 @@
android:orientation="vertical"
android:background="@color/full_white">
<it.integry.plugins.waterfalltoolbar.WaterfallToolbar
android:id="@+id/waterfall_toolbar"
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -48,7 +48,7 @@
</androidx.appcompat.widget.Toolbar>
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
</it.integry.integrywmsnative.ui.ElevatedToolbar>

View File

@ -18,8 +18,6 @@ public class OrdiniVendita implements IOrdiniVendita {
@Override
public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List<OrdineVenditaGroupedInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
String codMdepOrder = testateOrdini.get(0).ordini.get(0).getCodMdep();
//Se il deposito del collo è diverso dal deposito dell'utente allora sto "evadendo" la merce per una vendita presente

View File

@ -26,7 +26,7 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'