Compare commits
27 Commits
v1.23.6(26
...
v1.23.11(2
| Author | SHA1 | Date | |
|---|---|---|---|
| 3a6ba51a69 | |||
| 767088f1d0 | |||
| d0f6999dd8 | |||
| f88d7892bd | |||
| 3df5e406ef | |||
| 8e0728c2b4 | |||
| 0a2d47110d | |||
| 4ed8c825dd | |||
| 0a6d01628f | |||
| 453c8e0cad | |||
| ee43d1e985 | |||
| 86d472fb88 | |||
| 61c3458088 | |||
| 85c4768e51 | |||
| f1b4ce469e | |||
| 6071b3eb44 | |||
| 1d2bd20584 | |||
| 756389e6c6 | |||
| 4b19129a2f | |||
| f6aadf1115 | |||
| 3a5de50353 | |||
| cf3b8749dc | |||
| 34ff300515 | |||
| 0738993d4c | |||
| 9765fe1807 | |||
| 90985b899b | |||
| 86c7be4e7d |
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 261
|
def appVersionCode = 266
|
||||||
def appVersionName = '1.23.6'
|
def appVersionName = '1.23.11'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamento
|
|||||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
|
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloComponent;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
|
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
|
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
|
||||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
|
||||||
@@ -65,6 +67,8 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviForn
|
|||||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
|
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
|
||||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
|
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
|
||||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
|
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
|
||||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent;
|
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent;
|
||||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule;
|
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule;
|
||||||
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
|
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
|
||||||
@@ -119,7 +123,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
|
|||||||
DocInterniModule.class,
|
DocInterniModule.class,
|
||||||
DialogSelectDocInfoModule.class,
|
DialogSelectDocInfoModule.class,
|
||||||
DocInterniEditFormModule.class,
|
DocInterniEditFormModule.class,
|
||||||
DialogSelectDocRowsModule.class
|
DialogSelectDocRowsModule.class,
|
||||||
|
DialogAskClienteModule.class,
|
||||||
|
DialogEditArticoloModule.class
|
||||||
})
|
})
|
||||||
public interface MainApplicationComponent {
|
public interface MainApplicationComponent {
|
||||||
|
|
||||||
@@ -161,6 +167,8 @@ public interface MainApplicationComponent {
|
|||||||
|
|
||||||
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
|
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
|
||||||
|
|
||||||
|
DialogAskClienteComponent.Factory dialogAskClienteComponent();
|
||||||
|
|
||||||
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
|
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
|
||||||
|
|
||||||
DialogInputLUProdComponent.Factory dialogInputLUProdComponent();
|
DialogInputLUProdComponent.Factory dialogInputLUProdComponent();
|
||||||
@@ -201,6 +209,8 @@ public interface MainApplicationComponent {
|
|||||||
|
|
||||||
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
|
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
|
||||||
|
|
||||||
|
DialogEditArticoloComponent.Factory dialogEditArticoloComponent();
|
||||||
|
|
||||||
void inject(MainApplication mainApplication);
|
void inject(MainApplication mainApplication);
|
||||||
|
|
||||||
void inject(AppContext mainApplication);
|
void inject(AppContext mainApplication);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.update.UpdatesManager;
|
|||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
|
||||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
public class MainApplicationModule {
|
public class MainApplicationModule {
|
||||||
@@ -85,6 +86,12 @@ public class MainApplicationModule {
|
|||||||
return DialogProgressView.newInstance();
|
return DialogProgressView.newInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
DialogInputQuantityV2View providesDialogInputQuantityV2View() {
|
||||||
|
return new DialogInputQuantityV2View();
|
||||||
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
|
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class BarcodeCallbackDTO {
|
|||||||
return onScanSuccessfull;
|
return onScanSuccessfull;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BarcodeCallbackDTO setOnScanSuccessfull(RunnableArgs<BarcodeScanDTO> onScanSuccessfull) {
|
public BarcodeCallbackDTO setOnScanSuccessful(RunnableArgs<BarcodeScanDTO> onScanSuccessfull) {
|
||||||
this.onScanSuccessfull = onScanSuccessfull;
|
this.onScanSuccessfull = onScanSuccessfull;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
|||||||
})
|
})
|
||||||
public abstract class AppDatabase extends RoomDatabase {
|
public abstract class AppDatabase extends RoomDatabase {
|
||||||
|
|
||||||
// private AppDatabase mRoomInstance;
|
|
||||||
|
|
||||||
public abstract ArticoloGrigliaDao articoloGrigliaDao();
|
public abstract ArticoloGrigliaDao articoloGrigliaDao();
|
||||||
|
|
||||||
public abstract GrigliaDao grigliaDao();
|
public abstract GrigliaDao grigliaDao();
|
||||||
|
|||||||
@@ -39,15 +39,15 @@ public interface ArticoloGrigliaDao {
|
|||||||
@Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1")
|
@Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1")
|
||||||
ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia);
|
ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia);
|
||||||
|
|
||||||
@Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan )AND id_griglia = :idGriglia LIMIT 1")
|
@Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan) AND id_griglia = :idGriglia LIMIT 1")
|
||||||
ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia);
|
ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia);
|
||||||
|
|
||||||
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1")
|
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode) AND id_griglia = :idGriglia LIMIT 1")
|
||||||
Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart);
|
Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart);
|
||||||
|
|
||||||
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
|
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
|
||||||
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
|
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
|
||||||
|
|
||||||
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId and new_no_promo = 1")
|
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND new_no_promo = 1")
|
||||||
List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId);
|
List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
public final class NoResultFromBarcodeException extends Exception {
|
public final class NoResultFromBarcodeException extends Exception {
|
||||||
public NoResultFromBarcodeException() {
|
public NoResultFromBarcodeException(String barcode) {
|
||||||
super(UtilityResources.getString(R.string.no_result_from_barcode));
|
super(UtilityResources.getString(R.string.no_result_from_barcode) + " (" + barcode + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ public class BaseActivity extends AppCompatActivity {
|
|||||||
@Inject
|
@Inject
|
||||||
public DialogProgressView mCurrentProgress;
|
public DialogProgressView mCurrentProgress;
|
||||||
|
|
||||||
|
private boolean progressOpened;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
|
public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
|
||||||
@@ -56,36 +58,38 @@ public class BaseActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
|
|
||||||
protected void openProgress() {
|
protected void openProgress() {
|
||||||
runOnUiThread(() -> {
|
BarcodeManager.disable();
|
||||||
BarcodeManager.disable();
|
if (!progressOpened) {
|
||||||
if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) {
|
this.progressOpened = true;
|
||||||
|
runOnUiThread(() -> {
|
||||||
this.mCurrentProgress.show(getSupportFragmentManager(), "tag");
|
this.mCurrentProgress.show(getSupportFragmentManager(), "tag");
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void closeProgress() {
|
protected void closeProgress() {
|
||||||
runOnUiThread(() -> {
|
BarcodeManager.enable();
|
||||||
BarcodeManager.enable();
|
if (progressOpened) {
|
||||||
if (mCurrentProgress.isVisible()) {
|
this.progressOpened = false;
|
||||||
|
runOnUiThread(() -> {
|
||||||
mCurrentProgress.dismiss();
|
mCurrentProgress.dismiss();
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void onLoadingStarted() {
|
public void onLoadingStarted() {
|
||||||
new Thread(() -> {
|
// new Thread(() -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
}).start();
|
// }).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onLoadingEnded() {
|
public void onLoadingEnded() {
|
||||||
new Thread(() -> {
|
// new Thread(() -> {
|
||||||
this.closeProgress();
|
this.closeProgress();
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
}).start();
|
// }).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onError(Exception ex) {
|
public void onError(Exception ex) {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ public abstract class BaseFragment extends Fragment {
|
|||||||
protected ElevatedToolbar mToolbar;
|
protected ElevatedToolbar mToolbar;
|
||||||
|
|
||||||
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||||
|
private boolean progressOpened;
|
||||||
|
|
||||||
|
|
||||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||||
@@ -81,19 +82,21 @@ public abstract class BaseFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void openProgress() {
|
protected void openProgress() {
|
||||||
requireActivity().runOnUiThread(() -> {
|
if (!progressOpened) {
|
||||||
if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) {
|
this.progressOpened = true;
|
||||||
|
requireActivity().runOnUiThread(() -> {
|
||||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag");
|
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void closeProgress() {
|
protected void closeProgress() {
|
||||||
requireActivity().runOnUiThread(() -> {
|
if (progressOpened) {
|
||||||
if (mCurrentProgress.isVisible()) {
|
this.progressOpened = false;
|
||||||
|
requireActivity().runOnUiThread(() -> {
|
||||||
mCurrentProgress.dismiss();
|
mCurrentProgress.dismiss();
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void popMe() {
|
protected void popMe() {
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
|||||||
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class);
|
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class);
|
||||||
|
|
||||||
service.getOrdiniInevasi(codMdep, gestione.getText())
|
service.getOrdiniInevasi(codMdep, gestione.getText())
|
||||||
.enqueue(new Callback<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>>() {
|
.enqueue(new Callback<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> response) {
|
public void onResponse(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> response) {
|
||||||
analyzeAnswer(response, "getOrdiniInevasi", responseDtoList -> {
|
analyzeAnswer(response, "getOrdiniInevasi", responseDtoList -> {
|
||||||
@@ -145,7 +145,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void retrieveListaArticoliFromOrdiniUscita(List<OrdineUscitaInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
public void retrieveListaArticoliFromOrdiniUscita(String codMdep, List<OrdineUscitaInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
List<GetPickingListDTO> getPickingListDTOs = Stream.of(orders)
|
List<GetPickingListDTO> getPickingListDTOs = Stream.of(orders)
|
||||||
.map(x -> new GetPickingListDTO()
|
.map(x -> new GetPickingListDTO()
|
||||||
.setData(x.getDataOrdS())
|
.setData(x.getDataOrdS())
|
||||||
@@ -157,7 +157,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
|||||||
|
|
||||||
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90);
|
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90);
|
||||||
|
|
||||||
service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
|
service.getArticoliFromOrdini(codMdep, getPickingListDTOs).enqueue(new Callback<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
|
public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
|
||||||
analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", onComplete, onFailed);
|
analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", onComplete, onFailed);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import retrofit2.http.Query;
|
|||||||
public interface OrdiniRESTConsumerService {
|
public interface OrdiniRESTConsumerService {
|
||||||
|
|
||||||
@POST("wms/getArticoliFromOrdini")
|
@POST("wms/getArticoliFromOrdini")
|
||||||
Call<ServiceRESTResponse<List<SitArtOrdDTO>>> getArticoliFromOrdini(@Body List<GetPickingListDTO> pickingListDTO);
|
Call<ServiceRESTResponse<List<SitArtOrdDTO>>> getArticoliFromOrdini(@Query("codMdep") String codMdep, @Body List<GetPickingListDTO> pickingListDTO);
|
||||||
|
|
||||||
@POST("wms/getSuggestedPickingList")
|
@POST("wms/getSuggestedPickingList")
|
||||||
Call<ServiceRESTResponse<List<PickingObjectDTO>>> getSuggestedPickingList(@Query("codMdep") String codMdep, @Body List<SitArtOrdDTO> sitArtOrdDTOList);
|
Call<ServiceRESTResponse<List<PickingObjectDTO>>> getSuggestedPickingList(@Query("codMdep") String codMdep, @Body List<SitArtOrdDTO> sitArtOrdDTOList);
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import java.math.BigDecimal;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||||
@@ -27,10 +29,15 @@ import retrofit2.Call;
|
|||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||||
|
|
||||||
|
|
||||||
public static void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
|
public void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||||
|
getArticoliListinoStatic(codAlis, onSuccess, onFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void getArticoliListinoStatic(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||||
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
|
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
|
||||||
ordiniARestService
|
ordiniARestService
|
||||||
.getArticoliListino(codAlis)
|
.getArticoliListino(codAlis)
|
||||||
@@ -46,7 +53,9 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
.distinct()
|
.distinct()
|
||||||
.withoutNulls()
|
.withoutNulls()
|
||||||
.forEach(art -> {
|
.forEach(art -> {
|
||||||
List<ArticoloDTO> inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList();
|
List<ArticoloDTO> inList = Stream.of(griglia.getGrigliaAcquistiChild())
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(art))
|
||||||
|
.toList();
|
||||||
if (inList.size() > 1) {
|
if (inList.size() > 1) {
|
||||||
for (ArticoloDTO articolo : inList) {
|
for (ArticoloDTO articolo : inList) {
|
||||||
if (!articolo.getBarCode().endsWith(articolo.getCodMart())) {
|
if (!articolo.getBarCode().endsWith(articolo.getCodMart())) {
|
||||||
@@ -72,7 +81,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
|
public void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||||
SaveDTO saveDTO = new SaveDTO();
|
SaveDTO saveDTO = new SaveDTO();
|
||||||
OrdineDTO ordineDTO = new OrdineDTO();
|
OrdineDTO ordineDTO = new OrdineDTO();
|
||||||
List<ArtDTO> artRows = new ArrayList<>();
|
List<ArtDTO> artRows = new ArrayList<>();
|
||||||
@@ -126,7 +135,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) {
|
private ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) {
|
||||||
ArtDTO dto = new ArtDTO();
|
ArtDTO dto = new ArtDTO();
|
||||||
dto.setRigaOrd(rigaOrd);
|
dto.setRigaOrd(rigaOrd);
|
||||||
dto.setCodMart(art.getCodMart());
|
dto.setCodMart(art.getCodMart());
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class SitArtOrdDTO {
|
|||||||
private String idViaggio;
|
private String idViaggio;
|
||||||
private String codMdep;
|
private String codMdep;
|
||||||
private boolean flagEnablePickManuale;
|
private boolean flagEnablePickManuale;
|
||||||
|
private boolean flagEnableScanArt;
|
||||||
private String codMgrp;
|
private String codMgrp;
|
||||||
private String descrizioneMgrp;
|
private String descrizioneMgrp;
|
||||||
private String codMsgr;
|
private String codMsgr;
|
||||||
@@ -145,6 +146,14 @@ public class SitArtOrdDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagEnableScanArt() {
|
||||||
|
return flagEnableScanArt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SitArtOrdDTO setFlagEnableScanArt(boolean flagEnableScanArt) {
|
||||||
|
this.flagEnableScanArt = flagEnableScanArt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public String getCodMgrp() {
|
public String getCodMgrp() {
|
||||||
return codMgrp;
|
return codMgrp;
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ public class DBSettingsModel {
|
|||||||
private String produzioneDefaultCodAnag;
|
private String produzioneDefaultCodAnag;
|
||||||
private String reportNameSpedizionChiudiOrdine;
|
private String reportNameSpedizionChiudiOrdine;
|
||||||
private int onNumCnfInputChanged = 1;
|
private int onNumCnfInputChanged = 1;
|
||||||
|
private boolean flagAccettazioneUseQtaOrd = false;
|
||||||
|
|
||||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||||
return flagSpedizioneEnableFakeGiacenza;
|
return flagSpedizioneEnableFakeGiacenza;
|
||||||
@@ -302,4 +303,13 @@ public class DBSettingsModel {
|
|||||||
this.docInterniCheckFornitore = docInterniCheckFornitore;
|
this.docInterniCheckFornitore = docInterniCheckFornitore;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagAccettazioneUseQtaOrd() {
|
||||||
|
return flagAccettazioneUseQtaOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagAccettazioneUseQtaOrd(boolean flagAccettazioneUseQtaOrd) {
|
||||||
|
this.flagAccettazioneUseQtaOrd = flagAccettazioneUseQtaOrd;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -278,6 +278,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PVM")
|
.setGestName("PVM")
|
||||||
.setSection("DOC_INTERNI")
|
.setSection("DOC_INTERNI")
|
||||||
.setKeySection("CHECK_FORNITORE"));
|
.setKeySection("CHECK_FORNITORE"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("ACCETTAZIONE")
|
||||||
|
.setKeySection("FLAG_USE_QTA_ORD"));
|
||||||
|
|
||||||
|
|
||||||
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
||||||
@@ -304,6 +308,7 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class));
|
dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class));
|
||||||
dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class));
|
dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class));
|
||||||
|
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||||
|
|
||||||
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
|
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
|
||||||
if (notePerdita != null) {
|
if (notePerdita != null) {
|
||||||
|
|||||||
@@ -85,6 +85,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
@Inject
|
@Inject
|
||||||
AccettazionePickingViewModel mViewModel;
|
AccettazionePickingViewModel mViewModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
private final AccettazionePickingFiltroOrdineViewModel mAppliedFilterViewModel = new AccettazionePickingFiltroOrdineViewModel();
|
private final AccettazionePickingFiltroOrdineViewModel mAppliedFilterViewModel = new AccettazionePickingFiltroOrdineViewModel();
|
||||||
|
|
||||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||||
@@ -141,9 +144,14 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
this.initFilters();
|
this.initFilters();
|
||||||
|
|
||||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
|
boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
|
||||||
|
|
||||||
mViewModel.setListeners(this);
|
mViewModel.setListeners(this);
|
||||||
mViewModel.init(mOrders, mSitArts, codMdep);
|
mViewModel.init(
|
||||||
|
mOrders,
|
||||||
|
mSitArts,
|
||||||
|
codMdep,
|
||||||
|
useQtaOrd);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initFilters() {
|
private void initFilters() {
|
||||||
@@ -347,7 +355,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -833,8 +841,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
.setCanLUBeClosed(true)
|
.setCanLUBeClosed(true)
|
||||||
.setCanOverflowOrderQuantity(canOverflowQuantity);
|
.setCanOverflowOrderQuantity(canOverflowQuantity);
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
@@ -842,9 +851,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
.setPartitaMag(resultDTO.getPartitaMag())
|
.setPartitaMag(resultDTO.getPartitaMag())
|
||||||
.setDataScad(resultDTO.getDataScad());
|
.setDataScad(resultDTO.getDataScad());
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
}, () -> {
|
|
||||||
this.mViewModel.resetMatchedRows();
|
|
||||||
})
|
})
|
||||||
|
.setOnAbort(() -> this.mViewModel.resetMatchedRows())
|
||||||
.show(getSupportFragmentManager(), "tag");
|
.show(getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ public class AccettazionePickingViewModel {
|
|||||||
|
|
||||||
private List<OrdineAccettazioneInevasoDTO> mOrders;
|
private List<OrdineAccettazioneInevasoDTO> mOrders;
|
||||||
private List<SitArtOrdDTO> mSitArts;
|
private List<SitArtOrdDTO> mSitArts;
|
||||||
|
private boolean mUseQtaOrd;
|
||||||
private final MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
private final MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
||||||
|
|
||||||
private MtbColt mCurrentMtbColt = null;
|
private MtbColt mCurrentMtbColt = null;
|
||||||
@@ -97,9 +98,10 @@ public class AccettazionePickingViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void init(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, String codMdep) {
|
public void init(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, String codMdep, boolean useQtaOrd) {
|
||||||
this.mOrders = orders;
|
this.mOrders = orders;
|
||||||
this.mDefaultCodMdep = codMdep;
|
this.mDefaultCodMdep = codMdep;
|
||||||
|
this.mUseQtaOrd = useQtaOrd;
|
||||||
|
|
||||||
this.mSitArts = Stream.of(sitArts)
|
this.mSitArts = Stream.of(sitArts)
|
||||||
.filter(x -> UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO))
|
.filter(x -> UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO))
|
||||||
@@ -315,12 +317,13 @@ public class AccettazionePickingViewModel {
|
|||||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String finalBarcodeProd = barcodeProd;
|
||||||
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
||||||
|
|
||||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||||
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
|
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
|
||||||
}
|
}
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
@@ -536,7 +539,9 @@ public class AccettazionePickingViewModel {
|
|||||||
initialQtaTot = totalQtaOrd;
|
initialQtaTot = totalQtaOrd;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
|
if (!this.mUseQtaOrd &&
|
||||||
|
UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) &&
|
||||||
|
UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
|
||||||
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
|
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
|
||||||
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
|
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,9 +55,13 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
MtbColrRepository documentRowsRepository;
|
MtbColrRepository documentRowsRepository;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
DocInterniEditFormViewModel viewModel;
|
DocInterniEditFormViewModel viewModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View dialogInputQuantityV2View;
|
||||||
|
|
||||||
|
|
||||||
private int mBarcodeScannerIstanceID;
|
private int mBarcodeScannerIstanceID;
|
||||||
private ActivityContabDocInterniEditBinding binding;
|
private ActivityContabDocInterniEditBinding binding;
|
||||||
@@ -186,7 +190,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
}
|
}
|
||||||
|
|
||||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(this.viewModel::processBarcode)
|
.setOnScanSuccessful(this.viewModel::processBarcode)
|
||||||
.setOnScanFailed(this::onError));
|
.setOnScanFailed(this::onError));
|
||||||
this.viewModel.fetchDocumentRows();
|
this.viewModel.fetchDocumentRows();
|
||||||
}
|
}
|
||||||
@@ -245,11 +249,12 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
}
|
}
|
||||||
return partitaMag;
|
return partitaMag;
|
||||||
});
|
});
|
||||||
DialogInputQuantityV2View
|
dialogInputQuantityV2View.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
this.onLoadingStarted();
|
this.onLoadingStarted();
|
||||||
this.viewModel.saveRow(row, resultDTO);
|
this.viewModel.saveRow(row, resultDTO);
|
||||||
}, this::onLoadingEnded)
|
})
|
||||||
|
.setOnAbort(this::onLoadingEnded)
|
||||||
.show(getSupportFragmentManager(), "tag");
|
.show(getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
@@ -697,34 +697,34 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
};
|
};
|
||||||
|
|
||||||
private void refreshList(List<OrdiniUscitaElencoDTO> filteredList) {
|
private void refreshList(List<OrdiniUscitaElencoDTO> filteredList) {
|
||||||
this.onLoadingStarted();
|
|
||||||
|
|
||||||
//new Thread(() -> {
|
// new Thread(() -> {
|
||||||
|
|
||||||
requireActivity().runOnUiThread(() -> {
|
// requireActivity().runOnUiThread(() -> {
|
||||||
List<OrdiniUscitaElencoDTO> tmpList;
|
// this.onLoadingStarted();
|
||||||
|
List<OrdiniUscitaElencoDTO> tmpList;
|
||||||
|
|
||||||
if (filteredList != null) {
|
if (filteredList != null) {
|
||||||
tmpList = filteredList;
|
tmpList = filteredList;
|
||||||
} else if (mAppliedFilterViewModel != null) {
|
} else if (mAppliedFilterViewModel != null) {
|
||||||
mAppliedFilterViewModel.applyAllTests();
|
mAppliedFilterViewModel.applyAllTests();
|
||||||
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
||||||
} else {
|
} else {
|
||||||
tmpList = mViewModel.getOrderList().getValue();
|
tmpList = mViewModel.getOrderList().getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
var list = convertDataModelToListModel(tmpList);
|
var list = convertDataModelToListModel(tmpList);
|
||||||
|
|
||||||
this.mOrdiniInevasiMutableData.clear();
|
this.mOrdiniInevasiMutableData.clear();
|
||||||
this.mOrdiniInevasiMutableData.addAll(list);
|
this.mOrdiniInevasiMutableData.addAll(list);
|
||||||
|
|
||||||
fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
|
fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
|
||||||
.anyMatch(y -> y.getSelectedObservable().get()));
|
.anyMatch(y -> y.getSelectedObservable().get()));
|
||||||
|
|
||||||
this.onLoadingEnded();
|
// this.onLoadingEnded();
|
||||||
});
|
// });
|
||||||
|
|
||||||
//}).start();
|
// }).start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ public class OrdiniUscitaElencoViewModel {
|
|||||||
.distinct()
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if (foundGestioni != null && foundGestioni.size() > 1) {
|
if (foundGestioni.size() > 1) {
|
||||||
this.sendError(new InvalidLUMultiGestioneException());
|
this.sendError(new InvalidLUMultiGestioneException());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ public class OrdiniUscitaElencoViewModel {
|
|||||||
.distinct()
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if (foundCodMdep != null && foundCodMdep.size() > 1) {
|
if (foundCodMdep.size() > 1) {
|
||||||
this.sendError(new InvalidLUMultiCodMdepException());
|
this.sendError(new InvalidLUMultiCodMdepException());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -128,9 +128,9 @@ public class OrdiniUscitaElencoViewModel {
|
|||||||
.map(x -> (OrdineUscitaInevasoDTO) x)
|
.map(x -> (OrdineUscitaInevasoDTO) x)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
this.mOrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrdersBase, sitArts -> {
|
this.mOrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(mCurrentCodMdep, selectedOrdersBase, sitArts -> {
|
||||||
|
|
||||||
if(mtbGrupToFilter != null && !mtbGrupToFilter.isEmpty()) {
|
if (mtbGrupToFilter != null && !mtbGrupToFilter.isEmpty()) {
|
||||||
sitArts = Stream.of(sitArts)
|
sitArts = Stream.of(sitArts)
|
||||||
.filter(x -> Stream.of(mtbGrupToFilter).map(MtbGrup::getCodMgrp).anyMatch(y -> y.equalsIgnoreCase(x.getCodMgrp())))
|
.filter(x -> Stream.of(mtbGrupToFilter).map(MtbGrup::getCodMgrp).anyMatch(y -> y.equalsIgnoreCase(x.getCodMgrp())))
|
||||||
.toList();
|
.toList();
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
|||||||
@Inject
|
@Inject
|
||||||
PickingLiberoViewModel mViewModel;
|
PickingLiberoViewModel mViewModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false);
|
public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false);
|
||||||
public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(true);
|
public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(true);
|
||||||
public BindableBoolean thereIsAnyRowInUL = new BindableBoolean(false);
|
public BindableBoolean thereIsAnyRowInUL = new BindableBoolean(false);
|
||||||
@@ -153,7 +156,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
@@ -334,8 +337,8 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
|||||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||||
.setCanLUBeClosed(canLUBeClosed);
|
.setCanLUBeClosed(canLUBeClosed);
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
@@ -345,15 +348,14 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
|
|||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
}, () -> {
|
|
||||||
this.closeProgress();
|
|
||||||
})
|
})
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
.setOnAbort(this::closeProgress)
|
||||||
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRowSaved() {
|
public void onRowSaved() {
|
||||||
getActivity().runOnUiThread(() -> {
|
requireActivity().runOnUiThread(() -> {
|
||||||
FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ public class PickingLiberoViewModel {
|
|||||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String finalBarcodeProd = barcodeProd;
|
||||||
mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
||||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||||
MtbAart articolo = mtbAartList.get(0);
|
MtbAart articolo = mtbAartList.get(0);
|
||||||
@@ -216,11 +217,11 @@ public class PickingLiberoViewModel {
|
|||||||
this.dispatchArt(articolo, ean128Model);
|
this.dispatchArt(articolo, ean128Model);
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
|
||||||
}
|
}
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
|||||||
@Inject
|
@Inject
|
||||||
PickingResiViewModel mViewmodel;
|
PickingResiViewModel mViewmodel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||||
|
|
||||||
private ObservableArrayList<PickingResiListModel> mPickingResiMutableData = new ObservableArrayList<>();
|
private ObservableArrayList<PickingResiListModel> mPickingResiMutableData = new ObservableArrayList<>();
|
||||||
@@ -164,7 +167,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,8 +322,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
|||||||
.setCanLUBeClosed(false)
|
.setCanLUBeClosed(false)
|
||||||
.setCanPartitaMagBeChanged(false);
|
.setCanPartitaMagBeChanged(false);
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
@@ -330,7 +334,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
|||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
}, () -> {
|
})
|
||||||
|
.setOnAbort(() -> {
|
||||||
this.mViewmodel.resetMatchedRows();
|
this.mViewmodel.resetMatchedRows();
|
||||||
})
|
})
|
||||||
.show(getSupportFragmentManager(), "tag");
|
.show(getSupportFragmentManager(), "tag");
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
|
|||||||
@Inject
|
@Inject
|
||||||
ProdRecuperoMaterialeViewModel mViewModel;
|
ProdRecuperoMaterialeViewModel mViewModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
private FragmentProdRecuperoMaterialeBinding mBinding;
|
private FragmentProdRecuperoMaterialeBinding mBinding;
|
||||||
|
|
||||||
private int barcodeScannerIstanceID = -1;
|
private int barcodeScannerIstanceID = -1;
|
||||||
@@ -106,7 +109,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(this::onError));
|
.setOnScanFailed(this::onError));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
@@ -200,8 +203,9 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
|
|||||||
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
||||||
.setCanLUBeClosed(canLUBeClosed);
|
.setCanLUBeClosed(canLUBeClosed);
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
@@ -210,7 +214,8 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
|
|||||||
.setDataScad(resultDTO.getDataScad());
|
.setDataScad(resultDTO.getDataScad());
|
||||||
|
|
||||||
this.mViewModel.onItemDispatched(item, pickedQuantityDTO, sourceMtbColt);
|
this.mViewModel.onItemDispatched(item, pickedQuantityDTO, sourceMtbColt);
|
||||||
}, this::onLoadingEnded)
|
})
|
||||||
|
.setOnAbort(this::onLoadingEnded)
|
||||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,11 +10,12 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -26,46 +27,34 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
|||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
||||||
import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
|
import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
|
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListAdapter;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListAdapter;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListModel;
|
||||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
|
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||||
|
|
||||||
public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdineAcquistoEditViewModel.Listener {
|
||||||
|
|
||||||
private static String DATA_KEY_ORDER = "keyOrdine";
|
private static String DATA_KEY_ORDER = "keyOrdine";
|
||||||
|
|
||||||
private Ordine mOrdine;
|
private Ordine mOrdine;
|
||||||
private Griglia mGriglia;
|
|
||||||
private List<ArticoloOrdine> mArticoli = new ArrayList<>();
|
|
||||||
private PVEditOrderHelper mhelper;
|
|
||||||
private ActivityPvOrdineAcquistoEditBinding mBinding;
|
private ActivityPvOrdineAcquistoEditBinding mBinding;
|
||||||
private int mBarcodeScannerIstanceID;
|
|
||||||
private OrdineAcquistoArtListAdapter mAdapter;
|
private int barcodeScannerIstanceID;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
OrdineRepository mOrdineRepository;
|
PVOrdineAcquistoEditViewModel mViewModel;
|
||||||
@Inject
|
|
||||||
GrigliaRepository mGrigliaRepository;
|
private final ObservableArrayList<OrdineAcquistoArtListModel> mArticoliMutableData = new ObservableArrayList<>();
|
||||||
@Inject
|
|
||||||
ArticoliOrdineRepository mArticoliOrdineRepository;
|
|
||||||
@Inject
|
|
||||||
ArticoloGrigliaRepository mArticoloGrigliaRepository;
|
|
||||||
|
|
||||||
|
|
||||||
public static Intent newInstance(Context context, Ordine ordine) {
|
public static Intent newInstance(Context context, Ordine ordine) {
|
||||||
@@ -84,7 +73,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
|||||||
.create()
|
.create()
|
||||||
.inject(this);
|
.inject(this);
|
||||||
|
|
||||||
mhelper = new PVEditOrderHelper(mGrigliaRepository, mArticoliOrdineRepository, mArticoloGrigliaRepository);
|
|
||||||
|
|
||||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit);
|
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit);
|
||||||
mBinding.setViewModel(this);
|
mBinding.setViewModel(this);
|
||||||
@@ -95,25 +83,40 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
|||||||
|
|
||||||
if (mOrdine == null) {
|
if (mOrdine == null) {
|
||||||
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
|
||||||
closeEdit();
|
close();
|
||||||
}
|
}
|
||||||
if (mOrdine.isTransmitted()) {
|
if (mOrdine.isTransmitted()) {
|
||||||
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
|
||||||
closeEdit();
|
close();
|
||||||
}
|
}
|
||||||
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||||
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
|
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
|
||||||
FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
|
FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
|
||||||
|
|
||||||
|
|
||||||
|
initBarcodeReader();
|
||||||
initRecyclerView();
|
initRecyclerView();
|
||||||
fetchDetails();
|
|
||||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
|
||||||
.setOnScanSuccessfull(this::onScanSuccessful)
|
|
||||||
.setOnScanFailed(this::handleException));
|
|
||||||
|
|
||||||
|
this.mViewModel.setListener(this);
|
||||||
|
|
||||||
|
this.mViewModel.getCurrentGriglia().observe(this, griglia -> {
|
||||||
|
mBinding.codAlis.setText(griglia.getCodAlis());
|
||||||
|
});
|
||||||
|
|
||||||
|
this.mViewModel.getArticoli().observe(this, articoli -> {
|
||||||
|
mBinding.countArtOrd.setText(String.valueOf(articoli.size()));
|
||||||
|
mBinding.pvOrdineExport.setVisibility(articoli.size() > 0 ? View.INVISIBLE : View.GONE);
|
||||||
|
mBinding.closeActivityFab.close(false);
|
||||||
|
mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE);
|
||||||
|
|
||||||
|
if (articoli.isEmpty() && isOrderNewProdsForced()) {
|
||||||
|
this.mViewModel.orderNewProducts();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.mViewModel.init(mOrdine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onSupportNavigateUp() {
|
public boolean onSupportNavigateUp() {
|
||||||
@@ -121,186 +124,133 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initRecyclerView() {
|
private void initBarcodeReader() {
|
||||||
mBinding.articoliOrdineList.setHasFixedSize(true);
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
|
.setOnScanFailed(this::onError));
|
||||||
|
|
||||||
|
BarcodeManager.enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initRecyclerView() {
|
||||||
|
this.mViewModel.getArticoli().observe(this, updatedData -> {
|
||||||
|
this.mArticoliMutableData.clear();
|
||||||
|
this.mArticoliMutableData.addAll(convertDataModelToListModel(updatedData));
|
||||||
|
// this.noItemsToPick.set(!isThereAnyItemToPick(updatedData));
|
||||||
|
});
|
||||||
|
|
||||||
|
var mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoliMutableData)
|
||||||
|
.setOnItemClicked(this::selectAction);
|
||||||
|
|
||||||
|
mBinding.articoliOrdineList.setAdapter(mAdapter);
|
||||||
|
mBinding.articoliOrdineList.setHasFixedSize(true);
|
||||||
mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this));
|
mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this));
|
||||||
|
|
||||||
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL);
|
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL);
|
||||||
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
|
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
|
||||||
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
|
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
|
||||||
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::selectAction);
|
|
||||||
mBinding.articoliOrdineList.setAdapter(mAdapter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<OrdineAcquistoArtListModel> convertDataModelToListModel
|
||||||
|
(List<ArticoloOrdine> dataList) {
|
||||||
|
return Stream.of(dataList)
|
||||||
|
.distinctBy(ArticoloOrdine::getArticoloOrdineId)
|
||||||
|
.sortBy(x -> x.getDataIns().getTime())
|
||||||
|
.map(x -> new OrdineAcquistoArtListModel()
|
||||||
|
.setBadge1(x.getCodMart())
|
||||||
|
.setDescription(x.getDescrizione())
|
||||||
|
.setQuantity(BigDecimal.valueOf(x.getQtaOrd()))
|
||||||
|
.setUntMis(x.getUntMis())
|
||||||
|
.setOriginalModel(x))
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void selectAction(ArticoloOrdine articoloOrdine) {
|
private void selectAction(ArticoloOrdine articoloOrdine) {
|
||||||
mBinding.closeActivityFab.close(false);
|
mBinding.closeActivityFab.close(false);
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
runOnUiThread(() -> DialogAskAction.make(this,
|
runOnUiThread(() -> {
|
||||||
articoloOrdine.getDescrizione(),
|
DialogAskAction.make(this,
|
||||||
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
|
articoloOrdine.getDescrizione(),
|
||||||
() -> this.addArticolo(articoloOrdine),
|
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
|
||||||
() -> this.deleteArticolo(articoloOrdine)).show());
|
() -> {
|
||||||
|
this.onItemDispatched(articoloOrdine);
|
||||||
|
BarcodeManager.enable();
|
||||||
|
},
|
||||||
|
() -> {
|
||||||
|
this.deleteArticolo(articoloOrdine);
|
||||||
|
BarcodeManager.enable();
|
||||||
|
}).show();
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteArticolo(ArticoloOrdine articoloOrdine) {
|
private void deleteArticolo(ArticoloOrdine articoloOrdine) {
|
||||||
String text = "Stai per eliminare l'articolo <b> " + articoloOrdine.getDescrizione() + "</b> dall'ordine, <br> sei sicuro?";
|
String text = "Stai per eliminare l'articolo <b> " + articoloOrdine.getDescrizione() + "</b> dall'ordine, <br> sei sicuro?";
|
||||||
|
|
||||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> {
|
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> {
|
||||||
this.openProgress();
|
this.mViewModel.deleteArticolo(articoloOrdine);
|
||||||
mhelper.removeArticoloFromOrdine(articoloOrdine, () -> {
|
}, () -> {
|
||||||
this.closeProgress();
|
|
||||||
BarcodeManager.enable();
|
|
||||||
runOnUiThread(this::fetchArticoli);
|
|
||||||
}, e -> {
|
|
||||||
this.closeProgress();
|
|
||||||
runOnUiThread(() -> UtilityExceptions.defaultException(this, e));
|
|
||||||
});
|
|
||||||
}), () -> {
|
|
||||||
}).show(getSupportFragmentManager(), "tag");
|
}).show(getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleException(Exception ex) {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
runOnUiThread(() -> {
|
mBinding.closeActivityFab.close(false);
|
||||||
this.closeProgress();
|
this.onLoadingStarted();
|
||||||
BarcodeManager.enable();
|
|
||||||
UtilityExceptions.defaultException(this, ex, false);
|
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||||
|
this.onLoadingEnded();
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemDispatched(ArticoloOrdine articoloOrdine) {
|
||||||
|
|
||||||
|
DialogEditArticoloView
|
||||||
|
.newInstance(articoloOrdine, articolo -> {
|
||||||
|
runOnUiThread(() -> {
|
||||||
|
if (articolo != null) {
|
||||||
|
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mViewModel.saveArticolo(articolo);
|
||||||
|
});
|
||||||
|
}, () -> {
|
||||||
|
|
||||||
|
}).show(this.getSupportFragmentManager(), "tag");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void exportOrdine() {
|
||||||
|
this.mViewModel.exportOrdine(() -> {
|
||||||
|
runOnUiThread(() -> {
|
||||||
|
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
|
||||||
|
close();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onScanSuccessful(BarcodeScanDTO dto) {
|
|
||||||
mBinding.closeActivityFab.close(false);
|
|
||||||
BarcodeManager.disable();
|
|
||||||
this.openProgress();
|
|
||||||
mhelper.checkArticolo(
|
|
||||||
mOrdine,
|
|
||||||
dto.getStringValue(),
|
|
||||||
articoloOrdine -> {
|
|
||||||
this.closeProgress();
|
|
||||||
addArticolo(articoloOrdine);
|
|
||||||
},
|
|
||||||
e -> {
|
|
||||||
this.closeProgress();
|
|
||||||
handleException(e);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addArticolo(ArticoloOrdine articoloOrdine) {
|
public void close() {
|
||||||
|
|
||||||
runOnUiThread(() -> EditArticoloDialog.newInstance(this, mhelper, articoloOrdine, articolo -> {
|
|
||||||
BarcodeManager.enable();
|
|
||||||
if (articolo != null) {
|
|
||||||
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
fetchArticoli();
|
|
||||||
}).show(this.getSupportFragmentManager(), "tag"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fetchDetails() {
|
|
||||||
fetchGriglia();
|
|
||||||
fetchArticoli();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void orderNewProducts() {
|
|
||||||
this.openProgress();
|
|
||||||
mhelper.getNewArticoli(mOrdine.getIdGriglia(), articoli -> {
|
|
||||||
if (articoli != null && !articoli.isEmpty()) {
|
|
||||||
List<ArticoloOrdine> articoliToSave = new ArrayList<>();
|
|
||||||
Stream.of(articoli).forEach(articolo -> {
|
|
||||||
if (
|
|
||||||
Stream.of(mArticoli).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty()
|
|
||||||
&& Stream.of(articoliToSave).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty()
|
|
||||||
) {
|
|
||||||
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mOrdine);
|
|
||||||
dto.setQtaOrd(dto.getQtaCnf());
|
|
||||||
articoliToSave.add(dto);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!articoliToSave.isEmpty()) {
|
|
||||||
mhelper.saveArticoliToOrdine(articoliToSave, this::fetchArticoli, this::handleException);
|
|
||||||
} else {
|
|
||||||
this.closeProgress();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.closeProgress();
|
|
||||||
}
|
|
||||||
}, this::handleException);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fetchGriglia() {
|
|
||||||
mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> {
|
|
||||||
runOnUiThread(() -> {
|
|
||||||
mGriglia = griglia;
|
|
||||||
mBinding.codAlis.setText(mGriglia.getCodAlis());
|
|
||||||
});
|
|
||||||
}, this::handleException);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fetchArticoli() {
|
|
||||||
this.openProgress();
|
|
||||||
mhelper.loadArticoli(mOrdine, articoli -> {
|
|
||||||
this.closeProgress();
|
|
||||||
mArticoli = articoli;
|
|
||||||
runOnUiThread(() -> {
|
|
||||||
mAdapter.updateItems(mArticoli);
|
|
||||||
mBinding.countArtOrd.setText(String.valueOf(mArticoli.size()));
|
|
||||||
mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE);
|
|
||||||
mBinding.closeActivityFab.close(false);
|
|
||||||
mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE);
|
|
||||||
if (mArticoli.isEmpty() && isOrderNewProdsForced()) {
|
|
||||||
orderNewProducts();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, this::handleException);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void closeEdit() {
|
|
||||||
onBackPressed();
|
onBackPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void exportOrdine() {
|
|
||||||
this.openProgress();
|
|
||||||
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine, mArticoli, mGriglia, (ordine) -> {
|
|
||||||
|
|
||||||
mOrdineRepository.updateOrder(ordine, ord -> {
|
|
||||||
this.closeProgress();
|
|
||||||
runOnUiThread(() -> {
|
|
||||||
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
|
|
||||||
onBackPressed();
|
|
||||||
});
|
|
||||||
}, e -> runOnUiThread(() -> {
|
|
||||||
this.closeProgress();
|
|
||||||
UtilityExceptions.defaultException(this, e);
|
|
||||||
}));
|
|
||||||
|
|
||||||
}, e -> runOnUiThread(() -> {
|
|
||||||
this.closeProgress();
|
|
||||||
UtilityExceptions.defaultException(this, e);
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
|
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void manualSearch() {
|
public void manualSearch() {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> {
|
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> {
|
||||||
this.openProgress();
|
this.onLoadingStarted();
|
||||||
mhelper.checkArticolo(
|
this.mViewModel.loadArticolo(codice,
|
||||||
mOrdine,
|
() -> {
|
||||||
codice,
|
this.onLoadingEnded();
|
||||||
articoloOrdine -> {
|
BarcodeManager.enable();
|
||||||
this.closeProgress();
|
|
||||||
addArticolo(articoloOrdine);
|
|
||||||
},
|
|
||||||
e -> {
|
|
||||||
this.closeProgress();
|
|
||||||
handleException(e);
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}, BarcodeManager::enable).show();
|
}, BarcodeManager::enable).show();
|
||||||
@@ -309,4 +259,5 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
|||||||
private boolean isOrderNewProdsForced() {
|
private boolean isOrderNewProdsForced() {
|
||||||
return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia();
|
return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,34 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||||
|
|
||||||
@Module(subcomponents = PVOrdineAcquistoEditComponent.class)
|
@Module(subcomponents = PVOrdineAcquistoEditComponent.class)
|
||||||
public class PVOrdineAcquistoEditModule {
|
public class PVOrdineAcquistoEditModule {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer() {
|
||||||
|
return new PVOrdiniAcquistoRESTConsumer();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
PVOrdineAcquistoEditViewModel providesPvOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
||||||
|
GrigliaRepository grigliaRepository,
|
||||||
|
ArticoliOrdineRepository articoliOrdineRepository,
|
||||||
|
ArticoloGrigliaRepository articoloGrigliaRepository,
|
||||||
|
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer) {
|
||||||
|
return new PVOrdineAcquistoEditViewModel(ordineRepository, grigliaRepository, articoliOrdineRepository, articoloGrigliaRepository, pvOrdiniAcquistoRESTConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,262 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
|
||||||
|
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||||
|
|
||||||
|
public class PVOrdineAcquistoEditViewModel {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
OrdineRepository mOrdineRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
GrigliaRepository mGrigliaRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ArticoliOrdineRepository mArticoliOrdineRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ArticoloGrigliaRepository mArticoloGrigliaRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer;
|
||||||
|
|
||||||
|
private Ordine mCurrentOrdine;
|
||||||
|
|
||||||
|
|
||||||
|
private Listener mListener;
|
||||||
|
|
||||||
|
|
||||||
|
private final MutableLiveData<Griglia> mCurrentGriglia = new MutableLiveData<>();
|
||||||
|
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
||||||
|
|
||||||
|
|
||||||
|
public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
||||||
|
GrigliaRepository grigliaRepository,
|
||||||
|
ArticoliOrdineRepository articoliOrdineRepository,
|
||||||
|
ArticoloGrigliaRepository articoloGrigliaRepository,
|
||||||
|
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer) {
|
||||||
|
this.mOrdineRepository = ordineRepository;
|
||||||
|
this.mGrigliaRepository = grigliaRepository;
|
||||||
|
this.mArticoliOrdineRepository = articoliOrdineRepository;
|
||||||
|
this.mArticoloGrigliaRepository = articoloGrigliaRepository;
|
||||||
|
this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Ordine ordine) {
|
||||||
|
this.mCurrentOrdine = ordine;
|
||||||
|
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
this.loadGriglia(ordine.getIdGriglia(), griglia -> {
|
||||||
|
mCurrentGriglia.postValue(griglia);
|
||||||
|
|
||||||
|
this.loadArticoli(mCurrentOrdine, articoli -> {
|
||||||
|
this.mArticoli.postValue(articoli);
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public MutableLiveData<Griglia> getCurrentGriglia() {
|
||||||
|
return mCurrentGriglia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MutableLiveData<List<ArticoloOrdine>> getArticoli() {
|
||||||
|
return mArticoli;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveArticolo(ArticoloOrdine articolo) {
|
||||||
|
var newList = this.mArticoli.getValue();
|
||||||
|
|
||||||
|
var alreadySavedItem = Stream.of(newList)
|
||||||
|
.filter(x -> Objects.equals(x.getArticoloOrdineId(), articolo.getArticoloOrdineId()))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
if(alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get());
|
||||||
|
|
||||||
|
newList.add(articolo);
|
||||||
|
this.mArticoli.postValue(newList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void loadArticolo(String barcode, Runnable onSuccess) {
|
||||||
|
try {
|
||||||
|
mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, barcode, (articolo) -> {
|
||||||
|
if (articolo != null) {
|
||||||
|
onSuccess.run();
|
||||||
|
this.sendOnItemDispatched(articolo);
|
||||||
|
} else {
|
||||||
|
mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, mCurrentOrdine.getIdGriglia(), artGrid -> {
|
||||||
|
if (artGrid != null) {
|
||||||
|
onSuccess.run();
|
||||||
|
this.sendOnItemDispatched(artGrid.convertToArticoloOrdine(mCurrentOrdine));
|
||||||
|
} else {
|
||||||
|
this.sendError(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
|
||||||
|
}
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.sendError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||||
|
this.checkArticolo(
|
||||||
|
mCurrentOrdine,
|
||||||
|
barcodeScanDTO.getStringValue(),
|
||||||
|
articoloOrdine -> {
|
||||||
|
this.sendOnItemDispatched(articoloOrdine);
|
||||||
|
onComplete.run();
|
||||||
|
},
|
||||||
|
this::sendError
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad) {
|
||||||
|
try {
|
||||||
|
mGrigliaRepository.findGrigliaById(idGriglia, onLoad, this::sendError);
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.sendError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad) {
|
||||||
|
try {
|
||||||
|
mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, this::sendError);
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.sendError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkArticolo(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
|
||||||
|
try {
|
||||||
|
mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> {
|
||||||
|
if (articolo != null) {
|
||||||
|
onSuccess.run(articolo);
|
||||||
|
} else {
|
||||||
|
mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> {
|
||||||
|
if (artGrid != null) {
|
||||||
|
onSuccess.run(artGrid.convertToArticoloOrdine(ordine));
|
||||||
|
} else {
|
||||||
|
onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
|
||||||
|
}
|
||||||
|
}, onFail);
|
||||||
|
}
|
||||||
|
}, onFail);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
onFail.run(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void getNewArticoli(int idGrigla, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onError) {
|
||||||
|
mArticoloGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void orderNewProducts() {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
this.getNewArticoli(mCurrentOrdine.getIdGriglia(), articoli -> {
|
||||||
|
if (articoli != null && !articoli.isEmpty()) {
|
||||||
|
List<ArticoloOrdine> articoliToSave = new ArrayList<>();
|
||||||
|
|
||||||
|
Stream.of(articoli).forEach(articolo -> {
|
||||||
|
if (
|
||||||
|
Stream.of(mArticoli.getValue())
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||||
|
.findFirst()
|
||||||
|
.isEmpty()
|
||||||
|
|
||||||
|
&& Stream.of(articoliToSave)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||||
|
.findFirst()
|
||||||
|
.isEmpty()
|
||||||
|
) {
|
||||||
|
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
|
||||||
|
dto.setQtaOrd(dto.getQtaCnf());
|
||||||
|
articoliToSave.add(dto);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!articoliToSave.isEmpty()) {
|
||||||
|
mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> {
|
||||||
|
Stream.of(articoliToSave).forEach(this::saveArticolo);
|
||||||
|
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
|
} else this.sendOnLoadingEnded();
|
||||||
|
} else this.sendOnLoadingEnded();
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteArticolo(ArticoloOrdine articoloOrdine) {
|
||||||
|
mArticoliOrdineRepository.deleteArticolo(articoloOrdine, () -> {
|
||||||
|
this.mArticoli.getValue().remove(articoloOrdine);
|
||||||
|
this.mArticoli.postValue(this.mArticoli.getValue());
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void exportOrdine(Runnable onComplete) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), mCurrentGriglia.getValue(), (ordine) -> {
|
||||||
|
|
||||||
|
mOrdineRepository.updateOrder(ordine, ord -> {
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
onComplete.run();
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine) {
|
||||||
|
if (this.mListener != null) mListener.onItemDispatched(articoloOrdine);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnLoadingStarted() {
|
||||||
|
if (this.mListener != null) mListener.onLoadingStarted();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnLoadingEnded() {
|
||||||
|
if (this.mListener != null) mListener.onLoadingEnded();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendError(Exception ex) {
|
||||||
|
if (this.mListener != null) mListener.onError(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Listener extends ILoadingListener {
|
||||||
|
void onItemDispatched(ArticoloOrdine articoloOrdine);
|
||||||
|
|
||||||
|
void onError(Exception ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PVOrdineAcquistoEditViewModel setListener(Listener listener) {
|
||||||
|
this.mListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface DialogEditArticoloComponent {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
DialogEditArticoloComponent create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void inject(DialogEditArticoloView dialogEditArticoloView);
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
||||||
|
|
||||||
|
@Module(subcomponents = DialogEditArticoloComponent.class)
|
||||||
|
public class DialogEditArticoloModule {
|
||||||
|
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
DialogEditArticoloViewModel providesDialogEditArticoloViewModel(ArticoliOrdineRepository articoliOrdineRepository) {
|
||||||
|
return new DialogEditArticoloViewModel(articoliOrdineRepository);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,180 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.InputType;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.WindowManager;
|
||||||
|
import android.view.inputmethod.EditorInfo;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
||||||
|
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
|
||||||
|
|
||||||
|
public class DialogEditArticoloView extends BaseDialogFragment implements DialogEditArticoloViewModel.Listener {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogEditArticoloViewModel mViewModel;
|
||||||
|
|
||||||
|
private final ArticoloOrdine mArticolo;
|
||||||
|
private final RunnableArgs<ArticoloOrdine> mOnComplete;
|
||||||
|
private final Runnable mOnAbort;
|
||||||
|
|
||||||
|
public ObservableField<BigDecimal> currentNumCnf = new ObservableField<>();
|
||||||
|
public ObservableField<BigDecimal> currentQtaCnf = new ObservableField<>();
|
||||||
|
public ObservableField<BigDecimal> currentQtaTot = new ObservableField<>();
|
||||||
|
|
||||||
|
private DialogPvEditArticoloBinding mBindings;
|
||||||
|
private boolean mEnableDataCallback = true;
|
||||||
|
|
||||||
|
public static DialogEditArticoloView newInstance(ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onComplete, Runnable onAbort) {
|
||||||
|
return new DialogEditArticoloView(articolo, onComplete, onAbort);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogEditArticoloView(ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onComplete, Runnable onAbort) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.mArticolo = articolo;
|
||||||
|
this.mOnComplete = onComplete;
|
||||||
|
this.mOnAbort = onAbort;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, container, false);
|
||||||
|
mBindings.setLifecycleOwner(this);
|
||||||
|
|
||||||
|
MainApplication.appComponent
|
||||||
|
.dialogEditArticoloComponent()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
|
||||||
|
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||||
|
|
||||||
|
mBindings.toolbar.setTitle("Inserimento articolo");
|
||||||
|
mBindings.inputQtaOrd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
||||||
|
|
||||||
|
|
||||||
|
this.mViewModel
|
||||||
|
.setListener(this)
|
||||||
|
.setCurrentArticolo(this.mArticolo)
|
||||||
|
.setInitialQtaCnf(BigDecimal.valueOf(mArticolo.getQtaCnf()))
|
||||||
|
.setInitialNumCnf(UtilityBigDecimal.divide(BigDecimal.valueOf(mArticolo.getQtaOrd()), BigDecimal.valueOf(mArticolo.getQtaCnf())).setScale(0, RoundingMode.CEILING))
|
||||||
|
.setInitialQtaTot(BigDecimal.valueOf(mArticolo.getQtaOrd()));
|
||||||
|
|
||||||
|
mBindings.setView(this);
|
||||||
|
|
||||||
|
this.onDataChanged();
|
||||||
|
|
||||||
|
this.initBindings();
|
||||||
|
|
||||||
|
return mBindings.getRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
|
this.mViewModel.setListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
this.mOnAbort.run();
|
||||||
|
super.onDismiss(dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initBindings() {
|
||||||
|
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> {
|
||||||
|
if (this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setNumCnf(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentQtaCnf, (value) -> {
|
||||||
|
if (this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setQtaCnf(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentQtaTot, (value) -> {
|
||||||
|
if (this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setQtaTot(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
mBindings.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> {
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
|
mBindings.inputNumCnfText.requestFocus();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
mBindings.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> {
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
|
saveAndExit();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine getArticolo() {
|
||||||
|
return mArticolo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDataChanged() {
|
||||||
|
this.mEnableDataCallback = false;
|
||||||
|
|
||||||
|
this.currentNumCnf.set(this.mViewModel.getNumCnf());
|
||||||
|
this.currentQtaCnf.set(this.mViewModel.getQtaCnf());
|
||||||
|
this.currentQtaTot.set(this.mViewModel.getQtaTot());
|
||||||
|
|
||||||
|
this.mBindings.executePendingBindings();
|
||||||
|
|
||||||
|
this.mEnableDataCallback = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void saveAndExit() {
|
||||||
|
this.onLoadingStarted();
|
||||||
|
|
||||||
|
this.mViewModel.save(newArticolo -> {
|
||||||
|
this.mOnComplete.run(newArticolo);
|
||||||
|
this.onLoadingEnded();
|
||||||
|
dismiss();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
|
|
||||||
|
public class DialogEditArticoloViewModel {
|
||||||
|
|
||||||
|
ArticoliOrdineRepository mArticoliOrdineRepository;
|
||||||
|
|
||||||
|
private Listener mListener;
|
||||||
|
|
||||||
|
private ArticoloOrdine mCurrentArticolo;
|
||||||
|
|
||||||
|
private BigDecimal internalNumCnf;
|
||||||
|
private BigDecimal internalQtaCnf;
|
||||||
|
private BigDecimal internalQtaTot;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public DialogEditArticoloViewModel(ArticoliOrdineRepository articoliOrdineRepository) {
|
||||||
|
this.mArticoliOrdineRepository = articoliOrdineRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogEditArticoloViewModel setCurrentArticolo(ArticoloOrdine currentArticolo) {
|
||||||
|
this.mCurrentArticolo = currentArticolo;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogEditArticoloViewModel setInitialNumCnf(BigDecimal numCnf) {
|
||||||
|
this.internalNumCnf = numCnf;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogEditArticoloViewModel setInitialQtaCnf(BigDecimal qtaCnf) {
|
||||||
|
this.internalQtaCnf = qtaCnf;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogEditArticoloViewModel setInitialQtaTot(BigDecimal qtaTot) {
|
||||||
|
this.internalQtaTot = qtaTot;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumCnf(BigDecimal newValue) {
|
||||||
|
this.internalNumCnf = newValue;
|
||||||
|
if (newValue == null) return;
|
||||||
|
|
||||||
|
this.internalQtaTot = UtilityBigDecimal.multiply(newValue, internalQtaCnf)
|
||||||
|
.setScale(2, RoundingMode.CEILING);
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtaCnf(BigDecimal newValue) {
|
||||||
|
this.internalQtaCnf = newValue;
|
||||||
|
if (newValue == null) return;
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtaTot(BigDecimal newValue) {
|
||||||
|
this.internalQtaTot = newValue;
|
||||||
|
|
||||||
|
this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf)
|
||||||
|
.setScale(0, RoundingMode.CEILING);
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getNumCnf() {
|
||||||
|
return this.internalNumCnf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaCnf() {
|
||||||
|
return this.internalQtaCnf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaTot() {
|
||||||
|
return this.internalQtaTot;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface Listener {
|
||||||
|
void onDataChanged();
|
||||||
|
|
||||||
|
void onError(Exception ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Listener getListener() {
|
||||||
|
return mListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogEditArticoloViewModel setListener(Listener listener) {
|
||||||
|
this.mListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void save(RunnableArgs<ArticoloOrdine> onComplete) {
|
||||||
|
if(UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) {
|
||||||
|
this.mListener.onError(new Exception("La quantità ordinata deve essere maggiore di 0"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mCurrentArticolo.setQtaOrd(this.internalQtaTot.floatValue());
|
||||||
|
|
||||||
|
try {
|
||||||
|
mArticoliOrdineRepository.saveArticoloToOrdine(this.mCurrentArticolo, () -> {
|
||||||
|
onComplete.run(this.mCurrentArticolo);
|
||||||
|
}, this.mListener::onError);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
this.mListener.onError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.graphics.drawable.ColorDrawable;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.text.InputType;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.WindowManager;
|
|
||||||
import android.view.inputmethod.EditorInfo;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import androidx.fragment.app.DialogFragment;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableBigDecimal;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableInteger;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
|
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
|
|
||||||
|
|
||||||
public class EditArticoloDialog extends BaseDialogFragment {
|
|
||||||
|
|
||||||
private final Activity mContext;
|
|
||||||
private DialogPvEditArticoloBinding mBinding;
|
|
||||||
private final PVEditOrderHelper mHelper;
|
|
||||||
private final MutableLiveData<ArticoloOrdine> mArticolo = new MutableLiveData<>();
|
|
||||||
private final RunnableArgs<ArticoloOrdine> onDialogDismiss;
|
|
||||||
private boolean mLockedInput = false;
|
|
||||||
|
|
||||||
public final BindableBigDecimal qtaOrd = new BindableBigDecimal(BigDecimal.ZERO);
|
|
||||||
public final BindableInteger numCnf = new BindableInteger(0);
|
|
||||||
public final BindableBigDecimal qtaCnf = new BindableBigDecimal(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
public static EditArticoloDialog newInstance(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
|
|
||||||
return new EditArticoloDialog(context, helper, articolo, onDialogDismiss);
|
|
||||||
}
|
|
||||||
|
|
||||||
private EditArticoloDialog(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
|
|
||||||
mContext = context;
|
|
||||||
mArticolo.setValue(articolo);
|
|
||||||
mHelper = helper;
|
|
||||||
qtaOrd.set(BigDecimal.valueOf(articolo.getQtaOrd()));
|
|
||||||
numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()), 0, RoundingMode.CEILING).intValue());
|
|
||||||
qtaCnf.set(BigDecimal.valueOf(articolo.getQtaCnf()));
|
|
||||||
|
|
||||||
this.onDialogDismiss = onDialogDismiss;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
|
||||||
super.onDismiss(dialog);
|
|
||||||
ArticoloOrdine articolo = mArticolo.getValue();
|
|
||||||
if (articolo != null && articolo.getQtaOrd() <= 0f) {
|
|
||||||
articolo = null;
|
|
||||||
}
|
|
||||||
onDialogDismiss.run(articolo);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
||||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
|
|
||||||
mBinding.setView(this);
|
|
||||||
mBinding.toolbar.setTitle("Inserimento articolo");
|
|
||||||
mBinding.inputQtaOrd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
|
||||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
|
||||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
|
||||||
initBindings();
|
|
||||||
return mBinding.getRoot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart() {
|
|
||||||
super.onStart();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initBindings() {
|
|
||||||
|
|
||||||
BindableBigDecimal.registerListener(qtaOrd, qta -> {
|
|
||||||
if (!mLockedInput) {
|
|
||||||
mLockedInput = true;
|
|
||||||
|
|
||||||
ArticoloOrdine articoloOrdine = mArticolo.getValue();
|
|
||||||
BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf());
|
|
||||||
int cnf = 0;
|
|
||||||
if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0) {
|
|
||||||
cnf = qtaOrd.get().divide(qtaCnf, 0, RoundingMode.CEILING).intValue();
|
|
||||||
}
|
|
||||||
this.numCnf.set(cnf);
|
|
||||||
this.mBinding.executePendingBindings();
|
|
||||||
|
|
||||||
mLockedInput = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
BindableInteger.registerListener(numCnf, qta -> {
|
|
||||||
if (!mLockedInput) {
|
|
||||||
mLockedInput = true;
|
|
||||||
|
|
||||||
ArticoloOrdine articoloOrdine = mArticolo.getValue();
|
|
||||||
BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf());
|
|
||||||
this.qtaOrd.set(BigDecimal.valueOf(numCnf.get() * qtaCnf.floatValue()).setScale(2, RoundingMode.CEILING));
|
|
||||||
this.mBinding.executePendingBindings();
|
|
||||||
|
|
||||||
mLockedInput = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mBinding.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> {
|
|
||||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
|
||||||
// saveAndExit();
|
|
||||||
mBinding.inputNumCnfText.requestFocus();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
mBinding.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> {
|
|
||||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
|
||||||
saveAndExit();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void saveAndExit() {
|
|
||||||
this.onLoadingStarted();
|
|
||||||
try {
|
|
||||||
ArticoloOrdine articolo = mArticolo.getValue();
|
|
||||||
if (articolo == null) {
|
|
||||||
throw new Exception("Articolo non valido");
|
|
||||||
}
|
|
||||||
if (qtaOrd.get().compareTo(BigDecimal.ZERO) <= 0) {
|
|
||||||
throw new Exception("La quantità ordinata deve essere maggiore di 0");
|
|
||||||
}
|
|
||||||
|
|
||||||
articolo.setQtaOrd(qtaOrd.get().floatValue());
|
|
||||||
mArticolo.postValue(articolo);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e));
|
|
||||||
this.onLoadingEnded();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mHelper.saveArticoloToOrdine(mArticolo.getValue(), () -> {
|
|
||||||
this.onLoadingEnded();
|
|
||||||
this.dismiss();
|
|
||||||
}, e -> mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArticoloOrdine getArticolo() {
|
|
||||||
return mArticolo.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cancel() {
|
|
||||||
mArticolo.postValue(null);
|
|
||||||
this.dismiss();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
||||||
@@ -43,26 +42,6 @@ public class PVEditOrderHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onError) {
|
|
||||||
try {
|
|
||||||
mGrigliaRepository.findGrigliaById(idGriglia, onLoad, onError);
|
|
||||||
} catch (Exception e) {
|
|
||||||
onError.run(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError) {
|
|
||||||
try {
|
|
||||||
mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, onError);
|
|
||||||
} catch (Exception e) {
|
|
||||||
onError.run(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onFail) {
|
|
||||||
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSave, RunnableArgs<Exception> onFail) {
|
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSave, RunnableArgs<Exception> onFail) {
|
||||||
mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail);
|
mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail);
|
||||||
|
|||||||
@@ -5,17 +5,19 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.databinding.ObservableArrayList;
|
||||||
|
import androidx.databinding.ObservableList;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
|
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
|
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
|
||||||
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
||||||
@@ -23,9 +25,10 @@ import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
|||||||
public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoArtListAdapter.SubheaderHolder, OrdineAcquistoArtListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
|
public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoArtListAdapter.SubheaderHolder, OrdineAcquistoArtListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
|
||||||
|
|
||||||
|
|
||||||
private Context mContext;
|
private final Context mContext;
|
||||||
|
|
||||||
|
private final List<OrdineAcquistoArtListModel> mDataset = new ArrayList<>();
|
||||||
|
|
||||||
private List<ArticoloOrdine> mDataset;
|
|
||||||
RunnableArgs<ArticoloOrdine> mOnItemSelect;
|
RunnableArgs<ArticoloOrdine> mOnItemSelect;
|
||||||
|
|
||||||
|
|
||||||
@@ -51,28 +54,26 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<O
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public OrdineAcquistoArtListAdapter(Context context, List<ArticoloOrdine> myDataset, RunnableArgs<ArticoloOrdine> onItemSelect) {
|
public OrdineAcquistoArtListAdapter(Context context, ObservableArrayList<OrdineAcquistoArtListModel> myDataset) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mDataset = orderItems(myDataset);
|
|
||||||
mOnItemSelect = onItemSelect;
|
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(ObservableList sender) {
|
||||||
|
mDataset.clear();
|
||||||
|
mDataset.addAll(sender);
|
||||||
|
notifyDataSetChanged();
|
||||||
|
notifyDataChanged();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateItems(List<ArticoloOrdine> updatedDataset) {
|
public OrdineAcquistoArtListAdapter setOnItemClicked(RunnableArgs<ArticoloOrdine> onItemSelect) {
|
||||||
mDataset.clear();
|
this.mOnItemSelect = onItemSelect;
|
||||||
mDataset.addAll(orderItems(updatedDataset));
|
return this;
|
||||||
notifyDataSetChanged();
|
|
||||||
notifyDataChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<ArticoloOrdine> orderItems(List<ArticoloOrdine> dataset) {
|
|
||||||
return Stream.of(dataset)
|
|
||||||
.distinctBy(ArticoloOrdine::getArticoloOrdineId)
|
|
||||||
.sortBy(x -> UtilityDate.formatDate(x.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||||
@@ -94,7 +95,7 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<O
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindItemViewHolder(OrdineAcquistoArtListAdapter.SingleItemViewHolder h, int itemPosition) {
|
public void onBindItemViewHolder(OrdineAcquistoArtListAdapter.SingleItemViewHolder h, int itemPosition) {
|
||||||
final ArticoloOrdine articoloOrdine = mDataset.get(itemPosition);
|
final ArticoloOrdine articoloOrdine = mDataset.get(itemPosition).getOriginalModel();
|
||||||
final OrdineAcquistoArtListAdapter.SingleItemViewHolder holder = h;
|
final OrdineAcquistoArtListAdapter.SingleItemViewHolder holder = h;
|
||||||
|
|
||||||
holder.binding.setArticolo(articoloOrdine);
|
holder.binding.setArticolo(articoloOrdine);
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
|
|
||||||
|
public class OrdineAcquistoArtListModel {
|
||||||
|
|
||||||
|
private String badge1;
|
||||||
|
private String description;
|
||||||
|
private BigDecimal quantity;
|
||||||
|
private String untMis;
|
||||||
|
|
||||||
|
private ArticoloOrdine originalModel;
|
||||||
|
|
||||||
|
public String getBadge1() {
|
||||||
|
return badge1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrdineAcquistoArtListModel setBadge1(String badge1) {
|
||||||
|
this.badge1 = badge1;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrdineAcquistoArtListModel setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQuantity() {
|
||||||
|
return quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrdineAcquistoArtListModel setQuantity(BigDecimal quantity) {
|
||||||
|
this.quantity = quantity;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUntMis() {
|
||||||
|
return untMis;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrdineAcquistoArtListModel setUntMis(String untMis) {
|
||||||
|
this.untMis = untMis;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine getOriginalModel() {
|
||||||
|
return originalModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrdineAcquistoArtListModel setOriginalModel(ArticoloOrdine originalModel) {
|
||||||
|
this.originalModel = originalModel;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -66,7 +66,7 @@ public class DialogScanLisA {
|
|||||||
private void initBarcode() {
|
private void initBarcode() {
|
||||||
|
|
||||||
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessfull)
|
.setOnScanSuccessful(onScanSuccessfull)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||||
|
|
||||||
mDialog.setBarcodeListener(true);
|
mDialog.setBarcodeListener(true);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class OrdineAcquistoPvHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateGriglia(Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
|
public void updateGriglia(Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
|
||||||
PVOrdiniAcquistoRESTConsumer.getArticoliListino(griglia.getCodAlis(), dto -> {
|
PVOrdiniAcquistoRESTConsumer.getArticoliListinoStatic(griglia.getCodAlis(), dto -> {
|
||||||
mContext.runOnUiThread(() -> {
|
mContext.runOnUiThread(() -> {
|
||||||
if (dto.getGrigliaAcquistiChild().size() <= 0) {
|
if (dto.getGrigliaAcquistiChild().size() <= 0) {
|
||||||
onFail.run(new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli"));
|
onFail.run(new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli"));
|
||||||
|
|||||||
@@ -73,6 +73,9 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
@Inject
|
@Inject
|
||||||
RettificaGiacenzeViewModel mViewModel;
|
RettificaGiacenzeViewModel mViewModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false);
|
public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false);
|
||||||
public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(false);
|
public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(false);
|
||||||
|
|
||||||
@@ -141,7 +144,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,7 +323,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
thereIsAnOpenedUL.set(false);
|
thereIsAnOpenedUL.set(false);
|
||||||
|
|
||||||
|
|
||||||
if(getActivity() != null) ((IPoppableActivity) getActivity()).pop();
|
if (getActivity() != null) ((IPoppableActivity) getActivity()).pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -331,7 +334,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
() -> onComplete.run(true),
|
() -> onComplete.run(true),
|
||||||
() -> onComplete.run(false)
|
() -> onComplete.run(false)
|
||||||
)
|
)
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -378,8 +381,9 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||||
.setCanLUBeClosed(canLUBeClosed);
|
.setCanLUBeClosed(canLUBeClosed);
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
@@ -389,15 +393,16 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
}, () -> {
|
})
|
||||||
|
.setOnAbort(() -> {
|
||||||
this.closeProgress();
|
this.closeProgress();
|
||||||
})
|
})
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRowSaved() {
|
public void onRowSaved() {
|
||||||
FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
FBToast.successToast(requireActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -450,7 +455,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
null,
|
null,
|
||||||
() -> onComplete.run(true),
|
() -> onComplete.run(true),
|
||||||
() -> onComplete.run(false))
|
() -> onComplete.run(false))
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");;
|
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -461,7 +467,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
null,
|
null,
|
||||||
R.string.button_ignore_print,
|
R.string.button_ignore_print,
|
||||||
onComplete)
|
onComplete)
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -469,7 +475,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
|||||||
DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> {
|
DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> {
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case YES:
|
case YES:
|
||||||
DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> {
|
DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> {
|
||||||
if (status == DialogConsts.Results.ABORT) {
|
if (status == DialogConsts.Results.ABORT) {
|
||||||
onComplete.run(false, null);
|
onComplete.run(false, null);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -150,13 +150,14 @@ public class RettificaGiacenzeViewModel {
|
|||||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String finalBarcodeProd = barcodeProd;
|
||||||
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
||||||
if (onComplete != null) onComplete.run();
|
if (onComplete != null) onComplete.run();
|
||||||
|
|
||||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||||
this.dispatchArt(mtbAartList.get(0), pickData);
|
this.dispatchArt(mtbAartList.get(0), pickData);
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
|
||||||
}
|
}
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
@Inject
|
@Inject
|
||||||
SpedizioneViewModel mViewmodel;
|
SpedizioneViewModel mViewmodel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||||
|
|
||||||
private final ObservableArrayList<SpedizioneListModel> mSpedizioneMutableData = new ObservableArrayList<>();
|
private final ObservableArrayList<SpedizioneListModel> mSpedizioneMutableData = new ObservableArrayList<>();
|
||||||
@@ -246,7 +249,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(this::onError));
|
.setOnScanFailed(this::onError));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
@@ -405,7 +408,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
|
|
||||||
BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
.filter(y -> y.getRefMtbColr() != null &&
|
.filter(y -> y.getRefMtbColr() != null &&
|
||||||
y.getRefMtbColr().getId() == mtbColrToDispatch.getId()
|
y.getRefMtbColr().getId() == mtbColrToDispatch.getId()
|
||||||
/*
|
/*
|
||||||
y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) &&
|
y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) &&
|
||||||
y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) &&
|
y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) &&
|
||||||
@@ -549,7 +552,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
|
|
||||||
BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
.filter(y -> y.getRefMtbColr() != null &&
|
.filter(y -> y.getRefMtbColr() != null &&
|
||||||
y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /*
|
y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /*
|
||||||
y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) &&
|
y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) &&
|
||||||
y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) &&
|
y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) &&
|
||||||
y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) &&
|
y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) &&
|
||||||
@@ -821,8 +824,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
.setCanLUBeClosed(true)
|
.setCanLUBeClosed(true)
|
||||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged);
|
.setCanPartitaMagBeChanged(canPartitaMagBeChanged);
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
.setQtaCnf(resultDTO.getQtaCnf())
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
@@ -832,7 +836,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
}, () -> {
|
})
|
||||||
|
.setOnAbort(() -> {
|
||||||
this.mViewmodel.resetMatchedRows();
|
this.mViewmodel.resetMatchedRows();
|
||||||
})
|
})
|
||||||
.show(getSupportFragmentManager(), "tag");
|
.show(getSupportFragmentManager(), "tag");
|
||||||
|
|||||||
@@ -626,12 +626,13 @@ public class SpedizioneViewModel {
|
|||||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String finalBarcodeProd = barcodeProd;
|
||||||
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
||||||
|
|
||||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||||
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
|
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
|
||||||
}
|
}
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
@@ -708,6 +709,7 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
List<PickingObjectDTO> matchPickingObject = Stream.of(pickingList)
|
List<PickingObjectDTO> matchPickingObject = Stream.of(pickingList)
|
||||||
.filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitArtOrdDTO().getCodMart()))
|
.filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitArtOrdDTO().getCodMart()))
|
||||||
|
.filter(x -> x.getSitArtOrdDTO().isFlagEnableScanArt())
|
||||||
.filter(x -> {
|
.filter(x -> {
|
||||||
MtbPartitaMag mtbPartitaMag = pickData != null && pickData.getManualPickDTO() != null && pickData.getManualPickDTO().getMtbPartitaMag() != null ? pickData.getManualPickDTO().getMtbPartitaMag() : null;
|
MtbPartitaMag mtbPartitaMag = pickData != null && pickData.getManualPickDTO() != null && pickData.getManualPickDTO().getMtbPartitaMag() != null ? pickData.getManualPickDTO().getMtbPartitaMag() : null;
|
||||||
return !mEnableCheckPartitaMag || (mtbPartitaMag != null && UtilityString.equalsIgnoreCase(x.getSitArtOrdDTO().getPartitaMag(), mtbPartitaMag.getPartitaMag()));
|
return !mEnableCheckPartitaMag || (mtbPartitaMag != null && UtilityString.equalsIgnoreCase(x.getSitArtOrdDTO().getPartitaMag(), mtbPartitaMag.getPartitaMag()));
|
||||||
@@ -742,8 +744,8 @@ public class SpedizioneViewModel {
|
|||||||
this.getPickingList().postValue(pickingList);
|
this.getPickingList().postValue(pickingList);
|
||||||
} else {
|
} else {
|
||||||
MtbColt refMtbColt = matchedItem.getRefMtbColt();
|
MtbColt refMtbColt = matchedItem.getRefMtbColt();
|
||||||
MtbColr refMtbColr = refMtbColt != null ? matchedItem.getRefMtbColt().getMtbColr().get(0) : null;
|
MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null;
|
||||||
this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, false);
|
this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
|
|||||||
@Inject
|
@Inject
|
||||||
VersamentoMerceViewModel mViewModel;
|
VersamentoMerceViewModel mViewModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogInputQuantityV2View mDialogInputQuantityV2View;
|
||||||
|
|
||||||
private FragmentMainVersamentoMerceBinding mBindings = null;
|
private FragmentMainVersamentoMerceBinding mBindings = null;
|
||||||
|
|
||||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||||
@@ -120,7 +123,7 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
|
|||||||
|
|
||||||
private void initBarcodeReader() {
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||||
|
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
@@ -202,9 +205,10 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
|
|||||||
.setCanPartitaMagBeChanged(canBatchLotBeChanged)
|
.setCanPartitaMagBeChanged(canBatchLotBeChanged)
|
||||||
.setCanLUBeClosed(false);
|
.setCanLUBeClosed(false);
|
||||||
|
|
||||||
this.getActivity().runOnUiThread(() -> {
|
this.requireActivity().runOnUiThread(() -> {
|
||||||
DialogInputQuantityV2View
|
mDialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
|
||||||
|
.setOnComplete((resultDTO, shouldCloseLU) -> {
|
||||||
|
|
||||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setNumCnf(resultDTO.getNumCnf())
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
@@ -215,8 +219,9 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
|
|||||||
|
|
||||||
onComplete.run(pickedQuantityDTO);
|
onComplete.run(pickedQuantityDTO);
|
||||||
|
|
||||||
}, this::onLoadingEnded)
|
})
|
||||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
.setOnAbort(this::onLoadingEnded)
|
||||||
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class DialogProgressView extends DialogFragment {
|
|||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, container, false);
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, container, false);
|
||||||
|
|
||||||
getDialog().setCanceledOnTouchOutside(false);
|
setCancelable(false);
|
||||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
|
||||||
mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireActivity().getString(R.string.loading) : title);
|
mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireActivity().getString(R.string.loading) : title);
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_cliente;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface DialogAskClienteComponent {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
DialogAskClienteComponent create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void inject(DialogAskClienteView dialogAskClienteView);
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_cliente;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
|
||||||
|
@Module(subcomponents = DialogAskClienteComponent.class)
|
||||||
|
public class DialogAskClienteModule {
|
||||||
|
}
|
||||||
@@ -14,20 +14,32 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
import it.integry.integrywmsnative.core.model.VtbDest;
|
import it.integry.integrywmsnative.core.model.VtbDest;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.databinding.DialogAskClienteBinding;
|
import it.integry.integrywmsnative.databinding.DialogAskClienteBinding;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
|
||||||
@@ -45,6 +57,12 @@ public class DialogAskClienteView extends BaseDialogFragment {
|
|||||||
|
|
||||||
private boolean mIsClienteSelected = false;
|
private boolean mIsClienteSelected = false;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
SystemRESTConsumer systemRESTConsumer;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogProgressView dialogProgressView;
|
||||||
|
|
||||||
public static DialogAskClienteView newInstance(@NotNull RunnableArgss<VtbDest, String> onComplete, @NotNull Runnable onAbort) {
|
public static DialogAskClienteView newInstance(@NotNull RunnableArgss<VtbDest, String> onComplete, @NotNull Runnable onAbort) {
|
||||||
return new DialogAskClienteView(onComplete, onAbort);
|
return new DialogAskClienteView(onComplete, onAbort);
|
||||||
}
|
}
|
||||||
@@ -69,6 +87,11 @@ public class DialogAskClienteView extends BaseDialogFragment {
|
|||||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||||
|
|
||||||
|
MainApplication.appComponent
|
||||||
|
.dialogAskClienteComponent()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
|
||||||
|
|
||||||
List<Map.Entry<Integer, Class<? extends IDialogAskClienteViewModel>>> views = new ArrayList<>();
|
List<Map.Entry<Integer, Class<? extends IDialogAskClienteViewModel>>> views = new ArrayList<>();
|
||||||
views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page1, DialogAskCliente_Page1ViewModel.class));
|
views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page1, DialogAskCliente_Page1ViewModel.class));
|
||||||
@@ -96,21 +119,19 @@ public class DialogAskClienteView extends BaseDialogFragment {
|
|||||||
DialogAskCliente_Page1ViewModel viewModel1 = (DialogAskCliente_Page1ViewModel) mAdapter.getViewModel(R.layout.dialog_ask_cliente__page1);
|
DialogAskCliente_Page1ViewModel viewModel1 = (DialogAskCliente_Page1ViewModel) mAdapter.getViewModel(R.layout.dialog_ask_cliente__page1);
|
||||||
DialogAskCliente_Page2ViewModel viewModel2 = (DialogAskCliente_Page2ViewModel) mAdapter.getViewModel(R.layout.dialog_ask_cliente__page2);
|
DialogAskCliente_Page2ViewModel viewModel2 = (DialogAskCliente_Page2ViewModel) mAdapter.getViewModel(R.layout.dialog_ask_cliente__page2);
|
||||||
|
|
||||||
viewModel1
|
viewModel1.setOnConfirmClickListener(() -> {
|
||||||
.setOnConfirmClickListener(() -> {
|
String codAnag = viewModel1.getCurrentCliente();
|
||||||
String codAnag = viewModel1.getCurrentCliente();
|
|
||||||
|
|
||||||
if (UtilityString.isNullOrEmpty(codAnag)) {
|
if (UtilityString.isNullOrEmpty(codAnag)) {
|
||||||
this.mIsClienteSelected = true;
|
this.mIsClienteSelected = true;
|
||||||
dismiss();
|
dismiss();
|
||||||
mOnComplete.run(null, null);
|
mOnComplete.run(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel2.setCodAnag(codAnag);
|
viewModel2.setCodAnag(codAnag);
|
||||||
|
|
||||||
mBindings.viewpager.setCurrentItem(mBindings.viewpager.getCurrentItem() + 1, true);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
mBindings.viewpager.setCurrentItem(mBindings.viewpager.getCurrentItem() + 1, true);
|
||||||
|
});
|
||||||
viewModel2.setOnConfirmClickListener(() -> {
|
viewModel2.setOnConfirmClickListener(() -> {
|
||||||
DialogAskClienteDestinatarioDTO cliente = viewModel2.getCurrentDestinatario();
|
DialogAskClienteDestinatarioDTO cliente = viewModel2.getCurrentDestinatario();
|
||||||
|
|
||||||
@@ -122,9 +143,84 @@ public class DialogAskClienteView extends BaseDialogFragment {
|
|||||||
|
|
||||||
viewModel1.setOnAbortClickListener(this::dismiss);
|
viewModel1.setOnAbortClickListener(this::dismiss);
|
||||||
viewModel2.setOnAbortClickListener(this::dismiss);
|
viewModel2.setOnAbortClickListener(this::dismiss);
|
||||||
|
|
||||||
|
|
||||||
|
this.dialogProgressView.show(this.getParentFragmentManager(), "tag");
|
||||||
|
|
||||||
|
this.initClienti(viewModel1, () -> {
|
||||||
|
this.initDestinatari(viewModel2, () -> {
|
||||||
|
this.dialogProgressView.dismiss();
|
||||||
|
}, () -> {
|
||||||
|
this.dialogProgressView.dismiss();
|
||||||
|
});
|
||||||
|
}, () -> {
|
||||||
|
this.dialogProgressView.dismiss();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void initClienti(DialogAskCliente_Page1ViewModel viewModel, Runnable onComplete, Runnable onAbort) {
|
||||||
|
Type typeOfObjectsList = new TypeToken<ArrayList<HashMap<String, Object>>>() {
|
||||||
|
}.getType();
|
||||||
|
|
||||||
|
String sqlClienti = "SELECT gtb_anag.cod_anag, rag_soc, jtb_comt.cod_jcom " +
|
||||||
|
"FROM gtb_anag " +
|
||||||
|
"LEFT OUTER JOIN jtb_comt ON gtb_anag.cod_anag = jtb_comt.cod_anag " +
|
||||||
|
"INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " +
|
||||||
|
"WHERE vtb_clie.flag_stato = 'A' " +
|
||||||
|
"ORDER BY rag_soc";
|
||||||
|
|
||||||
|
this.systemRESTConsumer.<ArrayList<HashMap<String, Object>>>processSql(sqlClienti, typeOfObjectsList, value -> {
|
||||||
|
var availableClienti = new ArrayList<DialogAskClienteClienteDTO>();
|
||||||
|
|
||||||
|
Stream.of(value)
|
||||||
|
.groupBy(x -> x.get("codAnag").toString() + " " + x.get("ragSoc").toString())
|
||||||
|
.forEach(x -> {
|
||||||
|
DialogAskClienteClienteDTO dialogAskClienteClienteDTO = new DialogAskClienteClienteDTO();
|
||||||
|
dialogAskClienteClienteDTO.setCodAnag(UtilityHashMap.getValueIfExists(x.getValue().get(0), "codAnag"));
|
||||||
|
dialogAskClienteClienteDTO.setRagSoc(UtilityHashMap.getValueIfExists(x.getValue().get(0), "ragSoc"));
|
||||||
|
|
||||||
|
for (HashMap<String, Object> group : x.getValue()) {
|
||||||
|
if (group.containsKey("codJcom")) {
|
||||||
|
dialogAskClienteClienteDTO.getCodJcoms().add(UtilityHashMap.getValueIfExists(group, "codJcom"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
availableClienti.add(dialogAskClienteClienteDTO);
|
||||||
|
});
|
||||||
|
|
||||||
|
viewModel.setAvailableClienti(availableClienti);
|
||||||
|
onComplete.run();
|
||||||
|
}, ex -> {
|
||||||
|
onAbort.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initDestinatari(DialogAskCliente_Page2ViewModel viewModel, Runnable onComplete, Runnable onAbort) {
|
||||||
|
String sql = "SELECT vtb_dest.cod_anag,\n" +
|
||||||
|
" cod_vdes,\n" +
|
||||||
|
" destinatario,\n" +
|
||||||
|
" indirizzo,\n" +
|
||||||
|
" cap,\n" +
|
||||||
|
" citta,\n" +
|
||||||
|
" prov,\n" +
|
||||||
|
" nazione\n" +
|
||||||
|
"FROM vtb_dest\n" +
|
||||||
|
"INNER JOIN vtb_clie ON vtb_clie.cod_anag = vtb_dest.cod_anag\n" +
|
||||||
|
"WHERE vtb_clie.flag_stato = 'A'";
|
||||||
|
|
||||||
|
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
||||||
|
}.getType();
|
||||||
|
this.systemRESTConsumer.<ArrayList<DialogAskClienteDestinatarioDTO>>processSql(sql, typeOfObjectsList, value -> {
|
||||||
|
viewModel.setAvailableDestinatari(value);
|
||||||
|
|
||||||
|
onComplete.run();
|
||||||
|
}, ex -> {
|
||||||
|
onAbort.run();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
mAdapter.onDismiss();
|
mAdapter.onDismiss();
|
||||||
|
|||||||
@@ -10,12 +10,9 @@ import androidx.databinding.ViewDataBinding;
|
|||||||
|
|
||||||
import com.annimon.stream.Optional;
|
import com.annimon.stream.Optional;
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.google.gson.reflect.TypeToken;
|
|
||||||
import com.tfb.fbtoast.FBToast;
|
import com.tfb.fbtoast.FBToast;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
@@ -24,11 +21,8 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
|||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding;
|
import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
||||||
|
|
||||||
@@ -46,7 +40,6 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
private Runnable onAbortClickListener;
|
private Runnable onAbortClickListener;
|
||||||
|
|
||||||
public DialogAskCliente_Page1ViewModel() {
|
public DialogAskCliente_Page1ViewModel() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -59,53 +52,18 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
this.mBinding = (DialogAskClientePage1Binding) binding;
|
this.mBinding = (DialogAskClientePage1Binding) binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAvailableClienti(ArrayList<DialogAskClienteClienteDTO> availableClienti) {
|
||||||
|
this.availableClienti = availableClienti;
|
||||||
|
initializeAdapter(availableClienti);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onShow() {
|
public void onShow() {
|
||||||
|
|
||||||
String sql = "SELECT gtb_anag.cod_anag, rag_soc, jtb_comt.cod_jcom " +
|
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
"FROM gtb_anag " +
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
"LEFT OUTER JOIN jtb_comt ON gtb_anag.cod_anag = jtb_comt.cod_anag " +
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||||
"INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " +
|
BarcodeManager.enable();
|
||||||
"WHERE vtb_clie.flag_stato = 'A' " +
|
|
||||||
"ORDER BY rag_soc";
|
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<HashMap<String, Object>>>() { }.getType();
|
|
||||||
|
|
||||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<HashMap<String, Object>>>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(ArrayList<HashMap<String, Object>> value) {
|
|
||||||
|
|
||||||
availableClienti = new ArrayList<>();
|
|
||||||
|
|
||||||
Stream.of(value)
|
|
||||||
.groupBy(x -> x.get("codAnag").toString() + " " + x.get("ragSoc").toString())
|
|
||||||
.forEach(x -> {
|
|
||||||
DialogAskClienteClienteDTO dialogAskClienteClienteDTO = new DialogAskClienteClienteDTO();
|
|
||||||
dialogAskClienteClienteDTO.setCodAnag(UtilityHashMap.getValueIfExists(x.getValue().get(0), "codAnag"));
|
|
||||||
dialogAskClienteClienteDTO.setRagSoc(UtilityHashMap.getValueIfExists(x.getValue().get(0), "ragSoc"));
|
|
||||||
|
|
||||||
for (HashMap<String, Object> group : x.getValue()) {
|
|
||||||
if (group.containsKey("codJcom")) {
|
|
||||||
dialogAskClienteClienteDTO.getCodJcoms().add(UtilityHashMap.getValueIfExists(group, "codJcom"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
availableClienti.add(dialogAskClienteClienteDTO);
|
|
||||||
});
|
|
||||||
|
|
||||||
initializeAdapter(availableClienti);
|
|
||||||
|
|
||||||
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
|
||||||
BarcodeManager.enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailed(Exception ex) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.mBinding.buttonYes.setOnClickListener(v -> {
|
this.mBinding.buttonYes.setOnClickListener(v -> {
|
||||||
if (validateCliente()) {
|
if (validateCliente()) {
|
||||||
@@ -147,7 +105,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
} else {
|
} else {
|
||||||
DialogAskClienteClienteDTO resultCodJcom = searchBarcodeInCodJcom(barcode);
|
DialogAskClienteClienteDTO resultCodJcom = searchBarcodeInCodJcom(barcode);
|
||||||
|
|
||||||
if(resultCodJcom != null) {
|
if (resultCodJcom != null) {
|
||||||
mBinding.dropdownCliente.setText(resultCodJcom.toString());
|
mBinding.dropdownCliente.setText(resultCodJcom.toString());
|
||||||
refreshCodJcoms(resultCodJcom);
|
refreshCodJcoms(resultCodJcom);
|
||||||
mBinding.dropdownCommessa.setText(barcode);
|
mBinding.dropdownCommessa.setText(barcode);
|
||||||
@@ -219,7 +177,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
|
|
||||||
|
|
||||||
private boolean validateCliente() {
|
private boolean validateCliente() {
|
||||||
if(SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) {
|
if (SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) {
|
||||||
return true;
|
return true;
|
||||||
} else return getCurrentCliente() != null;
|
} else return getCurrentCliente() != null;
|
||||||
}
|
}
|
||||||
@@ -229,7 +187,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
.filter(x -> x.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString()))
|
.filter(x -> x.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString()))
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if(result.isPresent()) return result.get().getCodAnag();
|
if (result.isPresent()) return result.get().getCodAnag();
|
||||||
else return null;
|
else return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +198,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
.map(DialogAskClienteClienteDTO::getCodJcoms)
|
.map(DialogAskClienteClienteDTO::getCodJcoms)
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if(result.isPresent() && Stream.of(result.get()).anyMatch(x -> x.equalsIgnoreCase(mBinding.inputCommessa.getEditText().getText().toString()))) {
|
if (result.isPresent() && Stream.of(result.get()).anyMatch(x -> x.equalsIgnoreCase(mBinding.inputCommessa.getEditText().getText().toString()))) {
|
||||||
return mBinding.inputCommessa.getEditText().getText().toString();
|
return mBinding.inputCommessa.getEditText().getText().toString();
|
||||||
} else return null;
|
} else return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,29 +5,24 @@ import android.widget.AutoCompleteTextView;
|
|||||||
|
|
||||||
import androidx.databinding.ViewDataBinding;
|
import androidx.databinding.ViewDataBinding;
|
||||||
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding;
|
import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
|
||||||
|
|
||||||
public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewModel {
|
public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewModel {
|
||||||
|
|
||||||
|
|
||||||
private DialogAskClientePage2Binding mBinding;
|
private DialogAskClientePage2Binding mBinding;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
private Runnable mOnConfirm;
|
private Runnable mOnConfirm;
|
||||||
private Runnable mOnAbort;
|
private Runnable mOnAbort;
|
||||||
|
|
||||||
private List<DialogAskClienteDestinatarioDTO> availableDestinatari;
|
private ArrayList<DialogAskClienteDestinatarioDTO> availableDestinatari;
|
||||||
|
|
||||||
private String mCodAnag;
|
private String mCodAnag;
|
||||||
|
|
||||||
@@ -40,6 +35,10 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
this.mBinding = (DialogAskClientePage2Binding) binding;
|
this.mBinding = (DialogAskClientePage2Binding) binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAvailableDestinatari(ArrayList<DialogAskClienteDestinatarioDTO> availableDestinatari) {
|
||||||
|
this.availableDestinatari = availableDestinatari;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContext(Context context) {
|
public void setContext(Context context) {
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
@@ -47,29 +46,18 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onShow() {
|
public void onShow() {
|
||||||
String sql = "SELECT cod_anag, cod_vdes, destinatario, indirizzo, cap, citta, prov, nazione " +
|
var filteredDestinatari = availableDestinatari != null ? Stream.of(availableDestinatari)
|
||||||
"FROM vtb_dest " +
|
.filter(x -> x.getCodAnag().equalsIgnoreCase(mCodAnag))
|
||||||
"WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag);
|
.toList()
|
||||||
|
: null;
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
|
||||||
}.getType();
|
|
||||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> value) {
|
|
||||||
availableDestinatari = value;
|
|
||||||
initializeAdapter(value);
|
|
||||||
|
|
||||||
if(value == null || value.size() == 0) {
|
if (filteredDestinatari == null || filteredDestinatari.size() == 0) {
|
||||||
mOnConfirm.run();
|
mOnConfirm.run();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
initializeAdapter(filteredDestinatari);
|
||||||
public void onFailed(Exception ex) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
this.mBinding.buttonYes.setOnClickListener(v -> {
|
this.mBinding.buttonYes.setOnClickListener(v -> {
|
||||||
@@ -106,7 +94,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void initializeAdapter(ArrayList<DialogAskClienteDestinatarioDTO> items) {
|
private void initializeAdapter(List<DialogAskClienteDestinatarioDTO> items) {
|
||||||
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
|
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter<DialogAskC
|
|||||||
|
|
||||||
private ListFilter listFilter = new ListFilter();
|
private ListFilter listFilter = new ListFilter();
|
||||||
|
|
||||||
public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteDestinatarioDTO> list) {
|
public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull List<DialogAskClienteDestinatarioDTO> list) {
|
||||||
super(context, 0 , list);
|
super(context, 0 , list);
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mDataset = list;
|
mDataset = list;
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class DialogAskPositionOfLU {
|
|||||||
private void setupBarcode() {
|
private void setupBarcode() {
|
||||||
|
|
||||||
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessfull)
|
.setOnScanSuccessful(onScanSuccessfull)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||||
|
|
||||||
mDialog.setOnDismissListener(dialog -> {
|
mDialog.setOnDismissListener(dialog -> {
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment {
|
|||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
|
|
||||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessfull)
|
.setOnScanSuccessful(onScanSuccessfull)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,13 +23,12 @@ import com.google.android.material.textfield.TextInputLayout;
|
|||||||
import com.pedromassango.doubleclick.DoubleClick;
|
import com.pedromassango.doubleclick.DoubleClick;
|
||||||
import com.pedromassango.doubleclick.DoubleClickListener;
|
import com.pedromassango.doubleclick.DoubleClickListener;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.MainApplication;
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
@@ -47,14 +46,15 @@ import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
|||||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
public class DialogInputQuantityV2View extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
public class DialogInputQuantityV2View extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
DialogInputQuantityV2ViewModel mViewModel;
|
DialogInputQuantityV2ViewModel mViewModel;
|
||||||
|
|
||||||
private final DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
||||||
private final RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
|
private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
|
||||||
private final Runnable mOnAbort;
|
private Runnable mOnAbort;
|
||||||
|
|
||||||
public ObservableField<Integer> currentTextNumCnfToTake = new ObservableField<>(0);
|
public ObservableField<Integer> currentTextNumCnfToTake = new ObservableField<>(0);
|
||||||
public ObservableField<Integer> currentTextNumPezziToTake = new ObservableField<>(0);
|
public ObservableField<Integer> currentTextNumPezziToTake = new ObservableField<>(0);
|
||||||
@@ -86,17 +86,22 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
private boolean mEnableDataCallback = true;
|
private boolean mEnableDataCallback = true;
|
||||||
|
|
||||||
private int mBarcodeScannerIstanceID;
|
private int mBarcodeScannerIstanceID;
|
||||||
|
private boolean mFirstStart = true;
|
||||||
|
|
||||||
public static DialogInputQuantityV2View newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
|
||||||
return new DialogInputQuantityV2View(dialogInputQuantityV2DTO, onComplete, onAbort);
|
public DialogInputQuantityV2View setDialogInputQuantityV2DTO(DialogInputQuantityV2DTO mDialogInputQuantityV2DTO) {
|
||||||
|
this.mDialogInputQuantityV2DTO = mDialogInputQuantityV2DTO;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DialogInputQuantityV2View(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
public DialogInputQuantityV2View setOnComplete(RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete) {
|
||||||
super();
|
this.mOnComplete = mOnComplete;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO;
|
public DialogInputQuantityV2View setOnAbort(Runnable mOnAbort) {
|
||||||
this.mOnComplete = onComplete;
|
this.mOnAbort = mOnAbort;
|
||||||
this.mOnAbort = onAbort;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -165,7 +170,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
|
|
||||||
private void initBarcode() {
|
private void initBarcode() {
|
||||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,7 +208,11 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
this.init();
|
|
||||||
|
// if(!mFirstStart) {
|
||||||
|
this.init();
|
||||||
|
// mFirstStart = false;
|
||||||
|
// }
|
||||||
|
|
||||||
int onNumCnfInputChanged = SettingsManager.iDB().getOnNumCnfInputChanged();
|
int onNumCnfInputChanged = SettingsManager.iDB().getOnNumCnfInputChanged();
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA
|
|||||||
|
|
||||||
private void initBarcode() {
|
private void initBarcode() {
|
||||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessfull)
|
.setOnScanSuccessful(onScanSuccessfull)
|
||||||
.setOnScanFailed(this::onError));
|
.setOnScanFailed(this::onError));
|
||||||
|
|
||||||
setBarcodeListener(true);
|
setBarcodeListener(true);
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class DialogScanArtViewModel {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(barcodeProd));
|
||||||
}
|
}
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
@@ -124,11 +124,12 @@ public class DialogScanArtViewModel {
|
|||||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String finalBarcodeProd = barcodeProd;
|
||||||
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
||||||
if(mtbAartList != null && mtbAartList.size() > 0) {
|
if(mtbAartList != null && mtbAartList.size() > 0) {
|
||||||
onComplete.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model, null);
|
onComplete.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model, null);
|
||||||
} else {
|
} else {
|
||||||
this.sendError(new NoResultFromBarcodeException());
|
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
|
||||||
}
|
}
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial
|
|||||||
|
|
||||||
private void initBarcode() {
|
private void initBarcode() {
|
||||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessfull)
|
.setOnScanSuccessful(onScanSuccessfull)
|
||||||
.setOnScanFailed(this::onError));
|
.setOnScanFailed(this::onError));
|
||||||
|
|
||||||
setBarcodeListener(true);
|
setBarcodeListener(true);
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<layout xmlns:tools="http://schemas.android.com/tools"
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:fab="http://schemas.android.com/apk/res-auto">
|
xmlns:fab="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
||||||
@@ -18,241 +20,254 @@
|
|||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/linearLayout2"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/full_white"
|
android:background="@color/full_white"
|
||||||
android:orientation="vertical"
|
android:descendantFocusability="blocksDescendants">
|
||||||
android:descendantFocusability="blocksDescendants"
|
|
||||||
>
|
|
||||||
|
|
||||||
<LinearLayout
|
<it.integry.integrywmsnative.ui.ElevatedToolbar
|
||||||
|
android:id="@+id/elevated_toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/full_white"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
android:orientation="vertical"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
android:paddingTop="8dp"
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity">
|
|
||||||
|
|
||||||
<it.integry.integrywmsnative.ui.ElevatedToolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/elevated_toolbar"
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="?actionBarSize">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
|
||||||
android:id="@+id/toolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?actionBarSize">
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/toolbar_title"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:text="modifica ordine"
|
|
||||||
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
|
|
||||||
android:layout_gravity="start" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/add_extra_items_toolbar"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:background="@drawable/ripple_effect"
|
|
||||||
android:adjustViewBounds="true"
|
|
||||||
android:src="@drawable/ic_search_black_24dp"
|
|
||||||
android:onClick="@{()->viewModel.manualSearch()}"
|
|
||||||
android:tint="@color/colorPrimaryGray"/>
|
|
||||||
</androidx.appcompat.widget.Toolbar>
|
|
||||||
|
|
||||||
</it.integry.integrywmsnative.ui.ElevatedToolbar>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginRight="8dp"
|
|
||||||
android:background="@drawable/gray_detail_background_round8"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:padding="16dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="ordine: "
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/order_identifier"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="22 ottobre 2018" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Griglia "
|
|
||||||
android:textColor="@android:color/black" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/cod_alis"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textStyle="italic"
|
|
||||||
tools:text="4SECCO" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="N. articoli "
|
|
||||||
android:textColor="@android:color/black" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/count_art_ord"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="10" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/articoli_ordine_list"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:layout_marginBottom="92dp"
|
|
||||||
android:paddingStart="2dp"
|
|
||||||
android:paddingEnd="2dp" />
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/scan_art_spinner"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center_horizontal"
|
|
||||||
android:layout_marginTop="24dp"
|
|
||||||
android:visibility="visible"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
|
|
||||||
<ProgressBar
|
|
||||||
android:id="@+id/progressBar"
|
|
||||||
style="?android:attr/progressBarStyle"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
tools:text="modifica ordine" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
|
android:id="@+id/add_extra_items_toolbar"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:adjustViewBounds="true"
|
||||||
|
android:background="@drawable/ripple_effect"
|
||||||
|
android:onClick="@{()->viewModel.manualSearch()}"
|
||||||
|
android:src="@drawable/ic_search_black_24dp"
|
||||||
|
android:tint="@color/colorPrimaryGray" />
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</it.integry.integrywmsnative.ui.ElevatedToolbar>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/header_content"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:background="@drawable/gray_detail_background_round8"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/elevated_toolbar"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:padding="16dp">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="ordine:"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/order_identifier"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginStart="8dp"
|
android:textStyle="bold"
|
||||||
android:layout_marginEnd="12dp"
|
tools:text="22 ottobre 2018" />
|
||||||
android:layout_gravity="center_vertical"
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
android:gravity="center_horizontal"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text"
|
|
||||||
android:text="@string/scan_item"/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
</LinearLayout>
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Griglia"
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/cod_alis"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:paddingEnd="2dp"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="italic"
|
||||||
|
tools:text="4SAPORIV" />
|
||||||
|
</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">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="N. articoli "
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/count_art_ord"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="10" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionMenu
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
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_check_white_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
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/pv_ordine_export"
|
android:id="@+id/articoli_ordine_list"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginBottom="92dp"
|
||||||
|
android:paddingStart="2dp"
|
||||||
|
android:paddingEnd="2dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:paddingBottom="72dp"
|
||||||
|
android:scrollbars="vertical"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/header_content"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/scan_art_spinner"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@drawable/ic_black_upload"
|
android:layout_gravity="center_horizontal"
|
||||||
android:visibility="gone"
|
android:layout_marginTop="24dp"
|
||||||
app:fab_colorNormal="@color/white"
|
android:orientation="horizontal"
|
||||||
app:fab_colorPressed="@color/white_pressed"
|
|
||||||
app:fab_colorRipple="#66FFFFFF"
|
|
||||||
app:onClick="@{() -> viewModel.exportOrdine()}"
|
|
||||||
fab:fab_label="@string/close_and_export" />
|
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
|
||||||
android:id="@+id/pv_ordine_close"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:src="@drawable/ic_check_black_24dp"
|
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
app:fab_colorNormal="@color/white"
|
app:layout_constraintTop_toBottomOf="@id/header_content"
|
||||||
app:fab_colorPressed="@color/white_pressed"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:fab_colorRipple="#66FFFFFF"
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
app:onClick="@{() -> viewModel.closeEdit()}"
|
|
||||||
fab:fab_label="@string/close_and_exit" />
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/progressBar"
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:text="@string/scan_item"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<com.github.clans.fab.FloatingActionMenu
|
||||||
|
android:id="@+id/close_activity_fab"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
app:layout_anchorGravity="center"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:menu_icon="@drawable/ic_check_white_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/pv_ordine_export"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/ic_black_upload"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:fab_colorNormal="@color/white"
|
||||||
|
app:fab_colorPressed="@color/white_pressed"
|
||||||
|
app:fab_colorRipple="#66FFFFFF"
|
||||||
|
app:onClick="@{() -> viewModel.exportOrdine()}"
|
||||||
|
fab:fab_label="@string/close_and_export" />
|
||||||
|
|
||||||
|
<com.github.clans.fab.FloatingActionButton
|
||||||
|
android:id="@+id/pv_ordine_close"
|
||||||
|
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.close()}"
|
||||||
|
fab:fab_label="@string/close_and_exit" />
|
||||||
|
|
||||||
|
|
||||||
|
</com.github.clans.fab.FloatingActionMenu>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</com.github.clans.fab.FloatingActionMenu>
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
||||||
|
|
||||||
</layout>
|
</layout>
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/recipient"
|
android:hint="@string/recipient"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/description_text">
|
app:layout_constraintTop_toBottomOf="@id/description_text">
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="view"
|
name="view"
|
||||||
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" />
|
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
@@ -552,7 +552,7 @@
|
|||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
android:selectAllOnFocus="true"
|
android:selectAllOnFocus="true"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
app:binding="@{view.numCnf}" />
|
app:binding="@{view.currentNumCnf}" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@@ -575,7 +575,7 @@
|
|||||||
android:hint="@string/qty_x_pck"
|
android:hint="@string/qty_x_pck"
|
||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
android:inputType="numberDecimal"
|
android:inputType="numberDecimal"
|
||||||
app:binding="@{view.qtaCnf}" />
|
app:binding="@{view.currentQtaCnf}" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@@ -597,7 +597,7 @@
|
|||||||
android:hint="@string/tot_qty"
|
android:hint="@string/tot_qty"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:selectAllOnFocus="true"
|
android:selectAllOnFocus="true"
|
||||||
app:binding="@{view.qtaOrd}" />
|
app:binding="@{view.currentQtaTot}" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@@ -621,7 +621,7 @@
|
|||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="4dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:onClick="@{() -> view.cancel()}"
|
android:onClick="@{() -> view.dismiss()}"
|
||||||
app:icon="@drawable/ic_close_24dp"
|
app:icon="@drawable/ic_close_24dp"
|
||||||
app:iconGravity="textStart"
|
app:iconGravity="textStart"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:7.1.1'
|
classpath 'com.android.tools.build:gradle:7.1.2'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.3.10'
|
classpath 'com.google.gms:google-services:4.3.10'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user