× Linguagem de Programação ADVPL

Perguntas AJUDA TREPORT

Mais
10 anos 7 meses atrás - 10 anos 7 meses atrás #22032 por brunogfx4
AJUDA TREPORT foi criado por brunogfx4
Boa tarde amigos, estou com uma duvida terrivel.Da qual nao estou conseguindo fazer da forma correta
Estou criando uma relatorio no protheus que imprime uma lista de vendas e total de 1 determinado vendedor e depois uma lista com as devolucoes desse vendedor, tanto nas vendas como nas devolucoes tem que ter o TOTAL:
Ele para na linha:

oSection2b:SetParentQuery()
Dizendo o seguinte: Variable is not an object.

VENDAS
CodVendedor Serie Cliente Qnt Valor
001 01 1234 10 100,00
... .. ..... 2 50,00
Total Vendas
12 150

DEVOLUCOES VENDEDOR
CodVendedor Serie Cliente DocEntrada Qnt Valor
001 01 1234 xxxxxxxx 10 200,00
... .. ..... ......... 10 50,00
Total Devolucoes
20 250,00


Abaixo segue o fonte para melhor esclarecimento, se alguem puder me ajudar ficarei muito grato.

========================================================



#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#Include "Report.ch"

/*BEGINDOC
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Exemplo de relatorio usando tReport com duas Section
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ENDDOC*/
user function EXCLIE2()

local oReport
local cPerg := 'EXCLIE'
local cAlias := getNextAlias()

criaSx1(cPerg)
Pergunte(cPerg, .F.)

oReport := reportDef(cAlias, cPerg)

oReport:printDialog()

return

//+
+
//! Função para criação da estrutura do relatório. !
//+
+
Static Function ReportDef(cAlias,cPerg)

local cTitle := "Relatório Vendas e devolucoes"
local cHelp := "Permite gerar relatório de pedidos de venda por cliente."
Local aOrdem := {"Código do vendedor", "Nome do Cliente"}

local oReport
local oSection1
local oSection2
local oBreak1





oReport := TReport():New('EXCLIE',cTitle,cPerg,{|oReport|ReportPrint(oReport,cAlias)},cHelp)
oReport:SetPortrait()

//SUM(D2_ICMSRET) ICMSR,

//Primeira seção
oSection1 := TRSection():New(oReport,"COMISSAO VENDEDOR",{"cAlias"})
TRCell():New(oSection1,"F2_VEND1", "cAlias", "Vendedor" , "" , 03)
TRCell():New(oSection1,"D2_DOC", "cAlias", "Nota" )
TRCell():New(oSection1,"D1_LOJA", "cAlias", "Loja","",02 )
TRCell():New(oSection1,"D2_CLIENTE", "cAlias", "Cliente" )
TRCell():New(oSection1,"A1_NOME", "cAlias", "Nome","",25 )
TRCell():New(oSection1,"F2_EMISSAO", "cAlias", "Emisao" )
TRCell():New(oSection1,"QUANT", "cAlias", "Quantidade" )
TRCell():New(oSection1,"F2_VALMERC", "cAlias", "Valor" )
TRCell():New(oSection1,"A3_COMIS", "cAlias", "Comissao(%)" )
TRCell():New(oSection1,"COMISSAOBRUTO", "cAlias", "Comissao" )
TRCell():New(oSection1,"IRRF", "cAlias", "IRRF" )
TRCell():New(oSection1,"LIQUIDO", "cAlias", "LIQUIDO" )

//IMPRIME TOTAIS VENDAS

oBreak1 := TRBreak():New(oSection1,{|| (cAlias)->(F2_VEND1) },"----TOTAL VENDEDOR----:",.F.)
TRFunction():New(oSection1:Cell("QUANT" ), "TOT1", "SUM", oBreak1,,,, .F., .F.)
TRFunction():New(oSection1:Cell("F2_VALMERC" ), "TOT2", "SUM", oBreak1,,,, .F., .F.)
TRFunction():New(oSection1:Cell("COMISSAOBRUTO" ), "TOT3", "SUM", oBreak1,,,, .F., .F.)
TRFunction():New(oSection1:Cell("IRRF" ), "TOT4", "SUM", oBreak1,,,, .F., .F.)

//INICIA SEGUNDA PARTE - DEVOLUCOES



oSection2 := TRSection():New(oReport,"DEVOLUCAO VENDEDOR",{"SD1","cAlias"})
//TRCell():New(oSection2,"F2_VEND1", "cAlias", "Vendedor" , "" , 03)
TRCell():New(oSection2,"D1_DOC", "cAlias", "Nota" )
TRCell():New(oSection2,"D1_FORNECE", "cAlias", "Loja","",02 )
//TRCell():New(oSection2,"D1_CLIENTE", "cAlias", "Cliente" )
/*TRCell():New(oSection1,"A1_NOME", "cAlias", "Nome","",25 )
TRCell():New(oSection1,"F2_EMISSAO", "cAlias", "Emisao" )
TRCell():New(oSection1,"QUANT", "cAlias", "Quantidade" )
*/


//TRCell():New(oSection1,"A3_NOME", "SA3", "Vendedor")

//TRCell():New(osection1,"ICMSR" ,"QRYSD2","ICMSRET","@E 999,999,999.99")
// osection2:Cell("ICMSR"):SetSize(12)



Return(oReport)


//+
+
//! Rotina para montagem dos dados do relatório. !
//+
+
Static Function ReportPrint(oReport,cAlias)

local oSection1b := oReport:Section(1)
local oSection2b := oReport:Section(1):Section(1)
Local nTot1 := 0
Local cTipo := ""

oSection1b:BeginQuery()

BeginSQL Alias cAlias

SELECT 'S'TIPO,F2_VEND1,D2_DOC, D2_SERIE,D2_CLIENTE,A1_NOME,F2_EMISSAO,SUM(D2_QUANT) QUANT,D1_TIPO,
F2_VALMERC, A3_COMIS,(F2_VALMERC * A3_COMIS/100)
AS COMISSAOBRUTO, (F2_VALMERC * A3_COMIS/100 *0.015) AS IRRF,
(F2_VALMERC * A3_COMIS/100-F2_VALMERC * A3_COMIS/100 *0.015)AS LIQUIDO,
D1_FORNECE,D1_LOJA,D1_EMISSAO,D1_DTDIGIT,D1_FILIAL,D1_DOC ,D1_NFORI,D1_SERIORI ,F2_DOC,SUM(D1_TOTAL) AS TOTAL,SUM(D1_QUANT) D1QUANT
FROM %Table:SD2% SD2
INNER JOIN %Table:SF2% SF2 ON D2_DOC=F2_DOC AND D2_SERIE=F2_SERIE AND D2_FILIAL=D2_FILIAL
INNER JOIN %Table:SA1% SA1 ON D2_CLIENTE=A1_COD
INNER JOIN %Table:SA3% SA3 ON F2_VEND1=A3_COD AND SA3.D_E_L_E_T_<>'*'
LEFT OUTER JOIN %Table:SD1% SD1 ON D1_DOC=D2_NFORI AND SD1.D_E_L_E_T_<>'*'
LEFT OUTER JOIN %Table:SF1% SF1 ON D1_FILIAL = F1_FILIAL AND D1_TIPO=F1_TIPO
WHERE SF2.D_E_L_E_T_=''
AND SD2.D_E_L_E_T_=' '
AND F2_VEND1 BETWEEN %Exp:MV_PAR01% AND %Exp:MV_PAR02% //PARAMETRO VENDEDOR
AND F2_VEND1 <>' '
AND F2_EMISSAO BETWEEN %Exp:MV_PAR03% AND %Exp:MV_PAR04% // PARAMETRO DATA

GROUP BY F2_VEND1,D1_FORNECE,D2_DOC, D2_SERIE,D2_CLIENTE,A1_NOME, F2_EMISSAO,F2_VALMERC,A3_COMIS,D1_LOJA,D1_EMISSAO,D1_DTDIGIT,D1_FILIAL,D1_DOC,D1_TIPO,D1_NFORI,D1_SERIORI,F2_DOC
UNION ALL
SELECT 'E' TIPO, F2_VEND1,D2_DOC, D2_SERIE,D2_CLIENTE,A1_NOME,F2_EMISSAO,SUM(D2_QUANT) QUANT,D1_TIPO,
F2_VALMERC, A3_COMIS,(F2_VALMERC * A3_COMIS/100)
AS COMISSAOBRUTO, (F2_VALMERC * A3_COMIS/100 *0.015) AS IRRF,
(F2_VALMERC * A3_COMIS/100-F2_VALMERC * A3_COMIS/100 *0.015)AS LIQUIDO,
D1_FORNECE,D1_LOJA,D1_EMISSAO,D1_DTDIGIT,D1_FILIAL,D1_DOC,D1_NFORI,D1_SERIORI ,F2_DOC,SUM(D1_TOTAL) AS TOTAL,SUM(D1_QUANT) AS D1QUANT
FROM %Table:SD1% SD1
INNER JOIN %Table:SF1% SF1 ON D1_FILIAL = F1_FILIAL AND D1_DOC = F1_DOC AND D1_SERIE = F1_SERIE AND D1_FORNECE=F1_FORNECE AND D1_LOJA = F1_LOJA AND D1_TIPO = F1_TIPO AND SF1.D_E_L_E_T_ = ''
INNER JOIN %Table:SD2% SD2 ON D1_FILIAL = D2_FILIAL AND D1_NFORI = D2_DOC AND D1_SERIORI = D2_SERIE AND D1_ITEMORI=D2_ITEM AND D1_FORNECE=D2_CLIENTE AND D1_LOJA = D2_LOJA AND SD2.D_E_L_E_T_ = ''
INNER JOIN %Table:SF2% SF2 ON D1_FILIAL = F2_FILIAL AND D1_NFORI = F2_DOC AND D1_SERIORI = F2_SERIE AND D1_FORNECE=F2_CLIENTE AND D1_LOJA = F2_LOJA AND SF2.D_E_L_E_T_ = ''
INNER JOIN %Table:SA1% SA1 ON D2_CLIENTE=A1_COD
INNER JOIN %Table:SA3% SA3 ON F2_VEND1=A3_COD AND SA3.D_E_L_E_T_<>'*'
WHERE SD1.D_E_L_E_T_ = ' '
AND SD1.D1_TIPO = 'D'
AND SD1.D1_DTDIGIT BETWEEN %Exp:MV_PAR03% AND %Exp:MV_PAR04% //PARAMETRO DATA 'DEVOLUCAO'
AND SF2.F2_VEND1 BETWEEN %Exp:MV_PAR01% AND %Exp:MV_PAR02% //PARAMETRO VENDEDOR 'DEVOLUCAO'
AND SF2.F2_VEND1<>' '
GROUP BY F2_VEND1,F2_EMISSAO,D2_CLIENTE,D1_FORNECE,D1_LOJA,D1_EMISSAO,D1_DTDIGIT,D1_FILIAL,D1_DOC,D1_TIPO,D1_NFORI,D1_SERIORI ,F2_DOC,F1_VALBRUT,F2_VALBRUT,D2_DOC,D2_SERIE,A1_NOME,
F2_VALMERC,A3_COMIS
ORDER BY SF2.F2_VEND1


EndSQL

oSection1b:EndQuery()
oSection2b:SetParentQuery()

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

oSection2b:SetParentFilter({|cParam| (cAlias)->D1_TIPO == cParam}, {|| (cAlias)->D1_TIPO})

oSection1b:Print()

return


//+
+
//! Função para criação das perguntas (se não existirem) !
//+
+
static function criaSX1(cPerg)

putSx1(cPerg, '01', 'VENDEDOR DE?' , '', '', 'mv_ch1', 'C', 3 , 0, 0, 'G', '', '' , '', '', 'mv_par01')
putSx1(cPerg, '02', 'VENDEDOR ATÉ?' , '', '', 'mv_ch2', 'C', 3 , 0, 0, 'G', '', '' , '', '', 'mv_par02')
putSx1(cPerg, '03', 'Data de?' , '', '', 'mv_ch3', 'D', 8 , 0, 0, 'G', '', '' , '', '', 'mv_par03')
putSx1(cPerg, '04', 'Data até?' , '', '', 'mv_ch4', 'D', 8 , 0, 0, 'G', '', '' , '', '', 'mv_par04')

return
Ultima edição: 10 anos 7 meses atrás por brunogfx4.

Por favor Acessar ou Registrar para participar da conversa.

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