@facturacr/atv-sdk 2.0.0 → 2.0.2-alpha

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 (108) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.js +23 -23
  3. package/.github/dependabot.yml +11 -0
  4. package/.github/workflows/ci.yml +14 -12
  5. package/README.md +9 -2
  6. package/__tests__/stubs/commonExpectedXml.xml +14 -16
  7. package/__tests__/stubs/createDocument.data.ts +18 -1
  8. package/__tests__/stubs/frontendRequest.stub.ts +0 -1
  9. package/__tests__/stubs/token.stub.ts +9 -9
  10. package/__tests__/tests/ATV/__snapshots__/create-document.test.ts.snap +1 -1
  11. package/__tests__/tests/ATV/create-document.test.ts +8 -8
  12. package/__tests__/tests/ATV/create-receptor-message.test.ts +41 -36
  13. package/dist/src/ATV/core/CreateDocFactory.d.ts +11 -3
  14. package/dist/src/ATV/core/CreateDocFactory.js +3 -3
  15. package/dist/src/ATV/core/CreateDocFactory.js.map +1 -1
  16. package/dist/src/ATV/core/Document.d.ts +2 -2
  17. package/dist/src/ATV/core/Document.js +15 -5
  18. package/dist/src/ATV/core/Document.js.map +1 -1
  19. package/dist/src/ATV/core/DocumentType.d.ts +2 -3
  20. package/dist/src/ATV/core/DocumentType.js +1 -0
  21. package/dist/src/ATV/core/DocumentType.js.map +1 -1
  22. package/dist/src/ATV/core/FullConsecutive.d.ts +2 -1
  23. package/dist/src/ATV/core/FullConsecutive.js.map +1 -1
  24. package/dist/src/ATV/core/OrderLine.js +8 -1
  25. package/dist/src/ATV/core/OrderLine.js.map +1 -1
  26. package/dist/src/ATV/core/Person.d.ts +2 -2
  27. package/dist/src/ATV/core/ReceptorConsecutive.js.map +1 -1
  28. package/dist/src/ATV/core/ReferenceInformation.js.map +1 -1
  29. package/dist/src/ATV/core/Summary.type.d.ts +5 -0
  30. package/dist/src/ATV/core/types.d.ts +3 -2
  31. package/dist/src/ATV/core/types.js.map +1 -1
  32. package/dist/src/ATV/index.d.ts +2 -2
  33. package/dist/src/ATV/index.js +2 -2
  34. package/dist/src/ATV/mappers/billDocToAtv.js +32 -26
  35. package/dist/src/ATV/mappers/billDocToAtv.js.map +1 -1
  36. package/dist/src/ATV/types.d.ts +1 -1
  37. package/dist/src/ATV/useCases/createDocument/index.js +5 -9
  38. package/dist/src/ATV/useCases/createDocument/index.js.map +1 -1
  39. package/dist/src/ATV/useCases/createDocument/types.d.ts +4 -3
  40. package/dist/src/ATV/useCases/createReceptorMessage/index.d.ts +6 -5
  41. package/dist/src/ATV/useCases/createReceptorMessage/index.js +3 -3
  42. package/dist/src/ATV/useCases/createReceptorMessage/index.js.map +1 -1
  43. package/dist/src/helpers/comprobantes.js +10 -1
  44. package/dist/src/helpers/comprobantes.js.map +1 -1
  45. package/dist/src/lib/genClave/index.d.ts +8 -1
  46. package/dist/src/lib/genClave/index.js +5 -0
  47. package/dist/src/lib/genClave/index.js.map +1 -1
  48. package/dist/src/lib/genXML/index.js +6 -4
  49. package/dist/src/lib/genXML/index.js.map +1 -1
  50. package/dist/src/lib/genXML/sigXML/index.js +7 -4
  51. package/dist/src/lib/genXML/sigXML/index.js.map +1 -1
  52. package/dist/src/services/getToken/GetToken.js +0 -3
  53. package/dist/src/services/getToken/GetToken.js.map +1 -1
  54. package/dist/src/services/getToken/__tests__/GetToken.test.js +0 -1
  55. package/dist/src/services/getToken/__tests__/GetToken.test.js.map +1 -1
  56. package/dist/src/types/facturaInterfaces.d.ts +9 -3
  57. package/dist/src/xmlSchemaHeaderMap.d.ts +70 -0
  58. package/dist/src/xmlSchemaHeaderMap.js +30 -0
  59. package/dist/src/xmlSchemaHeaderMap.js.map +1 -0
  60. package/doc/atv-structures/4.3/FacturaElectronica_V4.3.xsd.xml +1633 -478
  61. package/doc/atv-structures/4.4/TiqueteElectronico_V4.4.xsd.xml +2817 -0
  62. package/doc/json-schemas/4.4/fe.json +544 -0
  63. package/doc/json-schemas/4.4/te.json +420 -0
  64. package/doc/testing.md +27 -0
  65. package/examples/README.md +10 -35
  66. package/examples/atvAccept.ts +18 -9
  67. package/examples/consultXML.ts +1 -0
  68. package/examples/{createAndSend.ts → createAndSendFE.ts} +11 -8
  69. package/examples/createAndSendTE.ts +73 -0
  70. package/examples/createCreditNote.ts +10 -6
  71. package/examples/createDebitNote.ts +2 -0
  72. package/examples/getToken.ts +2 -0
  73. package/package.json +3 -2
  74. package/src/ATV/core/CreateDocFactory.ts +32 -23
  75. package/src/ATV/core/Document.ts +15 -8
  76. package/src/ATV/core/DocumentType.ts +10 -3
  77. package/src/ATV/core/FullConsecutive.ts +2 -1
  78. package/src/ATV/core/OrderLine.ts +7 -1
  79. package/src/ATV/core/Person.ts +2 -2
  80. package/src/ATV/core/ReceptorConsecutive.ts +16 -16
  81. package/src/ATV/core/ReferenceInformation.ts +6 -6
  82. package/src/ATV/core/Summary.type.ts +5 -0
  83. package/src/ATV/core/types.ts +7 -6
  84. package/src/ATV/index.ts +3 -3
  85. package/src/ATV/mappers/billDocToAtv.ts +35 -15
  86. package/src/ATV/types.ts +1 -1
  87. package/src/ATV/useCases/createDocument/index.ts +8 -8
  88. package/src/ATV/useCases/createDocument/types.ts +5 -6
  89. package/src/ATV/useCases/createReceptorMessage/index.ts +94 -93
  90. package/src/helpers/comprobantes.ts +10 -1
  91. package/src/lib/genClave/index.ts +10 -3
  92. package/src/lib/genXML/index.ts +3 -1
  93. package/src/lib/genXML/sigXML/index.ts +6 -3
  94. package/src/services/getToken/GetToken.ts +0 -3
  95. package/src/services/getToken/__tests__/GetToken.test.ts +0 -1
  96. package/src/types/facturaInterfaces.ts +10 -4
  97. package/src/xmlSchemaHeaderMap.ts +37 -0
  98. package/tools/readXML.ts +2 -0
  99. package/tools/xsdToJsonSchema.ts +1 -0
  100. package/tsconfig.json +1 -0
  101. package/dist/src/ATV/core/documentNames.types.d.ts +0 -1
  102. package/dist/src/ATV/core/documentNames.types.js +0 -3
  103. package/dist/src/ATV/core/documentNames.types.js.map +0 -1
  104. package/dist/src/lib/genXML/xmlConfig.d.ts +0 -55
  105. package/dist/src/lib/genXML/xmlConfig.js +0 -42
  106. package/dist/src/lib/genXML/xmlConfig.js.map +0 -1
  107. package/src/ATV/core/documentNames.types.ts +0 -6
  108. package/src/lib/genXML/xmlConfig.ts +0 -60
package/.eslintignore ADDED
@@ -0,0 +1,3 @@
1
+ examples/
2
+ **/examples/
3
+ **/*.example.*
package/.eslintrc.js CHANGED
@@ -1,32 +1,32 @@
1
1
  module.exports = {
2
- "env": {
3
- "es6": true,
4
- "node": true
2
+ env: {
3
+ es6: true,
4
+ node: true
5
5
  },
6
- "extends": [
7
- "standard",
8
- "plugin:@typescript-eslint/eslint-recommended",
9
- "plugin:@typescript-eslint/recommended"
6
+ extends: [
7
+ 'standard',
8
+ 'plugin:@typescript-eslint/eslint-recommended',
9
+ 'plugin:@typescript-eslint/recommended'
10
10
  ],
11
- "globals": {
12
- "Atomics": "readonly",
13
- "SharedArrayBuffer": "readonly"
11
+ globals: {
12
+ Atomics: 'readonly',
13
+ SharedArrayBuffer: 'readonly'
14
14
  },
15
- "parser": "@typescript-eslint/parser",
16
- "parserOptions": {
17
- "ecmaVersion": 2018,
18
- "sourceType": "module"
15
+ parser: '@typescript-eslint/parser',
16
+ parserOptions: {
17
+ ecmaVersion: 2018,
18
+ sourceType: 'module'
19
19
  },
20
- "plugins": [
21
- "@typescript-eslint"
20
+ plugins: [
21
+ '@typescript-eslint'
22
22
  ],
23
- "rules": {
24
- "@typescript-eslint/no-explicit-any": [0],
25
- "space-before-function-paren": [
26
- "warn", {
27
- "anonymous": "never",
28
- "named": "never"
23
+ rules: {
24
+ '@typescript-eslint/no-explicit-any': [0],
25
+ 'space-before-function-paren': [
26
+ 'warn', {
27
+ anonymous: 'never',
28
+ named: 'never'
29
29
  }
30
30
  ]
31
31
  }
32
- };
32
+ }
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "daily"
@@ -19,7 +19,7 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  strategy:
21
21
  matrix:
22
- node: [18, 20]
22
+ node: [20, 22]
23
23
  steps:
24
24
  - uses: actions/checkout@v4
25
25
  - uses: actions/setup-node@v1
@@ -33,20 +33,22 @@ jobs:
33
33
  with:
34
34
  name: actions ${{ matrix.node }}
35
35
  fail_ci_if_error: false
36
- run-on-window:
37
- runs-on: windows-latest
38
- strategy:
39
- matrix:
40
- node: [18, 20]
36
+ typecheck:
37
+ runs-on: ubuntu-latest
41
38
  steps:
42
- - uses: actions/checkout@v2
39
+ - uses: actions/checkout@v4
43
40
  - uses: actions/setup-node@v1
44
41
  with:
45
- node-version: ${{ matrix.node }}
42
+ node-version: 20
46
43
  - run: yarn
47
44
  - run: yarn build
48
- - name: coverage
49
- uses: codecov/codecov-action@v1
45
+ - run: yarn type:check
46
+ lint:
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+ - uses: actions/setup-node@v1
50
51
  with:
51
- name: actions windows
52
- fail_ci_if_error: false
52
+ node-version: 20
53
+ - run: yarn
54
+ - run: yarn lint
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- > 🛑 **Librería aún no es estable.** 🛑
2
+ > 🛑 **Librería beta** 🛑
3
3
 
4
4
  # Librería Javascript - API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.
5
5
 
@@ -10,5 +10,12 @@ Este proyecto tiene como fin facilitar la creación de la factura electrónica d
10
10
  Buscando colaboración
11
11
 
12
12
  -------
13
+ ## Comandos iniciales
13
14
 
14
- Para probar localmente leer [enlace](/examples/README.md).
15
+ ```
16
+ yarn build
17
+ ```
18
+
19
+ Para probar localmente leer:
20
+ - [Testing](/doc/testing.md).
21
+ - [Ejemplos](/examples/README.md).
@@ -1,7 +1,9 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <FacturaElectronica xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2
+ <FacturaElectronica xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.4/facturaElectronica" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
3
  <Clave>50601042400020692014200100001010000000002100000001</Clave>
4
- <CodigoActividad>000004</CodigoActividad>
4
+ <ProveedorSistemas>206920142</ProveedorSistemas>
5
+ <CodigoActividadEmisor>000004</CodigoActividadEmisor>
6
+ <CodigoActividadReceptor>000004</CodigoActividadReceptor>
5
7
  <NumeroConsecutivo>00100001010000000002</NumeroConsecutivo>
6
8
  <FechaEmision>2024-04-01T00:00:00.000Z</FechaEmision>
7
9
  <Emisor>
@@ -15,17 +17,13 @@
15
17
  <Provincia>2</Provincia>
16
18
  <Canton>06</Canton>
17
19
  <Distrito>04</Distrito>
18
- <Barrio>06</Barrio>
20
+ <Barrio>00006</Barrio>
19
21
  <OtrasSenas>details</OtrasSenas>
20
22
  </Ubicacion>
21
23
  <Telefono>
22
24
  <CodigoPais>506</CodigoPais>
23
25
  <NumTelefono>12341234</NumTelefono>
24
26
  </Telefono>
25
- <Fax>
26
- <CodigoPais>506</CodigoPais>
27
- <NumTelefono>12341234</NumTelefono>
28
- </Fax>
29
27
  <CorreoElectronico>test@test.com</CorreoElectronico>
30
28
  </Emisor>
31
29
  <Receptor>
@@ -39,44 +37,41 @@
39
37
  <Provincia>2</Provincia>
40
38
  <Canton>06</Canton>
41
39
  <Distrito>04</Distrito>
42
- <Barrio>06</Barrio>
40
+ <Barrio>00006</Barrio>
43
41
  <OtrasSenas>details</OtrasSenas>
44
42
  </Ubicacion>
45
43
  <Telefono>
46
44
  <CodigoPais>506</CodigoPais>
47
45
  <NumTelefono>80808080</NumTelefono>
48
46
  </Telefono>
49
- <Fax>
50
- <CodigoPais>506</CodigoPais>
51
- <NumTelefono>80808080</NumTelefono>
52
- </Fax>
53
47
  <CorreoElectronico>test@test.com</CorreoElectronico>
54
48
  </Receptor>
55
49
  <CondicionVenta>01</CondicionVenta>
56
- <MedioPago>03</MedioPago>
57
50
  <DetalleServicio>
58
51
  <LineaDetalle>
59
52
  <NumeroLinea>1</NumeroLinea>
60
- <Codigo>7113301000000</Codigo>
53
+ <CodigoCABYS>7113301000000</CodigoCABYS>
61
54
  <Cantidad>1</Cantidad>
62
55
  <UnidadMedida>Unid</UnidadMedida>
63
56
  <Detalle>detalle</Detalle>
64
57
  <PrecioUnitario>10</PrecioUnitario>
65
58
  <MontoTotal>10</MontoTotal>
66
59
  <SubTotal>10</SubTotal>
60
+ <BaseImponible>10</BaseImponible>
67
61
  <Impuesto>
68
62
  <Codigo>01</Codigo>
69
- <CodigoTarifa>08</CodigoTarifa>
70
63
  <Tarifa>13</Tarifa>
71
64
  <Monto>1.3</Monto>
72
65
  </Impuesto>
66
+ <ImpuestoAsumidoEmisorFabrica>0</ImpuestoAsumidoEmisorFabrica>
67
+ <ImpuestoNeto>1.3</ImpuestoNeto>
73
68
  <MontoTotalLinea>11.3</MontoTotalLinea>
74
69
  </LineaDetalle>
75
70
  </DetalleServicio>
76
71
  <ResumenFactura>
77
72
  <CodigoTipoMoneda>
78
73
  <CodigoMoneda>CRC</CodigoMoneda>
79
- <TipoCambio>585.69</TipoCambio>
74
+ <TipoCambio>1</TipoCambio>
80
75
  </CodigoTipoMoneda>
81
76
  <TotalServGravados>0</TotalServGravados>
82
77
  <TotalServExentos>0</TotalServExentos>
@@ -89,6 +84,9 @@
89
84
  <TotalDescuentos>0</TotalDescuentos>
90
85
  <TotalVentaNeta>10</TotalVentaNeta>
91
86
  <TotalImpuesto>1.3</TotalImpuesto>
87
+ <MedioPago>
88
+ <TipoMedioPago>03</TipoMedioPago>
89
+ </MedioPago>
92
90
  <TotalComprobante>11.3</TotalComprobante>
93
91
  </ResumenFactura>
94
92
  </FacturaElectronica>
@@ -1,3 +1,4 @@
1
+ import { DocumentInputWithReceiver } from '@src/ATV/core/CreateDocFactory'
1
2
  import { CreateDocumentInput } from '@src/index'
2
3
 
3
4
  const taxStub: CreateDocumentInput['document']['orderLines'][0]['tax'] = {
@@ -75,7 +76,7 @@ export const creditNoteReferenceInfoExample: CreateDocumentInput['document']['re
75
76
  reason: 'Se anula documento'
76
77
  }
77
78
 
78
- export const createDocumentInputExample: CreateDocumentInput['document'] = {
79
+ export const FEInputExample: DocumentInputWithReceiver = {
79
80
  consecutiveIdentifier: '2',
80
81
  activityCode: '4',
81
82
  providerId: emitterStub.identifier.id,
@@ -91,3 +92,19 @@ export const createDocumentInputExample: CreateDocumentInput['document'] = {
91
92
  paymentMethod: '03',
92
93
  conditionSale: '01'
93
94
  }
95
+
96
+ export const TEInputExample: CreateDocumentInput['document'] = {
97
+ consecutiveIdentifier: '2',
98
+ activityCode: '4',
99
+ providerId: emitterStub.identifier.id,
100
+ documentName: 'TiqueteElectronico',
101
+ branch: '1', // '001'
102
+ terminal: '1', // '00001'
103
+ ceSituation: '1',
104
+ countryCode: '506',
105
+ emitter: emitterStub,
106
+ orderLines,
107
+ securityCode: '1', // '00000001'
108
+ paymentMethod: '03',
109
+ conditionSale: '01'
110
+ }
@@ -3,7 +3,6 @@ import { ClientPayload } from '@src/types/globalInterfaces'
3
3
 
4
4
  const impuestoStub: Impuesto = {
5
5
  Codigo: '01',
6
- CodigoTarifa: '08',
7
6
  Tarifa: 13
8
7
  }
9
8
 
@@ -1,18 +1,18 @@
1
1
  export const postTokenOptions = {
2
- client_id: 'api-stag', // eslint-disable-line @typescript-eslint/camelcase
3
- client_secret: '', // eslint-disable-line @typescript-eslint/camelcase
4
- grant_type: 'password', // eslint-disable-line @typescript-eslint/camelcase
2
+ client_id: 'api-stag',
3
+ client_secret: '',
4
+ grant_type: 'password',
5
5
  username: 'cpj-1-111-654321@stag.comprobanteselectronicos.go.cr',
6
6
  password: 'Rg-OQS)]Y00987654321'
7
7
  }
8
8
 
9
9
  export const tokenStub = {
10
- access_token: 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ4WERpTElEdW1DNUlKYkViZDRFRDlrMy1NS0Z6eUh4QW4xUWZYeEtSOWt3In0.eyJqdGkiOiIwMWE1NzY0Yy1lZGExLTRlNmEtOTg4MS1kNWJiYWQ5MTE3MjQiLCJleHAiOjE2MjE4MTIzNTcsIm5iZiI6MCwiaWF0IjoxNjIxODEyMDU3LCJpc3MiOiJodHRwOi8vaWRwLmNvbXByb2JhbnRlc2VsZWN0cm9uaWNvcy5nby5jci9hdXRoL3JlYWxtcy9ydXQtc3RhZyIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJiZDAyZmFiNS1hMjMwLTRlY2YtOWI3Zi1lMjA1NGM3YjhhMGYiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJhcGktc3RhZyIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6IjQ3Y2UyYzBhLTU2MDAtNDA0NS1hNDllLTQ1NDQwM2VmYzg2YiIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiIiwibmFtZSI6IkNJRU5DSUEgREVMIFNBQk9SIFNPQ0lFREFEIERFIFJFU1BPTlNBQklMSURBRCBMSU1JVEFEQSIsInByZWZlcnJlZF91c2VybmFtZSI6ImNwai0zLTEwMi03NTkxNTdAc3RhZy5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IiLCJnaXZlbl9uYW1lIjoiQ0lFTkNJQSBERUwgU0FCT1IgU09DSUVEQUQgREUgUkVTUE9OU0FCSUxJREFEIExJTUlUQURBIiwicG9sIjoiNWI4MGI0NDc5ZWNlMzYwMzJiMDdkMmViIiwicG9saWN5LWlkIjoiNThhNjIwMzM3NmVhZTE0MDhjZTVlN2RkIiwiZW1haWwiOiJjcGotMy0xMDItNzU5MTU3QHN0YWcuY29tcHJvYmFudGVzZWxlY3Ryb25pY29zLmdvLmNyIn0.GBhbEkVQFGKgKr28H2SaB0QHMLIXcn8jmCj-VVTvSDGKmF7CLp7Dwi94oXiW72AoZAqvNBRnRr4hDJb7s8HZedhtD965O9x_pKPVYjgc6B_xXwczNqL6o4I2o3GKZ_1dY7E9KZgUTqv-dbZ3LmKmvB5dk_icRw-Kh5tGheUaF5cSdzIYa4VHy-ZgMcacdBnvl-G9mixkYlBShMJyszIQ-k2T9z4FFvOUdNstBiehwFiCBi7CS7HP_wn1w04O2uClyq-zHk9U8Qb25YROquFtZHV9IPrgg3LMA4MuLS6OhnKRjYHbqf0j4Elh_ucNYDs7Whz5Y76Ya33d3VhooUuDKA', // eslint-disable-line @typescript-eslint/camelcase
11
- expires_in: 300, // eslint-disable-line @typescript-eslint/camelcase
12
- refresh_expires_in: 1200, // eslint-disable-line @typescript-eslint/camelcase
13
- refresh_token: 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJmOThjMTk2Mi02ZGJkLTRjNDAtOTM5Ni00YTVmMDdjYTYxZTQifQ.eyJqdGkiOiJiZDMyMWYyNC02MGFlLTRiMmYtYWJlZS01ZDI1NWNlMDAyMDYiLCJleHAiOjE2MjE4MTMyNTcsIm5iZiI6MCwiaWF0IjoxNjIxODEyMDU3LCJpc3MiOiJodHRwOi8vaWRwLmNvbXByb2JhbnRlc2VsZWN0cm9uaWNvcy5nby5jci9hdXRoL3JlYWxtcy9ydXQtc3RhZyIsImF1ZCI6Imh0dHA6Ly9pZHAuY29tcHJvYmFudGVzZWxlY3Ryb25pY29zLmdvLmNyL2F1dGgvcmVhbG1zL3J1dC1zdGFnIiwic3ViIjoiYmQwMmZhYjUtYTIzMC00ZWNmLTliN2YtZTIwNTRjN2I4YTBmIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImFwaS1zdGFnIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiNDdjZTJjMGEtNTYwMC00MDQ1LWE0OWUtNDU0NDAzZWZjODZiIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6IiJ9.aQzWy0NHyizDSZwYz14oOXrwekSPlHOrkjiRdo_BvP4', // eslint-disable-line @typescript-eslint/camelcase
14
- token_type: 'bearer', // eslint-disable-line @typescript-eslint/camelcase
10
+ access_token: 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ4WERpTElEdW1DNUlKYkViZDRFRDlrMy1NS0Z6eUh4QW4xUWZYeEtSOWt3In0.eyJqdGkiOiIwMWE1NzY0Yy1lZGExLTRlNmEtOTg4MS1kNWJiYWQ5MTE3MjQiLCJleHAiOjE2MjE4MTIzNTcsIm5iZiI6MCwiaWF0IjoxNjIxODEyMDU3LCJpc3MiOiJodHRwOi8vaWRwLmNvbXByb2JhbnRlc2VsZWN0cm9uaWNvcy5nby5jci9hdXRoL3JlYWxtcy9ydXQtc3RhZyIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJiZDAyZmFiNS1hMjMwLTRlY2YtOWI3Zi1lMjA1NGM3YjhhMGYiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJhcGktc3RhZyIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6IjQ3Y2UyYzBhLTU2MDAtNDA0NS1hNDllLTQ1NDQwM2VmYzg2YiIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiIiwibmFtZSI6IkNJRU5DSUEgREVMIFNBQk9SIFNPQ0lFREFEIERFIFJFU1BPTlNBQklMSURBRCBMSU1JVEFEQSIsInByZWZlcnJlZF91c2VybmFtZSI6ImNwai0zLTEwMi03NTkxNTdAc3RhZy5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IiLCJnaXZlbl9uYW1lIjoiQ0lFTkNJQSBERUwgU0FCT1IgU09DSUVEQUQgREUgUkVTUE9OU0FCSUxJREFEIExJTUlUQURBIiwicG9sIjoiNWI4MGI0NDc5ZWNlMzYwMzJiMDdkMmViIiwicG9saWN5LWlkIjoiNThhNjIwMzM3NmVhZTE0MDhjZTVlN2RkIiwiZW1haWwiOiJjcGotMy0xMDItNzU5MTU3QHN0YWcuY29tcHJvYmFudGVzZWxlY3Ryb25pY29zLmdvLmNyIn0.GBhbEkVQFGKgKr28H2SaB0QHMLIXcn8jmCj-VVTvSDGKmF7CLp7Dwi94oXiW72AoZAqvNBRnRr4hDJb7s8HZedhtD965O9x_pKPVYjgc6B_xXwczNqL6o4I2o3GKZ_1dY7E9KZgUTqv-dbZ3LmKmvB5dk_icRw-Kh5tGheUaF5cSdzIYa4VHy-ZgMcacdBnvl-G9mixkYlBShMJyszIQ-k2T9z4FFvOUdNstBiehwFiCBi7CS7HP_wn1w04O2uClyq-zHk9U8Qb25YROquFtZHV9IPrgg3LMA4MuLS6OhnKRjYHbqf0j4Elh_ucNYDs7Whz5Y76Ya33d3VhooUuDKA',
11
+ expires_in: 300,
12
+ refresh_expires_in: 1200,
13
+ refresh_token: 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJmOThjMTk2Mi02ZGJkLTRjNDAtOTM5Ni00YTVmMDdjYTYxZTQifQ.eyJqdGkiOiJiZDMyMWYyNC02MGFlLTRiMmYtYWJlZS01ZDI1NWNlMDAyMDYiLCJleHAiOjE2MjE4MTMyNTcsIm5iZiI6MCwiaWF0IjoxNjIxODEyMDU3LCJpc3MiOiJodHRwOi8vaWRwLmNvbXByb2JhbnRlc2VsZWN0cm9uaWNvcy5nby5jci9hdXRoL3JlYWxtcy9ydXQtc3RhZyIsImF1ZCI6Imh0dHA6Ly9pZHAuY29tcHJvYmFudGVzZWxlY3Ryb25pY29zLmdvLmNyL2F1dGgvcmVhbG1zL3J1dC1zdGFnIiwic3ViIjoiYmQwMmZhYjUtYTIzMC00ZWNmLTliN2YtZTIwNTRjN2I4YTBmIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImFwaS1zdGFnIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiNDdjZTJjMGEtNTYwMC00MDQ1LWE0OWUtNDU0NDAzZWZjODZiIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6IiJ9.aQzWy0NHyizDSZwYz14oOXrwekSPlHOrkjiRdo_BvP4',
14
+ token_type: 'bearer',
15
15
  'not-before-policy': 0,
16
- session_state: '47ce2c0a-5600-4045-a49e-454403efc86b', // eslint-disable-line @typescript-eslint/camelcase
16
+ session_state: '47ce2c0a-5600-4045-a49e-454403efc86b',
17
17
  scope: ''
18
18
  }
@@ -1,3 +1,3 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`Create Document (Invoice) should create document and match to snapshot 1`] = `"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RmFjdHVyYUVsZWN0cm9uaWNhIHhtbG5zPSJodHRwczovL2Nkbi5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IveG1sLXNjaGVtYXMvdjQuMy9mYWN0dXJhRWxlY3Ryb25pY2EiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48Q2xhdmU+NTA2MDEwNDI0MDAwMjA2OTIwMTQyMDAxMDAwMDEwMTAwMDAwMDAwMDIxMDAwMDAwMDE8L0NsYXZlPjxDb2RpZ29BY3RpdmlkYWQ+MDAwMDA0PC9Db2RpZ29BY3RpdmlkYWQ+PE51bWVyb0NvbnNlY3V0aXZvPjAwMTAwMDAxMDEwMDAwMDAwMDAyPC9OdW1lcm9Db25zZWN1dGl2bz48RmVjaGFFbWlzaW9uPjIwMjQtMDQtMDFUMDA6MDA6MDAuMDAwWjwvRmVjaGFFbWlzaW9uPjxFbWlzb3I+PE5vbWJyZT5FbWlzb3IgbmFtZTwvTm9tYnJlPjxJZGVudGlmaWNhY2lvbj48VGlwbz4wMTwvVGlwbz48TnVtZXJvPjIwNjkyMDE0MjwvTnVtZXJvPjwvSWRlbnRpZmljYWNpb24+PE5vbWJyZUNvbWVyY2lhbD5lbWlzb3IgY29tZXJjaWFsIG5hbWU8L05vbWJyZUNvbWVyY2lhbD48VWJpY2FjaW9uPjxQcm92aW5jaWE+MjwvUHJvdmluY2lhPjxDYW50b24+MDY8L0NhbnRvbj48RGlzdHJpdG8+MDQ8L0Rpc3RyaXRvPjxCYXJyaW8+MDY8L0JhcnJpbz48T3RyYXNTZW5hcz5kZXRhaWxzPC9PdHJhc1NlbmFzPjwvVWJpY2FjaW9uPjxUZWxlZm9ubz48Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+PE51bVRlbGVmb25vPjEyMzQxMjM0PC9OdW1UZWxlZm9ubz48L1RlbGVmb25vPjxGYXg+PENvZGlnb1BhaXM+NTA2PC9Db2RpZ29QYWlzPjxOdW1UZWxlZm9ubz4xMjM0MTIzNDwvTnVtVGVsZWZvbm8+PC9GYXg+PENvcnJlb0VsZWN0cm9uaWNvPnRlc3RAdGVzdC5jb208L0NvcnJlb0VsZWN0cm9uaWNvPjwvRW1pc29yPjxSZWNlcHRvcj48Tm9tYnJlPnJlY2VpdmVyIG5hbWUgU1JMPC9Ob21icmU+PElkZW50aWZpY2FjaW9uPjxUaXBvPjAxPC9UaXBvPjxOdW1lcm8+MjA2OTMwMTQzPC9OdW1lcm8+PC9JZGVudGlmaWNhY2lvbj48Tm9tYnJlQ29tZXJjaWFsPnJlY2VpdmVyIG5hbWU8L05vbWJyZUNvbWVyY2lhbD48VWJpY2FjaW9uPjxQcm92aW5jaWE+MjwvUHJvdmluY2lhPjxDYW50b24+MDY8L0NhbnRvbj48RGlzdHJpdG8+MDQ8L0Rpc3RyaXRvPjxCYXJyaW8+MDY8L0JhcnJpbz48T3RyYXNTZW5hcz5kZXRhaWxzPC9PdHJhc1NlbmFzPjwvVWJpY2FjaW9uPjxUZWxlZm9ubz48Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+PE51bVRlbGVmb25vPjgwODA4MDgwPC9OdW1UZWxlZm9ubz48L1RlbGVmb25vPjxGYXg+PENvZGlnb1BhaXM+NTA2PC9Db2RpZ29QYWlzPjxOdW1UZWxlZm9ubz44MDgwODA4MDwvTnVtVGVsZWZvbm8+PC9GYXg+PENvcnJlb0VsZWN0cm9uaWNvPnRlc3RAdGVzdC5jb208L0NvcnJlb0VsZWN0cm9uaWNvPjwvUmVjZXB0b3I+PENvbmRpY2lvblZlbnRhPjAxPC9Db25kaWNpb25WZW50YT48TWVkaW9QYWdvPjAzPC9NZWRpb1BhZ28+PERldGFsbGVTZXJ2aWNpbz48TGluZWFEZXRhbGxlPjxOdW1lcm9MaW5lYT4xPC9OdW1lcm9MaW5lYT48Q29kaWdvPjcxMTMzMDEwMDAwMDA8L0NvZGlnbz48Q2FudGlkYWQ+MTwvQ2FudGlkYWQ+PFVuaWRhZE1lZGlkYT5VbmlkPC9VbmlkYWRNZWRpZGE+PERldGFsbGU+ZGV0YWxsZTwvRGV0YWxsZT48UHJlY2lvVW5pdGFyaW8+MTA8L1ByZWNpb1VuaXRhcmlvPjxNb250b1RvdGFsPjEwPC9Nb250b1RvdGFsPjxTdWJUb3RhbD4xMDwvU3ViVG90YWw+PEltcHVlc3RvPjxDb2RpZ28+MDE8L0NvZGlnbz48Q29kaWdvVGFyaWZhPjA4PC9Db2RpZ29UYXJpZmE+PFRhcmlmYT4xMzwvVGFyaWZhPjxNb250bz4xLjM8L01vbnRvPjwvSW1wdWVzdG8+PE1vbnRvVG90YWxMaW5lYT4xMS4zPC9Nb250b1RvdGFsTGluZWE+PC9MaW5lYURldGFsbGU+PC9EZXRhbGxlU2VydmljaW8+PFJlc3VtZW5GYWN0dXJhPjxDb2RpZ29UaXBvTW9uZWRhPjxDb2RpZ29Nb25lZGE+Q1JDPC9Db2RpZ29Nb25lZGE+PFRpcG9DYW1iaW8+NTg1LjY5PC9UaXBvQ2FtYmlvPjwvQ29kaWdvVGlwb01vbmVkYT48VG90YWxTZXJ2R3JhdmFkb3M+MDwvVG90YWxTZXJ2R3JhdmFkb3M+PFRvdGFsU2VydkV4ZW50b3M+MDwvVG90YWxTZXJ2RXhlbnRvcz48VG90YWxNZXJjYW5jaWFzR3JhdmFkYXM+MTA8L1RvdGFsTWVyY2FuY2lhc0dyYXZhZGFzPjxUb3RhbE1lcmNhbmNpYXNFeGVudGFzPjA8L1RvdGFsTWVyY2FuY2lhc0V4ZW50YXM+PFRvdGFsR3JhdmFkbz4xMDwvVG90YWxHcmF2YWRvPjxUb3RhbEV4ZW50bz4wPC9Ub3RhbEV4ZW50bz48VG90YWxFeG9uZXJhZG8+MDwvVG90YWxFeG9uZXJhZG8+PFRvdGFsVmVudGE+MTA8L1RvdGFsVmVudGE+PFRvdGFsRGVzY3VlbnRvcz4wPC9Ub3RhbERlc2N1ZW50b3M+PFRvdGFsVmVudGFOZXRhPjEwPC9Ub3RhbFZlbnRhTmV0YT48VG90YWxJbXB1ZXN0bz4xLjM8L1RvdGFsSW1wdWVzdG8+PFRvdGFsQ29tcHJvYmFudGU+MTEuMzwvVG90YWxDb21wcm9iYW50ZT48L1Jlc3VtZW5GYWN0dXJhPjwvRmFjdHVyYUVsZWN0cm9uaWNhPg=="`;
3
+ exports[`Create Document (Invoice) should create document and match to snapshot 1`] = `"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RmFjdHVyYUVsZWN0cm9uaWNhIHhtbG5zPSJodHRwczovL2Nkbi5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IveG1sLXNjaGVtYXMvdjQuNC9mYWN0dXJhRWxlY3Ryb25pY2EiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48Q2xhdmU+NTA2MDEwNDI0MDAwMjA2OTIwMTQyMDAxMDAwMDEwMTAwMDAwMDAwMDIxMDAwMDAwMDE8L0NsYXZlPjxQcm92ZWVkb3JTaXN0ZW1hcz4yMDY5MjAxNDI8L1Byb3ZlZWRvclNpc3RlbWFzPjxDb2RpZ29BY3RpdmlkYWRFbWlzb3I+MDAwMDA0PC9Db2RpZ29BY3RpdmlkYWRFbWlzb3I+PENvZGlnb0FjdGl2aWRhZFJlY2VwdG9yPjAwMDAwNDwvQ29kaWdvQWN0aXZpZGFkUmVjZXB0b3I+PE51bWVyb0NvbnNlY3V0aXZvPjAwMTAwMDAxMDEwMDAwMDAwMDAyPC9OdW1lcm9Db25zZWN1dGl2bz48RmVjaGFFbWlzaW9uPjIwMjQtMDQtMDFUMDA6MDA6MDAuMDAwWjwvRmVjaGFFbWlzaW9uPjxFbWlzb3I+PE5vbWJyZT5FbWlzb3IgbmFtZTwvTm9tYnJlPjxJZGVudGlmaWNhY2lvbj48VGlwbz4wMTwvVGlwbz48TnVtZXJvPjIwNjkyMDE0MjwvTnVtZXJvPjwvSWRlbnRpZmljYWNpb24+PE5vbWJyZUNvbWVyY2lhbD5lbWlzb3IgY29tZXJjaWFsIG5hbWU8L05vbWJyZUNvbWVyY2lhbD48VWJpY2FjaW9uPjxQcm92aW5jaWE+MjwvUHJvdmluY2lhPjxDYW50b24+MDY8L0NhbnRvbj48RGlzdHJpdG8+MDQ8L0Rpc3RyaXRvPjxCYXJyaW8+MDAwMDY8L0JhcnJpbz48T3RyYXNTZW5hcz5kZXRhaWxzPC9PdHJhc1NlbmFzPjwvVWJpY2FjaW9uPjxUZWxlZm9ubz48Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+PE51bVRlbGVmb25vPjEyMzQxMjM0PC9OdW1UZWxlZm9ubz48L1RlbGVmb25vPjxDb3JyZW9FbGVjdHJvbmljbz50ZXN0QHRlc3QuY29tPC9Db3JyZW9FbGVjdHJvbmljbz48L0VtaXNvcj48UmVjZXB0b3I+PE5vbWJyZT5yZWNlaXZlciBuYW1lIFNSTDwvTm9tYnJlPjxJZGVudGlmaWNhY2lvbj48VGlwbz4wMTwvVGlwbz48TnVtZXJvPjIwNjkzMDE0MzwvTnVtZXJvPjwvSWRlbnRpZmljYWNpb24+PE5vbWJyZUNvbWVyY2lhbD5yZWNlaXZlciBuYW1lPC9Ob21icmVDb21lcmNpYWw+PFViaWNhY2lvbj48UHJvdmluY2lhPjI8L1Byb3ZpbmNpYT48Q2FudG9uPjA2PC9DYW50b24+PERpc3RyaXRvPjA0PC9EaXN0cml0bz48QmFycmlvPjAwMDA2PC9CYXJyaW8+PE90cmFzU2VuYXM+ZGV0YWlsczwvT3RyYXNTZW5hcz48L1ViaWNhY2lvbj48VGVsZWZvbm8+PENvZGlnb1BhaXM+NTA2PC9Db2RpZ29QYWlzPjxOdW1UZWxlZm9ubz44MDgwODA4MDwvTnVtVGVsZWZvbm8+PC9UZWxlZm9ubz48Q29ycmVvRWxlY3Ryb25pY28+dGVzdEB0ZXN0LmNvbTwvQ29ycmVvRWxlY3Ryb25pY28+PC9SZWNlcHRvcj48Q29uZGljaW9uVmVudGE+MDE8L0NvbmRpY2lvblZlbnRhPjxEZXRhbGxlU2VydmljaW8+PExpbmVhRGV0YWxsZT48TnVtZXJvTGluZWE+MTwvTnVtZXJvTGluZWE+PENvZGlnb0NBQllTPjcxMTMzMDEwMDAwMDA8L0NvZGlnb0NBQllTPjxDYW50aWRhZD4xPC9DYW50aWRhZD48VW5pZGFkTWVkaWRhPlVuaWQ8L1VuaWRhZE1lZGlkYT48RGV0YWxsZT5kZXRhbGxlPC9EZXRhbGxlPjxQcmVjaW9Vbml0YXJpbz4xMDwvUHJlY2lvVW5pdGFyaW8+PE1vbnRvVG90YWw+MTA8L01vbnRvVG90YWw+PFN1YlRvdGFsPjEwPC9TdWJUb3RhbD48QmFzZUltcG9uaWJsZT4xMDwvQmFzZUltcG9uaWJsZT48SW1wdWVzdG8+PENvZGlnbz4wMTwvQ29kaWdvPjxUYXJpZmE+MTM8L1RhcmlmYT48TW9udG8+MS4zPC9Nb250bz48L0ltcHVlc3RvPjxJbXB1ZXN0b0FzdW1pZG9FbWlzb3JGYWJyaWNhPjA8L0ltcHVlc3RvQXN1bWlkb0VtaXNvckZhYnJpY2E+PEltcHVlc3RvTmV0bz4xLjM8L0ltcHVlc3RvTmV0bz48TW9udG9Ub3RhbExpbmVhPjExLjM8L01vbnRvVG90YWxMaW5lYT48L0xpbmVhRGV0YWxsZT48L0RldGFsbGVTZXJ2aWNpbz48UmVzdW1lbkZhY3R1cmE+PENvZGlnb1RpcG9Nb25lZGE+PENvZGlnb01vbmVkYT5DUkM8L0NvZGlnb01vbmVkYT48VGlwb0NhbWJpbz4xPC9UaXBvQ2FtYmlvPjwvQ29kaWdvVGlwb01vbmVkYT48VG90YWxTZXJ2R3JhdmFkb3M+MDwvVG90YWxTZXJ2R3JhdmFkb3M+PFRvdGFsU2VydkV4ZW50b3M+MDwvVG90YWxTZXJ2RXhlbnRvcz48VG90YWxNZXJjYW5jaWFzR3JhdmFkYXM+MTA8L1RvdGFsTWVyY2FuY2lhc0dyYXZhZGFzPjxUb3RhbE1lcmNhbmNpYXNFeGVudGFzPjA8L1RvdGFsTWVyY2FuY2lhc0V4ZW50YXM+PFRvdGFsR3JhdmFkbz4xMDwvVG90YWxHcmF2YWRvPjxUb3RhbEV4ZW50bz4wPC9Ub3RhbEV4ZW50bz48VG90YWxFeG9uZXJhZG8+MDwvVG90YWxFeG9uZXJhZG8+PFRvdGFsVmVudGE+MTA8L1RvdGFsVmVudGE+PFRvdGFsRGVzY3VlbnRvcz4wPC9Ub3RhbERlc2N1ZW50b3M+PFRvdGFsVmVudGFOZXRhPjEwPC9Ub3RhbFZlbnRhTmV0YT48VG90YWxJbXB1ZXN0bz4xLjM8L1RvdGFsSW1wdWVzdG8+PE1lZGlvUGFnbz48VGlwb01lZGlvUGFnbz4wMzwvVGlwb01lZGlvUGFnbz48L01lZGlvUGFnbz48VG90YWxDb21wcm9iYW50ZT4xMS4zPC9Ub3RhbENvbXByb2JhbnRlPjwvUmVzdW1lbkZhY3R1cmE+PC9GYWN0dXJhRWxlY3Ryb25pY2E+"`;
@@ -1,7 +1,7 @@
1
1
  import fs from 'fs'
2
2
  import { ATV } from '@src/ATV'
3
3
  import 'jest-xml-matcher'
4
- import { createDocumentInputExample } from '@test/stubs/createDocument.data'
4
+ import { FEInputExample } from '@test/stubs/createDocument.data'
5
5
  const fakePem = fs.readFileSync('__tests__/stubs/dummyKeys/client-identity.p12', 'binary')
6
6
  const fakePassword = '1234'
7
7
  const expectXml = fs.readFileSync('__tests__/stubs/commonExpectedXml.xml', 'utf-8')
@@ -15,7 +15,7 @@ describe('Create Document (Invoice)', () => {
15
15
  it('should create document and generate a correct command', async () => {
16
16
  const atv = new ATV({}, 'stg')
17
17
  const createdDoc = await atv.createDocumentCommand({
18
- document: createDocumentInputExample,
18
+ document: FEInputExample,
19
19
  token: 'fake-token',
20
20
  signatureOptions: {
21
21
  buffer: fakePem,
@@ -29,8 +29,8 @@ describe('Create Document (Invoice)', () => {
29
29
  expect(createdDoc.command.data).toMatchObject({
30
30
  clave: '50601042400020692014200100001010000000002100000001',
31
31
  fecha: '2024-04-01T00:00:00.000Z',
32
- emisor: { tipoIdentificacion: createDocumentInputExample.emitter.identifier.type, numeroIdentificacion: createDocumentInputExample.emitter.identifier.id },
33
- receptor: { tipoIdentificacion: createDocumentInputExample.receiver.identifier.type, numeroIdentificacion: createDocumentInputExample.receiver.identifier.id }
32
+ emisor: { tipoIdentificacion: FEInputExample.emitter.identifier.type, numeroIdentificacion: FEInputExample.emitter.identifier.id },
33
+ receptor: { tipoIdentificacion: FEInputExample.receiver.identifier.type, numeroIdentificacion: FEInputExample.receiver.identifier.id }
34
34
  })
35
35
  expect(createdDoc.command.data.comprobanteXml).toBeDefined()
36
36
  expect(createdDoc.extraData.xml).toBeDefined()
@@ -38,20 +38,20 @@ describe('Create Document (Invoice)', () => {
38
38
 
39
39
  it('should create document and match to snapshot', async () => {
40
40
  const atv = new ATV({}, 'stg')
41
- // @ts-ignore just for testing
42
41
  const createdDoc = await atv.createDocumentCommand({
43
- document: createDocumentInputExample,
42
+ document: FEInputExample,
44
43
  token: 'fake-token',
44
+ // @ts-expect-error only for testing
45
45
  signatureOptions: undefined
46
46
  })
47
47
  expect(createdDoc.command.data.comprobanteXml).toMatchSnapshot()
48
48
  })
49
49
  it('should create document and generate a correct xml', async () => {
50
50
  const atv = new ATV({}, 'stg')
51
- // @ts-ignore just for testing
52
51
  const createdDoc = await atv.createDocumentCommand({
53
- document: createDocumentInputExample,
52
+ document: FEInputExample,
54
53
  token: 'fake-token',
54
+ // @ts-expect-error only for testing
55
55
  signatureOptions: undefined
56
56
  })
57
57
  expect(createdDoc.extraData.xml).toEqualXML(expectXml)
@@ -1,41 +1,46 @@
1
1
  import fs from 'fs'
2
- import { ATV } from "@src/ATV";
3
- import { AceptationStates } from '@src/ATV/core/types';
4
- import { parseElectronicBillXML } from '@src/lib/genXML';
2
+ import { ATV } from '@src/ATV'
3
+ import { AceptationStates } from '@src/ATV/core/types'
4
+ import { parseElectronicBillXML } from '@src/lib/genXML'
5
5
  const expectXml = fs.readFileSync('__tests__/stubs/commonExpectedXml.xml', 'utf-8')
6
6
  const fakePem = fs.readFileSync('__tests__/stubs/dummyKeys/client-identity.p12', 'binary')
7
7
  const fakePassword = '1234'
8
8
  describe('Create Receptor Message', () => {
9
- it('should create document and generate a correct command', async () => {
10
- const atv = new ATV({}, 'stg')
11
- const electronillBillRaw = parseElectronicBillXML(expectXml)
12
- const { command, extraData } = await atv.createReceptorMessage({
13
- aceptationState: AceptationStates.ACCEPTED,
14
- aceptationDetailMessage: 'Accepted',
15
- clave: electronillBillRaw.Clave,
16
- emitterIdentifier: electronillBillRaw.Emisor.Identificacion.Numero,
17
- emitterIdentifierType: electronillBillRaw.Emisor.Identificacion.Tipo,
18
- receptorIdentifier: electronillBillRaw.Receptor.Identificacion.Numero,
19
- receptorIdentifierType: electronillBillRaw.Receptor.Identificacion.Tipo,
20
- documentIssueDate: new Date(electronillBillRaw.FechaEmision),
21
- activityCode: electronillBillRaw.CodigoActividad,
22
- taxCondition: electronillBillRaw.CondicionVenta,
23
- totalTaxes: electronillBillRaw.ResumenFactura.TotalImpuesto,
24
- totalSale: electronillBillRaw.ResumenFactura.TotalVenta,
25
- branch: '01',
26
- terminal: '01',
27
- consecutive: '01',
28
- token: 'fake-token',
29
- signatureOptions: {
30
- buffer: fakePem,
31
- password: fakePassword
32
- }
33
- })
34
- expect(command.data).toMatchObject({
35
- clave: '50601042400020692014200100001010000000002100000001',
36
- fecha: '2024-04-01T00:00:00.000Z',
37
- emisor: { tipoIdentificacion: electronillBillRaw.Emisor.Identificacion.Tipo, numeroIdentificacion: electronillBillRaw.Emisor.Identificacion.Numero },
38
- receptor: { tipoIdentificacion: electronillBillRaw.Receptor.Identificacion.Tipo, numeroIdentificacion: electronillBillRaw.Receptor.Identificacion.Numero }
39
- });
40
- });
41
- })
9
+ it('should create document and generate a correct command', async () => {
10
+ const atv = new ATV({}, 'stg')
11
+ const electronillBillRaw = parseElectronicBillXML(expectXml)
12
+ const { command } = await atv.createReceptorMessage({
13
+ aceptationState: AceptationStates.ACCEPTED,
14
+ aceptationDetailMessage: 'Accepted',
15
+ clave: electronillBillRaw.Clave,
16
+ emitterIdentifier: electronillBillRaw.Emisor.Identificacion.Numero,
17
+ emitterIdentifierType: electronillBillRaw.Emisor.Identificacion.Tipo,
18
+ // @ts-expect-error for testing purposes
19
+ receptorIdentifier: electronillBillRaw.Receptor.Identificacion.Numero,
20
+ // @ts-expect-error for testing purposes
21
+ receptorIdentifierType: electronillBillRaw.Receptor.Identificacion.Tipo,
22
+ // @ts-expect-error for testing purposes
23
+ documentIssueDate: new Date(electronillBillRaw.FechaEmision),
24
+ activityCode: electronillBillRaw.CodigoActividadEmisor,
25
+ // @ts-expect-error for testing purposes
26
+ taxCondition: electronillBillRaw.CondicionVenta,
27
+ totalTaxes: electronillBillRaw.ResumenFactura.TotalImpuesto,
28
+ totalSale: electronillBillRaw.ResumenFactura.TotalVenta,
29
+ branch: '01',
30
+ terminal: '01',
31
+ consecutive: '01',
32
+ token: 'fake-token',
33
+ signatureOptions: {
34
+ buffer: fakePem,
35
+ password: fakePassword
36
+ }
37
+ })
38
+ expect(command.data).toMatchObject({
39
+ clave: '50601042400020692014200100001010000000002100000001',
40
+ fecha: '2024-04-01T00:00:00.000Z',
41
+ emisor: { tipoIdentificacion: electronillBillRaw.Emisor.Identificacion.Tipo, numeroIdentificacion: electronillBillRaw.Emisor.Identificacion.Numero },
42
+ // @ts-expect-error for testing purposes
43
+ receptor: { tipoIdentificacion: electronillBillRaw.Receptor.Identificacion.Tipo, numeroIdentificacion: electronillBillRaw.Receptor.Identificacion.Numero }
44
+ })
45
+ })
46
+ })
@@ -1,6 +1,6 @@
1
1
  import { PersonProps } from '@src/ATV/core/Person';
2
- import { DocumentNames } from '@src/ATV/core/documentNames.types';
3
2
  import { Document } from '@src/ATV/core/Document';
3
+ import { DocumentNames } from '@src/ATV/core/DocumentType';
4
4
  import { ReferenceInformationProps } from './ReferenceInformation';
5
5
  import { ReceptorMessageProps } from './types';
6
6
  type ReferenceInfoInput = ReferenceInformationProps;
@@ -23,9 +23,8 @@ type OrderInput = {
23
23
  tax?: TaxInput;
24
24
  totalOrderLineAmount?: number;
25
25
  };
26
- type DocumentInput = {
26
+ type DocumentInputBase = {
27
27
  emitter: PersonInput;
28
- receiver: PersonInput;
29
28
  branch: string;
30
29
  terminal: string;
31
30
  documentName: DocumentNames;
@@ -40,6 +39,15 @@ type DocumentInput = {
40
39
  conditionSale: string;
41
40
  paymentMethod: string;
42
41
  };
42
+ type DocumentInputTiquete = DocumentInputBase & {
43
+ documentName: 'TiqueteElectronico';
44
+ receiver?: PersonInput;
45
+ };
46
+ export type DocumentInputWithReceiver = DocumentInputBase & {
47
+ documentName: Exclude<DocumentNames, 'TiqueteElectronico'>;
48
+ receiver: PersonInput;
49
+ };
50
+ type DocumentInput = DocumentInputTiquete | DocumentInputWithReceiver;
43
51
  export type CreateDocumentInput = {
44
52
  document: DocumentInput;
45
53
  token: string;
@@ -21,10 +21,10 @@ class CreateDocFactory {
21
21
  providerId: document.providerId,
22
22
  issueDate: new Date(),
23
23
  emitter: Person_1.Person.create(document.emitter),
24
- receiver: Person_1.Person.create(document.receiver),
24
+ receiver: document.receiver ? Person_1.Person.create(document.receiver) : undefined,
25
25
  conditionSale: document.conditionSale,
26
26
  paymentMethod: document.paymentMethod,
27
- referenceInformation: document.referenceInfo ? ReferenceInformation_1.ReferenceInformation.create(document.referenceInfo) : undefined,
27
+ referenceInformation: document.referenceInfo ? ReferenceInformation_1.ReferenceInformation.create(document.referenceInfo) : undefined
28
28
  });
29
29
  }
30
30
  createOrderLines(dto) {
@@ -57,7 +57,7 @@ class CreateDocFactory {
57
57
  countryCode: dto.countryCode,
58
58
  docKeyType: docType.value,
59
59
  emitterIdentifier: dto.emitter.identifier.id,
60
- identifierType: dto.emitter.identifier.type, // TODO add default
60
+ identifierType: dto.emitter.identifier.type || '01',
61
61
  securityCode: dto.securityCode,
62
62
  terminal: dto.terminal
63
63
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CreateDocFactory.js","sourceRoot":"","sources":["../../../../src/ATV/core/CreateDocFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateDocFactory.js","sourceRoot":"","sources":["../../../../src/ATV/core/CreateDocFactory.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export type InvoiceProps = {
10
10
  fullConsecutive: FullConsecutive;
11
11
  issueDate: Date;
12
12
  emitter: Person;
13
- receiver: Person;
13
+ receiver?: Person;
14
14
  orderLines: OrderLine[];
15
15
  conditionSale?: string;
16
16
  deadlineCredit?: string;
@@ -34,7 +34,7 @@ export declare class Document {
34
34
  get activityCode(): string;
35
35
  get issueDate(): Date;
36
36
  get emitter(): Person;
37
- get receiver(): Person;
37
+ get receiver(): Person | undefined;
38
38
  get orderLines(): OrderLine[];
39
39
  get conditionSale(): string | undefined;
40
40
  get deadlineCredit(): string | undefined;
@@ -51,7 +51,7 @@ class Document {
51
51
  const summary = {
52
52
  currency: {
53
53
  code: 'CRC',
54
- exchangeRate: '585.69'
54
+ exchangeRate: '1'
55
55
  },
56
56
  totalExemptServices: 0,
57
57
  totalEncumberedServices: servicesLineSumResult.totalAmount,
@@ -64,7 +64,14 @@ class Document {
64
64
  totalExemptMerchandise: 0,
65
65
  totalExempt: 0,
66
66
  totalNetSale: orderLineSumResult.totalAmount,
67
- totalEncumbered: orderLineSumResult.totalAmount
67
+ totalEncumbered: orderLineSumResult.totalAmount,
68
+ totalTaxBreakdown: [
69
+ {
70
+ code: '01', // Static value for testing
71
+ taxRateCode: '08', // Static value for testing
72
+ totalTaxAmount: 100.00 // Static value for testing
73
+ }
74
+ ]
68
75
  };
69
76
  const totalSale = summary.totalEncumbered + summary.totalExempt + summary.totalExonerated;
70
77
  return Object.assign(Object.assign({}, summary), { totalSale, totalNetSale: totalSale - summary.totalDiscounts, totalVoucher: summary.totalNetSale + summary.totalTaxed });
@@ -78,25 +85,28 @@ class Document {
78
85
  }
79
86
  sumServicesLines() {
80
87
  return this.orderLines.filter(this.isAService).reduce((previousValue, currentValue) => {
88
+ var _a, _b;
81
89
  return {
82
90
  totalAmount: previousValue.totalAmount + currentValue.totalAmount,
83
- totalTaxes: previousValue.totalTaxes + currentValue.tax.amount
91
+ totalTaxes: previousValue.totalTaxes + ((_b = (_a = currentValue.tax) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : 0)
84
92
  };
85
93
  }, { totalAmount: 0, totalTaxes: 0 });
86
94
  }
87
95
  sumMerchandiseLines() {
88
96
  return this.orderLines.filter((ol) => !this.isAService(ol)).reduce((previousValue, currentValue) => {
97
+ var _a, _b;
89
98
  return {
90
99
  totalAmount: previousValue.totalAmount + currentValue.totalAmount,
91
- totalTaxes: previousValue.totalTaxes + currentValue.tax.amount
100
+ totalTaxes: previousValue.totalTaxes + ((_b = (_a = currentValue.tax) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : 0)
92
101
  };
93
102
  }, { totalAmount: 0, totalTaxes: 0 });
94
103
  }
95
104
  sumOrderLines() {
96
105
  return this.orderLines.reduce((previousValue, currentValue) => {
106
+ var _a, _b;
97
107
  return {
98
108
  totalAmount: previousValue.totalAmount + currentValue.totalAmount,
99
- totalTaxes: previousValue.totalTaxes + currentValue.tax.amount
109
+ totalTaxes: previousValue.totalTaxes + ((_b = (_a = currentValue.tax) === null || _a === void 0 ? void 0 : _a.amount) !== null && _b !== void 0 ? _b : 0)
100
110
  };
101
111
  }, { totalAmount: 0, totalTaxes: 0 });
102
112
  }