Perguntas TReport - Totalizadores

Mais
7 anos 7 meses atrás #31135 por Ludinei
Bom dia!

Tentei e pesquisei muito antes de pedir uma ajuda aqui no fórum.

Tenho um relatório baseado em uma instrução SQL (MS SQL Server), que me traz poucos campos mas preciso de 3 totalizadores.

Os campos são Data, Documento, Conta Contábil, Valor de Débito e Crédito. A ordem é por Data e Documento.

Este relatório vai mostrar um bate da contabilidade por documento, ou seja, a somatória das contas de débito e crédito devem ser iguais.

Os totalizadores que preciso são:
Por Documento
Por Data
Geral

Tenho somente o total geral funcionando (se tento colocar outros não compila). Envio abaixo o fonte que construi:

#INCLUDE "Topconn.ch"
#INCLUDE "Protheus.ch"
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma | LCCTBR02 ºAutor ³Ludinei C Maistro º Data ³ 10/09/2016 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Relatorio de Conferencia da Contabilidade. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Empresa º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function LCCTBR02()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Declaracao de variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Private oReport := Nil
Private oSecCab1 := Nil
Private oSecCab2 := Nil
Private oSecCab3 := Nil
Private cPerg := PadR ("LCCTBR02", Len (SX1->X1_GRUPO))
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Criacao e apresentacao das perguntas ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
PutSx1(cPerg,"01","Data Lancto de ?" ,'','',"mv_ch1","D",TamSx3 ("CT2_DATA")[1] ,0,,"G","","CT2","","","mv_par01","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"02","Data Lancto Ate ?" ,'','',"mv_ch2","D",TamSx3 ("CT2_DATA")[1] ,0,,"G","","CT2","","","mv_par02","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"03","Cta Contabil de ?" ,'','',"mv_ch3","C",TamSx3 ("CT2_DEBITO")[1] ,0,,"G","","CT2","","","mv_par03","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"04","Cta Contabil Ate ?" ,'','',"mv_ch4","C",TamSx3 ("CT2_DEBITO")[1] ,0,,"G","","CT2","","","mv_par04","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"05","Documento ?" ,'','',"mv_ch5","C",TamSx3 ("CT2_DOC")[1] ,0,,"G","","CT2","","","mv_par05","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"06","Valor ?" ,'','',"mv_ch6","N",TamSx3 ("CT2_VALOR")[1] ,0,,"G","","CT2","","","mv_par06","","","","","","","","","","","","","","","","")

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicoes/preparacao para impressao ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Pergunte(cPerg,.F.)

oReport:= ReportDef()
oReport:PrintDialog()

Return Nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma | LCCTBR02 ºAutor ³Ludinei C Maistro º Data ³ 10/09/2016 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Definição da estrutura do relatório. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ReportDef()

Local oReport := nil
Local oSection1 := nil
Local oSection2 := nil
Local oSection3 := nil
Local oBreak
Local oFunction

oReport := TReport():New("LCCTBR02","Conferencia de Lancamentos Contabeis",cPerg,{|oReport| PrintReport(oReport)},"Conferencia de Movimentação Contábil.")
oReport:SetPortrait(.T.)
oReport:SetTotalInLine(.F.)

oSection1 := TRSection():New( oReport , "Movimentos Contábeis", {"QRY"}, , .F. , .T. )
TRCell():New( oSection1, "DATA" , "QRY", "DATA" ,"@!", 10,,,,,"Left")

oSection2 := TRSection():New( oReport , "Movimentos Contábeis", {"QRY"}, , .F. , .T. )
TRCell():New( oSection2, "DOC" , "QRY", "DOCUMENTO" ,"", 20,,,,,"Left")

oSection3 := TRSection():New( oReport , "Movimentos Contábeis", {"QRY"}, , .F. , .T. )
TRCell():New( oSection3, "CONTA" , "QRY", "CONTA" ,"", 13,,,,,"Left")
TRCell():New( oSection3, "NOME" , "QRY", "DESCRIÇÃO" ,"", 50,,,,,"Left")
TRCell():New( oSection3, "DEB" , "QRY", "VLR DEBITO" ,"9,999,999.99", 12,,,,,"Right")
TRCell():New( oSection3, "CRED" , "QRY", "VLR CREDITO","9,999,999.99", 12,,,,,"Right")

//"oBreak := TRBreak():New(oSection2,oSection2:Cell("DOC"),"Sub Total")
TRFunction():New(oSection3:Cell("DEB") ,"DEB", "SUM",,,"@E 9,999,999,999",,.F.,.T.)
TRFunction():New(oSection3:Cell("CRED"),"CRED","SUM",,,"@E 9,999,999,999",,.F.,.T.)

//Define a impressão dos totalizadores em colunas
oReport:SetTotalInLine(.F.)

//quebra por seção
oSection1:SetPageBreak(.T.)

oSection1:setPageBreak(.T.)


Return (oReport)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma | LCCTBR02 ºAutor ³Ludinei C Maistro º Data ³ 10/09/2016 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function PrintReport(oReport)

Local cQuery := ""
Local oSection1 := oReport:Section(1)
Local oSection2 := oReport:Section(2)
Local oSection3 := oReport:Section(3)
Local cData := ""
Local cDoc := ""

cQuery := "select DATA, Doc, Conta, NOME, SUM(DEB) AS DEB, SUM(CRED) AS CRED from VW_CT2010_A "
cQuery += "where 1=1 "

if ! empty(MV_PAR01)
cQuery += "and DATA >="+dtos(MV_PAR01)+" "
EndIf

if ! empty(MV_PAR02)
cQuery += "and DATA <="+dtos(MV_PAR02)+" "
EndIf

if ! empty(MV_PAR03)
cQuery += "and Conta >="+MV_PAR03+" "
EndIf

if ! empty(MV_PAR04)
cQuery += "and Conta <="+MV_PAR04+" "
EndIf

if ! empty(MV_PAR05)
cQuery += "and Doc like '%"+alltrim(MV_PAR05)+"%' "
EndIf

if ! empty(MV_PAR06)
cQuery += "and Valor ="+str(MV_PAR06)+" "
EndIf

cQuery += "GROUP BY doc, conta, NOME, data ORDER BY 1,2,5 DESC, 6 DESC"

cQuery := ChangeQuery(cQuery)

If Select("QRY") > 0
Dbselectarea("QRY")
QRY->(DbClosearea())
EndIf

TcQuery cQuery New Alias "QRY"

oReport:SetMeter(QRY->(RecCount()))

while QRY->(!EOF())
if oReport:Cancel()
Exit
endif

oSection1:Init()

oReport:IncMeter()

cData := QRY->DATA

oSection1:Cell("DATA"):SetValue(right(QRY->DATA,2)+"/"+substring(QRY->DATA,5,2)+"/"+LEFT(QRY->DATA,2))
oSection1:PrintLine()

while QRY->DATA=cData

cDoc := QRY->Doc

Osection2:init()
oSection2:Cell("DOC"):SetValue(QRY->DOC)
oSection2:PrintLine()

oSection3:init()

while QRY->DOC=cDoc

oReport:IncMeter()

oSection3:Cell("CONTA"):SetValue(QRY->CONTA)
oSection3:Cell("NOME"):SetValue(QRY->NOME)
oSection3:Cell("DEB"):SetValue(QRY->DEB)
oSection3:Cell("CRED"):SetValue(QRY->CRED)

oSection3:PrintLine()

QRY->(DBSKIP())

enddo

//finalizo a TERCEIRA seção para que seja reiniciada para o proximo registro
oSection3:Finish()
//imprimo uma linha para separar uma NCM de outra
oReport:ThinLine()
//finalizo a SEGUNDA seção

oSection2:Finish()

enddo
//imprimo uma linha para separar uma NCM de outra
oReport:ThinLine()
//finalizo a primeira seção
oSection1:Finish()
enddo

Return Nil


Agradeço qualquer ajuda!

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.100 segundos
Joomla templates by a4joomla