using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_Aplicacion.Modelos_Generales
{
    public class INTERNO_ImportesImpuestos_Modelo
    {
        #region Constructores
        public INTERNO_ImportesImpuestos_Modelo()
        { }
        public INTERNO_ImportesImpuestos_Modelo(long _lng_idImpuestoTipo,
                                                string _str_ImpuestoTipo,
                                                long _lng_idImpuestoLinea,
                                                decimal _dcm_Bruto ,
                                                decimal _dcm_DescuentoProntoPago_Calculado,
                                                decimal _dcm_DescuentoFacturaFinal_Calculado,
                                                decimal _dcm_BaseImponible ,
                                                decimal? _dcm_Impuesto_Porcentaje,
                                                decimal _dcm_Impuesto_Calculado,
                                                decimal? _dcm_Recargo_Porcentaje,
                                                decimal _dcm_Recargo_Calculado,
                                                decimal _dcm_Total,
                                                bool _bol_EsLineaTotal)
        {
            IdImpuestoTipo = _lng_idImpuestoTipo;
            ImpuestoTipo = _str_ImpuestoTipo;
            IdImpuestoLinea= _lng_idImpuestoLinea;
            Bruto = _dcm_Bruto;
            DescuentoProntoPago_Calculado = _dcm_DescuentoProntoPago_Calculado;
            DescuentoFacturaFinal_Calculado = _dcm_DescuentoFacturaFinal_Calculado;
            DescuentoAlbaranFinal_Calculado = 0m;
            BaseImponible = _dcm_BaseImponible;
            Impuesto_Porcentaje = _dcm_Impuesto_Porcentaje;
            Impuesto_Calculado = _dcm_Impuesto_Calculado;
            Recargo_Porcentaje = _dcm_Recargo_Porcentaje;
            Recargo_Calculado = _dcm_Recargo_Calculado;
            Total = _dcm_Total;
            EsLineaTotal = _bol_EsLineaTotal;
            IdAlbaranCabecera = null;
            DescuentoAlbaranFinal = null;
            Albaran_Numero = "";

            Retencion_Sobre_Total = false;
            BaseRetencion = 0m;
            IdRetencionTipo = null;
            RetencionTipo = "";
            IdRetencion = null;
            Retencion_Porcentaje = null;
            Retencion_Calculado = 0;
        }

        public INTERNO_ImportesImpuestos_Modelo(long? _lng_idImpuestoTipo,
                                                string _str_ImpuestoTipo,
                                                long? _lng_idImpuestoLinea,
                                                decimal _dcm_Bruto,
                                                decimal _dcm_DescuentoProntoPago_Calculado,
                                                decimal _dcm_DescuentoFacturaFinal_Calculado,
                                                decimal _dcm_DescuentoAlbaranFinal_Calculado,
                                                decimal _dcm_BaseImponible,
                                                decimal? _dcm_Impuesto_Porcentaje,
                                                decimal _dcm_Impuesto_Calculado,
                                                decimal? _dcm_Recargo_Porcentaje,
                                                decimal _dcm_Recargo_Calculado,
                                                decimal _dcm_Total,
                                                bool _bol_EsLineaTotal)
        {
            IdImpuestoTipo = _lng_idImpuestoTipo;
            ImpuestoTipo = _str_ImpuestoTipo;
            IdImpuestoLinea = _lng_idImpuestoLinea;
            Bruto = _dcm_Bruto;
            DescuentoProntoPago_Calculado = _dcm_DescuentoProntoPago_Calculado;
            DescuentoFacturaFinal_Calculado = _dcm_DescuentoFacturaFinal_Calculado;
            DescuentoAlbaranFinal_Calculado = _dcm_DescuentoAlbaranFinal_Calculado;
            BaseImponible = _dcm_BaseImponible;
            Impuesto_Porcentaje = _dcm_Impuesto_Porcentaje;
            Impuesto_Calculado = _dcm_Impuesto_Calculado;
            Recargo_Porcentaje = _dcm_Recargo_Porcentaje;
            Recargo_Calculado = _dcm_Recargo_Calculado;
            Total = _dcm_Total;
            EsLineaTotal = _bol_EsLineaTotal;
            IdAlbaranCabecera = null;
            DescuentoAlbaranFinal = null;
            Albaran_Numero = "";

            Retencion_Sobre_Total = false;
            BaseRetencion = 0m;
            IdRetencionTipo = null;
            RetencionTipo = "";
            IdRetencion = null;
            Retencion_Porcentaje = null;
            Retencion_Calculado = 0;
        }

        public INTERNO_ImportesImpuestos_Modelo(decimal _dcm_Bruto,
                                                decimal _dcm_DescuentoProntoPago_Calculado,
                                                decimal _dcm_DescuentoFacturaFinal_Calculado,
                                                decimal _dcm_BaseImponible,
                                                decimal _dcm_Total,
                                                bool _bol_EsLineaTotal,
                                                long? _lng_IdRetencionTipo,
                                                string _str_RetencionTipo ,
                                                long? _lng_IdRetencion,
                                                decimal? _dcm_Retencion_Porcentaje,
                                                decimal _dcm_Retencion_Calculado)
        {
            IdImpuestoTipo = null;
            ImpuestoTipo = "";
            IdImpuestoLinea = null;
            Bruto = _dcm_Bruto;
            DescuentoProntoPago_Calculado = _dcm_DescuentoProntoPago_Calculado;
            DescuentoFacturaFinal_Calculado = _dcm_DescuentoFacturaFinal_Calculado;
            DescuentoAlbaranFinal_Calculado = 0m;
            BaseImponible = _dcm_BaseImponible;
            Impuesto_Porcentaje = null;
            Impuesto_Calculado = 0;
            Recargo_Porcentaje = null;
            Recargo_Calculado = 0;
            Total = _dcm_Total;
            EsLineaTotal = _bol_EsLineaTotal;
            IdAlbaranCabecera = null;
            DescuentoAlbaranFinal = null;
            Albaran_Numero = "";

            Retencion_Sobre_Total = false;
            BaseRetencion = 0m;
            IdRetencionTipo = null;
            RetencionTipo = "";
            IdRetencion = null;
            Retencion_Porcentaje = null;
            Retencion_Calculado = 0;
        }


        #endregion

        public long? IdImpuestoTipo { get; set; }
        public string ImpuestoTipo { get; set; }
        public long? IdImpuestoLinea { get; set; }

        public long? IdRetencionTipo { get; set; }
        public string RetencionTipo { get; set; }
        public long? IdRetencion { get; set; }

        public decimal Bruto { get; set; }
        public decimal DescuentoProntoPago_Calculado { get; set; }
        public decimal DescuentoFacturaFinal_Calculado { get; set; }
        public decimal DescuentoAlbaranFinal_Calculado { get; set; }
        public decimal BaseImponible { get; set; }

        public decimal? Impuesto_Porcentaje { get; set; }
        public decimal Impuesto_Calculado { get; set; }
        public decimal? Recargo_Porcentaje { get; set; }
        public decimal Recargo_Calculado { get; set; }

        public bool Retencion_Sobre_Total { get; set; }
        public decimal BaseRetencion { get; set; }
        public decimal? Retencion_Porcentaje { get; set; }
        public decimal Retencion_Calculado { get; set; }

        public decimal Total { get; set; }
        public decimal Total_Final { get; set; }
        public bool EsLineaTotal { get; set; }

        public long? IdAlbaranCabecera { get; set; }
        public string Albaran_Numero { get; set; }
        public decimal? DescuentoAlbaranFinal { get; set; }
    }
}
