using Exferia_Compras.General;
using Exferia_EntityFramework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_Compras._0_Modelos
{
    public class INTERNO_COM_RemesasAcumulados_Listado_Modelo : COM_RemesasAcumulados, IExportableXML
    {
        #region Interface
        public decimal Importe
        {
            get { return importe ?? 0; }
        }
        public string DireccionFiscal_Nombrevia
        {
            get { return Proveedor_DireccionFiscal_Nombrevia; }
        }
        public string DireccionFiscal_CodigoPostal
        {
            get { return Proveedor_DireccionFiscal_CodigoPostal; }
        }

        public string DireccionFiscal_Pais_Codigo_ISO2D
        {
            get { return Proveedor_DireccionFiscal_Pais_Codigo_ISO2D; }
        }
        public string DireccionFiscal_Poblacion_Descripcion
        {
            get { return Proveedor_DireccionFiscal_Poblacion_Descripcion; }
        }
        public string DireccionFiscal_Provincia_Descripcion
        {
            get { return Proveedor_DireccionFiscal_Provincia_Descripcion; }
        }
        #endregion Interface

        #region Proveedor
        public string Proveedor_CIF { get; set; }
        public string Proveedor_Codigo { get; set; }
        public string Proveedor_RazonSocial { get; set; }
        public DateTime? Proveedor_FechaBorrado { get; set; }
        public string Proveedor_DireccionFiscal_Nombrevia { get; set; }
        public string Proveedor_DireccionFiscal_CodigoPostal { get; set; }

        public string Proveedor
        {
            get
            {
                string str_Aux = "";

                //Codigo
                if (Proveedor_Codigo != null && Proveedor_Codigo.Trim().Length > 0)
                {
                    str_Aux = "(" + Proveedor_Codigo + ") ";
                }

                //Descripcion
                if (Proveedor_RazonSocial != null && Proveedor_RazonSocial.Trim().Length > 0)
                {
                    str_Aux += Proveedor_RazonSocial;
                }

                return str_Aux;
            }
        }
        #endregion

        #region CuentaBancaria
        public string CuentaBancaria_IBAN { get; set; }
        public string CuentaBancaria_Descripcion { get; set; }
        public DateTime? CuentaBancaria_FechaBorrado { get; set; }
        public bool? CuentaBancaria_PorDefecto { get; set; }
        public string CuentaBancaria_BicSwift { get; set; }
        public string CuentaBancaria
        {
            get
            {
                string str_Aux = "";

                //Codigo
                if (CuentaBancaria_IBAN != null && CuentaBancaria_IBAN.Trim().Length > 0)
                {
                    str_Aux = "(" + CuentaBancaria_IBAN + ") ";
                }

                //Descripcion
                if (CuentaBancaria_Descripcion != null && CuentaBancaria_Descripcion.Trim().Length > 0)
                {
                    str_Aux += CuentaBancaria_Descripcion;
                }

                //Si no tiene nada, mostrar un texto de error
                if (str_Aux.Trim().Length == 0)
                {
                    str_Aux = Variables_Compras.G_STR_TEXTO_COLUMNA_LISTADO_NOEXISTE;
                }

                return str_Aux;
            }
        }
        #endregion

        #region TipoPago_Texto
        public string TipoPago_Texto
        {
            get
            {
                string str_TipoPago_Texto = "";

                //EmisionChequeBancario
                if (tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUEBANCARIO.Codigo))
                {
                    str_TipoPago_Texto = Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUEBANCARIO.Descripcion;
                }
                //EmisionCheque
                else if (tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUE.Codigo))
                {
                    str_TipoPago_Texto = Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUE.Descripcion;
                }
                //Transferencia No SEPA
                else if (tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_NOSEPA.Codigo))
                {
                    str_TipoPago_Texto = Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_NOSEPA.Descripcion;
                }
                //Transferencia SEPA
                else
                {
                    str_TipoPago_Texto = Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_SEPA.Descripcion;
                }

                return str_TipoPago_Texto;
            }
        }
        #endregion

        #region Prioridad_Texto
        public string Prioridad_Texto
        {
            get
            {
                string str_Prioridad_Texto = "";

                if (prioridad != null &&
                    (
                        tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_NOSEPA.Codigo) ||
                        tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_SEPA.Codigo)
                    ))
                {
                    //Alta
                    if (prioridad == int.Parse(Variables_Compras.G_MDL_PRIORIDAD_ALTA.Codigo))
                    {
                        str_Prioridad_Texto = Variables_Compras.G_MDL_PRIORIDAD_ALTA.Descripcion;
                    }
                    //Normal
                    else if (prioridad == int.Parse(Variables_Compras.G_MDL_PRIORIDAD_NORMAL.Codigo))
                    {
                        str_Prioridad_Texto = Variables_Compras.G_MDL_PRIORIDAD_NORMAL.Descripcion;
                    }
                }

                return str_Prioridad_Texto;
            }
        }
        #endregion

        #region Gastos_Texto
        public string Gastos_Texto
        {
            get
            {
                string str_Gastos_Texto = "";

                if (gastos != null &&
                    (
                        tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_NOSEPA.Codigo) ||
                        tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_TRANSFERENCIA_SEPA.Codigo)
                    ))
                {
                    //Por cuenta del Beneficiario
                    if (gastos == int.Parse(Variables_Compras.G_MDL_GASTOS_CUENTABENEFICIARIO.Codigo))
                    {
                        str_Gastos_Texto = Variables_Compras.G_MDL_GASTOS_CUENTABENEFICIARIO.Descripcion;
                    }
                    //Por cuenta del Ordenante
                    else if (gastos == int.Parse(Variables_Compras.G_MDL_GASTOS_CUENTAORDENANTE.Codigo))
                    {
                        str_Gastos_Texto = Variables_Compras.G_MDL_GASTOS_CUENTAORDENANTE.Descripcion;
                    }
                    //Gastos compartidos
                    else if (gastos == int.Parse(Variables_Compras.G_MDL_GASTOS_GASTOSCOMPARTIDOS.Codigo))
                    {
                        str_Gastos_Texto = Variables_Compras.G_MDL_GASTOS_GASTOSCOMPARTIDOS.Descripcion;
                    }
                    //Nivel de servicio acordado
                    else if (gastos == int.Parse(Variables_Compras.G_MDL_GASTOS_NIVELDESERVICIOACORDADO.Codigo))
                    {
                        str_Gastos_Texto = Variables_Compras.G_MDL_GASTOS_NIVELDESERVICIOACORDADO.Descripcion;
                    }
                }

                return str_Gastos_Texto;
            }
        }
        #endregion

        #region TipoCheque_Texto
        public string TipoCheque_Texto
        {
            get
            {
                string str_TipoCheque_Texto = "";

                if (tipoCheque != null &&
                    tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUEBANCARIO.Codigo))
                {
                    //Cheque bancario
                    if (tipoCheque == int.Parse(Variables_Compras.G_MDL_TIPOCHEQUE_BANCARIO.Codigo))
                    {
                        str_TipoCheque_Texto = Variables_Compras.G_MDL_TIPOCHEQUE_BANCARIO.Descripcion;
                    }
                    ///Cheque nomina
                    else if (tipoCheque == int.Parse(Variables_Compras.G_MDL_TIPOCHEQUE_NOMINA.Codigo))
                    {
                        str_TipoCheque_Texto = Variables_Compras.G_MDL_TIPOCHEQUE_NOMINA.Descripcion;
                    }
                }

                return str_TipoCheque_Texto;
            }
        }
        #endregion

        #region Cruzado_Texto
        public string Cruzado_Texto
        {
            get
            {
                string str_Cruzado_Texto = "";

                if (cruzado != null &&
                    tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUEBANCARIO.Codigo))
                {
                    //Nivel de servicio acordado
                    if (cruzado == int.Parse(Variables_Compras.G_MDL_CRUZADO_NIVELDESERVICIOACORDADO.Codigo))
                    {
                        str_Cruzado_Texto = Variables_Compras.G_MDL_CRUZADO_NIVELDESERVICIOACORDADO.Descripcion;
                    }
                    //Cruzado/Para abonar en cuenta
                    else if (cruzado == int.Parse(Variables_Compras.G_MDL_CRUZADO_CRUZADO.Codigo))
                    {
                        str_Cruzado_Texto = Variables_Compras.G_MDL_CRUZADO_CRUZADO.Descripcion;
                    }
                    //No cruzado
                    else if (cruzado == int.Parse(Variables_Compras.G_MDL_CRUZADO_NOCRUZADO.Codigo))
                    {
                        str_Cruzado_Texto = Variables_Compras.G_MDL_CRUZADO_NOCRUZADO.Descripcion;
                    }
                }

                return str_Cruzado_Texto;
            }
        }
        #endregion

        #region Carta_Texto
        public string Carta_Texto
        {
            get
            {
                string str_Carta_Texto = "";

                if (carta != null &&
                    tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUEBANCARIO.Codigo))
                {
                    //Nivel de servicio acordado
                    if (carta == int.Parse(Variables_Compras.G_MDL_CARTA_NIVELDESERVICIOACORDADO.Codigo))
                    {
                        str_Carta_Texto = Variables_Compras.G_MDL_CARTA_NIVELDESERVICIOACORDADO.Descripcion;
                    }
                    //Con carta
                    else if (carta == int.Parse(Variables_Compras.G_MDL_CARTA_CONCARTA.Codigo))
                    {
                        str_Carta_Texto = Variables_Compras.G_MDL_CARTA_CONCARTA.Descripcion;
                    }
                    //Sin carta
                    else if (carta == int.Parse(Variables_Compras.G_MDL_CARTA_SINCARTA.Codigo))
                    {
                        str_Carta_Texto = Variables_Compras.G_MDL_CARTA_SINCARTA.Descripcion;
                    }
                }

                return str_Carta_Texto;
            }
        }
        #endregion

        #region TipoEntrega_Texto
        public string TipoEntrega_Texto
        {
            get
            {
                string str_TipoEntrega_Texto = "";

                if (tipoEntrega != null &&
                    tipoPago == int.Parse(Variables_Compras.G_MDL_TIPOPAGO_EMISIONCHEQUEBANCARIO.Codigo))
                {
                    //Courier al Beneficiario
                    if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_COURIERBENEFICIARIO.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_COURIERBENEFICIARIO.Descripcion;
                    }
                    //Courier al Ordenante
                    else if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_COURIERORDENANTE.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_COURIERORDENANTE.Descripcion;
                    }
                    //Correo postal al Beneficiario
                    else if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_CORREOPOSTALBENEFICIARIO.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_CORREOPOSTALBENEFICIARIO.Descripcion;
                    }
                    ///Correo postal al Ordenante
                    else if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_CORREOPOSTALORDENANTE.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_CORREOPOSTALORDENANTE.Descripcion;
                    }
                    //Recoger en oficina (Ordenante)
                    else if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_RECOGERENOFICINA.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_RECOGERENOFICINA.Descripcion;
                    }
                    //Correo certificado al Beneficiario
                    else if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_CORREOCERTIFICADOBENEFICIARIO.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_CORREOCERTIFICADOBENEFICIARIO.Descripcion;
                    }
                    //Correo certificado al Ordenante
                    else if (tipoEntrega == int.Parse(Variables_Compras.G_MDL_TIPOENTREGA_CORREOCERTIFICADOORDENANTE.Codigo))
                    {
                        str_TipoEntrega_Texto = Variables_Compras.G_MDL_TIPOENTREGA_CORREOCERTIFICADOORDENANTE.Descripcion;
                    }
                }

                return str_TipoEntrega_Texto;
            }
        }
        #endregion

        #region Direccion Fiscal
        public string Proveedor_DireccionFiscal_Pais_Codigo_ISO2D { get; set; }
        public string Proveedor_DireccionFiscal_Poblacion_Descripcion { get; set; }
        public string Proveedor_DireccionFiscal_Provincia_Descripcion { get; set; }
        #endregion Direccion Fiscal
    }
}
