@facturacr/atv-sdk 1.2.14 → 2.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 (53) hide show
  1. package/__tests__/stubs/createDocument.data.ts +4 -1
  2. package/dist/src/ATV/core/CreateDocFactory.d.ts +2 -1
  3. package/dist/src/ATV/core/CreateDocFactory.js +1 -1
  4. package/dist/src/ATV/core/CreateDocFactory.js.map +1 -1
  5. package/dist/src/ATV/core/Document.d.ts +2 -1
  6. package/dist/src/ATV/core/Document.js +4 -1
  7. package/dist/src/ATV/core/Document.js.map +1 -1
  8. package/dist/src/ATV/core/Person.d.ts +2 -0
  9. package/dist/src/ATV/core/Person.js +3 -0
  10. package/dist/src/ATV/core/Person.js.map +1 -1
  11. package/dist/src/ATV/mappers/billDocToAtv.js +15 -15
  12. package/dist/src/ATV/mappers/billDocToAtv.js.map +1 -1
  13. package/dist/src/index.d.ts +1 -1
  14. package/dist/src/lib/genXML/sigXML/index.js +2 -1
  15. package/dist/src/lib/genXML/sigXML/index.js.map +1 -1
  16. package/dist/src/lib/genXML/xmlConfig.d.ts +25 -24
  17. package/dist/src/lib/genXML/xmlConfig.js +25 -20
  18. package/dist/src/lib/genXML/xmlConfig.js.map +1 -1
  19. package/dist/src/types/facturaInterfaces.d.ts +10 -6
  20. package/doc/atv-structures/4.4/breaking-changes-ai-generated.md +53 -0
  21. package/doc/atv-structures/4.4/supported.md +12 -0
  22. package/examples/README.md +7 -2
  23. package/examples/createAndSend.ts +4 -3
  24. package/package.json +1 -1
  25. package/src/ATV/core/CreateDocFactory.ts +70 -70
  26. package/src/ATV/core/Document.ts +6 -2
  27. package/src/ATV/core/Person.ts +5 -0
  28. package/src/ATV/mappers/billDocToAtv.ts +20 -19
  29. package/src/index.ts +2 -2
  30. package/src/lib/genXML/sigXML/index.ts +2 -1
  31. package/src/lib/genXML/xmlConfig.ts +27 -33
  32. package/src/types/facturaInterfaces.ts +11 -6
  33. package/dist/src/confirmXML.d.ts +0 -8
  34. package/dist/src/confirmXML.js +0 -44
  35. package/dist/src/confirmXML.js.map +0 -1
  36. package/dist/src/creditNote.d.ts +0 -14
  37. package/dist/src/creditNote.js +0 -77
  38. package/dist/src/creditNote.js.map +0 -1
  39. package/dist/src/electronicBill.d.ts +0 -3
  40. package/dist/src/electronicBill.js +0 -61
  41. package/dist/src/electronicBill.js.map +0 -1
  42. package/dist/src/lib/genJSON/confirmXML.d.ts +0 -7
  43. package/dist/src/lib/genJSON/confirmXML.js +0 -46
  44. package/dist/src/lib/genJSON/confirmXML.js.map +0 -1
  45. package/dist/src/lib/genJSON/index.d.ts +0 -5
  46. package/dist/src/lib/genJSON/index.js +0 -135
  47. package/dist/src/lib/genJSON/index.js.map +0 -1
  48. package/examples/genBasicXML.ts +0 -31
  49. package/src/confirmXML.ts +0 -40
  50. package/src/creditNote.ts +0 -93
  51. package/src/electronicBill.ts +0 -57
  52. package/src/lib/genJSON/confirmXML.ts +0 -47
  53. package/src/lib/genJSON/index.ts +0 -131
@@ -1,77 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.parseCreditNote = void 0;
13
- const index_1 = require("./lib/genXML/index");
14
- const index_2 = require("./services/send/index");
15
- const index_3 = require("./lib/genClave/index");
16
- const comprobantes_1 = require("./helpers/comprobantes");
17
- const VOUCHER_TYPE = 'NC';
18
- function parseCreditNote(options) {
19
- const resum = (0, comprobantes_1.getBillResum)(options.frontEndRequest);
20
- const receiver = (0, comprobantes_1.getReceiver)(options.frontEndRequest);
21
- const sender = (0, comprobantes_1.getSender)(options.frontEndRequest);
22
- return {
23
- NotaCreditoElectronica: {
24
- Clave: options.clave,
25
- CodigoActividad: options.frontEndRequest.actividad.padStart(6, '0'),
26
- NumeroConsecutivo: options.consecutivo,
27
- FechaEmision: options.date.toISOString(),
28
- Emisor: sender,
29
- Receptor: receiver,
30
- CondicionVenta: '01',
31
- MedioPago: '01',
32
- DetalleServicio: {
33
- LineaDetalle: options.frontEndRequest.LineasDetalle
34
- },
35
- ResumenFactura: resum
36
- }
37
- };
38
- }
39
- exports.parseCreditNote = parseCreditNote;
40
- function sendMessage(options) {
41
- const emisor = (0, comprobantes_1.getSimpleSender)(options.frontEndRequest);
42
- const receptor = (0, comprobantes_1.getSimpleReceiver)(options.frontEndRequest);
43
- const finalMesage = {
44
- clave: options.clave,
45
- fecha: options.date.toISOString(),
46
- comprobanteXml: options.xml,
47
- emisor,
48
- receptor
49
- };
50
- return (0, index_2.send)(options.token, finalMesage).catch((err) => {
51
- const response = err.response || {};
52
- const header = response.headers || {};
53
- console.log('x-error-cause', header['x-error-cause']);
54
- });
55
- }
56
- exports.default = (options) => __awaiter(void 0, void 0, void 0, function* () {
57
- const date = new Date();
58
- const parsedOpts = (0, index_3.parseOptions)(options.frontEndRequest);
59
- const claveObj = (0, index_3.genClaveObj)(parsedOpts);
60
- const clave = (0, index_3.genString)(claveObj);
61
- const consecutivo = Object.values(claveObj.consecutivo).join('');
62
- const vaucher = parseCreditNote({
63
- frontEndRequest: options.frontEndRequest,
64
- consecutivo,
65
- clave,
66
- date
67
- });
68
- const xml = yield (0, index_1.genXML)(VOUCHER_TYPE, vaucher, Object.assign(Object.assign({}, options.xmlOpt), { base64: true }));
69
- return sendMessage({
70
- frontEndRequest: options.frontEndRequest,
71
- token: options.token,
72
- clave,
73
- date,
74
- xml
75
- });
76
- });
77
- //# sourceMappingURL=creditNote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"creditNote.js","sourceRoot":"","sources":["../../src/creditNote.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ClientPayload } from '@src/types/globalInterfaces';
2
- declare const _default: (token: any, frontEndRequest: ClientPayload, xmlOpt: any) => Promise<any>;
3
- export default _default;
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const index_1 = require("./lib/genClave/index");
16
- const index_2 = __importDefault(require("./lib/genJSON/index"));
17
- const index_3 = require("./services/send/index");
18
- const DEFAULT_VALUES = {
19
- tipoIdentificacion: '01'
20
- };
21
- const encodeXML = (xmlStr) => {
22
- const buffer = Buffer.from(xmlStr);
23
- return buffer.toString('base64');
24
- };
25
- function getSender(frontEndRequest) {
26
- const sender = frontEndRequest.Emisor;
27
- return {
28
- tipoIdentificacion: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion,
29
- numeroIdentificacion: sender.Identificacion.Numero
30
- };
31
- }
32
- function getReceiver(frontEndRequest) {
33
- const receiver = frontEndRequest.Receptor;
34
- return {
35
- tipoIdentificacion: receiver.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion,
36
- numeroIdentificacion: receiver.Identificacion.Numero
37
- };
38
- }
39
- exports.default = (token, frontEndRequest, xmlOpt) => __awaiter(void 0, void 0, void 0, function* () {
40
- const parsedOpts = (0, index_1.parseOptions)(frontEndRequest);
41
- const claveObj = (0, index_1.genClaveObj)(parsedOpts);
42
- const claveStr = (0, index_1.genString)(claveObj);
43
- const date = new Date();
44
- const consecutivo = Object.values(claveObj.consecutivo).join('');
45
- const XML = yield (0, index_2.default)(frontEndRequest, date.toISOString(), claveStr, consecutivo, Object.assign(Object.assign({}, xmlOpt), { base64: true }));
46
- const finalMesage = {
47
- clave: claveStr,
48
- fecha: date.toISOString(),
49
- emisor: getSender(frontEndRequest),
50
- receptor: getReceiver(frontEndRequest),
51
- comprobanteXml: encodeXML(XML)
52
- };
53
- const response = (0, index_3.send)(token, finalMesage).catch((err) => {
54
- const response = err.response || {};
55
- const header = response.headers || {};
56
- console.log('response status code', err.response.status);
57
- console.log('x-error-cause', header['x-error-cause']);
58
- });
59
- return response;
60
- });
61
- //# sourceMappingURL=electronicBill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"electronicBill.js","sourceRoot":"","sources":["../../src/electronicBill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,gDAA8E;AAC9E,gEAA4C;AAC5C,iDAA+C;AAG/C,MAAM,cAAc,GAAG;IACrB,kBAAkB,EAAE,IAAyC;CAC9D,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,SAAS,SAAS,CAAC,eAA8B;IAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAA;IACrC,OAAO;QACL,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,kBAAkB;QACnF,oBAAoB,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM;KACnD,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,eAA8B;IACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAA;IACzC,OAAO;QACL,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,kBAAkB;QACrF,oBAAoB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM;KACrD,CAAA;AACH,CAAC;AAED,kBAAe,CAAO,KAAK,EAAE,eAA8B,EAAE,MAAM,EAAgB,EAAE;IACnF,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,eAAe,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,UAAU,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACvB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM,IAAA,eAAO,EAAC,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,kCAC/E,MAAM,KACT,MAAM,EAAE,IAAI,IACZ,CAAA;IACF,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;QACzB,MAAM,EAAE,SAAS,CAAC,eAAe,CAAC;QAClC,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC;QACtC,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC;KAC/B,CAAA;IACD,MAAM,QAAQ,GAAG,IAAA,YAAI,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;QACrC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA,CAAA"}
@@ -1,7 +0,0 @@
1
- import { MensajeReceptorContenedor } from '@src/types/xml/mensajeReceptor';
2
- export declare function getMsjObj(opts: {
3
- fullInvoice: any;
4
- consecutivo: string;
5
- tipoDocKey: string;
6
- }): MensajeReceptorContenedor;
7
- export declare function getFinalMessage(fullInvoice: any, consecutivoReceptor: string, xmlBase64: any): any;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFinalMessage = exports.getMsjObj = void 0;
4
- const tipoDocumento_1 = require("../../data/tipoDocumento");
5
- function getMsjObj(opts) {
6
- const { fullInvoice, tipoDocKey } = opts;
7
- const emisor = fullInvoice.Emisor;
8
- const receptor = fullInvoice.Receptor;
9
- const msj = tipoDocumento_1.tipoDocumento[tipoDocKey].msjReceptorCode;
10
- return {
11
- MensajeReceptor: {
12
- Clave: fullInvoice.Clave,
13
- NumeroCedulaEmisor: emisor.Identificacion.Numero,
14
- FechaEmisionDoc: fullInvoice.FechaEmision,
15
- Mensaje: msj,
16
- DetalleMensaje: '',
17
- MontoTotalImpuesto: fullInvoice.ResumenFactura.TotalImpuesto,
18
- CodigoActividad: fullInvoice.CodigoActividad,
19
- CondicionImpuesto: '04', // TODO investigar casos de uso
20
- MontoTotalDeGastoAplicable: fullInvoice.ResumenFactura.TotalVenta, // TODO investigar casos de uso
21
- TotalFactura: fullInvoice.ResumenFactura.TotalVenta,
22
- NumeroCedulaReceptor: receptor.Identificacion.Numero,
23
- NumeroConsecutivoReceptor: opts.consecutivo
24
- }
25
- };
26
- }
27
- exports.getMsjObj = getMsjObj;
28
- function getFinalMessage(fullInvoice, consecutivoReceptor, xmlBase64) {
29
- const date = new Date();
30
- return {
31
- clave: fullInvoice.Clave, // in command
32
- fecha: date.toISOString(), // in command
33
- emisor: {
34
- tipoIdentificacion: fullInvoice.Receptor.Identificacion.Tipo,
35
- numeroIdentificacion: fullInvoice.Receptor.Identificacion.Numero
36
- },
37
- receptor: {
38
- tipoIdentificacion: fullInvoice.Emisor.Identificacion.Tipo,
39
- numeroIdentificacion: fullInvoice.Emisor.Identificacion.Numero
40
- },
41
- consecutivoReceptor,
42
- comprobanteXml: xmlBase64 // in command
43
- };
44
- }
45
- exports.getFinalMessage = getFinalMessage;
46
- //# sourceMappingURL=confirmXML.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"confirmXML.js","sourceRoot":"","sources":["../../../../src/lib/genJSON/confirmXML.ts"],"names":[],"mappings":";;;AACA,4DAAuD;AAEvD,SAAgB,SAAS,CAAC,IAIvB;IACD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IACxC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;IACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;IACrC,MAAM,GAAG,GAAG,6BAAa,CAAC,UAAU,CAAC,CAAC,eAAe,CAAA;IACrD,OAAO;QACL,eAAe,EAAE;YACf,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM;YAChD,eAAe,EAAE,WAAW,CAAC,YAAY;YACzC,OAAO,EAAE,GAAG;YACZ,cAAc,EAAE,EAAE;YAClB,kBAAkB,EAAE,WAAW,CAAC,cAAc,CAAC,aAAa;YAC5D,eAAe,EAAE,WAAW,CAAC,eAAe;YAC5C,iBAAiB,EAAE,IAAI,EAAE,+BAA+B;YACxD,0BAA0B,EAAE,WAAW,CAAC,cAAc,CAAC,UAAU,EAAE,+BAA+B;YAClG,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,UAAU;YACnD,oBAAoB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM;YACpD,yBAAyB,EAAE,IAAI,CAAC,WAAW;SAC5C;KACF,CAAA;AACH,CAAC;AAzBD,8BAyBC;AAED,SAAgB,eAAe,CAAC,WAAgB,EAAE,mBAA2B,EAAE,SAAc;IAC3F,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACvB,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,aAAa;QACvC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa;QACxC,MAAM,EAAE;YACN,kBAAkB,EAAE,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI;YAC5D,oBAAoB,EAAE,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM;SACjE;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI;YAC1D,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM;SAC/D;QACD,mBAAmB;QACnB,cAAc,EAAE,SAAS,CAAC,aAAa;KACxC,CAAA;AACH,CAAC;AAhBD,0CAgBC"}
@@ -1,5 +0,0 @@
1
- import { ClientPayload } from '@src/types/globalInterfaces';
2
- import { LineaDetalle } from '@src/types/facturaInterfaces';
3
- export declare function setLinesDefaults(lines: LineaDetalle[]): LineaDetalle[];
4
- declare const _default: (frontEndRequest: ClientPayload, date: any, clave: string, consecutivo: string, options: any) => Promise<any>;
5
- export default _default;
@@ -1,135 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.setLinesDefaults = void 0;
13
- const genXML_1 = require("../genXML");
14
- // Default XML Values
15
- const DEFAULT_VALUES = {
16
- key: 0,
17
- message: 'Default msj',
18
- detailsMessage: 'Default details msj',
19
- tipoIdentificacion: '01'
20
- };
21
- function sumLines(lines) {
22
- return lines.reduce((accumulator, currentValue) => {
23
- const prevTotal = accumulator.MontoTotal || 0;
24
- const prevTax = accumulator.Impuesto || { Impuesto: { Monto: 0 } };
25
- return {
26
- total: prevTotal + currentValue.MontoTotal,
27
- taxes: prevTax.Impuesto.Monto + currentValue.Impuesto.Monto
28
- };
29
- }, 0);
30
- }
31
- function getBillResum(lines) {
32
- const sum = sumLines(lines);
33
- return {
34
- CodigoTipoMoneda: {
35
- CodigoMoneda: 'CRC',
36
- TipoCambio: '585.69'
37
- },
38
- TotalServGravados: 0,
39
- TotalServExentos: 0,
40
- // TotalServExonerado: 0,
41
- TotalMercanciasGravadas: sum.total,
42
- TotalMercanciasExentas: 0,
43
- TotalGravado: sum.total,
44
- TotalExento: 0,
45
- TotalExonerado: 0,
46
- TotalVenta: sum.total,
47
- TotalDescuentos: 0,
48
- TotalVentaNeta: sum.total,
49
- TotalImpuesto: sum.taxes,
50
- TotalComprobante: sum.total + sum.taxes
51
- };
52
- }
53
- function getSender(frontEndRequest) {
54
- const sender = frontEndRequest.Emisor;
55
- return {
56
- Nombre: sender.Nombre,
57
- Identificacion: {
58
- Tipo: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion,
59
- Numero: sender.Identificacion.Numero
60
- },
61
- NombreComercial: sender.NombreComercial,
62
- Ubicacion: sender.Ubicacion,
63
- Telefono: sender.Telefono,
64
- Fax: sender.Fax,
65
- CorreoElectronico: sender.CorreoElectronico
66
- };
67
- }
68
- function setTaxObj(subtotal, taxObj) {
69
- const tax = typeof taxObj.Tarifa === 'number' ? taxObj.Tarifa : 13;
70
- return {
71
- Codigo: taxObj.Codigo,
72
- CodigoTarifa: taxObj.CodigoTarifa,
73
- Tarifa: tax,
74
- Monto: subtotal * (tax / 100)
75
- };
76
- }
77
- function setLinesDefaults(lines) {
78
- return lines.map((line, index) => {
79
- const quantity = line.Cantidad || 1;
80
- const total = line.PrecioUnitario * quantity;
81
- const subtotal = total; // restar descuentos
82
- const taxObj = setTaxObj(subtotal, line.Impuesto);
83
- return {
84
- NumeroLinea: (index + 1).toString(),
85
- Codigo: line.Codigo,
86
- Cantidad: quantity,
87
- UnidadMedida: line.UnidadMedida || 'Sp',
88
- Detalle: line.Detalle,
89
- PrecioUnitario: line.PrecioUnitario,
90
- MontoTotal: total,
91
- SubTotal: subtotal,
92
- Impuesto: taxObj,
93
- MontoTotalLinea: subtotal + taxObj.Monto
94
- };
95
- });
96
- }
97
- exports.setLinesDefaults = setLinesDefaults;
98
- function getReceiver(frontEndRequest) {
99
- const receiver = frontEndRequest.Receptor;
100
- return {
101
- Nombre: receiver.Nombre,
102
- Identificacion: {
103
- Tipo: receiver.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion,
104
- Numero: receiver.Identificacion.Numero
105
- },
106
- NombreComercial: receiver.NombreComercial,
107
- Ubicacion: receiver.Ubicacion
108
- };
109
- }
110
- exports.default = (frontEndRequest, date, clave, consecutivo, options) => __awaiter(void 0, void 0, void 0, function* () {
111
- const receiver = getReceiver(frontEndRequest);
112
- const sender = getSender(frontEndRequest);
113
- const lines = setLinesDefaults(frontEndRequest.LineasDetalle);
114
- const key = frontEndRequest.facturaElectronicaType || 'FacturaElectronica';
115
- const body = {
116
- Clave: clave,
117
- CodigoActividad: frontEndRequest.actividad.padStart(6, '0'),
118
- NumeroConsecutivo: consecutivo,
119
- FechaEmision: date,
120
- Emisor: sender,
121
- Receptor: receiver,
122
- CondicionVenta: '01',
123
- MedioPago: '03',
124
- DetalleServicio: {
125
- LineaDetalle: lines
126
- },
127
- ResumenFactura: getBillResum(lines)
128
- };
129
- const factura = {
130
- [key]: body
131
- };
132
- const XML = yield (0, genXML_1.genXML)(key, factura, options);
133
- return XML;
134
- });
135
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/genJSON/index.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import fs from 'fs'
2
- import genJSON from '@src/lib/genJSON'
3
- import { parseOptions, genClaveObj, genString } from '@src/lib/genClave'
4
- import requestStub from '@test/stubs/frontendRequest.stub'
5
- import { ClientPayload } from '@src/types/globalInterfaces'
6
-
7
- const frontEndRequest: ClientPayload = requestStub
8
-
9
- const SOURCE_P12_URI = process.env.SOURCE_P12_URI
10
- const SOURCE_P12_PASSPORT = process.env.SOURCE_P12_PASSPORT
11
- const pem = fs.readFileSync(SOURCE_P12_URI, 'binary')
12
- const outputSourceURI = process.env.SOURCE_URI_XML_OUTPUT
13
-
14
- async function main(): Promise<void> {
15
- const parsedOpts = parseOptions(frontEndRequest)
16
- const claveObj = genClaveObj(parsedOpts)
17
- const claveStr = genString(claveObj)
18
- const consecutivo = Object.values(claveObj.consecutivo).join('')
19
- const date = new Date()
20
- const XML = await genJSON(frontEndRequest, date.toISOString(), claveStr, consecutivo, {
21
- buffer: pem,
22
- password: SOURCE_P12_PASSPORT,
23
- base64: false
24
- })
25
- const data = XML
26
- fs.writeFile(outputSourceURI, data, (err) => {
27
- if (err) throw err
28
- })
29
- }
30
-
31
- main()
package/src/confirmXML.ts DELETED
@@ -1,40 +0,0 @@
1
- import { consecutivoStr } from '@src/lib/genClave'
2
- import { parseElectronicBillXML, genXML } from '@src/lib/genXML/index'
3
- import { send } from '@src/services/send/index'
4
- import { getFinalMessage, getMsjObj } from '@src/lib/genJSON/confirmXML'
5
-
6
- function getConsecutivoStr(opts: any): string {
7
- return consecutivoStr({
8
- sucursal: opts.consecutivo.sucursal,
9
- terminal: opts.consecutivo.terminal,
10
- tipoDocKey: opts.tipoDocKey,
11
- consecutivo: opts.consecutivo.consecutivo
12
- })
13
- }
14
-
15
- export default async (opts: {
16
- token: string;
17
- tipoDocKey: string;
18
- consecutivo: any;
19
- xmlStr: string;
20
- pemOpt: any;
21
- }): Promise<any> => {
22
- const { token, pemOpt, tipoDocKey } = opts
23
- const consecutivo = getConsecutivoStr(opts)
24
- const fullInvoice = parseElectronicBillXML(opts.xmlStr)
25
- const msjObj = getMsjObj({ fullInvoice, consecutivo, tipoDocKey })
26
- const xmlBase64 = await genXML(tipoDocKey, msjObj, {
27
- buffer: pemOpt.buffer,
28
- password: pemOpt.password,
29
- base64: true
30
- })
31
- const finalMesage = getFinalMessage(fullInvoice, consecutivo, xmlBase64)
32
- return send(token, finalMesage).catch((err) => {
33
- const response = err.response || {}
34
- const header = response.headers || {}
35
- const data = response.data = {}
36
- console.log('status', response.status)
37
- console.log('data', data)
38
- console.log('x-error-cause', header['x-error-cause'])
39
- })
40
- }
package/src/creditNote.ts DELETED
@@ -1,93 +0,0 @@
1
- import { ClientPayload, XmlOpt } from '@src/types/globalInterfaces'
2
- import { NotaCreditoContenedor } from '@src/types/xml/notaDeCredito'
3
- import { genXML } from '@src/lib/genXML/index'
4
- import { send } from '@src/services/send/index'
5
- import { genClaveObj, genString, parseOptions } from '@src/lib/genClave/index'
6
- import {
7
- getBillResum,
8
- getReceiver,
9
- getSender,
10
- getSimpleReceiver,
11
- getSimpleSender
12
- } from '@src/helpers/comprobantes'
13
-
14
- const VOUCHER_TYPE = 'NC'
15
-
16
- export function parseCreditNote(options: {
17
- frontEndRequest: ClientPayload;
18
- consecutivo: string;
19
- clave: string;
20
- date: Date;
21
- }): NotaCreditoContenedor {
22
- const resum = getBillResum(options.frontEndRequest)
23
- const receiver = getReceiver(options.frontEndRequest)
24
- const sender = getSender(options.frontEndRequest)
25
- return {
26
- NotaCreditoElectronica: {
27
- Clave: options.clave,
28
- CodigoActividad: options.frontEndRequest.actividad.padStart(6, '0'),
29
- NumeroConsecutivo: options.consecutivo,
30
- FechaEmision: options.date.toISOString(),
31
- Emisor: sender,
32
- Receptor: receiver,
33
- CondicionVenta: '01',
34
- MedioPago: '01',
35
- DetalleServicio: {
36
- LineaDetalle: options.frontEndRequest.LineasDetalle
37
- },
38
- ResumenFactura: resum
39
- }
40
- }
41
- }
42
-
43
- function sendMessage(options: {
44
- frontEndRequest: ClientPayload;
45
- token: string;
46
- clave: string;
47
- date: Date;
48
- xml: string;
49
- }): Promise<any> {
50
- const emisor = getSimpleSender(options.frontEndRequest)
51
- const receptor = getSimpleReceiver(options.frontEndRequest)
52
- const finalMesage = {
53
- clave: options.clave,
54
- fecha: options.date.toISOString(),
55
- comprobanteXml: options.xml,
56
- emisor,
57
- receptor
58
- }
59
- return send(options.token, finalMesage).catch((err) => {
60
- const response = err.response || {}
61
- const header = response.headers || {}
62
- console.log('x-error-cause', header['x-error-cause'])
63
- })
64
- }
65
-
66
- export default async (options: {
67
- token: string;
68
- frontEndRequest: ClientPayload;
69
- xmlOpt: XmlOpt;
70
- }): Promise<any> => {
71
- const date = new Date()
72
- const parsedOpts = parseOptions(options.frontEndRequest)
73
- const claveObj = genClaveObj(parsedOpts)
74
- const clave = genString(claveObj)
75
- const consecutivo = Object.values(claveObj.consecutivo).join('')
76
- const vaucher = parseCreditNote({
77
- frontEndRequest: options.frontEndRequest,
78
- consecutivo,
79
- clave,
80
- date
81
- })
82
- const xml = await genXML(VOUCHER_TYPE, vaucher, {
83
- ...options.xmlOpt,
84
- base64: true
85
- })
86
- return sendMessage({
87
- frontEndRequest: options.frontEndRequest,
88
- token: options.token,
89
- clave,
90
- date,
91
- xml
92
- })
93
- }
@@ -1,57 +0,0 @@
1
- import { ClientPayload, FinalMessagePerson } from '@src/types/globalInterfaces'
2
- import { genClaveObj, genString, parseOptions } from '@src/lib/genClave/index'
3
- import genJSON from '@src/lib/genJSON/index'
4
- import { send } from '@src/services/send/index'
5
- import { Persona } from './types/facturaInterfaces'
6
-
7
- const DEFAULT_VALUES = {
8
- tipoIdentificacion: '01' as Persona['Identificacion']['Tipo']
9
- }
10
-
11
- const encodeXML = (xmlStr: string): string => {
12
- const buffer = Buffer.from(xmlStr)
13
- return buffer.toString('base64')
14
- }
15
-
16
- function getSender(frontEndRequest: ClientPayload): FinalMessagePerson {
17
- const sender = frontEndRequest.Emisor
18
- return {
19
- tipoIdentificacion: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion,
20
- numeroIdentificacion: sender.Identificacion.Numero
21
- }
22
- }
23
-
24
- function getReceiver(frontEndRequest: ClientPayload): FinalMessagePerson {
25
- const receiver = frontEndRequest.Receptor
26
- return {
27
- tipoIdentificacion: receiver.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion,
28
- numeroIdentificacion: receiver.Identificacion.Numero
29
- }
30
- }
31
-
32
- export default async (token, frontEndRequest: ClientPayload, xmlOpt): Promise<any> => {
33
- const parsedOpts = parseOptions(frontEndRequest)
34
- const claveObj = genClaveObj(parsedOpts)
35
- const claveStr = genString(claveObj)
36
- const date = new Date()
37
- const consecutivo = Object.values(claveObj.consecutivo).join('')
38
- const XML = await genJSON(frontEndRequest, date.toISOString(), claveStr, consecutivo, {
39
- ...xmlOpt,
40
- base64: true
41
- })
42
- const finalMesage = {
43
- clave: claveStr,
44
- fecha: date.toISOString(),
45
- emisor: getSender(frontEndRequest),
46
- receptor: getReceiver(frontEndRequest),
47
- comprobanteXml: encodeXML(XML)
48
- }
49
- const response = send(token, finalMesage).catch((err) => {
50
- const response = err.response || {}
51
- const header = response.headers || {}
52
- console.log('response status code', err.response.status)
53
- console.log('x-error-cause', header['x-error-cause'])
54
- })
55
-
56
- return response
57
- }
@@ -1,47 +0,0 @@
1
- import { MensajeReceptorContenedor } from '@src/types/xml/mensajeReceptor'
2
- import { tipoDocumento } from '@src/data/tipoDocumento'
3
-
4
- export function getMsjObj(opts: {
5
- fullInvoice: any;
6
- consecutivo: string;
7
- tipoDocKey: string;
8
- }): MensajeReceptorContenedor {
9
- const { fullInvoice, tipoDocKey } = opts
10
- const emisor = fullInvoice.Emisor
11
- const receptor = fullInvoice.Receptor
12
- const msj = tipoDocumento[tipoDocKey].msjReceptorCode
13
- return {
14
- MensajeReceptor: {
15
- Clave: fullInvoice.Clave,
16
- NumeroCedulaEmisor: emisor.Identificacion.Numero,
17
- FechaEmisionDoc: fullInvoice.FechaEmision,
18
- Mensaje: msj,
19
- DetalleMensaje: '',
20
- MontoTotalImpuesto: fullInvoice.ResumenFactura.TotalImpuesto,
21
- CodigoActividad: fullInvoice.CodigoActividad,
22
- CondicionImpuesto: '04', // TODO investigar casos de uso
23
- MontoTotalDeGastoAplicable: fullInvoice.ResumenFactura.TotalVenta, // TODO investigar casos de uso
24
- TotalFactura: fullInvoice.ResumenFactura.TotalVenta,
25
- NumeroCedulaReceptor: receptor.Identificacion.Numero,
26
- NumeroConsecutivoReceptor: opts.consecutivo
27
- }
28
- }
29
- }
30
-
31
- export function getFinalMessage(fullInvoice: any, consecutivoReceptor: string, xmlBase64: any): any {
32
- const date = new Date()
33
- return {
34
- clave: fullInvoice.Clave, // in command
35
- fecha: date.toISOString(), // in command
36
- emisor: { // in command
37
- tipoIdentificacion: fullInvoice.Receptor.Identificacion.Tipo,
38
- numeroIdentificacion: fullInvoice.Receptor.Identificacion.Numero
39
- },
40
- receptor: { // in command
41
- tipoIdentificacion: fullInvoice.Emisor.Identificacion.Tipo,
42
- numeroIdentificacion: fullInvoice.Emisor.Identificacion.Numero
43
- },
44
- consecutivoReceptor,
45
- comprobanteXml: xmlBase64 // in command
46
- }
47
- }