Example #1
0
        /// <summary>
        /// Devuelve el cuerpo de una operación sujeta.
        /// </summary>
        /// <param name = "skipErrors" > Indica si hay que omitir las excepciones.</param>
        /// <returns>Operación sujeta correspondiente a la factura.</returns>
        internal DesgloseIVA GetDesgloseIVA(bool skipErrors = false)
        {
            DesgloseIVA desgloseIVA = new DesgloseIVA();

            if (TaxesOutputs.Count > 0)
            {
                foreach (KeyValuePair <decimal, decimal[]> taxOut in TaxesOutputs)
                {
                    DetalleIVA detalleIVA = new DetalleIVA()
                    {
                        TipoImpositivo = (taxOut.Value[2] == 0 && taxOut.Value[3] == 0) ? SIIParser.FromDecimal(taxOut.Key) : "0",
                        BaseImponible  = SIIParser.FromDecimal(taxOut.Value[0]),
                        CuotaSoportada = SIIParser.FromDecimal(taxOut.Value[1]),
                    };

                    if (Settings.Current.IDVersionSii.CompareTo("1.1") >= 0 && IsAsset)
                    {
                        detalleIVA.BienInversion = "S";
                    }

                    if (taxOut.Value[2] != 0)
                    {
                        detalleIVA.TipoRecargoEquivalencia  = SIIParser.FromDecimal(taxOut.Key);
                        detalleIVA.CuotaRecargoEquivalencia = SIIParser.FromDecimal(taxOut.Value[2]);
                    }

                    if (taxOut.Value[3] != 0)
                    {
                        if (taxOut.Value[2] != 0 && !skipErrors)
                        {
                            throw new Exception("Only one value can be non zero: taxAmountCompensacionREAGYP != 0 and taxAmountRecargoEquivalencia != 0.");
                        }

                        if (ClaveRegimenEspecialOTrascendencia != ClaveRegimenEspecialOTrascendencia.ExportacionREAGYP && !skipErrors)
                        {
                            throw new Exception("ClaveRegimenEspecialOTrascendencia must be ClaveRegimenEspecialOTrascendencia.ExportacionREAGYP.");
                        }

                        detalleIVA.TipoImpositivo            = detalleIVA.CuotaSoportada = null;
                        detalleIVA.PorcentCompensacionREAGYP = SIIParser.FromDecimal(taxOut.Key);
                        detalleIVA.ImporteCompensacionREAGYP = SIIParser.FromDecimal(taxOut.Value[3]);
                    }


                    desgloseIVA.DetalleIVA.Add(detalleIVA);
                }
            }
            else
            {
                desgloseIVA.DetalleIVA.Add(new DetalleIVA()
                {
                    BaseImponible = SIIParser.FromDecimal(GrossAmount)
                });
            }

            return(desgloseIVA);
        }
Example #2
0
        /// <summary>
        /// Rutina para añadir los desgloses de IVA correspondientes por cada factura.
        /// </summary>
        /// <param name="_CamposReg"></param>
        /// <param name="_FacturaActual"></param>
        /// <returns></returns>

        private RegistroLRFacturasEmitidas AgregarDesgloseIVA(string[] _CamposReg, RegistroLRFacturasEmitidas _FacturaActual)
        {
            RegistroLRFacturasEmitidas _FactActualWrk = _FacturaActual;
            TipoDesglose    _TipoDesgloseTmp          = new TipoDesglose();
            DesgloseFactura _DesgloseFactTmp          = new DesgloseFactura();
            Sujeta          _SujetaTmp = new Sujeta();

            // Procedemos a tratar la factura actual.
            // En este caso añadiremos las líneas de fiscalidad que hayamos leido a la factura que estemos tratando en ese momento
            string _RegImpos = _CamposReg[1];

            if (_RegImpos == "E ")
            {
                Exenta _ExentaWrk = new Exenta
                {
                    CausaExencion = _CamposReg[7],
                    BaseImponible = ((_CamposReg[4]).Trim()).Replace(',', '.')
                };
                ;
                // La CausaExencion es opcional, de manera que no la informamos.
                _SujetaTmp.Exenta                = _ExentaWrk;
                _DesgloseFactTmp.Sujeta          = _SujetaTmp;
                _TipoDesgloseTmp.DesgloseFactura = _DesgloseFactTmp;
            }
            else
            {
                NoExenta _NoExentaWrk = new NoExenta
                {
                    TipoNoExenta = _CamposReg[2]
                };
                DesgloseIVA _DesgloseIVAWrk = new DesgloseIVA();

                DetalleIVA _DetalleIVAWrk = new DetalleIVA
                {
                    TipoImpositivo = ((_CamposReg[3]).Trim()).Replace(',', '.')
                };
                ;
                _DetalleIVAWrk.BaseImponible    = ((_CamposReg[4]).Trim()).Replace(',', '.');;
                _DetalleIVAWrk.CuotaRepercutida = ((_CamposReg[5]).Trim()).Replace(',', '.');;

                _DesgloseIVAWrk.DetalleIVA.Add(_DetalleIVAWrk);
                _NoExentaWrk.DesgloseIVA = _DesgloseIVAWrk;

                _SujetaTmp.NoExenta     = _NoExentaWrk;
                _DesgloseFactTmp.Sujeta = _SujetaTmp;

                _TipoDesgloseTmp.DesgloseFactura = _DesgloseFactTmp;
            }

            _FactActualWrk.FacturaExpedida.TipoDesglose = _TipoDesgloseTmp;
            return(_FactActualWrk);
        }
Example #3
0
        /// <summary>
        /// Función para agregar los desgloses de IVA que vengan en el fichero.
        /// </summary>
        /// <param name="_CamposReg"></param>
        /// <param name="_FacturaActual"></param>
        /// <returns></returns>
        private RegistroLRFacturasRecibidas AgregarDesgloseIVA(string[] _CamposReg, RegistroLRFacturasRecibidas _FacturaActual, bool _NuevoDetalle)
        {
            RegistroLRFacturasRecibidas _FactActualWrk = _FacturaActual;

            if (_NuevoDetalle)
            {
                _FactActualWrk.FacturaRecibida.DesgloseFactura = new DesgloseFacturaR
                {
                    InversionSujetoPasivo = new DesgloseIVA(),
                    DesgloseIVA           = new DesgloseIVA()
                };
            }

            DetalleIVA _DetalleIVAWrk = new DetalleIVA
            {
                TipoImpositivo = ((_CamposReg[3]).Trim()).Replace(',', '.')
            };

            ;
            _DetalleIVAWrk.BaseImponible  = ((_CamposReg[4]).Trim()).Replace(',', '.');;
            _DetalleIVAWrk.CuotaSoportada = ((_CamposReg[5]).Trim()).Replace(',', '.');;

            string esInvSujetoPas = _CamposReg[2];

            switch (esInvSujetoPas)
            {
            case "S":
                _FactActualWrk.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo.DetalleIVA.Add(_DetalleIVAWrk);
                break;

            case "N":
                _FactActualWrk.FacturaRecibida.DesgloseFactura.DesgloseIVA.DetalleIVA.Add(_DetalleIVAWrk);
                break;
            }


            return(_FactActualWrk);
        }