/// <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> /// Para NIF nacionales no comenzados en 'N'. /// </summary> /// <param name="skipErrors">Indica si hay que omitir las excepciones.</param> /// <returns>Desglose de factura.</returns> internal override DesgloseFactura GetDesgloseFactura(bool skipErrors = false) { DesgloseFactura desgloseFactura = new DesgloseFactura(); if (ClaveRegimenEspecialOTrascendencia == ClaveRegimenEspecialOTrascendencia.IpsiIgic || IsTaxExcluded || IsTAIRules) { desgloseFactura.NoSujeta = GetNoSujeta(skipErrors); } else { desgloseFactura.Sujeta = GetSujeta(skipErrors); } return(desgloseFactura); }
/// <summary> /// Constructor clase TipoDesglose /// </summary> public TipoDesgloseLRRC() { DesgloseFactura = new DesgloseFactura(); DesgloseTipoOperacion = new DesgloseTipoOperacion(); }
// Función para tratar el registro de factura que se acaba de leer. private ARInvoice TratarFactEmitida(string[] _CamposReg, Party _Titular) { ARInvoice _FacturaActual = new ARInvoice(); Party _Emisor, _Cliente = new Party(); // Al tratarse de una factura emitida el Vendedor (Seller - _Emisor) será el mismo que el Titular del libro. _Emisor = _Titular; _FacturaActual.SellerParty = _Emisor; // Procedemos a tratar la factura actual. //El periodo impositivo no lo informamos, ya que se informará automáticamente a partir // de la fecha de la factura, según las pruebas que hemos realizado. _FacturaActual.InvoiceNumber = (_CamposReg[4]).Trim(); // En caso de que se trate de una factura de Asiento Resumen, hay que informar la última factura // que se incluye en este envío. if (!string.IsNullOrWhiteSpace(_CamposReg[14])) { _FacturaActual.InvoiceNumberLastItem = _CamposReg[14]; } _FacturaActual.IssueDate = Convert.ToDateTime(_CamposReg[5]); if (string.IsNullOrWhiteSpace(_CamposReg[9])) { _CamposReg[9] = "Hay que informar el concepto de la factura"; } _FacturaActual.InvoiceText = (_CamposReg[9]).Trim(); // Procedemos a indicar el tipo de factura, que dependerá de lo que venga indicado en el fichero _FacturaActual.InvoiceType = (InvoiceType)Enum.Parse(typeof(InvoiceType), _CamposReg[6]); // Procedemos a indicar el tipo de ClaveRegimenEspecial respecto a lo que venga indicado en el fichero _FacturaActual.ClaveRegimenEspecialOTrascendencia = (ClaveRegimenEspecialOTrascendencia)Enum.Parse(typeof(ClaveRegimenEspecialOTrascendencia), _CamposReg[7]); _FacturaActual.GrossAmount = Convert.ToDecimal(_CamposReg[8]); if (!string.IsNullOrWhiteSpace(_CamposReg[15])) { _FacturaActual.OperationIssueDate = Convert.ToDateTime(_CamposReg[15]); } // Informamos el cliente. _Cliente.PartyName = (_CamposReg[10]).Trim(); _Cliente.TaxIdentificationNumber = _CamposReg[11]; _FacturaActual.BuyerParty = _Cliente; // En el caso de que se trate de un cliente extranjero, habremos informado este campo, de manera que podremos indicar // el código de país correspondiente if (!string.IsNullOrWhiteSpace(_CamposReg[12])) { _FacturaActual.CountryCode = _CamposReg[12]; } //En este trozo procedemos a tratar las facturas rectificativas. if (!string.IsNullOrWhiteSpace(_CamposReg[16])) { _FacturaActual.RectifiedType = (RectifiedType)Enum.Parse(typeof(RectifiedType), _CamposReg[16]); _FacturaActual.RectifiedBase = Convert.ToDecimal(_CamposReg[17]); _FacturaActual.RectifiedAmount = Convert.ToDecimal(_CamposReg[18]); } // Procedemos a tratar el caso de que se trate del deslgose no Sujeto TipoDesglose tipoDesglose = new TipoDesglose(); DesgloseFactura desgloseFactura = new DesgloseFactura(); NoSujeta noSujeta = new NoSujeta(); if (!string.IsNullOrWhiteSpace(_CamposReg[19]) || !string.IsNullOrWhiteSpace(_CamposReg[20])) { if (!string.IsNullOrWhiteSpace(_CamposReg[19])) { noSujeta.ImportePorArticulos7_14_Otros = ((_CamposReg[19]).Trim()).Replace(',', '.'); } if (!string.IsNullOrWhiteSpace(_CamposReg[20])) { noSujeta.ImporteTAIReglasLocalizacion = ((_CamposReg[20]).Trim()).Replace(',', '.'); } desgloseFactura.NoSujeta = noSujeta; tipoDesglose.DesgloseFactura = desgloseFactura; //_FacturaActual.InnerSII.FacturaExpedida.TipoDesglose = tipoDesglose; } return(_FacturaActual); }
// Función para tratar el registro de factura que se acaba de leer. private RegistroLRFacturasEmitidas TratarFactEmitida(string[] _CamposReg) { RegistroLRFacturasEmitidas _RegLRFactEmitWRK = new RegistroLRFacturasEmitidas(); // Informamos el periodo impositivo. PeriodoImpositivo _PeriodoWrk = new PeriodoImpositivo { Ejercicio = _CamposReg[1], Periodo = _CamposReg[2] }; _RegLRFactEmitWRK.PeriodoImpositivo = _PeriodoWrk; // Informamos el IDFactura. IDFactura _IDFactWrk = new IDFactura(); _IDFactWrk.IDEmisorFactura.NIF = _CamposReg[3]; _IDFactWrk.NumSerieFacturaEmisor = _CamposReg[4].Trim(); _IDFactWrk.FechaExpedicionFacturaEmisor = _CamposReg[5]; // En caso de que se trate de una factura de Asiento Resumen, hay que informar la última factura // que se incluye en este envío. if (!string.IsNullOrWhiteSpace(_CamposReg[14])) { _IDFactWrk.NumSerieFacturaEmisorResumenFin = _CamposReg[14]; } _RegLRFactEmitWRK.IDFactura = _IDFactWrk; // Procedemos a tratar la factura actual. FacturaExpedida _FacturaActual = new FacturaExpedida { TipoFactura = _CamposReg[6], ClaveRegimenEspecialOTrascendencia = _CamposReg[7], ImporteTotal = ((_CamposReg[8]).Trim()).Replace(',', '.') }; if (string.IsNullOrWhiteSpace(_CamposReg[9])) { _CamposReg[9] = "Hay que informar el concepto de la factura"; } _FacturaActual.DescripcionOperacion = _CamposReg[9].Trim(); // Informamos la contraparte, que cambiará dependiendo de si se trata de un cliente nacional o extranjero Contraparte _ClienteWrk = new Contraparte { NombreRazon = _CamposReg[10].Trim() }; if (string.IsNullOrWhiteSpace(_CamposReg[12])) { _ClienteWrk.NIF = _CamposReg[11]; } else { IDOtro _ClienteExtWrk = new IDOtro { CodigoPais = _CamposReg[12], IDType = _CamposReg[13], ID = _CamposReg[11] }; _ClienteWrk.IDOtro = _ClienteExtWrk; } _FacturaActual.Contraparte = _ClienteWrk; // Indicamos la fecha de operación, en el caso de que venga informada if (!string.IsNullOrWhiteSpace(_CamposReg[15])) { _FacturaActual.FechaOperacion = _CamposReg[15]; } // Procedemos a informar los campos en el caso de que se trate del envio de una factura rectificativa. if (!string.IsNullOrWhiteSpace(_CamposReg[16])) { _FacturaActual.TipoRectificativa = _CamposReg[16]; ImporteRectificacion _ImpRectifWrk = new ImporteRectificacion { BaseRectificada = ((_CamposReg[17]).Trim()).Replace(',', '.'), CuotaRectificada = ((_CamposReg[18]).Trim()).Replace(',', '.') }; _FacturaActual.ImporteRectificacion = _ImpRectifWrk; } // Procedemos a tratar el caso de que se trate del deslgose no Sujeto TipoDesglose tipoDesglose = new TipoDesglose(); DesgloseFactura desgloseFactura = new DesgloseFactura(); NoSujeta noSujeta = new NoSujeta(); if (!string.IsNullOrWhiteSpace(_CamposReg[19]) || !string.IsNullOrWhiteSpace(_CamposReg[20])) { if (!string.IsNullOrWhiteSpace(_CamposReg[19])) { noSujeta.ImportePorArticulos7_14_Otros = ((_CamposReg[19]).Trim()).Replace(',', '.'); } if (!string.IsNullOrWhiteSpace(_CamposReg[20])) { noSujeta.ImporteTAIReglasLocalizacion = ((_CamposReg[20]).Trim()).Replace(',', '.'); } desgloseFactura.NoSujeta = noSujeta; tipoDesglose.DesgloseFactura = desgloseFactura; _FacturaActual.TipoDesglose = tipoDesglose; } _RegLRFactEmitWRK.FacturaExpedida = _FacturaActual; return(_RegLRFactEmitWRK); }