Finish v1.36.08(401)

This commit is contained in:
Marco Elefante 2023-12-04 17:01:28 +01:00
commit 946d3e6593
42 changed files with 1073 additions and 491 deletions

10
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="app">
<State />
</entry>
</value>
</component>
</project>

View File

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App"> <configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS_Native.app.main" /> <module name="WMS.app.main" />
<option name="DEPLOY" value="true" /> <option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" /> <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" /> <option name="DEPLOY_AS_INSTANT" value="false" />

View File

@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 400 def appVersionCode = 401
def appVersionName = '1.36.07' def appVersionName = '1.36.08'
signingConfigs { signingConfigs {
release { release {
@ -34,7 +34,7 @@ android {
defaultConfig { defaultConfig {
applicationId "it.integry.integrywmsnative" applicationId "it.integry.integrywmsnative"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 33 targetSdkVersion 34
versionCode appVersionCode versionCode appVersionCode
versionName appVersionName versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -88,11 +88,11 @@ android {
abortOnError false abortOnError false
} }
namespace 'it.integry.integrywmsnative' namespace 'it.integry.integrywmsnative'
compileSdk 33 compileSdk 34
} }
dependencies { dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'
@ -113,10 +113,10 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.9.0' implementation 'com.google.android.material:material:1.10.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.3.1' implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation('androidx.preference:preference-ktx:1.2.1') { implementation('androidx.preference:preference-ktx:1.2.1') {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel' exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'

View File

@ -104,6 +104,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent; import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
@ -114,7 +116,8 @@ import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.Di
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListModule;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUComponent;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUModule;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUComponent; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUComponent;
@ -195,7 +198,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogBindProductBarcodeWithPackageModule.class, DialogBindProductBarcodeWithPackageModule.class,
DialogAskUnknownBarcodeNotesModule.class, DialogAskUnknownBarcodeNotesModule.class,
ProdVersamentoMaterialeInBufferModule.class, ProdVersamentoMaterialeInBufferModule.class,
DialogInputQuantityToReturnModule.class DialogInputQuantityToReturnModule.class,
DialogInfoAggiuntiveLUModule.class,
DialogAskLineaProdModule.class
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
@ -281,8 +286,6 @@ public interface MainApplicationComponent {
DocInterniEditFormComponent.Factory docInterniEditFormComponent(); DocInterniEditFormComponent.Factory docInterniEditFormComponent();
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
DialogEditArticoloComponent.Factory dialogEditArticoloComponent(); DialogEditArticoloComponent.Factory dialogEditArticoloComponent();
DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent(); DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent();
@ -329,6 +332,10 @@ public interface MainApplicationComponent {
DialogInputQuantityToReturnComponent.Factory dialogInputQuantityToReturnComponent(); DialogInputQuantityToReturnComponent.Factory dialogInputQuantityToReturnComponent();
DialogInfoAggiuntiveLUComponent.Factory dialogInfoAggiuntiveLUComponent();
DialogAskLineaProdComponent.Factory dialogAskLineaProdComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoFragment; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoFragment;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoFragment; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoFragment;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment; import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
@ -85,7 +86,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_picking) .setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero) .setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner) .setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(R.id.nav_resi_cliente) .setID(R.id.nav_resi_cliente)
@ -121,7 +122,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_lav_picking) .setTitleText(R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner) .setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(R.id.nav_prod_posizionamento_da_ord) .setID(R.id.nav_prod_posizionamento_da_ord)

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class InvalidLineaProdBarcodeException extends Exception {
public InvalidLineaProdBarcodeException() {
super(UtilityResources.getString(R.string.no_result_from_linea_prod_barcode));
}
public InvalidLineaProdBarcodeException(String barcode) {
super(UtilityResources.getString(R.string.no_result_from_linea_prod_barcode) + " (" + barcode + ")");
}
}

View File

@ -10,7 +10,11 @@ public class CreateUDSRequestDTO {
private Integer numCollo; private Integer numCollo;
private String serCollo; private String serCollo;
private int causaleCollo; private int causaleCollo;
private String codJfas;
private String codAnag;
private String codVdes;
private String rifOrd;
private boolean orderRequired;
private List<CreateUDSRequestOrderDTO> orders; private List<CreateUDSRequestOrderDTO> orders;
public String getCodMdep() { public String getCodMdep() {
@ -67,6 +71,51 @@ public class CreateUDSRequestDTO {
return this; return this;
} }
public String getCodJfas() {
return codJfas;
}
public CreateUDSRequestDTO setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getCodAnag() {
return codAnag;
}
public CreateUDSRequestDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodVdes() {
return codVdes;
}
public CreateUDSRequestDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public String getRifOrd() {
return rifOrd;
}
public CreateUDSRequestDTO setRifOrd(String rifOrd) {
this.rifOrd = rifOrd;
return this;
}
public boolean isOrderRequired() {
return orderRequired;
}
public CreateUDSRequestDTO setOrderRequired(boolean orderRequired) {
this.orderRequired = orderRequired;
return this;
}
public List<CreateUDSRequestOrderDTO> getOrders() { public List<CreateUDSRequestOrderDTO> getOrders() {
return orders; return orders;
} }

View File

@ -37,6 +37,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
@ -50,7 +51,6 @@ import it.integry.integrywmsnative.databinding.ActivityAccettazioneBollaPickingB
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBollaAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBollaAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.AccettazioneBollaPickingOrderBy; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.AccettazioneBollaPickingOrderBy;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListAdapter; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListAdapter;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListModel; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListModel;
@ -63,7 +63,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesView; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageView; import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; 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.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView; import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView;
@ -447,9 +447,8 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
@Override @Override
public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) { public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
runOnUiThread(() -> { DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); .show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
});
} }
@Override @Override

View File

@ -5,10 +5,12 @@ import android.content.SharedPreferences;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.text.SpannableString; import android.text.SpannableString;
import android.view.Gravity;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
@ -42,6 +44,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
@ -53,7 +56,6 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding; import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.AccettazioneOrdineInevasoOrderBy; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.AccettazioneOrdineInevasoOrderBy;
@ -73,7 +75,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.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView; import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; 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.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView; import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView;
@ -111,6 +113,8 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
private boolean mShowSecondaryUntMis = true; private boolean mShowSecondaryUntMis = true;
private PopupMenu fabPopupMenu;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -121,7 +125,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_accettazione_ordine_inevaso); mBindings = DataBindingUtil.setContentView(this, R.layout.activity_accettazione_ordine_inevaso);
mBindings.setLifecycleOwner(this); mBindings.setLifecycleOwner(this);
mBindings.setAccettazioneView(this); mBindings.setView(this);
MainApplication.appComponent MainApplication.appComponent
.accettazionePickingComponent() .accettazionePickingComponent()
@ -142,6 +146,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
this.initBarcodeReader(); this.initBarcodeReader();
this.initRecyclerView(); this.initRecyclerView();
this.initFilters(); this.initFilters();
this.initFab();
boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd(); boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
@ -152,6 +157,51 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
useQtaOrd); useQtaOrd);
} }
private void initFab() {
fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab,
(Gravity.END | Gravity.BOTTOM),
androidx.appcompat.R.attr.popupMenuStyle,
com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.show_created_ul) {
showCreatedUL();
} else if (itemId == R.id.create_ul) {
createNewLU();
}
return false;
});
// if (fabPopupMenu.getMenu() instanceof MenuBuilder) {
// var menuBuilder = (MenuBuilder) fabPopupMenu.getMenu();
// menuBuilder.setOptionalIconsVisible(true);
// for (var item : menuBuilder.getVisibleItems()) {
// var iconMarginPx =
// TypedValue.applyDimension(
// TypedValue.COMPLEX_UNIT_DIP, ICON_MARGIN.toFloat(), resources.displayMetrics)
// .toInt();
// if (item.icon != null) {
// if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
// item.icon = InsetDrawable(item.icon, iconMarginPx, 0, iconMarginPx,0)
// } else {
// item.icon =
// object : InsetDrawable(item.icon, iconMarginPx, 0, iconMarginPx, 0) {
// override fun getIntrinsicWidth(): Int {
// return intrinsicHeight + iconMarginPx + iconMarginPx
// }
// }
// }
// }
// }
// }
}
private void initFilters() { private void initFilters() {
var onPredicateChanged = new OnGeneralChangedCallback() { var onPredicateChanged = new OnGeneralChangedCallback() {
@ -678,8 +728,12 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
}; };
public void showFabMenu() {
fabPopupMenu.show();
}
public void createNewLU() { public void createNewLU() {
this.mBindings.accettazioneOrdineInevasoFab.close(true); this.fabPopupMenu.dismiss();
this.onLoadingStarted(); this.onLoadingStarted();
this.mViewModel.createNewLU(null, null, false, () -> { this.mViewModel.createNewLU(null, null, false, () -> {
@ -688,7 +742,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
} }
public void showCreatedUL() { public void showCreatedUL() {
this.mBindings.accettazioneOrdineInevasoFab.close(true); this.fabPopupMenu.dismiss();
this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity); this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity);
} }
@ -773,9 +827,12 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) { public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
runOnUiThread(() -> { // runOnUiThread(() -> {
DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); // DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
}); // });
DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
} }
@Override @Override

View File

@ -178,6 +178,6 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
@Override @Override
public void onDocumentEditRequest(SqlMtbColt document, List<DocumentoArtDTO> arts) { public void onDocumentEditRequest(SqlMtbColt document, List<DocumentoArtDTO> arts) {
requireActivity() requireActivity()
.startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc())); .startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc(), mDocInterniSetupDTO));
} }
} }

View File

@ -0,0 +1,25 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class CheckFornitoreDTO {
private String codDtip;
private Boolean flagCheckPartitaMag;
public String getCodDtip() {
return codDtip;
}
public CheckFornitoreDTO setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public Boolean getFlagCheckPartitaMag() {
return flagCheckPartitaMag;
}
public CheckFornitoreDTO setFlagCheckPartitaMag(Boolean flagCheckPartitaMag) {
this.flagCheckPartitaMag = flagCheckPartitaMag;
return this;
}
}

View File

@ -1,5 +1,7 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto; package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.List;
public class FornitoreDTO { public class FornitoreDTO {
@ -13,6 +15,8 @@ public class FornitoreDTO {
private String gestioneAnag; private String gestioneAnag;
private List<CheckFornitoreDTO> checkFornitoreDTO;
public String getCodAnag() { public String getCodAnag() {
return codAnag; return codAnag;
@ -57,4 +61,13 @@ public class FornitoreDTO {
public String getLabel() { public String getLabel() {
return this.codAnag + (this.codVdes != null ? " - "+ this.codVdes : "") +" ( " + this.descrizione+" )"; return this.codAnag + (this.codVdes != null ? " - "+ this.codVdes : "") +" ( " + this.descrizione+" )";
} }
public List<CheckFornitoreDTO> getCheckFornitoreDTO() {
return checkFornitoreDTO;
}
public FornitoreDTO setCheckFornitoreDTO(List<CheckFornitoreDTO> checkFornitoreDTO) {
this.checkFornitoreDTO = checkFornitoreDTO;
return this;
}
} }

View File

@ -6,6 +6,7 @@ public class TipoDocDTO {
private String descrizione; private String descrizione;
private String gestione; private String gestione;
private String gestioneDoc; private String gestioneDoc;
private boolean flagChkTracciabilita;
private boolean requireNote = false; private boolean requireNote = false;
public String getCodDtip() { public String getCodDtip() {
@ -52,4 +53,13 @@ public class TipoDocDTO {
this.requireNote = requireNote; this.requireNote = requireNote;
return this; return this;
} }
public boolean isFlagChkTracciabilita() {
return flagChkTracciabilita;
}
public TipoDocDTO setFlagChkTracciabilita(boolean flagChkTracciabilita) {
this.flagChkTracciabilita = flagChkTracciabilita;
return this;
}
} }

View File

@ -37,6 +37,7 @@ import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO; import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding; import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
@ -55,6 +56,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
private static final String DATA_KEY_DOCUMENT = "document"; private static final String DATA_KEY_DOCUMENT = "document";
private static final String DATA_KEY_PRODUCTS_LIST = "productsList"; private static final String DATA_KEY_PRODUCTS_LIST = "productsList";
private static final String DATA_KEY_TIPO_DOC = "docType"; private static final String DATA_KEY_TIPO_DOC = "docType";
private static final String DATA_KEY_DOC_INTERNI = "docInterniSetup";
@Inject @Inject
MtbColrDataSource documentRowsRepository; MtbColrDataSource documentRowsRepository;
@ -78,15 +80,18 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
public BindableBoolean isDocumentExportable = new BindableBoolean(false); public BindableBoolean isDocumentExportable = new BindableBoolean(false);
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>(); private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
public static Intent newInstance(Context context, SqlMtbColt document, List<DocumentoArtDTO> arts, TipoDocDTO tipoDoc) { public static Intent newInstance(Context context, SqlMtbColt document, List<DocumentoArtDTO> arts, TipoDocDTO tipoDoc, DocInterniSetupDTO mDocInterniSetupDTO) {
Intent myIntent = new Intent(context, DocInterniEditFormActivity.class); Intent myIntent = new Intent(context, DocInterniEditFormActivity.class);
String doc = DataCache.addItem(document); String doc = DataCache.addItem(document);
String productsKey = DataCache.addItem(arts); String productsKey = DataCache.addItem(arts);
String docType = DataCache.addItem(tipoDoc); String docType = DataCache.addItem(tipoDoc);
String docInterniSetup = DataCache.addItem(mDocInterniSetupDTO);
myIntent.putExtra(DATA_KEY_DOCUMENT, doc); myIntent.putExtra(DATA_KEY_DOCUMENT, doc);
myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey); myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey);
myIntent.putExtra(DATA_KEY_TIPO_DOC, docType); myIntent.putExtra(DATA_KEY_TIPO_DOC, docType);
myIntent.putExtra(DATA_KEY_DOC_INTERNI, docInterniSetup);
return myIntent; return myIntent;
} }
@ -103,13 +108,14 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT)); SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT));
List<DocumentoArtDTO> productList = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST)); List<DocumentoArtDTO> productList = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST));
TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC)); TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC));
DocInterniSetupDTO docInterniSetupDTO = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOC_INTERNI));
this.initViewModel(); this.initViewModel();
this.viewModel.setDocInterniSetupDTO(docInterniSetupDTO);
this.viewModel.setDocument(document); this.viewModel.setDocument(document);
this.viewModel.setProductsList(productList); this.viewModel.setProductsList(productList);
this.viewModel.setTipoDoc(docType); this.viewModel.setTipoDoc(docType);
this.initView(); this.initView();
this.initBindables(); this.initBindables();
this.initRecyclerView(); this.initRecyclerView();

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import org.json.JSONException; import org.json.JSONException;
@ -10,6 +11,7 @@ import org.json.JSONObject;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import javax.inject.Inject; import javax.inject.Inject;
@ -28,7 +30,10 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.CheckFornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
@ -48,6 +53,7 @@ public class DocInterniEditFormViewModel {
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>(); public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
public MutableLiveData<DocInterniSetupDTO> docInterniSetupDTO = new MutableLiveData<>();
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>(); public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
@Inject @Inject
@ -236,6 +242,7 @@ public class DocInterniEditFormViewModel {
artDto.setColli(BigDecimal.valueOf(row.getNumCnf())); artDto.setColli(BigDecimal.valueOf(row.getNumCnf()));
artDto.setUntMis(row.getUntMis()); artDto.setUntMis(row.getUntMis());
artDto.setCodMart(row.getCodMart()); artDto.setCodMart(row.getCodMart());
artDto.setSystemNote(row.getNote());
if (row.getDataScad() != null) { if (row.getDataScad() != null) {
artDto.setDataScad(row.getDataScad()); artDto.setDataScad(row.getDataScad());
} }
@ -257,35 +264,48 @@ public class DocInterniEditFormViewModel {
this.initCheckFornitore(); this.initCheckFornitore();
} }
public void setDocInterniSetupDTO(DocInterniSetupDTO docInterniSetupDTO) {
this.docInterniSetupDTO.setValue(docInterniSetupDTO);
}
private void initCheckFornitore() { private void initCheckFornitore() {
SqlMtbColt doc = this.document.getValue(); SqlMtbColt doc = this.document.getValue();
List<FornitoreDTO> fornitori = Objects.requireNonNull(this.docInterniSetupDTO.getValue()).getFornitori();
List<TipoDocDTO> tipoDocDTO = Objects.requireNonNull(this.docInterniSetupDTO.getValue()).getTipiDoc();
this.isCheckPartitaMag = false;
if (doc == null) if (doc == null || fornitori == null || tipoDocDTO == null)
return; return;
boolean isCheckPartitaMag = false; List<FornitoreDTO> filterFornitori = Stream.of(fornitori).filter(x->x.getCodAnag().equals(doc.getCodAnag())).toList();
List<CheckFornitoreDTO> checkFornitoreDTO;
try { TipoDocDTO tipoDoc = Stream.of(tipoDocDTO).filter(x -> x.getCodDtip().equals(doc.getCodDtipProvv())).findFirst().get();
if (this.checkFornitoreRules != null && this.checkFornitoreRules.has("value")) {
isCheckPartitaMag = this.checkFornitoreRules.getBoolean("value"); if (tipoDoc.isFlagChkTracciabilita()){
} else if (this.checkFornitoreRules != null) { this.isCheckPartitaMag = tipoDoc.isFlagChkTracciabilita();
String key = doc.getCodAnag(); }else{
if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) { if (filterFornitori.isEmpty())
key += "-" + doc.getCodVdes(); return;
}
if (this.checkFornitoreRules.has(key) && if (doc.getCodVdes() == null) {
((String) ((JSONObject) this.checkFornitoreRules.get(key)) checkFornitoreDTO = Stream.of(filterFornitori)
.get(doc.getCodDtipProvv())) .filter(x -> x.getCodVdes() == null).findFirst().get().getCheckFornitoreDTO();
.equalsIgnoreCase("check-partitaMag")) { } else{
isCheckPartitaMag = true; checkFornitoreDTO = Stream.of(filterFornitori)
} .filter(x -> x.getCodVdes().equals(doc.getCodVdes())).findFirst().get().getCheckFornitoreDTO();
}
if (checkFornitoreDTO != null){
CheckFornitoreDTO flagCheck = Stream.of(checkFornitoreDTO)
.filter(x -> x.getCodDtip().equals(doc.getCodDtipProvv())).findFirstOrElse(null);
if (flagCheck == null)
return;
this.isCheckPartitaMag = flagCheck.getFlagCheckPartitaMag();
} }
} catch (JSONException e) {
this.sendError(e);
} }
this.isCheckPartitaMag = isCheckPartitaMag;
} }
public SqlMtbColt getDocument() { public SqlMtbColt getDocument() {

View File

@ -42,7 +42,6 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.VtbDest; import it.integry.integrywmsnative.core.model.VtbDest;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding; import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
@ -54,6 +53,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
@ -86,16 +86,20 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
private int barcodeScannerIstanceID = -1; private int barcodeScannerIstanceID = -1;
private GestioneEnum mCurrentGestione; private GestioneEnum mCurrentGestione;
private boolean mAskCliente;
private boolean mAskLineaProd;
public PickingLiberoFragment() { public PickingLiberoFragment() {
// Required empty public constructor // Required empty public constructor
} }
public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum) { public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) {
PickingLiberoFragment fragment = new PickingLiberoFragment(); PickingLiberoFragment fragment = new PickingLiberoFragment();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString("gestione", gestioneEnum.getText()); args.putString("gestione", gestioneEnum.getText());
args.putBoolean("askCliente", askCliente);
args.putBoolean("askLineaProd", askLineaProd);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
@ -113,6 +117,8 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
setRetainInstance(true); setRetainInstance(true);
mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione")); mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione"));
mAskCliente = getArguments().getBoolean("askCliente");
mAskLineaProd = getArguments().getBoolean("askLineaProd");
} }
@ -139,8 +145,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
this.initRecyclerView(); this.initRecyclerView();
boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero(); mViewModel.init(mAskCliente, mAskLineaProd, mCurrentGestione);
mViewModel.init(flagAskCliente, mCurrentGestione);
return mBindings.getRoot(); return mBindings.getRoot();
} }
@ -263,7 +268,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
null, null,
() -> onComplete.run(true), () -> onComplete.run(true),
() -> onComplete.run(false) () -> onComplete.run(false)
).show(requireActivity().getSupportFragmentManager(), "tag"); ).show(requireActivity().getSupportFragmentManager(), DialogSimpleMessageView.class.getName());
} }
@Override @Override
@ -284,7 +289,13 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
@Override @Override
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) { public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
DialogAskClienteView.newInstance(onComplete, onAbort) DialogAskClienteView.newInstance(onComplete, onAbort)
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), DialogAskClienteView.class.getName());
}
@Override
public void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
DialogAskLineaProdView.newInstance(onComplete, onAbort)
.show(getParentFragmentManager(), DialogAskLineaProdView.class.getName());
} }
@Override @Override
@ -294,7 +305,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
onAbort.run(); onAbort.run();
BarcodeManager.enable(); BarcodeManager.enable();
}) })
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), DialogChooseArtsFromMtbColrList.class.getName());
} }
@Override @Override

View File

@ -6,7 +6,9 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@ -21,8 +23,17 @@ public class PickingLiberoModule {
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer, GiacenzaRESTConsumer giacenzaRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer
) { ) {
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, giacenzaRESTConsumer, magazzinoAutomaticoRESTConsumer); return new PickingLiberoViewModel(articoloRESTConsumer,
colliMagazzinoRESTConsumer,
barcodeRESTConsumer,
posizioniRESTConsumer,
giacenzaRESTConsumer,
magazzinoAutomaticoRESTConsumer,
colliLavorazioneRESTConsumer,
colliSpedizioneRESTConsumer);
} }
} }

View File

@ -32,14 +32,18 @@ import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface;
import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
@ -63,8 +67,12 @@ public class PickingLiberoViewModel {
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer; private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer; private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
private final ColliSpedizioneRESTConsumer mColliSpedizioneRESTConsumer;
private boolean mFlagAskCliente; private boolean mFlagAskCliente;
private boolean mFlagAskLineaProd;
private GestioneEnum mDefaultGestione; private GestioneEnum mDefaultGestione;
@ -77,19 +85,30 @@ public class PickingLiberoViewModel {
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer, GiacenzaRESTConsumer giacenzaRESTConsumer,
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) { MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer; this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer; this.mPosizioniRESTConsumer = posizioniRESTConsumer;
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer; this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer; this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
this.mColliSpedizioneRESTConsumer = colliSpedizioneRESTConsumer;
} }
public void init(boolean flagAskCliente, GestioneEnum defaultGestione) { public void init(boolean flagAskCliente, boolean flagAskLineaProd, GestioneEnum defaultGestione) {
this.mFlagAskCliente = defaultGestione == GestioneEnum.VENDITA && flagAskCliente; this.mFlagAskCliente = defaultGestione == GestioneEnum.VENDITA && flagAskCliente;
this.mFlagAskLineaProd = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskLineaProd;
this.mDefaultGestione = defaultGestione; this.mDefaultGestione = defaultGestione;
switch (mDefaultGestione) {
case LAVORAZIONE -> this.mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
case VENDITA -> this.mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer;
}
} }
@ -279,46 +298,57 @@ public class PickingLiberoViewModel {
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
if (this.mFlagAskCliente) { if (this.mFlagAskCliente) {
this.sendLUClienteRequired((vtbDest, codJcom) -> { this.sendLUClienteRequired((vtbDest, codJcom) -> {
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete); createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
}, () -> { }, () -> {
}); });
} else { } else {
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, null, onComplete); createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete);
} }
} }
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJcom, Runnable onComplete) { private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
if (this.mFlagAskLineaProd) {
this.sendLULineaProdRequired(codJfas -> {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, codJfas, onComplete);
}, () -> {
});
} else {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, onComplete);
}
}
private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Runnable onComplete) {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
MtbColt mtbColt = new MtbColt(); var createUDSRequest = new CreateUDSRequestDTO()
mtbColt.initDefaultFields(mDefaultGestione)
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null) .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
// .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag()) .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
.setSegno(-1) .setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); .setOrderRequired(mFlagAskLineaProd);
if (customNumCollo != null) { if (customNumCollo != null) {
mtbColt.setNumCollo(customNumCollo); createUDSRequest.setNumCollo(customNumCollo);
} }
if (!UtilityString.isNullOrEmpty(customSerCollo)) { if (!UtilityString.isNullOrEmpty(customSerCollo)) {
mtbColt.setSerCollo(customSerCollo); createUDSRequest.setSerCollo(customSerCollo);
}
if (!UtilityString.isNullOrEmpty(codJfas)) {
createUDSRequest.setCodJfas(codJfas);
} }
if (vtbDest != null) { if (vtbDest != null) {
mtbColt.setCodAnag(vtbDest.getCodAnag()); createUDSRequest.setCodAnag(vtbDest.getCodAnag());
mtbColt.setCodVdes(vtbDest.getCodVdes()); createUDSRequest.setCodVdes(vtbDest.getCodVdes());
} }
if (!UtilityString.isNullOrEmpty(codJcom)) {
mtbColt.setCodJcom(codJcom);
}
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { mColliScaricoRESTConsumer.createUDS(createUDSRequest, mtbColt -> {
mtbColt mtbColt
.setNumCollo(value.getNumCollo())
.setDataCollo(value.getDataColloS())
.setMtbColr(new ObservableArrayList<>()); .setMtbColr(new ObservableArrayList<>());
this.mCurrentMtbColt = mtbColt; this.mCurrentMtbColt = mtbColt;
@ -328,6 +358,43 @@ public class PickingLiberoViewModel {
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();
this.sendLUOpened(mtbColt); this.sendLUOpened(mtbColt);
}, this::sendError); }, this::sendError);
// MtbColt mtbColt = new MtbColt();
// mtbColt.initDefaultFields(mDefaultGestione)
// .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
// .setSegno(-1)
// .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
//
// if (customNumCollo != null) {
// mtbColt.setNumCollo(customNumCollo);
// }
//
// if (!UtilityString.isNullOrEmpty(customSerCollo)) {
// mtbColt.setSerCollo(customSerCollo);
// }
//
// if (vtbDest != null) {
// mtbColt.setCodAnag(vtbDest.getCodAnag());
// mtbColt.setCodVdes(vtbDest.getCodVdes());
// }
//
// if (!UtilityString.isNullOrEmpty(codJcom)) {
// mtbColt.setCodJcom(codJcom);
// }
// mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
// mtbColt
// .setNumCollo(value.getNumCollo())
// .setDataCollo(value.getDataColloS())
// .setMtbColr(new ObservableArrayList<>());
//
// this.mCurrentMtbColt = mtbColt;
//
// this.sendOnLoadingEnded();
//
// if (onComplete != null) onComplete.run();
// this.sendLUOpened(mtbColt);
// }, this::sendError);
} }
private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model) { private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model) {
@ -868,6 +935,10 @@ public class PickingLiberoViewModel {
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort); if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
} }
private void sendLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort);
}
private void sendArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) { private void sendArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) {
if (this.mListener != null) if (this.mListener != null)
mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort); mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort);
@ -924,6 +995,8 @@ public class PickingLiberoViewModel {
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort); void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort);
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort); void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
void onItemDispatched(PickingObjectDTO pickingObjectDTO, void onItemDispatched(PickingObjectDTO pickingObjectDTO,

View File

@ -52,7 +52,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.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; 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.input_quantity_v2.DialogInputQuantityV2View;
@ -276,7 +276,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
@Override @Override
public void onInfoAggiuntiveRequired(RunnableArgss<String, MtbTCol> onComplete) { public void onInfoAggiuntiveRequired(RunnableArgss<String, MtbTCol> onComplete) {
DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
} }
@Override @Override

View File

@ -73,7 +73,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListView; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListView;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; 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.input_quantity_v2.DialogInputQuantityV2View;
@ -1015,6 +1015,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override @Override
public void onInfoAggiuntiveRequired(MtbColt mtbColt, RunnableArgss<String, MtbTCol> onComplete) { public void onInfoAggiuntiveRequired(MtbColt mtbColt, RunnableArgss<String, MtbTCol> onComplete) {
DialogInfoAggiuntiveLU.newInstance(mtbColt, onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); DialogInfoAggiuntiveLUView.newInstance(mtbColt, onComplete, this::onLoadingEnded)
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
} }
} }

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import dagger.Subcomponent;
@Subcomponent
public interface DialogAskLineaProdComponent {
@Subcomponent.Factory
interface Factory {
DialogAskLineaProdComponent create();
}
void inject(DialogAskLineaProdView dialogAskLineaProdView);
}

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = DialogAskLineaProdComponent.class)
public class DialogAskLineaProdModule {
@Provides
DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel() {
return new DialogAskLineaProdViewModel();
}
}

View File

@ -0,0 +1,107 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
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.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.databinding.DialogAskLineaProdBinding;
public class DialogAskLineaProdView extends BaseDialogFragment implements DialogAskLineaProdViewModel.Listener {
@Inject
DialogAskLineaProdViewModel mViewModel;
private final RunnableArgs<String> onComplete;
private final Runnable onAbort;
private DialogAskLineaProdBinding mBindings;
private Context mContext;
private int mBarcodeScannerIstanceID;
//Pass here all external parameters
public static DialogAskLineaProdView newInstance(RunnableArgs<String> onComplete, Runnable onAbort) {
return new DialogAskLineaProdView(onComplete, onAbort);
}
private DialogAskLineaProdView(RunnableArgs<String> onComplete, Runnable onAbort) {
super();
this.onComplete = onComplete;
this.onAbort = onAbort;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogAskLineaProdBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
MainApplication.appComponent
.dialogAskLineaProdComponent()
.create()
.inject(this);
mViewModel.setListener(this);
setCancelable(true);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setCancelable(isCancelable())
.setNegativeButton(R.string.abort, (dialogInterface, i) -> {
if(this.onAbort != null) this.onAbort.run();
})
.create();
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this);
return alertDialog;
}
@Override
public void onShow(DialogInterface dialogInterface) {
super.onShow(dialogInterface);
this.initBarcode();
}
private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessful)
.setOnScanFailed(this::onError));
BarcodeManager.enable();
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable();
this.mViewModel.processBarcodeDTO(data, BarcodeManager::enable);
};
@Override
public void onProductionLineSelected(String codJfas) {
this.onComplete.run(codJfas);
dismiss();
}
}

View File

@ -0,0 +1,60 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidLineaProdBarcodeException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
public class DialogAskLineaProdViewModel {
private Listener mListener;
public void processBarcodeDTO(BarcodeScanDTO data, Runnable onComplete) {
if (UtilityBarcode.isEtichettaPosizione(data)) {
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue());
if (!foundPosizione.isFlagLineaProduzione()) {
this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue()));
onComplete.run();
return;
}
onComplete.run();
this.sendOnProductionLineSelected(foundPosizione.getPosizione());
} else {
this.sendError(new NoResultFromBarcodeException());
onComplete.run();
}
}
public DialogAskLineaProdViewModel setListener(Listener listener) {
this.mListener = listener;
return this;
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendOnProductionLineSelected(String codJfas) {
if (this.mListener != null) mListener.onProductionLineSelected(codJfas);
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onProductionLineSelected(String codJfas);
}
}

View File

@ -1,163 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
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.view.WindowManager;
import android.widget.AdapterView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogNoteAggiuntiveNuovaUlBinding;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloAdapter;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloListModel;
public class DialogInfoAggiuntiveLU extends BaseDialogFragment implements InfoAggiuntiveLUDialogViewModel.Listener {
@Inject
InfoAggiuntiveLUDialogViewModel mViewModel;
private DialogNoteAggiuntiveNuovaUlBinding mBindings;
private final RunnableArgss<String, MtbTCol> mOnComplete;
private MtbColt currentMtbColt;
private DialogInputLUProdTipoColloAdapter codTcolArrayAdapter = null;
public ObservableField<String> additionalNotes = new ObservableField<>();
public ObservableField<String> selectedMtbTcol = new ObservableField<>();
public ObservableField<DialogInputLUProdTipoColloListModel> currentMtbTCol = new ObservableField<>();
public static DialogInfoAggiuntiveLU newInstance(@NotNull RunnableArgss<String, MtbTCol> onComplete) {
return new DialogInfoAggiuntiveLU(null, onComplete);
}
public static DialogInfoAggiuntiveLU newInstance(MtbColt mtbColt, @NotNull RunnableArgss<String, MtbTCol> onComplete) {
return new DialogInfoAggiuntiveLU(mtbColt, onComplete);
}
private DialogInfoAggiuntiveLU(MtbColt mtbColt, @NotNull RunnableArgss<String, MtbTCol> onComplete) {
super();
this.mOnComplete = onComplete;
this.currentMtbColt = mtbColt;
}
@Override
public void onStart() {
super.onStart();
this.init();
UtilityDialog.setTo90PercentWidth(requireActivity(), this);
this.mViewModel.setListener(this);
this.mViewModel.init();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_note_aggiuntive_nuova_ul, container, false);
mBindings.setLifecycleOwner(this);
MainApplication.appComponent
.infoAggiuntiveLUDialogComponent()
.create()
.inject(this);
mBindings.setView(this);
mBindings.setViewModel(this.mViewModel);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getDialog().setCanceledOnTouchOutside(false);
getDialog().setCancelable(false);
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
return mBindings.getRoot();
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
if (mOnComplete != null)
mOnComplete.run(additionalNotes.get(), mViewModel.getInternalTipoPed());
super.onDismiss(dialog);
}
private void init() {
UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> {
if (this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) {
Optional<DialogInputLUProdTipoColloListModel> selectedItem = Stream.of(this.codTcolArrayAdapter.getDataset())
.filter(x -> x.toString().equals(value))
.findFirst();
if (selectedItem.isPresent()) {
currentMtbTCol.set(selectedItem.get());
this.mViewModel.setInternalTipoPed(selectedItem.get().getOriginalModel());
}
}
});
this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> {
codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
if (currentMtbColt != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) {
MtbTCol tipoPedana = Stream.of(tipiCollo).filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol())).findFirstOrElse(null);
if (tipoPedana != null) {
this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione());
}
}
});
this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
currentMtbTCol.set(codTcolArrayAdapter.getItem(i));
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
currentMtbTCol.set(null);
}
});
mBindings.buttonConfirm.setOnClickListener(v -> {
dismiss();
});
if (this.currentMtbColt != null) {
this.additionalNotes.set(currentMtbColt.getAnnotazioni());
}
}
}

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import dagger.Subcomponent;
@Subcomponent
public interface DialogInfoAggiuntiveLUComponent {
@Subcomponent.Factory
interface Factory {
DialogInfoAggiuntiveLUComponent create();
}
void inject(DialogInfoAggiuntiveLUView dialogInfoAggiuntiveLUView);
}

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
@Module(subcomponents = DialogInfoAggiuntiveLUComponent.class)
public class DialogInfoAggiuntiveLUModule {
@Provides
DialogInfoAggiuntiveLUViewModel providesDialogInfoAggiuntiveLUViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DialogInfoAggiuntiveLUViewModel(magazzinoRESTConsumer);
}
}

View File

@ -0,0 +1,163 @@
package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.ObservableField;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInfoAggiuntiveLuBinding;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloAdapter;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloListModel;
public class DialogInfoAggiuntiveLUView extends BaseDialogFragment implements DialogInfoAggiuntiveLUViewModel.Listener {
@Inject
DialogInfoAggiuntiveLUViewModel mViewModel;
public ObservableField<String> additionalNotes = new ObservableField<>();
public ObservableField<String> selectedMtbTcol = new ObservableField<>();
public ObservableField<DialogInputLUProdTipoColloListModel> currentMtbTCol = new ObservableField<>();
private DialogInfoAggiuntiveLuBinding mBindings;
private Context mContext;
private final RunnableArgss<String, MtbTCol> mOnComplete;
private final Runnable mOnAbort;
private final MtbColt currentMtbColt;
public static DialogInfoAggiuntiveLUView newInstance(@NotNull RunnableArgss<String, MtbTCol> onComplete, @NotNull Runnable onAbort) {
return new DialogInfoAggiuntiveLUView(null, onComplete, onAbort);
}
public static DialogInfoAggiuntiveLUView newInstance(MtbColt mtbColt, @NotNull RunnableArgss<String, MtbTCol> onComplete, @NotNull Runnable onAbort) {
return new DialogInfoAggiuntiveLUView(mtbColt, onComplete, onAbort);
}
private DialogInfoAggiuntiveLUView(MtbColt mtbColt, @NotNull RunnableArgss<String, MtbTCol> onComplete, @NotNull Runnable onAbort) {
super();
this.mOnComplete = onComplete;
this.mOnAbort = onAbort;
this.currentMtbColt = mtbColt;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogInfoAggiuntiveLuBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
MainApplication.appComponent
.dialogInfoAggiuntiveLUComponent()
.create()
.inject(this);
mBindings.setView(this);
mBindings.setViewModel(mViewModel);
mViewModel.setListener(this);
setCancelable(false);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setCancelable(isCancelable())
.setPositiveButton(R.string.confirm, (dialogInterface, i) -> {
mOnComplete.run(additionalNotes.get(), currentMtbTCol.get() != null ? currentMtbTCol.get().getOriginalModel() : null);
})
.setNegativeButton(R.string.abort, (dialogInterface, i) -> {
this.mOnAbort.run();
})
.create();
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this);
return alertDialog;
}
@Override
public void onShow(DialogInterface dialogInterface) {
super.onShow(dialogInterface);
this.init();
this.mViewModel.init();
}
private void init() {
if (this.currentMtbColt != null)
this.additionalNotes.set(currentMtbColt.getAnnotazioni());
var codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(requireContext(),
R.layout.array_adapter_single_item,
this.mViewModel.getTipiCollo());
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
this.mViewModel.getTipiCollo().observe(this, tipiCollo -> {
if (currentMtbColt != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) {
tipiCollo.stream()
.filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol()))
.findFirst()
.ifPresent(tipoPedana -> this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione()));
}
});
UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> {
if (codTcolArrayAdapter.getDataset() != null) {
codTcolArrayAdapter.getDataset().stream()
.filter(x -> x.toString().equals(value))
.findFirst()
.ifPresent(tipoPedana -> {
currentMtbTCol.set(tipoPedana);
});
}
});
this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
currentMtbTCol.set(codTcolArrayAdapter.getItem(i));
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
currentMtbTCol.set(null);
}
});
}
}

View File

@ -10,23 +10,21 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
public class InfoAggiuntiveLUDialogViewModel { public class DialogInfoAggiuntiveLUViewModel {
public final MutableLiveData<List<MtbTCol>> tipiCollo = new MutableLiveData<>(); private final MutableLiveData<List<MtbTCol>> tipiCollo = new MutableLiveData<>();
private MtbTCol internalTipoPed;
private Listener mListener; private Listener mListener;
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
@Inject @Inject
public InfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) { public DialogInfoAggiuntiveLUViewModel(MagazzinoRESTConsumer mMagazzinoRESTConsumer) {
this.mMagazzinoRESTConsumer = magazzinoRESTConsumer; this.mMagazzinoRESTConsumer = mMagazzinoRESTConsumer;
} }
public void init() { public void init() {
new Thread(this::sendOnLoadingStarted).start(); this.sendOnLoadingStarted();
mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> { mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> {
this.tipiCollo.postValue(tipiCollo); this.tipiCollo.postValue(tipiCollo);
@ -35,19 +33,14 @@ public class InfoAggiuntiveLUDialogViewModel {
} }
public MutableLiveData<List<MtbTCol>> getTipiCollo() { public MutableLiveData<List<MtbTCol>> getTipiCollo() {
return this.tipiCollo; return tipiCollo;
} }
public void setListener(Listener listener) {
public void setInternalTipoPed(MtbTCol internalTipoPed) { this.mListener = listener;
this.internalTipoPed = internalTipoPed;
} }
public MtbTCol getInternalTipoPed() {
return internalTipoPed;
}
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted(); if (this.mListener != null) mListener.onLoadingStarted();
} }
@ -60,13 +53,9 @@ public class InfoAggiuntiveLUDialogViewModel {
if (this.mListener != null) mListener.onError(ex); if (this.mListener != null) mListener.onError(ex);
} }
public void setListener(Listener listener) {
this.mListener = listener;
}
public interface Listener extends ILoadingListener { public interface Listener extends ILoadingListener {
void onError(Exception ex); void onError(Exception ex);
} }
} }

View File

@ -1,15 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import dagger.Subcomponent;
@Subcomponent
public interface InfoAggiuntiveLUDialogComponent {
@Subcomponent.Factory
interface Factory {
InfoAggiuntiveLUDialogComponent create();
}
void inject(DialogInfoAggiuntiveLU infoAggiuntiveLUDialog);
}

View File

@ -1,15 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
@Module(subcomponents = InfoAggiuntiveLUDialogComponent.class)
public class InfoAggiuntiveLUDialogModule {
@Provides
InfoAggiuntiveLUDialogViewModel providesInfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new InfoAggiuntiveLUDialogViewModel(magazzinoRESTConsumer);
}
}

View File

@ -328,10 +328,11 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI
} }
}); });
codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, this.mViewModel.getTipiCollo());
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> { this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> {
codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
if (mDialogInputLUProdDTO.getCodTcol() != null) { if (mDialogInputLUProdDTO.getCodTcol() != null) {
Optional<MtbTCol> optTCol = Stream.of(tipiCollo) Optional<MtbTCol> optTCol = Stream.of(tipiCollo)

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
@ -13,15 +14,20 @@ import it.integry.integrywmsnative.core.model.MtbTCol;
public class DialogInputLUProdTipoColloAdapter extends ArrayAdapter<DialogInputLUProdTipoColloListModel> { public class DialogInputLUProdTipoColloAdapter extends ArrayAdapter<DialogInputLUProdTipoColloListModel> {
private final List<DialogInputLUProdTipoColloListModel> mDataset; private List<DialogInputLUProdTipoColloListModel> mDataset;
public DialogInputLUProdTipoColloAdapter(@NonNull Context context, int resource, @NonNull List<MtbTCol> objects) { public DialogInputLUProdTipoColloAdapter(@NonNull Context context, int resource, @NonNull MutableLiveData<List<MtbTCol>> inputData) {
super(context, resource); super(context, resource);
this.mDataset = Stream.of(objects).map(x -> new DialogInputLUProdTipoColloListModel()
.setOriginalModel(x))
.toList();
addAll(mDataset); inputData.observeForever(data -> {
mDataset = Stream.of(data)
.map(x -> new DialogInputLUProdTipoColloListModel()
.setOriginalModel(x))
.toList();
clear();
addAll(mDataset);
});
} }
public List<DialogInputLUProdTipoColloListModel> getDataset() { public List<DialogInputLUProdTipoColloListModel> getDataset() {

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M440,520L200,520L200,440L440,440L440,200L520,200L520,440L760,440L760,520L520,520L520,760L440,760L440,520Z"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M200,880Q167,880 143.5,856.5Q120,833 120,800L120,349Q102,338 91,320.5Q80,303 80,280L80,160Q80,127 103.5,103.5Q127,80 160,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,280Q880,303 869,320.5Q858,338 840,349L840,800Q840,833 816.5,856.5Q793,880 760,880L200,880ZM200,360L200,800Q200,800 200,800Q200,800 200,800L760,800Q760,800 760,800Q760,800 760,800L760,360L200,360ZM160,280L800,280Q800,280 800,280Q800,280 800,280L800,160Q800,160 800,160Q800,160 800,160L160,160Q160,160 160,160Q160,160 160,160L160,280Q160,280 160,280Q160,280 160,280ZM360,560L600,560L600,480L360,480L360,560ZM480,580L480,580L480,580Q480,580 480,580Q480,580 480,580L480,580Q480,580 480,580Q480,580 480,580L480,580Z"/>
</vector>

View File

@ -5,7 +5,7 @@
<import type="android.view.View" /> <import type="android.view.View" />
<variable <variable
name="accettazioneView" name="view"
type="it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity" /> type="it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity" />
</data> </data>
@ -80,7 +80,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:alpha="0.3" android:alpha="0.3"
app:visibility="@{accettazioneView.noItemsToPick}"> app:visibility="@{view.noItemsToPick}">
<androidx.constraintlayout.widget.Guideline <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top" android:id="@+id/guideline_empty_top"
@ -129,66 +129,79 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<com.github.clans.fab.FloatingActionMenu
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/accettazione_ordine_inevaso_fab" android:id="@+id/accettazione_ordine_inevaso_fab"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_gravity="bottom|end"
app:layout_constraintBottom_toBottomOf="parent" android:layout_margin="16dp"
app:layout_constraintEnd_toEndOf="parent" android:onClick="@{() -> view.showFabMenu()}"
app:visibility="@{accettazioneView.noLUPresent}" app:srcCompat="@drawable/ic_add_24dp"
fab:menu_animationDelayPerItem="50" app:visibility="@{view.noLUPresent}"
fab:menu_backgroundColor="@color/white_bg_alpha" style="?attr/floatingActionButtonPrimaryStyle" />
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="@color/colorSecondary"
fab:menu_colorPressed="@color/colorSecondaryDark"
fab:menu_fab_size="normal"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/white_pressed"
fab:menu_labels_colorRipple="#66FFFFFF"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_padding="8dp"
fab:menu_labels_paddingBottom="4dp"
fab:menu_labels_paddingLeft="8dp"
fab:menu_labels_paddingRight="8dp"
fab:menu_labels_paddingTop="4dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_textColor="@color/black_semi_transparent"
fab:menu_labels_textSize="18sp"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66000000"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true">
<com.github.clans.fab.FloatingActionButton <!-- <com.github.clans.fab.FloatingActionMenu-->
android:id="@+id/accettazione_ordine_inevaso_fab_item1" <!-- android:id="@+id/accettazione_ordine_inevaso_fab"-->
android:layout_width="wrap_content" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!-- android:layout_height="match_parent"-->
android:src="@drawable/ic_box" <!-- android:layout_alignParentBottom="true"-->
app:fab_colorNormal="@color/white" <!-- app:layout_constraintBottom_toBottomOf="parent"-->
app:fab_colorPressed="@color/white_pressed" <!-- app:layout_constraintEnd_toEndOf="parent"-->
app:fab_colorRipple="#66FFFFFF" <!-- app:visibility="@{view.noLUPresent}"-->
app:onClick="@{() -> accettazioneView.showCreatedUL()}" <!-- fab:menu_animationDelayPerItem="50"-->
fab:fab_label="@string/action_show_created_ul" /> <!-- fab:menu_backgroundColor="@color/white_bg_alpha"-->
<!-- fab:menu_buttonSpacing="0dp"-->
<!-- fab:menu_colorNormal="@color/colorSecondary"-->
<!-- fab:menu_colorPressed="@color/colorSecondaryDark"-->
<!-- fab:menu_fab_size="normal"-->
<!-- fab:menu_labels_colorNormal="@color/white"-->
<!-- fab:menu_labels_colorPressed="@color/white_pressed"-->
<!-- fab:menu_labels_colorRipple="#66FFFFFF"-->
<!-- fab:menu_labels_cornerRadius="3dp"-->
<!-- fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"-->
<!-- fab:menu_labels_margin="0dp"-->
<!-- fab:menu_labels_padding="8dp"-->
<!-- fab:menu_labels_paddingBottom="4dp"-->
<!-- fab:menu_labels_paddingLeft="8dp"-->
<!-- fab:menu_labels_paddingRight="8dp"-->
<!-- fab:menu_labels_paddingTop="4dp"-->
<!-- fab:menu_labels_position="left"-->
<!-- fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"-->
<!-- fab:menu_labels_showShadow="true"-->
<!-- fab:menu_labels_textColor="@color/black_semi_transparent"-->
<!-- fab:menu_labels_textSize="18sp"-->
<!-- fab:menu_openDirection="up"-->
<!-- fab:menu_shadowColor="#66000000"-->
<!-- fab:menu_shadowRadius="4dp"-->
<!-- fab:menu_shadowXOffset="1dp"-->
<!-- fab:menu_shadowYOffset="3dp"-->
<!-- fab:menu_showShadow="true">-->
<com.github.clans.fab.FloatingActionButton <!-- <com.github.clans.fab.FloatingActionButton-->
android:id="@+id/accettazione_ordine_inevaso_fab_item2" <!-- android:id="@+id/accettazione_ordine_inevaso_fab_item1"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:src="@drawable/ic_add_24dp" <!-- android:src="@drawable/ic_box"-->
app:fab_colorNormal="@color/white" <!-- app:fab_colorNormal="@color/white"-->
app:fab_colorPressed="@color/white_pressed" <!-- app:fab_colorPressed="@color/white_pressed"-->
app:fab_colorRipple="#66FFFFFF" <!-- app:fab_colorRipple="#66FFFFFF"-->
app:onClick="@{() -> accettazioneView.createNewLU()}" <!-- app:onClick="@{() -> view.showCreatedUL()}"-->
fab:fab_label="@string/action_create_ul" /> <!-- fab:fab_label="@string/action_show_created_ul" />-->
</com.github.clans.fab.FloatingActionMenu> <!-- <com.github.clans.fab.FloatingActionButton-->
<!-- android:id="@+id/accettazione_ordine_inevaso_fab_item2"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:src="@drawable/ic_add_24dp"-->
<!-- app:fab_colorNormal="@color/white"-->
<!-- app:fab_colorPressed="@color/white_pressed"-->
<!-- app:fab_colorRipple="#66FFFFFF"-->
<!-- app:onClick="@{() -> view.createNewLU()}"-->
<!-- fab:fab_label="@string/action_create_ul" />-->
<!-- </com.github.clans.fab.FloatingActionMenu>-->
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>
@ -210,7 +223,7 @@
app:behavior_hideable="false" app:behavior_hideable="false"
app:behavior_peekHeight="66dp" app:behavior_peekHeight="66dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
app:visibility="@{accettazioneView.bottomSheetEnabled}" app:visibility="@{view.bottomSheetEnabled}"
app:parentView="@id/bottom_sheet_lu_content" /> app:parentView="@id/bottom_sheet_lu_content" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="16dp">
<androidx.appcompat.widget.AppCompatImageView
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/ic_error_white_24dp"
app:tint="?colorPrimary" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="16dp"
android:text="Linea produzione" />
<androidx.appcompat.widget.LinearLayoutCompat
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginHorizontal="16dp">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
style="@style/TextAppearance.Material3.BodyMedium"
android:text="Scansiona il codice a barre di una linea di produzione"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="view"
type="it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView" />
<variable
name="viewModel"
type="it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUViewModel" />
</data>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="16dp">
<androidx.appcompat.widget.AppCompatImageView
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/ic_error_white_24dp"
app:tint="?colorPrimary" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="16dp"
android:text="@string/lu_info" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_tcol"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/title_text"
app:layout_constraintBottom_toTopOf="@id/level_number_layout"
android:visibility="@{viewModel.tipiCollo.empty ? View.GONE : View.VISIBLE}"
android:hint="@string/lu_type">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cod_tcol"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:imeOptions="actionNext"
android:inputType="textNoSuggestions"
android:nextFocusForward="@id/filled_exposed_dropdown_cod_jfas"
app:binding="@{view.selectedMtbTcol}"
android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/level_number_layout"
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@id/input_cod_tcol">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/additional_notes_text"
style="@style/TextInputEditText.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_additional_notes"
app:binding="@{view.additionalNotes}"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -1,124 +0,0 @@
<?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">
<data>
<import type="android.text.Html" />
<import type="it.integry.integrywmsnative.R" />
<variable
name="mContext"
type="android.content.Context" />
<import type="android.view.View" />
<variable
name="view"
type="it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU" />
<variable
name="viewModel"
type="it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogViewModel" />
</data>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
app:cardBackgroundColor="@android:color/transparent"
app:cardCornerRadius="24dp"
app:cardElevation="0dp">
<androidx.cardview.widget.CardView
android:id="@+id/base"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
app:cardBackgroundColor="@color/light_blue_300"
app:cardCornerRadius="24dp"
app:cardElevation="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:padding="24dp"
android:background="@drawable/dialog_card_child_bg">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/lu_info"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_tcol"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/title_text"
app:layout_constraintBottom_toTopOf="@id/level_number_layout"
android:visibility="@{viewModel.tipiCollo.empty ? View.GONE : View.VISIBLE}"
android:hint="@string/lu_type">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cod_tcol"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:imeOptions="actionNext"
android:inputType="textNoSuggestions"
android:nextFocusForward="@id/filled_exposed_dropdown_cod_jfas"
app:binding="@{view.selectedMtbTcol}"
android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/level_number_layout"
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@id/input_cod_tcol">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/additional_notes_text"
style="@style/TextInputEditText.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_additional_notes"
app:binding="@{view.additionalNotes}"
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/confirm"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/level_number_layout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/show_created_ul"
android:icon="@drawable/ic_inventory_2_material3"
android:title="@string/action_show_created_ul" />
<item
android:id="@+id/create_ul"
android:icon="@drawable/ic_add_material3"
android:title="@string/action_create_ul" />
</menu>

View File

@ -222,6 +222,7 @@
<string name="already_used_anonymous_barcode"><![CDATA[L\'etichetta scansionata è stata già utilizzata]]></string> <string name="already_used_anonymous_barcode"><![CDATA[L\'etichetta scansionata è stata già utilizzata]]></string>
<string name="no_result_from_barcode">Il barcode scansionato non ha fornito alcun risultato</string> <string name="no_result_from_barcode">Il barcode scansionato non ha fornito alcun risultato</string>
<string name="no_result_from_linea_prod_barcode">Il barcode scansionato non riguarda una linea di produzione</string>
<string name="no_result_from_cod_mart">Il codice articolo non ha fornito alcun risultato</string> <string name="no_result_from_cod_mart">Il codice articolo non ha fornito alcun risultato</string>
<string name="multiple_results_from_barcode">Il barcode scansionato ha fornito molteplici risultati</string> <string name="multiple_results_from_barcode">Il barcode scansionato ha fornito molteplici risultati</string>
<string name="no_doc_type_selected">Nessun tipo documento selezionato</string> <string name="no_doc_type_selected">Nessun tipo documento selezionato</string>

View File

@ -227,7 +227,8 @@
<string name="no_doc_type_selected">No document type selected</string> <string name="no_doc_type_selected">No document type selected</string>
<string name="already_used_anonymous_barcode">The scanned label has already been used</string> <string name="already_used_anonymous_barcode">The scanned label has already been used</string>
<string name="no_result_from_barcode">The scanned barcode did not produce any results</string> <string name="no_result_from_barcode">The scanned barcode does not produce any results</string>
<string name="no_result_from_linea_prod_barcode">The scanned barcode does not represent any production line</string>
<string name="no_result_from_cod_mart">The item code did not produce any results</string> <string name="no_result_from_cod_mart">The item code did not produce any results</string>
<string name="please_open_lu">Before continuing open new LU</string> <string name="please_open_lu">Before continuing open new LU</string>
<string name="multiple_results_from_barcode">The scanned barcode produced multiple results</string> <string name="multiple_results_from_barcode">The scanned barcode produced multiple results</string>