@facturacr/atv-sdk 0.0.18-beta → 0.0.20-beta
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.
- package/dist/__tests__/stubs/createDocument.stub.d.ts +2 -0
- package/dist/__tests__/stubs/createDocument.stub.js +78 -0
- package/dist/__tests__/stubs/createDocument.stub.js.map +1 -0
- package/dist/__tests__/stubs/frontendRequest.stub.d.ts +3 -0
- package/dist/__tests__/stubs/frontendRequest.stub.js +61 -0
- package/dist/__tests__/stubs/frontendRequest.stub.js.map +1 -0
- package/dist/__tests__/stubs/token.stub.d.ts +17 -0
- package/dist/__tests__/stubs/token.stub.js +21 -0
- package/dist/__tests__/stubs/token.stub.js.map +1 -0
- package/dist/__tests__/tests/ATV/index.test.d.ts +1 -0
- package/dist/__tests__/tests/ATV/index.test.js +62 -0
- package/dist/__tests__/tests/ATV/index.test.js.map +1 -0
- package/dist/__tests__/tests/getClave.test.d.ts +1 -0
- package/dist/__tests__/tests/getClave.test.js +15 -0
- package/dist/__tests__/tests/getClave.test.js.map +1 -0
- package/dist/__tests__/tests/getToken.test.d.ts +0 -0
- package/dist/__tests__/tests/getToken.test.js +28 -0
- package/dist/__tests__/tests/getToken.test.js.map +1 -0
- package/dist/__tests__/tests/lib/getClave.test.d.ts +1 -0
- package/dist/__tests__/tests/lib/getClave.test.js +15 -0
- package/dist/__tests__/tests/lib/getClave.test.js.map +1 -0
- package/dist/__tests__/tests/services/getToken.test.d.ts +1 -0
- package/dist/__tests__/tests/services/getToken.test.js +27 -0
- package/dist/__tests__/tests/services/getToken.test.js.map +1 -0
- package/dist/src/ATV/core/Clave.d.ts +18 -0
- package/dist/src/ATV/core/Clave.js +29 -0
- package/dist/src/ATV/core/Clave.js.map +1 -0
- package/dist/src/ATV/core/Document.d.ts +46 -0
- package/dist/src/ATV/core/Document.js +80 -0
- package/dist/src/ATV/core/Document.js.map +1 -0
- package/dist/src/ATV/core/DocumentType.d.ts +8 -0
- package/dist/src/ATV/core/DocumentType.js +20 -0
- package/dist/src/ATV/core/DocumentType.js.map +1 -0
- package/dist/src/ATV/core/FullConsecutive.d.ts +13 -0
- package/dist/src/ATV/core/FullConsecutive.js +22 -0
- package/dist/src/ATV/core/FullConsecutive.js.map +1 -0
- package/dist/src/ATV/core/OrderLine.d.ts +34 -0
- package/dist/src/ATV/core/OrderLine.js +63 -0
- package/dist/src/ATV/core/OrderLine.js.map +1 -0
- package/dist/src/ATV/core/Person.d.ts +36 -0
- package/dist/src/ATV/core/Person.js +37 -0
- package/dist/src/ATV/core/Person.js.map +1 -0
- package/dist/src/ATV/core/Summary.type.d.ts +20 -0
- package/dist/src/ATV/core/Summary.type.js +3 -0
- package/dist/src/ATV/core/Summary.type.js.map +1 -0
- package/dist/src/ATV/core/documentNames.types.d.ts +1 -0
- package/dist/src/ATV/core/documentNames.types.js +3 -0
- package/dist/src/ATV/core/documentNames.types.js.map +1 -0
- package/dist/src/ATV/index.d.ts +32 -0
- package/dist/src/ATV/index.js +134 -0
- package/dist/src/ATV/index.js.map +1 -0
- package/dist/src/ATV/mappers/billDocToAtv.d.ts +5 -0
- package/dist/src/ATV/mappers/billDocToAtv.js +99 -0
- package/dist/src/ATV/mappers/billDocToAtv.js.map +1 -0
- package/dist/src/ATV/types.d.ts +32 -0
- package/dist/src/ATV/types.js +3 -0
- package/dist/src/ATV/types.js.map +1 -0
- package/dist/src/ATV/useCases/createDocument/index.d.ts +16 -0
- package/dist/src/ATV/useCases/createDocument/index.js +140 -0
- package/dist/src/ATV/useCases/createDocument/index.js.map +1 -0
- package/dist/src/ATV/useCases/createDocument/types.d.ts +74 -0
- package/dist/src/ATV/useCases/createDocument/types.js +3 -0
- package/dist/src/ATV/useCases/createDocument/types.js.map +1 -0
- package/dist/src/confirmXML.d.ts +8 -0
- package/dist/src/confirmXML.js +44 -0
- package/dist/src/confirmXML.js.map +1 -0
- package/dist/src/creditNote.d.ts +14 -0
- package/dist/src/creditNote.js +77 -0
- package/dist/src/creditNote.js.map +1 -0
- package/dist/src/data/codigoMoneda.d.ts +1 -0
- package/dist/src/data/codigoMoneda.js +184 -0
- package/dist/src/data/codigoMoneda.js.map +1 -0
- package/dist/src/data/exoneracion.d.ts +1 -0
- package/dist/src/data/exoneracion.js +15 -0
- package/dist/src/data/exoneracion.js.map +1 -0
- package/dist/src/data/impuestos.d.ts +25 -0
- package/dist/src/data/impuestos.js +51 -0
- package/dist/src/data/impuestos.js.map +1 -0
- package/dist/src/data/tipoCedula.d.ts +7 -0
- package/dist/src/data/tipoCedula.js +17 -0
- package/dist/src/data/tipoCedula.js.map +1 -0
- package/dist/src/data/tipoDocumento.d.ts +26 -0
- package/dist/src/data/tipoDocumento.js +30 -0
- package/dist/src/data/tipoDocumento.js.map +1 -0
- package/dist/src/data/unidadesMedida.d.ts +5 -0
- package/dist/src/data/unidadesMedida.js +141 -0
- package/dist/src/data/unidadesMedida.js.map +1 -0
- package/dist/src/debitNote.d.ts +14 -0
- package/dist/src/debitNote.js +77 -0
- package/dist/src/debitNote.js.map +1 -0
- package/dist/src/electronicBill.d.ts +3 -0
- package/dist/src/electronicBill.js +61 -0
- package/dist/src/electronicBill.js.map +1 -0
- package/dist/src/helpers/comprobantes.d.ts +7 -0
- package/dist/src/helpers/comprobantes.js +92 -0
- package/dist/src/helpers/comprobantes.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/genClave/index.d.ts +9 -0
- package/dist/src/lib/genClave/index.js +119 -0
- package/dist/src/lib/genClave/index.js.map +1 -0
- package/dist/src/lib/genJSON/confirmXML.d.ts +7 -0
- package/dist/src/lib/genJSON/confirmXML.js +46 -0
- package/dist/src/lib/genJSON/confirmXML.js.map +1 -0
- package/dist/src/lib/genJSON/index.d.ts +5 -0
- package/dist/src/lib/genJSON/index.js +135 -0
- package/dist/src/lib/genJSON/index.js.map +1 -0
- package/dist/src/lib/genXML/index.d.ts +7 -0
- package/dist/src/lib/genXML/index.js +51 -0
- package/dist/src/lib/genXML/index.js.map +1 -0
- package/dist/src/lib/genXML/sigXML/genKeysAndCert.d.ts +6 -0
- package/dist/src/lib/genXML/sigXML/genKeysAndCert.js +72 -0
- package/dist/src/lib/genXML/sigXML/genKeysAndCert.js.map +1 -0
- package/dist/src/lib/genXML/sigXML/index.d.ts +1 -0
- package/dist/src/lib/genXML/sigXML/index.js +88 -0
- package/dist/src/lib/genXML/sigXML/index.js.map +1 -0
- package/dist/src/lib/genXML/xmlConfig.d.ts +55 -0
- package/dist/src/lib/genXML/xmlConfig.js +36 -0
- package/dist/src/lib/genXML/xmlConfig.js.map +1 -0
- package/dist/src/services/getToken/GetToken.d.ts +8 -0
- package/dist/src/services/getToken/GetToken.js +66 -0
- package/dist/src/services/getToken/GetToken.js.map +1 -0
- package/dist/src/services/getToken/__tests__/GetToken.test.d.ts +1 -0
- package/dist/src/services/getToken/__tests__/GetToken.test.js +86 -0
- package/dist/src/services/getToken/__tests__/GetToken.test.js.map +1 -0
- package/dist/src/services/getToken/index.d.ts +3 -0
- package/dist/src/services/getToken/index.js +22 -0
- package/dist/src/services/getToken/index.js.map +1 -0
- package/dist/src/services/getToken/types.d.ts +27 -0
- package/dist/src/services/getToken/types.js +3 -0
- package/dist/src/services/getToken/types.js.map +1 -0
- package/dist/src/services/send/index.d.ts +2 -0
- package/dist/src/services/send/index.js +40 -0
- package/dist/src/services/send/index.js.map +1 -0
- package/dist/src/types/xml/notaDeCredito.d.ts +21 -0
- package/dist/src/types/xml/notaDeCredito.js +3 -0
- package/dist/src/types/xml/notaDeCredito.js.map +1 -0
- package/dist/src/types/xml/notaDeDebito.d.ts +21 -0
- package/dist/src/types/xml/notaDeDebito.js +3 -0
- package/dist/src/types/xml/notaDeDebito.js.map +1 -0
- package/examples/README.md +4 -0
- package/examples/createAndSend.ts +1 -1
- package/package.json +1 -1
- package/src/ATV/index.ts +0 -1
- package/src/ATV/mappers/billDocToAtv.ts +2 -2
- package/src/ATV/useCases/createDocument/index.ts +2 -1
- package/src/ATV/useCases/createDocument/types.ts +3 -0
- package/src/lib/genJSON/index.ts +2 -2
- package/src/types/facturaInterfaces.d.ts +1 -1
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.xmlExtructures = exports.defaultOptions = exports.declaration = void 0;
|
|
4
|
+
const FE_XML_SCHEMA_NS = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica';
|
|
5
|
+
const FE_XML_SCHEMA_XSI = 'https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/FacturaElectronica_V4.3.xsd';
|
|
6
|
+
const FEE_XML_SCHEMA_NS = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronicaExportacion';
|
|
7
|
+
const FEE_XML_SCHEMA_XSI = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronicaExportacion.xsd';
|
|
8
|
+
const MR_XML_SCHEMA_NS = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/mensajeReceptor';
|
|
9
|
+
const NC_XML_SCHEMA_NS = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/notaCreditoElectronica';
|
|
10
|
+
const NC_XML_SCHEMA_XSI = 'https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/NotaCreditoElectronica_V4.3.xsd';
|
|
11
|
+
const ND_XML_SCHEMA_NS = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/notaDebitoElectronica';
|
|
12
|
+
const ND_XML_SCHEMA_XSI = 'https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/NotaDebitoElectronica_V4.3.xsd';
|
|
13
|
+
exports.declaration = '<?xml version="1.0" encoding="utf-8"?>';
|
|
14
|
+
exports.defaultOptions = {
|
|
15
|
+
attrNodeName: 'attr'
|
|
16
|
+
};
|
|
17
|
+
const COMMON_STRUCTURE = {
|
|
18
|
+
'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
|
|
19
|
+
'xmlns:xsd': 'http://www.w3.org/2001/XMLSchema',
|
|
20
|
+
'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance'
|
|
21
|
+
};
|
|
22
|
+
const FE_XML_ATTRS = Object.assign(Object.assign({ xmlns: FE_XML_SCHEMA_NS }, COMMON_STRUCTURE), { 'xsi:schemaLocation': `${FE_XML_SCHEMA_NS} ${FE_XML_SCHEMA_XSI}` });
|
|
23
|
+
const FEE_XML_ATTRS = Object.assign(Object.assign({ xmlns: FE_XML_SCHEMA_NS }, COMMON_STRUCTURE), { 'xsi:schemaLocation': `${FEE_XML_SCHEMA_NS} ${FEE_XML_SCHEMA_XSI}` });
|
|
24
|
+
const NC_XML_ATTRS = Object.assign(Object.assign({ xmlns: NC_XML_SCHEMA_NS }, COMMON_STRUCTURE), { 'xsi:schemaLocation': `${NC_XML_SCHEMA_NS} ${NC_XML_SCHEMA_XSI}` });
|
|
25
|
+
const ND_XML_ATTRS = Object.assign(Object.assign({ xmlns: NC_XML_SCHEMA_NS }, COMMON_STRUCTURE), { 'xsi:schemaLocation': `${ND_XML_SCHEMA_NS} ${ND_XML_SCHEMA_XSI}` });
|
|
26
|
+
const MR_XML_ATTRS = Object.assign(Object.assign({ xmlns: MR_XML_SCHEMA_NS }, COMMON_STRUCTURE), { 'xsi:schemaLocation': `${MR_XML_SCHEMA_NS}` });
|
|
27
|
+
exports.xmlExtructures = {
|
|
28
|
+
FacturaElectronica: FE_XML_ATTRS,
|
|
29
|
+
FacturaElectronicaExportacion: FEE_XML_ATTRS,
|
|
30
|
+
NotaCreditoElectronica: NC_XML_ATTRS,
|
|
31
|
+
NotaDebitoElectronica: ND_XML_ATTRS,
|
|
32
|
+
CCE: MR_XML_ATTRS,
|
|
33
|
+
CPCE: MR_XML_ATTRS,
|
|
34
|
+
RCE: MR_XML_ATTRS
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=xmlConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xmlConfig.js","sourceRoot":"","sources":["../../../../src/lib/genXML/xmlConfig.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,gFAAgF,CAAA;AACzG,MAAM,iBAAiB,GAAG,2GAA2G,CAAA;AAErI,MAAM,iBAAiB,GAAG,2FAA2F,CAAA;AACrH,MAAM,kBAAkB,GAAG,+FAA+F,CAAA;AAE1H,MAAM,gBAAgB,GAAG,6EAA6E,CAAA;AAEtG,MAAM,gBAAgB,GAAG,oFAAoF,CAAA;AAC7G,MAAM,iBAAiB,GAAG,+GAA+G,CAAA;AAEzI,MAAM,gBAAgB,GAAG,mFAAmF,CAAA;AAC5G,MAAM,iBAAiB,GAAG,8GAA8G,CAAA;AAE3H,QAAA,WAAW,GAAG,wCAAwC,CAAA;AAEtD,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,MAAM;CACrB,CAAA;AAED,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,2CAA2C;CACzD,CAAA;AAED,MAAM,YAAY,iCAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,KACnB,oBAAoB,EAAE,GAAG,gBAAgB,IAAI,iBAAiB,EAAE,GACjE,CAAA;AAED,MAAM,aAAa,iCACjB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,KACnB,oBAAoB,EAAE,GAAG,iBAAiB,IAAI,kBAAkB,EAAE,GACnE,CAAA;AAED,MAAM,YAAY,iCAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,KACnB,oBAAoB,EAAE,GAAG,gBAAgB,IAAI,iBAAiB,EAAE,GACjE,CAAA;AAED,MAAM,YAAY,iCAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,KACnB,oBAAoB,EAAE,GAAG,gBAAgB,IAAI,iBAAiB,EAAE,GACjE,CAAA;AAED,MAAM,YAAY,iCAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,KACnB,oBAAoB,EAAE,GAAG,gBAAgB,EAAE,GAC5C,CAAA;AAEY,QAAA,cAAc,GAAG;IAC5B,kBAAkB,EAAE,YAAY;IAChC,6BAA6B,EAAE,aAAa;IAC5C,sBAAsB,EAAE,YAAY;IACpC,qBAAqB,EAAE,YAAY;IACnC,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,YAAY;CAClB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GetTokenDto, GetTokenResponse } from './types';
|
|
2
|
+
import { ATV } from "../../ATV";
|
|
3
|
+
export declare class GetToken {
|
|
4
|
+
private readonly props;
|
|
5
|
+
constructor(scope: ATV);
|
|
6
|
+
execute({ username, password }: GetTokenDto): Promise<GetTokenResponse>;
|
|
7
|
+
private initProps;
|
|
8
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
exports.GetToken = void 0;
|
|
16
|
+
const axios_1 = __importDefault(require("axios"));
|
|
17
|
+
const querystring_1 = __importDefault(require("querystring"));
|
|
18
|
+
const MAIN_DOMAIN = 'https://idp.comprobanteselectronicos.go.cr';
|
|
19
|
+
const options = {
|
|
20
|
+
prod: {
|
|
21
|
+
serviceUrl: `${MAIN_DOMAIN}/auth/realms/rut/protocol/openid-connect/token`,
|
|
22
|
+
clientId: 'api-prod'
|
|
23
|
+
},
|
|
24
|
+
stg: {
|
|
25
|
+
serviceUrl: `${MAIN_DOMAIN}/auth/realms/rut-stag/protocol/openid-connect/token`,
|
|
26
|
+
clientId: 'api-stag'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
class GetToken {
|
|
30
|
+
constructor(scope) {
|
|
31
|
+
this.props = this.initProps(scope.mode);
|
|
32
|
+
}
|
|
33
|
+
execute(_a) {
|
|
34
|
+
return __awaiter(this, arguments, void 0, function* ({ username, password }) {
|
|
35
|
+
const fetchResponse = yield axios_1.default.post(this.props.serviceUrl, querystring_1.default.stringify({
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
37
|
+
client_id: this.props.clientId,
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
39
|
+
grant_type: 'password',
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
41
|
+
client_secret: '',
|
|
42
|
+
username,
|
|
43
|
+
password
|
|
44
|
+
}), {
|
|
45
|
+
headers: {
|
|
46
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const data = fetchResponse.data;
|
|
50
|
+
return {
|
|
51
|
+
accessToken: data.access_token,
|
|
52
|
+
expiresIn: data.expires_in,
|
|
53
|
+
refreshToken: data.refresh_token,
|
|
54
|
+
refreshExpiresIn: data.refresh_expires_in,
|
|
55
|
+
sessionState: data.session_state,
|
|
56
|
+
tokenType: data.token_type,
|
|
57
|
+
scope: data.scope
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
initProps(mode) {
|
|
62
|
+
return options[mode] || options.prod;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.GetToken = GetToken;
|
|
66
|
+
//# sourceMappingURL=GetToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetToken.js","sourceRoot":"","sources":["../../../../src/services/getToken/GetToken.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,8DAA4B;AAI5B,MAAM,WAAW,GAAG,4CAA4C,CAAA;AAChE,MAAM,OAAO,GAA4C;IACvD,IAAI,EAAE;QACJ,UAAU,EAAE,GAAG,WAAW,gDAAgD;QAC1E,QAAQ,EAAE,UAAU;KACrB;IACD,GAAG,EAAE;QACH,UAAU,EAAE,GAAG,WAAW,qDAAqD;QAC/E,QAAQ,EAAE,UAAU;KACrB;CACF,CAAA;AAED,MAAa,QAAQ;IAEnB,YAAY,KAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAEY,OAAO;6DAAC,EAAE,QAAQ,EAAE,QAAQ,EAAe;YACtD,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CAAsB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,qBAAE,CAAC,SAAS,CAAC;gBAC9F,wDAAwD;gBACxD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAC9B,wDAAwD;gBACxD,UAAU,EAAE,UAAU;gBACtB,wDAAwD;gBACxD,aAAa,EAAE,EAAE;gBACjB,QAAQ;gBACR,QAAQ;aACT,CAAC,EAAE;gBACF,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;iBACpD;aACF,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAA;YAC/B,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;gBACzC,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAA;QACH,CAAC;KAAA;IAEO,SAAS,CAAC,IAAY;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAA;IACtC,CAAC;CACF;AApCD,4BAoCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
/* eslint-disable @typescript-eslint/camelcase */
|
|
16
|
+
const axios_1 = __importDefault(require("axios"));
|
|
17
|
+
const querystring_1 = __importDefault(require("querystring"));
|
|
18
|
+
const GetToken_1 = require("../GetToken");
|
|
19
|
+
const ATV_1 = require("../../../ATV");
|
|
20
|
+
jest.mock('@src/ATV');
|
|
21
|
+
jest.mock('axios');
|
|
22
|
+
jest.mock('querystring');
|
|
23
|
+
const fetchResponse = {
|
|
24
|
+
data: {
|
|
25
|
+
access_token: 'access_token',
|
|
26
|
+
expires_in: 3600,
|
|
27
|
+
refresh_token: 'refresh_token',
|
|
28
|
+
refresh_expires_in: 1209600,
|
|
29
|
+
session_state: 'session_state',
|
|
30
|
+
token_type: 'Bearer',
|
|
31
|
+
scope: 'openid'
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
describe('GetToken', () => {
|
|
35
|
+
let atv;
|
|
36
|
+
let getToken;
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
atv = new ATV_1.ATV();
|
|
39
|
+
getToken = new GetToken_1.GetToken(atv);
|
|
40
|
+
axios_1.default.post.mockResolvedValue(fetchResponse);
|
|
41
|
+
});
|
|
42
|
+
afterEach(() => {
|
|
43
|
+
jest.resetAllMocks();
|
|
44
|
+
});
|
|
45
|
+
it('should call axios.post with correct parameters', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
// Arrange
|
|
47
|
+
const dto = {
|
|
48
|
+
username: 'testuser',
|
|
49
|
+
password: 'testpassword'
|
|
50
|
+
};
|
|
51
|
+
const expectedUrl = 'https://idp.comprobanteselectronicos.go.cr/auth/realms/rut/protocol/openid-connect/token';
|
|
52
|
+
const expectedData = querystring_1.default.stringify({
|
|
53
|
+
client_id: 'api-stag',
|
|
54
|
+
grant_type: 'password',
|
|
55
|
+
client_secret: '',
|
|
56
|
+
username: 'testuser',
|
|
57
|
+
password: 'testpassword'
|
|
58
|
+
});
|
|
59
|
+
const expectedConfig = {
|
|
60
|
+
headers: {
|
|
61
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
// Act
|
|
65
|
+
yield getToken.execute(dto);
|
|
66
|
+
// Assert
|
|
67
|
+
expect(axios_1.default.post).toHaveBeenCalledWith(expectedUrl, expectedData, expectedConfig);
|
|
68
|
+
}));
|
|
69
|
+
it('should return expected response', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
// Arrange
|
|
71
|
+
const expectedResponse = {
|
|
72
|
+
accessToken: 'access_token',
|
|
73
|
+
expiresIn: 3600,
|
|
74
|
+
refreshToken: 'refresh_token',
|
|
75
|
+
refreshExpiresIn: 1209600,
|
|
76
|
+
sessionState: 'session_state',
|
|
77
|
+
tokenType: 'Bearer',
|
|
78
|
+
scope: 'openid'
|
|
79
|
+
};
|
|
80
|
+
// Act
|
|
81
|
+
const result = yield getToken.execute({ username: 'testuser', password: 'testpassword' });
|
|
82
|
+
// Assert
|
|
83
|
+
expect(result).toEqual(expectedResponse);
|
|
84
|
+
}));
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=GetToken.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetToken.test.js","sourceRoot":"","sources":["../../../../../src/services/getToken/__tests__/GetToken.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iDAAiD;AACjD,kDAAyB;AACzB,8DAA4B;AAC5B,0CAAsC;AACtC,sCAA8B;AAG9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAClB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AAExB,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE;QACJ,YAAY,EAAE,cAAc;QAC5B,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,eAAe;QAC9B,kBAAkB,EAAE,OAAO;QAC3B,aAAa,EAAE,eAAe;QAC9B,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,QAAQ;KAChB;CACF,CAAA;AACD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,GAAQ,CAAA;IACZ,IAAI,QAAkB,CAAA;IAEtB,UAAU,CAAC,GAAG,EAAE;QACd,GAAG,GAAG,IAAI,SAAG,EAAE,CAAA;QACf,QAAQ,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,CAC3B;QAAC,eAAK,CAAC,IAAkB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC9D,UAAU;QACV,MAAM,GAAG,GAAgB;YACvB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,cAAc;SACzB,CAAA;QACD,MAAM,WAAW,GAAG,0FAA0F,CAAA;QAC9G,MAAM,YAAY,GAAG,qBAAE,CAAC,SAAS,CAAC;YAChC,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,UAAU;YACtB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,cAAc;SACzB,CAAC,CAAA;QACF,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;SACF,CAAA;QAED,MAAM;QACN,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAE3B,SAAS;QACT,MAAM,CAAC,eAAK,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAA;IACpF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;QAC/C,UAAU;QACV,MAAM,gBAAgB,GAAG;YACvB,WAAW,EAAE,cAAc;YAC3B,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,eAAe;YAC7B,gBAAgB,EAAE,OAAO;YACzB,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,QAAQ;SAChB,CAAA;QAED,MAAM;QACN,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAA;QAEzF,SAAS;QACT,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC1C,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const querystring_1 = __importDefault(require("querystring"));
|
|
8
|
+
const MAIN_DOMAIN = 'https://idp.comprobanteselectronicos.go.cr';
|
|
9
|
+
const RUT = (process.env.IS_STG) ? 'rut-stag' : 'rut';
|
|
10
|
+
const PATH = `/auth/realms/${RUT}/protocol/openid-connect/token`;
|
|
11
|
+
const TOKEN_URL = MAIN_DOMAIN + PATH;
|
|
12
|
+
exports.default = (postOptions) => {
|
|
13
|
+
return axios_1.default.post(TOKEN_URL, querystring_1.default.stringify(postOptions), {
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
/*
|
|
20
|
+
* https://www.hacienda.go.cr/docs/5d16ade309fe0_Guia_IdP.pdf
|
|
21
|
+
*/
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/getToken/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,8DAA4B;AAG5B,MAAM,WAAW,GAAG,4CAA4C,CAAA;AAChE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAA;AACrD,MAAM,IAAI,GAAG,gBAAgB,GAAG,gCAAgC,CAAA;AAEhE,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAA;AAEpC,kBAAe,CAAC,WAA6B,EAAgB,EAAE;IAC7D,OAAO,eAAK,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;QACtD,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;GAEG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type GetTokenDto = {
|
|
2
|
+
username: string;
|
|
3
|
+
password: string;
|
|
4
|
+
};
|
|
5
|
+
export type GetTokenInternalProps = {
|
|
6
|
+
serviceUrl: string;
|
|
7
|
+
clientId: string;
|
|
8
|
+
};
|
|
9
|
+
export type GetTokenRawResponse = {
|
|
10
|
+
access_token: string;
|
|
11
|
+
expires_in: number;
|
|
12
|
+
refresh_expires_in: number;
|
|
13
|
+
refresh_token: string;
|
|
14
|
+
token_type: string;
|
|
15
|
+
'not-before-policy': number;
|
|
16
|
+
session_state: string;
|
|
17
|
+
scope: string;
|
|
18
|
+
};
|
|
19
|
+
export type GetTokenResponse = {
|
|
20
|
+
accessToken: string;
|
|
21
|
+
expiresIn: number;
|
|
22
|
+
refreshExpiresIn: number;
|
|
23
|
+
refreshToken: string;
|
|
24
|
+
tokenType: string;
|
|
25
|
+
sessionState: string;
|
|
26
|
+
scope: string;
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/services/getToken/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sendToCustomURL = exports.send = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const MAIN_DOMAIN = 'https://api.comprobanteselectronicos.go.cr/';
|
|
9
|
+
const RUT = (process.env.IS_STG) ? 'recepcion-sandbox' : 'recepcion';
|
|
10
|
+
const PATH = `${RUT}/v1/recepcion/`;
|
|
11
|
+
const SANBOX_URL = 'https://api-sandbox.comprobanteselectronicos.go.cr/recepcion/v1/recepcion';
|
|
12
|
+
const URL = (process.env.IS_STG) ? SANBOX_URL : MAIN_DOMAIN + PATH;
|
|
13
|
+
function send(token, postOptions) {
|
|
14
|
+
return (0, axios_1.default)({
|
|
15
|
+
url: URL,
|
|
16
|
+
method: 'post',
|
|
17
|
+
data: postOptions,
|
|
18
|
+
headers: {
|
|
19
|
+
Authorization: 'bearer ' + token,
|
|
20
|
+
'Content-Type': 'application/json'
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports.send = send;
|
|
25
|
+
function sendToCustomURL(token, url) {
|
|
26
|
+
return (0, axios_1.default)({
|
|
27
|
+
url,
|
|
28
|
+
method: 'get',
|
|
29
|
+
headers: {
|
|
30
|
+
Authorization: 'bearer ' + token,
|
|
31
|
+
'Content-Type': 'application/json'
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
exports.sendToCustomURL = sendToCustomURL;
|
|
36
|
+
/*
|
|
37
|
+
* https://www.hacienda.go.cr/docs/5d16ade309fe0_Guia_IdP.pdf
|
|
38
|
+
* https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.2/comprobantes-electronicos-api.html#
|
|
39
|
+
*/
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/send/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAEzB,MAAM,WAAW,GAAG,6CAA6C,CAAA;AACjE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAA;AACpE,MAAM,IAAI,GAAG,GAAG,GAAG,gBAAgB,CAAA;AACnC,MAAM,UAAU,GAAG,2EAA2E,CAAA;AAC9F,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;AAElE,SAAgB,IAAI,CAAC,KAAa,EAAE,WAAgB;IAClD,OAAO,IAAA,eAAK,EAAC;QACX,GAAG,EAAE,GAAG;QACR,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,GAAG,KAAK;YAChC,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAA;AACJ,CAAC;AAVD,oBAUC;AAED,SAAgB,eAAe,CAAC,KAAa,EAAE,GAAW;IACxD,OAAO,IAAA,eAAK,EAAC;QACX,GAAG;QACH,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,GAAG,KAAK;YAChC,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAA;AACJ,CAAC;AATD,0CASC;AAED;;;GAGG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Persona, DetalleServicio, Resumen } from "../facturaInterfaces";
|
|
2
|
+
type NotaCreditoElectronica = {
|
|
3
|
+
Clave: string;
|
|
4
|
+
CodigoActividad: string;
|
|
5
|
+
NumeroConsecutivo: string;
|
|
6
|
+
FechaEmision?: string;
|
|
7
|
+
Emisor: Persona;
|
|
8
|
+
Receptor: Persona;
|
|
9
|
+
CondicionVenta?: string;
|
|
10
|
+
PlazoCredito?: string;
|
|
11
|
+
MedioPago?: string;
|
|
12
|
+
DetalleServicio?: DetalleServicio;
|
|
13
|
+
ResumenFactura: Resumen;
|
|
14
|
+
Otros?: {
|
|
15
|
+
OtroTexto: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export type NotaCreditoContenedor = {
|
|
19
|
+
NotaCreditoElectronica: NotaCreditoElectronica;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notaDeCredito.js","sourceRoot":"","sources":["../../../../src/types/xml/notaDeCredito.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Persona, DetalleServicio, Resumen } from "../facturaInterfaces";
|
|
2
|
+
type NotaDebitoElectronica = {
|
|
3
|
+
Clave: string;
|
|
4
|
+
CodigoActividad: string;
|
|
5
|
+
NumeroConsecutivo: string;
|
|
6
|
+
FechaEmision?: string;
|
|
7
|
+
Emisor: Persona;
|
|
8
|
+
Receptor: Persona;
|
|
9
|
+
CondicionVenta?: string;
|
|
10
|
+
PlazoCredito?: string;
|
|
11
|
+
MedioPago?: string;
|
|
12
|
+
DetalleServicio?: DetalleServicio;
|
|
13
|
+
ResumenFactura: Resumen;
|
|
14
|
+
Otros?: {
|
|
15
|
+
OtroTexto: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export type NotaDebitoContenedor = {
|
|
19
|
+
NotaDebitoElectronica: NotaDebitoElectronica;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notaDeDebito.js","sourceRoot":"","sources":["../../../../src/types/xml/notaDeDebito.ts"],"names":[],"mappings":""}
|
package/examples/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@facturacr/atv-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20-beta",
|
|
4
4
|
"description": "Librería (SDK) de Javascript/NodeJS para acceder al API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
package/src/ATV/index.ts
CHANGED
|
@@ -47,7 +47,6 @@ export class ATV {
|
|
|
47
47
|
public async sendConfirmation(input: SendConfirmationInput) {
|
|
48
48
|
try {
|
|
49
49
|
const response = await axios(input)
|
|
50
|
-
console.log('response', response)
|
|
51
50
|
const xmlResponse = response.data['respuesta-xml']
|
|
52
51
|
if (!xmlResponse) {
|
|
53
52
|
const state = response.data['ind-estado']
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Document,
|
|
1
|
+
import { Document, InvoiceDocumentContainer, DetalleServicio, Resumen, Persona } from '@src/types/facturaInterfaces'
|
|
2
2
|
import { Document as DomainDocument } from '../core/Document'
|
|
3
3
|
import { OrderLine } from '../core/OrderLine'
|
|
4
4
|
import { Person } from '../core/Person'
|
|
5
5
|
|
|
6
|
-
type AtvFormat =
|
|
6
|
+
type AtvFormat = InvoiceDocumentContainer
|
|
7
7
|
|
|
8
8
|
const mapOrderLinesToAtvFormat = (orderLines: OrderLine[]): DetalleServicio => {
|
|
9
9
|
const LineaDetalle = orderLines.map<DetalleServicio['LineaDetalle'][0]>((orderLine) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PersonProps } from '@src/ATV/core/Person'
|
|
2
2
|
import { DocumentNames } from '@src/ATV/core/documentNames.types'
|
|
3
|
+
import { InvoiceDocumentContainer } from '@src/types/facturaInterfaces';
|
|
3
4
|
import { Method } from 'axios'
|
|
4
5
|
|
|
5
6
|
type PersonInput = PersonProps;
|
|
@@ -71,9 +72,11 @@ export type Command = {
|
|
|
71
72
|
'Content-Type': string;
|
|
72
73
|
};
|
|
73
74
|
}
|
|
75
|
+
|
|
74
76
|
export type CreateAndSendDocumentResponse = {
|
|
75
77
|
command: Command;
|
|
76
78
|
extraData: {
|
|
77
79
|
xml: string;
|
|
80
|
+
document: InvoiceDocumentContainer;
|
|
78
81
|
};
|
|
79
82
|
}
|
package/src/lib/genJSON/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ClientPayload } from '@src/types/globalInterfaces'
|
|
2
|
-
import {
|
|
2
|
+
import { InvoiceDocumentContainer, Resumen, Persona, Impuesto, LineaDetalle } from '@src/types/facturaInterfaces'
|
|
3
3
|
import { genXML } from '@src/lib/genXML'
|
|
4
4
|
|
|
5
5
|
// Default XML Values
|
|
@@ -123,7 +123,7 @@ export default async (frontEndRequest: ClientPayload, date: any, clave: string,
|
|
|
123
123
|
},
|
|
124
124
|
ResumenFactura: getBillResum(lines)
|
|
125
125
|
}
|
|
126
|
-
const factura:
|
|
126
|
+
const factura: InvoiceDocumentContainer = {
|
|
127
127
|
[key]: body
|
|
128
128
|
}
|
|
129
129
|
const XML = await genXML(key, factura, options)
|
package/tsconfig.json
CHANGED