UC00078 - Cadastro de produto acabado
Objetivo
- Manter cadastro de produto acabado
Atores
- Usuário
Pré-requisitos
Resultado esperado
- Incluir, alterar, excluir, consultar e pesquisar produtos acabados no sistema.
Diagrama de classes
Fluxo de eventos
Fluxos principais
Fluxo 1
- Usuário acessa Menu -> Cadastros -> Faturamento -> Item -> Produto acabado.
- Sistema exibe tela inicial da rotina conforme regra de negócio RN09 - Tela inicial.
- Usuário aciona o botão <Adicionar produto acabado>.
- Sistema exibe a tela de cadastro de produto conforme regras de negócio RN01 a RN07.
- Usuário preenche os dados do produto que deseja cadastrar e aciona o botão <Salvar>.
- Sistema procede conforme regra de negócio RN010.
Fluxo 2
- No grid da tela inicial da rotina em questão o usuário seleciona um determinado produto já cadastrado para alteração.
- Sistema exibe a tela de cadastro do mesmo com os campos automaticamente preenchidos com os dados já gravados e habilitados para alteração.
- Usuário altera os dados do produto da maneira que desejar e aciona o botão <Salvar>.
- Sistema procede conforme regra de negócio RN010.
Fluxo 3
- No grid da tela inicial da rotina em questão o usuário seleciona um determinado produto já cadastrado para exclusão.
- Sistema verifica se o produto cujo usuário tenta excluir já foi movimentado.
- Se sim, a exclusão será abortada e a seguinte mensagem será exibida: Este produto já foi movimentado e portanto não será permitido excluí-lo. Sugestão: Altere seu cadastro e marque-o como inativo.
- Se não, será exibida ao usuário uma mensagem de confirmação perguntando se ele deseja realmente excluir o produto. Caso usuário clique em <Sim> na mensagem o produto será permanentemente excluído. Caso clique em não, a exclusão deverá ser abortada.
Fluxos alternativos
Fluxo 1
- Em modo de inclusão usuário adiciona variações de grade para o produto.
- Sistema procede conforme itens 22 a 26 da regra de negócio RN01.
- Usuário com acesso total ao sistema entra na rotina em questão e aciona o botão <Parâmetros>.
- Sistema procede conforme regra de negócio RN12.
- Nos parâmetros da rotina usuário determina quais tabelas de preço poderão ser utilizadas nos produtos.
- O sistema exibirá as tabelas de preço configuradas na aba Preço da tela de cadastro.
Fluxos de exceções
Fluxo 1: Em modo de alteração usuário adiciona/exclui variações de grade para o produto.
- Sistema procede conforme regra de negócio RN11.
Fluxo 2: Em modo de alteração usuário ativa/desativa o parâmetro Usa série do cadastro de um determinado produto.
- Sistema procede conforme determina a regra de negócio RN13.
Fluxo 3: Usuário acessa o cadastro de um determinado produto em modo de alteração e tenta alterar as unidades padrão, de entrada e de saída do mesmo.
- Caso produto já tenha sido movimentado na unidade padrão, o respectivo campo ficará desabilitado sempre que a aba Unidades for acessada. Caso contrário o campo ficará habilitado e o usuário poderá selecionar uma unidade diferente.
- Caso usuário tente excluir do grid de unidades de entrada uma unidade na qual o produto já foi movimentado, o sistema abortará a exclusão e emitirá ao usuário a mensagem O produto em questão já foi movimentado com esta unidade de entrada, portando não será permitido exclui-la. Caso produto não tenha sido movimentado na unidade, a exclusão da mesma será permitida.
- Caso usuário tente excluir do grid de unidades de saída uma unidade na qual o produto já foi movimentado, o sistema abortará a exclusão e emitirá ao usuário a mensagem O produto em questão já foi movimentado com esta unidade de saída, portando não será permitido exclui-la.
Fluxo 4: Usuário ao cadastrar/alterar um produto, informa no campo Referência da aba Gerais uma referência já utilizada em outro produto.
- Sistema emite um alerta, mas, permite a gravação.
Fluxo 5: Usuário ao cadastrar/alterar um produto, informa em suas unidades de entrada ou saída, uma referência já utilizada em outro produto/unidade.
- Sistema avise que já existe um outro produto/unidade com esta mesma referência e aborta a gravação.
Regras de negócio
RN01 - Aba "Gerais"
- Código: Campo somente para leitura que exibirá o código do produto. Este código é gerado automaticamente pelo sistema quando o produto é cadastrado.
- Ativo: Parâmetro que determina se um produto está ativo ou não. Produtos inativos não serão sequer visualizados nas demais rotinas do sistema (buscas, consultas e pesquisas).
- Bloqueado: Parâmetro que determina se um produto está bloqueado para uso ou não. Produtos bloqueados serão visualizados em outras rotinas do sistema, mas não poderão ser movimentados.
- Controla estoque: Este parâmetro determina se o produto movimentará estoque.
- Permite estoque negativo: Este parâmetro somente ficará habilitado caso parâmetro Controla estoque esteja ativado. Quando ativado, o parâmetro em questão permitirá que o produto seja movimentado mesmo que não haja estoque disponível, fazendo com que o estoque fique negativo.
- Referência: Campo onde poderá ser informada uma referência para o produto, geralmente, o código de barras do mesmo (EAN).
- Ref. Fabricante: Campo onde poderá ser informada uma referência de fabricante para o produto, geralmente, um código interno do produto em questão em seu fabricante.
- Descrição: Campo onde deverá ser informada a descrição principal do produto.
- Descrição reduzida: Campo onde poderá ser informada uma descrição mais resumida para o produto. Estas descrições resumidas podem ser utilizadas em relatórios/consultas que possuem muitas colunas para ocupar menos espaço.
- Descrição estendida: Campo onde poderá ser informada uma descrição mais detalhada para o produto.
- Alerta: Campo onde poderá ser atribuída uma mensagem de alerta para o produto. Sendo assim em todas as rotinas de movimento quando o produto for selecionado este alerta será exibido ao usuário.
- Grupo: Neste campo onde serão listados todos os grupos cadastrados no sistema para que o usuário selecione um único grupo a qual o produto em questão irá pertencer.
- Subgrupo: Neste campo serão listados todos os subgrupos cadastrados que estão vinculados ao grupo já selecionado.
- Família: Neste campo serão listadas todas as famílias cadastradas no sistema para que o usuário selecione uma única a qual o produto irá pertencer.
- Comissão: Campo onde poderá ser informado um percentual de comissão exclusivo do produto.
- Peso: Campo onde poderá ser informado o peso do produto (em quilogramas).
- Volume: Campo onde poderá ser informado o volume do produto (em metros cúbicos).
- Classificação fiscal: Campo onde serão listadas as classificações fiscais cadastradas no sistema para que o usuário selecione uma única para ser utilizada no produto.
- Perfil de imposto: Campo onde serão listados todos os perfis de imposto cadastrados para que o usuário selecione um único perfil a ser utilizado com o produto.
- Estoque: Nos campos abaixo serão exibidas as informações de estoque atuais do produto, lembrando que estas considerarão sempre a unidade padrão do mesmo.
- Estoque: Quantidade geral de estoque para o produto. Esta quantidade considerará as reservas de estoque, soma dos estoques de cada grade e etc.
- Estoque reservado: Quantidade em estoque do produto que está bloqueada por uma ou mais reservas. Caso haja reserva de grades, estas serão sumarizadas aqui.
- Estoque disponível: Quantidade em estoque do produto que está disponível para ser movimentada. Em resumo é o estoque subtraído do estoque reservado..
- Estoque mínimo: Campo onde pode ser informada uma quantidade mínima de estoque (disponível) para o produto.
- Estoque máximo: Campo onde pode ser informada uma quantidade máxima de estoque (disponível) para o peoduto.
- Usa série: Parâmetro que determina se as movimentações de entrada/saída do produto controlarão números de série.
- Usa grade: Parâmetro que determina se o produto terá variações de grade. Quando ativo este parâmetro habilitará o campo Perfil de grade e o botão <Personalizar> (sempre visíveis). Em modo de alteração, caso produto possua grades já movimentadas, este checkbox deverá permanecer ativado e desabilitado.
- Personalizar: Quando este botão for acionado será exibida ao usuário a tela de relacionamento de grades. A tela de relacionamento de grades permitirá ao usuário criar novas combinações de grade para o produto ou personalizar as grades a serem relacionadas no produto a partir de um perfil já selecionado.
- Limpar: Quando este botão for acionado todos os dados ainda não gravados referentes a grade do produto serão limpos. Em modo de alteração, caso produto possua grades já movimentadas, estas não serão removidas do grid quando o botão em questão for acionado. Apenas grades não movimentadas serão limpas.
- Grid de grades: Neste grid serão exibidas as grades do perfil de grade selecionado, as grades/relacionamentos personalizadas e/ou as grades já vinculadas ao produto. Para cada grade/relacionamento listado no grid serão visíveis as seguintes colunas:
- COMBINAÇÃO: Combinação/relacionamento de grades.
- REFERÊNCIA: Referência ou código de barras da combinação de grades.
- ATIVA: Checkbox que determina se uma combinação está ativa ou não. Este campo deverá vir marcado por padrão e no cabeçalho da coluna, deverá existir uma opção que permita marcar/desmarcar todos os registros.
- EST. MIN.: Estoque mínimo para a combinação de grades.
- EST. MAX.: Estoque máximo para a combinação de grades.
- PREÇO: Preço específico para a combinação de grades.
- As colunas REFERÊNCIA, ATIVA, EST. MIN., EST. MAX. e PREÇO serão editáveis e o usuário poderá alterá-las a qualquer momento desde que o cadastro de produtos esteja em modo de inclusão ou alteração.
- O grid não deverá gerar barra de rolagem horizontal.
- Se necessário, o grid poderá gerar barra de rolagem dentro dele mesmo, sem gerar barra de rolagem no browser.
- Perfil de grade: Neste campo serão listados todos os perfis de grade cadastrados no sistema para que o usuário selecione um único perfil a ser utilizado no produto. Em modo de alteração, caso produto possua grades já movimentadas, este campo deverá ficar fazio e desabilitado. Sempre que um perfil de grade for selecionado o sistema poderá agir de duas formas:
Caso hajam alterações no grid Caso não hajam alterações no grid Se para as combinações de grade do perfil já selecionado foram inseridas informações no grid, quando o usuário selecionar um perfil diferente será exibida a seguinte mensagem de confirmação: Já foram inseridas no grid informações para as combinações de grade do perfil selecionado anteriormente. Ao selecionar outro perfil estas informações serão descartadas. Deseja continuar?. Caso usuário clique em <Sim> as combinações referentes ao novo perfil selecionado serão carregadas no grid descartando as alterações realizadas no perfil anterior. Caso usuário clique em <Não> o sistema manterá o perfil de grade já selecionado e nenhuma ação será realizada. Se no grid nenhuma informação foi inserida para as combinações de grade referentes ao perfil selecionado, quando um novo perfil for selecionado o grid será limpo e preenchido novamente com as combinações do novo perfil.
Referências antigas
À direita do campo Referência deverá ser exibido um ícone (+) que possibilite ao usuário informar para um determinado produto referências antigas. O ícone e a tela onde serão informadas as referências antigas deverão se comportar conforme segue abaixo:
- O ícone deverá:
- Exibir o hint Referências antigas.
- Ficar habilitado para uso somente quando o produto já possuir gravada no banco uma referência atual.
- Ficar visível em tela somente em modo de consulta e alteração.
- A tela de referências antigas:
- Apresentará na parte superior esquerda o campo Referência atual, que exibirá a referência atual do produto gravada no banco. Este campo é somente leitura, portanto o usuário não poderá editá-lo.
- Logo abaixo da referência atual será exibido o campo Referência antiga, que permitirá que o usuário informe uma referência antiga para o produto.
- Exibir à direita do campo Referência antiga o botão <Adicionar>, que quando acionado inclui no grid a referência antiga informada pelo usuário.
- Exibir um grid que listará todas as referências antigas do produto já gravadas e também as que estão sendo adicionadas no momento. O grid terá uma única coluna (REFERÊNCIA) e para cada registro, exibirá a opção de exclusão do mesmo no grid.
- Regras e validações:
- Não será permitido adicionar uma referência antiga que já esteja listada no grid.
- Não será permitido adicionar como referência antiga, a referência atual do produto em questão.
- Uma referência antiga poderá, eventualmente, ser idêntica à referencia de outro produto, seja ela atual, antiga ou referência de fabricante.
- Quando o cadastro de produto estiver em modo de consulta, somente será permitido visualizar referências antigas (caso existam).
RN02 - Aba "Preços"
- Preço médio de custo: Campo somente para leitura que exibirá o preço médio de custo do produto, que é calculado com a seguinte fórmula: (Estoque anterior * Preço médio anterior) + (Qtde NF Entrada * Preço de custo NF Entrada)(Estoque anterior + Qtde NF Entrada).
- Preço de custo: Campo onde será exibido/definido o preço de custo atual do produto. Caso parâmetro Calcular preço e markup automaticamente? esteja ativado, se o valor do custo for alterado o sistema calculará os preços de venda correspondentes para cada tabela de preço com base no markup atual de cada uma.
- Calcular preço e markup automaticamente? Quando habilitado este parâmetro (checkbox) ativa as funções do sistema que calculam automaticamente o markup e o preço de venda de cada tabela com base no custo. Por padrão este parâmetro ficará sempre desmarcado. Ainda que o usuário o ative e salve as alterações, ao acessar novamente o cadastro do produto este parâmetro estará desmarcado, ou seja, ele somente será utilizado em tempo de execução para fazer automaticamente os cálculos em questão.
- Tabelas de preço: Nesta seção serão exibidas todas as tabelas de preço cadastradas e configuradas nos parâmetros da rotina em questão, onde cada tabela representará um preço diferente para o produto. A tabela de preço que estiver marcada como Tabela padrão em seu cadastro deverá ter esta informação destacada para o usuário e deverá ser posicionada como primeira da lista. Em cada tabela/preço deverão ser informados:
- Markup: Campo onde poderá ser informado o percentual de markup do item. Caso parâmetro Calcular preço e markup automaticamente? esteja ativado, com base no preço de custo e no markup informado o sistema calculará automaticamente o preço do item para a tabela.
- Preço: Campo onde poderá ser informado o preço de venda para o item em cada tabela. Caso parâmetro Calcular preço e markup automaticamente? esteja ativado, uma vez que o preço for informado, com base no preço de custo o sistema calculará automaticamente o markup.
Formula para calcular preço de venda: (custo * markup / 100) + custo
Formula para calcular percentual de markup: (preço - custo) / custo * 100
A seção onde serão exibidas as tabelas de preço deverá possuir sua própria barra de rolagem. Sendo assim, se houver uma grande quantidade de tabelas de preço será gerada barra de rolagem somente na seção em questão e não no browser.
À direita das tabelas de preço, quando em modo de consulta/alteração, será exibido um grid que listará todas as alterações realizadas no preço do item em questão. O grid terá o estilo do grid utilizado no cadastro de usuários (ExtendedDataTable), que para algumas colunas possibilita
RN03 - Aba "Localizações"
- Localização: Neste campo poderá ser informada uma localização para o estoque do produto. Somente poderão ser utilizadas localizações já cadastradas no sistema.
Prioridade na baixa de estoque: Campo onde deverá ser informado um valor numérico que definirá a prioridade de baixa de estoque de uma determinada localização. Localizações diferentes não poderão utilizar a mesma prioridade de baixa no estoque.- Localização principal: Este parâmetro determina se uma determinada localização será a localização principal do produto.
Caso uma localização seja marcada como principal, o campo Prioridade na baixa de estoque da mesma será limpo e desabilitado, pois a localização principal terá prioridade na baixa de estoque em relação as demais localizações. - Inserir nova localização: Este botão é responsável por adicionar as localizações informadas em um grid logo abaixo, facilitando a visualização, alteração, inclusão e exclusão de localizações. Antes de uma determinada localização ser inserida no grid será verificado se a mesma já existe no grid
e se a prioridade de baixa de estoque informada já está em uso. - Grid de localizações: Neste grid serão listadas as localizações adicionadas para o produto com as informações:
- CÓDIGO
- DESCRIÇÃO
- PRINCIPAL
PRI. BX. ESTOQUE
Obs.: O grid de localizações não deverá gerar barra de rolagem horizontal e deverá ter sua própria barra de rolagem vertical, sem influenciar/gerar barra de rolagem no browser.
RN04 - Aba "Unidades"
- Unidade padrão: Campo onde serão listadas todas as unidades de medida cadastradas para que o usuário selecione apenas uma. A unidade selecionada como padrão será utilizada para movimentar estoque, calcular estoque disponível e etc. O sistema só permitirá que seja selecionada como unidade padrão uma unidade cujo fator de conversão é igual a 1.
- Venda múltiplo: Campo onde poderá ser estipulado um valor de múltiplo para venda do produto na unidade padrão.
- Venda mínima: Campo onde poderá ser estipulada uma quantidade mínima de venda do produto na unidade padrão.
Produto a baixar/Fator: Produto a ser baixado com respectivo fator de conversão quando o produto em questão for movimentado.Produto a entrar/Fator: Produto a ser alimentado com respectivo fator de conversão quando o produto em questão for movimentado.
- Unidades de entrada: Seção onde poderão ser incluídas para o produto uma ou mais unidades de entrada.
- Unidade: Campo onde serão listadas todas as unidades de medida cadastradas. Nele o usuário poderá selecionar uma única unidade para vincula-la ao produto como unidade de entrada.
- Fator de conversão: Campo somente para leitura que exibirá o fator de conversão da unidade selecionada.
- Referência/Cód. Barras: Campo onde o usuário poderá, opcionalmente, informar uma referência ou código de barras para o produto em uma determinada unidade (embalagem).
- Adicionar: Quando este botão for acionado ele incluirá no grid de unidades de entrada do produto a unidade selecionada.
- Unidades de saída: Seção onde poderão ser incluídas para o produto uma ou mais unidades de saída.
- Unidade: Campo onde serão listadas todas as unidades de medida cadastradas. Nele o usuário poderá selecionar uma única unidade para vincula-la ao produto como unidade de saída.
- Fator de conversão: Campo somente para leitura que exibirá o fator de conversão da unidade selecionada.
- Referência/Cód. Barras: Campo onde o usuário poderá, opcionalmente, informar uma referência ou código de barras para o produto em uma determinada unidade (embalagem).
- Adicionar: Quando este botão for acionado ele incluirá no grid de unidades de entrada do produto a unidade selecionada.
RN05 - Aba "Fornecedores/Marca/Fabricante"
- Marca: Campo onde serão listadas todas as marcas cadastradas no sistema. Nele o usuário poderá vincular o produto a uma única marca.
- Fabricante: Campo onde serão listados todos os fabricantes cadastrados no sistema. Nele o usuário poderá vincular o produto a um único fabricante.
- Fornecedores: Nesta seção poderão ser informados um ou mais fornecedores para o produto.
- Fornecedor: Campo onde poderá ser informado um fornecedor previamente cadastrado no sistema.
- Padrão: Parâmetro que define se um determinado fornecedor é o fornecedor padrão do produto. Cada produto poderá ter somente 1 fornecedor padrão.
- Cód. Item: Campo onde poderá ser informado o código do produto em questão no fornecedor.
- Incluir: Quando acionado este botão incluirá o fornecedor selecionado no grid de fornecedores.
RN06 - Aba "Campos livres"
Nesta aba serão exibidos todos os campos livres cadastrados para entidade Item. Estes serão utilizados e validados conforme sua configuração no cadastro de campos livres.
RN07 - Aba "Imagens"
Nesta aba será possível atribuir imagens ao produto através de um campo de upload de arquivo. As regras para upload de imagens serão as seguintes:
- Serão permitidos para upload somente os formatos jpeg, png e gif.
- Tamanho máximo de 2MB para cada imagem.
- A imagem não poderá ser maior que 800x600 pixels.
- Cada produto poderá ter no máximo 5 fotos.
O sistema deverá validar as imagens antes de realizar o upload através do file api do HTML5. Ao gravar as imagens no banco de dados no servidor, esta validação será feita novamente por questões de segurança.
As imagens já inseridas serão apresentadas em uma galeria logo abaixo do campo de upload. Quando usuário clicar em qualquer uma das imagens da galeria deverá ser apresentado um slideshow de imagens conforme modelo no cabeçalho desta página.
RN08 - Relacionamento de grades
Sempre que esta tela for exibida serão automaticamente carregadas na mesma (se existirem) as combinações de grade listadas no grid do cadastro de produtos. Após criar/personalizar os relacionamentos/combinações de grade, o usuário deverá acionar o botão <Salvar> para que o grid do cadastro de produtos seja atualizado com as alterações feitas nesta tela. Uma vez que o grid do cadastro de produtos é atualizado através da tela de relacionamento de grades o campo Perfil de grade deverá ser limpo e desabilitado.
Se houver informações para uma ou mais combinações de grade no grid do cadastro de produtos, quando estas combinações forem carregadas na tela de relacionamento de grades o sistema deverá armazená-las em cache. Quando o botão <Salvar> da tela de relacionamento de grades for acionado, caso as grades cujas informações estão em cache tenham sido mantidas nas combinações resultantes, ao preenche-las novamente no grid do cadastro de produtos as informações de cada uma deverão ser restauradas conforme estavam antes da tela de relacionamento de grades ser exibida. Se ao salvar as alterações na tela de relacionamento de grades as grades cujas informações estão em cache não existirem mais nas combinações resultantes, suas informações serão desprezadas quando o grid do cadastro de produtos for preenchido novamente.
Para um produto que possui grades já movimentadas, na tela de relacionamento de grades o sistema deverá verificar antes de salvar se as grades já existentes/movimentadas permanecem no relacionamento. Se sim, o sistema irá salvar as alterações normalmente. Caso contrário a operação de salvamento será abortada e uma mensagem com a não conformidade será exibida ao usuário.
Quando o botão <Cancelar> for acionado o sistema deverá exibir ao usuário a seguinte mensagem de confirmação: Os relacionamentos/combinações criados ou alterados que ainda não foram salvos serão descartados. Deseja realmente cancelar?.
RN09 - Tela inicial
Na tela inicial da rotina deverão ser exibidos:
- Botão <Adicionar produto acabado>.
- Botão <Parâmetros> somente para usuários com acesso total.
- Grid listando os produtos já cadastrados com as seguintes colunas (configurável):
- CÓDIGO
- DESCRIÇÃO
- ATIVO
- BLOQUEADO
- CONTROLA ESTOQUE
- PERM. ESTOQUE NEGATIVO
- ALERTA
- GRUPO
- SUBGRUPO
- FAMÍLIA
- GARANTIA
- PESO
- VOLUME
- CLASSIFICAÇÃO FISCAL
- PERFIL DE IMPOSTO
- ESTOQUE
- ESTOQUE RESERVADO
- ESTOQUE DISPONÍVEL
- ESTOQUE MÍNIMO
- ESTOQUE MÁXIMO
- USA GRADE
- USA SÉRIES
- LOCALIZAÇÃO PRINCIPAL
- UNIDADE PADRÃO
- MARCA
- FABRICANTE
- FORNECEDOR PRINCIPAL
No canto superior direito do grid deverá ser exibida uma lupa que quando acionada exibirá o campo para pesquisar produtos. A pesquisa de produtos poderá ser feita de acordo com o documento Pesquisa com lucene.
RN10 - Validações a serem feitas antes de salvar dados
Antes de salvar os dados de um produto, deverão ser feitas as seguintes validações:
Campos obrigatórios:
- Descrição
- Grupo
- Perfil de imposto
- Preço/Markup na tabela de preço padrão
- Unidade padrão
Em modo de alteração o usuário poderá alterar qualquer dado do produto e salvar estas alterações, desde que os campos obrigatórios citados acima estejam devidamente preenchidos.
RN11 - Regras para adicionar novas variações de grade no produto
Em modo de inclusão, o usuário poderá proceder com a inclusão de combinações de grade normalmente seguindo os passos 22 a 26 da regra de negócio RN01.
Em modo de alteração, o sistema verificará se o produto em questão já foi movimentado. Se sim, o parâmetro Usa grade ficará desabilitado e o usuário não poderá alterar seu estado. Em outras palavras, se um produto que não utilizava grade já foi movimentado, ele não poderá ter variações de grade. Neste caso o usuário deverá desativar o produto e cadastrar um novo adicionando as variações de grade desejadas.
Ainda, um produto já movimentado que controla grade e que possui variações de grade, não poderá ter as combinações de grade que já foram movimentadas excluídas. Se necessário, o usuário poderá adicionar novas combinações de grade.
RN12 - Parâmetros
Este botão ficara à direita do botão <Adicionar produto acabado> e ficará visível somente para usuários que possuírem em seu cadastro acesso total ao sistema. Quando acionado, o botão <Parâmetros> exibirá uma tela popup que permitirá ao usuário definir quais tabelas de preço serão utilizadas no cadastro de produtos. Esta tela deverá ter o seguinte comportamento:
- O sistema não deverá permitir que os dados sejam salvos na tela de parâmetros se a tabela de preço que estiver marcada como padrão não estiver selecionada para uso.
- Somente serão listadas no campo Tabela tabelas de preço que em seu cadastro possuem a filial em questão selecionada.
- Para uma grande quantidade de tabelas, o grid deverá gerar barra de rolagem vertical sem impactar a tela.
- Sempre que o botão <Salvar> for acionado, após gravar os dados o sistema deverá emitir esta informação ao usuário.
- Uma tabela de preço poderá ser adicionada no grid uma única vez.
- O grid que lista as tabelas de preço terá as seguintes colunas:
- DESCRIÇÃO
- DESCRIÇÃO ABREVIADA
- ATIVO
- PADRÂO
- DESCONTO (%)
- VALIDADE
Não será permitido cadastrar um produto sem que antes esteja definido nos parâmetros pelo menos uma tabela de preço.
Ao cadastrar um produto, todos os preços do mesmo referentes às tabelas de preço utilizadas deverão ser obrigatoriamente
informados (markup e preço maiores que zero).
RN13 - Regras para determinar uso de série
Na inclusão ou alteração de um produto o parâmetro Usa série poderá ser ativado/desativado normalmente, mas se o produto já foi movimentado este parâmetro não poderá ser alterado. Em outras palavras um produto que foi movimentado sem controlar série não poderá passar a controlar série, e um produto que controla série não poderá passar a não controlar.
RN14 - Histórico de preços
Sempre que um usuário acessar o cadastro de um determinado produto e alterar os preços de venda ou o preço de custo (seja na inclusão ou alteração), o sistema deverá registrar o movimento de alteração de preço nas classes MovimentoPrecoCusto e MovimentoPrecoVenda listadas no diagrama abaixo. Também deverão ser registradas alterações nos preços das grades (caso ocorra).
Na aba Preços à direita dos preços do produto será exibido um grid que mostrará o histórico de alterações nos preços do mesmo. O grid seguirá o modelo RichFaces, mesmo utilizado no cadastro de usuários. As informações do histórico de preço serão exibidas nas seguintes colunas:
- FILIAL: Filial em que a alteração no preço foi realizada.
- DATA/HORA: Data e hora em que ocorreu a alteração no preço.
- USUÁRIO: Usuário responsável pela alteração.
- TIPO: Exibe a informação de onde e como o preço foi reajustado com as opções:
- MANUAL: Alterações feitas manualmente no cadastro do produto.
- REAJUSTE INDIVIDUAL: Alterações feitas na rotina de reajuste de preços individual.
- REAJUSTE GERAL: Alterações feitas na rotina de reajuste de preços geral.
- REAJUSTE CUSTO ALTERADO: Alterações feitas na rotina de reajuste de preços por custo alterado.
- ENTRADA/SAÍDA: Alterações feitas na rotina de entradas/saídas.
- GRADE: Exibe a grade do produto cujo preço foi alterado. Caso produto não possua grade, exibirá GRADE PADRÃO.
- PREÇO DE CUSTO: Se a alteração foi no preço de custo, exibirá o valor gravado na alteração. Caso não haja alteração no custo, esta coluna ficará vazia para o registro em questão.
- TABELA DE PREÇO: Para alterações no preço de venda, exibe a(s) tabela(s) alterada(s).
- PREÇO DE VENDA: Se a alteração foi no preço de venda, exibirá o valor gravado na alteração. Caso não haja alteração no preço de venda, esta coluna ficará vazia para o registro em questão.
O grid do RichFaces possibilita que o usuário filtre seu conteúdo através de filtros posicionados sobre suas colunas. No caso do histórico de preços, segue abaixo as colunas que terão esta filtragem e o tipo do filtro:
- FILIAL: Filtro em forma de combobox que lista todas as filiais cadastradas.
- DATA/HORA: Filtro em forma de input, permitindo ao usuário informar uma data (sem hora) específica.
- USUÁRIO: Filtro em forma de combobox que lista todos usuários cadastrados.
- TIPO: Filtro em forma de combobox que lista os tipos de alteração de preço mencionados na respectiva coluna.
- TABELA DE PREÇO: Filtro em forma de combobox que lista todas as tabelas de preço relacionadas para trabalhar com produtos.
RN15 - Regras específicas para produtos do tipo SERVIÇO
Muito semelhante ao cadastro de produto acabado, o cadastro de serviço pode ser acessado através do Menu -> Cadastros > Faturamento -> Item -> Serviço. A tela de manutenção da rotina de cadastro de serviços será composta por três abas, Gerais, Preços e Tributação.
Aba Gerais
- Código: Campo somente para leitura que exibirá o código do serviço. Este código é gerado automaticamente pelo sistema quando o serviço é cadastrado.
- Ativo: Parâmetro que determina se um serviço está ativo ou não. Serviços inativos não serão sequer visualizados nas demais rotinas do sistema (buscas, consultas e pesquisas).
- Bloqueado: Parâmetro que determina se um serviço está bloqueado para uso ou não. Serviços bloqueados serão visualizados em outras rotinas do sistema, mas não poderão ser movimentados.
- Referência: Campo onde poderá ser informada uma referência para o serviço, geralmente, o código de barras do mesmo (EAN).
Ref. Fabricante:- Descrição: Campo onde deverá ser informada a descrição principal do serviço.
- Descrição reduzida: Campo onde poderá ser informada uma descrição mais resumida para o serviço. Estas descrições resumidas podem ser utilizadas em relatórios/consultas que possuem muitas colunas para ocupar menos espaço.
- Comissão: Campo onde poderá ser informado um percentual de comissão exclusivo do serviço.
- Descrição estendida: Campo onde poderá ser informada uma descrição mais detalhada para o serviço.
- Alerta: Campo onde poderá ser atribuída uma mensagem de alerta para o serviço. Sendo assim em todas as rotinas de movimento quando o serviço for selecionado este alerta será exibido ao usuário.
- Unidade padrão: Campo onde deverá ser definida a unidade padrão do serviço.
Código do Gênero- Grupo: Neste campo onde serão listados todos os grupos cadastrados no sistema para que o usuário selecione um único grupo a qual o serviço em questão irá pertencer.
- Subgrupo: Neste campo serão listados todos os subgrupos cadastrados que estão vinculados ao grupo já selecionado.
- Fornecedor principal: Neste campo deverá ser selecionado, opcionalmente, um fornecedor principal para o serviço.
- Classificação fiscal: Campo onde serão listadas as classificações fiscais cadastradas no sistema para que o usuário selecione uma única para ser utilizada no serviço.
Todos os campos citados acima serão os mesmos que são utilizados no produto acabado, com as mesmas regras e validações.
Aba Preços
Será idêntica à do produto acabado,