Compare commits
60 Commits
v1.36.07(4
...
v1.38.00(4
| Author | SHA1 | Date | |
|---|---|---|---|
| f03fe78ed3 | |||
| 77cf6ac4db | |||
| 48d1a34c52 | |||
| 258f150dbb | |||
| 14783dfef5 | |||
| e62e5d11f0 | |||
| 648d908e95 | |||
| db3eb1b062 | |||
| fb2bed2dbf | |||
| f45010650a | |||
| 6022cfea1f | |||
| 1ceb8c9cf9 | |||
| 3c86db62c0 | |||
| 49687efc16 | |||
| 62835878a6 | |||
| 02cd92f2dd | |||
| 1014043c53 | |||
| bd087fbf73 | |||
| 12a1ce1654 | |||
| fbb7d414f1 | |||
| a09ed92945 | |||
| 0194a5a49d | |||
| 112110e10f | |||
| 8045d8b4e9 | |||
| d839d94d34 | |||
| 5728481a94 | |||
| 4b1632c265 | |||
| b95863d66d | |||
| 2e360e8104 | |||
| 7c52a692e3 | |||
| 17e3b8856c | |||
| 550cf3506e | |||
| 243d0d1d30 | |||
| 98649e3a42 | |||
| 9dabbee1c7 | |||
| 1c9f4de437 | |||
| b6bd8d5e01 | |||
| 502ff6f684 | |||
| 50e58446b4 | |||
| f8df1ffa96 | |||
| adf80ae3f5 | |||
| d81f623ee6 | |||
| 84c6b7099b | |||
| 965a60b6e8 | |||
| 4ba1b847e7 | |||
| f5ad8e8b64 | |||
| 4863b31bb6 | |||
| 8411b0fc17 | |||
| 6541f17555 | |||
| 143a6c9e9c | |||
| 8ef216318e | |||
| 946d3e6593 | |||
| 0bdc3a0638 | |||
| 49782755bc | |||
| 2c5fb3ba48 | |||
| bf732a1182 | |||
| a73ecc1e81 | |||
| 818351f1d0 | |||
| 27577d10cf | |||
| 09dd2ef31e |
6
.idea/appInsightsSettings.xml
generated
Normal file
6
.idea/appInsightsSettings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AppInsightsSettings">
|
||||
<option name="selectedTabId" value="Android Vitals" />
|
||||
</component>
|
||||
</project>
|
||||
26
.idea/deploymentTargetDropDown.xml
generated
Normal file
26
.idea/deploymentTargetDropDown.xml
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="deploymentTargetDropDown">
|
||||
<value>
|
||||
<entry key="Prod_Android.WMS.app">
|
||||
<State>
|
||||
<runningDeviceTargetSelectedWithDropDown>
|
||||
<Target>
|
||||
<type value="RUNNING_DEVICE_TARGET" />
|
||||
<deviceKey>
|
||||
<Key>
|
||||
<type value="SERIAL_NUMBER" />
|
||||
<value value="20119B1E55" />
|
||||
</Key>
|
||||
</deviceKey>
|
||||
</Target>
|
||||
</runningDeviceTargetSelectedWithDropDown>
|
||||
<timeTargetWasSelectedWithDropDown value="2024-01-15T11:45:15.850312500Z" />
|
||||
</State>
|
||||
</entry>
|
||||
<entry key="app">
|
||||
<State />
|
||||
</entry>
|
||||
</value>
|
||||
</component>
|
||||
</project>
|
||||
1
.idea/runConfigurations/app.xml
generated
1
.idea/runConfigurations/app.xml
generated
@@ -9,6 +9,7 @@
|
||||
<option name="ALL_USERS" value="false" />
|
||||
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
|
||||
<option name="CLEAR_APP_STORAGE" value="false" />
|
||||
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
|
||||
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
||||
<option name="MODE" value="default_activity" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
|
||||
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 400
|
||||
def appVersionName = '1.36.07'
|
||||
def appVersionCode = 410
|
||||
def appVersionName = '1.38.00'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
@@ -34,7 +34,7 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "it.integry.integrywmsnative"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
targetSdkVersion 34
|
||||
versionCode appVersionCode
|
||||
versionName appVersionName
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
@@ -88,11 +88,11 @@ android {
|
||||
abortOnError false
|
||||
}
|
||||
namespace 'it.integry.integrywmsnative'
|
||||
compileSdk 33
|
||||
compileSdk 34
|
||||
}
|
||||
|
||||
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')
|
||||
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
@@ -113,10 +113,10 @@ dependencies {
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
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.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') {
|
||||
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
|
||||
@@ -152,7 +152,7 @@ dependencies {
|
||||
implementation 'com.github.pedromassango:doubleClick:3.0'
|
||||
|
||||
//SQLite ROOM
|
||||
def room_version = "2.5.2"
|
||||
def room_version = "2.6.1"
|
||||
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
annotationProcessor "androidx.room:room-compiler:$room_version"
|
||||
|
||||
@@ -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.dialogs.ask_cliente.DialogAskClienteComponent;
|
||||
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.DialogAskUnknownBarcodeNotesModule;
|
||||
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_batch_lot.DialogChooseBatchLotComponent;
|
||||
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.DialogInputLUProdModule;
|
||||
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,
|
||||
DialogAskUnknownBarcodeNotesModule.class,
|
||||
ProdVersamentoMaterialeInBufferModule.class,
|
||||
DialogInputQuantityToReturnModule.class
|
||||
DialogInputQuantityToReturnModule.class,
|
||||
DialogInfoAggiuntiveLUModule.class,
|
||||
DialogAskLineaProdModule.class
|
||||
})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
@@ -281,8 +286,6 @@ public interface MainApplicationComponent {
|
||||
|
||||
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
|
||||
|
||||
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
|
||||
|
||||
DialogEditArticoloComponent.Factory dialogEditArticoloComponent();
|
||||
|
||||
DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent();
|
||||
@@ -329,6 +332,10 @@ public interface MainApplicationComponent {
|
||||
|
||||
DialogInputQuantityToReturnComponent.Factory dialogInputQuantityToReturnComponent();
|
||||
|
||||
DialogInfoAggiuntiveLUComponent.Factory dialogInfoAggiuntiveLUComponent();
|
||||
|
||||
DialogAskLineaProdComponent.Factory dialogAskLineaProdComponent();
|
||||
|
||||
void inject(MainApplication mainApplication);
|
||||
|
||||
void inject(AppContext mainApplication);
|
||||
|
||||
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.class_router.configs;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
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_ordini_elenco.MainAccettazioneOrdiniElencoFragment;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
|
||||
@@ -85,7 +86,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setTitleText(R.string.free_picking)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
|
||||
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
|
||||
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA)))
|
||||
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_resi_cliente)
|
||||
@@ -121,7 +122,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setTitleText(R.string.free_lav_picking)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
|
||||
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
|
||||
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
|
||||
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_prod_posizionamento_da_ord)
|
||||
@@ -170,6 +171,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
|
||||
.setDrawerIcon(R.drawable.ic_black_external)
|
||||
.setFragmentFactory(ProdVersamentoMaterialeInBufferFragment::newInstance))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_prod_versamento_su_ordine)
|
||||
.setCodMenu("MG068")
|
||||
.setTitleText(R.string.prod_versamento_su_ordine_title_fragment)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_su_ord)
|
||||
.setDrawerIcon(R.drawable.ic_black_external)
|
||||
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true)))
|
||||
).addGroup(
|
||||
new MenuGroup()
|
||||
.setGroupText(R.string.internal_handling)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class InvalidCodMdepException extends Exception {
|
||||
public InvalidCodMdepException() {
|
||||
super(UtilityResources.getString(R.string.invalid_codmdep));
|
||||
}
|
||||
}
|
||||
@@ -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 + ")");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class NoOrdersScheduledException extends Exception {
|
||||
|
||||
public NoOrdersScheduledException() {
|
||||
super(UtilityResources.getString(R.string.no_orders_scheduled));
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.model.dto;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
|
||||
|
||||
public class StatoArticoloDTO {
|
||||
private String codMart;
|
||||
|
||||
@@ -17,7 +19,7 @@ public class StatoArticoloDTO {
|
||||
|
||||
private Integer ggUtili;
|
||||
|
||||
private Integer statoArt;
|
||||
private StatoPartitaMag statoArt;
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
@@ -82,11 +84,11 @@ public class StatoArticoloDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getStatoArt() {
|
||||
public StatoPartitaMag getStatoArt() {
|
||||
return statoArt;
|
||||
}
|
||||
|
||||
public StatoArticoloDTO setStatoArt(Integer statoArt) {
|
||||
public StatoArticoloDTO setStatoArt(StatoPartitaMag statoArt) {
|
||||
this.statoArt = statoArt;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,10 @@ package it.integry.integrywmsnative.core.model.secondary;
|
||||
|
||||
public enum StatoPartitaMag {
|
||||
|
||||
IN_SCADENZA(1),
|
||||
SCADUTO(2),
|
||||
NON_IN_SCADENZA(3);
|
||||
SCADUTO(1),
|
||||
IN_SCADENZA(2),
|
||||
NON_IN_SCADENZA(3),
|
||||
DISATTIVO(4);
|
||||
|
||||
private final int text;
|
||||
|
||||
|
||||
@@ -78,14 +78,12 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
|
||||
.setCodMarts(codMarts))
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
|
||||
analyzeAnswer(response, "getByCodMart", (m) -> {
|
||||
onComplete.run(response.body().getEntityList());
|
||||
}, onFailed);
|
||||
public void onResponse(Call<ServiceRESTResponse<List<MtbAart>>> call, Response<ServiceRESTResponse<List<MtbAart>>> response) {
|
||||
analyzeAnswer(response, "getByCodMart", onComplete, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
|
||||
public void onFailure(Call<ServiceRESTResponse<List<MtbAart>>> call, Throwable t) {
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
@@ -112,26 +110,9 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
|
||||
articoloRESTConsumer.getByCodMart(
|
||||
new RetrieveArticoloByCodMartRequestDTO()
|
||||
.setCodMarts(Collections.singletonList(codMartToFind)))
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
|
||||
analyzeAnswer(response, "getByCodMart", (m) -> {
|
||||
if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
|
||||
onComplete.run(response.body().getEntityList().get(0));
|
||||
} else onComplete.run(null);
|
||||
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
getByCodMarts(Collections.singletonList(codMartToFind), artList -> {
|
||||
onComplete.run(artList != null && !artList.isEmpty() ? artList.get(0) : null);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public interface ArticoloRESTConsumerService {
|
||||
Call<ServiceRESTResponse<SearchArticoloByBarcodeResponseDTO>> searchByBarcode(@Body() SearchArticoloByBarcodeRequestDTO searchArticoloByBarcodeRequest);
|
||||
|
||||
@POST("wms/articolo/retrieveByCodMart")
|
||||
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
|
||||
Call<ServiceRESTResponse<List<MtbAart>>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
|
||||
|
||||
@POST("wms/articolo/updateBarcodeImballo")
|
||||
Call<ServiceRESTResponse<Void>> updateBarcodeImballo(@Body UpdateBarcodeImballoRequestDTO updateBarcodeImballoRequest);
|
||||
|
||||
@@ -18,6 +18,7 @@ import java.util.List;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
@@ -696,6 +697,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
public void printUL(PrintULRequestDTO printULRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
|
||||
|
||||
colliMagazzinoRESTConsumerService.printUL(printULRequestDTO)
|
||||
|
||||
@@ -64,10 +64,10 @@ public class MesRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public void getOrdiniLavorazione(Date dateStart, String flagEvaso, String codJfas, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getOrdiniLavorazione(String flagEvaso, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
|
||||
|
||||
mesRESTConsumerService.getOrdiniLavorazione(UtilityDate.formatDate(dateStart, UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH), flagEvaso, codJfas)
|
||||
mesRESTConsumerService.getOrdiniLavorazione(flagEvaso)
|
||||
.enqueue(new Callback<ServiceRESTResponse<List<OrdineLavorazioneDTO>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Response<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> response) {
|
||||
|
||||
@@ -20,7 +20,7 @@ public interface MesRESTConsumerService {
|
||||
|
||||
|
||||
@GET("mes_v2/getOrdiniLavorazione")
|
||||
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
|
||||
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("flagEvaso") String flagEvaso);
|
||||
|
||||
@GET("mes_v2/getOrdiniLavorazione")
|
||||
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas, @Query("codAnag") String codAnag);
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package it.integry.integrywmsnative.core.rest.deserializer;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParseException;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
|
||||
|
||||
public class StatoPartitaMagDeserializer implements JsonDeserializer<StatoPartitaMag> {
|
||||
@Override
|
||||
public StatoPartitaMag deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
if (json.isJsonNull()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int text = json.getAsInt();
|
||||
return StatoPartitaMag.from(text);
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,11 @@ public class CreateUDSRequestDTO {
|
||||
private Integer numCollo;
|
||||
private String serCollo;
|
||||
private int causaleCollo;
|
||||
|
||||
private String codJfas;
|
||||
private String codAnag;
|
||||
private String codVdes;
|
||||
private String rifOrd;
|
||||
private boolean orderRequired;
|
||||
private List<CreateUDSRequestOrderDTO> orders;
|
||||
|
||||
public String getCodMdep() {
|
||||
@@ -67,6 +71,51 @@ public class CreateUDSRequestDTO {
|
||||
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() {
|
||||
return orders;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package it.integry.integrywmsnative.core.rest.serializer;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class StatoPartitaMagSerializer implements JsonSerializer<StatoPartitaMag> {
|
||||
@Override
|
||||
public JsonElement serialize(StatoPartitaMag src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
return new JsonPrimitive(src.getText());
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,6 @@ public class DBSettingsModel {
|
||||
private boolean flagOrdinaArticoliOnScan;
|
||||
private boolean flagConsentiFuoriPianoLogistico;
|
||||
private boolean flagConsentiOrdineSenzaGriglia;
|
||||
private String docInterniCheckFornitore;
|
||||
private String produzioneDefaultCodAnag;
|
||||
private boolean flagPrintPackingListOnOrderClose;
|
||||
private boolean flagPrintEtichetteOnOrderClose;
|
||||
@@ -55,6 +54,7 @@ public class DBSettingsModel {
|
||||
private boolean notifyLotStatus = false;
|
||||
|
||||
private boolean groupShippingByCommodityGroup = true;
|
||||
private boolean groupPoductionByCommodityGroup;
|
||||
private boolean showCodFornSpedizione = true;
|
||||
private boolean flagCanCreateInventario = true;
|
||||
private boolean flagCanAddUnknownItemsInventario = true;
|
||||
@@ -69,6 +69,7 @@ public class DBSettingsModel {
|
||||
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false;
|
||||
private boolean flagEnableFastPickAccettazioneBolla = false;
|
||||
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
|
||||
private boolean flagAllowULRecoverAccettazioneBolla = true;
|
||||
private boolean flagOverflowQuantityWarning = false;
|
||||
|
||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||
@@ -332,15 +333,6 @@ public class DBSettingsModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDocInterniCheckFornitore() {
|
||||
return docInterniCheckFornitore;
|
||||
}
|
||||
|
||||
public DBSettingsModel setDocInterniCheckFornitore(String docInterniCheckFornitore) {
|
||||
this.docInterniCheckFornitore = docInterniCheckFornitore;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagAccettazioneUseQtaOrd() {
|
||||
return flagAccettazioneUseQtaOrd;
|
||||
}
|
||||
@@ -558,6 +550,15 @@ public class DBSettingsModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagAllowULRecoverAccettazioneBolla() {
|
||||
return flagAllowULRecoverAccettazioneBolla;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagAllowULRecoverAccettazioneBolla(boolean flagAllowULRecoverAccettazioneBolla) {
|
||||
this.flagAllowULRecoverAccettazioneBolla = flagAllowULRecoverAccettazioneBolla;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagOverflowQuantityWarning() {
|
||||
return flagOverflowQuantityWarning;
|
||||
}
|
||||
@@ -566,4 +567,13 @@ public class DBSettingsModel {
|
||||
this.flagOverflowQuantityWarning = flagOverflowQuantityWarning;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isGroupPoductionByCommodityGroup() {
|
||||
return groupPoductionByCommodityGroup;
|
||||
}
|
||||
|
||||
public DBSettingsModel setGroupPoductionByCommodityGroup(boolean groupPoductionByCommodityGroup) {
|
||||
this.groupPoductionByCommodityGroup = groupPoductionByCommodityGroup;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,6 +272,12 @@ public class SettingsManager {
|
||||
.setSection("PRODUZIONE")
|
||||
.setKeySection("FILTER_FORNTIORE_PROD")
|
||||
.setSetter(dbSettingsModelIstance::setFilterFornitoreProd));
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("PRODUZIONE")
|
||||
.setKeySection("FLAG_GROUP_BY_GRP_MERC")
|
||||
.setSetter(dbSettingsModelIstance::setGroupPoductionByCommodityGroup)
|
||||
.setDefaultValue(false));
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
@@ -334,11 +340,6 @@ public class SettingsManager {
|
||||
.setSection("ORDINI_A")
|
||||
.setKeySection("FLAG_CONSENTI_ORDINE_SENZA_GRIGLIA")
|
||||
.setSetter(dbSettingsModelIstance::setFlagConsentiOrdineSenzaGriglia));
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
|
||||
.setGestName("PVM")
|
||||
.setSection("DOC_INTERNI")
|
||||
.setKeySection("CHECK_FORNITORE")
|
||||
.setSetter(dbSettingsModelIstance::setDocInterniCheckFornitore));
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("ACCETTAZIONE")
|
||||
@@ -470,6 +471,12 @@ public class SettingsManager {
|
||||
.setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA")
|
||||
.setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla)
|
||||
.setDefaultValue(false));
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("ACCETTAZIONE_BOLLA")
|
||||
.setKeySection("FLAG_ALLOW_UL_RECOVER")
|
||||
.setSetter(dbSettingsModelIstance::setFlagAllowULRecoverAccettazioneBolla)
|
||||
.setDefaultValue(true));
|
||||
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class UtilityDB {
|
||||
|
||||
@@ -32,4 +37,9 @@ public class UtilityDB {
|
||||
return valueString;
|
||||
}
|
||||
|
||||
public static String listValueToString(List<String> lista) {
|
||||
lista = Stream.of(lista).map(UtilityDB::valueToString).toList();
|
||||
return StringUtils.join(lista,",");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -184,6 +184,16 @@ public class UtilityDate {
|
||||
} else return null;
|
||||
}
|
||||
|
||||
public static String formatDate(String dateToFormat, String format) {
|
||||
if (dateToFormat != null) {
|
||||
LocalDateTime data = recognizeLocalDateTimeWithExceptionHandler(dateToFormat);
|
||||
if (data != null) {
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
|
||||
return data.format(dateTimeFormatter);
|
||||
}else return null;
|
||||
} else return null;
|
||||
}
|
||||
|
||||
public static boolean isBeforeToday(LocalDateTime inputDate) {
|
||||
return inputDate != null && inputDate.toLocalDate().isBefore(getNow());
|
||||
}
|
||||
|
||||
@@ -7,10 +7,13 @@ import java.lang.reflect.Modifier;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
|
||||
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer;
|
||||
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer;
|
||||
import it.integry.integrywmsnative.core.rest.deserializer.StatoPartitaMagDeserializer;
|
||||
import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer;
|
||||
import it.integry.integrywmsnative.core.rest.serializer.LocalDateTimeSerializer;
|
||||
import it.integry.integrywmsnative.core.rest.serializer.StatoPartitaMagSerializer;
|
||||
|
||||
public class UtilityGson {
|
||||
|
||||
@@ -22,6 +25,8 @@ public class UtilityGson {
|
||||
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
|
||||
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
|
||||
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
|
||||
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagDeserializer())
|
||||
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagSerializer())
|
||||
.create();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
|
||||
public class UtilitySHA1 {
|
||||
|
||||
|
||||
public static String getSha1Hex(String clearString)
|
||||
{
|
||||
try
|
||||
{
|
||||
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
|
||||
messageDigest.update(clearString.getBytes(StandardCharsets.UTF_8));
|
||||
byte[] bytes = messageDigest.digest();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
for (byte b : bytes)
|
||||
{
|
||||
buffer.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
ignored.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -16,8 +16,6 @@ public class SitBollaAccettazioneDTO {
|
||||
private BigDecimal qtaDoc;
|
||||
private BigDecimal qtaCnfDoc;
|
||||
private BigDecimal numCnfDoc;
|
||||
private BigDecimal qtaAccettata;
|
||||
private BigDecimal numCnfAccettata;
|
||||
private BigDecimal qtaDaAccettare;
|
||||
private BigDecimal numCnfDaAccettare;
|
||||
|
||||
@@ -111,24 +109,6 @@ public class SitBollaAccettazioneDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaAccettata() {
|
||||
return qtaAccettata;
|
||||
}
|
||||
|
||||
public SitBollaAccettazioneDTO setQtaAccettata(BigDecimal qtaAccettata) {
|
||||
this.qtaAccettata = qtaAccettata;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfAccettata() {
|
||||
return numCnfAccettata;
|
||||
}
|
||||
|
||||
public SitBollaAccettazioneDTO setNumCnfAccettata(BigDecimal numCnfAccettata) {
|
||||
this.numCnfAccettata = numCnfAccettata;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaDaAccettare() {
|
||||
return qtaDaAccettare;
|
||||
}
|
||||
|
||||
@@ -6,9 +6,11 @@ import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.Gravity;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
@@ -37,6 +39,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
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.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
|
||||
@@ -50,7 +53,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.TestataBollaAccettazioneDTO;
|
||||
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.ui.AccettazioneBollaPickingListAdapter;
|
||||
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListModel;
|
||||
@@ -63,7 +65,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.base.DialogSimpleMessageView;
|
||||
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.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView;
|
||||
@@ -98,6 +100,10 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
||||
private List<TestataBollaAccettazioneDTO> testataBolle;
|
||||
private List<SitBollaAccettazioneDTO> sitArts;
|
||||
|
||||
|
||||
private PopupMenu fabPopupMenu;
|
||||
|
||||
|
||||
//Pass here all external parameters
|
||||
public static void startActivity(Context context, List<TestataBollaAccettazioneDTO> testataBolle, List<SitBollaAccettazioneDTO> sitArts) {
|
||||
Intent myIntent = new Intent(context, AccettazioneBollaPickingActivity.class);
|
||||
@@ -121,7 +127,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
||||
|
||||
mBindings = ActivityAccettazioneBollaPickingBinding.inflate(getLayoutInflater());
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setAccettazioneView(this);
|
||||
mBindings.setView(this);
|
||||
|
||||
setContentView(mBindings.getRoot());
|
||||
|
||||
@@ -145,6 +151,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
||||
this.initBarcodeReader();
|
||||
this.initRecyclerView();
|
||||
// this.initFilters();
|
||||
this.initFab();
|
||||
|
||||
boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
|
||||
|
||||
@@ -204,6 +211,36 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
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.getMenu().findItem(R.id.show_created_ul).setVisible(SettingsManager.iDB().isFlagAllowULRecoverAccettazioneBolla());
|
||||
|
||||
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;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void showFabMenu() {
|
||||
fabPopupMenu.show();
|
||||
}
|
||||
|
||||
private void refreshList() {
|
||||
|
||||
runOnUiThread(() -> {
|
||||
@@ -315,15 +352,13 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
||||
};
|
||||
|
||||
public void createNewLU() {
|
||||
this.mBindings.accettazioneOrdineInevasoFab.close(true);
|
||||
this.fabPopupMenu.dismiss();
|
||||
this.onLoadingStarted();
|
||||
|
||||
this.mViewModel.createNewLU(null, null, false, this::onLoadingEnded);
|
||||
}
|
||||
|
||||
public void showCreatedUL() {
|
||||
this.mBindings.accettazioneOrdineInevasoFab.close(true);
|
||||
|
||||
this.fabPopupMenu.dismiss();
|
||||
this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity);
|
||||
}
|
||||
|
||||
@@ -447,9 +482,8 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
|
||||
|
||||
@Override
|
||||
public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
|
||||
runOnUiThread(() -> {
|
||||
DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
|
||||
});
|
||||
DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
|
||||
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,10 +5,12 @@ import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.Gravity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
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.MtbColt;
|
||||
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.report.ReportManager;
|
||||
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.UtilityToast;
|
||||
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.SitArtOrdDTO;
|
||||
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.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
|
||||
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.DialogInputQuantityV2View;
|
||||
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 PopupMenu fabPopupMenu;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle 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.setLifecycleOwner(this);
|
||||
mBindings.setAccettazioneView(this);
|
||||
mBindings.setView(this);
|
||||
|
||||
MainApplication.appComponent
|
||||
.accettazionePickingComponent()
|
||||
@@ -142,6 +146,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
this.initBarcodeReader();
|
||||
this.initRecyclerView();
|
||||
this.initFilters();
|
||||
this.initFab();
|
||||
|
||||
boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
|
||||
|
||||
@@ -152,6 +157,28 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
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;
|
||||
});
|
||||
}
|
||||
|
||||
private void initFilters() {
|
||||
|
||||
var onPredicateChanged = new OnGeneralChangedCallback() {
|
||||
@@ -678,8 +705,12 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
};
|
||||
|
||||
|
||||
public void showFabMenu() {
|
||||
fabPopupMenu.show();
|
||||
}
|
||||
|
||||
public void createNewLU() {
|
||||
this.mBindings.accettazioneOrdineInevasoFab.close(true);
|
||||
this.fabPopupMenu.dismiss();
|
||||
this.onLoadingStarted();
|
||||
|
||||
this.mViewModel.createNewLU(null, null, false, () -> {
|
||||
@@ -688,8 +719,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
}
|
||||
|
||||
public void showCreatedUL() {
|
||||
this.mBindings.accettazioneOrdineInevasoFab.close(true);
|
||||
|
||||
this.fabPopupMenu.dismiss();
|
||||
this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity);
|
||||
}
|
||||
|
||||
@@ -773,9 +803,12 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
|
||||
@Override
|
||||
public void onInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
|
||||
runOnUiThread(() -> {
|
||||
DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
|
||||
});
|
||||
// runOnUiThread(() -> {
|
||||
// DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
|
||||
// });
|
||||
|
||||
DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
|
||||
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -178,6 +178,6 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
||||
@Override
|
||||
public void onDocumentEditRequest(SqlMtbColt document, List<DocumentoArtDTO> arts) {
|
||||
requireActivity()
|
||||
.startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc()));
|
||||
.startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc(), mDocInterniSetupDTO));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,10 +3,9 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException;
|
||||
@@ -34,24 +33,11 @@ public class DialogSelectDocInfoViewModel extends ViewModel {
|
||||
private final MutableLiveData<Boolean> noteRequired = new MutableLiveData<>(false);
|
||||
|
||||
public DialogSelectDocInfoViewModel() {
|
||||
tipoDoc.observeForever(val ->
|
||||
fornitoreRequired.postValue(
|
||||
val != null &&
|
||||
(val.getGestioneDoc().equals("T") ||
|
||||
val.getGestioneDoc().equals("A") ||
|
||||
(val.getGestioneDoc().equals("P") &&
|
||||
!val.getGestione().equals("L")))));
|
||||
tipoDoc.observeForever(val -> fornitoreRequired.postValue(val != null && (val.getGestioneDoc().equals("T") || val.getGestioneDoc().equals("A") || (val.getGestioneDoc().equals("P") && !val.getGestione().equals("L")))));
|
||||
|
||||
tipoDoc.observeForever(val ->
|
||||
documentRequired.postValue(
|
||||
val != null &&
|
||||
val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L")));
|
||||
tipoDoc.observeForever(val -> documentRequired.postValue(val != null && val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L")));
|
||||
|
||||
tipoDoc.observeForever(val ->
|
||||
noteRequired.postValue(
|
||||
val != null &&
|
||||
val.getGestioneDoc().equals("P") &&
|
||||
val.getGestione().equals("L")));
|
||||
tipoDoc.observeForever(val -> noteRequired.postValue(val != null && val.getGestioneDoc().equals("P") && val.getGestione().equals("L")));
|
||||
}
|
||||
|
||||
public MutableLiveData<List<FornitoreDTO>> getAvailableFornitori() {
|
||||
@@ -60,18 +46,15 @@ public class DialogSelectDocInfoViewModel extends ViewModel {
|
||||
|
||||
public void setFornitori(List<FornitoreDTO> fornitori) {
|
||||
tipoDoc.observeForever(val -> {
|
||||
availableFornitori.postValue(Stream.of(fornitori)
|
||||
.filter(forn -> {
|
||||
if (val.getGestioneDoc().equalsIgnoreCase("T")) {
|
||||
return forn.getTipoAnag().equalsIgnoreCase("D") &&
|
||||
forn.getGestioneAnag().equalsIgnoreCase(
|
||||
val.getGestione().equalsIgnoreCase("V") ? "V" : "L"
|
||||
);
|
||||
} else {
|
||||
return forn.getTipoAnag().equalsIgnoreCase("F");
|
||||
}
|
||||
})
|
||||
.toList());
|
||||
List<FornitoreDTO> availableFornitoriList = fornitori.stream().filter(forn -> {
|
||||
if (val.getGestioneDoc().equalsIgnoreCase("T")) {
|
||||
return forn.getTipoAnag().equalsIgnoreCase("D") && forn.getGestioneAnag().equalsIgnoreCase(val.getGestione().equalsIgnoreCase("V") ? "V" : "L");
|
||||
} else {
|
||||
return forn.getTipoAnag().equalsIgnoreCase("F");
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
availableFornitori.postValue(availableFornitoriList);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class FornitoreDTO {
|
||||
|
||||
|
||||
@@ -13,6 +15,8 @@ public class FornitoreDTO {
|
||||
|
||||
private String gestioneAnag;
|
||||
|
||||
private List<CheckFornitoreDTO> checkFornitoreDTO;
|
||||
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
@@ -57,4 +61,13 @@ public class FornitoreDTO {
|
||||
public String getLabel() {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ public class SaveDTO {
|
||||
private ColloDTO colloDTO;
|
||||
private InventarioDTO inventarioDTO;
|
||||
|
||||
private String UUID;
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
@@ -112,4 +114,13 @@ public class SaveDTO {
|
||||
public void setInventarioDTO(InventarioDTO inventarioDTO) {
|
||||
this.inventarioDTO = inventarioDTO;
|
||||
}
|
||||
|
||||
public String getUUID() {
|
||||
return UUID;
|
||||
}
|
||||
|
||||
public SaveDTO setUUID(String UUID) {
|
||||
this.UUID = UUID;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ public class TipoDocDTO {
|
||||
private String descrizione;
|
||||
private String gestione;
|
||||
private String gestioneDoc;
|
||||
private boolean flagChkTracciabilita;
|
||||
private boolean requireNote = false;
|
||||
|
||||
public String getCodDtip() {
|
||||
@@ -52,4 +53,13 @@ public class TipoDocDTO {
|
||||
this.requireNote = requireNote;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagChkTracciabilita() {
|
||||
return flagChkTracciabilita;
|
||||
}
|
||||
|
||||
public TipoDocDTO setFlagChkTracciabilita(boolean flagChkTracciabilita) {
|
||||
this.flagChkTracciabilita = flagChkTracciabilita;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,11 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
@@ -26,7 +28,6 @@ import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.di.BindableInteger;
|
||||
import it.integry.integrywmsnative.core.di.BindableString;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
@@ -37,11 +38,11 @@ import it.integry.integrywmsnative.core.model.MtbUntMis;
|
||||
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
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.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.ui.DocumentRowsListAdapter;
|
||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
|
||||
@@ -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_PRODUCTS_LIST = "productsList";
|
||||
private static final String DATA_KEY_TIPO_DOC = "docType";
|
||||
private static final String DATA_KEY_DOC_INTERNI = "docInterniSetup";
|
||||
|
||||
@Inject
|
||||
MtbColrDataSource documentRowsRepository;
|
||||
@@ -75,18 +77,23 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
public BindableString codMgrp = new BindableString();
|
||||
public BindableString codAnag = new BindableString();
|
||||
public BindableInteger prodsCount = new BindableInteger(0);
|
||||
public BindableBoolean isDocumentExportable = new BindableBoolean(false);
|
||||
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
|
||||
|
||||
public static Intent newInstance(Context context, SqlMtbColt document, List<DocumentoArtDTO> arts, TipoDocDTO tipoDoc) {
|
||||
|
||||
private PopupMenu fabPopupMenu;
|
||||
|
||||
public static Intent newInstance(Context context, SqlMtbColt document, List<DocumentoArtDTO> arts, TipoDocDTO tipoDoc, DocInterniSetupDTO mDocInterniSetupDTO) {
|
||||
Intent myIntent = new Intent(context, DocInterniEditFormActivity.class);
|
||||
|
||||
String doc = DataCache.addItem(document);
|
||||
String productsKey = DataCache.addItem(arts);
|
||||
String docType = DataCache.addItem(tipoDoc);
|
||||
String docInterniSetup = DataCache.addItem(mDocInterniSetupDTO);
|
||||
|
||||
myIntent.putExtra(DATA_KEY_DOCUMENT, doc);
|
||||
myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey);
|
||||
myIntent.putExtra(DATA_KEY_TIPO_DOC, docType);
|
||||
myIntent.putExtra(DATA_KEY_DOC_INTERNI, docInterniSetup);
|
||||
return myIntent;
|
||||
}
|
||||
|
||||
@@ -103,16 +110,18 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT));
|
||||
List<DocumentoArtDTO> productList = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST));
|
||||
TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC));
|
||||
DocInterniSetupDTO docInterniSetupDTO = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOC_INTERNI));
|
||||
|
||||
this.initViewModel();
|
||||
this.viewModel.setDocInterniSetupDTO(docInterniSetupDTO);
|
||||
this.viewModel.setDocument(document);
|
||||
this.viewModel.setProductsList(productList);
|
||||
this.viewModel.setTipoDoc(docType);
|
||||
|
||||
|
||||
this.initView();
|
||||
this.initBindables();
|
||||
this.initRecyclerView();
|
||||
this.initFab();
|
||||
}
|
||||
|
||||
private void initBindables() {
|
||||
@@ -145,7 +154,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
setSupportActionBar(binding.toolbar);
|
||||
binding.toolbar.setTitle(R.string.edit_doc);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
|
||||
|
||||
// FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
|
||||
|
||||
}
|
||||
|
||||
@@ -156,6 +166,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
|
||||
private void initRecyclerView() {
|
||||
this.viewModel.docRows.observe(this, this::refreshList);
|
||||
|
||||
DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList);
|
||||
listAdapter.setEmptyView(binding.scanArtSpinner);
|
||||
binding.documentRowsList.setAdapter(listAdapter);
|
||||
@@ -167,11 +178,58 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
});
|
||||
}
|
||||
|
||||
private void initFab() {
|
||||
fabPopupMenu = new PopupMenu(this, this.binding.mainFab,
|
||||
(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.doc_interni_edit_fab_menu, fabPopupMenu.getMenu());
|
||||
|
||||
|
||||
fabPopupMenu.setOnMenuItemClickListener(item -> {
|
||||
int itemId = item.getItemId();
|
||||
|
||||
if (itemId == R.id.export_document) {
|
||||
viewModel.exportDocument();
|
||||
} else if (itemId == R.id.delete_document) {
|
||||
viewModel.deleteDocument();
|
||||
} else if (itemId == R.id.hold_document) {
|
||||
viewModel.holdDocument();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
refreshFabMenu();
|
||||
}
|
||||
|
||||
private void refreshFabMenu() {
|
||||
fabPopupMenu.getMenu()
|
||||
.findItem(R.id.export_document)
|
||||
.setVisible(isDocumentExportable());
|
||||
}
|
||||
|
||||
public void showFabMenu() {
|
||||
fabPopupMenu.show();
|
||||
}
|
||||
|
||||
public void closeFabMenu() {
|
||||
fabPopupMenu.dismiss();
|
||||
}
|
||||
|
||||
private void refreshList(List<SqlMtbColr> sqlMtbColrs) {
|
||||
this.documentRowsObservableList.clear();
|
||||
this.documentRowsObservableList.addAll(this.viewModel.docRows.getValue());
|
||||
|
||||
this.prodsCount.set(this.viewModel.docRows.getValue().size());
|
||||
this.refreshFabMenu();
|
||||
}
|
||||
|
||||
private boolean isDocumentExportable() {
|
||||
return prodsCount.get() > 0;
|
||||
}
|
||||
|
||||
public void closeEdit() {
|
||||
this.onBackPressed();
|
||||
@@ -192,7 +250,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
super.onStart();
|
||||
SqlMtbColt document = this.viewModel.getDocument();
|
||||
if (document == null) {
|
||||
Toast.makeText(this, "Nesusn documento selezionato!", Toast.LENGTH_SHORT).show();
|
||||
Toast.makeText(this, "Nessun documento selezionato!", Toast.LENGTH_SHORT).show();
|
||||
closeEdit();
|
||||
return;
|
||||
}
|
||||
@@ -224,7 +282,6 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
@Override
|
||||
public void onRowsChanged(List<SqlMtbColr> rows) {
|
||||
this.prodsCount.set(rows.size());
|
||||
this.isDocumentExportable.set(rows.size() > 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -277,7 +334,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
this.onLoadingStarted();
|
||||
this.viewModel.saveRow(row, resultDTO);
|
||||
})
|
||||
.setOnAbort(() -> {})
|
||||
.setOnAbort(() -> {
|
||||
})
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@@ -288,7 +346,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
|
||||
@Override
|
||||
public void onDocDeleted() {
|
||||
this.binding.closeActivityFab.close(true);
|
||||
this.closeFabMenu();
|
||||
this.closeEdit();
|
||||
}
|
||||
|
||||
@@ -332,7 +390,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
|
||||
DialogSelectDocRowsView.newInstance(dataset, data -> {
|
||||
this.viewModel.dispatchRowEdit((SqlMtbColr) data.getOriginalModel(), articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
|
||||
}, () -> {})
|
||||
}, () -> {
|
||||
})
|
||||
.show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew");
|
||||
}
|
||||
|
||||
|
||||
@@ -4,12 +4,10 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -27,8 +25,12 @@ import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilitySHA1;
|
||||
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.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.TipoDocDTO;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
|
||||
@@ -44,10 +46,10 @@ public class DocInterniEditFormViewModel {
|
||||
private TipoDocDTO tipoDoc;
|
||||
|
||||
private boolean isCheckPartitaMag = false;
|
||||
private JSONObject checkFornitoreRules = null;
|
||||
|
||||
|
||||
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
|
||||
public MutableLiveData<DocInterniSetupDTO> docInterniSetupDTO = new MutableLiveData<>();
|
||||
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
|
||||
|
||||
@Inject
|
||||
@@ -59,12 +61,6 @@ public class DocInterniEditFormViewModel {
|
||||
}
|
||||
|
||||
public void init() {
|
||||
try {
|
||||
var docInterniCheckFornitore = SettingsManager.iDB().getDocInterniCheckFornitore();
|
||||
this.checkFornitoreRules = docInterniCheckFornitore != null ? new JSONObject(docInterniCheckFornitore) : null;
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -207,7 +203,12 @@ public class DocInterniEditFormViewModel {
|
||||
|
||||
private SaveDTO getSaveDto() {
|
||||
SqlMtbColt document = this.getDocument();
|
||||
|
||||
String UUID = SettingsManager.i().getUserSession().getDeviceId() + "-" + document.getId();
|
||||
UUID = UtilitySHA1.getSha1Hex(UUID);
|
||||
|
||||
SaveDTO saveDTO = new SaveDTO();
|
||||
saveDTO.setUUID(UUID);
|
||||
saveDTO.setIdDisp("1");
|
||||
saveDTO.setGestione(document.getGestione());
|
||||
saveDTO.setCodMdep(document.getCodMdep());
|
||||
@@ -236,6 +237,8 @@ public class DocInterniEditFormViewModel {
|
||||
artDto.setColli(BigDecimal.valueOf(row.getNumCnf()));
|
||||
artDto.setUntMis(row.getUntMis());
|
||||
artDto.setCodMart(row.getCodMart());
|
||||
artDto.setSystemNote(row.getNote());
|
||||
artDto.setPartitaMag(row.getPartitaMag());
|
||||
if (row.getDataScad() != null) {
|
||||
artDto.setDataScad(row.getDataScad());
|
||||
}
|
||||
@@ -257,35 +260,54 @@ public class DocInterniEditFormViewModel {
|
||||
this.initCheckFornitore();
|
||||
}
|
||||
|
||||
public void setDocInterniSetupDTO(DocInterniSetupDTO docInterniSetupDTO) {
|
||||
this.docInterniSetupDTO.setValue(docInterniSetupDTO);
|
||||
}
|
||||
|
||||
private void initCheckFornitore() {
|
||||
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;
|
||||
|
||||
boolean isCheckPartitaMag = false;
|
||||
List<FornitoreDTO> filterFornitori = Stream.of(fornitori)
|
||||
.filter(x -> x.getCodAnag().equals(doc.getCodAnag()))
|
||||
.toList();
|
||||
List<CheckFornitoreDTO> checkFornitoreDTO;
|
||||
|
||||
try {
|
||||
if (this.checkFornitoreRules != null && this.checkFornitoreRules.has("value")) {
|
||||
isCheckPartitaMag = this.checkFornitoreRules.getBoolean("value");
|
||||
} else if (this.checkFornitoreRules != null) {
|
||||
String key = doc.getCodAnag();
|
||||
if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) {
|
||||
key += "-" + doc.getCodVdes();
|
||||
}
|
||||
if (this.checkFornitoreRules.has(key) &&
|
||||
((String) ((JSONObject) this.checkFornitoreRules.get(key))
|
||||
.get(doc.getCodDtipProvv()))
|
||||
.equalsIgnoreCase("check-partitaMag")) {
|
||||
isCheckPartitaMag = true;
|
||||
}
|
||||
TipoDocDTO tipoDoc = Stream.of(tipoDocDTO)
|
||||
.filter(x -> x.getCodDtip().equals(doc.getCodDtipProvv()))
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
if (tipoDoc.isFlagChkTracciabilita()) {
|
||||
this.isCheckPartitaMag = tipoDoc.isFlagChkTracciabilita();
|
||||
} else {
|
||||
if (filterFornitori.isEmpty())
|
||||
return;
|
||||
|
||||
if (doc.getCodVdes() == null) {
|
||||
checkFornitoreDTO = Stream.of(filterFornitori)
|
||||
.filter(x -> x.getCodVdes() == null).findFirst().get().getCheckFornitoreDTO();
|
||||
} else {
|
||||
checkFornitoreDTO = Stream.of(filterFornitori)
|
||||
.filterNot(x -> x.getCodVdes() == null)
|
||||
.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() {
|
||||
@@ -330,6 +352,7 @@ public class DocInterniEditFormViewModel {
|
||||
row.setQtaCol(resultDTO.getQtaTot().floatValue());
|
||||
row.setNote(resultDTO.getNote());
|
||||
row.setDataScad(resultDTO.getDataScad());
|
||||
row.setPartitaMag(resultDTO.getPartitaMag());
|
||||
if (row.getId() > 0) {
|
||||
this.mtbColrRepository.update(row, id -> {
|
||||
this.fetchDocumentRows();
|
||||
|
||||
@@ -4,8 +4,11 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.view.Gravity;
|
||||
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableField;
|
||||
@@ -18,8 +21,10 @@ import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
|
||||
import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding;
|
||||
import it.integry.integrywmsnative.gest.contenuto_bancale.ui.ContenutoBancaleListAdapter;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
@@ -38,11 +43,14 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
|
||||
@Inject
|
||||
PrinterRESTConsumer mPrinterRESTConsumer;
|
||||
|
||||
@Inject
|
||||
ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
|
||||
public final ObservableField<MtbColt> mtbColt = new ObservableField<>();
|
||||
public final ObservableField<String> descrizioneDepo = new ObservableField<>();
|
||||
|
||||
public ObservableField<Boolean> fabVisible = new ObservableField<>(true);
|
||||
public ObservableField<Boolean> recoverFabMenuVisible = new ObservableField<>(false);
|
||||
private PopupMenu fabPopupMenu;
|
||||
|
||||
private String mReportName;
|
||||
|
||||
@@ -95,11 +103,11 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
|
||||
|
||||
recoverFabMenuVisible.set(canRecoverUL);
|
||||
|
||||
initRecyclerView();
|
||||
initColloInfo();
|
||||
this.initRecyclerView();
|
||||
this.initColloInfo();
|
||||
this.initFab();
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
this.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false);
|
||||
|
||||
@@ -115,13 +123,39 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
|
||||
this.bindings.contenutoBancaleMainList.setAdapter(adapter);
|
||||
}
|
||||
|
||||
|
||||
private void initColloInfo() {
|
||||
mDepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> {
|
||||
descrizioneDepo.set("(" + depo.getDescrizione() + ")");
|
||||
}, this::onError);
|
||||
}
|
||||
|
||||
private void initFab() {
|
||||
fabPopupMenu = new PopupMenu(this, this.bindings.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.contenuto_bancale_fab_menu, fabPopupMenu.getMenu());
|
||||
|
||||
if(mtbColt.get().isDocumentPresent()){
|
||||
fabPopupMenu.getMenu().removeItem(R.id.delete_ul);
|
||||
}
|
||||
|
||||
fabPopupMenu.setOnMenuItemClickListener(item -> {
|
||||
int itemId = item.getItemId();
|
||||
|
||||
if (itemId == R.id.recover_ul) {
|
||||
this.recoverUL();
|
||||
} else if (itemId == R.id.print_ul) {
|
||||
this.printUL();
|
||||
} else if (itemId == R.id.delete_ul) {
|
||||
this.deleteUL();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
public void recoverUL() {
|
||||
Intent data = new Intent();
|
||||
@@ -132,9 +166,7 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
|
||||
this.finish();
|
||||
}
|
||||
|
||||
|
||||
public void printUL() {
|
||||
this.bindings.contenutoBancaleFab.close(true);
|
||||
this.onLoadingStarted();
|
||||
try {
|
||||
this.mPrinterRESTConsumer.printCollo(mtbColt.get(),
|
||||
@@ -153,11 +185,42 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteUL() {
|
||||
String text = getResources().getString(R.string.alert_delete_UL);
|
||||
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> {
|
||||
this.onLoadingStarted();
|
||||
|
||||
try {
|
||||
DeleteULRequestDTO deleteULRequestDTO = new DeleteULRequestDTO()
|
||||
.setMtbColt(this.mtbColt.get());
|
||||
|
||||
mColliMagazzinoRESTConsumer.deleteUL(deleteULRequestDTO, () -> {
|
||||
Intent data = new Intent();
|
||||
String key = DataCache.addItem(this.mtbColt.get());
|
||||
String keyDeleteUL = DataCache.addItem(true);
|
||||
data.putExtra("key", key)
|
||||
.putExtra("keyDeleteUL", keyDeleteUL);
|
||||
|
||||
this.onLoadingEnded();
|
||||
this.setResult(RESULT_OK, data);
|
||||
this.finish();
|
||||
}, this::onError);
|
||||
} catch (Exception ex) {
|
||||
this.onError(ex);
|
||||
}
|
||||
}), () -> {
|
||||
}).show(this.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
public void showFabMenu() {
|
||||
fabPopupMenu.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
getOnBackPressedDispatcher().onBackPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -276,7 +276,7 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
||||
}
|
||||
|
||||
if (inventarioArtDTO.isPlu()) {
|
||||
if (pickingObjectDTO.getTempPickData() != null && inventarioArtDTO.isPlu()) {
|
||||
this.saveNewRow(pickingObjectDTO, initialNumCnf, initialQtaCnf, initialQtaTot, null, barcode);
|
||||
} else {
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivi
|
||||
import it.integry.integrywmsnative.gest.lista_bancali.ui.ListaColliMainListAdapter;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
|
||||
public class ListaBancaliActivity extends BaseActivity implements ListaBancaliViewModel.Listener{
|
||||
public class ListaBancaliActivity extends BaseActivity implements ListaBancaliViewModel.Listener {
|
||||
|
||||
private static class Key {
|
||||
private static final String MtbColtsKey = "mtbColtsKey";
|
||||
@@ -47,7 +47,6 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi
|
||||
private static final int PICK_UL_REQUEST = 1; // The request code
|
||||
|
||||
|
||||
|
||||
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, String reportName) {
|
||||
return createIntent(context, items, canRecoverUlAction, true, reportName);
|
||||
}
|
||||
@@ -126,17 +125,16 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
getOnBackPressedDispatcher().onBackPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
public void startContenutoBancaleActivity(MtbColt item){
|
||||
public void startContenutoBancaleActivity(MtbColt item) {
|
||||
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl.run(item), mReportName);
|
||||
startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
@@ -144,9 +142,20 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi
|
||||
if (requestCode == PICK_UL_REQUEST) {
|
||||
// Make sure the request was successful
|
||||
if (resultCode == RESULT_OK) {
|
||||
Object keyDeleteUL = DataCache.retrieveItem(data.getStringExtra("keyDeleteUL"));
|
||||
boolean deleteUL = keyDeleteUL != null && (boolean) keyDeleteUL;
|
||||
|
||||
if (deleteUL) {
|
||||
this.onLoadingStarted();
|
||||
MtbColt item = DataCache.retrieveItem(data.getStringExtra("key"));
|
||||
mtbColts.remove(item);
|
||||
this.initRecyclerView();
|
||||
this.onLoadingEnded();
|
||||
} else {
|
||||
this.setResult(RESULT_OK, data);
|
||||
this.finish();
|
||||
}
|
||||
|
||||
this.setResult(RESULT_OK, data);
|
||||
this.finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,10 +213,16 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
(recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA ||
|
||||
recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) {
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
if(recoveredMtbColtDto.getTestateOrdini() != null &&
|
||||
!recoveredMtbColtDto.getTestateOrdini().isEmpty()){
|
||||
codMdep = recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep();
|
||||
}
|
||||
|
||||
var closeUDSRequestDto = new CloseUDSRequestDTO()
|
||||
.setMtbColt(recoveredMtbColt)
|
||||
//.setPrintSSCC(shouldPrint)
|
||||
.setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep());
|
||||
.setOrderCodMdep(codMdep);
|
||||
|
||||
RunnableArgs<CloseUDSResponseDTO> onRequestComplete = closeUDSResponseDto -> {
|
||||
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
||||
|
||||
@@ -7,7 +7,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutom
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterClienteLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterDepositoLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaeseLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
|
||||
|
||||
@@ -60,7 +60,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutom
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterClienteLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterDepositoLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaeseLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
|
||||
@@ -825,6 +825,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
|
||||
int alreadyRegisteredUL = alreadyRegisteredMtbColts.size();
|
||||
|
||||
boolean divideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
|
||||
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
|
||||
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size())
|
||||
+ "<br />" +
|
||||
@@ -839,7 +841,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
mCurrentGestioneCol,
|
||||
mCurrentSegnoCol,
|
||||
MtbColr.Causale.DEFAULT,
|
||||
mDialogRowInfo)
|
||||
mDialogRowInfo,
|
||||
divideByGrpMerc)
|
||||
).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
|
||||
@@ -65,33 +65,31 @@ public class OrdiniUscitaElencoViewModel {
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
new Thread(() -> {
|
||||
Date loadingStartDate = new Date();
|
||||
Date loadingStartDate = new Date();
|
||||
|
||||
this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd,
|
||||
ordiniLavorazione -> {
|
||||
this.mOrderList.postValue(Stream.of(ordiniLavorazione)
|
||||
.map(x -> {
|
||||
try {
|
||||
return OrdiniUscitaElencoDTO.fromParent(x);
|
||||
} catch (Exception ex) {
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.toList());
|
||||
this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd,
|
||||
ordiniLavorazione -> {
|
||||
this.mOrderList.postValue(Stream.of(ordiniLavorazione)
|
||||
.map(x -> {
|
||||
try {
|
||||
return OrdiniUscitaElencoDTO.fromParent(x);
|
||||
} catch (Exception ex) {
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.toList());
|
||||
|
||||
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
|
||||
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
|
||||
|
||||
if (2 - forcedDelaySecs > 0) {
|
||||
try {
|
||||
Thread.sleep((2 - forcedDelaySecs) * 1000);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
if (2 - forcedDelaySecs > 0) {
|
||||
try {
|
||||
Thread.sleep((2 - forcedDelaySecs) * 1000);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}).start();
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
@@ -42,7 +43,6 @@ import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.VtbDest;
|
||||
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.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
|
||||
@@ -54,6 +54,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
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_linea_prod.DialogAskLineaProdView;
|
||||
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.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
@@ -86,16 +87,21 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private GestioneEnum mCurrentGestione;
|
||||
private boolean mAskCliente;
|
||||
private boolean mAskLineaProd;
|
||||
|
||||
public PickingLiberoFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum) {
|
||||
public static PickingLiberoFragment newInstance(@StringRes int title, GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) {
|
||||
PickingLiberoFragment fragment = new PickingLiberoFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
args.putInt("title", title);
|
||||
args.putString("gestione", gestioneEnum.getText());
|
||||
args.putBoolean("askCliente", askCliente);
|
||||
args.putBoolean("askLineaProd", askLineaProd);
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
@@ -104,7 +110,6 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
mToolbarTitleText = titleText;
|
||||
mToolbarTitleText.setText(context.getText(R.string.free_picking_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -113,6 +118,11 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
setRetainInstance(true);
|
||||
|
||||
mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione"));
|
||||
mAskCliente = getArguments().getBoolean("askCliente");
|
||||
mAskLineaProd = getArguments().getBoolean("askLineaProd");
|
||||
|
||||
|
||||
mToolbarTitleText.setText(getText(getArguments().getInt("title")).toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -139,8 +149,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
|
||||
this.initRecyclerView();
|
||||
|
||||
boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero();
|
||||
mViewModel.init(flagAskCliente, mCurrentGestione);
|
||||
mViewModel.init(mAskCliente, mAskLineaProd, mCurrentGestione);
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
@@ -263,7 +272,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
).show(requireActivity().getSupportFragmentManager(), DialogSimpleMessageView.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -284,7 +293,13 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
@Override
|
||||
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable 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
|
||||
@@ -294,7 +309,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
||||
onAbort.run();
|
||||
BarcodeManager.enable();
|
||||
})
|
||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
.show(requireActivity().getSupportFragmentManager(), DialogChooseArtsFromMtbColrList.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,7 +6,9 @@ import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
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.ColliSpedizioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
@@ -21,8 +23,17 @@ public class PickingLiberoModule {
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
PosizioniRESTConsumer posizioniRESTConsumer,
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
|
||||
@@ -32,14 +33,18 @@ import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
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.ColliSpedizioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
||||
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.Ean13PesoModel;
|
||||
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.uds.CreateUDSRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
@@ -63,8 +68,12 @@ public class PickingLiberoViewModel {
|
||||
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
|
||||
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
|
||||
|
||||
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
|
||||
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
|
||||
private final ColliSpedizioneRESTConsumer mColliSpedizioneRESTConsumer;
|
||||
|
||||
private boolean mFlagAskCliente;
|
||||
private boolean mFlagAskLineaProd;
|
||||
private GestioneEnum mDefaultGestione;
|
||||
|
||||
|
||||
@@ -77,19 +86,30 @@ public class PickingLiberoViewModel {
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
PosizioniRESTConsumer posizioniRESTConsumer,
|
||||
GiacenzaRESTConsumer giacenzaRESTConsumer,
|
||||
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
|
||||
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
|
||||
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
|
||||
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer) {
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mPosizioniRESTConsumer = posizioniRESTConsumer;
|
||||
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
|
||||
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.mFlagAskLineaProd = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskLineaProd;
|
||||
this.mDefaultGestione = defaultGestione;
|
||||
|
||||
|
||||
switch (mDefaultGestione) {
|
||||
case LAVORAZIONE -> this.mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
|
||||
case VENDITA -> this.mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -192,7 +212,14 @@ public class PickingLiberoViewModel {
|
||||
}
|
||||
} else if (mtbColtList.size() == 1) {
|
||||
this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
|
||||
pickMerceULtoUL(mtbColt, articolo, onComplete);
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
pickMerceULtoUL(mtbColt, articolo, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
}, this::sendError);
|
||||
} else {
|
||||
this.sendError(new TooManyLUFoundInMonoLUPositionException());
|
||||
@@ -216,7 +243,14 @@ public class PickingLiberoViewModel {
|
||||
if (mtbColtScanned == null) {
|
||||
this.sendError(new NoLUFoundException());
|
||||
} else if ((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) {
|
||||
pickMerceULtoUL(mtbColtScanned, onComplete);
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColtScanned.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
pickMerceULtoUL(mtbColtScanned, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
} else {
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
@@ -279,46 +313,57 @@ public class PickingLiberoViewModel {
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
if (this.mFlagAskCliente) {
|
||||
this.sendLUClienteRequired((vtbDest, codJcom) -> {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
|
||||
}, () -> {
|
||||
|
||||
});
|
||||
} 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();
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields(mDefaultGestione)
|
||||
var createUDSRequest = new CreateUDSRequestDTO()
|
||||
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
|
||||
// .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag())
|
||||
.setSegno(-1)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
|
||||
.setOrderRequired(mFlagAskLineaProd);
|
||||
|
||||
if (customNumCollo != null) {
|
||||
mtbColt.setNumCollo(customNumCollo);
|
||||
createUDSRequest.setNumCollo(customNumCollo);
|
||||
}
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(customSerCollo)) {
|
||||
mtbColt.setSerCollo(customSerCollo);
|
||||
createUDSRequest.setSerCollo(customSerCollo);
|
||||
}
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(codJfas)) {
|
||||
createUDSRequest.setCodJfas(codJfas);
|
||||
}
|
||||
|
||||
if (vtbDest != null) {
|
||||
mtbColt.setCodAnag(vtbDest.getCodAnag());
|
||||
mtbColt.setCodVdes(vtbDest.getCodVdes());
|
||||
createUDSRequest.setCodAnag(vtbDest.getCodAnag());
|
||||
createUDSRequest.setCodVdes(vtbDest.getCodVdes());
|
||||
}
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(codJcom)) {
|
||||
mtbColt.setCodJcom(codJcom);
|
||||
}
|
||||
|
||||
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
||||
mColliScaricoRESTConsumer.createUDS(createUDSRequest, mtbColt -> {
|
||||
mtbColt
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
this.mCurrentMtbColt = mtbColt;
|
||||
@@ -328,6 +373,43 @@ public class PickingLiberoViewModel {
|
||||
if (onComplete != null) onComplete.run();
|
||||
this.sendLUOpened(mtbColt);
|
||||
}, 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) {
|
||||
@@ -868,6 +950,10 @@ public class PickingLiberoViewModel {
|
||||
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) {
|
||||
if (this.mListener != null)
|
||||
mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort);
|
||||
@@ -924,6 +1010,8 @@ public class PickingLiberoViewModel {
|
||||
|
||||
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 onItemDispatched(PickingObjectDTO pickingObjectDTO,
|
||||
|
||||
@@ -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.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||
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.DialogInputQuantityV2View;
|
||||
|
||||
@@ -276,7 +276,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
|
||||
@Override
|
||||
public void onInfoAggiuntiveRequired(RunnableArgss<String, MtbTCol> onComplete) {
|
||||
DialogInfoAggiuntiveLU.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
|
||||
DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded)
|
||||
.show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -41,7 +42,7 @@ import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneElenc
|
||||
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_picking.AccettazioneOrdiniPickingActivity;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.OrdineProduzioneFilterViewModel;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
|
||||
@@ -302,7 +303,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
||||
private List<MainListProdOrdineProduzioneElencoListModel> convertDataModelToListModel(List<OrdineAccettazioneInevasoDTO> dataList) {
|
||||
|
||||
return Stream.of(dataList)
|
||||
.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
|
||||
//.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
|
||||
.sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : ""))
|
||||
.map(x -> {
|
||||
MainListProdOrdineProduzioneElencoListModel listModel = new MainListProdOrdineProduzioneElencoListModel();
|
||||
@@ -313,15 +314,20 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
||||
|
||||
listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||
|
||||
List<MainListProdOrdineProduzioneElencoClienteListModel> clienti = Stream.of(dataList)
|
||||
.filter(y -> y.getBarcode().equals(x.getBarcode()))
|
||||
.map(y -> new MainListProdOrdineProduzioneElencoClienteListModel()
|
||||
.setPrimaryText(y.getRifOrd())
|
||||
.setRightText(y.getCodJcom())
|
||||
.setOriginalModel(y))
|
||||
.toList();
|
||||
// List<MainListProdOrdineProduzioneElencoClienteListModel> clienti = Stream.of(dataList)
|
||||
// .filter(y -> y.getBarcode().equals(x.getBarcode()))
|
||||
// .map(y -> new MainListProdOrdineProduzioneElencoClienteListModel()
|
||||
// .setPrimaryText(y.getRifOrd())
|
||||
// .setRightText(y.getCodJcom())
|
||||
// .setOriginalModel(y))
|
||||
// .toList();
|
||||
|
||||
listModel.setClientiListModel(clienti);
|
||||
MainListProdOrdineProduzioneElencoClienteListModel cliente = new MainListProdOrdineProduzioneElencoClienteListModel()
|
||||
.setPrimaryText(x.getRifOrd())
|
||||
.setRightText(x.getCodJcom())
|
||||
.setOriginalModel(x);
|
||||
|
||||
listModel.setClientiListModel(Collections.singletonList(cliente));
|
||||
|
||||
return listModel;
|
||||
})
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||
|
||||
public class ProdFabbisognoLineeProdBindings {
|
||||
public static final int NUM_ORD_FILTER_ID = 0;
|
||||
|
||||
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
|
||||
|
||||
put(NUM_ORD_FILTER_ID, new FilterChipDTO()
|
||||
.setID(NUM_ORD_FILTER_ID)
|
||||
.setFilterChipText("Numero ordine")
|
||||
.setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
|
||||
|
||||
}};
|
||||
}
|
||||
@@ -8,29 +8,54 @@ import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
import com.ravikoradiya.liveadapter.Type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeListSingleItemBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaView;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
|
||||
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.filters.ProdFabbisognoLineeProdFilterViewModel;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
@@ -39,12 +64,15 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbiso
|
||||
*/
|
||||
public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITitledFragment, ProdFabbisognoLineeProdViewModel.Listener {
|
||||
|
||||
public BindableBoolean fabVisible = new BindableBoolean(false);
|
||||
|
||||
@Inject
|
||||
ProdFabbisognoLineeProdViewModel mViewModel;
|
||||
|
||||
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
private final ObservableArrayList<Object> mProdFabbisognoItemModel = new ObservableArrayList<>();
|
||||
private FragmentProdFabbisognoLineeProdBinding mBindings;
|
||||
private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel();
|
||||
|
||||
public ProdFabbisognoLineeProdFragment() {
|
||||
// Required empty public constructor
|
||||
@@ -66,13 +94,18 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
Bundle savedInstanceState) {
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_fabbisogno_linee_prod, container, false);
|
||||
|
||||
mBindings.setLifecycleOwner(this);
|
||||
|
||||
MainApplication.appComponent
|
||||
.prodFabbisognoLineeProdComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mViewModel.setListener(this);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(mViewModel);
|
||||
|
||||
this.initRecyclerView();
|
||||
this.initFilters();
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
@@ -80,25 +113,162 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
this.mViewModel.setListener(this);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
DialogAskMagazzinoProssimitaView
|
||||
.newInstance((jtbFase, startDate, endDate) -> {
|
||||
// if (jtbFase == null) {
|
||||
// ((IPoppableActivity) getActivity()).pop();
|
||||
// } else {
|
||||
//Load fabbisogno
|
||||
this.mViewModel.loadFabbisogno(startDate, endDate, codMdep, this::startPickingActivity);
|
||||
// }
|
||||
}, () -> {
|
||||
popMe();
|
||||
})
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
mViewModel.init();
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> {
|
||||
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
|
||||
|
||||
mFilterViewModel.init(mViewModel.getOrdiniList().getValue());
|
||||
this.refreshList(null);
|
||||
});
|
||||
|
||||
var itemTypeHeader = new Type<GroupTitleModel, FragmentProdFabbisognoLineeTitleItemBinding>(R.layout.fragment_prod_fabbisogno_linee_title_item, BR.item);
|
||||
var itemType = new Type<ProdFabbisognoLineeItemModelDto, FragmentProdFabbisognoLineeListSingleItemBinding>(R.layout.fragment_prod_fabbisogno_linee_list_single_item, BR.item);
|
||||
|
||||
itemTypeHeader.onClick(x -> {
|
||||
var item = x.getBinding().getItem();
|
||||
item.getSelected().set(!item.getSelected().get());
|
||||
|
||||
Stream.of(mProdFabbisognoItemModel)
|
||||
.filter(y -> y instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) y).getOrdineLavorazioneDTO().getCodJfas().equals(item.getTitle()))
|
||||
.forEach(y -> {
|
||||
((ProdFabbisognoLineeItemModelDto) y).getSelected().set(item.selected.get());
|
||||
});
|
||||
|
||||
fabVisible.set(Stream.of(mProdFabbisognoItemModel)
|
||||
.filter(y -> y instanceof ProdFabbisognoLineeItemModelDto)
|
||||
.anyMatch(y -> ((ProdFabbisognoLineeItemModelDto) y).getSelected().get()));
|
||||
|
||||
return null;
|
||||
});
|
||||
|
||||
itemType.onClick(x -> {
|
||||
var item = x.getBinding().getItem();
|
||||
item.getSelected().set(!item.getSelected().get());
|
||||
|
||||
fabVisible.set(Stream.of(mProdFabbisognoItemModel)
|
||||
.filter(y -> y instanceof ProdFabbisognoLineeItemModelDto)
|
||||
.anyMatch(y -> ((ProdFabbisognoLineeItemModelDto) y).getSelected().get()));
|
||||
|
||||
return null;
|
||||
});
|
||||
|
||||
new LiveAdapter(mProdFabbisognoItemModel)
|
||||
.map(GroupTitleModel.class, itemTypeHeader)
|
||||
.map(ProdFabbisognoLineeItemModelDto.class, itemType)
|
||||
.into(this.mBindings.inventarioList);
|
||||
}
|
||||
|
||||
private void refreshList(List<ProdFabbisognoLineeItemModelDto> filteredList) {
|
||||
List<ProdFabbisognoLineeItemModelDto> tmpList;
|
||||
|
||||
if (filteredList != null) {
|
||||
tmpList = filteredList;
|
||||
} else if (mFilterViewModel != null) {
|
||||
mFilterViewModel.applyAllTests();
|
||||
tmpList = mFilterViewModel.getCurrentList().getValue();
|
||||
} else {
|
||||
tmpList = mViewModel.getOrdiniList().getValue();
|
||||
}
|
||||
this.mProdFabbisognoItemModel.clear();
|
||||
if (tmpList != null) {
|
||||
this.mProdFabbisognoItemModel.addAll(convertDataModelToListModel(tmpList));
|
||||
}
|
||||
}
|
||||
|
||||
private List<Object> convertDataModelToListModel(List<ProdFabbisognoLineeItemModelDto> itemModel) {
|
||||
|
||||
Stream.of(itemModel)
|
||||
.sorted(Comparator.comparing(x -> x.getOrdineLavorazioneDTO().getCodJfas()))
|
||||
.toList();
|
||||
|
||||
List<Object> listaFinale = new ArrayList<>();
|
||||
String currentGroup = null;
|
||||
|
||||
for (ProdFabbisognoLineeItemModelDto item : itemModel) {
|
||||
OrdineLavorazioneDTO ordineLavorazione = item.getOrdineLavorazioneDTO();
|
||||
String codJfas = ordineLavorazione.getCodJfas();
|
||||
|
||||
if (!codJfas.equals(currentGroup)) {
|
||||
listaFinale.add(new GroupTitleModel().setTitle(codJfas));
|
||||
currentGroup = codJfas;
|
||||
}
|
||||
|
||||
listaFinale.add(item);
|
||||
}
|
||||
|
||||
return listaFinale;
|
||||
}
|
||||
|
||||
private void initFilters() {
|
||||
var onPredicateChanged = new OnGeneralChangedCallback() {
|
||||
@Override
|
||||
public void run() {
|
||||
refreshList(null);
|
||||
}
|
||||
};
|
||||
|
||||
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||
|
||||
for (var filterChipDTO : ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet()) {
|
||||
|
||||
FilterChipView filterChipView = new FilterChipView(
|
||||
requireActivity(),
|
||||
filterChipDTO.getValue().getFilterChipText(),
|
||||
v -> initBottomSheetDialogFilter(filterChipDTO.getValue()));
|
||||
|
||||
if (filterChipDTO.getKey() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) {
|
||||
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) {
|
||||
filterChipView.disableCloseIcon();
|
||||
|
||||
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||
mBindings.filterChipsGroup.addView(filterChipView);
|
||||
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||
} else {
|
||||
filterChipView.enableCloseIcon();
|
||||
|
||||
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||
mBindings.filterChipsGroup.addView(filterChipView, 0);
|
||||
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||
}
|
||||
}
|
||||
});
|
||||
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null));
|
||||
}
|
||||
this.mBindings.filterChipsGroup.addView(filterChipView);
|
||||
}
|
||||
}
|
||||
|
||||
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
|
||||
filterChipDTO
|
||||
.getFilterLayoutView()
|
||||
.setFilterName(filterChipDTO.getFilterChipText())
|
||||
.setContext(requireActivity());
|
||||
|
||||
var filterLayoutView = filterChipDTO
|
||||
.getFilterLayoutView();
|
||||
|
||||
if (filterChipDTO.getID() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) {
|
||||
((FilterNumeroOrdineLayoutView) filterLayoutView)
|
||||
.setAllNumOrds(mFilterViewModel.getAllNumOrds())
|
||||
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
|
||||
.setOnFilterApplied(mFilterViewModel::setNumOrdFilter)
|
||||
.setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue()))
|
||||
.filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ?
|
||||
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get()))
|
||||
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
|
||||
.toList());
|
||||
}
|
||||
|
||||
if (!filterLayoutView.isAdded())
|
||||
filterLayoutView.show(requireActivity().getSupportFragmentManager(), "TAG");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
@@ -106,6 +276,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
onPreDestroy.run();
|
||||
}
|
||||
|
||||
mViewModel.setListener(null);
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@@ -114,6 +285,30 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
titleText.setText(context.getText(R.string.prod_fabbisogno_linee_prod_title).toString());
|
||||
}
|
||||
|
||||
public void dispatchOrders() {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel)
|
||||
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
|
||||
.map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd().toString())
|
||||
.toList());
|
||||
|
||||
Date dataInizio = Stream.of(mProdFabbisognoItemModel)
|
||||
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
|
||||
.map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getDataOrdD())
|
||||
.min(Date::compareTo)
|
||||
.orElse(null);
|
||||
|
||||
Date dataFine = Stream.of(mProdFabbisognoItemModel)
|
||||
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
|
||||
.map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getDataOrdD())
|
||||
.max(Date::compareTo)
|
||||
.orElse(null);
|
||||
|
||||
this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, this::startPickingActivity);
|
||||
|
||||
}
|
||||
|
||||
private void startPickingActivity(List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
@@ -125,7 +320,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
.setQtaOrd(x.getQtaFabbisogno())
|
||||
.setNumCnfOrd(x.getNumCnfFabbisogno())
|
||||
.setQtaCnfOrd(UtilityBigDecimal.divide(x.getQtaFabbisogno(), x.getNumCnfFabbisogno()))
|
||||
.setFlagEnablePickManuale(false);
|
||||
.setFlagEnablePickManuale(false)
|
||||
.setCodMgrp(x.getCodMgrp())
|
||||
.setDescrizioneMgrp(x.getDescrizioneMgrp())
|
||||
.setCodMsgr(x.getCodMsgr())
|
||||
.setDescrizioneMsgr(x.getDescrizioneMsgr());
|
||||
|
||||
sitArtOrdDTO.getExtraInfo().put("dataInizio", x.getDataInizio());
|
||||
sitArtOrdDTO.getExtraInfo().put("dataFine", x.getDataFine());
|
||||
@@ -134,16 +333,17 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
})
|
||||
.toList();
|
||||
|
||||
boolean divideByGrpMerc = SettingsManager.iDB().isGroupPoductionByCommodityGroup();
|
||||
|
||||
SpedizioneActivity.startActivity(getActivity(),
|
||||
sitArtOrdDTOS,
|
||||
null,
|
||||
new ArrayList<>(),
|
||||
new ArrayList<>(),
|
||||
GestioneEnum.LAVORAZIONE,
|
||||
+1,
|
||||
MtbColr.Causale.VERSAMENTO,
|
||||
DialogRowInfoProdFabbisognoLineeProdView.class);
|
||||
|
||||
popMe();
|
||||
DialogRowInfoProdFabbisognoLineeProdView.class,
|
||||
divideByGrpMerc);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,14 +2,17 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
@Module(subcomponents = ProdFabbisognoLineeProdComponent.class)
|
||||
public class ProdFabbisognoLineeProdModule {
|
||||
|
||||
@Provides
|
||||
ProdFabbisognoLineeProdViewModel providesProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdViewModel(prodFabbisognoLineeProdRESTConsumer);
|
||||
ProdFabbisognoLineeProdViewModel providesProdFabbisognoLineeProdViewModel(
|
||||
ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer,
|
||||
MesRESTConsumer mesRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdViewModel(prodFabbisognoLineeProdRESTConsumer, mesRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,41 +1,86 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
|
||||
import it.integry.integrywmsnative.core.exception.NoOrdersScheduledException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
|
||||
|
||||
public class ProdFabbisognoLineeProdViewModel {
|
||||
|
||||
private final ProdFabbisognoLineeProdRESTConsumer mProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
private final MesRESTConsumer mMesRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
public ProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> ordiniList = new MutableLiveData<>();
|
||||
|
||||
public ProdFabbisognoLineeProdViewModel(
|
||||
ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer,
|
||||
MesRESTConsumer mesRESTConsumer) {
|
||||
this.mProdFabbisognoLineeProdRESTConsumer = prodFabbisognoLineeProdRESTConsumer;
|
||||
this.mMesRESTConsumer = mesRESTConsumer;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
|
||||
loadData();
|
||||
}
|
||||
|
||||
|
||||
public void loadFabbisogno(Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete) {
|
||||
public void loadData() {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(startDate, endDate, codMdep, jtbFasi -> {
|
||||
if (jtbFasi != null) Stream.of(jtbFasi)
|
||||
.forEach(x -> x
|
||||
.setDataInizio(startDate)
|
||||
.setDataFine(endDate));
|
||||
this.mMesRESTConsumer.getOrdiniLavorazione("I", ordini -> {
|
||||
|
||||
List<ProdFabbisognoLineeItemModelDto> itemModel = Stream.of(ordini)
|
||||
.filter(x -> x.getCodMdep().equals(SettingsManager.i().getUserSession().getDepo().getCodMdep()))
|
||||
.map(ord -> new ProdFabbisognoLineeItemModelDto()
|
||||
.setOrdineLavorazioneDTO(ord)
|
||||
)
|
||||
.sorted(Comparator.comparing(x -> x.getOrdineLavorazioneDTO().getCodJfas()))
|
||||
.toList();
|
||||
|
||||
ordiniList.postValue(itemModel);
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run(jtbFasi);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
public LiveData<List<ProdFabbisognoLineeItemModelDto>> getOrdiniList() {
|
||||
return ordiniList;
|
||||
}
|
||||
|
||||
public void loadFabbisogno(String ordini, String codMdep, Date dataInizio, Date dataFine, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(ordini, codMdep, jtbFasi -> {
|
||||
if (jtbFasi != null) {
|
||||
Stream.of(jtbFasi)
|
||||
.forEach(x -> {
|
||||
x.setDataInizio(dataInizio);
|
||||
x.setDataFine(dataFine);
|
||||
});
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run(jtbFasi);
|
||||
} else {
|
||||
this.mListener.onError(new NoOrdersScheduledException());
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
|
||||
public class GroupTitleModel {
|
||||
|
||||
public BindableBoolean selected = new BindableBoolean();
|
||||
public String title;
|
||||
|
||||
public BindableBoolean getSelected() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public GroupTitleModel setTitle(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
|
||||
|
||||
public class ProdFabbisognoLineeItemModelDto {
|
||||
|
||||
public BindableBoolean selected = new BindableBoolean();
|
||||
public OrdineLavorazioneDTO ordineLavorazioneDTO;
|
||||
|
||||
public BindableBoolean getSelected() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneDTO getOrdineLavorazioneDTO() {
|
||||
return ordineLavorazioneDTO;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeItemModelDto setOrdineLavorazioneDTO(OrdineLavorazioneDTO ordineLavorazioneDTO) {
|
||||
this.ordineLavorazioneDTO = ordineLavorazioneDTO;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,10 @@ public class ProdFabbisognoLineeProdDTO {
|
||||
private BigDecimal numCnfFabbisogno;
|
||||
private Date dataInizio;
|
||||
private Date dataFine;
|
||||
private String codMgrp;
|
||||
private String descrizioneMgrp;
|
||||
private String codMsgr;
|
||||
private String descrizioneMsgr;
|
||||
|
||||
public ProdFabbisognoLineeProdDTO() {
|
||||
}
|
||||
@@ -118,4 +122,40 @@ public class ProdFabbisognoLineeProdDTO {
|
||||
this.dataFine = dataFine;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMgrp() {
|
||||
return codMgrp;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setCodMgrp(String codMgrp) {
|
||||
this.codMgrp = codMgrp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneMgrp() {
|
||||
return descrizioneMgrp;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setDescrizioneMgrp(String descrizioneMgrp) {
|
||||
this.descrizioneMgrp = descrizioneMgrp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMsgr() {
|
||||
return codMsgr;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setCodMsgr(String codMsgr) {
|
||||
this.codMsgr = codMsgr;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneMsgr() {
|
||||
return descrizioneMsgr;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setDescrizioneMsgr(String descrizioneMsgr) {
|
||||
this.descrizioneMsgr = descrizioneMsgr;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.filters;
|
||||
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.annimon.stream.function.Predicate;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
|
||||
|
||||
public class ProdFabbisognoLineeProdFilterViewModel {
|
||||
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentNumOrdsPredicate = new ObservableField<>();
|
||||
|
||||
private List<ProdFabbisognoLineeItemModelDto> initialList;
|
||||
private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> currentList = new MutableLiveData<>();
|
||||
|
||||
public void init(List<ProdFabbisognoLineeItemModelDto> initialList){
|
||||
this.initialList = initialList;
|
||||
this.currentList.setValue(this.initialList);
|
||||
}
|
||||
|
||||
public MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> getCurrentList() {
|
||||
return this.currentList;
|
||||
}
|
||||
|
||||
public void setNumOrdFilter(List<Integer> numOrds){
|
||||
if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null);
|
||||
else{
|
||||
currentNumOrdsPredicate.set(x -> numOrds.contains(x.getOrdineLavorazioneDTO().getNumOrd()));
|
||||
}
|
||||
}
|
||||
|
||||
public void applyAllTests(){
|
||||
List<ProdFabbisognoLineeItemModelDto> returnList = null;
|
||||
|
||||
if (currentNumOrdsPredicate.get() == null){
|
||||
returnList = this.initialList;
|
||||
}else {
|
||||
Stream<ProdFabbisognoLineeItemModelDto> tmpStream = Stream.of(this.initialList)
|
||||
.filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))));
|
||||
|
||||
returnList = tmpStream.toList();
|
||||
}
|
||||
|
||||
this.currentList.setValue(returnList);
|
||||
}
|
||||
|
||||
public ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> getCurrentNumOrdsPredicate() {
|
||||
return currentNumOrdsPredicate;
|
||||
}
|
||||
|
||||
public List<Integer> getAllNumOrds(){
|
||||
return Stream
|
||||
.of(Objects.requireNonNull(initialList))
|
||||
.filter(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null)
|
||||
.sortBy(x -> -x.getOrdineLavorazioneDTO().getNumOrd())
|
||||
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null ? x.getOrdineLavorazioneDTO().getNumOrd() : null)
|
||||
.distinct()
|
||||
.toList();
|
||||
}
|
||||
|
||||
public List<Integer> getAvailableNumOrds(){
|
||||
if (currentNumOrdsPredicate.get() == null) return getAllNumOrds();
|
||||
else {
|
||||
return Stream.of(this.initialList)
|
||||
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
|
||||
.distinct()
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,9 +32,9 @@ public class ProdFabbisognoLineeProdRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public void loadFabbisogno(Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void loadFabbisogno(String numOrd, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
ProdFabbisognoLineeProdRESTConsumerService prodFabbisognoLineeProdRESTConsumerService = RESTBuilder.getService(ProdFabbisognoLineeProdRESTConsumerService.class);
|
||||
prodFabbisognoLineeProdRESTConsumerService.loadFabbisogno(UtilityDate.formatDate(startDate, "yyyy-MM-dd"), UtilityDate.formatDate(endDate, "yyyy-MM-dd"), codMdep)
|
||||
prodFabbisognoLineeProdRESTConsumerService.loadFabbisogno(numOrd, codMdep)
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<ProdFabbisognoLineeProdDTO>>> call,
|
||||
|
||||
@@ -13,7 +13,5 @@ import retrofit2.http.Query;
|
||||
public interface ProdFabbisognoLineeProdRESTConsumerService
|
||||
{
|
||||
@GET("wms/approvvigionamento/retrieveFabbisogno")
|
||||
Call<ServiceRESTResponse<List<ProdFabbisognoLineeProdDTO>>> loadFabbisogno(@Query("startDate") String startDate,
|
||||
@Query("endDate") String endDate,
|
||||
@Query("codMdep") String codMdep);
|
||||
Call<ServiceRESTResponse<List<ProdFabbisognoLineeProdDTO>>> loadFabbisogno(@Query("numOrd") String numOrd, @Query("codMdep") String codMdep);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
|
||||
@@ -109,7 +110,14 @@ public class ProdVersamentoMaterialeViewModel {
|
||||
this.sendError(new NoLUFoundException());
|
||||
} else if (mtbColtList.size() == 1) {
|
||||
this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
|
||||
this.onLUOpened(mtbColt);
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
this.onLUOpened(mtbColt);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
}, this::sendError);
|
||||
} else {
|
||||
this.sendError(new TooManyLUFoundInMonoLUPositionException());
|
||||
@@ -122,7 +130,12 @@ public class ProdVersamentoMaterialeViewModel {
|
||||
private void executeEtichettaLU(String sscc) {
|
||||
this.mColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> {
|
||||
|
||||
this.onLUOpened(mtbColt);
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
this.onLUOpened(mtbColt);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
@@ -94,6 +94,8 @@ public class OrdineLavorazioneDTO {
|
||||
|
||||
private String dataConsCommessa;
|
||||
|
||||
private String descrizioneAttivita;
|
||||
|
||||
private BigDecimal prodStd;
|
||||
|
||||
private Object mtbColtToEdit;
|
||||
@@ -523,4 +525,12 @@ public class OrdineLavorazioneDTO {
|
||||
return progress;
|
||||
}
|
||||
|
||||
public String getDescrizioneAttivita() {
|
||||
return descrizioneAttivita;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneDTO setDescrizioneAttivita(String descrizioneAttivita) {
|
||||
this.descrizioneAttivita = descrizioneAttivita;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,12 +207,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmCheckForUnlistedProduct(String barcode) {
|
||||
public void confirmCheckForUnlistedProduct(String barcode, Runnable onComplete) {
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.info).toString(),
|
||||
Html.fromHtml(getResources().getString(R.string.confirm_order_unlisted_item)),
|
||||
null,
|
||||
() -> {
|
||||
this.mViewModel.loadArticolo(barcode);
|
||||
this.mViewModel.loadArticolo(barcode, onComplete);
|
||||
}, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||
}
|
||||
|
||||
@@ -255,8 +255,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(),
|
||||
Html.fromHtml(getResources().getString(R.string.confirm_export_invalid_product)),
|
||||
null,
|
||||
onConfirm
|
||||
,
|
||||
onConfirm,
|
||||
this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExportInvalidProducts");
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -25,7 +26,6 @@ import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinab
|
||||
import it.integry.integrywmsnative.core.exception.ArtNotFoundInGridException;
|
||||
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
||||
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||
import it.integry.integrywmsnative.core.exception.MultipleResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
@@ -157,38 +157,49 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
}
|
||||
|
||||
public void processBarcode(String barcode) {
|
||||
try {
|
||||
this.sendOnLoadingStarted();
|
||||
Runnable onComplete = BarcodeManager::enable;
|
||||
BarcodeManager.disable();
|
||||
|
||||
try {
|
||||
List<ArticoloOrdinabileDTO> listArticoli = findArticoliByBarcode(barcode);
|
||||
|
||||
if (listArticoli == null || listArticoli.isEmpty())
|
||||
onNoArtsFoundByBarcode(barcode, onComplete);
|
||||
else
|
||||
addArtFromGriglia(listArticoli, onComplete);
|
||||
|
||||
List<ArticoloOrdinabileDTO> listArticoli = matchArticoliForBarcode(barcode);
|
||||
if (listArticoli == null || listArticoli.isEmpty()) {
|
||||
if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) {
|
||||
this.mListener.confirmCheckForUnlistedProduct(barcode);
|
||||
return;
|
||||
} else {
|
||||
throw new NoResultFromBarcodeException(barcode);
|
||||
}
|
||||
}
|
||||
if (listArticoli.size() == 1) {
|
||||
this.addArticoloToOrdine(
|
||||
listArticoli.get(0),
|
||||
this::sendOnLoadingEnded,
|
||||
this::sendError
|
||||
);
|
||||
} else {
|
||||
this.mListener.chooseArtFromList(listArticoli, (art) -> {
|
||||
this.addArticoloToOrdine(
|
||||
art,
|
||||
this::sendOnLoadingEnded,
|
||||
this::sendError);
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
this.sendError(e);
|
||||
BarcodeManager.enable();
|
||||
onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
private void onNoArtsFoundByBarcode(String barcode, Runnable onComplete) throws NoResultFromBarcodeException {
|
||||
if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) {
|
||||
this.mListener.confirmCheckForUnlistedProduct(barcode, onComplete);
|
||||
} else {
|
||||
throw new NoResultFromBarcodeException(barcode);
|
||||
}
|
||||
}
|
||||
|
||||
private void addArtFromGriglia(List<ArticoloOrdinabileDTO> listArticoli, Runnable onComplete) {
|
||||
if (listArticoli.size() == 1) {
|
||||
this.addArticoloToOrdine(
|
||||
listArticoli.get(0),
|
||||
onComplete,
|
||||
this::sendError
|
||||
);
|
||||
} else {
|
||||
this.mListener.chooseArtFromList(listArticoli, (art) -> {
|
||||
this.addArticoloToOrdine(
|
||||
art,
|
||||
onComplete,
|
||||
this::sendError);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad) {
|
||||
try {
|
||||
mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, this::sendError);
|
||||
@@ -256,10 +267,11 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
return articolo;
|
||||
}
|
||||
|
||||
public List<ArticoloOrdinabileDTO> matchArticoliForBarcode(String barcode) throws NoArtsInGridException, MultipleResultFromBarcodeException, NoResultFromBarcodeException {
|
||||
public List<ArticoloOrdinabileDTO> findArticoliByBarcode(String barcode) throws NoArtsInGridException {
|
||||
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
|
||||
throw new NoArtsInGridException();
|
||||
}
|
||||
|
||||
List<ArticoloOrdinabileDTO> articoli = Stream.of(mArticoliGriglia).filter(articolo ->
|
||||
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().contains(barcode) ||
|
||||
@@ -366,13 +378,17 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public void loadArticolo(String barcode) {
|
||||
public void loadArticolo(String barcode, Runnable onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
pvOrdiniAcquistoRESTConsumer.retrieveArticolo(null, codMdep, barcode, (grigliaDTO) -> {
|
||||
|
||||
RunnableArgs<ArticoloOrdinabileDTO> addArtToOrder = (articolo) -> {
|
||||
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null);
|
||||
|
||||
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if (existingArt != null) {
|
||||
List<String> barcodes = existingArt.getBarcode();
|
||||
barcodes.addAll(articolo.getBarcode());
|
||||
@@ -381,7 +397,8 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
} else {
|
||||
mArticoliGriglia.add(articolo);
|
||||
}
|
||||
this.processBarcode(barcode);
|
||||
|
||||
this.addArtFromGriglia(Collections.singletonList(existingArt), onComplete);
|
||||
};
|
||||
|
||||
if (grigliaDTO == null || grigliaDTO.getArticoli().isEmpty()) {
|
||||
@@ -400,7 +417,6 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
|
||||
addArtToOrder.run(newArt);
|
||||
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
@@ -420,7 +436,7 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void confirmCheckForUnlistedProduct(String barcode);
|
||||
void confirmCheckForUnlistedProduct(String barcode, Runnable onComplete);
|
||||
|
||||
void confirmExportInvalidProducts(Runnable onConfirm);
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ public class RettificaGiacenzeViewModel {
|
||||
if (onComplete != null) onComplete.run();
|
||||
|
||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||
this.dispatchArt(mtbAartList.get(0), pickData);
|
||||
this.dispatchArts(mtbAartList);
|
||||
} else {
|
||||
this.sendError(new NoResultFromBarcodeException(barcodeProd));
|
||||
}
|
||||
|
||||
@@ -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_arts_from_lista_arts.DialogChooseArtsFromMtbAartListView;
|
||||
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_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
@@ -126,7 +126,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
GestioneEnum gestioneCol,
|
||||
int segnoCol,
|
||||
Integer defaultCausaleUL,
|
||||
Class<? extends BaseDialogRowInfoView> infoDialogClassType) {
|
||||
Class<? extends BaseDialogRowInfoView> infoDialogClassType,
|
||||
boolean divideByGrpMerc) {
|
||||
Intent myIntent = new Intent(context, SpedizioneActivity.class);
|
||||
|
||||
String keyPickingList = DataCache.addItem(ordini);
|
||||
@@ -150,6 +151,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
String keyInfoDialogClassType = DataCache.addItem(infoDialogClassType);
|
||||
myIntent.putExtra("keyInfoDialogClassType", keyInfoDialogClassType);
|
||||
|
||||
String keyDivideByGrpMerc = DataCache.addItem(divideByGrpMerc);
|
||||
myIntent.putExtra("keyDivideByGrpMerc", keyDivideByGrpMerc);
|
||||
|
||||
context.startActivity(myIntent);
|
||||
}
|
||||
|
||||
@@ -164,6 +168,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mSegnoCol = DataCache.retrieveItem(getIntent().getStringExtra("keySegnoCol"));
|
||||
mDefaultCausaleUL = DataCache.retrieveItem(getIntent().getStringExtra("keyDefaultCausaleCol"));
|
||||
mInfoDialogClassType = DataCache.retrieveItem(getIntent().getStringExtra("keyInfoDialogClassType"));
|
||||
mDivideByGrpMerc = DataCache.retrieveItem(getIntent().getStringExtra("keyDivideByGrpMerc"));
|
||||
|
||||
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione);
|
||||
|
||||
@@ -178,7 +183,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
mFlagShowCodForn = SettingsManager.iDB().isShowCodFornSpedizione();
|
||||
mDivideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
|
||||
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mEnableQuantityReset = sharedPreferences.getBoolean("picking_uscita_enable_quantity_reset", true);
|
||||
@@ -1015,6 +1019,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
@Override
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
import it.integry.integrywmsnative.core.exception.EmptyLUException;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
@@ -158,7 +159,7 @@ public class SpedizioneViewModel {
|
||||
this.mEnableQuantityReset = enableQuantityReset;
|
||||
this.mUseQtaOrd = useQtaOrd;
|
||||
|
||||
if (testateOrdini != null) {
|
||||
if (testateOrdini != null && testateOrdini.size() > 0) {
|
||||
this.mIsOrdTrasf = Stream.of(testateOrdini).map(OrdineUscitaInevasoDTO::isOrdTrasf).withoutNulls().distinctBy(x -> x).findFirst().get();
|
||||
}
|
||||
|
||||
@@ -238,19 +239,18 @@ public class SpedizioneViewModel {
|
||||
mDefaultFiltroOrdine.add(filtro);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if (mDefaultGestioneOfUL == GestioneEnum.VENDITA) {
|
||||
mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer;
|
||||
if (mDefaultGestioneOfUL == GestioneEnum.VENDITA) {
|
||||
mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer;
|
||||
|
||||
} else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == -1) {
|
||||
mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
|
||||
|
||||
} else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1) {
|
||||
mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
|
||||
} else {
|
||||
this.sendError(new NotImplementedException(String.format("Gestione %s e segno %d non gestito", mDefaultGestioneOfUL.getText(), mDefaultSegnoCol)));
|
||||
}
|
||||
} else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == -1) {
|
||||
mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
|
||||
|
||||
} else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1) {
|
||||
mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
|
||||
} else {
|
||||
this.sendError(new NotImplementedException(String.format("Gestione %s e segno %d non gestito", mDefaultGestioneOfUL.getText(), mDefaultSegnoCol)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -492,7 +492,13 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
} else {
|
||||
|
||||
this.createNewLU(null, null, () -> searchArtFromUL(mtbColt, onComplete));
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
this.createNewLU(null, null, () -> searchArtFromUL(mtbColt, onComplete));
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
@@ -530,7 +536,14 @@ public class SpedizioneViewModel {
|
||||
|
||||
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
this.searchArtFromUL(mtbColt, onComplete);
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
this.searchArtFromUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
} else {
|
||||
this.sendError(new EmptyLUException());
|
||||
}
|
||||
@@ -546,8 +559,17 @@ public class SpedizioneViewModel {
|
||||
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
if (mtbColt.getSegno() != -1) {
|
||||
searchArtFromUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidLUException());
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
searchArtFromUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
} else {
|
||||
this.sendError(new InvalidLUException());
|
||||
}
|
||||
} else {
|
||||
this.sendError(new EmptyLUException());
|
||||
}
|
||||
@@ -773,6 +795,8 @@ public class SpedizioneViewModel {
|
||||
MtbColt refMtbColt = matchedItem.getRefMtbColt();
|
||||
if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) {
|
||||
refMtbColt = matchedItem.getMtbColts().get(0);
|
||||
} else if (matchedItem.getTempPickData().getSourceMtbColt() != null) {
|
||||
refMtbColt = matchedItem.getTempPickData().getSourceMtbColt();
|
||||
}
|
||||
MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null;
|
||||
this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null);
|
||||
@@ -860,8 +884,6 @@ public class SpedizioneViewModel {
|
||||
} else {
|
||||
dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) {
|
||||
@@ -1487,11 +1509,13 @@ public class SpedizioneViewModel {
|
||||
var clonedLuToClose = (MtbColt) this.mCurrentMtbColt.clone();
|
||||
clonedLuToClose.setMtbColr(null);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
if(mTestateOrdini != null && !mTestateOrdini.isEmpty()) codMdep = mTestateOrdini.get(0).getCodMdep();
|
||||
|
||||
var closeUDSRequestDto = new CloseUDSRequestDTO()
|
||||
.setMtbColt(clonedLuToClose)
|
||||
//.setPrintSSCC(shouldPrint)
|
||||
.setOrderCodMdep(mTestateOrdini.get(0).getCodMdep());
|
||||
|
||||
.setOrderCodMdep(codMdep);
|
||||
|
||||
this.mColliSpedizioneRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> {
|
||||
onComplete.run(closeResponse.getGeneratedMtbColts());
|
||||
|
||||
@@ -14,6 +14,7 @@ import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsInLUException;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
@@ -135,7 +136,12 @@ public class VersamentoMerceViewModel {
|
||||
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
|
||||
|
||||
//TAKE HERE
|
||||
pickMerceULtoUL(mtbColt, onComplete);
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
pickMerceULtoUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
}, this::sendError);
|
||||
} else {
|
||||
@@ -184,11 +190,23 @@ public class VersamentoMerceViewModel {
|
||||
if (mtbColt == null) {
|
||||
this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(sscc, GestioneEnum.LAVORAZIONE, mtbColtAnonimo -> {
|
||||
onComplete.run();
|
||||
pickMerceULtoUL(mtbColtAnonimo, onComplete);
|
||||
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
pickMerceULtoUL(mtbColtAnonimo, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
|
||||
}, this::sendError);
|
||||
|
||||
} else {
|
||||
pickMerceULtoUL(mtbColt, onComplete);
|
||||
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
|
||||
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
|
||||
|
||||
if (codMdepIsValid) {
|
||||
pickMerceULtoUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidCodMdepException());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
|
||||
package it.integry.integrywmsnative.ui.filter_chips.filters;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -103,7 +103,8 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
|
||||
List<MtbColr> mtbColrs = mViewModel.getObservableMtbColt().get().getMtbColr();
|
||||
mBinding.textviewArtCounter.setText(String.valueOf(mtbColrs.size()));
|
||||
mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size()));
|
||||
mViewModel.calcPesi();
|
||||
|
||||
mViewModel.refreshPesi();
|
||||
}
|
||||
|
||||
public BottomSheetFragmentLUContentView setListener(Listener listener) {
|
||||
|
||||
@@ -41,7 +41,7 @@ public class BottomSheetFragmentLUContentViewModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public void calcPesi() {
|
||||
public void refreshPesi() {
|
||||
MtbColt collo = this.mtbColt.get();
|
||||
if (collo == null) return;
|
||||
|
||||
@@ -52,7 +52,7 @@ public class BottomSheetFragmentLUContentViewModel {
|
||||
for (MtbColr mtbColr : collo.getMtbColr()) {
|
||||
MtbAart articolo = mtbColr.getMtbAart();
|
||||
|
||||
if (articolo == null || articolo.getPesoKg() == null)
|
||||
if (articolo == null || articolo.getPesoKg() == null || articolo.getTaraKg() == null)
|
||||
continue;
|
||||
|
||||
BigDecimal pesoRiga = articolo.isFlagQtaCnfFissaBoolean() ? mtbColr.getNumCnf().multiply(articolo.getPesoKg()) : mtbColr.getQtaCol();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
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);
|
||||
alertDialog.setOnDismissListener(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);
|
||||
|
||||
requireActivity().runOnUiThread(this::dismiss);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
|
||||
super.onDismiss(dialog);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class InactiveBatchLotException extends Exception {
|
||||
public InactiveBatchLotException(String lotto) {
|
||||
super(String.format(UtilityResources.getString(R.string.batch_lot_not_enabled), lotto));
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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.rest.consumers.MagazzinoRESTConsumer;
|
||||
|
||||
public class InfoAggiuntiveLUDialogViewModel {
|
||||
public class DialogInfoAggiuntiveLUViewModel {
|
||||
|
||||
public final MutableLiveData<List<MtbTCol>> tipiCollo = new MutableLiveData<>();
|
||||
|
||||
private MtbTCol internalTipoPed;
|
||||
private final MutableLiveData<List<MtbTCol>> tipiCollo = new MutableLiveData<>();
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
|
||||
|
||||
@Inject
|
||||
public InfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) {
|
||||
this.mMagazzinoRESTConsumer = magazzinoRESTConsumer;
|
||||
public DialogInfoAggiuntiveLUViewModel(MagazzinoRESTConsumer mMagazzinoRESTConsumer) {
|
||||
this.mMagazzinoRESTConsumer = mMagazzinoRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void init() {
|
||||
new Thread(this::sendOnLoadingStarted).start();
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> {
|
||||
this.tipiCollo.postValue(tipiCollo);
|
||||
@@ -35,19 +33,14 @@ public class InfoAggiuntiveLUDialogViewModel {
|
||||
}
|
||||
|
||||
public MutableLiveData<List<MtbTCol>> getTipiCollo() {
|
||||
return this.tipiCollo;
|
||||
return tipiCollo;
|
||||
}
|
||||
|
||||
|
||||
public void setInternalTipoPed(MtbTCol internalTipoPed) {
|
||||
this.internalTipoPed = internalTipoPed;
|
||||
public void setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
|
||||
public MtbTCol getInternalTipoPed() {
|
||||
return internalTipoPed;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
@@ -60,13 +53,9 @@ public class InfoAggiuntiveLUDialogViewModel {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public void setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
|
||||
void onError(Exception ex);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 -> {
|
||||
|
||||
codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo);
|
||||
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
|
||||
|
||||
if (mDialogInputLUProdDTO.getCodTcol() != null) {
|
||||
Optional<MtbTCol> optTCol = Stream.of(tipiCollo)
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
@@ -13,15 +14,20 @@ import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
|
||||
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);
|
||||
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() {
|
||||
|
||||
@@ -41,7 +41,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
||||
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
@@ -177,7 +176,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
||||
.setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory())
|
||||
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
|
||||
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
|
||||
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck());
|
||||
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
|
||||
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag() != null ? mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() : null);
|
||||
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(this.mViewModel);
|
||||
@@ -215,24 +215,23 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
||||
}
|
||||
|
||||
private void initProductLotStatusNotification() {
|
||||
StatoPartitaMag statoPartitaMag = StatoPartitaMag.from(this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
|
||||
if (statoPartitaMag == null)
|
||||
if (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() == null)
|
||||
return;
|
||||
|
||||
this.mBindings.inputDataScadLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
|
||||
switch (statoPartitaMag) {
|
||||
case SCADUTO:
|
||||
switch (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt()) {
|
||||
case IN_SCADENZA -> {
|
||||
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
|
||||
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.warn_color)));
|
||||
break;
|
||||
case IN_SCADENZA:
|
||||
}
|
||||
case SCADUTO -> {
|
||||
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
|
||||
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.error_color)));
|
||||
break;
|
||||
default:
|
||||
}
|
||||
case NON_IN_SCADENZA -> {
|
||||
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_check_white_24dp);
|
||||
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.success_color)));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,12 +13,14 @@ import it.integry.integrywmsnative.core.di.BindableString;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException;
|
||||
import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException;
|
||||
import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException;
|
||||
import it.integry.integrywmsnative.view.dialogs.exception.InvalidNotesException;
|
||||
@@ -88,6 +90,8 @@ public class DialogInputQuantityV2ViewModel {
|
||||
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
|
||||
private StatoPartitaMag statoArt;
|
||||
|
||||
@Inject
|
||||
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
@@ -336,6 +340,11 @@ public class DialogInputQuantityV2ViewModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public DialogInputQuantityV2ViewModel setStatoArt(StatoPartitaMag statoArt) {
|
||||
this.statoArt = statoArt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
|
||||
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
|
||||
return this;
|
||||
@@ -488,6 +497,12 @@ public class DialogInputQuantityV2ViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
if(this.statoArt == StatoPartitaMag.DISATTIVO){
|
||||
this.mListener.onError(new InactiveBatchLotException(internalPartitaMag));
|
||||
onValidated.run(false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
||||
|
||||
this.mListener.onError(new InvalidBatchLotException());
|
||||
|
||||
10
app/src/main/res/drawable/ic_add_material3.xml
Normal file
10
app/src/main/res/drawable/ic_add_material3.xml
Normal 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>
|
||||
@@ -0,0 +1,56 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="M440,52.86h-77.9l-20.3,405.3h117.3L440,52.86z"
|
||||
android:fillColor="#BF360C"/>
|
||||
<path
|
||||
android:pathData="M352.5,244.86h-42.7v-64l-128,64v-64l-128,64v213.3h298.7V244.86z"
|
||||
android:fillColor="#E64A19"/>
|
||||
<path
|
||||
android:pathData="M96.5,287.56h42.7v42.7H96.5V287.56z"
|
||||
android:fillColor="#FFC107"/>
|
||||
<path
|
||||
android:pathData="M181.8,287.56h42.7v42.7h-42.7V287.56z"
|
||||
android:fillColor="#FFC107"/>
|
||||
<path
|
||||
android:pathData="M267.2,287.56h42.7v42.7h-42.7V287.56z"
|
||||
android:fillColor="#FFC107"/>
|
||||
<path
|
||||
android:pathData="M96.5,372.86h42.7v42.7H96.5V372.86z"
|
||||
android:fillColor="#FFC107"/>
|
||||
<path
|
||||
android:pathData="M181.8,372.86h42.7v42.7h-42.7V372.86z"
|
||||
android:fillColor="#FFC107"/>
|
||||
<path
|
||||
android:pathData="M267.2,372.86h42.7v42.7h-42.7V372.86z"
|
||||
android:fillColor="#FFC107"/>
|
||||
<path
|
||||
android:pathData="M194.35,50.39l-51.17,7.68c0.85,5.66 -3.07,10.91 -8.68,11.75c-5.61,0.84 -10.91,-3.07 -11.75,-8.68l-51.17,7.68c-11.27,1.69 -19.1,12.28 -17.41,23.55l24.56,163.69c1.69,11.27 12.28,19.1 23.55,17.41l122.78,-18.43c11.27,-1.69 19.1,-12.28 17.41,-23.55L217.9,67.74C216.22,56.52 205.63,48.69 194.35,50.39z"
|
||||
android:fillColor="#455A64"/>
|
||||
<path
|
||||
android:pathData="M222.76,239.64L99.98,258.06c-3.07,0.46 -5.44,-1.29 -5.9,-4.36L69.51,90.01c-0.46,-3.07 1.29,-5.44 4.36,-5.9l122.78,-18.43c3.07,-0.46 5.44,1.29 5.9,4.36l24.56,163.69C227.59,236.85 225.83,239.18 222.76,239.64z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M143.18,58.06c0.85,5.66 -3.07,10.91 -8.68,11.75c-5.61,0.84 -10.91,-3.07 -11.75,-8.68l-35.83,5.38L90,86.99c0.85,5.66 6.14,9.52 11.75,8.68l71.6,-10.75c5.66,-0.85 9.52,-6.14 8.68,-11.75l-3.07,-20.48L143.18,58.06z"
|
||||
android:fillColor="#90A4AE"/>
|
||||
<path
|
||||
android:pathData="M129.89,39.12c-11.27,1.69 -19.1,12.28 -17.41,23.55c1.69,11.27 12.28,19.1 23.55,17.41s19.1,-12.28 17.41,-23.55C151.75,45.25 141.16,37.43 129.89,39.12zM134.5,69.81c-5.66,0.85 -10.91,-3.07 -11.75,-8.68c-0.84,-5.61 3.07,-10.91 8.68,-11.75s10.91,3.07 11.75,8.68C144.02,63.68 140.16,68.96 134.5,69.81z"
|
||||
android:fillColor="#90A4AE"/>
|
||||
<path
|
||||
android:pathData="M177.94,129.2l-39.13,52.95l-24.79,-18.79l-10.88,14.73l39.92,29.07l49.57,-67.07L177.94,129.2z"
|
||||
android:fillColor="#2958B7"/>
|
||||
<path
|
||||
android:pathData="M244.48,302.31l34.54,7.54"
|
||||
android:fillColor="#00BCD4"/>
|
||||
<path
|
||||
android:pathData="M279.08,309.86"
|
||||
android:fillColor="#00BCD4"/>
|
||||
<path
|
||||
android:pathData="M244.48,302.31c8.49,-38.92 -17.51,-77.83 -58.05,-86.67l7.25,-33.22c59.55,12.99 97.84,70.16 85.35,127.43l30.23,6.59L249,364.24l-34.87,-68.55L244.48,302.31L244.48,302.31"
|
||||
android:strokeWidth="10"
|
||||
android:fillColor="#6DBE45"
|
||||
android:strokeColor="#FFFFFF"/>
|
||||
</vector>
|
||||
10
app/src/main/res/drawable/ic_delete_material3.xml
Normal file
10
app/src/main/res/drawable/ic_delete_material3.xml
Normal 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="M280,840Q247,840 223.5,816.5Q200,793 200,760L200,240L160,240L160,160L360,160L360,120L600,120L600,160L800,160L800,240L760,240L760,760Q760,793 736.5,816.5Q713,840 680,840L280,840ZM680,240L280,240L280,760Q280,760 280,760Q280,760 280,760L680,760Q680,760 680,760Q680,760 680,760L680,240ZM360,680L440,680L440,320L360,320L360,680ZM520,680L600,680L600,320L520,320L520,680ZM280,240L280,240L280,760Q280,760 280,760Q280,760 280,760L280,760Q280,760 280,760Q280,760 280,760L280,240Z"/>
|
||||
</vector>
|
||||
10
app/src/main/res/drawable/ic_inventory_2_material3.xml
Normal file
10
app/src/main/res/drawable/ic_inventory_2_material3.xml
Normal 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>
|
||||
10
app/src/main/res/drawable/ic_print_material3.xml
Normal file
10
app/src/main/res/drawable/ic_print_material3.xml
Normal 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="M640,320L640,200L320,200L320,320L240,320L240,120L720,120L720,320L640,320ZM160,400L160,400Q160,400 171.5,400Q183,400 200,400L760,400Q777,400 788.5,400Q800,400 800,400L800,400L720,400L720,400L240,400L240,400L160,400ZM720,500Q737,500 748.5,488.5Q760,477 760,460Q760,443 748.5,431.5Q737,420 720,420Q703,420 691.5,431.5Q680,443 680,460Q680,477 691.5,488.5Q703,500 720,500ZM640,760L640,600L320,600L320,760L640,760ZM720,840L240,840L240,680L80,680L80,440Q80,389 115,354.5Q150,320 200,320L760,320Q811,320 845.5,354.5Q880,389 880,440L880,680L720,680L720,840ZM800,600L800,440Q800,423 788.5,411.5Q777,400 760,400L200,400Q183,400 171.5,411.5Q160,423 160,440L160,600L240,600L240,520L720,520L720,600L800,600Z"/>
|
||||
</vector>
|
||||
10
app/src/main/res/drawable/ic_recover_material3.xml
Normal file
10
app/src/main/res/drawable/ic_recover_material3.xml
Normal 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,838Q319,823 239.5,732.5Q160,642 160,520Q160,454 186,393.5Q212,333 260,288L317,345Q279,379 259.5,424Q240,469 240,520Q240,608 296,675.5Q352,743 440,758L440,838ZM520,838L520,758Q607,742 663.5,675Q720,608 720,520Q720,420 650,350Q580,280 480,280L477,280L521,324L465,380L325,240L465,100L521,156L477,200L480,200Q614,200 707,293Q800,386 800,520Q800,641 720.5,731.5Q641,822 520,838Z"/>
|
||||
</vector>
|
||||
@@ -21,6 +21,8 @@
|
||||
android:id="@+id/accettazione_main_list_group_item_container_checkBox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:enabled="false"
|
||||
tools:layout_editor_absoluteX="0dp"
|
||||
tools:layout_editor_absoluteY="1dp"
|
||||
app:checked="@{selected}" />
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="accettazioneView"
|
||||
name="view"
|
||||
type="it.integry.integrywmsnative.gest.accettazione_bolla_picking.AccettazioneBollaPickingActivity" />
|
||||
</data>
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:alpha="0.3"
|
||||
app:visibility="@{accettazioneView.noItemsToPick}">
|
||||
app:visibility="@{view.noItemsToPick}">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guideline_empty_top"
|
||||
@@ -133,66 +133,16 @@
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.github.clans.fab.FloatingActionMenu
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/accettazione_ordine_inevaso_fab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:visibility="@{accettazioneView.noLUPresent}"
|
||||
fab:menu_animationDelayPerItem="50"
|
||||
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
|
||||
android:id="@+id/accettazione_ordine_inevaso_fab_item1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_box"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> accettazioneView.showCreatedUL()}"
|
||||
fab:fab_label="@string/action_show_created_ul" />
|
||||
|
||||
<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="@{() -> accettazioneView.createNewLU()}"
|
||||
fab:fab_label="@string/action_create_ul" />
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp"
|
||||
android:onClick="@{() -> view.showFabMenu()}"
|
||||
app:srcCompat="@drawable/ic_add_24dp"
|
||||
app:visibility="@{view.noLUPresent}"
|
||||
style="?attr/floatingActionButtonPrimaryStyle" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
@@ -214,7 +164,7 @@
|
||||
app:behavior_hideable="false"
|
||||
app:behavior_peekHeight="66dp"
|
||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
|
||||
app:visibility="@{accettazioneView.bottomSheetEnabled}"
|
||||
app:visibility="@{view.bottomSheetEnabled}"
|
||||
app:parentView="@id/bottom_sheet_lu_content" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="accettazioneView"
|
||||
name="view"
|
||||
type="it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity" />
|
||||
|
||||
</data>
|
||||
@@ -80,7 +80,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:alpha="0.3"
|
||||
app:visibility="@{accettazioneView.noItemsToPick}">
|
||||
app:visibility="@{view.noItemsToPick}">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guideline_empty_top"
|
||||
@@ -129,66 +129,18 @@
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.github.clans.fab.FloatingActionMenu
|
||||
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/accettazione_ordine_inevaso_fab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:visibility="@{accettazioneView.noLUPresent}"
|
||||
fab:menu_animationDelayPerItem="50"
|
||||
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
|
||||
android:id="@+id/accettazione_ordine_inevaso_fab_item1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_box"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> accettazioneView.showCreatedUL()}"
|
||||
fab:fab_label="@string/action_show_created_ul" />
|
||||
|
||||
<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="@{() -> accettazioneView.createNewLU()}"
|
||||
fab:fab_label="@string/action_create_ul" />
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp"
|
||||
android:onClick="@{() -> view.showFabMenu()}"
|
||||
app:srcCompat="@drawable/ic_add_24dp"
|
||||
app:visibility="@{view.noLUPresent}"
|
||||
style="?attr/floatingActionButtonPrimaryStyle" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
@@ -210,7 +162,7 @@
|
||||
app:behavior_hideable="false"
|
||||
app:behavior_peekHeight="66dp"
|
||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
|
||||
app:visibility="@{accettazioneView.bottomSheetEnabled}"
|
||||
app:visibility="@{view.bottomSheetEnabled}"
|
||||
app:parentView="@id/bottom_sheet_lu_content" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
@@ -267,81 +267,15 @@
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
style="?attr/floatingActionButtonPrimaryStyle"
|
||||
android:id="@+id/main_fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp"
|
||||
app:singleClick="@{() -> view.showFabMenu()}"
|
||||
app:srcCompat="@drawable/ic_menu_24dp" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionMenu
|
||||
android:id="@+id/close_activity_fab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_anchor="@+id/linearLayout2"
|
||||
app:layout_anchorGravity="center"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:menu_icon="@drawable/ic_menu_24dp"
|
||||
fab:menu_animationDelayPerItem="50"
|
||||
fab:menu_backgroundColor="@color/white_bg_alpha"
|
||||
fab:menu_buttonSpacing="0dp"
|
||||
fab:menu_colorNormal="@color/success_color"
|
||||
fab:menu_colorPressed="@color/green_400"
|
||||
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
|
||||
android:id="@+id/export_document"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_upload"
|
||||
android:visibility="@{view.isDocumentExportable.get() ? View.VISIBLE : View.GONE}"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> viewModel.exportDocument()}"
|
||||
fab:fab_label="@string/export_document" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/delete_document"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_delete_24dp"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> viewModel.deleteDocument()}"
|
||||
fab:fab_label="@string/delete_document" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/save_document"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_check_black_24dp"
|
||||
android:visibility="visible"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> viewModel.holdDocument()}"
|
||||
fab:fab_label="@string/save_document" />
|
||||
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
</layout>
|
||||
@@ -2,12 +2,15 @@
|
||||
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:fab="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<import type="android.view.View" />
|
||||
<import type="it.integry.integrywmsnative.R" />
|
||||
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
|
||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||
<import type="android.text.Html" />
|
||||
|
||||
<variable
|
||||
name="viewModel"
|
||||
@@ -170,6 +173,29 @@
|
||||
tools:text="(Bari)" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="@{view.mtbColt.getNumDoc() != null ? View.VISIBLE : View.GONE}">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@android:color/black"
|
||||
android:text="Documento:" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:textColor="@android:color/black"
|
||||
android:text="@{Html.fromHtml(context.getString(R.string.doc_testata, view.mtbColt.getNumDoc(), view.mtbColt.getDataDoc()))}"
|
||||
tools:text="n. 123 del 29/03/2023" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
@@ -192,67 +218,88 @@
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<!-- <com.github.clans.fab.FloatingActionMenu-->
|
||||
<!-- android:id="@+id/contenuto_bancale_fab"-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="match_parent"-->
|
||||
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
||||
<!-- app:layout_constraintEnd_toEndOf="parent"-->
|
||||
<!-- app:visibility="@{view.fabVisible}"-->
|
||||
<!-- fab:menu_animationDelayPerItem="50"-->
|
||||
<!-- 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.FloatingActionMenu
|
||||
android:id="@+id/contenuto_bancale_fab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:visibility="@{view.fabVisible}"
|
||||
fab:menu_animationDelayPerItem="50"
|
||||
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-->
|
||||
<!-- android:id="@+id/accettazione_ordine_inevaso_fab_item1"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:scaleX="-1"-->
|
||||
<!-- android:src="@drawable/ic_recover_ul_24dp"-->
|
||||
<!-- app:fab_colorNormal="@color/white"-->
|
||||
<!-- app:fab_colorPressed="@color/white_pressed"-->
|
||||
<!-- app:fab_colorRipple="#66FFFFFF"-->
|
||||
<!-- app:onClick="@{() -> view.recoverUL()}"-->
|
||||
<!-- app:visibility="@{view.recoverFabMenuVisible}"-->
|
||||
<!-- fab:fab_label="@string/action_recover_ul" />-->
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/accettazione_ordine_inevaso_fab_item1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleX="-1"
|
||||
android:src="@drawable/ic_recover_ul_24dp"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> view.recoverUL()}"
|
||||
app:visibility="@{view.recoverFabMenuVisible}"
|
||||
fab:fab_label="@string/action_recover_ul" />
|
||||
<!-- <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_print_24dp"-->
|
||||
<!-- app:fab_colorNormal="@color/white"-->
|
||||
<!-- app:fab_colorPressed="@color/white_pressed"-->
|
||||
<!-- app:fab_colorRipple="#66FFFFFF"-->
|
||||
<!-- app:onClick="@{() -> view.printUL()}"-->
|
||||
<!-- fab:fab_label="@string/action_print_ul" />-->
|
||||
|
||||
<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_print_24dp"
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> view.printUL()}"
|
||||
fab:fab_label="@string/action_print_ul" />
|
||||
<!-- <com.github.clans.fab.FloatingActionButton-->
|
||||
<!-- android:id="@+id/accettazione_ordine_inevaso_fab_item3"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:src="@drawable/ic_delete_24dp"-->
|
||||
<!-- app:fab_colorNormal="@color/white"-->
|
||||
<!-- app:fab_colorPressed="@color/white_pressed"-->
|
||||
<!-- app:fab_colorRipple="#66FFFFFF"-->
|
||||
<!-- app:visibility="@{!view.mtbColt.documentPresent}"-->
|
||||
<!-- app:onClick="@{() -> view.deleteUL()}"-->
|
||||
<!-- fab:fab_label="@string/action_delete_ul" />-->
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
<!-- </com.github.clans.fab.FloatingActionMenu>-->
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/accettazione_ordine_inevaso_fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp"
|
||||
android:onClick="@{() -> view.showFabMenu()}"
|
||||
app:srcCompat="@drawable/ic_menu_24dp"
|
||||
style="?attr/floatingActionButtonPrimaryStyle" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
</layout>
|
||||
66
app/src/main/res/layout/dialog_ask_linea_prod.xml
Normal file
66
app/src/main/res/layout/dialog_ask_linea_prod.xml
Normal 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>
|
||||
94
app/src/main/res/layout/dialog_info_aggiuntive_lu.xml
Normal file
94
app/src/main/res/layout/dialog_info_aggiuntive_lu.xml
Normal 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>
|
||||
@@ -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>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user