/// <summary> /// Constructor de ARInvoice. /// </summary> /// <param name="registroLRFacturasEmitidas">Objeto serialización xml facturas emitidas.</param> public ARInvoiceAV(RegistroLRFacturasEmitidas registroLRFacturasEmitidas) : base(registroLRFacturasEmitidas) { RegistroLRFacturasEmitidas siiInvoice = registroLRFacturasEmitidas; // Gestión del tipo desglose NoSujeta noSujeta = siiInvoice?.FacturaExpedida?.TipoDesglose?.DesgloseFactura?.NoSujeta; if (noSujeta != null) { if (noSujeta.ImporteTAIReglasLocalizacion != null) { IsTAIRules = true; GrossAmount = SIIParser.ToDecimal(noSujeta.ImporteTAIReglasLocalizacion); } } }
private void GetLinesFR() { if (DesgloseIVA != null) { if (DesgloseIVA.DetalleIVA != null) { foreach (var iva in DesgloseIVA.DetalleIVA) { Lines.Add(new QueryAeatInvoiceLine() { BaseImponible = SIIParser.ToDecimal(iva.BaseImponible), TipoImpositivo = SIIParser.ToDecimal(iva.TipoImpositivo), TipoRE = SIIParser.ToDecimal(iva.TipoRecargoEquivalencia), Cuota = SIIParser.ToDecimal(iva.CuotaSoportada), CuotaRE = SIIParser.ToDecimal(iva.CuotaRecargoEquivalencia), TipoREAGYP = SIIParser.ToDecimal(iva.PorcentCompensacionREAGYP), CuotaREAGYP = SIIParser.ToDecimal(iva.ImporteCompensacionREAGYP), Tipo = "" }); } } } }
/// <summary> /// Constructor de ARInvoice. /// </summary> /// <param name="registroLRFacturasRecibidas">Objeto serialización xml facturas emitidas.</param> public APInvoice(RegistroLRFacturasRecibidas registroLRFacturasRecibidas) { APInvoicePayments = new List <APInvoicePayment>(); InvoicesRectified = new List <InvoiceRectified>(); RegistroLRFacturasRecibidas siiInvoice = registroLRFacturasRecibidas; InvoiceNumber = siiInvoice.IDFactura.NumSerieFacturaEmisor; IssueDate = Convert.ToDateTime(siiInvoice.IDFactura.FechaExpedicionFacturaEmisor); PostingDate = Convert.ToDateTime(siiInvoice.FacturaRecibida.FechaRegContable); if (Settings.Current.IDVersionSii.CompareTo("1.1") >= 0 && siiInvoice.FacturaRecibida.ADeducirEnPeriodoPosterior == "S") { TaxDate = new DateTime(Convert.ToInt32(siiInvoice.FacturaRecibida.EjercicioDeduccion), Convert.ToInt32(siiInvoice.FacturaRecibida.PeriodoDeduccion), 1); } if (siiInvoice.FacturaRecibida.FechaOperacion != null) { OperationIssueDate = Convert.ToDateTime(siiInvoice.FacturaRecibida.FechaOperacion); } SellerParty = new Party() { TaxIdentificationNumber = siiInvoice.IDFactura.IDEmisorFactura.NIF, PartyName = siiInvoice.FacturaRecibida.Contraparte.NombreRazon }; if (siiInvoice.FacturaRecibida.Contraparte.IDOtro != null) { // Si no es un nif español IDOtroType = (IDOtroType)Convert.ToInt32( siiInvoice.FacturaRecibida.Contraparte.IDOtro.IDType); CountryCode = siiInvoice.FacturaRecibida.Contraparte.IDOtro.CodigoPais; SellerParty.TaxIdentificationNumber = siiInvoice.FacturaRecibida.Contraparte.IDOtro.ID; } if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } if (PostingDate == null) { throw new ArgumentNullException("PostingDate is null."); } InvoiceType invoiceType; if (!Enum.TryParse <InvoiceType>(siiInvoice.FacturaRecibida.TipoFactura, out invoiceType)) { throw new InvalidOperationException($"Unknown invoice type {siiInvoice.FacturaRecibida.TipoFactura}"); } InvoiceType = invoiceType; ClaveRegimenEspecialOTrascendencia = (ClaveRegimenEspecialOTrascendencia)Convert.ToInt32( siiInvoice.FacturaRecibida.ClaveRegimenEspecialOTrascendencia); // Gestion rectificativa if (siiInvoice.FacturaRecibida.TipoRectificativa != null) { if (!siiInvoice.FacturaRecibida.TipoFactura.StartsWith("R")) { throw new ArgumentException("For TipoRectificativa not null TipoFactura must begin with 'R'."); } FacturaRecibida facturaRecibidaRectificativa = siiInvoice.FacturaRecibida; if (facturaRecibidaRectificativa.ImporteRectificacion != null) { RectifiedBase = SIIParser.ToDecimal(facturaRecibidaRectificativa.ImporteRectificacion.BaseRectificada); RectifiedAmount = SIIParser.ToDecimal(facturaRecibidaRectificativa.ImporteRectificacion.CuotaRectificada); } RectifiedType rectifiedType; if (Enum.TryParse <RectifiedType>(facturaRecibidaRectificativa.TipoRectificativa, out rectifiedType)) { RectifiedType = rectifiedType; } if (facturaRecibidaRectificativa.FacturasRectificadas.Count == 0) { throw new ArgumentException("FacturasRectificadas without elements."); } foreach (var regRect in facturaRecibidaRectificativa.FacturasRectificadas) { InvoiceRectified invoiceRectified = new InvoiceRectified(); invoiceRectified.RectifiedInvoiceNumber = regRect.NumSerieFacturaEmisor; invoiceRectified.RectifiedIssueDate = Convert.ToDateTime(regRect.FechaExpedicionFacturaEmisor); InvoicesRectified.Add(invoiceRectified); } } // Gestion desgloses decimal taxRate, taxBase, taxAmount, taxRateRE, taxAmountRE; if (siiInvoice.FacturaRecibida.DesgloseFactura != null) { DesgloseIVA desgloseIVA = null; if (siiInvoice.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo != null && siiInvoice.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo.DetalleIVA.Count > 0) { desgloseIVA = siiInvoice.FacturaRecibida.DesgloseFactura.InversionSujetoPasivo; } else { if (siiInvoice.FacturaRecibida.DesgloseFactura.DesgloseIVA == null) { throw new ArgumentException("For InversionSujetoPasivo DesgloseIVA must be present on DesgloseFactura."); } desgloseIVA = siiInvoice.FacturaRecibida.DesgloseFactura.DesgloseIVA; } foreach (var iva in desgloseIVA.DetalleIVA) { taxRate = SIIParser.ToDecimal(iva.TipoImpositivo); taxBase = SIIParser.ToDecimal(iva.BaseImponible); taxAmount = SIIParser.ToDecimal(iva.CuotaSoportada); taxRateRE = SIIParser.ToDecimal(iva.TipoRecargoEquivalencia); taxAmountRE = SIIParser.ToDecimal(iva.CuotaRecargoEquivalencia); if (Settings.Current.IDVersionSii.CompareTo("1.1") >= 0) { IsAsset = (iva.BienInversion == "S"); } TaxesOutputs.Add(taxRate, new decimal[] { taxBase, taxAmount, taxRateRE, taxAmountRE }); } } else { throw new ArgumentException("DesgloseFactura no present in FacturaRecibida."); } // Gestión cuota deducible GrossAmount = SIIParser.ToDecimal(siiInvoice.FacturaRecibida.ImporteTotal); InvoiceText = siiInvoice.FacturaRecibida.DescripcionOperacion; }
private void GetLinesFE() { if (Desglose.NoSujeta != null) { Lines.Add(new QueryAeatInvoiceLine() { NoSujArt7_14 = SIIParser.ToDecimal(Desglose.NoSujeta.ImportePorArticulos7_14_Otros), NoSujTAI = SIIParser.ToDecimal(Desglose.NoSujeta.ImporteTAIReglasLocalizacion), Tipo = "NS" }); } if (Desglose.Sujeta != null) { if (Desglose.Sujeta.Exenta != null) { if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { Lines.Add(new QueryAeatInvoiceLine() { BaseImponible = SIIParser.ToDecimal(Desglose.Sujeta.Exenta.BaseImponible), Tipo = Desglose.Sujeta.Exenta.CausaExencion }); } else { foreach (var exenta in Desglose.Sujeta.Exenta.DetalleExenta) { Lines.Add(new QueryAeatInvoiceLine() { BaseImponible = SIIParser.ToDecimal(exenta.BaseImponible), Tipo = exenta.CausaExencion }); } } } if (Desglose.Sujeta.NoExenta != null) { if (Desglose.Sujeta.NoExenta.DesgloseIVA != null) { if (Desglose.Sujeta.NoExenta.DesgloseIVA.DetalleIVA != null) { foreach (var iva in Desglose.Sujeta.NoExenta.DesgloseIVA.DetalleIVA) { Lines.Add(new QueryAeatInvoiceLine() { BaseImponible = SIIParser.ToDecimal(iva.BaseImponible), TipoImpositivo = SIIParser.ToDecimal(iva.TipoImpositivo), TipoRE = SIIParser.ToDecimal(iva.TipoRecargoEquivalencia), Cuota = SIIParser.ToDecimal(iva.CuotaRepercutida), CuotaRE = SIIParser.ToDecimal(iva.CuotaRecargoEquivalencia), TipoREAGYP = SIIParser.ToDecimal(iva.PorcentCompensacionREAGYP), CuotaREAGYP = SIIParser.ToDecimal(iva.ImporteCompensacionREAGYP), Tipo = Desglose.Sujeta.NoExenta.TipoNoExenta }); } } } } } }
/// <summary> /// Constructor de ITInvoice. /// </summary> /// <param name="registroLRDetOperacionIntracomunitariaVentasEnConsigna">Objeto serialización xml venta consigna.</param> public ITConsignment(RegistroLRDetOperacionIntracomunitariaVentasEnConsigna registroLRDetOperacionIntracomunitariaVentasEnConsigna) { RegistroLRDetOperacionIntracomunitariaVentasEnConsigna siiInvoice = registroLRDetOperacionIntracomunitariaVentasEnConsigna; InvoiceNumber = siiInvoice.IdRegistroDeclarado.IdRegistro; OperationType = siiInvoice.TipoOperacion; IssueDate = Convert.ToDateTime(siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.FechaExpedicion); ReceptionDate = Convert.ToDateTime(siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.FechaLlegada); Quantity = Convert.ToInt32(siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.Cantidad); GrossAmount = SIIParser.ToDecimal(siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.ValorBienes); WarehouseAddress = siiInvoice.Deposito.DireccionAlmacen; // Tratamiento del BuyerParty BuyerParty = new Party() { TaxIdentificationNumber = siiInvoice.Contraparte.NIF, PartyName = siiInvoice.Contraparte.NombreRazon }; if (siiInvoice.Contraparte.IDOtro != null) { // Si no es un nif español IDOtroType = (IDOtroType)Convert.ToInt32( siiInvoice.Contraparte.IDOtro.IDType); CountryCode = siiInvoice.Contraparte.IDOtro.CodigoPais; } // Tratamiento del BuyerParty BuyerParty = new Party() { TaxIdentificationNumber = (siiInvoice.Contraparte.IDOtro == null) ? null : siiInvoice.Contraparte.IDOtro.ID, PartyName = siiInvoice.Contraparte.NombreRazon }; if (siiInvoice.Contraparte.IDOtro != null) { // Si no es un nif español IDOtroType = (IDOtroType)Convert.ToInt32( siiInvoice.Contraparte.IDOtro.IDType); CountryCode = siiInvoice.Contraparte.IDOtro.CodigoPais; } if (BuyerParty == null) { throw new ArgumentNullException("BuyerParty is null."); } if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } ClaveDeclarante claveDeclarante; if (!Enum.TryParse <ClaveDeclarante>(siiInvoice.ClaveDeclarante, out claveDeclarante)) { throw new InvalidOperationException($"Unknown clave declarado {siiInvoice.ClaveDeclarante}"); } ClaveDeclarante = claveDeclarante; EstadoMiembroPartida = siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.EmPartida; EstadoMiembroLlegada = siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.EmLlegada; DescripcionBienes = siiInvoice.OperacionIntracomunitaria.InfoExpedicionRecepcion.DescripBienes; }