Saltar para o conteúdo principal

Resumos financeiros

Escolha de design Aedifica (Frente 2); não é um endpoint observado do Plancraft.

Callable financialSummary, disponível no código por omissão, sem flag ou configuração nova. Este trabalho não publica a função.

Autenticação: conta completa e membership actual owner/admin/office. Worker, portal (mesmo após promoção) e papéis desconhecidos são recusados. A organização vem exclusivamente da identidade autenticada; não é aceite orgId no input.

Input estrito: {} para a empresa; {"projectId":"id-da-obra"} para uma obra que exista em organizations/{org}/projects. Sem filtro temporal: acumulado de todas as obras, incluindo arquivadas, no relatório da empresa.

Resposta validada por financialSummarySchema:

CampoSignificado
currencyEUR, convenção dos documentos legados. Moeda explícita incompatível torna os totais afectados null; sem conversão.
vatBasisnet-and-gross; os sufixos identificam a base de cada campo.
budgetedNet, budgetedGrossPropostas offer publicadas e aceites; sem/com IVA.
invoicedNet, invoicedGrossFaturas emitidas válidas, excluindo draft/canceled e deduzindo creditNote/invoiceCancellation. Correção exige origem válida na mesma obra; origem já canceled não é deduzida novamente. Fases cumulativas usam somente incrementos partialInvoiceTotal*.
receivedGrossSoma de invoicePayments.payedAmount, com data válida, de faturas emitidas ou posteriormente anuladas; com IVA. Ausência opcional significa sem pagamentos na convenção existente; valor explicitamente inválido é null. Anulação não inventa um reembolso nem apaga pagamentos já registados.
outstandingGrossinvoicedGross - receivedGross, com IVA; pode ser negativo (saldo a regularizar). Deduções e retenções não são recebimentos.
constructionMarginNetSempre null no domínio actual: não existe base de custo cuja completude esteja evidenciada. Não usa custos IA nem presume custo zero.
costBasisincomplete. Custos registados, horas sem valorização e compras/consumos potencialmente sobrepostos não permitem certificar uma margem de construção.

Valores monetários usam duas casas decimais. null representa N/A e nunca é formatado como zero. 0 só resulta de leitura bem-sucedida com total realmente vazio/zero. Pagamentos registados não são uma prova de reconciliação bancária; não há modelo de reembolsos neste resumo.

Limite síncrono: até 1000 documentos e 1000 publicações por organização. Exceder o limite devolve resource-exhausted, inclusive no relatório por obra; nunca devolve total truncado. not-found para obra inexistente/alheia; invalid-argument para input inválido; identidade e membership usam os erros existentes. A UI oferece nova tentativa e indica o limite. Leituras simultâneas não constituem fecho contabilístico transaccional.

Implementação e testes só usam dados locais/emulador demo. Sem env/índices/webhooks novos, transporte externo ou afirmações sobre totais de produção.