@facturacr/atv-sdk 2.0.2-alpha → 2.0.4-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.
@@ -2,66 +2,67 @@
2
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
4
  <ProveedorSistemas>206920142</ProveedorSistemas>
5
- <CodigoActividadEmisor>000004</CodigoActividadEmisor>
6
- <CodigoActividadReceptor>000004</CodigoActividadReceptor>
5
+ <CodigoActividadEmisor>930903</CodigoActividadEmisor>
6
+ <CodigoActividadReceptor>526005</CodigoActividadReceptor>
7
7
  <NumeroConsecutivo>00100001010000000002</NumeroConsecutivo>
8
8
  <FechaEmision>2024-04-01T00:00:00.000Z</FechaEmision>
9
9
  <Emisor>
10
- <Nombre>Emisor name</Nombre>
10
+ <Nombre>Tek rocks</Nombre>
11
11
  <Identificacion>
12
12
  <Tipo>01</Tipo>
13
13
  <Numero>206920142</Numero>
14
14
  </Identificacion>
15
- <NombreComercial>emisor comercial name</NombreComercial>
15
+ <NombreComercial>Ciencia del sabor</NombreComercial>
16
16
  <Ubicacion>
17
17
  <Provincia>2</Provincia>
18
18
  <Canton>06</Canton>
19
19
  <Distrito>04</Distrito>
20
20
  <Barrio>00006</Barrio>
21
- <OtrasSenas>details</OtrasSenas>
21
+ <OtrasSenas>Calle Arrieta</OtrasSenas>
22
22
  </Ubicacion>
23
23
  <Telefono>
24
24
  <CodigoPais>506</CodigoPais>
25
- <NumTelefono>12341234</NumTelefono>
25
+ <NumTelefono>88122479</NumTelefono>
26
26
  </Telefono>
27
- <CorreoElectronico>test@test.com</CorreoElectronico>
27
+ <CorreoElectronico>cienciadelsabor@gmail.com</CorreoElectronico>
28
28
  </Emisor>
29
29
  <Receptor>
30
- <Nombre>receiver name SRL</Nombre>
30
+ <Nombre>Roy</Nombre>
31
31
  <Identificacion>
32
32
  <Tipo>01</Tipo>
33
- <Numero>206930143</Numero>
33
+ <Numero>204500331</Numero>
34
34
  </Identificacion>
35
- <NombreComercial>receiver name</NombreComercial>
35
+ <NombreComercial>Roy Arrieta Soto</NombreComercial>
36
36
  <Ubicacion>
37
37
  <Provincia>2</Provincia>
38
38
  <Canton>06</Canton>
39
39
  <Distrito>04</Distrito>
40
- <Barrio>00006</Barrio>
41
- <OtrasSenas>details</OtrasSenas>
40
+ <Barrio>00003</Barrio>
41
+ <OtrasSenas>500 m oeste Súper Don Jorge, casa mano izquierda</OtrasSenas>
42
42
  </Ubicacion>
43
43
  <Telefono>
44
44
  <CodigoPais>506</CodigoPais>
45
- <NumTelefono>80808080</NumTelefono>
45
+ <NumTelefono>87206063</NumTelefono>
46
46
  </Telefono>
47
- <CorreoElectronico>test@test.com</CorreoElectronico>
47
+ <CorreoElectronico>sercoe1@hotmail.com</CorreoElectronico>
48
48
  </Receptor>
49
49
  <CondicionVenta>01</CondicionVenta>
50
50
  <DetalleServicio>
51
51
  <LineaDetalle>
52
52
  <NumeroLinea>1</NumeroLinea>
53
- <CodigoCABYS>7113301000000</CodigoCABYS>
53
+ <CodigoCABYS>9799000000000</CodigoCABYS>
54
54
  <Cantidad>1</Cantidad>
55
- <UnidadMedida>Unid</UnidadMedida>
55
+ <UnidadMedida>Sp</UnidadMedida>
56
56
  <Detalle>detalle</Detalle>
57
57
  <PrecioUnitario>10</PrecioUnitario>
58
58
  <MontoTotal>10</MontoTotal>
59
59
  <SubTotal>10</SubTotal>
60
60
  <BaseImponible>10</BaseImponible>
61
61
  <Impuesto>
62
- <Codigo>01</Codigo>
63
- <Tarifa>13</Tarifa>
64
- <Monto>1.3</Monto>
62
+ <Codigo>01</Codigo>
63
+ <CodigoTarifaIVA>08</CodigoTarifaIVA>
64
+ <Tarifa>13</Tarifa>
65
+ <Monto>1.3</Monto>
65
66
  </Impuesto>
66
67
  <ImpuestoAsumidoEmisorFabrica>0</ImpuestoAsumidoEmisorFabrica>
67
68
  <ImpuestoNeto>1.3</ImpuestoNeto>
@@ -73,9 +74,9 @@
73
74
  <CodigoMoneda>CRC</CodigoMoneda>
74
75
  <TipoCambio>1</TipoCambio>
75
76
  </CodigoTipoMoneda>
76
- <TotalServGravados>0</TotalServGravados>
77
+ <TotalServGravados>10</TotalServGravados>
77
78
  <TotalServExentos>0</TotalServExentos>
78
- <TotalMercanciasGravadas>10</TotalMercanciasGravadas>
79
+ <TotalMercanciasGravadas>0</TotalMercanciasGravadas>
79
80
  <TotalMercanciasExentas>0</TotalMercanciasExentas>
80
81
  <TotalGravado>10</TotalGravado>
81
82
  <TotalExento>0</TotalExento>
@@ -83,10 +84,17 @@
83
84
  <TotalVenta>10</TotalVenta>
84
85
  <TotalDescuentos>0</TotalDescuentos>
85
86
  <TotalVentaNeta>10</TotalVentaNeta>
87
+ <TotalDesgloseImpuesto>
88
+ <Codigo>01</Codigo>
89
+ <CodigoTarifaIVA>08</CodigoTarifaIVA>
90
+ <TotalMontoImpuesto>1.3</TotalMontoImpuesto>
91
+ </TotalDesgloseImpuesto>
86
92
  <TotalImpuesto>1.3</TotalImpuesto>
93
+ <TotalImpAsumEmisorFabrica>0</TotalImpAsumEmisorFabrica>
94
+ <TotalOtrosCargos>0</TotalOtrosCargos>
87
95
  <MedioPago>
88
- <TipoMedioPago>03</TipoMedioPago>
89
- </MedioPago>
96
+ <TipoMedioPago>03</TipoMedioPago>
97
+ </MedioPago>
90
98
  <TotalComprobante>11.3</TotalComprobante>
91
99
  </ResumenFactura>
92
100
  </FacturaElectronica>
@@ -8,44 +8,44 @@ const taxStub: CreateDocumentInput['document']['orderLines'][0]['tax'] = {
8
8
  }
9
9
 
10
10
  const orderLines: CreateDocumentInput['document']['orderLines'] = [{
11
- code: '7113301000000',
11
+ code: '9799000000000',
12
12
  quantity: 1,
13
- measureUnit: 'Unid',
13
+ measureUnit: 'Sp',
14
14
  detail: 'detalle',
15
15
  unitaryPrice: 10,
16
16
  tax: taxStub
17
17
  }]
18
18
 
19
19
  const receiverStub: CreateDocumentInput['document']['emitter'] = {
20
- fullName: 'receiver name SRL',
21
- commercialName: 'receiver name',
22
- activityCode: '4',
20
+ fullName: 'Roy',
21
+ commercialName: 'Roy Arrieta Soto',
22
+ activityCode: '526005',
23
23
  identifier: {
24
24
  type: '01',
25
- id: '206930143'
25
+ id: '204500331'
26
26
  },
27
27
  location: {
28
28
  province: '2',
29
29
  canton: '06',
30
30
  district: '04',
31
- neighborhood: '06',
32
- details: 'details'
31
+ neighborhood: '3',
32
+ details: '500 m oeste Súper Don Jorge, casa mano izquierda'
33
33
  },
34
34
  phone: {
35
35
  countryCode: '506',
36
- number: '80808080'
36
+ number: '87206063'
37
37
  },
38
- email: 'test@test.com',
38
+ email: 'sercoe1@hotmail.com',
39
39
  fax: {
40
40
  countryCode: '506',
41
- number: '80808080'
41
+ number: '87206063'
42
42
  }
43
43
  }
44
44
 
45
45
  const emitterStub: CreateDocumentInput['document']['receiver'] = {
46
- fullName: 'Emisor name',
47
- commercialName: 'emisor comercial name',
48
- activityCode: '4',
46
+ fullName: 'Tek rocks',
47
+ commercialName: 'Ciencia del sabor',
48
+ activityCode: '930903',
49
49
  identifier: {
50
50
  type: '01',
51
51
  id: '206920142'
@@ -55,16 +55,16 @@ const emitterStub: CreateDocumentInput['document']['receiver'] = {
55
55
  canton: '06',
56
56
  district: '04',
57
57
  neighborhood: '06',
58
- details: 'details'
58
+ details: 'Calle Arrieta'
59
59
  },
60
- email: 'test@test.com',
60
+ email: 'cienciadelsabor@gmail.com',
61
61
  fax: {
62
62
  countryCode: '506',
63
- number: '12341234'
63
+ number: '88122479'
64
64
  },
65
65
  phone: {
66
66
  countryCode: '506',
67
- number: '12341234'
67
+ number: '88122479'
68
68
  }
69
69
  }
70
70
 
@@ -78,7 +78,7 @@ export const creditNoteReferenceInfoExample: CreateDocumentInput['document']['re
78
78
 
79
79
  export const FEInputExample: DocumentInputWithReceiver = {
80
80
  consecutiveIdentifier: '2',
81
- activityCode: '4',
81
+ activityCode: '930903',
82
82
  providerId: emitterStub.identifier.id,
83
83
  documentName: 'FacturaElectronica',
84
84
  branch: '1', // '001'
@@ -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`] = `"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+"`;
3
+ exports[`Create Document (Invoice) should create document and match to snapshot 1`] = `"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RmFjdHVyYUVsZWN0cm9uaWNhIHhtbG5zPSJodHRwczovL2Nkbi5jb21wcm9iYW50ZXNlbGVjdHJvbmljb3MuZ28uY3IveG1sLXNjaGVtYXMvdjQuNC9mYWN0dXJhRWxlY3Ryb25pY2EiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KICA8Q2xhdmU+NTA2MDEwNDI0MDAwMjA2OTIwMTQyMDAxMDAwMDEwMTAwMDAwMDAwMDIxMDAwMDAwMDE8L0NsYXZlPgogIDxQcm92ZWVkb3JTaXN0ZW1hcz4yMDY5MjAxNDI8L1Byb3ZlZWRvclNpc3RlbWFzPgogIDxDb2RpZ29BY3RpdmlkYWRFbWlzb3I+OTMwOTAzPC9Db2RpZ29BY3RpdmlkYWRFbWlzb3I+CiAgPENvZGlnb0FjdGl2aWRhZFJlY2VwdG9yPjUyNjAwNTwvQ29kaWdvQWN0aXZpZGFkUmVjZXB0b3I+CiAgPE51bWVyb0NvbnNlY3V0aXZvPjAwMTAwMDAxMDEwMDAwMDAwMDAyPC9OdW1lcm9Db25zZWN1dGl2bz4KICA8RmVjaGFFbWlzaW9uPjIwMjQtMDQtMDFUMDA6MDA6MDAuMDAwWjwvRmVjaGFFbWlzaW9uPgogIDxFbWlzb3I+CiAgICA8Tm9tYnJlPlRlayByb2NrczwvTm9tYnJlPgogICAgPElkZW50aWZpY2FjaW9uPgogICAgICA8VGlwbz4wMTwvVGlwbz4KICAgICAgPE51bWVybz4yMDY5MjAxNDI8L051bWVybz4KICAgIDwvSWRlbnRpZmljYWNpb24+CiAgICA8Tm9tYnJlQ29tZXJjaWFsPkNpZW5jaWEgZGVsIHNhYm9yPC9Ob21icmVDb21lcmNpYWw+CiAgICA8VWJpY2FjaW9uPgogICAgICA8UHJvdmluY2lhPjI8L1Byb3ZpbmNpYT4KICAgICAgPENhbnRvbj4wNjwvQ2FudG9uPgogICAgICA8RGlzdHJpdG8+MDQ8L0Rpc3RyaXRvPgogICAgICA8QmFycmlvPjAwMDA2PC9CYXJyaW8+CiAgICAgIDxPdHJhc1NlbmFzPkNhbGxlIEFycmlldGE8L090cmFzU2VuYXM+CiAgICA8L1ViaWNhY2lvbj4KICAgIDxUZWxlZm9ubz4KICAgICAgPENvZGlnb1BhaXM+NTA2PC9Db2RpZ29QYWlzPgogICAgICA8TnVtVGVsZWZvbm8+ODgxMjI0Nzk8L051bVRlbGVmb25vPgogICAgPC9UZWxlZm9ubz4KICAgIDxDb3JyZW9FbGVjdHJvbmljbz5jaWVuY2lhZGVsc2Fib3JAZ21haWwuY29tPC9Db3JyZW9FbGVjdHJvbmljbz4KICA8L0VtaXNvcj4KICA8UmVjZXB0b3I+CiAgICA8Tm9tYnJlPlJveTwvTm9tYnJlPgogICAgPElkZW50aWZpY2FjaW9uPgogICAgICA8VGlwbz4wMTwvVGlwbz4KICAgICAgPE51bWVybz4yMDQ1MDAzMzE8L051bWVybz4KICAgIDwvSWRlbnRpZmljYWNpb24+CiAgICA8Tm9tYnJlQ29tZXJjaWFsPlJveSBBcnJpZXRhIFNvdG88L05vbWJyZUNvbWVyY2lhbD4KICAgIDxVYmljYWNpb24+CiAgICAgIDxQcm92aW5jaWE+MjwvUHJvdmluY2lhPgogICAgICA8Q2FudG9uPjA2PC9DYW50b24+CiAgICAgIDxEaXN0cml0bz4wNDwvRGlzdHJpdG8+CiAgICAgIDxCYXJyaW8+MDAwMDM8L0JhcnJpbz4KICAgICAgPE90cmFzU2VuYXM+NTAwIG0gb2VzdGUgU8O6cGVyIERvbiBKb3JnZSwgY2FzYSBtYW5vIGl6cXVpZXJkYTwvT3RyYXNTZW5hcz4KICAgIDwvVWJpY2FjaW9uPgogICAgPFRlbGVmb25vPgogICAgICA8Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+CiAgICAgIDxOdW1UZWxlZm9ubz44NzIwNjA2MzwvTnVtVGVsZWZvbm8+CiAgICA8L1RlbGVmb25vPgogICAgPENvcnJlb0VsZWN0cm9uaWNvPnNlcmNvZTFAaG90bWFpbC5jb208L0NvcnJlb0VsZWN0cm9uaWNvPgogIDwvUmVjZXB0b3I+CiAgPENvbmRpY2lvblZlbnRhPjAxPC9Db25kaWNpb25WZW50YT4KICA8RGV0YWxsZVNlcnZpY2lvPgogICAgPExpbmVhRGV0YWxsZT4KICAgICAgPE51bWVyb0xpbmVhPjE8L051bWVyb0xpbmVhPgogICAgICA8Q29kaWdvQ0FCWVM+OTc5OTAwMDAwMDAwMDwvQ29kaWdvQ0FCWVM+CiAgICAgIDxDYW50aWRhZD4xPC9DYW50aWRhZD4KICAgICAgPFVuaWRhZE1lZGlkYT5TcDwvVW5pZGFkTWVkaWRhPgogICAgICA8RGV0YWxsZT5kZXRhbGxlPC9EZXRhbGxlPgogICAgICA8UHJlY2lvVW5pdGFyaW8+MTA8L1ByZWNpb1VuaXRhcmlvPgogICAgICA8TW9udG9Ub3RhbD4xMDwvTW9udG9Ub3RhbD4KICAgICAgPFN1YlRvdGFsPjEwPC9TdWJUb3RhbD4KICAgICAgPEJhc2VJbXBvbmlibGU+MTA8L0Jhc2VJbXBvbmlibGU+CiAgICAgIDxJbXB1ZXN0bz4KICAgICAgICA8Q29kaWdvPjAxPC9Db2RpZ28+CiAgICAgICAgPENvZGlnb1RhcmlmYUlWQT4wODwvQ29kaWdvVGFyaWZhSVZBPgogICAgICAgIDxUYXJpZmE+MTM8L1RhcmlmYT4KICAgICAgICA8TW9udG8+MS4zPC9Nb250bz4KICAgICAgPC9JbXB1ZXN0bz4KICAgICAgPEltcHVlc3RvQXN1bWlkb0VtaXNvckZhYnJpY2E+MDwvSW1wdWVzdG9Bc3VtaWRvRW1pc29yRmFicmljYT4KICAgICAgPEltcHVlc3RvTmV0bz4xLjM8L0ltcHVlc3RvTmV0bz4KICAgICAgPE1vbnRvVG90YWxMaW5lYT4xMS4zPC9Nb250b1RvdGFsTGluZWE+CiAgICA8L0xpbmVhRGV0YWxsZT4KICA8L0RldGFsbGVTZXJ2aWNpbz4KICA8UmVzdW1lbkZhY3R1cmE+CiAgICA8Q29kaWdvVGlwb01vbmVkYT4KICAgICAgPENvZGlnb01vbmVkYT5DUkM8L0NvZGlnb01vbmVkYT4KICAgICAgPFRpcG9DYW1iaW8+MTwvVGlwb0NhbWJpbz4KICAgIDwvQ29kaWdvVGlwb01vbmVkYT4KICAgIDxUb3RhbFNlcnZHcmF2YWRvcz4xMDwvVG90YWxTZXJ2R3JhdmFkb3M+CiAgICA8VG90YWxTZXJ2RXhlbnRvcz4wPC9Ub3RhbFNlcnZFeGVudG9zPgogICAgPFRvdGFsTWVyY2FuY2lhc0dyYXZhZGFzPjA8L1RvdGFsTWVyY2FuY2lhc0dyYXZhZGFzPgogICAgPFRvdGFsTWVyY2FuY2lhc0V4ZW50YXM+MDwvVG90YWxNZXJjYW5jaWFzRXhlbnRhcz4KICAgIDxUb3RhbEdyYXZhZG8+MTA8L1RvdGFsR3JhdmFkbz4KICAgIDxUb3RhbEV4ZW50bz4wPC9Ub3RhbEV4ZW50bz4KICAgIDxUb3RhbEV4b25lcmFkbz4wPC9Ub3RhbEV4b25lcmFkbz4KICAgIDxUb3RhbFZlbnRhPjEwPC9Ub3RhbFZlbnRhPgogICAgPFRvdGFsRGVzY3VlbnRvcz4wPC9Ub3RhbERlc2N1ZW50b3M+CiAgICA8VG90YWxWZW50YU5ldGE+MTA8L1RvdGFsVmVudGFOZXRhPgogICAgPFRvdGFsRGVzZ2xvc2VJbXB1ZXN0bz4KICAgICAgPENvZGlnbz4wMTwvQ29kaWdvPgogICAgICA8Q29kaWdvVGFyaWZhSVZBPjA4PC9Db2RpZ29UYXJpZmFJVkE+CiAgICAgIDxUb3RhbE1vbnRvSW1wdWVzdG8+MS4zPC9Ub3RhbE1vbnRvSW1wdWVzdG8+CiAgICA8L1RvdGFsRGVzZ2xvc2VJbXB1ZXN0bz4KICAgIDxUb3RhbEltcHVlc3RvPjEuMzwvVG90YWxJbXB1ZXN0bz4KICAgIDxUb3RhbEltcEFzdW1FbWlzb3JGYWJyaWNhPjA8L1RvdGFsSW1wQXN1bUVtaXNvckZhYnJpY2E+CiAgICA8VG90YWxPdHJvc0Nhcmdvcz4wPC9Ub3RhbE90cm9zQ2FyZ29zPgogICAgPE1lZGlvUGFnbz4KICAgICAgPFRpcG9NZWRpb1BhZ28+MDM8L1RpcG9NZWRpb1BhZ28+CiAgICA8L01lZGlvUGFnbz4KICAgIDxUb3RhbENvbXByb2JhbnRlPjExLjM8L1RvdGFsQ29tcHJvYmFudGU+CiAgPC9SZXN1bWVuRmFjdHVyYT4KPC9GYWN0dXJhRWxlY3Ryb25pY2E+Cg=="`;
@@ -0,0 +1,62 @@
1
+ import { ReceptorConsecutive } from '@src/ATV/core/ReceptorConsecutive'
2
+
3
+ describe('ReceptorConsecutive', () => {
4
+ describe('create', () => {
5
+ it('should create a ReceptorConsecutive instance with padded values', () => {
6
+ const consecutive = ReceptorConsecutive.create({
7
+ branch: '1',
8
+ terminal: '1',
9
+ documentType: '05',
10
+ consecutive: '1'
11
+ })
12
+
13
+ expect(consecutive).toBeInstanceOf(ReceptorConsecutive)
14
+ })
15
+
16
+ it('should pad branch with zeros to 3 digits', () => {
17
+ const consecutive = ReceptorConsecutive.create({
18
+ branch: '1',
19
+ terminal: '12345',
20
+ documentType: '05',
21
+ consecutive: '1234567890'
22
+ })
23
+
24
+ expect(consecutive.value).toBe('00112345051234567890')
25
+ })
26
+
27
+ it('should pad terminal with zeros to 5 digits', () => {
28
+ const consecutive = ReceptorConsecutive.create({
29
+ branch: '123',
30
+ terminal: '1',
31
+ documentType: '06',
32
+ consecutive: '1234567890'
33
+ })
34
+
35
+ expect(consecutive.value).toBe('12300001061234567890')
36
+ })
37
+
38
+ it('should pad consecutive with zeros to 10 digits', () => {
39
+ const consecutive = ReceptorConsecutive.create({
40
+ branch: '123',
41
+ terminal: '12345',
42
+ documentType: '07',
43
+ consecutive: '1'
44
+ })
45
+
46
+ expect(consecutive.value).toBe('12312345070000000001')
47
+ })
48
+ })
49
+
50
+ describe('value', () => {
51
+ it('should return concatenated values', () => {
52
+ const consecutive = ReceptorConsecutive.create({
53
+ branch: '001',
54
+ terminal: '00001',
55
+ documentType: '05',
56
+ consecutive: '0000000001'
57
+ })
58
+
59
+ expect(consecutive.value).toBe('00100001050000000001')
60
+ })
61
+ })
62
+ })
@@ -6,35 +6,50 @@ const parseAtvMoneyFormat = (amount) => {
6
6
  };
7
7
  const mapOrderLinesToAtvFormat = (orderLines) => {
8
8
  const LineaDetalle = orderLines.map((orderLine) => {
9
- return {
10
- NumeroLinea: orderLine.lineNumber,
11
- CodigoCABYS: orderLine.code,
9
+ var _a;
10
+ const impuestoMonto = orderLine.tax ? parseAtvMoneyFormat((_a = orderLine.tax.amount) !== null && _a !== void 0 ? _a : 0) : 0;
11
+ return Object.assign(Object.assign({ NumeroLinea: orderLine.lineNumber, CodigoCABYS: orderLine.code,
12
12
  // CodigoComercial
13
- Cantidad: orderLine.quantity,
14
- UnidadMedida: orderLine.measureUnit,
13
+ Cantidad: orderLine.quantity, UnidadMedida: orderLine.measureUnit,
15
14
  // UnidadMedidaComercial
16
- Detalle: orderLine.detail,
17
- PrecioUnitario: orderLine.unitaryPrice,
18
- MontoTotal: orderLine.totalAmount,
15
+ Detalle: orderLine.detail, PrecioUnitario: orderLine.unitaryPrice, MontoTotal: orderLine.totalAmount,
19
16
  // Descuento
20
- SubTotal: orderLine.subTotal,
21
- BaseImponible: orderLine.subTotal,
17
+ SubTotal: orderLine.subTotal, BaseImponible: orderLine.subTotal }, (orderLine.tax && {
22
18
  Impuesto: {
23
19
  Codigo: orderLine.tax.code,
20
+ CodigoTarifaIVA: orderLine.tax.rateCode,
24
21
  Tarifa: orderLine.tax.rate,
25
- // @ts-expect-error pending-to-fix
26
- Monto: parseAtvMoneyFormat(orderLine.tax.amount)
27
- },
28
- ImpuestoAsumidoEmisorFabrica: 0,
22
+ Monto: impuestoMonto
23
+ // Exoneracion is explicitly excluded here
24
+ }
25
+ })), { ImpuestoAsumidoEmisorFabrica: 0,
29
26
  // @ts-expect-error pending-to-fix
30
- ImpuestoNeto: parseAtvMoneyFormat(orderLine.tax.amount),
31
- MontoTotalLinea: parseAtvMoneyFormat(orderLine.totalOrderLineAmount)
32
- };
27
+ ImpuestoNeto: parseAtvMoneyFormat(orderLine.tax.amount), MontoTotalLinea: parseAtvMoneyFormat(orderLine.totalOrderLineAmount) });
33
28
  });
34
29
  return { LineaDetalle };
35
30
  };
36
31
  const mapSummaryInvoice = (document) => {
37
32
  const summaryInvoice = document.summaryInvoice;
33
+ const orderLines = document.orderLines; // Still need access to order lines for breakdown
34
+ // --- Lógica para TotalDesgloseImpuesto (sin considerar exoneraciones) ---
35
+ const taxBreakdownMap = new Map();
36
+ orderLines.forEach(orderLine => {
37
+ var _a;
38
+ if (((_a = orderLine.tax) === null || _a === void 0 ? void 0 : _a.amount) !== undefined && orderLine.tax.amount !== null && orderLine.tax.amount > 0) {
39
+ const key = `${orderLine.tax.code}-${orderLine.tax.rateCode}`;
40
+ const currentTotal = taxBreakdownMap.get(key) || 0;
41
+ taxBreakdownMap.set(key, currentTotal + orderLine.tax.amount);
42
+ }
43
+ });
44
+ const TotalDesgloseImpuesto = Array.from(taxBreakdownMap.entries()).map(([key, totalMonto]) => {
45
+ const [Codigo, CodigoTarifaIVA, Tarifa] = key.split('-');
46
+ return {
47
+ Codigo,
48
+ CodigoTarifaIVA,
49
+ Tarifa,
50
+ TotalMontoImpuesto: parseAtvMoneyFormat(totalMonto)
51
+ };
52
+ });
38
53
  return {
39
54
  CodigoTipoMoneda: {
40
55
  // @ts-expect-error pending-to-fix
@@ -56,7 +71,10 @@ const mapSummaryInvoice = (document) => {
56
71
  TotalDescuentos: parseAtvMoneyFormat(summaryInvoice.totalDiscounts),
57
72
  // @ts-expect-error pending-to-fix
58
73
  TotalVentaNeta: parseAtvMoneyFormat(summaryInvoice.totalNetSale),
74
+ TotalDesgloseImpuesto,
59
75
  TotalImpuesto: parseAtvMoneyFormat(summaryInvoice.totalTaxes),
76
+ TotalImpAsumEmisorFabrica: 0,
77
+ TotalOtrosCargos: 0,
60
78
  MedioPago: {
61
79
  // @ts-expect-error pending-to-fix
62
80
  TipoMedioPago: document.paymentMethod
@@ -1 +1 @@
1
- {"version":3,"file":"billDocToAtv.js","sourceRoot":"","sources":["../../../../src/ATV/mappers/billDocToAtv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billDocToAtv.js","sourceRoot":"","sources":["../../../../src/ATV/mappers/billDocToAtv.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export interface Impuesto {
2
2
  Codigo: string;
3
- Tarifa: number;
3
+ Tarifa?: number;
4
4
  Monto?: number;
5
5
  }
6
6
  export interface LineaDetalle {
@@ -22,7 +22,7 @@ export interface DetalleServicio {
22
22
  }
23
23
  export interface TotalDesgloseImpuesto {
24
24
  Codigo: string;
25
- CodigoTarifaIVA?: string;
25
+ CodigoTarifaIVA: string;
26
26
  TotalMontoImpuesto: number;
27
27
  }
28
28
  export interface Resumen {
@@ -41,11 +41,11 @@ export interface Resumen {
41
41
  TotalDescuentos?: number;
42
42
  TotalVentaNeta?: number;
43
43
  TotalImpuesto: number;
44
+ TotalDesgloseImpuesto?: TotalDesgloseImpuesto[];
44
45
  MedioPago?: {
45
46
  TipoMedioPago: string;
46
47
  };
47
48
  TotalComprobante: number;
48
- TotalDesgloseImpuesto?: Array<TotalDesgloseImpuesto>;
49
49
  }
50
50
  export interface Persona {
51
51
  Nombre: string;
@@ -2,6 +2,8 @@ export declare const ATV_VERSION = "4.4";
2
2
  export declare const declaration = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
3
3
  export declare const defaultOptions: {
4
4
  attrNodeName: string;
5
+ format: boolean;
6
+ indentBy: string;
5
7
  };
6
8
  export declare const xmlExtructures: {
7
9
  FacturaElectronica: {
@@ -6,7 +6,9 @@ const BASE_DOMAIN = 'https://cdn.comprobanteselectronicos.go.cr/xml-schemas';
6
6
  const buildNs = (type) => `${BASE_DOMAIN}/v${exports.ATV_VERSION}/${type}`;
7
7
  exports.declaration = '<?xml version="1.0" encoding="utf-8"?>';
8
8
  exports.defaultOptions = {
9
- attrNodeName: 'attr'
9
+ attrNodeName: 'attr',
10
+ format: true,
11
+ indentBy: ' '
10
12
  };
11
13
  const COMMON_STRUCTURE = {
12
14
  'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
@@ -1 +1 @@
1
- {"version":3,"file":"xmlSchemaHeaderMap.js","sourceRoot":"","sources":["../../src/xmlSchemaHeaderMap.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,KAAK,CAAA;AAEhC,MAAM,WAAW,GAAG,wDAAwD,CAAA;AAE5E,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAC/B,GAAG,WAAW,KAAK,mBAAW,IAAI,IAAI,EAAE,CAAA;AAE7B,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,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,MAAM,CAAC,MAAM,CAClB,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EACxB,gBAAgB,CACjB,CAAA;AACH,CAAC;AAEY,QAAA,cAAc,GAAG;IAC5B,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC;IACpD,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC;IACpD,6BAA6B,EAAE,UAAU,CAAC,oBAAoB,CAAC;IAC/D,sBAAsB,EAAE,UAAU,CAAC,wBAAwB,CAAC;IAC5D,qBAAqB,EAAE,UAAU,CAAC,wBAAwB,CAAC;IAC3D,eAAe,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAC9C,GAAG,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;IACnC,GAAG,EAAE,UAAU,CAAC,iBAAiB,CAAC;CACnC,CAAA"}
1
+ {"version":3,"file":"xmlSchemaHeaderMap.js","sourceRoot":"","sources":["../../src/xmlSchemaHeaderMap.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,KAAK,CAAA;AAEhC,MAAM,WAAW,GAAG,wDAAwD,CAAA;AAE5E,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAC/B,GAAG,WAAW,KAAK,mBAAW,IAAI,IAAI,EAAE,CAAA;AAE7B,QAAA,WAAW,GAAG,wCAAwC,CAAA;AAEtD,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,MAAM;IACpB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;CACf,CAAA;AAED,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,2CAA2C;CACzD,CAAA;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,MAAM,CAAC,MAAM,CAClB,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EACxB,gBAAgB,CACjB,CAAA;AACH,CAAC;AAEY,QAAA,cAAc,GAAG;IAC5B,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC;IACpD,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC;IACpD,6BAA6B,EAAE,UAAU,CAAC,oBAAoB,CAAC;IAC/D,sBAAsB,EAAE,UAAU,CAAC,wBAAwB,CAAC;IAC5D,qBAAqB,EAAE,UAAU,CAAC,wBAAwB,CAAC;IAC3D,eAAe,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAC9C,GAAG,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;IACnC,GAAG,EAAE,UAAU,CAAC,iBAAiB,CAAC;CACnC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@facturacr/atv-sdk",
3
- "version": "2.0.2-alpha",
3
+ "version": "2.0.4-alpha",
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",
@@ -13,6 +13,7 @@ const parseAtvMoneyFormat = (amount: number) => {
13
13
 
14
14
  const mapOrderLinesToAtvFormat = (orderLines: OrderLine[]): DetalleServicio => {
15
15
  const LineaDetalle = orderLines.map<DetalleServicio['LineaDetalle'][0]>((orderLine) => {
16
+ const impuestoMonto = orderLine.tax ? parseAtvMoneyFormat(orderLine.tax.amount ?? 0) : 0
16
17
  return {
17
18
  NumeroLinea: orderLine.lineNumber,
18
19
  CodigoCABYS: orderLine.code,
@@ -26,12 +27,15 @@ const mapOrderLinesToAtvFormat = (orderLines: OrderLine[]): DetalleServicio => {
26
27
  // Descuento
27
28
  SubTotal: orderLine.subTotal,
28
29
  BaseImponible: orderLine.subTotal,
29
- Impuesto: {
30
- Codigo: orderLine.tax.code,
31
- Tarifa: orderLine.tax.rate,
32
- // @ts-expect-error pending-to-fix
33
- Monto: parseAtvMoneyFormat(orderLine.tax.amount)
34
- },
30
+ ...(orderLine.tax && {
31
+ Impuesto: {
32
+ Codigo: orderLine.tax.code,
33
+ CodigoTarifaIVA: orderLine.tax.rateCode,
34
+ Tarifa: orderLine.tax.rate,
35
+ Monto: impuestoMonto
36
+ // Exoneracion is explicitly excluded here
37
+ }
38
+ }),
35
39
  ImpuestoAsumidoEmisorFabrica: 0,
36
40
  // @ts-expect-error pending-to-fix
37
41
  ImpuestoNeto: parseAtvMoneyFormat(orderLine.tax.amount),
@@ -43,6 +47,28 @@ const mapOrderLinesToAtvFormat = (orderLines: OrderLine[]): DetalleServicio => {
43
47
 
44
48
  const mapSummaryInvoice = (document: DomainDocument): Resumen => {
45
49
  const summaryInvoice = document.summaryInvoice
50
+ const orderLines = document.orderLines // Still need access to order lines for breakdown
51
+
52
+ // --- Lógica para TotalDesgloseImpuesto (sin considerar exoneraciones) ---
53
+ const taxBreakdownMap = new Map<string, number>()
54
+
55
+ orderLines.forEach(orderLine => {
56
+ if (orderLine.tax?.amount !== undefined && orderLine.tax.amount !== null && orderLine.tax.amount > 0) {
57
+ const key = `${orderLine.tax.code}-${orderLine.tax.rateCode}`
58
+ const currentTotal = taxBreakdownMap.get(key) || 0
59
+ taxBreakdownMap.set(key, currentTotal + orderLine.tax.amount)
60
+ }
61
+ })
62
+
63
+ const TotalDesgloseImpuesto = Array.from(taxBreakdownMap.entries()).map(([key, totalMonto]) => {
64
+ const [Codigo, CodigoTarifaIVA, Tarifa] = key.split('-')
65
+ return {
66
+ Codigo,
67
+ CodigoTarifaIVA,
68
+ Tarifa,
69
+ TotalMontoImpuesto: parseAtvMoneyFormat(totalMonto)
70
+ }
71
+ })
46
72
  return {
47
73
  CodigoTipoMoneda: {
48
74
  // @ts-expect-error pending-to-fix
@@ -64,7 +90,10 @@ const mapSummaryInvoice = (document: DomainDocument): Resumen => {
64
90
  TotalDescuentos: parseAtvMoneyFormat(summaryInvoice.totalDiscounts),
65
91
  // @ts-expect-error pending-to-fix
66
92
  TotalVentaNeta: parseAtvMoneyFormat(summaryInvoice.totalNetSale),
93
+ TotalDesgloseImpuesto,
67
94
  TotalImpuesto: parseAtvMoneyFormat(summaryInvoice.totalTaxes),
95
+ TotalImpAsumEmisorFabrica: 0,
96
+ TotalOtrosCargos: 0,
68
97
  MedioPago: {
69
98
  // @ts-expect-error pending-to-fix
70
99
  TipoMedioPago: document.paymentMethod
@@ -5,7 +5,7 @@
5
5
 
6
6
  export interface Impuesto {
7
7
  Codigo: string;
8
- Tarifa: number;
8
+ Tarifa?: number;
9
9
  Monto?: number;
10
10
  }
11
11
 
@@ -29,9 +29,10 @@ export interface DetalleServicio {
29
29
  }
30
30
 
31
31
  export interface TotalDesgloseImpuesto {
32
- Codigo: string; // Representa el tipo "CodigoImpuestoType"
33
- CodigoTarifaIVA?: string; // Representa el tipo "CodigoTarifaIVAType"
34
- TotalMontoImpuesto: number; // Representa el tipo "DecimalDineroType"
32
+ Codigo: string;
33
+ CodigoTarifaIVA: string;
34
+ // ... other properties
35
+ TotalMontoImpuesto: number;
35
36
  }
36
37
 
37
38
  export interface Resumen {
@@ -51,11 +52,11 @@ export interface Resumen {
51
52
  TotalDescuentos?: number;
52
53
  TotalVentaNeta?: number;
53
54
  TotalImpuesto: number;
55
+ TotalDesgloseImpuesto?: TotalDesgloseImpuesto[];
54
56
  MedioPago?: {
55
57
  TipoMedioPago: string;
56
58
  };
57
59
  TotalComprobante: number;
58
- TotalDesgloseImpuesto?: Array<TotalDesgloseImpuesto>; // Agregado aquí
59
60
  }
60
61
 
61
62
  export interface Persona {
@@ -8,7 +8,9 @@ const buildNs = (type: string) =>
8
8
  export const declaration = '<?xml version="1.0" encoding="utf-8"?>'
9
9
 
10
10
  export const defaultOptions = {
11
- attrNodeName: 'attr'
11
+ attrNodeName: 'attr',
12
+ format: true,
13
+ indentBy: ' '
12
14
  }
13
15
 
14
16
  const COMMON_STRUCTURE = {