/* ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±ÉÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±± ±±º Programa º RLDPCC º Autor ºManoel Carlos Juniorº Data ³ º±± ±±ÌÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±± ±±ºDescricao ³ Imprime relatório de despesas por Centro de Custo. º±± ±±º ³ º±± ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±± ±±ºModulo | SIGAFAT | USO | Especifico do SIGAFAT º±± ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±± ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß */ #Include "PROTHEUS.CH" #Include "REPORT.CH" #INCLUDE "FWCOMMAND.CH" User Function RLDPCC() PRIVATE oReport PRIVATE oSection1 PRIVATE oSection2 PRIVATE oBreak PRIVATE cPerg := "RLDPCC" CriaSX1(cPerg) Pergunte(cPerg, .F.) oReport:= MONTREL(cPerg) Return Nil //----------------------------------------------------------------------------------------------------------------// Static Function PrintReport(oReport, cPerg) Local oSection1 := oReport:Section(1) Local oSection2 := oReport:Section(2) Local nOrdem := oSection1:GetOrder() Local oBreak #IFDEF TOP Local QRYSE2 := GetNextAlias() Local cSQL := "" MakeSqlExp(cPerg) If !Empty(mv_Par01) cSQL += "WHERE E2_BAIXA >= '" + DtoS(mv_Par01) + "' " EndIf If !Empty(mv_Par02) cSQL += "AND E2_BAIXA <= '" + DtoS(mv_Par02) + "' " EndIf If !Empty(mv_Par03) cSQL += "AND E2_CCD >= '" + mv_Par03 + "' " EndIf If !Empty(mv_Par04) cSQL += "AND E2_CCD <= '" + mv_Par04 + "' " EndIf If !Empty(mv_Par05) cSQL += "AND E2_NATUREZ >= '" + mv_Par05 + "' " EndIf If !Empty(mv_Par06) cSQL += "AND E2_NATUREZ <= '" + mv_Par06 + "' " EndIf cSQL := "%"+cSQL+"%" BEGIN REPORT QUERY oReport:Section(1) BeginSQL Alias "QRYSE2" SELECT CV4_CCD, E2_CCD, E2_NATUREZ, TPRATEIO,E2_RATEIO,E2_BAIXA, E2_NUM, E2_PARCELA, E2_TIPO, E2_VALOR, E2_FORNECE, E2_LOJA, E2_NOMFOR, CV4_VALOR FROM (SELECT '' CV4_CCD, E2_CCD, E2_NATUREZ,'N' AS TPRATEIO,E2_RATEIO,E2_BAIXA, E2_NUM, E2_PARCELA, E2_TIPO, E2_VALOR, E2_FORNECE, E2_LOJA, E2_NOMFOR, '' CV4_VALOR FROM %Table:SE2% SE2 LEFT JOIN %Table:CV4% ON CV4_SEQUEN = SUBSTRING(E2_ARQRAT,13,10) WHERE E2_RATEIO IN('N') AND E2_TIPO <> 'DNF' AND SE2.%NotDel% UNION SELECT CV4_CCD, '' E2_CCD, E2_NATUREZ, 'S' AS TPRATEIO,E2_RATEIO,E2_BAIXA, E2_NUM, E2_PARCELA, E2_TIPO, '' E2_VALOR, E2_FORNECE, E2_LOJA, E2_NOMFOR, CV4_VALOR FROM %Table:SE2% SE2 LEFT JOIN CV4010 CV4 ON CV4_SEQUEN = SUBSTRING(E2_ARQRAT,13,10) AND CV4.%NotDel% WHERE E2_RATEIO IN('S') AND E2_TIPO <> 'DNF' AND SE2.%NotDel% ) AS DEP_POR_CC %Exp:cSQL% ORDER BY CV4_CCD, E2_CCD,E2_NATUREZ EndSQL /*AutogrLog(GETLASTQUERY()[2]) MostraErro()*/ END REPORT QUERY oReport:Section(1) oReport:Section(1):Section(1):SetParentQuery() oReport:Section(1):Section(1):SetParentFilter({|cNum| QRYSE2 ->E2_NATUREZ == cNum}, {||QRYSE2->E2_NATUREZ}) oReport:Section(1):Print() #ELSE MakeAdvplExpr(cPerg) dbSelectArea("SZ1") dbSetOrder(1) If !Empty(mv_Par01) oReport:Section(1):SetFilter(mv_Par01) // mv_Par01 contem a range de Contas. EndIf oReport:Section(1):Section(1):SetParentFilter({|cCodigo| SZ2->Z2_CODCOR == cCodigo}, {|| SZ1->Z1_CODIGO}) oReport:Section(1):Section(1):SetLineCondition({|| SZ2->Z2_Data >= mv_Par02 .And. SZ2->Z2_Data <= mv_Par03 .And. Z2_Tipo $ IIf(mv_Par04==1,"12",If(mv_Par04==2,"1","2"))}) oReport:Section(1):Print() #ENDIF Return Nil //----------------------------------------------------------------------------------------------------------------// // Parametros que devem ser passados para a função de criação das perguntas no arquivo SX1. //----------------------------------------------------------------------------------------------------------------// // 1o. Parametro -> Nome do grupo // 2o. Parametro -> Numero da ordem // 3o. Parametro -> Texto da pergunta em portugues // 4o. Parametro -> Texto da pergunta em espanhol // 5o. Parametro -> Texto da pergunta em ingles // 6o. Parametro -> Nome da variavel // 7o. Parametro -> Tipo do dado C=caractere, D=Data, N=Numerico // 8o. Parametro -> Tamanho do dado // 9o. Parametro -> Quantidade de casas decimais para o dado // 10o. Parametro -> Numero da pre-selecao // 11o. Parametro -> O tipo do dado sera G=get, S=scroll, C=choice, R=Range // 12o. Parametro -> Sintaxe em advpl, ou funcao para validacao // 13o. Parametro -> Consistencia com alguma tabela do sistema via // 14o. Parametro -> Nome do grupo para SXG // 15o. Parametro -> Pyme // 16o. Parametro -> Nome da variavel que será utilizada no programa // 17o. Parametro -> Primeira definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao // 18o. Parametro -> Primeira definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No // 19o. Parametro -> Primeira definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No // 20o. Parametro -> Conteudo da ultima resposta informada no parametro se caso o tipo do dados for get // 21o. Parametro -> Segunda definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao // 22o. Parametro -> Segunda definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No // 23o. Parametro -> Segunda definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No // 24o. Parametro -> Terceira definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao // 25o. Parametro -> Terceira definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No // 26o. Parametro -> Terceira definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No // 27o. Parametro -> Quarta definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao // 28o. Parametro -> Quarta definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No // 29o. Parametro -> Quarta definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No // 30o. Parametro -> Quinta definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao // 31o. Parametro -> Quinta definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No // 32o. Parametro -> Quinta definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No // 33o. Parametro -> Vetor com o texto do help em portugues // 34o. Parametro -> Vetor com o texto do help em espanhol // 35o. Parametro -> Vetor com o texto do help em ingles // 36o. Parametro -> Nome do grupo do help Static Function CriaSX1(cPerg) Local aHelp := {} // Texto do help em português , inglês, espanhol AAdd(aHelp, {{"Informe o Data da Baixa " }, {""}, {""}}) AAdd(aHelp, {{"Informe o Data da Baixa " }, {""}, {""}}) AAdd(aHelp, {{"Informe o Centro de Custo" }, {""}, {""}}) AAdd(aHelp, {{"Informe o Centro de Custo" }, {""}, {""}}) AAdd(aHelp, {{"Informe a Natureza Financeira " }, {""}, {""}}) AAdd(aHelp, {{"Informe a Natureza Financeira " }, {""}, {""}}) // 1o 2o 3o 4 5 6o 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 PutSX1(cPerg,"01","Baixa de" ,"","","mv_ch1","D",08,00,00,"G","","","","","mv_Par01","","","","","","","","","","","","","","","","",aHelp[1,1],aHelp[1,2],aHelp[1,3],"") PutSX1(cPerg,"02","Baixa Até" ,"","","mv_ch2","D",08,00,00,"G","","","","","mv_Par02","","","","","","","","","","","","","","","","",aHelp[2,1],aHelp[2,2],aHelp[2,3],"") PutSX1(cPerg,"03","De C.de Custo","","","mv_ch3","C",09,00,00,"G","","CTT","","","mv_Par03","","","","","","","","","","","","","","","","",aHelp[3,1],aHelp[3,2],aHelp[3,3],"") PutSX1(cPerg,"04","Até C.de Custo","","","mv_ch4","C",09,00,00,"G","","CTT","","","mv_Par04","","","","","","","","","","","","","","","","",aHelp[4,1],aHelp[4,2],aHelp[4,3],"") PutSX1(cPerg,"05","De N.Financeira","","","mv_ch5","C",10,00,00,"G","","","","","mv_Par05","","","","","","","","","","","","","","","","",aHelp[5,1],aHelp[5,2],aHelp[5,3],"") PutSX1(cPerg,"06","Até N.Financeira","","","mv_ch6","C",10,00,00,"G","","","","","mv_Par06","","","","","","","","","","","","","","","","",aHelp[6,1],aHelp[6,2],aHelp[6,3],"") Return Static Function MONTREL(cPerg) DEFINE REPORT oReport NAME "RLDPCC" TITLE "Relatório de Despesa por Centro de Custo de " +DTOC(mv_Par01)+ " até "+ DTOC(mv_Par02) PARAMETER cPerg ACTION {|oReport| PrintReport(oReport, cPerg)} DEFINE SECTION oSection1 OF oReport TITLE "Cabeçalho" TABLES "SE2" TRCell():New(oSection1,"CV4_CCD","CV4","Centro de Custo",,,,{|| iif(QRYSE2 -> E2_RATEIO = 'N',QRYSE2 -> E2_CCD ,iif( QRYSE2 -> E2_RATEIO = 'S',QRYSE2 -> CV4_CCD,"Reter Equipamento"))},,,,,,,,,,,.F.) TRCell():New(oSection1,"E2_NATUREZ","SE2","Natureza Financeira",,,,,,,,,,,,,,,.F.) //Endif DEFINE SECTION oSection2 OF oSection1 TITLE "Ítens" TABLE "SE2" TRCell():New(oSection2,"E2_NUM","SE2","Títulos Baixados",,,,,,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_PARCELA","SE2","Parcela",,,,,,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_TIPO","SE2","Tipo",,,,,,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_VALOR","SE2","Valor ",,,,{|| iif(QRYSE2 -> E2_RATEIO = 'N',QRYSE2 -> E2_VALOR ,iif( QRYSE2 -> E2_RATEIO = 'S',QRYSE2 -> CV4_VALOR,"Reter Equipamento"))},,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_BAIXA","SE2","Baixa",,,,,,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_FORNECE","SE2","Fornecedor",,,,,,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_LOJA","SE2","Loja",,,,,,,,,,,,,,,.F.) TRCell():New(oSection2,"E2_NOMFOR","SE2","Nome",,,,,,,,,,,,,,,.F.) // oBreak + Contadores oBreakCli := TRBREAK():New(oSection1,oSection1:Cell("CV4_CCD"),,) TRFunction():New(oSection2:Cell("E2_VALOR"),"Total","SUM", oBreakCli, " Total" ,"@E 9,999,999,999.99",,.F.,.T.) //TRFunction():New(oSection2:Cell("E2_VALOR"),"Total Geral","SUM",,,"@E 9,999,999,999.99",,.F.,.T.) //oBreakCli := TRBREAK():New(oSection1,oSection1:Cell("CV4_CCD"),"Centro de Custo") //oBreakCli:OnPrintTotal( { || oReport:EndPage() }) oReport:EndPage() oReport:SetPortrait(.T.) oReport :PrintDialog() Return Nil