package it.integry.integrywmsnative.core.rest.model.inventario;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbUntMis;

public class InventarioArtDTO {

    private String codMart;
    private String descrizione;
    private String untMis;
    private BigDecimal qtaCnf;
    private ArrayList<String> barcode;
    private boolean flagTracciabilita;
    private boolean flagQtaCnfFissa;
    private BigDecimal giacenza;
    private boolean plu;
    private BigDecimal przVendIva;
    private boolean untMisDigitale;

    public String getCodMart() {
        return codMart;
    }

    public InventarioArtDTO setCodMart(String codMart) {
        this.codMart = codMart;
        return this;
    }

    public String getDescrizione() {
        return descrizione;
    }

    public InventarioArtDTO setDescrizione(String descrizione) {
        this.descrizione = descrizione;
        return this;
    }

    public String getUntMis() {
        return untMis;
    }

    public InventarioArtDTO setUntMis(String untMis) {
        this.untMis = untMis;
        return this;
    }

    public BigDecimal getQtaCnf() {
        return qtaCnf;
    }

    public InventarioArtDTO setQtaCnf(BigDecimal qtaCnf) {
        this.qtaCnf = qtaCnf;
        return this;
    }

    public List<String> getBarcode() {
        return barcode;
    }

    public InventarioArtDTO setBarcode(ArrayList<String> barcode) {
        this.barcode = barcode;
        return this;
    }

    public boolean isFlagTracciabilita() {
        return flagTracciabilita;
    }

    public InventarioArtDTO setFlagTracciabilita(boolean flagTracciabilita) {
        this.flagTracciabilita = flagTracciabilita;
        return this;
    }

    public boolean isFlagQtaCnfFissa() {
        return flagQtaCnfFissa;
    }

    public InventarioArtDTO setFlagQtaCnfFissa(boolean flagQtaCnfFissa) {
        this.flagQtaCnfFissa = flagQtaCnfFissa;
        return this;
    }

    public BigDecimal getGiacenza() {
        return giacenza;
    }

    public InventarioArtDTO setGiacenza(BigDecimal giacenza) {
        this.giacenza = giacenza;
        return this;
    }

    public boolean isPlu() {
        return plu;
    }

    public InventarioArtDTO setPlu(boolean plu) {
        this.plu = plu;
        return this;
    }

    public BigDecimal getPrzVendIva() {
        return przVendIva;
    }

    public InventarioArtDTO setPrzVendIva(BigDecimal przVendIva) {
        this.przVendIva = przVendIva;
        return this;
    }

    public boolean isUntMisDigitale() {
        return untMisDigitale;
    }

    public InventarioArtDTO setUntMisDigitale(boolean untMisDigitale) {
        this.untMisDigitale = untMisDigitale;
        return this;
    }

    public MtbAart toMtbAart() {
        MtbUntMis mtbUntMis = new MtbUntMis()
                .setUntMis(getUntMis())
                .setFlagDig(isUntMisDigitale() ? "S" : "N");
        List<MtbUntMis> mtbUntMisList = Collections.singletonList(mtbUntMis);

        return new MtbAart()
                .setCodMart(getCodMart())
                .setDescrizione(getDescrizione())
                .setDescrizioneEstesa(getDescrizione())
                .setBarCode(!getBarcode().isEmpty() ? getBarcode().get(0) : null)
                .setUntMis(getUntMis())
                .setQtaCnf(getQtaCnf())
                .setPlu(isPlu() ? "S" : "N")
                .setFlagTracciabilita(isFlagTracciabilita() ? "S" : "N")
                .setFlagQtaCnfFissa(isFlagQtaCnfFissa() ? "S" : "N")
                .setMtbUntMis(mtbUntMisList);
    }
}
