Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #INCLUDE "MATR540.CH"
- #INCLUDE "PROTHEUS.CH"
- #DEFINE STR_PULA Chr(13) + Chr(10)
- User Function zMatr540()
- Local oReport := Nil
- //-- Interface de impressao
- oReport := ReportDef()
- oReport:PrintDialog()
- Return Nil
- Static Function ReportDef()
- Local oReport
- Local oComissaoA
- Local oComissaoS
- Local oDetalhe
- Local oTotal,oGeral
- Local cVend := ""
- Local _nTotalFin := 0 //elg
- Local dVencto := CTOD( "" )
- Local dBaixa := CTOD( "" )
- Local nVlrTitulo := 0
- Local nBasePrt := 0
- Local nComPrt := 0
- Local nValTOtNF := 0
- Local cTipo := ""
- Local cLiquid := ""
- Local aValLiq := {}
- Local nI2 := 0
- Local aLiqProp := {}
- Local nValIR := 0
- Local nTotSemIR := 0
- Local nAc1 := 0
- Local nAc2 := 0
- Local nAc3 := 0
- Local nDecPorc := TamSX3("E3_PORC")[2]
- Local nTamData := Len(DTOC(MsDate()))
- Local lRndIrrf := GetMV("MV_RNDIRF")
- Local cAlias := GetNextAlias()
- oReport := TReport():New("MATR540",STR0025,"MTR540", {|oReport| ReportPrint(oReport,cAlias,oComissaoA,oComissaoS,oDetalhe,oTotal,oGeral)},STR0026)
- oReport:SetLandscape()
- oReport:SetTotalInLine(.F.)
- Pergunte("MTR540",.F.)
- oComissaoA := TRSection():New(oReport,STR0050,{"SE3","SA3"},{STR0046,STR0047},/*Campos do SX3*/,/*Campos do SIX*/)
- oComissaoA:SetTotalInLine(.F.)
- TRCell():New(oComissaoA,"E3_VEND" ,"SE3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| cVend })
- TRCell():New(oComissaoA,"A3_NOME" ,"SA3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| SA3->A3_NOME })
- // Titulos da Comissao
- oDetalhe := TRSection():New(oComissaoA,"Comissão na Emissao",{"SE3","SA3","SA1"},/*{Array com as ordens do}*/,/*Campos do SX3*/,/*Campos do SIX*/)
- oDetalhe:SetTotalInLine(.F.)
- oDetalhe:SetHeaderBreak(.T.)
- TRCell():New(oDetalhe,"E3_EMISSAO" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oDetalhe,"E3_NUM" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| E3_NUM })
- TRCell():New(oDetalhe,"E3_PEDIDO" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oDetalhe,"E3_CODCLI" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oDetalhe,"A1_NOME" ,cAlias,/*Titulo*/,/*Picture*/ ,30 ,/*lPixel*/,{|| Substr(SA1->A1_NOME,1,30) })
- TRCell():New(oDetalhe,"E3_PORC" ,cAlias,STR0032,PesqPict('SE3','E3_PORC') ,TamSx3("E3_PORC" )[1],/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oDetalhe,"E3_DATA" ,cAlias,/*Titulo*/,/*Picture*/ ,nTamData ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oDetalhe,"nValTOtNF" , ,"Total NF",PesqPict('SF2','F2_VALBRUT') ,TamSx3("F2_VALBRUT")[1] ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oDetalhe,"NVLRTITULO" ," ",STR0035,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE" )[1],/*lPixel*/,{|| 5,5 }) //nVlrTitulo })
- TRCell():New(oDetalhe,"NBASEPRT" ," ",STR0036,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE" )[1],/*lPixel*/,{|| nBasePrt })
- TRCell():New(oDetalhe,"NCOMPRT" ," ",STR0038,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS" )[1],/*lPixel*/,{|| nComPrt })
- //TRCell():New(oDetalhe,"E3_BAIEMI" ,cAlias,STR0040,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| Substr(cTipo,1,1) })
- //TRCell():New(oDetalhe,"AJUSTE" ," ",STR0037,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| ""})
- // Titulos de Liquidacao
- oLiquida := TRSection():New(oDetalhe,STR0051,{"SE1","SA1"},/*{Array com as ordens do }*/,/*Campos do SX3*/,/*Campos do SIX*/)
- oLiquida:SetTotalInLine(.F.)
- TRCell():New(oLiquida,"E1_NUMLIQ" ," ",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| cLiquid })
- TRCell():New(oLiquida,"E1_PREFIXO" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"E1_NUM" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"E1_PARCELA" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"E1_TIPO" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"E1_CLIENTE" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"E1_LOJA" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"A1_NREDUZ" ,"SA1",/*Titulo*/ ,/*Picture*/ ,TamSX3("A1_NREDUZ")[1],/*lPixel*/,{|| Substr(SA1->A1_NREDUZ,1,30) })
- TRCell():New(oLiquida,"A1_NOME" ,"SA1",/*Titulo*/ ,/*Picture*/ ,TamSX3("A1_NOME")[1],/*lPixel*/,{|| Substr(SA1->A1_NOME,1,30) })
- TRCell():New(oLiquida,"E1_VALOR" ,"SE1",/*Titulo*/ ,Tm(SE1->E1_VALOR,15,2) ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
- TRCell():New(oLiquida,"NVALLIQ1" ," ",STR0043 ,/*Picture*/ ,nTamData ,/*lPixel*/,{|| aValLiq[nI2,1] })
- TRCell():New(oLiquida,"NVALLIQ2" ," ",STR0044 ,Tm(SE1->E1_VALOR,15,2) ,/*Tamanho*/ ,/*lPixel*/,{|| aValLiq[nI2,2] })
- TRCell():New(oLiquida,"NLIQPROP" ," ",STR0045 ,Tm(SE1->E1_VALOR,15,2) ,/*Tamanho*/ ,/*lPixel*/,{|| aLiqProp[nI2] })
- //-- Secao Totalizadora do Valor do IR e Total (-) IR
- oTotal := TRSection():New(oReport,"",{},/*{Array com as ordens do }*/,/*Campos do SX3*/,/*Campos do SIX*/)
- TRCell():New(oTotal,"TOTALIR" ," ",STR0028,"@E 99,999,999.99",12 ,/*lPixel*/,{|| If(lRndIrrf,Round(nValIR,TamSX3("E2_IRRF")[2]),NoRound(nValIR,TamSX3("E2_IRRF")[2])) })
- TRCell():New(oTotal,"TOTSEMIR" ," ",STR0029,"@E 99,999,999.99",12 ,/*lPixel*/,{|| nTotSemIR })
- //-- TOTAL GERAL
- oGeral := TRSection():New(oTotal,"",{},/*{Array com as ordens do }*/,/*Campos do SX3*/,/*Campos do SIX*/)
- TRCell():New(oGeral, "TXTTOTAL" , "" , STR0052 , , 08 ,/*lPixel*/,{ || "" } )
- TRCell():New(oGeral, "GERAL" , "" , STR0053 , PesqPict('SE3','E3_COMIS') , TamSX3("E3_COMIS")[1] ,/*lPixel*/,/*CodeBlock*/)
- TRCell():New(oGeral, "PERCENT" , "" , STR0054 , PesqPict("SE3","E3_PORC" ) , TamSX3("E3_PORC" )[1] ,/*lPixel*/,/*CodeBlock*/)
- TRCell():New(oGeral, "COMIS" , "" , STR0055 , PesqPict('SE3','E3_COMIS') , TamSX3("E3_COMIS")[1] ,/*lPixel*/,/*CodeBlock*/)
- oComissaoS := TRSection():New(oReport,STR0049,{"SE3","SA3"},{STR0046,STR0047},/*Campos do SX3*/,/*Campos do SIX*/)
- oComissaoS:SetTotalInLine(.F.)
- TRCell():New(oComissaoS,"E3_VEND" ,"SE3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| cVend })
- TRCell():New(oComissaoS,"A3_NOME" ,"SA3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| SA3->A3_NOME })
- TRCell():New(oComissaoS,"TOTALTIT","" ,STR0027 ,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE")[1] ,/*lPixel*/ ,{|| nAc3 })
- TRCell():New(oComissaoS,"E3_BASE" ,cAlias,STR0030 ,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE")[1] ,/*lPixel*/ ,{|| nAc1 })
- TRCell():New(oComissaoS,"E3_PORC" ,cAlias,STR0032 ,PesqPict('SE3','E3_PORC') ,TamSx3("E3_PORC")[1] ,/*lPixel*/ ,{||NoRound((nAc2*100) / nAc1),2})
- TRCell():New(oComissaoS,"E3_COMIS",cAlias,STR0031 ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{|| nAc2 })
- //TRCell():New(oComissaoS,"VALIR" ,"" ,STR0028 ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{|| If(lRndIrrf,Round(nValIR,TamSX3("E2_IRRF")[2]),NoRound(nValIR,TamSX3("E2_IRRF")[2])) })
- //TRCell():New(oComissaoS,"TOTSEMIR","" ,STR0029 ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{||nTotSemIR})
- TRCell():New(oComissaoS,"VALFIN" ,"" ,"Previsao Baixa" ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{|| fSumTiti(_nTotalFin) })
- oReport:Section(1):SetHeaderPage()
- oReport:Section(3):SetHeaderPage()
- oReport:Section(1):Setedit(.T.)
- oReport:Section(1):Section(1):Setedit(.T.)
- oReport:Section(1):Section(1):Section(1):Setedit(.T.)
- oReport:Section(2):Setedit(.F.)
- //Analitico
- oDetalhe:Cell("NVLRTITULO"):SetHeaderAlign("RIGHT")
- oDetalhe:Cell("NBASEPRT"):SetHeaderAlign("RIGHT")
- oDetalhe:Cell("NCOMPRT"):SetHeaderAlign("RIGHT")
- //Sintetico
- oComissaoS:Cell("TOTALTIT"):SetHeaderAlign("RIGHT")
- oComissaoS:Cell("E3_BASE" ):SetHeaderAlign("RIGHT")
- oComissaoS:Cell("E3_COMIS"):SetHeaderAlign("RIGHT")
- //oComissaoS:Cell("VALIR" ):SetHeaderAlign("RIGHT")
- //oComissaoS:Cell("TOTSEMIR"):SetHeaderAlign("RIGHT")
- oComissaoS:Cell("VALFIN" ):SetHeaderAlign("RIGHT")
- //IR
- oTotal:Cell("TOTALIR"):SetHeaderAlign("RIGHT")
- oTotal:Cell("TOTSEMIR"):SetHeaderAlign("RIGHT")
- //TOTAL GERAL
- oGeral:Cell("TXTTOTAL"):SetHeaderAlign("RIGHT")
- oGeral:Cell("GERAL" ):SetHeaderAlign("RIGHT")
- oGeral:Cell("PERCENT" ):SetHeaderAlign("RIGHT")
- oGeral:Cell("COMIS" ):SetHeaderAlign("RIGHT")
- Return(oReport)
- Static Function ReportPrint(oReport,cAlias,oComissaoA,oComissaoS,oDetalhe,oTotal,oGeral)
- Local dEmissao := CTOD( "" )
- Local nTotLiq := 0
- Local aLiquid := {}
- Local ny
- Local cWhere := ""
- Local cNomArq, cFilialSE1, cFilialSE3
- Local nI := 0
- Local cOrder := ""
- Local nDecs
- Local nTotPorc := 0
- Local nTotPerVen := 0
- Local nTotPerGer := 0
- Local nTaxa := 0
- Local cDocLiq := ""
- Local cTitulo := ""
- Local cAjuste := ""
- Local nTotBase := 0
- Local nTotComis := 0
- Local nSection := 0
- Local nOrdem := 0
- Local nTGerBas := 0
- Local nTGerCom := 0
- Local cFilSE1 := ""
- Local cFilSE3 := ""
- Local cFilSA1 := ""
- Local lVend := .F.
- Local lFirst := .F.
- Local lRndIrrf := GetMV("MV_RNDIRF")
- If oReport:Section(1):GetOrder() == 1 // Ordem: por Titulo
- nOrdem := 1
- Else // Ordem: por Cliente
- nOrdem := 2
- EndIf
- If mv_par12 == 1 // Analitico
- oReport:Section(3):Disable()
- nSection := 1
- If mv_par14 == 1
- oReport:Section(1):section(1):Cell("A1_NOME"):Disable()
- oReport:Section(1):section(1):Section(1):Cell("A1_NOME"):Disable()
- Else
- oReport:Section(1):section(1):Cell("A1_NREDUZ"):Disable()
- oReport:Section(1):section(1):Section(1):Cell("A1_NREDUZ"):Disable()
- EndIf
- oReport:Section(1):Cell("E3_VEND"):SetBlock({|| cVend })
- oReport:Section(1):Section(1):Cell("DVENCTO" ):SetBlock({|| dVencto })
- oReport:Section(1):Section(1):Cell("DBAIXA" ):SetBlock({|| dBaixa })
- oReport:Section(1):Section(1):Cell("NVLRTITULO" ):SetBlock({|| nVlrTitulo })
- oReport:Section(1):Section(1):Cell("NBASEPRT" ):SetBlock({|| nBasePrt })
- oReport:Section(1):Section(1):Cell("NCOMPRT" ):SetBlock({|| nComPrt })
- oReport:Section(1):Section(1):Cell("E3_BAIEMI" ):SetBlock({|| Substr(cTipo,1,1) })
- oReport:Section(1):Section(1):Cell("AJUSTE" ):SetBlock({|| IIf( (cAjuste == "S" .And. MV_PAR07 == 1),"AJUSTE","" ) })
- oReport:Section(1):Section(1):Section(1):Cell("E1_NUMLIQ" ):SetBlock({|| cLiquid })
- oReport:Section(1):Section(1):Section(1):Cell("NVALLIQ1" ):SetBlock({|| aValLiq[nI2,1] })
- oReport:Section(1):Section(1):Section(1):Cell("NVALLIQ2" ):SetBlock({|| aValLiq[nI2,2] })
- oReport:Section(1):Section(1):Section(1):Cell("NLIQPROP" ):SetBlock({|| aLiqProp[nI2] })
- oReport:Section(2):Cell("TOTALIR" ):SetBlock({|| If(lRndIrrf,Round(nValIR,TamSX3("E2_IRRF")[2]),NoRound(nValIR,TamSX3("E2_IRRF")[2])) })
- oReport:Section(2):Cell("TOTSEMIR" ):SetBlock({|| nTotSemIR })
- bVOrig := { || cDocLiq := SE1->E1_NUMLIQ, nVlrTitulo := Iif(cTitulo <> (cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_TIPO+(cAlias)->E3_VEND+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA, nVlrTitulo, 0 ) }
- TRFunction():New(oDetalhe:Cell("NVLRTITULO"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,bVOrig,.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oDetalhe:Cell("NBASEPRT") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oDetalhe:Cell("NCOMPRT") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_COMIS'),/*uFormula*/,.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oDetalhe:Cell("E3_PORC") ,/* cID */,"ONPRINT",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_PORC'),{|| nTotPorc },.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
- If mv_par10 > 0
- TRFunction():New(oTotal:Cell("TOTALIR") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oTotal:Cell("TOTSEMIR") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
- EndIf
- cVend := ""
- dVencto := ctod(" / / ")
- dBaixa := ctod(" / / ")
- nVlrTitulo := 0
- nBasePrt := 0
- nComPrt := 0
- cTipo := ""
- cLiquid := ""
- nValIR := 0
- nTotSemIR := 0
- Else // Sintetico
- TRFunction():New(oComissaoS:Cell("TOTALTIT"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oComissaoS:Cell("E3_BASE"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oComissaoS:Cell("E3_PORC"),/* cID */,"ONPRINT",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_PORC'),{||nTotPorc},.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oComissaoS:Cell("E3_COMIS"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_COMIS'),/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- //TRFunction():New(oComissaoS:Cell("VALIR"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- //TRFunction():New(oComissaoS:Cell("TOTSEMIR"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- TRFunction():New(oComissaoS:Cell("VALFIN"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
- oReport:Section(1):Disable()
- oReport:Section(1):Section(1):Disable()
- oReport:Section(1):Section(1):Section(1):Disable()
- nSection := 3
- oReport:Section(3):Cell("E3_VEND" ):SetBlock({|| cVend })
- oReport:Section(3):Cell("TOTALTIT" ):SetBlock({|| nAc3 })
- oReport:Section(3):Cell("E3_BASE" ):SetBlock({|| nAc1 })
- oReport:Section(3):Cell("E3_PORC" ):SetBlock({||NoRound((nAc2*100) / nAc1,TamSX3("E3_PORC")[2]) })
- oReport:Section(3):Cell("E3_COMIS" ):SetBlock({||nAc2 })
- oReport:Section(3):Cell("VALFIN" ):SetBlock({|| _nTotalFin })
- // oReport:Section(3):Cell("TOTSEMIR" ):SetBlock({|| nTotSemIR })
- cVend := ""
- nAc1 := 0
- nAc2 := 0
- nAc3 := 0
- nValIR := 0
- nTotSemIR := 0
- EndIf
- If len(oReport:Section(1):GetAdvplExp("SE1")) > 0
- cFilSE1 := oReport:Section(1):GetAdvplExp("SE1")
- EndIf
- If len(oReport:Section(3):GetAdvplExp("SE3")) > 0
- cFilSE3 := oReport:Section(3):GetAdvplExp("SE3")
- EndIf
- If len(oReport:Section(1):GetAdvplExp("SA1")) > 0
- cFilSA1 := oReport:Section(1):GetAdvplExp("SA1")
- EndIf
- // Indexa de acordo com ordem escolhida oelo cliente
- dbSelectArea("SE3")
- If nOrdem == 1 // Ordem: por Titulo
- dbSetOrder(2)
- cOrder := "E3_FILIAL,E3_VEND,E3_PREFIXO,E3_NUM,E3_PARCELA"
- Else // Ordem: por Cliente
- dbSetOrder(3)
- cOrder := "E3_FILIAL,E3_VEND,E3_CODCLI,E3_LOJA,E3_PREFIXO,E3_NUM,E3_PARCELA"
- EndIf
- MakeSqlExpr(oReport:uParam)
- oReport:Section(nSection):BeginQuery()
- If mv_par01 == 1
- cWhere += "AND E3_BAIEMI <> 'B'" //Baseado pela emissao da NF
- Elseif mv_par01 == 2
- cWhere += "AND E3_BAIEMI = 'B'" //Baseado pela baixa do titulo
- EndIf
- If mv_par06 == 1 //Comissoes a pagar
- cWhere += "AND E3_DATA = '" + Dtos(Ctod("")) + "'"
- ElseIf mv_par06 == 2 //Comissoes pagas
- cWhere += "AND E3_DATA <> '" + Dtos(Ctod("")) + "'"
- Endif
- If ValType(mv_par15) == "N"
- If mv_par15 <> 1 // Todos
- If mv_par15 == 2 // Parceiros
- cWhere += "AND A3_TIPO = 'P'"
- ElseIf mv_par15 == 3 // Vendedores
- cWhere += "AND A3_TIPO <> 'P'"
- EndIf
- EndIf
- EndIf
- //cWhere += " ORDER BY " + cOrder
- cWhere := "%" + cWhere + "%"
- corder := " ORDER BY " + cOrder
- BEGIN REPORT QUERY oDetalhe
- BeginSql Alias cAlias
- SELECT E3_FILIAL,E3_BASE, E3_COMIS, E3_VEND, E3_PORC,A3_FILIAL,A3_COD,A3_NOME, E3_PREFIXO,E3_NUM, E3_PARCELA,E3_TIPO,E3_CODCLI,E3_LOJA,E3_AJUSTE,E3_BAIEMI,E3_EMISSAO,E3_DATA, E3_PEDIDO
- FROM %table:SA3% SA3
- LEFT JOIN %table:SE3% SE3
- ON A3_COD = E3_VEND
- AND E3_FILIAL = %xFilial:SE3%
- AND E3_EMISSAO >= %Exp:Dtos(mv_par02)% AND E3_EMISSAO <= %Exp:Dtos(mv_par03)%
- AND E3_VEND BETWEEN %Exp:MV_PAR04% AND %Exp:MV_PAR05%
- AND SE3.%notdel% %Exp:cWhere%
- WHERE A3_FILIAL = %xFilial:SA3%
- AND A3_COD BETWEEN %Exp:MV_PAR04% AND %Exp:MV_PAR05%
- AND SA3.%NotDel%
- ORDER BY A3_COD
- EndSql
- END REPORT QUERY oDetalhe
- oReport:Section(nSection):EndQuery()
- TRPosition():New(oReport:Section(nSection),"SA3",1,{|| xFilial("SA3")+cVend })
- //TRPosition():New(oReport:Section(nSection),"SE3",2,{|| xFilial("SE3")+cVend+(cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_SEQ})
- If mv_par12 == 1
- TRPosition():New(oReport:Section(1):Section(1),"SA1",1,{|| xFilial("SA1")+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA })
- TRPosition():New(oReport:Section(1):Section(1):Section(1),"SA1",1,{|| xFilial("SA1")+SE1->E1_CLIENTE+SE1->E1_LOJA })
- EndIf
- If mv_par12 == 2 .Or. mv_par12 == 1
- nTotBase := 0
- nTotComis := 0
- EndIf
- dbSelectArea(cAlias)
- dbGoTop()
- nDecs := GetMv("MV_CENT"+(IIF(mv_par08 > 1 , STR(mv_par08,1),"")))
- oReport:SetMeter(SA3->(LastRec()))
- dbSelectArea(cAlias)
- While !oReport:Cancel() .And. !&(cAlias)->(Eof())
- cVend := &(cAlias)->(A3_COD)
- nAc1 := 0
- nAc2 := 0
- nAc3 := 0
- nTotPerVen := 0
- oReport:Section(nSection):Init()
- If mv_par12 == 1 .And. Empty(cFilSE1) .And. Empty(cFilSE3) .And. Empty(cFilSA1)
- oReport:Section(nSection):PrintLine()
- EndIf
- lVend:= .T.
- lFirst := .T.
- While !Eof() .And. xFilial("SA3") == (cAlias)->A3_FILIAL .And. (cAlias)->A3_COD == cVend //xFilial("SE3") == (cAlias)->E3_FILIAL .And. (cAlias)->E3_VEND == cVend
- nBasePrt := 0
- nComPrt := 0
- nVlrTitulo := 0
- _nTotalFin := fSumTiti(cVend, mv_par02,mv_par03)
- If mv_par12 == 1
- nTotBase := 0
- nTotComis := 0
- EndIf
- dbSelectArea("SE3")
- dbSetOrder(2)
- dbSeek(xFilial("SE3")+cVend+&(cAlias)->(E3_PREFIXO)+&(cAlias)->(E3_NUM)+&(cAlias)->(E3_PARCELA))
- dbSelectArea("SE1")
- dbSetOrder(1)
- dbSeek(xFilial()+&(cAlias)->(E3_PREFIXO)+&(cAlias)->(E3_NUM)+&(cAlias)->(E3_PARCELA)+&(cAlias)->(E3_TIPO))
- // Se nao imprime detalhes da origem, desconsidera titulos faturados
- If mv_par13 <> 1 .And. !Empty(SE1->E1_FATURA) .And. SE1->E1_FATURA <> "NOTFAT"
- (cAlias)->( dbSkip() )
- Loop
- EndIf
- // Verifica filtro do usuario
- If !Empty(cFilSE1) .And. !(&cFilSE1)
- dbSelectArea(cAlias)
- dbSkip()
- Loop
- ElseIf !Empty(cFilSE1) .And. (&cFilSE1) .And. lFirst
- oReport:Section(nSection):PrintLine()
- lFirst := .F.
- EndIf
- If!Empty(cFilSE3) .And. !(cAlias)->(&cFilSE3)
- dbSelectArea(cAlias)
- dbSkip()
- Loop
- ElseIf !Empty(cFilSE3) .And. (cAlias)->(&cFilSE3) .And. lVend
- If mv_par12 == 1
- oReport:Section(nSection):PrintLine()
- lVend:= .F.
- EndIf
- EndIf
- If!Empty(cFilSA1)
- SA1->(dbSetOrder(1))
- If SA1->(dbSeek(xFilial()+&(cAlias)->(E3_CODCLI)+&(cAlias)->(E3_LOJA)))
- If !( SA1->&cFilSa1)
- dbSelectArea(cAlias)
- dbSkip()
- Loop
- ElseIf (SA1->&cFilSA1) .And. lVend
- oReport:Section(nSection):PrintLine()
- lVend := .F.
- EndIf
- EndIf
- EndIf
- If nModulo == 12
- nVlrTitulo:= Round(xMoeda((cAlias)->E3_BASE,SE1->E1_MOEDA,MV_PAR08,(cAlias)->E3_EMISSAO,nDecs+1),nDecs)
- Else
- nVlrTitulo:= Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
- EndIf
- dEmissao := SE1->E1_EMISSAO
- cLiquid := ""
- cDocLiq := SE1->E1_NUMLIQ
- If mv_par12 == 1
- dVencto := SE1->E1_VENCTO
- aLiquid := {}
- aValLiq := {}
- aLiqProp := {}
- nTotLiq := 0
- If mv_par13 == 1 .And. !Empty(SE1->E1_NUMLIQ) .And. FindFunction("FA440LIQSE1")
- cLiquid := SE1->E1_NUMLIQ
- cDocLiq := SE1->E1_NUMLIQ
- // Obtem os registros que deram origem ao titulo gerado pela liquidacao
- Fa440LiqSe1(SE1->E1_NUMLIQ,@aLiquid,@aValLiq)
- For ny := 1 to Len(aValLiq)
- nTotLiq += aValLiq[ny,2]
- Next
- For ny := 1 to Len(aValLiq)
- aAdd(aLiqProp,(nVlrTitulo/nTotLiq)*aValLiq[ny,2])
- Next
- Endif
- If (cAlias)->E3_BAIEMI == "B"
- dBaixa := (cAlias)->E3_EMISSAO
- Else
- dBaixa := SE1->E1_BAIXA
- Endif
- EndIf
- If Eof()
- dbSelectArea("SF1")
- dbSetOrder(1)
- dbSelectArea("SF2")
- dbSetorder(1)
- If AllTrim((cAlias)->E3_TIPO) == "NCC"
- SF1->(dbSeek(xFilial("SF1")+(cAlias)->E3_NUM+(cAlias)->E3_PREFIXO+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA,.t.))
- nVlrTitulo := Round(xMoeda(SF1->F1_VALBRUT,SF1->F1_MOEDA,mv_par08,SF1->F1_DTDIGIT,nDecs+1,SF1->F1_TXMOEDA),nDecs)
- dEmissao := SF1->F1_DTDIGIT
- Else
- dbSeek(xFilial()+(cAlias)->E3_NUM+(cAlias)->E3_PREFIXO)
- nVlrTitulo := Round(xMoeda(F2_VALFAT,SF2->F2_MOEDA,mv_par08,SF2->F2_EMISSAO,nDecs+1,SF2->F2_TXMOEDA),nDecs)
- dEmissao := SF2->F2_EMISSAO
- EndIf
- If mv_par12 == 1
- dVencto := CTOD( "" )
- dBaixa := CTOD( "" )
- EndIf
- If Eof()
- nVlrTitulo := 0
- dbSelectArea("SE1")
- dbSetOrder(1)
- cFilialSE1 := xFilial()
- dbSeek(cFilialSE1+&(cAlias)->(E3_PREFIXO)+&(cAlias)->(E3_NUM))
- While ( !Eof() .And. (cAlias)->E3_PREFIXO == SE1->E1_PREFIXO .And.;
- (cAlias)->E3_NUM == SE1->E1_NUM .And.;
- (cAlias)->E3_FILIAL == cFilialSE1 )
- If ( SE1->E1_TIPO == (cAlias)->E3_TIPO .And. ;
- SE1->E1_CLIENTE == (cAlias)->E3_CODCLI .And. ;
- SE1->E1_LOJA == (cAlias)->E3_LOJA )
- nVlrTitulo += Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
- If mv_par12 == 1
- dVencto := CTOD( "" )
- dBaixa := CTOD( "" )
- EndIf
- If Empty(dEmissao)
- dEmissao := SE1->E1_EMISSAO
- EndIf
- EndIf
- dbSelectArea("SE1")
- dbSkip()
- EndDo
- EndIf
- Endif
- If Empty(dEmissao)
- dEmissao := NIL
- EndIf
- nTaxa := (cAlias)->E3_BASE / SE1->E1_VALOR
- If MV_PAR08 == 1 .Or. SE1->E1_MOEDA == 1
- nBasePrt:= Round(xMoeda((cAlias)->E3_BASE ,1,MV_PAR08,dEmissao,nDecs+1),nDecs)
- nComPrt := Round(xMoeda((cAlias)->E3_COMIS,1,MV_PAR08,dEmissao,TamSx3("E3_COMIS")[2]+1),TamSx3("E3_COMIS")[2])
- Else
- nBasePrt:= Round(xMoeda((cAlias)->E3_BASE ,1,MV_PAR08,dEmissao,nDecs+1,SE1->E1_TXMOEDA,nTaxa),nDecs)
- nComPrt := Round(xMoeda((cAlias)->E3_COMIS,1,MV_PAR08,dEmissao,TamSx3("E3_COMIS")[2]+1,SE1->E1_TXMOEDA,nTaxa),TamSx3("E3_COMIS")[2])
- EndIf
- If mv_par09 == 2 .And. mv_par08 != 1 //eradas em outras moedas
- If nVlrTitulo == 0 .And. nBasePrt == 0 .And. nComPrt == 0
- (cAlias)->(DbSkip())
- Loop
- EndIf
- EndIf
- If nBasePrt < 0 .And. nComPrt < 0
- nVlrTitulo := nVlrTitulo * -1
- Endif
- If mv_par12 == 1
- cAjuste := (cAlias)->E3_AJUSTE
- cTipo := (cAlias)->E3_BAIEMI
- dbSelectArea(cAlias)
- oReport:Section(1):Section(1):Init()
- oReport:Section(1):Section(1):PrintLine()
- oReport:IncMeter()
- If mv_par13 == 1
- For nI := 1 To Len(aLiquid)
- nI2 := nI
- SE1->(MsGoto(aLiquid[nI]))
- oReport:Section(1):SetHeaderBreak(.T.)
- oReport:Section(1):Section(1):Section(1):Init()
- oReport:Section(1):Section(1):Section(1):PrintLine()
- Next
- If Len(aLiquid) > 0
- oReport:Section(1):Section(1):Section(1):Finish()
- EndIf
- Endif
- EndIf
- nAc1 += nBasePrt
- nAc2 += nComPrt
- nTotPerVen += (nBasePrt*(cAlias)->E3_PORC)/100
- nTotPerGer += nTotPerVen
- If cTitulo <> (cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_TIPO+(cAlias)->E3_VEND+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA
- nAc3 += nVlrTitulo
- cTitulo:= (cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_TIPO+(cAlias)->E3_VEND+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA
- cDocLiq:= ""
- EndIf
- dbSelectArea(cAlias)
- dbSkip()
- EndDo
- If mv_par12 == 1
- nTotBase += nAc1
- nTotComis += nAc2
- nTotPorc := Round((nTotComis / nTotBase)*100,TamSx3("E3_COMIS")[2])
- nTotPerVen := Round((nTotPerVen/nAc1)*100,TamSx3("E3_PORC")[2])
- oReport:Section(1):Section(1):SetTotalText("Total do Vendedor " + cVend)
- oReport:Section(1):Section(1):Finish()
- EndIf
- nValIR := 0
- nTotSemIR := 0
- If mv_par10 > 0 .And. (nAc2 * mv_par10 / 100) > GetMV("MV_VLRETIR") //IR
- nValIR := nAc2 * (MV_PAR10/100)
- nTotSemIR := nAc2 - (nAc2 * (MV_PAR10/100))
- Else
- nTotSemIR := nAc2
- EndIf
- If mv_par12 == 2
- nTotBase += nAc1
- nTotComis += nAc2
- nTotPorc := Round((nTotComis / nTotBase)*100,TamSx3("E3_COMIS")[2])
- nTotPerVen := Round((nTotPerVen/nAc1)*100,TamSx3("E3_PORC")[2])
- oReport:Section(nSection):Init()
- oReport:Section(nSection):PrintLine()
- EndIf
- oReport:Section(nSection):Finish()
- If mv_par12 == 1 .And. mv_par10 > 0
- oReport:Section(2):Init()
- oReport:Section(2):PrintLine()
- oReport:Section(2):Finish()
- EndIf
- If mv_par11 == 1
- oReport:Section(nSection):SetPageBreak(.T.)
- EndIf
- If mv_par12 == 2
- oReport:IncMeter()
- EndIf
- nTGerBas += nAc1
- nTGerCom += nAc2
- EndDo
- nTotPorc := ((nTGerCom*100)/nTGerBas)
- If mv_par11 == 1
- oGeral:SetPageBreak(.T.)
- oGeral:Cell("TXTTOTAL"):SetSize(21)
- oGeral:Cell("GERAL" ):SetBlock ( { || nTGerBas } )
- oGeral:Cell("PERCENT" ):SetBlock ( { || nTotPorc } )
- oGeral:Cell("COMIS" ):SetBlock ( { || nTGerCom } )
- oGeral:Init()
- oGeral:PrintLine()
- oGeral:Finish()
- oGeral:SetPageBreak(.T.)
- EndIf
- Return
- Static Function Matr540R3()
- Local wnrel
- Local titulo := STR0001 //"Relatorio de Comissoes"
- Local cDesc1 := STR0002 //"Emissao do relatorio de Comissoes."
- Local tamanho := "G"
- Local limite := 220
- Local cString := "SE3"
- Local cAliasAnt := Alias()
- Local cOrdemAnt := IndexOrd()
- Local nRegAnt := Recno()
- Local cDescVend := " "
- Private aReturn := { OemToAnsi(STR0003), 1,OemToAnsi(STR0004), 1, 2, 1, "",1 } //"Zebrado"###"Administracao"
- Private nomeprog:= "MATR540"
- Private aLinha := { },nLastKey := 0
- Private cPerg := "MTR540"
- Pergunte("MTR540",.F.)
- //?Variaveis utilizadas para parametros ?
- //?mv_par01 // Pela <E>missao,<B>aixa ou <A>mbos ?
- //?mv_par02 // A partir da data ?
- //?mv_par03 // Ate a Data ?
- //?mv_par04 // Do Vendedor ?
- //?mv_par05 // Ao Vendedor ?
- //?mv_par06 // Quais (a Pagar/Pagas/Ambas) ?
- //?mv_par07 // Incluir Devolucao ? ?
- //?mv_par08 // Qual moeda ?
- //?mv_par09 // Comissao Zerada ? ?
- //?mv_par10 // Abate IR Comiss ?
- //?mv_par11 // Quebra pag.p/Vendedor ?
- //?mv_par12 // Tipo de Relatorio (Analitico/Sintetico)?
- //?mv_par13 // Imprime detalhes origem ?
- //?mv_par14 // Nome cliente ?
- //?Envia controle para a funcao SETPRINT ?
- wnrel := "MATR540"
- wnrel := SetPrint(cString,wnrel,cPerg,titulo,cDesc1,"","",.F.,"",.F.,Tamanho)
- If nLastKey==27
- dbClearFilter()
- Return
- Endif
- SetDefault(aReturn,cString)
- If nLastKey ==27
- dbClearFilter()
- Return
- Endif
- RptStatus({|lEnd| C540Imp(@lEnd,wnRel,cString)},Titulo)
- //?Retorna para area anterior, indice anterior e registro ant. ?
- DbSelectArea(caliasAnt)
- DbSetOrder(cOrdemAnt)
- DbGoto(nRegAnt)
- Return
- Static Function C540Imp(lEnd,WnRel,cString)
- Local CbCont,cabec1,cabec2
- Local tamanho := "G"
- Local limite := 220
- Local nomeprog := "MATR540"
- Local imprime := .T.
- Local cPict := ""
- Local cTexto,j :=0,nTipo:=0
- Local cCodAnt,nCol:=0
- Local nAc1:=0,nAc2:=0,nAg1:=0,nAg2:=0,nAc3:=0,nAg3:=0,nAc4:=0,nAg4:=0,lFirstV:=.T.
- Local nTregs,nMult,nAnt,nAtu,nCnt,cSav20,cSav7
- Local lContinua:= .T.
- Local cNFiscal :=""
- Local aCampos :={}
- Local lImpDev := .F.
- Local cBase := ""
- Local cNomArq, cCondicao, cFilialSE1, cFilialSE3, cChave, cFiltroUsu
- Local nDecs := GetMv("MV_CENT"+(IIF(mv_par08 > 1 , STR(mv_par08,1),"")))
- Local nBasePrt :=0, nComPrt:=0
- Local aStru := SE3->(dbStruct()), ni
- Local nDecPorc := TamSX3("E3_PORC")[2]
- Local nVlrTitulo := 0
- Local nTotPerVen := 0
- Local nTotPerGer := 0
- Local lRndIrrf := GetMV("MV_RNDIRF")
- Local cDocLiq := ""
- Local cTitulo := ""
- Local dEmissao := CTOD( "" )
- Local nTotLiq := 0
- Local aLiquid := {}
- Local aValLiq := {}
- Local aLiqProp := {}
- Local ny
- Local aColuna := IIF(cPaisLoc <> "MEX",{15,19,42,46,83,95,107,119,130,137,153,169,176,195,203},{28,35,58,62,99,111,123,135,146,153,169,185,192,211,219})
- //?Variaveis utilizadas para Impressao do Cabecalho e Rodape ?
- cbtxt := Space(10)
- cbcont := 00
- li := 80
- m_pag := 01
- imprime := .T.
- nTipo := IIF(aReturn[4]==1,15,18)
- //?Definicao dos cabecalhos ?
- If mv_par12 == 1
- If mv_par01 == 1
- titulo := OemToAnsi(STR0005)+OemToAnsi(STR0006)+" ("+OemToAnsi(STR0019)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA EMISSAO)"
- Elseif mv_par01 == 2
- titulo := OemToAnsi(STR0005)+OemToAnsi(STR0007)+" ("+OemToAnsi(STR0019)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA BAIXA)"
- Else
- titulo := OemToAnsi(STR0008)+" ("+OemToAnsi(STR0019)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES"
- Endif
- cabec1:=OemToAnsi(STR0009) //"PRF NUMERO PARC. CODIGO DO LJ NOME DT.BASE DATA DATA DATA NUMERO VALOR VALOR % VALOR TIPO"
- cabec2:=OemToAnsi(STR0010) //" TITULO CLIENTE COMISSAO VENCTO BAIXA PAGTO PEDIDO TITULO BASE COMISSAO COMISSAO"
- // XXX XXXXXXxxxxxx X XXXXXXxxxxxxxxxxxxxx XX 012345678901234567890123456789012345 XX/XX/XXxx XX/XX/XXxx XX/XX/XXxx XX/XX/XXxx XXXXXX 12345678901,23 12345678901,23 99.99 12345678901,23 X AJUSTE
- // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- // 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
- If cPaisLoc == "MEX"
- Cabec1 := Substr(Cabec1,1,10) + Space(16) + Substr(Cabec1,11)
- Cabec2 := Substr(Cabec2,1,10) + Space(16) + Substr(Cabec2,11)
- EndIf
- Else
- If mv_par01 == 1
- titulo := OemToAnsi(STR0005)+OemToAnsi(STR0006)+" ("+OemToAnsi(STR0020)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA EMISSAO)"
- Elseif mv_par01 == 2
- titulo := OemToAnsi(STR0005)+OemToAnsi(STR0007)+" ("+OemToAnsi(STR0020)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA BAIXA)"
- Else
- titulo := OemToAnsi(STR0008)+" ("+OemToAnsi(STR0020)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES"
- Endif
- cabec1:=OemToAnsi(STR0021) //"CODIGO VENDEDOR TOTAL TOTAL % TOTAL TOTAL TOTAL"
- cabec2:=OemToAnsi(STR0022) //" TITULO BASE COMISSAO IR (-) IR"
- //"XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 123456789012,23 123456789012,23 99.99 123456789012,23 123456789012,23 123456789012,23
- //"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- //"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
- EndIf
- //?Monta condicao para filtro do arquivo de trabalho ?
- DbSelectArea("SE3") // Posiciona no arquivo de comissoes
- DbSetOrder(2) // Por Vendedor
- cFilialSE3 := xFilial()
- cNomArq :=CriaTrab("",.F.)
- cCondicao := "SE3->E3_FILIAL=='" + cFilialSE3 + "'"
- cCondicao += ".And.SE3->E3_VEND>='" + mv_par04 + "'"
- cCondicao += ".And.SE3->E3_VEND<='" + mv_par05 + "'"
- cCondicao += ".And.DtoS(SE3->E3_EMISSAO)>='" + DtoS(mv_par02) + "'"
- cCondicao += ".And.DtoS(SE3->E3_EMISSAO)<='" + DtoS(mv_par03) + "'"
- If mv_par01 == 1
- cCondicao += ".And.SE3->E3_BAIEMI!='B'" // Baseado pela emissao da NF
- Elseif mv_par01 == 2
- cCondicao += " .And.SE3->E3_BAIEMI=='B'" // Baseado pela baixa do titulo
- Endif
- If mv_par06 == 1 // Comissoes a pagar
- cCondicao += ".And.Dtos(SE3->E3_DATA)=='"+Dtos(Ctod(""))+"'"
- ElseIf mv_par06 == 2 // Comissoes pagas
- cCondicao += ".And.Dtos(SE3->E3_DATA)!='"+Dtos(Ctod(""))+"'"
- Endif
- If mv_par09 == 2 // Nao Inclui Comissoes Zeradas
- cCondicao += ".And.SE3->E3_COMIS<>0"
- EndIf
- //?Cria expressao de filtro do usuario ?
- If ( ! Empty(aReturn[7]) )
- cFiltroUsu := &("{ || " + aReturn[7] + " }")
- Else
- cFiltroUsu := { || .t. }
- Endif
- nAg1 := nAg2 := nAg3 := nAg4 := 0
- If TcSrvType() != "AS/400"
- cOrder := SqlOrder(SE3->(IndexKey()))
- cQuery := "SELECT * "
- cQuery += " FROM "+ RetSqlName("SE3")
- cQuery += " WHERE E3_FILIAL = '" + xFilial("SE3") + "' AND "
- cQuery += " E3_VEND >= '" + mv_par04 + "' AND E3_VEND <= '" + mv_par05 + "' AND "
- cQuery += " E3_EMISSAO >= '" + Dtos(mv_par02) + "' AND E3_EMISSAO <= '" + Dtos(mv_par03) + "' AND "
- If mv_par01 == 1
- cQuery += "E3_BAIEMI <> 'B' AND " //Baseado pela emissao da NF
- Elseif mv_par01 == 2
- cQuery += "E3_BAIEMI = 'B' AND " //Baseado pela baixa do titulo
- EndIf
- If mv_par06 == 1 //Comissoes a pagar
- cQuery += "E3_DATA = '" + Dtos(Ctod("")) + "' AND "
- ElseIf mv_par06 == 2 //Comissoes pagas
- cQuery += "E3_DATA <> '" + Dtos(Ctod("")) + "' AND "
- Endif
- If mv_par09 == 2 //Nao Inclui Comissoes Zeradas
- cQuery+= "E3_COMIS <> 0 AND "
- EndIf
- cQuery += "D_E_L_E_T_ <> '*' "
- cQuery += " ORDER BY "+ cOrder
- cQuery := ChangeQuery(cQuery)
- dbSelectArea("SE3")
- dbCloseArea()
- dbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), 'SE3', .F., .T.)
- For ni := 1 to Len(aStru)
- If aStru[ni,2] != 'C'
- TCSetField('SE3', aStru[ni,1], aStru[ni,2],aStru[ni,3],aStru[ni,4])
- Endif
- Next
- Else
- //?Cria arquivo de trabalho ?
- cChave := IndexKey()
- cNomArq :=CriaTrab("",.F.)
- IndRegua("SE3",cNomArq,cChave,,cCondicao, OemToAnsi(STR0016)) //"Selecionando Registros..."
- nIndex := RetIndex("SE3")
- DbSelectArea("SE3")
- DbSetOrder(nIndex+1)
- EndIf
- SetRegua(RecCount()) // Total de Elementos da regua
- DbGotop()
- While !Eof()
- IF lEnd
- @Prow()+1,001 PSAY OemToAnsi(STR0011) //"CANCELADO PELO OPERADOR"
- lContinua := .F.
- Exit
- EndIF
- IncRegua()
- //?Processa condicao do filtro do usuario ?
- If ! Eval(cFiltroUsu)
- Dbskip()
- Loop
- Endif
- nAc1 := nAc2 := nAc3 := nAc4 := 0
- nTotPerVen := 0
- lFirstV:= .T.
- cVend := SE3->E3_VEND
- While !Eof() .AND. SE3->E3_VEND == cVend
- IncRegua()
- cDocLiq:= ""
- //?Processa condicao do filtro do usuario ?
- If ! Eval(cFiltroUsu)
- Dbskip()
- Loop
- Endif
- If li > 55
- cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
- EndIF
- //?Seleciona o Codigo do Vendedor e Imprime o seu Nome ?
- IF lFirstV
- dbSelectArea("SA3")
- dbSeek(xFilial()+SE3->E3_VEND)
- If mv_par12 == 1
- cDescVend := SE3->E3_VEND + " " + A3_NOME
- @li, 00 PSAY OemToAnsi(STR0012) + cDescVend //"Vendedor : "
- li+=2
- Else
- @li, 00 PSAY SE3->E3_VEND
- @li, 07 PSAY A3_NOME
- EndIf
- dbSelectArea("SE3")
- lFirstV := .F.
- EndIF
- dbSelectArea("SE1")
- dbSetOrder(1)
- dbSeek(xFilial()+SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO)
- // Se nao imprime detalhes da origem, desconsidera titulos faturados
- If mv_par13 <> 1 .And. !Empty(SE1->E1_FATURA) .And. SE1->E1_FATURA <> "NOTFAT"
- SE3->( dbSkip() )
- Loop
- EndIf
- If mv_par12 == 1
- @li, 00 PSAY SE3->E3_PREFIXO
- @li, 04 PSAY SE3->E3_NUM
- @li, aColuna[1] PSAY SE3->E3_PARCELA
- @li, aColuna[2] PSAY SE3->E3_CODCLI
- @li, aColuna[3] PSAY SE3->E3_LOJA
- dbSelectArea("SA1")
- dbSeek(xFilial()+SE3->E3_CODCLI+SE3->E3_LOJA)
- @li, aColuna[4] PSAY IF(mv_par14 == 1,Substr(SA1->A1_NREDUZ,1,35),Substr(SA1->A1_NOME,1,35))
- dbSelectArea("SE3")
- @li, aColuna[5] PSAY SE3->E3_EMISSAO
- EndIf
- dbSelectArea("SE1")
- dbSetOrder(1)
- dbSeek(xFilial()+SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO)
- nVlrTitulo := Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
- dVencto := SE1->E1_VENCTO
- dEmissao := SE1->E1_EMISSAO
- aLiquid := {}
- aValLiq := {}
- aLiqProp := {}
- nTotLiq := 0
- If mv_par13 == 1 .And. !Empty(SE1->E1_NUMLIQ) .And. FindFunction("FA440LIQSE1")
- cLiquid := SE1->E1_NUMLIQ
- cDocLiq := SE1->E1_NUMLIQ
- // Obtem os registros que deram origem ao titulo gerado pela liquidacao
- Fa440LiqSe1(SE1->E1_NUMLIQ,@aLiquid,@aValLiq)
- For ny := 1 to Len(aValLiq)
- nTotLiq += aValLiq[ny,2]
- Next
- For ny := 1 to Len(aValLiq)
- aAdd(aLiqProp,(nVlrTitulo/nTotLiq)*aValLiq[ny,2])
- Next
- Endif
- /*
- Nas comissoes geradas por baixa pego a data da emissao da comissao que eh igual a data da baixa do titulo.
- Isto somente dara diferenca nas baixas parciais
- */
- If SE3->E3_BAIEMI == "B"
- dBaixa := SE3->E3_EMISSAO
- Else
- dBaixa := SE1->E1_BAIXA
- Endif
- If Eof()
- dbSelectArea("SF1")
- dbSetOrder(1)
- dbSelectArea("SF2")
- dbSetorder(1)
- If AllTrim(SE3->E3_TIPO) == "NCC"
- SF1->(dbSeek(xFilial("SF1")+SE3->E3_NUM+SE3->E3_PREFIXO+SE3->E3_CODCLI+SE3->E3_LOJA,.t.))
- nVlrTitulo := Round(xMoeda(SF1->F1_VALBRUT,SF1->F1_MOEDA,mv_par07,SF1->F1_DTDIGIT,nDecs+1,SF1->F1_TXMOEDA),nDecs)
- dEmissao := SF1->F1_DTDIGIT
- Else
- dbSeek(xFilial()+SE3->E3_NUM+SE3->E3_PREFIXO)
- nVlrTitulo := Round(xMoeda(F2_VALFAT,SF2->F2_MOEDA,mv_par07,SF2->F2_EMISSAO,nDecs+1,SF2->F2_TXMOEDA),nDecs)
- dEmissao := SF2->F2_EMISSAO
- EndIf
- dVencto := " "
- dBaixa := " "
- dEmissao := SF2->F2_EMISSAO
- If Eof()
- nVlrTitulo := 0
- dbSelectArea("SE1")
- dbSetOrder(1)
- cFilialSE1 := xFilial()
- dbSeek(cFilialSE1+SE3->E3_PREFIXO+SE3->E3_NUM)
- While ( !Eof() .And. SE3->E3_PREFIXO == SE1->E1_PREFIXO .And.;
- SE3->E3_NUM == SE1->E1_NUM .And.;
- SE3->E3_FILIAL == cFilialSE1 )
- If ( SE1->E1_TIPO == SE3->E3_TIPO .And. ;
- SE1->E1_CLIENTE == SE3->E3_CODCLI .And. ;
- SE1->E1_LOJA == SE3->E3_LOJA )
- nVlrTitulo += Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
- dVencto := " "
- dBaixa := " "
- If Empty(dEmissao)
- dEmissao := SE1->E1_EMISSAO
- EndIf
- EndIf
- dbSelectArea("SE1")
- dbSkip()
- EndDo
- EndIf
- Endif
- If Empty(dEmissao)
- dEmissao := NIL
- EndIf
- //Preciso destes valores para pasar como parametro na funcao TM(), e como
- //usando a xmoeda direto na impressao afetaria a performance (deveria executar
- //duas vezes, uma para imprimir e outra para pasar para a picture), elas devem]
- //ser inicializadas aqui. Bruno.
- nBasePrt:= Round(xMoeda(SE3->E3_BASE ,1,MV_PAR08,dEmissao,nDecs+1),nDecs)
- nComPrt := Round(xMoeda(SE3->E3_COMIS,1,MV_PAR08,dEmissao,TamSx3("E3_COMIS")[2]+1),TamSx3("E3_COMIS")[2])
- If nBasePrt < 0 .And. nComPrt < 0
- nVlrTitulo := nVlrTitulo * -1
- Endif
- dbSelectArea("SE3")
- If mv_par12 == 1
- @ li,aColuna[6] PSAY dVencto
- @ li,aColuna[7] PSAY dBaixa
- @ li,aColuna[8] PSAY SE3->E3_DATA
- @ li,aColuna[9] PSAY SE3->E3_PEDIDO Picture "@!"
- @ li,aColuna[10] PSAY nVlrTitulo Picture tm(nVlrTitulo,14,nDecs)
- @ li,aColuna[11] PSAY nBasePrt Picture tm(nBasePrt,14,nDecs)
- @ li,aColuna[12] PSAY SE3->E3_PORC Picture PesqPict('SE3','E3_PORC')
- @ li,aColuna[13] PSAY nComPrt Picture PesqPict('SE3','E3_COMIS')
- @ li,aColuna[14] PSAY SE3->E3_BAIEMI
- If ( SE3->E3_AJUSTE == "S" .And. MV_PAR07==1)
- @ li,aColuna[15] PSAY STR0018 //"AJUSTE "
- EndIf
- li++
- // Imprime titulos que deram origem ao titulo gerado por liquidacao
- If mv_par13 == 1
- For nI := 1 To Len(aLiquid)
- If li > 55
- cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
- EndIF
- If nI == 1
- @ ++li, 0 PSAY __PrtThinLine()
- @ ++li, 0 PSAY STR0023 +SE1->E1_NUMLIQ // "Detalhes : Titulos de origem da liquida "
- @ ++li,10 PSAY STR0024 // "Prefixo Numero Parc Tipo Cliente Loja Nome Valor Titulo Data Liq. Valor Liquidao Valor Base Liq."
- // Prefixo Numero Parc Tipo Cliente Loja Nome Valor Titulo Data Liq. Valor Liquidao Valor Base Liq.
- // XXX XXXXXXXXXXXX XXX XXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 999999999999999 99/99/9999 999999999999999 999999999999999
- @ ++li, 0 PSAY __PrtThinLine()
- li++
- Endif
- cDocLiq := SE1->E1_NUMLIQ
- SE1->(MsGoto(aLiquid[nI]))
- SA1->(MsSeek(xFilial("SA1")+SE1->E1_CLIENTE+SE1->E1_LOJA))
- @li, 10 PSAY SE1->E1_PREFIXO
- @li, 21 PSAY SE1->E1_NUM
- @li, 37 PSAY SE1->E1_PARCELA
- @li, 45 PSAY SE1->E1_TIPO
- @li, 53 PSAY SE1->E1_CLIENTE
- @li, 64 PSAY SE1->E1_LOJA
- @li, 71 PSAY IF(mv_par14 == 1,Substr(SA1->A1_NREDUZ,1,35),Substr(SA1->A1_NOME,1,35))
- @li, 111 PSAY SE1->E1_VALOR PICTURE Tm(SE1->E1_VALOR,15,nDecs)
- @li, 132 PSAY aValLiq[nI,1]
- @li, 151 PSAY aValLiq[nI,2] PICTURE Tm(SE1->E1_VALOR,15,nDecs)
- @li, 172 PSAY aLiqProp[nI] PICTURE Tm(SE1->E1_VALOR,15,nDecs)
- li++
- Next
- // Imprime o separador da ultima linha
- If Len(aLiquid) >= 1
- @ li++, 0 PSAY __PrtThinLine()
- Endif
- Endif
- EndIf
- nAc1 += nBasePrt
- nAc2 += nComPrt
- nTotPerVen += (nBasePrt*SE3->E3_PORC)/100
- If cTitulo <> SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO+SE3->E3_VEND+SE3->E3_CODCLI+SE3->E3_LOJA .And. Empty(cDocLiq)
- nAc3 += nVlrTitulo
- cTitulo:= SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO+SE3->E3_VEND+SE3->E3_CODCLI+SE3->E3_LOJA
- cDocLiq:= ""
- ElseIf !Empty(cDocLiq)
- nAc3 += nVlrTitulo
- EndIf
- dbSelectArea("SE3")
- dbSkip()
- EndDo
- If mv_par12 == 1
- li++
- If li > 55
- cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
- EndIF
- @ li, 00 PSAY OemToAnsi(STR0013)+cDescVend //"TOTAL DO VENDEDOR --> "
- @ li,aColuna[10]-1 PSAY nAc3 PicTure tm(nAc3,15,nDecs)
- @ li,aColuna[11]-1 PSAY nAc1 PicTure tm(nAc1,15,nDecs)
- If nAc1 != 0
- If cPaisLoc=="BRA"
- //@ li, aColuna[12] PSAY NoRound((nAc2/nAc1)*100,2) PicTure "999.99"
- @ li, aColuna[12] PSAY NoRound((nTotPerVen/nAc1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
- Else
- @ li, aColuna[12] PSAY NoRound((nAc2/nAc1)*100) PicTure PesqPict('SE3','E3_PORC')
- Endif
- Endif
- @ li, aColuna[13] PSAY nAc2 PicTure PesqPict('SE3','E3_COMIS')
- li++
- If mv_par10 > 0 .And. (nAc2 * mv_par10 / 100) > GetMV("MV_VLRETIR") //IR
- @ li, 00 PSAY OemToAnsi(STR0015) //"TOTAL DO IR --> "
- nAc4 += If(lRndIrrf,Round((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]),NoRound((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]))
- @ li, aColuna[13] PSAY nAc4 PicTure tm(nAc2 * mv_par10 / 100,15,nDecs)
- li ++
- @ li, 00 PSAY OemToAnsi(STR0017) //"TOTAL (-) IR --> "
- @ li, aColuna[13] PSAY nAc2 - nAc4 PicTure tm(nAc2,15,nDecs)
- li ++
- EndIf
- @ li, 00 PSAY __PrtThinLine()
- If mv_par11 == 1 // Quebra pagina por vendedor (padrao)
- li := 60
- Else
- li+= 2
- Endif
- Else
- If li > 55
- cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
- EndIF
- @ li,048 PSAY nAc3 PicTure tm(nAc3,15,nDecs)
- @ li,065 PSAY nAc1 PicTure tm(nAc1,15,nDecs)
- If nAc1 != 0
- If cPaisLoc=="BRA"
- @ li, 081 PSAY NoRound((nAc2/nAc1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
- Else
- @ li, 081 PSAY NoRound((nAc2/nAc1)*100) PicTure PesqPict('SE3','E3_PORC')
- Endif
- Endif
- @ li, 089 PSAY nAc2 PicTure PesqPict('SE3','E3_COMIS')
- If mv_par10 > 0 .And. (nAc2 * mv_par10 / 100) > GetMV("MV_VLRETIR") //IR
- nAc4 += If(lRndIrrf,Round((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]),NoRound((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]))
- @ li, 105 PSAY nAc4 PicTure tm(nAc2 * mv_par10 / 100,15,nDecs)
- @ li, 121 PSAY nAc2 - nAc4 PicTure tm(nAc2,15,nDecs)
- EndIf
- li ++
- EndIf
- dbSelectArea("SE3")
- nAg1 += nAc1
- nAg2 += nAc2
- nAg3 += nAc3
- nAg4 += nAc4
- nTotPerGer += nTotPerVen
- EndDo
- If (nAg1+nAg2+nAg3+nAg4) != 0
- If li > 55
- cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
- Endif
- If mv_par12 == 1
- @li, 00 PSAY OemToAnsi(STR0014) //"TOTAL GERAL --> "
- @li, aColuna[10]-1 PSAY nAg3 Picture tm(nAg3,15,nDecs)
- @li, aColuna[11]-1 PSAY nAg1 Picture tm(nAg1,15,nDecs)
- If cPaisLoc=="BRA"
- //@li, aColuna[12] PSAY NoRound((nAg2/nAg1)*100,2) Picture "999.99"
- @li, aColuna[12] PSAY NoRound((nTotPerGer/nAg1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
- Else
- @li, aColuna[12] PSAY NoRound((nAg2/nAg1)*100) Picture PesqPict('SE3','E3_PORC')
- Endif
- @li, aColuna[13] PSAY nAg2 PicTure PesqPict('SE3','E3_COMIS')
- If mv_par10 > 0 .And. (nAg2 * mv_par10 / 100) > GetMV("MV_VLRETIR")//IR
- li ++
- @ li, 00 PSAY OemToAnsi(STR0015) //"TOTAL DO IR --> "
- @ li, 175 PSAY nAg4 PicTure tm((nAg2 * mv_par10 / 100),15,nDecs)
- li ++
- @ li, 00 PSAY OemToAnsi(STR0017) //"TOTAL (-) IR --> "
- @ li, 175 PSAY nAg2 - nAg4 Picture tm(nAg2,15,nDecs)
- EndIf
- Else
- @li,000 PSAY __PrtThinLine()
- li ++
- @li,000 PSAY OemToAnsi(STR0014) //"TOTAL GERAL --> "
- @li,048 PSAY nAg3 Picture tm(nAg3,15,nDecs)
- @li,065 PSAY nAg1 Picture tm(nAg1,15,nDecs)
- If cPaisLoc=="BRA"
- @li,081 PSAY NoRound((nAg2/nAg1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
- Else
- @li,081 PSAY NoRound((nAg2/nAg1)*100) Picture PesqPict('SE3','E3_PORC')
- Endif
- @li,089 PSAY nAg2 Picture PesqPict('SE3','E3_COMIS')
- If mv_par10 > 0 .And. (nAg2 * mv_par10 / 100) > GetMV("MV_VLRETIR")//IR
- @ li,105 PSAY nAg4 PicTure tm((nAg2 * mv_par10 / 100),15,nDecs)
- @ li,121 PSAY nAg2 - nAg4 Picture tm(nAg2,15,nDecs)
- EndIf
- EndIf
- roda(cbcont,cbtxt,"G")
- EndIF
- If TcSrvType() != "AS/400"
- dbSelectArea("SE3")
- DbCloseArea()
- chkfile("SE3")
- Else
- fErase(cNomArq+OrdBagExt())
- Endif
- //?Restaura a integridade dos dados ?
- DbSelectArea("SE3")
- RetIndex("SE3")
- DbSetOrder(2)
- dbClearFilter()
- //?Se em disco, desvia para Spool ?
- If aReturn[5] = 1
- Set Printer To
- dbCommitAll()
- ourspool(wnrel)
- Endif
- MS_FLUSH()
- Return
- Static Function fSumTiti(cVend, dEmisDe,dEmisAte)
- Local nTotal := 0
- Local cQuery := ""
- Local cAliasSe1 := GetNextAlias()
- Local nTotalComis := 0
- Local nBase := 0
- Local nPorc := 0
- cQuery := " SELECT SE1.E1_VALOR, SC5.C5_NUM,SE1.E1_PEDIDO,SA1.A1_BAIXA,SC5.C5_VEND1,SC5.C5_COMIS1,SC5.C5_VEND2,SC5.C5_COMIS2,SC5.C5_VEND3,SC5.C5_COMIS3," +STR_PULA
- cQuery += " SC5.C5_VEND4,SC5.C5_COMIS4,SC5.C5_VEND5,SC5.C5_COMIS5 "
- cQuery += " FROM " + RetSqlName("SE1") + " SE1 "+STR_PULA
- cQuery += " INNER JOIN " + RetSqlName("SC5") + " SC5 "+STR_PULA
- cQuery += " ON SE1.E1_PEDIDO = SC5.C5_NUM AND SC5.D_E_L_E_T_ = '' AND SC5.C5_FILIAL = '" + xFilial("SC5") + "' " +STR_PULA
- cQuery += " INNER JOIN " + RetSqlName("SA1") + " SA1 "+STR_PULA
- cQuery += " ON SE1.E1_CLIENTE = SA1.A1_COD AND SE1.E1_LOJA = SA1.A1_LOJA AND SA1.D_E_L_E_T_ = '' AND SA1.A1_FILIAL = '" + xFilial("SA1") + "' " +STR_PULA
- cQuery += " WHERE (( SC5.C5_VEND1 = '" + cVend + "'AND SC5.C5_COMIS1 > 0 ) " +STR_PULA
- cQuery += " OR ( SC5.C5_VEND2 = '" + cVend + "'AND SC5.C5_COMIS2 > 0 ) " +STR_PULA
- cQuery += " OR ( SC5.C5_VEND3 = '" + cVend + "'AND SC5.C5_COMIS3 > 0 ) " +STR_PULA
- cQuery += " OR ( SC5.C5_VEND4 = '" + cVend + "'AND SC5.C5_COMIS4 > 0 ) " +STR_PULA
- cQuery += " OR ( SC5.C5_VEND5 = '" + cVend + "'AND SC5.C5_COMIS5 > 0 )) " +STR_PULA
- cQuery += " AND SE1.E1_FILIAL = '" + xFilial("SE1") + "' " +STR_PULA
- cQuery += " AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_SALDO = SE1.E1_VALOR and SE1.E1_BAIXA = ''" +STR_PULA
- cQuery += " AND ( SE1.E1_EMISSAO >= '"+dtos(dEmisDe)+"' AND "
- cQuery += " SE1.E1_EMISSAO <= '"+dTOS(dEmisAte)+"' ) "
- cQuery := ChangeQuery(cQuery)
- dbUseArea( .T., "TOPCONN", TCGENQRY(,,cQuery),cAliasSe1, .F., .T.)
- Do While (cAliasSe1)->(!Eof())
- If (cAliasSe1)->C5_VEND1 == cVend .And. (cAliasSe1)->C5_COMIS1 > 0
- nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
- nPorc := ( nbase*(cAliasSe1)->C5_COMIS1) /100
- Elseif (cAliasSe1)->C5_VEND2 == cVend .And. (cAliasSe1)->C5_COMIS2 > 0
- nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
- nPorc := ( nbase*(cAliasSe1)->C5_COMIS2) /100
- Elseif (cAliasSe1)->C5_VEND3 == cVend .And. (cAliasSe1)->C5_COMIS3 > 0
- nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
- nPorc := ( nbase*(cAliasSe1)->C5_COMIS3) /100
- Elseif (cAliasSe1)->C5_VEND4 == cVend .And. (cAliasSe1)->C5_COMIS4 > 0
- nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
- nPorc := ( nbase*(cAliasSe1)->C5_COMIS4) /100
- Elseif (cAliasSe1)->C5_VEND5 == cVend .And. (cAliasSe1)->C5_COMIS5> 0
- nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
- nPorc := ( nbase*(cAliasSe1)->C5_COMIS5) /100
- Endif
- nTotal += nPorc
- (cAliasSe1)->(DbSkip())
- Enddo
- (cAliasSe1)->(DbCloseArea())
- Return nTotal
Advertisement
Add Comment
Please, Sign In to add comment