Guest User

Untitled

a guest
Mar 8th, 2019
584
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 51.45 KB | None | 0 0
  1. #INCLUDE "MATR540.CH"
  2. #INCLUDE "PROTHEUS.CH"
  3.  
  4. #DEFINE STR_PULA Chr(13) + Chr(10)
  5.  
  6. User Function zMatr540()
  7.  
  8. Local oReport := Nil
  9. //-- Interface de impressao
  10. oReport := ReportDef()
  11. oReport:PrintDialog()
  12.  
  13. Return Nil
  14.  
  15.  
  16. Static Function ReportDef()
  17.  
  18. Local oReport
  19. Local oComissaoA
  20. Local oComissaoS
  21. Local oDetalhe
  22. Local oTotal,oGeral
  23. Local cVend := ""
  24. Local _nTotalFin := 0 //elg
  25. Local dVencto := CTOD( "" )
  26. Local dBaixa := CTOD( "" )
  27. Local nVlrTitulo := 0
  28. Local nBasePrt := 0
  29. Local nComPrt := 0
  30. Local nValTOtNF := 0
  31. Local cTipo := ""
  32. Local cLiquid := ""
  33. Local aValLiq := {}
  34. Local nI2 := 0
  35. Local aLiqProp := {}
  36. Local nValIR := 0
  37. Local nTotSemIR := 0
  38. Local nAc1 := 0
  39. Local nAc2 := 0
  40. Local nAc3 := 0
  41. Local nDecPorc := TamSX3("E3_PORC")[2]
  42. Local nTamData := Len(DTOC(MsDate()))
  43. Local lRndIrrf := GetMV("MV_RNDIRF")
  44. Local cAlias := GetNextAlias()
  45.  
  46. oReport := TReport():New("MATR540",STR0025,"MTR540", {|oReport| ReportPrint(oReport,cAlias,oComissaoA,oComissaoS,oDetalhe,oTotal,oGeral)},STR0026)
  47. oReport:SetLandscape()
  48. oReport:SetTotalInLine(.F.)
  49.  
  50. Pergunte("MTR540",.F.)
  51.  
  52. oComissaoA := TRSection():New(oReport,STR0050,{"SE3","SA3"},{STR0046,STR0047},/*Campos do SX3*/,/*Campos do SIX*/)
  53. oComissaoA:SetTotalInLine(.F.)
  54.  
  55. TRCell():New(oComissaoA,"E3_VEND" ,"SE3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| cVend })
  56. TRCell():New(oComissaoA,"A3_NOME" ,"SA3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| SA3->A3_NOME })
  57.  
  58. // Titulos da Comissao
  59. oDetalhe := TRSection():New(oComissaoA,"Comissão na Emissao",{"SE3","SA3","SA1"},/*{Array com as ordens do}*/,/*Campos do SX3*/,/*Campos do SIX*/)
  60. oDetalhe:SetTotalInLine(.F.)
  61. oDetalhe:SetHeaderBreak(.T.)
  62. TRCell():New(oDetalhe,"E3_EMISSAO" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  63. TRCell():New(oDetalhe,"E3_NUM" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| E3_NUM })
  64. TRCell():New(oDetalhe,"E3_PEDIDO" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  65. TRCell():New(oDetalhe,"E3_CODCLI" ,cAlias,/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  66. TRCell():New(oDetalhe,"A1_NOME" ,cAlias,/*Titulo*/,/*Picture*/ ,30 ,/*lPixel*/,{|| Substr(SA1->A1_NOME,1,30) })
  67. TRCell():New(oDetalhe,"E3_PORC" ,cAlias,STR0032,PesqPict('SE3','E3_PORC') ,TamSx3("E3_PORC" )[1],/*lPixel*/,/*{|| code-block de impressao }*/)
  68. TRCell():New(oDetalhe,"E3_DATA" ,cAlias,/*Titulo*/,/*Picture*/ ,nTamData ,/*lPixel*/,/*{|| code-block de impressao }*/)
  69. TRCell():New(oDetalhe,"nValTOtNF" , ,"Total NF",PesqPict('SF2','F2_VALBRUT') ,TamSx3("F2_VALBRUT")[1] ,/*lPixel*/,/*{|| code-block de impressao }*/)
  70. TRCell():New(oDetalhe,"NVLRTITULO" ," ",STR0035,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE" )[1],/*lPixel*/,{|| 5,5 }) //nVlrTitulo })
  71. TRCell():New(oDetalhe,"NBASEPRT" ," ",STR0036,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE" )[1],/*lPixel*/,{|| nBasePrt })
  72. TRCell():New(oDetalhe,"NCOMPRT" ," ",STR0038,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS" )[1],/*lPixel*/,{|| nComPrt })
  73. //TRCell():New(oDetalhe,"E3_BAIEMI" ,cAlias,STR0040,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| Substr(cTipo,1,1) })
  74. //TRCell():New(oDetalhe,"AJUSTE" ," ",STR0037,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| ""})
  75.  
  76. // Titulos de Liquidacao
  77. oLiquida := TRSection():New(oDetalhe,STR0051,{"SE1","SA1"},/*{Array com as ordens do }*/,/*Campos do SX3*/,/*Campos do SIX*/)
  78. oLiquida:SetTotalInLine(.F.)
  79. TRCell():New(oLiquida,"E1_NUMLIQ" ," ",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,{|| cLiquid })
  80. TRCell():New(oLiquida,"E1_PREFIXO" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  81. TRCell():New(oLiquida,"E1_NUM" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  82. TRCell():New(oLiquida,"E1_PARCELA" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  83. TRCell():New(oLiquida,"E1_TIPO" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  84. TRCell():New(oLiquida,"E1_CLIENTE" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  85. TRCell():New(oLiquida,"E1_LOJA" ,"SE1",/*Titulo*/ ,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  86.  
  87. TRCell():New(oLiquida,"A1_NREDUZ" ,"SA1",/*Titulo*/ ,/*Picture*/ ,TamSX3("A1_NREDUZ")[1],/*lPixel*/,{|| Substr(SA1->A1_NREDUZ,1,30) })
  88. TRCell():New(oLiquida,"A1_NOME" ,"SA1",/*Titulo*/ ,/*Picture*/ ,TamSX3("A1_NOME")[1],/*lPixel*/,{|| Substr(SA1->A1_NOME,1,30) })
  89.  
  90. TRCell():New(oLiquida,"E1_VALOR" ,"SE1",/*Titulo*/ ,Tm(SE1->E1_VALOR,15,2) ,/*Tamanho*/ ,/*lPixel*/,/*{|| code-block de impressao }*/)
  91. TRCell():New(oLiquida,"NVALLIQ1" ," ",STR0043 ,/*Picture*/ ,nTamData ,/*lPixel*/,{|| aValLiq[nI2,1] })
  92. TRCell():New(oLiquida,"NVALLIQ2" ," ",STR0044 ,Tm(SE1->E1_VALOR,15,2) ,/*Tamanho*/ ,/*lPixel*/,{|| aValLiq[nI2,2] })
  93. TRCell():New(oLiquida,"NLIQPROP" ," ",STR0045 ,Tm(SE1->E1_VALOR,15,2) ,/*Tamanho*/ ,/*lPixel*/,{|| aLiqProp[nI2] })
  94.  
  95. //-- Secao Totalizadora do Valor do IR e Total (-) IR
  96. oTotal := TRSection():New(oReport,"",{},/*{Array com as ordens do }*/,/*Campos do SX3*/,/*Campos do SIX*/)
  97. 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])) })
  98. TRCell():New(oTotal,"TOTSEMIR" ," ",STR0029,"@E 99,999,999.99",12 ,/*lPixel*/,{|| nTotSemIR })
  99.  
  100. //-- TOTAL GERAL
  101. oGeral := TRSection():New(oTotal,"",{},/*{Array com as ordens do }*/,/*Campos do SX3*/,/*Campos do SIX*/)
  102. TRCell():New(oGeral, "TXTTOTAL" , "" , STR0052 , , 08 ,/*lPixel*/,{ || "" } )
  103. TRCell():New(oGeral, "GERAL" , "" , STR0053 , PesqPict('SE3','E3_COMIS') , TamSX3("E3_COMIS")[1] ,/*lPixel*/,/*CodeBlock*/)
  104. TRCell():New(oGeral, "PERCENT" , "" , STR0054 , PesqPict("SE3","E3_PORC" ) , TamSX3("E3_PORC" )[1] ,/*lPixel*/,/*CodeBlock*/)
  105. TRCell():New(oGeral, "COMIS" , "" , STR0055 , PesqPict('SE3','E3_COMIS') , TamSX3("E3_COMIS")[1] ,/*lPixel*/,/*CodeBlock*/)
  106.  
  107. oComissaoS := TRSection():New(oReport,STR0049,{"SE3","SA3"},{STR0046,STR0047},/*Campos do SX3*/,/*Campos do SIX*/)
  108. oComissaoS:SetTotalInLine(.F.)
  109.  
  110. TRCell():New(oComissaoS,"E3_VEND" ,"SE3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| cVend })
  111. TRCell():New(oComissaoS,"A3_NOME" ,"SA3",/*Titulo*/,/*Picture*/ ,/*Tamanho*/ ,/*lPixel*/ ,{|| SA3->A3_NOME })
  112. TRCell():New(oComissaoS,"TOTALTIT","" ,STR0027 ,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE")[1] ,/*lPixel*/ ,{|| nAc3 })
  113. TRCell():New(oComissaoS,"E3_BASE" ,cAlias,STR0030 ,PesqPict('SE3','E3_BASE') ,TamSx3("E3_BASE")[1] ,/*lPixel*/ ,{|| nAc1 })
  114. TRCell():New(oComissaoS,"E3_PORC" ,cAlias,STR0032 ,PesqPict('SE3','E3_PORC') ,TamSx3("E3_PORC")[1] ,/*lPixel*/ ,{||NoRound((nAc2*100) / nAc1),2})
  115. TRCell():New(oComissaoS,"E3_COMIS",cAlias,STR0031 ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{|| nAc2 })
  116. //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])) })
  117. //TRCell():New(oComissaoS,"TOTSEMIR","" ,STR0029 ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{||nTotSemIR})
  118. TRCell():New(oComissaoS,"VALFIN" ,"" ,"Previsao Baixa" ,PesqPict('SE3','E3_COMIS') ,TamSx3("E3_COMIS")[1] ,/*lPixel*/ ,{|| fSumTiti(_nTotalFin) })
  119.  
  120.  
  121. oReport:Section(1):SetHeaderPage()
  122. oReport:Section(3):SetHeaderPage()
  123. oReport:Section(1):Setedit(.T.)
  124. oReport:Section(1):Section(1):Setedit(.T.)
  125. oReport:Section(1):Section(1):Section(1):Setedit(.T.)
  126. oReport:Section(2):Setedit(.F.)
  127.  
  128.  
  129. //Analitico
  130. oDetalhe:Cell("NVLRTITULO"):SetHeaderAlign("RIGHT")
  131. oDetalhe:Cell("NBASEPRT"):SetHeaderAlign("RIGHT")
  132. oDetalhe:Cell("NCOMPRT"):SetHeaderAlign("RIGHT")
  133. //Sintetico
  134. oComissaoS:Cell("TOTALTIT"):SetHeaderAlign("RIGHT")
  135. oComissaoS:Cell("E3_BASE" ):SetHeaderAlign("RIGHT")
  136. oComissaoS:Cell("E3_COMIS"):SetHeaderAlign("RIGHT")
  137. //oComissaoS:Cell("VALIR" ):SetHeaderAlign("RIGHT")
  138. //oComissaoS:Cell("TOTSEMIR"):SetHeaderAlign("RIGHT")
  139. oComissaoS:Cell("VALFIN" ):SetHeaderAlign("RIGHT")
  140.  
  141. //IR
  142. oTotal:Cell("TOTALIR"):SetHeaderAlign("RIGHT")
  143. oTotal:Cell("TOTSEMIR"):SetHeaderAlign("RIGHT")
  144.  
  145. //TOTAL GERAL
  146. oGeral:Cell("TXTTOTAL"):SetHeaderAlign("RIGHT")
  147. oGeral:Cell("GERAL" ):SetHeaderAlign("RIGHT")
  148. oGeral:Cell("PERCENT" ):SetHeaderAlign("RIGHT")
  149. oGeral:Cell("COMIS" ):SetHeaderAlign("RIGHT")
  150.  
  151. Return(oReport)
  152.  
  153.  
  154.  
  155. Static Function ReportPrint(oReport,cAlias,oComissaoA,oComissaoS,oDetalhe,oTotal,oGeral)
  156.  
  157. Local dEmissao := CTOD( "" )
  158. Local nTotLiq := 0
  159. Local aLiquid := {}
  160. Local ny
  161. Local cWhere := ""
  162. Local cNomArq, cFilialSE1, cFilialSE3
  163. Local nI := 0
  164. Local cOrder := ""
  165. Local nDecs
  166. Local nTotPorc := 0
  167. Local nTotPerVen := 0
  168. Local nTotPerGer := 0
  169. Local nTaxa := 0
  170.  
  171. Local cDocLiq := ""
  172. Local cTitulo := ""
  173. Local cAjuste := ""
  174. Local nTotBase := 0
  175. Local nTotComis := 0
  176. Local nSection := 0
  177. Local nOrdem := 0
  178. Local nTGerBas := 0
  179. Local nTGerCom := 0
  180. Local cFilSE1 := ""
  181. Local cFilSE3 := ""
  182. Local cFilSA1 := ""
  183. Local lVend := .F.
  184. Local lFirst := .F.
  185. Local lRndIrrf := GetMV("MV_RNDIRF")
  186.  
  187. If oReport:Section(1):GetOrder() == 1 // Ordem: por Titulo
  188. nOrdem := 1
  189. Else // Ordem: por Cliente
  190. nOrdem := 2
  191. EndIf
  192.  
  193. If mv_par12 == 1 // Analitico
  194. oReport:Section(3):Disable()
  195. nSection := 1
  196.  
  197. If mv_par14 == 1
  198. oReport:Section(1):section(1):Cell("A1_NOME"):Disable()
  199. oReport:Section(1):section(1):Section(1):Cell("A1_NOME"):Disable()
  200. Else
  201. oReport:Section(1):section(1):Cell("A1_NREDUZ"):Disable()
  202. oReport:Section(1):section(1):Section(1):Cell("A1_NREDUZ"):Disable()
  203. EndIf
  204. oReport:Section(1):Cell("E3_VEND"):SetBlock({|| cVend })
  205. oReport:Section(1):Section(1):Cell("DVENCTO" ):SetBlock({|| dVencto })
  206. oReport:Section(1):Section(1):Cell("DBAIXA" ):SetBlock({|| dBaixa })
  207. oReport:Section(1):Section(1):Cell("NVLRTITULO" ):SetBlock({|| nVlrTitulo })
  208. oReport:Section(1):Section(1):Cell("NBASEPRT" ):SetBlock({|| nBasePrt })
  209. oReport:Section(1):Section(1):Cell("NCOMPRT" ):SetBlock({|| nComPrt })
  210. oReport:Section(1):Section(1):Cell("E3_BAIEMI" ):SetBlock({|| Substr(cTipo,1,1) })
  211. oReport:Section(1):Section(1):Cell("AJUSTE" ):SetBlock({|| IIf( (cAjuste == "S" .And. MV_PAR07 == 1),"AJUSTE","" ) })
  212. oReport:Section(1):Section(1):Section(1):Cell("E1_NUMLIQ" ):SetBlock({|| cLiquid })
  213. oReport:Section(1):Section(1):Section(1):Cell("NVALLIQ1" ):SetBlock({|| aValLiq[nI2,1] })
  214. oReport:Section(1):Section(1):Section(1):Cell("NVALLIQ2" ):SetBlock({|| aValLiq[nI2,2] })
  215. oReport:Section(1):Section(1):Section(1):Cell("NLIQPROP" ):SetBlock({|| aLiqProp[nI2] })
  216. oReport:Section(2):Cell("TOTALIR" ):SetBlock({|| If(lRndIrrf,Round(nValIR,TamSX3("E2_IRRF")[2]),NoRound(nValIR,TamSX3("E2_IRRF")[2])) })
  217. oReport:Section(2):Cell("TOTSEMIR" ):SetBlock({|| nTotSemIR })
  218.  
  219. 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 ) }
  220.  
  221. TRFunction():New(oDetalhe:Cell("NVLRTITULO"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,bVOrig,.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
  222. TRFunction():New(oDetalhe:Cell("NBASEPRT") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
  223. TRFunction():New(oDetalhe:Cell("NCOMPRT") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_COMIS'),/*uFormula*/,.T./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
  224. 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*/)
  225.  
  226. If mv_par10 > 0
  227. TRFunction():New(oTotal:Cell("TOTALIR") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
  228. TRFunction():New(oTotal:Cell("TOTSEMIR") ,/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,IIf(mv_par11 == 2,.T.,.F.)/*lEndReport*/,/*lEndPage*/)
  229. EndIf
  230.  
  231. cVend := ""
  232. dVencto := ctod(" / / ")
  233. dBaixa := ctod(" / / ")
  234. nVlrTitulo := 0
  235. nBasePrt := 0
  236. nComPrt := 0
  237. cTipo := ""
  238. cLiquid := ""
  239. nValIR := 0
  240. nTotSemIR := 0
  241.  
  242. Else // Sintetico
  243.  
  244. TRFunction():New(oComissaoS:Cell("TOTALTIT"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  245. TRFunction():New(oComissaoS:Cell("E3_BASE"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  246. TRFunction():New(oComissaoS:Cell("E3_PORC"),/* cID */,"ONPRINT",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_PORC'),{||nTotPorc},.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  247. TRFunction():New(oComissaoS:Cell("E3_COMIS"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,PesqPict('SE3','E3_COMIS'),/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  248. //TRFunction():New(oComissaoS:Cell("VALIR"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  249. //TRFunction():New(oComissaoS:Cell("TOTSEMIR"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  250. TRFunction():New(oComissaoS:Cell("VALFIN"),/* cID */,"SUM",/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F./*lEndSection*/,.T./*lEndReport*/,/*lEndPage*/)
  251. oReport:Section(1):Disable()
  252. oReport:Section(1):Section(1):Disable()
  253. oReport:Section(1):Section(1):Section(1):Disable()
  254. nSection := 3
  255.  
  256. oReport:Section(3):Cell("E3_VEND" ):SetBlock({|| cVend })
  257. oReport:Section(3):Cell("TOTALTIT" ):SetBlock({|| nAc3 })
  258. oReport:Section(3):Cell("E3_BASE" ):SetBlock({|| nAc1 })
  259. oReport:Section(3):Cell("E3_PORC" ):SetBlock({||NoRound((nAc2*100) / nAc1,TamSX3("E3_PORC")[2]) })
  260. oReport:Section(3):Cell("E3_COMIS" ):SetBlock({||nAc2 })
  261. oReport:Section(3):Cell("VALFIN" ):SetBlock({|| _nTotalFin })
  262. // oReport:Section(3):Cell("TOTSEMIR" ):SetBlock({|| nTotSemIR })
  263.  
  264. cVend := ""
  265. nAc1 := 0
  266. nAc2 := 0
  267. nAc3 := 0
  268. nValIR := 0
  269. nTotSemIR := 0
  270.  
  271. EndIf
  272. If len(oReport:Section(1):GetAdvplExp("SE1")) > 0
  273. cFilSE1 := oReport:Section(1):GetAdvplExp("SE1")
  274. EndIf
  275. If len(oReport:Section(3):GetAdvplExp("SE3")) > 0
  276. cFilSE3 := oReport:Section(3):GetAdvplExp("SE3")
  277. EndIf
  278. If len(oReport:Section(1):GetAdvplExp("SA1")) > 0
  279. cFilSA1 := oReport:Section(1):GetAdvplExp("SA1")
  280. EndIf
  281.  
  282.  
  283. // Indexa de acordo com ordem escolhida oelo cliente
  284. dbSelectArea("SE3")
  285. If nOrdem == 1 // Ordem: por Titulo
  286. dbSetOrder(2)
  287. cOrder := "E3_FILIAL,E3_VEND,E3_PREFIXO,E3_NUM,E3_PARCELA"
  288. Else // Ordem: por Cliente
  289. dbSetOrder(3)
  290. cOrder := "E3_FILIAL,E3_VEND,E3_CODCLI,E3_LOJA,E3_PREFIXO,E3_NUM,E3_PARCELA"
  291. EndIf
  292.  
  293.  
  294. MakeSqlExpr(oReport:uParam)
  295.  
  296. oReport:Section(nSection):BeginQuery()
  297.  
  298. If mv_par01 == 1
  299. cWhere += "AND E3_BAIEMI <> 'B'" //Baseado pela emissao da NF
  300. Elseif mv_par01 == 2
  301. cWhere += "AND E3_BAIEMI = 'B'" //Baseado pela baixa do titulo
  302. EndIf
  303. If mv_par06 == 1 //Comissoes a pagar
  304. cWhere += "AND E3_DATA = '" + Dtos(Ctod("")) + "'"
  305. ElseIf mv_par06 == 2 //Comissoes pagas
  306. cWhere += "AND E3_DATA <> '" + Dtos(Ctod("")) + "'"
  307. Endif
  308. If ValType(mv_par15) == "N"
  309. If mv_par15 <> 1 // Todos
  310. If mv_par15 == 2 // Parceiros
  311. cWhere += "AND A3_TIPO = 'P'"
  312. ElseIf mv_par15 == 3 // Vendedores
  313. cWhere += "AND A3_TIPO <> 'P'"
  314. EndIf
  315. EndIf
  316. EndIf
  317. //cWhere += " ORDER BY " + cOrder
  318. cWhere := "%" + cWhere + "%"
  319.  
  320. corder := " ORDER BY " + cOrder
  321.  
  322. BEGIN REPORT QUERY oDetalhe
  323. BeginSql Alias cAlias
  324. 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
  325. FROM %table:SA3% SA3
  326. LEFT JOIN %table:SE3% SE3
  327. ON A3_COD = E3_VEND
  328. AND E3_FILIAL = %xFilial:SE3%
  329. AND E3_EMISSAO >= %Exp:Dtos(mv_par02)% AND E3_EMISSAO <= %Exp:Dtos(mv_par03)%
  330. AND E3_VEND BETWEEN %Exp:MV_PAR04% AND %Exp:MV_PAR05%
  331. AND SE3.%notdel% %Exp:cWhere%
  332. WHERE A3_FILIAL = %xFilial:SA3%
  333. AND A3_COD BETWEEN %Exp:MV_PAR04% AND %Exp:MV_PAR05%
  334. AND SA3.%NotDel%
  335. ORDER BY A3_COD
  336. EndSql
  337. END REPORT QUERY oDetalhe
  338.  
  339.  
  340. oReport:Section(nSection):EndQuery()
  341.  
  342.  
  343. TRPosition():New(oReport:Section(nSection),"SA3",1,{|| xFilial("SA3")+cVend })
  344. //TRPosition():New(oReport:Section(nSection),"SE3",2,{|| xFilial("SE3")+cVend+(cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_SEQ})
  345. If mv_par12 == 1
  346. TRPosition():New(oReport:Section(1):Section(1),"SA1",1,{|| xFilial("SA1")+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA })
  347. TRPosition():New(oReport:Section(1):Section(1):Section(1),"SA1",1,{|| xFilial("SA1")+SE1->E1_CLIENTE+SE1->E1_LOJA })
  348. EndIf
  349.  
  350.  
  351. If mv_par12 == 2 .Or. mv_par12 == 1
  352. nTotBase := 0
  353. nTotComis := 0
  354. EndIf
  355.  
  356. dbSelectArea(cAlias)
  357. dbGoTop()
  358. nDecs := GetMv("MV_CENT"+(IIF(mv_par08 > 1 , STR(mv_par08,1),"")))
  359.  
  360. oReport:SetMeter(SA3->(LastRec()))
  361. dbSelectArea(cAlias)
  362.  
  363. While !oReport:Cancel() .And. !&(cAlias)->(Eof())
  364.  
  365. cVend := &(cAlias)->(A3_COD)
  366. nAc1 := 0
  367. nAc2 := 0
  368. nAc3 := 0
  369. nTotPerVen := 0
  370.  
  371. oReport:Section(nSection):Init()
  372. If mv_par12 == 1 .And. Empty(cFilSE1) .And. Empty(cFilSE3) .And. Empty(cFilSA1)
  373. oReport:Section(nSection):PrintLine()
  374. EndIf
  375.  
  376. lVend:= .T.
  377. lFirst := .T.
  378. While !Eof() .And. xFilial("SA3") == (cAlias)->A3_FILIAL .And. (cAlias)->A3_COD == cVend //xFilial("SE3") == (cAlias)->E3_FILIAL .And. (cAlias)->E3_VEND == cVend
  379. nBasePrt := 0
  380. nComPrt := 0
  381. nVlrTitulo := 0
  382. _nTotalFin := fSumTiti(cVend, mv_par02,mv_par03)
  383. If mv_par12 == 1
  384. nTotBase := 0
  385. nTotComis := 0
  386. EndIf
  387.  
  388. dbSelectArea("SE3")
  389. dbSetOrder(2)
  390. dbSeek(xFilial("SE3")+cVend+&(cAlias)->(E3_PREFIXO)+&(cAlias)->(E3_NUM)+&(cAlias)->(E3_PARCELA))
  391.  
  392. dbSelectArea("SE1")
  393. dbSetOrder(1)
  394. dbSeek(xFilial()+&(cAlias)->(E3_PREFIXO)+&(cAlias)->(E3_NUM)+&(cAlias)->(E3_PARCELA)+&(cAlias)->(E3_TIPO))
  395.  
  396. // Se nao imprime detalhes da origem, desconsidera titulos faturados
  397. If mv_par13 <> 1 .And. !Empty(SE1->E1_FATURA) .And. SE1->E1_FATURA <> "NOTFAT"
  398. (cAlias)->( dbSkip() )
  399. Loop
  400. EndIf
  401.  
  402. // Verifica filtro do usuario
  403. If !Empty(cFilSE1) .And. !(&cFilSE1)
  404. dbSelectArea(cAlias)
  405. dbSkip()
  406. Loop
  407. ElseIf !Empty(cFilSE1) .And. (&cFilSE1) .And. lFirst
  408. oReport:Section(nSection):PrintLine()
  409. lFirst := .F.
  410. EndIf
  411. If!Empty(cFilSE3) .And. !(cAlias)->(&cFilSE3)
  412. dbSelectArea(cAlias)
  413. dbSkip()
  414. Loop
  415. ElseIf !Empty(cFilSE3) .And. (cAlias)->(&cFilSE3) .And. lVend
  416. If mv_par12 == 1
  417. oReport:Section(nSection):PrintLine()
  418. lVend:= .F.
  419. EndIf
  420. EndIf
  421. If!Empty(cFilSA1)
  422. SA1->(dbSetOrder(1))
  423. If SA1->(dbSeek(xFilial()+&(cAlias)->(E3_CODCLI)+&(cAlias)->(E3_LOJA)))
  424. If !( SA1->&cFilSa1)
  425. dbSelectArea(cAlias)
  426. dbSkip()
  427. Loop
  428. ElseIf (SA1->&cFilSA1) .And. lVend
  429. oReport:Section(nSection):PrintLine()
  430. lVend := .F.
  431. EndIf
  432. EndIf
  433. EndIf
  434. If nModulo == 12
  435. nVlrTitulo:= Round(xMoeda((cAlias)->E3_BASE,SE1->E1_MOEDA,MV_PAR08,(cAlias)->E3_EMISSAO,nDecs+1),nDecs)
  436. Else
  437. nVlrTitulo:= Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
  438. EndIf
  439.  
  440. dEmissao := SE1->E1_EMISSAO
  441. cLiquid := ""
  442. cDocLiq := SE1->E1_NUMLIQ
  443.  
  444. If mv_par12 == 1
  445. dVencto := SE1->E1_VENCTO
  446. aLiquid := {}
  447. aValLiq := {}
  448. aLiqProp := {}
  449. nTotLiq := 0
  450. If mv_par13 == 1 .And. !Empty(SE1->E1_NUMLIQ) .And. FindFunction("FA440LIQSE1")
  451. cLiquid := SE1->E1_NUMLIQ
  452. cDocLiq := SE1->E1_NUMLIQ
  453. // Obtem os registros que deram origem ao titulo gerado pela liquidacao
  454. Fa440LiqSe1(SE1->E1_NUMLIQ,@aLiquid,@aValLiq)
  455. For ny := 1 to Len(aValLiq)
  456. nTotLiq += aValLiq[ny,2]
  457. Next
  458. For ny := 1 to Len(aValLiq)
  459. aAdd(aLiqProp,(nVlrTitulo/nTotLiq)*aValLiq[ny,2])
  460. Next
  461. Endif
  462.  
  463. If (cAlias)->E3_BAIEMI == "B"
  464. dBaixa := (cAlias)->E3_EMISSAO
  465. Else
  466. dBaixa := SE1->E1_BAIXA
  467. Endif
  468. EndIf
  469.  
  470. If Eof()
  471.  
  472. dbSelectArea("SF1")
  473. dbSetOrder(1)
  474.  
  475. dbSelectArea("SF2")
  476. dbSetorder(1)
  477.  
  478. If AllTrim((cAlias)->E3_TIPO) == "NCC"
  479. SF1->(dbSeek(xFilial("SF1")+(cAlias)->E3_NUM+(cAlias)->E3_PREFIXO+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA,.t.))
  480. nVlrTitulo := Round(xMoeda(SF1->F1_VALBRUT,SF1->F1_MOEDA,mv_par08,SF1->F1_DTDIGIT,nDecs+1,SF1->F1_TXMOEDA),nDecs)
  481. dEmissao := SF1->F1_DTDIGIT
  482. Else
  483. dbSeek(xFilial()+(cAlias)->E3_NUM+(cAlias)->E3_PREFIXO)
  484. nVlrTitulo := Round(xMoeda(F2_VALFAT,SF2->F2_MOEDA,mv_par08,SF2->F2_EMISSAO,nDecs+1,SF2->F2_TXMOEDA),nDecs)
  485. dEmissao := SF2->F2_EMISSAO
  486. EndIf
  487.  
  488. If mv_par12 == 1
  489. dVencto := CTOD( "" )
  490. dBaixa := CTOD( "" )
  491. EndIf
  492.  
  493. If Eof()
  494. nVlrTitulo := 0
  495. dbSelectArea("SE1")
  496. dbSetOrder(1)
  497. cFilialSE1 := xFilial()
  498. dbSeek(cFilialSE1+&(cAlias)->(E3_PREFIXO)+&(cAlias)->(E3_NUM))
  499. While ( !Eof() .And. (cAlias)->E3_PREFIXO == SE1->E1_PREFIXO .And.;
  500. (cAlias)->E3_NUM == SE1->E1_NUM .And.;
  501. (cAlias)->E3_FILIAL == cFilialSE1 )
  502. If ( SE1->E1_TIPO == (cAlias)->E3_TIPO .And. ;
  503. SE1->E1_CLIENTE == (cAlias)->E3_CODCLI .And. ;
  504. SE1->E1_LOJA == (cAlias)->E3_LOJA )
  505. nVlrTitulo += Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
  506.  
  507. If mv_par12 == 1
  508. dVencto := CTOD( "" )
  509. dBaixa := CTOD( "" )
  510. EndIf
  511.  
  512. If Empty(dEmissao)
  513. dEmissao := SE1->E1_EMISSAO
  514. EndIf
  515.  
  516. EndIf
  517. dbSelectArea("SE1")
  518. dbSkip()
  519. EndDo
  520. EndIf
  521. Endif
  522.  
  523. If Empty(dEmissao)
  524. dEmissao := NIL
  525. EndIf
  526.  
  527. nTaxa := (cAlias)->E3_BASE / SE1->E1_VALOR
  528.  
  529. If MV_PAR08 == 1 .Or. SE1->E1_MOEDA == 1
  530. nBasePrt:= Round(xMoeda((cAlias)->E3_BASE ,1,MV_PAR08,dEmissao,nDecs+1),nDecs)
  531. nComPrt := Round(xMoeda((cAlias)->E3_COMIS,1,MV_PAR08,dEmissao,TamSx3("E3_COMIS")[2]+1),TamSx3("E3_COMIS")[2])
  532. Else
  533. nBasePrt:= Round(xMoeda((cAlias)->E3_BASE ,1,MV_PAR08,dEmissao,nDecs+1,SE1->E1_TXMOEDA,nTaxa),nDecs)
  534. nComPrt := Round(xMoeda((cAlias)->E3_COMIS,1,MV_PAR08,dEmissao,TamSx3("E3_COMIS")[2]+1,SE1->E1_TXMOEDA,nTaxa),TamSx3("E3_COMIS")[2])
  535. EndIf
  536.  
  537. If mv_par09 == 2 .And. mv_par08 != 1 //eradas em outras moedas
  538. If nVlrTitulo == 0 .And. nBasePrt == 0 .And. nComPrt == 0
  539. (cAlias)->(DbSkip())
  540. Loop
  541. EndIf
  542. EndIf
  543.  
  544. If nBasePrt < 0 .And. nComPrt < 0
  545. nVlrTitulo := nVlrTitulo * -1
  546. Endif
  547.  
  548. If mv_par12 == 1
  549. cAjuste := (cAlias)->E3_AJUSTE
  550. cTipo := (cAlias)->E3_BAIEMI
  551. dbSelectArea(cAlias)
  552. oReport:Section(1):Section(1):Init()
  553. oReport:Section(1):Section(1):PrintLine()
  554. oReport:IncMeter()
  555.  
  556. If mv_par13 == 1
  557. For nI := 1 To Len(aLiquid)
  558. nI2 := nI
  559. SE1->(MsGoto(aLiquid[nI]))
  560. oReport:Section(1):SetHeaderBreak(.T.)
  561. oReport:Section(1):Section(1):Section(1):Init()
  562. oReport:Section(1):Section(1):Section(1):PrintLine()
  563. Next
  564. If Len(aLiquid) > 0
  565. oReport:Section(1):Section(1):Section(1):Finish()
  566. EndIf
  567. Endif
  568.  
  569. EndIf
  570.  
  571. nAc1 += nBasePrt
  572. nAc2 += nComPrt
  573. nTotPerVen += (nBasePrt*(cAlias)->E3_PORC)/100
  574. nTotPerGer += nTotPerVen
  575. If cTitulo <> (cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_TIPO+(cAlias)->E3_VEND+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA
  576. nAc3 += nVlrTitulo
  577. cTitulo:= (cAlias)->E3_PREFIXO+(cAlias)->E3_NUM+(cAlias)->E3_PARCELA+(cAlias)->E3_TIPO+(cAlias)->E3_VEND+(cAlias)->E3_CODCLI+(cAlias)->E3_LOJA
  578. cDocLiq:= ""
  579. EndIf
  580.  
  581. dbSelectArea(cAlias)
  582. dbSkip()
  583. EndDo
  584.  
  585. If mv_par12 == 1
  586. nTotBase += nAc1
  587. nTotComis += nAc2
  588. nTotPorc := Round((nTotComis / nTotBase)*100,TamSx3("E3_COMIS")[2])
  589. nTotPerVen := Round((nTotPerVen/nAc1)*100,TamSx3("E3_PORC")[2])
  590. oReport:Section(1):Section(1):SetTotalText("Total do Vendedor " + cVend)
  591. oReport:Section(1):Section(1):Finish()
  592. EndIf
  593.  
  594. nValIR := 0
  595. nTotSemIR := 0
  596. If mv_par10 > 0 .And. (nAc2 * mv_par10 / 100) > GetMV("MV_VLRETIR") //IR
  597. nValIR := nAc2 * (MV_PAR10/100)
  598. nTotSemIR := nAc2 - (nAc2 * (MV_PAR10/100))
  599. Else
  600. nTotSemIR := nAc2
  601. EndIf
  602.  
  603. If mv_par12 == 2
  604. nTotBase += nAc1
  605. nTotComis += nAc2
  606. nTotPorc := Round((nTotComis / nTotBase)*100,TamSx3("E3_COMIS")[2])
  607. nTotPerVen := Round((nTotPerVen/nAc1)*100,TamSx3("E3_PORC")[2])
  608. oReport:Section(nSection):Init()
  609. oReport:Section(nSection):PrintLine()
  610. EndIf
  611. oReport:Section(nSection):Finish()
  612.  
  613. If mv_par12 == 1 .And. mv_par10 > 0
  614. oReport:Section(2):Init()
  615. oReport:Section(2):PrintLine()
  616. oReport:Section(2):Finish()
  617. EndIf
  618.  
  619. If mv_par11 == 1
  620. oReport:Section(nSection):SetPageBreak(.T.)
  621. EndIf
  622.  
  623. If mv_par12 == 2
  624. oReport:IncMeter()
  625. EndIf
  626.  
  627. nTGerBas += nAc1
  628. nTGerCom += nAc2
  629.  
  630. EndDo
  631.  
  632. nTotPorc := ((nTGerCom*100)/nTGerBas)
  633.  
  634. If mv_par11 == 1
  635. oGeral:SetPageBreak(.T.)
  636. oGeral:Cell("TXTTOTAL"):SetSize(21)
  637. oGeral:Cell("GERAL" ):SetBlock ( { || nTGerBas } )
  638. oGeral:Cell("PERCENT" ):SetBlock ( { || nTotPorc } )
  639. oGeral:Cell("COMIS" ):SetBlock ( { || nTGerCom } )
  640. oGeral:Init()
  641. oGeral:PrintLine()
  642. oGeral:Finish()
  643. oGeral:SetPageBreak(.T.)
  644. EndIf
  645.  
  646. Return
  647.  
  648.  
  649. Static Function Matr540R3()
  650.  
  651. Local wnrel
  652. Local titulo := STR0001 //"Relatorio de Comissoes"
  653. Local cDesc1 := STR0002 //"Emissao do relatorio de Comissoes."
  654. Local tamanho := "G"
  655. Local limite := 220
  656. Local cString := "SE3"
  657. Local cAliasAnt := Alias()
  658. Local cOrdemAnt := IndexOrd()
  659. Local nRegAnt := Recno()
  660. Local cDescVend := " "
  661.  
  662. Private aReturn := { OemToAnsi(STR0003), 1,OemToAnsi(STR0004), 1, 2, 1, "",1 } //"Zebrado"###"Administracao"
  663. Private nomeprog:= "MATR540"
  664. Private aLinha := { },nLastKey := 0
  665. Private cPerg := "MTR540"
  666.  
  667. Pergunte("MTR540",.F.)
  668.  
  669.  
  670. //?Variaveis utilizadas para parametros ?
  671. //?mv_par01 // Pela <E>missao,<B>aixa ou <A>mbos ?
  672. //?mv_par02 // A partir da data ?
  673. //?mv_par03 // Ate a Data ?
  674. //?mv_par04 // Do Vendedor ?
  675. //?mv_par05 // Ao Vendedor ?
  676. //?mv_par06 // Quais (a Pagar/Pagas/Ambas) ?
  677. //?mv_par07 // Incluir Devolucao ? ?
  678. //?mv_par08 // Qual moeda ?
  679. //?mv_par09 // Comissao Zerada ? ?
  680. //?mv_par10 // Abate IR Comiss ?
  681. //?mv_par11 // Quebra pag.p/Vendedor ?
  682. //?mv_par12 // Tipo de Relatorio (Analitico/Sintetico)?
  683. //?mv_par13 // Imprime detalhes origem ?
  684. //?mv_par14 // Nome cliente ?
  685.  
  686. //?Envia controle para a funcao SETPRINT ?
  687.  
  688. wnrel := "MATR540"
  689. wnrel := SetPrint(cString,wnrel,cPerg,titulo,cDesc1,"","",.F.,"",.F.,Tamanho)
  690.  
  691. If nLastKey==27
  692. dbClearFilter()
  693. Return
  694. Endif
  695. SetDefault(aReturn,cString)
  696. If nLastKey ==27
  697. dbClearFilter()
  698. Return
  699. Endif
  700.  
  701. RptStatus({|lEnd| C540Imp(@lEnd,wnRel,cString)},Titulo)
  702.  
  703.  
  704. //?Retorna para area anterior, indice anterior e registro ant. ?
  705.  
  706.  
  707. DbSelectArea(caliasAnt)
  708. DbSetOrder(cOrdemAnt)
  709. DbGoto(nRegAnt)
  710. Return
  711.  
  712.  
  713.  
  714. Static Function C540Imp(lEnd,WnRel,cString)
  715.  
  716. Local CbCont,cabec1,cabec2
  717. Local tamanho := "G"
  718. Local limite := 220
  719. Local nomeprog := "MATR540"
  720. Local imprime := .T.
  721. Local cPict := ""
  722. Local cTexto,j :=0,nTipo:=0
  723. Local cCodAnt,nCol:=0
  724. Local nAc1:=0,nAc2:=0,nAg1:=0,nAg2:=0,nAc3:=0,nAg3:=0,nAc4:=0,nAg4:=0,lFirstV:=.T.
  725. Local nTregs,nMult,nAnt,nAtu,nCnt,cSav20,cSav7
  726. Local lContinua:= .T.
  727. Local cNFiscal :=""
  728. Local aCampos :={}
  729. Local lImpDev := .F.
  730. Local cBase := ""
  731. Local cNomArq, cCondicao, cFilialSE1, cFilialSE3, cChave, cFiltroUsu
  732. Local nDecs := GetMv("MV_CENT"+(IIF(mv_par08 > 1 , STR(mv_par08,1),"")))
  733. Local nBasePrt :=0, nComPrt:=0
  734. Local aStru := SE3->(dbStruct()), ni
  735. Local nDecPorc := TamSX3("E3_PORC")[2]
  736. Local nVlrTitulo := 0
  737. Local nTotPerVen := 0
  738. Local nTotPerGer := 0
  739. Local lRndIrrf := GetMV("MV_RNDIRF")
  740.  
  741. Local cDocLiq := ""
  742. Local cTitulo := ""
  743. Local dEmissao := CTOD( "" )
  744. Local nTotLiq := 0
  745. Local aLiquid := {}
  746. Local aValLiq := {}
  747. Local aLiqProp := {}
  748. Local ny
  749. 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})
  750.  
  751. //?Variaveis utilizadas para Impressao do Cabecalho e Rodape ?
  752.  
  753. cbtxt := Space(10)
  754. cbcont := 00
  755. li := 80
  756. m_pag := 01
  757. imprime := .T.
  758.  
  759. nTipo := IIF(aReturn[4]==1,15,18)
  760.  
  761.  
  762. //?Definicao dos cabecalhos ?
  763.  
  764. If mv_par12 == 1
  765. If mv_par01 == 1
  766. titulo := OemToAnsi(STR0005)+OemToAnsi(STR0006)+" ("+OemToAnsi(STR0019)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA EMISSAO)"
  767. Elseif mv_par01 == 2
  768. titulo := OemToAnsi(STR0005)+OemToAnsi(STR0007)+" ("+OemToAnsi(STR0019)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA BAIXA)"
  769. Else
  770. titulo := OemToAnsi(STR0008)+" ("+OemToAnsi(STR0019)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES"
  771. Endif
  772.  
  773. cabec1:=OemToAnsi(STR0009) //"PRF NUMERO PARC. CODIGO DO LJ NOME DT.BASE DATA DATA DATA NUMERO VALOR VALOR % VALOR TIPO"
  774. cabec2:=OemToAnsi(STR0010) //" TITULO CLIENTE COMISSAO VENCTO BAIXA PAGTO PEDIDO TITULO BASE COMISSAO COMISSAO"
  775. // 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
  776. // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
  777. // 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
  778. If cPaisLoc == "MEX"
  779. Cabec1 := Substr(Cabec1,1,10) + Space(16) + Substr(Cabec1,11)
  780. Cabec2 := Substr(Cabec2,1,10) + Space(16) + Substr(Cabec2,11)
  781. EndIf
  782. Else
  783. If mv_par01 == 1
  784. titulo := OemToAnsi(STR0005)+OemToAnsi(STR0006)+" ("+OemToAnsi(STR0020)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA EMISSAO)"
  785. Elseif mv_par01 == 2
  786. titulo := OemToAnsi(STR0005)+OemToAnsi(STR0007)+" ("+OemToAnsi(STR0020)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES "###"(PGTO PELA BAIXA)"
  787. Else
  788. titulo := OemToAnsi(STR0008)+" ("+OemToAnsi(STR0020)+") "+ " - " + GetMv("MV_MOEDA" + STR(mv_par08,1)) //"RELATORIO DE COMISSOES"
  789. Endif
  790. cabec1:=OemToAnsi(STR0021) //"CODIGO VENDEDOR TOTAL TOTAL % TOTAL TOTAL TOTAL"
  791. cabec2:=OemToAnsi(STR0022) //" TITULO BASE COMISSAO IR (-) IR"
  792. //"XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 123456789012,23 123456789012,23 99.99 123456789012,23 123456789012,23 123456789012,23
  793. //"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
  794. //"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
  795. EndIf
  796.  
  797.  
  798. //?Monta condicao para filtro do arquivo de trabalho ?
  799.  
  800.  
  801. DbSelectArea("SE3") // Posiciona no arquivo de comissoes
  802. DbSetOrder(2) // Por Vendedor
  803. cFilialSE3 := xFilial()
  804. cNomArq :=CriaTrab("",.F.)
  805.  
  806. cCondicao := "SE3->E3_FILIAL=='" + cFilialSE3 + "'"
  807. cCondicao += ".And.SE3->E3_VEND>='" + mv_par04 + "'"
  808. cCondicao += ".And.SE3->E3_VEND<='" + mv_par05 + "'"
  809. cCondicao += ".And.DtoS(SE3->E3_EMISSAO)>='" + DtoS(mv_par02) + "'"
  810. cCondicao += ".And.DtoS(SE3->E3_EMISSAO)<='" + DtoS(mv_par03) + "'"
  811.  
  812. If mv_par01 == 1
  813. cCondicao += ".And.SE3->E3_BAIEMI!='B'" // Baseado pela emissao da NF
  814. Elseif mv_par01 == 2
  815. cCondicao += " .And.SE3->E3_BAIEMI=='B'" // Baseado pela baixa do titulo
  816. Endif
  817.  
  818. If mv_par06 == 1 // Comissoes a pagar
  819. cCondicao += ".And.Dtos(SE3->E3_DATA)=='"+Dtos(Ctod(""))+"'"
  820. ElseIf mv_par06 == 2 // Comissoes pagas
  821. cCondicao += ".And.Dtos(SE3->E3_DATA)!='"+Dtos(Ctod(""))+"'"
  822. Endif
  823.  
  824. If mv_par09 == 2 // Nao Inclui Comissoes Zeradas
  825. cCondicao += ".And.SE3->E3_COMIS<>0"
  826. EndIf
  827.  
  828.  
  829. //?Cria expressao de filtro do usuario ?
  830.  
  831. If ( ! Empty(aReturn[7]) )
  832. cFiltroUsu := &("{ || " + aReturn[7] + " }")
  833. Else
  834. cFiltroUsu := { || .t. }
  835. Endif
  836.  
  837. nAg1 := nAg2 := nAg3 := nAg4 := 0
  838.  
  839.  
  840. If TcSrvType() != "AS/400"
  841. cOrder := SqlOrder(SE3->(IndexKey()))
  842.  
  843. cQuery := "SELECT * "
  844. cQuery += " FROM "+ RetSqlName("SE3")
  845. cQuery += " WHERE E3_FILIAL = '" + xFilial("SE3") + "' AND "
  846. cQuery += " E3_VEND >= '" + mv_par04 + "' AND E3_VEND <= '" + mv_par05 + "' AND "
  847. cQuery += " E3_EMISSAO >= '" + Dtos(mv_par02) + "' AND E3_EMISSAO <= '" + Dtos(mv_par03) + "' AND "
  848.  
  849. If mv_par01 == 1
  850. cQuery += "E3_BAIEMI <> 'B' AND " //Baseado pela emissao da NF
  851. Elseif mv_par01 == 2
  852. cQuery += "E3_BAIEMI = 'B' AND " //Baseado pela baixa do titulo
  853. EndIf
  854.  
  855. If mv_par06 == 1 //Comissoes a pagar
  856. cQuery += "E3_DATA = '" + Dtos(Ctod("")) + "' AND "
  857. ElseIf mv_par06 == 2 //Comissoes pagas
  858. cQuery += "E3_DATA <> '" + Dtos(Ctod("")) + "' AND "
  859. Endif
  860.  
  861. If mv_par09 == 2 //Nao Inclui Comissoes Zeradas
  862. cQuery+= "E3_COMIS <> 0 AND "
  863. EndIf
  864.  
  865. cQuery += "D_E_L_E_T_ <> '*' "
  866.  
  867. cQuery += " ORDER BY "+ cOrder
  868.  
  869. cQuery := ChangeQuery(cQuery)
  870.  
  871. dbSelectArea("SE3")
  872. dbCloseArea()
  873. dbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), 'SE3', .F., .T.)
  874.  
  875. For ni := 1 to Len(aStru)
  876. If aStru[ni,2] != 'C'
  877. TCSetField('SE3', aStru[ni,1], aStru[ni,2],aStru[ni,3],aStru[ni,4])
  878. Endif
  879. Next
  880. Else
  881. //?Cria arquivo de trabalho ?
  882.  
  883. cChave := IndexKey()
  884. cNomArq :=CriaTrab("",.F.)
  885. IndRegua("SE3",cNomArq,cChave,,cCondicao, OemToAnsi(STR0016)) //"Selecionando Registros..."
  886. nIndex := RetIndex("SE3")
  887. DbSelectArea("SE3")
  888. DbSetOrder(nIndex+1)
  889.  
  890. EndIf
  891.  
  892. SetRegua(RecCount()) // Total de Elementos da regua
  893. DbGotop()
  894. While !Eof()
  895. IF lEnd
  896. @Prow()+1,001 PSAY OemToAnsi(STR0011) //"CANCELADO PELO OPERADOR"
  897. lContinua := .F.
  898. Exit
  899. EndIF
  900. IncRegua()
  901.  
  902. //?Processa condicao do filtro do usuario ?
  903.  
  904. If ! Eval(cFiltroUsu)
  905. Dbskip()
  906. Loop
  907. Endif
  908.  
  909. nAc1 := nAc2 := nAc3 := nAc4 := 0
  910. nTotPerVen := 0
  911. lFirstV:= .T.
  912. cVend := SE3->E3_VEND
  913.  
  914. While !Eof() .AND. SE3->E3_VEND == cVend
  915. IncRegua()
  916. cDocLiq:= ""
  917.  
  918. //?Processa condicao do filtro do usuario ?
  919.  
  920. If ! Eval(cFiltroUsu)
  921. Dbskip()
  922. Loop
  923. Endif
  924.  
  925. If li > 55
  926. cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
  927. EndIF
  928.  
  929. //?Seleciona o Codigo do Vendedor e Imprime o seu Nome ?
  930.  
  931. IF lFirstV
  932. dbSelectArea("SA3")
  933. dbSeek(xFilial()+SE3->E3_VEND)
  934. If mv_par12 == 1
  935. cDescVend := SE3->E3_VEND + " " + A3_NOME
  936. @li, 00 PSAY OemToAnsi(STR0012) + cDescVend //"Vendedor : "
  937. li+=2
  938. Else
  939. @li, 00 PSAY SE3->E3_VEND
  940. @li, 07 PSAY A3_NOME
  941. EndIf
  942. dbSelectArea("SE3")
  943. lFirstV := .F.
  944. EndIF
  945.  
  946. dbSelectArea("SE1")
  947. dbSetOrder(1)
  948. dbSeek(xFilial()+SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO)
  949.  
  950. // Se nao imprime detalhes da origem, desconsidera titulos faturados
  951. If mv_par13 <> 1 .And. !Empty(SE1->E1_FATURA) .And. SE1->E1_FATURA <> "NOTFAT"
  952. SE3->( dbSkip() )
  953. Loop
  954. EndIf
  955.  
  956. If mv_par12 == 1
  957. @li, 00 PSAY SE3->E3_PREFIXO
  958. @li, 04 PSAY SE3->E3_NUM
  959. @li, aColuna[1] PSAY SE3->E3_PARCELA
  960. @li, aColuna[2] PSAY SE3->E3_CODCLI
  961. @li, aColuna[3] PSAY SE3->E3_LOJA
  962.  
  963. dbSelectArea("SA1")
  964. dbSeek(xFilial()+SE3->E3_CODCLI+SE3->E3_LOJA)
  965. @li, aColuna[4] PSAY IF(mv_par14 == 1,Substr(SA1->A1_NREDUZ,1,35),Substr(SA1->A1_NOME,1,35))
  966.  
  967. dbSelectArea("SE3")
  968. @li, aColuna[5] PSAY SE3->E3_EMISSAO
  969. EndIf
  970.  
  971. dbSelectArea("SE1")
  972. dbSetOrder(1)
  973. dbSeek(xFilial()+SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO)
  974. nVlrTitulo := Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
  975. dVencto := SE1->E1_VENCTO
  976. dEmissao := SE1->E1_EMISSAO
  977. aLiquid := {}
  978. aValLiq := {}
  979. aLiqProp := {}
  980. nTotLiq := 0
  981. If mv_par13 == 1 .And. !Empty(SE1->E1_NUMLIQ) .And. FindFunction("FA440LIQSE1")
  982. cLiquid := SE1->E1_NUMLIQ
  983. cDocLiq := SE1->E1_NUMLIQ
  984. // Obtem os registros que deram origem ao titulo gerado pela liquidacao
  985. Fa440LiqSe1(SE1->E1_NUMLIQ,@aLiquid,@aValLiq)
  986. For ny := 1 to Len(aValLiq)
  987. nTotLiq += aValLiq[ny,2]
  988. Next
  989. For ny := 1 to Len(aValLiq)
  990. aAdd(aLiqProp,(nVlrTitulo/nTotLiq)*aValLiq[ny,2])
  991. Next
  992. Endif
  993. /*
  994. Nas comissoes geradas por baixa pego a data da emissao da comissao que eh igual a data da baixa do titulo.
  995. Isto somente dara diferenca nas baixas parciais
  996. */
  997.  
  998. If SE3->E3_BAIEMI == "B"
  999. dBaixa := SE3->E3_EMISSAO
  1000. Else
  1001. dBaixa := SE1->E1_BAIXA
  1002. Endif
  1003.  
  1004. If Eof()
  1005.  
  1006. dbSelectArea("SF1")
  1007. dbSetOrder(1)
  1008.  
  1009. dbSelectArea("SF2")
  1010. dbSetorder(1)
  1011.  
  1012. If AllTrim(SE3->E3_TIPO) == "NCC"
  1013. SF1->(dbSeek(xFilial("SF1")+SE3->E3_NUM+SE3->E3_PREFIXO+SE3->E3_CODCLI+SE3->E3_LOJA,.t.))
  1014. nVlrTitulo := Round(xMoeda(SF1->F1_VALBRUT,SF1->F1_MOEDA,mv_par07,SF1->F1_DTDIGIT,nDecs+1,SF1->F1_TXMOEDA),nDecs)
  1015. dEmissao := SF1->F1_DTDIGIT
  1016. Else
  1017. dbSeek(xFilial()+SE3->E3_NUM+SE3->E3_PREFIXO)
  1018. nVlrTitulo := Round(xMoeda(F2_VALFAT,SF2->F2_MOEDA,mv_par07,SF2->F2_EMISSAO,nDecs+1,SF2->F2_TXMOEDA),nDecs)
  1019. dEmissao := SF2->F2_EMISSAO
  1020. EndIf
  1021.  
  1022. dVencto := " "
  1023. dBaixa := " "
  1024.  
  1025. dEmissao := SF2->F2_EMISSAO
  1026.  
  1027. If Eof()
  1028. nVlrTitulo := 0
  1029. dbSelectArea("SE1")
  1030. dbSetOrder(1)
  1031. cFilialSE1 := xFilial()
  1032. dbSeek(cFilialSE1+SE3->E3_PREFIXO+SE3->E3_NUM)
  1033. While ( !Eof() .And. SE3->E3_PREFIXO == SE1->E1_PREFIXO .And.;
  1034. SE3->E3_NUM == SE1->E1_NUM .And.;
  1035. SE3->E3_FILIAL == cFilialSE1 )
  1036. If ( SE1->E1_TIPO == SE3->E3_TIPO .And. ;
  1037. SE1->E1_CLIENTE == SE3->E3_CODCLI .And. ;
  1038. SE1->E1_LOJA == SE3->E3_LOJA )
  1039. nVlrTitulo += Round(xMoeda(SE1->E1_VALOR,SE1->E1_MOEDA,MV_PAR08,SE1->E1_EMISSAO,nDecs+1),nDecs)
  1040. dVencto := " "
  1041. dBaixa := " "
  1042. If Empty(dEmissao)
  1043. dEmissao := SE1->E1_EMISSAO
  1044. EndIf
  1045. EndIf
  1046. dbSelectArea("SE1")
  1047. dbSkip()
  1048. EndDo
  1049. EndIf
  1050. Endif
  1051.  
  1052.  
  1053. If Empty(dEmissao)
  1054. dEmissao := NIL
  1055. EndIf
  1056.  
  1057. //Preciso destes valores para pasar como parametro na funcao TM(), e como
  1058. //usando a xmoeda direto na impressao afetaria a performance (deveria executar
  1059. //duas vezes, uma para imprimir e outra para pasar para a picture), elas devem]
  1060. //ser inicializadas aqui. Bruno.
  1061.  
  1062. nBasePrt:= Round(xMoeda(SE3->E3_BASE ,1,MV_PAR08,dEmissao,nDecs+1),nDecs)
  1063. nComPrt := Round(xMoeda(SE3->E3_COMIS,1,MV_PAR08,dEmissao,TamSx3("E3_COMIS")[2]+1),TamSx3("E3_COMIS")[2])
  1064.  
  1065. If nBasePrt < 0 .And. nComPrt < 0
  1066. nVlrTitulo := nVlrTitulo * -1
  1067. Endif
  1068.  
  1069. dbSelectArea("SE3")
  1070.  
  1071. If mv_par12 == 1
  1072. @ li,aColuna[6] PSAY dVencto
  1073. @ li,aColuna[7] PSAY dBaixa
  1074. @ li,aColuna[8] PSAY SE3->E3_DATA
  1075. @ li,aColuna[9] PSAY SE3->E3_PEDIDO Picture "@!"
  1076. @ li,aColuna[10] PSAY nVlrTitulo Picture tm(nVlrTitulo,14,nDecs)
  1077. @ li,aColuna[11] PSAY nBasePrt Picture tm(nBasePrt,14,nDecs)
  1078. @ li,aColuna[12] PSAY SE3->E3_PORC Picture PesqPict('SE3','E3_PORC')
  1079. @ li,aColuna[13] PSAY nComPrt Picture PesqPict('SE3','E3_COMIS')
  1080. @ li,aColuna[14] PSAY SE3->E3_BAIEMI
  1081.  
  1082. If ( SE3->E3_AJUSTE == "S" .And. MV_PAR07==1)
  1083. @ li,aColuna[15] PSAY STR0018 //"AJUSTE "
  1084. EndIf
  1085. li++
  1086. // Imprime titulos que deram origem ao titulo gerado por liquidacao
  1087. If mv_par13 == 1
  1088. For nI := 1 To Len(aLiquid)
  1089. If li > 55
  1090. cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
  1091. EndIF
  1092. If nI == 1
  1093. @ ++li, 0 PSAY __PrtThinLine()
  1094. @ ++li, 0 PSAY STR0023 +SE1->E1_NUMLIQ // "Detalhes : Titulos de origem da liquida "
  1095. @ ++li,10 PSAY STR0024 // "Prefixo Numero Parc Tipo Cliente Loja Nome Valor Titulo Data Liq. Valor Liquidao Valor Base Liq."
  1096. // Prefixo Numero Parc Tipo Cliente Loja Nome Valor Titulo Data Liq. Valor Liquidao Valor Base Liq.
  1097. // XXX XXXXXXXXXXXX XXX XXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 999999999999999 99/99/9999 999999999999999 999999999999999
  1098. @ ++li, 0 PSAY __PrtThinLine()
  1099. li++
  1100. Endif
  1101. cDocLiq := SE1->E1_NUMLIQ
  1102. SE1->(MsGoto(aLiquid[nI]))
  1103. SA1->(MsSeek(xFilial("SA1")+SE1->E1_CLIENTE+SE1->E1_LOJA))
  1104. @li, 10 PSAY SE1->E1_PREFIXO
  1105. @li, 21 PSAY SE1->E1_NUM
  1106. @li, 37 PSAY SE1->E1_PARCELA
  1107. @li, 45 PSAY SE1->E1_TIPO
  1108. @li, 53 PSAY SE1->E1_CLIENTE
  1109. @li, 64 PSAY SE1->E1_LOJA
  1110. @li, 71 PSAY IF(mv_par14 == 1,Substr(SA1->A1_NREDUZ,1,35),Substr(SA1->A1_NOME,1,35))
  1111. @li, 111 PSAY SE1->E1_VALOR PICTURE Tm(SE1->E1_VALOR,15,nDecs)
  1112. @li, 132 PSAY aValLiq[nI,1]
  1113. @li, 151 PSAY aValLiq[nI,2] PICTURE Tm(SE1->E1_VALOR,15,nDecs)
  1114. @li, 172 PSAY aLiqProp[nI] PICTURE Tm(SE1->E1_VALOR,15,nDecs)
  1115. li++
  1116. Next
  1117. // Imprime o separador da ultima linha
  1118. If Len(aLiquid) >= 1
  1119. @ li++, 0 PSAY __PrtThinLine()
  1120. Endif
  1121. Endif
  1122. EndIf
  1123. nAc1 += nBasePrt
  1124. nAc2 += nComPrt
  1125. nTotPerVen += (nBasePrt*SE3->E3_PORC)/100
  1126. 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)
  1127. nAc3 += nVlrTitulo
  1128. cTitulo:= SE3->E3_PREFIXO+SE3->E3_NUM+SE3->E3_PARCELA+SE3->E3_TIPO+SE3->E3_VEND+SE3->E3_CODCLI+SE3->E3_LOJA
  1129. cDocLiq:= ""
  1130.  
  1131. ElseIf !Empty(cDocLiq)
  1132. nAc3 += nVlrTitulo
  1133.  
  1134. EndIf
  1135.  
  1136. dbSelectArea("SE3")
  1137. dbSkip()
  1138. EndDo
  1139.  
  1140. If mv_par12 == 1
  1141. li++
  1142.  
  1143. If li > 55
  1144. cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
  1145. EndIF
  1146. @ li, 00 PSAY OemToAnsi(STR0013)+cDescVend //"TOTAL DO VENDEDOR --> "
  1147. @ li,aColuna[10]-1 PSAY nAc3 PicTure tm(nAc3,15,nDecs)
  1148. @ li,aColuna[11]-1 PSAY nAc1 PicTure tm(nAc1,15,nDecs)
  1149.  
  1150. If nAc1 != 0
  1151. If cPaisLoc=="BRA"
  1152. //@ li, aColuna[12] PSAY NoRound((nAc2/nAc1)*100,2) PicTure "999.99"
  1153. @ li, aColuna[12] PSAY NoRound((nTotPerVen/nAc1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
  1154. Else
  1155. @ li, aColuna[12] PSAY NoRound((nAc2/nAc1)*100) PicTure PesqPict('SE3','E3_PORC')
  1156. Endif
  1157. Endif
  1158.  
  1159. @ li, aColuna[13] PSAY nAc2 PicTure PesqPict('SE3','E3_COMIS')
  1160. li++
  1161.  
  1162. If mv_par10 > 0 .And. (nAc2 * mv_par10 / 100) > GetMV("MV_VLRETIR") //IR
  1163. @ li, 00 PSAY OemToAnsi(STR0015) //"TOTAL DO IR --> "
  1164. nAc4 += If(lRndIrrf,Round((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]),NoRound((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]))
  1165. @ li, aColuna[13] PSAY nAc4 PicTure tm(nAc2 * mv_par10 / 100,15,nDecs)
  1166. li ++
  1167. @ li, 00 PSAY OemToAnsi(STR0017) //"TOTAL (-) IR --> "
  1168. @ li, aColuna[13] PSAY nAc2 - nAc4 PicTure tm(nAc2,15,nDecs)
  1169. li ++
  1170. EndIf
  1171.  
  1172. @ li, 00 PSAY __PrtThinLine()
  1173.  
  1174. If mv_par11 == 1 // Quebra pagina por vendedor (padrao)
  1175. li := 60
  1176. Else
  1177. li+= 2
  1178. Endif
  1179. Else
  1180. If li > 55
  1181. cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
  1182. EndIF
  1183. @ li,048 PSAY nAc3 PicTure tm(nAc3,15,nDecs)
  1184. @ li,065 PSAY nAc1 PicTure tm(nAc1,15,nDecs)
  1185. If nAc1 != 0
  1186. If cPaisLoc=="BRA"
  1187. @ li, 081 PSAY NoRound((nAc2/nAc1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
  1188. Else
  1189. @ li, 081 PSAY NoRound((nAc2/nAc1)*100) PicTure PesqPict('SE3','E3_PORC')
  1190. Endif
  1191. Endif
  1192. @ li, 089 PSAY nAc2 PicTure PesqPict('SE3','E3_COMIS')
  1193. If mv_par10 > 0 .And. (nAc2 * mv_par10 / 100) > GetMV("MV_VLRETIR") //IR
  1194. nAc4 += If(lRndIrrf,Round((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]),NoRound((nAc2 * mv_par10 / 100),TamSx3("E2_IRRF")[2]))
  1195. @ li, 105 PSAY nAc4 PicTure tm(nAc2 * mv_par10 / 100,15,nDecs)
  1196. @ li, 121 PSAY nAc2 - nAc4 PicTure tm(nAc2,15,nDecs)
  1197. EndIf
  1198. li ++
  1199. EndIf
  1200.  
  1201. dbSelectArea("SE3")
  1202. nAg1 += nAc1
  1203. nAg2 += nAc2
  1204. nAg3 += nAc3
  1205. nAg4 += nAc4
  1206. nTotPerGer += nTotPerVen
  1207. EndDo
  1208.  
  1209. If (nAg1+nAg2+nAg3+nAg4) != 0
  1210. If li > 55
  1211. cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
  1212. Endif
  1213.  
  1214. If mv_par12 == 1
  1215. @li, 00 PSAY OemToAnsi(STR0014) //"TOTAL GERAL --> "
  1216. @li, aColuna[10]-1 PSAY nAg3 Picture tm(nAg3,15,nDecs)
  1217. @li, aColuna[11]-1 PSAY nAg1 Picture tm(nAg1,15,nDecs)
  1218. If cPaisLoc=="BRA"
  1219. //@li, aColuna[12] PSAY NoRound((nAg2/nAg1)*100,2) Picture "999.99"
  1220. @li, aColuna[12] PSAY NoRound((nTotPerGer/nAg1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
  1221. Else
  1222. @li, aColuna[12] PSAY NoRound((nAg2/nAg1)*100) Picture PesqPict('SE3','E3_PORC')
  1223. Endif
  1224. @li, aColuna[13] PSAY nAg2 PicTure PesqPict('SE3','E3_COMIS')
  1225. If mv_par10 > 0 .And. (nAg2 * mv_par10 / 100) > GetMV("MV_VLRETIR")//IR
  1226. li ++
  1227. @ li, 00 PSAY OemToAnsi(STR0015) //"TOTAL DO IR --> "
  1228. @ li, 175 PSAY nAg4 PicTure tm((nAg2 * mv_par10 / 100),15,nDecs)
  1229. li ++
  1230. @ li, 00 PSAY OemToAnsi(STR0017) //"TOTAL (-) IR --> "
  1231. @ li, 175 PSAY nAg2 - nAg4 Picture tm(nAg2,15,nDecs)
  1232. EndIf
  1233. Else
  1234. @li,000 PSAY __PrtThinLine()
  1235. li ++
  1236. @li,000 PSAY OemToAnsi(STR0014) //"TOTAL GERAL --> "
  1237. @li,048 PSAY nAg3 Picture tm(nAg3,15,nDecs)
  1238. @li,065 PSAY nAg1 Picture tm(nAg1,15,nDecs)
  1239. If cPaisLoc=="BRA"
  1240. @li,081 PSAY NoRound((nAg2/nAg1)*100,TamSx3("E3_PORC")[2]) PicTure PesqPict('SE3','E3_PORC')
  1241. Else
  1242. @li,081 PSAY NoRound((nAg2/nAg1)*100) Picture PesqPict('SE3','E3_PORC')
  1243. Endif
  1244. @li,089 PSAY nAg2 Picture PesqPict('SE3','E3_COMIS')
  1245. If mv_par10 > 0 .And. (nAg2 * mv_par10 / 100) > GetMV("MV_VLRETIR")//IR
  1246. @ li,105 PSAY nAg4 PicTure tm((nAg2 * mv_par10 / 100),15,nDecs)
  1247. @ li,121 PSAY nAg2 - nAg4 Picture tm(nAg2,15,nDecs)
  1248. EndIf
  1249. EndIf
  1250. roda(cbcont,cbtxt,"G")
  1251. EndIF
  1252.  
  1253.  
  1254. If TcSrvType() != "AS/400"
  1255. dbSelectArea("SE3")
  1256. DbCloseArea()
  1257. chkfile("SE3")
  1258. Else
  1259. fErase(cNomArq+OrdBagExt())
  1260. Endif
  1261.  
  1262.  
  1263. //?Restaura a integridade dos dados ?
  1264.  
  1265. DbSelectArea("SE3")
  1266. RetIndex("SE3")
  1267. DbSetOrder(2)
  1268. dbClearFilter()
  1269.  
  1270.  
  1271. //?Se em disco, desvia para Spool ?
  1272.  
  1273. If aReturn[5] = 1
  1274. Set Printer To
  1275. dbCommitAll()
  1276. ourspool(wnrel)
  1277. Endif
  1278.  
  1279. MS_FLUSH()
  1280. Return
  1281.  
  1282.  
  1283. Static Function fSumTiti(cVend, dEmisDe,dEmisAte)
  1284.  
  1285. Local nTotal := 0
  1286. Local cQuery := ""
  1287. Local cAliasSe1 := GetNextAlias()
  1288. Local nTotalComis := 0
  1289. Local nBase := 0
  1290. Local nPorc := 0
  1291.  
  1292. 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
  1293. cQuery += " SC5.C5_VEND4,SC5.C5_COMIS4,SC5.C5_VEND5,SC5.C5_COMIS5 "
  1294. cQuery += " FROM " + RetSqlName("SE1") + " SE1 "+STR_PULA
  1295. cQuery += " INNER JOIN " + RetSqlName("SC5") + " SC5 "+STR_PULA
  1296. cQuery += " ON SE1.E1_PEDIDO = SC5.C5_NUM AND SC5.D_E_L_E_T_ = '' AND SC5.C5_FILIAL = '" + xFilial("SC5") + "' " +STR_PULA
  1297. cQuery += " INNER JOIN " + RetSqlName("SA1") + " SA1 "+STR_PULA
  1298. 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
  1299. cQuery += " WHERE (( SC5.C5_VEND1 = '" + cVend + "'AND SC5.C5_COMIS1 > 0 ) " +STR_PULA
  1300. cQuery += " OR ( SC5.C5_VEND2 = '" + cVend + "'AND SC5.C5_COMIS2 > 0 ) " +STR_PULA
  1301. cQuery += " OR ( SC5.C5_VEND3 = '" + cVend + "'AND SC5.C5_COMIS3 > 0 ) " +STR_PULA
  1302. cQuery += " OR ( SC5.C5_VEND4 = '" + cVend + "'AND SC5.C5_COMIS4 > 0 ) " +STR_PULA
  1303. cQuery += " OR ( SC5.C5_VEND5 = '" + cVend + "'AND SC5.C5_COMIS5 > 0 )) " +STR_PULA
  1304. cQuery += " AND SE1.E1_FILIAL = '" + xFilial("SE1") + "' " +STR_PULA
  1305. cQuery += " AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_SALDO = SE1.E1_VALOR and SE1.E1_BAIXA = ''" +STR_PULA
  1306. cQuery += " AND ( SE1.E1_EMISSAO >= '"+dtos(dEmisDe)+"' AND "
  1307. cQuery += " SE1.E1_EMISSAO <= '"+dTOS(dEmisAte)+"' ) "
  1308. cQuery := ChangeQuery(cQuery)
  1309. dbUseArea( .T., "TOPCONN", TCGENQRY(,,cQuery),cAliasSe1, .F., .T.)
  1310.  
  1311. Do While (cAliasSe1)->(!Eof())
  1312.  
  1313. If (cAliasSe1)->C5_VEND1 == cVend .And. (cAliasSe1)->C5_COMIS1 > 0
  1314. nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
  1315. nPorc := ( nbase*(cAliasSe1)->C5_COMIS1) /100
  1316. Elseif (cAliasSe1)->C5_VEND2 == cVend .And. (cAliasSe1)->C5_COMIS2 > 0
  1317. nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
  1318. nPorc := ( nbase*(cAliasSe1)->C5_COMIS2) /100
  1319. Elseif (cAliasSe1)->C5_VEND3 == cVend .And. (cAliasSe1)->C5_COMIS3 > 0
  1320. nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
  1321. nPorc := ( nbase*(cAliasSe1)->C5_COMIS3) /100
  1322. Elseif (cAliasSe1)->C5_VEND4 == cVend .And. (cAliasSe1)->C5_COMIS4 > 0
  1323. nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
  1324. nPorc := ( nbase*(cAliasSe1)->C5_COMIS4) /100
  1325. Elseif (cAliasSe1)->C5_VEND5 == cVend .And. (cAliasSe1)->C5_COMIS5> 0
  1326. nbase := ((cAliasSe1)->E1_VALOR*(cAliasSe1)->A1_BAIXA) / 100
  1327. nPorc := ( nbase*(cAliasSe1)->C5_COMIS5) /100
  1328. Endif
  1329. nTotal += nPorc
  1330. (cAliasSe1)->(DbSkip())
  1331. Enddo
  1332.  
  1333. (cAliasSe1)->(DbCloseArea())
  1334. Return nTotal
Advertisement
Add Comment
Please, Sign In to add comment