using Exferia_Aplicacion.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_FacturasCabecera_Bolsa_Listado_Modelo 
    {
        public bool Seleccionar { get; set; }

        //id
        public long id { get; set; }

        //numeroFactura
        public string numeroFactura { get; set; }

        //fecha
        public DateTime fecha { get; set; }

        //fechaIntroduccion
        public DateTime fechaIntroduccion { get; set; }

        //estado
        public string estado { get; set; }

        //autoliquidacion
        public bool? autoliquidacion { get; set; }

        //descripcion
        public string descripcion { get; set; }

        //descuentoProntoPago
        public decimal? descuentoProntoPago { get; set; }

        //descuentoFinalFactura
        public decimal? descuentoFinalFactura { get; set; }

        //noDeclararEnInformativas
        public bool? noDeclararEnInformativas { get; set; }

        //facturaArrendamiento
        public bool? facturaArrendamiento { get; set; }

        //facturaAduana
        public bool? facturaAduana { get; set; }

        //bienesInversion
        public bool? bienesInversion { get; set; }

        //gasto
        public bool? gasto { get; set; }

        //criterioCaja
        public bool? criterioCaja { get; set; }

        //fechaBorrado
        public DateTime? fechaBorrado { get; set; }

        //total_retencion
        public decimal? total_retencion { get; set; }

        //total_retencion_Base
        public decimal? total_retencion_Base { get; set; }

        //numeroFacturaProveedor
        public string numeroFacturaProveedor { get; set; }

        //tipoPantalla
        public int? tipoPantalla { get; set; }

        //total_bruto
        public decimal? total_bruto { get; set; }

        //total_descuentoProntoPago
        public decimal? total_descuentoProntoPago { get; set; }

        //total_descuentoFinalFactura
        public decimal? total_descuentoFinalFactura { get; set; }

        //total_baseImponible
        public decimal? total_baseImponible { get; set; }

        //total_impuesto
        public decimal? total_impuesto { get; set; }

        //total_recargo
        public decimal? total_recargo { get; set; }

        //total
        public decimal total { get; set; }

        //total_sinRetencion
        public decimal total_sinRetencion { get; set; }

        #region  Delegacion
        public long idDelegacion { get; set; }
        public string Delegacion_Codigo { get; set; }
        public string Delegacion_Descripcion { get; set; }
        public DateTime? Delegacion_FechaBorrado { get; set; }
        public string Delegacion
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region  RetencionTipo
        public long idRetencionTipo { get; set; }
        public string RetencionTipo_Codigo { get; set; }
        public string RetencionTipo_Descripcion { get; set; }
        public DateTime? RetencionTipo_FechaBorrado { get; set; }
        public string RetencionTipo
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region Empresa
        public long idEmpresa { get; set; }
        public string Empresa_Codigo { get; set; }
        public string Empresa_Descripcion { get; set; }
        public DateTime? Empresa_FechaBorrado { get; set; }
        public string Empresa
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region Proveedor
        public long idProveedor { get; set; }
        public string Proveedor_Codigo { get; set; }
        public string Proveedor_RazonSocial { get; set; }
        public string Proveedor_NombreComercial { get; set; }
        #endregion

        #region ImpuestoCabecera
        public long idImpuestoCabecera { get; set; }
        public string ImpuestoCabecera_Codigo { get; set; }
        public string ImpuestoCabecera_Descripcion { get; set; }
        public DateTime? ImpuestoCabecera_FechaBorrado { get; set; }
        public string ImpuestoCabecera
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region Empleado
        public long idEmpleado { get; set; }
        public string Empleado_Codigo { get; set; }
        public string Empleado_Nombre { get; set; }
        public DateTime? Empleado_FechaBorrado { get; set; }
        public string Empleado
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region FormaPago
        public long idFormaPago { get; set; }
        public string FormaPago_Codigo { get; set; }
        public string FormaPago_Nombre { get; set; }
        public DateTime? FormaPago_FechaBorrado { get; set; }
        public string FormaPago
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region PredefinidoCabecera (Factura)
        public long? idPredefinidoCabecera { get; set; }
        public string PredefinidoCabeceraFactura_Codigo { get; set; }
        public string PredefinidoCabeceraFactura_Descripcion { get; set; }
        public DateTime? PredefinidoCabeceraFactura_FechaBorrado { get; set; }
        public string PredefinidoCabeceraFactura
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region PredefinidoCabecera (Abono)
        public long? idPredefinidoCabecera_Abono { get; set; }
        public string PredefinidoCabeceraAbono_Codigo { get; set; }
        public string PredefinidoCabeceraAbono_Descripcion { get; set; }
        public DateTime? PredefinidoCabeceraAbono_FechaBorrado { get; set; }
        public string PredefinidoCabeceraAbono
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region ClaveAnalitica
        public long? idClaveAnalitica { get; set; }
        public string ClaveAnalitica_Codigo { get; set; }
        public string ClaveAnalitica_Descripcion { get; set; }
        public DateTime? ClaveAnalitica_FechaBorrado { get; set; }
        public string ClaveAnalitica
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region Ejercicio
        public GEN_EjerciciosActivos_Empresa Ejercicios_Empresa { get; set; }
        public long idEjercicio
        {
            get
            {
                long lng_Aux = -1;

                if (Ejercicios_Empresa != null)
                {
                    lng_Aux = Ejercicios_Empresa.id;
                }

                return lng_Aux;
            }
        }
        public string Ejercicio
        {
            get
            {
                string str_Aux = "";

                if (Ejercicios_Empresa != null)
                {
                    str_Aux = Ejercicios_Empresa.anioControl;
                }

                return str_Aux;
            }
        }
        #endregion

        #region Expediente
        public long? idExpediente { get; set; }
        public long? Expediente_Codigo { get; set; }
        public string Expediente_Descripcion { get; set; }
        public DateTime? Expediente_FechaBorrado { get; set; }
        public string Expediente
        {
            get
            {
                string str_Aux = "";

                //Codigo
                if (Expediente_Codigo != null)
                {
                    str_Aux = "(" + Expediente_Codigo.Value.ToString() + ") ";
                }

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

                return str_Aux;
            }
        }
        #endregion

        #region Contrato
        public long? idContrato { get; set; }
        public string Contrato_Codigo { get; set; }
        public string Contrato_Descripcion { get; set; }
        public DateTime? Contrato_FechaBorrado { get; set; }
        public string Contrato
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        #region Concepto
        public long? idConcepto { get; set; }
        public string Concepto_Codigo { get; set; }
        public string Concepto_Descripcion { get; set; }
        public DateTime? Concepto_FechaBorrado { get; set; }
        public string Concepto
        {
            get
            {
                string str_Aux = "";

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

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

                return str_Aux;
            }
        }
        #endregion

        public string Estado_Texto
        {
            get
            {
                string str_Estado_Texto = Variables.G_STR_ESTADO_CONTABILIDAD_ABIERTO_TEXTO;

                if (estado.Equals(Variables.G_STR_ESTADO_CONTABILIDAD_CERRADO))
                {
                    str_Estado_Texto = Variables.G_STR_ESTADO_CONTABILIDAD_CERRADO_TEXTO;
                }
                else if (estado.Equals(Variables.G_STR_ESTADO_CONTABILIDAD_VOLCADO))
                {
                    str_Estado_Texto = Variables.G_STR_ESTADO_CONTABILIDAD_VOLCADO_TEXTO;
                }

                return str_Estado_Texto;
            }
        }
    }
}
