¿100 CFDI en 40 segundos? Valida XML del SAT con Excel

Imagen
馃く ¿100 CFDI en 40 segundos? Automatiza la validaci贸n de XML con Excel ¿Cu谩nto tiempo dedicas a revisar archivos XML de facturas electr贸nicas? Si trabajas con contabilidad, cuentas por pagar, cuentas por cobrar o administraci贸n, sabes que validar muchos comprobantes fiscales puede convertirse en una tarea repetitiva. 馃殌 ¿Y si pudieras procesar 100 archivos XML en aproximadamente 40 segundos? En esta demostraci贸n utilizo una macro de Excel dise帽ada para automatizar la validaci贸n masiva de CFDI y consultar su estado ante el Servicio de Administraci贸n Tributaria (SAT). 馃搳 ¿Qu茅 hace esta macro de Excel? La herramienta permite seleccionar una carpeta con archivos XML y procesar m煤ltiples comprobantes sin tener que revisarlos individualmente. Procesa varios archivos XML de CFDI. Extrae informaci贸n de los comprobantes fiscales. Consulta el estado de los CFDI ante el servicio del SAT....

馃敡 Actualizaci贸n de DFF a nivel Site en Oracle usando SOAP API y Postman

En algunos escenarios es necesario actualizar informaci贸n para m煤ltiples registros y hacerlo uno por uno desde la interfaz no siempre es viable.
Para estos casos, Oracle pone a disposici贸n herramientas como SOAP Web Services y REST API Services, que permiten automatizar y controlar este tipo de procesos.

En esta publicaci贸n veremos un ejemplo real y probado para actualizar el valor de un Descriptive Flex Field (DFF) a nivel detalle de sitio del cliente, lo que a nivel t茅cnico impacta directamente la tabla HZ_PARTY_SITES.

馃摎 Documentaci贸n oficial

Antes de comenzar, es importante revisar la documentaci贸n oficial del servicio:

馃憠 Oracle Trading Community Organization Service vamos a la liga de documentacion https://docs.oracle.com/en/cloud/saas/sales/oesws/tradingcommunityorganization-d41e160191.html


Oracle Trading Community Organization Service DFF


馃寪 Servicio SOAP utilizado

Desde la documentaci贸n tomamos el servicio:

Service WSDL

https://servername/crmService/FoundationPartiesOrganizationService

⚠️ Recuerda reemplazar servername por el nombre de tu entorno.

馃И Preparaci贸n del request en Postman


Vamos a entrar a Postman y desde ah铆 vamos armar el xml , primero vamos agregar un request


Luego vamos a poner el tipo Post y vamos a poner la URL que vimos dos pasos atr谩s, solo tengan cuidado de cambiar el nombre de su servidor URL: https://servername/crmService/FoundationPartiesOrganizationService


Despu茅s vamos agregar nuestras credenciales de acceso a Oracle , en la secci贸n de authorization , en la parte de Body vamos a marcar raw y XML.



Y en Body vamos a colocar el siguiente c贸digo de XML



<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:typ="http://xmlns.oracle.com/apps/cdm/foundation/parties/organizationService/applicationModule/types/"
  xmlns:org="http://xmlns.oracle.com/apps/cdm/foundation/parties/organizationService/"
  xmlns:pty="http://xmlns.oracle.com/apps/cdm/foundation/parties/partyService/"
  xmlns:psd="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/partySite/">
  <soapenv:Header/>
  <soapenv:Body>
    <typ:mergeOrganization>
      <typ:organizationParty>
        <!-- 1) El Party due帽o del Site -->
        <org:PartyId>TEST14235</org:PartyId>

        <!-- 2) El Party Site que quieres actualizar -->
        <org:PartySite>
          <pty:PartySiteId>TEST6789</pty:PartySiteId>

          <!-- 3) BLOQUE DE DFF (PartySiteInformation) -->
          <pty:PartySiteInformation xsi:type="psd:Nombre_contexto_API"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <!-- El contexto de tu DFF -->
            <psd:__FLEX_Context>Contexto_Name</psd:__FLEX_Context>
            <!-- Segmentos de tu DFF -->
            <psd:nombre_API_DFF>VALOR_ACTUALIZAR</psd:nombre_API_DFF>

          </pty:PartySiteInformation>

        </org:PartySite>
      </typ:organizationParty>
    </typ:mergeOrganization>
  </soapenv:Body>
</soapenv:Envelope>

Los campos en negrita son los valores que deben cambiar
  • TEST14235 , este del party id de la tabla hz_parties
  • TEST6789,este del site de la tabla HZ_PARTY_SITES
  • Nombre_contexto_API,este valor es muy importante lo vas a obtener de la pantalla donde defines el DFF
  • Contexto_Name, este valor es muy importante lo vas a obtener de la pantalla de
donde se define el DFF
  • nombre_API_DFF este valor es muy importante lo vas a obtener de la pantalla de
donde se define el DFF
Te comparto un query que te puede servir para obtener los ID, puedes ajustarlo con los filtros como lo requieras

馃攳 Query de apoyo para obtener IDs


SELECT hp.party_id , hp.PARTY_NUMBER , hca.account_number , hca.cust_account_id , hps.party_site_id , hps.location_id , hcsu.site_use_code , hps.party_site_name , hps.party_site_number , hps.START_DATE_ACTIVE ,hcsa.set_id ,hp.ORIG_SYSTEM_REFERENCE FROM hz_parties hp , hz_party_sites hps , hz_locations hl , hz_cust_accounts hca , hz_cust_acct_sites_all hcsa , hz_cust_site_uses_all hcsu WHERE hp.party_id = hps.party_id AND hps.location_id = hl.location_id AND hp.party_id = hca.party_id AND hcsa.party_site_id = hps.party_site_id AND hcsu.cust_acct_site_id = hcsa.cust_acct_site_id AND hca.cust_account_id = hcsa.cust_account_id --AND hps.party_site_number = numero de site del cliente --AND hca.account_number =numero de cuenta del cliente --AND hps.location_id = valor que busques


✅ Conclusi贸n

Este ejemplo demuestra que, aunque SOAP sigue siendo percibido como complejo, con una buena estructura

y las herramientas correctas es posible actualizar DFFs de forma segura y controlada.

Si trabajas con Oracle Trading Community, este enfoque puede ahorrarte mucho tiempo operativo y

reducir errores manuales.

Comentarios

馃殌 Mantener este blog funcionando requiere tiempo y caf茅. ¡Puedes contribuir con uno aqu铆!

Entradas m谩s populares de este blog

Gu铆a Pr谩ctica: Ejemplo Completo de ASPX para Desarrolladores Web

馃憠 C贸mo obtener el tipo de cambio en Excel con API de Banxico (paso a paso)

C贸mo crear un Predictor de Partidos de F煤tbol con JavaScript y API-Football