/// <summary> /// Genera un documento XML para Notas de Debito. /// </summary> /// <param name="debitHeaderEntity">Entidad de Nota de Debito</param> /// <returns>Retorna el XML generado.</returns> public XmlFileResult GenerarDocumentoDebitNote(DebitNoteHeader debitHeaderEntity) { try { #region FileName string xmlFilename = $"{debitHeaderEntity.RucEmisor}-08-{debitHeaderEntity.SerieDocumento}-{debitHeaderEntity.CorrelativoDocumento}"; #endregion #region Gen DebitNote AmountType.TlsDefaultCurrencyID = debitHeaderEntity.CodigoMoneda; var debitDoc = new DebitNoteType { ID = string.Concat(debitHeaderEntity.SerieDocumento, "-", debitHeaderEntity.CorrelativoDocumento), IssueDate = debitHeaderEntity.FechaEmision, DocumentCurrencyCode = debitHeaderEntity.CodigoMoneda, CustomizationID = "1.0", DespatchDocumentReference = UtilsXmlDoc.DevuelveGuiasRemisionReferenciadas(debitHeaderEntity.GuiaRemisionReferencia), AdditionalDocumentReference = UtilsXmlDoc.DevuelveDocumentosReferenciaNote(debitHeaderEntity), DiscrepancyResponse = new[] { new ResponseType { ReferenceID = debitHeaderEntity.DocumentoRef, ResponseCode = ((int)debitHeaderEntity.TipoNota).ToString("00"), Description = new TextType[] { debitHeaderEntity.Motivo } } }, BillingReference = new[] { new BillingReferenceType { InvoiceDocumentReference = new DocumentReferenceType { ID = debitHeaderEntity.DocumentoRef, DocumentTypeCode = ((int)debitHeaderEntity.TipoDocRef).ToString("00") } } }, Signature = UtilsXmlDoc.GetSignature(debitHeaderEntity), AccountingSupplierParty = UtilsXmlDoc.GetInfoEmisor(debitHeaderEntity), AccountingCustomerParty = new CustomerPartyType { CustomerAssignedAccountID = debitHeaderEntity.NroDocCliente, AdditionalAccountID = new IdentifierType[] { ((int)debitHeaderEntity.TipoDocumentoIdentidadCliente).ToString() }, Party = new PartyType { PostalAddress = string.IsNullOrWhiteSpace(debitHeaderEntity.DireccionCliente) ? null : new AddressType { StreetName = debitHeaderEntity.DireccionCliente }, PartyLegalEntity = new[] { new PartyLegalEntityType { RegistrationName = debitHeaderEntity.NombreRazonSocialCliente, } } }, }, TaxTotal = UtilsXmlDoc.DevuelveSubTotalImpuestos(debitHeaderEntity.Impuesto), RequestedMonetaryTotal = new MonetaryTotalType { ChargeTotalAmount = debitHeaderEntity.TotalCargos > 0 ? new AmountType { Value = debitHeaderEntity.TotalCargos } : null, AllowanceTotalAmount = debitHeaderEntity.DescuentoGlobal > 0 ? new AmountType { Value = debitHeaderEntity.DescuentoGlobal } : null, PayableAmount = debitHeaderEntity.Total }, DebitNoteLine = UtilsXmlDoc.ToDebit(UtilsXmlDoc.DevuelveDetallesDelComprobante(debitHeaderEntity.DetallesDocumento)), }; #region Ext var lisExt = new List <UBLExtensionType>(2); if (debitHeaderEntity.TotalTributosAdicionales != null) { lisExt.Add(new UBLExtensionType { ExtensionContent = new AdditionalsInformationType //(mas informacion en el catalogo no 14 del manual.) { AdditionalInformation = new AdditionalInformationType { AdditionalMonetaryTotal = UtilsXmlDoc.DevuelveTributosAdicionales(debitHeaderEntity.TotalTributosAdicionales), } } }); } lisExt.Add(new UBLExtensionType { ExtensionContent = new AdditionalsInformationType() }); debitDoc.UBLExtensions = lisExt.ToArray(); #endregion debitDoc.AccountingSupplierParty.Party.PostalAddress = UtilsXmlDoc.ObtenerDireccion(debitHeaderEntity.DireccionEmisor); #endregion | return(FromDocument(debitDoc, xmlFilename)); } catch (Exception ex) { return(FromException(ex)); } }