PDV

De BIS Wiki
Revisão de 19h14min de 24 de julho de 2015 por Rodrigogml (discussão | contribs)
Ir para navegação Ir para pesquisar

Módulo para controle dos PDVs (Ponto de Venda) da Empresa.

Relatórios

de Faturamento

por Tributação de ICMS

Este relatório agrupa o faturamento de acordo com o tipo de tributação usada na venda.

Exemplo de SQL para MySQL para obter os dados como se espera no relatório:

SELECT ci.icmstype, ci.icmstaxratio, SUM(ci.total) AS tot
FROM pdv_cupomitem ci LEFT JOIN pdv_cupom c ON c.id = ci.idpdv_cupom
-- WHERE OBRIGATÓRIOS
WHERE ci.status = 'SOLD' -- Filtra apenas os itens que foram vendidos no cupom, os itens cancelados não devem ser contabilizados no relatório
and (c.STATUS = 'SOLD' OR c.STATUS = 'ERROR_SYNC') -- Filtra apenas os cupoms que foram vendidos e vendidos sem confirmação do ECF.
-- WHERE de Filtros
-- and c.date >= '2015-03-01 00:00:00' and c.date <= '2015-03-31 23:59:59' -- Filtra por data
GROUP BY icmstype, ci.icmstaxratio -- Agrupa a soma pelo tipo de tributação e aliquota
ORDER BY tot desc; -- Organiza do maior faturamento para o menor.


Exibições

  • Listagem:
    • Tipo de Tributação - Define o tipo de tributação. Enum: ICMSTYPE.
    • Aliquota - Alíquota da tributação (quando existente). Valor em porcentagem.
    • Total - Faturamento total sumarizado.
    • Participação - Valor da representação do valor da coluna Total em relação a soma de todos os itens, utilizando o BISPercentualBarComponent no estilo GREEN para exibição da informação.
  • Gráfico Pizza:
    • Exibe o conteúdo como fatias em um gráfico de pizza.
  • Gráfico Colunas:
    • Exibe o conteúdo como colunas em um gráfico de colunas.


Filtros do Relatório

  • Período - Campo com data inicial e final para filtrar o periodo


por Código de Produto

O relatório de Faturamento por Código de Produto visa exibir as informações das vendas agrupadas pelo código do produto.

Exemplo de SQL para MySQL para obter os dados como se espera no relatório:

SELECT ci.code, ci.displayline, min(ci.price), max(ci.price) , round(sum(ci.total)/sum(ci.quantity),2), sum(ci.quantity) as qt, ci.unit, ci.measureunit, SUM(ci.total) AS tot
FROM pdv_cupomitem ci LEFT JOIN pdv_cupom c ON c.id = ci.idpdv_cupom LEFT JOIN item_itemcodes ic ON ic.code = ci.code 
-- LEFT JOIN item_itemcategory icat ON icat.id = ic.iditemcategory
WHERE ci.STATUS = 'SOLD' AND (c.STATUS = 'SOLD' OR c.STATUS = 'ERROR_SYNC') -- where obrigatória
-- WHERE de Filtros
-- AND c.DATE >= '2015-03-01 00:00:00' AND c.DATE <= '2015-03-31 23:59:59' -- Filtra por data
-- and icat.id is null -- Filtra código exclúidos / Sem categoria
-- and icat.id = 50 -- Filtra pela Categoria de Item
GROUP BY ci.code, ci.displayline, ci.unit -- GROUPS
ORDER BY tot DESC; -- Order By


Exibições

  • Listagem
  • Gráfico Pizza

Filtros do Relatório

  • Período - exibe dois campos de data para marcação do período que se deseja o relatório.
  • Categoria do Item - filtra os itens de acordo com sua categoria. Exibir dados em forma hierárquica para escolha.

por Categoria de Itens

Relatório para exibir o faturamento agrupado por Categoria e subCategorias. O tela deve exibir os dados de forma hierarquica, similar a própria janela de categoria de itens, só que com as colunas mencionadas abaixo.

Sugiro que o "bean" que trará os dados do CRUD para a tela faça uso do próprio ItemCategoryVO, e use já os métodos existentes para recuperar os nós conforme necessário, e em seguida, de acordo com os objetos recuperados, seja carregado diretamente do banco de dados os dados necessários sobre o faturamente e incorporados no Bean. Dessa forma poderemos manter o LazyLoad na tela e obter os totais a partir de diversas consultas rápidas no banco.

  • Caminho do Relatório: Caixa / PDV > Faturamento > por Categorias de Itens
  • Campos de Filtro
    • Período - Campo de filtro por período com precisão de minutos.
    • Categoria Raiz - Usar o ComboBoxHierarchical (vou adapta-lo para single selection também) para permitir que o usuário escolha um único ramo para visualizar. A categoria escolhida deverá ser o único elemento raiz do container, e apenas ele e seus filhos passarão a ser exibidos e calculados. Se este filtro for aplicado diretamente na obtenção dos ItemCategoryVOs raíz, o restante do código deve permanecer sem alterações.
  • Campos de Agrupamento
    • Agrupar - ComboBox com opções de agrupamento dos dados filtrados:
      • Mensal - Permite o agrupamento do faturamento por mês.
  • Colunas do Relatório
    • Nome da Categoria - Nome da categoria. Alinhamento: Esquerda.
    • Tipo da Categoria - Tipo da categoria. Alinhamento: Centralizado. Collapsed.
    • Faturamento - Faturamento dos itens apenas nesta categoria. Formato: Currency. Alinhamento direita.
    • Faturamento Grupo - Faturamento dos itens nesta categoria e nas categorias filhas. Formato: Currency. Alinhamento Direita.
    • % Grupo - Participação do Faturamento em relação ao valor do 'Faturamento Grupo' do objeto pai. Usar a barra percentual. Deixa esta coluna em branco, nem colocar a barra com o 0% caso o valor do Faturamento seja zero.
    • % Faturamento - Participação do Faturamento total. Nesta coluna não usar a Barra Percentual. Formato: Porcentagem com duas casas decimais. Alinhamento: Direita.
    • Agrupamento das Colunas
  • Menus de Contexto
    • "Visualizar Faturamento de Itens" - Este menu deve abrir o relatório de venda de itens (feito anteriormente) transportando o filtro de período, e definindo a categoria no filtro de categoria. A seleção do Menu também deve ser alterada, para deixar evidente que o cliente mudou de relatório, bem como permitir que ele volte para o relatório anterior novamente escolhendo-o no menu.
      Como fazer essa definição no menu eu não sei ainda... penso em passar a própria InfoBoardWindow como parametro ao instanciar as janelas internas. Fazer esse o novo padrão ao invés do construtor vazio. E obviamente na InfoBoardWindow Fazer alguns métodos que permitam a escolha do menu através de algum ID, talvez a própria classe da Window e deixa a InfoWindow iterar e encontrar o menu correto no container. Só seria bom algo padronizado assim pois acabará sendo comum termos links de um relatório para outro para "abrir" dados de um em outro...
  • Gráfico - http://demo.vaadin.com/charts/#StackedBar
    • O grafico de barras laterais