Refactoring ordini acquisto
This commit is contained in:
parent
4ed8c825dd
commit
0a2d47110d
@ -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;
|
||||||
@ -122,7 +124,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
|
|||||||
DialogSelectDocInfoModule.class,
|
DialogSelectDocInfoModule.class,
|
||||||
DocInterniEditFormModule.class,
|
DocInterniEditFormModule.class,
|
||||||
DialogSelectDocRowsModule.class,
|
DialogSelectDocRowsModule.class,
|
||||||
DialogAskClienteModule.class
|
DialogAskClienteModule.class,
|
||||||
|
DialogEditArticoloModule.class
|
||||||
})
|
})
|
||||||
public interface MainApplicationComponent {
|
public interface MainApplicationComponent {
|
||||||
|
|
||||||
@ -206,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);
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -48,6 +48,6 @@ public interface ArticoloGrigliaDao {
|
|||||||
@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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -79,17 +79,17 @@ public class BaseActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
|
|
||||||
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) {
|
||||||
|
|||||||
@ -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());
|
||||||
|
|||||||
@ -355,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)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -190,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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -156,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();
|
||||||
|
|||||||
@ -167,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)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -109,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();
|
||||||
|
|||||||
@ -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,23 +83,38 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -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(() -> {
|
||||||
|
DialogAskAction.make(this,
|
||||||
articoloOrdine.getDescrizione(),
|
articoloOrdine.getDescrizione(),
|
||||||
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
|
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
|
||||||
() -> this.addArticolo(articoloOrdine),
|
() -> {
|
||||||
() -> 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(() -> {
|
|
||||||
this.closeProgress();
|
|
||||||
BarcodeManager.enable();
|
|
||||||
UtilityExceptions.defaultException(this, ex, false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onScanSuccessful(BarcodeScanDTO dto) {
|
|
||||||
mBinding.closeActivityFab.close(false);
|
mBinding.closeActivityFab.close(false);
|
||||||
BarcodeManager.disable();
|
this.onLoadingStarted();
|
||||||
this.openProgress();
|
|
||||||
mhelper.checkArticolo(
|
|
||||||
mOrdine,
|
|
||||||
dto.getStringValue(),
|
|
||||||
articoloOrdine -> {
|
|
||||||
this.closeProgress();
|
|
||||||
addArticolo(articoloOrdine);
|
|
||||||
},
|
|
||||||
e -> {
|
|
||||||
this.closeProgress();
|
|
||||||
handleException(e);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addArticolo(ArticoloOrdine articoloOrdine) {
|
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||||
|
this.onLoadingEnded();
|
||||||
|
});
|
||||||
|
|
||||||
runOnUiThread(() -> EditArticoloDialog.newInstance(this, mhelper, articoloOrdine, articolo -> {
|
};
|
||||||
BarcodeManager.enable();
|
|
||||||
|
@Override
|
||||||
|
public void onItemDispatched(ArticoloOrdine articoloOrdine) {
|
||||||
|
|
||||||
|
DialogEditArticoloView
|
||||||
|
.newInstance(articoloOrdine, articolo -> {
|
||||||
|
runOnUiThread(() -> {
|
||||||
if (articolo != null) {
|
if (articolo != null) {
|
||||||
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
fetchArticoli();
|
|
||||||
}).show(this.getSupportFragmentManager(), "tag"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fetchDetails() {
|
this.mViewModel.saveArticolo(articolo);
|
||||||
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 {
|
}).show(this.getSupportFragmentManager(), "tag");
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void exportOrdine() {
|
public void exportOrdine() {
|
||||||
this.openProgress();
|
this.mViewModel.exportOrdine(() -> {
|
||||||
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine, mArticoli, mGriglia, (ordine) -> {
|
|
||||||
|
|
||||||
mOrdineRepository.updateOrder(ordine, ord -> {
|
|
||||||
this.closeProgress();
|
|
||||||
runOnUiThread(() -> {
|
runOnUiThread(() -> {
|
||||||
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
|
||||||
onBackPressed();
|
close();
|
||||||
});
|
});
|
||||||
}, e -> runOnUiThread(() -> {
|
});
|
||||||
this.closeProgress();
|
}
|
||||||
UtilityExceptions.defaultException(this, e);
|
|
||||||
}));
|
|
||||||
|
|
||||||
}, e -> runOnUiThread(() -> {
|
|
||||||
this.closeProgress();
|
public void close() {
|
||||||
UtilityExceptions.defaultException(this, e);
|
onBackPressed();
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@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,188 +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.setValue(articolo);
|
|
||||||
mHelper.saveArticoloToOrdine(mArticolo.getValue(), () -> {
|
|
||||||
this.onLoadingEnded();
|
|
||||||
requireActivity().runOnUiThread(() -> {
|
|
||||||
onDialogDismiss.run(articolo);
|
|
||||||
});
|
|
||||||
this.dismiss();
|
|
||||||
}, e -> {
|
|
||||||
mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e));
|
|
||||||
this.onLoadingEnded();
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
|
||||||
mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e));
|
|
||||||
this.onLoadingEnded();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArticoloOrdine getArticolo() {
|
|
||||||
return mArticolo.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cancel() {
|
|
||||||
mArticolo.postValue(null);
|
|
||||||
requireActivity().runOnUiThread(() -> {
|
|
||||||
onDialogDismiss.run(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateItems(List<ArticoloOrdine> updatedDataset) {
|
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(ObservableList sender) {
|
||||||
mDataset.clear();
|
mDataset.clear();
|
||||||
mDataset.addAll(orderItems(updatedDataset));
|
mDataset.addAll(sender);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
notifyDataChanged();
|
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();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OrdineAcquistoArtListAdapter setOnItemClicked(RunnableArgs<ArticoloOrdine> onItemSelect) {
|
||||||
|
this.mOnItemSelect = onItemSelect;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@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"));
|
||||||
|
|||||||
@ -144,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)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -249,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();
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -123,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();
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
public void onShow() {
|
public void onShow() {
|
||||||
|
|
||||||
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessful(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
|
|
||||||
|
|||||||
@ -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)));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -170,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)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -198,10 +198,12 @@
|
|||||||
|
|
||||||
<com.github.clans.fab.FloatingActionMenu
|
<com.github.clans.fab.FloatingActionMenu
|
||||||
android:id="@+id/close_activity_fab"
|
android:id="@+id/close_activity_fab"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
app:layout_anchorGravity="center"
|
app:layout_anchorGravity="center"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:menu_icon="@drawable/ic_check_white_24dp"
|
app:menu_icon="@drawable/ic_check_white_24dp"
|
||||||
@ -255,7 +257,7 @@
|
|||||||
app:fab_colorNormal="@color/white"
|
app:fab_colorNormal="@color/white"
|
||||||
app:fab_colorPressed="@color/white_pressed"
|
app:fab_colorPressed="@color/white_pressed"
|
||||||
app:fab_colorRipple="#66FFFFFF"
|
app:fab_colorRipple="#66FFFFFF"
|
||||||
app:onClick="@{() -> viewModel.closeEdit()}"
|
app:onClick="@{() -> viewModel.close()}"
|
||||||
fab:fab_label="@string/close_and_exit" />
|
fab:fab_label="@string/close_and_exit" />
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user