feat(web+api): contatos vinculados a clientes com sync ERP e base WhatsApp
DB:
- sar.vw_contatos: view sobre gestao.contato com join sig.corrent
(id_entidade CHAR20 = id_corrent; cod_vendedor para filtro por rep)
- sar.contatos_novos: staging com nome, cargo, departamento, telefone,
celular, whatsapp, email, dt_aniversario, anotacoes
- trg_contato_novo: AFTER INSERT → gestao.contato; grava id_contato_erp
API:
- GET /clients/:id/contacts — lista contatos ativos do cliente
- POST /clients/:id/contacts — cria via staging; retorna { idContatoErp, sincronizado }
Web:
- ClientContacts: tabela de contatos no detalhe do cliente
- Links diretos WhatsApp (wa.me) + mailto por contato
- Modal "Novo Contato" com todos os campos; feedback de código ERP no sucesso
- whatsapp é o campo principal para envio futuro via ChatWoot
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -503,6 +503,37 @@ SELECT
|
||||
nome
|
||||
FROM gestao.marca;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- Contatos vinculados a clientes (gestao.contato)
|
||||
-- id_entidade = id_corrent::text (CHAR 20, auto-pad)
|
||||
-- Usado para envio via WhatsApp / ChatWoot futuramente
|
||||
-- -----------------------------------------------------------------------------
|
||||
CREATE OR REPLACE VIEW sar.vw_contatos AS
|
||||
SELECT
|
||||
c.id_contato,
|
||||
c.id_empresa,
|
||||
TRIM(c.id_entidade)::integer AS id_corrent,
|
||||
c.id_chatwoot,
|
||||
TRIM(c.nome) AS nome,
|
||||
TRIM(c.empresa) AS empresa,
|
||||
TRIM(c.cargo) AS cargo,
|
||||
TRIM(c.departamento) AS departamento,
|
||||
c.dt_aniversario,
|
||||
TRIM(c.telefone) AS telefone,
|
||||
TRIM(c.ramal) AS ramal,
|
||||
TRIM(c.celular) AS celular,
|
||||
TRIM(c.whatsapp) AS whatsapp,
|
||||
TRIM(c.email) AS email,
|
||||
COALESCE(c.ativo, 1) AS ativo,
|
||||
c.anotacoes,
|
||||
TRIM(cr.nome) AS nome_cliente,
|
||||
TRIM(cr.razao::text) AS razao_cliente,
|
||||
cr.cod_vendedor
|
||||
FROM gestao.contato c
|
||||
LEFT JOIN sig.corrent cr
|
||||
ON cr.id_corrent = TRIM(c.id_entidade)::integer
|
||||
WHERE TRIM(c.id_entidade) ~ '^\d+$';
|
||||
|
||||
-- =============================================================================
|
||||
-- PARTE 2 — TABELAS DE ESCRITA DO SAR
|
||||
-- Dados gerados pelo SAR — não existem no ERP.
|
||||
|
||||
Reference in New Issue
Block a user