Finish v1.21.1(253)
This commit is contained in:
commit
d570ab7e3d
@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 250
|
def appVersionCode = 253
|
||||||
def appVersionName = '1.20.3'
|
def appVersionName = '1.21.1'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|||||||
@ -11,8 +11,8 @@ import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePicking
|
|||||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
|
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairComponent;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairModule;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule;
|
||||||
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
|
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
|
||||||
@ -105,7 +105,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
|
|||||||
ProdVersamentoMaterialeModule.class,
|
ProdVersamentoMaterialeModule.class,
|
||||||
DialogChooseArtsFromListaArtsModule.class,
|
DialogChooseArtsFromListaArtsModule.class,
|
||||||
DocInterniModule.class,
|
DocInterniModule.class,
|
||||||
DialogSelectMgrpDtipPairModule.class,
|
DialogSelectDocInfoModule.class,
|
||||||
DocInterniEditFormModule.class
|
DocInterniEditFormModule.class
|
||||||
})
|
})
|
||||||
public interface MainApplicationComponent {
|
public interface MainApplicationComponent {
|
||||||
@ -142,7 +142,7 @@ public interface MainApplicationComponent {
|
|||||||
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
|
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
|
||||||
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent();
|
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent();
|
||||||
DocInterniComponent.Factory docInterniComponent();
|
DocInterniComponent.Factory docInterniComponent();
|
||||||
DialogSelectMgrpDtipPairComponent.Factory dialogSelectMgrpDtipPairComponent();
|
DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent();
|
||||||
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
|
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
|
||||||
|
|
||||||
void inject(MainApplication mainApplication);
|
void inject(MainApplication mainApplication);
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||||
|
|
||||||
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 4, exportSchema = false)
|
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 5, exportSchema = false)
|
||||||
@TypeConverters({
|
@TypeConverters({
|
||||||
DateConverter.class
|
DateConverter.class
|
||||||
})
|
})
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import androidx.room.Insert;
|
|||||||
import androidx.room.Query;
|
import androidx.room.Query;
|
||||||
import androidx.room.Update;
|
import androidx.room.Update;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||||
@ -28,8 +29,14 @@ public interface MtbColtDao {
|
|||||||
@Delete
|
@Delete
|
||||||
void delete(SqlMtbColt mtbColt);
|
void delete(SqlMtbColt mtbColt);
|
||||||
|
|
||||||
@Query("SELECT mtb_colt.*, count(mtb_colr.id) as countArticoli from mtb_colt left outer join mtb_colr on (mtb_colr.id_collo = mtb_colt.id) where cod_dtip_provv = :codDtip AND cod_mgrp = :codMgrp and cod_dtip is null group by mtb_colt.id")
|
@Query("SELECT mtb_colt.*, count(mtb_colr.id) as countArticoli from mtb_colt left outer join mtb_colr on (mtb_colr.id_collo = mtb_colt.id) where" +
|
||||||
List<DocInternoWrapper> getLocalDocumentsByCodDtipAndCodMgrp(String codDtip, String codMgrp);
|
" cod_dtip_provv = :codDtip " +
|
||||||
|
" AND ( cod_anag = :codAnag OR (cod_anag is null and :codAnag is null)) " +
|
||||||
|
" AND ( cod_vdes = :codVdes OR (cod_vdes is null and :codVdes 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 cod_dtip is null group by mtb_colt.id")
|
||||||
|
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();
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import androidx.room.ForeignKey;
|
|||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
import androidx.room.PrimaryKey;
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
@ -54,6 +56,18 @@ public class ArticoloGriglia {
|
|||||||
@ColumnInfo(name = "qta_min_ordinabile")
|
@ColumnInfo(name = "qta_min_ordinabile")
|
||||||
private float qtaMinOrdinabile;
|
private float qtaMinOrdinabile;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "gg_scadenza")
|
||||||
|
private int ggScadenza;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "giacenza")
|
||||||
|
private float giacenza;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "qta_prevista_vendita")
|
||||||
|
private float qtaPrevistaVendita;
|
||||||
|
|
||||||
|
@ColumnInfo(name = "qta_proposta")
|
||||||
|
private float qtaProposta;
|
||||||
|
|
||||||
@ColumnInfo(name = "id_griglia")
|
@ColumnInfo(name = "id_griglia")
|
||||||
private int idGriglia;
|
private int idGriglia;
|
||||||
|
|
||||||
@ -145,6 +159,38 @@ public class ArticoloGriglia {
|
|||||||
this.idGriglia = idGriglia;
|
this.idGriglia = idGriglia;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getGgScadenza() {
|
||||||
|
return ggScadenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGgScadenza(int ggScadenza) {
|
||||||
|
this.ggScadenza = ggScadenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGiacenza() {
|
||||||
|
return giacenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGiacenza(float giacenza) {
|
||||||
|
this.giacenza = giacenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getQtaPrevistaVendita() {
|
||||||
|
return qtaPrevistaVendita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
|
||||||
|
this.qtaPrevistaVendita = qtaPrevistaVendita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getQtaProposta() {
|
||||||
|
return qtaProposta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtaProposta(float qtaProposta) {
|
||||||
|
this.qtaProposta = qtaProposta;
|
||||||
|
}
|
||||||
|
|
||||||
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
|
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
|
||||||
ArticoloOrdine articolo = new ArticoloOrdine();
|
ArticoloOrdine articolo = new ArticoloOrdine();
|
||||||
|
|
||||||
@ -160,6 +206,11 @@ public class ArticoloGriglia {
|
|||||||
articolo.setUntMis(this.getUntMis());
|
articolo.setUntMis(this.getUntMis());
|
||||||
articolo.setDescrizione(this.getDescrizione());
|
articolo.setDescrizione(this.getDescrizione());
|
||||||
articolo.setDataIns(UtilityDate.getDateInstance());
|
articolo.setDataIns(UtilityDate.getDateInstance());
|
||||||
|
articolo.setGgScadenza(this.getGgScadenza());
|
||||||
|
articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza()));
|
||||||
|
articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita()));
|
||||||
|
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
|
||||||
|
|
||||||
articolo.setQtaOrd(0);
|
articolo.setQtaOrd(0);
|
||||||
|
|
||||||
return articolo;
|
return articolo;
|
||||||
|
|||||||
@ -3,16 +3,19 @@ package it.integry.integrywmsnative.core.data_store.db.entity;
|
|||||||
import androidx.room.ColumnInfo;
|
import androidx.room.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
import androidx.room.ForeignKey;
|
import androidx.room.ForeignKey;
|
||||||
|
import androidx.room.Ignore;
|
||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
import androidx.room.PrimaryKey;
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
tableName = "articoli_ordine",
|
tableName = "articoli_ordine",
|
||||||
indices = {
|
indices = {
|
||||||
@Index(value = "id_ordine"),
|
@Index(value = "id_ordine"),
|
||||||
@Index(value = {"id_ordine","cod_mart"}, unique = true)
|
@Index(value = {"id_ordine", "cod_mart"}, unique = true)
|
||||||
},
|
},
|
||||||
foreignKeys = {
|
foreignKeys = {
|
||||||
@ForeignKey(
|
@ForeignKey(
|
||||||
@ -22,7 +25,7 @@ import java.util.Date;
|
|||||||
onDelete = ForeignKey.CASCADE
|
onDelete = ForeignKey.CASCADE
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ArticoloOrdine {
|
public class ArticoloOrdine {
|
||||||
@PrimaryKey(autoGenerate = true)
|
@PrimaryKey(autoGenerate = true)
|
||||||
@ColumnInfo(name = "articolo_ordine_id")
|
@ColumnInfo(name = "articolo_ordine_id")
|
||||||
@ -64,6 +67,20 @@ public class ArticoloOrdine {
|
|||||||
@ColumnInfo(name = "data_ins")
|
@ColumnInfo(name = "data_ins")
|
||||||
private Date dataIns;
|
private Date dataIns;
|
||||||
|
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private int ggScadenza = 0;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private BigDecimal giacenza = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private BigDecimal qtaPrevistaVendita = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private BigDecimal qtaProposta = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
|
||||||
public int getArticoloOrdineId() {
|
public int getArticoloOrdineId() {
|
||||||
return articoloOrdineId;
|
return articoloOrdineId;
|
||||||
}
|
}
|
||||||
@ -167,4 +184,51 @@ public class ArticoloOrdine {
|
|||||||
public void setDataIns(Date dataIns) {
|
public void setDataIns(Date dataIns) {
|
||||||
this.dataIns = dataIns;
|
this.dataIns = dataIns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getGgScadenza() {
|
||||||
|
return ggScadenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine setGgScadenza(int ggScadenza) {
|
||||||
|
this.ggScadenza = ggScadenza;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getGiacenza() {
|
||||||
|
return giacenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine setGiacenza(BigDecimal giacenza) {
|
||||||
|
this.giacenza = giacenza;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaPrevistaVendita() {
|
||||||
|
return qtaPrevistaVendita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine setQtaPrevistaVendita(BigDecimal qtaPrevistaVendita) {
|
||||||
|
this.qtaPrevistaVendita = qtaPrevistaVendita;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaProposta() {
|
||||||
|
return qtaProposta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine setQtaProposta(BigDecimal qtaProposta) {
|
||||||
|
this.qtaProposta = qtaProposta;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaCnfPrevistaVendita(){
|
||||||
|
return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaCnfProposta(){
|
||||||
|
return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
|
||||||
|
}
|
||||||
|
public BigDecimal getQtaCnfGiacenza(){
|
||||||
|
return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.core.data_store.db.repository;
|
package it.integry.integrywmsnative.core.data_store.db.repository;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||||
@ -20,7 +21,7 @@ public interface MtbColtRepository {
|
|||||||
|
|
||||||
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
|
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
|
||||||
|
|
||||||
void getLocalDocumentsByCodDtipAndCodMgrp(String codDtip, String codMgrp, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError);
|
void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError);
|
||||||
|
|
||||||
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
|
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
|
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -65,10 +66,10 @@ public class SqlMtbColtDataSource extends Repository implements MtbColtRepositor
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getLocalDocumentsByCodDtipAndCodMgrp(String codDtip, String codMgrp, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
|
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
|
||||||
Runnable query = () -> {
|
Runnable query = () -> {
|
||||||
try {
|
try {
|
||||||
onSuccess.run(mMtbColtDao.getLocalDocumentsByCodDtipAndCodMgrp(codDtip,codMgrp));
|
onSuccess.run(mMtbColtDao.getLocalDocumentsByCodDtip(codDtip,codAnag,codVdes,dataDoc,numDoc));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
onError.run(e);
|
onError.run(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,34 +1,38 @@
|
|||||||
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
||||||
|
|
||||||
|
import androidx.room.ColumnInfo;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||||
|
|
||||||
public class ArticoloDTO {
|
public class ArticoloDTO {
|
||||||
|
|
||||||
private String codMart;
|
private String codMart;
|
||||||
|
|
||||||
|
|
||||||
private String descrizione;
|
private String descrizione;
|
||||||
|
|
||||||
|
|
||||||
private String untMis;
|
private String untMis;
|
||||||
|
|
||||||
|
|
||||||
private float qtaCnf;
|
|
||||||
|
|
||||||
|
|
||||||
private String barcode;
|
private String barcode;
|
||||||
|
|
||||||
|
|
||||||
private float merceDaRic;
|
|
||||||
|
|
||||||
|
|
||||||
private float mediaSett;
|
|
||||||
|
|
||||||
|
|
||||||
private String flagQtaMultipla;
|
private String flagQtaMultipla;
|
||||||
|
|
||||||
|
private float qtaCnf;
|
||||||
|
|
||||||
|
private float merceDaRic;
|
||||||
|
|
||||||
|
private float mediaSett;
|
||||||
|
|
||||||
private float qtaMinOrdinabile;
|
private float qtaMinOrdinabile;
|
||||||
|
|
||||||
|
private int ggScadenza;
|
||||||
|
|
||||||
|
private float giacenza;
|
||||||
|
|
||||||
|
private float qtaPrevistaVendita;
|
||||||
|
|
||||||
|
private float qtaProposta;
|
||||||
|
|
||||||
|
|
||||||
public String getCodMart() {
|
public String getCodMart() {
|
||||||
return codMart;
|
return codMart;
|
||||||
}
|
}
|
||||||
@ -101,8 +105,47 @@ public class ArticoloDTO {
|
|||||||
this.qtaMinOrdinabile = qtaMinOrdinabile;
|
this.qtaMinOrdinabile = qtaMinOrdinabile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getBarcode() {
|
||||||
|
return barcode;
|
||||||
|
}
|
||||||
|
|
||||||
public ArticoloGriglia toArticoloGriglia(){
|
public void setBarcode(String barcode) {
|
||||||
|
this.barcode = barcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGgScadenza() {
|
||||||
|
return ggScadenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGgScadenza(int ggScadenza) {
|
||||||
|
this.ggScadenza = ggScadenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGiacenza() {
|
||||||
|
return giacenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGiacenza(float giacenza) {
|
||||||
|
this.giacenza = giacenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getQtaPrevistaVendita() {
|
||||||
|
return qtaPrevistaVendita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
|
||||||
|
this.qtaPrevistaVendita = qtaPrevistaVendita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getQtaProposta() {
|
||||||
|
return qtaProposta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtaProposta(float qtaProposta) {
|
||||||
|
this.qtaProposta = qtaProposta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloGriglia toArticoloGriglia() {
|
||||||
ArticoloGriglia result = new ArticoloGriglia();
|
ArticoloGriglia result = new ArticoloGriglia();
|
||||||
result.setBarCode(this.getBarCode());
|
result.setBarCode(this.getBarCode());
|
||||||
result.setDescrizione(this.getDescrizione());
|
result.setDescrizione(this.getDescrizione());
|
||||||
@ -113,6 +156,10 @@ public class ArticoloDTO {
|
|||||||
result.setMediaSett(this.getMediaSett());
|
result.setMediaSett(this.getMediaSett());
|
||||||
result.setFlagQtaMultipla(this.getFlagQtaMultipla());
|
result.setFlagQtaMultipla(this.getFlagQtaMultipla());
|
||||||
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
|
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
|
||||||
|
result.setGgScadenza(this.ggScadenza);
|
||||||
|
result.setGiacenza(this.giacenza);
|
||||||
|
result.setQtaPrevistaVendita(this.qtaPrevistaVendita);
|
||||||
|
result.setQtaProposta(this.qtaProposta);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import androidx.databinding.PropertyChangeRegistry;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
|
||||||
public class BindableBigDecimal implements Observable {
|
public class BindableBigDecimal implements Observable {
|
||||||
|
|
||||||
BigDecimal mValue;
|
BigDecimal mValue;
|
||||||
@ -102,9 +104,24 @@ public class BindableBigDecimal implements Observable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void set(BigDecimal value, boolean forceRefresh) {
|
public void set(BigDecimal value, boolean forceRefresh) {
|
||||||
if (!mValue.equals(value) || forceRefresh) {
|
if ((mValue == null) || !mValue.equals(value) || forceRefresh) {
|
||||||
this.mValue = value;
|
this.mValue = value;
|
||||||
notifyChange();
|
notifyChange();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void registerListener(BindableBigDecimal bindableBigDecimal, RunnableArgs<BigDecimal> onValueChanged) {
|
||||||
|
bindableBigDecimal.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||||
|
if(onValueChanged != null) onValueChanged.run(bindableBigDecimal.get());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void resetListeners(BindableBigDecimal bindableBigDecimal){
|
||||||
|
BigDecimal oldValue = bindableBigDecimal.get();
|
||||||
|
bindableBigDecimal = new BindableBigDecimal();
|
||||||
|
bindableBigDecimal.set(oldValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package it.integry.integrywmsnative.core.di;
|
package it.integry.integrywmsnative.core.di;
|
||||||
|
|
||||||
import androidx.databinding.BaseObservable;
|
import androidx.databinding.BaseObservable;
|
||||||
|
import androidx.databinding.Observable;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
|
||||||
public class BindableInteger extends BaseObservable {
|
public class BindableInteger extends BaseObservable {
|
||||||
Integer mValue;
|
Integer mValue;
|
||||||
@ -34,4 +37,19 @@ public class BindableInteger extends BaseObservable {
|
|||||||
return mValue == null;
|
return mValue == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void registerListener(BindableInteger bindableInteger, RunnableArgs<Integer> onValueChanged) {
|
||||||
|
bindableInteger.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||||
|
if(onValueChanged != null) onValueChanged.run(bindableInteger.get());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void resetListeners(BindableInteger bindableInteger){
|
||||||
|
Integer oldValue = bindableInteger.get();
|
||||||
|
bindableInteger = new BindableInteger();
|
||||||
|
bindableInteger.set(oldValue);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,7 +52,7 @@ public class Converters {
|
|||||||
|
|
||||||
@BindingConversion
|
@BindingConversion
|
||||||
public static String convertBindableToString(BindableString bindableString) {
|
public static String convertBindableToString(BindableString bindableString) {
|
||||||
if(bindableString != null) return bindableString.get();
|
if (bindableString != null) return bindableString.get();
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,8 @@ public class Converters {
|
|||||||
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
if(bindableInteger != null) bindableInteger.set(Integer.parseInt(s.toString()));
|
if (bindableInteger != null)
|
||||||
|
bindableInteger.set(Integer.parseInt(s.toString()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
|
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
|
||||||
@ -98,7 +99,7 @@ public class Converters {
|
|||||||
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
if(observableField != null) observableField.set(s.toString());
|
if (observableField != null) observableField.set(s.toString());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
|
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
|
||||||
@ -210,7 +211,8 @@ public class Converters {
|
|||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
BigDecimal value = null;
|
BigDecimal value = null;
|
||||||
if(!UtilityString.isNullOrEmpty(s.toString())) value = new BigDecimal(s.toString());
|
if (!UtilityString.isNullOrEmpty(s.toString()))
|
||||||
|
value = new BigDecimal(s.toString());
|
||||||
observableBigDecimal.set(value);
|
observableBigDecimal.set(value);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -220,11 +222,65 @@ public class Converters {
|
|||||||
BigDecimal newValue = observableBigDecimal.get();
|
BigDecimal newValue = observableBigDecimal.get();
|
||||||
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
|
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
|
||||||
|
|
||||||
if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||||
view.setText(UtilityNumber.decimalToString(newValue));
|
view.setText(UtilityNumber.decimalToString(newValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@BindingAdapter("binding")
|
||||||
|
public static void bindTextInputEditTextBigDecimal(TextInputEditText view, final BindableBigDecimal bindableBigDecimal) {
|
||||||
|
Pair<BindableBigDecimal, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||||
|
if (pair == null || pair.first != bindableBigDecimal) {
|
||||||
|
if (pair != null) {
|
||||||
|
view.removeTextChangedListener(pair.second);
|
||||||
|
}
|
||||||
|
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
BigDecimal value = null;
|
||||||
|
if (!UtilityString.isNullOrEmpty(s.toString()))
|
||||||
|
value = new BigDecimal(s.toString());
|
||||||
|
bindableBigDecimal.set(value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
view.setTag(R.id.bound_observable, new Pair<>(bindableBigDecimal, watcher));
|
||||||
|
view.addTextChangedListener(watcher);
|
||||||
|
}
|
||||||
|
BigDecimal newValue = bindableBigDecimal.get();
|
||||||
|
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
|
||||||
|
|
||||||
|
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||||
|
view.setText(UtilityNumber.decimalToString(newValue));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@BindingAdapter("binding")
|
||||||
|
public static void bindTextInputEditTextInteger(TextInputEditText view, final BindableInteger bindableInteger) {
|
||||||
|
Pair<BindableInteger, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||||
|
if (pair == null || pair.first != bindableInteger) {
|
||||||
|
if (pair != null) {
|
||||||
|
view.removeTextChangedListener(pair.second);
|
||||||
|
}
|
||||||
|
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
Integer value = null;
|
||||||
|
if (!UtilityString.isNullOrEmpty(s.toString()))
|
||||||
|
value = Integer.valueOf(s.toString());
|
||||||
|
bindableInteger.set(value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
|
||||||
|
view.addTextChangedListener(watcher);
|
||||||
|
}
|
||||||
|
Integer newValue = bindableInteger.get();
|
||||||
|
Integer viewValue = view.getText().toString().trim().length() > 0 ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
|
||||||
|
|
||||||
|
if (!(viewValue.compareTo(newValue) == 0)) {
|
||||||
|
view.setText(newValue.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@BindingAdapter("binding")
|
@BindingAdapter("binding")
|
||||||
public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField<String> observableString) {
|
public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField<String> observableString) {
|
||||||
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||||
@ -244,7 +300,7 @@ public class Converters {
|
|||||||
String newValue = observableString.get();
|
String newValue = observableString.get();
|
||||||
String viewValue = view.getText().toString();
|
String viewValue = view.getText().toString();
|
||||||
|
|
||||||
if(!viewValue.equalsIgnoreCase(newValue)) {
|
if (!viewValue.equalsIgnoreCase(newValue)) {
|
||||||
view.setText(newValue);
|
view.setText(newValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -268,7 +324,7 @@ public class Converters {
|
|||||||
// Get Current Date
|
// Get Current Date
|
||||||
Calendar c = UtilityDate.getCalendarInstance();
|
Calendar c = UtilityDate.getCalendarInstance();
|
||||||
|
|
||||||
if(observableDate.get() != null) {
|
if (observableDate.get() != null) {
|
||||||
c.setTime(observableDate.get());
|
c.setTime(observableDate.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +336,7 @@ public class Converters {
|
|||||||
(cView, year, month, day) -> {
|
(cView, year, month, day) -> {
|
||||||
Date resultDate = new GregorianCalendar(year, month, day).getTime();
|
Date resultDate = new GregorianCalendar(year, month, day).getTime();
|
||||||
|
|
||||||
if(parentFragment != null && warningOnOldDates && resultDate.before(new Date())) {
|
if (parentFragment != null && warningOnOldDates && resultDate.before(new Date())) {
|
||||||
DialogSimpleMessageView
|
DialogSimpleMessageView
|
||||||
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
|
||||||
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||||
@ -299,8 +355,8 @@ public class Converters {
|
|||||||
|
|
||||||
//Adding click-listener
|
//Adding click-listener
|
||||||
view.setOnClickListener(onClick::run);
|
view.setOnClickListener(onClick::run);
|
||||||
if(view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
|
if (view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
|
||||||
((FrameLayout)view.getParent()).setOnClickListener(onClick::run);
|
((FrameLayout) view.getParent()).setOnClickListener(onClick::run);
|
||||||
((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
|
((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,7 @@ public class MtbCols extends EntityBase {
|
|||||||
type = "mtb_cols";
|
type = "mtb_cols";
|
||||||
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
||||||
setModificatoDa(SettingsManager.i().getUser().getFullname());
|
setModificatoDa(SettingsManager.i().getUser().getFullname());
|
||||||
setDataMove(UtilityDate.getDateInstance());
|
//setDataMove(UtilityDate.getDateInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDataCollo() {
|
public String getDataCollo() {
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.core.settings;
|
package it.integry.integrywmsnative.core.settings;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||||
@ -33,6 +34,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagForceAllToColli;
|
private boolean flagForceAllToColli;
|
||||||
private boolean flagSpedizioneEnableManualPick;
|
private boolean flagSpedizioneEnableManualPick;
|
||||||
private boolean flagSpedizioneCanSelectMultipleOrders;
|
private boolean flagSpedizioneCanSelectMultipleOrders;
|
||||||
|
private List<String> notePerditaDocInterni = new ArrayList<>();
|
||||||
private boolean flagSpedizioneUseQtaOrd;
|
private boolean flagSpedizioneUseQtaOrd;
|
||||||
private String produzioneDefaultCodAnag;
|
private String produzioneDefaultCodAnag;
|
||||||
private String reportNameSpedizionChiudiOrdine;
|
private String reportNameSpedizionChiudiOrdine;
|
||||||
@ -271,4 +273,13 @@ public class DBSettingsModel {
|
|||||||
this.onNumCnfInputChanged = onNumCnfInputChanged;
|
this.onNumCnfInputChanged = onNumCnfInputChanged;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getNotePerditaDocInterni() {
|
||||||
|
return notePerditaDocInterni;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setNotePerditaDocInterni(List<String> notePerditaDocInterni) {
|
||||||
|
this.notePerditaDocInterni = notePerditaDocInterni;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import com.google.firebase.perf.metrics.Trace;
|
|||||||
|
|
||||||
import java.net.SocketTimeoutException;
|
import java.net.SocketTimeoutException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
@ -265,6 +266,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("SETUP")
|
.setSection("SETUP")
|
||||||
.setKeySection("ON_NUM_CNF_INPUT_CHANGED"));
|
.setKeySection("ON_NUM_CNF_INPUT_CHANGED"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PVM")
|
||||||
|
.setSection("DOC_INTERNI")
|
||||||
|
.setKeySection("NOTE_PERDITA"));
|
||||||
|
|
||||||
|
|
||||||
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
||||||
@ -289,6 +294,10 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
|
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
|
||||||
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
|
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
|
||||||
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||||
|
String notePerdita = getValueFromList(list,"DOC_INTERNI","NOTE_PERDITA",String.class);
|
||||||
|
if (notePerdita != null){
|
||||||
|
dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|")));
|
||||||
|
}
|
||||||
|
|
||||||
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
|
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
|
||||||
if (onNumCnfInputChanged != null) {
|
if (onNumCnfInputChanged != null) {
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.contab_doc_interni;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.Html;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -26,17 +27,15 @@ import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper
|
|||||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding;
|
import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairView;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairViewModel;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocAndGruppiArtDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
|
|
||||||
import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListAdapter;
|
|
||||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||||
|
|
||||||
public class DocInterniFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, DocInterniViewModel.Listener {
|
public class DocInterniFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, DocInterniViewModel.Listener {
|
||||||
@ -47,7 +46,7 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
private final ObservableArrayList<DocInterniListModel> mDocInterniMutableData = new ObservableArrayList<>();
|
private final ObservableArrayList<DocInterniListModel> mDocInterniMutableData = new ObservableArrayList<>();
|
||||||
private ElevatedToolbar mToolbar;
|
private ElevatedToolbar mToolbar;
|
||||||
private FragmentDocInterniBinding mBinding;
|
private FragmentDocInterniBinding mBinding;
|
||||||
private TipiDocAndGruppiArtDTO mTipiDocAndGruppiArtDTO;
|
private DocInterniSetupDTO mDocInterniSetupDTO;
|
||||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||||
private boolean dialogInitialized = false;
|
private boolean dialogInitialized = false;
|
||||||
|
|
||||||
@ -82,6 +81,8 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
mBinding.setLifecycleOwner(this);
|
mBinding.setLifecycleOwner(this);
|
||||||
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();
|
||||||
@ -106,17 +107,41 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onGruppiArtAndTipiDocFetch(TipiDocAndGruppiArtDTO tipiDocAndGruppiArtDTO) {
|
public void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO) {
|
||||||
this.mTipiDocAndGruppiArtDTO = tipiDocAndGruppiArtDTO;
|
this.mDocInterniSetupDTO = docInterniSetupDTO;
|
||||||
this.dialogInitialized = true;
|
this.dialogInitialized = true;
|
||||||
this.selectCodMgrpAndCodDtip();
|
this.selectDocInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDocDetailsChanged(DialogSelectMgrpDtipPairViewModel selection) {
|
public void onDocDetailsChanged(DialogSelectDocInfoViewModel selection) {
|
||||||
|
if(selection.isInputValid()){
|
||||||
|
mViewModel.setSelectedDocDetails(selection);
|
||||||
|
mBinding.mainFab.setVisibility(View.VISIBLE);
|
||||||
|
}else{
|
||||||
|
mBinding.mainFab.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selection.requiresFornitore()){
|
||||||
|
mBinding.codAnagContainer.setVisibility(View.VISIBLE);
|
||||||
|
}else{
|
||||||
|
mBinding.codAnagContainer.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (selection.getSelectedGruppoArt() != null){
|
||||||
|
mBinding.mtbGrpContainer.setVisibility(View.VISIBLE);
|
||||||
|
}else{
|
||||||
|
mBinding.mtbGrpContainer.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selection.requiresDocData()){
|
||||||
|
mBinding.docContainer.setVisibility(View.VISIBLE);
|
||||||
|
mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))));
|
||||||
|
}else{
|
||||||
|
mBinding.docContainer.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
this.mViewModel.setSelectedDocDetails(selection);
|
|
||||||
this.mBinding.mainFab.setVisibility(View.VISIBLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -129,12 +154,16 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
|||||||
this.mOnPreDestroyList.add(onPreDestroy);
|
this.mOnPreDestroyList.add(onPreDestroy);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectCodMgrpAndCodDtip() {
|
public void selectDocInfo() {
|
||||||
if (this.dialogInitialized){
|
if (this.dialogInitialized){
|
||||||
DialogSelectMgrpDtipPairView.newInstance(
|
DialogSelectDocInfoView.newInstance(
|
||||||
mTipiDocAndGruppiArtDTO,
|
mDocInterniSetupDTO,
|
||||||
this.mViewModel.dtbTipi.getValue(),
|
this.mViewModel.dtbTipi.getValue(),
|
||||||
this.mViewModel.mtbGrup.getValue(),
|
this.mViewModel.mtbGrup.getValue(),
|
||||||
|
this.mViewModel.fornitore.getValue(),
|
||||||
|
this.mViewModel.dataDoc.getValue(),
|
||||||
|
this.mViewModel.numDoc.getValue(),
|
||||||
|
this.mViewModel.note.getValue(),
|
||||||
this::onDocDetailsChanged
|
this::onDocDetailsChanged
|
||||||
).show(requireActivity().getSupportFragmentManager(), "tag");
|
).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.contab_doc_interni;
|
|||||||
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -14,29 +16,33 @@ import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper
|
|||||||
import it.integry.integrywmsnative.core.di.BindableInteger;
|
import it.integry.integrywmsnative.core.di.BindableInteger;
|
||||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairViewModel;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocAndGruppiArtDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
|
||||||
|
|
||||||
public class DocInterniViewModel {
|
public class DocInterniViewModel {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
MtbColtRepository documentRepository;
|
||||||
private Listener mListener;
|
private Listener mListener;
|
||||||
private final DocInterniRESTConsumer mDocInterniRESTConsumer;
|
private final DocInterniRESTConsumer mDocInterniRESTConsumer;
|
||||||
private boolean productsFetched = true;
|
private boolean productsFetched = true;
|
||||||
private boolean docsFetched = true;
|
private boolean docsFetched = true;
|
||||||
private int nextNumCollo = 0;
|
private int nextNumCollo = 0;
|
||||||
private GrigliaAcquistiDTO productsList;
|
private GrigliaAcquistiDTO productsList;
|
||||||
|
private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
|
||||||
|
|
||||||
public final MutableLiveData<TipiDocDTO> dtbTipi = new MutableLiveData<>();
|
public final MutableLiveData<TipiDocDTO> dtbTipi = new MutableLiveData<>();
|
||||||
public final MutableLiveData<GruppiArticoloDTO> mtbGrup = new MutableLiveData<>();
|
public final MutableLiveData<GruppiArticoloDTO> mtbGrup = new MutableLiveData<>();
|
||||||
private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
|
public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
|
||||||
|
public final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
|
||||||
|
public final MutableLiveData<String> numDoc = new MutableLiveData<>();
|
||||||
|
public final MutableLiveData<String> note = new MutableLiveData<>();
|
||||||
public final BindableInteger artsSize = new BindableInteger(0);
|
public final BindableInteger artsSize = new BindableInteger(0);
|
||||||
@Inject
|
|
||||||
MtbColtRepository documentRepository;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DocInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository documentRepository) {
|
public DocInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository documentRepository) {
|
||||||
@ -49,9 +55,9 @@ public class DocInterniViewModel {
|
|||||||
public void init() {
|
public void init() {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
// new Thread(() -> {
|
// new Thread(() -> {
|
||||||
mDocInterniRESTConsumer.getDocTypesAndGroupArts(returnDto -> {
|
mDocInterniRESTConsumer.getDocInterniSetup(returnDto -> {
|
||||||
this.sendOnLoadingEnded();
|
this.sendOnLoadingEnded();
|
||||||
this.mListener.onGruppiArtAndTipiDocFetch(returnDto);
|
this.mListener.onDocInterniSetupFetched(returnDto);
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
// }).start();
|
// }).start();
|
||||||
}
|
}
|
||||||
@ -77,20 +83,23 @@ public class DocInterniViewModel {
|
|||||||
return mDocsList;
|
return mDocsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedDocDetails(DialogSelectMgrpDtipPairViewModel selection) {
|
public void setSelectedDocDetails(DialogSelectDocInfoViewModel selection) {
|
||||||
if (selection.getSelectedGruppoArt() != null && selection.getSelectedTipoDoc() != null) {
|
|
||||||
if (this.dtbTipi.getValue() == null || this.mtbGrup.getValue() == null || !this.dtbTipi.getValue().equals(selection.getSelectedTipoDoc()) || !this.mtbGrup.getValue().equals(selection.getSelectedGruppoArt())) {
|
this.fornitore.postValue(selection.getSelectedFornitore());
|
||||||
this.dtbTipi.setValue(selection.getSelectedTipoDoc());
|
this.mtbGrup.postValue(selection.getSelectedGruppoArt());
|
||||||
this.mtbGrup.setValue(selection.getSelectedGruppoArt());
|
this.dataDoc.postValue(selection.getDataDoc());
|
||||||
this.fetchProducts();
|
this.numDoc.postValue(selection.getNumDoc());
|
||||||
this.fetchDocuments();
|
this.note.postValue(selection.getNote());
|
||||||
}
|
|
||||||
|
if (selection.getSelectedTipoDoc() != null ) {
|
||||||
|
this.dtbTipi.postValue(selection.getSelectedTipoDoc());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fetchProducts() {
|
public void fetchProducts() {
|
||||||
this.productsFetched = false;
|
this.productsFetched = false;
|
||||||
mDocInterniRESTConsumer.fetchProducts(this.dtbTipi.getValue().getCodDtip(), this.mtbGrup.getValue().getCodMgrp(), returnDto -> {
|
this.sendOnLoadingStarted();
|
||||||
|
mDocInterniRESTConsumer.fetchProducts(this.getCodDtip(), this.getCodMgrp(), returnDto -> {
|
||||||
this.productsFetched = true;
|
this.productsFetched = true;
|
||||||
this.productsList = returnDto;
|
this.productsList = returnDto;
|
||||||
this.artsSize.set(returnDto.getGrigliaAcquistiChild().size());
|
this.artsSize.set(returnDto.getGrigliaAcquistiChild().size());
|
||||||
@ -103,16 +112,22 @@ public class DocInterniViewModel {
|
|||||||
public void fetchDocuments() {
|
public void fetchDocuments() {
|
||||||
this.docsFetched = false;
|
this.docsFetched = false;
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
documentRepository.getLocalDocumentsByCodDtipAndCodMgrp(this.getCodDtip(), this.getCodMgrp(), list -> {
|
String codAnag = null, codVdes = null;
|
||||||
documentRepository.getNextNumCollo(nextNumCollo->{
|
FornitoreDTO fornitore = this.fornitore.getValue();
|
||||||
|
if (fornitore != null){
|
||||||
|
codAnag = fornitore.getCodAnag();
|
||||||
|
codVdes = fornitore.getCodVdes();
|
||||||
|
}
|
||||||
|
documentRepository.getLocalDocumentsByCodDtip(this.getCodDtip(), codAnag, codVdes, dataDoc.getValue(),numDoc.getValue(), list -> {
|
||||||
|
documentRepository.getNextNumCollo(nextNumCollo -> {
|
||||||
this.mDocsList.postValue(list);
|
this.mDocsList.postValue(list);
|
||||||
this.setNextNumCollo(nextNumCollo);
|
this.setNextNumCollo(nextNumCollo);
|
||||||
this.docsFetched = true;
|
this.docsFetched = true;
|
||||||
if (this.productsFetched) {
|
if (this.productsFetched) {
|
||||||
this.sendOnLoadingEnded();
|
this.sendOnLoadingEnded();
|
||||||
}
|
}
|
||||||
},this::sendError);
|
}, this::sendError);
|
||||||
},this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setNextNumCollo(Integer nextNumCollo) {
|
private void setNextNumCollo(Integer nextNumCollo) {
|
||||||
@ -147,28 +162,36 @@ 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("");
|
document.setAnnotazioni(this.note.getValue());
|
||||||
document.setSegno(-1);
|
document.setSegno(-1);
|
||||||
document.setSerCollo("/");
|
document.setSerCollo("/");
|
||||||
document.setNumCollo(this.nextNumCollo);
|
document.setNumCollo(this.nextNumCollo);
|
||||||
document.setGestione("L");
|
document.setGestione("L");
|
||||||
documentRepository.insert(document,id->{
|
document.setDataDoc(this.dataDoc.getValue());
|
||||||
|
if (this.numDoc.getValue() != null){
|
||||||
|
document.setNumDoc(Integer.parseInt(this.numDoc.getValue()));
|
||||||
|
}
|
||||||
|
if (this.fornitore.getValue() != null){
|
||||||
|
document.setCodAnag(this.fornitore.getValue().getCodAnag());
|
||||||
|
document.setCodVdes(this.fornitore.getValue().getCodVdes());
|
||||||
|
}
|
||||||
|
documentRepository.insert(document, id -> {
|
||||||
document.setId(id);
|
document.setId(id);
|
||||||
this.editDocument(document);
|
this.editDocument(document);
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasDocDetails() {
|
public boolean hasDocDetails() {
|
||||||
return this.dtbTipi.getValue() != null && this.mtbGrup.getValue() != null;
|
return this.dtbTipi.getValue() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener {
|
public interface Listener extends ILoadingListener {
|
||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
void onGruppiArtAndTipiDocFetch(TipiDocAndGruppiArtDTO tipiDocAndGruppiArtDTO);
|
void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO);
|
||||||
|
|
||||||
void onDocDetailsChanged(DialogSelectMgrpDtipPairViewModel selection);
|
void onDocDetailsChanged(DialogSelectDocInfoViewModel selection);
|
||||||
|
|
||||||
void onDocumentEditRequest(SqlMtbColt document, GrigliaAcquistiDTO arts);
|
void onDocumentEditRequest(SqlMtbColt document, GrigliaAcquistiDTO arts);
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface DialogSelectDocInfoComponent {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
DialogSelectDocInfoComponent create();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void inject(DialogSelectDocInfoView dialogSelectDocInfoView);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
|
||||||
|
@Module(subcomponents = DialogSelectDocInfoComponent.class)
|
||||||
|
public class DialogSelectDocInfoModule {
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
@Provides
|
||||||
|
DialogSelectDocInfoViewModel dialogSelectMgrpDtipPairViewModel() {
|
||||||
|
return new DialogSelectDocInfoViewModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,240 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.WindowManager;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableString;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
||||||
|
import it.integry.integrywmsnative.databinding.DialogSelectDocInfoBinding;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
|
||||||
|
|
||||||
|
public class DialogSelectDocInfoView extends BaseDialogFragment implements DialogSelectDocInfoViewModel.Listener {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DialogSelectDocInfoViewModel mViewModel;
|
||||||
|
private Context mCurrentContext;
|
||||||
|
|
||||||
|
|
||||||
|
public BindableString codDtip = new BindableString();
|
||||||
|
public BindableString codMgrp = new BindableString();
|
||||||
|
public BindableString codAnag = new BindableString();
|
||||||
|
public BindableString numDoc = new BindableString();
|
||||||
|
public BindableString note = new BindableString();
|
||||||
|
public ObservableField<Date> dataDoc = new ObservableField<>();
|
||||||
|
|
||||||
|
private ArrayAdapter<String> arrayAdapterCodDtips;
|
||||||
|
private ArrayAdapter<String> arrayAdapterCodMgrps;
|
||||||
|
private ArrayAdapter<String> arrayAdapterCodAnags;
|
||||||
|
private ArrayAdapter<String> arrayAdapterNote;
|
||||||
|
private DialogSelectDocInfoBinding mBindings;
|
||||||
|
|
||||||
|
private final RunnableArgs<DialogSelectDocInfoViewModel> currentOnFilterDone;
|
||||||
|
private final DocInterniSetupDTO docInterniSetupDTO;
|
||||||
|
private final TipiDocDTO selectedDtip;
|
||||||
|
private final GruppiArticoloDTO selectedGrp;
|
||||||
|
private final FornitoreDTO selectedAnag;
|
||||||
|
private final Date selectedDataDoc;
|
||||||
|
private final String selectedNumDoc;
|
||||||
|
private final String selectedNote;
|
||||||
|
|
||||||
|
public static DialogSelectDocInfoView newInstance(
|
||||||
|
DocInterniSetupDTO docInterniSetupDTO,
|
||||||
|
TipiDocDTO tipiDocDTO,
|
||||||
|
GruppiArticoloDTO gruppiArticoloDTO,
|
||||||
|
FornitoreDTO fornitoreDTO,
|
||||||
|
Date dataDoc,
|
||||||
|
String numDoc,
|
||||||
|
String note,
|
||||||
|
RunnableArgs<DialogSelectDocInfoViewModel> onDismiss
|
||||||
|
) {
|
||||||
|
return new DialogSelectDocInfoView(docInterniSetupDTO, tipiDocDTO, gruppiArticoloDTO, fornitoreDTO, dataDoc, numDoc,note, onDismiss);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private DialogSelectDocInfoView(DocInterniSetupDTO docInterniSetupDTO,
|
||||||
|
TipiDocDTO tipiDocDTO,
|
||||||
|
GruppiArticoloDTO gruppiArticoloDTO,
|
||||||
|
FornitoreDTO fornitoreDTO,
|
||||||
|
Date dataDoc,
|
||||||
|
String numDoc,
|
||||||
|
String note,
|
||||||
|
RunnableArgs<DialogSelectDocInfoViewModel> onDismiss) {
|
||||||
|
super();
|
||||||
|
currentOnFilterDone = onDismiss;
|
||||||
|
this.docInterniSetupDTO = docInterniSetupDTO;
|
||||||
|
selectedDtip = tipiDocDTO;
|
||||||
|
selectedGrp = gruppiArticoloDTO;
|
||||||
|
selectedDataDoc = dataDoc;
|
||||||
|
selectedNumDoc = numDoc;
|
||||||
|
selectedNote = note;
|
||||||
|
selectedAnag = fornitoreDTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
super.onDismiss(dialog);
|
||||||
|
if (currentOnFilterDone != null) currentOnFilterDone.run(mViewModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
this.mCurrentContext = this.requireActivity();
|
||||||
|
|
||||||
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_select_doc_info, container, false);
|
||||||
|
mBindings.setLifecycleOwner(this);
|
||||||
|
|
||||||
|
MainApplication
|
||||||
|
.appComponent
|
||||||
|
.dialogSelectMgrpDtipPairComponent()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
mViewModel.init(docInterniSetupDTO);
|
||||||
|
mViewModel.setListeners(this);
|
||||||
|
mBindings.setView(this);
|
||||||
|
mBindings.setViewmodel(mViewModel);
|
||||||
|
|
||||||
|
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||||
|
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
initView();
|
||||||
|
|
||||||
|
|
||||||
|
mBindings.positiveBtn.setOnClickListener(view -> {
|
||||||
|
if (this.isInputValid()) {
|
||||||
|
getDialog().dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
return mBindings.getRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView() {
|
||||||
|
initArrayAdapters();
|
||||||
|
initBindables();
|
||||||
|
|
||||||
|
if (selectedDtip != null) {
|
||||||
|
codDtip.set(selectedDtip.getLabel());
|
||||||
|
}
|
||||||
|
if (selectedGrp != null) {
|
||||||
|
codMgrp.set(selectedGrp.getLabel());
|
||||||
|
}
|
||||||
|
if (selectedAnag != null) {
|
||||||
|
codAnag.set(selectedAnag.getLabel());
|
||||||
|
}
|
||||||
|
if (selectedDataDoc != null) {
|
||||||
|
dataDoc.set(selectedDataDoc);
|
||||||
|
}
|
||||||
|
if (selectedNumDoc != null) {
|
||||||
|
numDoc.set(selectedNumDoc);
|
||||||
|
}
|
||||||
|
if (selectedNote != null) {
|
||||||
|
note.set(selectedNote);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isInputValid() {
|
||||||
|
if (this.mViewModel.getSelectedTipoDoc() == null) {
|
||||||
|
mBindings.inputCodDtip.setErrorEnabled(true);
|
||||||
|
mBindings.inputCodDtip.setError("Seleziona un tipo documento");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.mViewModel.requiresFornitore() && this.mViewModel.getSelectedFornitore() == null) {
|
||||||
|
mBindings.inputCodAnagForn.setErrorEnabled(true);
|
||||||
|
mBindings.inputCodAnagForn.setError("Seleziona un fornitore/destinatario");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.mViewModel.requiresDocData() && this.mViewModel.getDataDoc() == null){
|
||||||
|
mBindings.inputDataDoc.setError("Seleziona la data del documento");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.mViewModel.requiresDocData() && (this.mViewModel.getNumDoc() == null || this.mViewModel.getNumDoc().isEmpty() )){
|
||||||
|
mBindings.inputNumDoc.setError("Seleziona il numero del documento");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.mViewModel.requiresNote() && (this.mViewModel.getNote() == null || this.mViewModel.getNote().isEmpty() )){
|
||||||
|
mBindings.inputNoteLayout.setErrorEnabled(true);
|
||||||
|
mBindings.inputNoteLayout.setError("Specifica delle note per il documento");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initArrayAdapters() {
|
||||||
|
|
||||||
|
arrayAdapterCodDtips = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
|
||||||
|
arrayAdapterCodDtips.addAll(mViewModel.getAvailableCodDtips());
|
||||||
|
mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips);
|
||||||
|
|
||||||
|
arrayAdapterCodMgrps = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
|
||||||
|
arrayAdapterCodMgrps.addAll(mViewModel.getAvailableCodMgrps());
|
||||||
|
mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps);
|
||||||
|
|
||||||
|
arrayAdapterCodAnags = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
|
||||||
|
arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori());
|
||||||
|
mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterCodAnags);
|
||||||
|
|
||||||
|
arrayAdapterNote = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
|
||||||
|
arrayAdapterNote.addAll(mViewModel.getAdditionalNotes());
|
||||||
|
mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initBindables() {
|
||||||
|
BindableString.registerListener(codDtip, codDtip -> {
|
||||||
|
mViewModel.setCodDtip(codDtip);
|
||||||
|
mBindings.inputCodAnagForn.setVisibility(mViewModel.requiresFornitore() ? View.VISIBLE : View.GONE);
|
||||||
|
mBindings.inputDataDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE);
|
||||||
|
mBindings.inputNumDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE);
|
||||||
|
mBindings.inputNoteLayout.setVisibility(mViewModel.requiresNote() ? View.VISIBLE : View.GONE);
|
||||||
|
});
|
||||||
|
BindableString.registerListener(codMgrp, mViewModel::setCodMgrp);
|
||||||
|
BindableString.registerListener(codAnag, mViewModel::setCodAnag);
|
||||||
|
BindableString.registerListener(numDoc, mViewModel::setNumDoc);
|
||||||
|
BindableString.registerListener(note, mViewModel::setNote);
|
||||||
|
UtilityObservable.addPropertyChanged(this.dataDoc, (value) -> {
|
||||||
|
this.mViewModel.setDataDoc(value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDocTypeSelected() {
|
||||||
|
arrayAdapterCodAnags.clear();
|
||||||
|
if (mViewModel.getSelectedFornitore() != null && !mViewModel.getAvailableFornitori().contains(mViewModel.getSelectedFornitore().getLabel())) {
|
||||||
|
codAnag.set("");
|
||||||
|
}
|
||||||
|
if (mViewModel.getNote() != null && ! mViewModel.requiresNote()){
|
||||||
|
mViewModel.setNote(null);
|
||||||
|
}
|
||||||
|
arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,195 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||||
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||||
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniViewModel;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
|
||||||
|
|
||||||
|
|
||||||
|
public class DialogSelectDocInfoViewModel {
|
||||||
|
|
||||||
|
|
||||||
|
private DocInterniSetupDTO mDocInterniSetupDTO;
|
||||||
|
|
||||||
|
private String mTipoDoc;
|
||||||
|
|
||||||
|
private String mGruppoArt;
|
||||||
|
|
||||||
|
private String mFornitore;
|
||||||
|
|
||||||
|
private Date mDataDoc;
|
||||||
|
|
||||||
|
private String mNumDoc;
|
||||||
|
|
||||||
|
private String mNote;
|
||||||
|
|
||||||
|
private Listener mListener;
|
||||||
|
|
||||||
|
public void init(DocInterniSetupDTO initialList) {
|
||||||
|
this.mDocInterniSetupDTO = initialList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodDtip() {
|
||||||
|
return mTipoDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodDtip(String codDtip) {
|
||||||
|
this.mTipoDoc = codDtip;
|
||||||
|
if (this.getSelectedTipoDoc() != null) {
|
||||||
|
this.mListener.onDocTypeSelected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodMgrp() {
|
||||||
|
return mGruppoArt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodMgrp(String codMgrp) {
|
||||||
|
this.mGruppoArt = codMgrp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodAnag(String codAnag) {
|
||||||
|
this.mFornitore = codAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataDoc() {
|
||||||
|
return mDataDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataDoc(Date mDataDoc) {
|
||||||
|
this.mDataDoc = mDataDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNumDoc() {
|
||||||
|
return mNumDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumDoc(String numDoc) {
|
||||||
|
this.mNumDoc = numDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNote() {
|
||||||
|
return mNote;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocInfoViewModel setNote(String note) {
|
||||||
|
this.mNote = note;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSelectDocInfoViewModel setListeners(Listener listener) {
|
||||||
|
this.mListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAvailableCodDtips() {
|
||||||
|
return Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAvailableCodMgrps() {
|
||||||
|
return Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAvailableFornitori() {
|
||||||
|
if (!this.requiresFornitore()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
TipiDocDTO selectedDocType = getSelectedTipoDoc();
|
||||||
|
|
||||||
|
return Stream.of(mDocInterniSetupDTO.getFornitori())
|
||||||
|
.filter(forn -> {
|
||||||
|
if (selectedDocType.getGestioneDoc().equalsIgnoreCase("T")) {
|
||||||
|
return forn.getTipoAnag().equalsIgnoreCase("D") &&
|
||||||
|
forn.getGestioneAnag().equalsIgnoreCase(
|
||||||
|
selectedDocType.getGestione().equalsIgnoreCase("V") ? "V" : "A"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return forn.getTipoAnag().equalsIgnoreCase("F") ;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.map(FornitoreDTO::getLabel).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TipiDocDTO getSelectedTipoDoc() {
|
||||||
|
return Stream.of(mDocInterniSetupDTO.getTipiDoc()).filter(x -> x.getLabel().equals(mTipoDoc)).findFirstOrElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FornitoreDTO getSelectedFornitore() {
|
||||||
|
return Stream.of(mDocInterniSetupDTO.getFornitori()).filter(x -> x.getLabel().equals(mFornitore)).findFirstOrElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GruppiArticoloDTO getSelectedGruppoArt() {
|
||||||
|
if (mGruppoArt == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Stream.of(mDocInterniSetupDTO.getGruppiArt()).filter(x -> x.getLabel().equals(mGruppoArt)).findFirstOrElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean requiresFornitore() {
|
||||||
|
return this.getSelectedTipoDoc() != null && (
|
||||||
|
this.getSelectedTipoDoc().getGestioneDoc().equals("T") ||
|
||||||
|
this.getSelectedTipoDoc().getGestioneDoc().equals("A") ||
|
||||||
|
(
|
||||||
|
this.getSelectedTipoDoc().getGestioneDoc().equals("P") &&
|
||||||
|
!this.getSelectedTipoDoc().getGestione().equals("L")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean requiresNote() {
|
||||||
|
return this.getSelectedTipoDoc() != null &&
|
||||||
|
this.getSelectedTipoDoc().getGestioneDoc().equals("P") &&
|
||||||
|
this.getSelectedTipoDoc().getGestione().equals("L")
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isInputValid() {
|
||||||
|
if (this.getSelectedTipoDoc() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.requiresFornitore() && this.getSelectedFornitore() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean requiresDocData() {
|
||||||
|
TipiDocDTO doc = this.getSelectedTipoDoc();
|
||||||
|
return doc != null && doc.getGestioneDoc().equalsIgnoreCase("P") && !doc.getGestione().equalsIgnoreCase("L");
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAdditionalNotes() {
|
||||||
|
return SettingsManager.iDB().getNotePerditaDocInterni();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Listener extends ILoadingListener {
|
||||||
|
|
||||||
|
void onError(Exception ex);
|
||||||
|
|
||||||
|
void onDocTypeSelected();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,17 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
|
||||||
|
|
||||||
import dagger.Subcomponent;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
|
|
||||||
|
|
||||||
@Subcomponent
|
|
||||||
public interface DialogSelectMgrpDtipPairComponent {
|
|
||||||
|
|
||||||
@Subcomponent.Factory
|
|
||||||
interface Factory {
|
|
||||||
DialogSelectMgrpDtipPairComponent create();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void inject(DialogSelectMgrpDtipPairView dialogSelectMgrpDtipPairView);
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
|
|
||||||
import dagger.Module;
|
|
||||||
import dagger.Provides;
|
|
||||||
|
|
||||||
@Module(subcomponents = DialogSelectMgrpDtipPairComponent.class)
|
|
||||||
public class DialogSelectMgrpDtipPairModule {
|
|
||||||
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
DialogSelectMgrpDtipPairViewModel dialogSelectMgrpDtipPairViewModel() {
|
|
||||||
return new DialogSelectMgrpDtipPairViewModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,161 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.graphics.drawable.ColorDrawable;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.WindowManager;
|
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.MainApplication;
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableString;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogSelectTipoDocAndGroupArtBinding;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocAndGruppiArtDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
|
|
||||||
|
|
||||||
public class DialogSelectMgrpDtipPairView extends BaseDialogFragment {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
DialogSelectMgrpDtipPairViewModel mViewModel;
|
|
||||||
private Context mCurrentContext;
|
|
||||||
|
|
||||||
|
|
||||||
public BindableString codDtip = new BindableString();
|
|
||||||
public BindableString codMgrp = new BindableString();
|
|
||||||
private ArrayAdapter<String> arrayAdapterCodDtips;
|
|
||||||
private ArrayAdapter<String> arrayAdapterCodMgrps;
|
|
||||||
private DialogSelectTipoDocAndGroupArtBinding mBindings;
|
|
||||||
|
|
||||||
private RunnableArgs<DialogSelectMgrpDtipPairViewModel> currentOnFilterDone;
|
|
||||||
private TipiDocAndGruppiArtDTO mTipiDocAndGruppiArtDTO;
|
|
||||||
private TipiDocDTO mSelectedDtip;
|
|
||||||
private GruppiArticoloDTO mSelectedGrp;
|
|
||||||
|
|
||||||
|
|
||||||
public static DialogSelectMgrpDtipPairView newInstance(
|
|
||||||
TipiDocAndGruppiArtDTO tipiDocAndGruppiArtDTO,
|
|
||||||
TipiDocDTO tipiDocDTO,
|
|
||||||
GruppiArticoloDTO gruppiArticoloDTO,
|
|
||||||
RunnableArgs<DialogSelectMgrpDtipPairViewModel> onDismiss
|
|
||||||
) {
|
|
||||||
return new DialogSelectMgrpDtipPairView(tipiDocAndGruppiArtDTO,tipiDocDTO,gruppiArticoloDTO, onDismiss);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private DialogSelectMgrpDtipPairView(TipiDocAndGruppiArtDTO tipiDocAndGruppiArtDTO,TipiDocDTO tipiDocDTO, GruppiArticoloDTO gruppiArticoloDTO, RunnableArgs<DialogSelectMgrpDtipPairViewModel> onDismiss) {
|
|
||||||
super();
|
|
||||||
currentOnFilterDone = onDismiss;
|
|
||||||
mTipiDocAndGruppiArtDTO = tipiDocAndGruppiArtDTO;
|
|
||||||
mSelectedDtip = tipiDocDTO;
|
|
||||||
mSelectedGrp = gruppiArticoloDTO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
|
||||||
super.onDismiss(dialog);
|
|
||||||
if (currentOnFilterDone != null) currentOnFilterDone.run(mViewModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
||||||
this.mCurrentContext = this.requireActivity();
|
|
||||||
|
|
||||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_select_tipo_doc_and_group_art, container, false);
|
|
||||||
mBindings.setLifecycleOwner(this);
|
|
||||||
|
|
||||||
MainApplication
|
|
||||||
.appComponent
|
|
||||||
.dialogSelectMgrpDtipPairComponent()
|
|
||||||
.create()
|
|
||||||
.inject(this);
|
|
||||||
mViewModel.init(mTipiDocAndGruppiArtDTO);
|
|
||||||
mBindings.setView(this);
|
|
||||||
mBindings.setViewmodel(mViewModel);
|
|
||||||
|
|
||||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
|
||||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
|
||||||
initView();
|
|
||||||
|
|
||||||
|
|
||||||
mBindings.positiveBtn.setOnClickListener(view -> {
|
|
||||||
if (this.isInputValid()) {
|
|
||||||
getDialog().dismiss();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
return mBindings.getRoot();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initView() {
|
|
||||||
initArrayAdapters();
|
|
||||||
initBindables();
|
|
||||||
if (mSelectedDtip != null){
|
|
||||||
codDtip.set(mSelectedDtip.getLabel());
|
|
||||||
}
|
|
||||||
if (mSelectedGrp != null){
|
|
||||||
codMgrp.set(mSelectedGrp.getLabel());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isInputValid() {
|
|
||||||
if (this.mViewModel.getSelectedTipoDoc() == null) {
|
|
||||||
mBindings.inputCodDtip.setErrorEnabled(true);
|
|
||||||
mBindings.inputCodDtip.setError("Seleziona un tipo documento");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (this.mViewModel.getSelectedGruppoArt() == null) {
|
|
||||||
mBindings.inputCodMgrps.setErrorEnabled(true);
|
|
||||||
mBindings.inputCodMgrps.setError("Seleziona un gruppo merceologico");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initArrayAdapters() {
|
|
||||||
|
|
||||||
arrayAdapterCodDtips = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_tipo_doc_and_group_art__single_item);
|
|
||||||
arrayAdapterCodDtips.addAll(mViewModel.getAvailableCodDtips());
|
|
||||||
mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips);
|
|
||||||
|
|
||||||
|
|
||||||
arrayAdapterCodMgrps = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_tipo_doc_and_group_art__single_item);
|
|
||||||
arrayAdapterCodMgrps.addAll(mViewModel.getAvailableCodMgrps());
|
|
||||||
mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogSelectMgrpDtipPairView setCodDtip(String codDtip) {
|
|
||||||
this.codDtip.set(codDtip);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogSelectMgrpDtipPairView setCodMgrp(String codMgrp) {
|
|
||||||
this.codMgrp.set(codMgrp);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void initBindables() {
|
|
||||||
|
|
||||||
BindableString.registerListener(codDtip, mViewModel::setCodDtip);
|
|
||||||
BindableString.registerListener(codMgrp, mViewModel::setCodMgrp);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,62 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
|
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocAndGruppiArtDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
|
|
||||||
|
|
||||||
|
|
||||||
public class DialogSelectMgrpDtipPairViewModel {
|
|
||||||
|
|
||||||
|
|
||||||
private TipiDocAndGruppiArtDTO mTipiDocAndGruppiArtDTO;
|
|
||||||
|
|
||||||
private String mTipoDoc;
|
|
||||||
private String mGruppoArt;
|
|
||||||
|
|
||||||
public void init(TipiDocAndGruppiArtDTO initialList) {
|
|
||||||
this.mTipiDocAndGruppiArtDTO = initialList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCodDtip() {
|
|
||||||
return mTipoDoc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCodDtip(String codDtip) {
|
|
||||||
this.mTipoDoc = codDtip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCodMgrp() {
|
|
||||||
return mGruppoArt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCodMgrp(String codMgrp) {
|
|
||||||
this.mGruppoArt = codMgrp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getAvailableCodDtips() {
|
|
||||||
return Stream.of(mTipiDocAndGruppiArtDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getAvailableCodMgrps() {
|
|
||||||
return Stream.of(mTipiDocAndGruppiArtDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public TipiDocDTO getSelectedTipoDoc(){
|
|
||||||
if (mTipoDoc == null){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return Stream.of(mTipiDocAndGruppiArtDTO.getTipiDoc()).filter(x->x.getLabel().equals(mTipoDoc)).findFirstOrElse(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GruppiArticoloDTO getSelectedGruppoArt(){
|
|
||||||
if (mGruppoArt == null){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Stream.of(mTipiDocAndGruppiArtDTO.getGruppiArt()).filter(x->x.getLabel().equals(mGruppoArt)).findFirstOrElse(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -2,14 +2,15 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TipiDocAndGruppiArtDTO {
|
public class DocInterniSetupDTO {
|
||||||
|
|
||||||
|
|
||||||
private List<TipiDocDTO> tipiDoc;
|
private List<TipiDocDTO> tipiDoc;
|
||||||
|
|
||||||
|
|
||||||
private List<GruppiArticoloDTO> gruppiArt;
|
private List<GruppiArticoloDTO> gruppiArt;
|
||||||
|
|
||||||
|
private List<FornitoreDTO> fornitori;
|
||||||
|
|
||||||
|
|
||||||
public List<TipiDocDTO> getTipiDoc() {
|
public List<TipiDocDTO> getTipiDoc() {
|
||||||
return tipiDoc;
|
return tipiDoc;
|
||||||
@ -26,4 +27,12 @@ public class TipiDocAndGruppiArtDTO {
|
|||||||
public void setGruppiArt(List<GruppiArticoloDTO> gruppiArt) {
|
public void setGruppiArt(List<GruppiArticoloDTO> gruppiArt) {
|
||||||
this.gruppiArt = gruppiArt;
|
this.gruppiArt = gruppiArt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FornitoreDTO> getFornitori() {
|
||||||
|
return fornitori;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFornitori(List<FornitoreDTO> fornitori) {
|
||||||
|
this.fornitori = fornitori;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
|
||||||
|
|
||||||
|
public class DocSetupDTO {
|
||||||
|
}
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
|
||||||
|
|
||||||
|
public class FornitoreDTO {
|
||||||
|
|
||||||
|
|
||||||
|
private String codAnag;
|
||||||
|
|
||||||
|
private String descrizione;
|
||||||
|
|
||||||
|
private String codVdes;
|
||||||
|
|
||||||
|
private String tipoAnag;
|
||||||
|
|
||||||
|
private String gestioneAnag;
|
||||||
|
|
||||||
|
|
||||||
|
public String getCodAnag() {
|
||||||
|
return codAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodAnag(String codAnag) {
|
||||||
|
this.codAnag = codAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodVdes() {
|
||||||
|
return codVdes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodVdes(String codVdes) {
|
||||||
|
this.codVdes = codVdes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescrizione() {
|
||||||
|
return descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescrizione(String descrizione) {
|
||||||
|
this.descrizione = descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTipoAnag() {
|
||||||
|
return tipoAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTipoAnag(String tipoAnag) {
|
||||||
|
this.tipoAnag = tipoAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGestioneAnag() {
|
||||||
|
return gestioneAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGestioneAnag(String gestioneAnag) {
|
||||||
|
this.gestioneAnag = gestioneAnag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return this.codAnag + (this.codVdes != null ? " - "+ this.codVdes : "") +" ( " + this.descrizione+" )";
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -12,7 +12,12 @@ public class GrigliaAcquistiChildDTO {
|
|||||||
public BigDecimal merceDaRic;
|
public BigDecimal merceDaRic;
|
||||||
public BigDecimal mediaSett;
|
public BigDecimal mediaSett;
|
||||||
public String flagQtaMultipla;
|
public String flagQtaMultipla;
|
||||||
|
public String flagTracciabilita;
|
||||||
public BigDecimal qtaMinOrdinabile;
|
public BigDecimal qtaMinOrdinabile;
|
||||||
|
private int ggScadenza;
|
||||||
|
private float giacenza;
|
||||||
|
private float qtaPrevistaVendita;
|
||||||
|
private float qtaProposta;
|
||||||
|
|
||||||
public String getCodMart() {
|
public String getCodMart() {
|
||||||
return codMart;
|
return codMart;
|
||||||
@ -94,4 +99,49 @@ public class GrigliaAcquistiChildDTO {
|
|||||||
this.qtaMinOrdinabile = qtaMinOrdinabile;
|
this.qtaMinOrdinabile = qtaMinOrdinabile;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFlagTracciabilita() {
|
||||||
|
return flagTracciabilita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GrigliaAcquistiChildDTO setFlagTracciabilita(String flagTracciabilita) {
|
||||||
|
this.flagTracciabilita = flagTracciabilita;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGgScadenza() {
|
||||||
|
return ggScadenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GrigliaAcquistiChildDTO setGgScadenza(int ggScadenza) {
|
||||||
|
this.ggScadenza = ggScadenza;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGiacenza() {
|
||||||
|
return giacenza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GrigliaAcquistiChildDTO setGiacenza(float giacenza) {
|
||||||
|
this.giacenza = giacenza;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getQtaPrevistaVendita() {
|
||||||
|
return qtaPrevistaVendita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GrigliaAcquistiChildDTO setQtaPrevistaVendita(float qtaPrevistaVendita) {
|
||||||
|
this.qtaPrevistaVendita = qtaPrevistaVendita;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getQtaProposta() {
|
||||||
|
return qtaProposta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GrigliaAcquistiChildDTO setQtaProposta(float qtaProposta) {
|
||||||
|
this.qtaProposta = qtaProposta;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,8 @@ public class TipiDocDTO {
|
|||||||
|
|
||||||
private String codDtip;
|
private String codDtip;
|
||||||
private String descrizione;
|
private String descrizione;
|
||||||
|
private String gestione;
|
||||||
|
private String gestioneDoc;
|
||||||
|
|
||||||
public String getCodDtip() {
|
public String getCodDtip() {
|
||||||
return codDtip;
|
return codDtip;
|
||||||
@ -21,6 +23,21 @@ public class TipiDocDTO {
|
|||||||
this.descrizione = descrizione;
|
this.descrizione = descrizione;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getGestione() {
|
||||||
|
return gestione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGestione(String gestione) {
|
||||||
|
this.gestione = gestione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGestioneDoc() {
|
||||||
|
return gestioneDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGestioneDoc(String gestioneDoc) {
|
||||||
|
this.gestioneDoc = gestioneDoc;
|
||||||
|
}
|
||||||
public String getLabel(){
|
public String getLabel(){
|
||||||
return this.codDtip +" - "+this.descrizione;
|
return this.codDtip +" - "+this.descrizione;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,35 +3,31 @@ 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.text.Html;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.recyclerview.widget.DiffUtil;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
|
||||||
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.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
import it.integry.integrywmsnative.core.di.BindableInteger;
|
import it.integry.integrywmsnative.core.di.BindableInteger;
|
||||||
import it.integry.integrywmsnative.core.di.BindableString;
|
import it.integry.integrywmsnative.core.di.BindableString;
|
||||||
@ -44,10 +40,6 @@ import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBindi
|
|||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
||||||
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.gest.contab_doc_interni.ui.DocInterniListAdapter;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
|
|
||||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterDepositoLayoutView;
|
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
|
||||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
|
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||||
@ -69,9 +61,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
private int mBarcodeScannerIstanceID;
|
private int mBarcodeScannerIstanceID;
|
||||||
private ActivityContabDocInterniEditBinding binding;
|
private ActivityContabDocInterniEditBinding binding;
|
||||||
public BindableString documentHeader = new BindableString(true);
|
public BindableString documentHeader = new BindableString(true);
|
||||||
|
public BindableString documentRifHeader = new BindableString(true);
|
||||||
public BindableString codDtip = new BindableString();
|
public BindableString codDtip = new BindableString();
|
||||||
public BindableString note = new BindableString();
|
public BindableString note = new BindableString();
|
||||||
public BindableString codMgrp = new BindableString();
|
public BindableString codMgrp = new BindableString();
|
||||||
|
public BindableString codAnag = new BindableString();
|
||||||
public BindableInteger prodsCount = new BindableInteger(0);
|
public BindableInteger prodsCount = new BindableInteger(0);
|
||||||
public BindableBoolean isDocumentExportable = new BindableBoolean(false);
|
public BindableBoolean isDocumentExportable = new BindableBoolean(false);
|
||||||
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
|
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
|
||||||
@ -107,8 +101,24 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
SqlMtbColt document = this.viewModel.getDocument();
|
SqlMtbColt document = this.viewModel.getDocument();
|
||||||
this.codDtip.set(document.getCodDtipProvv());
|
this.codDtip.set(document.getCodDtipProvv());
|
||||||
this.note.set(document.getAnnotazioni());
|
this.note.set(document.getAnnotazioni());
|
||||||
|
if(document.getCodMgrp() != null){
|
||||||
this.codMgrp.set(document.getCodMgrp());
|
this.codMgrp.set(document.getCodMgrp());
|
||||||
|
}else{
|
||||||
|
binding.mtbGrupContainer.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
if (document.getCodAnag() != null){
|
||||||
|
this.codAnag.set(document.getCodAnag() + (document.getCodVdes()!=null?" - "+document.getCodVdes():""));
|
||||||
|
}else{
|
||||||
|
this.binding.supplierLayout.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
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()));
|
||||||
|
|
||||||
|
if (document.getNumDoc() != null && document.getDataDoc() != null){
|
||||||
|
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), document.getDataDoc()));
|
||||||
|
}else{
|
||||||
|
this.binding.docRifLayout.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initView() {
|
private void initView() {
|
||||||
@ -117,7 +127,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
setSupportActionBar(binding.toolbar);
|
setSupportActionBar(binding.toolbar);
|
||||||
binding.toolbar.setTitle(R.string.edit_doc);
|
binding.toolbar.setTitle(R.string.edit_doc);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
|
FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
|
||||||
binding.bottomSheetMtbColrEdit.setListener(this);
|
binding.bottomSheetMtbColrEdit.setListener(this);
|
||||||
binding.bottomSheetMtbColrEdit.init(binding.bottomSheetMtbColrEdit, binding.bottomSheetMtbColrEditBackground);
|
binding.bottomSheetMtbColrEdit.init(binding.bottomSheetMtbColrEdit, binding.bottomSheetMtbColrEditBackground);
|
||||||
}
|
}
|
||||||
@ -126,8 +136,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
this.viewModel.setListeners(this);
|
this.viewModel.setListeners(this);
|
||||||
this.viewModel.setDocument(document);
|
this.viewModel.setDocument(document);
|
||||||
this.viewModel.setProductsList(productList);
|
this.viewModel.setProductsList(productList);
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
private void initRecyclerView() {
|
private void initRecyclerView() {
|
||||||
this.viewModel.docRows.observe(this, this::refreshList);
|
this.viewModel.docRows.observe(this, this::refreshList);
|
||||||
DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList);
|
DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList);
|
||||||
@ -145,14 +155,6 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
this.documentRowsObservableList.addAll(this.viewModel.docRows.getValue());
|
this.documentRowsObservableList.addAll(this.viewModel.docRows.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void editNote() {
|
|
||||||
BarcodeManager.disable();
|
|
||||||
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", note -> {
|
|
||||||
this.note.set(note);
|
|
||||||
this.viewModel.setNote(note);
|
|
||||||
BarcodeManager.enable();
|
|
||||||
}, BarcodeManager::enable).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void closeEdit() {
|
public void closeEdit() {
|
||||||
@ -161,7 +163,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
|
|
||||||
public void manualSearch() {
|
public void manualSearch() {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
DialogSimpleInputHelper.makeInputDialog(this, "Aggiungi delle annotazioni al documento", this.note.get(), this.viewModel::onSearch, BarcodeManager::enable).show();
|
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", null, this.viewModel::onSearch, BarcodeManager::enable).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -206,7 +208,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEditRowRequest(SqlMtbColr row) {
|
public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita) {
|
||||||
MtbAart mtbAart = new MtbAart();
|
MtbAart mtbAart = new MtbAart();
|
||||||
mtbAart.setBarCode(row.getCodBarre());
|
mtbAart.setBarCode(row.getCodBarre());
|
||||||
mtbAart.setDiacod(row.getCodBarre());
|
mtbAart.setDiacod(row.getCodBarre());
|
||||||
@ -215,6 +217,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
mtbAart.setQtaCnf(BigDecimal.valueOf(row.getQtaCnf()));
|
mtbAart.setQtaCnf(BigDecimal.valueOf(row.getQtaCnf()));
|
||||||
mtbAart.setDescrizione(row.getDescrizione());
|
mtbAart.setDescrizione(row.getDescrizione());
|
||||||
mtbAart.setDescrizioneEstesa(row.getDescrizione());
|
mtbAart.setDescrizioneEstesa(row.getDescrizione());
|
||||||
|
mtbAart.setFlagTracciabilita(flagTracciabilita? "S" : "N");
|
||||||
mtbAart.setUntMis(row.getUntMis());
|
mtbAart.setUntMis(row.getUntMis());
|
||||||
|
|
||||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||||
@ -222,10 +225,22 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
.setInitialNumCnf(BigDecimal.valueOf(row.getNumCnf()))
|
.setInitialNumCnf(BigDecimal.valueOf(row.getNumCnf()))
|
||||||
.setInitialQtaCnf(BigDecimal.valueOf(row.getQtaCnf()))
|
.setInitialQtaCnf(BigDecimal.valueOf(row.getQtaCnf()))
|
||||||
.setInitialQtaTot(BigDecimal.valueOf(row.getQtaCol()))
|
.setInitialQtaTot(BigDecimal.valueOf(row.getQtaCol()))
|
||||||
|
.setNote(row.getNote())
|
||||||
|
.setPartitaMag(row.getPartitaMag())
|
||||||
.setDataScad(row.getDataScad())
|
.setDataScad(row.getDataScad())
|
||||||
.setCanOverflowOrderQuantity(false)
|
.setCanOverflowOrderQuantity(false)
|
||||||
.setCanLUBeClosed(false)
|
.setCanLUBeClosed(false)
|
||||||
.setCanPartitaMagBeChanged(false);
|
.setNotesAllowed(true)
|
||||||
|
.setDataScadMandatory(flagTracciabilita)
|
||||||
|
.setCanPartitaMagBeChanged(flagTracciabilita)
|
||||||
|
.setSuggestPartitaMag(data -> {
|
||||||
|
Date dataScad = data.getDataScad();
|
||||||
|
String partitaMag = null;
|
||||||
|
if (dataScad != null){
|
||||||
|
partitaMag = new SimpleDateFormat("yyyymmdd").format(dataScad);
|
||||||
|
}
|
||||||
|
return partitaMag;
|
||||||
|
});
|
||||||
|
|
||||||
DialogInputQuantityV2View
|
DialogInputQuantityV2View
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||||
@ -255,7 +270,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMtbColrEdit(MtbColr mtbColr) {
|
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||||
this.viewModel.editRow(entityToSql(mtbColr));
|
GrigliaAcquistiChildDTO articolo = viewModel.getArticoloByCodMart(mtbColr.getCodMart());
|
||||||
|
this.viewModel.editRow(entityToSql(mtbColr),articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -68,8 +68,8 @@ public class DocInterniEditFormViewModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void editRow(SqlMtbColr row) {
|
public void editRow(SqlMtbColr row,boolean flagTracciabilita) {
|
||||||
this.listener.onEditRowRequest(row);
|
this.listener.onEditRowRequest(row,flagTracciabilita);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Integer getNextIdRiga() {
|
private Integer getNextIdRiga() {
|
||||||
@ -91,6 +91,17 @@ public class DocInterniEditFormViewModel {
|
|||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
public void deleteDocument() {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> {
|
||||||
|
SqlMtbColt document = this.getDocument();
|
||||||
|
document.setCodDtip(document.getCodDtipProvv());
|
||||||
|
mtbColtRepository.update(document, doc -> {
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
this.listener.onDocExported();
|
||||||
|
}, this::sendError);
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
public void holdDocument() {
|
public void holdDocument() {
|
||||||
this.listener.onDocumentHoldRequest();
|
this.listener.onDocumentHoldRequest();
|
||||||
@ -105,7 +116,7 @@ public class DocInterniEditFormViewModel {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SqlMtbColr row = this.getRowForArticolo(articolo);
|
SqlMtbColr row = this.getRowForArticolo(articolo);
|
||||||
this.editRow(row);
|
this.editRow(row,articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,6 +218,7 @@ public class DocInterniEditFormViewModel {
|
|||||||
row.setQtaCnf(resultDTO.getQtaCnf().floatValue());
|
row.setQtaCnf(resultDTO.getQtaCnf().floatValue());
|
||||||
row.setNumCnf(resultDTO.getNumCnf().floatValue());
|
row.setNumCnf(resultDTO.getNumCnf().floatValue());
|
||||||
row.setQtaCol(resultDTO.getQtaTot().floatValue());
|
row.setQtaCol(resultDTO.getQtaTot().floatValue());
|
||||||
|
row.setNote(resultDTO.getNote());
|
||||||
row.setDataScad(resultDTO.getDataScad());
|
row.setDataScad(resultDTO.getDataScad());
|
||||||
if (row.getId() > 0) {
|
if (row.getId() > 0) {
|
||||||
this.mtbColrRepository.update(row, id -> {
|
this.mtbColrRepository.update(row, id -> {
|
||||||
@ -233,13 +245,17 @@ public class DocInterniEditFormViewModel {
|
|||||||
return this.docRows.getValue();
|
return this.docRows.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GrigliaAcquistiChildDTO getArticoloByCodMart(String codMart) {
|
||||||
|
return Stream.of(productsList).filter(prod->prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener {
|
public interface Listener extends ILoadingListener {
|
||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
void onRowsChanged(List<SqlMtbColr> rows);
|
void onRowsChanged(List<SqlMtbColr> rows);
|
||||||
|
|
||||||
void onEditRowRequest(SqlMtbColr row);
|
void onEditRowRequest(SqlMtbColr row,boolean flagTracciabilita);
|
||||||
|
|
||||||
void onDocumentHoldRequest();
|
void onDocumentHoldRequest();
|
||||||
|
|
||||||
|
|||||||
@ -2,18 +2,15 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
|
|||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocAndGruppiArtDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
@ -21,16 +18,16 @@ import retrofit2.Response;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class DocInterniRESTConsumer extends _BaseRESTConsumer {
|
public class DocInterniRESTConsumer extends _BaseRESTConsumer {
|
||||||
|
|
||||||
public void getDocTypesAndGroupArts(RunnableArgs<TipiDocAndGruppiArtDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
public void getDocInterniSetup(RunnableArgs<DocInterniSetupDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
|
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
|
||||||
service.getDocTypesAndGroupArts().enqueue(new Callback<>() {
|
service.getSetupDocInterni().enqueue(new Callback<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<TipiDocAndGruppiArtDTO>> call, Response<ServiceRESTResponse<TipiDocAndGruppiArtDTO>> response) {
|
public void onResponse(Call<ServiceRESTResponse<DocInterniSetupDTO>> call, Response<ServiceRESTResponse<DocInterniSetupDTO>> response) {
|
||||||
analyzeAnswer(response, "getDocTypesAndGroupArts", onComplete, onFailed);
|
analyzeAnswer(response, "getSetupDocInterni", onComplete, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call<ServiceRESTResponse<TipiDocAndGruppiArtDTO>> call, Throwable t) {
|
public void onFailure(Call<ServiceRESTResponse<DocInterniSetupDTO>> call, Throwable t) {
|
||||||
onFailed.run(new Exception(t));
|
onFailed.run(new Exception(t));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -2,15 +2,10 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
|
|||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.GetPickingListAccettazioneDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
||||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocAndGruppiArtDTO;
|
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.GET;
|
import retrofit2.http.GET;
|
||||||
@ -20,8 +15,8 @@ import retrofit2.http.Query;
|
|||||||
|
|
||||||
public interface DocInterniRESTConsumerService {
|
public interface DocInterniRESTConsumerService {
|
||||||
|
|
||||||
@GET("getDocTypesAndArtsGroups")
|
@GET("getDocInterniSetup")
|
||||||
Call<ServiceRESTResponse<TipiDocAndGruppiArtDTO>> getDocTypesAndGroupArts();
|
Call<ServiceRESTResponse<DocInterniSetupDTO>> getSetupDocInterni();
|
||||||
|
|
||||||
@POST("SM2SaveTerminalinoWMS")
|
@POST("SM2SaveTerminalinoWMS")
|
||||||
Call<ServiceRESTResponse<JsonObject>> save(@Body SaveDTO saveDTO);
|
Call<ServiceRESTResponse<JsonObject>> save(@Body SaveDTO saveDTO);
|
||||||
|
|||||||
@ -284,16 +284,16 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro
|
|||||||
if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){
|
if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){
|
||||||
if ( SettingsManager.iDB().isFlagForceAllToColli() || (majorOrder.getOriginalMtbAart() != null && !majorOrder.getOriginalMtbAart().isFlagQtaCnfFissaBoolean())) {
|
if ( SettingsManager.iDB().isFlagForceAllToColli() || (majorOrder.getOriginalMtbAart() != null && !majorOrder.getOriginalMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
majorOrder.setNumCnfBigDecimal(majorOrder.getNumCnfBigDecimal().add(offsetCnf));
|
majorOrder.setNumCnfBigDecimal(majorOrder.getNumCnfBigDecimal().add(offsetCnf));
|
||||||
majorOrder.getOriginalOrdineLavorazione().setNumCnfVersamento(majorOrder.getNumCnfBigDecimal().add(offsetCnf).floatValue());
|
majorOrder.getOriginalOrdineLavorazione().setNumCnfVersamento(majorOrder.getNumCnfBigDecimal().floatValue());
|
||||||
|
|
||||||
majorOrder.setQtaBigDecimal(majorOrder.getQtaBigDecimal().add(offsetCol));
|
majorOrder.setQtaBigDecimal(majorOrder.getQtaBigDecimal().add(offsetCol));
|
||||||
majorOrder.getOriginalOrdineLavorazione().setQtaColVersamento(majorOrder.getQtaBigDecimal().add(offsetCol).floatValue());
|
majorOrder.getOriginalOrdineLavorazione().setQtaColVersamento(majorOrder.getQtaBigDecimal().floatValue());
|
||||||
} else {
|
} else {
|
||||||
majorOrder.setQtaBigDecimal(majorOrder.getQtaBigDecimal().add(offsetCol));
|
majorOrder.setQtaBigDecimal(majorOrder.getQtaBigDecimal().add(offsetCol));
|
||||||
majorOrder.getOriginalOrdineLavorazione().setQtaColVersamento(majorOrder.getQtaBigDecimal().add(offsetCol).floatValue());
|
majorOrder.getOriginalOrdineLavorazione().setQtaColVersamento(majorOrder.getQtaBigDecimal().floatValue());
|
||||||
|
|
||||||
majorOrder.setNumCnfBigDecimal(UtilityBigDecimal.divide(majorOrder.getQtaBigDecimal(), qtaCnf));
|
majorOrder.setNumCnfBigDecimal(UtilityBigDecimal.divide(majorOrder.getQtaBigDecimal(), qtaCnf));
|
||||||
majorOrder.getOriginalOrdineLavorazione().setNumCnfVersamento(UtilityBigDecimal.divide(majorOrder.getQtaBigDecimal(), qtaCnf).floatValue());
|
majorOrder.getOriginalOrdineLavorazione().setNumCnfVersamento(majorOrder.getNumCnfBigDecimal().floatValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -183,13 +183,14 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addArticolo(ArticoloOrdine articoloOrdine) {
|
private void addArticolo(ArticoloOrdine articoloOrdine) {
|
||||||
runOnUiThread(() -> EditArticoloDialog.make(this, mhelper, articoloOrdine, articolo -> {
|
|
||||||
|
runOnUiThread(() -> EditArticoloDialog.newInstance(this, mhelper, articoloOrdine, articolo -> {
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
if (articolo != null) {
|
if (articolo != null) {
|
||||||
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
fetchArticoli();
|
fetchArticoli();
|
||||||
}).show());
|
}).show(this.getSupportFragmentManager(), "tag"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fetchDetails() {
|
private void fetchDetails() {
|
||||||
|
|||||||
@ -1,177 +1,165 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.content.DialogInterface;
|
||||||
import android.content.Context;
|
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.text.Editable;
|
import android.os.Bundle;
|
||||||
import android.text.TextWatcher;
|
import android.text.InputType;
|
||||||
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.Nullable;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseDialog;
|
import it.integry.integrywmsnative.core.di.BindableBigDecimal;
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableInteger;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityFocus;
|
import it.integry.integrywmsnative.core.utility.UtilityFocus;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
|
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
|
||||||
|
|
||||||
public class EditArticoloDialog {
|
public class EditArticoloDialog extends BaseDialogFragment {
|
||||||
|
|
||||||
private Activity mContext;
|
|
||||||
|
|
||||||
private Dialog mDialog;
|
|
||||||
|
|
||||||
|
private final Activity mContext;
|
||||||
private DialogPvEditArticoloBinding mBinding;
|
private DialogPvEditArticoloBinding mBinding;
|
||||||
|
private final PVEditOrderHelper mHelper;
|
||||||
private PVEditOrderHelper mHelper;
|
private final MutableLiveData<ArticoloOrdine> mArticolo = new MutableLiveData<>();
|
||||||
|
private final RunnableArgs<ArticoloOrdine> onDialogDismiss;
|
||||||
private ArticoloOrdine mArticolo;
|
|
||||||
private ArticoloOrdine mSavedArt;
|
|
||||||
|
|
||||||
private boolean mLockedInput = false;
|
private boolean mLockedInput = false;
|
||||||
private Dialog mCurrentProgress;
|
|
||||||
|
|
||||||
|
public final BindableBigDecimal qtaOrd = new BindableBigDecimal(BigDecimal.ZERO);
|
||||||
|
public final BindableInteger numCnf = new BindableInteger(0);
|
||||||
|
public final BindableBigDecimal qtaCnf = new BindableBigDecimal(BigDecimal.ZERO);
|
||||||
|
|
||||||
public static Dialog make(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
|
public static EditArticoloDialog newInstance(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
|
||||||
return new EditArticoloDialog(context, helper, articolo, onDialogDismiss).mDialog;
|
return new EditArticoloDialog(context, helper, articolo, onDialogDismiss);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private EditArticoloDialog(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
|
private EditArticoloDialog(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mArticolo = articolo;
|
mArticolo.setValue(articolo);
|
||||||
mHelper = helper;
|
mHelper = helper;
|
||||||
|
qtaOrd.set(BigDecimal.valueOf(articolo.getQtaOrd()));
|
||||||
|
numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()),0,RoundingMode.CEILING).intValue());
|
||||||
|
qtaCnf.set(BigDecimal.valueOf(articolo.getQtaCnf()));
|
||||||
|
|
||||||
mSavedArt = null;
|
this.onDialogDismiss = onDialogDismiss;
|
||||||
|
|
||||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
super.onDismiss(dialog);
|
||||||
|
ArticoloOrdine articolo = mArticolo.getValue();
|
||||||
|
if (articolo != null && articolo.getQtaOrd() <= 0f){
|
||||||
|
articolo = null;
|
||||||
|
}
|
||||||
|
onDialogDismiss.run(articolo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
|
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
|
||||||
mBinding.setViewmodel(this);
|
mBinding.setView(this);
|
||||||
|
mBinding.toolbar.setTitle("Inserimento articolo");
|
||||||
mDialog = new BaseDialog(context);
|
mBinding.inputQtaOrd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
||||||
mDialog.setContentView(mBinding.getRoot());
|
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||||
UtilityDialog.setTo90PercentWidth(mContext, mDialog);
|
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
initBindings();
|
||||||
|
|
||||||
int qtaCnf = (int) Math.ceil(mArticolo.getQtaOrd() / mArticolo.getQtaCnf());
|
|
||||||
mBinding.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd()));
|
|
||||||
mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
|
|
||||||
mDialog.setOnShowListener(dialog -> {
|
|
||||||
UtilityFocus.focusTextBox(mContext, mBinding.qtaTot);
|
|
||||||
});
|
|
||||||
|
|
||||||
mDialog.setOnDismissListener(dialog -> {
|
|
||||||
onDialogDismiss.run(mSavedArt);
|
|
||||||
});
|
|
||||||
setListeners();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setListeners() {
|
|
||||||
mBinding.qtaTot.addTextChangedListener(new TextWatcher() {
|
|
||||||
@Override
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
||||||
|
|
||||||
|
return mBinding.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
public void onStart() {
|
||||||
setQtaOrd(s.toString().length() > 0 ? Float.parseFloat(s.toString()) : 0);
|
super.onStart();
|
||||||
|
UtilityFocus.focusTextBox(mContext, mBinding.inputQtaOrd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void initBindings() {
|
||||||
public void afterTextChanged(Editable s) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mBinding.qtaCnf.addTextChangedListener(new TextWatcher() {
|
|
||||||
@Override
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
||||||
|
|
||||||
}
|
BindableBigDecimal.registerListener(qtaOrd, qta -> {
|
||||||
|
if (!mLockedInput) {
|
||||||
@Override
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
||||||
setQtaCnf(s.toString().length() > 0 ? Integer.parseInt(s.toString()) : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterTextChanged(Editable s) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQtaCnf(int qtaCnf) {
|
|
||||||
if (mLockedInput) {
|
|
||||||
mLockedInput = false;
|
|
||||||
} else {
|
|
||||||
mLockedInput = true;
|
mLockedInput = true;
|
||||||
|
|
||||||
float qtaTot = qtaCnf * mArticolo.getQtaCnf();
|
ArticoloOrdine articoloOrdine = mArticolo.getValue();
|
||||||
mBinding.qtaTot.setText(String.valueOf(qtaTot));
|
BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf());
|
||||||
}
|
int cnf = 0;
|
||||||
|
if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0){
|
||||||
|
cnf = qtaOrd.get().divide(qtaCnf, 0, RoundingMode.CEILING).intValue();
|
||||||
}
|
}
|
||||||
|
this.numCnf.set( cnf);
|
||||||
|
this.mBinding.executePendingBindings();
|
||||||
|
|
||||||
public void setQtaOrd(float qtaOrd) {
|
|
||||||
mArticolo.setQtaOrd(qtaOrd);
|
|
||||||
if (mLockedInput) {
|
|
||||||
mLockedInput = false;
|
mLockedInput = false;
|
||||||
} else {
|
|
||||||
mLockedInput = true;
|
|
||||||
mBinding.qtaCnf.setText(String.valueOf((int) Math.ceil(qtaOrd / mArticolo.getQtaCnf())));
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
BindableInteger.registerListener(numCnf, qta -> {
|
||||||
|
if (!mLockedInput){
|
||||||
|
mLockedInput = true;
|
||||||
|
|
||||||
|
ArticoloOrdine articoloOrdine = mArticolo.getValue();
|
||||||
|
BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf());
|
||||||
|
this.qtaOrd.set(BigDecimal.valueOf(numCnf.get() * qtaCnf.floatValue()).setScale(2, RoundingMode.CEILING));
|
||||||
|
this.mBinding.executePendingBindings();
|
||||||
|
|
||||||
|
mLockedInput = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveAndExit() {
|
public void saveAndExit() {
|
||||||
this.openProgress();
|
this.onLoadingStarted();
|
||||||
try {
|
try {
|
||||||
float qtaOrd = Float.parseFloat(mBinding.qtaTot.getText().toString());
|
ArticoloOrdine articolo = mArticolo.getValue();
|
||||||
if (qtaOrd <= 0) {
|
if (articolo == null) {
|
||||||
|
throw new Exception("Articolo non valido");
|
||||||
|
}
|
||||||
|
if (qtaOrd.get().compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
throw new Exception("La quantità ordinata deve essere maggiore di 0");
|
throw new Exception("La quantità ordinata deve essere maggiore di 0");
|
||||||
}
|
}
|
||||||
mArticolo.setQtaOrd(qtaOrd);
|
|
||||||
|
articolo.setQtaOrd(qtaOrd.get().floatValue());
|
||||||
|
mArticolo.postValue(articolo);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e));
|
mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e));
|
||||||
this.closeProgress();
|
this.onLoadingEnded();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mHelper.saveArticoloToOrdine(mArticolo, () -> {
|
mHelper.saveArticoloToOrdine(mArticolo.getValue(), () -> {
|
||||||
mSavedArt = mArticolo;
|
this.onLoadingEnded();
|
||||||
this.closeProgress();
|
this.dismiss();
|
||||||
mDialog.dismiss();
|
|
||||||
}, e -> mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)));
|
}, e -> mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArticoloOrdine getArticolo() {
|
public ArticoloOrdine getArticolo() {
|
||||||
return mArticolo;
|
return mArticolo.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
mArticolo = null;
|
mArticolo.postValue(null);
|
||||||
mDialog.dismiss();
|
this.dismiss();
|
||||||
}
|
|
||||||
|
|
||||||
protected void openProgress() {
|
|
||||||
mContext.runOnUiThread(() -> {
|
|
||||||
if (this.mCurrentProgress == null) {
|
|
||||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(mContext);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void closeProgress() {
|
|
||||||
mContext.runOnUiThread(() -> {
|
|
||||||
if (mCurrentProgress != null) {
|
|
||||||
mCurrentProgress.dismiss();
|
|
||||||
mCurrentProgress = null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
|
|
||||||
@ -27,10 +28,14 @@ public class DialogInputQuantityV2DTO {
|
|||||||
private BigDecimal qtaCnfAvailable;
|
private BigDecimal qtaCnfAvailable;
|
||||||
|
|
||||||
private boolean canPartitaMagBeChanged = true;
|
private boolean canPartitaMagBeChanged = true;
|
||||||
|
private boolean isDataScadMandatory = false;
|
||||||
|
private boolean isNotesAllowed = false;
|
||||||
private boolean canLUBeClosed;
|
private boolean canLUBeClosed;
|
||||||
|
|
||||||
private String partitaMag;
|
private String partitaMag;
|
||||||
|
private String note;
|
||||||
private Date dataScad;
|
private Date dataScad;
|
||||||
|
private RunnableArgsWithReturn<DialogInputQuantityV2ViewModel,String> suggestPartitaMag;
|
||||||
|
|
||||||
private boolean canOverflowOrderQuantity;
|
private boolean canOverflowOrderQuantity;
|
||||||
|
|
||||||
@ -178,6 +183,15 @@ public class DialogInputQuantityV2DTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getNote() {
|
||||||
|
return note;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2DTO setNote(String note) {
|
||||||
|
this.note = note;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Date getDataScad() {
|
public Date getDataScad() {
|
||||||
return dataScad;
|
return dataScad;
|
||||||
}
|
}
|
||||||
@ -195,4 +209,31 @@ public class DialogInputQuantityV2DTO {
|
|||||||
this.canOverflowOrderQuantity = canOverflowOrderQuantity;
|
this.canOverflowOrderQuantity = canOverflowOrderQuantity;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2DTO setDataScadMandatory(boolean dataScadMandatory) {
|
||||||
|
isDataScadMandatory = dataScadMandatory;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDataScadMandatory() {
|
||||||
|
return isDataScadMandatory ;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNotesAllowed() {
|
||||||
|
return isNotesAllowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2DTO setNotesAllowed(boolean notesAllowed) {
|
||||||
|
isNotesAllowed = notesAllowed;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RunnableArgsWithReturn<DialogInputQuantityV2ViewModel, String> getSuggestPartitaMag() {
|
||||||
|
return suggestPartitaMag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2DTO setSuggestPartitaMag(RunnableArgsWithReturn<DialogInputQuantityV2ViewModel, String> suggestPartitaMag) {
|
||||||
|
this.suggestPartitaMag = suggestPartitaMag;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import java.util.Date;
|
|||||||
public class DialogInputQuantityV2ResultDTO {
|
public class DialogInputQuantityV2ResultDTO {
|
||||||
|
|
||||||
private String partitaMag;
|
private String partitaMag;
|
||||||
|
private String note;
|
||||||
private Date dataScad;
|
private Date dataScad;
|
||||||
|
|
||||||
private BigDecimal numCnf;
|
private BigDecimal numCnf;
|
||||||
@ -21,6 +22,15 @@ public class DialogInputQuantityV2ResultDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getNote() {
|
||||||
|
return note;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2ResultDTO setNote(String note) {
|
||||||
|
this.note = note;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Date getDataScad() {
|
public Date getDataScad() {
|
||||||
return dataScad;
|
return dataScad;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -56,6 +56,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
private Runnable mOnAbort;
|
private Runnable mOnAbort;
|
||||||
|
|
||||||
public ObservableField<String> currentPartitaMag = new ObservableField<>();
|
public ObservableField<String> currentPartitaMag = new ObservableField<>();
|
||||||
|
public ObservableField<String> currentNotes = new ObservableField<>();
|
||||||
public ObservableField<Date> currentDataScad = new ObservableField<>();
|
public ObservableField<Date> currentDataScad = new ObservableField<>();
|
||||||
|
|
||||||
public ObservableField<BigDecimal> currentNumCnf = new ObservableField<>();
|
public ObservableField<BigDecimal> currentNumCnf = new ObservableField<>();
|
||||||
@ -67,6 +68,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
public ObservableField<Boolean> enabledQtaTot = new ObservableField<>(true);
|
public ObservableField<Boolean> enabledQtaTot = new ObservableField<>(true);
|
||||||
|
|
||||||
public ObservableField<Boolean> enabledChangePartitaMag = new ObservableField<>(true);
|
public ObservableField<Boolean> enabledChangePartitaMag = new ObservableField<>(true);
|
||||||
|
public ObservableField<Boolean> enabledNotes = new ObservableField<>(false);
|
||||||
public ObservableField<Boolean> enabledLUCloseButton = new ObservableField<>(true);
|
public ObservableField<Boolean> enabledLUCloseButton = new ObservableField<>(true);
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
@ -127,6 +129,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
|
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
|
||||||
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable())
|
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable())
|
||||||
.setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag())
|
.setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag())
|
||||||
|
.setNote(mDialogInputQuantityV2DTO.getNote())
|
||||||
|
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
|
||||||
.setDataScad(mDialogInputQuantityV2DTO.getDataScad());
|
.setDataScad(mDialogInputQuantityV2DTO.getDataScad());
|
||||||
|
|
||||||
mBindings.setView(this);
|
mBindings.setView(this);
|
||||||
@ -196,6 +200,12 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentNotes, (value) -> {
|
||||||
|
if (this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setNote(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> {
|
UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> {
|
||||||
if (this.mEnableDataCallback) {
|
if (this.mEnableDataCallback) {
|
||||||
this.mViewModel.setDataScad(value);
|
this.mViewModel.setDataScad(value);
|
||||||
@ -326,6 +336,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
|
|
||||||
this.mViewModel.setCanPartitaMagBeChanged(this.mDialogInputQuantityV2DTO.isCanPartitaMagBeChanged());
|
this.mViewModel.setCanPartitaMagBeChanged(this.mDialogInputQuantityV2DTO.isCanPartitaMagBeChanged());
|
||||||
this.enabledChangePartitaMag.set(this.mDialogInputQuantityV2DTO.isCanPartitaMagBeChanged());
|
this.enabledChangePartitaMag.set(this.mDialogInputQuantityV2DTO.isCanPartitaMagBeChanged());
|
||||||
|
this.mViewModel.shouldAskDataScad = this.mDialogInputQuantityV2DTO.isDataScadMandatory();
|
||||||
|
this.enabledNotes.set(this.mDialogInputQuantityV2DTO.isNotesAllowed());
|
||||||
this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed());
|
this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,6 +362,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
|||||||
this.mEnableDataCallback = false;
|
this.mEnableDataCallback = false;
|
||||||
|
|
||||||
this.currentPartitaMag.set(this.mViewModel.getPartitaMag());
|
this.currentPartitaMag.set(this.mViewModel.getPartitaMag());
|
||||||
|
this.currentNotes.set(this.mViewModel.getNote());
|
||||||
this.currentDataScad.set(this.mViewModel.getDataScad());
|
this.currentDataScad.set(this.mViewModel.getDataScad());
|
||||||
|
|
||||||
this.currentNumCnf.set(this.mViewModel.getNumCnf());
|
this.currentNumCnf.set(this.mViewModel.getNumCnf());
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import java.util.Date;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||||
@ -59,8 +60,11 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
private BigDecimal internalQtaTot;
|
private BigDecimal internalQtaTot;
|
||||||
|
|
||||||
private String internalPartitaMag;
|
private String internalPartitaMag;
|
||||||
|
private String internalNote;
|
||||||
private Date internalDataScad;
|
private Date internalDataScad;
|
||||||
|
|
||||||
|
private RunnableArgsWithReturn<DialogInputQuantityV2ViewModel,String> suggestPartitaMagRunnable;
|
||||||
|
|
||||||
private boolean canOverflowOrderQuantity;
|
private boolean canOverflowOrderQuantity;
|
||||||
private boolean canPartitaMagBeChanged;
|
private boolean canPartitaMagBeChanged;
|
||||||
private int onNumCnfInputChanged;
|
private int onNumCnfInputChanged;
|
||||||
@ -98,8 +102,10 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
this.internalQtaTot = totalQtaOrd;
|
this.internalQtaTot = totalQtaOrd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.shouldAskDataScad == null){
|
||||||
this.shouldAskDataScad = mtbAart.get().isFlagTracciabilitaBoolean() && mtbAart.get().getGgScadPartita() != null && mtbAart.get().getGgScadPartita() > 0;
|
this.shouldAskDataScad = mtbAart.get().isFlagTracciabilitaBoolean() && mtbAart.get().getGgScadPartita() != null && mtbAart.get().getGgScadPartita() > 0;
|
||||||
this.shouldShowDataScad = this.internalDataScad != null;
|
}
|
||||||
|
this.shouldShowDataScad = this.shouldAskDataScad || this.internalDataScad != null;
|
||||||
|
|
||||||
this.blockedNumCnf.set(false);
|
this.blockedNumCnf.set(false);
|
||||||
this.blockedQtaCnf.set(false);
|
this.blockedQtaCnf.set(false);
|
||||||
@ -194,6 +200,10 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
return internalPartitaMag;
|
return internalPartitaMag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getNote() {
|
||||||
|
return internalNote;
|
||||||
|
}
|
||||||
|
|
||||||
public Date getDataScad() {
|
public Date getDataScad() {
|
||||||
return internalDataScad;
|
return internalDataScad;
|
||||||
}
|
}
|
||||||
@ -285,6 +295,10 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean canPartitaMagBeChanged() {
|
||||||
|
return canPartitaMagBeChanged;
|
||||||
|
}
|
||||||
|
|
||||||
public DialogInputQuantityV2ViewModel setPartitaMag(String internalPartitaMag) {
|
public DialogInputQuantityV2ViewModel setPartitaMag(String internalPartitaMag) {
|
||||||
this.internalPartitaMag = internalPartitaMag;
|
this.internalPartitaMag = internalPartitaMag;
|
||||||
return this;
|
return this;
|
||||||
@ -389,9 +403,16 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
} else if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
} else if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
||||||
|
if (suggestPartitaMagRunnable != null){
|
||||||
|
internalPartitaMag = suggestPartitaMagRunnable.run(this);
|
||||||
|
if (internalPartitaMag == null){
|
||||||
this.mListener.onError(new InvalidBatchLotException());
|
this.mListener.onError(new InvalidBatchLotException());
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
this.mListener.onError(new InvalidBatchLotException());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} else if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
} else if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
|
||||||
|
|
||||||
@ -445,6 +466,7 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
.setDataScad(this.internalDataScad)
|
.setDataScad(this.internalDataScad)
|
||||||
.setNumCnf(this.internalNumCnf)
|
.setNumCnf(this.internalNumCnf)
|
||||||
.setQtaCnf(this.internalQtaCnf)
|
.setQtaCnf(this.internalQtaCnf)
|
||||||
|
.setNote(this.internalNote)
|
||||||
.setQtaTot(this.internalQtaTot);
|
.setQtaTot(this.internalQtaTot);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -453,6 +475,16 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
this.mListener = listener;
|
this.mListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2ViewModel setNote(String value) {
|
||||||
|
this.internalNote = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogInputQuantityV2ViewModel setSuggestPartitaMagRunnable(RunnableArgsWithReturn<DialogInputQuantityV2ViewModel,String> suggestPartitaMagRunnable) {
|
||||||
|
this.suggestPartitaMagRunnable = suggestPartitaMagRunnable;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public interface Listener {
|
public interface Listener {
|
||||||
void onDataChanged();
|
void onDataChanged();
|
||||||
|
|
||||||
|
|||||||
@ -409,6 +409,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="@{viewmodel.shouldAskDataScad || viewmodel.shouldShowDataScad ? 1f : 2f}"
|
android:layout_weight="@{viewmodel.shouldAskDataScad || viewmodel.shouldShowDataScad ? 1f : 2f}"
|
||||||
|
android:visibility="@{viewmodel.canPartitaMagBeChanged() || viewmodel.partitaMag != null ? View.VISIBLE : View.GONE}"
|
||||||
android:enabled="@{view.enabledChangePartitaMag}"
|
android:enabled="@{view.enabledChangePartitaMag}"
|
||||||
android:paddingEnd="4dp"
|
android:paddingEnd="4dp"
|
||||||
tools:layout_weight="1">
|
tools:layout_weight="1">
|
||||||
@ -528,6 +529,36 @@
|
|||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_note_layout"
|
||||||
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:enabled="@{view.enabledNotes}"
|
||||||
|
android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_note_text"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_additional_notes"
|
||||||
|
android:inputType="textMultiLine"
|
||||||
|
app:binding="@{view.currentNotes}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
|||||||
@ -65,16 +65,6 @@
|
|||||||
android:src="@drawable/ic_search_black_24dp"
|
android:src="@drawable/ic_search_black_24dp"
|
||||||
android:onClick="@{()->view.manualSearch()}"
|
android:onClick="@{()->view.manualSearch()}"
|
||||||
android:tint="@color/colorPrimaryGray"/>
|
android:tint="@color/colorPrimaryGray"/>
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/edit_note"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:background="@drawable/ripple_effect"
|
|
||||||
android:adjustViewBounds="true"
|
|
||||||
android:src="@drawable/ic_edit_24dp"
|
|
||||||
android:onClick="@{()->view.editNote()}"
|
|
||||||
android:tint="@color/colorPrimaryGray"/>
|
|
||||||
</androidx.appcompat.widget.Toolbar>
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
</it.integry.integrywmsnative.ui.ElevatedToolbar>
|
</it.integry.integrywmsnative.ui.ElevatedToolbar>
|
||||||
@ -131,11 +121,14 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
android:textStyle="italic"
|
android:textStyle="italic"
|
||||||
app:binding="@{view.codDtip}"
|
app:binding="@{view.codDtip}"
|
||||||
tools:text="CodDtip" />
|
tools:text="CodDtip" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/mtb_grup_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
@ -152,12 +145,64 @@
|
|||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
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:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
android:textStyle="italic"
|
android:textStyle="italic"
|
||||||
app:binding="@{view.codMgrp}"
|
app:binding="@{view.codMgrp}"
|
||||||
tools:text="CodMgrp" />
|
tools:text="CodMgrp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
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" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
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:textColor="@android:color/black"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:textStyle="italic"
|
||||||
|
app:binding="@{view.codAnag}"
|
||||||
|
tools:text="F000 - 01" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -179,6 +224,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
app:binding="@{view.prodsCount}"
|
app:binding="@{view.prodsCount}"
|
||||||
tools:text="10" />
|
tools:text="10" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -236,7 +282,7 @@
|
|||||||
app:layout_anchorGravity="center"
|
app:layout_anchorGravity="center"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:menu_icon="@drawable/ic_check_white_24dp"
|
app:menu_icon="@drawable/ic_menu_24dp"
|
||||||
fab:menu_animationDelayPerItem="50"
|
fab:menu_animationDelayPerItem="50"
|
||||||
fab:menu_backgroundColor="@color/white_bg_alpha"
|
fab:menu_backgroundColor="@color/white_bg_alpha"
|
||||||
fab:menu_buttonSpacing="0dp"
|
fab:menu_buttonSpacing="0dp"
|
||||||
@ -267,7 +313,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.github.clans.fab.FloatingActionButton
|
||||||
android:id="@+id/pv_ordine_export"
|
android:id="@+id/export_document"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@drawable/ic_black_upload"
|
android:src="@drawable/ic_black_upload"
|
||||||
@ -277,9 +323,19 @@
|
|||||||
app:fab_colorRipple="#66FFFFFF"
|
app:fab_colorRipple="#66FFFFFF"
|
||||||
app:onClick="@{() -> viewModel.exportDocument()}"
|
app:onClick="@{() -> viewModel.exportDocument()}"
|
||||||
fab:fab_label="@string/export_document" />
|
fab:fab_label="@string/export_document" />
|
||||||
|
<com.github.clans.fab.FloatingActionButton
|
||||||
|
android:id="@+id/delete_document"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/ic_delete_24dp"
|
||||||
|
app:fab_colorNormal="@color/white"
|
||||||
|
app:fab_colorPressed="@color/white_pressed"
|
||||||
|
app:fab_colorRipple="#66FFFFFF"
|
||||||
|
app:onClick="@{() -> viewModel.deleteDocument()}"
|
||||||
|
fab:fab_label="@string/delete_document" />
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.github.clans.fab.FloatingActionButton
|
||||||
android:id="@+id/pv_ordine_close"
|
android:id="@+id/save_document"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@drawable/ic_check_black_24dp"
|
android:src="@drawable/ic_check_black_24dp"
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
@ -419,6 +420,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="@{viewmodel.shouldAskDataScad || viewmodel.shouldShowDataScad ? 1f : 2f}"
|
android:layout_weight="@{viewmodel.shouldAskDataScad || viewmodel.shouldShowDataScad ? 1f : 2f}"
|
||||||
|
android:visibility="@{viewmodel.canPartitaMagBeChanged() || viewmodel.partitaMag != null ? View.VISIBLE : View.GONE}"
|
||||||
android:enabled="@{view.enabledChangePartitaMag}"
|
android:enabled="@{view.enabledChangePartitaMag}"
|
||||||
android:paddingEnd="4dp"
|
android:paddingEnd="4dp"
|
||||||
tools:layout_weight="1">
|
tools:layout_weight="1">
|
||||||
@ -538,6 +540,36 @@
|
|||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_note_layout"
|
||||||
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:enabled="@{view.enabledNotes}"
|
||||||
|
android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_note_text"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_additional_notes"
|
||||||
|
android:inputType="textMultiLine"
|
||||||
|
app:binding="@{view.currentNotes}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
|||||||
@ -10,153 +10,97 @@
|
|||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="viewmodel"
|
name="view"
|
||||||
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" />
|
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/base_root"
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@android:color/white">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:background="?attr/colorPrimary"
|
||||||
|
android:minHeight="?attr/actionBarSize"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:titleTextColor="@android:color/white">
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:cardCornerRadius="12dp"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:cardElevation="0dp">
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/toolbar">
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/title_container"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/light_blue_300"
|
android:layout_marginTop="8dp">
|
||||||
android:gravity="center_horizontal">
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:padding="24dp">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/dialog_actions"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/dialog_title"
|
style="@style/AppTheme.NewMaterial.Dialog.DialogTitleText"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_toStartOf="@id/unt_mis"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:text="@string/insert_qty"
|
android:text="@{view.articolo.codMart}"
|
||||||
android:paddingTop="6dp"
|
|
||||||
android:paddingBottom="6dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="@android:color/primary_text_light"
|
|
||||||
android:textSize="18sp"
|
|
||||||
android:textStyle="bold"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/dialog_info"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/cod_mart"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="@color/colorPrimary"
|
android:textColor="@color/colorPrimary"
|
||||||
android:layout_marginBottom="8dp"
|
tools:text="020100514" />
|
||||||
android:ellipsize="end"
|
|
||||||
android:text="@{viewmodel.articolo.codMart}"
|
|
||||||
android:textSize="18sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="codMart" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/descr_art"
|
android:id="@+id/unt_mis"
|
||||||
android:layout_width="match_parent"
|
style="@style/AppTheme.NewMaterial.Dialog.DialogTitleText"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/cod_mart"
|
android:layout_alignParentEnd="true"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:text="@{viewmodel.articolo.descrizione}"
|
android:text="@{view.articolo.untMis}"
|
||||||
android:textSize="16sp"
|
android:textColor="@color/colorPrimary"
|
||||||
android:textStyle="bold"
|
tools:text="KG" />
|
||||||
tools:text="DESCR ART" />
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Dialog.DialogSubTitleText"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:text="@{view.articolo.descrizione}"
|
||||||
|
android:textColor="@color/red_600"
|
||||||
|
tools:text="BOSCAIOLA DI POLLO" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="4dp"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<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="Unità di misura: "
|
android:text="@string/gg_scadenza"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<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:paddingStart="4dp"
|
|
||||||
android:text="@{viewmodel.articolo.untMis}"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="(UM)" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
android:text='@{String.valueOf(view.articolo.ggScadenza)}'
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Qta media settimanale: "
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingStart="4dp"
|
|
||||||
android:text='@{UtilityNumber.decimalToString(viewmodel.articolo.mediaSett)}'
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="1150" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Qta per confezione: "
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingStart="4dp"
|
|
||||||
android:text='@{UtilityNumber.decimalToString(viewmodel.articolo.qtaCnf)}'
|
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
tools:text="5" />
|
tools:text="5" />
|
||||||
@ -164,119 +108,424 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:weightSum="2">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:id="@+id/qta_cnf_label"
|
|
||||||
style="@style/TextInputLayout.OutlinePrimary"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/guide_right"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/guide_left"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:id="@+id/qta_cnf"
|
|
||||||
style="@style/TextInputEditText.OutlinePrimary"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:hint="@string/packages"
|
|
||||||
android:inputType="number"
|
|
||||||
android:selectAllOnFocus="true" />
|
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:id="@+id/qta_tot_label"
|
|
||||||
style="@style/TextInputLayout.OutlinePrimary"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/guide_right"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/guide_left"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:id="@+id/qta_tot"
|
|
||||||
style="@style/TextInputEditText.OutlinePrimary"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:hint="@string/quantity"
|
|
||||||
android:inputType="numberDecimal"
|
|
||||||
android:selectAllOnFocus="true" />
|
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp">
|
android:layout_marginTop="8dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/center_guideline"
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_toStartOf="@id/qta_ord_panel"
|
||||||
|
android:text="@string/giacenza"
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/qta_ord_panel"
|
||||||
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:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(view.articolo.qtaCnfGiacenza)}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="1" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="@string/unt_mis_col"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="("
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(view.articolo.giacenza)}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:text="@{view.articolo.untMis}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:text=")"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:weightSum="1">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginEnd="2dp"
|
||||||
|
android:layout_weight="0.5"
|
||||||
|
android:background="@drawable/badge_gray_round_corner"
|
||||||
|
android:backgroundTint="@color/green_600"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintGuide_percent="0.5"/>
|
android:padding="8dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/selling_prediction"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(view.articolo.qtaCnfPrevistaVendita)}"
|
||||||
|
tools:text="1"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="@string/unt_mis_col"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="("
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(view.articolo.qtaPrevistaVendita)}"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:text="@{view.articolo.untMis}"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:text=")"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:layout_weight="0.5"
|
||||||
|
android:background="@drawable/badge_gray_round_corner"
|
||||||
|
android:backgroundTint="@color/colorPrimary"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="8dp"
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/order_suggestion"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(view.articolo.qtaCnfProposta)}"
|
||||||
|
tools:text="1"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="@string/unt_mis_col"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="("
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(view.articolo.qtaProposta)}"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:text="@{view.articolo.untMis}"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:text=")"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/gray_400" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:weightSum="3">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_num_cnf_layout"
|
||||||
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:focusableInTouchMode="false"
|
||||||
|
android:layout_weight="1">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_num_cnf_text"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/num_pcks"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="number"
|
||||||
|
app:binding="@{view.numCnf}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_qta_cnf_layout"
|
||||||
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:enabled="false"
|
||||||
|
android:focusableInTouchMode="false"
|
||||||
|
android:paddingEnd="4dp"
|
||||||
|
android:paddingStart="4dp">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_qta_cnf_text"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/qty_x_pck"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="numberDecimal"
|
||||||
|
app:binding="@{view.qtaCnf}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_qta_tot_layout"
|
||||||
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:focusableInTouchMode="false"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:layout_weight="1">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_qta_ord"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:digits="0123456789"
|
||||||
|
android:hint="@string/tot_qty"
|
||||||
|
android:inputType="number"
|
||||||
|
app:binding="@{view.qtaOrd}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:weightSum="2">
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/abort_btn"
|
||||||
|
style="@style/Button.DangerFull"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/Button.PrimaryOutline"
|
android:layout_marginStart="4dp"
|
||||||
android:layout_marginLeft="8dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_marginRight="8dp"
|
android:layout_weight="1"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
android:onClick="@{() -> view.cancel()}"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:icon="@drawable/ic_close_24dp"
|
||||||
app:layout_constraintEnd_toStartOf="@id/center_guideline"
|
app:iconGravity="textStart"
|
||||||
android:onClick="@{()->viewmodel.cancel()}"
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
app:strokeColor="@color/colorPrimary"
|
|
||||||
android:text="@string/abort"/>
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/add_button"
|
android:id="@+id/save_btn"
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/Button.PrimaryFull"
|
style="@style/Button.PrimaryFull"
|
||||||
android:layout_marginLeft="8dp"
|
android:layout_width="0dp"
|
||||||
android:layout_marginRight="8dp"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
android:layout_marginStart="4dp"
|
||||||
app:layout_constraintStart_toStartOf="@id/center_guideline"
|
android:layout_marginEnd="0dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
android:layout_weight="1"
|
||||||
android:focusable="true"
|
android:onClick="@{() -> view.saveAndExit()}"
|
||||||
android:onClick="@{()->viewmodel.saveAndExit()}"
|
app:icon="@drawable/ic_save_24"
|
||||||
android:text="@string/add"/>
|
app:iconGravity="textStart"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
|
|
||||||
</layout>
|
</layout>
|
||||||
175
app/src/main/res/layout/dialog_select_doc_info.xml
Normal file
175
app/src/main/res/layout/dialog_select_doc_info.xml
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
<?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>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="viewmodel"
|
||||||
|
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="view"
|
||||||
|
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView" />
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="12dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="16dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/title_text"
|
||||||
|
style="@style/TextViewMaterial.DialogTitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:text="@string/dialog_doc_interni_choose_dtip_mgrp_pair_title" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_cod_dtip"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/doc_type">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
|
android:id="@+id/filled_exposed_dropdown_cod_dtips"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:inputType="text"
|
||||||
|
android:singleLine="true"
|
||||||
|
app:binding="@{view.codDtip}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_cod_mgrps"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/art_group">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
|
android:id="@+id/filled_exposed_dropdown_cod_mgrps"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:inputType="text"
|
||||||
|
android:singleLine="true"
|
||||||
|
app:binding="@{view.codMgrp}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_cod_anag_forn"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/fornitore"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
|
android:id="@+id/filled_exposed_dropdown_cod_anag_list"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:inputType="text"
|
||||||
|
android:singleLine="true"
|
||||||
|
app:binding="@{view.codAnag}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_num_doc_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:visibility="gone"
|
||||||
|
style="@style/TextInputLayout.OutlineDefault"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_num_doc"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/document_number"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="number"
|
||||||
|
app:binding="@{view.numDoc}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_data_doc_layout"
|
||||||
|
style="@style/TextInputLayout.OutlineDefault"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/input_data_doc"
|
||||||
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:focusableInTouchMode="false"
|
||||||
|
android:hint="@string/document_date"
|
||||||
|
android:inputType="text"
|
||||||
|
app:binding="@{view.dataDoc}"/>
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_note_layout"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:hint="@string/hint_additional_notes">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
|
android:id="@+id/filled_exposed_dropdown_note"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:inputType="text"
|
||||||
|
android:singleLine="true"
|
||||||
|
app:binding="@{view.note}" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/positive_btn"
|
||||||
|
style="@style/Button.PrimaryFull"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
android:text="@string/confirm" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
|
||||||
|
</layout>
|
||||||
@ -1,97 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="viewmodel"
|
|
||||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairViewModel" />
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="view"
|
|
||||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectMgrpDtipPairView" />
|
|
||||||
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:cardCornerRadius="12dp"
|
|
||||||
app:cardElevation="0dp">
|
|
||||||
|
|
||||||
|
|
||||||
<ScrollView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:padding="16dp">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/title_text"
|
|
||||||
style="@style/TextViewMaterial.DialogTitle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="12dp"
|
|
||||||
android:gravity="center_horizontal"
|
|
||||||
android:text="@string/dialog_doc_interni_choose_dtip_mgrp_pair_title" />
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:id="@+id/input_cod_dtip"
|
|
||||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:hint="@string/doc_type">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
|
||||||
android:id="@+id/filled_exposed_dropdown_cod_dtips"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:inputType="number|text"
|
|
||||||
android:singleLine="true"
|
|
||||||
app:binding="@{view.codDtip}" />
|
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:id="@+id/input_cod_mgrps"
|
|
||||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:hint="@string/art_group">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
|
||||||
android:id="@+id/filled_exposed_dropdown_cod_mgrps"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:inputType="text"
|
|
||||||
android:singleLine="true"
|
|
||||||
app:binding="@{view.codMgrp}" />
|
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/positive_btn"
|
|
||||||
style="@style/Button.PrimaryFull"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="8dp"
|
|
||||||
android:text="@string/confirm"
|
|
||||||
/>
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
|
|
||||||
|
|
||||||
</layout>
|
|
||||||
@ -45,7 +45,7 @@
|
|||||||
android:layout_marginRight="8dp"
|
android:layout_marginRight="8dp"
|
||||||
android:background="@drawable/gray_detail_background_round8"
|
android:background="@drawable/gray_detail_background_round8"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:onClick="@{() -> view.selectCodMgrpAndCodDtip()}"
|
android:onClick="@{() -> view.selectDocInfo()}"
|
||||||
android:padding="16dp">
|
android:padding="16dp">
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
@ -86,6 +86,7 @@
|
|||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/mtb_grp_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
@ -122,6 +123,60 @@
|
|||||||
tools:text="FOOD" />
|
tools:text="FOOD" />
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/cod_anag_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:text="@string/cod_anag_name"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/cod_anag"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{viewModel.fornitore.label}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:ellipsize="end"
|
||||||
|
tools:text="F0000 - CARELLI" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:id="@+id/doc_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:text="@string/document_label"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/document"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:ellipsize="end"
|
||||||
|
tools:text="n. 123 del 12/11/2021" />
|
||||||
|
|
||||||
|
</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"
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
<string name="ord_acq_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
<string name="ord_acq_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
||||||
<string name="ord_ven_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
<string name="ord_ven_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
||||||
<string name="ord_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
<string name="ord_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
||||||
|
<string name="doc_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
|
||||||
<string name="ord_ven_testata_data_cons"><![CDATA[Cons <b>%s</b>]]></string>
|
<string name="ord_ven_testata_data_cons"><![CDATA[Cons <b>%s</b>]]></string>
|
||||||
<string name="search">Cerca…</string>
|
<string name="search">Cerca…</string>
|
||||||
<string name="login">Login</string>
|
<string name="login">Login</string>
|
||||||
@ -216,6 +217,7 @@
|
|||||||
<string name="start_date">Data inizio</string>
|
<string name="start_date">Data inizio</string>
|
||||||
<string name="end_date">Data fine</string>
|
<string name="end_date">Data fine</string>
|
||||||
<string name="document_date">Data documento</string>
|
<string name="document_date">Data documento</string>
|
||||||
|
<string name="document_number">Numero documento</string>
|
||||||
<string name="terms_of_delivery">Termini di consegna</string>
|
<string name="terms_of_delivery">Termini di consegna</string>
|
||||||
<string name="vehicle">Automezzo</string>
|
<string name="vehicle">Automezzo</string>
|
||||||
<string name="city">Paese</string>
|
<string name="city">Paese</string>
|
||||||
@ -358,4 +360,12 @@
|
|||||||
<string name="edit_doc">Modifica documento</string>
|
<string name="edit_doc">Modifica documento</string>
|
||||||
<string name="export_document">Esporta documento</string>
|
<string name="export_document">Esporta documento</string>
|
||||||
<string name="save_document">Salva documento</string>
|
<string name="save_document">Salva documento</string>
|
||||||
|
<string name="fornitore">Fornitore</string>
|
||||||
|
<string name="cod_anag_name">Fornitore</string>
|
||||||
|
<string name="delete_document">Elimina documento</string>
|
||||||
|
<string name="document_rif_label">Documento rif. :</string>
|
||||||
|
<string name="gg_scadenza">Shelf life:</string>
|
||||||
|
<string name="selling_prediction">Previsione di vendita</string>
|
||||||
|
<string name="giacenza">Giacenza</string>
|
||||||
|
<string name="order_suggestion">Qtà proposta</string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -51,6 +51,7 @@
|
|||||||
<string name="ord_acq_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
<string name="ord_acq_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
||||||
<string name="ord_ven_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
<string name="ord_ven_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
||||||
<string name="ord_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
<string name="ord_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
||||||
|
<string name="doc_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
||||||
<string name="ord_ven_testata_data_cons"><![CDATA[Ship <b>%s</b>]]></string>
|
<string name="ord_ven_testata_data_cons"><![CDATA[Ship <b>%s</b>]]></string>
|
||||||
<string name="accettazione_title_fragment">Check in</string>
|
<string name="accettazione_title_fragment">Check in</string>
|
||||||
<string name="accettazione_ordine_inevaso_title_empty">Check in order</string>
|
<string name="accettazione_ordine_inevaso_title_empty">Check in order</string>
|
||||||
@ -219,6 +220,7 @@
|
|||||||
<string name="start_date">Start date</string>
|
<string name="start_date">Start date</string>
|
||||||
<string name="end_date">End date</string>
|
<string name="end_date">End date</string>
|
||||||
<string name="document_date">Document date</string>
|
<string name="document_date">Document date</string>
|
||||||
|
<string name="document_number">Document number</string>
|
||||||
<string name="terms_of_delivery">Terms of delivery</string>
|
<string name="terms_of_delivery">Terms of delivery</string>
|
||||||
<string name="vehicle">Vehicle</string>
|
<string name="vehicle">Vehicle</string>
|
||||||
<string name="city">City</string>
|
<string name="city">City</string>
|
||||||
@ -365,4 +367,12 @@
|
|||||||
<string name="edit_doc">Edit document</string>
|
<string name="edit_doc">Edit document</string>
|
||||||
<string name="export_document">Export document</string>
|
<string name="export_document">Export document</string>
|
||||||
<string name="save_document">Save document</string>
|
<string name="save_document">Save document</string>
|
||||||
|
<string name="fornitore">Supplier</string>
|
||||||
|
<string name="cod_anag_name">Supplier</string>
|
||||||
|
<string name="delete_document">Elimina documento</string>
|
||||||
|
<string name="document_rif_label">Reference doc.:</string>
|
||||||
|
<string name="gg_scadenza">Shelf life:</string>
|
||||||
|
<string name="selling_prediction">Sales prediction</string>
|
||||||
|
<string name="giacenza">Stock</string>
|
||||||
|
<string name="order_suggestion">Suggested Qty</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@ -17,4 +17,10 @@
|
|||||||
<item name="android:textColor">@android:color/black</item>
|
<item name="android:textColor">@android:color/black</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="TextInputLayout.OutlineDefault" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
|
||||||
|
<item name="fontFamily">@font/product_sans_regular</item> <!-- target android sdk versions < 26 and > 14 if theme other than AppCompat -->
|
||||||
|
<item name="android:textColorHint">@color/half_black</item>
|
||||||
|
<item name="boxStrokeColor">@color/colorPrimary</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@ -10,7 +10,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:7.0.3'
|
classpath 'com.android.tools.build:gradle:7.0.4'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.3.5'
|
classpath 'com.google.gms:google-services:4.3.5'
|
||||||
classpath 'com.google.firebase:perf-plugin:1.3.5'
|
classpath 'com.google.firebase:perf-plugin:1.3.5'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user