Conector NetSuite avanzado en Jitterbit Design Studio
Introducción
Esta página cubre sugerencias para la resolución de problemas, tutoriales y funcionalidades avanzadas relacionadas con las integraciones de NetSuite.
Solución de problemas y tutoriales
Esta sección describe problemas y soluciones alternativas a problemas comunes experimentados con las integraciones de NetSuite y proporciona información sobre los cambios de NetSuite que pueden afectar su integración.
URL WSDL específica de la cuenta de NetSuite
Durante la configuración de un extremo de NetSuite, debe proporcionar una URL WSDL específica de la cuenta en el campo URL de descarga WSDL. Esta sección muestra cómo obtener esta URL buscando el dominio específico de la cuenta de NetSuite y usándolo en la URL WSDL.
Cómo 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 Configurar empresa:
-
Inicie sesión en la instancia de NetSuite.
-
Vaya a Configuración > Empresa > Información de la empresa (o busque Información de la empresa).
-
En la página 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):
Para obtener más información, consulte URLs para dominios específicos de la cuenta.
Construcción de 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 extremo de NetSuite, ingrese esta URL WSDL específica de la cuenta en el campo URL de descarga de WSDL.
La información sobre qué versiones del agente Jitterbit se requieren para usar con las versiones WSDL anteriores se proporciona en Requisitos previos en el extremo del conector NetSuite página.
Cambiar la versión de WSDL
Se recomienda actualizar periódicamente la versión de WSDL que utiliza su extremo de NetSuite para utilizar siempre una versión totalmente compatible. Los pasos a continuación describen la mejor manera de realizar el cambio, garantizando una actualización sin problemas.
-
Cree un nuevo extremo.
-
Para cada operación de NetSuite, intercambie el extremo antiguo por el nuevo.
-
Actualice la función.
-
Refrescar las transformaciones.
-
Repita los pasos 2 a 4 para cada operación de NetSuite.
Nota
Aunque es posible simplemente editar la URL del WSDL de un extremo existente y reconfigurar las actividades existentes, esta práctica no se recomienda. En tal caso, no se reportan errores de validez y es posible desplegar el proyecto, sobrescribiendo inadvertidamente operaciones exitosas con otras que fallan en tiempo de ejecución debido a discrepancias en el WSDL dentro de los esquemas.
Error del centro de datos de NetSuite
Debido a los cambios realizados por NetSuite, algunos formatos de URL WSDL que antes se permitían ya no se aceptan, como las URLs WSDL genéricas y las URLs específicas del centro de datos. Jitterbit recomienda usar siempre una URL WSDL específica de la cuenta.
Un extremo de NetSuite puede haberse probado previamente con éxito, pero ahora falla con este error:
Connector Error: Error getting the data center URL.
Caused by: org.jitterbit.integration.server.engine.connector.exception.NetSuiteWebServiceRuntimeException: FaultString:
In this account, you must use account-specific domains with this SOAP web services endpoint. You can use the SOAP getDataCenterUrls operation to obtain the correct domain. Or, go to Setup > Company > Company Information in the NetSuite UI. Your domains are listed on the Company URLs tab.
En algunas circunstancias, puede aparecer este error:
You are not requesting the correct data center for your company.
Estos errores pueden deberse al uso de una URL de descarga WSDL incorrecta en la configuración de una conexión de NetSuite. Debido a los cambios realizados por NetSuite, algunos formatos de URL WSDL que antes se permitían ya no se aceptan, incluidas las URLs WSDL genéricas y las URLs específicas del centro de datos. Por ejemplo:
- URL WSDL genérica:
https://webservices.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
- URL WSDL específica del centro de datos:
https://webservices.na3.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
Para resolverlo, cambie la URL WSDL para utilizar un dominio específico de la cuenta:
- URL 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 WSDL, consulte URL WSDL específica de la cuenta de NetSuite.
Autenticación de dos factores de NetSuite (TFA o 2FA)
Quienes 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 extremo de NetSuite en Jitterbit. Si lo hace, su extremo de NetSuite podría fallar. Se recomienda que estos usuarios habiliten la autenticación basada en tokens (TBA) en su cuenta de NetSuite y configuren su extremo de NetSuite en Jitterbit como corresponda.
Nota
NetSuite está eliminando gradualmente el tipo de autenticación SSO y ahora se recomienda que todos los usuarios utilicen TBA.
URL WSDL de ambiente de pruebas de NetSuite
A partir de enero de 2018, NetSuite utiliza la misma URL para su dominio de producción y su ambiente de pruebas. Para Design Studio y Agente versiones 9.2 y superiores, no se requiere ninguna acción para los usuarios de Jitterbit con extremos NetSuite existentes configurados para el dominio 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 un ambiente de pruebas. Por ejemplo, el ID de la cuenta puede ir acompañado de _SB1, _SB2, etc. Dado que NetSuite ya no utiliza una URL independiente para el ambiente de pruebas, y este ahora se indica mediante el ID de la cuenta, la casilla de verificación "Sandbox" se ha eliminado en Design Studio 9.2 y versiones posteriores.
Si su ambiente sandbox de NetSuite no se ha actualizado desde que se desplegaron estos cambios de NetSuite, es posible que necesite usar una URL WSDL específica del ambiente sandbox.
Consejo
Puede encontrar más información en la documentación de NetSuite Acerca de las cuentas Sandbox en el dominio NetSuite.
Error de permisos para TBA
Si recibes una INSUFFICIENT_PERMISSION
Error al ejecutar operaciones utilizando un extremo de NetSuite configurado con autenticación basada en tokens (TBA), es posible que deba usar un rol diferente para generar los tokens de acceso o agregar permisos al rol que usa actualmente. En este caso, la prueba del extremo parece exitosa, pero al tiempo de ejecución la operación se produce la excepción.
Para resolverlo, al generar tokens de acceso, asegúrese de generarlos en un rol de acceso completo o de administrador, o asegúrese de que se permitan los permisos adecuados para el rol.
Consejo
Encontrará instrucciones detalladas en la documentación de NetSuite Introducción a la autenticación basada en tokens.
Error inesperado para TBA
Si recibes una UNEXPECTED_ERROR
Error al probar la conexión a un extremo de NetSuite configurado con autenticación basada en tokens (por confirmar), se recomienda verificar que se esté utilizando la URL WSDL correcta. El error contendrá el siguiente texto:
FaultString: An unexpected error has occurred. Technical Support has been alerted to this problem.
Este error puede ocurrir por varios motivos; sin embargo, se sabe que este error es resultado de tener una URL WSDL incorrecta al usar agentes que son versión 9.2 a 9,5. En la versión de Agentes 9.6 y superior, el texto del mensaje de error describe el problema con mayor precisión.
Gobernanza de concurrencia de NetSuite
El 18 de agosto de 2017, NetSuite introdujo la "Gobernanza de Concurrencia" en su versión 2017.2. Si utiliza servicios web o RESTlets, obtenga más información sobre cómo esto podría afectar su 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 intenta buscar objetos con más de 1000 búsquedas guardadas, es posible que en Jitterbit Studio parezca que no hay búsquedas guardadas disponibles para el objeto. En este caso, el menú desplegable de búsquedas guardadas de Jitterbit Studio no mostrará ninguna. Esto se debe al límite de 1000 registros impuesto por NetSuite para las solicitudes de API.
Confirmación de limitación
Para confirmar que el problema se debe a la limitación de NetSuite, puede consultar el registro de uso de servicios web de su instancia de NetSuite. Para un error de este tipo, el registro mostrará una entrada similar a la siguiente:
<platformCore:code>MAX_RCRDS_EXCEEDED</platformCore:code>
<platformCore:message>The maximum number ( 1000 ) of records allowed for a READ operation has been exceeded.</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 utilizan para reducir el número de búsquedas guardadas a menos de 1000. Una vez reducido el número de búsquedas, podrá seleccionar una búsqueda guardada en el menú desplegable de Jitterbit Studio.
Una alternativa para reducir el número de búsquedas guardadas es ejecutar la búsqueda guardada mediante SOAP, haciendo referencia a la búsqueda guardada por ID. Tenga en cuenta que esta alternativa no utiliza el conector de NetSuite y puede causar problemas al migrar ambientes.
Funcionalidad avanzada
Esta sección proporciona información sobre las características de Jitterbit que le permiten aprovechar al máximo su integración con NetSuite.
Uso de las funciones de NetSuite
Las funciones específicas de NetSuite disponibles en el Generador de Fórmulas en Funciones y Funciones del Conector se enumeran a continuación. Para obtener más información sobre cómo usar estas funciones, consulte Funciones del 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.
Usando la configuración asincrónica
De forma predeterminada, las llamadas API a NetSuite se ejecutan sincrónicamente; es decir, tras realizar una solicitud, la conexión se mantiene abierta. Si algunas solicitudes agotan el tiempo de espera durante un sondeo sincrónico, puede activar la configuración asíncrona. Con esta configuración, tras enviar la solicitud, Jitterbit sondeará periódicamente para comprobar si ha finalizado. Esto resulta especialmente útil con grandes cantidades de datos.
Para activar la opción asincrónica, configure $jitterbit.netsuite.async=true
en un secuencia de comandos que se encuentra, por ejemplo, al inicio de la operación o dentro de la cadena de operación (vea Creación de un secuencia de comandos). Para obtener información adicional, consulte la documentación de NetSuite sobre Procesamiento de solicitudes sincrónico versus asincrónico.
Pasar valores nulos a campos personalizados
Una limitación de la API de NetSuite es que no se pueden 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 configurar como NULL enviando el campo en NetSuite nullFieldList
.
En Design Studio, no verás nullFieldList
Como campo u opción.
En su lugar, puede pasar valores nulos o en blanco (cadena vacía) a campos personalizados asignando el campo de origen a ambos. externalId
y name
campos de un campo objetivo.
Uso de segmentos personalizados de NetSuite
Los segmentos personalizados en objetos NetSuite estándar y personalizados son compatibles con el Conector NetSuite Crear, Actualizar, Obtener lista, Insertar, y Buscar actividades que utilizan un extremo de NetSuite con un WSDL de NetSuite de la versión 2016.2 o superior. Debe usar la versión 9.4 o superior tanto de Design Studio como de Agents para utilizar esta función.
Al configurar cualquiera de los tipos de actividad enumerados anteriormente, verá cada segmento personalizado mostrado en la estructura de solicitud o respuesta de NetSuite:
Una vez que la actividad se utiliza en una transformación, podrá asignar desde o hacia cualquiera de esos segmentos personalizados, al igual que con otros campos. Los segmentos personalizados se encuentran en un nodo llamado customFieldList
que está presente dentro de su nodo de objeto respectivo.
Nota
Si sus segmentos personalizados no se muestran, verifique que la cuenta de usuario de NetSuite que se utiliza en su extremo de NetSuite tenga los permisos adecuados para interactuar con el segmento personalizado y el objeto con el que está asociado.
Limitación
En una búsqueda avanzada de NetSuite, no se admiten los segmentos personalizados del tipo Lista/Registro, tal como se define en NetSuite. Sin embargo, tenga en cuenta que el tipo Selección múltiple sí se admite 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:
Esta limitación no se aplica a otros tipos de actividades de NetSuite; es decir, tanto los tipos Lista/Registro como Selección múltiple son compatibles con Crear, Actualizar, Obtener lista, Insertar, Búsqueda básica, Búsqueda ampliada, y Búsqueda guardada actividades.
Uso de la búsqueda de transacciones de NetSuite por estado
Al buscar transacciones de NetSuite según un estado específico, deberá especificar el valor del filtro de búsqueda correspondiente al estado deseado. Puede determinar el valor del filtro de búsqueda correspondiente según se indica en la tabla a continuación.
Por ejemplo, si desea que los criterios de búsqueda limiten los registros de Cumplimiento de artículos a aquellos cuyo Estado de envío sea "Enviado", en lugar de usar la enumeración "Enviado" (_shipped), deberá usar el valor "ItemShip:C", como se muestra en la tabla a continuación. Se aplican traducciones similares a diversos objetos de NetSuite.
Estado | Filtro de búsqueda |
---|---|
Venta en efectivo: Pago no aprobado | Venta en efectivo: A |
Venta en efectivo: Sin depósito | Venta en efectivo: B |
Venta en efectivo: Depositado | Venta en efectivo: C |
Marca: Anulada | Marca: V |
Marcar: Pago de facturas en línea pendiente de aprobación contable | Marcar: Z |
Comisión: Pendiente de pago | Comisión: A |
Comisión: Sobrepagada | Comisión: O |
Comisión: Pendiente de aprobación contable | Comisión: P |
Comisión: Rechazada por Contabilidad | Comisión: R |
Comisión: Pagada en su totalidad | Comisión: X |
Cargo en el estado de cuenta: Abierto | Cargo al cliente: A |
Cargo del estado de cuenta: Pagado en su totalidad | Cargo al cliente: B |
Nota de crédito: Abierta | Crédito del cliente: A |
Nota de crédito: Totalmente aplicada | Crédito del cliente: B |
Depósito del cliente: No depositado | Depósito del cliente: A |
Depósito del cliente: Depositado | Depósito del cliente: B |
Depósito del cliente: Totalmente aplicado | Depósito del cliente: C |
Factura:Abrir | Invccliente:A |
Factura: Pagada en su totalidad | Factura del cliente: B |
Pago: Pago no aprobado | Pago del cliente: A |
Pago: No depositado | Pago del cliente: B |
Pago: Depositado | Pago del cliente: C |
Reembolso del cliente: Anulado | Reembolso del cliente: V |
Cotización:Abierto | Estimación:A |
Cotización: Procesada | Estimación: B |
Cotización: Cerrada | Estimación: C |
Cita: Anulada | Estimación: V |
Cotización: Vencida | Estimación: X |
Informe de gastos: En curso | Informe de gastos: A |
Informe de gastos: Pendiente de aprobación del supervisor | Informe de gastos: B |
Informe de Gastos: Pendiente de Aprobación Contable | Informe de Gastos: C |
Informe de gastos: Rechazado por el supervisor | Informe de gastos: D |
Informe de gastos: Rechazado por Contabilidad | Informe de gastos: E |
Informe de gastos: Aprobado por Contabilidad | Informe de gastos: F |
Informe de gastos: Aprobado (Anulado) por Contabilidad | Informe de gastos: G |
Informe de gastos: Rechazado (Anulado) por Contabilidad | Informe de gastos: H |
Informe de gastos: Totalmente pagado | Informe de gastos: I |
Recuento de inventario: Abierto | Conteo de inventario: A |
Recuento de inventario: Iniciado | InvCount: B |
Recuento de inventario: Completado/Pendiente de aprobación | InvCount:C |
Recuento de inventario: Aprobado | Conteo de inventario: D |
Cumplimiento del artículo: Seleccionado | Envío del artículo: A |
Cumplimiento del artículo: Empacado | Envío del artículo: B |
Cumplimiento del artículo: Enviado | Envío del artículo: C |
Diario: Pendiente de aprobación | Diario: A |
Diario: Aprobado para publicación | Diario: B |
Cheque de responsabilidad de nómina: Anulado | Responsabilidad: V |
Oportunidad: En proceso | Oportunidad: A |
Oportunidad: Estimación emitida | Oportunidad: B |
Oportunidad: Cerrada - Ganada | Oportunidad: C |
Oportunidad: Cerrada - Perdida | Oportunidad: D |
Cheque de pago: Indefinido | Cheque de pago: A |
Nómina: Cálculo de impuestos pendiente | Nómina: C |
Nómina: Compromiso pendiente | Nómina: D |
Cheque de pago: Comprometido | Cheque de pago: F |
Cheque de pago: Vista previa | Cheque de pago: P |
Cheque de pago: Invertido | Cheque de pago: R |
Orden de compra: Pendiente de aprobación del supervisor | Orden de compra: A |
Orden de compra: Pendiente de recepción | Orden de compra: B |
Orden de compra: Rechazada por el supervisor | Orden de compra: C |
Orden de compra: Parcialmente recibida | Orden de compra: D |
Orden de compra: Pendiente de facturación/Recibida parcialmente | Orden de compra: E |
Orden de compra: Factura pendiente | Orden de compra: F |
Orden de compra: Totalmente facturada | Orden de compra: G |
Orden de compra: Cerrada | Orden de compra: H |
Autorización de devolución: Pendiente de aprobación | Autorización de devolución: A |
Autorización de devolución: Pendiente de recepción | Autorización de devolución: B |
Autorización de devolución: Cancelada | Autorización de devolución: C |
Autorización de devolución: Parcialmente recibida | Autorización de devolución: D |
Autorización de devolución: Reembolso pendiente/Recibido parcialmente | Autorización de devolución: E |
Autorización de devolución: Reembolso pendiente | Autorización de devolución: F |
Autorización de devolución: Reembolsado | Autorización de devolución: G |
Autorización de devolución: Cerrada | Autorización de devolución: H |
Pedido de venta: Pendiente de aprobación | Pedido de venta: A |
Pedido de venta: Pendiente de cumplimiento | Pedido de venta: B |
Pedido de venta: Cancelado | Pedido de venta: C |
Pedido de venta: parcialmente completado | Pedido de venta: D |
Pedido de venta: Pendiente de facturación/Completado parcialmente | Pedido de venta: E |
Pedido de venta: Facturación pendiente | Pedido de venta: F |
Pedido de venta: Facturado | Pedido de venta: G |
Pedido de venta: Cerrado | Pedido de venta: H |
Cheque de responsabilidad fiscal: Anulado | Responsabilidad fiscal: V |
Pago de impuesto sobre las ventas: Anulado | Pago de impuesto: V |
Pago de Impuesto sobre las Ventas: Pago de Facturas en Línea Pendiente de Aprobación Contable | TaxPymt:Z |
Tegata Por Pagar:Avalado | TegPybl:E |
Tegata por pagar:Emitido | TegPybl:I |
Tegata Por Pagar:Pagado | TegPybl:P |
Cuentas por cobrar de Tegata: Cobradas | TegRcvbl:C |
Cuentas por cobrar de Tegata: Descontadas | TegRcvbl: D |
Cuentas por Cobrar de Tegata:Avaladas | TegRcvbl:E |
Cuentas por cobrar de Tegata: Retención | TegRcvbl: H |
Orden de transferencia: Pendiente de aprobación | Orden de transferencia: A |
Orden de transferencia: pendiente de cumplimiento | Orden de transferencia: B |
Orden de transferencia: Rechazada | Orden de transferencia: C |
Orden de transferencia: parcialmente cumplida | Orden de transferencia: D |
Orden de transferencia: Pendiente de recepción/Completada parcialmente | Orden de transferencia: E |
Orden de transferencia: pendiente de recepción | Orden de transferencia: F |
Orden de transferencia: Recibida | Orden de transferencia: G |
Orden de transferencia: Cerrada | Orden de transferencia: H |
Autorización de devolución del proveedor: Pendiente de aprobación | Autorización de devolución: A |
Autorización de devolución del proveedor: Devolución pendiente | Autorización de devolución del proveedor: B |
Autorización de devolución del proveedor: Cancelada | Autorización de devolución del proveedor: C |
Autorización de devolución del proveedor: Devolución parcial | Autorización de devolución: D |
Autorización de devolución del proveedor: Crédito pendiente/Devolución parcial | Autorización de devolución: E |
Autorización de devolución del proveedor: Crédito pendiente | Autorización del proveedor: F |
Autorización de devolución del proveedor: Acreditada | Autorización de devolución del proveedor: G |
Autorización de devolución del proveedor: Cerrada | Autorización de devolución del proveedor: H |
Factura:Abierta | FacturaVend:A |
Factura: Pagada en su totalidad | FacturaVend: B |
Factura:Cancelada | FacturaVend:C |
Factura: Pendiente de aprobación | Factura de venta: D |
Factura:Rechazada | FacturaVend:E |
Pago en efectivo: Anulado | VendPymt: V |
Pago en efectivo: Pago de facturas en línea pendiente de aprobación contable | VendPymt:Z |
Orden de trabajo: Pendiente de construcción | Orden de trabajo: B |
Orden de trabajo: Cancelada | Orden de trabajo: C |
Orden de trabajo: En proceso | Orden de trabajo: D |
Orden de trabajo: Construido | Orden de trabajo: G |
Orden de trabajo: Cerrada | Orden de trabajo: H |
Fuente: 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 las integraciones de NetSuite:
-
Captura de cambios de datos con una API de API Manager o un extremo HTTP
-
Captura de cambios de datos con consultas basadas en marcas de tiempo
-
Vinculación de registros de origen o destino mediante identificadores compartidos
-
Conservación de datos para su posterior procesamiento mediante almacenamiento temporal
-
Conservación de datos entrantes para su posterior procesamiento
-
Ejecutar las siguientes operaciones condicionalmente usando cadenas de operación
-
Actualización de múltiples destinos desde un único registro de origen
-
Inserción de datos de Clarizen con una cadena de operaciones