Saltar al contenido

Conector de NetSuite avanzado en Jitterbit Design Studio

Introducción

Esta página cubre consejos de solución de problemas, guías y funcionalidades avanzadas relacionadas con las integraciones de NetSuite.

Solución de problemas y guías

Esta sección describe problemas y soluciones a problemas comunes experimentados con integraciones de NetSuite y proporciona información sobre cambios en NetSuite que pueden afectar su integración.

URL WSDL específica de la cuenta de NetSuite

Durante la configuración de un punto final de NetSuite, debe proporcionar una URL WSDL específica de la cuenta en el campo URL de descarga de WSDL. Esta sección muestra cómo obtener esta URL encontrando el dominio específico de la cuenta de NetSuite y luego utilizando el dominio específico de la cuenta en la URL WSDL.

Encontrar el dominio específico de la cuenta de NetSuite

Estos pasos deben ser realizados por un Administrador de NetSuite u otro usuario con el permiso de Configurar Empresa:

  1. Inicie sesión en la instancia de NetSuite.

  2. Vaya a Configuración > Empresa > Información de la Empresa (o busque Información de la Empresa).

  3. En la página de Información de la Empresa, vaya a la subpestaña URLs de la Empresa. El dominio específico de la cuenta se encuentra bajo el encabezado SuiteTalk (Servicios Web SOAP y REST):

    attachment

Para más información, consulte URLs para Dominios Específicos de la Cuenta.

Construyendo la URL WSDL

Una vez que haya obtenido el dominio específico de la cuenta, utilícelo para construir la URL WSDL:

  • https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
  • https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2024_2_0/netsuite.wsdl
  • https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl
  • https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2023_2_0/netsuite.wsdl
  • https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2023_1_0/netsuite.wsdl
  • https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2022_2_0/netsuite.wsdl

Durante la configuración de un punto final de NetSuite, ingresa esta URL WSDL específica de la cuenta en el campo URL de descarga de WSDL.

La información sobre qué versiones de agente de Jitterbit son requeridas para su uso con las versiones de WSDL mencionadas se proporciona en Requisitos previos en la página del punto final del conector de NetSuite.

Cambiar la versión de WSDL

Actualizar periódicamente la versión de WSDL utilizada por tu punto final de NetSuite para asegurarte de estar utilizando siempre una versión completamente soportada es una buena práctica recomendada. Los pasos a continuación describen la mejor manera de realizar el cambio, asegurando una actualización sin problemas.

  1. Crea un nuevo punto final.

  2. Para cada operación de NetSuite, intercambia el antiguo punto final por el nuevo.

  3. Actualiza la función.

  4. Actualiza las transformaciones.

  5. Repite los pasos 2 a 4 para cada operación de NetSuite.

Nota

Aunque es posible simplemente editar la URL de WSDL de un punto final existente y reconfigurar las actividades existentes, esta es una práctica desaconsejada. En tal escenario, no se reportan errores de validez y es posible desplegar el proyecto, sobrescribiendo inadvertidamente operaciones exitosas con aquellas que fallan en tiempo de ejecución debido a las discrepancias de WSDL dentro de los esquemas.

Error del centro de datos de NetSuite

Debido a cambios realizados por NetSuite, algunos formatos de URL de WSDL que anteriormente eran aceptados ya no son aceptados, incluyendo URLs de WSDL genéricas y URLs específicas de centros de datos. Jitterbit recomienda utilizar siempre una URL de WSDL específica de la cuenta.

Un punto final de NetSuite puede haber sido probado con éxito anteriormente, pero ahora falla con este error:

Error del conector: Error al obtener la URL del centro de datos.

Causado por: org.jitterbit.integration.server.engine.connector.exception.NetSuiteWebServiceRuntimeException: FaultString:

En esta cuenta, debes usar dominios específicos de la cuenta con este punto final de servicios web SOAP. Puedes usar la operación SOAP getDataCenterUrls para obtener el dominio correcto. O, ve a Configuración > Empresa > Información de la empresa en la interfaz de usuario de NetSuite. Tus dominios están listados en la pestaña de URLs de la empresa.

En algunas circunstancias, puede aparecer este error:

No está solicitando el centro de datos correcto para su empresa.

Estos errores pueden resultar del uso de una URL de descarga de WSDL incorrecta en la configuración de una conexión de NetSuite. Debido a los cambios realizados por NetSuite, algunos formatos de URL de WSDL que anteriormente eran aceptados ya no son válidos, incluyendo URLs de WSDL genéricas y URLs específicas de centros de datos. Por ejemplo:

  • URL de WSDL genérica: https://webservices.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
  • URL de WSDL específica de centro de datos: https://webservices.na3.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl

Para resolver, cambie la URL de WSDL para usar un dominio específico de la cuenta:

  • URL de WSDL específica de la cuenta: https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl

Para obtener instrucciones sobre cómo encontrar el dominio específico de la cuenta de NetSuite y luego usar el dominio específico de la cuenta en la URL de WSDL, consulte URL de WSDL específica de la cuenta de NetSuite.

Autenticación de dos factores de NetSuite (TFA o 2FA)

Aquellos que utilizan la autenticación de dos factores de NetSuite (TFA o 2FA) no deben usar el tipo de autenticación de inicio de sesión único (SSO) al configurar su punto final de NetSuite en Jitterbit. Hacerlo puede causar que su punto final de NetSuite falle. En su lugar, se recomienda que estos usuarios habiliten la autenticación basada en tokens (TBA) en su cuenta de NetSuite y configuren su punto final de NetSuite en Jitterbit en consecuencia.

Nota

El tipo de autenticación SSO está siendo eliminado por NetSuite, y ahora se recomienda que todos los usuarios utilicen TBA.

URL de WSDL de sandbox de NetSuite

A partir de enero de 2018, NetSuite utiliza la misma URL tanto para su dominio de producción como para el de sandbox. Para las versiones 9.2 y superiores de Design Studio y Agent, no se requiere ninguna acción para los usuarios de Jitterbit con puntos finales de NetSuite existentes configurados para el dominio de sandbox, siempre que el sandbox se haya actualizado desde este cambio.

El número de cuenta de NetSuite ahora se utiliza para determinar si la cuenta está en producción o en sandbox. Por ejemplo, el ID de cuenta puede tener el sufijo _SB1, _SB2, etc. Dado que NetSuite ya no utiliza una URL de sandbox separada, y el sandbox ahora se indica mediante el ID de cuenta, la casilla de verificación de Sandbox se ha eliminado en las versiones 9.2 y superiores de Design Studio.

Si su sandbox de NetSuite no se ha actualizado desde que se implementaron estos cambios en NetSuite, es posible que necesite utilizar una URL WSDL específica para sandbox.

Consejo

Se puede encontrar más información en la documentación de NetSuite Sobre las cuentas de sandbox en el dominio de NetSuite.

Error de permisos para TBA

Si recibe un error INSUFFICIENT_PERMISSION al ejecutar operaciones utilizando un punto final de NetSuite configurado con autenticación basada en tokens (TBA), es posible que necesite usar un rol diferente para generar los tokens de acceso o agregar permisos al rol que está utilizando actualmente. En este caso, la prueba del punto final parece exitosa, pero al momento de ejecutar la operación ocurre la excepción.

Para resolverlo, al generar tokens de acceso, asegúrese de generarlos en un rol de Acceso Completo o Administrador o asegúrese de que se permitan los permisos apropiados para el rol.

Consejo

Instrucciones detalladas están disponibles en la documentación de NetSuite Introducción a la autenticación basada en tokens.

Error inesperado para TBA

Si recibe un error UNEXPECTED_ERROR al probar la conexión a un punto final de NetSuite configurado con autenticación basada en tokens (TBA), se recomienda verificar que está utilizando la URL WSDL correcta. El error contendrá el siguiente texto:

FaultString: Ha ocurrido un error inesperado. El soporte técnico ha sido alertado sobre este problema.

Este error puede ocurrir por varias razones; sin embargo, se sabe que este error resulta de tener una URL WSDL incorrecta al usar Agentes que son de la versión 9.2 a 9.5. En Agentes de la versión 9.6 y superiores, el texto del mensaje de error describe más precisamente el problema.

Gobernanza de concurrencia de NetSuite

El 18 de agosto de 2017, NetSuite introdujo "Gobernanza de Concurrencia" en su versión 2017.2. Si utilizas servicios web y/o RESTlets, aprende más sobre cómo esto podría afectar tu integración en gobernanza de concurrencia de NetSuite 2017.2.

Limitaciones de búsqueda guardada de NetSuite

Al usar la búsqueda guardada de NetSuite, si intentas buscar en objetos que tienen más de 1,000 búsquedas guardadas, puede parecer en Jitterbit Studio como si no hubiera búsquedas guardadas disponibles en el objeto. En este caso, el menú desplegable de búsqueda guardada en Jitterbit Studio no se llenará con ninguna búsqueda guardada. Esto se debe a un límite de 1,000 registros impuesto por NetSuite en las solicitudes de API.

Confirmación de la limitación

Para confirmar que el problema es con la limitación de NetSuite, puedes revisar el Registro de Uso de Servicios Web dentro de tu instancia de NetSuite. Para un error de este tipo, el registro tendrá una entrada similar a la siguiente:

<platformCore:code>MAX_RCRDS_EXCEEDED</platformCore:code>
<platformCore:message>Se ha excedido el número máximo ( 1000 ) de registros permitidos para una operación de LECTURA.</platformCore:message>

Solución alternativa a la limitación

Como solución alternativa, se recomienda limpiar las búsquedas guardadas de NetSuite que ya no se están utilizando para reducir el número de búsquedas guardadas a menos de 1,000. Después de reducir el número de búsquedas, podrás seleccionar una búsqueda guardada del menú desplegable en Jitterbit Studio.

Una alternativa a reducir el número de búsquedas guardadas es ejecutar la búsqueda guardada a través de SOAP, haciendo referencia a la búsqueda guardada por ID. Ten en cuenta que esta alternativa no utiliza el conector de NetSuite y puede resultar en problemas al migrar entornos.

Funcionalidad avanzada

Esta sección proporciona información sobre las características en Jitterbit que te permiten aprovechar más tu integración con NetSuite.

Uso de funciones de NetSuite

Las funciones específicas de NetSuite disponibles en Constructor de Fórmulas bajo Funciones > Funciones de Conector se enumeran a continuación. Para obtener más información sobre cómo usar estas funciones, consulta Funciones de conector.

  • NetSuiteGetSelectValue: Recupera los valores de la lista de selección para un campo de NetSuite.
  • NetSuiteGetServerTime: Obtiene la hora del servidor de NetSuite.
  • NetSuiteLogin: Obtiene la sesión de NetSuite.

Uso de la configuración asincrónica

Por defecto, las llamadas a la API de NetSuite se ejecutan de manera sincrónica; es decir, después de que se realiza una solicitud, la conexión se mantiene abierta. Si algunas solicitudes agotan el tiempo de espera durante una consulta sincrónica, es posible que desees activar la configuración asincrónica. Con esta configuración, después de que se envía la solicitud, Jitterbit consultará periódicamente para ver si esa solicitud ha finalizado. Esto es más útil con grandes cantidades de datos.

Para activar la opción asincrónica, establece $jitterbit.netsuite.async=true en un script que esté, por ejemplo, al principio de la operación o dentro de la cadena de operaciones (consulta Creando un script). Para información adicional, consulta la documentación de NetSuite sobre Procesamiento de Solicitudes Sincrónicas versus Asincrónicas.

Pasando valores nulos a campos personalizados

Una limitación de la API de NetSuite es que no puedes pasar valores NULL o en blanco (cadena vacía) a campos personalizados en NetSuite.

Según la documentación de NetSuite sobre CustomFieldList, los campos personalizados se pueden establecer en NULL enviando el campo en la nullFieldList de NetSuite.

En Design Studio, no verás nullFieldList como un campo u opción.

En su lugar, puedes pasar valores NULL o en blanco (cadena vacía) a campos personalizados mapeando el campo de origen tanto a los campos externalId como name de un campo de destino.

Uso de segmentos personalizados de NetSuite

Se admiten segmentos personalizados en objetos estándar y personalizados de NetSuite para las actividades del Conector de NetSuite Crear, Actualizar, ObtenerLista, Upsert y Buscar utilizando un punto final de NetSuite con un WSDL de NetSuite que sea versión 2016.2 o superior. Debe estar utilizando la versión 9.4 o superior tanto de Design Studio como de Agents para usar esta función.

Al configurar cualquiera de los tipos de actividad mencionados anteriormente, verá cada segmento personalizado mostrado en la estructura de respuesta o solicitud de NetSuite:

attachment

Una vez que la actividad se utilice en una transformación, podrá mapear desde o hacia cualquiera de esos segmentos personalizados, tal como lo hace con otros campos. Los segmentos personalizados se encuentran bajo un nodo llamado customFieldList que está presente dentro de su respectivo nodo de objeto.

attachment

Nota

Si sus segmentos personalizados no se están mostrando, verifique que la cuenta de usuario de NetSuite que se está utilizando en su punto final de NetSuite tenga los permisos apropiados para interactuar con el segmento personalizado y el objeto asociado.

Limitación

En una búsqueda avanzada de NetSuite, no se admiten segmentos personalizados del tipo Lista/Registro según lo definido en NetSuite. Sin embargo, tenga en cuenta que el tipo Selección Múltiple es compatible en una búsqueda avanzada de NetSuite. Para determinar qué tipo se está utilizando, verifique el Tipo definido dentro de NetSuite en su Segmento Personalizado:

attachment

Esta limitación no se aplica a otros tipos de actividades de NetSuite; es decir, tanto los tipos List/Record como Multiple Select son compatibles dentro de Create, Update, GetList, Upsert, Basic search, Expanded search y Saved search.

Usando la búsqueda de transacciones de NetSuite por estado

Al buscar transacciones de NetSuite basadas en un estado específico, necesitarás especificar el valor de filtro de búsqueda correcto que corresponda con el estado deseado. Puedes determinar el valor de filtro de búsqueda correspondiente como se indica en la tabla a continuación.

Por ejemplo, si deseas que los criterios de búsqueda limiten los registros de Cumplimiento de Artículos a solo aquellos donde el Estado de Envío = Enviado, en lugar de usar el enum para Enviado (_shipped), en realidad necesitarías usar un valor de ItemShip:C como se indica en la tabla a continuación. Traducciones similares se aplican a una variedad de objetos de NetSuite.

attachment

Estado SearchFilter
Venta en Efectivo: Pago No Aprobado CashSale:A
Venta en Efectivo: No Depositado CashSale:B
Venta en Efectivo: Depositado CashSale:C
Cheque: Anulado Check:V
Cheque: Pago de Factura en Línea Pendiente Aprobación Contable Check:Z
Comisión: Pago Pendiente Commissn:A
Comisión: Sobrepagado Commissn:O
Comisión: Aprobación Contable Pendiente Commissn:P
Comisión: Rechazada por Contabilidad Commissn:R
Comisión: Pagado en Su Totalidad Commissn:X
Cargo de Estado de Cuenta: Abierto CustChrg:A
Cargo de Estado de Cuenta: Pagado en Su Totalidad CustChrg:B
Nota de Crédito: Abierta CustCred:A
Nota de Crédito: Totalmente Aplicada CustCred:B
Depósito de Cliente: No Depositado CustDep:A
Depósito de Cliente: Depositado CustDep:B
Depósito de Cliente: Totalmente Aplicado CustDep:C
Factura: Abierta CustInvc:A
Factura: Pagada en Su Totalidad CustInvc:B
Pago: Pago No Aprobado CustPymt:A
Pago: No Depositado CustPymt:B
Pago: Depositado CustPymt:C
Reembolso al Cliente: Anulado CustRfnd:V
Cotización: Abierta Estimate:A
Cotización: Procesada Estimate:B
Cotización: Cerrada Estimate:C
Cotización: Anulada Estimate:V
Cotización: Expirada Estimate:X
Informe de Gastos: En Progreso ExpRept:A
Informe de Gastos: Aprobación Pendiente del Supervisor ExpRept:B
Informe de Gastos: Aprobación Contable Pendiente ExpRept:C
Informe de Gastos: Rechazado por el Supervisor ExpRept:D
Informe de Gastos: Rechazado por Contabilidad ExpRept:E
Informe de Gastos: Aprobado por Contabilidad ExpRept:F
Informe de Gastos: Aprobado (Anulado) por Contabilidad ExpRept:G
Informe de Gastos: Rechazado (Anulado) por Contabilidad ExpRept:H
Informe de Gastos: Pagado en Su Totalidad ExpRept:I
Conteo de Inventario: Abierto InvCount:A
Conteo de Inventario: Iniciado InvCount:B
Conteo de Inventario: Completado/Pendiente Aprobación InvCount:C
Conteo de Inventario: Aprobado InvCount:D
Cumplimiento de Artículos: Recogido ItemShip:A
Cumplimiento de Artículos: Empacado ItemShip:B
Cumplimiento de Artículos: Enviado ItemShip:C
Diario: Aprobación Pendiente Journal:A
Diario: Aprobado para Publicación Journal:B
Cheque de Pasivo de Nómina: Anulado LiabPymt:V
Oportunidad: En Progreso Opprtnty:A
Oportunidad: Cotización Emitida Opprtnty:B
Oportunidad: Cerrada – Ganada Opprtnty:C
Oportunidad: Cerrada – Perdida Opprtnty:D
Cheque: Indefinido Paycheck:A
Cheque: Cálculo de Impuestos Pendiente Paycheck:C
Cheque: Compromiso Pendiente Paycheck:D
Cheque: Comprometido Paycheck:F
Cheque: Vista Paycheck:P
Cheque: Revertido Paycheck:R
Orden de Compra: Aprobación Pendiente PurchOrd:A
Orden de Compra: Recepción Pendiente PurchOrd:B
Orden de Compra: Rechazada por el Supervisor PurchOrd:C
Orden de Compra: Parcialmente Recibida PurchOrd:D
Orden de Compra: Facturación Pendiente/Parcialmente Recibida PurchOrd:E
Orden de Compra: Factura Pendiente PurchOrd:F
Orden de Compra: Totalmente Facturada PurchOrd:G
Orden de Compra: Cerrada PurchOrd:H
Autorización de Devolución: Aprobación Pendiente RtnAuth:A
Autorización de Devolución: Recepción Pendiente RtnAuth:B
Autorización de Devolución: Cancelada RtnAuth:C
Autorización de Devolución: Parcialmente Recibida RtnAuth:D
Autorización de Devolución: Reembolso Pendiente/Parcialmente Recibida RtnAuth:E
Autorización de Devolución: Reembolso Pendiente RtnAuth:F
Autorización de Devolución: Reembolsada RtnAuth:G
Autorización de Devolución: Cerrada RtnAuth:H
Orden de Venta: Aprobación Pendiente SalesOrd:A
Orden de Venta: Cumplimiento Pendiente SalesOrd:B
Orden de Venta: Cancelada SalesOrd:C
Orden de Venta: Parcialmente Cumplida SalesOrd:D
Orden de Venta: Facturación Pendiente/Parcialmente Cumplida SalesOrd:E
Orden de Venta: Facturación Pendiente SalesOrd:F
Orden de Venta: Facturada SalesOrd:G
Orden de Venta: Cerrada SalesOrd:H
Cheque de Pasivo Fiscal: Anulado TaxLiab:V
Pago de Impuesto sobre Ventas: Anulado TaxPymt:V
Pago de Impuesto sobre Ventas: Pago de Factura en Línea Pendiente Aprobación Contable TaxPymt:Z
Tegata a Pagar: Endosado TegPybl:E
Tegata a Pagar: Emitido TegPybl:I
Tegata a Pagar: Pagado TegPybl:P
Tegata a Cobrar: Recaudado TegRcvbl:C
Tegata a Cobrar: Descontado TegRcvbl:D
Tegata a Cobrar: Endosado TegRcvbl:E
Tegata a Cobrar: En Espera TegRcvbl:H
Orden de Transferencia: Aprobación Pendiente TrnfrOrd:A
Orden de Transferencia: Cumplimiento Pendiente TrnfrOrd:B
Orden de Transferencia: Rechazada TrnfrOrd:C
Orden de Transferencia: Parcialmente Cumplida TrnfrOrd:D
Orden de Transferencia: Recepción Pendiente/Parcialmente Cumplida TrnfrOrd:E
Orden de Transferencia: Recepción Pendiente TrnfrOrd:F
Orden de Transferencia: Recibida TrnfrOrd:G
Orden de Transferencia: Cerrada TrnfrOrd:H
Autorización de Devolución de Proveedor: Aprobación Pendiente VendAuth:A
Autorización de Devolución de Proveedor: Devolución Pendiente VendAuth:B
Autorización de Devolución de Proveedor: Cancelada VendAuth:C
Autorización de Devolución de Proveedor: Parcialmente Devuelta VendAuth:D
Autorización de Devolución de Proveedor: Crédito Pendiente/Parcialmente Devuelta VendAuth:E
Autorización de Devolución de Proveedor: Crédito Pendiente VendAuth:F
Autorización de Devolución de Proveedor: Acreditada VendAuth:G
Autorización de Devolución de Proveedor: Cerrada VendAuth:H
Factura: Abierta VendBill:A
Factura: Pagada en Su Totalidad VendBill:B
Factura: Cancelada VendBill:C
Factura: Aprobación Pendiente VendBill:D
Factura: Rechazada VendBill:E
Pago en Efectivo: Anulado VendPymt:V
Pago en Efectivo: Pago de Factura en Línea Pendiente Aprobación Contable VendPymt:Z
Orden de Trabajo: Construcción Pendiente WorkOrd:B
Orden de Trabajo: Cancelada WorkOrd:C
Orden de Trabajo: En Proceso WorkOrd:D
Orden de Trabajo: Construida WorkOrd:G
Orden de Trabajo: Cerrada WorkOrd:H

Source: http://blog.prolecto.com/2013/08/30/netsuite-searchfilter-transaction-internal-status-list/

Patrones de diseño

Los siguientes patrones de diseño pueden ser útiles para integraciones de NetSuite: