Ir para o conteúdo

Conector NetSuite avançado no Jitterbit Design Studio

Introdução

Esta página cobre dicas de solução de problemas, tutoriais e funcionalidades avançadas relacionadas a integrações com o NetSuite.

Solução de problemas e tutoriais

Esta seção descreve problemas e soluções para questões comuns enfrentadas em integrações com o NetSuite e fornece informações sobre mudanças no NetSuite que podem afetar sua integração.

URL WSDL específica da conta do NetSuite

Durante a configuração de um endpoint do NetSuite, é necessário fornecer uma URL WSDL específica da conta no campo URL de Download WSDL. Esta seção mostra como obter essa URL encontrando o domínio específico da conta do NetSuite e, em seguida, usando o domínio específico da conta na URL WSDL.

Encontrando o domínio específico da conta do NetSuite

Essas etapas devem ser realizadas por um Administrador do NetSuite ou outro usuário com a permissão Configurar Empresa:

  1. Faça login na instância do NetSuite.

  2. Vá para Configuração > Empresa > Informações da Empresa (ou pesquise por Informações da Empresa).

  3. Na página Informações da Empresa, vá para a subaba URLs da Empresa. O domínio específico da conta está sob o cabeçalho SuiteTalk (Serviços Web SOAP e REST):

    attachment

Para mais informações, consulte URLs para Domínios Específicos de Conta.

Construindo a URL WSDL

Depois de obter o domínio específico da conta, use-o para construir a 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 a configuração de um endpoint do NetSuite, insira esta URL WSDL específica da conta no campo URL de Download do WSDL.

Informações sobre quais versões do agente Jitterbit são necessárias para uso com as versões WSDL acima estão disponíveis em Pré-requisitos na página do endpoint do conector do NetSuite.

Alterar a versão do WSDL

Atualizar periodicamente a versão do WSDL utilizada pelo seu endpoint do NetSuite, a fim de sempre usar uma versão totalmente suportada, é uma boa prática recomendada. Os passos abaixo descrevem a melhor maneira de fazer a alteração, garantindo uma atualização sem problemas.

  1. Crie um novo endpoint.

  2. Para cada operação do NetSuite, troque o endpoint antigo pelo novo.

  3. Atualize a função.

  4. Atualize as transformações.

  5. Repita os passos 2 a 4 para cada operação do NetSuite.

Nota

Embora seja possível simplesmente editar a URL WSDL de um endpoint existente e reconfigurar as atividades existentes, essa prática é desencorajada. Nesse cenário, nenhum erro de validade é relatado e é possível implantar o projeto, sobrescrevendo inadvertidamente operações bem-sucedidas por aquelas que falham em tempo de execução devido a incompatibilidades de WSDL dentro dos esquemas.

Erro do data center do NetSuite

Devido a mudanças feitas pelo NetSuite, alguns formatos de URL WSDL que eram anteriormente permitidos não são mais aceitos, incluindo URLs WSDL genéricas e URLs específicas de data center. O Jitterbit recomenda sempre usar uma URL WSDL específica da conta.

Um endpoint do NetSuite pode ter sido testado com sucesso anteriormente, mas agora falha com este erro:

Erro do Conector: Erro ao obter a URL do data center.

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

Nesta conta, você deve usar domínios específicos da conta com este endpoint de serviços web SOAP. Você pode usar a operação SOAP getDataCenterUrls para obter o domínio correto. Ou, vá para Configuração > Empresa > Informações da Empresa na interface do usuário do NetSuite. Seus domínios estão listados na aba URLs da Empresa.

Em algumas circunstâncias, este erro pode aparecer:

Você não está solicitando o centro de dados correto para sua empresa.

Esses erros podem resultar do uso de uma URL de Download WSDL incorreta na configuração de uma conexão NetSuite. Devido a mudanças feitas pelo NetSuite, alguns formatos de URL WSDL que eram anteriormente permitidos não são mais aceitos, incluindo URLs WSDL genéricas e URLs específicas de centro de dados. Por exemplo:

  • URL WSDL Genérica: https://webservices.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
  • URL WSDL Específica de Centro de Dados: https://webservices.na3.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl

Para resolver, altere a URL WSDL para usar um domínio específico da conta:

  • URL WSDL Específica da Conta: https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl

Para instruções sobre como encontrar o domínio específico da conta NetSuite e, em seguida, usar o domínio específico da conta na URL WSDL, veja URL WSDL específica da conta NetSuite.

Autenticação de dois fatores do NetSuite (TFA ou 2FA)

Aqueles que usam a autenticação de dois fatores do NetSuite (TFA ou 2FA) não devem usar o tipo de autenticação de login único (SSO) ao configurar seu endpoint do NetSuite no Jitterbit. Fazer isso pode causar a falha do seu endpoint do NetSuite. Em vez disso, recomenda-se que esses usuários habilitem a autenticação baseada em token (TBA) em sua conta NetSuite e configurem seu endpoint do NetSuite no Jitterbit de acordo.

Nota

O tipo de autenticação SSO está sendo descontinuado pelo NetSuite, e agora é recomendado que todos os usuários usem TBA.

URL WSDL do sandbox do NetSuite

Desde janeiro de 2018, o NetSuite usa a mesma URL para seus domínios de produção e sandbox. Para as versões 9.2 e superiores do Design Studio e do Agent, nenhuma ação é necessária para os usuários do Jitterbit com endpoints NetSuite existentes configurados para o domínio sandbox, desde que o sandbox tenha sido atualizado desde essa mudança.

O número da conta NetSuite agora é usado para determinar se a conta está em produção ou em sandbox. Por exemplo, o ID da conta pode ser acrescido de _SB1, _SB2, etc. Como o NetSuite não usa mais uma URL de sandbox separada, e o sandbox agora é indicado pelo ID da conta, a caixa de seleção Sandbox foi removida nas versões 9.2 e superiores do Design Studio.

Se o seu sandbox do NetSuite não foi atualizado desde que essas mudanças no NetSuite foram implementadas, pode ser necessário usar uma URL WSDL específica para sandbox.

Dica

Mais informações podem ser encontradas na documentação do NetSuite Sobre Contas Sandbox no Domínio NetSuite.

Erro de permissões para TBA

Se você receber um erro INSUFFICIENT_PERMISSION ao executar operações usando um endpoint do NetSuite configurado com autenticação baseada em token (TBA), pode ser necessário usar um papel diferente para gerar os tokens de acesso ou adicionar permissões ao papel que você está usando atualmente. Nesse caso, o teste do endpoint parece bem-sucedido, mas durante a execução da operação ocorre a exceção.

Para resolver, ao gerar tokens de acesso, certifique-se de gerá-los em um papel de Acesso Total ou Administrador ou verifique se as permissões apropriadas estão permitidas para o papel.

Dica

Instruções detalhadas estão disponíveis na documentação do NetSuite Introdução à Autenticação Baseada em Token.

Erro inesperado para TBA

Se você receber um erro UNEXPECTED_ERROR ao testar a conexão com um endpoint do NetSuite configurado com autenticação baseada em token (TBA), é recomendável verificar se você está usando a URL WSDL correta. O erro conterá o seguinte texto:

FaultString: Um erro inesperado ocorreu. O Suporte Técnico foi alertado sobre esse problema.

Este erro pode ocorrer por uma série de razões; no entanto, sabe-se que esse erro resulta de ter uma URL WSDL incorreta ao usar Agentes que estão na versão 9.2 a 9.5. Nos Agentes da versão 9.6 e superiores, o texto da mensagem de erro descreve o problema de forma mais precisa.

Governança de concorrência do NetSuite

Em 18 de agosto de 2017, o NetSuite introduziu a "Governança de Concorrência" em seu lançamento 2017.2. Se você usa serviços web e/ou RESTlets, saiba mais sobre como isso pode afetar sua integração em governança de concorrência do NetSuite 2017.2.

Limitações de pesquisa salva do NetSuite

Ao usar a pesquisa salva do NetSuite, se você estiver tentando pesquisar em objetos que têm mais de 1.000 pesquisas salvas, pode parecer no Jitterbit Studio que não há pesquisas salvas disponíveis no objeto. Nesse caso, o menu suspenso de pesquisa salva no Jitterbit Studio não será preenchido com nenhuma pesquisa salva. Isso se deve a um limite de 1.000 registros imposto pelo NetSuite em solicitações de API.

Confirmação da limitação

Para confirmar que o problema está na limitação do NetSuite, você pode verificar o Registro de Uso de Serviços Web dentro da sua instância do NetSuite. Para um erro desse tipo, o log terá uma entrada semelhante à seguinte:

<platformCore:code>MAX_RCRDS_EXCEEDED</platformCore:code>
<platformCore:message>O número máximo ( 1000 ) de registros permitidos para uma operação de LEITURA foi excedido.</platformCore:message>

Solução alternativa para a limitação

Como uma solução alternativa, recomenda-se limpar as pesquisas salvas do NetSuite que não estão mais sendo usadas para reduzir o número de pesquisas salvas para menos de 1.000. Após a redução do número de pesquisas, você poderá selecionar uma pesquisa salva no menu suspenso do Jitterbit Studio.

Uma alternativa para reduzir o número de pesquisas salvas é executar a pesquisa salva via SOAP, referenciando a pesquisa salva pelo ID. Observe que essa alternativa não utiliza o conector do NetSuite e pode resultar em problemas ao migrar ambientes.

Funcionalidade Avançada

Esta seção fornece informações sobre recursos no Jitterbit que permitem aproveitar mais a sua integração com o NetSuite.

Usando funções do NetSuite

As funções específicas do NetSuite disponíveis no Construtor de Fórmulas em Funções > Funções do Conector estão listadas abaixo. Para mais informações sobre como usar essas funções, consulte Funções do conector.

  • NetSuiteGetSelectValue: Recupera os valores da lista de seleção para um campo do NetSuite.
  • NetSuiteGetServerTime: Obtém a hora do servidor do NetSuite.
  • NetSuiteLogin: Obtém a sessão do NetSuite.

Usando a configuração assíncrona

Por padrão, as chamadas de API para o NetSuite são executadas de forma síncrona; ou seja, após uma solicitação ser feita, a conexão é mantida aberta. Se algumas solicitações expirarem durante uma consulta síncrona, pode ser necessário ativar a configuração assíncrona. Com essa configuração, após a solicitação ser enviada, o Jitterbit fará consultas periodicamente para verificar se essa solicitação foi concluída. Isso é mais útil com grandes volumes de dados.

Para ativar a opção assíncrona, defina $jitterbit.netsuite.async=true em um script que esteja, por exemplo, no início da operação ou dentro da cadeia de operações (veja Criando um script). Para informações adicionais, consulte a documentação do NetSuite sobre Processamento de Solicitações Síncronas versus Assíncronas.

Passando valores nulos para campos personalizados

Uma limitação da API do NetSuite é que você não pode passar valores NULL ou em branco (string vazia) para campos personalizados no NetSuite.

De acordo com a documentação do NetSuite sobre CustomFieldList, campos personalizados podem ser definidos como NULL ao enviar o campo na nullFieldList do NetSuite.

No Design Studio, você não verá nullFieldList como um campo ou opção.

Em vez disso, você pode passar valores NULL ou em branco (string vazia) para campos personalizados mapeando o campo de origem para os campos externalId e name de um campo de destino.

Usando segmentos personalizados do NetSuite

Segmentos personalizados em objetos padrão e personalizados do NetSuite são suportados para o Conector do NetSuite nas atividades Criar, Atualizar, ObterLista, Upsert e Pesquisar usando um endpoint do NetSuite com um WSDL do NetSuite que é da versão 2016.2 ou superior. É necessário usar a versão 9.4 ou superior tanto do Design Studio quanto dos Agentes para utilizar este recurso.

Ao configurar qualquer um dos tipos de atividade listados acima, você verá cada segmento personalizado exibido na estrutura de resposta ou solicitação do NetSuite:

attachment

Uma vez que a atividade é utilizada em uma transformação, será possível mapear de ou para qualquer um desses segmentos personalizados, assim como se faz com outros campos. Os segmentos personalizados estão localizados sob um nó chamado customFieldList que está presente dentro do respectivo nó do objeto.

attachment

Nota

Se seus segmentos personalizados não estiverem sendo exibidos, verifique se a conta de usuário do NetSuite que está sendo usada em seu endpoint do NetSuite possui as permissões apropriadas para interagir com o segmento personalizado e o objeto associado a ele.

Limitação

Em uma pesquisa avançada do NetSuite, segmentos personalizados do tipo Lista/Registro conforme definido no NetSuite não são suportados. No entanto, observe que o tipo Seleção Múltipla é suportado em uma pesquisa avançada do NetSuite. Para determinar qual tipo está sendo utilizado, verifique o Tipo definido dentro do NetSuite em seu Segmento Personalizado:

attachment

Essa limitação não se aplica a outros tipos de atividades do NetSuite; ou seja, tanto os tipos List/Record quanto Multiple Select são suportados dentro das atividades Create, Update, GetList, Upsert, Basic search, Expanded search e Saved search.

Usando a pesquisa de transações do NetSuite por status

Ao pesquisar transações do NetSuite com base em um status específico, será necessário especificar o valor correto do filtro de pesquisa que corresponde ao status desejado. Você pode determinar o valor correspondente do filtro de pesquisa conforme fornecido na tabela abaixo.

Por exemplo, se você quiser que os critérios de pesquisa limitem os registros de Item Fulfilment apenas àqueles onde o Ship Status = Shipped, em vez de usar o enum para Shipped (_shipped), você realmente precisaria usar o valor ItemShip:C conforme fornecido na tabela abaixo. Traduções semelhantes se aplicam a uma variedade de objetos do NetSuite.

attachment

Status SearchFilter
Venda à Vista:Pagamento Não Aprovado CashSale:A
Venda à Vista:Não Depositado CashSale:B
Venda à Vista:Depositado CashSale:C
Cheque:Anulado Check:V
Cheque:Pagamento Online Pendente Aprovação Contábil Check:Z
Comissão:Pagamento Pendente Commissn:A
Comissão:Pago em Excesso Commissn:O
Comissão:Aprovação Contábil Pendente Commissn:P
Comissão:Rejeitado pela Contabilidade Commissn:R
Comissão:Pago Integral Commissn:X
Cobrança de Extrato:Aberto CustChrg:A
Cobrança de Extrato:Pago Integral CustChrg:B
Nota de Crédito:Aberta CustCred:A
Nota de Crédito:Totalmente Aplicada CustCred:B
Depósito de Cliente:Não Depositado CustDep:A
Depósito de Cliente:Depositado CustDep:B
Depósito de Cliente:Totalmente Aplicado CustDep:C
Fatura:Aberta CustInvc:A
Fatura:Pago Integral CustInvc:B
Pagamento:Pagamento Não Aprovado CustPymt:A
Pagamento:Não Depositado CustPymt:B
Pagamento:Depositado CustPymt:C
Reembolso ao Cliente:Anulado CustRfnd:V
Orçamento:Aberto Estimate:A
Orçamento:Processado Estimate:B
Orçamento:Fechado Estimate:C
Orçamento:Anulado Estimate:V
Orçamento:Expirado Estimate:X
Relatório de Despesas:Em Andamento ExpRept:A
Relatório de Despesas:Aprovação do Supervisor Pendente ExpRept:B
Relatório de Despesas:Aprovação Contábil Pendente ExpRept:C
Relatório de Despesas:Rejeitado pelo Supervisor ExpRept:D
Relatório de Despesas:Rejeitado pela Contabilidade ExpRept:E
Relatório de Despesas:Aprovado pela Contabilidade ExpRept:F
Relatório de Despesas:Aprovado (Substituído) pela Contabilidade ExpRept:G
Relatório de Despesas:Rejeitado (Substituído) pela Contabilidade ExpRept:H
Relatório de Despesas:Pago Integral ExpRept:I
Contagem de Inventário:Aberta InvCount:A
Contagem de Inventário:Iniciada InvCount:B
Contagem de Inventário:Concluída/Pendente Aprovação InvCount:C
Contagem de Inventário:Aprovada InvCount:D
Item Fulfilment:Selecionado ItemShip:A
Item Fulfilment:Embalado ItemShip:B
Item Fulfilment:Enviado ItemShip:C
Diário: Aprovação Pendente Journal:A
Diário:Aprovado para Lançamento Journal:B
Cheque de Responsabilidade de Folha de Pagamento:Anulado LiabPymt:V
Oportunidade:Em Andamento Opprtnty:A
Oportunidade:Estimativa Emitida Opprtnty:B
Oportunidade:Fechada – Ganha Opprtnty:C
Oportunidade:Fechada – Perdida Opprtnty:D
Cheque:Indefinido Paycheck:A
Cheque:Cálculo de Imposto Pendente Paycheck:C
Cheque:Compromisso Pendente Paycheck:D
Cheque:Comprometido Paycheck:F
Cheque:Pré-visualização Paycheck:P
Cheque:Reverso Paycheck:R
Pedido de Compra:Aprovação do Supervisor Pendente PurchOrd:A
Pedido de Compra:Recebimento Pendente PurchOrd:B
Pedido de Compra:Rejeitado pelo Supervisor PurchOrd:C
Pedido de Compra:Parcialmente Recebido PurchOrd:D
Pedido de Compra:Faturamento Pendente/Parcialmente Recebido PurchOrd:E
Pedido de Compra:Fatura Pendente PurchOrd:F
Pedido de Compra:Totalmente Faturado PurchOrd:G
Pedido de Compra:Fechado PurchOrd:H
Autorização de Retorno: Aprovação Pendente RtnAuth:A
Autorização de Retorno:Recebimento Pendente RtnAuth:B
Autorização de Retorno:Cancelada RtnAuth:C
Autorização de Retorno:Parcialmente Recebido RtnAuth:D
Autorização de Retorno:Pendente Reembolso/Parcialmente Recebido RtnAuth:E
Autorização de Retorno:Pendente Reembolso RtnAuth:F
Autorização de Retorno:Reembolsado RtnAuth:G
Autorização de Retorno:Fechado RtnAuth:H
Pedido de Venda:Aprovação Pendente SalesOrd:A
Pedido de Venda:Cumprimento Pendente SalesOrd:B
Pedido de Venda:Cancelado SalesOrd:C
Pedido de Venda:Parcialmente Cumprido SalesOrd:D
Pedido de Venda:Faturamento Pendente/Parcialmente Cumprido SalesOrd:E
Pedido de Venda:Faturamento Pendente SalesOrd:F
Pedido de Venda:Faturado SalesOrd:G
Pedido de Venda:Fechado SalesOrd:H
Cheque de Responsabilidade Fiscal:Anulado TaxLiab:V
Pagamento de Imposto sobre Vendas:Anulado TaxPymt:V
Pagamento de Imposto sobre Vendas:Pagamento Online Pendente Aprovação Contábil TaxPymt:Z
Tegata a Pagar:Endossado TegPybl:E
Tegata a Pagar:Emitido TegPybl:I
Tegata a Pagar:Pago TegPybl:P
Tegata a Receber:Coletado TegRcvbl:C
Tegata a Receber:Descontado TegRcvbl:D
Tegata a Receber:Endossado TegRcvbl:E
Tegata a Receber:Em Espera TegRcvbl:H
Pedido de Transferência:Aprovação Pendente TrnfrOrd:A
Pedido de Transferência:Cumprimento Pendente TrnfrOrd:B
Pedido de Transferência:Rejeitado TrnfrOrd:C
Pedido de Transferência:Parcialmente Cumprido TrnfrOrd:D
Pedido de Transferência:Recebimento Pendente/Parcialmente Cumprido TrnfrOrd:E
Pedido de Transferência:Recebimento Pendente TrnfrOrd:F
Pedido de Transferência:Recebido TrnfrOrd:G
Pedido de Transferência:Fechado TrnfrOrd:H
Autorização de Retorno de Fornecedor:Aprovação Pendente VendAuth:A
Autorização de Retorno de Fornecedor:Retorno Pendente VendAuth:B
Autorização de Retorno de Fornecedor:Cancelada VendAuth:C
Autorização de Retorno de Fornecedor:Parcialmente Retornado VendAuth:D
Autorização de Retorno de Fornecedor:Pendente Crédito/Parcialmente Retornado VendAuth:E
Autorização de Retorno de Fornecedor:Pendente Crédito VendAuth:F
Autorização de Retorno de Fornecedor:Credenciado VendAuth:G
Autorização de Retorno de Fornecedor:Fechado VendAuth:H
Conta:Aberta VendBill:A
Conta:Paga Integral VendBill:B
Conta:Cancelada VendBill:C
Conta:Aprovação Pendente VendBill:D
Conta:Rejeitada VendBill:E
Pagamento em Dinheiro:Anulado VendPymt:V
Pagamento em Dinheiro:Pagamento Online Pendente Aprovação Contábil VendPymt:Z
Ordem de Trabalho:Aprovação Pendente WorkOrd:B
Ordem de Trabalho:Cancelada WorkOrd:C
Ordem de Trabalho:Em Processo WorkOrd:D
Ordem de Trabalho:Construída WorkOrd:G
Ordem de Trabalho:Fechada WorkOrd:H

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

Padrões de design

Os seguintes padrões de design podem ser úteis para integrações com o NetSuite: