Projeto

Geral

Perfil

VirtualAge-ETL-SQL-padrao » Histórico » Versão 46

Versão 45 (paulo, 31/05/2023 14:05 h) → Versão 46/50 (paulo, 31/05/2023 14:08 h)

h1. Virtual Age API V1 - ETL

*Índice*
# *GEOvendas*
## [[VirtualAge-ETL-SQL-padrao#GEO - Representantes|GEO - Representantes]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Representante-Gerente|GEO - Representante Gerente]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Municípios-do-Representante|GEO - Municípios do Representante]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Municípios-do-ERP|GEO - Municípios do ERP]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Clientes-e-Prospects|GEO - Clientes e Prospects]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Cliente-Dos-Representantes|GEO - Cliente Dos Representantes ]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Marcas-do-Cliente|GEO - Marcas do Cliente]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Coleções|GEO - Coleções]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Linhas-de-Produto|GEO - Linhas de Produto]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Marcas|GEO - Marcas]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Vendas|GEO - Vendas]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Faturamento-Contrato|GEO - Faturamento - Contrato]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Meta-do-Representante|GEO - Meta do Representante]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Meta-do-Escritório|GEO - Meta do Escritório]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Estoque Centralizado|GEO - Estoque Centralizado]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Clientes Inadimplentes|GEO - Clientes Inadimplentes]]
## [[VirtualAge-ETL-SQL-padrao#GEO - Condição de Venda|GEO - Condição de Venda]]
# *Força de Vendas*
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela de Preço|FV - Tabela de Preço]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-por-Representante|FV - Tabela de Preço por Representante]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Produto|FV - Tabela de Preço - Produto]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Desconto-Comercial|FV - Tabela de Preço - Política - Desconto Comercial]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Desconto-Financeiro|FV - Tabela de Preço - Política - Desconto Financeiro]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Desconto-Antecipação|FV - Tabela de Preço - Política - Desconto Antecipação]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Prazo-Adicional|FV - Tabela de Preço - Política - Prazo Adicional]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Desconto-Volume|FV - Tabela de Preço - Política - Desconto Volume]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Preços-por-volume|FV - Tabela de Preço - Política - Preços por volume]]
## [[VirtualAge-ETL-SQL-padrao#FV - Títulos-Em-Aberto|FV - Títulos Em Aberto]]
## [[VirtualAge-ETL-SQL-padrao#FV - Condição-de-Venda|FV - Condição de Venda]]
## [[VirtualAge-ETL-SQL-padrao#FV - Cota-de-estoque-Por-representante|FV - Cota de estoque - Por representante]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tipo-de-Nota|FV - Tipo de Nota]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tipo-de-Cobrança|FV - Tipo de Cobrança]]
## [[VirtualAge-ETL-SQL-padrao#FV - Comissões|FV - Comissões]]
## [[VirtualAge-ETL-SQL-padrao#FV - Comissões-Extrato-Resumo|FV - Comissões - Extrato Resumo]]
## [[VirtualAge-ETL-SQL-padrao#FV - Comissões-Extrato-Detalhado|FV - Comissões - Extrato Detalhado]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes|FV - Clientes]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Campos-Customizados|FV - Clientes - Campos Customizados]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Locais-de-Entrega|FV - Clientes - Locais de Entrega]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Ramos-de-Atividade|FV - Clientes - Ramos de Atividade]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Grupos-de-Cliente|FV - Clientes - Grupos de Cliente]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Condições-de-venda|FV - Clientes - Condições de venda]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Marcas|FV - Clientes - Marcas]]
## [[VirtualAge-ETL-SQL-padrao#FV - Clientes-Marcas-Concorrentes|FV - Clientes - Marcas Concorrentes]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produtos-Gold-Be|FV - Produtos - Gold Be]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produtos|FV - Produtos]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produtos-Grades|FV - Produtos - Grades]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produtos-Sortimentos|FV - Produtos - Sortimentos]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produtos-Skus|FV - Produtos Skus]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produto-Código-Reduzido|FV - Produto - Código Reduzido]]
## [[VirtualAge-ETL-SQL-padrao#FV - Produto-EAN13|FV - Produto - EAN13]]
## [[VirtualAge-ETL-SQL-padrao#FV - Bloqueio-de-Referências|FV - Bloqueio de Referências]]
## [[VirtualAge-ETL-SQL-padrao#FV - Pedido-Capa|FV - Pedido - Capa]]
## [[VirtualAge-ETL-SQL-padrao#FV - Pedidos-por-Referência|FV - Pedidos por Referência]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Capa|FV - Listagem de Pedidos - Capa]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Detalhado|FV - Listagem de Pedidos - Detalhado]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Itens|FV - Listagem de Pedidos - Itens]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Notas|FV - Listagem de Pedidos - Notas]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Observções|FV - Listagem de Pedidos - Observações]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Histórico|FV - Listagem de Pedidos - Histórico]]
## [[VirtualAge-ETL-SQL-padrao#FV - Estoque|FV - Estoque]]
## [[VirtualAge-ETL-SQL-padrao#FV - Lotes-de-Entrega|FV - Lote Entrega]]
## [[VirtualAge-ETL-SQL-padrao#FV - Lotes-de-Faturamento|FV - Lotes de Faturamento]]
## [[VirtualAge-ETL-SQL-padrao#FV - Cálculo-substituição-tributária|FV - Cálculo substituição tributária]]
## [[VirtualAge-ETL-SQL-padrao#FV - Grupos-substituição-tributária|FV - Grupos substituição tributária]]
## [[VirtualAge-ETL-SQL-padrao#FV - Integração-Valor-de-Frete-por-UF|FV - Integração Valor de Frete por UF]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-SKU|FV - Tabela de Preço SKU]]
## [[VirtualAge-ETL-SQL-padrao#FV - Tabela-de-Preço-Política-Desconto-Adicional-de-Lote|FV - Tabela de Preço - Política - Desconto Adicional de Lote]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Em-Aberto-Capa|FV - Listagem de Pedidos em Aberto - Capa]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Detalhado|FV - Listagem de Pedidos em Aberto - Detalhado]]
## [[VirtualAge-ETL-SQL-padrao#FV - Listagem-de-Pedidos-Itens|FV - Listagem de Pedidos em Aberto - Itens]]
## [[VirtualAge-ETL-SQL-padrao#FV - SKUs Pronta Entrega e Programado|FV - SKUs Pronta Entrega e Programado]]
# *Business to Business (B2B)*
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos| B2B - Produtos]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Grades| B2B - Produtos - Grades]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Grade-Fechada| B2B - Produtos - Grade Fechada]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Sortimentos| B2B - Produtos - Sortimentos]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Tabela-de-Preço| B2B - Produtos - Tabela de Preço]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Tabela-de-Preço-por-SKU| B2B - Produtos - Tabela de Preço por SKU]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Estoque| B2B - Produtos - Estoque]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produtos-Pocket| B2B - Produtos - Pocket]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Pedido-Capa| B2B - Pedido - Capa]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Pedido-Histórico| B2B - Pedido - Histórico]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Pedido-Detalhe| B2B - Pedido - Detalhe]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Pedido-Itens| B2B - Pedido - Itens]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Cliente| B2B - Cliente]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Representantes - Clientes| B2B - Representantes - Clientes]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Clientes-Representantes| B2B - Clientes - Representantes]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Comissão por Repres/Cliente/Marca| B2B - Comissão por Repres/Cliente/Marca]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Condição de Venda| B2B - Condição de Venda]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Bloqueio-de-Referências| B2B - Bloqueio Referências]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Boletos-Consulta-Cliente| B2B - Boletos - Consulta Cliente]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Boletos-Listagem| B2B - Boletos - Listagem]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Boletos-Detalhado| B2B - Boletos - Detalhado]]
## [[VirtualAge-ETL-SQL-padrao#B2B - DANFE-Listagem| B2B - DANFE- Listagem]]
## [[VirtualAge-ETL-SQL-padrao#B2B - DANFE-Itens-da-Nota| B2B - DANFE- Itens da Nota]]
## [[VirtualAge-ETL-SQL-padrao#B2B - DANFE-XML| B2B - DANFE- XML]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Lote de Faturamento| B2B - Lote de Faturamento]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produto SKU - Cód. Barras| B2B - Produto SKU - Cód. Barras]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Frete| B2B - Frete]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Espelho Nota de Devolução| B2B - Espelho Nota de Devolução]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Produto Volume Valor por Referência| B2B - Produto Volume Valor por Referência]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Substituição Tributária| B2B - Substituição Tributária]]
## [[VirtualAge-ETL-SQL-padrao#B2B - Pedido-Recompra| B2B - Pedido - Recompra]]
# *CRM*
## [[VirtualAge-ETL-SQL-padrao#CRM - Dados-Cadastrais-do-Cliente| CRM - Dados Cadastrais do Cliente]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Pesquisa-por-Nome-de-Cliente| CRM - Pesquisa por Nome de Cliente]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Pesquisa-Avançada| CRM - Pesquisa Avançada]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Lista-de-Pedidos-do-Cliente| CRM - Lista de Pedidos do Cliente]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Pedido-Detalhado| CRM - Pedido - Detalhado]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Pedido-Itens| CRM - Pedido - Itens]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Pedido-NFs| CRM - Pedido - NFs]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Informações-Financeiras| CRM - Informações Financeiras]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Informações Financeiras por Situação| CRM - Informações Financeiras por Situação]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Informações Financeiras - Ocorrências| CRM - Informações Financeiras - Ocorrências]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Clientes do Grupo| CRM - Clientes do Grupo]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Lista-de-Pedidos-Representante| CRM - Lista de Pedidos Representante]]
## [[VirtualAge-ETL-SQL-padrao#CRM - Lista-de-Clientes-do-Itinerário| CRM - Lista de Clientes do Itinerário]]

h2. GEO - Representantes

Documentação: [[Manual de Integração#Representantes|Representantes]]

<pre><code class="sql">
select
'1' as codEmpresa
, rep.cdpessoa as codRepres
, rep.nmpessoa as nome
, regexp_replace(pt.nrtelefone, '[^0-9]', '', 'g') as telefone
, pm.dsemail as email
, pe.nmlogradouro as endereco
, pe.dsbairro as bairro
, pe.cdcep as CEP
, pe.NMMUNICIPIO as Cidade
, pe.ufsigla as UF
, coalesce(im.codibge,'1200351') as codIBGE --definir um codIbge padrão com o cliente para quando for NULL
, case when (rep.ininativo = 'TRUE') then 0 else 1 end as situacao
, null as CodRepresAgrupador
, null as telefone2
, null as telefone3
, null as codigoAdministrador
, null as cnpj
, null as codAgrupadorEscritorio
, null as flagAgrupadorMaster
, null as percComissa
, null as codigoPessoaFisica
, rep.nmpessoa as nomePessoaFisica
, null as senhaAPi
, null as Origem
, rep.nmpessoa as fantasia
, null as empresaIntegracaoPedido
, null as marcas
, null as flagPermiteVendaPorFamilia
from representantevaentity rep
left join
pessoaenderecovaentity pe
on pe.cdpessoa = rep.cdpessoa
left join
vpesconsultavaentity vpc
on vpc.cdpessoa = rep.cdpessoa
left join
etlcidade im
on UPPER(im.siglaUF) = UPPER(pe.ufsigla)
and (
(REPLACE(REPLACE(UPPER(im.nome), ' ', ''), '''', '') = REPLACE(REPLACE(UPPER(pe.nmmunicipio), ' ', ''), '''', ''))
OR (REPLACE(REPLACE(UPPER(im.nome), ' ', ''), '''', 'O') = REPLACE(REPLACE(UPPER(pe.nmmunicipio), ' ', ''), '''', ''))
)
left join
pessoatelefonevaentity pt
on pt.cdpessoa = rep.cdpessoa and pt.inpadrao = 'TRUE'
left join
pessoaemailvaentity pm
on pm.cdpessoa = rep.cdpessoa and pm.inpadrao = 'TRUE'
</code></pre>

h2. GEO - Representante Gerente

Documentação: [[Manual de Integração#Representante-Gerente|Representante Gerente]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Municípios do Representante

Documentação: [[Manual de Integração#Municípios-do-Representante|Municípios do Representante]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Municípios do ERP

Documentação: [[Manual de Integração#Municípios-do-ERP|Municípios do ERP]]

<pre><code class="sql">
Adicionar o sql
</code></pre>

h2. GEO - Clientes e Prospects

Documentação: [[Manual de Integração#Clientes-e-Prospects|Clientes e Prospects]]

<pre><code class="sql">
select
'1' codEmpresa
, COALESCE(im.codibge, '4127403') as codIBGE --CONFIRMAR COM O CLIENTE UM IBGE PADRÃO
, p.cdpessoa as codCliente
, 1 as tipo /* 1 - Cliente, 2 - Prospect*/
, p.nmpessoa as nome
, (case when (p.ininativo = 'TRUE') then 0 else 1 end) as situacao
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') as codRepres1
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 1), '0') as codRepres2
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 2), '0') as codRepres3
, regexp_replace(pt.nrtelefone, '[^0-9]', '', 'g') as telefone
, pm.dsemail as email
, pe.nmlogradouro as endereco
, pe.dsbairro as bairro
, pe.cdcep as CEP
, (case when v.dataCadastro is null then p.dtcadastro else v.dataCadastro end) as dataCadastro
, coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) as cnpjCpf
, pmc.dsemail as emailCobranca
, pe.dsbairro as nomeDistritoBairro
, pts.nrtelefone as celular
, pj.nrinscestl as inscricaoEstadual
, pe.nrlogradouro as enderecoNumero
, pe.dscomplemento as complemento
, null as IndicePontualidade
, null as telefone2
, null as telefoneCobranca
, case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end as grupoCliente
, case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end as codClientePrincipal
, null as situacaoEdt
, (select pg.nmpessoa from pessoavaentity pg where pg.cdempresa = vpc.cdempresacad and pg.cdpessoa = vpc.cdcoligador) as nomeGrupoCliente
, (case when coalesce(titulos_em_atraso,0) > 0 then 1 else 0 end) as flagInadimplente
, (pe.cdmunicipio || ' - ' || pe.nmmunicipio) as cidade
, pe.ufsigla as uf
, pj.nmfantasia as nomeFantasia
, null as ramoAtividade
, null as dataPrimeiraCompra
, null as dataUltimaCompra
, null as maiorCompra
, null as maiorAcumulado
, null as codClienteERP
, null as codRamoAtividade
, null as limiteCredito
, null as ultimoFaturamento
, null as dataReativacao
, null as codSitCreditoERP
, null as descSitCreditoERP
, null as motivoInativo
, null as diasVencimentoTitulo
, null as socios
, null as cidadeGrupoCliente
, null as classificacaoERP
, null as instagram
, null as facebook
, null as marcasLiberadas
, pmc.dsemail as emailNfe
FROM pessoavaentity p
inner join
pessoaenderecovaentity pe
on pe.cdempresa = p.cdempresa and pe.cdpessoa = p.cdpessoa
inner join
vpesconsultavaentity vpc
on vpc.cdpessoa = p.cdpessoa
LEFT join
ETLCidade im
on im.codCidade = pe.cdMunicipio
LEFT join
pessoatelefonevaentity pt
on pt.cdempresa = p.cdempresa
AND pt.cdpessoa = p.cdpessoa
AND pt.id = ( SELECT MIN(pt2.id)
FROM pessoatelefonevaentity pt2
WHERE pt.cdempresa = pt2.cdempresa
AND pt.cdpessoa = pt2.cdpessoa
)
left join
pessoaemailvaentity pm
on pm.cdempresa = p.cdempresa
and pm.cdpessoa = p.cdpessoa
and pm.inpadrao = 'TRUE'
left join
pessoaemailvaentity pmc
on pmc.cdempresa = p.cdempresa
and pmc.cdpessoa = p.cdpessoa
and pmc.cdtipoemail = 3 -- CONFIRMAR QUAL TIPO DE E-MAIL É O EMAIL DE NFE/COBRANCA
left join
pessoatelefonevaentity pts
on pts.cdempresa = p.cdempresa
and pts.cdpessoa = p.cdpessoa
and pts.cdtipofone = 4 -- CONFIRMAR COM O CLIENTE QUAL É O CÓDIGO DO TELEFONE CELULAR
left join
pessoajuridicavaentity pj
on pj.cdempresa = p.cdempresa
and pj.cdpessoa = p.cdpessoa
left join
(select codcliente::int as codcliente
, codempresa::int as codempresa
, count(*) as titulos_em_atraso
from etltitulo
where situacao = '1'
and (dataVencimento::date + 28) < (current_date) -- CONFIRMAR COM O CLIENTE QUANTOS DIAS CONSIDERA INADIMPLENTE
group by codcliente
, codempresa having sum(valor) > 3000) as inad -- CONFIRMAR COM O CLIENTE SE INADIMPLENTE É ACIMA DE 3 MIL REAIS DEVENDO
on inad.codcliente = p.cdpessoa
and inad.codempresa = p.cdempresa
left join
(SELECT v.cdcliente, MIN(v.dtpedido) as dataCadastro FROM vendavaentity v GROUP BY v.cdcliente) as v
on v.cdcliente = p.cdpessoa
where vpc.incliente = 'TRUE'
AND coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') is not null
and coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) is not null
AND pe.cdcep <> '99999999'
AND length(coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj)) >= 14 -- CONFIRMAR COM O CLIENTE SE É PARA PUXAR SÓ CNPJ
</code></pre>

h2. GEO - Cliente Dos Representantes

Documentação: [[Manual de Integração#Cliente-Dos-Representantes|Cliente Dos Representantes ]]

<pre><code class="sql">
select '1' codempresa,
cdpessoa,
cdrepresentant
from pessoareprclientevaentity
</code></pre>

h2. GEO - Marcas do Cliente

Documentação: [[Manual de Integração#Marcas-do-Cliente|Marcas do Cliente]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Coleções

Documentação: [[Manual de Integração#Coleções|Coleções]]

<pre><code class="sql">
select
'1' as codEmpresa
, cdclassificacao as codColecao
, dsclassificacao as nome
FROM produtoclassificacaovaentity
where cdtipoclass = 300 -- CONFIRMAR CÓDIGO DE COLEÇÃO COM O CLIENTE
group by cdclassificacao
, dsclassificacao
order by dsclassificacao
</code></pre>

h2. GEO - Linhas de Produto

Documentação: [[Manual de Integração#Linhas-de-Produto|Linhas de Produto]]

<pre><code class="sql">
select
'1' as codEmpresa
, cdclassificacao as codLinha
, dsclassificacao as nome
FROM produtoclassificacaovaentity
where cdtipoclass = 300 -- CONFIRMAR CÓDIGO DE LINHA COM O CLIENTE
group by cdclassificacao
, dsclassificacao
order by dsclassificacao
</code></pre>

h2. GEO - Marcas

Documentação: [[Manual de Integração#Marcas|Marcas]]

<pre><code class="sql">
select
'1' as codEmpresa
, cdclassificacao as codMarca
, dsclassificacao as nome
FROM produtoclassificacaovaentity
where cdtipoclass = 300 -- CONFIRMAR CÓDIGO DE MARCA COM O CLIENTE
group by cdclassificacao
, dsclassificacao
order by dsclassificacao
</code></pre>

h2. GEO - Vendas

Documentação: [[Manual de Integração#Vendas|Vendas]]

<pre><code class="sql">
select
'1' as codEmpresa
, v.colecao as codColecao
, v.dtpedido as dataReferencia
, v.codlinha as codLinha
, v.codRepres as codRepres
, v.codcliente as codCliente
, v.codibge as codIBGE
, v.uf as UF
, sum(v.valorBruto) as valorBruto
, sum(v.valorliquido) as valorLiquido
, sum(v.valorDesconto) as valorDesconto
, sum(v.valorComissao) as valorComissao
, sum(v.prazomedioxvalor) as prazoMedioXValor
, sum(v.qtsolicitada) as quantidade
, v.nomeCliente as nomeCliente
, v.cdpedido as codPedido
, null as codProduto
, null as campoCoringa1
, null as campoCoringa2
, null as campoCoringa3
, v.dataprevfaturamento as dataPrevFaturamento
, null as nomeDistritoBairro
, v.grupocliente as grupoCliente
, null as valorRentabilidade
, null as dataUltFaturamento
, null as valorFaturado
, null as valorSaldo
, v.codMarca as codMarca
, v.nomegrupocliente as nomeGrupoCliente
, v.dtemissao as dataEmissao
, null as codRepresAgrupador
, null as flagPolitica
, null as codTabPreco
, null as qtdeItens
, null as qtdeEmQuilos
, null as cidadeGrupoCliente
, null as campoCoringa4
, null as campoCoringa5
, null as campoCoringa6
, null as situacaoPedido
, null as dataUltimaNF
, null as numeroUltimaNF
, null as pedidoCliente
, null as pedidoRepresentante
, null as percComissaoAtendente
FROM (
select '1' as codEmpresa
, coalesce((select pc.cdclassificacao from produtoclassificacaovaentity pc where pc.cdproduto = vi.cdproduto and pc.cdtipoclass = 300 limit 1), 'SEM COLECAO') as colecao
, cast(v.dtpedido as date)
, '99999' as codlinha
, v.cdrepresentant as codRepres
, v.cdcliente as codCliente
, CASE WHEN im.codibge = '99999999' or im.codibge is null THEN '4211900' ELSE im.codibge END as codIBGE
, pe.ufsigla as uf
, ROUND(CAST ((vi.qtSolicitada + vi.qtextra - vi.qtCancelada) * vi.vlUnitario AS numeric) ,4) AS valorBruto
, ROUND(CAST (((((vi.qtSolicitada + vi.qtextra - vi.qtCancelada) * vi.vlUnitario) * ((100 - v.prDesconto) / 100) ) * ((100 - vi.prDesconto) / 100)) AS numeric), 4) AS valorLiquido --virtual age corta o desconto pela metade quanto é meia nota
, ROUND(CAST (((vi.qtSolicitada + vi.qtextra - vi.qtCancelada) * vi.vlUnitario) - ((vi.qtSolicitada + vi.qtextra - vi.qtCancelada) * vi.vlUnitario) * ((100 - v.prDesconto) / 100) AS numeric), 4) AS valorDesconto
, ROUND(CAST((ROUND(CAST(((((vi.qtSolicitada + vi.qtextra - vi.qtCancelada) * vi.vlUnitario) * ((100 - v.prDesconto) / 100) ) * ((100 - vi.prDesconto) / 100)) AS numeric), 4)) * ((v.prComissaoFat + v.prComissaoRec) / 100) AS numeric), 4) AS valorComissao
, ROUND(CAST (((((vi.qtSolicitada + vi.qtextra - vi.qtCancelada) * vi.vlUnitario) * ((100 - v.prDesconto) / 100) ) * ((100 - vi.prDesconto) / 100)) * (v.nrprzmedio) AS numeric), 4) AS prazomedioxvalor
, (vi.qtSolicitada + vi.qtextra - (COALESCE(vi.qtCancelada, 0))) AS qtSolicitada
, null cdproduto
, vi.cdPedido cdPedido
, p.nmpessoa nomeCliente
, v.cdpedido codPedido
, vi.cdproduto as codProduto
, null coringa1
, null coringa2
, null coringa3
, cast(v.dtprevbaixa as date) dataprevfaturamento
, null as nomeDistrito
, vpc.cdcoligador as grupoCliente
, 0.0 as valorRentabilidade
, null dtaUltimoFaturamento
, null valorFaturado
, null as valorSaldo
, '99999' as codMarca
, coalesce((select pg.nmpessoa from pessoavaentity pg where pg.cdempresa = vpc.cdempresacad and pg.cdpessoa = vpc.cdcoligador),'Sem Grupo') as nomeGrupoCliente
, cast(v.dtpedido as date) dtEmissao
, null codRepresAgrupador
, null flagPolitica
from
vendaitemvaentity vi
left join
vendavaentity v
on v.cdempresa = vi.cdempresa
and v.cdpedido = vi.cdpedido
left join
pessoavaentity p
on p.cdpessoa = v.cdcliente
and p.cdempresa = v.cdempresa
left join
vpesconsultavaentity vpc
on vpc.cdpessoa = p.cdpessoa
left join
pessoaenderecovaentity pe
on pe.cdpessoa = p.cdpessoa and pe.nrsequencia = ( select min(pen.nrsequencia)
from pessoaenderecovaentity pen
where pe.cdpessoa = pen.cdpessoa)
LEFT join
ETLCidade im
on im.codCidade = pe.cdMunicipio
where v.tpsituacao not in (6) --remove os cancelados
and vpc.incliente = 'TRUE'
AND cast(v.dtpedido as date) >= current_date - 365
) v
group by v.colecao
, v.dtpedido
, v.codlinha
, v.codcliente
, v.codRepres
, v.codibge
, v.uf
, v.nomeCliente
, v.cdpedido
, v.dataprevfaturamento
, v.grupocliente
, v.nomegrupocliente
, v.codMarca
, v.dtemissao
</code></pre>

Incremental:

<pre><code class="sql">
select
'1' as codEmpresa
, v.cdPedido cdPedido
FROM vendavaentity v
WHERE cast(v.dtpedido as date) >= current_date - 365
GROUP BY v.cdPedido
</code></pre>

h2. GEO - Faturamento - Contrato

Documentação: [[Manual de Integração#Faturamento-Contrato|Faturamento - Contrato]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Meta do Representante

Documentação: [[Manual de Integração#Meta-do-Representante|Meta do Representante]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Meta do Escritório

Documentação: [[Manual de Integração#Meta-do-Escritório|Meta do Escritório]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Estoque Centralizado

Documentação: [[Manual de Integração#Estoque Centralizado|Estoque Centralizado]]

<pre><code class="sql">
SELECT
'1' as codEmpresa
, grupo.cdnivel as codigoProduto
, cdtamanho as seqTamanho
, grade.cdCor as seqSortimento
, COALESCE(colecao.cdclassificacao, '99999') as colecao
, (CASE WHEN inf.tpProduto = '0' OR inf.tpProduto is null then 0 ELSE 1 end) as estoqueLimitado
, sum(estoque.quantidadeEstoque + estoque.quantidadeOP - estoque.quantidadeVenda + estoque.quantidadeTransacao) as quantidade
, grade.dstamanho as codTamanho
, grade.cdgrade as codGrade
, null as deposito
, COALESCE(colecao.dsclassificacao, 'SEM COLECAO') as nomeColecao
, null as dataProduto
, GREATEST(SUM(estoque.quantidadeEstoque + estoque.quantidadeOP - estoque.quantidadeVenda + estoque.quantidadeTransacao), 0) as quantidadeProntaEntrega
, grade.cdCor as codCorBase
, grupo.dsNivel as nomeReferencia
, dscor as nomeCor
, null as ean13
, null as visualQuantidadeProduto
, null as visualQuantidadeProducao
, cdtamanho as seqOrdenacaoTamanho
FROM SaldoProdutoVAEntity estoque
INNER JOIN
ProdutoGradeVAEntity grade
ON grade.cdProduto::VARCHAR = estoque.codProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto::VARCHAR = estoque.codProduto
LEFT JOIN
ProdutoInfVAEntity inf
on inf.cdProduto::VARCHAR = estoque.codProduto
LEFT JOIN
produtoclassificacaovaentity colecao
on grupo.cdProduto = colecao.cdProduto
and colecao.cdtipoclass = 1 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA COLEÇÃO COM O CLIENTE
WHERE COALESCE(inf.ininativo, 'FALSE') = 'FALSE'
AND (
(COALESCE(colecao.cdclassificacao, '99999') in (#COLECOES) AND '-1' in (#REFERENCES))
OR (grupo.cdnivel in (#REFERENCES))
)
GROUP BY grupo.cdnivel
, cdtamanho
, grade.cdCor
, COALESCE(colecao.cdclassificacao, '99999')
, (CASE WHEN inf.tpProduto = '0' OR inf.tpProduto is null then 0 ELSE 1 end)
, grade.dstamanho
, grade.cdgrade
, COALESCE(colecao.dsclassificacao, 'SEM COLECAO')
, grade.cdCor
, grupo.dsNivel
, dscor
</code></pre>

h2. GEO - Clientes Inadimplentes

Documentação: [[Manual de Integração#Clientes Inadimplentes|Clientes Inadimplentes]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. GEO - Condição de Venda

Documentação: Não tem ainda

<pre><code class="sql">
select
'1' as codEmpresa
, codCondPagto as codPagamento
, nome as nome
, quantidade as qtdeParcelas
, round(CAST(prazoMedio as numeric),2) as prazoMedio
, situacao as situacao
, 0 as Parcelamento
, null as Acrescimo
, null as Desconto
FROM ETLCondPagto
</code></pre>

h1. *Força de Vendas*

h2. FV - Tabela de Preço

Documentação: [[Digitação de Pedidos#Tabela-de-Preço|Tabela de Preço]]

<pre><code class="sql">
select
'1' as codEmpresa
, codTabelaPreco as codTabela
, descricao as descricao
, null as dataMinimaFaturamento
, null as dataMaximaFaturamento
, null as percDescontoShowRoom
, null as dataVigenciaInicial
, null as dataVigenciaFinal
, null as codColecao
, null as codSegmento
, null as codTabelaPrecoPrincipal
, null as desconsiderarDescAcr
, null as codEmpresaDestino
, null as currency
, null as codTipoPedido
FROM ETLtabelapreco
WHERE codEmpresa = :p1
AND codTabelaPreco = :p2
</code></pre>

h2. FV - Tabela de Preço por Representante

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-por-Representante|Tabela de Preço por Representante]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço - Produto

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Produto|Tabela de Preço - Produto]]

<pre><code class="sql">
select
'1' as codEmpresa
, preco.codTabelaPreco as codTabela
, grupo.cdNivel as codProduto
, grade.cdGrade as codGrade
, preco.preco as preco
, grade.cdCor as seqSortimento
, null as itemAtivo
, grade.cdTamanho as seqTamanho
, produto.dsProduto as descricaoProd
, null as vlrUnitarioAnterior
, grade.cdTamanho as seqTamanho
, null as permiteBonificacao
, null as flagOferta
, null as codigoCaixaGoldBe
FROM ETLProdutoTabelaPreco preco
LEFT OUTER JOIN
ProdutoGradeVAEntity grade
ON preco.codProduto = grade.cdProdutoStr
INNER JOIN
etltabelapreco tab
ON tab.codTabelapreco = preco.codtabelapreco
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = grade.cdProduto
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProduto = grupo.cdProduto
WHERE preco.codEmpresa = :p1
AND preco.codTabelaPreco = :p2
AND preco.preco IS NOT NULL
AND grupo.cdNivel <> ''
GROUP BY preco.codTabelaPreco
, grupo.cdNivel
, grade.cdGrade
, preco.preco
, grade.cdCor
, grade.cdTamanho
, produto.dsProduto
</code></pre>

h2. FV - Tabela de Preço - Política - Desconto Comercial

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Desconto-Comercial|Tabela de Preço - Política - Desconto Comercial]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço - Política - Desconto Financeiro

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Desconto-Financeiro|Tabela de Preço - Política - Desconto Financeiro]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço - Política - Desconto Antecipação

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Desconto-Antecipação|Tabela de Preço - Política - Desconto Antecipação]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço - Política - Prazo Adicional

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Prazo-Adicional|Tabela de Preço - Política - Prazo Adicional]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço - Política - Desconto Volume

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Desconto-Volume|Tabela de Preço - Política - Desconto Volume]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço - Política - Preços por volume

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Preços-por-volume|Tabela de Preço - Política - Preços por volume]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Títulos Em Aberto

Documentação: [[Digitação de Pedidos#Títulos-Em-Aberto|Títulos Em Aberto]]

<pre><code class="sql">
select
titulo.titulo as titulo
, titulo.notaFiscal as notaFiscal
, titulo.dataEmissao as dataEmissao
, titulo.dataVencimento as dataVecto
, titulo.valor as valor
, titulo.nomePortador as nomePortador
, titulo.codCliente as codCliente
, pessoa.nmPessoa as nomeCliente
, null as codgrupocliente
, null as moeda
FROM ETLTitulo titulo
LEFT OUTER JOIN
PessoaVAEntity pessoa
ON CAST(pessoa.cdPessoa as text) = titulo.codCliente
WHERE cast((select rep.cdrepresentant
from pessoareprclientevaentity rep
where rep.cdempresa = pessoa.cdempresa
and rep.cdpessoa = pessoa.cdpessoa limit 1) as text) = :p2
AND ((titulo.codCliente = :p3) OR (:p3 IS NULL))
and situacao= '1'
</code></pre>

h2. FV - Condição de Venda

Documentação: [[Digitação de Pedidos#Condição-de-Venda|Condição de Venda]]

<pre><code class="sql">
select
'1' as codEmpresa
, codCondPagto as codPagamento
, nome as nome
, quantidade as qtdeParcelas
, round(CAST(prazoMedio as numeric),2) as prazoMedio
, situacao as situacao
, 0 as Parcelamento
, null as Acrescimo
, null as Desconto
FROM ETLCondPagto
</code></pre>

h2. FV - Cota de estoque - Por representante

Documentação: [[Digitação de Pedidos#Cota-de-estoque-Por-representante|Cota de estoque - Por representante]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tipo de Nota

Documentação: [[Digitação de Pedidos#Tipo-de-Nota|Tipo de Nota]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tipo de Cobrança

Documentação: [[Digitação de Pedidos#Tipo-de-Cobrança|Tipo de Cobrança]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Comissões

Documentação: [[Digitação de Pedidos#Comissões|Comissões]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Comissões - Extrato Resumo

Documentação: [[Digitação de Pedidos#Comissões-Extrato-Resumo|Comissões - Extrato Resumo]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Comissões - Extrato Detalhado

Documentação: [[Digitação de Pedidos#Comissões-Extrato-Detalhado|Comissões - Extrato Detalhado]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes

Documentação: [[Digitação de Pedidos#Clientes|Clientes]]

<pre><code class="sql">
select
'1' as codEmpresa
, pessoa.cdPessoa as codCliente
, (CASE
WHEN TRIM(COALESCE(pessoaJuridica.nrCnpj, pessoaFisica.nrCpf)) = ''
THEN pessoa.cdPessoa::text
ELSE COALESCE(pessoaJuridica.nrCnpj, pessoaFisica.nrCpf)
END) as cnpj
, COALESCE(pessoaJuridica.nmfantasia, pessoa.nmpessoa) as nomeFantasia
, pessoa.nmpessoa as razaoSocial
, (CASE WHEN (pessoa.ininativo = 'TRUE') THEN 0 ELSE 1 END) as situacao
, regexp_replace(telefone.nrtelefone, '[^0-9]', '', 'g') as telefone
, email.dsEmail as email
, emailNFE.dsEmail as emailNFE
, im.codibge as codIBGE
, endereco.nmLogradouro as endereco
, endereco.nrLogradouro as enderecoNumero
, endereco.dsbairro as bairro
, endereco.cdcep as cep
, pessoa.dtinclusao as dataCadastro
, pessoaJuridica.nrInscEstl as inscricaoEstadual
, null as inscricaoSUFRAMA
, 0 as flagConsumidorFinal
, emailNFE.dsemail as cobrancaEmail
, null as cobrancaContato
, regexp_replace(telefone.nrTelefone, '[^0-9]', '', 'g') as cobrancaTelefone
, null as comprasEmail
, null as comprasContato
, null as comprasTelefone
, null as avaliacaoRepres
, regexp_replace(telefone2.nrTelefone, '[^0-9]', '', 'g') as celular
, null as fax
, null as flagClienteFiel
, null as endComplemento
, null as dataUltimaCompra
, null as codTransportadora
, null as codCondPagto
, null as flagSimplesNacional
, null as codTabPreco
, null as percDesconto
, null as codGerente
, null as inscricaoMunicipal
, null as codRamoAtividade
, (case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end) as codGrupoCliente
, null as dataFundacao
, null as limiteCredito
, null as limiteCreditoDisponivel
, null as percDescontoGrupo
, null as classificacaoCurva
, null as obs
, null as ListCodRepres
, null as midiasSociais
, null as msgDashboard
, null as latitude
, null as longitude
, null as latitudeISF
, null as longitudeISF
, null as atualizadoCoordPor
, null as cfop
, null as codTranspRedespacho
, null as codPortador
, null as codTipoCob
, null as valorPedidosEmAberto
, null as valorTitulosEmAberto
, (case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end) as codGrupoCliente
, null as codTipoFatur
, null as instagram
, null as facebook
, null as validarCamposCustomizados
, null as lembreteAprovacaoPedido
, null as grupoClienteCalculoST
FROM PessoaVAEntity pessoa
INNER JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = pessoa.cdEmpresa
AND endereco.cdPessoa = pessoa.cdPessoa
AND endereco.id = ( select min(id)
from pessoaenderecovaentity
where cdempresa = pessoa.cdempresa
and cdpessoa = pessoa.cdpessoa)
INNER JOIN
VPESConsultaVAEntity vpc
ON vpc.cdPessoa = pessoa.cdPessoa
LEFT join
ETLCidade im
on im.codCidade = endereco.cdMunicipio
LEFT JOIN
PessoaTelefoneVAEntity telefone
ON telefone.cdEmpresa = pessoa.cdEmpresa
AND telefone.cdPessoa = pessoa.cdPessoa
AND telefone.id = ( select min(id)
from pessoatelefonevaentity
where cdempresa = telefone.cdempresa
and cdpessoa = telefone.cdpessoa
and inpadrao = 'TRUE')
LEFT JOIN
PessoaTelefoneVAEntity telefone2
ON telefone2.cdEmpresa = pessoa.cdEmpresa
AND telefone2.cdPessoa = pessoa.cdPessoa
AND telefone2.id = (select min(id)
from pessoatelefonevaentity
where cdempresa = telefone2.cdempresa
and cdpessoa = telefone2.cdpessoa
and cdtipofone = 2) -- CONFIRMAR CD TIPO CELULAR
LEFT JOIN
PessoaEmailVAEntity email
ON email.cdEmpresa = pessoa.cdEmpresa
AND email.cdPessoa = pessoa.cdPessoa
AND email.id = ( select min(id)
from pessoaemailvaentity
where cdpessoa = email.cdpessoa
and cdempresa = email.cdempresa
and inpadrao = 'TRUE')
LEFT JOIN
PessoaEmailVAEntity emailNFE
ON emailNFE.cdEmpresa = pessoa.cdEmpresa
AND emailNFE.cdPessoa = pessoa.cdPessoa
AND emailNFE.id = ( select min(id)
from pessoaemailvaentity
where cdpessoa = emailNFE.cdpessoa
and cdempresa = emailNFE.cdempresa
and cdtipoemail = 4) -- CONFIRMAR CD TIPO EMAIL COBRANCA/NFE
LEFT JOIN
pessoajuridicavaentity pessoaJuridica
ON pessoaJuridica.cdEmpresa = pessoa.cdEmpresa
AND pessoaJuridica.cdPessoa = pessoa.cdPessoa
LEFT JOIN
pessoafisicavaentity pessoaFisica
ON pessoaFisica.cdEmpresa = pessoa.cdEmpresa
AND pessoaFisica.cdPessoa = pessoa.cdPessoa
WHERE vpc.inCliente = 'TRUE'
AND length(CASE
WHEN TRIM(COALESCE(pessoaJuridica.nrCnpj, pessoaFisica.nrCpf)) = ''
THEN pessoa.cdPessoa::text
ELSE COALESCE(pessoaJuridica.nrCnpj, pessoaFisica.nrCpf)
END) >= 14 -- Para puxar apenas clientes jurídicos
AND 1 = (SELECT 1
FROM pessoaReprClienteVAEntity rep
WHERE rep.cdEmpresa = pessoa.cdEmpresa
AND rep.cdPessoa = pessoa.cdPessoa
AND CAST(rep.cdRepresentant AS TEXT) = :p2
LIMIT 1
)
GROUP BY pessoa.cdPessoa
, (CASE
WHEN TRIM(COALESCE(pessoaJuridica.nrCnpj, pessoaFisica.nrCpf)) = ''
THEN pessoa.cdPessoa::text
ELSE COALESCE(pessoaJuridica.nrCnpj, pessoaFisica.nrCpf)
END)
, COALESCE(pessoaJuridica.nmfantasia, pessoa.nmpessoa)
, pessoa.nmpessoa
, (CASE WHEN (pessoa.ininativo = 'TRUE') THEN 0 ELSE 1 END)
, regexp_replace(telefone.nrtelefone, '[^0-9]', '', 'g')
, email.dsEmail
, emailNFE.dsEmail
, im.codibge
, endereco.nmLogradouro
, endereco.nrLogradouro
, endereco.dsbairro
, endereco.cdcep
, pessoa.dtinclusao
, pessoaJuridica.nrInscEstl
, emailNFE.dsemail
, regexp_replace(telefone.nrTelefone, '[^0-9]', '', 'g')
, regexp_replace(telefone2.nrTelefone, '[^0-9]', '', 'g')
, (case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end)
</code></pre>

h2. FV - Clientes - Campos Customizados

Documentação: [[Digitação de Pedidos#Clientes-Campos-Customizados|Clientes - Campos Customizados]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes - Locais de Entrega

Documentação: [[Digitação de Pedidos#Clientes-Locais-de-Entrega|Clientes - Locais de Entrega]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes - Ramos de Atividade

Documentação: [[Digitação de Pedidos#Clientes-Ramos-de-Atividade|Clientes - Ramos de Atividade]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes - Grupos de Cliente

Documentação: [[Digitação de Pedidos#Clientes-Grupos-de-Cliente|Clientes - Grupos de Cliente]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes - Condições de venda

Documentação: [[Digitação de Pedidos#Clientes-Condiçõesdevenda|Clientes - Condições de venda]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes - Marcas

Documentação: [[Digitação de Pedidos#Clientes-Marcas|Clientes - Marcas]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Clientes - Marcas Concorrentes

Documentação: [[Digitação de Pedidos#Clientes-MarcasConcorrentes|Clientes - Marcas Concorrentes]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Produtos

Documentação: [[Digitação de Pedidos#Produtos|Produtos]]

<pre><code class="sql">
select
grupo.cdNivel as codReferencia
, grupo.dsNivel as descricao
, COALESCE(ETIQUETA.cdclassificacao, '99999') as codEtiqueta
, COALESCE(ETIQUETA.dsclassificacao, 'SEM ETIQUETA') as nomeEtiqueta
, COALESCE(LINHA.cdclassificacao, '99999') as codLinha
, COALESCE(LINHA.dsclassificacao, 'SEM LINHA') as nomeLinha
, COALESCE(TIPOPECA.cdclassificacao, '99999') as codTipoPeca
, COALESCE(TIPOPECA.dsclassificacao, 'SEM TIPO PECA') as nomeTpoPeca
, COALESCE(MODELO.cdclassificacao, '99999') as codTipoModelo
, COALESCE(MODELO.dsclassificacao, 'SEM MODELO') as nomeTipoModelo
, null as opcoesVenda
, grupo.cdNivel as codReferProvisoria
, null as flagSortimentoCor
, null as flagEstoqueLimitado
, null as flagSortimentoCorTamanho
, null as flagSortimentoAutomatico
, null as aliquotaIpi
, null as flagNaoAplicaDesconto
, COALESCE(colecao.cdclassificacao, '99999') as codColecao
, null as qtdeQuilosPadrao
, null as cubagem
, COALESCE(colecao.dsclassificacao, 'SEM COLECAO') as nomeColecao
, null as estacaoColecao
, COALESCE(FAMILIA.cdclassificacao, '99999') as codFamilia
, COALESCE(FAMILIA.dsclassificacao, 'SEM FAMILIA') as nomeFamilia
, null as divisorLote
, null as divisorBrinde
, null as codReferImagem
, null as agrupadorEstoqueData
, COALESCE(MARCA.cdclassificacao, '99999') as codMarca
, COALESCE(MARCA.dsclassificacao, 'SEM MARCA') as nomeMarca
, null as peso
, null as codArtigoPai
, null as flagGradeFechada
, null as codReferenciaCorTamanho
, null as dataLimiteFatur
, null as qtdDiasMinFaturamento
, null as dataVencimentoProduto
, null as especificacoesTecnicas
, COALESCE(GENERO.cdclassificacao, '99999') as codGenero
, COALESCE(GENERO.dsclassificacao, 'SEM GENERO') as nomeGenero
, null as composicaoProduto
, null as descricaoPesquisa
, null as flagReferenciaCalcadista
, null as dataEntrega
, null as grupoProdutoCalculoST
, null as flagMultiplicadorUnico
FROM ETLProdutoTabelaPreco preco
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProdutoStr = preco.codProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = produto.cdProduto
LEFT OUTER JOIN
ProdutoInfVAEntity prinf
ON prinf.cdProduto = produto.cdProduto
LEFT OUTER JOIN
produtoclassificacaovaentity colecao
on grupo.cdProduto = colecao.cdProduto
and colecao.cdtipoclass = 1 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA COLEÇÃO COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity ETIQUETA
on grupo.cdProduto = ETIQUETA.cdProduto
and ETIQUETA.cdtipoclass = 2 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA ETIQUETA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity LINHA
on grupo.cdProduto = LINHA.cdProduto
and LINHA.cdtipoclass = 3 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA LINHA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity TIPOPECA
on grupo.cdProduto = TIPOPECA.cdProduto
and TIPOPECA.cdtipoclass = 4 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA TIPO DE PEÇA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity MODELO
on grupo.cdProduto = MODELO.cdProduto
and MODELO.cdtipoclass = 5 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA MODELO COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity MARCA
on grupo.cdProduto = MARCA.cdProduto
and MARCA.cdtipoclass = 6 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA MARCA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity GENERO
on grupo.cdProduto = GENERO.cdProduto
and GENERO.cdtipoclass = 7 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA GENERO COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity FAMILIA
on grupo.cdProduto = FAMILIA.cdProduto
and FAMILIA.cdtipoclass = 8 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA FAMILIA COM O CLIENTE
WHERE ((preco.codTabelaPreco IN (#TABPRECOS)) OR (#TABPRECOSNULL IS NULL))
AND (colecao.cdClassificacao IN (#COLECOES) OR (#COLECOESNULL IS NULL))
AND COALESCE(prinf.ininativo, 'FALSE') = 'FALSE'
AND ((grupo.cdNivel = :p2) or (:p2 is null))
AND coalesce(produto.inBloqueio, 0) = 0
AND grupo.cdNivel <> ''
GROUP BY grupo.cdNivel
, grupo.dsNivel
, COALESCE(ETIQUETA.cdclassificacao, '99999')
, COALESCE(ETIQUETA.dsclassificacao, 'SEM ETIQUETA')
, COALESCE(LINHA.cdclassificacao, '99999')
, COALESCE(LINHA.dsclassificacao, 'SEM LINHA')
, COALESCE(TIPOPECA.cdclassificacao, '99999')
, COALESCE(TIPOPECA.dsclassificacao, 'SEM TIPO PECA')
, COALESCE(MODELO.cdclassificacao, '99999')
, COALESCE(MODELO.dsclassificacao, 'SEM MODELO')
, COALESCE(colecao.cdclassificacao, '99999')
, COALESCE(colecao.dsclassificacao, 'SEM COLECAO')
, COALESCE(FAMILIA.cdclassificacao, '99999')
, COALESCE(FAMILIA.dsclassificacao, 'SEM FAMILIA')
, COALESCE(MARCA.cdclassificacao, '99999')
, COALESCE(MARCA.dsclassificacao, 'SEM MARCA')
, COALESCE(GENERO.cdclassificacao, '99999')
, COALESCE(GENERO.dsclassificacao, 'SEM GENERO')
</code></pre>

h2. FV - Produtos - Grades

Documentação: [[Digitação de Pedidos#Produtos-Grades|Produtos - Grades]]

<pre><code class="sql">
select
grupo.cdNivel as codReferencia
, grade.cdGrade as codGrade
, grade.cdTamanho as seqTamanho
, grade.cdTamanho as seqOrdenacao
, grade.dsTamanho as codTamanho
, '1' as qtdPalito
FROM ETLProdutoTabelaPreco preco
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProdutoStr = preco.codProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = produto.cdProduto
LEFT OUTER JOIN
ProdutoInfVAEntity prinf
ON prinf.cdProduto = produto.cdProduto
INNER JOIN
ProdutoGradeVAEntity grade
ON grade.cdProduto = produto.cdProduto
WHERE ((preco.codTabelaPreco IN (#TABPRECOS)) OR (#TABPRECOSNULL IS NULL))
AND COALESCE(prinf.ininativo, 'FALSE') = 'FALSE'
AND coalesce(produto.inBloqueio, 0) = 0
AND ((grupo.cdnivel in (#REFERENCIAS)) OR (#REFERSNULL IS NULL))
GROUP BY grupo.cdNivel
, grade.cdGrade
, grade.cdTamanho
, grade.dsTamanho
</code></pre>

h2. FV - Produtos - Sortimentos

Documentação: [[Digitação de Pedidos#Produtos-Sortimentos|Produtos - Sortimentos]]

<pre><code class="sql">
select
grupo.cdnivelcompleto as codReferencia
, grade.cdCor as codSortimento
, grade.dsCor as descricao
, grade.cdCor as codCorBase
, '#FFFFFF' as rgb
, null as loteEntrega
, 1 as itemAtivo
, null as percentualSortimento
, null as flagEstoqueLimitado
, COALESCE(FAMILIA.cdclassificacao, '99999') as codFamilia
, COALESCE(FAMILIA.dsclassificacao, 'SEM FAMILIA') as nomeFamilia
FROM ETLProdutoTabelaPreco preco
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProdutoStr = preco.codProduto
LEFT OUTER JOIN
ProdutoInfVAEntity prinf
ON prinf.cdProduto = produto.cdProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = produto.cdProduto
INNER JOIN
ProdutoGradeVAEntity grade
ON grade.cdProduto = produto.cdProduto
LEFT OUTER JOIN
produtoclassificacaovaentity FAMILIA
on grupo.cdProduto = FAMILIA.cdProduto
and FAMILIA.cdtipoclass = 8 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA FAMILIA COM O CLIENTE
WHERE ((preco.codTabelaPreco IN (#TABPRECOS)) OR (#TABPRECOSNULL IS NULL))
AND COALESCE(prinf.ininativo, 'FALSE') = 'FALSE'
AND COALESCE(produto.inBloqueio, 0) = 0
GROUP BY grupo.cdnivelcompleto
, grade.cdCor
, grade.dsCor
, COALESCE(FAMILIA.cdclassificacao, '99999')
, COALESCE(FAMILIA.dsclassificacao, 'SEM FAMILIA')
</code></pre>

h2. FV - Produtos Skus

Documentação: [[Digitação de Pedidos#Produtos-Skus|Produtos Skus]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Produto - Código Reduzido

Documentação: [[Digitação de Pedidos#Produto-Código-Reduzido|Produto - Código Reduzido]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Produto - EAN13

Documentação: [[Digitação de Pedidos#Produto-EAN13|Produto - EAN13]]

<pre><code class="sql">
SELECT
grupo.cdNivel as codReferencia
, codBarras.cdBarraPrd as EAN
, null as seqSortimento
, null as seqTamanho
, null as nomeRef
, null as nomeSort
FROM ProdutoCdBarrasVAEntity codBarras
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = codBarras.cdProduto
WHERE ((grupo.cdNivel = :p2) OR (:p2 IS NULL))
</code></pre>

h2. FV - Bloqueio de Referências

Documentação: [[Digitação de Pedidos#Bloqueio-de-Referências|Bloqueio de Referências]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Pedido - Capa

Documentação: [[Digitação de Pedidos#Pedido-Capa|Pedido - Capa]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Pedidos por Referência

Documentação: [[Digitação de Pedidos#Pedidos-por-Referência|Pedidos por Referência]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Listagem de Pedidos - Capa

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Capa|Listagem de Pedidos - Capa]]

<pre><code class="sql">
select
'1' as codEmpresa
, VENDAS.codCliente as codCliente
, VENDAS.nomeCliente as nomeCliente
, VENDAS.codRepres as codRepres
, VENDAS.pedAutomacao as pedAutomacao
, VENDAS.codPedido as codPedido
, VENDAS.dtEmissao as dataEmissao
, VENDAS.dataprevfaturamento as dataPrevFat
, VENDAS.situacao as situacao
, VENDAS.situacaoEdt as situacaoEdt
, SUM(VENDAS.valorBruto) as valorBruto
, SUM(VENDAS.valorLiquido) as valorLiquido
, SUM(VENDAS.valorSaldo) as valorSaldo
, SUM(VENDAS.quantidade) as qtdePedLiquida
, null as motivo
, null as pedidoCliente
, null as pedidoRepresentante
, null as percComissao
, null as usuarioDigitacao
, null as valorComissao
, null as percDescGeral
, null as valorDesconto
, null as nomeColecao
, null as codTipoNota
, null as currency
, null as tipoNota
, null as motivoQuarentenaPedidos
, null as atendente
, null as tabPrecoPedido
, null as situacaoWorkFlow
FROM (
SELECT pedido.cdCliente AS codCliente
, pessoa.nmpessoa AS nomeCliente
, pedido.cdRepresentant AS codRepres
, pedido.cdPedido AS pedAutomacao
, pedido.cdEmpresa || '/' ||pedido.cdPedido AS codPedido
, pedido.dtPedido AS dtEmissao
, pedido.dtprevbaixa AS dataprevfaturamento
, pedido.tpSituacao situacao
, CASE pedido.tpSituacao WHEN 4 THEN 'FATURADO'
WHEN 6 THEN 'CANCELADO'
WHEN 1 THEN 'EM ANDAMENTO'
WHEN 2 THEN 'LIBERADO PARA FATURAMENTO'
WHEN 3 THEN 'PARCIALMENTE FATURADO'
WHEN 5 THEN 'BLOQUEADO'
WHEN 7 THEN 'EM COMPOSIÇÃO'
WHEN 8 THEN 'EM ANÁLISE' ELSE 'OUTRA SITUAÇÃO' END AS situacaoEdt
, SUM((pedidoItem.qtSolicitada - pedidoItem.qtcancelada) * pedidoItem.vlUnitario) AS valorBruto
, SUM((pedidoItem.qtSolicitada - pedidoItem.qtcancelada) * pedidoItem.vlUnitario) * ((100 - pedido.prDesconto) / 100) * ((100 - pedidoItem.prDesconto) / 100) AS valorLiquido
, SUM(((pedidoItem.qtSolicitada + pedidoItem.qtextra - pedidoItem.qtatendida - pedidoItem.qtcancelada) * pedidoItem.vlUnitario) * ((100 - pedido.prDesconto) / 100) * ((100 - pedidoItem.prDesconto) / 100)) AS valorSaldo
, SUM(pedidoItem.qtSolicitada - pedidoItem.qtcancelada) quantidade
FROM VendaVAEntity pedido
INNER JOIN
PessoaVAEntity pessoa
ON pessoa.cdPessoa = pedido.cdCliente
INNER JOIN
VPESConsultaVAEntity vpc
ON vpc.cdPessoa = pessoa.cdPessoa
INNER JOIN
VendaItemVAEntity pedidoItem
ON pedidoItem.cdempresa = pedido.cdempresa
AND pedidoItem.cdPedido = pedido.cdPedido
WHERE vpc.inCliente = 'TRUE'
AND (pedido.dtPedido >= :p1) AND (pedido.dtpedido <= :p2)
AND ((CAST(pedido.cdRepresentant as text) = :p3) OR (:p3 IS NULL))
AND ((CAST(pedido.cdCliente as text) = :p4) OR (:p4 IS NULL))
AND ((select pc.cdclassificacao
from produtoclassificacaovaentity pc
where pc.cdproduto = pedidoItem.cdproduto
and pc.cdtipoclass = 101 -- CONFIRMAR COM O CLIENTE O CÓDIGO DA COLEÇÃO
limit 1) in (#COLECOES) OR (#COLECAONULL IS NULL)
)
GROUP BY pedido.cdEmpresa
, pedido.cdCliente
, pessoa.nmpessoa
, pedido.cdRepresentant
, pedido.cdPedido
, pedido.dtPedido
, pedido.dtprevbaixa
, pedido.tpSituacao
, pedido.prDesconto
, pedidoItem.prDesconto
) VENDAS
GROUP BY VENDAS.codCliente
, VENDAS.nomeCliente
, VENDAS.codRepres
, VENDAS.pedAutomacao
, VENDAS.codPedido
, VENDAS.dtEmissao
, VENDAS.dataprevfaturamento
, VENDAS.situacao
, VENDAS.situacaoEdt
</code></pre>

h2. FV - Listagem de Pedidos - Detalhado

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Detalhado|Listagem de Pedidos - Detalhado]]

<pre><code class="sql">
select
VENDAS.dataEmissao as dataEmissao
, VENDAS.dataPrevFaturamento as dataPrevFatur
, VENDAS.situacaoEdt as situacaoEdt
, VENDAS.codCliente as codCliente
, VENDAS.nomeCliente as nomeCliente
, VENDAS.municipio as cidadeCliente
, VENDAS.uf as ufCliente
, VENDAS.inscricaoEstadual as inscEstadual
, VENDAS.cnpjCpf as cnpjCliente
, VENDAS.codRepres as codRepres
, VENDAS.percComissao as percComissao
, VENDAS.codTabPreco as codTabPreco
, VENDAS.nomeTabPreco as nomeTabPreco
, VENDAS.codpgto as codCondVenda
, VENDAS.nomecodpgto as nomeCondVenda
, null as codTranspDespacho
, null as nomeTranspDespacho
, VENDAS.tipoFreteTranspDespacho as tipoFreteTranspDespacho
, null as codTranspRedespacho
, null as nomeTranspRedespacho
, null as tipoFreteTranspRedespacho
, '1' as codTipoNota
, 'NORMAL' as nomeTipoNota
, null as observacao
, SUM(VENDAS.valorBruto) as valorBruto
, SUM(VENDAS.valorLiquido) as valorLiquido
, SUM(VENDAS.valorSaldo) as valorSaldo
, 0 as percDesconto1
, 0 as percDesconto2
, 0 as percDesconto3
, 0 as percDesconto4
, 0 as percDesconto5
, VENDAS.nomeCli as fantasia
, VENDAS.email as emailCliente
, VENDAS.nrPedidoCliente as pedidoCliente
, null as pedidoRepresentante
FROM
(SELECT pedido.dtPedido as dataEmissao
, pedido.dtPrevBaixa as dataPrevFaturamento
, CASE pedido.tpSituacao WHEN 4 THEN 'FATURADO'
WHEN 6 THEN 'CANCELADO'
WHEN 1 THEN 'EM ANDAMENTO'
WHEN 2 THEN 'LIBERADO PARA FATURAMENTO'
WHEN 3 THEN 'PARCIALMENTE FATURADO'
WHEN 5 THEN 'BLOQUEADO'
WHEN 7 THEN 'EM COMPOSIÇÃO'
WHEN 8 THEN 'EM ANÁLISE' ELSE 'OUTRA OUTRA SITUAÇÃO' END AS situacaoEdt
, pedido.cdCliente codCliente
, pessoa.nmPessoa nomeCliente
, endereco.nmMunicipio municipio
, endereco.ufSigla uf
, pessoaJuridica.nrInscEstl AS inscricaoEstadual
, pessoaJuridica.nrCnpj cnpjCpf
, pedido.cdrepresentant AS codRepres
, COALESCE(pedido.prComissaoFat, 0) + COALESCE(pedido.prComissaoRec, 0) AS percComissao
, pedido.cdTabpreco as codTabPreco
, tabPreco.descricao nomeTabPreco
, pedido.cdCondpgto codpgto
, condPagto.nome nomecodpgto
, CASE pedido.cdTransport WHEN 0 THEN null ELSE pedido.cdTransport END
, CASE pedido.cdTransport WHEN 0 THEN null ELSE pedido.nmTransport END
, CASE pedido.tpFrete WHEN 1 THEN 'EMITENTE'
WHEN 2 THEN 'DESTINATÁRIO'
WHEN 3 THEN 'POR TERCEIRO'
WHEN 4 THEN 'SEM FRETE' ELSE 'OUTROS' END AS tipoFreteTranspDespacho
, SUM((pedidoItem.qtSolicitada - pedidoItem.qtcancelada) * pedidoItem.vlUnitario) AS valorBruto
, SUM((pedidoItem.qtSolicitada - pedidoItem.qtcancelada) * pedidoItem.vlUnitario) * ((100 - pedido.prDesconto) / 100) * ((100 - pedidoItem.prDesconto) / 100) AS valorLiquido
, SUM(((pedidoItem.qtSolicitada + pedidoItem.qtextra - pedidoItem.qtatendida - pedidoItem.qtcancelada) * pedidoItem.vlUnitario) * ((100 - pedido.prDesconto) / 100) * ((100 - pedidoItem.prDesconto) / 100)) AS valorSaldo
, pessoa.nmPessoa as nomeCli
, email.dsemail as email
, pedido.nrPedidoCliente nrPedidoCliente
FROM VendaVAEntity pedido
INNER JOIN
PessoaVAEntity pessoa
ON pessoa.cdPessoa = pedido.cdCliente
INNER JOIN
VPESConsultaVAEntity vpc
ON vpc.cdPessoa = pessoa.cdPessoa
INNER JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = pessoa.cdEmpresa
AND endereco.cdPessoa = pessoa.cdPessoa
AND endereco.id = (select min(id) from pessoaenderecovaentity where cdempresa = pessoa.cdempresa and cdpessoa = pessoa.cdpessoa)
LEFT OUTER JOIN
ETLTabelaPreco tabPreco
ON tabPreco.codTabelaPreco = CAST(pedido.cdTabPreco as text)
LEFT OUTER JOIN
ETLCondPagto condPagto
ON condPagto.codEmpresa = CAST(pedido.cdEmpresa as text)
AND condPagto.codCondPagto = CAST(pedido.cdCondPgto as text)
INNER JOIN
VendaItemVAEntity pedidoItem
ON pedidoItem.cdempresa = pedido.cdempresa
AND pedidoItem.cdPedido = pedido.cdPedido
LEFT OUTER JOIN
PessoaEmailVAEntity email
ON email.cdEmpresa = pessoa.cdEmpresa
AND email.cdPessoa = pessoa.cdPessoa
AND email.inPadrao = 'TRUE'
LEFT OUTER JOIN
PessoaJuridicaVAEntity pessoaJuridica
ON pessoaJuridica.cdEmpresa = pessoa.cdEmpresa
AND pessoaJuridica.cdPessoa = pessoa.cdPessoa
WHERE CAST(pedido.cdEmpresa || '/' || pedido.cdPedido as text) = :p1
GROUP BY pedido.dtPedido
, pedido.dtPrevBaixa
, pedido.tpSituacao
, pedido.cdCliente
, pessoa.nmPessoa
, endereco.nmMunicipio
, endereco.ufSigla
, pessoaJuridica.nrInscEstl
, pessoaJuridica.nrCnpj
, pedido.cdrepresentant
, COALESCE(pedido.prComissaoFat, 0)
, COALESCE(pedido.prComissaoRec, 0)
, pedido.cdTabpreco
, tabPreco.descricao
, pedido.cdCondpgto
, condPagto.nome
, pedido.cdTransport
, pedido.nmTransport
, pedido.tpFrete
, pessoa.nmPessoa
, email.dsemail
, pedido.nrPedidoCliente
, pedido.prDesconto
, pedidoItem.prDesconto
, pedido.cdPedido
, pedido.cdEmpresa) VENDAS
GROUP BY VENDAS.dataEmissao
, VENDAS.dataPrevFaturamento
, VENDAS.situacaoEdt
, VENDAS.codCliente
, VENDAS.nomeCliente
, VENDAS.municipio
, VENDAS.uf
, VENDAS.inscricaoEstadual
, VENDAS.cnpjCpf
, VENDAS.codRepres
, VENDAS.percComissao
, VENDAS.codTabPreco
, VENDAS.nomeTabPreco
, VENDAS.codpgto
, VENDAS.nomecodpgto
, VENDAS.tipoFreteTranspDespacho
, VENDAS.nomeCli
, VENDAS.email
, VENDAS.nrPedidoCliente
</code></pre>

h2. FV - Listagem de Pedidos - Itens

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Itens|Listagem de Pedidos - Itens]]

<pre><code class="sql">
select
row_number() OVER (ORDER BY item.cdProduto) as codItem
, item.cdProduto as codProduto
, produto.dsProduto as nomeProduto
, item.qtSolicitada as qtdePedida
, item.qtCancelada as qtdeSaldo
, item.qtAtendida as qtdeFaturado
, item.qtCancelada as qtdeCancelada
, item.vlUnitario as valorUnitarioBruto
, (CASE item.qtSolicitada WHEN 0 THEN 0 ELSE ((item.qtSolicitada - item.qtcancelada) * ((item.vlUnitario * ((100 - item.prDesconto) / 100)) * ((100 - pedido.prDesconto) / 100)) / item.qtSolicitada) END) as valorUnitarioLiquido
, (item.qtSolicitada * ((item.vlUnitario * ((100 - item.prDesconto) / 100)) * ((100 - pedido.prDesconto) / 100))) - (item.qtCancelada * ((item.vlUnitario * ((100 - item.prDesconto) / 100)) * ((100 - pedido.prDesconto) / 100))) as valorTotal
, null as codReferencia
, null as seqTamanho
, null as seqSortimento
FROM VendaItemVAEntity item
LEFT OUTER JOIN
VendaVAEntity pedido
ON item.cdEmpresa = pedido.cdEmpresa
AND item.cdPedido = pedido.cdPedido
LEFT OUTER JOIN
ProdutoVAEntity produto
ON produto.cdProduto = item.cdProduto
WHERE CAST(pedido.cdEmpresa || '/' || item.cdPedido as text) = :p1
</code></pre>

h2. FV - Listagem de Pedidos - Notas

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Notas|Listagem de Pedidos - Notas]]

<pre><code class="sql">
select
nota.dataEmissao as dataEmissao
, nota.numeroNF as numeroNF
, CASE nota.situacao WHEN 'G' THEN 'GERADA'
WHEN 'A' THEN 'AUTORIZADA'
WHEN 'C' THEN 'CANCELADA'
WHEN 'I' THEN 'INUTILIZADA'
WHEN 'D' THEN 'DENEGADA'
WHEN 'E' THEN 'EMITIDA' ELSE 'OUTROS' END as situacao
, nota.valorLiquido as valorLiquido
, nota.codTransp as codTransp
, null as nomeTransp
, null as codRedespacho
, null as nomeRedespacho
, nota.chaveNFE as chaveNFE
, null as qtdeFaturado
FROM ETLPedidoNotaFiscal nota
INNER JOIN
VPesConsultaVAEntity vpc
ON CAST(vpc.cdPessoa as text) = nota.codTransp
WHERE CAST(nota.codEmpresa || '/' || nota.codPedido as text) = :p1
AND vpc.inTransport = 'TRUE'
WHERE CodPedido = :p1
</code></pre>

h2. FV - Listagem de Pedidos - Observações

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Observções|Listagem de Pedidos - Observações]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Listagem de Pedidos - Histórico

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Histórico|Listagem de Pedidos - Histórico]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Estoque

Documentação: [[Digitação de Pedidos#Estoque|Estoque]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Lote Entrega

Documentação: [[Digitação de Pedidos#Lotes-de-Entrega|Lote Entrega]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Lotes de Faturamento

Documentação: [[Digitação de Pedidos#Lotes-de-Faturamento|Lotes de Faturamento]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Cálculo substituição tributária

Documentação: [[Digitação de Pedidos#Cálculo-substituição-tributária|Cálculo substituição tributária]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Grupos substituição tributária

Documentação: [[Digitação de Pedidos#Grupos-substituição-tributária|Grupos substituição tributária]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Integração Valor de Frete por UF

Documentação: [[Digitação de Pedidos#Integração-Valor-de-Frete-por-UF|Integração Valor de Frete por UF]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Tabela de Preço SKU

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-SKU|Tabela de Preço SKU]]

<pre><code class="sql">
SELECT
'1' as codEmpresa
, preco.codTabelaPreco as codTabPreco
, grupo.cdNivel as codReferencia
, grade.cdGrade as codGrade
, preco.preco as vlrUnitario
, grade.cdCor as seqSortimento
, null as itemAti
, grade.cdTamanho as seqTamanho
, produto.dsProduto as descrProdu
, null as vlrUnitarioAnterior
, grade.cdTamanho as seqTamanho
, null as permiteBonificacao
, null as flagOferta
FROM ETLProdutoTabelaPreco preco
LEFT OUTER JOIN
ProdutoGradeVAEntity grade
ON preco.codProduto = grade.cdProdutoStr
INNER JOIN
etltabelapreco tab
ON tab.codTabelapreco = preco.codtabelapreco
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = grade.cdProduto
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProduto = grupo.cdProduto
WHERE preco.codEmpresa = :p1
AND preco.codTabelaPreco = :p2
AND preco.preco IS NOT NULL
AND grupo.cdNivel <> ''
GROUP BY preco.codTabelaPreco
, grupo.cdNivel
, grade.cdGrade
, preco.preco
, grade.cdCor
, grade.cdTamanho
, produto.dsProduto
</code></pre>

h2. FV - Tabela de Preço - Política - Desconto Adicional de Lote

Documentação: [[Digitação de Pedidos#Tabela-de-Preço-Política-Desconto-Adicional-de-Lote|Tabela de Preço - Política - Desconto Adicional de Lote]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Listagem de Pedidos em Aberto - Capa

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Em-Aberto-Capa|Listagem de Pedidos em Aberto - Capa]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Listagem de Pedidos em Aberto - Detalhado

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Detalhado|Listagem de Pedidos em Aberto - Detalhado]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - Listagem de Pedidos em Aberto - Itens

Documentação: [[Digitação de Pedidos#Listagem-de-Pedidos-Itens|Listagem de Pedidos em Aberto - Itens]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. FV - SKUs Pronta Entrega e Programado

Documentação: [[Digitação de Pedidos#SKUs Pronta Entrega e Programado|SKUs Pronta Entrega e Programado]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h1. *Business to Business*

h2. B2B - Produtos

Documentação: [[Loja_Virtual_-_B2B#Produtos|Produtos]]

<pre><code class="sql">
select
grupo.cdNivel as codReferencia
, grupo.dsNivel as NomeReferencia
, COALESCE(ETIQUETA.cdclassificacao, '99999') as codEtiqueta
, COALESCE(ETIQUETA.dsclassificacao, 'SEM ETIQUETA') as nomeEtiqueta
, COALESCE(LINHA.cdclassificacao, '99999') as codLinha
, COALESCE(LINHA.dsclassificacao, 'SEM LINHA') as nomeLinha
, COALESCE(TIPOPECA.cdclassificacao, '99999') as codTipoPeca
, COALESCE(TIPOPECA.dsclassificacao, 'SEM TIPO PECA') as nomeTpoPeca
, COALESCE(MODELO.cdclassificacao, '99999') as codTipoModelo
, COALESCE(MODELO.dsclassificacao, 'SEM MODELO') as nomeTipoModelo
, null as precoUnitario
, null as GradesAtivas
, grupo.cdNivel as codReferenciaProvisoria
, null as descricao
, null as descricaoHTML
, null as qtdeEmbarquePadrao
, null as genero
, null as keywords
, null as composicao
, null as precoSugerido
, null as flagGradeFechada
, null as unidMedida
, null as codGrupo
, null as percentualIPI
, null as grupo_st
FROM ETLProdutoTabelaPreco preco
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProdutoStr = preco.codProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = produto.cdProduto
LEFT OUTER JOIN
ProdutoInfVAEntity prinf
ON prinf.cdProduto = produto.cdProduto
LEFT OUTER JOIN
produtoclassificacaovaentity colecao
on grupo.cdProduto = colecao.cdProduto
and colecao.cdtipoclass = 1 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA COLEÇÃO COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity ETIQUETA
on grupo.cdProduto = ETIQUETA.cdProduto
and ETIQUETA.cdtipoclass = 2 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA ETIQUETA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity LINHA
on grupo.cdProduto = LINHA.cdProduto
and LINHA.cdtipoclass = 3 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA LINHA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity TIPOPECA
on grupo.cdProduto = TIPOPECA.cdProduto
and TIPOPECA.cdtipoclass = 4 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA TIPO DE PEÇA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity MODELO
on grupo.cdProduto = MODELO.cdProduto
and MODELO.cdtipoclass = 5 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA MODELO COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity MARCA
on grupo.cdProduto = MARCA.cdProduto
and MARCA.cdtipoclass = 6 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA MARCA COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity GENERO
on grupo.cdProduto = GENERO.cdProduto
and GENERO.cdtipoclass = 7 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA GENERO COM O CLIENTE
LEFT OUTER JOIN
produtoclassificacaovaentity FAMILIA
on grupo.cdProduto = FAMILIA.cdProduto
and FAMILIA.cdtipoclass = 8 -- CONFIRMAR O CÓDIGO DE CLASSIFICAÇÃO DA FAMILIA COM O CLIENTE
WHERE preco.codTabelaPreco IN ('#TABPRECO')
AND (colecao.cdClassificacao = :p2)
AND COALESCE(prinf.ininativo, 'FALSE') = 'FALSE'
AND (grupo.cdNivel in (#REFERENCIAS) or COALESCE(#REFERENCIAS_TODAS,'0') = COALESCE('','0'))
AND coalesce(produto.inBloqueio, 0) = 0
AND grupo.cdNivel <> ''
GROUP BY grupo.cdNivel
, grupo.dsNivel
, COALESCE(ETIQUETA.cdclassificacao, '99999')
, COALESCE(ETIQUETA.dsclassificacao, 'SEM ETIQUETA')
, COALESCE(LINHA.cdclassificacao, '99999')
, COALESCE(LINHA.dsclassificacao, 'SEM LINHA')
, COALESCE(TIPOPECA.cdclassificacao, '99999')
, COALESCE(TIPOPECA.dsclassificacao, 'SEM TIPO PECA')
, COALESCE(MODELO.cdclassificacao, '99999')
, COALESCE(MODELO.dsclassificacao, 'SEM MODELO')
</code></pre>

h2. B2B - Produtos - Grades

Documentação: [[Loja_Virtual_-_B2B#Produtos-Grades|Produtos - Grades]]

<pre><code class="sql">
select
grupo.cdNivel as codReferencia
, grade.cdGrade as codGrade
, grade.cdTamanho as seqTamanho
, grade.cdTamanho as seqOrdenacao
, grade.dsTamanho as codTamanho
, null as pesoPeca
, null as nomeGrade
FROM ETLProdutoTabelaPreco preco
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProdutoStr = preco.codProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = produto.cdProduto
LEFT OUTER JOIN
ProdutoInfVAEntity prinf
ON prinf.cdProduto = produto.cdProduto
INNER JOIN
ProdutoGradeVAEntity grade
ON grade.cdProduto = produto.cdProduto
WHERE preco.codTabelaPreco IN ('#TABPRECO')
AND COALESCE(prinf.ininativo, 'FALSE') = 'FALSE'
AND coalesce(produto.inBloqueio, 0) = 0
AND (grupo.cdnivel in (#REFERENCIAS) or COALESCE(#REFERENCIAS_TODAS,'0') = COALESCE('','0'))
</code></pre>

h2. B2B - Produtos - Grade Fechada

Documentação: [[Loja_Virtual_-_B2B#Produtos-Grade-Fechada|Produtos - Grade Fechada]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Produtos - Sortimentos

Documentação: [[Loja_Virtual_-_B2B#Produtos-Sortimentos|Produtos - Sortimentos]]

<pre><code class="sql">
select
grupo.cdNivel as codReferencia
, grade.cdCor as codSortimento
, grade.dsCor as descricao
, grade.cdCor as codCorBase
, '#FFFFFF' as codRGBCorBase
, null as ordem
, null as pocket
, null as estampa
FROM ETLProdutoTabelaPreco preco
INNER JOIN
ProdutoVAEntity produto
ON CAST(produto .cdProduto AS text) = preco.codProduto
LEFT OUTER JOIN
ProdutoInfVAEntity prinf
ON CAST(prinf.cdProduto AS text) = preco.codProduto
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = produto.cdProduto
INNER JOIN
ProdutoGradeVAEntity grade
ON grade.cdProduto = produto.cdProduto
WHERE preco.codTabelaPreco IN ('#TABPRECO')
AND colecao.cdClassificacao = :p2
AND COALESCE(prinf.ininativo, 'FALSE') = 'FALSE'
AND coalesce(produto.inBloqueio, 0) = 0
AND (LTRIM(RTRIM(grupo.cdnivel)) in (#REFERENCIAS) or COALESCE(#REFERENCIAS_TODAS,'0') = COALESCE('','0'))
GROUP BY grupo.cdNivel
, grade.cdCor
, grade.dsCor
</code></pre>

h2. B2B - Produtos - Tabela de Preço

Documentação: [[Loja_Virtual_-_B2B#Produtos-Tabela-de-Preço|Produtos - Tabela de Preço]]

<pre><code class="sql">
select
'1' as codEmpresa
, preco.codTabelaPreco as codTabela
, grupo.cdNivel as codProduto
, grade.cdGrade as codGrade
, preco.preco as preco
, null as preco_sugerido
FROM ETLProdutoTabelaPreco preco
LEFT OUTER JOIN
ProdutoGradeVAEntity grade
ON CAST(preco.codProduto AS text) = CAST(grade.cdProduto AS text)
INNER JOIN
etltabelapreco tab
ON tab.codTabelapreco = preco.codtabelapreco
INNER JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdProduto = grade.cdProduto
INNER JOIN
ProdutoVAEntity produto
ON produto.cdProduto = grupo.cdProduto
WHERE preco.codTabelaPreco in ('#TABPRECO')
AND preco.preco IS NOT NULL
AND grupo.cdNivel <> ''
GROUP BY preco.codTabelaPreco
, grupo.cdNivel
, grade.cdGrade
, preco.preco
</code></pre>

h2. B2B - Produtos - Tabela de Preço por SKU

Documentação: [[Loja_Virtual_-_B2B#Produtos-Tabela-de-Preço-por-SKU|Produtos - Tabela de Preço por SKU]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Produtos - Estoque

Documentação: [[Loja_Virtual_-_B2B#Produtos-Estoque|Produtos - Estoque]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Produtos - Pocket

Documentação: [[Loja_Virtual_-_B2B#Produtos-Pocket|Produtos - Pocket]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Pedido - Capa

Documentação: [[Loja_Virtual_-_B2B#Pedido-Capa|Pedido - Capa]]

<pre><code class="sql">
select
uuid.uuid as codPedidoLoja
, pedido.cdPedido as codPedido
, CASE pedido.tpSituacao
WHEN 4 THEN '45'
WHEN 6 THEN '98'
WHEN 1 THEN '40'
WHEN 2 THEN '45'
WHEN 3 THEN '43'
WHEN 5 THEN '40'
WHEN 7 THEN '40'
WHEN 8 THEN '40'
ELSE '40'
END as situacao
FROM VendaVAEntity pedido
INNER JOIN
etlpedidouuid uuid
ON uuid.codpedido = cast(pedido.cdPedido as varchar)
WHERE pedido.cdEmpresa = 1
AND uuid.uuid in (#PEDIDOS_LOJA)
</code></pre>

h2. B2B - Pedido - Histórico

Documentação: [[Loja_Virtual_-_B2B#Pedido-Histórico|Pedido - Histórico]]

<pre><code class="sql">
select
pedido.cdPedido as NumeroErp
, pedido.dtPedido as Data
, CASE pedido.tpSituacao
WHEN 4 THEN '45'
WHEN 6 THEN '98'
WHEN 1 THEN '40'
WHEN 2 THEN '45'
WHEN 3 THEN '40'
WHEN 5 THEN '40'
WHEN 7 THEN '40'
WHEN 8 THEN '40'
ELSE '40'
END as Situacao
, null as FormaPagamento
, SUM(pedidoItem.qtSolicitada * pedidoItem.vlUnitario) * ((100 - pedido.prDesconto) / 100) as Total
, null as codcliente
, pessoa.nrcpfcnpj as cliCnpj
, null as nomecliente
FROM VendaItemVAEntity pedidoItem
INNER JOIN
VendaVAEntity pedido
ON pedidoItem.cdempresa = pedido.cdempresa AND pedidoItem.cdPedido = pedido.cdPedido
LEFT JOIN
PessoaVAEntity pessoa
ON pessoa.cdPessoa = pedido.cdCliente
WHERE pedido.tpSituacao NOT IN (6)
AND CAST(pedido.cdempresa as TEXT) = :p1
AND CAST(pessoa.nrcpfcnpj as TEXT) = :p2
GROUP BY pedido.cdPedido,
pedido.dtPedido,
pedido.tpSituacao,
pedido.prDesconto,
pessoa.nrcpfcnpj
order by pedido.dtPedido desc
</code></pre>

h2. B2B - Pedido - Detalhe

Documentação: [[Loja_Virtual_-_B2B#Pedido-Detalhe|Pedido - Detalhe]]

<pre><code class="sql">
select
pedido.cdPedido as NumeroErp
, pedido.dtPedido as Data
, CASE pedido.tpSituacao
WHEN 4 THEN '45'
WHEN 6 THEN '98'
WHEN 1 THEN '40'
WHEN 2 THEN '45'
WHEN 3 THEN '40'
WHEN 5 THEN '40'
WHEN 7 THEN '40'
WHEN 8 THEN '40'
ELSE '40'
END as Situacao
, null as FormaPagamento
, SUM(pedidoItem.qtSolicitada * pedidoItem.vlUnitario) * ((100 - pedido.prDesconto) / 100) as Total
, SUM(pedidoItem.qtSolicitada * pedidoItem.vlUnitario) as TotalBruto
, pedido.observacoes as Observacoes
FROM VendaItemVAEntity pedidoItem
INNER JOIN
VendaVAEntity pedido
ON pedidoItem.cdempresa = pedido.cdempresa
AND pedidoItem.cdPedido = pedido.cdPedido
LEFT JOIN
PessoaVAEntity pessoa
ON pessoa.cdPessoa = pedido.cdCliente
LEFT JOIN
VPESConsultaVAEntity vpc
ON vpc.cdPessoa = pessoa.cdPessoa
LEFT JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdPessoa = pessoa.cdPessoa
AND endereco.nrSequencia = 1
LEFT join
vendaclassificacaovaentity colecao
on pedido.cdempresa = colecao.cdempresa
and pedido.cdPedido = colecao.cdpedido
and colecao.cdtipoclass = 2
LEFT join
vendaclassificacaovaentity segmento
on pedido.cdempresa = segmento.cdempresa
and pedido.cdPedido = segmento.cdpedido
and segmento.cdtipoclass = 1
WHERE pedido.tpSituacao NOT IN (6)
AND vpc.inCliente = 'TRUE'
AND CAST(pedido.cdempresa as TEXT) = :p1
AND CAST(pessoa.nrcpfcnpj as TEXT) = :p2
AND CAST(pedido.cdPedido as TEXT) = :p3
GROUP BY pedido.cdPedido
, pedido.dtPedido
, pedido.tpSituacao
, pedido.prDesconto
, pessoa.nrcpfcnpj
, pedido.observacoes
</code></pre>

h2. B2B - Pedido - Itens

Documentação: [[Loja_Virtual_-_B2B#Pedido-Itens|Pedido - Itens]]

<pre><code class="sql">
select
row_number() OVER (ORDER BY grupo.cdNivel) as CodItem
, grupo.cdNivel as CodProduto
, grupo.dsNivel as NomeProduto
, sum(item.qtSolicitada) as QtdePedida
, sum(item.qtSolicitada - item.qtCancelada - item.qtAtendida) as QtdeSaldo
, sum(item.qtAtendida) as QtdeFaturado
, sum(item.qtCancelada) as QtdeCancelado
, item.vlUnitario as ValorUnitarioBruto
, CASE sum(item.qtSolicitada)
WHEN 0 THEN 0
ELSE sum(item.qtSolicitada) * ((item.vlUnitario * ((100 - item.prDesconto) / 100)) * ((100 - pedido.prDesconto) / 100)) / sum(item.qtSolicitada)
END as ValorUnitarioLiquido
, (sum(item.qtSolicitada) * ((item.vlUnitario * ((100 - item.prDesconto) / 100)) * ((100 - pedido.prDesconto) / 100))) - (sum(item.qtCancelada) * ((item.vlUnitario * ((100 - item.prDesconto) / 100)) * ((100 - pedido.prDesconto) / 100))) as ValorTotal
, grupo.cdNivel as CodReferencia
, grade.dsTamanho as SeqTamanho
, grade.cdCor as SeqSortimento
, null as QtdeReservado
FROM VendaItemVAEntity item
LEFT JOIN
VendaVAEntity pedido
ON item.cdEmpresa = pedido.cdEmpresa
AND item.cdPedido = pedido.cdPedido
LEFT JOIN
ProdutoVAEntity produto
ON produto.cdProduto = item.cdProduto
LEFT JOIN
ProdutoGrupoAdicionalVAEntity grupo
ON grupo.cdproduto = produto.cdproduto
LEFT JOIN
produtogradevaentity grade
ON grade.cdproduto = produto.cdproduto
WHERE CAST(item.cdPedido as text) = :p1
group by grupo.cdNivel
, grupo.dsNivel
, item.vlUnitario
, item.prDesconto
, pedido.prDesconto
, grade.dsTamanho
</code></pre>

h2. B2B - Cliente

Documentação: [[Loja_Virtual_-_B2B#Cliente|Cliente]]

<pre><code class="sql">
select
select
coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) as cnpj
, pj.nmfantasia as nomeFantasia
, pm.dsemail as email
, pe.cdcep as cep
, pe.nmlogradouro as endereco
, pe.nrlogradouro as enderecoNumero
, pe.dscomplemento as complemento
, pe.dsbairro as bairro
, COALESCE(im.codibge, '4127403') as codIBGE --CONFIRMAR COM O CLIENTE UM IBGE PADRÃO
, regexp_replace(pt.nrtelefone, '[^0-9]', '', 'g') as telefone
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') as codRepres1
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 1), '0') as codRepres2
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 2), '0') as codRepres3
, p.cdpessoa as codCliente
, (case when (p.ininativo = 'TRUE') then 0 else 1 end) as flagAtivoParaLoja
, 1 as flagIsRepresentanteB2B
, p.nmpessoa as razaoSocial
, null as emailRepres
, pj.nrinscestl as inscricaoEstadual
, pe.ufsigla as siglaUF
, null as nomeUF
, null as populacao
, null as ipc
, case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end as codGrupoCli
, (select pg.nmpessoa from pessoavaentity pg where pg.cdempresa = vpc.cdempresacad and pg.cdpessoa = vpc.cdcoligador) as nomeGrupoCli
, null as salarioBase
, null as limiteCredito
, null as codCondPagto
, null as codTransportadora
, null as descontoPadrao
, null as pais
, (case when coalesce(titulos_em_atraso,0) > 0 then 1 else 0 end) as inadimplente
, null as cliente_novo_crm
, pts.nrtelefone as fax
, pts.nrtelefone as celular
, pmc.dsemail as emailNfe
, null as telefoneCompras
, null as telefoneCobranca
, null as facebook
, null as instagram
, null as dataFundacao
, null as marcasLiberadas
, null as tipoFaturamento
, null as regime_st
FROM pessoavaentity p
inner join
pessoaenderecovaentity pe
on pe.cdempresa = p.cdempresa and pe.cdpessoa = p.cdpessoa
inner join
vpesconsultavaentity vpc
on vpc.cdpessoa = p.cdpessoa
LEFT join
ETLCidade im
on im.codCidade = pe.cdMunicipio
LEFT join
pessoatelefonevaentity pt
on pt.cdempresa = p.cdempresa
AND pt.cdpessoa = p.cdpessoa
AND pt.id = ( SELECT MIN(pt2.id)
FROM pessoatelefonevaentity pt2
WHERE pt.cdempresa = pt2.cdempresa
AND pt.cdpessoa = pt2.cdpessoa
)
left join
pessoaemailvaentity pm
on pm.cdempresa = p.cdempresa
and pm.cdpessoa = p.cdpessoa
and pm.inpadrao = 'TRUE'
left join
pessoaemailvaentity pmc
on pmc.cdempresa = p.cdempresa
and pmc.cdpessoa = p.cdpessoa
and pmc.cdtipoemail = 3 -- CONFIRMAR QUAL TIPO DE E-MAIL É O EMAIL DE NFE/COBRANCA
left join
pessoatelefonevaentity pts
on pts.cdempresa = p.cdempresa
and pts.cdpessoa = p.cdpessoa
and pts.cdtipofone = 4 -- CONFIRMAR COM O CLIENTE QUAL É O CÓDIGO DO TELEFONE CELULAR
left join
pessoajuridicavaentity pj
on pj.cdempresa = p.cdempresa
and pj.cdpessoa = p.cdpessoa
left join
(select codcliente::int as codcliente
, codempresa::int as codempresa
, count(*) as titulos_em_atraso
from etltitulo
where situacao = '1'
and (dataVencimento::date + 28) < (current_date) -- CONFIRMAR COM O CLIENTE QUANTOS DIAS CONSIDERA INADIMPLENTE
group by codcliente
, codempresa having sum(valor) > 3000) as inad -- CONFIRMAR COM O CLIENTE SE INADIMPLENTE É ACIMA DE 3 MIL REAIS DEVENDO
on inad.codcliente = p.cdpessoa
and inad.codempresa = p.cdempresa
left join
(SELECT v.cdcliente, MIN(v.dtpedido) as dataCadastro FROM vendavaentity v GROUP BY v.cdcliente) as v
on v.cdcliente = p.cdpessoa
where vpc.incliente = 'TRUE'
AND coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') is not null
and coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) is not null
AND pe.cdcep <> '99999999'
AND length(coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj)) >= 14 -- CONFIRMAR COM O CLIENTE SE É PARA PUXAR SÓ CNPJ
AND (
(coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) = replace(replace(replace(:p2,'.',''),'-',''),'/',''))
OR (cast(P.cdPessoa as varchar(14)) = :p2)
)
</code></pre>

h2. B2B - Representantes - Clientes

Documentação: [[Loja_Virtual_-_B2B#Representantes - Clientes|Representantes - Clientes]]

<pre><code class="sql">
select
coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = pessoa.cdempresa and pf.cdpessoa = pessoa.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = pessoa.cdempresa and pj.cdpessoa = pessoa.cdpessoa
), pessoa.nrcpfcnpj) as cnpj
, pessoa.nmpessoa as nomeFantasia
, email.dsemail as email
, endereco.cdcep as cep
, endereco.nmLogradouro as endereco
, endereco.nrLogradouro as enderecoNumero
, null as complemento
, endereco.dsbairro as bairro
, COALESCE(im.codibge, '4127403') as codIBGE --CONFIRMAR COM O CLIENTE UM IBGE PADRÃO
, telefone.nrtelefone as telefone
, pessoa.cdPessoa as codRepres1
, null as codRepres2
, null as codRepres3
, pessoa.cdPessoa as codCliente
, 1 as flagAtivoParaLoja
, 2 as flagIsRepresentanteB2B
, pessoa.nmpessoa as razaoSocial
, null as emailRepres
, null as inscricaoEstadual
, CASE WHEN endereco.cdcep = '99999999' THEN 'EX' ELSE UPPER(endereco.ufsigla) END as siglaUF
, CASE WHEN endereco.cdcep = '99999999' THEN 'EX' ELSE UPPER(endereco.ufsigla) END as nomeUF
, null as populacao
, null as ipc
, (case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end) as codGrupoCli
, (select pg.nmpessoa from pessoavaentity pg where pg.cdempresa = vpc.cdempresacad and pg.cdpessoa = vpc.cdcoligador) as nomeGrupoCli
FROM PessoaVAEntity pessoa
INNER JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = pessoa.cdEmpresa
AND endereco.cdPessoa = pessoa.cdPessoa
and endereco.id = (select min(id) from pessoaenderecovaentity where cdempresa = endereco.cdempresa and cdpessoa = endereco.cdpessoa)
INNER JOIN
VPESConsultaVAEntity vpc
ON vpc.cdPessoa = pessoa.cdPessoa
LEFT JOIN
PessoaTelefoneVAEntity telefone
ON telefone.cdEmpresa = pessoa.cdEmpresa
AND telefone.cdPessoa = pessoa.cdPessoa
and telefone.id = (select min(id) from pessoatelefonevaentity where cdempresa = telefone.cdempresa and cdpessoa = telefone.cdpessoa and inpadrao = 'TRUE')
LEFT JOIN
PessoaEmailVAEntity email
ON email.cdEmpresa = pessoa.cdEmpresa
AND email.cdPessoa = pessoa.cdPessoa
and email.id = (select min(id) from pessoaemailvaentity where cdpessoa = email.cdpessoa and cdempresa = email.cdempresa and inpadrao = 'TRUE')
LEFT JOIN
PessoaEmailVAEntity emailNFE
ON emailNFE.cdEmpresa = pessoa.cdEmpresa
AND emailNFE.cdPessoa = pessoa.cdPessoa
and emailNFE.id = (select min(id) from pessoaemailvaentity where cdpessoa = emailNFE.cdpessoa and cdempresa = emailNFE.cdempresa and cdtipoemail = 3) -- CONFIRMAR QUAL TIPO DE E-MAIL É O EMAIL DE NFE/COBRANCA
LEFT JOIN
PessoaTelefoneVAEntity telefone2
ON telefone2.cdEmpresa = pessoa.cdEmpresa
AND telefone2.cdPessoa = pessoa.cdPessoa
and telefone2.id = (select min(id) from pessoatelefonevaentity where cdempresa = telefone2.cdempresa and cdpessoa = telefone2.cdpessoa and cdtipofone = 2) -- CONFIRMAR COM O CLIENTE QUAL É O CÓDIGO DO TELEFONE CELULAR
LEFT JOIN
pessoajuridicavaentity pessoaJuridica
ON pessoaJuridica.cdEmpresa = pessoa.cdEmpresa
AND pessoaJuridica.cdPessoa = pessoa.cdPessoa
LEFT join
ETLCidade im
on im.codCidade = endereco.cdMunicipio
WHERE vpc.inRepresent = 'TRUE'
AND pessoa.ininativo = 'FALSE'
and ((replace(replace(replace(pessoaJuridica.nrcnpj,'.',''),'-',''),'/','') = replace(replace(replace(:p2,'.',''),'-',''),'/','')) OR (cast(pessoa.cdPessoa as varchar(14)) = :p2))
</code></pre>

h2. B2B - Clientes - Representantes

Documentação: [[Loja_Virtual_-_B2B#Clientes-Representantes|Clientes - Representantes]]

<pre><code class="sql">
select
coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) as cnpj
, CASE WHEN pj.nmfantasia IS NULL OR pj.nmfantasia = '' THEN p.nmpessoa ELSE pj.nmfantasia END as nomeFantasia
--, pm.dsemail as email
, 'angela@geovendas.com'
, pe.cdcep as cep
, pe.nmlogradouro as endereco
, pe.nrlogradouro as enderecoNumero
, pe.dscomplemento as complemento
, pe.dsbairro as bairro
, COALESCE(im.codibge, '4127403') as codIBGE --CONFIRMAR COM O CLIENTE UM IBGE PADRÃO
, regexp_replace(pt.nrtelefone, '[^0-9]', '', 'g') as telefone
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') as codRepres1
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 1), '0') as codRepres2
, coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 2), '0') as codRepres3
, p.cdpessoa as codCliente
, (case when (p.ininativo = 'TRUE') then 0 else 1 end) as flagAtivoParaLoja
, 1 as flagIsRepresentanteB2B
, CASE WHEN p.nmpessoa IS NULL OR p.nmpessoa = '' THEN pj.nmfantasia ELSE p.nmpessoa END as razaoSocial
, null as emailRepres
, pj.nrinscestl as inscricaoEstadual
, pe.ufsigla as siglaUF
, null as nomeUF
, null as populacao
, null as ipc
, case when vpc.cdcoligador = '0' then null else vpc.cdcoligador end as codGrupoCli
, (select pg.nmpessoa from pessoavaentity pg where pg.cdempresa = vpc.cdempresacad and pg.cdpessoa = vpc.cdcoligador) as nomeGrupoCli
, null as salarioBase
, null as limiteCredito
, null as codCondPagto
, null as codTransportadora
, null as descontoPadrao
, null as pais
, (case when coalesce(titulos_em_atraso,0) > 0 then 1 else 0 end) as inadimplente
, null as cliente_novo_crm
, pts.nrtelefone as fax
, pts.nrtelefone as celular
, pmc.dsemail as emailNfe
, null as telefoneCompras
, null as telefoneCobranca
, null as facebook
, null as instagram
, null as dataFundacao
FROM pessoavaentity p
inner join
pessoaenderecovaentity pe
on pe.cdempresa = p.cdempresa and pe.cdpessoa = p.cdpessoa
inner join
vpesconsultavaentity vpc
on vpc.cdpessoa = p.cdpessoa
LEFT join
ETLCidade im
on im.codCidade = pe.cdMunicipio
LEFT join
pessoatelefonevaentity pt
on pt.cdempresa = p.cdempresa
AND pt.cdpessoa = p.cdpessoa
AND pt.id = ( SELECT MIN(pt2.id)
FROM pessoatelefonevaentity pt2
WHERE pt.cdempresa = pt2.cdempresa
AND pt.cdpessoa = pt2.cdpessoa
)
left join
pessoaemailvaentity pm
on pm.cdempresa = p.cdempresa
and pm.cdpessoa = p.cdpessoa
and pm.inpadrao = 'TRUE'
left join
pessoaemailvaentity pmc
on pmc.cdempresa = p.cdempresa
and pmc.cdpessoa = p.cdpessoa
and pmc.cdtipoemail = 3 -- CONFIRMAR QUAL TIPO DE E-MAIL É O EMAIL DE NFE/COBRANCA
left join
pessoatelefonevaentity pts
on pts.cdempresa = p.cdempresa
and pts.cdpessoa = p.cdpessoa
and pts.cdtipofone = 4 -- CONFIRMAR COM O CLIENTE QUAL É O CÓDIGO DO TELEFONE CELULAR
left join
pessoajuridicavaentity pj
on pj.cdempresa = p.cdempresa
and pj.cdpessoa = p.cdpessoa
left join
(select codcliente::int as codcliente
, codempresa::int as codempresa
, count(*) as titulos_em_atraso
from etltitulo
where situacao = '1'
and (dataVencimento::date + 28) < (current_date) -- CONFIRMAR COM O CLIENTE QUANTOS DIAS CONSIDERA INADIMPLENTE
group by codcliente
, codempresa having sum(valor) > 3000) as inad -- CONFIRMAR COM O CLIENTE SE INADIMPLENTE É ACIMA DE 3 MIL REAIS DEVENDO
on inad.codcliente = p.cdpessoa
and inad.codempresa = p.cdempresa
left join
(SELECT v.cdcliente, MIN(v.dtpedido) as dataCadastro FROM vendavaentity v GROUP BY v.cdcliente) as v
on v.cdcliente = p.cdpessoa
where vpc.incliente = 'TRUE'
AND coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') is not null
and coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj) is not null
AND pe.cdcep <> '99999999'
AND length(coalesce(
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = p.cdempresa and pf.cdpessoa = p.cdpessoa
union
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = p.cdempresa and pj.cdpessoa = p.cdpessoa
), p.nrcpfcnpj)) >= 14 -- CONFIRMAR COM O CLIENTE SE É PARA PUXAR SÓ CNPJ
AND (
CAST(coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1), '0') AS VARCHAR(255)) = :p2
OR CAST(coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 1), '0') AS VARCHAR(255)) = :p2
OR CAST(coalesce((select rep.cdrepresentant from pessoareprclientevaentity rep where rep.cdempresa = p.cdempresa and rep.cdpessoa = p.cdpessoa limit 1 offset 2), '0') AS VARCHAR(255)) = :p2
)
</code></pre>

h2. B2B - Comissão por Repres/Cliente/Marca

Documentação: [[Loja_Virtual_-_B2B#Comissão por Repres/Cliente/Marca|Comissão por Repres/Cliente/Marca]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Condição de Venda

Documentação: [[Loja_Virtual_-_B2B#Condição de Venda|Condição de Venda]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Bloqueio de Referências

Documentação: [[Loja_Virtual_-_B2B#Bloqueio-de-Referências|Bloqueio Referências]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Boletos - Consulta Cliente

Documentação: [[Loja_Virtual_-_B2B#Boletos-Consulta-Cliente|Boletos - Consulta Cliente]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Boletos - Listagem

Documentação: [[Loja_Virtual_-_B2B#Boletos-Listagem|Boletos - Listagem]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Boletos - Detalhado

Documentação: [[Loja_Virtual_-_B2B#Boletos-Detalhado|Boletos - Detalhado]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - DANFE- Listagem

Documentação: [[Loja_Virtual_-_B2B#DANFE-Listagem|DANFE- Listagem]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - DANFE- Itens da Nota

Documentação: [[Loja_Virtual_-_B2B#DANFE-Itens-da-Nota|DANFE- Itens da Nota]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - DANFE- XML

Documentação: [[Loja_Virtual_-_B2B#DANFE-XML|DANFE- XML]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Lote de Faturamento

Documentação: [[Loja_Virtual_-_B2B#Lote de Faturamento| Lote de Faturamento]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Produto SKU - Cód. Barras

Documentação: [[Loja_Virtual_-_B2B#Produto SKU - Cód. Barras| Produto SKU - Cód. Barras]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Espelho Nota de Devolução

Documentação: [[Loja_Virtual_-_B2B#Frete| Frete]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Espelho Nota de Devolução

Documentação: [[Loja_Virtual_-_B2B#Espelho Nota de Devolução| Espelho Nota de Devolução]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Produto Volume Valor por Referência

Documentação: [[Loja_Virtual_-_B2B#Produto Volume Valor por Referência| Produto Volume Valor por Referência]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Substituição Tributária

Documentação: [[Loja_Virtual_-_B2B#Substituição Tributária| Substituição Tributária]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. B2B - Pedido - Recompra

Documentação: [[Loja_Virtual_-_B2B#Pedido-Recompra|Pedido - Recompra]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. *CRM*

h1. CRM - Dados Cadastrais do Cliente

Documentação: [[CRM#Dados-Cadastrais-do-Cliente|Dados Cadastrais do Cliente]]

<pre><code class="sql">
SELECT
pessoa.nmPessoa as nome
, repCli.cdrepresentant as codRepres
, repres.nmPessoa as nomeRepres
, endereco.nmLogradouro as endereco
, endereco.dsbairro as bairro
, endereco.nrLogradouro as numero
, endereco.dscomplemento as complemento
, endereco.cdcep as cep
, null as codAtendente
, null as nomeAtendente
, pessoa.cdPessoa as codCliente
, pessoaJuridica.nrinscestl as inscricaoEstadual
, regexp_replace(telefone.nrtelefone, '[^0-9]', '', 'g') as telefone
, endereco.ufsigla as cepuf
, im.nome as cidade
, pessoa.dtcadastro as dataCadastro
, pessoaJuridica.nmfantasia as nomeFantasia
, vpc.cdcoligador as codGrupoEconomico
, vpc.cdcoligador as nomeGrupoEconomico
, pessoaJuridica.nrCnpj as cnpjCpf
, email.dsEmail as email
, regexp_replace(telefone2.nrtelefone, '[^0-9]', '', 'g') as celular
FROM pessoavaEntity pessoa
INNER JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = pessoa.cdEmpresa
AND endereco.cdPessoa = pessoa.cdPessoa
and endereco.id = (select min(id) from pessoaenderecovaentity where cdempresa = endereco.cdempresa and cdpessoa = endereco.cdpessoa)
LEFT JOIN
PessoaTelefoneVAEntity telefone
ON telefone.cdEmpresa = pessoa.cdEmpresa
AND telefone.cdPessoa = pessoa.cdPessoa
and telefone.id = (select min(id) from pessoatelefonevaentity where cdempresa = telefone.cdempresa and cdpessoa = telefone.cdpessoa) -- and inpadrao = 'TRUE')
LEFT JOIN
PessoaTelefoneVAEntity telefone2
ON telefone2.cdEmpresa = pessoa.cdEmpresa
AND telefone2.cdPessoa = pessoa.cdPessoa
and telefone2.id = (select min(id) from pessoatelefonevaentity where cdempresa = telefone2.cdempresa and cdpessoa = telefone2.cdpessoa and cdtipofone = 4)
LEFT join
ETLCidade im on im.codCidade = endereco.cdMunicipio
LEFT JOIN
PessoaEmailVAEntity email
ON email.cdEmpresa = pessoa.cdEmpresa
AND email.cdPessoa = pessoa.cdPessoa
and email.id = (select min(id) from pessoaemailvaentity where cdpessoa = email.cdpessoa and cdempresa = email.cdempresa and inpadrao = 'TRUE')
LEFT JOIN
pessoajuridicavaentity pessoaJuridica
ON pessoaJuridica.cdEmpresa = pessoa.cdEmpresa
AND pessoaJuridica.cdPessoa = pessoa.cdPessoa
LEFT JOIN
PessoaReprClienteVAEntity repCli
ON pessoa.cdPessoa = repCli.cdPessoa
LEFT JOIN
pessoavaEntity repres
ON repCli.cdRepresentant = repres.cdpessoa
LEFT JOIN
vpesconsultavaentity vpc
on vpc.cdpessoa = pessoa.cdpessoa
WHERE ((pessoaJuridica.nrCnpj = :p2) or (pessoaJuridica.nrCnpj = :p1) OR (pessoa.cdpessoa::text = :p1))
</code></pre>

h2. CRM - Pesquisa por Nome de Cliente

Documentação: [[CRM#Pesquisa-por-Nome-de-Cliente|Pesquisa por Nome de Cliente]]

<pre><code class="sql">
SELECT
coalesce(pessoa.nrcpfcnpj,'') as cnpjCpf
, coalesce(pessoa.nmPessoa||'('||pessoa.cdpessoa||')','') as nome
, coalesce(im.nome,'') as cidade
, coalesce(endereco.ufsigla,'') as estado
, coalesce(pessoa.cdpessoa) as codCliente
, coalesce(pj.nmfantasia,'') as nomeFantasia
, coalesce(endereco.cdcep,'') as cep
FROM pessoavaEntity pessoa
INNER JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = pessoa.cdEmpresa
AND endereco.cdPessoa = pessoa.cdPessoa
and endereco.id = (select min(id) from pessoaenderecovaentity where cdempresa = endereco.cdempresa and cdpessoa = endereco.cdpessoa)
LEFT join
ETLCidade im
on im.codCidade = endereco.cdMunicipio
INNER JOIN
vpesconsultavaentity vpc
on vpc.cdpessoa = pessoa.cdpessoa
INNER JOIN
pessoajuridicavaentity pj
on pj.cdempresa = pessoa.cdempresa and pj.cdpessoa = pessoa.cdpessoa
where vpc.incliente = 'TRUE'
and coalesce(
(select cpfcnpj from
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = pessoa.cdempresa and pf.cdpessoa = pessoa.cdpessoa
union all
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = pessoa.cdempresa and pj.cdpessoa = pessoa.cdpessoa
) cnpj limit 1), '') <> ''
AND ((UPPER(coalesce(pessoa.nmPessoa||'('||pessoa.cdpessoa||')','')) like UPPER(:p1))
OR (UPPER(coalesce(pessoa.nrcpfcnpj,'')) LIKE UPPER(:p1))
OR (UPPER(coalesce(im.nome,'')) LIKE UPPER(:p1))
OR (UPPER(coalesce(endereco.ufsigla,'')) LIKE UPPER(:p1))
OR (UPPER(coalesce(pj.nmfantasia,'')) LIKE UPPER(:p1))
OR (UPPER(coalesce(endereco.cdcep,'')) LIKE UPPER(:p1))
OR :p1 IS NULL)
</code></pre>

h2. CRM - Pesquisa Avançada

Documentação: [[CRM#Pesquisa-Avançada|Pesquisa Avançada]]

<pre><code class="sql">
SELECT
coalesce(pessoa.nrcpfcnpj,'') as cnpjCpf
, coalesce(pessoa.nmPessoa||'('||pessoa.cdpessoa||')','') as nome
, coalesce(im.nome,'') as cidade
, coalesce(endereco.ufsigla,'') as estado
, coalesce(pessoa.cdpessoa) as codCliente
, coalesce(pj.nmfantasia,'') as nomeFantasia
, coalesce(endereco.cdcep,'') as cep
FROM pessoavaEntity pessoa
INNER JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = pessoa.cdEmpresa
AND endereco.cdPessoa = pessoa.cdPessoa
and endereco.id = (select min(id) from pessoaenderecovaentity where cdempresa = endereco.cdempresa and cdpessoa = endereco.cdpessoa)
LEFT join
ETLCidade im
on im.codCidade = endereco.cdMunicipio
INNER JOIN
vpesconsultavaentity vpc
on vpc.cdpessoa = pessoa.cdpessoa
INNER JOIN
pessoajuridicavaentity pj
on pj.cdempresa = pessoa.cdempresa and pj.cdpessoa = pessoa.cdpessoa
where vpc.incliente = 'TRUE'
and coalesce(
(select cpfcnpj from
(select pf.nrcpf as cpfCnpj from pessoafisicavaentity pf where pf.cdempresa = pessoa.cdempresa and pf.cdpessoa = pessoa.cdpessoa
union all
select pj.nrcnpj as cpfCnpj from pessoajuridicavaentity pj where pj.cdempresa = pessoa.cdempresa and pj.cdpessoa = pessoa.cdpessoa
) cnpj limit 1), '') <> ''
AND (
((UPPER(coalesce(pessoa.nmPessoa||'('||pessoa.cdpessoa||')','')) like UPPER(:p1)) OR (:p1 is null))
AND ((UPPER(coalesce(pj.nmfantasia,'')) LIKE UPPER(:p2)) OR (:p2 is null))
AND ((UPPER(coalesce(im.nome,'')) LIKE UPPER(:p3)) OR (:p3 is null))
AND ((UPPER(coalesce(endereco.ufsigla,'')) LIKE UPPER(:p4)) OR (:p4 is null))
AND ((UPPER(coalesce(pessoa.nrcpfcnpj,'')) LIKE UPPER(:p5)) OR (:p5 is null))
AND ((UPPER(coalesce(pessoa.cdpessoa,'')) LIKE UPPER(:p6)) OR (:p6 is null))
)
</code></pre>

h2. CRM - Lista de Pedidos do Cliente

Documentação: [[CRM#Lista-de-Pedidos-do-Cliente|Lista de Pedidos do Cliente]]

<pre><code class="sql">
SELECT
'1' as codEmpresa
, v.cdpedido as codPedido
, cast(v.dtpedido as date) as dataEmissao
, cast(v.dtprevbaixa as date) as dataPrevFat
, CASE v.tpSituacao
WHEN 4 THEN 'ATENDIDO'
WHEN 6 THEN 'CANCELADO'
WHEN 1 THEN 'EM ANDAMENTO'
WHEN 2 THEN 'LIBERADO PARA FATURAMENTO'
WHEN 3 THEN 'PARCIALMENTE ATENDIDO'
WHEN 5 THEN 'BLOQUEADO'
WHEN 7 THEN 'EM COMPOSIÇÃO'
WHEN 8 THEN 'EM ANÁLISE' ELSE 'OUTRA SITUAÇÃO'
END as situacaoEdt
, SUM(round(cast ((vi.qtsolicitada - vi.qtcancelada) * vi.vlunitario as numeric) ,4)) as valorTotalBruto
, SUM(round(cast (((vi.qtsolicitada - vi.qtcancelada) * vi.vlunitario) * (((100 - vi.prdesconto) / 100) * ((100 - v.prdesconto) / 100)) as numeric), 2)) as valorTotalLiquido
, SUM((vi.qtSolicitada + vi.qtextra - vi.qtatendida - vi.qtcancelada) * vi.vlUnitario) as valorSaldo
, v.cdcliente as codCliente
, p.nmpessoa as nomeCliente
FROM vendavaentity v
left join
vendaitemvaentity vi
on v.cdempresa = vi.cdempresa
and v.cdpedido = vi.cdpedido
left join
pessoavaentity p
on p.cdpessoa = v.cdcliente
left join
vpesconsultavaentity vpc
on vpc.cdpessoa = p.cdpessoa
left join
vendaclassificacaovaentity tipoPed
on v.cdEmpresa = tipoPed.cdempresa
and v.cdpedido = tipoPed.cdpedido
and tipoPed.cdtipoclass = 3
where v.tpsituacao not in (6)
AND v.cdEmpresa = '1'
AND p.nrCpfcnpj = :p1
and vpc.incliente = 'TRUE'
group by
v.cdEmpresa
, v.cdpedido
, v.dtpedido
, v.dtprevbaixa
, v.tpSituacao
, v.cdcliente
, p.nmpessoa
</code></pre>

h2. CRM - Pedido - Detalhado

Documentação: [[CRM#Pedido-Detalhado|Pedido - Detalhado]]

<pre><code class="sql">
SELECT
cast(v.dtpedido as date) as dataEmissao
, cast(v.dtprevbaixa as date) as dataPrevFaturamento
, CASE v.tpSituacao
WHEN 4 THEN 'ATENDIDO'
WHEN 6 THEN 'CANCELADO'
WHEN 1 THEN 'EM ANDAMENTO'
WHEN 2 THEN 'LIBERADO PARA FATURAMENTO'
WHEN 3 THEN 'PARCIALMENTE ATENDIDO'
WHEN 5 THEN 'BLOQUEADO'
WHEN 7 THEN 'EM COMPOSIÇÃO'
WHEN 8 THEN 'EM ANÁLISE' ELSE 'OUTRA SITUAÇÃO'
END as situacaoEdt
, p.nrCpfcnpj as cnpjCpf
, pj.nrinscestl as inscEstadual
, v.cdcliente as codCliente
, p.nmpessoa as nomeCliente
, im.nome as cidadeCliente
, repres.cdPessoa as codRepres
, repres.nmPessoa as nomeRepres
, v.prcomissaofat + v.prcomissaorec as percComissao
, v.cdTabpreco as tabPreco
, cp.nome as nomeCondVenda
, null as tipoNF
, v.cdTransport as transpDespacho
, v.nmTransport as transpDespNome
, tpFrete as tipoFreteDespacho
, null as transpRedespacho
, null as transpRedespachoNome
, null as tipoFreteRedespacho
, SUM(round(cast ((vi.qtsolicitada - vi.qtcancelada) * vi.vlunitario as numeric) ,4)) as valorTotalBruto
, SUM(round(cast (((vi.qtsolicitada - vi.qtcancelada) * vi.vlunitario) * ((100 - v.prdesconto) / 100) as numeric), 4)) as valorTotalLiquido
, SUM((vi.qtSolicitada + vi.qtextra - vi.qtatendida - vi.qtcancelada) * vi.vlUnitario) as valorSaldo
, null as observacao
, SUM(round(cast (((vi.qtsolicitada - vi.qtcancelada) * vi.vlunitario) - ((vi.qtsolicitada - vi.qtcancelada) * vi.vlunitario) * ((100 - v.prdesconto) / 100) as numeric), 4)) as valorDesconto
, im.siglaUF as uf
, v.prdesconto as percDesconto
, null as tipoPedido
FROM vendavaentity v
Adicionar SQL
LEFT JOIN
vendaitemvaentity vi
on v.cdempresa = vi.cdempresa
and v.cdpedido = vi.cdpedido
LEFT JOIN
pessoavaentity p
on p.cdpessoa = v.cdcliente
LEFT JOIN
pessoajuridicavaentity pj
ON pj.cdEmpresa = p.cdEmpresa
AND pj.cdPessoa = p.cdPessoa
LEFT JOIN
vpesconsultavaentity vpc
on vpc.cdpessoa = p.cdpessoa
LEFT JOIN
PessoaEnderecoVAEntity endereco
ON endereco.cdEmpresa = p.cdEmpresa
AND endereco.cdPessoa = p.cdPessoa
and endereco.id = (select min(id) from pessoaenderecovaentity where cdempresa = endereco.cdempresa and cdpessoa = endereco.cdpessoa)
LEFT JOIN
ETLCidade im
on UPPER(im.siglaUF) = UPPER(endereco.ufsigla)
and ((REPLACE(REPLACE(UPPER(im.nome), ' ', ''), '''', '') = REPLACE(REPLACE(UPPER(endereco.nmmunicipio), ' ', ''), '''', '')) OR (REPLACE(REPLACE(UPPER(im.nome), ' ', ''), '''', 'O') = REPLACE(REPLACE(UPPER(endereco.nmmunicipio), ' ', ''), '''', '')))
LEFT JOIN
PessoaReprClienteVAEntity repCli
ON p.id = repCli.cdPessoa
LEFT JOIN
pessoavaEntity repres
ON v.cdRepresentant = repres.cdPessoa
LEFT JOIN
ETLCondPagto cp
on cp.id = v.cdCondpgto
WHERE v.tpsituacao not in (6)
AND v.cdPedido::varchar = :p2
AND vpc.incliente = 'TRUE'
GROUP BY v.id
, p.id
, pj.id
, im.id
, repres.id
, cp.id
</code></pre>



h2. CRM - Pedido - Itens

Documentação: [[CRM#Pedido-Itens|Pedido - Itens]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Pedido - NFs

Documentação: [[CRM#Pedido-NFs|Pedido - NFs]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Informações Financeiras

Documentação: [[CRM#Informações-Financeiras|Informações Financeiras]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Informações Financeiras por Situação

Documentação: [[CRM#Informações Financeiras por Situação|Informações Financeiras por Situação]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Informações Financeiras - Ocorrências

Documentação: [[CRM#Informações Financeiras - Ocorrências|Informações Financeiras - Ocorrências]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Clientes do Grupo

Documentação: [[CRM#Clientes do Grupo|Clientes do Grupo]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Lista de Pedidos Representante

Documentação: [[CRM#Lista-de-Pedidos-Representante|Lista de Pedidos Representante]]

<pre><code class="sql">
Adicionar SQL
</code></pre>

h2. CRM - Lista de Clientes do Itinerário

Documentação: [[CRM#Lista-de-Clientes-do-Itinerário|Lista de Clientes do Itinerário]]

<pre><code class="sql">
Adicionar SQL
</code></pre>