@facturacr/atv-sdk 1.2.4 → 1.2.6
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/__tests__/inputs/.gitkeep +0 -0
- package/__tests__/stubs/commonExpectedXml.xml +1 -1
- package/__tests__/tests/ATV/__snapshots__/create-document.test.ts.snap +3 -0
- package/__tests__/tests/ATV/create-receptor-message.test.ts +41 -0
- package/dist/src/ATV/mappers/billDocToAtv.js +15 -12
- package/dist/src/ATV/mappers/billDocToAtv.js.map +1 -1
- package/dist/src/lib/genXML/xmlConfig.d.ts +6 -7
- package/dist/src/lib/genXML/xmlConfig.js +6 -5
- package/dist/src/lib/genXML/xmlConfig.js.map +1 -1
- package/package.json +1 -1
- package/src/ATV/mappers/billDocToAtv.ts +16 -12
- package/src/lib/genXML/xmlConfig.ts +6 -5
- package/__tests__/tests/ATV/__snapshots__/index.test.ts.snap +0 -3
- /package/__tests__/tests/ATV/{index.test.ts → create-document.test.ts} +0 -0
|
File without changes
|
|
@@ -1,5 +1,5 @@
|
|
|
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.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">
|
|
3
3
|
<Clave>50601042400020692014200100001010000000002100000001</Clave>
|
|
4
4
|
<CodigoActividad>000004</CodigoActividad>
|
|
5
5
|
<NumeroConsecutivo>00100001010000000002</NumeroConsecutivo>
|
|
@@ -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`] = `"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+PENvbmRpY2lvblZlbnRhPjAxPC9Db25kaWNpb25WZW50YT48TWVkaW9QYWdvPjAxPC9NZWRpb1BhZ28+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=="`;
|
|
@@ -0,0 +1,41 @@
|
|
|
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';
|
|
5
|
+
const expectXml = fs.readFileSync('__tests__/stubs/commonExpectedXml.xml', 'utf-8')
|
|
6
|
+
const fakePem = fs.readFileSync('__tests__/stubs/dummyKeys/client-identity.p12', 'binary')
|
|
7
|
+
const fakePassword = '1234'
|
|
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
|
+
})
|
|
@@ -28,24 +28,27 @@ const mapOrderLinesToAtvFormat = (orderLines) => {
|
|
|
28
28
|
});
|
|
29
29
|
return { LineaDetalle };
|
|
30
30
|
};
|
|
31
|
+
const parseAtvMoneyFormat = (amount) => {
|
|
32
|
+
return parseFloat(amount.toFixed(5));
|
|
33
|
+
};
|
|
31
34
|
const mapSummaryInvoice = (summaryInvoice) => {
|
|
32
35
|
return {
|
|
33
36
|
CodigoTipoMoneda: {
|
|
34
37
|
CodigoMoneda: summaryInvoice.currency.code,
|
|
35
38
|
TipoCambio: summaryInvoice.currency.exchangeRate
|
|
36
39
|
},
|
|
37
|
-
TotalServGravados: summaryInvoice.totalEncumberedServices,
|
|
38
|
-
TotalServExentos: summaryInvoice.totalExemptServices,
|
|
39
|
-
TotalMercanciasGravadas: summaryInvoice.totalEncumberedMerchandise,
|
|
40
|
-
TotalMercanciasExentas: summaryInvoice.totalExemptMerchandise,
|
|
41
|
-
TotalGravado: summaryInvoice.totalEncumbered,
|
|
42
|
-
TotalExento: summaryInvoice.totalExempt,
|
|
43
|
-
TotalExonerado: summaryInvoice.totalExonerated,
|
|
44
|
-
TotalVenta: summaryInvoice.totalSale,
|
|
45
|
-
TotalDescuentos: summaryInvoice.totalDiscounts,
|
|
46
|
-
TotalVentaNeta: summaryInvoice.totalNetSale,
|
|
47
|
-
TotalImpuesto: summaryInvoice.totalTaxes,
|
|
48
|
-
TotalComprobante: summaryInvoice.totalVoucher
|
|
40
|
+
TotalServGravados: parseAtvMoneyFormat(summaryInvoice.totalEncumberedServices),
|
|
41
|
+
TotalServExentos: parseAtvMoneyFormat(summaryInvoice.totalExemptServices),
|
|
42
|
+
TotalMercanciasGravadas: parseAtvMoneyFormat(summaryInvoice.totalEncumberedMerchandise),
|
|
43
|
+
TotalMercanciasExentas: parseAtvMoneyFormat(summaryInvoice.totalExemptMerchandise),
|
|
44
|
+
TotalGravado: parseAtvMoneyFormat(summaryInvoice.totalEncumbered),
|
|
45
|
+
TotalExento: parseAtvMoneyFormat(summaryInvoice.totalExempt),
|
|
46
|
+
TotalExonerado: parseAtvMoneyFormat(summaryInvoice.totalExonerated),
|
|
47
|
+
TotalVenta: parseAtvMoneyFormat(summaryInvoice.totalSale),
|
|
48
|
+
TotalDescuentos: parseAtvMoneyFormat(summaryInvoice.totalDiscounts),
|
|
49
|
+
TotalVentaNeta: parseAtvMoneyFormat(summaryInvoice.totalNetSale),
|
|
50
|
+
TotalImpuesto: parseAtvMoneyFormat(summaryInvoice.totalTaxes),
|
|
51
|
+
TotalComprobante: parseAtvMoneyFormat(summaryInvoice.totalVoucher)
|
|
49
52
|
};
|
|
50
53
|
};
|
|
51
54
|
const mapPerson = (person) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billDocToAtv.js","sourceRoot":"","sources":["../../../../src/ATV/mappers/billDocToAtv.ts"],"names":[],"mappings":";;;AASA,MAAM,wBAAwB,GAAG,CAAC,UAAuB,EAAmB,EAAE;IAC5E,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAqC,CAAC,SAAS,EAAE,EAAE;QACpF,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,UAAU;YACjC,MAAM,EAAE,SAAS,CAAC,IAAI;YACtB,kBAAkB;YAClB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,YAAY,EAAE,SAAS,CAAC,WAAW;YACnC,wBAAwB;YACxB,OAAO,EAAE,SAAS,CAAC,MAAM;YACzB,cAAc,EAAE,SAAS,CAAC,YAAY;YACtC,UAAU,EAAE,SAAS,CAAC,WAAW;YACjC,YAAY;YACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,gBAAgB;YAChB,QAAQ,EAAE;gBACR,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI;gBAC1B,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ;gBACpC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI;gBAC1B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM;aAC5B;YACD,eAAe;YACf,eAAe,EAAE,SAAS,CAAC,oBAAoB;SAChD,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,YAAY,EAAE,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,cAAgD,EAAW,EAAE;IACtF,OAAO;QACL,gBAAgB,EAAE;YAChB,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI;YAC1C,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY;SACjD;QACD,iBAAiB,EAAE,cAAc,CAAC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"billDocToAtv.js","sourceRoot":"","sources":["../../../../src/ATV/mappers/billDocToAtv.ts"],"names":[],"mappings":";;;AASA,MAAM,wBAAwB,GAAG,CAAC,UAAuB,EAAmB,EAAE;IAC5E,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAqC,CAAC,SAAS,EAAE,EAAE;QACpF,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,UAAU;YACjC,MAAM,EAAE,SAAS,CAAC,IAAI;YACtB,kBAAkB;YAClB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,YAAY,EAAE,SAAS,CAAC,WAAW;YACnC,wBAAwB;YACxB,OAAO,EAAE,SAAS,CAAC,MAAM;YACzB,cAAc,EAAE,SAAS,CAAC,YAAY;YACtC,UAAU,EAAE,SAAS,CAAC,WAAW;YACjC,YAAY;YACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,gBAAgB;YAChB,QAAQ,EAAE;gBACR,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI;gBAC1B,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ;gBACpC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI;gBAC1B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM;aAC5B;YACD,eAAe;YACf,eAAe,EAAE,SAAS,CAAC,oBAAoB;SAChD,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,YAAY,EAAE,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,cAAgD,EAAW,EAAE;IACtF,OAAO;QACL,gBAAgB,EAAE;YAChB,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI;YAC1C,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY;SACjD;QACD,iBAAiB,EAAE,mBAAmB,CAAC,cAAc,CAAC,uBAAuB,CAAC;QAC9E,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC,mBAAmB,CAAC;QACzE,uBAAuB,EAAE,mBAAmB,CAAC,cAAc,CAAC,0BAA0B,CAAC;QACvF,sBAAsB,EAAE,mBAAmB,CAAC,cAAc,CAAC,sBAAsB,CAAC;QAClF,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,eAAe,CAAC;QACjE,WAAW,EAAE,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC;QAC5D,cAAc,EAAE,mBAAmB,CAAC,cAAc,CAAC,eAAe,CAAC;QACnE,UAAU,EAAE,mBAAmB,CAAC,cAAc,CAAC,SAAS,CAAC;QACzD,eAAe,EAAE,mBAAmB,CAAC,cAAc,CAAC,cAAc,CAAC;QACnE,cAAc,EAAE,mBAAmB,CAAC,cAAc,CAAC,YAAY,CAAC;QAChE,aAAa,EAAE,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC;QAC7D,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC,YAAY,CAAC;KACnE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,MAAc,EAAW,EAAE;;IAC5C,MAAM,SAAS,GAAG;QAChB,MAAM,EAAE,MAAM,CAAC,QAAQ;QACvB,cAAc,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,cAAc;YAC3B,MAAM,EAAE,MAAM,CAAC,YAAY;SAC5B;QACD,eAAe,EAAE,MAAM,CAAC,cAAc;QACtC,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,SAAS;QACnB,GAAG,EAAE,SAAS;QACd,iBAAiB,EAAE,SAAS;KAC7B,CAAA;IACD,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,SAAS,EAAE,MAAA,MAAM,CAAC,QAAQ,0CAAE,QAAQ;QACpC,MAAM,EAAE,MAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,0CAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACjD,QAAQ,EAAE,MAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,QAAQ,0CAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACrD,MAAM,EAAE,MAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,YAAY,0CAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACvD,UAAU,EAAE,MAAA,MAAM,CAAC,QAAQ,0CAAE,OAAO;KACrC,CAAC,CAAC,CAAC,SAAS,CAAA;IACb,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,UAAU,EAAE,MAAA,MAAM,CAAC,KAAK,0CAAE,WAAW;QACrC,WAAW,EAAE,MAAA,MAAM,CAAC,KAAK,0CAAE,MAAM;KAClC,CAAC,CAAC,CAAC,SAAS,CAAA;IACb,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,UAAU,EAAE,MAAA,MAAM,CAAC,GAAG,0CAAE,WAAW;QACnC,WAAW,EAAE,MAAA,MAAM,CAAC,GAAG,0CAAE,MAAM;KAChC,CAAC,CAAC,CAAC,SAAS,CAAA;IACb,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAA;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,aAAmC,EAAyB,EAAE;IAC7F,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM,EAAE,aAAa,CAAC,SAAS;QAC/B,YAAY,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE;QACnD,MAAM,EAAE,aAAa,CAAC,IAAI;QAC1B,KAAK,EAAE,aAAa,CAAC,MAAM;KAC5B,CAAA;AACH,CAAC,CAAA;AAEM,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAE,QAAwB,EAAa,EAAE;IAC7F,MAAM,GAAG,GAAG,OAAO,CAAA;IACnB,MAAM,GAAG,GAAa;QACpB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACvD,iBAAiB,EAAE,QAAQ,CAAC,eAAe;QAC3C,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;QAC9C,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtC,cAAc,EAAE,QAAQ,CAAC,aAAa;QACtC,YAAY,EAAE,QAAQ,CAAC,cAAc;QACrC,SAAS,EAAE,QAAQ,CAAC,aAAa;QACjC,eAAe,EAAE,wBAAwB,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9D,cAAc,EAAE,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1D,KAAK,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAA;IACD,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAClC,GAAG,CAAC,qBAAqB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACrF,CAAC;IACD,OAAO;QACL,CAAC,GAAG,CAAC,EAAE,GAAG;KACX,CAAA;AACH,CAAC,CAAA;AAtBY,QAAA,sBAAsB,0BAsBlC;AAEM,MAAM,6BAA6B,GAAG,CAAC,KAA2B,EAAa,EAAE;IACtF,OAAO;QACL,eAAe,EAAE;YACf,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,kBAAkB,EAAE,KAAK,CAAC,iBAAiB;YAC3C,eAAe,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACtD,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,qDAAqD;YAChG,cAAc,EAAE,KAAK,CAAC,uBAAuB;YAC7C,kBAAkB,EAAE,KAAK,CAAC,UAAU;YACpC,eAAe,EAAE,KAAK,CAAC,YAAY;YACnC,iBAAiB,EAAE,KAAK,CAAC,YAAY;YACrC,0BAA0B,EAAE,KAAK,CAAC,SAAS,EAAE,yEAAyE;YACtH,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,yCAAyC;YACxE,oBAAoB,EAAE,KAAK,CAAC,kBAAkB;YAC9C,yBAAyB,EAAE,KAAK,CAAC,mBAAmB;SACrD;KACF,CAAA;AACH,CAAC,CAAA;AAjBY,QAAA,6BAA6B,iCAiBzC"}
|
|
@@ -4,49 +4,48 @@ export declare const defaultOptions: {
|
|
|
4
4
|
};
|
|
5
5
|
export declare const xmlExtructures: {
|
|
6
6
|
FacturaElectronica: {
|
|
7
|
-
'xsi:schemaLocation': string;
|
|
8
7
|
'xmlns:ds': string;
|
|
9
8
|
'xmlns:xsd': string;
|
|
10
9
|
'xmlns:xsi': string;
|
|
11
10
|
xmlns: string;
|
|
12
11
|
};
|
|
13
12
|
FacturaElectronicaExportacion: {
|
|
14
|
-
'xsi:schemaLocation': string;
|
|
15
13
|
'xmlns:ds': string;
|
|
16
14
|
'xmlns:xsd': string;
|
|
17
15
|
'xmlns:xsi': string;
|
|
18
16
|
xmlns: string;
|
|
19
17
|
};
|
|
20
18
|
NotaCreditoElectronica: {
|
|
21
|
-
'xsi:schemaLocation': string;
|
|
22
19
|
'xmlns:ds': string;
|
|
23
20
|
'xmlns:xsd': string;
|
|
24
21
|
'xmlns:xsi': string;
|
|
25
22
|
xmlns: string;
|
|
26
23
|
};
|
|
27
24
|
NotaDebitoElectronica: {
|
|
28
|
-
'
|
|
25
|
+
'xmlns:ds': string;
|
|
26
|
+
'xmlns:xsd': string;
|
|
27
|
+
'xmlns:xsi': string;
|
|
28
|
+
xmlns: string;
|
|
29
|
+
};
|
|
30
|
+
MensajeReceptor: {
|
|
29
31
|
'xmlns:ds': string;
|
|
30
32
|
'xmlns:xsd': string;
|
|
31
33
|
'xmlns:xsi': string;
|
|
32
34
|
xmlns: string;
|
|
33
35
|
};
|
|
34
36
|
CCE: {
|
|
35
|
-
'xsi:schemaLocation': string;
|
|
36
37
|
'xmlns:ds': string;
|
|
37
38
|
'xmlns:xsd': string;
|
|
38
39
|
'xmlns:xsi': string;
|
|
39
40
|
xmlns: string;
|
|
40
41
|
};
|
|
41
42
|
CPCE: {
|
|
42
|
-
'xsi:schemaLocation': string;
|
|
43
43
|
'xmlns:ds': string;
|
|
44
44
|
'xmlns:xsd': string;
|
|
45
45
|
'xmlns:xsi': string;
|
|
46
46
|
xmlns: string;
|
|
47
47
|
};
|
|
48
48
|
RCE: {
|
|
49
|
-
'xsi:schemaLocation': string;
|
|
50
49
|
'xmlns:ds': string;
|
|
51
50
|
'xmlns:xsd': string;
|
|
52
51
|
'xmlns:xsi': string;
|
|
@@ -19,16 +19,17 @@ const COMMON_STRUCTURE = {
|
|
|
19
19
|
'xmlns:xsd': 'http://www.w3.org/2001/XMLSchema',
|
|
20
20
|
'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance'
|
|
21
21
|
};
|
|
22
|
-
const FE_XML_ATTRS = Object.assign(
|
|
23
|
-
const FEE_XML_ATTRS = Object.assign(
|
|
24
|
-
const NC_XML_ATTRS = Object.assign(
|
|
25
|
-
const ND_XML_ATTRS = Object.assign(
|
|
26
|
-
const MR_XML_ATTRS = Object.assign(
|
|
22
|
+
const FE_XML_ATTRS = Object.assign({ xmlns: FE_XML_SCHEMA_NS }, COMMON_STRUCTURE);
|
|
23
|
+
const FEE_XML_ATTRS = Object.assign({ xmlns: FE_XML_SCHEMA_NS }, COMMON_STRUCTURE);
|
|
24
|
+
const NC_XML_ATTRS = Object.assign({ xmlns: NC_XML_SCHEMA_NS }, COMMON_STRUCTURE);
|
|
25
|
+
const ND_XML_ATTRS = Object.assign({ xmlns: NC_XML_SCHEMA_NS }, COMMON_STRUCTURE);
|
|
26
|
+
const MR_XML_ATTRS = Object.assign({ xmlns: MR_XML_SCHEMA_NS }, COMMON_STRUCTURE);
|
|
27
27
|
exports.xmlExtructures = {
|
|
28
28
|
FacturaElectronica: FE_XML_ATTRS,
|
|
29
29
|
FacturaElectronicaExportacion: FEE_XML_ATTRS,
|
|
30
30
|
NotaCreditoElectronica: NC_XML_ATTRS,
|
|
31
31
|
NotaDebitoElectronica: ND_XML_ATTRS,
|
|
32
|
+
MensajeReceptor: MR_XML_ATTRS,
|
|
32
33
|
CCE: MR_XML_ATTRS,
|
|
33
34
|
CPCE: MR_XML_ATTRS,
|
|
34
35
|
RCE: MR_XML_ATTRS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xmlConfig.js","sourceRoot":"","sources":["../../../../src/lib/genXML/xmlConfig.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,gFAAgF,CAAA;AACzG,MAAM,iBAAiB,GAAG,2GAA2G,CAAA;AAErI,MAAM,iBAAiB,GAAG,2FAA2F,CAAA;AACrH,MAAM,kBAAkB,GAAG,+FAA+F,CAAA;AAE1H,MAAM,gBAAgB,GAAG,6EAA6E,CAAA;AAEtG,MAAM,gBAAgB,GAAG,oFAAoF,CAAA;AAC7G,MAAM,iBAAiB,GAAG,+GAA+G,CAAA;AAEzI,MAAM,gBAAgB,GAAG,mFAAmF,CAAA;AAC5G,MAAM,iBAAiB,GAAG,8GAA8G,CAAA;AAE3H,QAAA,WAAW,GAAG,wCAAwC,CAAA;AAEtD,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,MAAM;CACrB,CAAA;AAED,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,2CAA2C;CACzD,CAAA;AAED,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"xmlConfig.js","sourceRoot":"","sources":["../../../../src/lib/genXML/xmlConfig.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,gFAAgF,CAAA;AACzG,MAAM,iBAAiB,GAAG,2GAA2G,CAAA;AAErI,MAAM,iBAAiB,GAAG,2FAA2F,CAAA;AACrH,MAAM,kBAAkB,GAAG,+FAA+F,CAAA;AAE1H,MAAM,gBAAgB,GAAG,6EAA6E,CAAA;AAEtG,MAAM,gBAAgB,GAAG,oFAAoF,CAAA;AAC7G,MAAM,iBAAiB,GAAG,+GAA+G,CAAA;AAEzI,MAAM,gBAAgB,GAAG,mFAAmF,CAAA;AAC5G,MAAM,iBAAiB,GAAG,8GAA8G,CAAA;AAE3H,QAAA,WAAW,GAAG,wCAAwC,CAAA;AAEtD,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,MAAM;CACrB,CAAA;AAED,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,2CAA2C;CACzD,CAAA;AAED,MAAM,YAAY,mBAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,CAEpB,CAAA;AAED,MAAM,aAAa,mBACjB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,CAEpB,CAAA;AAED,MAAM,YAAY,mBAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,CAEpB,CAAA;AAED,MAAM,YAAY,mBAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,CAEpB,CAAA;AAED,MAAM,YAAY,mBAChB,KAAK,EAAE,gBAAgB,IACpB,gBAAgB,CAEpB,CAAA;AAEY,QAAA,cAAc,GAAG;IAC5B,kBAAkB,EAAE,YAAY;IAChC,6BAA6B,EAAE,aAAa;IAC5C,sBAAsB,EAAE,YAAY;IACpC,qBAAqB,EAAE,YAAY;IACnC,eAAe,EAAE,YAAY;IAC7B,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,YAAY;CAClB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@facturacr/atv-sdk",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.6",
|
|
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",
|
|
@@ -35,24 +35,28 @@ const mapOrderLinesToAtvFormat = (orderLines: OrderLine[]): DetalleServicio => {
|
|
|
35
35
|
return { LineaDetalle }
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
const parseAtvMoneyFormat = (amount: number) => {
|
|
39
|
+
return parseFloat(amount.toFixed(5))
|
|
40
|
+
}
|
|
41
|
+
|
|
38
42
|
const mapSummaryInvoice = (summaryInvoice: DomainDocument['summaryInvoice']): Resumen => {
|
|
39
43
|
return {
|
|
40
44
|
CodigoTipoMoneda: {
|
|
41
45
|
CodigoMoneda: summaryInvoice.currency.code,
|
|
42
46
|
TipoCambio: summaryInvoice.currency.exchangeRate
|
|
43
47
|
},
|
|
44
|
-
TotalServGravados: summaryInvoice.totalEncumberedServices,
|
|
45
|
-
TotalServExentos: summaryInvoice.totalExemptServices,
|
|
46
|
-
TotalMercanciasGravadas: summaryInvoice.totalEncumberedMerchandise,
|
|
47
|
-
TotalMercanciasExentas: summaryInvoice.totalExemptMerchandise,
|
|
48
|
-
TotalGravado: summaryInvoice.totalEncumbered,
|
|
49
|
-
TotalExento: summaryInvoice.totalExempt,
|
|
50
|
-
TotalExonerado: summaryInvoice.totalExonerated,
|
|
51
|
-
TotalVenta: summaryInvoice.totalSale,
|
|
52
|
-
TotalDescuentos: summaryInvoice.totalDiscounts,
|
|
53
|
-
TotalVentaNeta: summaryInvoice.totalNetSale,
|
|
54
|
-
TotalImpuesto: summaryInvoice.totalTaxes,
|
|
55
|
-
TotalComprobante: summaryInvoice.totalVoucher
|
|
48
|
+
TotalServGravados: parseAtvMoneyFormat(summaryInvoice.totalEncumberedServices),
|
|
49
|
+
TotalServExentos: parseAtvMoneyFormat(summaryInvoice.totalExemptServices),
|
|
50
|
+
TotalMercanciasGravadas: parseAtvMoneyFormat(summaryInvoice.totalEncumberedMerchandise),
|
|
51
|
+
TotalMercanciasExentas: parseAtvMoneyFormat(summaryInvoice.totalExemptMerchandise),
|
|
52
|
+
TotalGravado: parseAtvMoneyFormat(summaryInvoice.totalEncumbered),
|
|
53
|
+
TotalExento: parseAtvMoneyFormat(summaryInvoice.totalExempt),
|
|
54
|
+
TotalExonerado: parseAtvMoneyFormat(summaryInvoice.totalExonerated),
|
|
55
|
+
TotalVenta: parseAtvMoneyFormat(summaryInvoice.totalSale),
|
|
56
|
+
TotalDescuentos: parseAtvMoneyFormat(summaryInvoice.totalDiscounts),
|
|
57
|
+
TotalVentaNeta: parseAtvMoneyFormat(summaryInvoice.totalNetSale),
|
|
58
|
+
TotalImpuesto: parseAtvMoneyFormat(summaryInvoice.totalTaxes),
|
|
59
|
+
TotalComprobante: parseAtvMoneyFormat(summaryInvoice.totalVoucher)
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
|
|
@@ -27,31 +27,31 @@ const COMMON_STRUCTURE = {
|
|
|
27
27
|
const FE_XML_ATTRS = { // Factura Electronica
|
|
28
28
|
xmlns: FE_XML_SCHEMA_NS,
|
|
29
29
|
...COMMON_STRUCTURE,
|
|
30
|
-
'xsi:schemaLocation': `${FE_XML_SCHEMA_NS} ${FE_XML_SCHEMA_XSI}`
|
|
30
|
+
// 'xsi:schemaLocation': `${FE_XML_SCHEMA_NS} ${FE_XML_SCHEMA_XSI}`
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
const FEE_XML_ATTRS = { // Factura Electronica Exportación
|
|
34
34
|
xmlns: FE_XML_SCHEMA_NS,
|
|
35
35
|
...COMMON_STRUCTURE,
|
|
36
|
-
'xsi:schemaLocation': `${FEE_XML_SCHEMA_NS} ${FEE_XML_SCHEMA_XSI}`
|
|
36
|
+
// 'xsi:schemaLocation': `${FEE_XML_SCHEMA_NS} ${FEE_XML_SCHEMA_XSI}`
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
const NC_XML_ATTRS = { // Nota Credito Electronica
|
|
40
40
|
xmlns: NC_XML_SCHEMA_NS,
|
|
41
41
|
...COMMON_STRUCTURE,
|
|
42
|
-
'xsi:schemaLocation': `${NC_XML_SCHEMA_NS} ${NC_XML_SCHEMA_XSI}`
|
|
42
|
+
// 'xsi:schemaLocation': `${NC_XML_SCHEMA_NS} ${NC_XML_SCHEMA_XSI}`
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const ND_XML_ATTRS = { // Nota Credito Electronica
|
|
46
46
|
xmlns: NC_XML_SCHEMA_NS,
|
|
47
47
|
...COMMON_STRUCTURE,
|
|
48
|
-
'xsi:schemaLocation': `${ND_XML_SCHEMA_NS} ${ND_XML_SCHEMA_XSI}`
|
|
48
|
+
// 'xsi:schemaLocation': `${ND_XML_SCHEMA_NS} ${ND_XML_SCHEMA_XSI}`
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
const MR_XML_ATTRS = { // Mensaje Receptor
|
|
52
52
|
xmlns: MR_XML_SCHEMA_NS,
|
|
53
53
|
...COMMON_STRUCTURE,
|
|
54
|
-
'xsi:schemaLocation': `${MR_XML_SCHEMA_NS}`
|
|
54
|
+
// 'xsi:schemaLocation': `${MR_XML_SCHEMA_NS}`
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
export const xmlExtructures = {
|
|
@@ -59,6 +59,7 @@ export const xmlExtructures = {
|
|
|
59
59
|
FacturaElectronicaExportacion: FEE_XML_ATTRS,
|
|
60
60
|
NotaCreditoElectronica: NC_XML_ATTRS,
|
|
61
61
|
NotaDebitoElectronica: ND_XML_ATTRS,
|
|
62
|
+
MensajeReceptor: MR_XML_ATTRS,
|
|
62
63
|
CCE: MR_XML_ATTRS,
|
|
63
64
|
CPCE: MR_XML_ATTRS,
|
|
64
65
|
RCE: MR_XML_ATTRS
|
|
@@ -1,3 +0,0 @@
|
|
|
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+PEVtaXNvcj48Tm9tYnJlPkVtaXNvciBuYW1lPC9Ob21icmU+PElkZW50aWZpY2FjaW9uPjxUaXBvPjAxPC9UaXBvPjxOdW1lcm8+MjA2OTIwMTQyPC9OdW1lcm8+PC9JZGVudGlmaWNhY2lvbj48Tm9tYnJlQ29tZXJjaWFsPmVtaXNvciBjb21lcmNpYWwgbmFtZTwvTm9tYnJlQ29tZXJjaWFsPjxVYmljYWNpb24+PFByb3ZpbmNpYT4yPC9Qcm92aW5jaWE+PENhbnRvbj4wNjwvQ2FudG9uPjxEaXN0cml0bz4wNDwvRGlzdHJpdG8+PEJhcnJpbz4wNjwvQmFycmlvPjxPdHJhc1NlbmFzPmRldGFpbHM8L090cmFzU2VuYXM+PC9VYmljYWNpb24+PFRlbGVmb25vPjxDb2RpZ29QYWlzPjUwNjwvQ29kaWdvUGFpcz48TnVtVGVsZWZvbm8+MTIzNDEyMzQ8L051bVRlbGVmb25vPjwvVGVsZWZvbm8+PEZheD48Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+PE51bVRlbGVmb25vPjEyMzQxMjM0PC9OdW1UZWxlZm9ubz48L0ZheD48Q29ycmVvRWxlY3Ryb25pY28+dGVzdEB0ZXN0LmNvbTwvQ29ycmVvRWxlY3Ryb25pY28+PC9FbWlzb3I+PFJlY2VwdG9yPjxOb21icmU+cmVjZWl2ZXIgbmFtZSBTUkw8L05vbWJyZT48SWRlbnRpZmljYWNpb24+PFRpcG8+MDE8L1RpcG8+PE51bWVybz4yMDY5MzAxNDM8L051bWVybz48L0lkZW50aWZpY2FjaW9uPjxOb21icmVDb21lcmNpYWw+cmVjZWl2ZXIgbmFtZTwvTm9tYnJlQ29tZXJjaWFsPjxVYmljYWNpb24+PFByb3ZpbmNpYT4yPC9Qcm92aW5jaWE+PENhbnRvbj4wNjwvQ2FudG9uPjxEaXN0cml0bz4wNDwvRGlzdHJpdG8+PEJhcnJpbz4wNjwvQmFycmlvPjxPdHJhc1NlbmFzPmRldGFpbHM8L090cmFzU2VuYXM+PC9VYmljYWNpb24+PFRlbGVmb25vPjxDb2RpZ29QYWlzPjUwNjwvQ29kaWdvUGFpcz48TnVtVGVsZWZvbm8+ODA4MDgwODA8L051bVRlbGVmb25vPjwvVGVsZWZvbm8+PEZheD48Q29kaWdvUGFpcz41MDY8L0NvZGlnb1BhaXM+PE51bVRlbGVmb25vPjgwODA4MDgwPC9OdW1UZWxlZm9ubz48L0ZheD48Q29ycmVvRWxlY3Ryb25pY28+dGVzdEB0ZXN0LmNvbTwvQ29ycmVvRWxlY3Ryb25pY28+PC9SZWNlcHRvcj48Q29uZGljaW9uVmVudGE+MDE8L0NvbmRpY2lvblZlbnRhPjxNZWRpb1BhZ28+MDE8L01lZGlvUGFnbz48RGV0YWxsZVNlcnZpY2lvPjxMaW5lYURldGFsbGU+PE51bWVyb0xpbmVhPjE8L051bWVyb0xpbmVhPjxDb2RpZ28+NzExMzMwMTAwMDAwMDwvQ29kaWdvPjxDYW50aWRhZD4xPC9DYW50aWRhZD48VW5pZGFkTWVkaWRhPlVuaWQ8L1VuaWRhZE1lZGlkYT48RGV0YWxsZT5kZXRhbGxlPC9EZXRhbGxlPjxQcmVjaW9Vbml0YXJpbz4xMDwvUHJlY2lvVW5pdGFyaW8+PE1vbnRvVG90YWw+MTA8L01vbnRvVG90YWw+PFN1YlRvdGFsPjEwPC9TdWJUb3RhbD48SW1wdWVzdG8+PENvZGlnbz4wMTwvQ29kaWdvPjxDb2RpZ29UYXJpZmE+MDg8L0NvZGlnb1RhcmlmYT48VGFyaWZhPjEzPC9UYXJpZmE+PE1vbnRvPjEuMzwvTW9udG8+PC9JbXB1ZXN0bz48TW9udG9Ub3RhbExpbmVhPjExLjM8L01vbnRvVG90YWxMaW5lYT48L0xpbmVhRGV0YWxsZT48L0RldGFsbGVTZXJ2aWNpbz48UmVzdW1lbkZhY3R1cmE+PENvZGlnb1RpcG9Nb25lZGE+PENvZGlnb01vbmVkYT5DUkM8L0NvZGlnb01vbmVkYT48VGlwb0NhbWJpbz41ODUuNjk8L1RpcG9DYW1iaW8+PC9Db2RpZ29UaXBvTW9uZWRhPjxUb3RhbFNlcnZHcmF2YWRvcz4wPC9Ub3RhbFNlcnZHcmF2YWRvcz48VG90YWxTZXJ2RXhlbnRvcz4wPC9Ub3RhbFNlcnZFeGVudG9zPjxUb3RhbE1lcmNhbmNpYXNHcmF2YWRhcz4xMDwvVG90YWxNZXJjYW5jaWFzR3JhdmFkYXM+PFRvdGFsTWVyY2FuY2lhc0V4ZW50YXM+MDwvVG90YWxNZXJjYW5jaWFzRXhlbnRhcz48VG90YWxHcmF2YWRvPjEwPC9Ub3RhbEdyYXZhZG8+PFRvdGFsRXhlbnRvPjA8L1RvdGFsRXhlbnRvPjxUb3RhbEV4b25lcmFkbz4wPC9Ub3RhbEV4b25lcmFkbz48VG90YWxWZW50YT4xMDwvVG90YWxWZW50YT48VG90YWxEZXNjdWVudG9zPjA8L1RvdGFsRGVzY3VlbnRvcz48VG90YWxWZW50YU5ldGE+MTA8L1RvdGFsVmVudGFOZXRhPjxUb3RhbEltcHVlc3RvPjEuMzwvVG90YWxJbXB1ZXN0bz48VG90YWxDb21wcm9iYW50ZT4xMS4zPC9Ub3RhbENvbXByb2JhbnRlPjwvUmVzdW1lbkZhY3R1cmE+PC9GYWN0dXJhRWxlY3Ryb25pY2E+"`;
|
|
File without changes
|