Consumir WebServices de NetSuite desde el navegador

Antecedentes

La integración entre uno o más sistemas siempre ha sido todo un tema, es común que al pensar en “Integracíon de sistemas” pensemos en archivos CSV o TXT, consultas SQL o directamente modificar la base de datos, otra opción es WebServices, cada día más presentes y mas potentes.

En estos tiempos donde la tecnología CloudComputing gana más terreno podemos probar un WebService sin tener que pasar por el dolor que impone la instalación de un lenguaje de programación, su IDE, sus librerias, etc, podemos probar directamente en WebService desde el navegador utilizando la pagina WSDL Browser

¿Que probar utilizar WSDL Browser?

Solo debemos ejecutar los siguientes pasos:

  1. Ir a la página web http://wsdlbrowser.com/
  2. Proporcionar la liga del WSDL a probar
  3. Presionar el botón Browse
  4. Elegir un método del panel izquierdo.
  5. Completar el request
  6. Presionar el botón Call function
  7. Esperar resultados.

Ejemplo en NetSuite: Consultar la existencia de artículos

  • WSDL:
  • https://webservices.netsuite.com/wsdl/v2015_1_0/netsuite.wsdl
  • Request
    <?xml version="1.0" encoding="UTF-8"?>
        <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:core_2015_1.platform.webservices.netsuite.com" xmlns:ns2="urn:messages_2015_1.platform.webservices.netsuite.com">
            <SOAP-ENV:Header>
                <ns2:login>
                    <ns2:passport>
                        <ns1:email>MI_USUARIO</ns1:email>
                        <ns1:password>MI_CONTRASEÑA</ns1:password>
                        <ns1:account>MI_CUENTA_DE_NETSUITE</ns1:account>
                        <ns1:role internalId="MI_ID_DE_ROL"/>
                    </ns2:passport>
                </ns2:login>
            </SOAP-ENV:Header>
            <SOAP-ENV:Body>
                <ns2:getItemAvailability>
                    <ns2:itemAvailabilityFilter>
                        <ns1:item>
                            <ns1:recordRef internalId="38"/>
                            <ns1:recordRef internalId="17"/>
                        </ns1:item>
                    </ns2:itemAvailabilityFilter>
                </ns2:getItemAvailability>
            </SOAP-ENV:Body>
        </SOAP-ENV:Envelope>
    
  • Response
    <?xml version="1.0" encoding="utf-8"?>
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <soapenv:Header>
                <platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2015_1.platform.webservices.netsuite.com">
                    <platformMsgs:nsId>WEBSERVICES_TSTDRV904452_06262015836892025729143836_4fe490de</platformMsgs:nsId>
                </platformMsgs:documentInfo>
            </soapenv:Header>
            <soapenv:Body>
                <getItemAvailabilityResponse xmlns="urn:messages_2015_1.platform.webservices.netsuite.com">
                    <platformCore:getItemAvailabilityResult xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com">
                        <platformCore:status isSuccess="true"/>
                        <platformCore:itemAvailabilityList>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="17" type="lotNumberedInventoryItem">
                                    <platformCore:name>CRMTMUSB</platformCore:name>
                                </platformCore:item>
                                <platformCore:lastQtyAvailableChange>2015-05-11T09:40:23.000-07:00</platformCore:lastQtyAvailableChange>
                                <platformCore:locationId internalId="2" type="location">
                                    <platformCore:name>DF</platformCore:name>
                                </platformCore:locationId>
                                <platformCore:quantityOnHand>1501.0</platformCore:quantityOnHand>
                                <platformCore:onHandValueMli>75050.0</platformCore:onHandValueMli>
                                <platformCore:quantityCommitted>0.0</platformCore:quantityCommitted>
                                <platformCore:quantityAvailable>1501.0</platformCore:quantityAvailable>
                            </platformCore:itemAvailability>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="17" type="lotNumberedInventoryItem">
                                    <platformCore:name>CRMTMUSB</platformCore:name>
                                </platformCore:item>
                                <platformCore:lastQtyAvailableChange>2015-05-11T09:34:19.000-07:00</platformCore:lastQtyAvailableChange>
                                <platformCore:locationId internalId="1" type="location">
                                    <platformCore:name>GDL</platformCore:name>
                                </platformCore:locationId>
                                <platformCore:quantityOnHand>82.0</platformCore:quantityOnHand>
                                <platformCore:onHandValueMli>10660.0</platformCore:onHandValueMli>
                                <platformCore:quantityOnOrder>0.0</platformCore:quantityOnOrder>
                                <platformCore:quantityCommitted>0.0</platformCore:quantityCommitted>
                                <platformCore:quantityAvailable>82.0</platformCore:quantityAvailable>
                            </platformCore:itemAvailability>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="38" type="lotNumberedInventoryItem">
                                    <platformCore:name>C-3102</platformCore:name>
                                </platformCore:item>
                                <platformCore:lastQtyAvailableChange>2015-04-14T14:14:39.000-07:00</platformCore:lastQtyAvailableChange>
                                <platformCore:locationId internalId="2" type="location">
                                    <platformCore:name>DF</platformCore:name>
                                </platformCore:locationId>
                                <platformCore:quantityOnHand>360.0</platformCore:quantityOnHand>
                                <platformCore:onHandValueMli>1440.0</platformCore:onHandValueMli>
                                <platformCore:quantityCommitted>0.0</platformCore:quantityCommitted>
                                <platformCore:quantityAvailable>360.0</platformCore:quantityAvailable>
                            </platformCore:itemAvailability>
                            <platformCore:itemAvailability>
                                <platformCore:item internalId="38" type="lotNumberedInventoryItem">
                                    <platformCore:name>C-3102</platformCore:name>
                                </platformCore:item>
                                <platformCore:locationId internalId="1" type="location">
                                    <platformCore:name>GDL</platformCore:name>
                                </platformCore:locationId>
                            </platformCore:itemAvailability>
                        </platformCore:itemAvailabilityList>
                    </platformCore:getItemAvailabilityResult>
                </getItemAvailabilityResponse>
            </soapenv:Body>
        </soapenv:Envelope>
    

Este es solo un ejemplo rápido, según los requerimientos de cada quien sería el request y el response, recuerda que cada empresa tiene sus propios necesarios, aún así con SuiteTalk, puedes resolver todos y cada uno.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.