feat(web+api): redesign ClientsPage/OrdersPage e corrige dados empresa 9001
Web — ClientsPage: - Redesign completo: métricas reais via usePortfolioStats (4 queries count), donut Chart.js com totais reais, tabela sem ellipsis, coluna Cliente com nome fantasia/razão/CNPJ completos, drawer de detalhes e análise comercial, cards mobile, filtros de status/busca em tempo real. - Dados reais: substitui mock por useClientList/useClientDetail/useClientOrders; remove tipos fictícios (prospect/lead, cidade, totalComprado). Web — OrdersPage: - Métricas reais via useOrderStats (contagens por situa, não da página atual). - Coluna Cliente sem truncamento (minWidth: 240). - Cabeçalho, filtros e layout alinhados ao padrão da ClientsPage. API — orders.service.ts: - Normalização situa SIG→SAR: SIG usa 5=Cancelado; SAR usa 3=Cancelado. sigToSar(5→3) no mapper; sarToSig(3→5) no filtro SQL. API — clients.service.ts: - dt_ultima_compra corrigida: JOIN duplo (vw_pedidos_erp + sar.pedidos) com GREATEST() — clientes com histórico ERP mas sem pedido SAR deixam de aparecer todos como Inativo. - Filtro de activityStatus movido para SQL — total e paginação corretos. - findOne() atualizado com o mesmo JOIN duplo. Infra — .env: - DEV_EMPRESA_ID: 1 → 9001 — API aponta para dados reais da empresa SIG. Ex: pedido nº 141022 passa de R$1.765,48 para R$2.454,90. Docs — sarweb_views.sql: - Documenta as views reais em schema sar; remove schema sarweb inexistente. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
605
sarweb_views.sql
605
sarweb_views.sql
@@ -1,407 +1,73 @@
|
||||
-- =============================================================================
|
||||
-- sarweb_views.sql
|
||||
-- Views PostgreSQL para o projeto SARWeb
|
||||
-- Gerado a partir da análise do SAR Android (sincronização ERP <-> App)
|
||||
-- =============================================================================
|
||||
-- IMPORTANTE: Este arquivo cobre os dois schemas operacionais (gerente e sig).
|
||||
-- Se o seu banco usa apenas UM dos schemas, remova o bloco UNION ALL
|
||||
-- correspondente ao schema ausente em cada view, ou a criação falhará.
|
||||
-- sar_views.sql
|
||||
-- Views PostgreSQL do projeto SAR — schema `sar` no banco ERP (libreplast)
|
||||
--
|
||||
-- Para saber qual schema o seu banco usa, execute:
|
||||
-- SELECT schemaname FROM pg_tables WHERE tablename='pedidos' AND schemaname NOT IN ('sarpalm');
|
||||
-- Executar como: psql -U postgres -d libreplast -f sar_views.sql
|
||||
--
|
||||
-- STATUS — mapeamento normalizado por sistema:
|
||||
-- GERENTE: situa 1=Pendente | 2=Liberado | 3=Faturado | 4=Cancelado
|
||||
-- SIG: situa 1=Pendente | 2=Liberado | 4=Faturado | 5=Cancelado
|
||||
-- DECISÃO DE ARQUITETURA: todas as views residem no schema `sar` (mesmo schema
|
||||
-- das tabelas Prisma). O search_path da conexão runtime é `sar`, portanto as
|
||||
-- queries do backend usam os nomes curtos (vw_clientes, vw_pedidos_erp).
|
||||
--
|
||||
-- ERP base: SIG (schema sig.*)
|
||||
-- Empresa gerencial: id_empresa = 1 (gestao.empresa)
|
||||
-- Empresa fiscal: id_empresa = 9001 (sig.corrent / sig.pedidos)
|
||||
-- Cancelados SIG: situa = 5 (≠ SAR que usa situa = 3)
|
||||
-- Faturados SIG: situa = 4 (coincide com SAR)
|
||||
-- =============================================================================
|
||||
|
||||
CREATE SCHEMA IF NOT EXISTS sarweb;
|
||||
|
||||
-- =============================================================================
|
||||
-- 1. EMPRESAS
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_empresas AS
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 1. CLIENTES
|
||||
-- Fonte: sig.corrent
|
||||
-- Obs: COALESCE(id_empresa, 1) cobre registros antigos sem id_empresa.
|
||||
-- cod_vendedor determina a carteira do representante.
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE OR REPLACE VIEW sar.vw_clientes AS
|
||||
SELECT
|
||||
e.id_empresa,
|
||||
e.nome,
|
||||
e.razao_social,
|
||||
e.cnpj,
|
||||
e.estado AS uf,
|
||||
e.id_matriz,
|
||||
e.id_portador_padrao,
|
||||
s.origem_descmax,
|
||||
s.tp_estoque,
|
||||
s.bloq_preco_pedido,
|
||||
s.ativar_prod_pauta,
|
||||
s.preco_padrao,
|
||||
s.preco_com_ipi,
|
||||
(
|
||||
SELECT COALESCE(schemaname, 'gerente')
|
||||
FROM pg_tables
|
||||
WHERE tablename = 'pedidos'
|
||||
AND schemaname NOT IN ('sarpalm')
|
||||
LIMIT 1
|
||||
) AS sistema,
|
||||
(
|
||||
SELECT COALESCE(b1.id_empresa_tabcomp, e.id_empresa)
|
||||
FROM gestao.empresa a1
|
||||
LEFT JOIN gestao.tabcomp b1
|
||||
ON b1.id_empresa = a1.id_empresa AND b1.nome_tabcomp = 'produtos'
|
||||
WHERE a1.id_empresa = e.id_empresa
|
||||
) AS id_empresa_prod,
|
||||
(
|
||||
SELECT COALESCE(b1.id_empresa_tabcomp, e.id_empresa)
|
||||
FROM gestao.empresa a1
|
||||
LEFT JOIN gestao.tabcomp b1
|
||||
ON b1.id_empresa = a1.id_empresa AND b1.nome_tabcomp = 'grupos'
|
||||
WHERE a1.id_empresa = e.id_empresa
|
||||
) AS id_empresa_grup
|
||||
FROM gestao.empresa e
|
||||
LEFT JOIN gestao.sarcfg s ON s.id_empresa = e.id_empresa;
|
||||
|
||||
-- =============================================================================
|
||||
-- 2. REPRESENTANTES / VENDEDORES
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_representantes AS
|
||||
SELECT
|
||||
v.id_vendedor,
|
||||
v.id_empresa AS id_empresa_matriz,
|
||||
v.codigo,
|
||||
v.nome,
|
||||
v.exp_sar AS habilitado_sar,
|
||||
v.taxa_com,
|
||||
v.forma_pag AS forma_pag_comissao,
|
||||
v.cod_supervisor,
|
||||
v.taxa_com_super,
|
||||
v.forma_pag_super,
|
||||
v.desconto_max,
|
||||
v.permitir_flex,
|
||||
COALESCE(f.saldo_flex, 0) AS saldo_flex,
|
||||
v.vl_ped_minimo,
|
||||
v.desc_rateio_com,
|
||||
v.origem_com,
|
||||
v.cod_pauta1,
|
||||
v.cod_pauta2,
|
||||
v.cod_pauta3,
|
||||
v.cod_pauta4,
|
||||
v.cod_pauta5,
|
||||
v.cod_pauta6
|
||||
FROM gestao.vendedor v
|
||||
LEFT JOIN gestao.flex f
|
||||
ON f.id_vendedor = v.id_vendedor;
|
||||
|
||||
-- =============================================================================
|
||||
-- 3. CLIENTES (gerente.clientes UNION sig.corrent)
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_clientes AS
|
||||
|
||||
-- --- GERENTE ---
|
||||
SELECT
|
||||
'gerente' AS sistema,
|
||||
c.id_empresa,
|
||||
c.id_cliente AS id_cliente,
|
||||
COALESCE(c.id_empresa, 1) AS id_empresa,
|
||||
c.id_corrent AS id_cliente,
|
||||
c.ativo,
|
||||
c.nome,
|
||||
c.razao,
|
||||
c.pesso AS pessoa, -- 0=PJ 1=PF
|
||||
COALESCE(NULLIF(TRIM(c.nome), ''), TRIM(c.razao)) AS nome,
|
||||
TRIM(c.razao) AS razao,
|
||||
c.pesso AS pessoa,
|
||||
c.consfinal,
|
||||
c.cgcpf,
|
||||
c.suf_cgcpf,
|
||||
c.inscr AS inscricao_estadual,
|
||||
c.ender AS endereco,
|
||||
COALESCE(c.num_endereco, '') AS num_endereco,
|
||||
c.bairr AS bairro,
|
||||
c.inscr AS inscricao_estadual,
|
||||
c.endereco,
|
||||
COALESCE(c.num_endereco, '') AS num_endereco,
|
||||
c.bairr AS bairro,
|
||||
c.id_municipio,
|
||||
c.cep,
|
||||
c.ddd,
|
||||
c.telef AS telefone,
|
||||
c.e_mail AS email,
|
||||
c.data AS dt_cadastro,
|
||||
c.telef AS telefone,
|
||||
c.e_mail AS email,
|
||||
c.data AS dt_cadastro,
|
||||
c.obs,
|
||||
c.cod_formapag,
|
||||
(
|
||||
SELECT fp.id_formapag
|
||||
FROM gestao.formapag fp
|
||||
WHERE fp.id_empresa = c.id_empresa
|
||||
AND fp.codigo = c.cod_formapag
|
||||
LEFT JOIN gestao.empresa e ON e.id_empresa = COALESCE(c.id_empresa, 1)
|
||||
WHERE fp.id_empresa = COALESCE(e.id_matriz, COALESCE(c.id_empresa, 1))
|
||||
AND fp.codigo = c.cod_formapag
|
||||
LIMIT 1
|
||||
) AS id_formapag,
|
||||
) AS id_formapag,
|
||||
c.indicador_ie,
|
||||
c.cod_pauta,
|
||||
c.st_especifica,
|
||||
COALESCE(c.limcred, 0) AS limite_credito,
|
||||
COALESCE(c.limcred, 0) AS limite_credito,
|
||||
c.cod_vendedor,
|
||||
COALESCE(c.desc_cliente_rede, 0) AS desc_cliente_rede,
|
||||
c.dt_atual
|
||||
FROM gerente.clientes c
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- --- SIG ---
|
||||
SELECT
|
||||
'sig' AS sistema,
|
||||
c.id_empresa,
|
||||
c.id_corrent AS id_cliente,
|
||||
c.ativo,
|
||||
c.nome,
|
||||
c.razao,
|
||||
c.pesso AS pessoa,
|
||||
c.consfinal,
|
||||
c.cgcpf,
|
||||
c.suf_cgcpf,
|
||||
c.inscr AS inscricao_estadual,
|
||||
c.endereco AS endereco,
|
||||
COALESCE(c.num_endereco, '') AS num_endereco,
|
||||
c.bairr AS bairro,
|
||||
c.id_municipio,
|
||||
c.cep,
|
||||
c.ddd,
|
||||
c.telef AS telefone,
|
||||
c.e_mail AS email,
|
||||
c.data AS dt_cadastro,
|
||||
c.obs,
|
||||
c.cod_formapag,
|
||||
(
|
||||
SELECT fp.id_formapag
|
||||
FROM gestao.formapag fp
|
||||
LEFT JOIN gestao.empresa e ON e.id_empresa = c.id_empresa
|
||||
WHERE fp.id_empresa = COALESCE(e.id_matriz, c.id_empresa)
|
||||
AND fp.codigo = c.cod_formapag
|
||||
LIMIT 1
|
||||
) AS id_formapag,
|
||||
c.indicador_ie,
|
||||
c.cod_pauta,
|
||||
c.st_especifica,
|
||||
COALESCE(c.limcred, 0) AS limite_credito,
|
||||
c.cod_vendedor,
|
||||
0 AS desc_cliente_rede,
|
||||
c.dt_atual
|
||||
FROM sig.corrent c;
|
||||
|
||||
-- =============================================================================
|
||||
-- 4. MUNICÍPIOS
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_municipios AS
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 2. PEDIDOS ERP
|
||||
-- Fonte: sig.pedidos
|
||||
-- Situa SIG → SAR: 5=Cancelado(SIG) vs 3=Cancelado(SAR). O backend
|
||||
-- normaliza em runtime (sigToSar / sarToSig em orders.service.ts).
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE OR REPLACE VIEW sar.vw_pedidos_erp AS
|
||||
SELECT
|
||||
id_municipio,
|
||||
nome,
|
||||
estado AS uf,
|
||||
codigo_ibge
|
||||
FROM gestao.municipio;
|
||||
|
||||
-- =============================================================================
|
||||
-- 5. FORMAS DE PAGAMENTO
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_formas_pagamento AS
|
||||
SELECT
|
||||
id_formapag,
|
||||
id_empresa,
|
||||
codigo,
|
||||
descr AS descricao,
|
||||
ativa,
|
||||
numparc AS num_parcelas,
|
||||
desco AS desconto_perc,
|
||||
COALESCE(vl_ped_minimo, 0) AS vl_ped_minimo,
|
||||
COALESCE(libera_credito, 0) AS libera_credito,
|
||||
COALESCE(acresc, 0) AS tx_acrescimo,
|
||||
integrar_sar,
|
||||
dt_atual
|
||||
FROM gestao.formapag;
|
||||
|
||||
-- =============================================================================
|
||||
-- 6. PRODUTOS
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_produtos AS
|
||||
SELECT
|
||||
p.id_empresa,
|
||||
p.id_erp,
|
||||
p.codigo,
|
||||
p.referencia,
|
||||
p.descricao,
|
||||
p.descr_det,
|
||||
p.ativo,
|
||||
p.cod_barra,
|
||||
p.unidade,
|
||||
p.tipo,
|
||||
p.vl_preco1,
|
||||
COALESCE(p.vl_preco2, 0) AS vl_preco2,
|
||||
COALESCE(p.vl_preco3, 0) AS vl_preco3,
|
||||
p.cod_grupo,
|
||||
grp.descricao AS grupo,
|
||||
p.cod_subgrupo,
|
||||
sub.descricao AS subgrupo,
|
||||
sub.desc_max,
|
||||
COALESCE(p.grupo_st, '') AS grupo_st,
|
||||
p.cod_marca,
|
||||
COALESCE(mrc.nome, 'Sem Marca') AS marca,
|
||||
p.classe_abc,
|
||||
p.taxa_comissao,
|
||||
p.cod_st,
|
||||
st.aliq_ipi,
|
||||
COALESCE(st.desc_ipi_bc, 0) AS desc_ipi_bc,
|
||||
p.peso_liquido,
|
||||
p.qtd_volume,
|
||||
COALESCE(p.lote_mul_venda, 1) AS lote_mul_venda,
|
||||
COALESCE(p.permitir_dif_lote, 0) AS permitir_dif_lote,
|
||||
COALESCE(p.id_prodvinc, 0) AS id_prodvinc,
|
||||
COALESCE(p.preco_promocional, 0) AS preco_promocional,
|
||||
COALESCE(p.tx_desc_lote, 0) AS tx_desc_lote,
|
||||
p.lista_pauta,
|
||||
CASE WHEN p.dt_atual > sub.da THEN p.dt_atual ELSE sub.da END AS dt_atual
|
||||
FROM gestao.produto p
|
||||
LEFT JOIN gestao.grupo grp ON grp.codigo = p.cod_grupo AND grp.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.grupo sub ON sub.codigo = p.cod_subgrupo AND sub.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.marca mrc ON mrc.codigo = p.cod_marca AND mrc.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.st st ON st.codigo = p.cod_st
|
||||
WHERE p.id_erp IS NOT NULL;
|
||||
|
||||
-- =============================================================================
|
||||
-- 7. ESTOQUE
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_estoque AS
|
||||
SELECT
|
||||
p.id_empresa,
|
||||
p.id_erp,
|
||||
cfg.tp_estoque,
|
||||
CASE cfg.tp_estoque
|
||||
WHEN 'E' THEN COALESCE(e.qtdade, 0) - COALESCE(e.qtd_empenhada, 0)
|
||||
WHEN 'P' THEN COALESCE(e.qtdade, 0) - COALESCE(e.qtd_empenhada, 0) - COALESCE(e.qtd_pedidos, 0)
|
||||
WHEN 'Z' THEN 0
|
||||
ELSE COALESCE(e.qtdade, 0)
|
||||
END AS qtd_estoque,
|
||||
COALESCE(e.qtdade, 0) AS qtd_fisico,
|
||||
COALESCE(e.qtd_empenhada, 0) AS qtd_empenhada,
|
||||
COALESCE(e.qtd_pedidos, 0) AS qtd_pedidos
|
||||
FROM gestao.produto p
|
||||
LEFT JOIN gestao.grupo grp ON grp.codigo = p.cod_grupo AND grp.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.grupo sub ON sub.codigo = p.cod_subgrupo AND sub.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.sarcfg cfg ON cfg.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.estsaldo e ON e.id_produto = p.id_erp
|
||||
AND e.id_empresa = p.id_empresa
|
||||
AND e.id_estlocal = p.cod_estlocal
|
||||
WHERE p.id_erp IS NOT NULL
|
||||
AND p.ativo = 1
|
||||
AND p.lista_pauta = 1
|
||||
AND grp.int_sar = 1
|
||||
AND sub.int_sar = 1
|
||||
AND (sub.produto_variacao = 0 OR p.id_prodvinc > 0);
|
||||
|
||||
-- =============================================================================
|
||||
-- 8. SITUAÇÃO TRIBUTÁRIA (ST ICMS)
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_sticms AS
|
||||
SELECT
|
||||
st.id_empresa AS id_empresa_matriz,
|
||||
si.id_sticms,
|
||||
st.codigo AS cod_st,
|
||||
si.uf,
|
||||
si.st_especifica,
|
||||
si.perc_bc_icms,
|
||||
si.aliq_icms,
|
||||
si.modal_bc_icmsst,
|
||||
si.aliq_icmsst,
|
||||
si.somar_icmsst_nf,
|
||||
si.perc_marg_vl_icmsst,
|
||||
si.contribuinte_icms
|
||||
FROM gestao.sticms si
|
||||
JOIN gestao.st st ON st.id_st = si.id_st;
|
||||
|
||||
-- =============================================================================
|
||||
-- 9. PAUTAS DE PREÇO
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_pautas AS
|
||||
SELECT
|
||||
p.id_pauta,
|
||||
p.id_empresa,
|
||||
p.codigo,
|
||||
p.ativo,
|
||||
p.num_pauta,
|
||||
COALESCE(p.dt_cadast, '1900-01-01'::date) AS dt_cadastro,
|
||||
p.descricao,
|
||||
p.obs,
|
||||
COALESCE(p.dt_ini, '1900-01-01'::date) AS dt_inicio,
|
||||
COALESCE(p.dt_fim, '2100-01-01'::date) AS dt_fim,
|
||||
p.pauta_exclusiva_cliente,
|
||||
COALESCE(p.vl_pedido1, 0) AS vl_pedido1,
|
||||
COALESCE(p.vl_pedido2, 0) AS vl_pedido2,
|
||||
COALESCE(p.vl_pedido3, 0) AS vl_pedido3,
|
||||
COALESCE(p.vl_pedido4, 0) AS vl_pedido4,
|
||||
COALESCE(p.vl_pedido5, 0) AS vl_pedido5,
|
||||
COALESCE(p.tx_desconto1, 0) AS tx_desconto1,
|
||||
COALESCE(p.tx_desconto2, 0) AS tx_desconto2,
|
||||
COALESCE(p.tx_desconto3, 0) AS tx_desconto3,
|
||||
COALESCE(p.tx_desconto4, 0) AS tx_desconto4,
|
||||
COALESCE(p.tx_desconto5, 0) AS tx_desconto5,
|
||||
COALESCE(p.tp_desconto, 0) AS tp_desconto
|
||||
FROM gestao.pauta p;
|
||||
|
||||
-- =============================================================================
|
||||
-- 10. PRODUTOS POR PAUTA
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_pauta_produtos AS
|
||||
SELECT
|
||||
pp.id_pauta,
|
||||
COALESCE(pp.id_varprod, 0) AS id_varprod,
|
||||
pp.id_prod AS id_produto,
|
||||
pp.preco1,
|
||||
COALESCE(pp.preco2, 0) AS preco2,
|
||||
COALESCE(pp.preco3, 0) AS preco3,
|
||||
COALESCE(pp.valor_pauta_icms_st, 0) AS valor_pauta_icms_st,
|
||||
pp.tp_pauta
|
||||
FROM gestao.pauxpro pp;
|
||||
|
||||
-- =============================================================================
|
||||
-- 11. PEDIDOS (gerente.pedidos UNION sig.pedidos)
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_pedidos AS
|
||||
|
||||
-- --- GERENTE ---
|
||||
SELECT
|
||||
'gerente' AS sistema,
|
||||
p.id_empresa,
|
||||
p.id_pedido,
|
||||
p.num_ped_sar,
|
||||
p.numero,
|
||||
p.tipo,
|
||||
p.situa,
|
||||
CASE p.situa
|
||||
WHEN 1 THEN 'Pendente'
|
||||
WHEN 2 THEN 'Liberado'
|
||||
WHEN 3 THEN 'Faturado'
|
||||
WHEN 4 THEN 'Cancelado'
|
||||
ELSE 'Enviado'
|
||||
END AS status_descr,
|
||||
p.data AS dt_pedido,
|
||||
p.dtemi AS dt_emissao,
|
||||
p.clien AS id_cliente,
|
||||
p.cod_vendedor,
|
||||
p.cod_formapag,
|
||||
fp.id_formapag,
|
||||
fp.descr AS forma_pagamento,
|
||||
p.num_pauta,
|
||||
pau.id_pauta,
|
||||
COALESCE(p.obs, '') AS obs,
|
||||
p.totpr AS total_produtos,
|
||||
COALESCE(p.ipi, 0) AS total_ipi,
|
||||
COALESCE(p.vl_icmsst, 0) AS total_icmsst,
|
||||
COALESCE(p.total, 0) AS total,
|
||||
COALESCE(p.descp, 0) AS desconto_perc,
|
||||
COALESCE(p.descv, 0) AS desconto_valor,
|
||||
COALESCE(p.acrev, 0) AS acrescimo,
|
||||
COALESCE(p.comis, 0) AS comissao,
|
||||
COALESCE(p.ped_flex, 0) AS ped_flex,
|
||||
p.cod_supervisor,
|
||||
p.taxa_com_super
|
||||
FROM gerente.pedidos p
|
||||
LEFT JOIN gestao.formapag fp ON fp.codigo = p.cod_formapag
|
||||
AND fp.id_empresa = p.id_empresa
|
||||
LEFT JOIN gestao.pauta pau ON pau.num_pauta = p.num_pauta
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- --- SIG ---
|
||||
SELECT
|
||||
'sig' AS sistema,
|
||||
p.id_empresa,
|
||||
p.id_pedido,
|
||||
p.num_ped_sar,
|
||||
@@ -414,166 +80,35 @@ SELECT
|
||||
WHEN 4 THEN 'Faturado'
|
||||
WHEN 5 THEN 'Cancelado'
|
||||
ELSE 'Enviado'
|
||||
END AS status_descr,
|
||||
p.data AS dt_pedido,
|
||||
p.data_emissao AS dt_emissao,
|
||||
p.clien AS id_cliente,
|
||||
END AS status_descr,
|
||||
p.data AS dt_pedido,
|
||||
p.data_emissao AS dt_emissao,
|
||||
p.clien AS id_cliente,
|
||||
p.cod_vendedor,
|
||||
p.cod_formapag,
|
||||
fp.id_formapag,
|
||||
fp.descr AS forma_pagamento,
|
||||
NULL::integer AS num_pauta,
|
||||
fp.descr AS forma_pagamento,
|
||||
pau.id_pauta,
|
||||
COALESCE(p.obs, '') AS obs,
|
||||
p.totpr AS total_produtos,
|
||||
COALESCE(p.ipi, 0) AS total_ipi,
|
||||
0 AS total_icmsst,
|
||||
COALESCE(p.total, 0) AS total,
|
||||
COALESCE(p.descp, 0) AS desconto_perc,
|
||||
COALESCE(p.descv, 0) AS desconto_valor,
|
||||
COALESCE(p.tx_acrescimo, 0) AS acrescimo,
|
||||
COALESCE(p.com_fat, 0) AS comissao,
|
||||
COALESCE(p.ped_flex, 0) AS ped_flex,
|
||||
p.cod_vend2 AS cod_supervisor,
|
||||
p.tx_com_vend2 AS taxa_com_super
|
||||
COALESCE(p.obs, '') AS obs,
|
||||
p.totpr AS total_produtos,
|
||||
COALESCE(p.ipi, 0) AS total_ipi,
|
||||
0 AS total_icmsst,
|
||||
COALESCE(p.total, 0) AS total,
|
||||
COALESCE(p.descp, 0) AS desconto_perc,
|
||||
COALESCE(p.descv, 0) AS desconto_valor,
|
||||
COALESCE(p.tx_acrescimo, 0) AS acrescimo,
|
||||
COALESCE(p.com_fat, 0) AS comissao,
|
||||
COALESCE(p.ped_flex::integer, 0) AS ped_flex,
|
||||
p.cod_vend2 AS cod_supervisor,
|
||||
p.tx_com_vend2 AS taxa_com_super
|
||||
FROM sig.pedidos p
|
||||
LEFT JOIN gestao.formapag fp ON fp.codigo = p.cod_formapag
|
||||
AND fp.id_empresa = CASE WHEN p.id_empresa > 9000 THEN p.id_empresa - 9000 ELSE p.id_empresa END
|
||||
LEFT JOIN gestao.pauta pau ON pau.codigo = p.cod_pauta
|
||||
AND pau.id_empresa = CASE WHEN p.id_empresa > 9000 THEN p.id_empresa - 9000 ELSE p.id_empresa END;
|
||||
|
||||
-- =============================================================================
|
||||
-- 12. ITENS DE PEDIDO (gerente.peditens UNION sig.peditens)
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_peditens AS
|
||||
|
||||
-- --- GERENTE ---
|
||||
SELECT
|
||||
'gerente' AS sistema,
|
||||
i.id_pedido,
|
||||
i.ordem,
|
||||
i.produ AS id_produto,
|
||||
i.qtd,
|
||||
i.pruni AS preco_unitario,
|
||||
COALESCE(i.descp, 0) AS desconto_perc,
|
||||
COALESCE(i.descv, 0) AS desconto_valor,
|
||||
COALESCE(i.obs, '') AS obs,
|
||||
COALESCE(i.preco_pauta, 0) AS preco_pauta,
|
||||
COALESCE(i.vl_flex, 0) AS vl_flex,
|
||||
COALESCE(i.comis, 0) AS comissao,
|
||||
COALESCE(i.preco_com_ipi, 0) AS preco_com_ipi,
|
||||
COALESCE(i.bc_ipi, 0) AS bc_ipi,
|
||||
COALESCE(i.bc_ipi * i.aliq_ipi / 100.0, 0) AS vl_ipi,
|
||||
COALESCE(i.bc_icmsst, 0) AS bc_icmsst,
|
||||
COALESCE(i.vl_icmsst, 0) AS vl_icmsst,
|
||||
COALESCE(i.vl_totliq, 0) AS vl_total_liquido,
|
||||
COALESCE(i.total, 0) AS total,
|
||||
COALESCE(i.num_oc, '') AS num_oc,
|
||||
COALESCE(i.item_oc, '') AS item_oc,
|
||||
i.id_tes
|
||||
FROM gerente.peditens i
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- --- SIG ---
|
||||
SELECT
|
||||
'sig' AS sistema,
|
||||
i.id_pedido,
|
||||
i.ordem,
|
||||
i.produ AS id_produto,
|
||||
i.qtd,
|
||||
i.pruni AS preco_unitario,
|
||||
COALESCE(i.descp, 0) AS desconto_perc,
|
||||
COALESCE(i.descv, 0) AS desconto_valor,
|
||||
COALESCE(i.obs, '') AS obs,
|
||||
COALESCE(i.preco_pauta, 0) AS preco_pauta,
|
||||
COALESCE(i.vl_flex, 0) AS vl_flex,
|
||||
COALESCE(i.comis, 0) AS comissao,
|
||||
COALESCE(i.preco_ipi, 0) AS preco_com_ipi,
|
||||
0 AS bc_ipi,
|
||||
COALESCE(i.ipi, 0) AS vl_ipi,
|
||||
0 AS bc_icmsst,
|
||||
0 AS vl_icmsst,
|
||||
0 AS vl_total_liquido,
|
||||
COALESCE(i.total, 0) AS total,
|
||||
'' AS num_oc,
|
||||
'' AS item_oc,
|
||||
i.id_tes
|
||||
FROM sig.peditens i;
|
||||
|
||||
-- =============================================================================
|
||||
-- 13. CONTAS A RECEBER (gerente.ctr UNION sig.ctr)
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_ctr AS
|
||||
|
||||
-- --- GERENTE ---
|
||||
SELECT
|
||||
'gerente' AS sistema,
|
||||
c.id_empresa,
|
||||
c.id_ctr,
|
||||
c.prefixo,
|
||||
c.numero,
|
||||
c.docto AS documento,
|
||||
c.deved AS id_cliente,
|
||||
c.id_pedido,
|
||||
c.emiss AS dt_emissao,
|
||||
c.vecto AS dt_vencimento,
|
||||
c.valor,
|
||||
COALESCE(c.despcart, 0) AS despesa_cartorio,
|
||||
c.saldo,
|
||||
c.situacao,
|
||||
c.dt_baixa,
|
||||
c.cod_vendedor
|
||||
FROM gerente.ctr c
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- --- SIG ---
|
||||
SELECT
|
||||
'sig' AS sistema,
|
||||
c.id_empresa,
|
||||
c.id_ctr,
|
||||
c.prefixo,
|
||||
c.numero,
|
||||
c.docto AS documento,
|
||||
c.deved AS id_cliente,
|
||||
c.id_entrega AS id_pedido, -- sig usa id_entrega
|
||||
c.emiss AS dt_emissao,
|
||||
c.vecto AS dt_vencimento,
|
||||
c.valor,
|
||||
0 AS despesa_cartorio,
|
||||
c.saldo,
|
||||
c.situacao,
|
||||
c.data_baixa AS dt_baixa,
|
||||
c.cod_vendedor
|
||||
FROM sig.ctr c;
|
||||
|
||||
-- =============================================================================
|
||||
-- 14. GRUPOS DE PRODUTOS
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_grupos AS
|
||||
SELECT
|
||||
id_empresa,
|
||||
codigo,
|
||||
descricao,
|
||||
int_sar,
|
||||
produto_variacao,
|
||||
desc_max,
|
||||
da AS dt_atualizacao
|
||||
FROM gestao.grupo;
|
||||
|
||||
-- =============================================================================
|
||||
-- 15. MARCAS
|
||||
-- =============================================================================
|
||||
CREATE OR REPLACE VIEW sarweb.vw_marcas AS
|
||||
SELECT
|
||||
id_empresa,
|
||||
codigo,
|
||||
nome
|
||||
FROM gestao.marca;
|
||||
|
||||
-- =============================================================================
|
||||
-- GRANTS (ajuste o role conforme seu ambiente)
|
||||
-- =============================================================================
|
||||
-- GRANT USAGE ON SCHEMA sarweb TO sarweb_app;
|
||||
-- GRANT SELECT ON ALL TABLES IN SCHEMA sarweb TO sarweb_app;
|
||||
LEFT JOIN gestao.formapag fp
|
||||
ON fp.codigo = p.cod_formapag
|
||||
AND fp.id_empresa = CASE WHEN p.id_empresa > 9000
|
||||
THEN p.id_empresa - 9000
|
||||
ELSE p.id_empresa END
|
||||
LEFT JOIN gestao.pauta pau
|
||||
ON pau.codigo = p.cod_pauta
|
||||
AND pau.id_empresa = CASE WHEN p.id_empresa > 9000
|
||||
THEN p.id_empresa - 9000
|
||||
ELSE p.id_empresa END;
|
||||
|
||||
Reference in New Issue
Block a user