Saltar al contenido

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 luego utilizando el dominio específico de la cuenta 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:

  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 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):

    archivo adjunto

Para obtener 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/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- https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2022_1_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.

En Requisitos previos se proporciona información sobre qué versiones del agente Jitterbit se requieren para usar con las versiones WSDL anteriores) 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 que se indican a continuación describen la mejor manera de realizar el cambio, lo que garantiza una actualización sin inconvenientes.

  1. Cree un nuevo extremo.

  2. Para cada operación de NetSuite, intercambie el extremo antiguo por el nuevo.

  3. Actualice la función.

  4. Refresca las transformaciones.

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

Nota

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

Error en el centro de datos de NetSuite

Debido a los cambios realizados por NetSuite, algunos formatos de URL WSDL que antes estaban permitidos ya no se aceptan, incluidas las URLs WSDL genéricas y las URLs específicas del centro de datos. Jitterbit recomienda utilizar 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:

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, debe utilizar dominios específicos de la cuenta con este extremo de servicios web SOAP. Puede utilizar la operación getDataCenterUrls de SOAP para obtener el dominio correcto. O bien, vaya a Configuración > Empresa > Información de la empresa en la interfaz de usuario de NetSuite. Sus dominios se enumeran en la pestaña 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 ser resultado 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 antes estaban permitidos ya no se aceptan, incluidas las URLs de WSDL genéricas y las URLs específicas del centro de datos. Por ejemplo:

  • URL WSDL genérica: https://webservices.netsuite.com/wsdl/v2024_2_0/netsuite.wsdl
  • URL WSDL específica del centro de datos: https://webservices.na3.netsuite.com/wsdl/v2024_2_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/v2024_2_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 (TFA o 2FA) de NetSuite

Quienes utilicen la autenticación de dos factores (TFA o 2FA) de NetSuite no deben utilizar el tipo de autenticación de inicio de sesión único (SSO) al configurar su extremo de NetSuite en Jitterbit. Si lo hace, puede provocar que su extremo de NetSuite falle. En su lugar, se recomienda que estos usuarios habiliten la autenticación basada en token (TBA) en su cuenta de NetSuite y configuren su extremo de NetSuite en Jitterbit en consecuencia.

Nota

NetSuite está eliminando gradualmente el tipo de autenticación SSO y ahora se recomienda que todos los usuarios utilicen TBA.

URL WSDL de la zona protegida de NetSuite

A partir de enero de 2018, NetSuite utiliza la misma URL para su dominio de producción y de 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. Debido a que NetSuite ya no utiliza una URL de ambiente de pruebas independiente y el ambiente de pruebas ahora se indica mediante el ID de la cuenta, la casilla de verificación de ambiente de pruebas se ha eliminado en las versiones 9.2 y posteriores de Design Studio.

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 de NetSuite.

Error de permisos para TBA

Si recibes un 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 está usando actualmente. En este caso, la prueba del extremo parece exitosa, pero durante el tiempo de ejecución de 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 Administrador, o asegúrese de que se permitan los permisos adecuados para el rol.

Sugerencia

Las instrucciones detalladas están disponibles en la documentación de NetSuite Introducción a la autenticación basada en token.

Error inesperado para TBA

Si recibes un UNEXPECTED_ERROR Error al probar la conexión a un extremo de NetSuite configurado con autenticación basada en token (TBA), se recomienda comprobar que se está utilizando la URL WSDL correcta. El error contendrá el siguiente texto:

FaultString: Se ha producido un error inesperado. Se ha informado al soporte técnico sobre este problema.

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 versiones superiores, 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 presentó 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 utilizar la búsqueda guardada de NetSuite, si intenta buscar objetos que tienen más de 1000 búsquedas guardadas, puede aparecer en Jitterbit Studio como si no hubiera búsquedas guardadas disponibles en el objeto. En este caso, el menú desplegable de búsquedas guardadas en Jitterbit Studio no se completará con ninguna búsqueda guardada. Esto se debe a un límite de 1000 registros impuesto por NetSuite en 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 dentro de su instancia de NetSuite. En el caso de un error de este tipo, el registro tendrá 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 la cantidad de búsquedas guardadas a menos de 1000. Una vez que se haya reducido la cantidad de búsquedas, podrá seleccionar una búsqueda guardada en el menú desplegable de Jitterbit Studio.

Una alternativa para reducir la cantidad 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 NetSuite y puede ocasionar 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 Generador de fórmulas en Funciones > Funciones de conector se enumeran a continuación. Para obtener más información sobre cómo utilizar estas funciones, consulte 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

De manera predeterminada, las llamadas de API a 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 un sondeo sincrónico, es posible que desee activar la configuración asincrónica. Con esta configuración, después de que se envíe la solicitud, Jitterbit sondeará periódicamente para ver si esa solicitud ha finalizado. Esto es muy ú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 comienzo 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 cambio, puede pasar valores NULL 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, Upsert, y Buscar actividades que utilizan un extremo de NetSuite con un WSDL de NetSuite de la versión 2016.2 o superior. Debe utilizar 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:

adjunto

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

adjunto

Nota

Si sus segmentos personalizados no se muestran, verifique que su cuenta de usuario de NetSuite que se usa 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, los segmentos personalizados del tipo Lista/Registro tal como se define en NetSuite no son compatibles. Sin embargo, tenga en cuenta que el tipo Selección múltiple es compatible con una búsqueda avanzada de NetSuite. Para determinar qué tipo se está utilizando, verifique el Tipo definido dentro de NetSuite en su Segmento personalizado:

adjunto

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, Upsert, 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 en función de un estado específico, deberá especificar el valor de filtro de búsqueda correcto que corresponda al estado deseado. Puede determinar el valor de filtro de búsqueda correspondiente según se indica en la siguiente tabla.

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 utilizar la enumeración para Enviado (_shipped), en realidad deberá utilizar el valor de ItemShip:C como se proporciona en la tabla siguiente. Se aplican traducciones similares a una variedad de objetos de NetSuite.

adjunto

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
Cheque:Anulado Cheque:V
Cheque:Pago de facturas en línea pendiente de aprobación contable Cheque:Z
Comisión:Pendiente de pago Comisión:A
Comisión:Pagada en exceso 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 estado de cuenta: Abierto Cargo al cliente: A
Cargo por estado de cuenta:Pagado en su totalidad Cargo por cliente:B
Nota de crédito: abierta CustCred: 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 CustInvc:B
Pago:Pago no aprobado CustPymt:A
Pago: No depositado Pago a cuenta: B
Pago:Depositado CustPymt:C
Reembolso al cliente: anulado Reembolso al 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:Caducada Estimación:X
Informe de gastos: en proceso 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 ExpRept:E
Informe de gastos:Aprobado por Contabilidad ExpRept:F
Informe de gastos: aprobado (anulado) por Contabilidad Informe de gastos: G
Informe de gastos: Rechazado (Anulado) por Contabilidad ExpRept:H
Informe de gastos:Pagado en su totalidad Informe de gastos:I
Recuento de inventario: Abierto InvCount: A
Recuento de inventario:Iniciado InvCount:B
Recuento de inventario:Completado/Pendiente de aprobación InvCount:C
Recuento de inventario:Aprobado InvCount:D
Cumplimiento del artículo: Seleccionado Envío del artículo: A
Cumplimiento del artículo: Empaquetado 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 LiabPymt: 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
Cheque de pago: Cálculo de impuestos pendiente Cheque de pago: C
Cheque de pago: Compromiso pendiente Cheque de pago: 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: recibida parcialmente Orden de compra: D
Orden de compra: pendiente de facturación/parcialmente recibida 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 RtnAuth: A
Autorización de devolución: pendiente de recepción RtnAuth: B
Autorización de devolución:Cancelada RtnAuth:C
Autorización de devolución: recibida parcialmente Autorización de devolución: D
Autorización de devolución: Reembolso pendiente/Recibido parcialmente RtnAuth:E
Autorización de devolución: Reembolso pendiente RtnAuth:F
Autorización de devolución: Reembolsado RtnAuth:G
Autorización de devolución: Cerrada RtnAuth: H
Orden de venta: pendiente de aprobación Orden de venta: A
Orden de venta: pendiente de cumplimiento Ordendeventa: B
Orden de venta:Cancelada OrdenDeVenta:C
Orden de venta: parcialmente cumplida Orden de venta: D
Orden de venta: pendiente de facturación/ parcialmente cumplida SalesOrd:E
Orden de venta:Pendiente de facturación OrdenDeVenta:F
Orden de venta:facturada Ordendeventa:G
Orden de venta: Cerrada OrdenDeVenta: 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: tenencia 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/parcialmente cumplida TrnfrOrd:E
Orden de transferencia: pendiente de recepción Orden de transferencia: F
Orden de transferencia:Recibida TrnfrOrd:G
Orden de transferencia: Cerrada Orden de transferencia: H
Autorización de devolución del proveedor: pendiente de aprobación VendAuth:A
Autorización de devolución del proveedor: Devolución pendiente VendAuth:B
Autorización de devolución del proveedor:Cancelada VendAuth:C
Autorización de devolución del proveedor: Devuelto parcialmente VendAuth:D
Autorización de devolución del proveedor: crédito pendiente/devolución parcial VendAuth:E
Autorización de devolución del proveedor: crédito pendiente VendAuth:F
Autorización de devolución del proveedor: acreditada VendAuth:G
Autorización de devolución del proveedor: Cerrado VendAuth: H
Factura:Abierta VendBill:A
Factura:Pagada en su totalidad VendBill:B
Factura:Cancelada VendBill: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: