/// <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); }
/// <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); }
/// <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); }