Finish v1.32.21(361)
This commit is contained in:
commit
f55080f7ca
@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 360
|
def appVersionCode = 361
|
||||||
def appVersionName = '1.32.20'
|
def appVersionName = '1.32.21'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -67,8 +67,10 @@ 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.edit_articolo.DialogEditArticoloComponent;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloModule;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderComponent;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderModule;
|
||||||
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.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
|
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
|
||||||
@ -174,7 +176,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
|
|||||||
BottomSheetMtbColrEditModalModule.class,
|
BottomSheetMtbColrEditModalModule.class,
|
||||||
DialogChooseArtsFromMtbAartListModule.class,
|
DialogChooseArtsFromMtbAartListModule.class,
|
||||||
MainSettingsModule.class,
|
MainSettingsModule.class,
|
||||||
DialogInfoSituazioneArticoloModule.class
|
DialogInfoSituazioneArticoloModule.class,
|
||||||
|
DialogSelectArtToOrderModule.class
|
||||||
})
|
})
|
||||||
public interface MainApplicationComponent {
|
public interface MainApplicationComponent {
|
||||||
|
|
||||||
@ -258,8 +261,6 @@ public interface MainApplicationComponent {
|
|||||||
|
|
||||||
DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();
|
DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();
|
||||||
|
|
||||||
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent();
|
|
||||||
|
|
||||||
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
|
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
|
||||||
|
|
||||||
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
|
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
|
||||||
@ -294,6 +295,10 @@ public interface MainApplicationComponent {
|
|||||||
|
|
||||||
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
|
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
|
||||||
|
|
||||||
|
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsNewComponent();
|
||||||
|
|
||||||
|
DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent();
|
||||||
|
|
||||||
void inject(MainApplication mainApplication);
|
void inject(MainApplication mainApplication);
|
||||||
|
|
||||||
void inject(AppContext mainApplication);
|
void inject(AppContext mainApplication);
|
||||||
|
|||||||
@ -40,7 +40,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
|||||||
InventarioRoomDTO.class,
|
InventarioRoomDTO.class,
|
||||||
InventarioRowRoomDTO.class
|
InventarioRowRoomDTO.class
|
||||||
},
|
},
|
||||||
version = 15)
|
version = 16)
|
||||||
@TypeConverters({
|
@TypeConverters({
|
||||||
DateConverter.class,
|
DateConverter.class,
|
||||||
BigDecimalConverter.class,
|
BigDecimalConverter.class,
|
||||||
@ -67,7 +67,8 @@ public abstract class AppDatabase extends RoomDatabase {
|
|||||||
.addMigrations(MIGRATION_11_12)
|
.addMigrations(MIGRATION_11_12)
|
||||||
.addMigrations(MIGRATION_12_13)
|
.addMigrations(MIGRATION_12_13)
|
||||||
.addMigrations(MIGRATION_13_14)
|
.addMigrations(MIGRATION_13_14)
|
||||||
.addMigrations(MIGRATION_14_15);
|
.addMigrations(MIGRATION_14_15)
|
||||||
|
.addMigrations(MIGRATION_15_16);
|
||||||
|
|
||||||
sInstance = builder.build();
|
sInstance = builder.build();
|
||||||
}
|
}
|
||||||
@ -155,4 +156,9 @@ public abstract class AppDatabase extends RoomDatabase {
|
|||||||
database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine_cod_mart ON articoli_ordine (id_ordine, cod_mart);");
|
database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine_cod_mart ON articoli_ordine (id_ordine, cod_mart);");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
static final Migration MIGRATION_15_16 = new Migration(15, 16) {
|
||||||
|
@Override
|
||||||
|
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,6 @@ public interface MtbColrDao {
|
|||||||
@Delete
|
@Delete
|
||||||
void delete(SqlMtbColr mtbColr);
|
void delete(SqlMtbColr mtbColr);
|
||||||
|
|
||||||
@Query("SELECT * from mtb_colr where id_collo = :idDocument")
|
@Query("SELECT * FROM mtb_colr WHERE id_collo = :idDocument ORDER BY id DESC")
|
||||||
List<SqlMtbColr> getDocumentRows(long idDocument);
|
List<SqlMtbColr> getDocumentRows(long idDocument);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.core.data_store.db.dao;
|
package it.integry.integrywmsnative.core.data_store.db.dao;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.room.Dao;
|
import androidx.room.Dao;
|
||||||
import androidx.room.Delete;
|
import androidx.room.Delete;
|
||||||
import androidx.room.Insert;
|
import androidx.room.Insert;
|
||||||
@ -33,7 +34,7 @@ public interface MtbColtDao {
|
|||||||
" AND ( mtb_colt.data_doc = :dataDoc OR (mtb_colt.data_doc is null and :dataDoc is null)) " +
|
" AND ( mtb_colt.data_doc = :dataDoc OR (mtb_colt.data_doc is null and :dataDoc is null)) " +
|
||||||
" AND ( mtb_colt.num_doc = :numDoc OR (mtb_colt.num_doc is null and :numDoc is null)) " +
|
" AND ( mtb_colt.num_doc = :numDoc OR (mtb_colt.num_doc is null and :numDoc is null)) " +
|
||||||
" and cod_dtip is null group by mtb_colt.id")
|
" and cod_dtip is null group by mtb_colt.id")
|
||||||
List<DocInternoWrapper> getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
|
LiveData<List<DocInternoWrapper>> getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
|
||||||
|
|
||||||
@Query("SELECT ifnull(MAX(num_collo),0) +1 as num_collo from mtb_colt")
|
@Query("SELECT ifnull(MAX(num_collo),0) +1 as num_collo from mtb_colt")
|
||||||
Integer getNextNumCollo();
|
Integer getNextNumCollo();
|
||||||
|
|||||||
@ -94,6 +94,9 @@ public class ArticoloOrdine {
|
|||||||
@Ignore
|
@Ignore
|
||||||
private int bgTint;
|
private int bgTint;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private boolean invalid = false;
|
||||||
|
|
||||||
|
|
||||||
public Integer getArticoloOrdineId() {
|
public Integer getArticoloOrdineId() {
|
||||||
return articoloOrdineId;
|
return articoloOrdineId;
|
||||||
@ -300,4 +303,13 @@ public class ArticoloOrdine {
|
|||||||
this.ctMaxOrd = ctMaxOrd;
|
this.ctMaxOrd = ctMaxOrd;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInvalid() {
|
||||||
|
return invalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine setInvalid(boolean invalid) {
|
||||||
|
this.invalid = invalid;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,7 @@ public class Ordine {
|
|||||||
private boolean orderNewProducts = false;
|
private boolean orderNewProducts = false;
|
||||||
|
|
||||||
@ColumnInfo(name = "id_griglia")
|
@ColumnInfo(name = "id_griglia")
|
||||||
|
@Nullable
|
||||||
private Integer idGriglia;
|
private Integer idGriglia;
|
||||||
|
|
||||||
@ColumnInfo(name = "cod_alis")
|
@ColumnInfo(name = "cod_alis")
|
||||||
@ -80,11 +81,11 @@ public class Ordine {
|
|||||||
this.annotazioni = annotazioni;
|
this.annotazioni = annotazioni;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getIdGriglia() {
|
public Integer getIdGriglia() {
|
||||||
return idGriglia;
|
return idGriglia;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIdGriglia(int idGriglia) {
|
public void setIdGriglia(Integer idGriglia) {
|
||||||
this.idGriglia = idGriglia;
|
this.idGriglia = idGriglia;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.core.data_store.db.repository;
|
package it.integry.integrywmsnative.core.data_store.db.repository;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -17,7 +19,7 @@ public interface MtbColtRepository {
|
|||||||
|
|
||||||
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
|
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
|
||||||
|
|
||||||
void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError);
|
LiveData<List<DocInternoWrapper>> getDocuments(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
|
||||||
|
|
||||||
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
|
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
|
|||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
@ -50,10 +52,8 @@ public class SqlMtbColtDataSource extends BaseDataSource implements MtbColtRepos
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
|
public LiveData<List<DocInternoWrapper>> getDocuments(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc) {
|
||||||
execute(() -> mMtbColtDao.getLocalDocumentsByCodDtip(codDtip, codAnag, codVdes, dataDoc, numDoc),
|
return mMtbColtDao.getLocalDocumentsByCodDtip(codDtip, codAnag, codVdes, dataDoc, numDoc);
|
||||||
onSuccess,
|
|
||||||
onError);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
package it.integry.integrywmsnative.core.di;
|
package it.integry.integrywmsnative.core.di;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
|
|
||||||
import androidx.databinding.BaseObservable;
|
import androidx.databinding.BaseObservable;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.CommonConst;
|
import it.integry.integrywmsnative.core.CommonConst;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||||
|
|
||||||
@ -20,7 +19,7 @@ public class BindableFloat extends BaseObservable {
|
|||||||
|
|
||||||
if(numberOfDigits > CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS) numberOfDigits = CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS;
|
if(numberOfDigits > CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS) numberOfDigits = CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS;
|
||||||
|
|
||||||
return new BigDecimal(get());
|
return BigDecimal.valueOf(get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Float get(boolean defaultIfNull) {
|
public Float get(boolean defaultIfNull) {
|
||||||
|
|||||||
@ -0,0 +1,10 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class ExpiredProductListException extends Exception {
|
||||||
|
public ExpiredProductListException() {
|
||||||
|
super(UtilityResources.getString(R.string.expired_list_session));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class InvalidProductOrderedException extends Exception {
|
||||||
|
|
||||||
|
public InvalidProductOrderedException() {
|
||||||
|
super(UtilityResources.getString(R.string.invalid_product_ordered));
|
||||||
|
}
|
||||||
|
|
||||||
|
public InvalidProductOrderedException(String product) {
|
||||||
|
super(UtilityResources.getString(R.string.invalid_product_ordered) + " (" + product + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class MultipleResultFromBarcodeException extends Exception {
|
||||||
|
|
||||||
|
public MultipleResultFromBarcodeException() {
|
||||||
|
super(UtilityResources.getString(R.string.multiple_results_from_barcode));
|
||||||
|
}
|
||||||
|
|
||||||
|
public MultipleResultFromBarcodeException(String barcode) {
|
||||||
|
super(UtilityResources.getString(R.string.multiple_results_from_barcode) + " (" + barcode + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class NoResultFromCodMartException extends Exception {
|
||||||
|
|
||||||
|
public NoResultFromCodMartException() {
|
||||||
|
super(UtilityResources.getString(R.string.no_result_from_cod_mart));
|
||||||
|
}
|
||||||
|
|
||||||
|
public NoResultFromCodMartException(String codMart) {
|
||||||
|
super(UtilityResources.getString(R.string.no_result_from_cod_mart) + " (" + codMart + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -68,28 +68,6 @@ public class MtbColt extends EntityBase {
|
|||||||
private Boolean disablePrint;
|
private Boolean disablePrint;
|
||||||
private String ragSocCliente;
|
private String ragSocCliente;
|
||||||
|
|
||||||
public void generaFiltroOrdine() throws Exception {
|
|
||||||
|
|
||||||
if (this.gestione == null) {
|
|
||||||
throw new Exception("Impossibile creare il filtro dell'ordine se la gestione non è valorizzata");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.dataOrd == null) {
|
|
||||||
throw new Exception("Impossibile creare il filtro dell'ordine se la data dell'ordine non è valorizzata");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.numOrd == null) {
|
|
||||||
throw new Exception("Impossibile creare il filtro dell'ordine se il numero dell'ordine non è valorizzato");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Date dateOrd = UtilityDate.recognizeDate(this.dataOrd);
|
|
||||||
String dateYMD = UtilityDate.formatDate(dateOrd, UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH);
|
|
||||||
|
|
||||||
this.filtroOrdini = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ROOT><FILTER><DTB_ORDT><GESTIONE type=\"V\">" + this.gestione + "</GESTIONE><DATA_ORD type=\"D\">" + dateYMD + "</DATA_ORD><NUM_ORD type=\"N\">" + this.numOrd + "</NUM_ORD></DTB_ORDT></FILTER></ROOT>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
|
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
|
||||||
|
|
||||||
public ObservableArrayList<MtbColr> getMtbColr() {
|
public ObservableArrayList<MtbColr> getMtbColr() {
|
||||||
|
|||||||
@ -53,7 +53,7 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void loadDocumentoAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
public void loadDocumentAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
|
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
|
||||||
inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp, codAnagForn)
|
inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp, codAnagForn)
|
||||||
.enqueue(new Callback<>() {
|
.enqueue(new Callback<>() {
|
||||||
|
|||||||
@ -38,6 +38,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagSpedizioneUseQtaOrd;
|
private boolean flagSpedizioneUseQtaOrd;
|
||||||
private boolean flagOrdinaNuoviArticoliInGriglia;
|
private boolean flagOrdinaNuoviArticoliInGriglia;
|
||||||
private boolean flagOrdinaArticoliOnScan;
|
private boolean flagOrdinaArticoliOnScan;
|
||||||
|
private boolean flagConsentiFuoriPianoLogistico;
|
||||||
private String docInterniCheckFornitore;
|
private String docInterniCheckFornitore;
|
||||||
private String produzioneDefaultCodAnag;
|
private String produzioneDefaultCodAnag;
|
||||||
private boolean flagPrintPackingListOnOrderClose;
|
private boolean flagPrintPackingListOnOrderClose;
|
||||||
@ -416,4 +417,13 @@ public class DBSettingsModel {
|
|||||||
this.flagCanAddUnknownItemsInventario = flagCanAddUnknownItemsInventario;
|
this.flagCanAddUnknownItemsInventario = flagCanAddUnknownItemsInventario;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagConsentiFuoriPianoLogistico() {
|
||||||
|
return flagConsentiFuoriPianoLogistico;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagConsentiFuoriPianoLogistico(boolean flagConsentiFuoriPianoLogistico) {
|
||||||
|
this.flagConsentiFuoriPianoLogistico = flagConsentiFuoriPianoLogistico;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
|
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class SettingsManager {
|
public class SettingsManager {
|
||||||
@ -108,6 +109,7 @@ public class SettingsManager {
|
|||||||
};
|
};
|
||||||
|
|
||||||
RunnableArgs<Exception> tmpOnFailed = ex -> {
|
RunnableArgs<Exception> tmpOnFailed = ex -> {
|
||||||
|
UtilityLogger.error(ex);
|
||||||
perfTrace.putAttribute("failed", "true");
|
perfTrace.putAttribute("failed", "true");
|
||||||
if (!(ex instanceof SocketTimeoutException)) onFailed.run(ex);
|
if (!(ex instanceof SocketTimeoutException)) onFailed.run(ex);
|
||||||
else
|
else
|
||||||
@ -305,6 +307,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PVM")
|
.setGestName("PVM")
|
||||||
.setSection("ORDINI_A")
|
.setSection("ORDINI_A")
|
||||||
.setKeySection("ORDINA_ARTICOLI_ON_SCAN"));
|
.setKeySection("ORDINA_ARTICOLI_ON_SCAN"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PVM")
|
||||||
|
.setSection("ORDINI_A")
|
||||||
|
.setKeySection("FLAG_CONSENTI_ORIDNE_DA_GRIGLIA"));
|
||||||
stbGestSetupList.add(new StbGestSetup()
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
.setGestName("PVM")
|
.setGestName("PVM")
|
||||||
.setSection("DOC_INTERNI")
|
.setSection("DOC_INTERNI")
|
||||||
@ -381,6 +387,7 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
|
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
|
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
|
||||||
|
dbSettingsModelIstance.setFlagConsentiFuoriPianoLogistico(getValueFromList(list, "ORDINI_A", "FLAG_CONSENTI_ORIDNE_DA_GRIGLIA", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
|
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
|
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
|
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
|
||||||
@ -420,7 +427,7 @@ public class SettingsManager {
|
|||||||
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
|
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
|
||||||
.findFirstOrElse(null);
|
.findFirstOrElse(null);
|
||||||
|
|
||||||
if(value != null) {
|
if (value != null) {
|
||||||
if (clazz == String.class) {
|
if (clazz == String.class) {
|
||||||
return clazz.cast(value.getValue());
|
return clazz.cast(value.getValue());
|
||||||
} else if (clazz == Boolean.class) {
|
} else if (clazz == Boolean.class) {
|
||||||
@ -428,6 +435,12 @@ public class SettingsManager {
|
|||||||
} else if (clazz == Integer.class && value.getValue() != null) {
|
} else if (clazz == Integer.class && value.getValue() != null) {
|
||||||
return clazz.cast(Integer.parseInt(value.getValue()));
|
return clazz.cast(Integer.parseInt(value.getValue()));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (clazz == Boolean.class) {
|
||||||
|
return clazz.cast(Boolean.FALSE);
|
||||||
|
} else if (clazz == Integer.class) {
|
||||||
|
return clazz.cast(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
|
|||||||
@ -36,6 +36,10 @@ public class UtilityBarcode {
|
|||||||
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN128;
|
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN128;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isCode128(BarcodeScanDTO barcodeScanDTO) {
|
||||||
|
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) {
|
public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) {
|
||||||
return isEtichettaPosizione(barcodeScanDTO, true);
|
return isEtichettaPosizione(barcodeScanDTO, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -389,7 +389,7 @@ public class AccettazionePickingViewModel {
|
|||||||
.distinct()
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if (codAnags != null && codAnags.size() == 1) {
|
if (codAnags.size() == 1) {
|
||||||
mtbColt.setCodAnag(codAnags.get(0));
|
mtbColt.setCodAnag(codAnags.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,7 +399,7 @@ public class AccettazionePickingViewModel {
|
|||||||
.distinct()
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if (rifOrds != null && rifOrds.size() == 1) {
|
if (rifOrds.size() == 1) {
|
||||||
mtbColt.setRifOrd(rifOrds.get(0));
|
mtbColt.setRifOrd(rifOrds.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -409,16 +409,9 @@ public class AccettazionePickingViewModel {
|
|||||||
.distinct()
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if (numDataOrds != null && numDataOrds.size() == 1) {
|
if (numDataOrds.size() == 1) {
|
||||||
mtbColt.setNumOrd(mOrders.get(0).getNumero());
|
mtbColt.setNumOrd(mOrders.get(0).getNumero());
|
||||||
mtbColt.setDataOrd(mOrders.get(0).getData());
|
mtbColt.setDataOrd(mOrders.get(0).getData());
|
||||||
|
|
||||||
try {
|
|
||||||
mtbColt.generaFiltroOrdine();
|
|
||||||
} catch (Exception ex) {
|
|
||||||
this.sendError(ex);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, savedMtbColt -> {
|
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, savedMtbColt -> {
|
||||||
|
|||||||
@ -85,8 +85,6 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
mBinding.setView(this);
|
mBinding.setView(this);
|
||||||
mBinding.setViewModel(mViewModel);
|
mBinding.setViewModel(mViewModel);
|
||||||
|
|
||||||
mViewModel.mtbGrup.observe(getViewLifecycleOwner(), mtbGrup -> mViewModel.fetchProducts());
|
|
||||||
mViewModel.dtbTipi.observe(getViewLifecycleOwner(), dtbTipi -> mViewModel.fetchDocuments());
|
|
||||||
this.initRecyclerView();
|
this.initRecyclerView();
|
||||||
|
|
||||||
return mBinding.getRoot();
|
return mBinding.getRoot();
|
||||||
@ -100,7 +98,8 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
if (!this.mViewModel.hasDocDetails()) {
|
if (!this.mViewModel.hasDocDetails()) {
|
||||||
mViewModel.init();
|
mViewModel.init();
|
||||||
} else {
|
} else {
|
||||||
this.mViewModel.fetchDocuments();
|
this.onLoadingStarted();
|
||||||
|
this.mViewModel.fetchDocuments(this::onLoadingEnded);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +145,6 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
} else {
|
} else {
|
||||||
mBinding.docContainer.setVisibility(View.GONE);
|
mBinding.docContainer.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -167,12 +165,9 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showInfoArtDialog() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initRecyclerView() {
|
private void initRecyclerView() {
|
||||||
this.mViewModel.getDocsList().observe(getViewLifecycleOwner(), this::refreshList);
|
this.mViewModel.getDocsList().observe(getViewLifecycleOwner(), this::refreshList);
|
||||||
|
|
||||||
DocInterniListAdapter docInterniListAdapter = new DocInterniListAdapter(this.requireActivity(), this.mDocInterniMutableData);
|
DocInterniListAdapter docInterniListAdapter = new DocInterniListAdapter(this.requireActivity(), this.mDocInterniMutableData);
|
||||||
docInterniListAdapter.setEmptyView(this.mBinding.docInterniEmptyView);
|
docInterniListAdapter.setEmptyView(this.mBinding.docInterniEmptyView);
|
||||||
this.mBinding.docInterniMainList.setAdapter(docInterniListAdapter);
|
this.mBinding.docInterniMainList.setAdapter(docInterniListAdapter);
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni;
|
package it.integry.integrywmsnative.gest.contab_doc_interni;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -35,14 +35,14 @@ public class DocInterniViewModel {
|
|||||||
private boolean docsFetched = true;
|
private boolean docsFetched = true;
|
||||||
private int nextNumCollo = 0;
|
private int nextNumCollo = 0;
|
||||||
private List<DocumentoArtDTO> availableArts;
|
private List<DocumentoArtDTO> availableArts;
|
||||||
private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
|
private MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
|
||||||
|
|
||||||
public final MutableLiveData<TipoDocDTO> dtbTipi = new MutableLiveData<>();
|
public TipoDocDTO dtbTipi;
|
||||||
public final MutableLiveData<GruppoArticoloDTO> mtbGrup = new MutableLiveData<>();
|
public GruppoArticoloDTO mtbGrup;
|
||||||
public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
|
public FornitoreDTO fornitore;
|
||||||
public final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
|
public Date dataDoc;
|
||||||
public final MutableLiveData<String> numDoc = new MutableLiveData<>();
|
public String numDoc;
|
||||||
public final MutableLiveData<String> note = new MutableLiveData<>();
|
public String note;
|
||||||
public final BindableInteger artsSize = new BindableInteger(0);
|
public final BindableInteger artsSize = new BindableInteger(0);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ -52,8 +52,6 @@ public class DocInterniViewModel {
|
|||||||
this.docInterniRESTConsumer = docInterniRESTConsumer;
|
this.docInterniRESTConsumer = docInterniRESTConsumer;
|
||||||
this.documentRepository = documentRepository;
|
this.documentRepository = documentRepository;
|
||||||
this.documentRESTConsumer = documentRESTConsumer;
|
this.documentRESTConsumer = documentRESTConsumer;
|
||||||
|
|
||||||
this.mDocsList.setValue(new ArrayList<>());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -83,26 +81,27 @@ public class DocInterniViewModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MutableLiveData<List<DocInternoWrapper>> getDocsList() {
|
public LiveData<List<DocInternoWrapper>> getDocsList() {
|
||||||
return mDocsList;
|
return mDocsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) {
|
public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) {
|
||||||
|
this.fornitore = selection.getFornitore();
|
||||||
|
this.dtbTipi = selection.getTipoDoc();
|
||||||
|
|
||||||
this.fornitore.postValue(selection.getFornitore());
|
this.mtbGrup = selection.getGruppoArt();
|
||||||
this.dtbTipi.postValue(selection.getTipoDoc());
|
this.dataDoc = selection.getDataDoc();
|
||||||
|
this.numDoc = selection.getNumDoc() != null ? selection.getNumDoc().toString() : null;
|
||||||
|
this.note = selection.getNote();
|
||||||
|
|
||||||
this.mtbGrup.postValue(selection.getGruppoArt());
|
this.sendOnLoadingStarted();
|
||||||
this.dataDoc.postValue(selection.getDataDoc());
|
fetchProducts(() -> {
|
||||||
this.numDoc.postValue(selection.getNumDoc() != null ? selection.getNumDoc().toString() : null);
|
fetchDocuments(this::sendOnLoadingEnded);
|
||||||
this.note.postValue(selection.getNote());
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fetchProducts() {
|
public void fetchProducts(Runnable onComplete) {
|
||||||
this.productsFetched = false;
|
documentRESTConsumer.loadDocumentAvailableArts(
|
||||||
this.sendOnLoadingStarted();
|
|
||||||
|
|
||||||
documentRESTConsumer.loadDocumentoAvailableArts(
|
|
||||||
this.getCodDtip(),
|
this.getCodDtip(),
|
||||||
this.getCodMgrp(),
|
this.getCodMgrp(),
|
||||||
this.getCodAnagForn(),
|
this.getCodAnagForn(),
|
||||||
@ -111,30 +110,33 @@ public class DocInterniViewModel {
|
|||||||
this.availableArts = data.getArts();
|
this.availableArts = data.getArts();
|
||||||
this.artsSize.set(this.availableArts.size());
|
this.artsSize.set(this.availableArts.size());
|
||||||
|
|
||||||
if (this.docsFetched)
|
onComplete.run();
|
||||||
this.sendOnLoadingEnded();
|
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fetchDocuments() {
|
public void fetchDocuments(Runnable onComplete) {
|
||||||
this.docsFetched = false;
|
String codAnag = null;
|
||||||
this.sendOnLoadingStarted();
|
String codVdes = null;
|
||||||
String codAnag = null, codVdes = null;
|
|
||||||
FornitoreDTO fornitore = this.fornitore.getValue();
|
FornitoreDTO fornitore = this.fornitore;
|
||||||
if (fornitore != null) {
|
if (fornitore != null) {
|
||||||
codAnag = fornitore.getCodAnag();
|
codAnag = fornitore.getCodAnag();
|
||||||
codVdes = fornitore.getCodVdes();
|
codVdes = fornitore.getCodVdes();
|
||||||
}
|
}
|
||||||
documentRepository.getLocalDocumentsByCodDtip(this.getCodDtip(), codAnag, codVdes, dataDoc.getValue(), numDoc.getValue(), list -> {
|
|
||||||
documentRepository.getNextNumCollo(nextNumCollo -> {
|
|
||||||
this.mDocsList.postValue(list);
|
var docsList = documentRepository.getDocuments(this.getCodDtip(),
|
||||||
this.setNextNumCollo(nextNumCollo);
|
codAnag, codVdes, dataDoc, numDoc);
|
||||||
this.docsFetched = true;
|
|
||||||
if (this.productsFetched) {
|
docsList.observeForever(data -> {
|
||||||
this.sendOnLoadingEnded();
|
this.mDocsList.postValue(data);
|
||||||
}
|
});
|
||||||
}, this::sendError);
|
|
||||||
|
documentRepository.getNextNumCollo(nextNumCollo -> {
|
||||||
|
this.setNextNumCollo(nextNumCollo);
|
||||||
|
this.docsFetched = true;
|
||||||
|
|
||||||
|
onComplete.run();
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,31 +145,28 @@ public class DocInterniViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getCodDtip() {
|
private String getCodDtip() {
|
||||||
if (this.dtbTipi.getValue() == null) {
|
if (this.dtbTipi == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return this.dtbTipi.getValue().getCodDtip();
|
return this.dtbTipi.getCodDtip();
|
||||||
}
|
}
|
||||||
|
|
||||||
public TipoDocDTO getTipoDoc() {
|
public TipoDocDTO getTipoDoc() {
|
||||||
if (this.dtbTipi.getValue() == null) {
|
return this.dtbTipi;
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return this.dtbTipi.getValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCodMgrp() {
|
private String getCodMgrp() {
|
||||||
if (this.mtbGrup.getValue() == null) {
|
if (this.mtbGrup == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return this.mtbGrup.getValue().getCodMgrp();
|
return this.mtbGrup.getCodMgrp();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCodAnagForn() {
|
private String getCodAnagForn() {
|
||||||
if (this.fornitore.getValue() == null) {
|
if (this.fornitore == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return this.fornitore.getValue().getCodAnag();
|
return this.fornitore.getCodAnag();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void editDocument(SqlMtbColt document) {
|
public void editDocument(SqlMtbColt document) {
|
||||||
@ -176,7 +175,7 @@ public class DocInterniViewModel {
|
|||||||
|
|
||||||
public void newDocument() {
|
public void newDocument() {
|
||||||
SqlMtbColt document = new SqlMtbColt();
|
SqlMtbColt document = new SqlMtbColt();
|
||||||
if (this.dtbTipi.getValue() == null) {
|
if (this.dtbTipi == null) {
|
||||||
this.sendError(new NoDocTypeSelectedException());
|
this.sendError(new NoDocTypeSelectedException());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -184,18 +183,18 @@ public class DocInterniViewModel {
|
|||||||
document.setCodMgrp(this.getCodMgrp());
|
document.setCodMgrp(this.getCodMgrp());
|
||||||
document.setDataCollo(new Date());
|
document.setDataCollo(new Date());
|
||||||
document.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
document.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
||||||
document.setAnnotazioni(this.note.getValue());
|
document.setAnnotazioni(this.note);
|
||||||
document.setSegno(-1);
|
document.setSegno(-1);
|
||||||
document.setSerCollo("/");
|
document.setSerCollo("/");
|
||||||
document.setNumCollo(this.nextNumCollo);
|
document.setNumCollo(this.nextNumCollo);
|
||||||
document.setGestione("L");
|
document.setGestione("L");
|
||||||
document.setDataDoc(this.dataDoc.getValue());
|
document.setDataDoc(this.dataDoc);
|
||||||
if (this.numDoc.getValue() != null) {
|
if (this.numDoc != null) {
|
||||||
document.setNumDoc(Integer.parseInt(this.numDoc.getValue()));
|
document.setNumDoc(Integer.parseInt(this.numDoc));
|
||||||
}
|
}
|
||||||
if (this.fornitore.getValue() != null) {
|
if (this.fornitore != null) {
|
||||||
document.setCodAnag(this.fornitore.getValue().getCodAnag());
|
document.setCodAnag(this.fornitore.getCodAnag());
|
||||||
document.setCodVdes(this.fornitore.getValue().getCodVdes());
|
document.setCodVdes(this.fornitore.getCodVdes());
|
||||||
}
|
}
|
||||||
documentRepository.insert(document, id -> {
|
documentRepository.insert(document, id -> {
|
||||||
document.setId(id);
|
document.setId(id);
|
||||||
@ -204,7 +203,7 @@ public class DocInterniViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasDocDetails() {
|
public boolean hasDocDetails() {
|
||||||
return this.dtbTipi.getValue() != null;
|
return this.dtbTipi != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener {
|
public interface Listener extends ILoadingListener {
|
||||||
|
|||||||
@ -1,85 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
|
||||||
|
|
||||||
public class DialogChooseRowFromListaDocRowsListModel {
|
|
||||||
|
|
||||||
private String codMart;
|
|
||||||
private String descrizione;
|
|
||||||
private String qtaOrdReadable;
|
|
||||||
private String barcode;
|
|
||||||
private boolean isNew;
|
|
||||||
private SqlMtbColr originalModel;
|
|
||||||
private BindableBoolean checked = new BindableBoolean(false);
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public BindableBoolean getChecked() {
|
|
||||||
return checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setChecked(BindableBoolean checked) {
|
|
||||||
this.checked = checked;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void toggleCheck() {
|
|
||||||
this.checked.set(!this.checked.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCodMart() {
|
|
||||||
return codMart;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setCodMart(String codMart) {
|
|
||||||
this.codMart = codMart;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescrizione() {
|
|
||||||
return descrizione;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setDescrizione(String descrizione) {
|
|
||||||
this.descrizione = descrizione;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getQtaOrdReadable() {
|
|
||||||
return qtaOrdReadable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setQtaOrdReadable(String qtaOrdReadable) {
|
|
||||||
this.qtaOrdReadable = qtaOrdReadable;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBarcode() {
|
|
||||||
return barcode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setBarcode(String barcode) {
|
|
||||||
this.barcode = barcode;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isNew() {
|
|
||||||
return isNew;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setNew(boolean aNew) {
|
|
||||||
isNew = aNew;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SqlMtbColr getOriginalModel() {
|
|
||||||
return originalModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogChooseRowFromListaDocRowsListModel setOriginalModel(SqlMtbColr originalModel) {
|
|
||||||
this.originalModel = originalModel;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@ -41,13 +40,15 @@ import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding;
|
import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
|
||||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
|
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemsView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
|
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||||
|
|
||||||
@ -128,7 +129,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
if (document.getCodAnag() != null) {
|
if (document.getCodAnag() != null) {
|
||||||
this.codAnag.set(document.getCodAnag() + (document.getCodVdes() != null ? " - " + document.getCodVdes() : ""));
|
this.codAnag.set(document.getCodAnag() + (document.getCodVdes() != null ? " - " + document.getCodVdes() : ""));
|
||||||
} else {
|
} else {
|
||||||
this.binding.supplierLayout.setVisibility(View.GONE);
|
this.codAnag.set(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv()));
|
this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv()));
|
||||||
@ -136,7 +137,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
if (document.getNumDoc() != null && document.getDataDoc() != null) {
|
if (document.getNumDoc() != null && document.getDataDoc() != null) {
|
||||||
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), UtilityDate.formatDate(document.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), UtilityDate.formatDate(document.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||||
} else {
|
} else {
|
||||||
this.binding.docRifLayout.setVisibility(View.GONE);
|
this.documentRifHeader.set(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +185,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
"Ricerca articolo",
|
"Ricerca articolo",
|
||||||
null,
|
null,
|
||||||
"Cod articolo / Barcode",
|
"Cod articolo / Barcode",
|
||||||
barcodeProd -> this.viewModel.loadArticolo(barcodeProd, null), BarcodeManager::enable).show();
|
barcodeProd -> this.viewModel.loadArticoloByCodMartOrBarcode(barcodeProd), BarcodeManager::enable).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -230,7 +231,6 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) {
|
public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) {
|
||||||
this.onLoadingStarted();
|
|
||||||
MtbAart mtbAart = new MtbAart();
|
MtbAart mtbAart = new MtbAart();
|
||||||
mtbAart.setBarCode(row.getCodBarre());
|
mtbAart.setBarCode(row.getCodBarre());
|
||||||
mtbAart.setDiacod(row.getCodBarre());
|
mtbAart.setDiacod(row.getCodBarre());
|
||||||
@ -279,7 +279,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
this.onLoadingStarted();
|
this.onLoadingStarted();
|
||||||
this.viewModel.saveRow(row, resultDTO);
|
this.viewModel.saveRow(row, resultDTO);
|
||||||
})
|
})
|
||||||
.setOnAbort(this::onLoadingEnded)
|
.setOnAbort(() -> {})
|
||||||
.show(getSupportFragmentManager(), "tag");
|
.show(getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,13 +320,22 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMultipleRowsFound(List<SqlMtbColr> rows, DocumentoArtDTO articolo) {
|
public void onMultipleRowsFound(List<SqlMtbColr> rows, DocumentoArtDTO articolo) {
|
||||||
DialogSelectDocRowsView.newInstance(rows, (row) -> {
|
List<DialogSelectDocRowsItemListModel<Object>> dataset =
|
||||||
this.onLoadingEnded();
|
Stream.of(rows)
|
||||||
if (row != null) {
|
.map(x -> new DialogSelectDocRowsItemListModel<>()
|
||||||
this.viewModel.dispatchRowEdit(row, articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
|
.setCodMart(x.getCodMart())
|
||||||
}
|
.setBarcode(x.getCodBarre())
|
||||||
}
|
.setOriginalModel(x)
|
||||||
).show(this.getSupportFragmentManager(), "dialogSelectDocRows");
|
.setNew(x.getId() < 1)
|
||||||
|
.setDescrizione(x.getDescrizione())
|
||||||
|
.setQtaOrd(BigDecimal.valueOf(x.getQtaCol()))
|
||||||
|
.setUntMisOrd(x.getUntMis()))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
DialogSelectDocRowsView.newInstance(dataset, data -> {
|
||||||
|
this.viewModel.dispatchRowEdit((SqlMtbColr) data.getOriginalModel(), articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
|
||||||
|
}, () -> {})
|
||||||
|
.show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew");
|
||||||
}
|
}
|
||||||
|
|
||||||
private MtbColr sqlToEntity(SqlMtbColr sqlMtbColr) {
|
private MtbColr sqlToEntity(SqlMtbColr sqlMtbColr) {
|
||||||
@ -358,19 +367,24 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void showInfoArtDialog() {
|
public void showInfoArtDialog() {
|
||||||
var listaMtbAart = Stream.of(this.viewModel.getProductsList())
|
var listaMtbAart = Stream.of(this.viewModel.getProductsList())
|
||||||
.map(x -> new MtbAart()
|
.map(x -> new DialogAvailableItemListModel()
|
||||||
.setCodMart(x.getCodMart())
|
.setCodMart(x.getCodMart())
|
||||||
.setUntMis(x.getUntMis())
|
.setDescrizioneEstesa(x.getDescrizione()))
|
||||||
.setDescrizione(x.getDescrizione())
|
|
||||||
.setDescrizioneEstesa(x.getDescrizione())
|
|
||||||
.setQtaCnf(x.getQtaCnf()))
|
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
new DialogChooseArtFromListaArtsView(false, listaMtbAart, null)
|
for (var documentRow : viewModel.getDocumentRows()) {
|
||||||
.show(getSupportFragmentManager(), "tag");
|
var codMart = documentRow.getCodMart();
|
||||||
|
|
||||||
|
Stream.of(listaMtbAart)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||||
|
.forEach(x -> x.setAggiunto(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
new DialogAvailableItemsView(listaMtbAart)
|
||||||
|
.show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import androidx.lifecycle.MutableLiveData;
|
|||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
@ -21,6 +20,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
|
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
|
||||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.NoResultFromCodMartException;
|
||||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||||
@ -48,6 +48,7 @@ public class DocInterniEditFormViewModel {
|
|||||||
private TipoDocDTO tipoDoc;
|
private TipoDocDTO tipoDoc;
|
||||||
private boolean isCheckPartitaMag = false;
|
private boolean isCheckPartitaMag = false;
|
||||||
private JSONObject checkFornitoreRules = null;
|
private JSONObject checkFornitoreRules = null;
|
||||||
|
|
||||||
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
|
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
|
||||||
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
|
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
|
||||||
|
|
||||||
@ -129,16 +130,29 @@ public class DocInterniEditFormViewModel {
|
|||||||
this.listener.onDocumentHoldRequest();
|
this.listener.onDocumentHoldRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadArticolo(String barcodeProd, Ean128Model ean128Model) {
|
public void loadArticoloByCodMartOrBarcode(String codMart) {
|
||||||
|
var matchedArt = Stream.of(productsList)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart) ||
|
||||||
|
x.getBarcode().contains(codMart))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
|
|
||||||
|
if (matchedArt == null) {
|
||||||
|
this.sendError(new NoResultFromCodMartException(codMart));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
loadArticolo(matchedArt, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadArticoloByBarcode(String barcodeProd, Ean128Model ean128Model) {
|
||||||
DocumentoArtDTO matchedArt;
|
DocumentoArtDTO matchedArt;
|
||||||
String usedBarcode = null;
|
String usedBarcode = null;
|
||||||
|
|
||||||
String leftBarcode = StringUtils.leftPad(barcodeProd, 13, '0');
|
|
||||||
|
|
||||||
matchedArt = Stream.of(productsList)
|
matchedArt = Stream.of(productsList)
|
||||||
.filter(x -> x.getCodMart().equalsIgnoreCase(barcodeProd) ||
|
.filter(x -> x.getBarcode().contains(barcodeProd))
|
||||||
leftBarcode.equalsIgnoreCase(x.getCodMart()) ||
|
|
||||||
x.getBarcode().contains(barcodeProd))
|
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
|
||||||
@ -151,15 +165,17 @@ public class DocInterniEditFormViewModel {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SqlMtbColr> rows = this.getRowsForArticolo(matchedArt, usedBarcode);
|
loadArticolo(matchedArt, usedBarcode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadArticolo(DocumentoArtDTO documentoArtDTO, String usedBarcode) {
|
||||||
|
List<SqlMtbColr> rows = this.getRowsForArticolo(documentoArtDTO, usedBarcode);
|
||||||
|
|
||||||
if (rows.size() > 1) {
|
if (rows.size() > 1) {
|
||||||
this.listener.onMultipleRowsFound(rows, matchedArt);
|
this.listener.onMultipleRowsFound(rows, documentoArtDTO);
|
||||||
} else {
|
} else {
|
||||||
this.dispatchRowEdit(rows.get(0), matchedArt.isFlagTracciabilita(), matchedArt.isUntMisDigitale());
|
this.dispatchRowEdit(rows.get(0), documentoArtDTO.isFlagTracciabilita(), documentoArtDTO.isUntMisDigitale());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SqlMtbColr> getRowsForArticolo(DocumentoArtDTO articolo, String barcode) {
|
private List<SqlMtbColr> getRowsForArticolo(DocumentoArtDTO articolo, String barcode) {
|
||||||
@ -303,7 +319,7 @@ public class DocInterniEditFormViewModel {
|
|||||||
this.executeEtichettaEanPeso(barcodeScanDTO);
|
this.executeEtichettaEanPeso(barcodeScanDTO);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.loadArticolo(barcodeScanDTO.getStringValue(), null);
|
this.loadArticoloByBarcode(barcodeScanDTO.getStringValue(), null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,7 +327,7 @@ public class DocInterniEditFormViewModel {
|
|||||||
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO) {
|
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO) {
|
||||||
try {
|
try {
|
||||||
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
|
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
|
||||||
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128());
|
this.loadArticoloByBarcode(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128());
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
this.sendError(ex);
|
this.sendError(ex);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,5 @@ public interface DialogSelectDocRowsComponent {
|
|||||||
DialogSelectDocRowsComponent create();
|
DialogSelectDocRowsComponent create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void inject(DialogSelectDocRowsView dialogSelectDocRowsView);
|
||||||
void inject(DialogSelectDocRowsView dialogSelectDocInfoView);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
|
|
||||||
|
public class DialogSelectDocRowsItemListModel<T> {
|
||||||
|
|
||||||
|
private String codMart;
|
||||||
|
private String descrizione;
|
||||||
|
private BigDecimal qtaOrd;
|
||||||
|
private String untMisOrd;
|
||||||
|
private String barcode;
|
||||||
|
private boolean isNew;
|
||||||
|
private T originalModel;
|
||||||
|
private BindableBoolean checked = new BindableBoolean(false);
|
||||||
|
|
||||||
|
|
||||||
|
public String getCodMart() {
|
||||||
|
return codMart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setCodMart(String codMart) {
|
||||||
|
this.codMart = codMart;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescrizione() {
|
||||||
|
return descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setDescrizione(String descrizione) {
|
||||||
|
this.descrizione = descrizione;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaOrd() {
|
||||||
|
return qtaOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setQtaOrd(BigDecimal qtaOrd) {
|
||||||
|
this.qtaOrd = qtaOrd;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUntMisOrd() {
|
||||||
|
return untMisOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setUntMisOrd(String untMisOrd) {
|
||||||
|
this.untMisOrd = untMisOrd;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBarcode() {
|
||||||
|
return barcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setBarcode(String barcode) {
|
||||||
|
this.barcode = barcode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNew() {
|
||||||
|
return isNew;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setNew(boolean aNew) {
|
||||||
|
isNew = aNew;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getOriginalModel() {
|
||||||
|
return originalModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setOriginalModel(T originalModel) {
|
||||||
|
this.originalModel = originalModel;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BindableBoolean getChecked() {
|
||||||
|
return checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocRowsItemListModel<T> setChecked(BindableBoolean checked) {
|
||||||
|
this.checked = checked;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,9 +1,14 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
|
||||||
@Module(subcomponents = DialogSelectDocRowsComponent.class)
|
@Module(subcomponents = DialogSelectDocRowsComponent.class)
|
||||||
public class DialogSelectDocRowsModule {
|
public class DialogSelectDocRowsModule {
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
DialogSelectDocRowsViewModel providesDialogSelectDocRowsNewViewModel() {
|
||||||
|
return new DialogSelectDocRowsViewModel();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,143 +1,128 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.graphics.Color;
|
|
||||||
import android.graphics.drawable.ColorDrawable;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.WindowManager;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
|
import com.ravikoradiya.liveadapter.Type;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.BR;
|
import it.integry.integrywmsnative.BR;
|
||||||
import it.integry.integrywmsnative.MainApplication;
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.databinding.DialogChooseRowFromListaDocRowsLayoutBinding;
|
import it.integry.integrywmsnative.databinding.DialogSelectDocRowsBinding;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DialogChooseRowFromListaDocRowsListModel;
|
import it.integry.integrywmsnative.databinding.DialogSelectDocRowsItemModelBinding;
|
||||||
import kotlin.Unit;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @noinspection rawtypes
|
||||||
|
*/
|
||||||
public class DialogSelectDocRowsView extends BaseDialogFragment {
|
public class DialogSelectDocRowsView extends BaseDialogFragment {
|
||||||
|
|
||||||
private final RunnableArgs<SqlMtbColr> onRowSelected;
|
|
||||||
private final List<SqlMtbColr> listArts;
|
|
||||||
private final MutableLiveData<List<DialogChooseRowFromListaDocRowsListModel>> listModels = new MutableLiveData<>();
|
|
||||||
private DialogChooseRowFromListaDocRowsLayoutBinding binding;
|
|
||||||
public MutableLiveData<SqlMtbColr> selectedRow = new MutableLiveData<>();
|
|
||||||
|
|
||||||
public static DialogSelectDocRowsView newInstance(
|
@Inject
|
||||||
List<SqlMtbColr> listArts,
|
DialogSelectDocRowsViewModel mViewModel;
|
||||||
RunnableArgs<SqlMtbColr> onDismiss
|
|
||||||
) {
|
private DialogSelectDocRowsBinding mBindings;
|
||||||
return new DialogSelectDocRowsView(listArts, onDismiss);
|
private Context mContext;
|
||||||
|
|
||||||
|
private final List<DialogSelectDocRowsItemListModel<Object>> listArts;
|
||||||
|
private final RunnableArgs<DialogSelectDocRowsItemListModel> onConfirm;
|
||||||
|
private final Runnable onAbort;
|
||||||
|
|
||||||
|
//Pass here all external parameters
|
||||||
|
public static DialogSelectDocRowsView newInstance(List<DialogSelectDocRowsItemListModel<Object>> listArts,
|
||||||
|
RunnableArgs<DialogSelectDocRowsItemListModel> onConfirm,
|
||||||
|
Runnable onAbort) {
|
||||||
|
return new DialogSelectDocRowsView(listArts, onConfirm, onAbort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DialogSelectDocRowsView(List<DialogSelectDocRowsItemListModel<Object>> listArts,
|
||||||
private DialogSelectDocRowsView(List<SqlMtbColr> listArts, RunnableArgs<SqlMtbColr> onDismiss) {
|
RunnableArgs<DialogSelectDocRowsItemListModel> onConfirm,
|
||||||
|
Runnable onAbort) {
|
||||||
super();
|
super();
|
||||||
this.onRowSelected = onDismiss;
|
|
||||||
this.listArts = listArts;
|
this.listArts = listArts;
|
||||||
|
this.onConfirm = onConfirm;
|
||||||
|
this.onAbort = onAbort;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
|
||||||
super.onDismiss(dialog);
|
|
||||||
if (onRowSelected != null) onRowSelected.run(this.selectedRow.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_row_from_lista_doc_rows_layout, container, false);
|
this.mContext = requireContext();
|
||||||
binding.setLifecycleOwner(this);
|
|
||||||
MainApplication
|
mBindings = DialogSelectDocRowsBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||||
.appComponent
|
mBindings.setLifecycleOwner(this);
|
||||||
.dialogSelectDocRowsComponent()
|
|
||||||
|
MainApplication.appComponent
|
||||||
|
.dialogSelectDocRowsNewComponent()
|
||||||
.create()
|
.create()
|
||||||
.inject(this);
|
.inject(this);
|
||||||
binding.setView(this);
|
|
||||||
|
|
||||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
setCancelable(false);
|
||||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
|
||||||
initView();
|
|
||||||
this.refreshList();
|
|
||||||
|
|
||||||
|
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||||
|
.setView(mBindings.getRoot())
|
||||||
|
.setCancelable(isCancelable())
|
||||||
|
.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||||
|
final DialogSelectDocRowsItemListModel<Object> selectedItem = Stream.of(listArts)
|
||||||
|
.filter(x -> x.getChecked().get())
|
||||||
|
.findFirstOrElse(null);
|
||||||
|
if (selectedItem != null)
|
||||||
|
this.onConfirm.run(selectedItem);
|
||||||
|
})
|
||||||
|
.setNegativeButton(R.string.abort, (dialog, which) -> {
|
||||||
|
if (this.onAbort != null) this.onAbort.run();
|
||||||
|
})
|
||||||
|
.create();
|
||||||
|
|
||||||
binding.positiveButton.setOnClickListener(view -> {
|
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||||
getDialog().dismiss();
|
alertDialog.setOnShowListener(this);
|
||||||
});
|
return alertDialog;
|
||||||
|
|
||||||
binding.negativeButton.setOnClickListener(view -> {
|
|
||||||
this.selectedRow.setValue(null);
|
|
||||||
getDialog().dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
this.onLoadingEnded();
|
|
||||||
return binding.getRoot();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshList() {
|
@Override
|
||||||
var list = Stream.of(this.listArts).map(row -> {
|
public void onShow(DialogInterface dialogInterface) {
|
||||||
DialogChooseRowFromListaDocRowsListModel model = new DialogChooseRowFromListaDocRowsListModel();
|
super.onShow(dialogInterface);
|
||||||
model.setCodMart(row.getCodMart());
|
|
||||||
model.setBarcode(row.getCodMart());
|
|
||||||
model.setOriginalModel(row);
|
|
||||||
model.setNew(row.getId() < 1);
|
|
||||||
model.setDescrizione(row.getDescrizione());
|
|
||||||
model.setQtaOrdReadable(row.getQtaCol() + "\n" + row.getUntMis());
|
|
||||||
model.getChecked().addOnPropertyChangedCallback(() -> {
|
|
||||||
this.checkRow(row, model.getChecked().get());
|
|
||||||
});
|
|
||||||
return model;
|
|
||||||
}).toList();
|
|
||||||
this.listModels.postValue(list);
|
|
||||||
|
|
||||||
|
this.listArts.get(0).getChecked().set(true);
|
||||||
|
this.initRecyclerView();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkRow(SqlMtbColr row, boolean checked) {
|
private void initRecyclerView() {
|
||||||
if (checked) {
|
var itemType = new Type<DialogSelectDocRowsItemListModel, DialogSelectDocRowsItemModelBinding>(R.layout.dialog_select_doc_rows__item_model, BR.row);
|
||||||
this.selectedRow.setValue(row);
|
// itemType.areItemSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId()));
|
||||||
var models = this.listModels.getValue();
|
itemType.areContentsTheSame(DialogSelectDocRowsItemListModel::equals);
|
||||||
if (models != null && !models.isEmpty()) {
|
itemType.onClick(x -> {
|
||||||
Stream.of(models).filter(model -> model.getOriginalModel().getId() != row.getId()).forEach(model -> {
|
resetChecks();
|
||||||
model.getChecked().set(false);
|
x.getBinding().getRow().getChecked().set(true);
|
||||||
});
|
|
||||||
}
|
return null;
|
||||||
} else {
|
});
|
||||||
var selectedRow = this.selectedRow.getValue();
|
|
||||||
if (selectedRow != null && selectedRow.getId() == row.getId()) {
|
new LiveAdapter(listArts)
|
||||||
this.selectedRow.setValue(null);
|
.map(DialogSelectDocRowsItemListModel.class, itemType)
|
||||||
}
|
.into(this.mBindings.itemList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetChecks() {
|
||||||
|
for (var item : listArts) {
|
||||||
|
item.getChecked().set(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initView() {
|
|
||||||
initArrayAdapters();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initArrayAdapters() {
|
|
||||||
|
|
||||||
new LiveAdapter(listModels, getViewLifecycleOwner(), BR.row)
|
|
||||||
.map(DialogChooseRowFromListaDocRowsListModel.class, R.layout.dialog_choose_row_from_lista_doc_rows__item_model)
|
|
||||||
.onNoData(noData -> {
|
|
||||||
binding.emptyView.setVisibility(noData ? View.VISIBLE : View.GONE);
|
|
||||||
return Unit.INSTANCE;
|
|
||||||
}
|
|
||||||
).into(binding.listaDocRows);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||||
|
|
||||||
|
public class DialogSelectDocRowsViewModel {
|
||||||
|
|
||||||
|
}
|
||||||
@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.inventario;
|
|||||||
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -65,8 +67,7 @@ public class ElencoInventariViewModel {
|
|||||||
this.sendCreateInventarioRequest(inventoryId, zone);
|
this.sendCreateInventarioRequest(inventoryId, zone);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
var matchedInventory = getInventarioList().getValue()
|
var matchedInventory = Stream.of(getInventarioList().getValue())
|
||||||
.stream()
|
|
||||||
.filter(x -> Objects.equals(x.getIdInventario(), inventoryId) && UtilityString.equalsIgnoreCase(x.getZona(), zone) &&
|
.filter(x -> Objects.equals(x.getIdInventario(), inventoryId) && UtilityString.equalsIgnoreCase(x.getZona(), zone) &&
|
||||||
!x.isSyncronized())
|
!x.isSyncronized())
|
||||||
.findFirst()
|
.findFirst()
|
||||||
|
|||||||
@ -40,7 +40,8 @@ import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_
|
|||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
|
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemsView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||||
@ -238,9 +239,19 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
|
|||||||
public void showAvailableArts() {
|
public void showAvailableArts() {
|
||||||
var listaMtbAart = Stream.of(this.mViewModel.getAvailableArts())
|
var listaMtbAart = Stream.of(this.mViewModel.getAvailableArts())
|
||||||
.map(InventarioArtDTO::toMtbAart)
|
.map(InventarioArtDTO::toMtbAart)
|
||||||
|
.map(DialogAvailableItemListModel::fromMtbAart)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
new DialogChooseArtFromListaArtsView(false, listaMtbAart, null)
|
for (var inventoryItem : mViewModel.currentInventarioRows.getValue()) {
|
||||||
.show(getSupportFragmentManager(), "tag");
|
var codMart = inventoryItem.getCodMart();
|
||||||
|
|
||||||
|
Stream.of(listaMtbAart)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||||
|
.forEach(x -> x.setAggiunto(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
new DialogAvailableItemsView(listaMtbAart)
|
||||||
|
.show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5,22 +5,14 @@ import android.content.Context;
|
|||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityToReturnBinding;
|
import it.integry.integrywmsnative.databinding.DialogInputQuantityToReturnBinding;
|
||||||
|
|
||||||
public class InputQuantityToReturnDialog {
|
public class InputQuantityToReturnDialog {
|
||||||
|
|||||||
@ -13,9 +13,11 @@ import androidx.core.content.ContextCompat;
|
|||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
import com.ravikoradiya.liveadapter.Type;
|
import com.ravikoradiya.liveadapter.Type;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -36,7 +38,9 @@ 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.databinding.ActivityPvOrdineAcquistoEditBinding;
|
import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
|
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloView;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderItemListModel;
|
||||||
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderView;
|
||||||
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.DialogAskActionView;
|
import it.integry.integrywmsnative.view.dialogs.DialogAskActionView;
|
||||||
@ -165,7 +169,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
|||||||
() -> {
|
() -> {
|
||||||
this.deleteArticolo(articoloOrdine);
|
this.deleteArticolo(articoloOrdine);
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
}).show(getSupportFragmentManager(), "tag");
|
}, BarcodeManager::enable).show(getSupportFragmentManager(), "tag");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,6 +206,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
|||||||
onSuccess, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
onSuccess, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void confirmCheckForUnlistedProduct(String barcode) {
|
||||||
|
DialogSimpleMessageView.makeInfoDialog(getText(R.string.info).toString(),
|
||||||
|
Html.fromHtml(getResources().getString(R.string.confirm_order_unlisted_item)),
|
||||||
|
null,
|
||||||
|
() -> {
|
||||||
|
this.mViewModel.loadArticolo(barcode);
|
||||||
|
}, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getColorFromResource(int resId) {
|
public int getColorFromResource(int resId) {
|
||||||
return getResources().getColor(resId);
|
return getResources().getColor(resId);
|
||||||
@ -236,4 +250,34 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
|||||||
return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia();
|
return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void confirmExportInvalidProducts(Runnable onConfirm) {
|
||||||
|
DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(),
|
||||||
|
Html.fromHtml(getResources().getString(R.string.confirm_export_invalid_product)),
|
||||||
|
null,
|
||||||
|
onConfirm
|
||||||
|
,
|
||||||
|
this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExportInvalidProducts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void chooseArtFromList(List<ArticoloOrdinabileDTO> listArticoli, RunnableArgs<ArticoloOrdinabileDTO> onArtChosen) {
|
||||||
|
List<DialogSelectArtToOrderItemListModel<Object>> dataset =
|
||||||
|
Stream.of(listArticoli)
|
||||||
|
.map(x -> new DialogSelectArtToOrderItemListModel<>()
|
||||||
|
.setCodMart(x.getCodMart())
|
||||||
|
.setBarcode(x.getSelectedBarcode())
|
||||||
|
.setOriginalModel(x)
|
||||||
|
.setNew(mViewModel.isArtInOrder(x))
|
||||||
|
.setDescrizione(x.getDescrizione())
|
||||||
|
.setQtaOrd(BigDecimal.valueOf(x.getQtaOrd()))
|
||||||
|
.setCodAlis(x.getCodAlis())
|
||||||
|
.setUntMisOrd(x.getUntMis()))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
DialogSelectArtToOrderView.newInstance(dataset,
|
||||||
|
data -> onArtChosen.run((ArticoloOrdinabileDTO) data.getOriginalModel()),
|
||||||
|
this::onLoadingEnded)
|
||||||
|
.show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -22,7 +23,10 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGriglia
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
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.data_store.db.repository.OrdineRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||||
|
import it.integry.integrywmsnative.core.exception.ArtNotFoundInGridException;
|
||||||
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.MultipleResultFromBarcodeException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
@ -31,6 +35,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsu
|
|||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
|
|
||||||
public class PVOrdineAcquistoEditViewModel {
|
public class PVOrdineAcquistoEditViewModel {
|
||||||
|
|
||||||
@ -58,6 +63,8 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
private List<ArticoloOrdinabileDTO> mArticoliGriglia = new ArrayList<>();
|
private List<ArticoloOrdinabileDTO> mArticoliGriglia = new ArrayList<>();
|
||||||
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
||||||
|
|
||||||
|
private Calendar dataInizioModifica;
|
||||||
|
|
||||||
|
|
||||||
public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
||||||
GrigliaRepository grigliaRepository,
|
GrigliaRepository grigliaRepository,
|
||||||
@ -75,6 +82,14 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
this.mCurrentOrdine = ordine;
|
this.mCurrentOrdine = ordine;
|
||||||
mArticoliGriglia.clear();
|
mArticoliGriglia.clear();
|
||||||
mArticoliGriglia.addAll(articoliGriglia);
|
mArticoliGriglia.addAll(articoliGriglia);
|
||||||
|
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
this.dataInizioModifica = today;
|
||||||
this.refreshListArticoli();
|
this.refreshListArticoli();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,10 +97,21 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
refreshListArticoli(null);
|
refreshListArticoli(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isOrderSessionInvalid() {
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
return today.after(this.dataInizioModifica);
|
||||||
|
}
|
||||||
|
|
||||||
public void refreshListArticoli(Runnable onSuccess) {
|
public void refreshListArticoli(Runnable onSuccess) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
this.loadArticoli(mCurrentOrdine, articoli -> {
|
this.loadArticoli(mCurrentOrdine, articoli -> {
|
||||||
articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
|
articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
|
||||||
|
|
||||||
this.mArticoli.postValue(articoli);
|
this.mArticoli.postValue(articoli);
|
||||||
this.sendOnLoadingEnded();
|
this.sendOnLoadingEnded();
|
||||||
if (onSuccess != null)
|
if (onSuccess != null)
|
||||||
@ -109,6 +135,8 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
||||||
art.setCtMaxOrd(BigDecimal.valueOf(artGrid.getCtMaxOrd()));
|
art.setCtMaxOrd(BigDecimal.valueOf(artGrid.getCtMaxOrd()));
|
||||||
art.setSystemNote(artGrid.generateSystemNote());
|
art.setSystemNote(artGrid.generateSystemNote());
|
||||||
|
} else {
|
||||||
|
art.setInvalid(true);
|
||||||
}
|
}
|
||||||
return art;
|
return art;
|
||||||
}
|
}
|
||||||
@ -133,15 +161,29 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
try {
|
try {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
ArticoloOrdinabileDTO articoloDTO = getArticoloFromBarcode(barcode);
|
List<ArticoloOrdinabileDTO> listArticoli = matchArticoliForBarcode(barcode);
|
||||||
if (articoloDTO == null) {
|
if (listArticoli == null || listArticoli.isEmpty()) {
|
||||||
throw new NoResultFromBarcodeException(barcode);
|
if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) {
|
||||||
|
this.mListener.confirmCheckForUnlistedProduct(barcode);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
throw new NoResultFromBarcodeException(barcode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (listArticoli.size() == 1) {
|
||||||
|
this.addArticoloToOrdine(
|
||||||
|
listArticoli.get(0),
|
||||||
|
this::sendOnLoadingEnded,
|
||||||
|
this::sendError
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.mListener.chooseArtFromList(listArticoli, (art) -> {
|
||||||
|
this.addArticoloToOrdine(
|
||||||
|
art,
|
||||||
|
this::sendOnLoadingEnded,
|
||||||
|
this::sendError);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
this.addArticoloToOrdine(
|
|
||||||
articoloDTO,
|
|
||||||
this::sendOnLoadingEnded,
|
|
||||||
this::sendError
|
|
||||||
);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
this.sendError(e);
|
this.sendError(e);
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
@ -163,12 +205,13 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
|
|
||||||
var articolo = foundArt != null ? completeDataArticoli(foundArt) : convertToArticoloOrdine(art, mCurrentOrdine);
|
var articolo = foundArt != null ? completeDataArticoli(foundArt) : convertToArticoloOrdine(art, mCurrentOrdine);
|
||||||
Runnable saveAction = () -> {
|
Runnable saveAction = () -> {
|
||||||
|
|
||||||
articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf());
|
articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf());
|
||||||
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail);
|
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isAutoOrderOnScan()) {
|
if (isAutoOrderOnScan()) {
|
||||||
if (!UtilityBigDecimal.isNullOrZero(articolo.getCtMaxOrd()) && UtilityBigDecimal.greaterThan(BigDecimal.valueOf(articolo.getQtaOrd() + articolo.getQtaCnf()), articolo.getCtMaxOrd())) {
|
if (!UtilityBigDecimal.isNullOrZero(articolo.getCtMaxOrd()) && UtilityBigDecimal.greaterThan(BigDecimal.valueOf(articolo.getQtaOrd() + articolo.getQtaCnf()), articolo.getCtMaxOrd().multiply(BigDecimal.valueOf(articolo.getQtaCnf())))) {
|
||||||
mListener.confirmExceedingQtyOrder(saveAction);
|
mListener.confirmExceedingQtyOrder(saveAction);
|
||||||
} else {
|
} else {
|
||||||
saveAction.run();
|
saveAction.run();
|
||||||
@ -214,22 +257,20 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
return articolo;
|
return articolo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArticoloOrdinabileDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException {
|
public List<ArticoloOrdinabileDTO> matchArticoliForBarcode(String barcode) throws NoArtsInGridException, MultipleResultFromBarcodeException, NoResultFromBarcodeException {
|
||||||
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
|
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
|
||||||
throw new NoArtsInGridException();
|
throw new NoArtsInGridException();
|
||||||
}
|
}
|
||||||
ArticoloOrdinabileDTO art = Stream.of(mArticoliGriglia).filter(articolo ->
|
List<ArticoloOrdinabileDTO> articoli = Stream.of(mArticoliGriglia).filter(articolo ->
|
||||||
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
||||||
articolo.getBarcode().contains(barcode) ||
|
articolo.getBarcode().contains(barcode) ||
|
||||||
articolo.getBarcode().contains(StringUtils.leftPad(barcode, 13, "0"))
|
articolo.getBarcode().contains(StringUtils.leftPad(barcode, 13, "0"))
|
||||||
|
|
||||||
)
|
).map((art) -> art.setSelectedBarcode(barcode))
|
||||||
// .sortBy(x -> x.getSortByBarcodeCondition(barcode))
|
// .sortBy(x -> x.getSortByBarcodeCondition(barcode))
|
||||||
.findFirst().orElse(null);
|
.toList();
|
||||||
if (art != null) {
|
|
||||||
art.setSelectedBarcode(barcode);
|
return articoli;
|
||||||
}
|
|
||||||
return art;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -280,19 +321,34 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
|
|
||||||
public void exportOrdine(Runnable onComplete) {
|
public void exportOrdine(Runnable onComplete) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
if (mArticoli.getValue() == null) {
|
if (isOrderSessionInvalid()) {
|
||||||
|
this.sendError(new ExpiredProductListException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mArticoli.getValue() == null || mArticoli.getValue().isEmpty()) {
|
||||||
this.sendError(new EmptyOrderException());
|
this.sendError(new EmptyOrderException());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), codMdep, (ordine) -> {
|
|
||||||
|
|
||||||
mOrdineRepository.updateOrder(ordine, ord -> {
|
Runnable saveOrdine = () -> {
|
||||||
this.sendOnLoadingEnded();
|
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), codMdep, (ordine) -> {
|
||||||
onComplete.run();
|
|
||||||
|
mOrdineRepository.updateOrder(ordine, ord -> {
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
onComplete.run();
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (Stream.of(mArticoli.getValue()).anyMatch(ArticoloOrdine::isInvalid)) {
|
||||||
|
|
||||||
|
this.mListener.confirmExportInvalidProducts(saveOrdine);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
saveOrdine.run();
|
||||||
|
|
||||||
}, this::sendError);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
|
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
|
||||||
@ -311,6 +367,51 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
if (this.mListener != null) mListener.onError(ex);
|
if (this.mListener != null) mListener.onError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadArticolo(String barcode) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
|
pvOrdiniAcquistoRESTConsumer.retrieveArticolo(null, codMdep, barcode, (grigliaDTO) -> {
|
||||||
|
|
||||||
|
RunnableArgs<ArticoloOrdinabileDTO> addArtToOrder = (articolo) -> {
|
||||||
|
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null);
|
||||||
|
if (existingArt != null) {
|
||||||
|
List<String> barcodes = existingArt.getBarcode();
|
||||||
|
barcodes.addAll(articolo.getBarcode());
|
||||||
|
barcodes = Stream.of(barcodes).distinct().toList();
|
||||||
|
existingArt.setBarcode(barcodes);
|
||||||
|
} else {
|
||||||
|
mArticoliGriglia.add(articolo);
|
||||||
|
}
|
||||||
|
this.processBarcode(barcode);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (grigliaDTO == null || grigliaDTO.getArticoli().isEmpty()) {
|
||||||
|
this.sendError(new ArtNotFoundInGridException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (grigliaDTO.getArticoli().size() > 1) {
|
||||||
|
this.mListener.chooseArtFromList(grigliaDTO.getArticoli(), addArtToOrder);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ArticoloOrdinabileDTO newArt = Stream.of(grigliaDTO.getArticoli()).findFirstOrElse(null);
|
||||||
|
if (newArt == null) {
|
||||||
|
this.sendError(new ArtNotFoundInGridException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
addArtToOrder.run(newArt);
|
||||||
|
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isArtInOrder(ArticoloOrdinabileDTO articolo) {
|
||||||
|
if (mArticoli.getValue() == null || mArticoli.getValue().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Stream.of(mArticoli.getValue()).noneMatch(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()));
|
||||||
|
}
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener {
|
public interface Listener extends ILoadingListener {
|
||||||
void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
|
void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
|
||||||
|
|
||||||
@ -319,6 +420,12 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
int getColorFromResource(int resId);
|
int getColorFromResource(int resId);
|
||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
|
void confirmCheckForUnlistedProduct(String barcode);
|
||||||
|
|
||||||
|
void confirmExportInvalidProducts(Runnable onConfirm);
|
||||||
|
|
||||||
|
void chooseArtFromList(List<ArticoloOrdinabileDTO> listArticoli, RunnableArgs<ArticoloOrdinabileDTO> onArtChosen);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PVOrdineAcquistoEditViewModel setListener(Listener listener) {
|
public PVOrdineAcquistoEditViewModel setListener(Listener listener) {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||||
|
|
||||||
import dagger.Subcomponent;
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||||
|
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface DialogSelectArtToOrderComponent {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
DialogSelectArtToOrderComponent create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void inject(DialogSelectArtToOrderView DialogSelectArtView);
|
||||||
|
}
|
||||||
@ -0,0 +1,101 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
|
|
||||||
|
public class DialogSelectArtToOrderItemListModel<T> {
|
||||||
|
|
||||||
|
private String codMart;
|
||||||
|
private String descrizione;
|
||||||
|
private BigDecimal qtaOrd;
|
||||||
|
private String untMisOrd;
|
||||||
|
private String barcode;
|
||||||
|
|
||||||
|
private String codAlis;
|
||||||
|
private boolean isNew;
|
||||||
|
private T originalModel;
|
||||||
|
private BindableBoolean checked = new BindableBoolean(false);
|
||||||
|
|
||||||
|
|
||||||
|
public String getCodMart() {
|
||||||
|
return codMart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setCodMart(String codMart) {
|
||||||
|
this.codMart = codMart;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescrizione() {
|
||||||
|
return descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setDescrizione(String descrizione) {
|
||||||
|
this.descrizione = descrizione;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaOrd() {
|
||||||
|
return qtaOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setQtaOrd(BigDecimal qtaOrd) {
|
||||||
|
this.qtaOrd = qtaOrd;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUntMisOrd() {
|
||||||
|
return untMisOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setUntMisOrd(String untMisOrd) {
|
||||||
|
this.untMisOrd = untMisOrd;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBarcode() {
|
||||||
|
return barcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setBarcode(String barcode) {
|
||||||
|
this.barcode = barcode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNew() {
|
||||||
|
return isNew;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setNew(boolean aNew) {
|
||||||
|
isNew = aNew;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getOriginalModel() {
|
||||||
|
return originalModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setOriginalModel(T originalModel) {
|
||||||
|
this.originalModel = originalModel;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BindableBoolean getChecked() {
|
||||||
|
return checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setChecked(BindableBoolean checked) {
|
||||||
|
this.checked = checked;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodAlis() {
|
||||||
|
return codAlis;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectArtToOrderItemListModel<T> setCodAlis(String codAlis) {
|
||||||
|
this.codAlis = codAlis;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
|
||||||
|
@Module(subcomponents = DialogSelectArtToOrderComponent.class)
|
||||||
|
public class DialogSelectArtToOrderModule {
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
DialogSelectArtToOrderViewModel providesDialogSelectArtNewViewModel() {
|
||||||
|
return new DialogSelectArtToOrderViewModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,130 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
|
import com.ravikoradiya.liveadapter.Type;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.BR;
|
||||||
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.databinding.DialogSelectArtToOrderBinding;
|
||||||
|
import it.integry.integrywmsnative.databinding.DialogSelectArtToOrderItemModelBinding;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @noinspection rawtypes
|
||||||
|
*/
|
||||||
|
public class DialogSelectArtToOrderView extends BaseDialogFragment {
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogSelectArtToOrderViewModel mViewModel;
|
||||||
|
|
||||||
|
private DialogSelectArtToOrderBinding mBindings;
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
|
private final List<DialogSelectArtToOrderItemListModel<Object>> listArts;
|
||||||
|
private final RunnableArgs<DialogSelectArtToOrderItemListModel> onConfirm;
|
||||||
|
private final Runnable onAbort;
|
||||||
|
|
||||||
|
//Pass here all external parameters
|
||||||
|
public static DialogSelectArtToOrderView newInstance(List<DialogSelectArtToOrderItemListModel<Object>> listArts,
|
||||||
|
RunnableArgs<DialogSelectArtToOrderItemListModel> onConfirm,
|
||||||
|
Runnable onAbort) {
|
||||||
|
return new DialogSelectArtToOrderView(listArts, onConfirm, onAbort);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogSelectArtToOrderView(List<DialogSelectArtToOrderItemListModel<Object>> listArts,
|
||||||
|
RunnableArgs<DialogSelectArtToOrderItemListModel> onConfirm,
|
||||||
|
Runnable onAbort) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.listArts = listArts;
|
||||||
|
this.onConfirm = onConfirm;
|
||||||
|
this.onAbort = onAbort;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
|
this.mContext = requireContext();
|
||||||
|
|
||||||
|
mBindings = DialogSelectArtToOrderBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||||
|
mBindings.setLifecycleOwner(this);
|
||||||
|
|
||||||
|
MainApplication.appComponent
|
||||||
|
.dialogSelectArtToOrderNewComponent()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
|
||||||
|
setCancelable(false);
|
||||||
|
|
||||||
|
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||||
|
.setView(mBindings.getRoot())
|
||||||
|
.setCancelable(isCancelable())
|
||||||
|
.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||||
|
final DialogSelectArtToOrderItemListModel<Object> selectedItem = Stream.of(listArts)
|
||||||
|
.filter(x -> x.getChecked().get())
|
||||||
|
.findFirstOrElse(null);
|
||||||
|
|
||||||
|
if (selectedItem != null)
|
||||||
|
this.onConfirm.run(selectedItem);
|
||||||
|
})
|
||||||
|
.setNegativeButton(R.string.abort, (dialog, which) -> {
|
||||||
|
if (this.onAbort != null) this.onAbort.run();
|
||||||
|
})
|
||||||
|
.create();
|
||||||
|
|
||||||
|
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||||
|
alertDialog.setOnShowListener(this);
|
||||||
|
return alertDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShow(DialogInterface dialogInterface) {
|
||||||
|
super.onShow(dialogInterface);
|
||||||
|
|
||||||
|
this.listArts.get(0).getChecked().set(true);
|
||||||
|
this.initRecyclerView();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void initRecyclerView() {
|
||||||
|
var itemType = new Type<DialogSelectArtToOrderItemListModel, DialogSelectArtToOrderItemModelBinding>(R.layout.dialog_select_art_to_order__item_model, BR.row);
|
||||||
|
// itemType.areItemSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId()));
|
||||||
|
itemType.areContentsTheSame(DialogSelectArtToOrderItemListModel::equals);
|
||||||
|
itemType.onClick(x -> {
|
||||||
|
resetChecks();
|
||||||
|
x.getBinding().getRow().getChecked().set(true);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
new LiveAdapter(listArts)
|
||||||
|
.map(DialogSelectArtToOrderItemListModel.class, itemType)
|
||||||
|
.into(this.mBindings.itemList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetChecks() {
|
||||||
|
for (var item : listArts) {
|
||||||
|
item.getChecked().set(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||||
|
|
||||||
|
public class DialogSelectArtToOrderViewModel {
|
||||||
|
|
||||||
|
}
|
||||||
@ -15,6 +15,7 @@ import androidx.databinding.DataBindingUtil;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -30,6 +31,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaReposito
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
||||||
|
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
@ -133,6 +135,13 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
|||||||
private void setListaArticoli(List<ArticoloOrdinabileDTO> listArticoli) {
|
private void setListaArticoli(List<ArticoloOrdinabileDTO> listArticoli) {
|
||||||
mListArticoli.clear();
|
mListArticoli.clear();
|
||||||
mListArticoli.addAll(listArticoli);
|
mListArticoli.addAll(listArticoli);
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
this.mPvOrdiniAcquistoGrigliaViewModel.setDataCaricamentoListino(today);
|
||||||
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,6 +181,10 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void editOrdine(Ordine ordine) {
|
private void editOrdine(Ordine ordine) {
|
||||||
|
if (this.mPvOrdiniAcquistoGrigliaViewModel.isProductListSessionInvalid()) {
|
||||||
|
this.onError(new ExpiredProductListException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
|
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,6 +220,10 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void createNewOrder() {
|
public void createNewOrder() {
|
||||||
|
if (this.mPvOrdiniAcquistoGrigliaViewModel.isProductListSessionInvalid()) {
|
||||||
|
this.onError(new ExpiredProductListException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.onLoadingStarted();
|
this.onLoadingStarted();
|
||||||
|
|
||||||
mPvOrdiniAcquistoGrigliaViewModel.createNewOrder(mGriglia, order -> {
|
mPvOrdiniAcquistoGrigliaViewModel.createNewOrder(mGriglia, order -> {
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
|
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||||
@ -18,6 +20,8 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
|||||||
private final OrdineRepository ordineRepository;
|
private final OrdineRepository ordineRepository;
|
||||||
private final GrigliaRepository grigliaRepository;
|
private final GrigliaRepository grigliaRepository;
|
||||||
|
|
||||||
|
private Calendar dataCaricamentoListino;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PVOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
|
public PVOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
|
||||||
ArticoloGrigliaRepository articoloGrigliaRepository,
|
ArticoloGrigliaRepository articoloGrigliaRepository,
|
||||||
@ -45,4 +49,23 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
|||||||
ordineRepository.delete(ordine, onSuccess, onFail);
|
ordineRepository.delete(ordine, onSuccess, onFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Calendar getDataCaricamentoListino() {
|
||||||
|
return dataCaricamentoListino;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PVOrdiniAcquistoGrigliaViewModel setDataCaricamentoListino(Calendar dataCaricamentoListino) {
|
||||||
|
this.dataCaricamentoListino = dataCaricamentoListino;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isProductListSessionInvalid() {
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
return today.after(this.dataCaricamentoListino);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs;
|
package it.integry.integrywmsnative.view.dialogs;
|
||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
|
||||||
@ -19,14 +20,19 @@ public class DialogAskActionView extends BaseDialogFragment {
|
|||||||
|
|
||||||
private final Runnable mOnEditSelected;
|
private final Runnable mOnEditSelected;
|
||||||
private final Runnable mOnDeleteSelected;
|
private final Runnable mOnDeleteSelected;
|
||||||
|
private boolean runOnDismissAction = true;
|
||||||
|
private final Runnable mOnDismiss;
|
||||||
|
|
||||||
|
|
||||||
|
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete, Runnable onDismiss) {
|
||||||
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete) {
|
return new DialogAskActionView(title, subtitle, onEdit, onDelete, onDismiss);
|
||||||
return new DialogAskActionView(title, subtitle, onEdit, onDelete);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DialogAskActionView(String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected) {
|
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete) {
|
||||||
|
return newInstance(title, subtitle, onEdit, onDelete, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogAskActionView(String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected, Runnable onDismiss) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
mTitle = title;
|
mTitle = title;
|
||||||
@ -34,6 +40,7 @@ public class DialogAskActionView extends BaseDialogFragment {
|
|||||||
|
|
||||||
mOnEditSelected = onEditSelected;
|
mOnEditSelected = onEditSelected;
|
||||||
mOnDeleteSelected = onDeleteSelected;
|
mOnDeleteSelected = onDeleteSelected;
|
||||||
|
mOnDismiss = onDismiss;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@ -53,14 +60,23 @@ public class DialogAskActionView extends BaseDialogFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onEdit() {
|
public void onEdit() {
|
||||||
|
runOnDismissAction = false;
|
||||||
dismiss();
|
dismiss();
|
||||||
mOnEditSelected.run();
|
mOnEditSelected.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDelete() {
|
public void onDelete() {
|
||||||
|
runOnDismissAction = false;
|
||||||
dismiss();
|
dismiss();
|
||||||
mOnDeleteSelected.run();
|
mOnDeleteSelected.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
if (runOnDismissAction && mOnDismiss != null) {
|
||||||
|
mOnDismiss.run();
|
||||||
|
}
|
||||||
|
super.onDismiss(dialog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.available_items;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
|
|
||||||
|
public class DialogAvailableItemListModel {
|
||||||
|
|
||||||
|
private String codMart;
|
||||||
|
private String descrizioneEstesa;
|
||||||
|
|
||||||
|
private boolean aggiunto;
|
||||||
|
|
||||||
|
public boolean isAggiunto() {
|
||||||
|
return aggiunto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogAvailableItemListModel setAggiunto(boolean aggiunto) {
|
||||||
|
this.aggiunto = aggiunto;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodMart() {
|
||||||
|
return codMart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogAvailableItemListModel setCodMart(String codMart) {
|
||||||
|
this.codMart = codMart;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescrizioneEstesa() {
|
||||||
|
return descrizioneEstesa;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogAvailableItemListModel setDescrizioneEstesa(String descrizioneEstesa) {
|
||||||
|
this.descrizioneEstesa = descrizioneEstesa;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DialogAvailableItemListModel fromMtbAart(MtbAart mtbAart) {
|
||||||
|
return new DialogAvailableItemListModel()
|
||||||
|
.setCodMart(mtbAart.getCodMart())
|
||||||
|
.setDescrizioneEstesa(mtbAart.getDescrizioneEstesa());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.available_items;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.BR;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
|
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
|
||||||
|
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||||
|
|
||||||
|
public class DialogAvailableItemsView extends BaseDialogFragment {
|
||||||
|
|
||||||
|
private final List<DialogAvailableItemListModel> mListaArts;
|
||||||
|
|
||||||
|
|
||||||
|
public DialogAvailableItemsView(List<DialogAvailableItemListModel> listaArts) {
|
||||||
|
super();
|
||||||
|
this.mListaArts = listaArts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
|
var binding = DialogChooseArtFromListaArtBinding.inflate(LayoutInflater.from(requireContext()));
|
||||||
|
|
||||||
|
binding.titleText.setText(R.string.articoli_disponibili);
|
||||||
|
|
||||||
|
initRecyclerView(binding, mListaArts);
|
||||||
|
|
||||||
|
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
|
||||||
|
.setView(binding.getRoot())
|
||||||
|
.setCancelable(false)
|
||||||
|
.create();
|
||||||
|
|
||||||
|
alertDialog.setCanceledOnTouchOutside(false);
|
||||||
|
alertDialog.setOnShowListener(this);
|
||||||
|
return alertDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<DialogAvailableItemListModel> dataset) {
|
||||||
|
binding.itemsList.setHasFixedSize(true);
|
||||||
|
|
||||||
|
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
|
||||||
|
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
|
||||||
|
binding.itemsList.addItemDecoration(itemDecorator);
|
||||||
|
|
||||||
|
|
||||||
|
new LiveAdapter(dataset, BR.item)
|
||||||
|
.map(DialogAvailableItemListModel.class, R.layout.dialog_available_intventario_items__item_model)
|
||||||
|
.into(binding.itemsList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -31,7 +31,7 @@ public class DialogChooseArtFromListaArtsAdapter extends RecyclerView.Adapter<Di
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void bind(MtbAart mtbAart) {
|
public void bind(MtbAart mtbAart) {
|
||||||
mViewDataBinding.setMtbAart(mtbAart);
|
mViewDataBinding.setItem(mtbAart);
|
||||||
mViewDataBinding.executePendingBindings();
|
mViewDataBinding.executePendingBindings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,13 +59,13 @@ public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
|
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
|
||||||
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
|
binding.itemsList.setNestedScrollingEnabled(false);
|
||||||
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
|
binding.itemsList.setHasFixedSize(true);
|
||||||
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(requireContext()));
|
binding.itemsList.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||||
|
|
||||||
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
|
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
|
||||||
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
|
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
|
||||||
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
|
binding.itemsList.addItemDecoration(itemDecorator);
|
||||||
|
|
||||||
IRecyclerItemClicked<MtbAart> onItemClickListener = (item, position) -> {
|
IRecyclerItemClicked<MtbAart> onItemClickListener = (item, position) -> {
|
||||||
if (mOnItemChoosed != null) {
|
if (mOnItemChoosed != null) {
|
||||||
@ -77,7 +77,7 @@ public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
|
|||||||
|
|
||||||
DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter(
|
DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter(
|
||||||
requireContext(), dataset, this.mEnableSelection ? onItemClickListener : null);
|
requireContext(), dataset, this.mEnableSelection ? onItemClickListener : null);
|
||||||
binding.dialogChooseArtFromListaArtMainList.setAdapter(mCurrentAdapter);
|
binding.itemsList.setAdapter(mCurrentAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ public class DialogChooseArtFromListaMtbColrAdapter extends RecyclerView.Adapter
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void bind(MtbAart mtbAart) {
|
public void bind(MtbAart mtbAart) {
|
||||||
mViewDataBinding.setMtbAart(mtbAart);
|
mViewDataBinding.setItem(mtbAart);
|
||||||
mViewDataBinding.executePendingBindings();
|
mViewDataBinding.executePendingBindings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,18 +55,18 @@ public class DialogChooseArtFromListaMtbColrView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbColr> dataset) {
|
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbColr> dataset) {
|
||||||
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
|
binding.itemsList.setNestedScrollingEnabled(false);
|
||||||
|
|
||||||
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
|
binding.itemsList.setHasFixedSize(true);
|
||||||
|
|
||||||
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
|
binding.itemsList.setLayoutManager(new LinearLayoutManager(currentContext));
|
||||||
|
|
||||||
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL);
|
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL);
|
||||||
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
|
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
|
||||||
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
|
binding.itemsList.addItemDecoration(itemDecorator);
|
||||||
|
|
||||||
currentAdapter = new DialogChooseArtFromListaMtbColrAdapter(currentContext, dataset, onItemClicked);
|
currentAdapter = new DialogChooseArtFromListaMtbColrAdapter(currentContext, dataset, onItemClicked);
|
||||||
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
|
binding.itemsList.setAdapter(currentAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IRecyclerItemClicked<MtbColr> onItemClicked = (item, position) -> {
|
private IRecyclerItemClicked<MtbColr> onItemClicked = (item, position) -> {
|
||||||
|
|||||||
9
app/src/main/res/drawable/ic_doc_interni_outline.xml
Normal file
9
app/src/main/res/drawable/ic_doc_interni_outline.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="96dp"
|
||||||
|
android:height="96dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:pathData="M6,2C4.906,2 4,2.906 4,4L4,20C4,21.094 4.906,22 6,22L18,22C19.094,22 20,21.094 20,20L20,8L14,2L6,2zM6,4L13,4L13,9L18,9L18,20L6,20L6,4zM8,12L8,14L16,14L16,12L8,12zM8,16L8,18L16,18L16,16L8,16z"
|
||||||
|
android:fillColor="#5B5B5B"/>
|
||||||
|
</vector>
|
||||||
12
app/src/main/res/drawable/ic_verified_account__green_800.xml
Normal file
12
app/src/main/res/drawable/ic_verified_account__green_800.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:pathData="M21.2,12l0.6,-1.9c0.5,-1.4 -0.2,-3 -1.5,-3.7l-1.8,-0.9l-0.9,-1.8c-0.7,-1.3 -2.2,-2 -3.7,-1.5L12,2.8l-1.9,-0.6c-1.4,-0.5 -3,0.2 -3.7,1.5L5.5,5.5L3.7,6.4c-1.3,0.7 -2,2.2 -1.5,3.7L2.8,12l-0.6,1.9c-0.5,1.4 0.2,3 1.5,3.7l1.8,0.9l0.9,1.8c0.7,1.3 2.3,2 3.7,1.5l1.9,-0.6l1.9,0.6c1.4,0.5 3,-0.2 3.7,-1.5l0.9,-1.8l1.8,-0.9c1.3,-0.7 2,-2.2 1.5,-3.7L21.2,12zM11,16.4l-3.7,-3.7l1.4,-1.4l2.3,2.3l5.3,-5.3l1.4,1.4L11,16.4z"
|
||||||
|
android:fillColor="#2e7d32"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M11,16.4l-3.7,-3.7l1.4,-1.4l2.3,2.3l5.3,-5.3l1.4,1.4z"
|
||||||
|
android:fillColor="#FFFFFF"/>
|
||||||
|
</vector>
|
||||||
@ -71,136 +71,167 @@
|
|||||||
|
|
||||||
</it.integry.integrywmsnative.ui.ElevatedToolbar>
|
</it.integry.integrywmsnative.ui.ElevatedToolbar>
|
||||||
|
|
||||||
<RelativeLayout
|
<androidx.cardview.widget.CardView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="8dp"
|
android:layout_margin="12dp"
|
||||||
android:layout_marginRight="8dp"
|
app:cardCornerRadius="16dp"
|
||||||
android:background="@drawable/gray_detail_background_round16"
|
app:cardElevation="4dp">
|
||||||
android:padding="16dp">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/profile_root_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:background="@color/colorPrimary"
|
||||||
android:layout_toStartOf="@id/info_arts_button"
|
android:orientation="horizontal"
|
||||||
android:layout_alignParentStart="true">
|
android:padding="16dp">
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
android:layout_width="30dp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_height="30dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_gravity="center_vertical"
|
||||||
android:text="@string/document_label"
|
android:layout_marginEnd="16dp"
|
||||||
android:textColor="@android:color/black"
|
android:adjustViewBounds="true"
|
||||||
android:textSize="16sp" />
|
android:src="@drawable/ic_doc_interni_outline"
|
||||||
|
android:tint="@color/white" />
|
||||||
<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"
|
|
||||||
app:binding="@{view.documentHeader}"
|
|
||||||
tools:text="#documentId" />
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
|
||||||
android:id="@+id/doc_rif_layout"
|
|
||||||
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="@string/document_rif_label"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/document_rif"
|
|
||||||
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"
|
|
||||||
app:binding="@{view.documentRifHeader}"
|
|
||||||
tools:text="#documentId" />
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
|
||||||
android:id="@+id/supplier_layout"
|
|
||||||
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="@string/fornitore"
|
|
||||||
android:textColor="@android:color/black" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/cod_anag"
|
|
||||||
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:textStyle="italic"
|
|
||||||
app:binding="@{view.codAnag}"
|
|
||||||
tools:text="F000 - 01" />
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:orientation="vertical">
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<RelativeLayout
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:layout_toStartOf="@id/loaded_arts_info_layout"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="ID:"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxDashboard"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
app:binding="@{view.documentHeader}"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
tools:text="670" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/loaded_arts_info_layout"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
app:singleClick="@{() -> view.showInfoArtDialog()}">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{String.valueOf(viewModel.productsList.size())}"
|
||||||
|
tools:text="10250" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="articoli" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:adjustViewBounds="true"
|
||||||
|
android:src="@drawable/ic_black_barcode_scanner"
|
||||||
|
android:tint="@color/white" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/prod_count"
|
android:layout_marginTop="2dp"
|
||||||
android:textColor="@android:color/black" />
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/count_art_ord"
|
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Rif:" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="Non definito"
|
||||||
|
android:textStyle="italic"
|
||||||
|
app:visibility="@{view.documentRifHeader.get() == null}" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
app:binding="@{view.documentRifHeader}"
|
||||||
|
app:visibility="@{view.documentRifHeader.get() != null}" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginTop="2dp"
|
||||||
android:textColor="@android:color/black"
|
android:orientation="horizontal">
|
||||||
android:textStyle="bold"
|
|
||||||
app:binding="@{view.prodsCount}"
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
tools:text="10" />
|
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Fornitore:" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="Non definito"
|
||||||
|
android:textStyle="italic"
|
||||||
|
app:visibility="@{view.codAnag.get() == null}" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.TextBoxLittleDashboard"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
app:binding="@{view.codAnag}"
|
||||||
|
app:visibility="@{view.codAnag.get() != null}" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/info_arts_button"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:src="@drawable/ic_information_outline_24dp"
|
|
||||||
app:singleClick="@{() -> view.showInfoArtDialog()}" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/document_rows_list"
|
android:id="@+id/document_rows_list"
|
||||||
@ -209,7 +240,9 @@
|
|||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginBottom="92dp"
|
android:layout_marginBottom="92dp"
|
||||||
android:paddingStart="2dp"
|
android:paddingStart="2dp"
|
||||||
android:paddingEnd="2dp" />
|
android:paddingEnd="2dp"
|
||||||
|
tools:itemCount="5"
|
||||||
|
tools:listitem="@layout/activity_contab_doc_interno_row__list_single_item" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:id="@+id/scan_art_spinner"
|
android:id="@+id/scan_art_spinner"
|
||||||
|
|||||||
@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<import type="android.view.View" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="item"
|
||||||
|
type="it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel" />
|
||||||
|
</data>
|
||||||
|
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/linearLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?android:attr/selectableItemBackground"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/cod_mart_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_toStartOf="@id/already_inventariato"
|
||||||
|
android:text="@{item.codMart}"
|
||||||
|
android:textColor="@color/colorPrimary"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
tools:text="COD MART" />
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/already_inventariato"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:visibility="@{item.aggiunto ? View.VISIBLE : View.GONE}">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/already_inventariato_text"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.ExtraSmall"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginStart="-12dp"
|
||||||
|
android:layout_toEndOf="@id/already_inventariato_icon"
|
||||||
|
android:paddingEnd="4dp"
|
||||||
|
android:background="@drawable/badge_round_corner_without_padding"
|
||||||
|
android:backgroundTint="@color/green_800"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:text="Aggiunto"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/already_inventariato_icon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:adjustViewBounds="true"
|
||||||
|
android:src="@drawable/ic_verified_account__green_800" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/cod_mart_label"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:text="@{item.descrizioneEstesa}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:text="Descrizione lunga articolo" />
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</layout>
|
||||||
@ -35,9 +35,11 @@
|
|||||||
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/dialog_choose_art_from_lista_art__main_list"
|
android:id="@+id/items_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:nestedScrollingEnabled="false"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
tools:listitem="@layout/dialog_choose_art_from_lista_art__item_model"
|
tools:listitem="@layout/dialog_choose_art_from_lista_art__item_model"
|
||||||
tools:itemCount="5"/>
|
tools:itemCount="5"/>
|
||||||
|
|
||||||
|
|||||||
@ -6,13 +6,11 @@
|
|||||||
<data>
|
<data>
|
||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="mtbAart"
|
name="item"
|
||||||
type="it.integry.integrywmsnative.core.model.MtbAart" />
|
type="it.integry.integrywmsnative.core.model.MtbAart" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
@ -37,7 +35,7 @@
|
|||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{mtbAart.codMart}"
|
android:text="@{item.codMart}"
|
||||||
android:textColor="@color/colorPrimary"
|
android:textColor="@color/colorPrimary"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
@ -47,11 +45,11 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:text="@{mtbAart.diacod}"
|
android:text="@{item.diacod}"
|
||||||
android:textColor="@color/red_600"
|
android:textColor="@color/red_600"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:visibility="@{UtilityString.isNullOrEmpty(mtbAart.diacod) ? View.GONE : View.VISIBLE}"
|
android:visibility="@{UtilityString.isNullOrEmpty(item.diacod) ? View.GONE : View.VISIBLE}"
|
||||||
tools:text="DIACOD" />
|
tools:text="DIACOD" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
@ -60,7 +58,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:text="@{mtbAart.descrizioneEstesa}"
|
android:text="@{item.descrizioneEstesa}"
|
||||||
android:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
tools:text="Descrizione lunga articolo" />
|
tools:text="Descrizione lunga articolo" />
|
||||||
|
|||||||
@ -1,141 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
|
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<import type="android.view.View" />
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="view"
|
|
||||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView" />
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/base_root"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="center_horizontal"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:cardCornerRadius="12dp"
|
|
||||||
app:cardElevation="0dp">
|
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:paddingStart="8dp"
|
|
||||||
android:paddingTop="24dp"
|
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:paddingBottom="8dp">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_above="@id/buttons"
|
|
||||||
android:layout_below="@id/title_container"
|
|
||||||
android:paddingTop="8dp">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/empty_view"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:padding="16dp">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="@string/no_item_to_pick_text"
|
|
||||||
android:textColor="@color/empty_view_gray"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/lista_doc_rows"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
|
||||||
android:id="@+id/title_container"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/title_text"
|
|
||||||
style="@style/TextViewMaterial.Dialog.HeadlineText"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center_horizontal"
|
|
||||||
android:text="@string/doc_interni_select_row_to_edit" />
|
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/buttons"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:layout_marginEnd="4dp"
|
|
||||||
android:paddingBottom="8dp">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/center_guideline"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent="0.5" />
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/negative_button"
|
|
||||||
style="@style/Button.PrimaryOutline"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginRight="8dp"
|
|
||||||
android:text="@string/abort"
|
|
||||||
app:layout_constrainedHeight="true"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/center_guideline"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/positive_button"
|
|
||||||
style="@style/Button.PrimaryFull"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginRight="8dp"
|
|
||||||
android:text="@string/confirm"
|
|
||||||
app:layout_constrainedHeight="true"
|
|
||||||
android:enabled="@{view.selectedRow != null}"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/center_guideline"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
</layout>
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="view"
|
name="view"
|
||||||
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView" />
|
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloView" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
|||||||
44
app/src/main/res/layout/dialog_select_art_to_order.xml
Normal file
44
app/src/main/res/layout/dialog_select_art_to_order.xml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingVertical="16dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/title_text"
|
||||||
|
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:singleLine="false"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:text="@string/dialog_choose_art_from_lista_art" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/item_list"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:listitem="@layout/dialog_select_art_to_order__item_model"
|
||||||
|
tools:itemCount="5" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
</layout>
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
@ -15,41 +15,43 @@
|
|||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="row"
|
name="row"
|
||||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.dto.DialogChooseRowFromListaDocRowsListModel" />
|
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderItemListModel" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:layout_marginHorizontal="4dp"
|
||||||
|
android:layout_marginVertical="2dp"
|
||||||
android:background="@drawable/bg_checked_layout"
|
android:background="@drawable/bg_checked_layout"
|
||||||
app:backgroundTintResID="@{row.checked.get() ? R.color.bg_checked_layout : android.R.color.transparent}"
|
android:onClick="@{() -> row.checked.toggle()}"
|
||||||
android:layout_marginTop="2dp"
|
android:orientation="horizontal"
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:layout_marginBottom="2dp"
|
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:onClick="@{() -> row.toggleCheck()}">
|
app:backgroundTintResID="@{row.checked.get() ? R.color.bg_checked_layout : android.R.color.transparent}">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatCheckBox
|
<androidx.appcompat.widget.AppCompatRadioButton
|
||||||
android:id="@+id/checkbox"
|
android:id="@+id/checkbox"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginEnd="8dp"
|
android:minWidth="0dp"
|
||||||
|
android:minHeight="0dp"
|
||||||
|
android:clickable="false"
|
||||||
app:checked="@{row.checked}" />
|
app:checked="@{row.checked}" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/linearLayout"
|
android:id="@+id/linearLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:layout_toStartOf="@id/qta_box"
|
||||||
android:layout_toEndOf="@id/checkbox"
|
android:layout_toEndOf="@id/checkbox"
|
||||||
android:layout_toStartOf="@id/qta_box">
|
android:layout_marginStart="4dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
@ -58,11 +60,10 @@
|
|||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/bottom_sheet_actions_delete_btn"
|
android:id="@+id/icon_new"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:background="@android:color/white"
|
|
||||||
android:paddingStart="6dp"
|
android:paddingStart="6dp"
|
||||||
android:paddingEnd="6dp"
|
android:paddingEnd="6dp"
|
||||||
android:src="@drawable/ic_baseline_new_24"
|
android:src="@drawable/ic_baseline_new_24"
|
||||||
@ -71,6 +72,7 @@
|
|||||||
android:visibility="@{row.isNew ? View.VISIBLE : View.GONE}" />
|
android:visibility="@{row.isNew ? View.VISIBLE : View.GONE}" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/cod_mart_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{row.codMart}"
|
android:text="@{row.codMart}"
|
||||||
@ -79,16 +81,18 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
tools:text="COD MART" />
|
tools:text="COD MART" />
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{row.barcode}"
|
android:text="@{row.barcode}"
|
||||||
android:textColor="@color/red_600"
|
android:textColor="@color/red_600"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
tools:text="0000000000000" />
|
android:layout_below="@id/cod_mart_label"
|
||||||
|
tools:text="0000000000000" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -105,33 +109,34 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:id="@+id/qta_box"
|
android:id="@+id/qta_box"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="12dp"
|
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_centerVertical="true">
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:background="@drawable/badge_round_corner"
|
||||||
|
android:backgroundTint="@color/colorPrimary"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="6dp">
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/qta_textview"
|
style="@style/TextAppearance.AppCompat.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/badge_round_corner"
|
|
||||||
android:backgroundTint="@color/colorPrimary"
|
android:backgroundTint="@color/colorPrimary"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingLeft="6dp"
|
android:text="@{row.codAlis}"
|
||||||
android:paddingTop="2dp"
|
|
||||||
android:paddingRight="6dp"
|
|
||||||
android:paddingBottom="2dp"
|
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/white"
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:text="@{row.qtaOrdReadable}"
|
tools:text="APULD" />
|
||||||
tools:text="280.45\nCONF" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
43
app/src/main/res/layout/dialog_select_doc_rows.xml
Normal file
43
app/src/main/res/layout/dialog_select_doc_rows.xml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
app:cardCornerRadius="16dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingVertical="16dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/title_text"
|
||||||
|
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:singleLine="false"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:text="@string/doc_interni_select_row_to_edit" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/item_list"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:listitem="@layout/dialog_select_doc_rows__item_model"
|
||||||
|
tools:itemCount="5"/>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
</layout>
|
||||||
150
app/src/main/res/layout/dialog_select_doc_rows__item_model.xml
Normal file
150
app/src/main/res/layout/dialog_select_doc_rows__item_model.xml
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.R" />
|
||||||
|
<import type="android.view.View" />
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="row"
|
||||||
|
type="it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel" />
|
||||||
|
</data>
|
||||||
|
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="4dp"
|
||||||
|
android:layout_marginVertical="2dp"
|
||||||
|
android:background="@drawable/bg_checked_layout"
|
||||||
|
android:onClick="@{() -> row.checked.toggle()}"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="8dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
app:backgroundTintResID="@{row.checked.get() ? R.color.bg_checked_layout : android.R.color.transparent}">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatRadioButton
|
||||||
|
android:id="@+id/checkbox"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:minWidth="0dp"
|
||||||
|
android:minHeight="0dp"
|
||||||
|
android:clickable="false"
|
||||||
|
app:checked="@{row.checked}" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_toStartOf="@id/qta_box"
|
||||||
|
android:layout_toEndOf="@id/checkbox"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/icon_new"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:paddingStart="6dp"
|
||||||
|
android:paddingEnd="6dp"
|
||||||
|
android:src="@drawable/ic_baseline_new_24"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:tint="@color/orange_600"
|
||||||
|
android:visibility="@{row.isNew ? View.VISIBLE : View.GONE}" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/cod_mart_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{row.codMart}"
|
||||||
|
android:textColor="@color/colorPrimary"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="COD MART" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{row.barcode}"
|
||||||
|
android:textColor="@color/red_600"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:layout_below="@id/cod_mart_label"
|
||||||
|
tools:text="0000000000000" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:text="@{row.descrizione}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:text="Descrizione lunga articolo" />
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/qta_box"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:background="@drawable/badge_round_corner"
|
||||||
|
android:backgroundTint="@color/colorPrimary"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="6dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/TextAppearance.AppCompat.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:backgroundTint="@color/colorPrimary"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(row.qtaOrd)}"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="280.45" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/TextAppearance.AppCompat.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@{row.untMisOrd}"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="CONF" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
</layout>
|
||||||
@ -72,8 +72,8 @@
|
|||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/causale"
|
||||||
style="@android:style/TextAppearance.Small"
|
style="@android:style/TextAppearance.Small"
|
||||||
android:alpha="0.6"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/badge1"
|
android:layout_below="@id/badge1"
|
||||||
@ -82,6 +82,22 @@
|
|||||||
android:layout_toStartOf="@id/zona"
|
android:layout_toStartOf="@id/zona"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
|
tools:text="Causale tal dei tali"
|
||||||
|
android:text="@{item.causale}"
|
||||||
|
android:visibility="@{UtilityString.isNullOrEmpty(item.causale) ? View.GONE : View.VISIBLE}"/>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@android:style/TextAppearance.Small"
|
||||||
|
android:alpha="0.6"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/causale"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:layout_marginEnd="4dp"
|
||||||
|
android:layout_toStartOf="@id/zona"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:singleLine="true"
|
||||||
android:text="@string/not_synchronized"
|
android:text="@string/not_synchronized"
|
||||||
app:reverse_visibility="@{item.syncronized}"/>
|
app:reverse_visibility="@{item.syncronized}"/>
|
||||||
|
|
||||||
@ -90,7 +106,7 @@
|
|||||||
style="@android:style/TextAppearance.Small"
|
style="@android:style/TextAppearance.Small"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/badge1"
|
android:layout_below="@id/causale"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_toStartOf="@id/zona"
|
android:layout_toStartOf="@id/zona"
|
||||||
|
|||||||
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.R" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
@ -55,6 +57,17 @@
|
|||||||
android:src="@drawable/ic_baseline_new_24"
|
android:src="@drawable/ic_baseline_new_24"
|
||||||
android:tint="@color/orange_600" />
|
android:tint="@color/orange_600" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/unavailable_product_icon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@android:color/white"
|
||||||
|
android:adjustViewBounds="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:visibility="@{articolo.invalid ? View.VISIBLE : View.GONE}"
|
||||||
|
android:src="@drawable/ic_error_white_24dp"
|
||||||
|
android:tint="@color/red_600" />
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
@ -95,6 +108,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/badge_round_corner"
|
android:background="@drawable/badge_round_corner"
|
||||||
android:backgroundTint="@{articolo.bgTint}"
|
android:backgroundTint="@{articolo.bgTint}"
|
||||||
|
android:visibility="@{articolo.invalid ? View.GONE : View.VISIBLE}"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingLeft="6dp"
|
android:paddingLeft="6dp"
|
||||||
android:paddingTop="2dp"
|
android:paddingTop="2dp"
|
||||||
|
|||||||
@ -213,7 +213,8 @@
|
|||||||
|
|
||||||
<string name="already_used_anonymous_barcode"><![CDATA[L\'etichetta scansionata è stata già utilizzata]]></string>
|
<string name="already_used_anonymous_barcode"><![CDATA[L\'etichetta scansionata è stata già utilizzata]]></string>
|
||||||
<string name="no_result_from_barcode">Il barcode scansionato non ha fornito alcun risultato</string>
|
<string name="no_result_from_barcode">Il barcode scansionato non ha fornito alcun risultato</string>
|
||||||
<string name="multiple_results_from_barcode">Il barcode scansionato ha fornito multipli risultati</string>
|
<string name="no_result_from_cod_mart">Il codice articolo non ha fornito alcun risultato</string>
|
||||||
|
<string name="multiple_results_from_barcode">Il barcode scansionato ha fornito molteplici risultati</string>
|
||||||
<string name="no_doc_type_selected">Nessun tipo documento selezionato</string>
|
<string name="no_doc_type_selected">Nessun tipo documento selezionato</string>
|
||||||
|
|
||||||
<string name="filtered_arts_in_list">Filtro articoli applicato</string>
|
<string name="filtered_arts_in_list">Filtro articoli applicato</string>
|
||||||
@ -445,4 +446,8 @@
|
|||||||
<string name="max_orderable_qty">Qta massima ordinabile</string>
|
<string name="max_orderable_qty">Qta massima ordinabile</string>
|
||||||
<string name="max_qty_exceeded">Quantità massima superata</string>
|
<string name="max_qty_exceeded">Quantità massima superata</string>
|
||||||
<string name="confirm_orderable_qty_exceeded"><![CDATA[La quantità massima consentita per questo articolo è stata superata! <br/> Vuoi cotinuare comunque con il salvataggio?]]>\</string>
|
<string name="confirm_orderable_qty_exceeded"><![CDATA[La quantità massima consentita per questo articolo è stata superata! <br/> Vuoi cotinuare comunque con il salvataggio?]]>\</string>
|
||||||
|
<string name="confirm_order_unlisted_item"><![CDATA[L\'articolo selezionato non è presente nel piano logistico!<br>Vuoi provare a cercarlo comunque nel sistema?]]></string>
|
||||||
|
<string name="invalid_product_ordered">L\'ordine presenta uno o più articoli non validi per la lista selezionata!</string>
|
||||||
|
<string name="confirm_export_invalid_product"><![CDATA[Uno o più articoli ordinati non sono presenti nella lista selezionata! <br>Sei sicuro di voler continuare?]]></string>
|
||||||
|
<string name="expired_list_session"><![CDATA[La lista di prodotti è stata caricata troppo tempo fa!]]></string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -26,12 +26,10 @@
|
|||||||
<color name="empty_view_bg_gray">#f5f5f5</color>
|
<color name="empty_view_bg_gray">#f5f5f5</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="bg_checked_layout">#E8F0FE</color>
|
<color name="bg_checked_layout">#E8F0FE</color>
|
||||||
<color name="bg_checked_layout_dark">#C9D5F0</color>
|
<color name="bg_checked_layout_dark">#C9D5F0</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="colorPrimaryA10">#1A1A73E8</color>
|
<color name="colorPrimaryA10">#1A1A73E8</color>
|
||||||
<color name="colorPrimaryA20">#331A73E8</color>
|
<color name="colorPrimaryA20">#331A73E8</color>
|
||||||
<color name="colorPrimaryA30">#4D1A73E8</color>
|
<color name="colorPrimaryA30">#4D1A73E8</color>
|
||||||
@ -85,7 +83,6 @@
|
|||||||
<color name="indigo_700">#303F9F</color>
|
<color name="indigo_700">#303F9F</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="light_blue_100">#B3E5FC</color>
|
<color name="light_blue_100">#B3E5FC</color>
|
||||||
<color name="light_blue_200">#81D4FA</color>
|
<color name="light_blue_200">#81D4FA</color>
|
||||||
<color name="light_blue_300">#4fc3f7</color>
|
<color name="light_blue_300">#4fc3f7</color>
|
||||||
@ -102,6 +99,7 @@
|
|||||||
<color name="orange_800">#EF6C00</color>
|
<color name="orange_800">#EF6C00</color>
|
||||||
|
|
||||||
|
|
||||||
|
<color name="red_100">#EFB4B4</color>
|
||||||
<color name="red_200">#ef9a9a</color>
|
<color name="red_200">#ef9a9a</color>
|
||||||
<color name="red_300">#e57373</color>
|
<color name="red_300">#e57373</color>
|
||||||
<color name="red_400">#EF5350</color>
|
<color name="red_400">#EF5350</color>
|
||||||
|
|||||||
@ -217,6 +217,7 @@
|
|||||||
|
|
||||||
<string name="already_used_anonymous_barcode">The scanned label has already been used</string>
|
<string name="already_used_anonymous_barcode">The scanned label has already been used</string>
|
||||||
<string name="no_result_from_barcode">The scanned barcode did not produce any results</string>
|
<string name="no_result_from_barcode">The scanned barcode did not produce any results</string>
|
||||||
|
<string name="no_result_from_cod_mart">The item code did not produce any results</string>
|
||||||
<string name="please_open_lu">Before continuing open new LU</string>
|
<string name="please_open_lu">Before continuing open new LU</string>
|
||||||
<string name="multiple_results_from_barcode">The scanned barcode produced multiple results</string>
|
<string name="multiple_results_from_barcode">The scanned barcode produced multiple results</string>
|
||||||
|
|
||||||
@ -452,4 +453,8 @@
|
|||||||
<string name="max_orderable_qty">Max orderable qty</string>
|
<string name="max_orderable_qty">Max orderable qty</string>
|
||||||
<string name="max_qty_exceeded">Max quantity exceeded</string>
|
<string name="max_qty_exceeded">Max quantity exceeded</string>
|
||||||
<string name="confirm_orderable_qty_exceeded"><![CDATA[Max permitted quantity exceeded for the current product!<br/> Do you wish to continue?]]></string>
|
<string name="confirm_orderable_qty_exceeded"><![CDATA[Max permitted quantity exceeded for the current product!<br/> Do you wish to continue?]]></string>
|
||||||
|
<string name="confirm_order_unlisted_item"><![CDATA[The selected product was not found in the current logistics plan! <br> Do you want to search for it regardless?]]></string>
|
||||||
|
<string name="invalid_product_ordered">One or more ordered products are not available in the selected list!</string>
|
||||||
|
<string name="confirm_export_invalid_product"><![CDATA[One or more ordered products are not available in the selected list! <br> Do you wish to continue?]]></string>
|
||||||
|
<string name="expired_list_session"><![CDATA[The product list was loaded too much time ago!]]></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user