relatorio de itens mais vendidos por data
Moderador: Moderadores
-
marciopadilhas
- Usuário Nível 1

- Mensagens: 6
- Registrado em: 04 Mar 2013 12:58
- Localização: campinas/sp
relatorio de itens mais vendidos por data
Boa tarde a todos, gostaria de uma ajuda, tenho uma tabela de vendas, e gostaria de de tirar um relatorio na tela para saber quais os produtos mais vendidos por um determinado período??
Eu achei alguns assuntos mencinando a função total, mais muito vago, aguem me poderia me orientar como fazer esse relatorio na tela??
Att
Marcio Padilha
Eu achei alguns assuntos mencinando a função total, mais muito vago, aguem me poderia me orientar como fazer esse relatorio na tela??
Att
Marcio Padilha
Editado pela última vez por Pablo César em 04 Mar 2013 16:27, em um total de 1 vez.
Razão: É contra as normas do fórum fornecer o email particular para receber ajuda. O fórum está para compartilhar...
Razão: É contra as normas do fórum fornecer o email particular para receber ajuda. O fórum está para compartilhar...
relatorio de itens mais vendidos por data
Olá Marcio,
Uma maneira bem simples é indexar a tabela por data+produto e fazer um while e totalizar por data e produto e no final é só mostrar na ordem desejada.
Uma maneira bem simples é indexar a tabela por data+produto e fazer um while e totalizar por data e produto e no final é só mostrar na ordem desejada.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
relatorio de itens mais vendidos por data
Muito vago isso de dizer que tem uma tabela de vendas.
Por acaso tem um arquivo contend produto, quantidade, data, etc... é isso?
Existe o comando TOTAL que gera um dbf com totais.
Seu arquivo:
Por acaso tem um arquivo contend produto, quantidade, data, etc... é isso?
Existe o comando TOTAL que gera um dbf com totais.
Seu arquivo:
Código: Selecionar todos
INDEX on produto to temp
TOTAL ON produto TO arqtotais FOR datavenda >= Date() .AND. datavenda <= Date() // ajuste para seus campos
// a linha acima gerou o arqtotais com os totais
use arqtotais
index on descend( qtd ) to temp2
// a linha acima colocou em ordem do maior para o menor
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
marciopadilhas
- Usuário Nível 1

- Mensagens: 6
- Registrado em: 04 Mar 2013 12:58
- Localização: campinas/sp
relatorio de itens mais vendidos por data
Então eu tentei usar essas linhas mais ele só pega os primeiros depois que ele encontra outros do mesmo codigo ele ignora e não soma os campos q eu quero
minha tabela é de vendas
campos datavend, codprod, nomepro, qtdvda, vrunit, valortot, vrporc
oq eu quero somar é qual o produto mais vendido tipo por sequencia, por exemplo no final do dia quero essa informação colocando a data do começo e a data do final
ex:
descrição Qtd Valor Total
coca cola lata 50 150
fanta lata 39 117
Assados 29 72,50
Eu não estou conseguindo fazer esse tipo de relatorio na tela, me ajudem, obrigrado!!
minha tabela é de vendas
campos datavend, codprod, nomepro, qtdvda, vrunit, valortot, vrporc
oq eu quero somar é qual o produto mais vendido tipo por sequencia, por exemplo no final do dia quero essa informação colocando a data do começo e a data do final
ex:
descrição Qtd Valor Total
coca cola lata 50 150
fanta lata 39 117
Assados 29 72,50
Eu não estou conseguindo fazer esse tipo de relatorio na tela, me ajudem, obrigrado!!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
relatorio de itens mais vendidos por data
Código: Selecionar todos
use suatabvendas
Index on codprod to lixo
total on codprod to temp for datavend > date()-10 // ultimos 10 dias
use temp
index on descend( qtdvda ) to lixo
goto top
do while .not. eof()
? codprod, nomepro, qtdvda
skip
enddo
use
fErase( "lixo.ntx" )
fErase( "temp.ntx" )
Se for por valor, só indexer diferente: index on descend( valortot ) to lixo
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
marciopadilhas
- Usuário Nível 1

- Mensagens: 6
- Registrado em: 04 Mar 2013 12:58
- Localização: campinas/sp
relatorio de itens mais vendidos por data
então eu fiz essas linhas, só que ele não soma as quantidades dos itens iguais ele so esta pegando a quantidade maior do produto, ele não esta somando os produtos do mesmo codigo.
Ex.
vendi
1 coca agora
2 coca depois
1 coca outra hora
quero q ele soma todas as cocas do dia q nesse caso daria 4 cocas no total
Ex.
vendi
1 coca agora
2 coca depois
1 coca outra hora
quero q ele soma todas as cocas do dia q nesse caso daria 4 cocas no total
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
relatorio de itens mais vendidos por data
O comando TOTAL faz soma de todos os campos numéricos existentes.
Por acaso seu campo de quantidade é caractere?
Se for... aí só fazendo as contas via programação, ou copiando os dados para um outro arquivo temporário.
Por acaso seu campo de quantidade é caractere?
Se for... aí só fazendo as contas via programação, ou copiando os dados para um outro arquivo temporário.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
marciopadilhas
- Usuário Nível 1

- Mensagens: 6
- Registrado em: 04 Mar 2013 12:58
- Localização: campinas/sp
relatorio de itens mais vendidos por data
não, todos os campos de valores são numericos, mais essas linhas de codigo não esta e esta saindo assim
746 XEROX 10 2.50
969 PAPEL A4 CHAMEX GHIA EMPREENDIMENTO 10 117.00
769 LIG FIXO CAMPINAS E REGIAO (19) 9 2.25
885 CDS E DVS DE FILMES 4 10.00
883 XEROX SAMSUNG 3 0.75
444 HALLS 2 2.00
409 COCA COLA 2LTS 1 6.00
464 CARTAO TELEFONICO 20 UNIDADES 1 4.50
487 IMPRESSAO TEXTO PRETO E BRANCO 1 1.50
494 SCANEAMENTO FOTOS/DOCUMENTOS 1 2.50
553 CURRICULO 1 6.00
746 XEROX 10 2.50
969 PAPEL A4 CHAMEX GHIA EMPREENDIMENTO 10 117.00
769 LIG FIXO CAMPINAS E REGIAO (19) 9 2.25
885 CDS E DVS DE FILMES 4 10.00
883 XEROX SAMSUNG 3 0.75
444 HALLS 2 2.00
409 COCA COLA 2LTS 1 6.00
464 CARTAO TELEFONICO 20 UNIDADES 1 4.50
487 IMPRESSAO TEXTO PRETO E BRANCO 1 1.50
494 SCANEAMENTO FOTOS/DOCUMENTOS 1 2.50
553 CURRICULO 1 6.00
-
marciopadilhas
- Usuário Nível 1

- Mensagens: 6
- Registrado em: 04 Mar 2013 12:58
- Localização: campinas/sp
relatorio de itens mais vendidos por data
sera q não tem um lugar q eu tenho q falar quais são os campos q eu quero q ele totalize do dia que eu quero???
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
relatorio de itens mais vendidos por data
1. O comando TOTAL faz uma cópia do arquivo com os totais, somando tudo que é numérico
2. ON chave é como será feito o total: TOTAL ON COD_PRO, por produto
3. TO arquivo é o nome do arquivo que será salvo
4. FOR condição é o filtro, pra selecionar data, no caso.
Não tenho certeza o que acontece quando a chave for numérica.
2. ON chave é como será feito o total: TOTAL ON COD_PRO, por produto
3. TO arquivo é o nome do arquivo que será salvo
4. FOR condição é o filtro, pra selecionar data, no caso.
Não tenho certeza o que acontece quando a chave for numérica.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
relatorio de itens mais vendidos por data
Olá José,
José, achei muito curioso seu exemplo, e usando uma tabela minha fiz a adaptação para ver o resultado. Ocorre que obtive o mesmo resultado relatado pelo colega Márcio, aparece apenas o produto que teve a maior quantidade, e não a somatória dos campos numéricos.
Olá Márcio,
Márcio, não sei se é a melhor forma, mas veja o exemplo abaixo e adapte a sua tabela. Montei com uma tabela minha, então ajuste as seguintes variáveis pelas suas, e veja se ajuda no seu caso:
José, achei muito curioso seu exemplo, e usando uma tabela minha fiz a adaptação para ver o resultado. Ocorre que obtive o mesmo resultado relatado pelo colega Márcio, aparece apenas o produto que teve a maior quantidade, e não a somatória dos campos numéricos.
Olá Márcio,
Márcio, não sei se é a melhor forma, mas veja o exemplo abaixo e adapte a sua tabela. Montei com uma tabela minha, então ajuste as seguintes variáveis pelas suas, e veja se ajuda no seu caso:
cod_prod - código do item
desc_prod - descrição do item
quantos - quantidade do item
vr_total - valor total do item
data_venda - a data da venda
Código: Selecionar todos
aDados := {}
dDataInicio := Date() - 120
dDataFinal := Date()
Use Sua_Tabela
Index On data_venda >= dDataInicio .And. data_venda <= dDataFinal To IndTmp
Do While !Eof()
nPosi := Ascan( aDados, { | cdp | cod_prod = cdp[ 1 ] } )
If nPosi = 0
AADD( aDados, { cod_prod, desc_prod, quantos, vr_total } )
Else
aDados[ nPosi, 3 ] += quantos
aDados[ nPosi, 4 ] += vr_total
Endi
Skip
EndDo
Asort( aDados, Nil, Nil, { |A,B| A[4] > B[4] } )
DBCREATE("DbfTmp",{;
{"desc_prod", "C", 40, 0},;
{"quantos" , "N", 10, 3},;
{"vr_total" , "N", 10, 3} ;
} )
Use DbfTmp
For i = 1 To Len( aDados )
Append Blank
Replace desc_prod With aDados[ i, 2 ]
Replace quantos With aDados[ i, 3 ]
Replace vr_total With aDados[ i, 4 ]
Next
Go Top
Browse()
Use
ReturnAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
relatorio de itens mais vendidos por data
Se tiver um dbase ou foxpro, consegue fazer sem precisar programar.
Muito bom pra fazer testes desse tipo.
Muito bom pra fazer testes desse tipo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
relatorio de itens mais vendidos por data
Olá!
Enquanto escrevia o código abaixo, entraram vários posts. Enfim, matei a saudade do Clipper e fica como mais uma sugestão.
Enquanto escrevia o código abaixo, entraram vários posts. Enfim, matei a saudade do Clipper e fica como mais uma sugestão.
Código: Selecionar todos
FUNCTION Teste()
LOCAL aArray
CLS
aArray := ProdRank( Date() - 15, Date() )
QOut( "Descrição ", " Qtd", " Valor Total" )
AEval( aArray, { |e| SetPos( Row()++ ), QOut( e[1], e[2], e[3], e[4] ) } )
RETURN NIL
//------------------------------------------------------------------------------
#define DB_SOFT_SEEK .T.
FUNCTION ProdRank( dDtInicio, dDtFim )
LOCAL aArray
LOCAL nRecno := Recno()
LOCAL nPos
aArray := {}
IF ( ValType( dDtInicio ) == "D" .And. ;
ValType( dDtFim ) == "D" .And. ;
( ! Empty(dDtInicio) ) .And. ;
( ! Empty(dDtFim) ) )
// É necessário que a tabela tenha um índice por data (DtoS( datavend ) )
DbSeek( DtoS( dDtInicio, DB_SOFT_SEEK )
WHILE ( (datavend >= dDtInicio ) .And. ( datavend <= dDtFim ) ) .And. ( ! Eof() )
nPos := AScan( aArray, { |e| e == codprod } )
IF nPos == 0
// adiciona item ao array (um array)
AAdd( aArray, { nomepro, qtdvda, vrunit, ( qtdvda * vrunit ) } )
ELSE
// item já existe... acumula valores
aArray[ nPos, 2 ] += qtdvda
aArray[ nPos, 4 ] += ( qtdvda * vrunit )
ENDIF
DbSkip()
ENDDO
ENDIF
DbGoTo( nRecno )
// classifica pela coluna quantidade em ordem decrescente
RETURN ASort( aArray,,, { |x, y| x > y } )
//------------------------------------------------------------------------------[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
relatorio de itens mais vendidos por data
Só fiz o teste no foxplus, porque não tenho ambiente clipper pronto, e o resultado é igual o ng do clipper.
http://www.ousob.com/ng/clguide/ngaf81b.php
http://www.ousob.com/ng/clguide/ngaf81b.php
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
relatorio de itens mais vendidos por data
Olá José,
Agora sim! O exemplo abaixo funcionou certinho. Somou os campos quantos (quantidade vendida) e o campo vr_total (valor total das vendas do item), e nos últimos 90 dias. A única coisa que não vi como fazer, pois no help não diz, é se tem como determinar somente os campos desejados do .DBF destino. Quando reportamos que estava aparecendo somente o maior valor do outro jeito, na verdade está explicado em FIELDS <idField list>.
Show de bola. Muito legal isso.
Agora sim! O exemplo abaixo funcionou certinho. Somou os campos quantos (quantidade vendida) e o campo vr_total (valor total das vendas do item), e nos últimos 90 dias. A única coisa que não vi como fazer, pois no help não diz, é se tem como determinar somente os campos desejados do .DBF destino. Quando reportamos que estava aparecendo somente o maior valor do outro jeito, na verdade está explicado em FIELDS <idField list>.
Show de bola. Muito legal isso.
Código: Selecionar todos
Use Movimento
Index On cod_prod To IndTmp
TOTAL ON &( INDEXKEY( 0 ) ) ;
FIELDS quantos, vr_total ;
TO DbfTmp WHILE data_venda >= Date() - 90
Use
Use DbfTmp
Index On Descend( Str( quantos ) ) To IndTmp
Go Top
Browse()
Use
ReturnAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
