Conector NetSuite Avanzado
Introducción
Esta página cubre consejos para la resolución de problemas, tutoriales y funcionalidades avanzadas relacionadas con las integraciones de NetSuite.
Resolución de Problemas y los "tutoriales
Esta sección describe problemas y soluciones 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 NetSuite
Durante la configuración de un extremo 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 buscando el dominio específico de la cuenta NetSuite y luego usando el dominio específico de la cuenta en la URL WSDL.
Encontrar el Dominio Específico de la Cuenta 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 cuentas.
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_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
https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2021_2_0/netsuite.wsdl
Durante la configuración de un extremo NetSuite, ingrese esta URL WSDL específica de la cuenta en el campo URL de descarga de WSDL.
La información sobre qué versiones de Harmony Agente son necesarias para usar con las versiones WSDL anteriores se proporciona en Requisitos previos en el Extremo del conector NetSuite página.
Cambiar la Versión WSDL
Una buena práctica recomendada es actualizar periódicamente la versión WSDL utilizada por su extremo NetSuite para utilizar siempre una versión totalmente compatible. Los pasos siguientes describen la mejor manera de realizar el cambio, garantizando una actualización perfecta.
-
Cree un nuevo extremo.
-
Para cada operación de NetSuite, intercambie el extremo antiguo por el nuevo.
-
Actualiza la función.
-
Actualizar las transformaciones.
-
Repita los pasos 2 a 4 para cada operación de NetSuite.
Nota
Aunque es posible simplemente editar la URL WSDL de un extremo existente y reconfigurar las actividades existentes, no se recomienda esta práctica. En tal escenario, no se informan 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 de 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 se permitían anteriormente 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 haber sido probado exitosamente anteriormente, 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 resultar del uso de una URL de descarga de WSDL incorrecta en la configuración de una conexión NetSuite. Debido a los cambios realizados por NetSuite, algunos formatos de URL WSDL que se permitían anteriormente 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/v2024_1_0/netsuite.wsdl
- URL WSDL específica del centro de datos:
https://webservices.na3.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl
Para resolverlo, cambie la URL de WSDL para usar un dominio específico de la cuenta:
- URL WSDL específica de la cuenta:
https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl
Para obtener instrucciones sobre cómo encontrar el dominio específico de la cuenta NetSuite y luego utilizar el dominio específico de la cuenta en la URL WSDL, consulte URL WSDL específica de la cuenta NetSuite.
Autenticación de Dos Factores NetSuite (tfa o 2fa)
Aquellos que usan la autenticación de dos factores NetSuite (TFA o 2FA) no deben usar el tipo de autenticación de inicio de sesión único (SSO) al configurar su extremo NetSuite en Jitterbit. Hacerlo puede provocar que falle su extremo NetSuite. En su lugar, se recomienda que estos usuarios habiliten la autenticación basada en token (TBA) en su cuenta NetSuite y configuren su extremo 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 NetSuite Sandbox
A partir de enero de 2018, NetSuite utiliza la misma URL tanto para su dominio de producción como para su dominio sandbox. 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 y cuando 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 zona de pruebas. Por ejemplo, al ID de la cuenta se le puede agregar _SB1, _SB2, etc. Debido a que NetSuite ya no usa una URL de sandbox separada y el sandbox ahora se indica mediante el ID de la cuenta, la casilla Sandbox se eliminó en las versiones 9.2 y posteriores de Design Studio..
Si su zona de pruebas de NetSuite no se ha actualizado desde que se desplegaron estos cambios de NetSuite, es posible que necesite utilizar una URL WSDL específica de la zona de pruebas.
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 un INSUFFICIENT_PERMISSION
error al ejecutar operaciones usando un extremo NetSuite configurado con autenticación basada en token (TBA), es posible que necesite usar una rol diferente para generar los tokens de acceso o agregar permisos a la rol que está usando actualmente. En este caso, la prueba del extremo parece exitosa, pero durante la tiempo de ejecución de la operación se produce la excepción.
Para resolverlo, mientras genera tokens de acceso, asegúrese de generarlos en una rol de acceso total o de administrador o asegúrese de que se permitan los permisos adecuados para la rol.
Consejo
Las instrucciones detalladas están disponibles en la documentación de NetSuite Comenzando con la autenticación basada en tokens.
Error Inesperado para TBA
Si recibes un UNEXPECTED_ERROR
error al probar la conexión a un extremo NetSuite configurado con autenticación basada en token (TBA), se recomienda verificar para asegurarse de que 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 varias razones; sin embargo, se sabe que este error se debe a tener una URL WSDL incorrecta cuando se utilizan agentes que son versión 9.2 a 9,5. En la versión de Agentes 9.6 y superiores, el texto del mensaje de error describe con mayor precisión el problema.
Actualización de Compatibilidad con NetSuite TLS
La información sobre el uso del cifrado TLS 1.2 se proporciona en Actualización de compatibilidad NetSuite TLS.
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 y/o RESTlets, obtenga más información sobre cómo esto podría afectar su integración en NetSuite 2017.2 Concurrency Governance.
Limitaciones de la 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úsqueda guardada en Jitterbit Studio no se completará con ninguna búsqueda guardada. Esto se debe al límite de 1000 registros impuesto 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. Para 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 reduzca la cantidad 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 NetSuite y puede provocar problemas al migrar ambientes.
Funcionalidad Avanzada
Esta sección proporciona información sobre las funciones de Jitterbit que le permiten aprovechar al máximo su integración NetSuite.
Usando Funciones de NetSuite
Las funciones específicas de NetSuite disponibles en Formula Builder en Funciones > Funciones del conector se enumeran a continuación. Para obtener más información sobre cómo utilizar 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 de forma sincrónica; es decir, después de realizar una solicitud, la conexión se mantiene abierta. Si algunas solicitudes vencen el tiempo de espera durante una encuesta sincrónica, es posible que desee activar la configuración asincrónica. Con esta configuración, después de enviar la solicitud, Jitterbit sondeará periódicamente para ver si esa solicitud finalizó. Esto es más ú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 principio de la operación o dentro de la cadena de operación (consulte 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 NULL a Campos Personalizados
Una limitación de la API de NetSuite es que no puede pasar valores NULL o en blanco (cadena vacía) a campos personalizados en NetSuite.
Según la documentación de NetSuite en CustomFieldList, los campos personalizados se pueden establecer en 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 NULL o en blanco (cadena vacía) a campos personalizados asignando el campo de origen tanto al externalId
y name
campos de un campo objetivo.
Uso de Segmentos Personalizados de NetSuite
Se admiten segmentos personalizados en objetos NetSuite estándar y personalizados para NetSuite Connector Crear, Actualizar, ObtenerLista, Actualizar, y Buscar actividades utilizando un NetSuite Extremo con un NetSuite WSDL de versión 2016.2 o superior. Debes estar usando 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 respuesta o solicitud de NetSuite:
Una vez que la actividad se utiliza en una transformación, podrá asignar desde o hacia cualquiera de esos segmentos personalizados, tal como lo hace con otros campos. Los segmentos personalizados se encuentran debajo de un nodo llamado customFieldList
que está presente dentro de su respectivo nodo objeto.
Nota
Si sus segmentos personalizados no se muestran, verifique que su cuenta de usuario de NetSuite que se utiliza en su extremo NetSuite tenga los permisos adecuados para interactuar con el segmento personalizado y el objeto al que está asociado.
Limitación
En una Búsqueda avanzada de NetSuite, no se admiten segmentos personalizados del tipo Lista/Registro tal como se define en NetSuite. Sin embargo, tenga en cuenta que el tipo Selección múltiple es compatible con Búsqueda avanzada de NetSuite. Para determinar qué tipo se está utilizando, verifique el Tipo definido en NetSuite en su Segmento personalizado:
Esta limitación no se aplica a otros tipos de actividades de NetSuite; es decir, los tipos Lista/Registro y Selección múltiple son compatibles con Crear, Actualizar, ObtenerLista, Actualizar, 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 con el estado deseado. Puede determinar el valor del filtro de búsqueda correspondiente como se proporciona en la siguiente tabla.
Por ejemplo, si desea que los criterios de búsqueda limiten los registros de Cumplimiento de artículos solo a aquellos en los que Estado del envío = Enviado, en lugar de usar la enumeración para Enviado (_enviado), en realidad necesitaría usar el valor a de Envío de artículo:C como proporcionado en la siguiente tabla. Se aplican traducciones similares a una variedad de objetos NetSuite.
Estado | Filtro de búsqueda |
---|---|
Venta en efectivo:Pago no aprobado | Venta en efectivo:A |
Venta en efectivo: No depositado | Venta en efectivo:B |
Venta en efectivo:Depositado | Venta en efectivo:C |
Verificar: Anulado | Verificar:V |
Cheque: Pago de facturas en línea pendiente de aprobación contable | Comprobar:Z |
Comisión: Pendiente de Pago | Comisión:A |
Comisión:Pagado 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 de estado de cuenta:Abierto | Cargacliente:A |
Cargo por estado de cuenta: pagado en su totalidad | Cargacliente:B |
Nota de crédito:Abrir | ClienteCred:A |
Nota de crédito:Totalmente aplicada | ClienteCred:B |
Depósito del cliente:No depositado | Depcliente:A |
Depósito del cliente:Depositado | Depcliente:B |
Depósito del cliente:Totalmente aplicado | Depcliente:C |
Factura:Abrir | Invccliente:A |
Factura: Pagada en su totalidad | Invccliente:B |
Pago:Pago no aprobado | Pago de cliente:A |
Pago:No depositado | Pago del cliente:B |
Pago:Depositado | Pago de cliente:C |
Reembolso al cliente:Anulado | Rfndcliente:V |
Cita:Abrir | Estimación:A |
Cita:Procesado | Estimación:B |
Cita:Cerrado | Estimación:C |
Cita:Anulado | Estimación:V |
Cita:Caducado | Estimación:X |
Informe de gastos: en curso | ExpRepto:A |
Informe de gastos: Pendiente de aprobación del supervisor | ExpRepto:B |
Informe de Gastos:Pendiente de Aprobación Contable | ExpRepto:C |
Informe de gastos: Rechazado por el supervisor | ExpRepto:D |
Informe de Gastos:Rechazado por Contabilidad | ExpRepto:E |
Informe de Gastos:Aprobado por Contabilidad | ExpRepto:F |
Informe de gastos: aprobado (anulado) por contabilidad | ExpRepto:G |
Informe de gastos: rechazado (anulado) por contabilidad | ExpRepto:H |
Informe de gastos: pagado en su totalidad | ExpRepto: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:Elegido | Envío del artículo:A |
Cumplimiento del artículo:Embalado | Envío del artículo:B |
Cumplimiento del artículo:Enviado | Envío del artículo:C |
Revista:Pendiente de aprobación | Diario:A |
Revista:Aprobada para publicación | Diario:B |
Cheque de responsabilidad de nómina: anulado | LiabPymt:V |
Oportunidad:En progreso | Opción:A |
Oportunidad:Estimación emitida | Opción:B |
Oportunidad:Cerrada – Ganada | Opción:C |
Oportunidad:Cerrado – Perdido | Oportunidad:D |
Cheque de pago:Indefinido | Cheque de pago:A |
Cheque de sueldo:Cálculo de impuestos pendiente | Cheque de pago:C |
Cheque de Nómina: Pendiente de Compromiso | 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 Recibir | Orden de compra:B |
Orden de Compra:Rechazada por Supervisor | Orden de compra:C |
Orden de Compra:Recibida Parcialmente | Orden de compra:D |
Orden de compra:Facturación pendiente/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:Aprobación pendiente | 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 | RtnAuth: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:Cerrado | RtnAuth:H |
Orden de venta:Pendiente de aprobación | Orden de venta:A |
Orden de venta: Cumplimiento pendiente | Orden de venta:B |
Orden de venta: Cancelada | Orden de venta:C |
Orden de venta: Parcialmente cumplida | Orden de venta:D |
Orden de venta: facturación pendiente/cumplida parcialmente | Orden de venta:E |
Orden de venta:Facturación pendiente | Orden de venta:F |
Orden de venta:Facturado | Orden de venta:G |
Orden de venta: Cerrada | Orden de venta:H |
Cheque de responsabilidad tributaria: anulado | ImpuestoLiab:V |
Pago del impuesto sobre las ventas: Anulado | PagoImpuesto:V |
Pago de impuestos sobre las ventas: Pago de facturas en línea pendiente de aprobación contable | Pago de impuestos: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: Holding | TegRcvbl:H |
Orden de Transferencia:Pendiente de Aprobación | 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: pendiente de recepción/cumplida parcialmente | TrnfrOrd:E |
Orden de transferencia: Pendiente de recepción | TrnfrOrd:F |
Orden de transferencia:Recibida | TrnfrOrd:G |
Orden de transferencia:Cerrada | TrnfrOrd:H |
Autorización de devolución del proveedor:Aprobación pendiente | 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: devuelta parcialmente | VendAuth:D |
Autorización de devolución del proveedor: Crédito pendiente/Devuelto parcialmente | VendAuth:E |
Autorización de devolución del proveedor: Crédito pendiente | VendAuth:F |
Autorización de devolución del proveedor:Acreditado | VendAuth:G |
Autorización de devolución del proveedor:Cerrado | VendAuth:H |
Factura:Abierto | VendBill:A |
Factura: Pagada en su totalidad | VendBill:B |
Factura: Cancelada | VendBill:C |
Proyecto de ley: Pendiente de aprobación | VendBill:D |
Proyecto de ley: Rechazado | VendBill:E |
Pago en efectivo: Anulado | Pago de venta:V |
Pago en efectivo: Pago de facturas en línea pendiente de aprobación contable | Pago de venta: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:Cerrado | 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 resultar útiles para las integraciones de NetSuite:
-
Captura de cambios de datos con una API de Harmony o un Extremo HTTP
-
Captura de cambios de datos con consultas basadas en marcas de tiempo
-
Vincular registros de origen o de destino mediante ID compartidos
-
Datos persistentes para procesamiento posterior mediante almacenamiento temporal
-
Ejecutar las siguientes operaciones condicionalmente utilizando cadenas de operaciones
-
Actualización de múltiples objetivos desde un único registro de fuente
-
Inserción de datos de Clarizen con una cadena de operaciones