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.
🌐 Servicio SOAP utilizado
Desde la documentación tomamos el servicio:
Service WSDL
⚠️ 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 DFFTe 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
Publicar un comentario
Dejanos tus dudas y comentarios