Overview técnico
:::info Guía de lectura recomendada Este documento está organizado por pasos del flujo técnico de extremo a extremo. Para revisión ejecutiva, priorizar: Paso 2 (Extracción), Paso 4 (Envío), Paso 8 (Webhook) y sección de manejo de errores. :::
:::tip Glosario rápido
- DTE: Documento Tributario Electrónico.
- XSLT: Transformación estructural de XML.
- Webhook: Notificación automática de estado hacia sistemas externos. :::
1. Flujo Técnico Detallado
Paso 1 – Generación del XML en Oracle
- Evento disparador: Emisión de documento electrónico.
- Oracle genera XML personalizado.
- Archivo almacenado en:
[RUTA_SERVIDOR_ORACLE]
/Localhos/:ERP/
Formato:
01-M001P001-00000031.xml
Ver XML completo
<?xml version = '1.0' encoding = 'UTF-8'?>
<DATA_DS><Invoice><Header><InvoiceId>300019211574190</InvoiceId><InvoiceNumber>01-M001P001-00000031</InvoiceNumber><InvoiceDate>2026-02-13T00:00:00.000+00:00</InvoiceDate><InvoiceCreationDate>13-02-2026 09:16:12</InvoiceCreationDate><InvoiceLastUpdateDate>13-02-2026 14:55:13</InvoiceLastUpdateDate><CurrencyCode>USD</CurrencyCode><TrxClass>INV</TrxClass><ExchangeRateType/><ExchangeDate/><ExchangeRate/><TrxTypeId>300019201710011</TrxTypeId><TrxType>FE_VTA_BARRE_SVBES</TrxType><BatchSourcesId>300019201738376</BatchSourcesId><BatchSourcesName>SVBES_MANUAL_26</BatchSourcesName><PaymentTermId>300000003664010</PaymentTermId><PaymentTerm>0</PaymentTerm><SequenceId/><SequenceName/><SalesRepId/><SalesRepName/><BusinessUnitId>300001708031442</BusinessUnitId><BusinessUnit>SVBES</BusinessUnit><PurchaseOrder/><PurchaseOrderRevision/><PurchaseOrderDate/><CrossReference/><DocumentNumber/><Comments/><SpecialInstructions/><StructuredPaymentReference/><AmountInWords>Ciento Setenta con Veinte y Nueve Dolares</AmountInWords><Installment><DueDate>2026-02-13T00:00:00.000+00:00</DueDate><NumberOfDueDates>1</NumberOfDueDates><TotalLinesAmount>150.7</TotalLinesAmount><TotalTaxAmount>19.59</TotalTaxAmount><TransactionTotal>170.29</TransactionTotal></Installment><AdditionalLocalInformation><DocumentType>01</DocumentType><Serie>P001</Serie><InternalControlNumber/><EstablishmentCode>M001</EstablishmentCode><EstablishmentType>02</EstablishmentType><DeliveryConditions/><DeliveryConditionsDesc/><ExporRegimen/><ExporRegimenDesc/><DeliveryPort/><RefDte/><PaymentForms>1</PaymentForms><PaymentMethods>05</PaymentMethods><PeriodType>01</PeriodType><PeriodValue>1</PeriodValue><Environment>Test</Environment><EnvironmenCode>00</EnvironmenCode><OperationType>1</OperationType><ModelType>1</ModelType></AdditionalLocalInformation><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><GlobalAttribute30>N</GlobalAttribute30></AdditionalInformation><Issuer><Party><PartyId>300001708943887</PartyId><Id>06141610921080</Id><Name>Bimbo de El Salvador, S.A. de C.V.</Name><RegistrationNumber>06141610921080</RegistrationNumber><AdditionalLocalInformation><Nit>06141610921080</Nit><Nrc>714321</Nrc><DocumentType>36</DocumentType><EconomyActivity>10712</EconomyActivity><PhoneNumber>22393400</PhoneNumber><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>05</StateGeoCode><CountyGeoCode>09</CountyGeoCode><CityGeoCode>09</CityGeoCode></AdditionalLocalInformation><PhysicalLocalInformation><Address><LocationId>300001708943858</LocationId><PartySiteId>300001708943889</PartySiteId><PartySiteName/><AddressLine1>BLVD ACERO POLIG A, LOTE 6 Y 7 ANTES BOLEVARD PYNSA</AddressLine1><AddressLine2>CIUDAD MERLIOT</AddressLine2><AddressLine3/><AddressLine4/><City>Antiguo Cuscatlan</City><State>LA LIBERTAD</State><Province/><PostalCode/><County>Antiguo Cuscatlan</County><Country>Antiguo Cuscatlan</Country><CountryCode>SV</CountryCode><Mail>facturacion.bes@gbsupport.net</Mail><Geocoding>,</Geocoding><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute3>10712</Attribute3></AdditionalInformation></Address></PhysicalLocalInformation></Party></Issuer><Customer><Party><PartyId>300001811988379</PartyId><Id>027943562</Id><RegistrationTypeCode>SV_NIT</RegistrationTypeCode><RegistrationType>SV_NIT</RegistrationType><RegistrationStatusCode>SV_PC</RegistrationStatusCode><RegistrationStatus>SV Pequeño Contribuyente</RegistrationStatus><Name>REINALDO ROMEO ARGUETA</Name><AdditionalLocalInformation><DocumentNumber>027943562</DocumentNumber><DocumentType>36</DocumentType><Nrc>2640490</Nrc><EconomyActivity>01619</EconomyActivity><TaxpayerType>1</TaxpayerType><TaxpayerTypeDesc>Persona Natural</TaxpayerTypeDesc><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>06</StateGeoCode><CountyGeoCode>20</CountyGeoCode><CityGeoCode>5</CityGeoCode></AdditionalLocalInformation><ShipTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></ShipTo><BillTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></BillTo><Contact><Name>Reinaldo Romeo</Name><Phone>22393400</Phone><Mail>facturacion.bes@gbsupport.net</Mail></Contact></Party></Customer><Integration><DefaultAttributeCategory>El Salvador</DefaultAttributeCategory><EfdStatus>ATTRIBUTE10</EfdStatus><EfdKeyNumber>ATTRIBUTE6</EfdKeyNumber><EfdKeyDate>ATTRIBUTE7</EfdKeyDate><EfdMessage>ATTRIBUTE11</EfdMessage><EfdInternalControlNumber>ATTRIBUTE4</EfdInternalControlNumber></Integration></Header><Detail><Lines><LineId>300019211574191</LineId><LineNumber>1</LineNumber><UnitMeasure>zzy</UnitMeasure><ItemQuantity>1004.65</ItemQuantity><Description>BARREDURA SIN ENVOLTURA</Description><UnitSellingPrice>0.15</UnitSellingPrice><GrossUnitSellingPrice/><LineSellingPrice>150.7</LineSellingPrice><GrossExtendedAmount/><AdditionalLocalInformation><ProductType>1</ProductType><UnitOfMeasure>34</UnitOfMeasure><UnitOfMeasureDesc>Kilogramo</UnitOfMeasureDesc></AdditionalLocalInformation><AdditionalInformation/><Item><InventoryItemId>300000010711684</InventoryItemId><ItemCode>100235</ItemCode><ItemDescription>BARREDURA SIN ENVOLTURA</ItemDescription><PrimaryUnitMeasure/><UnitWeight/><WeightUnitMeasure/><AdditionalInformation><AttributeCategory>México</AttributeCategory><Attribute1>10121500</Attribute1></AdditionalInformation><ItemRelationships><ItemRelationshipType>ITEM_XREF</ItemRelationshipType><ItemRelationshipId>300000015524335</ItemRelationshipId><OrganizationId>300000001531404</OrganizationId><CrossReferenceType>GB BAR CODE</CrossReferenceType><CrossReference>7790001001153_100235</CrossReference><CrossReferenceDesc>BARREDURA SIN ENVOLTURA</CrossReferenceDesc><UomCode/><CrossReferenceId>300000015524335</CrossReferenceId><EpcGtinSerial/></ItemRelationships></Item><Taxes><LineId>3483249183</LineId><TransactionHeaderId>300019211574190</TransactionHeaderId><TransactionLineId>300019211574191</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>1</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017151</TaxId><Tax>SV_IVA_AR</Tax><TaxCode/><TaxStatusId>300001721017158</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>300001721017160</TaxRateId><TaxRateCode>SV_IVA_GRAL_BIENES_AR</TaxRateCode><TaxRate>13</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>19.59</TaxAmountTransac><TaxAmountFunCurr/><TaxableAmountTransac>150.7</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>IVA</RateCode><RateCodeDesc>IVA</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>GOODS</RateCode><RateCodeDesc>GOODS</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_RATE_CODE</RateCodeType><RateCode>20</RateCode><RateCodeDesc>Impuesto al Valor Agregado 13%</RateCodeDesc></Type></AdditionalLocalInformation></Taxes></Lines></Detail></Invoice></DATA_DS>
03-M001P001-10000030.xml
Ver XML completo
<?xml version = '1.0' encoding = 'UTF-8'?>
<DATA_DS><Invoice><Header><InvoiceId>300019211574200</InvoiceId><InvoiceNumber>03-M001P001-00000030</InvoiceNumber><InvoiceDate>2026-02-13T00:00:00.000+00:00</InvoiceDate><InvoiceCreationDate>13-02-2026 09:45:21</InvoiceCreationDate><InvoiceLastUpdateDate>13-02-2026 14:18:25</InvoiceLastUpdateDate><CurrencyCode>USD</CurrencyCode><TrxClass>INV</TrxClass><ExchangeRateType/><ExchangeDate/><ExchangeRate/><TrxTypeId>300019201710084</TrxTypeId><TrxType>CCF_VTA_BARRE_SVBES</TrxType><BatchSourcesId>300019201738376</BatchSourcesId><BatchSourcesName>SVBES_MANUAL_26</BatchSourcesName><PaymentTermId>300000003664010</PaymentTermId><PaymentTerm>0</PaymentTerm><SequenceId/><SequenceName/><SalesRepId/><SalesRepName/><BusinessUnitId>300001708031442</BusinessUnitId><BusinessUnit>SVBES</BusinessUnit><PurchaseOrder/><PurchaseOrderRevision/><PurchaseOrderDate/><CrossReference/><DocumentNumber/><Comments/><SpecialInstructions/><StructuredPaymentReference/><AmountInWords/><AdditionalLocalInformation><DocumentType>03</DocumentType><Serie>P001</Serie><InternalControlNumber/><EstablishmentCode>M001</EstablishmentCode><EstablishmentType>02</EstablishmentType><DeliveryConditions/><DeliveryConditionsDesc/><ExporRegimen/><ExporRegimenDesc/><DeliveryPort/><RefDte/><PaymentForms>1</PaymentForms><PaymentMethods>05</PaymentMethods><PeriodType>01</PeriodType><PeriodValue>1</PeriodValue><Environment>Test</Environment><EnvironmenCode>00</EnvironmenCode><OperationType>1</OperationType><ModelType>1</ModelType></AdditionalLocalInformation><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><GlobalAttribute30>N</GlobalAttribute30></AdditionalInformation><Issuer><Party><PartyId>300001708943887</PartyId><Id>06141610921080</Id><Name>Bimbo de El Salvador, S.A. de C.V.</Name><RegistrationNumber>06141610921080</RegistrationNumber><AdditionalLocalInformation><Nit>06141610921080</Nit><Nrc>714321</Nrc><DocumentType>36</DocumentType><EconomyActivity>10712</EconomyActivity><PhoneNumber>22393400</PhoneNumber><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>05</StateGeoCode><CountyGeoCode>09</CountyGeoCode><CityGeoCode>09</CityGeoCode></AdditionalLocalInformation><PhysicalLocalInformation><Address><LocationId>300001708943858</LocationId><PartySiteId>300001708943889</PartySiteId><PartySiteName/><AddressLine1>BLVD ACERO POLIG A, LOTE 6 Y 7 ANTES BOLEVARD PYNSA</AddressLine1><AddressLine2>CIUDAD MERLIOT</AddressLine2><AddressLine3/><AddressLine4/><City>Antiguo Cuscatlan</City><State>LA LIBERTAD</State><Province/><PostalCode/><County>Antiguo Cuscatlan</County><Country>Antiguo Cuscatlan</Country><CountryCode>SV</CountryCode><Mail>facturacion.bes@gbsupport.net</Mail><Geocoding>,</Geocoding><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute3>10712</Attribute3></AdditionalInformation></Address></PhysicalLocalInformation></Party></Issuer><Customer><Party><PartyId>300001811988379</PartyId><Id>027943562</Id><RegistrationTypeCode>SV_NIT</RegistrationTypeCode><RegistrationType>SV_NIT</RegistrationType><RegistrationStatusCode>SV_PC</RegistrationStatusCode><RegistrationStatus>SV Pequeño Contribuyente</RegistrationStatus><Name>REINALDO ROMEO ARGUETA</Name><AdditionalLocalInformation><DocumentNumber>027943562</DocumentNumber><DocumentType>36</DocumentType><Nrc>2640490</Nrc><EconomyActivity>01619</EconomyActivity><TaxpayerType>1</TaxpayerType><TaxpayerTypeDesc>Persona Natural</TaxpayerTypeDesc><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>06</StateGeoCode><CountyGeoCode>20</CountyGeoCode><CityGeoCode>5</CityGeoCode></AdditionalLocalInformation><ShipTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></ShipTo><BillTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></BillTo><Contact><Name>Reinaldo Romeo</Name><Phone>22393400</Phone><Mail>facturacion.bes@gbsupport.net</Mail></Contact></Party></Customer><Integration><DefaultAttributeCategory>El Salvador</DefaultAttributeCategory><EfdStatus>ATTRIBUTE10</EfdStatus><EfdKeyNumber>ATTRIBUTE6</EfdKeyNumber><EfdKeyDate>ATTRIBUTE7</EfdKeyDate><EfdMessage>ATTRIBUTE11</EfdMessage><EfdInternalControlNumber>ATTRIBUTE4</EfdInternalControlNumber></Integration></Header><Detail><Lines><LineId>300019211574201</LineId><LineNumber>1</LineNumber><UnitMeasure>zzy</UnitMeasure><ItemQuantity>1003.65</ItemQuantity><Description>BARREDURA CON ENVOLTURA</Description><UnitSellingPrice>0.15</UnitSellingPrice><GrossUnitSellingPrice/><LineSellingPrice>150.55</LineSellingPrice><GrossExtendedAmount/><AdditionalLocalInformation><ProductType>1</ProductType><UnitOfMeasure>34</UnitOfMeasure><UnitOfMeasureDesc>Kilogramo</UnitOfMeasureDesc></AdditionalLocalInformation><AdditionalInformation/><Item><InventoryItemId>300000010711680</InventoryItemId><ItemCode>100234</ItemCode><ItemDescription>BARREDURA CON ENVOLTURA</ItemDescription><PrimaryUnitMeasure/><UnitWeight/><WeightUnitMeasure/><AdditionalInformation/><ItemRelationships><ItemRelationshipType>ITEM_XREF</ItemRelationshipType><ItemRelationshipId>300000015524336</ItemRelationshipId><OrganizationId>300001717420775</OrganizationId><CrossReferenceType>GB BAR CODE</CrossReferenceType><CrossReference>7790001001153_100234</CrossReference><CrossReferenceDesc>BARREDURA CON ENVOLTURA</CrossReferenceDesc><UomCode/><CrossReferenceId>300000015524336</CrossReferenceId><EpcGtinSerial/></ItemRelationships></Item><Taxes><LineId>3483261240</LineId><TransactionHeaderId>300019211574200</TransactionHeaderId><TransactionLineId>300019211574201</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>1</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017151</TaxId><Tax>SV_IVA_AR</Tax><TaxCode/><TaxStatusId>300001721017158</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>300001721017160</TaxRateId><TaxRateCode>SV_IVA_GRAL_BIENES_AR</TaxRateCode><TaxRate>13</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>19.57</TaxAmountTransac><TaxAmountFunCurr/><TaxableAmountTransac>150.55</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>IVA</RateCode><RateCodeDesc>IVA</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>GOODS</RateCode><RateCodeDesc>GOODS</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_RATE_CODE</RateCodeType><RateCode>20</RateCode><RateCodeDesc>Impuesto al Valor Agregado 13%</RateCodeDesc></Type></AdditionalLocalInformation></Taxes><Taxes><LineId>3483261241</LineId><TransactionHeaderId>300019211574200</TransactionHeaderId><TransactionLineId>300019211574201</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>2</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017167</TaxId><Tax>SV_PERCEPCION_AR</Tax><TaxCode/><TaxStatusId>300001721017174</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>300001721017176</TaxRateId><TaxRateCode>SV_PERCEPCION_AR</TaxRateCode><TaxRate>1</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>1.51</TaxAmountTransac><TaxAmountFunCurr/><TaxableAmountTransac>150.55</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>PERC</RateCode><RateCodeDesc>PERCEPCION</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>BOTH</RateCode><RateCodeDesc>BOTH (BIENES Y SERVICIOS)</RateCodeDesc></Type></AdditionalLocalInformation></Taxes></Lines></Detail></Invoice></DATA_DS>
11-M001P001-00000002.xml
Ver XML completo
<?xml version = '1.0' encoding = 'UTF-8'?>
<DATA_DS><Invoice><Header><InvoiceId>300016514993752</InvoiceId><InvoiceNumber>11-M001P001-00000002</InvoiceNumber><InvoiceDate>2026-01-09T00:00:00.000+00:00</InvoiceDate><InvoiceCreationDate>09-01-2026 09:53:10</InvoiceCreationDate><InvoiceLastUpdateDate>09-01-2026 11:51:23</InvoiceLastUpdateDate><CurrencyCode>USD</CurrencyCode><TrxClass>INV</TrxClass><ExchangeRateType/><ExchangeDate/><ExchangeRate/><TrxTypeId>300016437241127</TrxTypeId><TrxType>FEXE_SERV_CORP_FI_SV</TrxType><BatchSourcesId>300016515021307</BatchSourcesId><BatchSourcesName>SVBLES_MANUAL_2026</BatchSourcesName><PaymentTermId>300000011022841</PaymentTermId><PaymentTerm>30</PaymentTerm><SequenceId/><SequenceName/><SalesRepId/><SalesRepName/><BusinessUnitId>300008039669821</BusinessUnitId><BusinessUnit>SVBLES</BusinessUnit><PurchaseOrder>269475943</PurchaseOrder><PurchaseOrderRevision/><PurchaseOrderDate/><CrossReference/><DocumentNumber/><Comments>Servicios</Comments><SpecialInstructions/><StructuredPaymentReference/><AmountInWords>Dieciséis mil Dolares</AmountInWords><Installment><DueDate>2026-02-08T00:00:00.000+00:00</DueDate><NumberOfDueDates>1</NumberOfDueDates><TotalLinesAmount>16000</TotalLinesAmount><TotalTaxAmount>0</TotalTaxAmount><TransactionTotal>16000</TransactionTotal></Installment><AdditionalLocalInformation><DocumentType>11</DocumentType><Serie>P001</Serie><InternalControlNumber>85C11B71-DF3E-4960-918E-18AE3260117F</InternalControlNumber><EstablishmentCode>M001</EstablishmentCode><EstablishmentType>02</EstablishmentType><DeliveryConditions/><DeliveryConditionsDesc/><ExporRegimen/><ExporRegimenDesc/><DeliveryPort/><RefDte>2026710C09412D064A07BBBF03135D8D9D2A6OOI</RefDte><PaymentForms>2</PaymentForms><PaymentMethods>05</PaymentMethods><PeriodType>02</PeriodType><PeriodValue>30</PeriodValue><Environment>Test</Environment><EnvironmenCode>00</EnvironmenCode><OperationType>1</OperationType><ModelType>1</ModelType></AdditionalLocalInformation><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute4>85C11B71-DF3E-4960-918E-18AE3260117F</Attribute4><Attribute6>2026710C09412D064A07BBBF03135D8D9D2A6OOI</Attribute6><Attribute7>2026-01-09 10:29:21</Attribute7><Attribute11>RECIBIDO CON OBSERVACIONES</Attribute11><GlobalAttribute30>N</GlobalAttribute30></AdditionalInformation><Issuer><Party><PartyId>300008038827295</PartyId><Id>5011602231011</Id><Name>Barcel De El Salvador, S.A. de C.V.</Name><RegistrationNumber>05011602231011</RegistrationNumber><AdditionalLocalInformation><Nit>5011602231011</Nit><Nrc>3251454</Nrc><DocumentType>36</DocumentType><EconomyActivity>10794</EconomyActivity><PhoneNumber>22393400</PhoneNumber><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>05</StateGeoCode><CountyGeoCode>26</CountyGeoCode><CityGeoCode>01</CityGeoCode></AdditionalLocalInformation><PhysicalLocalInformation><Address><LocationId>300008038827291</LocationId><PartySiteId>300008038827297</PartySiteId><PartySiteName/><AddressLine1>Boulevar Acero, Poligono A Lote 5</AddressLine1><AddressLine2>Ciudad Merliot, Antiguo Cuscatlan</AddressLine2><AddressLine3/><AddressLine4/><City>ANTIGUO CUSCATLAN</City><State>LA LIBERTAD</State><Province/><PostalCode/><County>LA LIBERTAD ESTE</County><Country>ANTIGUO CUSCATLAN</Country><CountryCode>SV</CountryCode><Mail>nelson.montano@grupobimbo.com</Mail><Geocoding>,</Geocoding><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>3251454</Attribute1><Attribute3>10794</Attribute3></AdditionalInformation></Address></PhysicalLocalInformation></Party></Issuer><Customer><Party><PartyId>300008197978104</PartyId><Id>923842744</Id><RegistrationTypeCode>SV_EXT</RegistrationTypeCode><RegistrationType>SV - Otro(extranjero)</RegistrationType><RegistrationStatusCode/><RegistrationStatus/><Name>CELBAR SNACKS INTERNATIONAL, LLC</Name><AdditionalLocalInformation><DocumentNumber>923842744</DocumentNumber><DocumentType>37</DocumentType><Nrc/><EconomyActivity>10005</EconomyActivity><TaxpayerType>2</TaxpayerType><TaxpayerTypeDesc>Persona Jurídica</TaxpayerTypeDesc><CountryGeoCode>9450</CountryGeoCode><StateGeoCode/><CountyGeoCode/><CityGeoCode/></AdditionalLocalInformation><ShipTo><Address><LocationId>300008197978236</LocationId><PartySiteId>300008197978234</PartySiteId><PartySiteName>SVBLES15686555</PartySiteName><AddressLine1>301 Northpoint Dr. Suite 100</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Coppell</City><State>TX</State><Province/><County/><PostalCode>75019</PostalCode><CountryCode>US</CountryCode><Country>United States</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute4>05</Attribute4><Attribute5>02</Attribute5></AdditionalInformation></Address></ShipTo><BillTo><Address><LocationId>300008197978109</LocationId><PartySiteId>300008197978108</PartySiteId><PartySiteName>SVBLES15686554</PartySiteName><AddressLine1>301 Northpoint Dr. Suite 100</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Coppell</City><State>TX</State><Province/><County/><PostalCode>75019</PostalCode><CountryCode>US</CountryCode><Country>United States</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute3>10005</Attribute3><Attribute4>05</Attribute4><Attribute5>02</Attribute5></AdditionalInformation></Address></BillTo><Contact><Name>Mirian Coronado</Name><Phone>52685300</Phone><Mail>miriam.coronado@grupobimbo.com</Mail></Contact></Party></Customer><Integration><DefaultAttributeCategory>El Salvador</DefaultAttributeCategory><EfdStatus>ATTRIBUTE10</EfdStatus><EfdKeyNumber>ATTRIBUTE6</EfdKeyNumber><EfdKeyDate>ATTRIBUTE7</EfdKeyDate><EfdMessage>ATTRIBUTE11</EfdMessage><EfdInternalControlNumber>ATTRIBUTE4</EfdInternalControlNumber></Integration></Header><Detail><Lines><LineId>300016514993753</LineId><LineNumber>1</LineNumber><UnitMeasure>zzs</UnitMeasure><ItemQuantity>4</ItemQuantity><Description>CASTIGO DE CARTERA</Description><UnitSellingPrice>4000</UnitSellingPrice><GrossUnitSellingPrice/><LineSellingPrice>16000</LineSellingPrice><GrossExtendedAmount/><AdditionalLocalInformation><ProductType>1</ProductType><UnitOfMeasure>99</UnitOfMeasure><UnitOfMeasureDesc>Otros</UnitOfMeasureDesc></AdditionalLocalInformation><AdditionalInformation/><Item><InventoryItemId>100000215076396</InventoryItemId><ItemCode>F-120</ItemCode><ItemDescription>CASTIGO DE CARTERA</ItemDescription><PrimaryUnitMeasure/><UnitWeight>1</UnitWeight><WeightUnitMeasure>zzy</WeightUnitMeasure><AdditionalInformation><AttributeCategory>México</AttributeCategory></AdditionalInformation></Item><Taxes><LineId>3007942120</LineId><TransactionHeaderId>300016514993752</TransactionHeaderId><TransactionLineId>300016514993753</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>1</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017151</TaxId><Tax>SV_IVA_AR</Tax><TaxCode/><TaxStatusId>300001721017158</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>100000823971577</TaxRateId><TaxRateCode>SV_IVA_EXENTO_AR</TaxRateCode><TaxRate>0</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>0</TaxAmountTransac><TaxAmountFunCurr>0</TaxAmountFunCurr><TaxableAmountTransac>16000</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>EXENTO</RateCode><RateCodeDesc>EXENTO</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>GOODS</RateCode><RateCodeDesc>GOODS</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_RATE_CODE</RateCodeType><RateCode>C3</RateCode><RateCodeDesc>Impuesto al Valor Agregado (exportaciones) 0%</RateCodeDesc></Type></AdditionalLocalInformation></Taxes></Lines></Detail></Invoice></DATA_DS>
Paso 2 – Extracción Canónica
Servicio: Extractor Canónico GoSocket
Frecuencia:
Cada 5 minutos (configurable)
Método de conexión:
[Tipo de Conexión API]
End point: Varía según tipo de documento. Se detalla en el recuadro más abajo
Protocolo: HTTPS
Los end points para la extracción están sectorizados por tipo de documento y por ambiente según el siguiente cuadro:
| Flow | Description | Document Type | Endpoints |
|---|---|---|---|
| AR 📤 | Accounts Receivable | All, except 07 & 14 | 200 QA 300 UAT |
| AP 📥 | Accounts Payable | Only 07 | 200 QA 300 UAT |
| AP 📥 | Accounts Payable | Only 14 | 200 QA 300 UAT |
Proceso:
- Consulta existencia de archivos.
- Descarga archivo.
- Marca archivo como procesado.
Paso 3 – Transformación XSLT #1
Entrada:
XML Oracle (Ejemplos adjunos en el paso 1)
Transformación:
Archivo: 94d3b021-88f3-447c-8c9c-330aeadcfc73.xslt
<?xml version="1.0" encoding="UTF-8"?>
<!--Extractor Canónico Bimbo Oracle
Author : Ricardo Carretero
Last Update: David Llique
Date: 20-01-2026
Version: 2025-12-15_001
Description: Ajuste en el mapeo del campo fecha de referencia.
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />
<xsl:key name="tiposdeimpuesto" match="/Invoice/Detail/Lines/Taxes/AdditionalLocalInformation/Type" use="RateCode" />
<xsl:template match="/">
<xsl:variable name="currentdate" select="current-dateTime()" />
<xsl:variable name="Invoicenumber" select="number(substring(/Invoice/Header/InvoiceNumber, 13, 20))" />
<!-- ... Contenido completo del XSLT (~850 líneas de transformación) ... -->
<!--
Este XSLT transforma datos de Oracle ERP a formato DTE GoSocket para El Salvador.
Características principales:
- Soporta múltiples tipos de documentos: 01, 03, 05, 06, 07, 11, 14, INV
- Maneja conversión de montos a letras (español)
- Procesa impuestos, retenciones y percepciones
- Gestiona contingencias y referencias a documentos previos
- Mapeo de códigos de actividad económica
Estructura completa disponible con el equipo de implementación.
-->
</xsl:template>
<!-- Templates de conversión numérica a letras -->
<xsl:template name="convertir-numero-a-letra-principal">
<xsl:param name="numero" as="xs:string" />
<!-- ... implementación completa ... -->
</xsl:template>
<xsl:template name="convertir-unidades">
<xsl:param name="unidades" />
<!-- ... implementación completa ... -->
</xsl:template>
<xsl:template name="convertir-decenas">
<xsl:param name="decenas" />
<xsl:param name="unidades" />
<!-- ... implementación completa ... -->
</xsl:template>
<xsl:template name="convertir-centenas">
<xsl:param name="numero" />
<!-- ... implementación completa ... -->
</xsl:template>
<xsl:template name="convertir-miles">
<xsl:param name="miles" />
<xsl:param name="resto" />
<!-- ... implementación completa ... -->
</xsl:template>
<xsl:template name="convertir-millones">
<xsl:param name="millones" />
<xsl:param name="resto" />
<!-- ... implementación completa ... -->
</xsl:template>
</xsl:stylesheet>
Nota: Este XSLT contiene más de 850 líneas de lógica de transformación compleja. Por razones de brevedad y seguridad, se muestra una versión resumida con el encabezado y estructura. El archivo completo incluye:
- Templates principales: Procesamiento de todos los tipos de documentos DTE (facturas, créditos fiscales, retenciones, anulaciones, etc.)
- Conversión numérica: Sistema completo de conversión de números a letras en español (hasta millones con decimales)
- Mapeo de impuestos: Identificación y cálculo de IVA, retenciones, percepciones y tributos especiales
- Gestión de datos: Emisor, receptor, totales, referencias, contingencias y campos personalizados
El archivo completo está disponible a través del equipo de integración de Bimbo/GoSocket.
Salida:
XML DTE (Formato GoSocket)
Ver XML completo
<?xml version="1.0" encoding="UTF-8"?>
<DTE>
<Documento>
<Encabezado>
<IdDoc>
<Ambiente>00</Ambiente>
<Tipo>11</Tipo>
<Numero>000000000000002</Numero>
<FechaEmis>2026-01-09T00:00:00</FechaEmis>
<horEmi>00:00:00</horEmi>
<TipoServicio>1</TipoServicio>
<TipoOperacion>1</TipoOperacion>
<NatOperacion>1</NatOperacion>
<PtoEmis/>
<CondPago>2</CondPago>
<Observaciones>Servicios</Observaciones>
<Pagos>
<FormaPago>05</FormaPago>
<CondPago>02</CondPago>
<TermPagoDias>30</TermPagoDias>
<Monto>16000</Monto>
</Pagos>
<Incoterms>
<CodIncoterms/>
<IncotermDs/>
</Incoterms>
<Contingencia>
<TipoCont/>
<MotivoCont/>
</Contingencia>
<ExtraInfoDoc name="regimen"/>
</IdDoc>
<Emisor>
<RegimenContable>3251454</RegimenContable>
<DocEmisor>
<TipoDocEmisor>36</TipoDocEmisor>
<NroDocEmisor>5011602231011</NroDocEmisor>
</DocEmisor>
<IDEmisor>05011602231011</IDEmisor>
<NmbEmisor>Barcel De El Salvador, S.A. de C.V.</NmbEmisor>
<NombreEmisor>
<PrimerNombre>Barcel De El Salvador, S.A. de C.V.</PrimerNombre>
</NombreEmisor>
<CodigoEmisor>
<TpoCdgIntEmisor>actividad</TpoCdgIntEmisor>
<CdgIntEmisor>10794</CdgIntEmisor>
</CodigoEmisor>
<TipoSucursal>02</TipoSucursal>
<CdgSucursal>M001</CdgSucursal>
<CdgVendedor>P001</CdgVendedor>
<DomFiscal>
<Calle>Boulevar Acero, Poligono A Lote 5</Calle>
<Departamento>05</Departamento>
<Municipio>26</Municipio>
</DomFiscal>
<ContactoEmisor>
<Tipo>Matriz</Tipo>
<eMail>nelson.montano@grupobimbo.com</eMail>
<Telefono>22393400</Telefono>
</ContactoEmisor>
<ExtraInfoEmisor name="codPuntoVenta">P001</ExtraInfoEmisor>
<ExtraInfoEmisor name="nomEstablecimiento">M001</ExtraInfoEmisor>
</Emisor>
<Receptor>
<RegimenContableR/>
<TipoContribuyenteR>2</TipoContribuyenteR>
<DocRecep>
<TipoDocRecep>37</TipoDocRecep>
<NroDocRecep>923842744</NroDocRecep>
</DocRecep>
<NmbRecep>CELBAR SNACKS INTERNATIONAL, LLC</NmbRecep>
<CodigoReceptor>
<TpoCdgIntRecep>actividad</TpoCdgIntRecep>
<CdgIntRecep>10005</CdgIntRecep>
</CodigoReceptor>
<DomFiscalRcp>
<Calle>301 Northpoint Dr. Suite 100</Calle>
<Departamento/>
<CodigoPais>US</CodigoPais>
<Municipio/>
<Pais>United States</Pais>
</DomFiscalRcp>
<ContactoReceptor>
<eMail>miriam.coronado@grupobimbo.com</eMail>
<Telefono>52685300</Telefono>
</ContactoReceptor>
</Receptor>
<Totales>
<Moneda>USD</Moneda>
<MntRet>0.00</MntRet>
<FctConv/>
<SubTotal>16000</SubTotal>
<MntDcto>0</MntDcto>
<MntBase>16000</MntBase>
<ImporteOtrosTributos>16000.00</ImporteOtrosTributos>
<MntImp>0.00</MntImp>
<MontoTotal>16000</MontoTotal>
<VlrPagar>16000</VlrPagar>
<VlrPalabras>Dieciséis mil Dolares</VlrPalabras>
</Totales>
<Impuestos>
<CodTasaImp>C3</CodTasaImp>
<MontoImp>0.00</MontoImp>
<Descripcion>Impuesto al Valor Agregado (exportaciones) 0%</Descripcion>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<VlrCodigo>F-120</VlrCodigo>
</CdgItem>
<TpoListaItem>1</TpoListaItem>
<DscItem>CASTIGO DE CARTERA</DscItem>
<QtyItem>4</QtyItem>
<UnmdItem>99</UnmdItem>
<PrcNetoItem>4000</PrcNetoItem>
<ImpuestosDet>
<CodTasaImp>C3</CodTasaImp>
</ImpuestosDet>
<SubMonto>
<Tipo>ventaGravada</Tipo>
<MontoConcepto>16000</MontoConcepto>
</SubMonto>
<ExtraInfoDetalle name="numeroDocumento"/>
</Detalle>
<TimeStamp>25-02-2026 15:45:13</TimeStamp>
</Documento>
<Personalizados>
<DocPersonalizado>
<campoString name="DGII_WMOC">269475943</campoString>
</DocPersonalizado>
</Personalizados>
</DTE>
Validaciones:
- Estructura XML
- Campos obligatorios
- Formato tributario
- Totales
Escenarios:
| Escenario | Resultado |
|---|---|
| Éxito | Continúa flujo |
| Error | Registro de error + Log técnico |
Paso 4 – Envío DTE a API GoSocket
Endpoint:
https://developers-sbx.gosocket.net/api/v1/Document/SendDocumentToAuthority
Método:
POST
Headers:
Authorization: Basic auth
Content-Type: application/xml
Proceso interno:
- Recepción
- Validación estructural
- Transformación XSLT #2
Paso 5 – Transformación XSLT #2 (DTE → DGI)
Entrada:
XML DTE (Ejemplo adjunto en el paso 3)
Transformación:
Archivo: f6deb258-6dd1-4d2a-89d1-dccd2495904d.xslt
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTE_v1.9.xsd to JSON el Salvador :: By Eric Van Boxsom :: Version 0.0.8:: Last Update: 26-04-2023 - Paula Bustos
:::::::::::::::::::::::::::::::::::::
:::::::::Release Notes 0.0.8:::::::::
:::::::::::::::::::::::::::::::::::::
:::::::::SANDBOX ENVIRONMENT:::::::::
:::::::::::::::::::::::::::::::::::::
Control de Cambios: Paula Bustos 25 de Agosto de 2023 - Unificación cambios API y xDoc
Control de Cambios: Paula Bustos 25 de Septiembre de 2023 - Tomar UUID del cliente y manejo de etiqueta personalizada de la DGII
Control de Cambios: Paula Bustos 30 de Octubre de 2023 - Actualización URL de actividades comerciales
Control de Cambios: Paula Bustos 23 de Noviembre de 2023 - mapeo descripción de la actividad economica
Control de Cambios: Paula Bustos 29 de Noviembre de 2023 - Notas de Crédito con varios documentos relacionados
Control de Cambios: Ricardo Carretero 24 de Octubre de 2024 - Se dejan opcionales los campos receptor.tipoDocumento y receptor.numDocumento para la factura (decreto Ejecutivo No. 94)
Control de Cambios: Adriana Jaramillo 8 de agosto de 2025 - Se permite llevar como NIT el documento para el tipo de identificacion 13-DUI
Control de Cambios: Ricardo Carretero 07012026 se agrega nodo compraTercero para factura de exportación
-->
<xsl:stylesheet version="3.0" xmlns="http://www.w3.org/2005/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8" indent="true" media-type="application/json"/>
<xsl:param name="uuid"/>
<xsl:template match="DTE">
<xsl:variable name="xml">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'INV'">
<map>
<map key="identificacion">
<number key="version">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'INV'">
<xsl:value-of select="2"/>
</xsl:when>
</xsl:choose>
</number>
<string key="ambiente">
<xsl:value-of select="Documento/Encabezado/IdDoc/Ambiente"/>
</string>
<string key="codigoGeneracion">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/ContenidoTC">
<xsl:value-of select="normalize-space(Documento/Encabezado/IdDoc/ContenidoTC)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="upper-case($uuid)"/>
</xsl:otherwise>
</xsl:choose>
</string>
<string key="fecAnula">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 1, 10)"/>
</string>
<string key="horAnula">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 12, 8)"/>
</string>
</map>
<map key="emisor">
<string key="nit">
<xsl:value-of select="Documento/Encabezado/Emisor/IDEmisor"/>
</string>
<string key="nombre">
<xsl:value-of select="Documento/Encabezado/Emisor/NmbEmisor"/>
</string>
<string key="tipoEstablecimiento">
<xsl:value-of select="Documento/Encabezado/Emisor/TipoSucursal"/>
</string>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'nomEstablecimiento'] != ''">
<string key="nomEstablecimiento">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'nomEstablecimiento']"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="nomEstablecimiento"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/CdgSucursal != ''">
<string key="codEstableMH">
<xsl:value-of select="Documento/Encabezado/Emisor/CdgSucursal"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codEstableMH"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/Sucursal != ''">
<string key="codEstable">
<xsl:value-of select="Documento/Encabezado/Emisor/Sucursal"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codEstable"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/CdgVendedor != ''">
<string key="codPuntoVentaMH">
<xsl:value-of select="Documento/Encabezado/Emisor/CdgVendedor"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codPuntoVentaMH"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta'] != ''">
<string key="codPuntoVenta">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta']"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codPuntoVenta"/>
</xsl:otherwise>
</xsl:choose>
<string key="telefono">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/Telefono"/>
</string>
<string key="correo">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/eMail"/>
</string>
</map>
<map key="documento">
<string key="tipoDte">
<xsl:value-of select="Documento/Referencia/TpoDocRef"/>
</string>
<string key="codigoGeneracion">
<xsl:value-of select="Documento/Referencia/NumeroRef"/>
</string>
<string key="selloRecibido">
<xsl:value-of select="Documento/Referencia/ECB01"/>
</string>
<string key="numeroControl">
<xsl:value-of select="Documento/Referencia/ECB02"/>
</string>
<string key="fecEmi">
<xsl:value-of select="substring(Documento/Referencia/FechaRef, 1, 10)"/>
</string>
<number key="montoIva">
<xsl:value-of select="Documento/Referencia/MontosRef/Monto"/>
</number>
<xsl:choose>
<xsl:when test="string-length(Documento/Referencia/ECB03) gt 0">
<string key="codigoGeneracionR">
<xsl:value-of select="Documento/Referencia/ECB03"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codigoGeneracionR"/>
</xsl:otherwise>
</xsl:choose>
<string key="tipoDocumento">
<xsl:value-of select="Documento/Encabezado/Receptor/DocRecep/TipoDocRecep"/>
</string>
<string key="numDocumento">
<xsl:value-of select="Documento/Encabezado/Receptor/DocRecep/NroDocRecep"/>
</string>
<string key="nombre">
<xsl:value-of select="Documento/Encabezado/Receptor/NmbRecep"/>
</string>
<string key="telefono">
<xsl:value-of select="Documento/Encabezado/Receptor/ContactoReceptor/Telefono"/>
</string>
<string key="correo">
<xsl:value-of select="Documento/Encabezado/Receptor/ContactoReceptor/eMail"/>
</string>
</map>
<map key="motivo">
<number key="tipoAnulacion">
<xsl:value-of select="Documento/Referencia/ECB04"/>
</number>
<string key="motivoAnulacion">
<xsl:value-of select="Documento/Referencia/ECB05"/>
</string>
<string key="nombreResponsable">
<xsl:value-of select="Documento/Referencia/ECB06"/>
</string>
<string key="tipDocResponsable">
<xsl:value-of select="Documento/Referencia/ECB07"/>
</string>
<string key="numDocResponsable">
<xsl:value-of select="Documento/Referencia/ECB08"/>
</string>
<string key="nombreSolicita">
<xsl:value-of select="Documento/Referencia/ECB09"/>
</string>
<string key="tipDocSolicita">
<xsl:value-of select="Documento/Referencia/ECB10"/>
</string>
<string key="numDocSolicita">
<xsl:value-of select="Documento/Referencia/ECB11"/>
</string>
</map>
</map>
</xsl:when>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'CTG'">
<map>
<map key="identificacion">
<number key="version">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'CTG'">
<xsl:value-of select="3"/>
</xsl:when>
</xsl:choose>
</number>
<string key="ambiente">
<xsl:value-of select="Documento/Encabezado/IdDoc/Ambiente"/>
</string>
<string key="codigoGeneracion">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/ContenidoTC">
<xsl:value-of select="normalize-space(Documento/Encabezado/IdDoc/ContenidoTC)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="upper-case($uuid)"/>
</xsl:otherwise>
</xsl:choose>
</string>
<string key="fTransmision">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 1, 10)"/>
</string>
<string key="hTransmision">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 12, 8)"/>
</string>
</map>
<map key="emisor">
<string key="nit">
<xsl:value-of select="Documento/Encabezado/Emisor/IDEmisor"/>
</string>
<string key="nombre">
<xsl:value-of select="Documento/Encabezado/Emisor/NmbEmisor"/>
</string>
<string key="tipoEstablecimiento">
<xsl:value-of select="Documento/Encabezado/Emisor/TipoSucursal"/>
</string>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/CdgSucursal != ''">
<string key="codEstableMH">
<xsl:value-of select="Documento/Encabezado/Emisor/CdgSucursal"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codEstableMH"/>
</xsl:otherwise>
</xsl:choose>
<string key="nombreResponsable">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/Nombre"/>
</string>
<string key="correo">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/eMail"/>
</string>
<string key="telefono">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/Telefono"/>
</string>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta'] != ''">
<string key="codPuntoVenta">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta']"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codPuntoVenta"/>
</xsl:otherwise>
</xsl:choose>
<string key="tipoDocResponsable">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'tipoDocResponsable']"/>
</string>
<string key="numeroDocResponsable">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'numeroDocResponsable']"/>
</string>
</map>
<array key="detalleDTE">
<xsl:for-each select="Documento/Referencia">
<map>
<number key="noItem">
<xsl:value-of select="position()"/>
</number>
<string key="tipoDoc">
<xsl:value-of select="TpoDocRef"/>
</string>
<string key="codigoGeneracion">
<xsl:value-of select="NumeroRef"/>
</string>
</map>
</xsl:for-each>
</array>
<map key="motivo">
<string key="fInicio">
<xsl:value-of select="Documento/Referencia/ECB01"/>
</string>
<string key="fFin">
<xsl:value-of select="Documento/Referencia/ECB02"/>
</string>
<string key="hInicio">
<xsl:value-of select="Documento/Referencia/ECB03"/>
</string>
<string key="hFin">
<xsl:value-of select="Documento/Referencia/ECB04"/>
</string>
<number key="tipoContingencia">
<xsl:value-of select="Documento/Referencia/ECB05"/>
</number>
<string key="motivoContingencia">
<xsl:value-of select="Documento/Referencia/ECB05"/>
</string>
</map>
</map>
</xsl:when>
<xsl:otherwise>
<!-- ... Contenido completo del XSLT con más de 4000 líneas ... -->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="xml-to-json($xml)"/>
</xsl:template>
<xsl:template name="UseGC">
<xsl:param name="Code"/>
<xsl:value-of select="normalize-space(document('https://globallistgc.blob.core.windows.net/globallistgc/listas/pais/sv/gc/v1/ActividadEconomica-SV.gc')/*//Row[Value/SimpleValue = $Code][1]/Value[2]/SimpleValue/text())"/>
</xsl:template>
</xsl:stylesheet>
Nota: Este XSLT transforma documentos DTE (formato GoSocket) a JSON para consumo de la DGI de El Salvador. El archivo completo contiene más de 4000 líneas con soporte completo para todos los tipos de documentos electrónicos (01-15, INV, CTG), incluyendo:
- Anulaciones (INV): Gestión de anulaciones con motivos y responsables
- Contingencias (CTG): Transmisión de lotes de documentos emitidos durante contingencias
- Facturas (01, 03, 04, 05, 06): Con soporte completo para IVA, percepciones, retenciones
- Comprobantes de retención (07): Cálculo de retenciones de IVA
- Comprobantes de liquidación (08, 09): Gestión de percepciones y comisiones
- Facturas de exportación (11): Con Incoterms, países destino, compradores terceros
- Sujetos excluidos (14): Contribuyentes sin obligación de IVA
- Comprobantes de donación (15): Donatarios y valoraciones
El XSLT incluye consulta dinámica al catálogo oficial de actividades económicas de El Salvador vía URL: https://globallistgc.blob.core.windows.net/globallistgc/listas/pais/sv/gc/v1/ActividadEconomica-SV.gc
Versión original: Eric Van Boxsom 0.0.8 (26-04-2023)
Última actualización: Ricardo Carretero (07-01-2026) - Nodo compraTercero para factura exportación
Salida:
XML Formato Oficial DGI
| Código | Descripción |
|---|---|
| 200 | Documento Aprobado |
| 4XX | Error validación |
| 5XX | Error sistema |
Paso 7 – Registro en Inbox
Independiente del resultado:
Se registra en:
Portal Inbox GoSocket
Datos almacenados:
- XML original
- XML DTE
- XML DGI
- Estado
- Fecha envío
- Código generación
- Sello recepción
Paso 8 – Webhook de Notificación
Los end points para la notificación están sectorizados por tipo de documento y por ambiente según el siguiente cuadro:
| Flow | Description | Document Type | Endpoints |
|---|---|---|---|
| AR 📤 | Accounts Receivable | All, except 07 & 14 | DEV 300 |
| AP 📥 | Accounts Payable | Only 07 | DEV 300 |
| AP 📥 | Accounts Payable | Only 14 | DEV 300 |
Método:
POST
Payload ejemplo:
{"BusinessUnit":"SVBES","InvoiceID":"300019211990748","InvoiceNumber":"03-M001P001-00000040","Attribute1":"2","Attribute2":"2026E0F0B5B2B3314E79A11582898879A354J6HY","Attribute3":"RECIBIDO","Attribute4":"2026-02-18 08:41:07","Attribute5":"3D00A159-EE5A-43F5-AF03-E011A7620AF9","Attribute6":"","Attribute7":"","Attribute8":"","Attribute9":"","Attribute10":"","Attribute11":"","Attribute12":"","Attribute13":"","Attribute14":"","Attribute15":""}
Seguridad:
[Token validación]
[IP whitelist]
[Certificado SSL]
Paso 9 – Actualización en Oracle ERP
Oracle:
- Consume webhook.
- Actualiza estado del documento.
- Marca como:AprobadoRechazadoError técnico
2. Componentes Técnicos
- Oracle ERP
- File Storage (Carpeta XML origen)
- Servicio Extractor Canónico (GoSocket)
- Motor de Transformación XSLT #1 (Oracle XML → DTE GoSocket)
- API de Recepción DTE GoSocket
- Motor de Transformación XSLT #2 (DTE → XML DGI)
- API de Envío DGI
- Portal Inbox GoSocket
- API Webhook de Notificación
- Listener / Endpoint Oracle ERP
3. Requisitos técnicos
Infraestructura
- Servidor Oracle accesible.
- Conectividad HTTPS.
- Firewall configurado.
Seguridad
- Certificado digital tributario.
- Encriptación TLS 1.2 o superior.
- Firma digital del DTE.
Performance
- Frecuencia trigger configurable.
- Soporte para procesamiento masivo.
- Logs centralizados.
4. Manejo de errores
Errores posibles
- Error de transformación XSLT
- Error validación DTE
- Error comunicación API
- Error DGI
- Timeout
- Webhook no recibido
Se recomienda:
- Retry automático configurable
- Logs auditables
- Monitoreo activo
5. Consideraciones finales
Arquitectura asincrónica.
- Procesamiento desacoplado.
- Alta trazabilidad.
- Cumplimiento regulatorio garantizado.
- Escalable a otros países con modificación de XSLT.