package it.integry.integrywmsnative.core.settings;

import java.util.List;

import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;

public class DBSettingsModel {

    private List<String> availableProfiles = null;
    private List<AvailableCodMdepsDTO> availableCodMdep = null;
    private List<MtbDepoPosizione> availablePosizioni = null;

    private Azienda datiAzienda = null;

    private boolean enableCheckPartitaMagCheckPickingV;
    private boolean flagMultiClienteOrdV;
    private String defaultCodAnag;
    private String defaultCausaleRettificaGiacenze;
    private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
    private boolean flagAskClienteInPickingLibero;
    private boolean flagAllowEmptyClienteInPickingLibero;

    private boolean flagCanAddExtraItemSpedizione;
    private boolean flagCanAutoOpenNewULAccettazione;
    private boolean flagCanAddExtraQuantitySpedizione;
    private boolean flagEnableCheckDepositoSpedizione;
    private boolean flagUseNewPickingListSpedizione;
    private boolean flagVersamentoDirettoProduzione;
    private boolean flagAskPesoColloSpedizione;
    private boolean flagForceAllToColli;
    private boolean flagSpedizioneEnableManualPick;
    private boolean flagSpedizioneCanSelectMultipleOrders;
    private boolean flagSpedizioneUseQtaOrd;
    private String produzioneDefaultCodAnag;
    private String reportNameSpedizionChiudiOrdine;
    private int onNumCnfInputChanged = 1;

    public boolean isFlagSpedizioneEnableFakeGiacenza() {
        return flagSpedizioneEnableFakeGiacenza;
    }

    public DBSettingsModel setFlagSpedizioneEnableFakeGiacenza(boolean flagSpedizioneEnableFakeGiacenza) {
        this.flagSpedizioneEnableFakeGiacenza = flagSpedizioneEnableFakeGiacenza;
        return this;
    }

    private boolean flagSpedizioneEnableFakeGiacenza;

    public List<String> getAvailableProfiles() {
        return availableProfiles;
    }

    public List<MtbDepoPosizione> getAvailablePosizioni() {
        return availablePosizioni;
    }

    public void setAvailableProfiles(List<String> availableProfiles) {
        this.availableProfiles = availableProfiles;
    }

    public void setAvailablePosizioni(List<MtbDepoPosizione> availablePosizioni) {
        this.availablePosizioni = availablePosizioni;
    }

    public Azienda getDatiAzienda() {
        return datiAzienda;
    }

    public DBSettingsModel setDatiAzienda(Azienda datiAzienda) {
            this.datiAzienda = datiAzienda;
        return this;
    }

    public List<AvailableCodMdepsDTO> getAvailableCodMdep() {
        return availableCodMdep;
    }

    public void setAvailableCodMdep(List<AvailableCodMdepsDTO> availableCodMdep) {
        this.availableCodMdep = availableCodMdep;
    }

    public boolean isEnableCheckPartitaMagCheckPickingV() {
        return enableCheckPartitaMagCheckPickingV;
    }

    public DBSettingsModel setEnableCheckPartitaMagCheckPickingV(boolean enableCheckPartitaMagCheckPickingV) {
        this.enableCheckPartitaMagCheckPickingV = enableCheckPartitaMagCheckPickingV;
        return this;
    }

    public boolean isFlagMultiClienteOrdV() {
        return flagMultiClienteOrdV;
    }

    public DBSettingsModel setFlagMultiClienteOrdV(boolean flagMultiClienteOrdV) {
        this.flagMultiClienteOrdV = flagMultiClienteOrdV;
        return this;
    }

    public String getDefaultCodAnag() {
        return defaultCodAnag;
    }

    public DBSettingsModel setDefaultCodAnag(String defaultCodAnag) {
        this.defaultCodAnag = defaultCodAnag;
        return this;
    }

    public String getDefaultCausaleRettificaGiacenze() {
        return defaultCausaleRettificaGiacenze;
    }

    public DBSettingsModel setDefaultCausaleRettificaGiacenze(String defaultCausaleRettificaGiacenze) {
        this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
        return this;
    }

    public DistribuzioneColloDTO.CriterioDistribuzione getDefaultCriterioDistribuzione() {
        return defaultCriterioDistribuzione;
    }

    public DBSettingsModel setDefaultCriterioDistribuzione(String defaultCriterioDistribuzione) {
        this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione);
        return this;
    }

    public boolean isFlagAskClienteInPickingLibero() {
        return flagAskClienteInPickingLibero;
    }

    public DBSettingsModel setFlagAskClienteInPickingLibero(boolean flagAskClienteInPickingLibero) {
        this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero;
        return this;
    }

    public boolean isFlagAllowEmptyClienteInPickingLibero() {
        return flagAllowEmptyClienteInPickingLibero;
    }

    public DBSettingsModel setFlagAllowEmptyClienteInPickingLibero(boolean flagAllowEmptyClienteInPickingLibero) {
        this.flagAllowEmptyClienteInPickingLibero = flagAllowEmptyClienteInPickingLibero;
        return this;
    }

    public boolean isFlagCanAddExtraItemSpedizione() {
        return flagCanAddExtraItemSpedizione;
    }

    public DBSettingsModel setFlagCanAddExtraItemSpedizione(boolean flagCanAddExtraItemSpedizione) {
        this.flagCanAddExtraItemSpedizione = flagCanAddExtraItemSpedizione;
        return this;
    }

    public boolean isFlagCanAutoOpenNewULAccettazione() {
        return flagCanAutoOpenNewULAccettazione;
    }

    public DBSettingsModel setFlagCanAutoOpenNewULAccettazione(boolean flagCanAutoOpenNewULAccettazione) {
        this.flagCanAutoOpenNewULAccettazione = flagCanAutoOpenNewULAccettazione;
        return this;
    }

    public boolean isFlagCanAddExtraQuantitySpedizione() {
        return flagCanAddExtraQuantitySpedizione;
    }

    public DBSettingsModel setFlagCanAddExtraQuantitySpedizione(boolean flagCanAddExtraQuantitySpedizione) {
        this.flagCanAddExtraQuantitySpedizione = flagCanAddExtraQuantitySpedizione;
        return this;
    }


    public boolean isFlagEnableCheckDepositoSpedizione() {
        return flagEnableCheckDepositoSpedizione;
    }

    public DBSettingsModel setFlagEnableCheckDepositoSpedizione(boolean flagEnableCheckDepositoSpedizione) {
        this.flagEnableCheckDepositoSpedizione = flagEnableCheckDepositoSpedizione;
        return this;
    }

    public boolean isFlagAskPesoColloSpedizione() {
        return flagAskPesoColloSpedizione;
    }

    public DBSettingsModel setFlagAskPesoColloSpedizione(boolean flagAskPesoColloSpedizione) {
        this.flagAskPesoColloSpedizione = flagAskPesoColloSpedizione;
        return this;
    }

    public boolean isFlagForceAllToColli() {
        return flagForceAllToColli;
    }

    public DBSettingsModel setFlagForceAllToColli(boolean flagForceAllToColli) {
        this.flagForceAllToColli = flagForceAllToColli;
        return this;
    }

    public boolean isFlagUseNewPickingListSpedizione() {
        return flagUseNewPickingListSpedizione;
    }

    public DBSettingsModel setFlagUseNewPickingListSpedizione(boolean flagUseNewPickingListSpedizione) {
        this.flagUseNewPickingListSpedizione = flagUseNewPickingListSpedizione;
        return this;
    }

    public boolean isFlagVersamentoDirettoProduzione() {
        return flagVersamentoDirettoProduzione;
    }

    public DBSettingsModel setFlagVersamentoDirettoProduzione(boolean flagVersamentoDirettoProduzione) {
        this.flagVersamentoDirettoProduzione = flagVersamentoDirettoProduzione;
        return this;
    }

    public boolean isFlagSpedizioneEnableManualPick() {
        return flagSpedizioneEnableManualPick;
    }

    public DBSettingsModel setFlagSpedizioneEnableManualPick(boolean flagSpedizioneEnableManualPick) {
        this.flagSpedizioneEnableManualPick = flagSpedizioneEnableManualPick;
        return this;
    }

    public boolean isFlagSpedizioneCanSelectMultipleOrders() {
        return flagSpedizioneCanSelectMultipleOrders;
    }

    public DBSettingsModel setFlagSpedizioneCanSelectMultipleOrders(boolean flagSpedizioneCanSelectMultipleOrders) {
        this.flagSpedizioneCanSelectMultipleOrders = flagSpedizioneCanSelectMultipleOrders;
        return this;
    }

    public boolean isFlagSpedizioneUseQtaOrd() {
        return flagSpedizioneUseQtaOrd;
    }

    public DBSettingsModel setFlagSpedizioneUseQtaOrd(boolean flagSpedizioneUseQtaOrd) {
        this.flagSpedizioneUseQtaOrd = flagSpedizioneUseQtaOrd;
        return this;
    }

    public String getProduzioneDefaultCodAnag() {
        return produzioneDefaultCodAnag;
    }

    public DBSettingsModel setProduzioneDefaultCodAnag(String produzioneDefaultCodAnag) {
        this.produzioneDefaultCodAnag = produzioneDefaultCodAnag;
        return this;
    }

    public String getReportNameSpedizionChiudiOrdine() {
        return reportNameSpedizionChiudiOrdine;
    }

    public DBSettingsModel setReportNameSpedizionChiudiOrdine(String reportNameSpedizionChiudiOrdine) {
        this.reportNameSpedizionChiudiOrdine = reportNameSpedizionChiudiOrdine;
        return this;
    }

    public int getOnNumCnfInputChanged() {
        return onNumCnfInputChanged;
    }

    public DBSettingsModel setOnNumCnfInputChanged(int onNumCnfInputChanged) {
        this.onNumCnfInputChanged = onNumCnfInputChanged;
        return this;
    }
}
