@facturacr/atv-sdk 0.0.7-beta → 0.0.9-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/.github/workflows/ci.yml +7 -4
- package/__tests__/stubs/commonExpectedXml.xml +94 -0
- package/__tests__/stubs/createDocument.stub.ts +80 -0
- package/__tests__/tests/ATV/__snapshots__/index.test.ts.snap +3 -0
- package/__tests__/tests/ATV/index.test.ts +50 -0
- package/doc/atv-structures/4.3/ANEXOS Y ESTRUCTURAS_V4.3.pdf +0 -0
- package/doc/atv-structures/4.3/API Ministerio de Hacienda /342/200/223 Dropbox Paper.pdf +0 -0
- package/doc/atv-structures/4.3/MensajeHacienda_V4.3.xsd.xml +179 -0
- package/doc/atv-structures/4.3/MensajeReceptor_V4.3.xsd.xml +163 -0
- package/doc/atv-structures/4.3/NotaCreditoElectronica_V4.3.xsd.xml +1804 -0
- package/doc/atv-structures/4.3/NotaDebitoElectronica_V4.3.xsd.xml +1804 -0
- package/examples/confirmXML.ts +1 -1
- package/examples/createAndSend.ts +27 -32
- package/examples/getToken.ts +3 -2
- package/jest-setup.js +5 -0
- package/jest.config.js +6 -5
- package/package.json +18 -14
- package/src/ATV/core/Clave.ts +41 -0
- package/src/ATV/core/Document.ts +123 -0
- package/src/ATV/core/DocumentType.ts +23 -0
- package/src/ATV/core/FullConsecutive.ts +29 -0
- package/src/ATV/core/OrderLine.ts +95 -0
- package/src/ATV/core/Person.ts +68 -0
- package/src/ATV/core/Summary.type.ts +20 -0
- package/src/ATV/core/documentNames.types.ts +5 -0
- package/src/ATV/index.ts +101 -0
- package/src/ATV/mappers/billDocToAtv.ts +103 -0
- package/src/ATV/types.ts +37 -0
- package/src/ATV/useCases/createDocument/index.ts +137 -0
- package/src/ATV/useCases/createDocument/types.ts +79 -0
- package/src/helpers/comprobantes.ts +1 -1
- package/src/lib/genJSON/confirmXML.ts +1 -1
- package/src/lib/genJSON/index.ts +2 -2
- package/src/lib/genXML/xmlConfig.ts +2 -2
- package/src/services/getToken/GetToken.ts +2 -2
- package/src/services/send/index.ts +1 -1
- package/src/types/facturaInterfaces.d.ts +27 -20
- package/tools/xsdToJsonSchema.ts +2 -2
- package/__tests__/tests/electronicBill.test.ts +0 -28
- package/dist/__tests__/stubs/frontendRequest.stub.d.ts +0 -3
- package/dist/__tests__/stubs/frontendRequest.stub.js +0 -61
- package/dist/__tests__/stubs/frontendRequest.stub.js.map +0 -1
- package/dist/__tests__/stubs/token.stub.d.ts +0 -17
- package/dist/__tests__/stubs/token.stub.js +0 -21
- package/dist/__tests__/stubs/token.stub.js.map +0 -1
- package/dist/__tests__/tests/electronicBill.test.d.ts +0 -1
- package/dist/__tests__/tests/electronicBill.test.js +0 -38
- package/dist/__tests__/tests/electronicBill.test.js.map +0 -1
- package/dist/__tests__/tests/getClave.test.d.ts +0 -1
- package/dist/__tests__/tests/getClave.test.js +0 -15
- package/dist/__tests__/tests/getClave.test.js.map +0 -1
- package/dist/__tests__/tests/getToken.test.d.ts +0 -0
- package/dist/__tests__/tests/getToken.test.js +0 -28
- package/dist/__tests__/tests/getToken.test.js.map +0 -1
- package/dist/__tests__/tests/lib/getClave.test.d.ts +0 -1
- package/dist/__tests__/tests/lib/getClave.test.js +0 -15
- package/dist/__tests__/tests/lib/getClave.test.js.map +0 -1
- package/dist/__tests__/tests/services/getToken.test.d.ts +0 -1
- package/dist/__tests__/tests/services/getToken.test.js +0 -27
- package/dist/__tests__/tests/services/getToken.test.js.map +0 -1
- package/dist/examples/confirmXML.d.ts +0 -1
- package/dist/examples/confirmXML.js +0 -89
- package/dist/examples/confirmXML.js.map +0 -1
- package/dist/examples/consultXML.d.ts +0 -1
- package/dist/examples/consultXML.js +0 -55
- package/dist/examples/consultXML.js.map +0 -1
- package/dist/examples/createAndSend.d.ts +0 -1
- package/dist/examples/createAndSend.js +0 -77
- package/dist/examples/createAndSend.js.map +0 -1
- package/dist/examples/createCreditNote.d.ts +0 -1
- package/dist/examples/createCreditNote.js +0 -52
- package/dist/examples/createCreditNote.js.map +0 -1
- package/dist/examples/createDebitNote.d.ts +0 -1
- package/dist/examples/createDebitNote.js +0 -52
- package/dist/examples/createDebitNote.js.map +0 -1
- package/dist/examples/genBasicXML.d.ts +0 -1
- package/dist/examples/genBasicXML.js +0 -44
- package/dist/examples/genBasicXML.js.map +0 -1
- package/dist/examples/getClave.d.ts +0 -1
- package/dist/examples/getClave.js +0 -12
- package/dist/examples/getClave.js.map +0 -1
- package/dist/examples/getToken.d.ts +0 -1
- package/dist/examples/getToken.js +0 -16
- package/dist/examples/getToken.js.map +0 -1
- package/dist/src/ATV.d.ts +0 -17
- package/dist/src/ATV.js +0 -16
- package/dist/src/ATV.js.map +0 -1
- package/dist/src/confirmXML.d.ts +0 -8
- package/dist/src/confirmXML.js +0 -44
- package/dist/src/confirmXML.js.map +0 -1
- package/dist/src/creditNote.d.ts +0 -14
- package/dist/src/creditNote.js +0 -77
- package/dist/src/creditNote.js.map +0 -1
- package/dist/src/data/codigoMoneda.d.ts +0 -1
- package/dist/src/data/codigoMoneda.js +0 -184
- package/dist/src/data/codigoMoneda.js.map +0 -1
- package/dist/src/data/exoneracion.d.ts +0 -1
- package/dist/src/data/exoneracion.js +0 -15
- package/dist/src/data/exoneracion.js.map +0 -1
- package/dist/src/data/impuestos.d.ts +0 -25
- package/dist/src/data/impuestos.js +0 -51
- package/dist/src/data/impuestos.js.map +0 -1
- package/dist/src/data/tipoCedula.d.ts +0 -7
- package/dist/src/data/tipoCedula.js +0 -17
- package/dist/src/data/tipoCedula.js.map +0 -1
- package/dist/src/data/tipoDocumento.d.ts +0 -26
- package/dist/src/data/tipoDocumento.js +0 -30
- package/dist/src/data/tipoDocumento.js.map +0 -1
- package/dist/src/data/unidadesMedida.d.ts +0 -5
- package/dist/src/data/unidadesMedida.js +0 -141
- package/dist/src/data/unidadesMedida.js.map +0 -1
- package/dist/src/debitNote.d.ts +0 -14
- package/dist/src/debitNote.js +0 -77
- package/dist/src/debitNote.js.map +0 -1
- package/dist/src/electronicBill.d.ts +0 -3
- package/dist/src/electronicBill.js +0 -61
- package/dist/src/electronicBill.js.map +0 -1
- package/dist/src/helpers/comprobantes.d.ts +0 -7
- package/dist/src/helpers/comprobantes.js +0 -92
- package/dist/src/helpers/comprobantes.js.map +0 -1
- package/dist/src/index.d.ts +0 -8
- package/dist/src/index.js.map +0 -1
- package/dist/src/lib/genClave/index.d.ts +0 -9
- package/dist/src/lib/genClave/index.js +0 -119
- package/dist/src/lib/genClave/index.js.map +0 -1
- package/dist/src/lib/genJSON/confirmXML.d.ts +0 -7
- package/dist/src/lib/genJSON/confirmXML.js +0 -46
- package/dist/src/lib/genJSON/confirmXML.js.map +0 -1
- package/dist/src/lib/genJSON/index.d.ts +0 -3
- package/dist/src/lib/genJSON/index.js +0 -133
- package/dist/src/lib/genJSON/index.js.map +0 -1
- package/dist/src/lib/genXML/index.d.ts +0 -7
- package/dist/src/lib/genXML/index.js +0 -51
- package/dist/src/lib/genXML/index.js.map +0 -1
- package/dist/src/lib/genXML/sigXML/genKeysAndCert.d.ts +0 -6
- package/dist/src/lib/genXML/sigXML/genKeysAndCert.js +0 -72
- package/dist/src/lib/genXML/sigXML/genKeysAndCert.js.map +0 -1
- package/dist/src/lib/genXML/sigXML/index.d.ts +0 -1
- package/dist/src/lib/genXML/sigXML/index.js +0 -86
- package/dist/src/lib/genXML/sigXML/index.js.map +0 -1
- package/dist/src/lib/genXML/xmlConfig.d.ts +0 -55
- package/dist/src/lib/genXML/xmlConfig.js +0 -36
- package/dist/src/lib/genXML/xmlConfig.js.map +0 -1
- package/dist/src/services/getToken/GetToken.d.ts +0 -8
- package/dist/src/services/getToken/GetToken.js +0 -66
- package/dist/src/services/getToken/GetToken.js.map +0 -1
- package/dist/src/services/getToken/__tests__/GetToken.test.d.ts +0 -1
- package/dist/src/services/getToken/__tests__/GetToken.test.js +0 -86
- package/dist/src/services/getToken/__tests__/GetToken.test.js.map +0 -1
- package/dist/src/services/getToken/index.d.ts +0 -3
- package/dist/src/services/getToken/index.js +0 -22
- package/dist/src/services/getToken/index.js.map +0 -1
- package/dist/src/services/getToken/types.d.ts +0 -27
- package/dist/src/services/getToken/types.js +0 -3
- package/dist/src/services/getToken/types.js.map +0 -1
- package/dist/src/services/send/index.d.ts +0 -2
- package/dist/src/services/send/index.js +0 -40
- package/dist/src/services/send/index.js.map +0 -1
- package/dist/src/types/xml/notaDeCredito.d.ts +0 -21
- package/dist/src/types/xml/notaDeCredito.js +0 -3
- package/dist/src/types/xml/notaDeCredito.js.map +0 -1
- package/dist/src/types/xml/notaDeDebito.d.ts +0 -21
- package/dist/src/types/xml/notaDeDebito.js +0 -3
- package/dist/src/types/xml/notaDeDebito.js.map +0 -1
- package/src/ATV.ts +0 -28
- /package/{atv-structures → doc/atv-structures}/4.3/FacturaElectronicaExportacion_V4.3.xsd.xml +0 -0
- /package/{atv-structures → doc/atv-structures}/4.3/FacturaElectronica_V4.3.xsd.xml +0 -0
package/.github/workflows/ci.yml
CHANGED
|
@@ -10,7 +10,7 @@ jobs:
|
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
11
|
steps:
|
|
12
12
|
- name: Check out repository code
|
|
13
|
-
uses: actions/checkout@
|
|
13
|
+
uses: actions/checkout@v3
|
|
14
14
|
- name: Install modules
|
|
15
15
|
run: yarn
|
|
16
16
|
- name: Run testing
|
|
@@ -19,9 +19,9 @@ jobs:
|
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
strategy:
|
|
21
21
|
matrix:
|
|
22
|
-
node: [
|
|
22
|
+
node: [18, 20]
|
|
23
23
|
steps:
|
|
24
|
-
- uses: actions/checkout@
|
|
24
|
+
- uses: actions/checkout@v3
|
|
25
25
|
- uses: actions/setup-node@v1
|
|
26
26
|
with:
|
|
27
27
|
node-version: ${{ matrix.node }}
|
|
@@ -35,11 +35,14 @@ jobs:
|
|
|
35
35
|
fail_ci_if_error: false
|
|
36
36
|
run-on-window:
|
|
37
37
|
runs-on: windows-latest
|
|
38
|
+
strategy:
|
|
39
|
+
matrix:
|
|
40
|
+
node: [18, 20]
|
|
38
41
|
steps:
|
|
39
42
|
- uses: actions/checkout@v2
|
|
40
43
|
- uses: actions/setup-node@v1
|
|
41
44
|
with:
|
|
42
|
-
node-version:
|
|
45
|
+
node-version: ${{ matrix.node }}
|
|
43
46
|
- run: yarn
|
|
44
47
|
- run: yarn build
|
|
45
48
|
- name: coverage
|
|
@@ -0,0 +1,94 @@
|
|
|
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" xsi:schemaLocation="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/facturaElectronica https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/FacturaElectronica_V4.3.xsd">
|
|
3
|
+
<Clave>50601042400020692014200100001010000000002100000001</Clave>
|
|
4
|
+
<CodigoActividad>000004</CodigoActividad>
|
|
5
|
+
<NumeroConsecutivo>00100001010000000002</NumeroConsecutivo>
|
|
6
|
+
<FechaEmision>2024-04-01T00:00:00.000Z</FechaEmision>
|
|
7
|
+
<Emisor>
|
|
8
|
+
<Nombre>Nombre Receptor</Nombre>
|
|
9
|
+
<Identificacion>
|
|
10
|
+
<Tipo>01</Tipo>
|
|
11
|
+
<Numero>206920142</Numero>
|
|
12
|
+
</Identificacion>
|
|
13
|
+
<NombreComercial>xyz</NombreComercial>
|
|
14
|
+
<Ubicacion>
|
|
15
|
+
<Provincia>1</Provincia>
|
|
16
|
+
<Canton>01</Canton>
|
|
17
|
+
<Distrito>01</Distrito>
|
|
18
|
+
<Barrio>01</Barrio>
|
|
19
|
+
<OtrasSenas>Señas xyz</OtrasSenas>
|
|
20
|
+
</Ubicacion>
|
|
21
|
+
<Telefono>
|
|
22
|
+
<CodigoPais>506</CodigoPais>
|
|
23
|
+
<NumTelefono>12341234</NumTelefono>
|
|
24
|
+
</Telefono>
|
|
25
|
+
<Fax>
|
|
26
|
+
<CodigoPais>506</CodigoPais>
|
|
27
|
+
<NumTelefono>12341234</NumTelefono>
|
|
28
|
+
</Fax>
|
|
29
|
+
<CorreoElectronico>test@test.com</CorreoElectronico>
|
|
30
|
+
</Emisor>
|
|
31
|
+
<Receptor>
|
|
32
|
+
<Nombre>SRL</Nombre>
|
|
33
|
+
<Identificacion>
|
|
34
|
+
<Tipo>02</Tipo>
|
|
35
|
+
<Numero>3102759157</Numero>
|
|
36
|
+
</Identificacion>
|
|
37
|
+
<NombreComercial>CIENCIA DEL SABOR</NombreComercial>
|
|
38
|
+
<Ubicacion>
|
|
39
|
+
<Provincia>2</Provincia>
|
|
40
|
+
<Canton>06</Canton>
|
|
41
|
+
<Distrito>04</Distrito>
|
|
42
|
+
<Barrio>06</Barrio>
|
|
43
|
+
<OtrasSenas>25 norte 500 oeste restaurante El Faro</OtrasSenas>
|
|
44
|
+
</Ubicacion>
|
|
45
|
+
<Telefono>
|
|
46
|
+
<CodigoPais>506</CodigoPais>
|
|
47
|
+
<NumTelefono>80808080</NumTelefono>
|
|
48
|
+
</Telefono>
|
|
49
|
+
<Fax>
|
|
50
|
+
<CodigoPais>506</CodigoPais>
|
|
51
|
+
<NumTelefono>80808080</NumTelefono>
|
|
52
|
+
</Fax>
|
|
53
|
+
<CorreoElectronico>cienciadelsabor@gmail.com</CorreoElectronico>
|
|
54
|
+
</Receptor>
|
|
55
|
+
<CondicionVenta>01</CondicionVenta>
|
|
56
|
+
<MedioPago>01</MedioPago>
|
|
57
|
+
<DetalleServicio>
|
|
58
|
+
<LineaDetalle>
|
|
59
|
+
<NumeroLinea>1</NumeroLinea>
|
|
60
|
+
<Codigo>7113301000000</Codigo>
|
|
61
|
+
<Cantidad>1</Cantidad>
|
|
62
|
+
<UnidadMedida>Unid</UnidadMedida>
|
|
63
|
+
<Detalle>detalle</Detalle>
|
|
64
|
+
<PrecioUnitario>10</PrecioUnitario>
|
|
65
|
+
<MontoTotal>10</MontoTotal>
|
|
66
|
+
<SubTotal>10</SubTotal>
|
|
67
|
+
<Impuesto>
|
|
68
|
+
<Codigo>01</Codigo>
|
|
69
|
+
<CodigoTarifa>08</CodigoTarifa>
|
|
70
|
+
<Tarifa>13</Tarifa>
|
|
71
|
+
<Monto>1.3</Monto>
|
|
72
|
+
</Impuesto>
|
|
73
|
+
<MontoTotalLinea>11.3</MontoTotalLinea>
|
|
74
|
+
</LineaDetalle>
|
|
75
|
+
</DetalleServicio>
|
|
76
|
+
<ResumenFactura>
|
|
77
|
+
<CodigoTipoMoneda>
|
|
78
|
+
<CodigoMoneda>CRC</CodigoMoneda>
|
|
79
|
+
<TipoCambio>585.69</TipoCambio>
|
|
80
|
+
</CodigoTipoMoneda>
|
|
81
|
+
<TotalServGravados>0</TotalServGravados>
|
|
82
|
+
<TotalServExentos>0</TotalServExentos>
|
|
83
|
+
<TotalMercanciasGravadas>10</TotalMercanciasGravadas>
|
|
84
|
+
<TotalMercanciasExentas>0</TotalMercanciasExentas>
|
|
85
|
+
<TotalGravado>10</TotalGravado>
|
|
86
|
+
<TotalExento>0</TotalExento>
|
|
87
|
+
<TotalExonerado>0</TotalExonerado>
|
|
88
|
+
<TotalVenta>10</TotalVenta>
|
|
89
|
+
<TotalDescuentos>0</TotalDescuentos>
|
|
90
|
+
<TotalVentaNeta>10</TotalVentaNeta>
|
|
91
|
+
<TotalImpuesto>1.3</TotalImpuesto>
|
|
92
|
+
<TotalComprobante>11.3</TotalComprobante>
|
|
93
|
+
</ResumenFactura>
|
|
94
|
+
</FacturaElectronica>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { CreateDocumentInput } from '@src/ATV/useCases/createDocument/types'
|
|
2
|
+
|
|
3
|
+
const taxStub: CreateDocumentInput['document']['orderLines'][0]['tax'] = {
|
|
4
|
+
code: '01',
|
|
5
|
+
rateCode: '08',
|
|
6
|
+
rate: 13
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const orderLines: CreateDocumentInput['document']['orderLines'] = [{
|
|
10
|
+
code: '7113301000000',
|
|
11
|
+
quantity: 1,
|
|
12
|
+
measureUnit: 'Unid',
|
|
13
|
+
detail: 'detalle',
|
|
14
|
+
unitaryPrice: 10,
|
|
15
|
+
tax: taxStub
|
|
16
|
+
}]
|
|
17
|
+
|
|
18
|
+
const receiverStub: CreateDocumentInput['document']['emitter'] = {
|
|
19
|
+
fullName: 'SRL',
|
|
20
|
+
commercialName: 'CIENCIA DEL SABOR',
|
|
21
|
+
identifier: {
|
|
22
|
+
type: '02',
|
|
23
|
+
id: '3102759157'
|
|
24
|
+
},
|
|
25
|
+
location: {
|
|
26
|
+
province: '2',
|
|
27
|
+
canton: '06',
|
|
28
|
+
district: '04',
|
|
29
|
+
neighborhood: '06',
|
|
30
|
+
details: '25 norte 500 oeste restaurante El Faro'
|
|
31
|
+
},
|
|
32
|
+
phone: {
|
|
33
|
+
countryCode: '506',
|
|
34
|
+
number: '80808080'
|
|
35
|
+
},
|
|
36
|
+
email: 'cienciadelsabor@gmail.com',
|
|
37
|
+
fax: {
|
|
38
|
+
countryCode: '506',
|
|
39
|
+
number: '80808080'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const emitterStub: CreateDocumentInput['document']['receiver'] = {
|
|
44
|
+
fullName: 'Nombre Receptor',
|
|
45
|
+
commercialName: 'xyz',
|
|
46
|
+
identifier: {
|
|
47
|
+
type: '01',
|
|
48
|
+
id: '206920142'
|
|
49
|
+
},
|
|
50
|
+
location: {
|
|
51
|
+
province: '1',
|
|
52
|
+
canton: '1',
|
|
53
|
+
district: '1',
|
|
54
|
+
neighborhood: '1',
|
|
55
|
+
details: 'Señas xyz'
|
|
56
|
+
},
|
|
57
|
+
email: 'test@test.com',
|
|
58
|
+
fax: {
|
|
59
|
+
countryCode: '506',
|
|
60
|
+
number: '12341234'
|
|
61
|
+
},
|
|
62
|
+
phone: {
|
|
63
|
+
countryCode: '506',
|
|
64
|
+
number: '12341234'
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export const createDocumentInputStub: CreateDocumentInput['document'] = {
|
|
69
|
+
consecutiveIdentifier: '2',
|
|
70
|
+
activityCode: '4',
|
|
71
|
+
documentName: 'FacturaElectronica',
|
|
72
|
+
branch: '001',
|
|
73
|
+
terminal: '00001',
|
|
74
|
+
ceSituation: '1',
|
|
75
|
+
countryCode: '506',
|
|
76
|
+
emitter: emitterStub,
|
|
77
|
+
receiver: receiverStub,
|
|
78
|
+
orderLines,
|
|
79
|
+
securityCode: '00000001'
|
|
80
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Create Document (Invoice) should create document and generate a correct command 1`] = `"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RmFjdHVyYUVsZWN0cm9uaWNhIHhtbG5zPSJodHRwczovL2Nkbi5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IveG1sLXNjaGVtYXMvdjQuMy9mYWN0dXJhRWxlY3Ryb25pY2EiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHBzOi8vY2RuLmNvbXByb2JhbnRlc2VsZWN0cm9uaWNvcy5nby5jci94bWwtc2NoZW1hcy92NC4zL2ZhY3R1cmFFbGVjdHJvbmljYSBodHRwczovL3d3dy5oYWNpZW5kYS5nby5jci9BVFYvQ29tcHJvYmFudGVFbGVjdHJvbmljby9kb2NzL2VzcXVlbWFzLzIwMTYvdjQuMy9GYWN0dXJhRWxlY3Ryb25pY2FfVjQuMy54c2QiPjxDbGF2ZT41MDYwMTA0MjQwMDAyMDY5MjAxNDIwMDEwMDAwMTAxMDAwMDAwMDAwMjEwMDAwMDAwMTwvQ2xhdmU+PENvZGlnb0FjdGl2aWRhZD4wMDAwMDQ8L0NvZGlnb0FjdGl2aWRhZD48TnVtZXJvQ29uc2VjdXRpdm8+MDAxMDAwMDEwMTAwMDAwMDAwMDI8L051bWVyb0NvbnNlY3V0aXZvPjxGZWNoYUVtaXNpb24+MjAyNC0wNC0wMVQwMDowMDowMC4wMDBaPC9GZWNoYUVtaXNpb24+PEVtaXNvcj48Tm9tYnJlPk5vbWJyZSBSZWNlcHRvcjwvTm9tYnJlPjxJZGVudGlmaWNhY2lvbj48VGlwbz4wMTwvVGlwbz48TnVtZXJvPjIwNjkyMDE0MjwvTnVtZXJvPjwvSWRlbnRpZmljYWNpb24+PE5vbWJyZUNvbWVyY2lhbD54eXo8L05vbWJyZUNvbWVyY2lhbD48VWJpY2FjaW9uPjxQcm92aW5jaWE+MTwvUHJvdmluY2lhPjxDYW50b24+MDE8L0NhbnRvbj48RGlzdHJpdG8+MDE8L0Rpc3RyaXRvPjxCYXJyaW8+MDE8L0JhcnJpbz48T3RyYXNTZW5hcz5TZcOxYXMgeHl6PC9PdHJhc1NlbmFzPjwvVWJpY2FjaW9uPjxUZWxlZm9ubz48Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+PE51bVRlbGVmb25vPjEyMzQxMjM0PC9OdW1UZWxlZm9ubz48L1RlbGVmb25vPjxGYXg+PENvZGlnb1BhaXM+NTA2PC9Db2RpZ29QYWlzPjxOdW1UZWxlZm9ubz4xMjM0MTIzNDwvTnVtVGVsZWZvbm8+PC9GYXg+PENvcnJlb0VsZWN0cm9uaWNvPnRlc3RAdGVzdC5jb208L0NvcnJlb0VsZWN0cm9uaWNvPjwvRW1pc29yPjxSZWNlcHRvcj48Tm9tYnJlPlNSTDwvTm9tYnJlPjxJZGVudGlmaWNhY2lvbj48VGlwbz4wMjwvVGlwbz48TnVtZXJvPjMxMDI3NTkxNTc8L051bWVybz48L0lkZW50aWZpY2FjaW9uPjxOb21icmVDb21lcmNpYWw+Q0lFTkNJQSBERUwgU0FCT1I8L05vbWJyZUNvbWVyY2lhbD48VWJpY2FjaW9uPjxQcm92aW5jaWE+MjwvUHJvdmluY2lhPjxDYW50b24+MDY8L0NhbnRvbj48RGlzdHJpdG8+MDQ8L0Rpc3RyaXRvPjxCYXJyaW8+MDY8L0JhcnJpbz48T3RyYXNTZW5hcz4yNSBub3J0ZSA1MDAgb2VzdGUgcmVzdGF1cmFudGUgRWwgRmFybzwvT3RyYXNTZW5hcz48L1ViaWNhY2lvbj48VGVsZWZvbm8+PENvZGlnb1BhaXM+NTA2PC9Db2RpZ29QYWlzPjxOdW1UZWxlZm9ubz44MDgwODA4MDwvTnVtVGVsZWZvbm8+PC9UZWxlZm9ubz48RmF4PjxDb2RpZ29QYWlzPjUwNjwvQ29kaWdvUGFpcz48TnVtVGVsZWZvbm8+ODA4MDgwODA8L051bVRlbGVmb25vPjwvRmF4PjxDb3JyZW9FbGVjdHJvbmljbz5jaWVuY2lhZGVsc2Fib3JAZ21haWwuY29tPC9Db3JyZW9FbGVjdHJvbmljbz48L1JlY2VwdG9yPjxDb25kaWNpb25WZW50YT4wMTwvQ29uZGljaW9uVmVudGE+PE1lZGlvUGFnbz4wMTwvTWVkaW9QYWdvPjxEZXRhbGxlU2VydmljaW8+PExpbmVhRGV0YWxsZT48TnVtZXJvTGluZWE+MTwvTnVtZXJvTGluZWE+PENvZGlnbz43MTEzMzAxMDAwMDAwPC9Db2RpZ28+PENhbnRpZGFkPjE8L0NhbnRpZGFkPjxVbmlkYWRNZWRpZGE+VW5pZDwvVW5pZGFkTWVkaWRhPjxEZXRhbGxlPmRldGFsbGU8L0RldGFsbGU+PFByZWNpb1VuaXRhcmlvPjEwPC9QcmVjaW9Vbml0YXJpbz48TW9udG9Ub3RhbD4xMDwvTW9udG9Ub3RhbD48U3ViVG90YWw+MTA8L1N1YlRvdGFsPjxJbXB1ZXN0bz48Q29kaWdvPjAxPC9Db2RpZ28+PENvZGlnb1RhcmlmYT4wODwvQ29kaWdvVGFyaWZhPjxUYXJpZmE+MTM8L1RhcmlmYT48TW9udG8+MS4zPC9Nb250bz48L0ltcHVlc3RvPjxNb250b1RvdGFsTGluZWE+MTEuMzwvTW9udG9Ub3RhbExpbmVhPjwvTGluZWFEZXRhbGxlPjwvRGV0YWxsZVNlcnZpY2lvPjxSZXN1bWVuRmFjdHVyYT48Q29kaWdvVGlwb01vbmVkYT48Q29kaWdvTW9uZWRhPkNSQzwvQ29kaWdvTW9uZWRhPjxUaXBvQ2FtYmlvPjU4NS42OTwvVGlwb0NhbWJpbz48L0NvZGlnb1RpcG9Nb25lZGE+PFRvdGFsU2VydkdyYXZhZG9zPjA8L1RvdGFsU2VydkdyYXZhZG9zPjxUb3RhbFNlcnZFeGVudG9zPjA8L1RvdGFsU2VydkV4ZW50b3M+PFRvdGFsTWVyY2FuY2lhc0dyYXZhZGFzPjEwPC9Ub3RhbE1lcmNhbmNpYXNHcmF2YWRhcz48VG90YWxNZXJjYW5jaWFzRXhlbnRhcz4wPC9Ub3RhbE1lcmNhbmNpYXNFeGVudGFzPjxUb3RhbEdyYXZhZG8+MTA8L1RvdGFsR3JhdmFkbz48VG90YWxFeGVudG8+MDwvVG90YWxFeGVudG8+PFRvdGFsRXhvbmVyYWRvPjA8L1RvdGFsRXhvbmVyYWRvPjxUb3RhbFZlbnRhPjEwPC9Ub3RhbFZlbnRhPjxUb3RhbERlc2N1ZW50b3M+MDwvVG90YWxEZXNjdWVudG9zPjxUb3RhbFZlbnRhTmV0YT4xMDwvVG90YWxWZW50YU5ldGE+PFRvdGFsSW1wdWVzdG8+MS4zPC9Ub3RhbEltcHVlc3RvPjxUb3RhbENvbXByb2JhbnRlPjExLjM8L1RvdGFsQ29tcHJvYmFudGU+PC9SZXN1bWVuRmFjdHVyYT48L0ZhY3R1cmFFbGVjdHJvbmljYT4="`;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import fs from 'fs'
|
|
2
|
+
import { ATV } from '@src/ATV'
|
|
3
|
+
import 'jest-xml-matcher'
|
|
4
|
+
import { createDocumentInputStub } from '@test/stubs/createDocument.stub'
|
|
5
|
+
const fakePem = fs.readFileSync('__tests__/stubs/dummyKeys/client-identity.p12', 'binary')
|
|
6
|
+
const fakePassword = '1234'
|
|
7
|
+
const expectXml = fs.readFileSync('__tests__/stubs/commonExpectedXml.xml', 'utf-8')
|
|
8
|
+
|
|
9
|
+
describe('Create Document (Invoice)', () => {
|
|
10
|
+
beforeAll(() => {
|
|
11
|
+
jest.useFakeTimers()
|
|
12
|
+
jest.setSystemTime(new Date(2024, 3, 1, 0, 0, 0, 0))
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it('should create document and generate a correct command', async () => {
|
|
16
|
+
const atv = new ATV({}, 'stg')
|
|
17
|
+
const createdDoc = await atv.createDocumentCommand({
|
|
18
|
+
document: createDocumentInputStub,
|
|
19
|
+
token: 'fake-token',
|
|
20
|
+
signatureOptions: {
|
|
21
|
+
buffer: fakePem,
|
|
22
|
+
password: fakePassword
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
expect(createdDoc.command).toMatchObject({
|
|
26
|
+
url: 'https://api-sandbox.comprobanteselectronicos.go.cr/recepcion/v1/recepcion',
|
|
27
|
+
method: 'post'
|
|
28
|
+
})
|
|
29
|
+
expect(createdDoc.command.data).toMatchObject({
|
|
30
|
+
clave: '50601042400020692014200100001010000000002100000001',
|
|
31
|
+
fecha: '2024-04-01T00:00:00.000Z',
|
|
32
|
+
emisor: { tipoIdentificacion: '01', numeroIdentificacion: '206920142' },
|
|
33
|
+
receptor: { tipoIdentificacion: '02', numeroIdentificacion: '3102759157' }
|
|
34
|
+
})
|
|
35
|
+
expect(createdDoc.command.data.comprobanteXml).toBeDefined()
|
|
36
|
+
expect(createdDoc.extraData.xml).toBeDefined()
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('should create document and generate a correct command', async () => {
|
|
40
|
+
const atv = new ATV({}, 'stg')
|
|
41
|
+
// @ts-ignore just for testing
|
|
42
|
+
const createdDoc = await atv.createDocumentCommand({
|
|
43
|
+
document: createDocumentInputStub,
|
|
44
|
+
token: 'fake-token',
|
|
45
|
+
signatureOptions: undefined
|
|
46
|
+
})
|
|
47
|
+
expect(createdDoc.command.data.comprobanteXml).toMatchSnapshot()
|
|
48
|
+
expect(createdDoc.extraData.xml).toEqualXML(expectXml)
|
|
49
|
+
})
|
|
50
|
+
})
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/mensajeHacienda" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/mensajeHacienda" elementFormDefault="qualified" attributeFormDefault="unqualified" version="4.3" vc:minVersion="1.1">
|
|
3
|
+
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../xmldsig-core-schema.xsd"/>
|
|
4
|
+
<xs:element name="MensajeHacienda">
|
|
5
|
+
<xs:annotation>
|
|
6
|
+
<xs:documentation>Mensaje de uso exclusivo por parte de la Direccion General de Tributación</xs:documentation>
|
|
7
|
+
</xs:annotation>
|
|
8
|
+
<xs:complexType>
|
|
9
|
+
<xs:sequence>
|
|
10
|
+
<xs:element name="Clave">
|
|
11
|
+
<xs:annotation>
|
|
12
|
+
<xs:documentation>Clave numérica del comprobante</xs:documentation>
|
|
13
|
+
</xs:annotation>
|
|
14
|
+
<xs:simpleType>
|
|
15
|
+
<xs:restriction base="xs:string">
|
|
16
|
+
<xs:pattern value="\d{50,50}"/>
|
|
17
|
+
</xs:restriction>
|
|
18
|
+
</xs:simpleType>
|
|
19
|
+
</xs:element>
|
|
20
|
+
<xs:element name="NombreEmisor">
|
|
21
|
+
<xs:annotation>
|
|
22
|
+
<xs:documentation>Nombre o razón social del emisor</xs:documentation>
|
|
23
|
+
</xs:annotation>
|
|
24
|
+
<xs:simpleType>
|
|
25
|
+
<xs:restriction base="xs:string">
|
|
26
|
+
<xs:maxLength value="100"/>
|
|
27
|
+
</xs:restriction>
|
|
28
|
+
</xs:simpleType>
|
|
29
|
+
</xs:element>
|
|
30
|
+
<xs:element name="TipoIdentificacionEmisor" nillable="false">
|
|
31
|
+
<xs:annotation>
|
|
32
|
+
<xs:documentation>Tipo de identificacion: 01 Cedula Fisica, 02 Cedula Juridica, 03 DIMEX, 04 NITE</xs:documentation>
|
|
33
|
+
</xs:annotation>
|
|
34
|
+
<xs:simpleType>
|
|
35
|
+
<xs:restriction base="xs:string">
|
|
36
|
+
<xs:enumeration value="01">
|
|
37
|
+
<xs:annotation>
|
|
38
|
+
<xs:documentation>Cedula Fisica</xs:documentation>
|
|
39
|
+
</xs:annotation>
|
|
40
|
+
</xs:enumeration>
|
|
41
|
+
<xs:enumeration value="02">
|
|
42
|
+
<xs:annotation>
|
|
43
|
+
<xs:documentation> Cedula Juridica</xs:documentation>
|
|
44
|
+
</xs:annotation>
|
|
45
|
+
</xs:enumeration>
|
|
46
|
+
<xs:enumeration value="03">
|
|
47
|
+
<xs:annotation>
|
|
48
|
+
<xs:documentation>DIMEX</xs:documentation>
|
|
49
|
+
</xs:annotation>
|
|
50
|
+
</xs:enumeration>
|
|
51
|
+
<xs:enumeration value="04">
|
|
52
|
+
<xs:annotation>
|
|
53
|
+
<xs:documentation>NITE</xs:documentation>
|
|
54
|
+
</xs:annotation>
|
|
55
|
+
</xs:enumeration>
|
|
56
|
+
</xs:restriction>
|
|
57
|
+
</xs:simpleType>
|
|
58
|
+
</xs:element>
|
|
59
|
+
<xs:element name="NumeroCedulaEmisor">
|
|
60
|
+
<xs:annotation>
|
|
61
|
+
<xs:documentation>Número de cédula fisica/jurídica/NITE/DIMEX del emisor</xs:documentation>
|
|
62
|
+
</xs:annotation>
|
|
63
|
+
<xs:simpleType>
|
|
64
|
+
<xs:restriction base="xs:string">
|
|
65
|
+
<xs:maxLength value="12"/>
|
|
66
|
+
<xs:pattern value="\d{9,12}"/>
|
|
67
|
+
</xs:restriction>
|
|
68
|
+
</xs:simpleType>
|
|
69
|
+
</xs:element>
|
|
70
|
+
<xs:element name="NombreReceptor" nillable="false" minOccurs="0">
|
|
71
|
+
<xs:annotation>
|
|
72
|
+
<xs:documentation>Nombre o razon social del receptor</xs:documentation>
|
|
73
|
+
</xs:annotation>
|
|
74
|
+
<xs:simpleType>
|
|
75
|
+
<xs:restriction base="xs:string">
|
|
76
|
+
<xs:maxLength value="100"/>
|
|
77
|
+
<xs:minLength value="0"/>
|
|
78
|
+
</xs:restriction>
|
|
79
|
+
</xs:simpleType>
|
|
80
|
+
</xs:element>
|
|
81
|
+
<xs:element name="TipoIdentificacionReceptor" nillable="true" minOccurs="0">
|
|
82
|
+
<xs:annotation>
|
|
83
|
+
<xs:documentation>Tipo de identificacion: 01 Cedula Fisica, 02 Cedula Juridica, 03 DIMEX, 04 NITE, 05 Otros</xs:documentation>
|
|
84
|
+
</xs:annotation>
|
|
85
|
+
<xs:simpleType>
|
|
86
|
+
<xs:restriction base="xs:string">
|
|
87
|
+
<xs:enumeration value="01">
|
|
88
|
+
<xs:annotation>
|
|
89
|
+
<xs:documentation>Cedula Fisica</xs:documentation>
|
|
90
|
+
</xs:annotation>
|
|
91
|
+
</xs:enumeration>
|
|
92
|
+
<xs:enumeration value="02">
|
|
93
|
+
<xs:annotation>
|
|
94
|
+
<xs:documentation> Cedula Juridica</xs:documentation>
|
|
95
|
+
</xs:annotation>
|
|
96
|
+
</xs:enumeration>
|
|
97
|
+
<xs:enumeration value="03">
|
|
98
|
+
<xs:annotation>
|
|
99
|
+
<xs:documentation>DIMEX</xs:documentation>
|
|
100
|
+
</xs:annotation>
|
|
101
|
+
</xs:enumeration>
|
|
102
|
+
<xs:enumeration value="04">
|
|
103
|
+
<xs:annotation>
|
|
104
|
+
<xs:documentation>NITE</xs:documentation>
|
|
105
|
+
</xs:annotation>
|
|
106
|
+
</xs:enumeration>
|
|
107
|
+
<xs:enumeration value="05">
|
|
108
|
+
<xs:annotation>
|
|
109
|
+
<xs:documentation>Otros</xs:documentation>
|
|
110
|
+
</xs:annotation>
|
|
111
|
+
</xs:enumeration>
|
|
112
|
+
</xs:restriction>
|
|
113
|
+
</xs:simpleType>
|
|
114
|
+
</xs:element>
|
|
115
|
+
<xs:element name="NumeroCedulaReceptor" nillable="true" minOccurs="0">
|
|
116
|
+
<xs:annotation>
|
|
117
|
+
<xs:documentation>Número de cédula fisica/jurídica/NITE/DIMEX del receptor</xs:documentation>
|
|
118
|
+
</xs:annotation>
|
|
119
|
+
<xs:simpleType>
|
|
120
|
+
<xs:restriction base="xs:string">
|
|
121
|
+
<xs:maxLength value="12"/>
|
|
122
|
+
<xs:pattern value="\d{9,12}"/>
|
|
123
|
+
</xs:restriction>
|
|
124
|
+
</xs:simpleType>
|
|
125
|
+
</xs:element>
|
|
126
|
+
<xs:element name="Mensaje">
|
|
127
|
+
<xs:annotation>
|
|
128
|
+
<xs:documentation>Codigo del mensaje de respuesta. 1 aceptado, 3 rechazado</xs:documentation>
|
|
129
|
+
</xs:annotation>
|
|
130
|
+
<xs:simpleType>
|
|
131
|
+
<xs:restriction base="xs:integer">
|
|
132
|
+
<xs:enumeration value="1">
|
|
133
|
+
<xs:annotation>
|
|
134
|
+
<xs:documentation>Aceptado</xs:documentation>
|
|
135
|
+
</xs:annotation>
|
|
136
|
+
</xs:enumeration>
|
|
137
|
+
<xs:enumeration value="3">
|
|
138
|
+
<xs:annotation>
|
|
139
|
+
<xs:documentation>Rechazado</xs:documentation>
|
|
140
|
+
</xs:annotation>
|
|
141
|
+
</xs:enumeration>
|
|
142
|
+
</xs:restriction>
|
|
143
|
+
</xs:simpleType>
|
|
144
|
+
</xs:element>
|
|
145
|
+
<xs:element name="DetalleMensaje">
|
|
146
|
+
<xs:annotation>
|
|
147
|
+
<xs:documentation>Detalle del mensaje</xs:documentation>
|
|
148
|
+
</xs:annotation>
|
|
149
|
+
<xs:simpleType>
|
|
150
|
+
<xs:restriction base="xs:string"/>
|
|
151
|
+
</xs:simpleType>
|
|
152
|
+
</xs:element>
|
|
153
|
+
<xs:element name="MontoTotalImpuesto" minOccurs="0">
|
|
154
|
+
<xs:annotation>
|
|
155
|
+
<xs:documentation>Monto total del impuesto, que es obligatorio si el comprobante tenga impuesto.</xs:documentation>
|
|
156
|
+
</xs:annotation>
|
|
157
|
+
<xs:simpleType>
|
|
158
|
+
<xs:restriction base="xs:decimal">
|
|
159
|
+
<xs:totalDigits value="18"/>
|
|
160
|
+
<xs:fractionDigits value="5"/>
|
|
161
|
+
</xs:restriction>
|
|
162
|
+
</xs:simpleType>
|
|
163
|
+
</xs:element>
|
|
164
|
+
<xs:element name="TotalFactura">
|
|
165
|
+
<xs:annotation>
|
|
166
|
+
<xs:documentation>Monto total de la factura</xs:documentation>
|
|
167
|
+
</xs:annotation>
|
|
168
|
+
<xs:simpleType>
|
|
169
|
+
<xs:restriction base="xs:decimal">
|
|
170
|
+
<xs:totalDigits value="18"/>
|
|
171
|
+
<xs:fractionDigits value="5"/>
|
|
172
|
+
</xs:restriction>
|
|
173
|
+
</xs:simpleType>
|
|
174
|
+
</xs:element>
|
|
175
|
+
<xs:element ref="ds:Signature" minOccurs="1" maxOccurs="1"/>
|
|
176
|
+
</xs:sequence>
|
|
177
|
+
</xs:complexType>
|
|
178
|
+
</xs:element>
|
|
179
|
+
</xs:schema>
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/mensajeReceptor" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.3/mensajeReceptor" elementFormDefault="qualified" attributeFormDefault="unqualified" version="4.3" vc:minVersion="1.1">
|
|
3
|
+
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../xmldsig-core-schema.xsd"/>
|
|
4
|
+
<xs:element name="MensajeReceptor">
|
|
5
|
+
<xs:annotation>
|
|
6
|
+
<xs:documentation>Mensaje de aceptacion o rechazo de los documentos electronicos por parte del obligado tributario</xs:documentation>
|
|
7
|
+
</xs:annotation>
|
|
8
|
+
<xs:complexType>
|
|
9
|
+
<xs:sequence>
|
|
10
|
+
<xs:element name="Clave">
|
|
11
|
+
<xs:annotation>
|
|
12
|
+
<xs:documentation>Clave numérica del comprobante</xs:documentation>
|
|
13
|
+
</xs:annotation>
|
|
14
|
+
<xs:simpleType>
|
|
15
|
+
<xs:restriction base="xs:string">
|
|
16
|
+
<xs:pattern value="\d{50,50}"/>
|
|
17
|
+
</xs:restriction>
|
|
18
|
+
</xs:simpleType>
|
|
19
|
+
</xs:element>
|
|
20
|
+
<xs:element name="NumeroCedulaEmisor">
|
|
21
|
+
<xs:annotation>
|
|
22
|
+
<xs:documentation>Número de cédula fisica/jurídica/NITE/DIMEX del vendedor</xs:documentation>
|
|
23
|
+
</xs:annotation>
|
|
24
|
+
<xs:simpleType>
|
|
25
|
+
<xs:restriction base="xs:string">
|
|
26
|
+
<xs:maxLength value="12"/>
|
|
27
|
+
<xs:pattern value="\d{9,12}"/>
|
|
28
|
+
</xs:restriction>
|
|
29
|
+
</xs:simpleType>
|
|
30
|
+
</xs:element>
|
|
31
|
+
<xs:element name="FechaEmisionDoc" type="xs:dateTime">
|
|
32
|
+
<xs:annotation>
|
|
33
|
+
<xs:documentation>Fecha de emision de la confirmación</xs:documentation>
|
|
34
|
+
</xs:annotation>
|
|
35
|
+
</xs:element>
|
|
36
|
+
<xs:element name="Mensaje">
|
|
37
|
+
<xs:annotation>
|
|
38
|
+
<xs:documentation>Codigo del mensaje de respuesta. 1 aceptado, 2 aceptado parcialmente, 3 rechazado</xs:documentation>
|
|
39
|
+
</xs:annotation>
|
|
40
|
+
<xs:simpleType>
|
|
41
|
+
<xs:restriction base="xs:integer">
|
|
42
|
+
<xs:enumeration value="1">
|
|
43
|
+
<xs:annotation>
|
|
44
|
+
<xs:documentation>Aceptado</xs:documentation>
|
|
45
|
+
</xs:annotation>
|
|
46
|
+
</xs:enumeration>
|
|
47
|
+
<xs:enumeration value="2">
|
|
48
|
+
<xs:annotation>
|
|
49
|
+
<xs:documentation>Aceptado Parcialmente</xs:documentation>
|
|
50
|
+
</xs:annotation>
|
|
51
|
+
</xs:enumeration>
|
|
52
|
+
<xs:enumeration value="3">
|
|
53
|
+
<xs:annotation>
|
|
54
|
+
<xs:documentation>Rechazado</xs:documentation>
|
|
55
|
+
</xs:annotation>
|
|
56
|
+
</xs:enumeration>
|
|
57
|
+
</xs:restriction>
|
|
58
|
+
</xs:simpleType>
|
|
59
|
+
</xs:element>
|
|
60
|
+
<xs:element name="DetalleMensaje" minOccurs="0">
|
|
61
|
+
<xs:annotation>
|
|
62
|
+
<xs:documentation>Detalle del mensaje</xs:documentation>
|
|
63
|
+
</xs:annotation>
|
|
64
|
+
<xs:simpleType>
|
|
65
|
+
<xs:restriction base="xs:string">
|
|
66
|
+
<xs:maxLength value="160"/>
|
|
67
|
+
</xs:restriction>
|
|
68
|
+
</xs:simpleType>
|
|
69
|
+
</xs:element>
|
|
70
|
+
<xs:element name="MontoTotalImpuesto" minOccurs="0">
|
|
71
|
+
<xs:annotation>
|
|
72
|
+
<xs:documentation>Monto total del impuesto, que es obligatorio si el comprobante tenga impuesto.</xs:documentation>
|
|
73
|
+
</xs:annotation>
|
|
74
|
+
<xs:simpleType>
|
|
75
|
+
<xs:restriction base="xs:decimal">
|
|
76
|
+
<xs:totalDigits value="18"/>
|
|
77
|
+
<xs:fractionDigits value="5"/>
|
|
78
|
+
</xs:restriction>
|
|
79
|
+
</xs:simpleType>
|
|
80
|
+
</xs:element>
|
|
81
|
+
<xs:element name="CodigoActividad" minOccurs="0">
|
|
82
|
+
<xs:annotation>
|
|
83
|
+
<xs:documentation>Código Actividad Económica</xs:documentation>
|
|
84
|
+
</xs:annotation>
|
|
85
|
+
<xs:simpleType>
|
|
86
|
+
<xs:restriction base="xs:string">
|
|
87
|
+
<xs:maxLength value="6"/>
|
|
88
|
+
</xs:restriction>
|
|
89
|
+
</xs:simpleType>
|
|
90
|
+
</xs:element>
|
|
91
|
+
<xs:element name="CondicionImpuesto" minOccurs="0">
|
|
92
|
+
<xs:annotation>
|
|
93
|
+
<xs:documentation>Condición del IVA. 01 General Credito IVA, 02 General Crédito parcial del IVA, 03 Bienes de Capital, 04 Gasto corriente no genera crédito, 05 Proporcionalidad</xs:documentation>
|
|
94
|
+
</xs:annotation>
|
|
95
|
+
<xs:simpleType>
|
|
96
|
+
<xs:restriction base="xs:string">
|
|
97
|
+
<xs:enumeration value="01"/>
|
|
98
|
+
<xs:enumeration value="02"/>
|
|
99
|
+
<xs:enumeration value="03"/>
|
|
100
|
+
<xs:enumeration value="04"/>
|
|
101
|
+
<xs:enumeration value="05"/>
|
|
102
|
+
</xs:restriction>
|
|
103
|
+
</xs:simpleType>
|
|
104
|
+
</xs:element>
|
|
105
|
+
<xs:element name="MontoTotalImpuestoAcreditar" type="DecimalDineroType" minOccurs="0">
|
|
106
|
+
<xs:annotation>
|
|
107
|
+
<xs:documentation>Monto del Impuesto acreditar</xs:documentation>
|
|
108
|
+
</xs:annotation>
|
|
109
|
+
</xs:element>
|
|
110
|
+
<xs:element name="MontoTotalDeGastoAplicable" type="DecimalDineroType" minOccurs="0">
|
|
111
|
+
<xs:annotation>
|
|
112
|
+
<xs:documentation>Monto total del gasto a aplicar </xs:documentation>
|
|
113
|
+
</xs:annotation>
|
|
114
|
+
</xs:element>
|
|
115
|
+
<xs:element name="TotalFactura">
|
|
116
|
+
<xs:annotation>
|
|
117
|
+
<xs:documentation>Monto total de la factura</xs:documentation>
|
|
118
|
+
</xs:annotation>
|
|
119
|
+
<xs:simpleType>
|
|
120
|
+
<xs:restriction base="xs:decimal">
|
|
121
|
+
<xs:totalDigits value="18"/>
|
|
122
|
+
<xs:fractionDigits value="5"/>
|
|
123
|
+
</xs:restriction>
|
|
124
|
+
</xs:simpleType>
|
|
125
|
+
</xs:element>
|
|
126
|
+
<xs:element name="NumeroCedulaReceptor">
|
|
127
|
+
<xs:annotation>
|
|
128
|
+
<xs:documentation>Número de cédula fisica/jurídica/NITE/DIMEX del comprador</xs:documentation>
|
|
129
|
+
</xs:annotation>
|
|
130
|
+
<xs:simpleType>
|
|
131
|
+
<xs:restriction base="xs:string">
|
|
132
|
+
<xs:maxLength value="12"/>
|
|
133
|
+
<xs:pattern value="\d{9,12}"/>
|
|
134
|
+
</xs:restriction>
|
|
135
|
+
</xs:simpleType>
|
|
136
|
+
</xs:element>
|
|
137
|
+
<xs:element name="NumeroConsecutivoReceptor">
|
|
138
|
+
<xs:annotation>
|
|
139
|
+
<xs:documentation>Numeración consecutiva de los mensajes de confirmación</xs:documentation>
|
|
140
|
+
</xs:annotation>
|
|
141
|
+
<xs:simpleType>
|
|
142
|
+
<xs:restriction base="xs:string">
|
|
143
|
+
<xs:maxLength value="20"/>
|
|
144
|
+
<xs:pattern value="\d{20,20}"/>
|
|
145
|
+
</xs:restriction>
|
|
146
|
+
</xs:simpleType>
|
|
147
|
+
</xs:element>
|
|
148
|
+
<xs:element ref="ds:Signature" minOccurs="1" maxOccurs="1"/>
|
|
149
|
+
</xs:sequence>
|
|
150
|
+
</xs:complexType>
|
|
151
|
+
</xs:element>
|
|
152
|
+
<xs:simpleType name="DecimalDineroType">
|
|
153
|
+
<xs:annotation>
|
|
154
|
+
<xs:documentation>Tipo de dato decimal para representar los valores de dinero.</xs:documentation>
|
|
155
|
+
</xs:annotation>
|
|
156
|
+
<xs:restriction base="xs:decimal">
|
|
157
|
+
<xs:totalDigits value="18"/>
|
|
158
|
+
<xs:fractionDigits value="5"/>
|
|
159
|
+
<xs:maxInclusive value="9999999999999.99999"/>
|
|
160
|
+
<xs:minInclusive value="0"/>
|
|
161
|
+
</xs:restriction>
|
|
162
|
+
</xs:simpleType>
|
|
163
|
+
</xs:schema>
|