diff --git a/__tests__/stubs/commonExpectedXml.xml b/__tests__/stubs/commonExpectedXml.xml index 2e08a8e..2a188bb 100644 --- a/__tests__/stubs/commonExpectedXml.xml +++ b/__tests__/stubs/commonExpectedXml.xml @@ -1,5 +1,5 @@ - + 50601042400020692014200100001010000000002100000001 000004 00100001010000000002 diff --git a/__tests__/tests/ATV/__snapshots__/create-document.test.ts.snap b/__tests__/tests/ATV/__snapshots__/create-document.test.ts.snap new file mode 100644 index 0000000..ad8e171 --- /dev/null +++ b/__tests__/tests/ATV/__snapshots__/create-document.test.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +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=="`; diff --git a/__tests__/tests/ATV/__snapshots__/index.test.ts.snap b/__tests__/tests/ATV/__snapshots__/index.test.ts.snap deleted file mode 100644 index fc5e53b..0000000 --- a/__tests__/tests/ATV/__snapshots__/index.test.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -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+"`; diff --git a/__tests__/tests/ATV/index.test.ts b/__tests__/tests/ATV/create-document.test.ts similarity index 100% rename from __tests__/tests/ATV/index.test.ts rename to __tests__/tests/ATV/create-document.test.ts diff --git a/__tests__/tests/ATV/create-receptor-message.test.ts b/__tests__/tests/ATV/create-receptor-message.test.ts new file mode 100644 index 0000000..35ad682 --- /dev/null +++ b/__tests__/tests/ATV/create-receptor-message.test.ts @@ -0,0 +1,41 @@ +import fs from 'fs' +import { ATV } from "@src/ATV"; +import { AceptationStates } from '@src/ATV/core/types'; +import { parseElectronicBillXML } from '@src/lib/genXML'; +const expectXml = fs.readFileSync('__tests__/stubs/commonExpectedXml.xml', 'utf-8') +const fakePem = fs.readFileSync('__tests__/stubs/dummyKeys/client-identity.p12', 'binary') +const fakePassword = '1234' +describe('Create Receptor Message', () => { + it('should create document and generate a correct command', async () => { + const atv = new ATV({}, 'stg') + const electronillBillRaw = parseElectronicBillXML(expectXml) + const { command, extraData } = await atv.createReceptorMessage({ + aceptationState: AceptationStates.ACCEPTED, + aceptationDetailMessage: 'Accepted', + clave: electronillBillRaw.Clave, + emitterIdentifier: electronillBillRaw.Emisor.Identificacion.Numero, + emitterIdentifierType: electronillBillRaw.Emisor.Identificacion.Tipo, + receptorIdentifier: electronillBillRaw.Receptor.Identificacion.Numero, + receptorIdentifierType: electronillBillRaw.Receptor.Identificacion.Tipo, + documentIssueDate: new Date(electronillBillRaw.FechaEmision), + activityCode: electronillBillRaw.CodigoActividad, + taxCondition: electronillBillRaw.CondicionVenta, + totalTaxes: electronillBillRaw.ResumenFactura.TotalImpuesto, + totalSale: electronillBillRaw.ResumenFactura.TotalVenta, + branch: '01', + terminal: '01', + consecutive: '01', + token: 'fake-token', + signatureOptions: { + buffer: fakePem, + password: fakePassword + } + }) + expect(command.data).toMatchObject({ + clave: '50601042400020692014200100001010000000002100000001', + fecha: '2024-04-01T00:00:00.000Z', + emisor: { tipoIdentificacion: electronillBillRaw.Emisor.Identificacion.Tipo, numeroIdentificacion: electronillBillRaw.Emisor.Identificacion.Numero }, + receptor: { tipoIdentificacion: electronillBillRaw.Receptor.Identificacion.Tipo, numeroIdentificacion: electronillBillRaw.Receptor.Identificacion.Numero } + }); + }); +}) \ No newline at end of file diff --git a/package.json b/package.json index ff7e1b4..c55484f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@facturacr/atv-sdk", - "version": "1.2.5", + "version": "1.2.6", "description": "Librería (SDK) de Javascript/NodeJS para acceder al API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", diff --git a/src/ATV/mappers/billDocToAtv.ts b/src/ATV/mappers/billDocToAtv.ts index 9e0476b..022a369 100644 --- a/src/ATV/mappers/billDocToAtv.ts +++ b/src/ATV/mappers/billDocToAtv.ts @@ -35,24 +35,28 @@ const mapOrderLinesToAtvFormat = (orderLines: OrderLine[]): DetalleServicio => { return { LineaDetalle } } +const parseAtvMoneyFormat = (amount: number) => { + return parseFloat(amount.toFixed(5)) +} + const mapSummaryInvoice = (summaryInvoice: DomainDocument['summaryInvoice']): Resumen => { return { CodigoTipoMoneda: { CodigoMoneda: summaryInvoice.currency.code, TipoCambio: summaryInvoice.currency.exchangeRate }, - TotalServGravados: summaryInvoice.totalEncumberedServices, - TotalServExentos: summaryInvoice.totalExemptServices, - TotalMercanciasGravadas: summaryInvoice.totalEncumberedMerchandise, - TotalMercanciasExentas: summaryInvoice.totalExemptMerchandise, - TotalGravado: summaryInvoice.totalEncumbered, - TotalExento: summaryInvoice.totalExempt, - TotalExonerado: summaryInvoice.totalExonerated, - TotalVenta: summaryInvoice.totalSale, - TotalDescuentos: summaryInvoice.totalDiscounts, - TotalVentaNeta: summaryInvoice.totalNetSale, - TotalImpuesto: summaryInvoice.totalTaxes, - TotalComprobante: summaryInvoice.totalVoucher + TotalServGravados: parseAtvMoneyFormat(summaryInvoice.totalEncumberedServices), + TotalServExentos: parseAtvMoneyFormat(summaryInvoice.totalExemptServices), + TotalMercanciasGravadas: parseAtvMoneyFormat(summaryInvoice.totalEncumberedMerchandise), + TotalMercanciasExentas: parseAtvMoneyFormat(summaryInvoice.totalExemptMerchandise), + TotalGravado: parseAtvMoneyFormat(summaryInvoice.totalEncumbered), + TotalExento: parseAtvMoneyFormat(summaryInvoice.totalExempt), + TotalExonerado: parseAtvMoneyFormat(summaryInvoice.totalExonerated), + TotalVenta: parseAtvMoneyFormat(summaryInvoice.totalSale), + TotalDescuentos: parseAtvMoneyFormat(summaryInvoice.totalDiscounts), + TotalVentaNeta: parseAtvMoneyFormat(summaryInvoice.totalNetSale), + TotalImpuesto: parseAtvMoneyFormat(summaryInvoice.totalTaxes), + TotalComprobante: parseAtvMoneyFormat(summaryInvoice.totalVoucher) } } diff --git a/src/lib/genXML/xmlConfig.ts b/src/lib/genXML/xmlConfig.ts index d43d75f..3c80371 100644 --- a/src/lib/genXML/xmlConfig.ts +++ b/src/lib/genXML/xmlConfig.ts @@ -27,31 +27,31 @@ const COMMON_STRUCTURE = { const FE_XML_ATTRS = { // Factura Electronica xmlns: FE_XML_SCHEMA_NS, ...COMMON_STRUCTURE, - 'xsi:schemaLocation': `${FE_XML_SCHEMA_NS} ${FE_XML_SCHEMA_XSI}` + // 'xsi:schemaLocation': `${FE_XML_SCHEMA_NS} ${FE_XML_SCHEMA_XSI}` } const FEE_XML_ATTRS = { // Factura Electronica Exportación xmlns: FE_XML_SCHEMA_NS, ...COMMON_STRUCTURE, - 'xsi:schemaLocation': `${FEE_XML_SCHEMA_NS} ${FEE_XML_SCHEMA_XSI}` + // 'xsi:schemaLocation': `${FEE_XML_SCHEMA_NS} ${FEE_XML_SCHEMA_XSI}` } const NC_XML_ATTRS = { // Nota Credito Electronica xmlns: NC_XML_SCHEMA_NS, ...COMMON_STRUCTURE, - 'xsi:schemaLocation': `${NC_XML_SCHEMA_NS} ${NC_XML_SCHEMA_XSI}` + // 'xsi:schemaLocation': `${NC_XML_SCHEMA_NS} ${NC_XML_SCHEMA_XSI}` } const ND_XML_ATTRS = { // Nota Credito Electronica xmlns: NC_XML_SCHEMA_NS, ...COMMON_STRUCTURE, - 'xsi:schemaLocation': `${ND_XML_SCHEMA_NS} ${ND_XML_SCHEMA_XSI}` + // 'xsi:schemaLocation': `${ND_XML_SCHEMA_NS} ${ND_XML_SCHEMA_XSI}` } const MR_XML_ATTRS = { // Mensaje Receptor xmlns: MR_XML_SCHEMA_NS, ...COMMON_STRUCTURE, - 'xsi:schemaLocation': `${MR_XML_SCHEMA_NS}` + // 'xsi:schemaLocation': `${MR_XML_SCHEMA_NS}` } export const xmlExtructures = {