ERP de obra: orçamento, títulos, bancos e insumos
Última versão, rollup da EAP e apropriação pelo percentual
Orçado, comprometido, realizado e desvio por item
Comitê de obra, alerta de desvio e agente de IA
O que resolve
- O custo por nível da EAP sai fora do ERP com os mesmos números do relatório oficial.
- A engenharia vê onde cada obra estoura o orçamento, por subetapa e item, a tempo de agir.
- Custo e avanço físico aparecem lado a lado, para saber se a obra gasta mais rápido do que avança.
Perguntas de negócio que responde
Faça estas perguntas ao seu agente quando o caso estiver pronto.
O que você precisa
- ERP de obra conectado (Sienge ou UAU), com orçamento, contas a pagar e movimentos bancários
- O mapa de cada obra: id da obra, empresa (SPE) e centro de custo
- A ferramenta de planejamento conectada (Agilean ou Prevision), se quiser avanço físico
O que você recebe
- Uma tabela de custo por nível da EAP com orçado, comprometido e realizado
- Um ranking de desvios por subetapa e item
- Um analítico de apropriações por título e item, com pagamentos
- A curva de avanço físico planejado, reprogramado e real ao lado do custo
Onde ativar
Custo por nível da EAP, ranking de desvios e curva de avanço físico de cada obra numa página só.
Avisa a engenharia quando um item medido fecha com sobrecusto acima do limite ou quando o comprometido passa muito do avanço real.
Responde sobre saldo a contratar, adiantamentos e desvios com as regras de versão e rollup já aplicadas.
Os arrays do ERP precisam ser desaninhados com cuidado e cada número validado contra o relatório da obra. Comece por uma obra e só abra para as outras depois que ela bater. O detalhado traz as regras de negócio, as armadilhas e o teste de aceitação. Ou mande tudo direto para o seu agente com o MCP da Nekt.
O orçamento da obra fica em versões, numa árvore de códigos da EAP, e os títulos do contas a pagar chegam com arrays aninhados que dizem quanto de cada um vai para cada obra e item. Quem soma todas as versões, soma pai e filho juntos ou ignora o percentual apropriado entrega um orçado dobrado e um realizado que não bate com o relatório do ERP. Sem isso, o desvio por etapa continua numa planilha manual.
Como costuma ser feito, e a regra
Cada linha é um erro que já aconteceu na prática.
building_cost_estimation_items guarda cada versão do orçamento. Por obra e unidade construtiva, fique só com o maior versionNumber. Somar todas as versões multiplica o orçado pelo número de revisões. Guarde a versão usada numa coluna, para quem compara com o ERP saber qual é.
O wbsCode é hierárquico (por exemplo, 01, 01.002, 01.002.003). Para totais, some só as folhas da árvore, porque o pai já é a soma dos filhos. Para o relatório por nível, cada código recebe a soma de todos os descendentes (o próprio código e os que começam com ele seguido de ponto), e não só os lançamentos feitos exatamente nele.
Comprometido é tudo que foi lançado no contas a pagar para o item, pago ou não. Realizado é o que já foi pago. Os dois saem dos mesmos títulos apropriados à obra, com o percentual de cada item. Orçado menos comprometido é o saldo a contratar; comprometido menos realizado é o que falta pagar.
Cada título tem o array buildingsCosts com obra, unidade, item da EAP (costEstimationSheetId) e rate. Valor apropriado ao item = valor do título x rate / 100, arredondado em centavos por linha. Movimento bancário apropriado usa o array buldingCosts (com o erro de grafia da API) e sinal pela operação: saída ('S') soma, entrada subtrai.
Desvio = comprometido - orçado: positivo é sobrecusto, negativo é economia. Em item ainda em execução, comprometido abaixo do orçado é só contrato que falta, não economia. Ranqueie desvios só de itens com percentComplete = 100, por subetapa (nível 1) e por item da subetapa (nível 2). Os demais aparecem como 'em execução', com o % medido.
O mesmo título traz o percentual por centro de custo e categoria financeira (paymentsCategories) e o percentual por obra (buildingsCosts). Quando os dois discordam para a mesma obra, o título está mal apropriado. Gere uma lista de distorções por título com os dois percentuais, para o financeiro corrigir no ERP antes do fechamento.
A obra aparece como buildingId no orçamento e nos títulos, como costCenterId no estoque e nos centros de custo, e como companyId (a SPE) no financeiro. Mantenha um mapa com obra, empresa e centro de custo. Quando só houver o nome, o centro de custo costuma terminar com a sigla da obra: case pelo sufixo exato, nunca por 'contém'.
Adiantamento a fornecedor e caução retida são títulos do contas a pagar, identificados por documentIdentificationName. Saldo de adiantamento = balanceAmount dos títulos de adiantamento de obra, por credor. A caução é apropriada à obra pelo buildingsCosts como qualquer título. A API não liga esses títulos ao contrato de fornecimento: número do contrato e data de medição não vêm, e o agente deve dizer isso.
Avanço planejado, reprogramado e real (mensal e acumulado), IDP e PPC vêm do Agilean ou do Prevision. Ligue à obra do ERP pelo id gravado na ferramenta (no Prevision, siengeprojectid = id do centro de custo do Sienge). Mostre só meses até o mês atual. Compare o % comprometido do orçamento com o % de avanço real acumulado: custo muito à frente do avanço é alerta.
O mesmo código de insumo pode significar coisas diferentes em bases de custo diferentes. A chave do insumo é base de custo + código. A chave do item é obra + unidade + código da EAP até o nível usado. Orçado x solicitado por insumo compara a quantidade da composição do orçamento com a apropriada nas solicitações atendidas, por obra e subetapa.
De onde vem cada valor da obra
Campos padrão do conector Sienge.
Definições
Armadilhas que já aconteceram
A tabela de orçamento somada inteira juntava versões antigas e itens pai com filhos, e o orçado da obra saiu várias vezes maior.
Última versão e só folhas nos totais.
O cruzamento pelo código exato só achava lançamentos feitos no próprio código, e as subetapas apareciam com comprometido zero.
Rollup por prefixo do wbsCode.
O ranking mostrava grandes economias em itens que tinham acabado de começar.
Ranqueie só itens 100% medidos.
O centro de custo de uma obra foi casado por 'contém' a sigla e trouxe lançamentos de outra obra com sigla parecida.
Use o mapa de ids ou o sufixo exato do nome.
O time pediu estoque mínimo e quantidade reservada, que não existem em stock_inventories e só vêm numa stream opcional que estava desligada.
Habilite building_resources ou diga que o dado não existe.
O financeiro pediu a caução por contrato e medição, e a API do contas a pagar não traz esse vínculo.
Entregue por credor e obra e registre a ausência no context document.
Teste de aceitação
O caso está pronto quando todos os itens passam.
- Para uma obra, código, descrição, unidade, quantidade, preço unitário e preço total do orçamento batem com o relatório de orçamento do ERP na versão vigente.
- Orçado, comprometido e realizado de cada subetapa batem com o relatório de custo por nível do ERP, com tolerância de centavos.
- Em cada obra, a soma dos itens folha é igual ao total do nível mais alto da EAP.
- O saldo de adiantamento por credor bate com o relatório sintético do ERP.
- Nenhum item com menos de 100% medido aparece no ranking de desvios.
Pacote para o agente
Cole no Claude, ChatGPT ou outro cliente com o MCP da Nekt conectado.
Custo de obra orçado x realizado - Orçado = totalPrice da última versão (maior versionNumber) por obra e unidade. Totais somam só as folhas da EAP. - Relatório por nível: cada código soma todos os descendentes (rollup por prefixo do wbsCode). - Comprometido = títulos lançados, pagos ou não; realizado = pago. Sempre lado a lado. - Valor apropriado ao item = valor do título x rate / 100 de buildingsCosts. No movimento bancário, buldingCosts, com saída somando e entrada subtraindo. - Desvio = comprometido - orçado, só em itens 100% medidos. Positivo = sobrecusto. - Obra: buildingId (orçamento e títulos) = costCenterId (estoque) = companyId da SPE pelo mapa de obras. Nunca case obra por 'contém'. - Adiantamento e caução pelo documentIdentificationName. A API não traz contrato nem data de medição da caução: diga isso. - Avanço físico e IDP vêm da ferramenta de planejamento, só até o mês atual. - Estoque = quantity x averagePrice. Estoque mínimo e reservado não existem sem building_resources. Exceções por cliente: - <cliente>: obras <sigla> = buildingId <id>, companyId <id>, centro de custo '<nome>'. - <cliente>: tipo de documento de adiantamento = '<nome>'. - <cliente>: a versão do orçamento <n> da obra <sigla> é a vigente por decisão da engenharia.
Construa no meu workspace Nekt o caso "Custo de obra orçado x realizado" seguindo as regras em https://academy.nekt.com/industrias/imobiliario/custo-obra-orcado-realizado.md. 1) Encontre as tabelas de origem e confirme as colunas usadas pelas regras. 2) Crie uma transformação no grão indicado aplicando todas as regras. 3) Rode o teste de aceitação e me mostre o resultado de cada item. 4) Crie o context document do caso no workspace, com as exceções dos meus clientes em aberto para eu preencher.
Variações
Mesma lógica com o planejamento total e a composição de insumos do UAU, atualizada uma vez por semana por empresa e obra.
Tempo da solicitação ao pedido e à entrega por insumo; solicitação atendida é a que virou pedido emitido.
Liberação mensal do banco contra medição: compare o comprometido aprovado e ainda não pago com o cronograma de desembolso.