Difference between revisions of "Sistema de Ponto de Venda"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(Informações preliminares)
(Informações preliminares)
 
(22 intermediate revisions by 2 users not shown)
Line 5: Line 5:
  
 
== Informações preliminares ==
 
== Informações preliminares ==
 +
A apresentação em sala de ambas as etapas é obrigatória. Não é exigido que todos os componentes participem atividamente da apresentação, porém é exigida a presença e a resposta às perguntas realizadas pelo professor e pelos colegas.
 +
 +
Caso, durante a apresentação, o professor ou os colegas de turma façam perguntas aos componentes sobre o trabalho realizado e estes não dêem respostas satisfatórias e corretas a autoria do trabalho poderá ser questionada e o professor ficará livre para tomar a atitude que achar conveniente.
 +
 
Na especificação que segue considere:
 
Na especificação que segue considere:
 
*Quando não for especificado em contrário qualquer cadastro inclui obrigatoriamente as funções de inclusão, edição e exclusão.
 
*Quando não for especificado em contrário qualquer cadastro inclui obrigatoriamente as funções de inclusão, edição e exclusão.
 
*Para efetuar a edição ou a exclusão deverá ser primeiramente efetuada uma busca. Quando não for explicitado por qual campo deseja-se a busca, deve-se permitir a pesquisa por todos os campos texto.
 
*Para efetuar a edição ou a exclusão deverá ser primeiramente efetuada uma busca. Quando não for explicitado por qual campo deseja-se a busca, deve-se permitir a pesquisa por todos os campos texto.
 
*O sistema deverá aceitar os padrões brasileiros, assim:
 
*O sistema deverá aceitar os padrões brasileiros, assim:
::as datas devem ser inseridas e exibidas como dd/mm/yyyy, sendo dd=dia, mm=mês e yyyy=ano com todos os dígitos.
+
**as datas devem ser inseridas e exibidas como dd/mm/yyyy, sendo dd=dia, mm=mês e yyyy=ano com todos os dígitos.
::as horas devem ser exibidas como HH:mm:ss, sendo HH=hora de 0-23, mm=minuto, ss=segundos.
+
**as horas devem ser exibidas como HH:mm:ss, sendo HH=hora de 0-23, mm=minuto, ss=segundos.
::os valores devem ser inseridos e exibidos sempre com duas casas decimais.
+
**os valores devem ser inseridos e exibidos sempre com duas casas decimais.
::a vírgula é o separador dos decimais.
+
**a vírgula é o separador dos decimais.
*O sistema pode utilizar como meio de armazenamento um sistema gerenciador de banco de dados ou um conjunto de arquivos a escolha dos desenvolvedores.
+
*Os campos de  porcentagem devem ser inseridos e exibidos com até duas casas decimais e sempre será informado/exibido o valor da porcentagem e não o do equivalente em decimais. Assim para 90% o usuário informa/vê 90 e não 0,9.
*Quando não for estabelecida a quantidade mínima de dígitos de um campo texto fica a critério dos desenvolvedores utilizar a quantidade que desejarem utilizando-se do bom senso.
+
*A escolha dos desenvolvedores, o sistema pode utilizar como meio de armazenamento um sistema gerenciador de banco de dados ou um conjunto de arquivos.
 +
*Quando não for estabelecida a quantidade mínima de dígitos de um campo texto, fica a critério dos desenvolvedores utilizar a quantidade que desejarem utilizando-se do bom senso.
 +
*Caso a linguagem dê suporte todas as páginas dos relatórios devem ser numeradas da seguinte forma: Página “P de X”, sendo P a página atual e X a última página. Deve-se começar a contagem em 1 a partir da primeira pagina.
  
 
== Acesso ao sistema ==
 
== Acesso ao sistema ==
  
Para realizar qualquer operação no sistema o usuário deverá autenticar-se que será feita mediante um nome de usuário e uma senha.
+
Para realizar qualquer operação no sistema o usuário deverá realizar o procedimento de autenticação que será feito mediante um nome de usuário e uma senha.
  
 
A autenticação deverá ser solicitada na abertura do sistema e só deixará de ser válida caso:
 
A autenticação deverá ser solicitada na abertura do sistema e só deixará de ser válida caso:
Line 24: Line 30:
 
*seja solicitada o encerramento da sessão de trabalho.
 
*seja solicitada o encerramento da sessão de trabalho.
 
*ocorra um período de inatividade de mais de 5 minutos.
 
*ocorra um período de inatividade de mais de 5 minutos.
 
A senha deverá ser armazenada criptografada no banco de dados/arquivo.
 
  
 
Se o usuário esquecer sua senha o sistema deverá gerar uma nova e enviar para o e-mail cadastrado.
 
Se o usuário esquecer sua senha o sistema deverá gerar uma nova e enviar para o e-mail cadastrado.
Line 40: Line 44:
 
== Cadastro de usuário ==
 
== Cadastro de usuário ==
 
O sistema deverá armazenar o cadastro dos usuário com os seguintes dados:
 
O sistema deverá armazenar o cadastro dos usuário com os seguintes dados:
*nome completo (obrigatório e deve ter no mínimo duas palavras);
+
*foto (máximo de 500Kb em formato Jpeg);
*telefone (se informado, deve ter o formato 00-0000-0000);
+
*nome completo (obrigatório e deve ter no mínimo duas palavras contendo somente letras);
*e-mail* (obrigatório e deve ter o formato *@*.*);
+
*telefone (se informado, deve ter o formato 00-0000-0000, sendo 0 um dígito entre 0-9);
 +
*e-mail (obrigatório e deve ter o formato *@*.*, sendo * um texto de qualquer);
 
*nome de usuário (obrigatório e não deve conter espaços);
 
*nome de usuário (obrigatório e não deve conter espaços);
 
*senha (obrigatório e não deve ser visivel durante a digitação, pedir confirmação do valor digitado).
 
*senha (obrigatório e não deve ser visivel durante a digitação, pedir confirmação do valor digitado).
  
 
Não deve existir duplicações de nome de usuário ou e-mail.
 
Não deve existir duplicações de nome de usuário ou e-mail.
 +
 +
A senha deverá ser armazenada criptografada no banco de dados/arquivo.
  
 
== Cadastro de produtos ==
 
== Cadastro de produtos ==
 
Os produtos deverão ser cadastrados com os seguintes dados:  
 
Os produtos deverão ser cadastrados com os seguintes dados:  
 +
*foto (máximo de 500Kb em formato Jpeg);
 
*código de barras; (obrigatório);
 
*código de barras; (obrigatório);
 
*nome (obrigatório);
 
*nome (obrigatório);
*estoque (sempre deve ser positivo maior ou igual a zero).
+
*estoque (obrigatório e sempre deve ser positivo maior ou igual a zero).
 +
*preço de venda.
  
 
Não poderá existir produtos com mesmo código de barra ou nome.
 
Não poderá existir produtos com mesmo código de barra ou nome.
Line 63: Line 72:
 
Não poderá existir cartões com o mesmo nome de bandeira.
 
Não poderá existir cartões com o mesmo nome de bandeira.
  
==
+
== Procedimento de venda ==
 +
Após logado no sistema, o usuário fará a venda conforme o seguinte procedimento:
 +
#Busca e seleciona de 1 a N produtos por código de barras ou nome informando a quantidade a ser vendida.
 +
#Faz o pagamento da compra, podendo-se utilizar de 1 a N formas dentre dinheiro, cheque, cartão e vale-presente. Assim, é possível, '''por exemplo''', que um compra seja paga em dinheiro, 3 cheques, 4 cartões e 1 vale-presente.
  
Não poderá existir produtos com mesmo código de barra ou nome.
+
Eventualmente é possível que seja necessário:
 +
#efetuar um desconto. Neste caso o desconto deve ser efetuado no produto específico.
 +
#cancelar remover um produto da lista de produtos vendidos. Neste caso deve ser fornecido algum mecanismo para selecionar e remover uma quantidade do produto.
  
 +
Após o procedimento de venda e pagamento o estoque deve ser atualizado.
  
== Procedimento de venda ==
+
Não deve ser permitida a venda de uma quantidade maior que a disponível no estoque.
 
+
  
 
== Relatórios ==
 
== Relatórios ==
Line 75: Line 89:
 
*Lista de produtos cadastrados com seus respectivos preços de venda.
 
*Lista de produtos cadastrados com seus respectivos preços de venda.
 
**O cabeçalho deve conter o nome do programa e a data de geração.
 
**O cabeçalho deve conter o nome do programa e a data de geração.
**Deve-se listar código, nome do produto e preço de venda do produto na unidade monetária atual. O usuário pode optar por exibir ou não a margem de lucro.
+
**Deve-se listar código de barras, nome do produto e preço de venda do produto na unidade monetária.
 +
 
 
*Lista de produtos cadastrados com estoque maior que um valor informado pelo usuário.
 
*Lista de produtos cadastrados com estoque maior que um valor informado pelo usuário.
 
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS COM ESTOQUE MAIOR QUE N”, substituindo N pelo número informado pelo usuário.
 
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS COM ESTOQUE MAIOR QUE N”, substituindo N pelo número informado pelo usuário.
**Deve-se listar código de barras, nome do produto, estoque e valor do estoque (preço de compra médio * estoque).
+
**Deve-se listar código de barras, nome do produto, estoque.
*Lista de produtos cadastrados com estoque menor que o estoque mínimo (anteriormente cadastrado em cada produto).
+
 
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS COM ESTOQUE MENOR QUE O MÍNIMO”.
+
*Lista de produtos vendidos em uma data.
**Deve-se listar código de barras, nome do produto, estoque e valor do estoque (preço de compra médio * estoque).
+
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS VENDIDOS EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
*Lista de produtos vendidos nos últimos N dias, sendo N um número informado pelo usuário.
+
**Deve-se listar código de barras, nome do produto, quantidade vendida.
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS VENDIDOS NOS ÚLTIMOS N DIAS”, sendo N o número informado pelo usuário.
+
 
**Deve-se listar código de barras, nome do produto, estoque e valor do estoque (preço de compra médio * estoque).
+
*Lista de descontos efetuados em uma data.
 +
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO DESCONTOS EFETUADOS EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
 +
**Deve-se listar código de barras, nome do produto e valor do desconto por unidade do prooduto.
 +
 
 +
*Lista de valores pagos em cartão em uma data.
 +
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO VALORES PAGOS EM CARTÃO EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
 +
**Deve-se listar bandeira do cartão e o total pago com aquele cartão naquele dia.
  
== Observações Gerais ==
+
*Lista de valores pagos.
Caso a linguagem dê suporte, todas as páginas dos relatórios devem ser numeradas da seguinte forma: Página “P de X”, sendo P a página atual e X a última página. Começar contagem em 1 a partir da primeira pagina.
+
**O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO VALORES PAGOS EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
 +
**Deve-se listar forma de pagamento e o total pago com aquela forma de pagamento naquele dia. Pagamentos em cartão devem ser agrupados na forma de pagamento '''Cartão''' independente da bandeira.
  
O estoque deve ser listado conforme uma das opções abaixo a critério dos desenvolvedores:
+
== Forma de entrega do trabalho ==
*N e MK, sendo N unidades “inteiras”, M a fração e K a unidade de medida.
+
O trabalho só será considerado entregue '''após apresentação''' '''e''' com o cumprimento dos seguintes requisitos:
*MK, sendo M a fração e K a unidade de medida.
+
#Código fonte completo enviado por e-mail para linhadireta@adonaimedrado.pro.br ou entregue em CD/DVD (Blu-Ray (BD) não será aceito).
 +
#Caso seja um programa para Desktop, deve acompalhar instalador que execute todo o procedimento para o perfeito funcionamento do programa.
 +
#Caso seja um programa para Web, deve ser hospedado em um servidor onde fique disponível no mínimo por 15 dias a contar da data de entrega.

Latest revision as of 11:50, 19 June 2009

Sobre este documento

Este documento especifica o Sistema de Ponto de Venda (SPDV).

Aconselha-se leitura on-line deste documento. Desaconselha-se a impressão.

Informações preliminares

A apresentação em sala de ambas as etapas é obrigatória. Não é exigido que todos os componentes participem atividamente da apresentação, porém é exigida a presença e a resposta às perguntas realizadas pelo professor e pelos colegas.

Caso, durante a apresentação, o professor ou os colegas de turma façam perguntas aos componentes sobre o trabalho realizado e estes não dêem respostas satisfatórias e corretas a autoria do trabalho poderá ser questionada e o professor ficará livre para tomar a atitude que achar conveniente.

Na especificação que segue considere:

  • Quando não for especificado em contrário qualquer cadastro inclui obrigatoriamente as funções de inclusão, edição e exclusão.
  • Para efetuar a edição ou a exclusão deverá ser primeiramente efetuada uma busca. Quando não for explicitado por qual campo deseja-se a busca, deve-se permitir a pesquisa por todos os campos texto.
  • O sistema deverá aceitar os padrões brasileiros, assim:
    • as datas devem ser inseridas e exibidas como dd/mm/yyyy, sendo dd=dia, mm=mês e yyyy=ano com todos os dígitos.
    • as horas devem ser exibidas como HH:mm:ss, sendo HH=hora de 0-23, mm=minuto, ss=segundos.
    • os valores devem ser inseridos e exibidos sempre com duas casas decimais.
    • a vírgula é o separador dos decimais.
  • Os campos de porcentagem devem ser inseridos e exibidos com até duas casas decimais e sempre será informado/exibido o valor da porcentagem e não o do equivalente em decimais. Assim para 90% o usuário informa/vê 90 e não 0,9.
  • A escolha dos desenvolvedores, o sistema pode utilizar como meio de armazenamento um sistema gerenciador de banco de dados ou um conjunto de arquivos.
  • Quando não for estabelecida a quantidade mínima de dígitos de um campo texto, fica a critério dos desenvolvedores utilizar a quantidade que desejarem utilizando-se do bom senso.
  • Caso a linguagem dê suporte todas as páginas dos relatórios devem ser numeradas da seguinte forma: Página “P de X”, sendo P a página atual e X a última página. Deve-se começar a contagem em 1 a partir da primeira pagina.

Acesso ao sistema

Para realizar qualquer operação no sistema o usuário deverá realizar o procedimento de autenticação que será feito mediante um nome de usuário e uma senha.

A autenticação deverá ser solicitada na abertura do sistema e só deixará de ser válida caso:

  • o programa seja encerrado.
  • seja solicitada o encerramento da sessão de trabalho.
  • ocorra um período de inatividade de mais de 5 minutos.

Se o usuário esquecer sua senha o sistema deverá gerar uma nova e enviar para o e-mail cadastrado.

Permissões

Individualmente, para cada usuário deve ser possível definir se ele pode:

  • fazer login no sistema.
  • incluir/editar/excluir usuário.
  • incluir/editar/excluir produto.
  • incluir/editar/excluir cartão.
  • realizar venda.
  • ver relatórios.

Cadastro de usuário

O sistema deverá armazenar o cadastro dos usuário com os seguintes dados:

  • foto (máximo de 500Kb em formato Jpeg);
  • nome completo (obrigatório e deve ter no mínimo duas palavras contendo somente letras);
  • telefone (se informado, deve ter o formato 00-0000-0000, sendo 0 um dígito entre 0-9);
  • e-mail (obrigatório e deve ter o formato *@*.*, sendo * um texto de qualquer);
  • nome de usuário (obrigatório e não deve conter espaços);
  • senha (obrigatório e não deve ser visivel durante a digitação, pedir confirmação do valor digitado).

Não deve existir duplicações de nome de usuário ou e-mail.

A senha deverá ser armazenada criptografada no banco de dados/arquivo.

Cadastro de produtos

Os produtos deverão ser cadastrados com os seguintes dados:

  • foto (máximo de 500Kb em formato Jpeg);
  • código de barras; (obrigatório);
  • nome (obrigatório);
  • estoque (obrigatório e sempre deve ser positivo maior ou igual a zero).
  • preço de venda.

Não poderá existir produtos com mesmo código de barra ou nome.

Cadastro de cartões de crédito

Os cartões deverão ser cadastrados com os seguintes dados:

  • nome da bandeira (obrigatório);
  • porcentagem administradora (obrigatório, decimal).

Não poderá existir cartões com o mesmo nome de bandeira.

Procedimento de venda

Após logado no sistema, o usuário fará a venda conforme o seguinte procedimento:

  1. Busca e seleciona de 1 a N produtos por código de barras ou nome informando a quantidade a ser vendida.
  2. Faz o pagamento da compra, podendo-se utilizar de 1 a N formas dentre dinheiro, cheque, cartão e vale-presente. Assim, é possível, por exemplo, que um compra seja paga em dinheiro, 3 cheques, 4 cartões e 1 vale-presente.

Eventualmente é possível que seja necessário:

  1. efetuar um desconto. Neste caso o desconto deve ser efetuado no produto específico.
  2. cancelar remover um produto da lista de produtos vendidos. Neste caso deve ser fornecido algum mecanismo para selecionar e remover uma quantidade do produto.

Após o procedimento de venda e pagamento o estoque deve ser atualizado.

Não deve ser permitida a venda de uma quantidade maior que a disponível no estoque.

Relatórios

Os seguintes relatórios devem ser disponibilizados para consulta:

  • Lista de produtos cadastrados com seus respectivos preços de venda.
    • O cabeçalho deve conter o nome do programa e a data de geração.
    • Deve-se listar código de barras, nome do produto e preço de venda do produto na unidade monetária.
  • Lista de produtos cadastrados com estoque maior que um valor informado pelo usuário.
    • O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS COM ESTOQUE MAIOR QUE N”, substituindo N pelo número informado pelo usuário.
    • Deve-se listar código de barras, nome do produto, estoque.
  • Lista de produtos vendidos em uma data.
    • O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO PRODUTOS VENDIDOS EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
    • Deve-se listar código de barras, nome do produto, quantidade vendida.
  • Lista de descontos efetuados em uma data.
    • O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO DESCONTOS EFETUADOS EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
    • Deve-se listar código de barras, nome do produto e valor do desconto por unidade do prooduto.
  • Lista de valores pagos em cartão em uma data.
    • O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO VALORES PAGOS EM CARTÃO EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
    • Deve-se listar bandeira do cartão e o total pago com aquele cartão naquele dia.
  • Lista de valores pagos.
    • O cabeçalho deve conter o nome do programa, a data de geração e o texto “LISTANDO VALORES PAGOS EM DD/MM/YYYY”, substituindo DD/MM/YYYY pela data informada pelo usuário.
    • Deve-se listar forma de pagamento e o total pago com aquela forma de pagamento naquele dia. Pagamentos em cartão devem ser agrupados na forma de pagamento Cartão independente da bandeira.

Forma de entrega do trabalho

O trabalho só será considerado entregue após apresentação e com o cumprimento dos seguintes requisitos:

  1. Código fonte completo enviado por e-mail para linhadireta@adonaimedrado.pro.br ou entregue em CD/DVD (Blu-Ray (BD) não será aceito).
  2. Caso seja um programa para Desktop, deve acompalhar instalador que execute todo o procedimento para o perfeito funcionamento do programa.
  3. Caso seja um programa para Web, deve ser hospedado em um servidor onde fique disponível no mínimo por 15 dias a contar da data de entrega.