sunat-engine-nest 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cdr/cdr-parser.service.d.ts +6 -0
  2. package/dist/cdr/cdr-parser.service.js +69 -0
  3. package/dist/cdr/cdr-parser.service.js.map +1 -0
  4. package/dist/gre/sunat-gre.client.d.ts +53 -0
  5. package/dist/gre/sunat-gre.client.js +155 -0
  6. package/dist/gre/sunat-gre.client.js.map +1 -0
  7. package/dist/index.d.ts +16 -0
  8. package/dist/index.js +29 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/pdf/document-pdf.service.d.ts +11 -0
  11. package/dist/pdf/document-pdf.service.js +230 -0
  12. package/dist/pdf/document-pdf.service.js.map +1 -0
  13. package/dist/signer/xml-signer.service.d.ts +12 -0
  14. package/dist/signer/xml-signer.service.js +110 -0
  15. package/dist/signer/xml-signer.service.js.map +1 -0
  16. package/dist/soap/sunat-soap.client.d.ts +54 -0
  17. package/dist/soap/sunat-soap.client.js +217 -0
  18. package/dist/soap/sunat-soap.client.js.map +1 -0
  19. package/dist/sunat-engine.module.d.ts +23 -0
  20. package/dist/sunat-engine.module.js +69 -0
  21. package/dist/sunat-engine.module.js.map +1 -0
  22. package/dist/sunat-engine.service.d.ts +20 -0
  23. package/dist/sunat-engine.service.js +228 -0
  24. package/dist/sunat-engine.service.js.map +1 -0
  25. package/dist/tsconfig.build.tsbuildinfo +1 -0
  26. package/dist/types/sunat.types.d.ts +263 -0
  27. package/dist/types/sunat.types.js +3 -0
  28. package/dist/types/sunat.types.js.map +1 -0
  29. package/dist/xml/common.builder.d.ts +38 -0
  30. package/dist/xml/common.builder.js +251 -0
  31. package/dist/xml/common.builder.js.map +1 -0
  32. package/dist/xml/despatch.builder.d.ts +2 -0
  33. package/dist/xml/despatch.builder.js +150 -0
  34. package/dist/xml/despatch.builder.js.map +1 -0
  35. package/dist/xml/invoice.builder.d.ts +2 -0
  36. package/dist/xml/invoice.builder.js +112 -0
  37. package/dist/xml/invoice.builder.js.map +1 -0
  38. package/dist/xml/namespaces.d.ts +67 -0
  39. package/dist/xml/namespaces.js +99 -0
  40. package/dist/xml/namespaces.js.map +1 -0
  41. package/dist/xml/note.builder.d.ts +2 -0
  42. package/dist/xml/note.builder.js +55 -0
  43. package/dist/xml/note.builder.js.map +1 -0
  44. package/dist/xml/summary.builder.d.ts +2 -0
  45. package/dist/xml/summary.builder.js +101 -0
  46. package/dist/xml/summary.builder.js.map +1 -0
  47. package/dist/xml/voided.builder.d.ts +2 -0
  48. package/dist/xml/voided.builder.js +36 -0
  49. package/dist/xml/voided.builder.js.map +1 -0
  50. package/package.json +46 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDespatchXml = buildDespatchXml;
4
+ const xmlbuilder2_1 = require("xmlbuilder2");
5
+ const namespaces_1 = require("./namespaces");
6
+ const common_builder_1 = require("./common.builder");
7
+ function buildDespatchXml(data) {
8
+ const root = (0, xmlbuilder2_1.create)({ version: '1.0', encoding: 'UTF-8' }).ele('DespatchAdvice', namespaces_1.NS_DESPATCH);
9
+ (0, common_builder_1.addUblExtensions)(root);
10
+ root.ele('cbc:UBLVersionID').txt('2.1').up();
11
+ root.ele('cbc:CustomizationID').txt('2.0').up();
12
+ root.ele('cbc:ID').txt(`${data.serie}-${data.correlativo}`).up();
13
+ root.ele('cbc:IssueDate').txt((0, common_builder_1.isoDate)(data.fechaEmision)).up();
14
+ root.ele('cbc:IssueTime').txt((0, common_builder_1.isoTime)(data.fechaEmision)).up();
15
+ root.ele('cbc:DespatchAdviceTypeCode').txt('09').up();
16
+ for (const doc of data.docReferencias ?? []) {
17
+ const ref = root.ele('cac:AdditionalDocumentReference');
18
+ ref.ele('cbc:ID').txt(doc.id).up();
19
+ if (doc.descripcion)
20
+ ref.ele('cbc:DocumentType').txt(doc.descripcion).up();
21
+ ref.ele('cbc:DocumentTypeCode', {
22
+ listAgencyName: 'PE:SUNAT',
23
+ listName: 'Documento relacionado al transporte',
24
+ listURI: 'urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo61',
25
+ }).txt(doc.codigo).up();
26
+ if (doc.rucEmisor) {
27
+ ref.ele('cac:IssuerParty')
28
+ .ele('cac:PartyIdentification')
29
+ .ele('cbc:ID', {
30
+ schemeID: '6',
31
+ schemeName: 'Documento de Identidad',
32
+ schemeAgencyName: 'PE:SUNAT',
33
+ schemeURI: 'urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo06',
34
+ }).txt(doc.rucEmisor).up()
35
+ .up()
36
+ .up();
37
+ }
38
+ }
39
+ (0, common_builder_1.addSignatureBlock)(root, data.company.ruc, data.company.razonSocial);
40
+ root.ele('cac:DespatchSupplierParty')
41
+ .ele('cac:Party')
42
+ .ele('cac:PartyIdentification')
43
+ .ele('cbc:ID', { schemeID: '6' }).txt(data.company.ruc).up()
44
+ .up()
45
+ .ele('cac:PartyLegalEntity')
46
+ .ele('cbc:RegistrationName').txt(data.company.razonSocial).up()
47
+ .up()
48
+ .up()
49
+ .up();
50
+ root.ele('cac:DeliveryCustomerParty')
51
+ .ele('cac:Party')
52
+ .ele('cac:PartyIdentification')
53
+ .ele('cbc:ID', { schemeID: data.destinatario.tipoDoc }).txt(data.destinatario.numDoc).up()
54
+ .up()
55
+ .ele('cac:PartyLegalEntity')
56
+ .ele('cbc:RegistrationName').txt(data.destinatario.rznSocial).up()
57
+ .up()
58
+ .up()
59
+ .up();
60
+ const envio = data.envio;
61
+ const shipment = root.ele('cac:Shipment');
62
+ shipment.ele('cbc:ID').txt('ENVIO').up();
63
+ shipment.ele('cbc:HandlingCode').txt(envio.codTraslado).up();
64
+ shipment.ele('cbc:HandlingInstructions').txt(envio.desTraslado).up();
65
+ shipment.ele('cbc:GrossWeightMeasure', { unitCode: envio.undPesoTotal }).txt((0, common_builder_1.fmt)(envio.pesoTotal, 3)).up();
66
+ if (envio.numBultos) {
67
+ shipment.ele('cbc:TotalTransportHandlingUnitQuantity').txt(String(envio.numBultos)).up();
68
+ }
69
+ for (const ind of envio.indicadores ?? []) {
70
+ shipment.ele('cbc:SpecialInstructions').txt(ind).up();
71
+ }
72
+ if (envio.indicadorVehiculoConductoresTransp) {
73
+ shipment.ele('cbc:SpecialInstructions').txt('SUNAT_Envio_IndicadorVehiculoConductoresTransp').up();
74
+ }
75
+ shipment.ele('cac:GoodsItem')
76
+ .ele('cbc:ID').txt('1').up()
77
+ .up();
78
+ const stage = shipment.ele('cac:ShipmentStage');
79
+ stage.ele('cbc:ID').txt('1').up();
80
+ stage.ele('cbc:TransportModeCode').txt(envio.modTraslado).up();
81
+ stage.ele('cac:TransitPeriod')
82
+ .ele('cbc:StartDate').txt((0, common_builder_1.isoDate)(envio.fecTraslado)).up()
83
+ .up();
84
+ if (envio.transportista) {
85
+ const t = envio.transportista;
86
+ const carrier = stage.ele('cac:CarrierParty');
87
+ carrier.ele('cac:PartyIdentification')
88
+ .ele('cbc:ID', { schemeID: t.tipoDoc }).txt(t.numDoc).up()
89
+ .up();
90
+ const carrierLegal = carrier.ele('cac:PartyLegalEntity');
91
+ carrierLegal.ele('cbc:RegistrationName').txt(t.rznSocial).up();
92
+ if (t.nroMtc) {
93
+ carrierLegal.ele('cbc:CompanyID').txt(t.nroMtc).up();
94
+ }
95
+ }
96
+ for (const c of envio.choferes ?? []) {
97
+ const driver = stage.ele('cac:DriverPerson');
98
+ driver.ele('cbc:ID', { schemeID: c.tipoDoc }).txt(c.nroDoc).up();
99
+ driver.ele('cbc:FirstName').txt(c.nombres ?? '').up();
100
+ driver.ele('cbc:FamilyName').txt(c.apellidos ?? '').up();
101
+ driver.ele('cbc:JobTitle').txt(c.tipo === '02' ? 'Secundario' : 'Principal').up();
102
+ driver.ele('cac:IdentityDocumentReference')
103
+ .ele('cbc:ID').txt(c.licencia).up()
104
+ .up();
105
+ }
106
+ if (envio.fecEntregaBienes) {
107
+ stage.ele('cac:LoadingTransportEvent')
108
+ .ele('cbc:OccurrenceDate').txt((0, common_builder_1.isoDate)(envio.fecEntregaBienes)).up()
109
+ .up();
110
+ }
111
+ const delivery = shipment.ele('cac:Delivery');
112
+ delivery.ele('cac:DeliveryAddress')
113
+ .ele('cbc:ID').txt(envio.llegada.ubigueo ?? '').up()
114
+ .ele('cac:AddressLine')
115
+ .ele('cbc:Line').txt(envio.llegada.direccion).up()
116
+ .up()
117
+ .up();
118
+ const despatch = delivery.ele('cac:Despatch');
119
+ despatch.ele('cac:DespatchAddress')
120
+ .ele('cbc:ID').txt(envio.partida.ubigueo ?? '').up()
121
+ .ele('cac:AddressLine')
122
+ .ele('cbc:Line').txt(envio.partida.direccion).up()
123
+ .up()
124
+ .up();
125
+ if (envio.vehiculo) {
126
+ const placa = envio.vehiculo.placa.replace(/-/g, '');
127
+ shipment.ele('cac:TransportHandlingUnit')
128
+ .ele('cbc:ID').txt('1').up()
129
+ .ele('cac:TransportEquipment')
130
+ .ele('cbc:ID').txt(placa).up()
131
+ .up()
132
+ .up();
133
+ }
134
+ data.details.forEach((d, i) => {
135
+ const line = root.ele('cac:DespatchLine');
136
+ line.ele('cbc:ID').txt(String(i + 1)).up();
137
+ line.ele('cbc:DeliveredQuantity', { unitCode: d.unidad }).txt((0, common_builder_1.fmt)(d.cantidad, 3)).up();
138
+ line.ele('cac:OrderLineReference')
139
+ .ele('cbc:LineID').txt(String(i + 1)).up()
140
+ .up();
141
+ line.ele('cac:Item')
142
+ .ele('cbc:Description').txt(d.descripcion).up()
143
+ .ele('cac:SellersItemIdentification')
144
+ .ele('cbc:ID').txt(d.codigo ?? String(i + 1)).up()
145
+ .up()
146
+ .up();
147
+ });
148
+ return root.end({ prettyPrint: true });
149
+ }
150
+ //# sourceMappingURL=despatch.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"despatch.builder.js","sourceRoot":"","sources":["../../src/xml/despatch.builder.ts"],"names":[],"mappings":";;AASA,4CA8KC;AAvLD,6CAAqC;AAErC,6CAA4D;AAC5D,qDAA8F;AAM9F,SAAgB,gBAAgB,CAAC,IAAqB;IACpD,MAAM,IAAI,GAAG,IAAA,oBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,wBAAW,CAAC,CAAC;IAE9F,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACjE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAA,wBAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAA,wBAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;IAGtD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,WAAW;YAAE,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3E,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE;YAC9B,cAAc,EAAE,UAAU;YAC1B,QAAQ,EAAQ,qCAAqC;YACrD,OAAO,EAAS,mDAAmD;SACpE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;iBACvB,GAAG,CAAC,yBAAyB,CAAC;iBAC5B,GAAG,CAAC,QAAQ,EAAE;gBACb,QAAQ,EAAW,GAAG;gBACtB,UAAU,EAAS,wBAAwB;gBAC3C,gBAAgB,EAAG,UAAU;gBAC7B,SAAS,EAAU,mDAAmD;aACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE;iBAC3B,EAAE,EAAE;iBACN,EAAE,EAAE,CAAC;QACR,CAAC;IACH,CAAC;IAED,IAAA,kCAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAGpE,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC;SAClC,GAAG,CAAC,WAAW,CAAC;SACd,GAAG,CAAC,yBAAyB,CAAC;SAC5B,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;SAC7D,EAAE,EAAE;SACJ,GAAG,CAAC,sBAAsB,CAAC;SACzB,GAAG,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE;SAChE,EAAE,EAAE;SACN,EAAE,EAAE;SACN,EAAE,EAAE,CAAC;IAGN,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC;SAClC,GAAG,CAAC,WAAW,CAAC;SACd,GAAG,CAAC,yBAAyB,CAAC;SAC5B,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE;SAC3F,EAAE,EAAE;SACJ,GAAG,CAAC,sBAAsB,CAAC;SACzB,GAAG,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE;SACnE,EAAE,EAAE;SACN,EAAE,EAAE;SACN,EAAE,EAAE,CAAC;IAGN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1C,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7D,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;IACrE,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,IAAA,oBAAG,EAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3G,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3F,CAAC;IAGD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAC7C,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,EAAE,EAAE,CAAC;IACrG,CAAC;IAGD,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;SAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;SAC7B,EAAE,EAAE,CAAC;IAGN,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IAClC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;IAE/D,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;SAC3B,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAA,wBAAO,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;SAC3D,EAAE,EAAE,CAAC;IAGN,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;aACnC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE;aAC3D,EAAE,EAAE,CAAC;QACN,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,YAAY,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAGD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;QAClF,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;aACxC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;aACpC,EAAE,EAAE,CAAC;IACR,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC;aACnC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAA,wBAAO,EAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;aACrE,EAAE,EAAE,CAAC;IACR,CAAC;IAGD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE9C,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC;SAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;SACnD,GAAG,CAAC,iBAAiB,CAAC;SACpB,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE;SACnD,EAAE,EAAE;SACN,EAAE,EAAE,CAAC;IAEN,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC;SAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;SACnD,GAAG,CAAC,iBAAiB,CAAC;SACpB,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE;SACnD,EAAE,EAAE;SACN,EAAE,EAAE,CAAC;IAGN,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC;aACtC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;aAC3B,GAAG,CAAC,wBAAwB,CAAC;aAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE;aAC/B,EAAE,EAAE;aACN,EAAE,EAAE,CAAC;IACR,CAAC;IAGD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAA,oBAAG,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;aAC/B,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;aAC3C,EAAE,EAAE,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;aACjB,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE;aAC9C,GAAG,CAAC,+BAA+B,CAAC;aAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;aACnD,EAAE,EAAE;aACN,EAAE,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { InvoicePayload } from '../types/sunat.types';
2
+ export declare function buildInvoiceXml(data: InvoicePayload): string;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildInvoiceXml = buildInvoiceXml;
4
+ const xmlbuilder2_1 = require("xmlbuilder2");
5
+ const namespaces_1 = require("./namespaces");
6
+ const common_builder_1 = require("./common.builder");
7
+ function buildInvoiceXml(data) {
8
+ const root = (0, xmlbuilder2_1.create)({ version: '1.0', encoding: 'UTF-8' }).ele('Invoice', namespaces_1.NS_INVOICE);
9
+ (0, common_builder_1.addUblExtensions)(root);
10
+ root.ele('cbc:UBLVersionID').txt(data.ublVersion ?? '2.1').up();
11
+ root.ele('cbc:CustomizationID').txt('2.0').up();
12
+ root.ele('cbc:ID').txt(`${data.serie}-${data.correlativo}`).up();
13
+ root.ele('cbc:IssueDate').txt((0, common_builder_1.isoDate)(data.fechaEmision)).up();
14
+ root.ele('cbc:IssueTime').txt((0, common_builder_1.isoTime)(data.fechaEmision)).up();
15
+ root.ele('cbc:InvoiceTypeCode', { listID: data.tipoOperacion }).txt(data.tipoDoc).up();
16
+ (0, common_builder_1.addLegends)(root, data.legends ?? []);
17
+ root.ele('cbc:DocumentCurrencyCode').txt(data.tipoMoneda).up();
18
+ if (data.fechaVencimiento) {
19
+ root.ele('cac:InvoicePeriod')
20
+ .ele('cbc:DueDate').txt((0, common_builder_1.isoDate)(data.fechaVencimiento)).up()
21
+ .up();
22
+ }
23
+ if (data.detraccion) {
24
+ addDetraccionExtension(root, data);
25
+ }
26
+ (0, common_builder_1.addSignatureBlock)(root, data.company.ruc, data.company.razonSocial);
27
+ (0, common_builder_1.addSupplierParty)(root, data.company);
28
+ (0, common_builder_1.addCustomerParty)(root, data.client);
29
+ const tipoPago = data.formaPago?.tipo ?? 'Contado';
30
+ if (tipoPago === 'Contado') {
31
+ root.ele('cac:PaymentTerms')
32
+ .ele('cbc:ID').txt('FormaPago').up()
33
+ .ele('cbc:PaymentMeansID').txt('Contado').up()
34
+ .up();
35
+ }
36
+ else if (tipoPago === 'Credito' && data.formaPago) {
37
+ root.ele('cac:PaymentTerms')
38
+ .ele('cbc:ID').txt('FormaPago').up()
39
+ .ele('cbc:PaymentMeansID').txt('Credito').up()
40
+ .ele('cbc:Amount', { currencyID: data.tipoMoneda }).txt((0, common_builder_1.fmt)(data.formaPago.monto ?? data.mtoImpVenta)).up()
41
+ .up();
42
+ for (const cuota of data.cuotas ?? []) {
43
+ root.ele('cac:PaymentTerms')
44
+ .ele('cbc:ID').txt('FormaPago').up()
45
+ .ele('cbc:PaymentMeansID').txt('Cuota').up()
46
+ .ele('cbc:Amount', { currencyID: cuota.moneda }).txt((0, common_builder_1.fmt)(cuota.monto)).up()
47
+ .ele('cbc:PaymentDueDate').txt((0, common_builder_1.isoDate)(cuota.fechaPago)).up()
48
+ .up();
49
+ }
50
+ }
51
+ for (const d of data.descuentos ?? []) {
52
+ root.ele('cac:AllowanceCharge')
53
+ .ele('cbc:ChargeIndicator').txt('false').up()
54
+ .ele('cbc:AllowanceChargeReasonCode').txt(d.codTipo).up()
55
+ .ele('cbc:MultiplierFactorNumeric').txt((0, common_builder_1.fmt)(d.factor, 5)).up()
56
+ .ele('cbc:Amount', { currencyID: data.tipoMoneda }).txt((0, common_builder_1.fmt)(d.monto)).up()
57
+ .ele('cbc:BaseAmount', { currencyID: data.tipoMoneda }).txt((0, common_builder_1.fmt)(d.montoBase)).up()
58
+ .up();
59
+ }
60
+ if (data.perception) {
61
+ const p = data.perception;
62
+ root.ele('cac:AllowanceCharge')
63
+ .ele('cbc:ChargeIndicator').txt('true').up()
64
+ .ele('cbc:AllowanceChargeReasonCode').txt('45').up()
65
+ .ele('cbc:MultiplierFactorNumeric').txt((0, common_builder_1.fmt)(p.porcentaje / 100, 5)).up()
66
+ .ele('cbc:Amount', { currencyID: data.tipoMoneda }).txt((0, common_builder_1.fmt)(p.mto)).up()
67
+ .ele('cbc:BaseAmount', { currencyID: data.tipoMoneda }).txt((0, common_builder_1.fmt)(p.mtoBase)).up()
68
+ .up();
69
+ }
70
+ (0, common_builder_1.addDocumentTaxTotal)(root, {
71
+ mtoOperGravadas: data.mtoOperGravadas,
72
+ mtoOperExoneradas: data.mtoOperExoneradas,
73
+ mtoOperInafectas: data.mtoOperInafectas,
74
+ mtoOperExportacion: data.mtoOperExportacion,
75
+ mtoOperGratuitas: data.mtoOperGratuitas,
76
+ mtoIGV: data.mtoIGV,
77
+ mtoIGVGratuitas: data.mtoIGVGratuitas,
78
+ mtoISC: data.mtoISC,
79
+ icbper: data.icbper,
80
+ totalImpuestos: data.totalImpuestos,
81
+ tipoMoneda: data.tipoMoneda,
82
+ });
83
+ (0, common_builder_1.addMonetaryTotal)(root, {
84
+ mtoOperGravadas: data.mtoOperGravadas,
85
+ mtoOperExoneradas: data.mtoOperExoneradas,
86
+ mtoOperInafectas: data.mtoOperInafectas,
87
+ mtoOperExportacion: data.mtoOperExportacion,
88
+ mtoOperGratuitas: data.mtoOperGratuitas,
89
+ valorVenta: data.valorVenta,
90
+ subTotal: data.subTotal,
91
+ mtoImpVenta: data.mtoImpVenta,
92
+ mtoDescuentos: data.mtoDescuentos,
93
+ redondeo: data.redondeo,
94
+ tipoMoneda: data.tipoMoneda,
95
+ });
96
+ data.details.forEach((detail, i) => {
97
+ (0, common_builder_1.addInvoiceLine)(root, detail, i + 1, data.tipoMoneda, 'cac:InvoiceLine');
98
+ });
99
+ return root.end({ prettyPrint: true });
100
+ }
101
+ function addDetraccionExtension(root, data) {
102
+ const d = data.detraccion;
103
+ root.ele('cac:AdditionalDocumentReference')
104
+ .ele('cbc:ID').txt('detraccion').up()
105
+ .ele('cac:Attachment')
106
+ .ele('cac:ExternalReference')
107
+ .ele('cbc:URI').txt(`#detraccion|${d.codBienDetraccion}|${d.codMedioPago}|${d.ctaBanco ?? ''}|${(0, common_builder_1.fmt)(d.percent)}|${(0, common_builder_1.fmt)(d.mount)}`).up()
108
+ .up()
109
+ .up()
110
+ .up();
111
+ }
112
+ //# sourceMappingURL=invoice.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice.builder.js","sourceRoot":"","sources":["../../src/xml/invoice.builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ export declare const NS_INVOICE: {
2
+ xmlns: string;
3
+ 'xmlns:cac': string;
4
+ 'xmlns:cbc': string;
5
+ 'xmlns:ds': string;
6
+ 'xmlns:ext': string;
7
+ 'xmlns:sac': string;
8
+ 'xmlns:xsi': string;
9
+ };
10
+ export declare const NS_CREDIT_NOTE: {
11
+ xmlns: string;
12
+ 'xmlns:cac': string;
13
+ 'xmlns:cbc': string;
14
+ 'xmlns:ds': string;
15
+ 'xmlns:ext': string;
16
+ 'xmlns:sac': string;
17
+ 'xmlns:xsi': string;
18
+ };
19
+ export declare const NS_DEBIT_NOTE: {
20
+ xmlns: string;
21
+ 'xmlns:cac': string;
22
+ 'xmlns:cbc': string;
23
+ 'xmlns:ds': string;
24
+ 'xmlns:ext': string;
25
+ 'xmlns:sac': string;
26
+ 'xmlns:xsi': string;
27
+ };
28
+ export declare const NS_DESPATCH: {
29
+ xmlns: string;
30
+ 'xmlns:cac': string;
31
+ 'xmlns:cbc': string;
32
+ 'xmlns:ds': string;
33
+ 'xmlns:ext': string;
34
+ 'xmlns:sac': string;
35
+ 'xmlns:xsi': string;
36
+ };
37
+ export declare const NS_SUMMARY: {
38
+ xmlns: string;
39
+ 'xmlns:cac': string;
40
+ 'xmlns:cbc': string;
41
+ 'xmlns:ds': string;
42
+ 'xmlns:ext': string;
43
+ 'xmlns:sac': string;
44
+ 'xmlns:xsi': string;
45
+ };
46
+ export declare const NS_VOIDED: {
47
+ xmlns: string;
48
+ 'xmlns:cac': string;
49
+ 'xmlns:cbc': string;
50
+ 'xmlns:ds': string;
51
+ 'xmlns:ext': string;
52
+ 'xmlns:sac': string;
53
+ 'xmlns:xsi': string;
54
+ };
55
+ export declare const TRIBUTOS: Record<string, {
56
+ id: string;
57
+ name: string;
58
+ typeCode: string;
59
+ }>;
60
+ export declare const TIPO_AFE_IGV_TRIBUTO: Record<string, string>;
61
+ export declare function tipAfeToTributo(tipAfe: string): {
62
+ id: string;
63
+ name: string;
64
+ typeCode: string;
65
+ };
66
+ export declare const CATALOGO_61_GRE: Record<string, string>;
67
+ export declare function tipAfeToPreType(tipAfe: string): string;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CATALOGO_61_GRE = exports.TIPO_AFE_IGV_TRIBUTO = exports.TRIBUTOS = exports.NS_VOIDED = exports.NS_SUMMARY = exports.NS_DESPATCH = exports.NS_DEBIT_NOTE = exports.NS_CREDIT_NOTE = exports.NS_INVOICE = void 0;
4
+ exports.tipAfeToTributo = tipAfeToTributo;
5
+ exports.tipAfeToPreType = tipAfeToPreType;
6
+ exports.NS_INVOICE = {
7
+ xmlns: 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2',
8
+ 'xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',
9
+ 'xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',
10
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
11
+ 'xmlns:ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
12
+ 'xmlns:sac': 'urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1',
13
+ 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
14
+ };
15
+ exports.NS_CREDIT_NOTE = {
16
+ xmlns: 'urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2',
17
+ 'xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',
18
+ 'xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',
19
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
20
+ 'xmlns:ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
21
+ 'xmlns:sac': 'urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1',
22
+ 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
23
+ };
24
+ exports.NS_DEBIT_NOTE = {
25
+ xmlns: 'urn:oasis:names:specification:ubl:schema:xsd:DebitNote-2',
26
+ 'xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',
27
+ 'xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',
28
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
29
+ 'xmlns:ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
30
+ 'xmlns:sac': 'urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1',
31
+ 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
32
+ };
33
+ exports.NS_DESPATCH = {
34
+ xmlns: 'urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2',
35
+ 'xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',
36
+ 'xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',
37
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
38
+ 'xmlns:ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
39
+ 'xmlns:sac': 'urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1',
40
+ 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
41
+ };
42
+ exports.NS_SUMMARY = {
43
+ xmlns: 'urn:sunat:names:specification:ubl:peru:schema:xsd:SummaryDocuments-1',
44
+ 'xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',
45
+ 'xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',
46
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
47
+ 'xmlns:ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
48
+ 'xmlns:sac': 'urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1',
49
+ 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
50
+ };
51
+ exports.NS_VOIDED = {
52
+ xmlns: 'urn:sunat:names:specification:ubl:peru:schema:xsd:VoidedDocuments-1',
53
+ 'xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',
54
+ 'xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',
55
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
56
+ 'xmlns:ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
57
+ 'xmlns:sac': 'urn:sunat:names:specification:ubl:peru:schema:xsd:SunatAggregateComponents-1',
58
+ 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
59
+ };
60
+ exports.TRIBUTOS = {
61
+ IGV: { id: '1000', name: 'IGV', typeCode: 'VAT' },
62
+ IVAP: { id: '1016', name: 'IVAP', typeCode: 'VAT' },
63
+ ISC: { id: '2000', name: 'ISC', typeCode: 'EXC' },
64
+ ICBPER: { id: '7152', name: 'ICBPER', typeCode: 'OTH' },
65
+ EXP: { id: '9995', name: 'EXP', typeCode: 'FRE' },
66
+ GRA: { id: '9996', name: 'GRA', typeCode: 'FRE' },
67
+ EXO: { id: '9997', name: 'EXO', typeCode: 'VAT' },
68
+ INA: { id: '9998', name: 'INA', typeCode: 'FRE' },
69
+ };
70
+ exports.TIPO_AFE_IGV_TRIBUTO = {
71
+ '10': 'IGV', '11': 'IGV', '12': 'IGV', '13': 'IGV', '14': 'IGV', '15': 'IGV', '16': 'IGV', '17': 'IGV',
72
+ '20': 'EXO',
73
+ '30': 'INA', '31': 'INA', '32': 'INA', '33': 'INA', '34': 'INA', '35': 'INA', '36': 'INA',
74
+ '40': 'EXP',
75
+ '21': 'EXO',
76
+ };
77
+ function tipAfeToTributo(tipAfe) {
78
+ const name = exports.TIPO_AFE_IGV_TRIBUTO[tipAfe] ?? 'IGV';
79
+ return exports.TRIBUTOS[name] ?? exports.TRIBUTOS.IGV;
80
+ }
81
+ exports.CATALOGO_61_GRE = {
82
+ '01': 'Factura',
83
+ '03': 'Boleta de Venta',
84
+ '07': 'Nota de Crédito',
85
+ '08': 'Nota de Débito',
86
+ '09': 'Guía de Remisión - Remitente',
87
+ '31': 'Guía de Remisión - Transportista',
88
+ '50': 'Declaración Aduanera de Mercancías (DAM)',
89
+ '52': 'Declaración Simplificada (DS)',
90
+ '92': 'Cita u Orden de Entrega del Terminal Portuario',
91
+ '93': 'Documento ZOFRATACNA',
92
+ '94': 'Solicitud de Traslado ZED',
93
+ '95': 'Solicitud de Traslado ZOFRATACNA',
94
+ };
95
+ function tipAfeToPreType(tipAfe) {
96
+ const gratuitas = ['15', '16', '17'];
97
+ return gratuitas.includes(tipAfe) ? '02' : '01';
98
+ }
99
+ //# sourceMappingURL=namespaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/xml/namespaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { NotePayload } from '../types/sunat.types';
2
+ export declare function buildNoteXml(data: NotePayload): string;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildNoteXml = buildNoteXml;
4
+ const xmlbuilder2_1 = require("xmlbuilder2");
5
+ const namespaces_1 = require("./namespaces");
6
+ const common_builder_1 = require("./common.builder");
7
+ function buildNoteXml(data) {
8
+ const isNC = data.tipoDoc === '07';
9
+ const rootTag = isNC ? 'CreditNote' : 'DebitNote';
10
+ const ns = isNC ? namespaces_1.NS_CREDIT_NOTE : namespaces_1.NS_DEBIT_NOTE;
11
+ const lineTag = isNC ? 'cac:CreditNoteLine' : 'cac:DebitNoteLine';
12
+ const root = (0, xmlbuilder2_1.create)({ version: '1.0', encoding: 'UTF-8' }).ele(rootTag, ns);
13
+ (0, common_builder_1.addUblExtensions)(root);
14
+ root.ele('cbc:UBLVersionID').txt(data.ublVersion ?? '2.1').up();
15
+ root.ele('cbc:CustomizationID').txt('2.0').up();
16
+ root.ele('cbc:ID').txt(`${data.serie}-${data.correlativo}`).up();
17
+ root.ele('cbc:IssueDate').txt((0, common_builder_1.isoDate)(data.fechaEmision)).up();
18
+ root.ele('cbc:IssueTime').txt((0, common_builder_1.isoTime)(data.fechaEmision)).up();
19
+ (0, common_builder_1.addLegends)(root, data.legends ?? []);
20
+ root.ele('cbc:DocumentCurrencyCode').txt(data.tipoMoneda).up();
21
+ root.ele('cac:DiscrepancyResponse')
22
+ .ele('cbc:ReferenceID').txt(data.numDocAfectado).up()
23
+ .ele('cbc:ResponseCode').txt(data.codMotivo).up()
24
+ .ele('cbc:Description').txt(data.desMotivo).up()
25
+ .up();
26
+ root.ele('cac:BillingReference')
27
+ .ele('cac:InvoiceDocumentReference')
28
+ .ele('cbc:ID').txt(data.numDocAfectado).up()
29
+ .ele('cbc:DocumentTypeCode').txt(data.tipDocAfectado).up()
30
+ .up()
31
+ .up();
32
+ (0, common_builder_1.addSignatureBlock)(root, data.company.ruc, data.company.razonSocial);
33
+ (0, common_builder_1.addSupplierParty)(root, data.company);
34
+ (0, common_builder_1.addCustomerParty)(root, data.client);
35
+ (0, common_builder_1.addDocumentTaxTotal)(root, {
36
+ mtoOperGravadas: data.mtoOperGravadas,
37
+ mtoOperExoneradas: data.mtoOperExoneradas,
38
+ mtoOperInafectas: data.mtoOperInafectas,
39
+ mtoIGV: data.mtoIGV,
40
+ totalImpuestos: data.totalImpuestos,
41
+ tipoMoneda: data.tipoMoneda,
42
+ });
43
+ (0, common_builder_1.addMonetaryTotal)(root, {
44
+ valorVenta: data.valorVenta,
45
+ subTotal: data.subTotal,
46
+ mtoImpVenta: data.mtoImpVenta,
47
+ tipoMoneda: data.tipoMoneda,
48
+ elementName: isNC ? 'cac:LegalMonetaryTotal' : 'cac:RequestedMonetaryTotal',
49
+ });
50
+ data.details.forEach((detail, i) => {
51
+ (0, common_builder_1.addInvoiceLine)(root, detail, i + 1, data.tipoMoneda, lineTag);
52
+ });
53
+ return root.end({ prettyPrint: true });
54
+ }
55
+ //# sourceMappingURL=note.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.builder.js","sourceRoot":"","sources":["../../src/xml/note.builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { SummaryPayload } from '../types/sunat.types';
2
+ export declare function buildSummaryXml(data: SummaryPayload): string;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSummaryXml = buildSummaryXml;
4
+ const xmlbuilder2_1 = require("xmlbuilder2");
5
+ const namespaces_1 = require("./namespaces");
6
+ const common_builder_1 = require("./common.builder");
7
+ function buildSummaryXml(data) {
8
+ const root = (0, xmlbuilder2_1.create)({ version: '1.0', encoding: 'UTF-8' })
9
+ .ele('SummaryDocuments', namespaces_1.NS_SUMMARY);
10
+ (0, common_builder_1.addUblExtensions)(root);
11
+ root.ele('cbc:UBLVersionID').txt('2.1').up();
12
+ root.ele('cbc:CustomizationID').txt('1.1').up();
13
+ root.ele('cbc:ID').txt(`RC-${(0, common_builder_1.isoDate)(data.fecResumen).replace(/-/g, '')}-${data.correlativo}`).up();
14
+ root.ele('cbc:ReferenceDate').txt((0, common_builder_1.isoDate)(data.fecGeneracion)).up();
15
+ root.ele('cbc:IssueDate').txt((0, common_builder_1.isoDate)(data.fecResumen)).up();
16
+ (0, common_builder_1.addSignatureBlock)(root, data.company.ruc, data.company.razonSocial);
17
+ root.ele('sac:SUNATSupplierParty')
18
+ .ele('cbc:CustomerAssignedAccountID').txt(data.company.ruc).up()
19
+ .ele('cac:Party')
20
+ .ele('cac:PartyLegalEntity')
21
+ .ele('cbc:RegistrationName').txt(data.company.razonSocial).up()
22
+ .up()
23
+ .up()
24
+ .up();
25
+ data.details.forEach((d, i) => {
26
+ const line = root.ele('sac:SummaryDocumentsLine');
27
+ line.ele('cbc:LineID').txt(String(i + 1)).up();
28
+ line.ele('cbc:DocumentTypeCode').txt(d.tipoDoc).up();
29
+ line.ele('cbc:ID').txt(d.serieNro).up();
30
+ line.ele('sac:StatusCode').txt(d.estado).up();
31
+ line.ele('sac:TotalAmount', { currencyID: 'PEN' }).txt((0, common_builder_1.fmt)(d.total)).up();
32
+ line.ele('sac:SUNATCustomerParty')
33
+ .ele('cbc:CustomerAssignedAccountID').txt(d.clienteNro).up()
34
+ .ele('cbc:AdditionalAccountID').txt(d.clienteTipo).up()
35
+ .up();
36
+ addSummaryAmounts(line, d);
37
+ });
38
+ return root.end({ prettyPrint: true });
39
+ }
40
+ function addSummaryAmounts(line, d) {
41
+ const currency = 'PEN';
42
+ if ((d.mtoOperGravadas ?? 0) > 0) {
43
+ line.ele('sac:BillingPayment')
44
+ .ele('cbc:PaidAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(d.mtoOperGravadas)).up()
45
+ .ele('cbc:InstructionID').txt('01').up()
46
+ .up();
47
+ }
48
+ if ((d.mtoOperExoneradas ?? 0) > 0) {
49
+ line.ele('sac:BillingPayment')
50
+ .ele('cbc:PaidAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(d.mtoOperExoneradas)).up()
51
+ .ele('cbc:InstructionID').txt('02').up()
52
+ .up();
53
+ }
54
+ if ((d.mtoOperInafectas ?? 0) > 0) {
55
+ line.ele('sac:BillingPayment')
56
+ .ele('cbc:PaidAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(d.mtoOperInafectas)).up()
57
+ .ele('cbc:InstructionID').txt('03').up()
58
+ .up();
59
+ }
60
+ if ((d.mtoIGV ?? 0) > 0) {
61
+ line.ele('sac:BillingPayment')
62
+ .ele('cbc:PaidAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(d.mtoIGV)).up()
63
+ .ele('cbc:InstructionID').txt('04').up()
64
+ .up();
65
+ }
66
+ if (d.docReferencia && d.tipDocReferencia) {
67
+ line.ele('cac:BillingReference')
68
+ .ele('cac:InvoiceDocumentReference')
69
+ .ele('cbc:ID').txt(d.docReferencia).up()
70
+ .ele('cbc:DocumentTypeCode').txt(d.tipDocReferencia).up()
71
+ .up()
72
+ .up();
73
+ }
74
+ const taxTotal = line.ele('cac:TaxTotal');
75
+ taxTotal.ele('cbc:TaxAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(d.mtoIGV ?? 0)).up();
76
+ if ((d.mtoOperGravadas ?? 0) > 0) {
77
+ addSummaryTaxSubtotal(taxTotal, d.mtoOperGravadas, d.mtoIGV ?? 0, '1000', 'IGV', 'VAT', currency);
78
+ }
79
+ if ((d.mtoOperExoneradas ?? 0) > 0) {
80
+ addSummaryTaxSubtotal(taxTotal, d.mtoOperExoneradas, 0, '9997', 'EXO', 'VAT', currency);
81
+ }
82
+ if ((d.mtoOperInafectas ?? 0) > 0) {
83
+ addSummaryTaxSubtotal(taxTotal, d.mtoOperInafectas, 0, '9998', 'INA', 'FRE', currency);
84
+ }
85
+ if ((d.mtoOperGratuitas ?? 0) > 0) {
86
+ addSummaryTaxSubtotal(taxTotal, d.mtoOperGratuitas, 0, '9996', 'GRA', 'FRE', currency);
87
+ }
88
+ }
89
+ function addSummaryTaxSubtotal(taxTotal, taxable, amount, id, name, typeCode, currency) {
90
+ const sub = taxTotal.ele('cac:TaxSubtotal');
91
+ sub.ele('cbc:TaxableAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(taxable)).up();
92
+ sub.ele('cbc:TaxAmount', { currencyID: currency }).txt((0, common_builder_1.fmt)(amount)).up();
93
+ sub.ele('cac:TaxCategory')
94
+ .ele('cac:TaxScheme')
95
+ .ele('cbc:ID').txt(id).up()
96
+ .ele('cbc:Name').txt(name).up()
97
+ .ele('cbc:TaxTypeCode').txt(typeCode).up()
98
+ .up()
99
+ .up();
100
+ }
101
+ //# sourceMappingURL=summary.builder.js.map