Como gerar relatórios PDF identicos?

7 respostas
Z

Olá pessoal…
Estou com um pequeno problema na correção de um software da empresa.
Este software gera um relatório PDF com com uma quantidade de manutenções atendidas e valor a ser pago mensalmente por elas.
O software antes possuia uma combobox para que fosse selecionado o mês a ser consultado e hoje ele possui 6 jTextFields onde o usuário insere data inicial e data final para a consulta, porém sempre colocando períodos de mês fechado.
Meu problema é que rodando os dois programas ao mesmo tempo os relatórios gerados tem diferença, eles teriam que ser exatos pois foram gerados no mesmo periodo de tempo, mas o que foi recentemente editado gera mais manutenções e consequentemente um maior valor total.
Já fiz diversas análises e testes e não consigo encontrar o problema.
É possível alguém me dar uma dica do que pode estar ocorrendo?

SQL do programa original:

select * from(
/*Acordos*/
select 4 ordem,'C' tipo,nvl('Acordo ' ||  t.codigo_do_acordo || '-' || t.descricao_do_acordo ,'Acordos') descricao,count(*)quantidade,nvl(sum(t.valor_do_acordo),0)valor
from ARADMIN.SAS_Acordos t where t.status = 0 /*Ativo*/  and t.data_inicial between $P!{DATA_INICIAL}  and 
 $P!{DATA_FINAL}  and tipo_do_acordo=0 /*FIXO*/  and  t.codigo_da_credenciada = '$P!{CRED_ID}' group by
nvl('Acordo ' ||  t.codigo_do_acordo || '-' || t.descricao_do_acordo ,'Acordos')
union all

/*Multas*/
select 5 ordem,'D' tipo,'Multas',count(*)quantidade,nvl(sum(t2.valor_de_debito),0)valor
from ARADMIN.SAS_Multas t2 where t2.status = 0 and /*Procede*/ 
t2.registro_da_multa between $P!{DATA_INICIAL} and $P!{DATA_FINAL} and
t2.codcred_='$P!{CRED_ID}'

union all

/*Divergencias*/

select 6 ordem,'C' tipo,'Divergências', count(*)quantidade, nvl(sum(t3.saldo_final),0) valor
from ARADMIN.SAS_Divergencias t3 where t3.codcred_ = '$P!{CRED_ID}' and
t3.registro_da_analise between $P!{DATA_INICIAL} and $P!{DATA_FINAL} and
t3.status=1 /*Analisada*/ 

union all

/*Valor Pagamento*/
Select 1 ordem,'C' tipo,'Valor de Pagamento de Serviço',count(*) quantidade, NVL(sum(t4.VALOR_A_PAGAR),0) valor
from ARADMIN.SAS_OS t4  where t4.REGISTRO_DO_ATENDIMENTO >= $P!{DATA_INICIAL} and  
t4.REGISTRO_DO_ATENDIMENTO <= $P!{DATA_FINAL} and  t4.CODCRED_ = '$P!{CRED_ID}' and  
t4.STATUS in (3,4) and t4.VALOR_A_PAGAR>0

union all

/* Valor Deslocamento*/
Select 2 ordem,'C' tipo,'Valor de Pagamento de Deslocamento', count(*) quantidade,
nvl(sum(t5.VALOR_DESLOCAMENTO),0) valor 
from ARADMIN.SAS_OS t5 where t5.REGISTRO_DO_ATENDIMENTO >= $P!{DATA_INICIAL} and  
t5.REGISTRO_DO_ATENDIMENTO <= $P!{DATA_FINAL} and  t5.CODCRED_ = '$P!{CRED_ID}' and  
t5.STATUS in (3,4) and t5.VALOR_DESLOCAMENTO > 0



union all

/* Valor Adicional Deslocamento*/
select * from(
     Select 
        3 ordem,
        'C' tipo,
        'Valor de Adicional de Deslocamento', 
        count(*) quantidade,
        nvl(sum(t6.VLR_ADICIONAL_DESLOC),0) valor 
        
     from 
            ARADMIN.SAS_OS t6 
     where 
            t6.REGISTRO_DO_ATENDIMENTO >= $P!{DATA_INICIAL}and  
            t6.REGISTRO_DO_ATENDIMENTO <= $P!{DATA_FINAL} and  
            t6.CODCRED_ = '$P!{CRED_ID}'  and  
            t6.STATUS in (3,4) and 
            t6.VLR_ADICIONAL_DESLOC > 0
     ) where quantidade>0
)  
order by ordem

SQL do programa alterado:

select * from(
/*Acordos*/
select 4 ordem,'C' tipo,nvl('Acordo ' ||  t.codigo_do_acordo || '-' || t.descricao_do_acordo ,'Acordos') descricao,count(*)quantidade,nvl(sum(t.valor_do_acordo),0)valor
from ARADMIN.SAS_Acordos t where t.status = 0 /*Ativo*/  and t.data_inicial between $P!{DATA_INICIAL}  and 
 $P!{DATA_FINAL}  and tipo_do_acordo=0 /*FIXO*/  and  t.codigo_da_credenciada = '$P!{CRED_ID}' group by
nvl('Acordo ' ||  t.codigo_do_acordo || '-' || t.descricao_do_acordo ,'Acordos')
union all

/*Multas*/
select 5 ordem,'D' tipo,'Multas',count(*)quantidade,nvl(sum(t2.valor_de_debito),0)valor
from ARADMIN.SAS_Multas t2 where t2.status = 0 and /*Procede*/ 
t2.registro_da_multa between $P!{DATA_INICIAL} and $P!{DATA_FINAL} and
t2.codcred_='$P!{CRED_ID}'

union all

/*Divergencias*/

select 6 ordem,'C' tipo,'Divergências', count(*)quantidade, nvl(sum(t3.saldo_final),0) valor
from ARADMIN.SAS_Divergencias t3 where t3.codcred_ = '$P!{CRED_ID}' and
t3.registro_da_analise between $P!{DATA_INICIAL} and $P!{DATA_FINAL} and
t3.status=1 /*Analisada*/ 

union all

/*Valor Pagamento*/
Select 1 ordem,'C' tipo,'Valor de Pagamento de Serviço',count(*) quantidade, NVL(sum(t4.VALOR_A_PAGAR),0) valor
from ARADMIN.SAS_OS t4  where t4.REGISTRO_DO_ATENDIMENTO >= $P!{DATA_INICIAL} and  
t4.REGISTRO_DO_ATENDIMENTO <= $P!{DATA_FINAL} and  t4.CODCRED_ = '$P!{CRED_ID}' and  
t4.STATUS in (3,4) and t4.VALOR_A_PAGAR>0

union all

/* Valor Deslocamento*/
Select 2 ordem,'C' tipo,'Valor de Pagamento de Deslocamento', count(*) quantidade,
nvl(sum(t5.VALOR_DESLOCAMENTO),0) valor 
from ARADMIN.SAS_OS t5 where t5.REGISTRO_DO_ATENDIMENTO >= $P!{DATA_INICIAL} and  
t5.REGISTRO_DO_ATENDIMENTO <= $P!{DATA_FINAL} and  t5.CODCRED_ = '$P!{CRED_ID}' and  
t5.STATUS in (3,4) and t5.VALOR_DESLOCAMENTO > 0



union all

/* Valor Adicional Deslocamento*/
select * from(
     Select 
        3 ordem,
        'C' tipo,
        'Valor de Adicional de Deslocamento', 
        count(*) quantidade,
        nvl(sum(t6.VLR_ADICIONAL_DESLOC),0) valor 
        
     from 
            ARADMIN.SAS_OS t6 
     where 
            t6.REGISTRO_DO_ATENDIMENTO >= $P!{DATA_INICIAL}and  
            t6.REGISTRO_DO_ATENDIMENTO <= $P!{DATA_FINAL} and  
            t6.CODCRED_ = '$P!{CRED_ID}'  and  
            t6.STATUS in (3,4) and 
            t6.VLR_ADICIONAL_DESLOC > 0
     ) where quantidade>0
)  
order by ordem

7 Respostas

Z

Pessoal, não quero que façam para mim, mas se alguém souber qual é o problema para dar uma dica ou explicação fico grato…

Z

:arrow: Up…

fredferrao

cara vc colou uma tonelada de código ae, fica até cansativo pra ler, quando na minha opniao vc deveria ter colado apenas a instrucao SQL, o que eu nao exerguei!!!

Vc esta usando Banco de Dados???

Z

Putz… foi mal, ficou bem chato para ler mesmo…

Sim… Esse programa usa banco de dados Oracle.

fredferrao

Putz… foi mal, ficou bem chato para ler mesmo…

Sim… Esse programa usa banco de dados Oracle.

entao posta a parte do sql que vc pq deve ser problema do sql de um e de outro relatorio!!

Z

fredferrao:

entao posta a parte do sql que vc pq deve ser problema do sql de um e de outro relatorio!!

Postei as duas partes do SQL lá onde estávam os códigos dos programas… :wink:

Z

:arrow: Up again… :slight_smile:

Criado 8 de maio de 2006
Ultima resposta 23 de mai. de 2006
Respostas 7
Participantes 2