- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- PROBLEMA EM RELATÓRIO DE VENDAS
×
Linguagem de Programação ADVPL
Perguntas PROBLEMA EM RELATÓRIO DE VENDAS
- brunogfx4
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 79
- Obrigados Recebidos: 0
10 anos 2 meses atrás #24861
por brunogfx4
Desesperado.... foi criado por brunogfx4
Pessoal bom dia, estou com um relatorio do qual ele traz as vendas de um vendedor X sobre o produto X em cima de cada cliente, mas ao colocar para ele trazer do vendedor BRANCO ao ULTIMO, se o vendedor 320 estiver com nenhuma VENDA ele para o relatorio no 325.
Ja tentei de tudo mas nao consegui achar por que ele nao continua o relatorio mesmo se aquele vendedor estiver com nenhuma venda.
Por favor me ajudem, segue abaixo o fonte, ele é um pouco extenso.
FONTE
#include "rwmake.ch" // incluido pelo assistente de conversao do AP6 IDE em 28/06/02
User Function Matr76a() // incluido pelo assistente de conversao do AP6 IDE em 28/06/02
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Declaracao de variaveis utilizadas no programa atraves da funcao ³
//³ SetPrvt, que criara somente as variaveis definidas pelo usuario, ³
//³ identificando as variaveis publicas do sistema utilizadas no codigo ³
//³ Incluido pelo assistente de conversao do AP6 IDE ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SetPrvt("CBTXT,CDESC1,CDESC2,CDESC3,CBCONT,CABEC1")
SetPrvt("CABEC2,WNREL,TAMANHO,LIMITE,CSTRING,NTIPO")
SetPrvt("NORDEM,I,TITULO,LCONTINUA,LEND,ARETURN")
SetPrvt("NOMEPROG,ALINHA,NLASTKEY,CPERG,NTOTVEND,CSAV20")
SetPrvt("CSAV7,CMESRELA,CMESINIC,NDECPREC,NDECQTDE,ACAMPOS")
SetPrvt("CARQTRAB,CARQSF2,CKEY,CINDEX,CCONDICAO,AVLRVEND")
SetPrvt("CVENDC,AACUMVAL,NQTDCONS,NNOMESES,DDATCONS,CANOAUXI")
SetPrvt("NTTGERAL,NELEMENT,NPORCPRD,NACPORCE,NQTDES,CCLASSE")
SetPrvt("NCOLUNAS,ATAM,TGQTDE01,TGQTDE02,TGQTDE03,TGQTDE04")
SetPrvt("TGQTDE05,TGQTDE06,TGQTDE07,TGQTDE08,TGQTDE09,TGQTDE10")
SetPrvt("TGQTDE11,TGQTDE12,TGTOTACUM,CVENDINIC,CREGIFIM,CANORELA")
SetPrvt("CCLIEINI,CCLIEFIM,LI,M_PAG,CANOANTE,_DPERINI")
SetPrvt("_DPERFIN,CKEYF2,_CPERIODO,CCOND,NINDEX,_NCONT")
SetPrvt("CCLIENTE,CLOJACLI,CPRODUTO,NMES,_CIND,X")
SetPrvt("CNOMVEND,VDQTDE01,VDQTDE02,VDQTDE03,VDQTDE04,VDQTDE05")
SetPrvt("VDQTDE06,VDQTDE07,VDQTDE08,VDQTDE09,VDQTDE10,VDQTDE11")
SetPrvt("VDQTDE12,VDTOTACUM,EXPC1,CANO,ANOMEMES,N,CFILTER,")
//U_CFGA0001(cEmpAnt, cFilAnt,alltrim(cUsername), alltrim(procname()), " ", DATE(), TIME()) //CHAMADA LOG DOS FONTES
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ MATR76A ³ Autor ³ Marcia Cabrini. ³ Data ³ 18/07/98 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Relatorio de Curva ABC Vendedores / Clientes / Produtos. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ MATR765 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define Variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
CbTxt := ""
cDesc1 := PADC("Relat¢rio demonstrativo das vendas (Faturamento),",74)
cDesc2 := PADC("por ordem de vendedor por cliente e por produto",74)
cDesc3 := PADC("Este relatorio dever ser impresso no formul rio de 132 colunas.",74)
CbCont := ""
cabec1 := ""
cabec2 := ""
wnrel := ""
tamanho := "G"
limite := 220
cString := "SF2"
nTipo := 0
nOrdem := ""
i := ""
titulo := "Curva ABC de Faturamento - Vendedor - Cliente - Produto"
lContinua:= .T.
lEnd := .F.
aReturn := { "Zebrado", 1,"Administracao", 1, 2, 1, "",1 }
nomeprog := "MATR76A"
aLinha := {}
nLastKey := 0
cPerg := "FAT765"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica as perguntas selecionadas ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
pergunte("FAT765",.T.)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis utilizadas para parametros ³
//³ mv_par01 // Vendedor de ³
//³ mv_par02 // Vendedo ate ³
//³ mv_par03 // Mes ³
//³ mv_par04 // Ano ³
//³ mv_par05 // % Prod. A ³
//³ mv_par06 // % Prod. B ³
//³ mv_par07 // % Prod. C ³
//³ mv_par08 // Cliente de ³
//³ mv_par09 // Cliente ate ³
//³ mv_par10 // Seguimento de ³
//³ mv_par11 // Seguimento ate ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Envia controle para a funcao SETPRINT ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
wnrel := "MATR76A" //Nome Default do relatorio em Disco
wnrel := SetPrint(cString,wnrel,cPerg,@titulo,cDesc1,cDesc2,cDesc3,.F.,"",.T.,Tamanho)
If nLastKey == 27
Set Filter to
Return
Endif
SetDefault(aReturn,cString)
If nLastKey == 27
Set Filter to
Return
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define Variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nTotVend := 0
cSav20 := ""
cSav7 := ""
cMesRela := ""
cMesInic := ""
nDecPrec := ""
nDecQtde := ""
aCampos := ""
cArqTrab := ""
cArqSF2 := ""
cKey := ""
cIndex := ""
cCondicao:= ""
aVlrVend := ""
cVendC := ""
aAcumVal := ""
nQtdCons := ""
nNoMeses := ""
dDatCons := ""
cAnoAuxi := ""
nTtGeral := ""
nElement := ""
nPorcPrd := ""
nAcPorce := ""
nQtdes := ""
cClasse := ""
nColunas := ""
aTam := 0
TGQTDE01 := 0
TGQTDE02 := 0
TGQTDE03 := 0
TGQTDE04 := 0
TGQTDE05 := 0
TGQTDE06 := 0
TGQTDE07 := 0
TGQTDE08 := 0
TGQTDE09 := 0
TGQTDE10 := 0
TGQTDE11 := 0
TGQTDE12 := 0
TGTOTACUM:= 0
nOrdem := aReturn[8]
nTipo := 15
cVendInic:= mv_par01
cRegiFim := mv_par02
cMesRela := StrZero(mv_par03,2)
cAnoRela := StrZero(mv_par04,4)
cClieIni := mv_par08
cClieFim := mv_par09
cSeguim1 := mv_par10
cSeguim2 := mv_par11
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis utilizadas para Impressao do Cabecalho e Rodape ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cbtxt := SPACE(10)
cbcont := 0
li := 80
m_pag := 1
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Os 12 meses estao contidos em 1 ano ou 2 anos. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If mv_par03 == 12
cAnoAnte := StrZero(mv_par04,4)
cMesInic := "01"
Else
cAnoAnte := StrZero((mv_par04-1),4)
cMesInic := StrZero((mv_par03+1),2)
Endif
_dPerIni := Dtos(Ctod("01/"+cMesInic+"/"+cAnoAnte))
// Acerto devido BUG do Milenio
// Roberto Fernandes
If cMesRela == "12"
_dPerFin := Dtos(Ctod("01/"+Str(Val(cMesRela))+"/"+"31"))
Else
_dPerFin := Dtos(Ctod("01/"+Str(Val(cMesRela)+1)+"/"+cAnoRela)-1)
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define estrutura e gera o arquivo de trabalho ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aCampos := {{"VENDEDOR","C", 6,0},;
{"CLIENTE" ,"C", 6,0},;
{"LOJACLI" ,"C", 2,0},;
{"PRODUTO" ,"C",15,0},;
{"VALCMED" ,"N",16,2},;
{"MESCONS" ,"N", 2,0},;
{"QTDE01" ,"N",11,2},;
{"QTDE02" ,"N",11,2},;
{"QTDE03" ,"N",11,2},;
{"QTDE04" ,"N",11,2},;
{"QTDE05" ,"N",11,2},;
{"QTDE06" ,"N",11,2},;
{"QTDE07" ,"N",11,2},;
{"QTDE08" ,"N",11,2},;
{"QTDE09" ,"N",11,2},;
{"QTDE10" ,"N",11,2},;
{"QTDE11" ,"N",11,2},;
{"QTDE12" ,"N",11,2},;
{"TOTACUM" ,"N",14,2}}
cArqTrab := CriaTrab(aCampos,.T.)
Use &cArqTrab Alias "TRB" New
cFilter := aReturn[7]
cKey := "VENDEDOR+CLIENTE+LOJACLI+PRODUTO"
IndRegua("TRB",cArqTrab,cKey,,,"Selecionando Registros...")
dbSelectArea("SF2")
cArqSF2 := CriaTrab(NIL,.F.)
cKeyF2 := "F2_FILIAL+F2_VEND1+F2_CLIENTE+F2_LOJA"
_cPeriodo:= Str(Year(F2_EMISSAO),4)
If !Empty(cFilter)
cCond := "Dtos(F2_EMISSAO) >= _dPerIni .And. Dtos(F2_EMISSAO) <= _dPerFin .And. !F2_TIPO $ 'D#B' .AND. F2_VEND1>=MV_PAR01 .AND. F2_VEND1 <= MV_PAR02 .AND. " + cFilter
Else
cCond := "Dtos(F2_EMISSAO) >= _dPerIni .And. Dtos(F2_EMISSAO) <= _dPerFin .And. !F2_TIPO $ 'D#B' .AND. F2_VEND1>=MV_PAR01 .AND. F2_VEND1 <= MV_PAR02"
EndIf
IndRegua("SF2",cArqSF2,cKeyF2,,cCond,"Selecionando Registro SF2...")
nIndex := RetIndex("SF2")
dbSelectArea("SF2")
//dbSetIndex(cArqSF2+OrdBagExt())
//dbSetOrder(nIndex+1)
dbGotop()
dbSeek(cVendInic,.t. )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Chamada da Impressao ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RptStatus({|| RptDetail()})// Substituido pelo assistente de conversao do AP6 IDE em 28/06/02 ==> RptStatus({|| Execute(RptDetail)})
Return
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ IMPRESSAO DA RELATORIO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Static Function RptDetail()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis para movimentacao do cursor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SF2")
dbGotop()
_nCont := 0
While !Eof()
_nCont := _nCont + 1
dbSelectArea("SF2")
dbSkip()
EndDo
SetRegua(_nCont)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Gera arquivo de trabalho com dados do SF2. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aVlrVend := {}
dbSelectArea("SF2")
dbGotop()
Do While !Eof() //.And. SF2->F2_FILIAL == xFilial("SF2")
cVendC := SF2->F2_VEND1
Do While !Eof().And.SF2->F2_VEND1 == cVendC//.And.SF2->F2_FILIAL == xFilial("SF2")
If SF2->F2_CLIENTE < cClieIni .Or. SF2->F2_CLIENTE > cClieFim
dbSelectArea("SF2")
dbSkip()
Loop
Endif
// SA1->(dbSetOrder(1))
// SA1->(dbSeek( xFilial("SA1")+SF2->(F2_CLIENTE+F2_LOJA) ))
// If MV_PAR10 <> SA1->A1_SATIV1 // Se nao for o mesmo seguimento de atividade
// If mv_par10 < SA1->A1_SATIV1 .Or. mv_par11 > SA1->A1_SATIV1
// dbSelectArea("SF2")
// dbSkip()
// Loop
// Endif
cCliente := SF2->F2_CLIENTE
cLojaCli := SF2->F2_LOJA
Aadd(aVlrVend, { cVendC, cCliente, cLojaCli })
Do While !Eof() .and.SF2->F2_CLIENTE == cCliente .And. SF2->F2_LOJA == cLojaCli .and.SF2->F2_VEND1 == cVendC
//.And. SF2->F2_FILIAL == xFilial("SF2") .And. SF2->(!Eof())
If Str(Year(SF2->F2_EMISSAO),4) != cAnoRela .And. Str(Year(SF2->F2_EMISSAO),4) != cAnoAnte
dbSelectArea("SF2")
dbSkip()
Loop
Endif
dbSelectArea("SD2")
dbSetOrder(3)
dbSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)
While !Eof() .And. SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA == SD2->D2_DOC+SD2->D2_SERIE+SD2->D2_CLIENTE+SD2->D2_LOJA
cProduto := SD2->D2_COD
dbSelectArea("SF4")
dbSetOrder(1)
dbSeek(xFilial("SF4")+SD2->D2_TES )
If !Eof() .And. SF4->F4_DUPLIC == "S" .And. !(SD2->D2_TES $ "699,713,715,721")
aAcumVal := { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
nQtdCons := 0 // Qtde. consumida do produto no periodo
nNoMeses := 0 // Nro. de meses do produto para calculo
If Str(Year(SF2->F2_EMISSAO),4) == cAnoRela
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Os 12 meses estao em 1 unico ano. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dDatCons := 12 - (Val(cMesRela) - Month(SF2->F2_EMISSAO))
For i := 1 To 12
If i == dDatCons
aAcumVal := SD2->D2_QUANT
Endif
Next
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Movimentacao do cursor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Os 12 meses estao em 2 anos consecutivos. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If cAnoAnte == Str(Year(SF2->F2_EMISSAO),4)
i := 13 - Val(cMesRela)
dDatCons := Month(SF2->F2_EMISSAO) - Val(cMesRela)
For nMes := 1 To (i-1)
If nMes == dDatCons
aAcumVal[nMes] := SD2->D2_QUANT
Endif
Next
Endif
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Grava somente se houver dados no periodo. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
cArea:= getArea()
dbSeek (cVendC+cCliente+cLojaCli+cProduto)
If Eof()
RecLock("TRB",.T.)
TRB->VENDEDOR := cVendC
TRB->CLIENTE := cCliente
TRB->LOJACLI := cLojaCli
TRB->PRODUTO := cProduto
Else
RecLock("TRB",.F.)
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Grava o valor do consumo em ordem decrescente de valor, ³
//³ para ordenacao pelo campo. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
For i := 1 To 12
_cInd := StrZero(i,2)
Do Case
Case _cInd == "01"
TRB->QTDE01 := TRB->QTDE01 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "02"
TRB->QTDE02 := TRB->QTDE02 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "03"
TRB->QTDE03 := TRB->QTDE03 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "04"
TRB->QTDE04 := TRB->QTDE04 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "05"
TRB->QTDE05 := TRB->QTDE05 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "06"
TRB->QTDE06 := TRB->QTDE06 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "07"
TRB->QTDE07 := TRB->QTDE07 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "08"
TRB->QTDE08 := TRB->QTDE08 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "09"
TRB->QTDE09 := TRB->QTDE09 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "10"
TRB->QTDE10 := TRB->QTDE10 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "11"
TRB->QTDE11 := TRB->QTDE11 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "12"
TRB->QTDE12 := TRB->QTDE12 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
EndCase
Next
MsUnLock()
aAcumVal := { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
EndIf
dbSelectArea("SD2")
dbSkip()
EndDo // Produto
IncRegua()
dbSelectArea("SF2")
dbSkip()
EndDo // Cliente
EndDo // Vendedor
EndDo // Eof()
nTtGeral := 0
//AEval( aVlrVend, { | x | nTtGeral := nTtGeral + x[4] } )
dbSelectArea("SF2")
RetIndex("SF2")
Set Filter to
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Gera cabecalho 1 conforme paramentros informados. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cabec1 := "Numero da Peca C Denominacao "
MR765Cab1()
//cabec1:="Numero da Peca C Denominacao % Part % Acum Mes 01 Mes 02 Mes 03 Mes 04 Mes 05 Mes 06 Mes 07 Mes 08 Mes 09 Mes 10 Mes 11 Mes 12 C.M.M. Tot.Cons."
// 123456789012345 1 123456789012345678901234567890 9.999.999.999,99 999,99 999,99 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 99.999.999
// 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
cabec2 := ""
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis para movimentacao do cursor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
SetRegua(RecCount()) // Total de Elementos da regua
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Impressao do relatorio. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
dbGoTop()
Do While !Eof() .And. lContinua
#IFNDEF WINDOWS
If LastKey() == 286 //ALT_A
lEnd := .t.
EndIf
#ENDIF
If lEnd
@PROW()+1,001 Psay "CANCELADO PELO OPERADOR"
lContinua := .F.
Exit
Endif
cVendC := TRB->VENDEDOR
nTotVend := 0
// AEval( aVlrVend, { | x | Iif(x[1]==cVendC,nTotVend := nTotVend + x[4],) } )
If li > 59
cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
Endif
nPorcPrd := Iif(nTtGeral==0,1,(nTotVend / nTtGeral))*100
dbSelectArea("SA3")
dbSetOrder(1)
dbSeek( xFilial("SA3")+cVendC )
If !Eof()
cNomVend := AllTrim(SA3->A3_NOME)
Else
cNomVend := "Nao Informado"
EndIf
nColunas := 18 + Len(cNomVend)
@ li,00 Psay "Vendedor : "+cVendC+" - "+cNomVend
li := li + 1
@ li,00 Psay "Cliente(s)"
li := li + 1
dbSelectArea("TRB")
VDQTDE01 := 0
VDQTDE02 := 0
VDQTDE03 := 0
VDQTDE04 := 0
VDQTDE05 := 0
VDQTDE06 := 0
VDQTDE07 := 0
VDQTDE08 := 0
VDQTDE09 := 0
VDQTDE10 := 0
VDQTDE11 := 0
VDQTDE12 := 0
VDTOTACUM:= 0
Do While !Eof() .And. TRB->VENDEDOR == cVendC .And. lContinua
If lEnd
@PROW()+1,001 Psay "CANCELADO PELO OPERADOR"
lContinua := .F.
Exit
Endif
cCliente := TRB->CLIENTE
cLojaCli := TRB->LOJACLI
dbSelectArea("SA1")
dbSeek( xFilial("SA1")+cCliente+cLojaCli )
nAcPorce := 0
If li > 59
cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
nPorcPrd := Iif(nTtGeral==0,1,(nTotVend / nTtGeral))*100
dbSelectArea("SA3")
dbSetOrder(1)
dbSeek( xFilial("SA3")+cVendC )
If !Eof()
cNomVend := AllTrim(SA3->A3_NOME)
Else
cNomVend := "Nao Informado"
EndIf
nColunas := 18 + Len(cNomVend)
@ li,00 Psay "Vendedor : "+cVendC+" - "+cNomVend
li := li + 1
@ li,00 Psay "Cliente(s)"
li := li + 1
Endif
@ li,00 Psay cCliente+" "+cLojaCli+" - "+Alltrim(SA1->A1_NOME)
li := li + 1
Do While !Eof() .And. TRB->VENDEDOR == cVendC .And. TRB->CLIENTE+TRB->LOJACLI == cCliente+cLojaCli .And. lContinua
dbSelectArea("SB1")
cDesprod:= SB1->B1_DESC
dbSetOrder(1)
dbSeek( xFilial("SB1")+TRB->PRODUTO )
// @ li,00 Psay TRB->PRODUTO+" - "+(cDesprod)
@ li,00 Psay TRB->PRODUTO+" - "+Substr(SB1->B1_DESC,1,42)
nColunas := 54
For i := 1 To 12
Do Case
Case i == 1
@ li,nColunas Psay TRB->QTDE01 Picture("@E 99999,999")
Case i == 2
@ li,nColunas Psay TRB->QTDE02 Picture("@E 99999,999")
Case i == 3
@ li,nColunas Psay TRB->QTDE03 Picture("@E 99999,999")
Case i == 4
@ li,nColunas Psay TRB->QTDE04 Picture("@E 99999,999")
Case i == 5
@ li,nColunas Psay TRB->QTDE05 Picture("@E 99999,999")
Case i == 6
@ li,nColunas Psay TRB->QTDE06 Picture("@E 99999,999")
Case i == 7
@ li,nColunas Psay TRB->QTDE07 Picture("@E 99999,999")
Case i == 8
@ li,nColunas Psay TRB->QTDE08 Picture("@E 99999,999")
Case i == 9
@ li,nColunas Psay TRB->QTDE09 Picture("@E 99999,999")
Case i == 10
@ li,nColunas Psay TRB->QTDE10 Picture("@E 99999,999")
Case i == 11
@ li,nColunas Psay TRB->QTDE11 Picture("@E 99999,999")
Case i == 12
@ li,nColunas Psay TRB->QTDE12 Picture("@E 99999,999")
EndCase
nColunas := nColunas + 12
Next
@ li,206 Psay TRB->TOTACUM Picture "@E 9999,999,999"
li := li + 1
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Calcula Total por Vendedor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
VDQTDE01 := VDQTDE01 + TRB->QTDE01
VDQTDE02 := VDQTDE02 + TRB->QTDE02
VDQTDE03 := VDQTDE03 + TRB->QTDE03
VDQTDE04 := VDQTDE04 + TRB->QTDE04
VDQTDE05 := VDQTDE05 + TRB->QTDE05
VDQTDE06 := VDQTDE06 + TRB->QTDE06
VDQTDE07 := VDQTDE07 + TRB->QTDE07
VDQTDE08 := VDQTDE08 + TRB->QTDE08
VDQTDE09 := VDQTDE09 + TRB->QTDE09
VDQTDE10 := VDQTDE10 + TRB->QTDE10
VDQTDE11 := VDQTDE11 + TRB->QTDE11
VDQTDE12 := VDQTDE12 + TRB->QTDE12
VDTOTACUM:= VDTOTACUM + TRB->TOTACUM
IncRegua()
dbSelectArea("TRB")
dbSkip()
EndDo
EndDo
@ li, 00 Psay "Total Vendedor --> "
nColunas := 54
For i := 1 To 12
Do Case
Case i == 1
@ li,nColunas Psay VDQTDE01 Picture "@E 99999,999"
Case i == 2
@ li,nColunas Psay VDQTDE02 Picture "@E 99999,999"
Case i == 3
@ li,nColunas Psay VDQTDE03 Picture "@E 99999,999"
Case i == 4
@ li,nColunas Psay VDQTDE04 Picture "@E 99999,999"
Case i == 5
@ li,nColunas Psay VDQTDE05 Picture "@E 99999,999"
Case i == 6
@ li,nColunas Psay VDQTDE06 Picture "@E 99999,999"
Case i == 7
@ li,nColunas Psay VDQTDE07 Picture "@E 99999,999"
Case i == 8
@ li,nColunas Psay VDQTDE08 Picture "@E 99999,999"
Case i == 9
@ li,nColunas Psay VDQTDE09 Picture "@E 99999,999"
Case i == 10
@ li,nColunas Psay VDQTDE10 Picture "@E 99999,999"
Case i == 11
@ li,nColunas Psay VDQTDE11 Picture "@E 99999,999"
Case i == 12
@ li,nColunas Psay VDQTDE12 Picture "@E 99999,999"
EndCase
nColunas := nColunas + 12
Next
@ li,206 Psay VDTOTACUM Picture "@E 9999,999,999"
li := li + 1
@ li,00 Psay Replicate("-",220)
li := li + 1
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Calcula Total Geral. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
TGQTDE01 := TGQTDE01 + VDQTDE01
TGQTDE02 := TGQTDE02 + VDQTDE02
TGQTDE03 := TGQTDE03 + VDQTDE03
TGQTDE04 := TGQTDE04 + VDQTDE04
TGQTDE05 := TGQTDE05 + VDQTDE05
TGQTDE06 := TGQTDE06 + VDQTDE06
TGQTDE07 := TGQTDE07 + VDQTDE07
TGQTDE08 := TGQTDE08 + VDQTDE08
TGQTDE09 := TGQTDE09 + VDQTDE09
TGQTDE10 := TGQTDE10 + VDQTDE10
TGQTDE11 := TGQTDE11 + VDQTDE11
TGQTDE12 := TGQTDE12 + VDQTDE12
TGTOTACUM := TGTOTACUM + VDTOTACUM
EndDo
@ li, 00 Psay "Total Geral
> "
nColunas := 54
For i := 1 To 12
Do Case
Case i == 1
@ li,nColunas Psay TGQTDE01 Picture "@E 99999,999"
Case i == 2
@ li,nColunas Psay TGQTDE02 Picture "@E 99999,999"
Case i == 3
@ li,nColunas Psay TGQTDE03 Picture "@E 99999,999"
Case i == 4
@ li,nColunas Psay TGQTDE04 Picture "@E 99999,999"
Case i == 5
@ li,nColunas Psay TGQTDE05 Picture "@E 99999,999"
Case i == 6
@ li,nColunas Psay TGQTDE06 Picture "@E 99999,999"
Case i == 7
@ li,nColunas Psay TGQTDE07 Picture "@E 99999,999"
Case i == 8
@ li,nColunas Psay TGQTDE08 Picture "@E 99999,999"
Case i == 9
@ li,nColunas Psay TGQTDE09 Picture "@E 99999,999"
Case i == 10
@ li,nColunas Psay TGQTDE10 Picture "@E 99999,999"
Case i == 11
@ li,nColunas Psay TGQTDE11 Picture "@E 99999,999"
Case i == 12
@ li,nColunas Psay TGQTDE12 Picture "@E 99999,999"
EndCase
nColunas := nColunas + 12
Next
@ li,206 Psay TGTOTACUM Picture "@E 9999,999,999"
li := li + 1
@ li,00 Psay Replicate("-",220)
li := li + 1
If li != 80
Roda(CbCont," ",tamanho)
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Restaura a Integridade dos dados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
dbUnlockAll()
dbCloseArea()
dbSelectArea("SF2")
IF File( cArqSF2+OrdBagExt() )
FErase( cArqSF2+OrdBagExt() )
EndIf
dbSetOrder(1)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Deleta arquivo de trabalho. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
IF File(cArqTrab+".DBF")
FErase(cArqTrab+".DBF")
Endif
IF File( cArqTrab+OrdBagExt() )
FErase( cArqTrab+OrdBagExt() )
EndIf
Set device to Screen
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Se em disco, desvia para Spool ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If aReturn[5] == 1 // Se Saida para disco, ativa SPOOL
Set Printer TO
dbCommitAll()
OurSpool(wnrel)
Endif
MS_FLUSH()
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ MR765Cab1³ Autor ³ Marcia Cabrini. ³ Data ³ 18/07/98 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Gera cabecalho 1 para o relatorio. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ ExpC1 := MR765Cab1( ExpC1 ) ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ExpC1 - cabecalho 1 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso ³ FATR765 ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
// Substituido pelo assistente de conversao do AP6 IDE em 28/06/02 ==> Function MR765Cab1
Static Function MR765Cab1()
nMes := ""
cAno := ""
aNomeMes := { "Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez" }
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Calcula o mes/ano para o cabecalho. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
For n := 11 To 0 Step -1
nMes := Val(cMesRela) - n
If nMes < 1
nMes := 12 + nMes
cAno := cAnoAnte
Else
cAno := cAnoRela
Endif
cabec1 := cabec1 + Right( Space(12) + aNomeMes[nMes] + "/" + cAno, 12 )
Next
cabec1 := cabec1 + " Tot.Cons."
Return
Ja tentei de tudo mas nao consegui achar por que ele nao continua o relatorio mesmo se aquele vendedor estiver com nenhuma venda.
Por favor me ajudem, segue abaixo o fonte, ele é um pouco extenso.
FONTE
#include "rwmake.ch" // incluido pelo assistente de conversao do AP6 IDE em 28/06/02
User Function Matr76a() // incluido pelo assistente de conversao do AP6 IDE em 28/06/02
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Declaracao de variaveis utilizadas no programa atraves da funcao ³
//³ SetPrvt, que criara somente as variaveis definidas pelo usuario, ³
//³ identificando as variaveis publicas do sistema utilizadas no codigo ³
//³ Incluido pelo assistente de conversao do AP6 IDE ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SetPrvt("CBTXT,CDESC1,CDESC2,CDESC3,CBCONT,CABEC1")
SetPrvt("CABEC2,WNREL,TAMANHO,LIMITE,CSTRING,NTIPO")
SetPrvt("NORDEM,I,TITULO,LCONTINUA,LEND,ARETURN")
SetPrvt("NOMEPROG,ALINHA,NLASTKEY,CPERG,NTOTVEND,CSAV20")
SetPrvt("CSAV7,CMESRELA,CMESINIC,NDECPREC,NDECQTDE,ACAMPOS")
SetPrvt("CARQTRAB,CARQSF2,CKEY,CINDEX,CCONDICAO,AVLRVEND")
SetPrvt("CVENDC,AACUMVAL,NQTDCONS,NNOMESES,DDATCONS,CANOAUXI")
SetPrvt("NTTGERAL,NELEMENT,NPORCPRD,NACPORCE,NQTDES,CCLASSE")
SetPrvt("NCOLUNAS,ATAM,TGQTDE01,TGQTDE02,TGQTDE03,TGQTDE04")
SetPrvt("TGQTDE05,TGQTDE06,TGQTDE07,TGQTDE08,TGQTDE09,TGQTDE10")
SetPrvt("TGQTDE11,TGQTDE12,TGTOTACUM,CVENDINIC,CREGIFIM,CANORELA")
SetPrvt("CCLIEINI,CCLIEFIM,LI,M_PAG,CANOANTE,_DPERINI")
SetPrvt("_DPERFIN,CKEYF2,_CPERIODO,CCOND,NINDEX,_NCONT")
SetPrvt("CCLIENTE,CLOJACLI,CPRODUTO,NMES,_CIND,X")
SetPrvt("CNOMVEND,VDQTDE01,VDQTDE02,VDQTDE03,VDQTDE04,VDQTDE05")
SetPrvt("VDQTDE06,VDQTDE07,VDQTDE08,VDQTDE09,VDQTDE10,VDQTDE11")
SetPrvt("VDQTDE12,VDTOTACUM,EXPC1,CANO,ANOMEMES,N,CFILTER,")
//U_CFGA0001(cEmpAnt, cFilAnt,alltrim(cUsername), alltrim(procname()), " ", DATE(), TIME()) //CHAMADA LOG DOS FONTES
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ MATR76A ³ Autor ³ Marcia Cabrini. ³ Data ³ 18/07/98 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Relatorio de Curva ABC Vendedores / Clientes / Produtos. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ MATR765 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define Variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
CbTxt := ""
cDesc1 := PADC("Relat¢rio demonstrativo das vendas (Faturamento),",74)
cDesc2 := PADC("por ordem de vendedor por cliente e por produto",74)
cDesc3 := PADC("Este relatorio dever ser impresso no formul rio de 132 colunas.",74)
CbCont := ""
cabec1 := ""
cabec2 := ""
wnrel := ""
tamanho := "G"
limite := 220
cString := "SF2"
nTipo := 0
nOrdem := ""
i := ""
titulo := "Curva ABC de Faturamento - Vendedor - Cliente - Produto"
lContinua:= .T.
lEnd := .F.
aReturn := { "Zebrado", 1,"Administracao", 1, 2, 1, "",1 }
nomeprog := "MATR76A"
aLinha := {}
nLastKey := 0
cPerg := "FAT765"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica as perguntas selecionadas ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
pergunte("FAT765",.T.)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis utilizadas para parametros ³
//³ mv_par01 // Vendedor de ³
//³ mv_par02 // Vendedo ate ³
//³ mv_par03 // Mes ³
//³ mv_par04 // Ano ³
//³ mv_par05 // % Prod. A ³
//³ mv_par06 // % Prod. B ³
//³ mv_par07 // % Prod. C ³
//³ mv_par08 // Cliente de ³
//³ mv_par09 // Cliente ate ³
//³ mv_par10 // Seguimento de ³
//³ mv_par11 // Seguimento ate ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Envia controle para a funcao SETPRINT ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
wnrel := "MATR76A" //Nome Default do relatorio em Disco
wnrel := SetPrint(cString,wnrel,cPerg,@titulo,cDesc1,cDesc2,cDesc3,.F.,"",.T.,Tamanho)
If nLastKey == 27
Set Filter to
Return
Endif
SetDefault(aReturn,cString)
If nLastKey == 27
Set Filter to
Return
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define Variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nTotVend := 0
cSav20 := ""
cSav7 := ""
cMesRela := ""
cMesInic := ""
nDecPrec := ""
nDecQtde := ""
aCampos := ""
cArqTrab := ""
cArqSF2 := ""
cKey := ""
cIndex := ""
cCondicao:= ""
aVlrVend := ""
cVendC := ""
aAcumVal := ""
nQtdCons := ""
nNoMeses := ""
dDatCons := ""
cAnoAuxi := ""
nTtGeral := ""
nElement := ""
nPorcPrd := ""
nAcPorce := ""
nQtdes := ""
cClasse := ""
nColunas := ""
aTam := 0
TGQTDE01 := 0
TGQTDE02 := 0
TGQTDE03 := 0
TGQTDE04 := 0
TGQTDE05 := 0
TGQTDE06 := 0
TGQTDE07 := 0
TGQTDE08 := 0
TGQTDE09 := 0
TGQTDE10 := 0
TGQTDE11 := 0
TGQTDE12 := 0
TGTOTACUM:= 0
nOrdem := aReturn[8]
nTipo := 15
cVendInic:= mv_par01
cRegiFim := mv_par02
cMesRela := StrZero(mv_par03,2)
cAnoRela := StrZero(mv_par04,4)
cClieIni := mv_par08
cClieFim := mv_par09
cSeguim1 := mv_par10
cSeguim2 := mv_par11
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis utilizadas para Impressao do Cabecalho e Rodape ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cbtxt := SPACE(10)
cbcont := 0
li := 80
m_pag := 1
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Os 12 meses estao contidos em 1 ano ou 2 anos. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If mv_par03 == 12
cAnoAnte := StrZero(mv_par04,4)
cMesInic := "01"
Else
cAnoAnte := StrZero((mv_par04-1),4)
cMesInic := StrZero((mv_par03+1),2)
Endif
_dPerIni := Dtos(Ctod("01/"+cMesInic+"/"+cAnoAnte))
// Acerto devido BUG do Milenio
// Roberto Fernandes
If cMesRela == "12"
_dPerFin := Dtos(Ctod("01/"+Str(Val(cMesRela))+"/"+"31"))
Else
_dPerFin := Dtos(Ctod("01/"+Str(Val(cMesRela)+1)+"/"+cAnoRela)-1)
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define estrutura e gera o arquivo de trabalho ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aCampos := {{"VENDEDOR","C", 6,0},;
{"CLIENTE" ,"C", 6,0},;
{"LOJACLI" ,"C", 2,0},;
{"PRODUTO" ,"C",15,0},;
{"VALCMED" ,"N",16,2},;
{"MESCONS" ,"N", 2,0},;
{"QTDE01" ,"N",11,2},;
{"QTDE02" ,"N",11,2},;
{"QTDE03" ,"N",11,2},;
{"QTDE04" ,"N",11,2},;
{"QTDE05" ,"N",11,2},;
{"QTDE06" ,"N",11,2},;
{"QTDE07" ,"N",11,2},;
{"QTDE08" ,"N",11,2},;
{"QTDE09" ,"N",11,2},;
{"QTDE10" ,"N",11,2},;
{"QTDE11" ,"N",11,2},;
{"QTDE12" ,"N",11,2},;
{"TOTACUM" ,"N",14,2}}
cArqTrab := CriaTrab(aCampos,.T.)
Use &cArqTrab Alias "TRB" New
cFilter := aReturn[7]
cKey := "VENDEDOR+CLIENTE+LOJACLI+PRODUTO"
IndRegua("TRB",cArqTrab,cKey,,,"Selecionando Registros...")
dbSelectArea("SF2")
cArqSF2 := CriaTrab(NIL,.F.)
cKeyF2 := "F2_FILIAL+F2_VEND1+F2_CLIENTE+F2_LOJA"
_cPeriodo:= Str(Year(F2_EMISSAO),4)
If !Empty(cFilter)
cCond := "Dtos(F2_EMISSAO) >= _dPerIni .And. Dtos(F2_EMISSAO) <= _dPerFin .And. !F2_TIPO $ 'D#B' .AND. F2_VEND1>=MV_PAR01 .AND. F2_VEND1 <= MV_PAR02 .AND. " + cFilter
Else
cCond := "Dtos(F2_EMISSAO) >= _dPerIni .And. Dtos(F2_EMISSAO) <= _dPerFin .And. !F2_TIPO $ 'D#B' .AND. F2_VEND1>=MV_PAR01 .AND. F2_VEND1 <= MV_PAR02"
EndIf
IndRegua("SF2",cArqSF2,cKeyF2,,cCond,"Selecionando Registro SF2...")
nIndex := RetIndex("SF2")
dbSelectArea("SF2")
//dbSetIndex(cArqSF2+OrdBagExt())
//dbSetOrder(nIndex+1)
dbGotop()
dbSeek(cVendInic,.t. )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Chamada da Impressao ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RptStatus({|| RptDetail()})// Substituido pelo assistente de conversao do AP6 IDE em 28/06/02 ==> RptStatus({|| Execute(RptDetail)})
Return
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ IMPRESSAO DA RELATORIO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Static Function RptDetail()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis para movimentacao do cursor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SF2")
dbGotop()
_nCont := 0
While !Eof()
_nCont := _nCont + 1
dbSelectArea("SF2")
dbSkip()
EndDo
SetRegua(_nCont)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Gera arquivo de trabalho com dados do SF2. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aVlrVend := {}
dbSelectArea("SF2")
dbGotop()
Do While !Eof() //.And. SF2->F2_FILIAL == xFilial("SF2")
cVendC := SF2->F2_VEND1
Do While !Eof().And.SF2->F2_VEND1 == cVendC//.And.SF2->F2_FILIAL == xFilial("SF2")
If SF2->F2_CLIENTE < cClieIni .Or. SF2->F2_CLIENTE > cClieFim
dbSelectArea("SF2")
dbSkip()
Loop
Endif
// SA1->(dbSetOrder(1))
// SA1->(dbSeek( xFilial("SA1")+SF2->(F2_CLIENTE+F2_LOJA) ))
// If MV_PAR10 <> SA1->A1_SATIV1 // Se nao for o mesmo seguimento de atividade
// If mv_par10 < SA1->A1_SATIV1 .Or. mv_par11 > SA1->A1_SATIV1
// dbSelectArea("SF2")
// dbSkip()
// Loop
// Endif
cCliente := SF2->F2_CLIENTE
cLojaCli := SF2->F2_LOJA
Aadd(aVlrVend, { cVendC, cCliente, cLojaCli })
Do While !Eof() .and.SF2->F2_CLIENTE == cCliente .And. SF2->F2_LOJA == cLojaCli .and.SF2->F2_VEND1 == cVendC
//.And. SF2->F2_FILIAL == xFilial("SF2") .And. SF2->(!Eof())
If Str(Year(SF2->F2_EMISSAO),4) != cAnoRela .And. Str(Year(SF2->F2_EMISSAO),4) != cAnoAnte
dbSelectArea("SF2")
dbSkip()
Loop
Endif
dbSelectArea("SD2")
dbSetOrder(3)
dbSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)
While !Eof() .And. SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA == SD2->D2_DOC+SD2->D2_SERIE+SD2->D2_CLIENTE+SD2->D2_LOJA
cProduto := SD2->D2_COD
dbSelectArea("SF4")
dbSetOrder(1)
dbSeek(xFilial("SF4")+SD2->D2_TES )
If !Eof() .And. SF4->F4_DUPLIC == "S" .And. !(SD2->D2_TES $ "699,713,715,721")
aAcumVal := { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
nQtdCons := 0 // Qtde. consumida do produto no periodo
nNoMeses := 0 // Nro. de meses do produto para calculo
If Str(Year(SF2->F2_EMISSAO),4) == cAnoRela
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Os 12 meses estao em 1 unico ano. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dDatCons := 12 - (Val(cMesRela) - Month(SF2->F2_EMISSAO))
For i := 1 To 12
If i == dDatCons
aAcumVal := SD2->D2_QUANT
Endif
Next
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Movimentacao do cursor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Os 12 meses estao em 2 anos consecutivos. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If cAnoAnte == Str(Year(SF2->F2_EMISSAO),4)
i := 13 - Val(cMesRela)
dDatCons := Month(SF2->F2_EMISSAO) - Val(cMesRela)
For nMes := 1 To (i-1)
If nMes == dDatCons
aAcumVal[nMes] := SD2->D2_QUANT
Endif
Next
Endif
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Grava somente se houver dados no periodo. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
cArea:= getArea()
dbSeek (cVendC+cCliente+cLojaCli+cProduto)
If Eof()
RecLock("TRB",.T.)
TRB->VENDEDOR := cVendC
TRB->CLIENTE := cCliente
TRB->LOJACLI := cLojaCli
TRB->PRODUTO := cProduto
Else
RecLock("TRB",.F.)
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Grava o valor do consumo em ordem decrescente de valor, ³
//³ para ordenacao pelo campo. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
For i := 1 To 12
_cInd := StrZero(i,2)
Do Case
Case _cInd == "01"
TRB->QTDE01 := TRB->QTDE01 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "02"
TRB->QTDE02 := TRB->QTDE02 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "03"
TRB->QTDE03 := TRB->QTDE03 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "04"
TRB->QTDE04 := TRB->QTDE04 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "05"
TRB->QTDE05 := TRB->QTDE05 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "06"
TRB->QTDE06 := TRB->QTDE06 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "07"
TRB->QTDE07 := TRB->QTDE07 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "08"
TRB->QTDE08 := TRB->QTDE08 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "09"
TRB->QTDE09 := TRB->QTDE09 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "10"
TRB->QTDE10 := TRB->QTDE10 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "11"
TRB->QTDE11 := TRB->QTDE11 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
Case _cInd == "12"
TRB->QTDE12 := TRB->QTDE12 + aAcumVal
TRB->TOTACUM:= TRB->TOTACUM + aAcumVal
EndCase
Next
MsUnLock()
aAcumVal := { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
EndIf
dbSelectArea("SD2")
dbSkip()
EndDo // Produto
IncRegua()
dbSelectArea("SF2")
dbSkip()
EndDo // Cliente
EndDo // Vendedor
EndDo // Eof()
nTtGeral := 0
//AEval( aVlrVend, { | x | nTtGeral := nTtGeral + x[4] } )
dbSelectArea("SF2")
RetIndex("SF2")
Set Filter to
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Gera cabecalho 1 conforme paramentros informados. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cabec1 := "Numero da Peca C Denominacao "
MR765Cab1()
//cabec1:="Numero da Peca C Denominacao % Part % Acum Mes 01 Mes 02 Mes 03 Mes 04 Mes 05 Mes 06 Mes 07 Mes 08 Mes 09 Mes 10 Mes 11 Mes 12 C.M.M. Tot.Cons."
// 123456789012345 1 123456789012345678901234567890 9.999.999.999,99 999,99 999,99 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 9.999.999 99.999.999
// 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
cabec2 := ""
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Variaveis para movimentacao do cursor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
SetRegua(RecCount()) // Total de Elementos da regua
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Impressao do relatorio. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
dbGoTop()
Do While !Eof() .And. lContinua
#IFNDEF WINDOWS
If LastKey() == 286 //ALT_A
lEnd := .t.
EndIf
#ENDIF
If lEnd
@PROW()+1,001 Psay "CANCELADO PELO OPERADOR"
lContinua := .F.
Exit
Endif
cVendC := TRB->VENDEDOR
nTotVend := 0
// AEval( aVlrVend, { | x | Iif(x[1]==cVendC,nTotVend := nTotVend + x[4],) } )
If li > 59
cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
Endif
nPorcPrd := Iif(nTtGeral==0,1,(nTotVend / nTtGeral))*100
dbSelectArea("SA3")
dbSetOrder(1)
dbSeek( xFilial("SA3")+cVendC )
If !Eof()
cNomVend := AllTrim(SA3->A3_NOME)
Else
cNomVend := "Nao Informado"
EndIf
nColunas := 18 + Len(cNomVend)
@ li,00 Psay "Vendedor : "+cVendC+" - "+cNomVend
li := li + 1
@ li,00 Psay "Cliente(s)"
li := li + 1
dbSelectArea("TRB")
VDQTDE01 := 0
VDQTDE02 := 0
VDQTDE03 := 0
VDQTDE04 := 0
VDQTDE05 := 0
VDQTDE06 := 0
VDQTDE07 := 0
VDQTDE08 := 0
VDQTDE09 := 0
VDQTDE10 := 0
VDQTDE11 := 0
VDQTDE12 := 0
VDTOTACUM:= 0
Do While !Eof() .And. TRB->VENDEDOR == cVendC .And. lContinua
If lEnd
@PROW()+1,001 Psay "CANCELADO PELO OPERADOR"
lContinua := .F.
Exit
Endif
cCliente := TRB->CLIENTE
cLojaCli := TRB->LOJACLI
dbSelectArea("SA1")
dbSeek( xFilial("SA1")+cCliente+cLojaCli )
nAcPorce := 0
If li > 59
cabec(titulo,cabec1,cabec2,nomeprog,tamanho,nTipo)
nPorcPrd := Iif(nTtGeral==0,1,(nTotVend / nTtGeral))*100
dbSelectArea("SA3")
dbSetOrder(1)
dbSeek( xFilial("SA3")+cVendC )
If !Eof()
cNomVend := AllTrim(SA3->A3_NOME)
Else
cNomVend := "Nao Informado"
EndIf
nColunas := 18 + Len(cNomVend)
@ li,00 Psay "Vendedor : "+cVendC+" - "+cNomVend
li := li + 1
@ li,00 Psay "Cliente(s)"
li := li + 1
Endif
@ li,00 Psay cCliente+" "+cLojaCli+" - "+Alltrim(SA1->A1_NOME)
li := li + 1
Do While !Eof() .And. TRB->VENDEDOR == cVendC .And. TRB->CLIENTE+TRB->LOJACLI == cCliente+cLojaCli .And. lContinua
dbSelectArea("SB1")
cDesprod:= SB1->B1_DESC
dbSetOrder(1)
dbSeek( xFilial("SB1")+TRB->PRODUTO )
// @ li,00 Psay TRB->PRODUTO+" - "+(cDesprod)
@ li,00 Psay TRB->PRODUTO+" - "+Substr(SB1->B1_DESC,1,42)
nColunas := 54
For i := 1 To 12
Do Case
Case i == 1
@ li,nColunas Psay TRB->QTDE01 Picture("@E 99999,999")
Case i == 2
@ li,nColunas Psay TRB->QTDE02 Picture("@E 99999,999")
Case i == 3
@ li,nColunas Psay TRB->QTDE03 Picture("@E 99999,999")
Case i == 4
@ li,nColunas Psay TRB->QTDE04 Picture("@E 99999,999")
Case i == 5
@ li,nColunas Psay TRB->QTDE05 Picture("@E 99999,999")
Case i == 6
@ li,nColunas Psay TRB->QTDE06 Picture("@E 99999,999")
Case i == 7
@ li,nColunas Psay TRB->QTDE07 Picture("@E 99999,999")
Case i == 8
@ li,nColunas Psay TRB->QTDE08 Picture("@E 99999,999")
Case i == 9
@ li,nColunas Psay TRB->QTDE09 Picture("@E 99999,999")
Case i == 10
@ li,nColunas Psay TRB->QTDE10 Picture("@E 99999,999")
Case i == 11
@ li,nColunas Psay TRB->QTDE11 Picture("@E 99999,999")
Case i == 12
@ li,nColunas Psay TRB->QTDE12 Picture("@E 99999,999")
EndCase
nColunas := nColunas + 12
Next
@ li,206 Psay TRB->TOTACUM Picture "@E 9999,999,999"
li := li + 1
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Calcula Total por Vendedor. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
VDQTDE01 := VDQTDE01 + TRB->QTDE01
VDQTDE02 := VDQTDE02 + TRB->QTDE02
VDQTDE03 := VDQTDE03 + TRB->QTDE03
VDQTDE04 := VDQTDE04 + TRB->QTDE04
VDQTDE05 := VDQTDE05 + TRB->QTDE05
VDQTDE06 := VDQTDE06 + TRB->QTDE06
VDQTDE07 := VDQTDE07 + TRB->QTDE07
VDQTDE08 := VDQTDE08 + TRB->QTDE08
VDQTDE09 := VDQTDE09 + TRB->QTDE09
VDQTDE10 := VDQTDE10 + TRB->QTDE10
VDQTDE11 := VDQTDE11 + TRB->QTDE11
VDQTDE12 := VDQTDE12 + TRB->QTDE12
VDTOTACUM:= VDTOTACUM + TRB->TOTACUM
IncRegua()
dbSelectArea("TRB")
dbSkip()
EndDo
EndDo
@ li, 00 Psay "Total Vendedor --> "
nColunas := 54
For i := 1 To 12
Do Case
Case i == 1
@ li,nColunas Psay VDQTDE01 Picture "@E 99999,999"
Case i == 2
@ li,nColunas Psay VDQTDE02 Picture "@E 99999,999"
Case i == 3
@ li,nColunas Psay VDQTDE03 Picture "@E 99999,999"
Case i == 4
@ li,nColunas Psay VDQTDE04 Picture "@E 99999,999"
Case i == 5
@ li,nColunas Psay VDQTDE05 Picture "@E 99999,999"
Case i == 6
@ li,nColunas Psay VDQTDE06 Picture "@E 99999,999"
Case i == 7
@ li,nColunas Psay VDQTDE07 Picture "@E 99999,999"
Case i == 8
@ li,nColunas Psay VDQTDE08 Picture "@E 99999,999"
Case i == 9
@ li,nColunas Psay VDQTDE09 Picture "@E 99999,999"
Case i == 10
@ li,nColunas Psay VDQTDE10 Picture "@E 99999,999"
Case i == 11
@ li,nColunas Psay VDQTDE11 Picture "@E 99999,999"
Case i == 12
@ li,nColunas Psay VDQTDE12 Picture "@E 99999,999"
EndCase
nColunas := nColunas + 12
Next
@ li,206 Psay VDTOTACUM Picture "@E 9999,999,999"
li := li + 1
@ li,00 Psay Replicate("-",220)
li := li + 1
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Calcula Total Geral. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
TGQTDE01 := TGQTDE01 + VDQTDE01
TGQTDE02 := TGQTDE02 + VDQTDE02
TGQTDE03 := TGQTDE03 + VDQTDE03
TGQTDE04 := TGQTDE04 + VDQTDE04
TGQTDE05 := TGQTDE05 + VDQTDE05
TGQTDE06 := TGQTDE06 + VDQTDE06
TGQTDE07 := TGQTDE07 + VDQTDE07
TGQTDE08 := TGQTDE08 + VDQTDE08
TGQTDE09 := TGQTDE09 + VDQTDE09
TGQTDE10 := TGQTDE10 + VDQTDE10
TGQTDE11 := TGQTDE11 + VDQTDE11
TGQTDE12 := TGQTDE12 + VDQTDE12
TGTOTACUM := TGTOTACUM + VDTOTACUM
EndDo
@ li, 00 Psay "Total Geral
> "
nColunas := 54
For i := 1 To 12
Do Case
Case i == 1
@ li,nColunas Psay TGQTDE01 Picture "@E 99999,999"
Case i == 2
@ li,nColunas Psay TGQTDE02 Picture "@E 99999,999"
Case i == 3
@ li,nColunas Psay TGQTDE03 Picture "@E 99999,999"
Case i == 4
@ li,nColunas Psay TGQTDE04 Picture "@E 99999,999"
Case i == 5
@ li,nColunas Psay TGQTDE05 Picture "@E 99999,999"
Case i == 6
@ li,nColunas Psay TGQTDE06 Picture "@E 99999,999"
Case i == 7
@ li,nColunas Psay TGQTDE07 Picture "@E 99999,999"
Case i == 8
@ li,nColunas Psay TGQTDE08 Picture "@E 99999,999"
Case i == 9
@ li,nColunas Psay TGQTDE09 Picture "@E 99999,999"
Case i == 10
@ li,nColunas Psay TGQTDE10 Picture "@E 99999,999"
Case i == 11
@ li,nColunas Psay TGQTDE11 Picture "@E 99999,999"
Case i == 12
@ li,nColunas Psay TGQTDE12 Picture "@E 99999,999"
EndCase
nColunas := nColunas + 12
Next
@ li,206 Psay TGTOTACUM Picture "@E 9999,999,999"
li := li + 1
@ li,00 Psay Replicate("-",220)
li := li + 1
If li != 80
Roda(CbCont," ",tamanho)
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Restaura a Integridade dos dados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
dbUnlockAll()
dbCloseArea()
dbSelectArea("SF2")
IF File( cArqSF2+OrdBagExt() )
FErase( cArqSF2+OrdBagExt() )
EndIf
dbSetOrder(1)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Deleta arquivo de trabalho. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
IF File(cArqTrab+".DBF")
FErase(cArqTrab+".DBF")
Endif
IF File( cArqTrab+OrdBagExt() )
FErase( cArqTrab+OrdBagExt() )
EndIf
Set device to Screen
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Se em disco, desvia para Spool ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If aReturn[5] == 1 // Se Saida para disco, ativa SPOOL
Set Printer TO
dbCommitAll()
OurSpool(wnrel)
Endif
MS_FLUSH()
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ MR765Cab1³ Autor ³ Marcia Cabrini. ³ Data ³ 18/07/98 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Gera cabecalho 1 para o relatorio. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ ExpC1 := MR765Cab1( ExpC1 ) ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ExpC1 - cabecalho 1 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso ³ FATR765 ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
// Substituido pelo assistente de conversao do AP6 IDE em 28/06/02 ==> Function MR765Cab1
Static Function MR765Cab1()
nMes := ""
cAno := ""
aNomeMes := { "Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez" }
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Calcula o mes/ano para o cabecalho. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
For n := 11 To 0 Step -1
nMes := Val(cMesRela) - n
If nMes < 1
nMes := 12 + nMes
cAno := cAnoAnte
Else
cAno := cAnoRela
Endif
cabec1 := cabec1 + Right( Space(12) + aNomeMes[nMes] + "/" + cAno, 12 )
Next
cabec1 := cabec1 + " Tot.Cons."
Return
Por favor Acessar ou Registrar para participar da conversa.
- brunogfx4
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 79
- Obrigados Recebidos: 0
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 216
- Obrigados Recebidos: 0
- brunogfx4
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 79
- Obrigados Recebidos: 0
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 216
- Obrigados Recebidos: 0
- brunogfx4
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 79
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- PROBLEMA EM RELATÓRIO DE VENDAS
Tempo para a criação da página:0.120 segundos