Conector NetSuite Avançado
Introdução
Esta página aborda dicas de solução de problemas, tutoriais e funcionalidades avançadas relacionadas às integrações do NetSuite.
Solução de Problemas e Como Tutoriais
Esta seção descreve problemas e soluções alternativas para problemas comuns enfrentados com integrações do NetSuite e fornece informações sobre alterações do NetSuite que podem afetar sua integração.
URL WSDL Específico da Conta NetSuite
Durante a configuração de um endpoint NetSuite, você deverá fornecer um URL WSDL específico da conta no campo WSDL Download URL. Esta seção mostra como obter esse URL localizando o domínio específico da conta NetSuite e, em seguida, usando o domínio específico da conta no URL WSDL.
Encontrando o Domínio Específico da Conta NetSuite
Estas etapas devem ser realizadas por um Administrador do NetSuite ou outro usuário com a permissão Configurar Empresa:
-
Faça login na instância do NetSuite.
-
Vá para Configuração > Empresa > Informações da empresa (ou pesquise Informações da empresa).
-
Na página Informações da empresa, acesse a subguia URLs da empresa. O domínio específico da conta está sob o título SuiteTalk (SOAP e REST Web Services):
Para obter mais informações, consulte URLs para domínios específicos da 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/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 a configuração de um endpoint NetSuite, insira esse URL WSDL específico da conta no campo WSDL Download URL.
Informações sobre quais versões do Harmony Agente são necessárias para uso com as versões WSDL acima são fornecidas em Pré-requisitos no NetSuite Connector Endpoint página.
Alterar a Versão do WSDL
Atualizar periodicamente a versão WSDL usada pelo seu endpoint NetSuite para sempre usar uma versão totalmente suportada é uma boa prática recomendada. As etapas abaixo descrevem a melhor maneira de fazer a alteração, garantindo uma atualização perfeita.
-
Crie um novo endpoint.
-
Para cada operação do NetSuite, troque o endpoint antigo pelo novo.
-
Atualize a função.
-
Atualize as transformações.
-
Repita as etapas 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, esta é uma prática desencorajada. Nesse cenário, nenhum erro de validade é relatado e é possível implantar o projeto, substituindo inadvertidamente operações bem-sucedidas por aquelas que falham em tempo de execução devido a incompatibilidades de WSDL nos esquemas.
Erro do Data Center do NetSuite
Devido às alterações feitas pelo NetSuite, alguns formatos de URL WSDL que eram permitidos anteriormente não são mais aceitos, incluindo URLs WSDL genéricos e URLs específicos de data center. A Jitterbit recomenda sempre usar uma URL WSDL específica da conta.
Um endpoint NetSuite pode ter sido testado anteriormente com sucesso, mas agora falha com este erro:
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.
Em algumas circunstâncias, este erro pode aparecer:
You are not requesting the correct data center for your company.
Esses erros podem resultar do uso de um URL de download WSDL incorreto na configuração de uma conexão NetSuite. Devido às alterações feitas pelo NetSuite, alguns formatos de URL WSDL que eram permitidos anteriormente não são mais aceitos, incluindo URLs WSDL genéricos e URLs específicos de data center. Por exemplo:
- URL WSDL genérico:
https://webservices.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl
- URL WSDL específico do data center:
https://webservices.na3.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl
Para resolver, altere a URL do WSDL para usar um domínio específico da conta:
- URL WSDL específico da conta:
https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl
Para obter instruções sobre como encontrar o domínio específico da conta do NetSuite e, em seguida, usar o domínio específico da conta no URL WSDL, consulte URL WSDL específico da conta do NetSuite.
Autenticação de Dois Fatores NetSuite (tfa Ou 2fa)
Aqueles que usam autenticação de dois fatores NetSuite (TFA ou 2FA) não devem usar o tipo de autenticação de logon único (SSO) ao configurar seu endpoint NetSuite em Jitterbit. Fazer isso pode causar falha no endpoint do NetSuite. Em vez disso, é recomendado que esses usuários habilitem a autenticação baseada em token (TBA) em sua conta NetSuite e configurem seu endpoint 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 o TBA.
URL WSDL do NetSuite Sandbox
A partir de janeiro de 2018, o NetSuite usa o mesmo URL para o domínio de produção e de sandbox. Para Design Studio e Agente versões 9.2 e superiores, nenhuma ação será necessária para usuários do Jitterbit com endpoints NetSuite existentes configurados para o domínio sandbox, desde que o sandbox tenha sido atualizado desde essa alteração.
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 anexado com _SB1, _SB2, etc. Como o NetSuite não usa mais um URL de sandbox separado 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 tiver sido atualizado desde que essas alterações do NetSuite foram implementadas, talvez seja necessário usar um URL WSDL específico do 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 INSUFFICIENT_PERMISSION
erro ao executar operações usando um endpoint NetSuite configurado com autenticação baseada em token (TBA), talvez seja necessário usar uma papel diferente para gerar os tokens de acesso ou adicionar permissões à papel que você está usando atualmente. Nesse caso, o teste do endpoint parece bem-sucedido, mas durante o tempo de execução da operação ocorre a exceção.
Para resolver, ao gerar tokens de acesso, certifique-se de gerá-los em uma papel de acesso total ou de administrador ou certifique-se de que as permissões apropriadas sejam permitidas para a 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 UNEXPECTED_ERROR
erro ao testar a conexão com um endpoint NetSuite configurado com autenticação baseada em token (TBA), é recomendável verificar se você está usando o URL WSDL correto. O erro conterá o seguinte texto:
FaultString: An unexpected error has occurred. Technical Support has been alerted to this problem.
Este erro pode ocorrer por vários motivos; entretanto, sabe-se que esse erro resulta de uma URL WSDL incorreta ao usar Agentes que são versão 9.2 a 9,5. Na versão Agentes 9.6 e superiores, o texto da mensagem de erro descreve o problema com mais precisão.
Atualização de Compatibilidade NetSuite TLS
Informações sobre o uso da criptografia TLS 1.2 são fornecidas em NetSuite TLS Compatibility Upgrade.
Governança de Simultaneidade do NetSuite
Em 18 de agosto de 2017, a Netsuite introduziu "Governança de simultaneidade" em sua versão 2017.2. Se você usa serviços web e/ou RESTlets, saiba mais sobre como isso pode afetar sua integração em NetSuite 2017.2 Concurrency Governance.
Limitações de Pesquisa Salva do NetSuite
Ao usar a pesquisa salva do NetSuite, se você estiver tentando pesquisar em objetos que possuem mais de 1.000 pesquisas salvas, pode aparecer no Jitterbit Studio como se não houvesse pesquisas salvas disponíveis no objeto. Nesse caso, o menu suspenso de pesquisas salvas no Jitterbit Studio não será preenchido com nenhuma pesquisa salva. Isso se deve a um limite de 1.000 registros imposto NetSuite em solicitações de API.
Confirmação de Limitação
Para confirmar se o problema está na limitação do NetSuite, você pode verificar o registro de uso de serviços da Web em sua instância do NetSuite. Para um erro deste tipo, o log terá uma entrada semelhante a esta:
<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>
Solução Alternativa para Limitação
Como solução alternativa, é recomendável 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. Depois que o número de pesquisas for reduzido, você poderá selecionar uma pesquisa salva no menu suspenso do Jitterbit Studio.
Uma alternativa para reduzir o número de buscas salvas é executar a busca salva via SOAP, referenciando a busca salva por ID. Observe que esta alternativa não faz uso do Conector NetSuite e pode resultar em problemas ao migrar ambientes.
Funcionalidade Avançada
Esta seção fornece informações sobre os recursos do Jitterbit que permitem que você aproveite ao máximo sua integração com o NetSuite.
Usando Funções do NetSuite
As funções específicas do NetSuite disponíveis no Formula Builder em Funções > Funções do Conector estão listadas abaixo. Para obter mais informações sobre como usar essas funções, consulte Funções do conector.
NetSuiteGetSelectValue
: Recupera os valores da lista de opções 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 NetSuite são executadas de forma síncrona; ou seja, depois que uma solicitação é feita, a conexão é mantida aberta. Se algumas solicitações atingirem o tempo limite durante uma pesquisa síncrona, talvez você queira ativar a configuração assíncrona. Com esta configuração, após o envio da solicitação, o Jitterbit fará uma pesquisa periódica para ver se a solicitação foi concluída. Isto é mais útil com grandes quantidades de dados.
Para ativar a opção assíncrona, defina $jitterbit.netsuite.async=true
em um script que está, por exemplo, no início da operação ou dentro da cadeia de operação (veja Criando um Script). Para obter informações adicionais, consulte a documentação do NetSuite sobre Processamento de solicitação síncrona versus assíncrona.
Passando Valores NULL para Campos Personalizados
Uma limitação da API 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 em CustomFieldList, os campos personalizados podem ser definidos como NULL enviando o campo no NetSuite nullFieldList
.
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 ambos os campos externalId
e name
campos de um campo de destino.
Usando Segmentos Personalizados do NetSuite
Segmentos personalizados em objetos NetSuite padrão e personalizados são suportados pelo NetSuite Connector Create, Atualizar, ObterLista, Inserir e Pesquisar atividades usando um NetSuite Endpoint com um NetSuite WSDL versão 2016.2 ou superior. Você deve estar usando a versão 9.4 ou superior do Design Studio e dos Agentes para usar esse recurso.
Ao configurar qualquer um dos tipos de atividade listados acima, você verá cada segmento personalizado exibido na resposta do NetSuite ou na estrutura de solicitação:
Depois que a atividade for usada em uma transformação, você poderá mapear de ou para qualquer um desses segmentos personalizados, assim como faz para outros campos. Os segmentos personalizados estão localizados em um nó chamado customFieldList
que está presente em seu respectivo nó de objeto.
Nota
Se seus segmentos personalizados não estiverem sendo exibidos, verifique se a conta de usuário do NetSuite usada no endpoint do NetSuite tem as permissões apropriadas para interagir com o segmento personalizado e o objeto ao qual está associado.
Limitação
Em uma Pesquisa Avançada do NetSuite, segmentos personalizados do tipo List/Record 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 que tipo está sendo usado, verifique o Tipo definido no NetSuite em seu Segmento Personalizado:
Esta limitação não se aplica a outros tipos de atividades do NetSuite; ou seja, os tipos List/Record e Multiple Select são suportados em Create, Atualizar, ObterLista, Inserir, Pesquisa Básica, Pesquisa expandida e Pesquisa salva Atividades.
Usando a Pesquisa de Transações do NetSuite por Status
Ao pesquisar transações NetSuite com base em um status específico, você precisará especificar o valor correto do filtro de pesquisa que corresponde ao status desejado. Você pode determinar o valor do filtro de pesquisa correspondente conforme fornecido na tabela abaixo.
Por exemplo, se você quiser que os critérios de pesquisa limitem os registros de Cumprimento de Item apenas àqueles em que Status do Envio = Enviado, em vez de usar a enumeração para Enviado (_enviado), você realmente precisará usar o valor a de ItemShip:C como fornecido na tabela abaixo. Traduções semelhantes se aplicam a uma variedade de objetos NetSuite.
Status | Filtro de pesquisa |
---|---|
Venda à vista:Pagamento não aprovado | Venda a dinheiro:A |
Venda à vista:Não depositado | Venda a dinheiro:B |
Venda à vista:Depositado | Venda a dinheiro:C |
Verifique:Anulado | Verifique:V |
Verifique:Pagamento de contas on-line com aprovação contábil pendente | Verifique:Z |
Comissão:Pagamento Pendente | Comissão:A |
Comissão:Pago em excesso | Comissão:O |
Comissão:Aguarda aprovação contabilística | Comissão:P |
Comissão:Rejeitado pela Contabilidade | Comissão:R |
Comissão:Pago integralmente | Comissão:X |
Cobrança de extrato:Aberto | CustChrg:A |
Cobrança de extrato:Pago integralmente | CustChrg:B |
Nota de crédito:Aberto | CustCred:A |
Nota de crédito:totalmente aplicada | CustoCrédito:B |
Depósito do cliente:Não depositado | CustDep:A |
Depósito do cliente:Depositado | CustoDep:B |
Depósito do cliente: Totalmente aplicado | CustDep:C |
Fatura:Aberta | ClienteInvc:A |
Fatura: Paga integralmente | ClienteInvc:B |
Pagamento:Pagamento não aprovado | CustPymt:A |
Pagamento:Não Depositado | CustPymt:B |
Pagamento:Depositado | CustPymt:C |
Reembolso do cliente:Anulado | Cliente:V |
Citação:Aberto | Estimativa:A |
Citação:Processado | Estimativa:B |
Citação:Fechado | Estimativa:C |
Citação:Anulado | Estimativa:V |
Citação:Expirado | Estimativa:X |
Relatório de despesas:Em andamento | ExpRepto:A |
Relatório de despesas:Aprovação pendente do supervisor | ExpRepto:B |
Relatório de despesas:Aprovação contábil pendente | ExpRepto:C |
Relatório de Despesas:Rejeitado pelo Supervisor | ExpRepto:D |
Relatório de Despesas:Rejeitado pela Contabilidade | ExpRepto:E |
Relatório de Despesas:Aprovado pela Contabilidade | ExpRepto:F |
Relatório de despesas:Aprovado (substituído) pela contabilidade | ExpRepto:G |
Relatório de despesas:Rejeitado (substituído) pela contabilidade | ExpRept:H |
Relatório de despesas:Pago integralmente | ExpRepto:I |
Contagem de estoque:Aberto | ContagemInv:A |
Contagem de inventário:Iniciado | ContagemInv:B |
Contagem de inventário:Aprovação concluída/pendente | ContagemInv:C |
Contagem de inventário:Aprovado | ContagemInv:D |
Cumprimento do item:Escolhido | ItemEnvio:A |
Cumprimento do item: Embalado | Envio de item:B |
Cumprimento do item:Enviado | ItemEnvio:C |
Diário: Aprovação Pendente | Diário:A |
Diário:Aprovado para publicação | Diário:B |
Verificação de responsabilidade da folha de pagamento: anulada | LiabPymt:V |
Oportunidade:Em andamento | Oportunidade:A |
Oportunidade:Estimativa Emitida | Oportunidade:B |
Oportunidade:Fechada – Ganhou | Oportunidade:C |
Oportunidade:Fechada – Perdida | Oportunidade:D |
Contracheque:Indefinido | Contracheque:A |
Contracheque:Cálculo de Imposto Pendente | Contracheque:C |
Contracheque:Compromisso Pendente | Contracheque:D |
Contracheque:Comprometido | Contracheque:F |
Contracheque:Visualizar | Contracheque:P |
Contracheque:Revertido | Contracheque:R |
Ordem de compra:Aprovação pendente do supervisor | Pedido de compra:A |
Pedido de compra:Recebimento pendente | Pedido de compra:B |
Pedido de compra:Rejeitado pelo Supervisor | Ordem de compra:C |
Ordem de compra:Recebida parcialmente | Pedido de compra:D |
Pedido de Compra:Faturamento Pendente/Recebido Parcialmente | Pedido de compra:E |
Pedido de Compra:Fatura Pendente | Ordem de compra:F |
Pedido de compra:totalmente faturado | Ordem de compra:G |
Ordem de compra:Fechada | Ordem de compra:H |
Autorização de devolução:Aprovação pendente | RtnAuth:A |
Autorização de Devolução:Recebimento Pendente | RtnAuth:B |
Autorização de devolução:Cancelada | RtnAuth:C |
Autorização de devolução:Recebido parcialmente | RtnAuth:D |
Autorização de devolução:Reembolso pendente/Recebido parcialmente | RtnAuth:E |
Autorização de devolução:Reembolso pendente | RtnAuth:F |
Autorização de devolução:Reembolsado | RtnAuth:G |
Autorização de Devolução:Fechado | RtnAuth:H |
Pedido de venda:Aprovação pendente | Ordem de vendas:A |
Pedido de venda: Cumprimento pendente | Ordem de vendas:B |
Pedido de venda:Cancelado | Ordem de vendas:C |
Pedido de venda:parcialmente atendido | Ordem de vendas:D |
Pedido de venda:Faturamento Pendente/Atendido Parcialmente | Ordem de vendas:E |
Pedido de Venda:Faturamento Pendente | Ordem de vendas:F |
Pedido de Venda:Faturado | Ordem de vendas:G |
Pedido de venda:Fechado | Ordem de vendas:H |
Cheque de Responsabilidade Fiscal: Anulado | FiscalLib:V |
Pagamento de imposto sobre vendas: anulado | ImpostoPim:V |
Pagamento de imposto sobre vendas: Pagamento de contas on-line com aprovação contábil pendente | ImpostoPim:Z |
Tegata a pagar:Endossado | TegPybl:E |
Tegata a Pagar:Emitido | TegPybl:EU |
Tegata Pagável:Pago | TegPybl:P |
Recebíveis Tegata:Cobrados | TegRcvbl:C |
Recebíveis Tegata:Descontados | TegRcvbl:D |
Recebíveis Tegata: Aprovado | TegRcvbl:E |
Tegata Recebíveis:Holding | TegRcvbl:H |
Ordem de transferência:Aprovação pendente | TrnfrOrd:A |
Ordem de transferência: Cumprimento pendente | Ordem de transferência:B |
Ordem de transferência:Rejeitada | Ordem de transferência:C |
Ordem de transferência:parcialmente cumprida | Ordem de transferência:D |
Ordem de Transferência:Recebimento Pendente/Cumprido Parcialmente | Ordem de transferência:E |
Ordem de Transferência:Recebimento Pendente | TrnfrOrd:F |
Ordem de transferência:Recebida | TrnfrOrd:G |
Ordem de Transferência:Fechada | Ordem de transferência:H |
Autorização de devolução do fornecedor:Aprovação pendente | VendAuth:A |
Autorização de devolução do fornecedor: Devolução pendente | VendAuth:B |
Autorização de devolução do fornecedor:Cancelada | VendAuth:C |
Autorização de devolução do fornecedor:Devolvido parcialmente | VendAuth:D |
Autorização de devolução do fornecedor:Crédito pendente/Devolvido parcialmente | VendAuth:E |
Autorização de devolução do fornecedor:Crédito pendente | VendAuth:F |
Autorização de devolução do fornecedor:Crédito | VendAuth:G |
Autorização de devolução do fornecedor:Fechado | VendAuth:H |
Projeto de lei:Aberto | Conta de Vendedor:A |
Fatura: Pago integralmente | Conta de Vendedor:B |
Projeto de lei:Cancelado | Conta de Vendedor:C |
Projeto de lei: Aprovação pendente | Conta de Vendedor:D |
Projeto de lei:Rejeitado | Conta de Vendedor:E |
Pagamento em dinheiro:Anulado | VendPymt:V |
Pagamento em dinheiro:Pagamento de contas on-line com aprovação contábil pendente | VendPymt:Z |
Ordem de serviço:Construção pendente | Ordem de Trabalho:B |
Ordem de serviço:Cancelada | Ordem de Trabalho:C |
Ordem de serviço:Em processo | Ordem de Trabalho:D |
Ordem de Serviço:Construído | Ordem de Trabalho:G |
Ordem de Serviço:Fechada | Ordem de Trabalho: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 NetSuite:
-
Capturando alterações de dados com uma API Harmony ou Endpoint HTTP
-
Capturando alterações de dados com valores de campo de origem
-
Capturar alterações de dados com alterações de tabela ou arquivo
-
Capturando alterações de dados com consultas baseadas em carimbo de data/hora
-
Vinculando registros de origem ou destino usando IDs compartilhados
-
Persistência de dados para processamento posterior usando armazenamento temporário
-
Persistência de dados de entrada para processamento posterior
-
Executando as próximas operações condicionalmente usando cadeias de operações