Ir para conteúdo
Fórum Script Brasil
  • 0

Query com Union


leo.bolsoni

Pergunta

Bom dia Pessoal!
Estou trabalhando em um relátorio do Crystal e estou precisando incluir um campo de uma tabela que não está presente no relatorio.

Pelo que andei lendo, o UNION requer que exista a mesma quantidade e tipo dos campos, mas mesmo assim me gera um erro informando que as colunas devem ser do mesmo tipo.

Segue abaixo a query. A tabela que estou adicionando é a CONHECIMENTO_NOTAFISCAL 

 

SELECT       retorno.*,
      grupo.nome AS nomegrupo,
      empresa.nome AS nomeempresa,
      filial.apelido AS apelidofilial,
      unidade.descricao AS descricaounidade,
      COALESCE(tipodocumento.identificacaolivrofiscal,'') AS tipodoc,
      COALESCE(cad_remetente.razaosocial,'') AS remetenterazao,
      COALESCE(cad_destinatario.razaosocial,'') AS destinatariorazao,
      COALESCE(cad_pagadorfrete.razaosocial,'') AS pagadorfreterazao,
                   (COALESCE(cad_pagadorfrete.razaosocial,'')||retorno.cnpjcpfcodigopagadorfrete)::varchar AS grupopagador,
      fatura_composicao.filial AS faturafilial,
      fatura_composicao.unidade AS faturaunidade,
      fatura.numero AS numerofatura,
      (fatura.numero::TEXT||'/'||fatura.filial::TEXT||'/'||fatura.unidade::TEXT)::VARCHAR AS numerofaturaformatado,
      fatura.dtprevisaopagamento,
      fatura_pagamento.dtpagamento,
      fatura.valorimpressao,
                   fatura.valorsaldoreceber,
      fatura.observacao,
                   ( (CASE WHEN retorno.pagadorfrete = 1 THEN 'Remetente'
                              WHEN retorno.pagadorfrete = 2 THEN 'Destinatário'
                              WHEN retorno.pagadorfrete = 3 THEN 'Consignatário'
                              WHEN retorno.pagadorfrete = 4 THEN 'Redespacho'
                      END) )::VARCHAR AS pagadorfretetipo

FROM (
SELECT 
      conhecimento.grupo,
      conhecimento.empresa,
      conhecimento.filial,
      conhecimento.unidade,
      '' AS cnpjcpfcodigoemissor,
      conhecimento.diferenciadornumero,
      conhecimento.serie,
      conhecimento.numero,
      conhecimento.dtemissao::date AS dtemissao,
      conhecimento.tipodocumento,
      conhecimento.remetente,
      conhecimento.destinatario,
      conhecimento.cnpjcpfcodigopagadorfrete,
                                (SUBSTR(conhecimento.cnpjcpfcodigopagadorfrete,1,8))::varchar AS cnpjpagadorradical,
      conhecimento.pagadorfrete,
      conhecimento.valortotalprestacao,
      conhecimento.numero::VARCHAR AS numerodocumentomostrado
FROM conhecimento

JOIN fatura_composicao ON fatura_composicao.tipodocumentoorigem = conhecimento.tipodocumento
AND fatura_composicao.grupodocumentoorigem = conhecimento.grupo
AND fatura_composicao.empresadocumentoorigem = conhecimento.empresa
AND fatura_composicao.filialdocumentoorigem = conhecimento.filial
AND fatura_composicao.unidadedocumentoorigem = conhecimento.unidade
AND fatura_composicao.diferenciadornumerodocumentoorigem = conhecimento.diferenciadornumero
AND fatura_composicao.seriedocumentoorigem = conhecimento.serie
AND fatura_composicao.numerosequenciadocumentoorigem = conhecimento.numero

JOIN fatura ON fatura.grupo = fatura_composicao.grupo
AND fatura.empresa = fatura_composicao.empresa
AND fatura.filial = fatura_composicao.filial
AND fatura.unidade = fatura_composicao.unidade
AND fatura.sequencia = fatura_composicao.sequencia

LEFT OUTER JOIN fatura_pagamento ON fatura_pagamento.grupo = fatura_composicao.grupo
AND fatura_pagamento.empresa = fatura_composicao.empresa
AND fatura_pagamento.filial = fatura_composicao.filial
AND fatura_pagamento.unidade = fatura_composicao.unidade
AND fatura_pagamento.sequencia = fatura_composicao.sequencia
AND fatura_pagamento.sequenciapagamento =  (SELECT fatura_contabilizacao.sequenciafaturapagamento FROM fatura_contabilizacao 
                                                                                WHERE fatura_contabilizacao.grupo = fatura_composicao.grupo
                                                                                AND fatura_contabilizacao.empresa = fatura_composicao.empresa
                                                                                AND fatura_contabilizacao.filial = fatura_composicao.filial
                                                                                AND fatura_contabilizacao.unidade = fatura_composicao.unidade
                                                                                AND fatura_contabilizacao.sequencia = fatura_composicao.sequencia
                                                                                AND fatura_contabilizacao.sequenciafaturacomposicao = fatura_composicao.sequenciacomposicao 
order by fatura_contabilizacao.sequenciacontabilizacao desc   
                                                                                LIMIT 1)

WHERE conhecimento.grupo = {?Grupo}
AND conhecimento.empresa = {?Empresa}
AND ({?Filial} = 0 OR conhecimento.filial = {?Filial})
AND ({?Unidade} = 0 OR conhecimento.unidade = {?Unidade})
AND (CASE WHEN '{?Status}' = 'Emitidos - Documentos' THEN 
(conhecimento.dtemissao::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Faturados Pagos' THEN 
(fatura_pagamento.dtpagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Abertos Não Faturados' THEN
(fatura.dtvencimento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   ELSE
(fatura.dtprevisaopagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
END)
AND (CASE WHEN '{?Radical}' = 'Sim' AND '{?CnpjCpfCodigo}' <> '' 
                              THEN SUBSTR(conhecimento.cnpjcpfcodigopagadorfrete,1,8) = SUBSTR('{?CnpjCpfCodigo}',1,8)
                   ELSE 
                               ('{?CnpjCpfCodigo}' = '' OR conhecimento.cnpjcpfcodigopagadorfrete = '{?CnpjCpfCodigo}')
                   END)
AND conhecimento.dtcancelamento IS NULL
AND conhecimento.numero < 1000000
AND conhecimento.tipo in(1,4)
AND (conhecimento.emissaoeletronica = 2 OR (conhecimento.emissaoeletronica = 1 AND conhecimento.situacaocte = 3))

UNION ALL

SELECT 
      recibo.grupo,
      recibo.empresa,
      recibo.filial,
      recibo.unidade,
      '' AS cnpjcpfcodigoemissor,
      recibo.diferenciadornumero,
      recibo.serie,
      recibo.numero,
      recibo.dtemissao::date AS dtemissao,
      recibo.tipodocumento,
      recibo.remetente,
      recibo.destinatario,
      recibo.cnpjcpfcodigopagadorfrete,
                                (SUBSTR(recibo.cnpjcpfcodigopagadorfrete,1,8))::varchar AS cnpjpagadorradical,
      recibo.pagadorfrete,
      recibo.valortotalprestacao,
      recibo.numero::VARCHAR AS numerodocumentomostrado
FROM recibo

JOIN fatura_composicao ON fatura_composicao.tipodocumentoorigem = recibo.tipodocumento
AND fatura_composicao.grupodocumentoorigem = recibo.grupo
AND fatura_composicao.empresadocumentoorigem = recibo.empresa
AND fatura_composicao.filialdocumentoorigem = recibo.filial
AND fatura_composicao.unidadedocumentoorigem = recibo.unidade
AND fatura_composicao.diferenciadornumerodocumentoorigem = recibo.diferenciadornumero
AND fatura_composicao.seriedocumentoorigem = recibo.serie
AND fatura_composicao.numerosequenciadocumentoorigem = recibo.numero

JOIN fatura ON fatura.grupo = fatura_composicao.grupo
AND fatura.empresa = fatura_composicao.empresa
AND fatura.filial = fatura_composicao.filial
AND fatura.unidade = fatura_composicao.unidade
AND fatura.sequencia = fatura_composicao.sequencia

LEFT OUTER JOIN fatura_pagamento ON fatura_pagamento.grupo = fatura_composicao.grupo
AND fatura_pagamento.empresa = fatura_composicao.empresa
AND fatura_pagamento.filial = fatura_composicao.filial
AND fatura_pagamento.unidade = fatura_composicao.unidade
AND fatura_pagamento.sequencia = fatura_composicao.sequencia
AND fatura_pagamento.sequenciapagamento =  (SELECT fatura_contabilizacao.sequenciafaturapagamento FROM fatura_contabilizacao 
                                                                                WHERE fatura_contabilizacao.grupo = fatura_composicao.grupo
                                                                                AND fatura_contabilizacao.empresa = fatura_composicao.empresa
                                                                                AND fatura_contabilizacao.filial = fatura_composicao.filial
                                                                                AND fatura_contabilizacao.unidade = fatura_composicao.unidade
                                                                                AND fatura_contabilizacao.sequencia = fatura_composicao.sequencia
                                                                                AND fatura_contabilizacao.sequenciafaturacomposicao = fatura_composicao.sequenciacomposicao 
order by fatura_contabilizacao.sequenciacontabilizacao desc   
                                                                                LIMIT 1)

WHERE recibo.grupo = {?Grupo}
AND recibo.empresa = {?Empresa}
AND ({?Filial} = 0 OR recibo.filial = {?Filial})
AND ({?Unidade} = 0 OR recibo.unidade = {?Unidade})
AND (CASE WHEN '{?Status}' = 'Emitidos - Documentos' THEN 
(recibo.dtemissao::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Faturados Pagos' THEN 
(fatura_pagamento.dtpagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Abertos Não Faturados' THEN
(fatura.dtvencimento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   ELSE
(fatura.dtprevisaopagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
END)

AND (CASE WHEN '{?Radical}' = 'Sim' AND '{?CnpjCpfCodigo}' <> '' 
                              THEN SUBSTR(recibo.cnpjcpfcodigopagadorfrete,1,8) = SUBSTR('{?CnpjCpfCodigo}',1,8)
                   ELSE
                              ('{?CnpjCpfCodigo}' = '' OR recibo.cnpjcpfcodigopagadorfrete = '{?CnpjCpfCodigo}')
                   END)
AND recibo.dtcancelamento IS NULL
AND recibo.numero < 1000000

UNION ALL

SELECT
     conhecimento_notafiscal.grupo,
     conhecimento_notafiscal.empresa,
     conhecimento_notafiscal.filial,
     conhecimento_notafiscal.unidade,
      '' AS cnpjcpfcodigoemissor,
      conhecimento_notafiscal.diferenciadornumero,
      conhecimento_notafiscal.serie,
      conhecimento_notafiscal.numero,
      conhecimento_notafiscal.dtemissao::date AS dtemissao,

conhecimento_notafiscal.dtalt,
conhecimento_notafiscal.dtchegada,
conhecimento_notafiscal.numero as conhecimento,

conhecimento_notafiscal.cnpjcpfcodigoemissor,
                                (SUBSTR(conhecimento_notafiscal.cnpjcpfcodigoemissor,1,8))::varchar AS cnpjemissorradical,

conhecimento_notafiscal.dtinc,
conhecimento_notafiscal.modelo,
conhecimento_notafiscal.dtentrega,
     conhecimento_notafiscal.numeronotafiscal::VARCHAR AS notafiscal


FROM conhecimento_notafiscal

JOIN fatura_composicao ON fatura_composicao.grupodocumentoorigem = conhecimento_notafiscal.grupo
AND fatura_composicao.empresadocumentoorigem = conhecimento_notafiscal.empresa
AND fatura_composicao.filialdocumentoorigem = conhecimento_notafiscal.filial
AND fatura_composicao.unidadedocumentoorigem = conhecimento_notafiscal.unidade
AND fatura_composicao.diferenciadornumerodocumentoorigem = conhecimento_notafiscal.diferenciadornumero
AND fatura_composicao.seriedocumentoorigem = conhecimento_notafiscal.serie
AND fatura_composicao.numerosequenciadocumentoorigem = conhecimento_notafiscal.numero

JOIN fatura ON fatura.grupo = fatura_composicao.grupo
AND fatura.empresa = fatura_composicao.empresa
AND fatura.filial = fatura_composicao.filial
AND fatura.unidade = fatura_composicao.unidade
AND fatura.sequencia = fatura_composicao.sequencia

LEFT OUTER JOIN fatura_pagamento ON fatura_pagamento.grupo = fatura_composicao.grupo
AND fatura_pagamento.empresa = fatura_composicao.empresa
AND fatura_pagamento.filial = fatura_composicao.filial
AND fatura_pagamento.unidade = fatura_composicao.unidade
AND fatura_pagamento.sequencia = fatura_composicao.sequencia
AND fatura_pagamento.sequenciapagamento =  (SELECT fatura_contabilizacao.sequenciafaturapagamento FROM fatura_contabilizacao 
                                                                                WHERE fatura_contabilizacao.grupo = fatura_composicao.grupo
                                                                                AND fatura_contabilizacao.empresa = fatura_composicao.empresa
                                                                                AND fatura_contabilizacao.filial = fatura_composicao.filial
                                                                                AND fatura_contabilizacao.unidade = fatura_composicao.unidade
                                                                                AND fatura_contabilizacao.sequencia = fatura_composicao.sequencia
                                                                                AND fatura_contabilizacao.sequenciafaturacomposicao = fatura_composicao.sequenciacomposicao 
order by fatura_contabilizacao.sequenciacontabilizacao desc   
                                                                                LIMIT 1)

WHERE conhecimento_notafiscal.grupo = {?Grupo}
AND conhecimento_notafiscal.empresa = {?Empresa}
AND ({?Filial} = 0 OR conhecimento_notafiscal.filial = {?Filial})
AND ({?Unidade} = 0 OR conhecimento_notafiscal.unidade = {?Unidade})
AND (CASE WHEN '{?Status}' = 'Emitidos - Documentos' THEN 
(conhecimento_notafiscal.dtemissao::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Faturados Pagos' THEN 
(fatura_pagamento.dtpagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Abertos Não Faturados' THEN
(fatura.dtvencimento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   ELSE
(fatura.dtprevisaopagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
END)

AND (CASE WHEN '{?Radical}' = 'Sim' AND '{?CnpjCpfCodigo}' <> '' 
                              THEN SUBSTR(conhecimento_notafiscal.cnpjcpfcodigoemissor,1,8) = SUBSTR('{?CnpjCpfCodigo}',1,8)
                   ELSE
                              ('{?CnpjCpfCodigo}' = '' OR conhecimento_notafiscal.cnpjcpfcodigoemissor = '{?CnpjCpfCodigo}')
                   END)
AND Conhecimento_notafiscal.dtchegada IS NOT NULL
AND conhecimento_notafiscal.numero < 1000000

UNION ALL

SELECT 
      notafiscalservico.grupo,
      notafiscalservico.empresa,
      notafiscalservico.filial,
      notafiscalservico.unidade,
      ''::VARCHAR AS cnpjcpfcodigoemissor,
      notafiscalservico.diferenciadornumero,
      notafiscalservico.serie,
      notafiscalservico.numero,
      notafiscalservico.dtemissao::date AS dtemissao,
      notafiscalservico.tipodocumento,    
      notafiscalservico_calculofrete.remetente,
      notafiscalservico_calculofrete.destinatario,
      notafiscalservico.cnpjcpfcodigo AS cnpjcpfcodigopagadorfrete,
                                (SUBSTR(notafiscalservico.cnpjcpfcodigo,1,8))::varchar AS cnpjpagadorradical,
                                (CASE WHEN notafiscalservico.cnpjcpfcodigo = notafiscalservico_calculofrete.remetente THEN 1
                                           WHEN notafiscalservico.cnpjcpfcodigo = notafiscalservico_calculofrete.destinatario THEN 2
                                           WHEN notafiscalservico.cnpjcpfcodigo = notafiscalservico_calculofrete.consignatario THEN 3
                                           ELSE 1
                                END) AS pagadorfrete,
      notafiscalservico.valortotalliquido,
(CASE WHEN notafiscalservico.numeronfse IS NOT NULL THEN 
   notafiscalservico.numeronfse
ELSE             
   notafiscalservico.numero::VARCHAR
END)::VARCHAR AS numerodocumentomostrado      


FROM notafiscalservico
LEFT JOIN notafiscalservico_calculofrete USING(grupo,empresa,filial,unidade,diferenciadornumero,serie,numero)


JOIN fatura_composicao ON fatura_composicao.tipodocumentoorigem = notafiscalservico.tipodocumento
AND fatura_composicao.grupodocumentoorigem = notafiscalservico.grupo
AND fatura_composicao.empresadocumentoorigem = notafiscalservico.empresa
AND fatura_composicao.filialdocumentoorigem = notafiscalservico.filial
AND fatura_composicao.unidadedocumentoorigem = notafiscalservico.unidade
AND fatura_composicao.diferenciadornumerodocumentoorigem = notafiscalservico.diferenciadornumero
AND fatura_composicao.seriedocumentoorigem = notafiscalservico.serie
AND fatura_composicao.numerosequenciadocumentoorigem = notafiscalservico.numero

JOIN fatura ON fatura.grupo = fatura_composicao.grupo
AND fatura.empresa = fatura_composicao.empresa
AND fatura.filial = fatura_composicao.filial
AND fatura.unidade = fatura_composicao.unidade
AND fatura.sequencia = fatura_composicao.sequencia

LEFT OUTER JOIN fatura_pagamento ON fatura_pagamento.grupo = fatura_composicao.grupo
AND fatura_pagamento.empresa = fatura_composicao.empresa
AND fatura_pagamento.filial = fatura_composicao.filial
AND fatura_pagamento.unidade = fatura_composicao.unidade
AND fatura_pagamento.sequencia = fatura_composicao.sequencia
AND fatura_pagamento.sequenciapagamento =  (SELECT fatura_contabilizacao.sequenciafaturapagamento FROM fatura_contabilizacao 
                                                                                WHERE fatura_contabilizacao.grupo = fatura_composicao.grupo
                                                                                AND fatura_contabilizacao.empresa = fatura_composicao.empresa
                                                                                AND fatura_contabilizacao.filial = fatura_composicao.filial
                                                                                AND fatura_contabilizacao.unidade = fatura_composicao.unidade
                                                                                AND fatura_contabilizacao.sequencia = fatura_composicao.sequencia
                                                                                AND fatura_contabilizacao.sequenciafaturacomposicao = fatura_composicao.sequenciacomposicao 
order by fatura_contabilizacao.sequenciacontabilizacao desc   
                                                                                LIMIT 1)

WHERE notafiscalservico.grupo = {?Grupo}
AND notafiscalservico.empresa = {?Empresa}
AND ({?Filial} = 0 OR notafiscalservico.filial = {?Filial})
AND ({?Unidade} = 0 OR notafiscalservico.unidade = {?Unidade})
AND (CASE WHEN '{?Status}' = 'Emitidos - Documentos' THEN 
(notafiscalservico.dtemissao::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Faturados Pagos' THEN 
(fatura_pagamento.dtpagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Abertos Não Faturados' THEN
(fatura.dtvencimento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   ELSE
(fatura.dtprevisaopagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
END)
AND (CASE WHEN '{?Radical}' = 'Sim' AND '{?CnpjCpfCodigo}' <> '' 
                              THEN SUBSTR(notafiscalservico.cnpjcpfcodigo,1,8) = SUBSTR('{?CnpjCpfCodigo}',1,8)
                   ELSE    
                              ('{?CnpjCpfCodigo}' = '' OR notafiscalservico.cnpjcpfcodigo = '{?CnpjCpfCodigo}')
                   END)
AND notafiscalservico.dtcancelamento IS NULL
AND notafiscalservico.numero < 1000000
AND (notafiscalservico.emissaoeletronica = 2 OR (notafiscalservico.emissaoeletronica = 1 AND notafiscalservico.situacaonfse = 3))

UNION ALL

SELECT 
      redespacho.grupo,
      redespacho.empresa,
      redespacho.filial,
      redespacho.unidade,
      redespacho.cnpjcpfcodigoemissor,
      1 AS diferenciadornumero,
      redespacho.serie,
      redespacho.numero,
      redespacho.dtemissao,
      redespacho.tipodocumento,
      redespacho.remetente,
      redespacho.destinatario,
      redespacho.cnpjcpfcodigopagadorfrete,
                                (SUBSTR(redespacho.cnpjcpfcodigopagadorfrete,1,8))::varchar AS cnpjpagadorradical,
      redespacho.pagadorfrete,
      redespacho.valortotalprestacao,
      redespacho.numero::VARCHAR AS numerodocumentomostrado
FROM redespacho

JOIN fatura_composicao ON fatura_composicao.tipodocumentoorigem = redespacho.tipodocumento
AND fatura_composicao.grupodocumentoorigem = redespacho.grupo
AND fatura_composicao.empresadocumentoorigem = redespacho.empresa
AND fatura_composicao.cnpjcpfcodigoemissordocumentoorigem = redespacho.cnpjcpfcodigoemissor
AND CAST(fatura_composicao.dtemissaodocumentoorigem AS date) = redespacho.dtemissao
AND fatura_composicao.seriedocumentoorigem = redespacho.serie
AND fatura_composicao.numerosequenciadocumentoorigem = redespacho.numero

JOIN fatura ON fatura.grupo = fatura_composicao.grupo
AND fatura.empresa = fatura_composicao.empresa
AND fatura.filial = fatura_composicao.filial
AND fatura.unidade = fatura_composicao.unidade
AND fatura.sequencia = fatura_composicao.sequencia

LEFT OUTER JOIN fatura_pagamento ON fatura_pagamento.grupo = fatura_composicao.grupo
AND fatura_pagamento.empresa = fatura_composicao.empresa
AND fatura_pagamento.filial = fatura_composicao.filial
AND fatura_pagamento.unidade = fatura_composicao.unidade
AND fatura_pagamento.sequencia = fatura_composicao.sequencia
AND fatura_pagamento.sequenciapagamento =  (SELECT fatura_contabilizacao.sequenciafaturapagamento FROM fatura_contabilizacao 
                                                                                WHERE fatura_contabilizacao.grupo = fatura_composicao.grupo
                                                                                AND fatura_contabilizacao.empresa = fatura_composicao.empresa
                                                                                AND fatura_contabilizacao.filial = fatura_composicao.filial
                                                                                AND fatura_contabilizacao.unidade = fatura_composicao.unidade
                                                                                AND fatura_contabilizacao.sequencia = fatura_composicao.sequencia
                                                                                AND fatura_contabilizacao.sequenciafaturacomposicao = fatura_composicao.sequenciacomposicao 
order by fatura_contabilizacao.sequenciacontabilizacao desc   
                                                                                LIMIT 1)

WHERE redespacho.grupo = {?Grupo}
AND redespacho.empresa = {?Empresa}
AND ({?Filial} = 0 OR redespacho.filial = {?Filial})
AND ({?Unidade} = 0 OR redespacho.unidade = {?Unidade})
AND (CASE WHEN '{?Status}' = 'Emitidos - Documentos' THEN 
(redespacho.dtemissao::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Faturados Pagos' THEN 
(fatura_pagamento.dtpagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   WHEN '{?Status}' = 'Abertos Não Faturados' THEN
(fatura.dtvencimento::date BETWEEN {?DataInicial} AND {?DataFinal})
                   ELSE
(fatura.dtprevisaopagamento::date BETWEEN {?DataInicial} AND {?DataFinal})
END)
AND (CASE WHEN '{?Radical}' = 'Sim' AND '{?CnpjCpfCodigo}' <> '' 
                              THEN SUBSTR(redespacho.cnpjcpfcodigopagadorfrete,1,8) = SUBSTR('{?CnpjCpfCodigo}',1,8)
                   ELSE 
                              ('{?CnpjCpfCodigo}' = '' OR redespacho.cnpjcpfcodigopagadorfrete = '{?CnpjCpfCodigo}')
                   END)
AND redespacho.numero < 1000000) retorno

JOIN grupo ON grupo.codigo = retorno.grupo

JOIN empresa ON empresa.grupo = retorno.grupo AND empresa.codigo = retorno.empresa

LEFT OUTER JOIN filial ON filial.grupo = retorno.grupo
AND filial.empresa = retorno.empresa
AND filial.codigo = retorno.filial

LEFT OUTER JOIN unidade ON unidade.grupo = retorno.grupo
AND unidade.empresa = retorno.empresa
AND unidade.filial = retorno.filial
AND unidade.codigo = retorno.unidade

LEFT OUTER JOIN cadastro cad_remetente ON cad_remetente.codigo = retorno.remetente
LEFT OUTER JOIN cadastro cad_destinatario ON cad_destinatario.codigo = retorno.destinatario
LEFT OUTER JOIN cadastro cad_pagadorfrete ON cad_pagadorfrete.codigo = retorno.cnpjcpfcodigopagadorfrete

LEFT OUTER JOIN tipodocumento ON tipodocumento.codigo = retorno.tipodocumento

LEFT OUTER JOIN fatura_composicao ON fatura_composicao.tipodocumentoorigem = retorno.tipodocumento
AND fatura_composicao.grupodocumentoorigem = retorno.grupo
AND fatura_composicao.empresadocumentoorigem = retorno.empresa
AND fatura_composicao.filialdocumentoorigem = retorno.filial
AND fatura_composicao.unidadedocumentoorigem = retorno.unidade
AND (CASE WHEN retorno.tipodocumento = 11 THEN fatura_composicao.cnpjcpfcodigoemissordocumentoorigem = retorno.cnpjcpfcodigoemissor
          ELSE TRUE
     END)
AND (CASE WHEN retorno.tipodocumento <> 11 THEN fatura_composicao.diferenciadornumerodocumentoorigem = retorno.diferenciadornumero
          ELSE TRUE
     END)
AND fatura_composicao.seriedocumentoorigem = retorno.serie
AND fatura_composicao.numerosequenciadocumentoorigem = retorno.numero
AND (CASE WHEN retorno.tipodocumento = 11 THEN fatura_composicao.dtemissaodocumentoorigem::date = retorno.dtemissao
          ELSE TRUE
     END)
     
LEFT OUTER JOIN fatura ON fatura.grupo = fatura_composicao.grupo
AND fatura.empresa = fatura_composicao.empresa
AND fatura.filial = fatura_composicao.filial
AND fatura.unidade = fatura_composicao.unidade
AND fatura.sequencia = fatura_composicao.sequencia

LEFT OUTER JOIN fatura_pagamento ON fatura_pagamento.grupo = fatura_composicao.grupo
AND fatura_pagamento.empresa = fatura_composicao.empresa
AND fatura_pagamento.filial = fatura_composicao.filial
AND fatura_pagamento.unidade = fatura_composicao.unidade
AND fatura_pagamento.sequencia = fatura_composicao.sequencia
AND fatura_pagamento.sequenciapagamento =  (SELECT fatura_contabilizacao.sequenciafaturapagamento FROM fatura_contabilizacao 
                                                                                WHERE fatura_contabilizacao.grupo = fatura_composicao.grupo
                                                                                AND fatura_contabilizacao.empresa = fatura_composicao.empresa
                                                                                AND fatura_contabilizacao.filial = fatura_composicao.filial
                                                                                AND fatura_contabilizacao.unidade = fatura_composicao.unidade
                                                                                AND fatura_contabilizacao.sequencia = fatura_composicao.sequencia
                                                                                AND fatura_contabilizacao.sequenciafaturacomposicao = fatura_composicao.sequenciacomposicao 
order by fatura_contabilizacao.sequenciacontabilizacao desc
                                                                                LIMIT 1)

WHERE
(CASE WHEN '{?Status}' = 'Abertos Não Faturados' THEN
fatura.composicao = 2

WHEN '{?Status}' = 'Faturados Abertos' THEN
fatura.composicao = 1 
AND fatura_composicao.valorpendentecnpjcliente > 0
AND fatura_pagamento.dtpagamento IS NULL

WHEN '{?Status}' = 'Faturados Pagos' THEN
fatura.composicao = 1 
AND fatura_composicao.valorpendentecnpjcliente = 0
AND fatura_pagamento.dtpagamento IS NOT NULL

WHEN '{?Status}' = 'Emitidos - Documentos' THEN 1=1 END)
ORDER BY retorno.numero,
(CASE WHEN '{?Status}' = 'Abertos Não Faturados' THEN fatura.dtvencimento
           WHEN '{?Status}' = 'Faturados Abertos' THEN fatura.dtprevisaopagamento
           WHEN '{?Status}' = 'Faturados Pagos' THEN fatura.dtpagamento
           WHEN '{?Status}' = 'Emitidos - Documentos' THEN retorno.dtemissao
END)

 

 

 

 

Se alguém puder dar alguma dica...

VAleuu!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...