feat(web+api): ficha do cliente — contatos, CTR, NF-e, pedidos e produtos
- Contatos: grid de cards 3 colunas, botão "Novo Contato" no topo da página - Sync ERP↔SAR corrigido: vw_contatos aceita formato COR#<id>, trigger normaliza id_empresa (9001→1) - CTR + NF-e: layout 50/50 — lista de títulos abertos com badge vencido/a vencer e lista de notas com botão copiar chave NF-e - Histórico de pedidos: UNION SAR+ERP, top 5 + modal "Ver todos" - Produtos mais comprados: top 5 com último preço + modal "Ver todos" - Novos endpoints: ctr-list, notas, orders-history, top-produtos - AppShell: overflow-x travado, sem scroll horizontal na aplicação Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -489,8 +489,14 @@ CREATE INDEX IF NOT EXISTS idx_sar_ctnov_sync ON sar.contatos_novos(sincroniz
|
||||
CREATE OR REPLACE FUNCTION sar.fn_sync_contato_to_erp()
|
||||
RETURNS TRIGGER LANGUAGE plpgsql AS $fn$
|
||||
DECLARE
|
||||
v_id_contato INTEGER;
|
||||
v_id_contato INTEGER;
|
||||
v_id_empresa INTEGER;
|
||||
BEGIN
|
||||
-- Normaliza empresa fiscal (9001) → empresa gerencial (1), padrão do ERP
|
||||
v_id_empresa := CASE WHEN NEW.id_empresa > 9000
|
||||
THEN NEW.id_empresa - 9000
|
||||
ELSE NEW.id_empresa END;
|
||||
|
||||
BEGIN
|
||||
INSERT INTO gestao.contato (
|
||||
id_empresa, id_entidade,
|
||||
@@ -499,8 +505,8 @@ BEGIN
|
||||
telefone, ramal, celular, whatsapp, email,
|
||||
ativo, anotacoes
|
||||
) VALUES (
|
||||
NEW.id_empresa,
|
||||
NEW.id_corrent::text,
|
||||
v_id_empresa,
|
||||
'COR#' || NEW.id_corrent::text, -- formato nativo do ERP
|
||||
COALESCE(LEFT(NEW.nome, 100), ''),
|
||||
LEFT(NEW.empresa, 100),
|
||||
LEFT(NEW.cargo, 100),
|
||||
|
||||
Reference in New Issue
Block a user