Integrações / ERP / Oracle NetSuite
Guia de integração do NetSuite com o SkyPlanner APS para programação da produção
Este guia explica aos parceiros NetSuite, administradores e compradores técnicos como ligar o SkyPlanner APS ao Oracle NetSuite para programar a produção respeitando a capacidade real das máquinas e das equipas. O SkyPlanner integra-se com o NetSuite nos dois sentidos, através de serviços web REST e SuiteQL:
- Recebe ordens de fabrico, gamas operatórias, centros de trabalho, artigos e encomendas a fornecedores.
- As datas e horas de início e fim planeadas são gravadas nas tarefas das operações de fabrico.
- As horas registadas e as quantidades produzidas são enviadas de volta como Work Order Completions ou Assembly Builds.
- Os webhooks do SkyPlanner enviam as alterações à programação assim que ocorrem.
O NetSuite gere os artigos, BOMs, gamas operatórias, ordens de fabrico, existências e custeio. O SkyPlanner faz a programação da produção através do motor Arcturus, respeitando a capacidade real disponível das máquinas e do pessoal. A equipa SkyPlanner configura a integração para a sua conta durante a implementação inicial e presta suporte após a entrada em produção. A integração utiliza registos padrão do NetSuite e não depende da Advanced Manufacturing SuiteApp.
O SkyPlanner já funciona integrado com o NetSuite na UTU, um fabricante de quadros elétricos e aparelhagem de comutação em Ulvila, na Finlândia. A UTU entrou em produção em setembro de 2025, com o SkyPlanner integrado com o Oracle NetSuite e o seu sistema de processamento salarial. Para avaliar o retorno para o negócio, comece pela página de programação da produção com o NetSuite e por O NetSuite permite programar a produção?.
A decisão que define o projeto: REST e OAuth 2.0
A Oracle já definiu o rumo. A partir da versão 2026.1, as novas integrações devem ser desenvolvidas com os serviços web SuiteTalk REST e OAuth 2.0. A partir da versão 2027.1, deixam de ser permitidas novas integrações com SOAP ou Token-Based Authentication (TBA). Os endpoints SOAP serão desativados na versão 2028.2. Qualquer integração de programação iniciada hoje deve usar REST.
| Opção do NetSuite | O que é | Função numa integração com APS |
|---|---|---|
| API de registos SuiteTalk REST | /services/rest/record/v1/<recordType>, com versões que acompanham as versões do NetSuite; !transform para conclusões de ordens de fabrico, saídas de materiais e montagens | Escrita: datas das tarefas de operação e das ordens de fabrico (PATCH), conclusões, saídas de materiais e montagens (transform) |
| SuiteQL via REST | POST /services/rest/query/v1/suiteql com Prefer: transient, até 100.000 resultados por consulta, paginação por limit/offset | Leitura em massa: artigos, gamas operatórias, centros de trabalho, ordens de fabrico em aberto, existências |
| RESTlets do SuiteScript 2.1 | Endpoints personalizados get/post/put/delete | Colmatar lacunas de cobertura REST e combinar dados num único payload, como uma ordem de fabrico com todas as suas operações |
| SuiteScript User Event / Map-Reduce | Scripts executados no servidor, dentro do NetSuite | Notificações de alterações enviadas para o exterior |
| CSV Import Assistant | Mapeamentos de importação guardados | Carregamentos pontuais; não se destina à sincronização contínua |
| SuiteTalk SOAP | Tecnologia legada, apenas com TBA | Não iniciar novas integrações com esta opção |
Autenticação
Para um sistema de programação que comunica entre servidores, utilize OAuth 2.0 Client Credentials (máquina a máquina). O caminho de administração é Setup > Integration > Manage Authentication > OAuth 2.0 Client Credentials (M2M) Setup. Carregue um certificado público e associe-o a uma entidade, a uma função e ao registo de integração. Cada registo de integração admite, no máximo, cinco certificados ativos.
Crie uma função dedicada à integração: permissão de consulta para artigos, revisões de BOM, gamas operatórias e centros de trabalho; permissão de edição para ordens de fabrico, conclusões e saídas de materiais. A API REST do SkyPlanner (referência da API) utiliza JWT, pelo que o middleware guarda ambas as credenciais.
Eventos: não existe um webhook padrão
A documentação da Oracle não descreve qualquer webhook nativo de saída. A solução consiste num script SuiteScript User Event no registo Work Order (afterSubmit), que coloca uma chamada de saída em fila através de N/task ou de um script Map/Reduce. A chamada é feita com N/https. Nunca faça chamadas síncronas em afterSubmit: a chamada é executada durante a gravação feita pelo utilizador, pelo que um endpoint lento atrasa ou faz falhar essa gravação.
Os eventos de utilizador não abrangem todas as formas de alteração. As atualizações em massa e as importações CSV podem não os acionar. Combine o script de eventos com consultas periódicas de reconciliação em SuiteQL sobre lastmodifieddate, para que nenhuma alteração fique por detetar. No sentido inverso, os webhooks do próprio SkyPlanner desencadeiam a escrita no NetSuite, que recebe assim as novas datas logo que o plano é alterado.
Mapeamento de dados: do NetSuite para o SkyPlanner
| Registo do NetSuite (ID REST) | Objeto do SkyPlanner | Sentido | Frequência |
|---|---|---|---|
Assembly Item (assemblyItem), Inventory Item (inventoryItem) | Produto / material | NetSuite → SkyPlanner | Carregamento inicial, depois diariamente ou quando houver alterações |
BOM Revision (bomRevision), componentes da BOM | Estrutura multinível do produto, necessidades de materiais | NetSuite → SkyPlanner | Quando houver alterações |
Manufacturing Routing (manufacturingRouting, sublistas routingStep, routingComponent) | Etapas do processo: sequência, centro de trabalho, tempo de preparação, tempo de execução | NetSuite → SkyPlanner | Quando houver alterações |
| Manufacturing Work Center (Group assinalado como centro de trabalho): Machine Resources, Labor Resources, Work Calendar | Centros de trabalho, grupos de centros de trabalho, turnos | NetSuite → SkyPlanner, com manutenção posterior no SkyPlanner | Carregamento inicial |
Work Order (workOrder): artigo, quantidade, localização, Production Start/End Date, estado; Sales Order associada para obter a data de entrega | Ordem / tarefa com data de entrega e prioridade | NetSuite → SkyPlanner | Quase em tempo real via User Event, com consultas periódicas de reconciliação |
Manufacturing Operation Task (manufacturingOperationTask) | Operação programada | NetSuite → SkyPlanner, datas SkyPlanner → NetSuite | Quase em tempo real |
Existências por localização (SuiteQL), Item Receipts (itemReceipt) | Saldos de existências para programar a produção em função dos materiais | NetSuite → SkyPlanner | A intervalos de 15 a 60 minutos ou na receção |
Linhas de Purchase Order (purchaseOrder): artigo, quantidade, data prevista de receção, estado | Encomendas de compra / materiais a receber (data prevista de entrega). Os materiais são considerados disponíveis na data de entrega; as existências são atualizadas quando a encomenda de compra é marcada como Delivered | NetSuite → SkyPlanner | A intervalos de 15 a 60 minutos ou quando houver alterações |
| Início e fim planeados por operação | PATCH manufacturingOperationTask/{id} (startDate, endDate) e PATCH workOrder/{id} (Production Start/End Date) | SkyPlanner → NetSuite | Quando a programação mudar, via webhook do SkyPlanner |
| Mobile Confirmations, registos de tempo, Production Timer | POST workOrder/{id}/!transform/workOrderCompletion: intervalo startOperation/endOperation, quantidade concluída, tempo de mão de obra nas linhas operation, ID do registo de tempo do SkyPlanner como ID externo | SkyPlanner → NetSuite | Por confirmação ou em lote |
| Consumo de materiais | POST workOrder/{id}/!transform/workOrderIssue, ou isBackflush na conclusão | SkyPlanner → NetSuite | Por confirmação |
| Ordem concluída (contas sem WIP) | POST workOrder/{id}/!transform/assemblyBuild | SkyPlanner → NetSuite | Na conclusão da ordem |
| Ordem encerrada | Work Order Close (workOrderClose) | No NetSuite, pelo departamento financeiro | Não automatizado por predefinição |
Modelos de integração
1. Carregamento inicial dos dados mestre. Leia primeiro os centros de trabalho e depois os artigos, as revisões de BOM e as gamas operatórias com SuiteQL. As gamas operatórias fazem referência aos centros de trabalho, pelo que a ordem é importante. Durante o teste, exporte os mesmos dados para CSV e importe-os para o SkyPlanner. A programação é validada antes de se escrever qualquer código.
2. Sincronização de ordens. Obtenha as ordens de fabrico nos estados Released e In Process. Decida logo no início se pretende incluir as ordens de fabrico no estado Planned. Se as incluir, trate-as como procura provisória. Sincronize as encomendas a fornecedores em aberto no mesmo ciclo, para que a programação verifique cada tarefa face às existências e aos materiais a receber, e não apenas às existências.
3. Escrita da programação no NetSuite. Quando a programação muda, um webhook do SkyPlanner envia as novas datas das operações para o middleware. O middleware envia PATCH /services/rest/record/v1/manufacturingOperationTask/{id} (referência de registos da Oracle) com startDate e endDate para cada operação alterada. Um PATCH adicional no cabeçalho de workOrder define os campos Production Start e End Date. Escreva apenas as datas e, caso o utilize, um campo personalizado de sequência. Nunca escreva quantidades nem dados da BOM no NetSuite. Para atualizar várias operações numa única transação, um pequeno RESTlet guarda toda a lista de operações numa só chamada. A API de registos continua a ser a opção predefinida.
4. Confirmações do chão de fábrica. Os operadores registam o trabalho no SkyPlanner Mobile Confirmations. O middleware envia cada confirmação através das transformações de Work Order, com POST /services/rest/record/v1/workOrder/{id}/!transform/workOrderCompletion, incluindo startOperation, endOperation, a quantidade concluída e o tempo registado nas linhas das operações. As ordens de fabrico sem WIP são encerradas com !transform/assemblyBuild. A utilização de Work Order Completion via REST requer a funcionalidade Manufacturing Work In Process. Os movimentos de existências e os lançamentos de custos mantêm-se no NetSuite.
5. Idempotência e novas tentativas. Cada registo de conclusão usa o ID do registo de tempos do SkyPlanner como ID externo no NetSuite. Os IDs externos são únicos por tipo de registo, pelo que um webhook reenviado é rejeitado como duplicado, em vez de lançar quantidades e custos duas vezes. As operações de escrita passam por uma fila. Quando uma chamada falha (limite de simultaneidade, registo bloqueado, certificado expirado), é repetida e fica registada. As falhas que persistirem ficam visíveis para a equipa SkyPlanner que presta suporte à integração.
6. Regras de responsabilidade pelos dados. O NetSuite define o que é fabricado: artigo, quantidade, BOM, gama operatória e localização. O SkyPlanner define quando e onde: sequência de operações, centro de trabalho, início e fim. As datas alteradas no NetSuite são substituídas no envio seguinte dos dados de programação. Por isso, bloqueie os campos Production Start/End Date através de uma personalização do formulário ou de um fluxo de trabalho.
Etapas habituais do projeto
A implementação fica normalmente concluída em poucas semanas após o arranque, mesmo em grandes empresas. Um projeto NetSuite inclui:
- Teste com os seus próprios dados: exportação para CSV de centros de trabalho, gamas operatórias e ordens de fabrico em aberto a partir de pesquisas guardadas, com importação para o SkyPlanner durante o teste de 30 dias.
- Mapeamento dos dados mestre: correspondência entre registos NetSuite e objetos SkyPlanner, campos personalizados, unidades e modelo com ou sem WIP por artigo.
- Carregamento inicial: artigos, revisões de BOM, gamas operatórias e centros de trabalho via SuiteQL, seguido da configuração de turnos, operadores e centros de trabalho alternativos no SkyPlanner.
- Sincronização de ordens e encomendas a fornecedores: ordens de fabrico nos estados Released e In Process e encomendas a fornecedores em aberto com datas previstas de receção, através de scripts User Event e de consultas periódicas de reconciliação.
- Envio da programação para o NetSuite: gravação das datas planeadas das operações nas ordens de fabrico e nas tarefas das operações, com OAuth 2.0 M2M configurado nos ambientes de testes e de produção.
- Confirmações do chão de fábrica: Work Order Completions, saídas de materiais ou Assembly Builds a partir de Mobile Confirmations e dos registos de tempos.
- Testes em paralelo com o plano atual: executar a programação do SkyPlanner em paralelo com o processo atual de lançamento de ordens e comparar os resultados.
- Entrada em produção: passar o planeamento para o SkyPlanner e bloquear os campos de data no NetSuite.
Gamas operatórias bem definidas e uma única subsidiária mantêm o âmbito reduzido. Várias subsidiárias, consumo automático de materiais em WIP e formulários personalizados exigem mais trabalho de mapeamento.
Armadilhas a evitar no NetSuite
- Ordens de fabrico sem gama operatória. Uma ordem de fabrico sem Manufacturing Routing não tem operações para programar. A Oracle diz o mesmo sobre o seu próprio sistema de programação da produção, que respeita a capacidade disponível: “Work orders not associated with a NetSuite routing should not be scheduled.” (As ordens de fabrico sem uma gama operatória NetSuite associada não devem ser programadas.) Identifique-as com SuiteQL antes da entrada em produção.
- Os centros de trabalho têm poucos dados. No NetSuite, um centro de trabalho é um Group com duas contagens, Machine Resources e Labor Resources (ambas com o valor predefinido de 0), e um Work Calendar, normalmente “Default Work Calendar”. Carregue os centros de trabalho uma vez e depois mantenha no SkyPlanner os centros de trabalho individuais, turnos por pessoa, ferramentas, matriz de tempos de preparação e centros de trabalho alternativos.
- Qualidade dos valores de Setup Time e Run Rate. A programação com capacidade infinita do NetSuite utiliza estes campos, mas, como ignora a capacidade, os valores incorretos passam despercebidos. Uma programação da produção que respeite a capacidade real revela-os logo no primeiro dia.
- Com ou sem WIP. Com Manufacturing WIP, a produção é registada através de Work Order Issue, Work Order Completion e Work Order Close. Sem WIP, utiliza-se um Assembly Build. A integração lança conclusões para os artigos com WIP e registos Assembly Build para os restantes, pelo que o modelo de cada artigo faz parte do mapeamento.
- Advanced Manufacturing na mesma conta. Se a conta também utilizar a Advanced Manufacturing SuiteApp, os respetivos registos Manufacturing Work Bench têm de corresponder exatamente à gama operatória: sequência de operações, nome da operação e centro de trabalho. Defina qual dos sistemas determina as datas das operações. Dois sistemas a programar as mesmas ordens de fabrico significam dois planos em conflito.
- Limites de simultaneidade. As chamadas a serviços web e RESTlets partilham um único limite de simultaneidade da conta, definido pelo nível de serviço, acrescido de 10 por licença SuiteCloud Plus. As consultas periódicas em paralelo, registo a registo, atingem rapidamente esse limite. Utilize SuiteQL com paginação para as leituras e coloque as operações de escrita numa fila.
- A atualização do ambiente de testes apaga a configuração M2M. As associações de credenciais de cliente OAuth 2.0 são eliminadas quando o ambiente de testes é atualizado e não são copiadas entre contas. Um certificado expirado ou revogado interrompe a sincronização até ser criada uma nova associação. Configure alertas para falhas de autenticação.
Integração com o NetSuite: quem a configura e quem presta suporte
O trabalho abrange o mapeamento dos seus registos, gamas operatórias e centros de trabalho, bem como das restrições que o NetSuite não guarda como dados utilizáveis na programação: matriz de tempos de preparação, ferramentas, número de operadores e recursos alternativos. Os webhooks do SkyPlanner enviam de volta as alterações à programação assim que ocorrem, incluindo as efetuadas pelo Autopilot.
- A equipa SkyPlanner configura a integração durante a implementação inicial e presta suporte após a entrada em produção. Cada fábrica utiliza o NetSuite de forma diferente: com ou sem WIP, formulários personalizados, scripts e convenções para gamas operatórias. A equipa mapeia os seus registos e liga a API REST e os webhooks do SkyPlanner ao NetSuite REST, SuiteQL e RESTlets. O suporte abrange o script User Event e o middleware e acompanha as alterações à sua configuração do NetSuite.
- O seu parceiro NetSuite pode participar. Os parceiros conhecem os seus formulários personalizados, scripts e funções. Trabalham com a API REST do SkyPlanner, que abrange ordens, produtos, materiais, encomendas a fornecedores, etapas do processo e registos de tempos. A API dispõe de documentação Swagger/OpenAPI e autenticação JWT. Documentação pública: documentação do SkyPlanner.
- Os seus próprios programadores podem desenvolver sobre esta base. Uma divisão habitual é manter o script User Event dentro do NetSuite e um pequeno serviço de middleware fora dele. Basta uma chave de API para começar (tutorial de integração), e a equipa SkyPlanner ajuda quando necessário.
Valide primeiro a programação no teste gratuito de 30 dias, com dados CSV, até 20 centros de trabalho e sem cartão de crédito. Assim, a integração parte de uma programação já ajustada à fábrica.
Após a ligação, o motor Arcturus programa a partir das ordens de fabrico atualizadas do NetSuite e verifica os materiais em existência e nas encomendas a fornecedores por receber. Os operadores registam o trabalho com Mobile Confirmations, Production Timer e Quick Log Mode, e o NetSuite reflete a situação no chão de fábrica sem introdução manual de dados. O SkyPlanner está disponível a partir de 199 € por mês, com 5 centros de trabalho incluídos, faturação mensal e cancelamento a qualquer momento. O orçamento da integração é apresentado antecipadamente, em função do seu processo e das suas necessidades, juntamente com o seu plano, para que conheça o custo total antes de começar. Fale com a equipa comercial para definir o âmbito da sua integração NetSuite ou consulte as funcionalidades e os clientes.
Opiniões de fabricantes sobre o SkyPlanner
2 hpoupadas por semana
“Com o SkyPlanner, o nosso planeamento da produção passou das folhas de cálculo Excel para a otimização da produção em tempo real.”
Kalle Kalliomäki, Especialista em Cadeia de Abastecimento
UTU · Quadros elétricos e aparelhagem de manobra
O planeamento da produção permite poupar 2 horas de trabalho por semana, e uma nova fila de tarefas chega à linha em segundos.
+90%de eficiência na produção
“A eficiência na produção aumentou 90%.”
Abdul Rucyinga, Responsável de TI
Laboratory & Allied · Produção farmacêutica
A eficiência na produção aumentou 90%, e a criação de um plano otimizado para três meses, abrangendo todos os centros de trabalho, demora menos de 30 minutos.
99,2%de fiabilidade das entregas
“O SkyPlanner tornou os estrangulamentos mais fáceis de identificar e a gestão da produção mais clara.”
Toni Tuori, Responsável de Produção
Piristeel · Sistemas de segurança para coberturas e de drenagem de águas pluviais
A fiabilidade das entregas atingiu 99,2% este ano, e a programação permite poupar até quatro horas de trabalho por dia.
6 mesesde capacidade disponível visível para a equipa comercial
“O SkyPlanner proporciona uma base sólida e fiável para todo o planeamento da produção.”
Anu Järvinen, Responsável de Produção
Fredman Operations · Papéis de embalagem aptos para contacto alimentar
A equipa comercial vê a capacidade disponível com seis meses de antecedência, e os pedidos de alteração à programação que demoravam uma hora ou mais a obter resposta são agora respondidos em segundos.
Perguntas frequentes
Como se liga o SkyPlanner APS ao NetSuite?
Nos dois sentidos, através da API REST de registos do NetSuite, de SuiteQL e, quando necessário, de RESTlets. As datas das operações são escritas com PATCH em manufacturingOperationTask. A mão de obra e a produção são registadas através da transformação workOrderCompletion ou assemblyBuild. A equipa do SkyPlanner configura a integração durante a implementação inicial e presta apoio após a entrada em produção. O seu parceiro NetSuite ou os seus próprios programadores podem desenvolvê-la com base na API REST documentada.
Precisamos da Advanced Manufacturing SuiteApp para utilizar o SkyPlanner?
Não. O próprio SkyPlanner faz a programação da produção a partir dos objetos padrão Work Orders, Manufacturing Routings e Work Centers, respeitando a capacidade real das máquinas e das equipas. Se a conta também utilizar Advanced Manufacturing, é na definição do âmbito que se determina qual dos sistemas define as datas das operações.
Como se evitam lançamentos duplicados se um evento for enviado duas vezes?
Cada Work Order Completion utiliza o ID do registo de tempo do SkyPlanner como ID externo. O NetSuite garante que os IDs externos são únicos por tipo de registo, pelo que um evento reenviado é rejeitado em vez de voltar a lançar a quantidade e o custo. As operações de escrita que falham são colocadas em fila, repetidas e registadas em log.
Podemos utilizar TBA ou SOAP em vez de REST e OAuth 2.0?
Para novas integrações, opte por REST com OAuth 2.0. A Oracle deixa de permitir novas integrações TBA e SOAP a partir da versão 2027.1 e desativa todos os endpoints SOAP na versão 2028.2. Uma integração do SkyPlanner baseada em REST e OAuth 2.0 continuará a funcionar após ambas as datas.
Como é que o SkyPlanner recebe informação sobre novas ordens de fabrico no NetSuite?
O NetSuite não tem um webhook de saída padrão documentado. Um script User Event no objeto Work Order coloca uma notificação em fila quando o registo é guardado. Uma consulta periódica agendada com SuiteQL deteta as alterações que escapam ao script, como importações CSV e atualizações em massa.
Podemos testar o SkyPlanner com dados do NetSuite antes de desenvolver a integração?
Sim. Exporte os centros de trabalho, as gamas operatórias e as ordens de fabrico em aberto em formato CSV, importe-os para o SkyPlanner durante o período de avaliação de 30 dias e compare a programação da produção, que respeita a capacidade real, com o seu plano atual. Inicie a avaliação gratuita ou agende uma demonstração.
Quanto tempo demora um projeto de integração com o NetSuite?
A implementação fica normalmente concluída em poucas semanas após o início do processo de adoção, mesmo em grandes empresas. Durante o período de avaliação, a programação já funciona com dados CSV, e a UTU já utiliza o SkyPlanner com o NetSuite (testemunho da UTU).