UC00067 - Controle de caixa

De Wiki Java - Interno
(Diferença entre revisões)
Ir para: navegação, pesquisa
(Fluxos principais)
(Fluxos de exceções)
 
(46 edições intermediárias de um usuário não apresentadas)
Linha 17: Linha 17:
 
= Fluxo de eventos =
 
= Fluxo de eventos =
 
== Fluxos principais ==
 
== Fluxos principais ==
'''Fluxo 1:''' Usuário acessa a rotina ''Menu > Movimentos > Tesouraria > Controle de caixa''.
+
'''Fluxo 1:''' Usuário acessa a rotina '''''Menu > Movimentos > Tesouraria > Controle de caixa/checkouts > Fechamento de caixa'''''.
 
*Sistema exibe tela inicial da rotina conforme regra de negócio [[#RN05 - Tela inicial (tela de pesquisa)|RN05]].
 
*Sistema exibe tela inicial da rotina conforme regra de negócio [[#RN05 - Tela inicial (tela de pesquisa)|RN05]].
  
  
'''Fluxo 2:''' Usuário aciona o botão <Sangria/Suprimento>.
+
'''Fluxo 2:''' Usuário aciona o botão '''[Sangria/Suprimento]'''.
 
*Sistema exibe a tela de sangrias e suprimentos conforme [[#Layout sugerido|layout sugerido]].
 
*Sistema exibe a tela de sangrias e suprimentos conforme [[#Layout sugerido|layout sugerido]].
  
  
'''Fluxo 3:''' Usuário informa os dados da sangria ou suprimento e aciona o botão <Salvar>.
+
'''Fluxo 3:''' Usuário informa os dados da sangria ou suprimento e aciona o botão '''[Salvar]'''.
 
*Sistema procede conforme regra de negócio [[#RN01 - Descrição dos campos e funcionalidades da rotina de suprimento/sangria|RN01]].
 
*Sistema procede conforme regra de negócio [[#RN01 - Descrição dos campos e funcionalidades da rotina de suprimento/sangria|RN01]].
  
  
'''Fluxo 4:''' Usuário aciona o botão <Fechamento de caixa>.
+
'''Fluxo 4:''' Usuário aciona o botão '''[Fechamento de caixa]'''.
 
*Sistema exibe a tela de fechamento de caixa conforme [[#Layout sugerido|layout sugerido]].
 
*Sistema exibe a tela de fechamento de caixa conforme [[#Layout sugerido|layout sugerido]].
 
 
'''Fluxo 5:''' Usuário informa os dados do fechamento e aciona o botão <Fechar caixa>.
 
*Sistema procede conforme regra de negócio [[#RN05 - Fechamento do caixa|RN05]].
 
  
 
== Fluxos alternativos ==
 
== Fluxos alternativos ==
'''Fluxo 1:'''  
+
'''Fluxo 1:''' Na rotina de sangria/suprimento, usuário realiza um movimento de '''sangria''' informando um valor '''maior''' do que o total em dinheiro existente no subcaixa do operador naquele momento acionando o botão '''[Salvar]''' em seguida.
 +
*Sistema verifica se no subcaixa do operador existe valor em dinheiro igual ou maior que o valor informado para sangria. *Caso exista dinheiro suficiente no caixa do operador, a sangria será feita normalmente.
 +
*Caso valor em dinheiro no subcaixa do operador seja menor que o valor informado para a sangria, antes de realizar o movimento em questão será emitida ao usuário a seguinte mensagem de confirmação: <font color=#008B00>''O valor informado para a sangria é '''maior''' que o valor em dinheiro existente no caixa do operador neste momento. Este movimento poderá gerar diferenças no fechamento de caixa, uma vez que sangrias/suprimentos são contabilizados como dinheiro. Deseja prosseguir?''</font>
  
 
== Fluxos de exceções ==
 
== Fluxos de exceções ==
'''Fluxo 1:'''  
+
'''Fluxo 1:''' Tendo mais de um caixa fechado para um determinado operador, usuário tenta a alteração/exclusão de um fechamento anterior ao último caixa fechado.
 +
*Sistema aborta a operação e emite a seguinte mensagem de alerta: <font color=#008B00>''É permitida a alteração/exclusão somente para o último registro de fechamento de caixa do operador''</font>.
 +
 
 +
 
 +
'''Fluxo 2:''' Usuário tenta alterar/excluir o último caixa fechado para um determinado operador, mas o operador em questão possui um caixa ainda em aberto.
 +
*Sistema aborta a operação e emite a seguinte mensagem de alerta: <font color=#008B00>''Não é permitido alterar/excluir fechamentos de caixa de um operador enquanto o mesmo possuir caixa em aberto''</font>.
 +
 
 +
 
 +
'''Fluxo 3:''' Tendo informados subcaixa e conta caixa de encerramento na aba NF-e dos parâmetros da filial logada usuário acessa a rotina de controle de caixa e aciona os botões '''[Sangria/Suprimento]''' ou '''[Fechamento de caixa]'''.
 +
*Sistema aborta a operação e exibe ao usuário a seguinte mensagem de alerta: <font color=#008B00>''Na aba "NF-e" dos parâmetros da filial logada foram informados subcaixa e conta caixa de encerramento e portanto não será possível fazer sangrias/suprimentos ou fechamento de caixas. Quando utilizando fechamento de caixa a NF-e não poderá gerar movimento de caixa em seu encerramento''</font>.
  
 
= Regras de negócio =
 
= Regras de negócio =
Linha 51: Linha 58:
 
#'''Turno:''' Assim que um usuário válido for informado estes dados serão automaticamente preenchidos. Por padrão este campo ficará sempre desabilitado, ou seja, será somente para leitura.
 
#'''Turno:''' Assim que um usuário válido for informado estes dados serão automaticamente preenchidos. Por padrão este campo ficará sempre desabilitado, ou seja, será somente para leitura.
  
 +
    <font face="Arial">
 
     Após os movimentos de sangria e suprimento deverá ser gerado, obrigatoriamente, um recibo.  
 
     Após os movimentos de sangria e suprimento deverá ser gerado, obrigatoriamente, um recibo.  
 
     Este recibo deverá seguir o modelo do recibo emitido na abertura de caixa.
 
     Este recibo deverá seguir o modelo do recibo emitido na abertura de caixa.
  
 
=== Movimentações ===
 
=== Movimentações ===
#Ao realizar uma sangria deverá ser gerado um movimento de débito no subcaixa do usuário utilizando a conta caixa de débito de suprimento e um movimento de crédito no subcaixa da tesouraria utilizando a conta caixa de crédito de suprimento. As contas caixas de crédito e débito de suprimento são configuradas nos parâmetros da abertura de caixa.
+
#Na sangria deverão ser gerados dois movimentos conforme segue abaixo:
#Ao realizar um suprimento deverá ser gerado um movimento de débito no subcaixa da tesouraria utilizando a conta caixa de débito de suprimento e um movimento de crédito no subcaixa do usuário utilizando a conta caixa para crédito de suprimento. As contas caixas de crédito e débito de suprimento são configuradas nos parâmetros da abertura de caixa.
+
#*Saída na '''Conta caixa para débito de sangria''' utilizando o '''subcaixa do operador'''.
 +
#*Entrada na '''Conta caixa para crédito de sangria''' utilizando o '''subcaixa do tesoureiro'''.
 +
#No suprimento também deverão ser gerados dois movimentos conforme descrito abaixo:
 +
#*Saída na '''Conta caixa para débito de suprimento''' utilizando o '''subcaixa do tesoureiro'''.
 +
#*Entrada na '''Conta caixa para crédito de suprimento''' utilizando o '''subcaixa do operador'''.
 +
 +
    <font face="Arial">
 +
    As contas de débito e crédito de suprimento e sangria assim como o subcaixa do tesoureiro são definidos nos parâmetros da rotina em questão.
  
 +
    <font face="Arial">
 +
    O histórico das movimentações de crédito e débito de suprimento deverá conter o usuário/caixa que foi movimentado, o usuário (tesoureiro) que realizou a movimentação, valor e data/hora.
  
Se os dados obrigatórios foram devidamente informados e são válidos, o sistema deverá gerar no caixa do usuário em questão o movimento de sangria ou suprimento. Além do movimento no caixa do usuário, deverá ser gerado também um movimento de débito na conta caixa definida como '''Conta caixa para débito de suprimento''' nos parâmetros da rotina de abertura de caixa, utilizando o subcaixa da tesouraria também definido neste local. Deverá ser gerado também um movimento de crédito na conta caixa definida como '''Conta caixa para crédito de suprimento''' também definida nos parâmetros da rotina de abertura de caixa. O subcaixa para o crédito de suprimento será o mesmo utilizado para o débito.
+
    <font face="Arial">
 
+
    Se for informado um valor de sangria maior que o valor em dinheiro existente no caixa do operador naquele momento uma mensagem de confirmação deverá ser exibida antes de realizar
 
+
    o movimento.
O histórico das movimentações de crédito e débito de suprimento deverá conter o usuário/caixa que foi movimentado, o usuário (tesoureiro) que realizou a movimentação, valor e data/hora.
+
  
 
== RN02 - Descrição dos campos e funcionalidades da rotina de fechamento na aba ''Conferência cega'' ==
 
== RN02 - Descrição dos campos e funcionalidades da rotina de fechamento na aba ''Conferência cega'' ==
#'''Usuário:''' Neste campo deverá ser informado um usuário cujo caixa será fechado. Somente serão listados neste campo usuários que são operadores de caixa e que possuem caixa aberto. Uma vez que o usuário for informado o sistema preencherá automaticamente a data de abertura e os turnos conforme informado na abertura do caixa. A informação deste dado é obrigatória.
+
#'''Usuário:''' Neste campo deverá ser informado um usuário cujo caixa será fechado. Somente serão listados neste campo usuários que são operadores de caixa, que possuem acesso à filial logada e que possuem caixa aberto. Uma vez que o usuário for informado o sistema preencherá automaticamente a data de abertura e os turnos conforme informado na abertura do caixa. A informação deste dado é obrigatória.
 
#Data de abertura: Campo somente para leitura. Será automaticamente preenchido após o usuário ser informado.
 
#Data de abertura: Campo somente para leitura. Será automaticamente preenchido após o usuário ser informado.
 
#Turno: Idem data de abertura.
 
#Turno: Idem data de abertura.
#Formas de pagamento: Nestes campos o usuário/caixa deverá informar, em cada forma de pagamento, o valor correspondente às vendas do dia. Estes dados deverão ser digitados através de conferência cega, ou seja, o usuário deverá primeiro informar os valores para depois confrontar com o que o sistema calcular. À medida que os valores forem informados estes serão totalizados no campo '''Total''' à direita.
+
#Formas de pagamento: Nestes campos o usuário/caixa deverá informar, em cada forma de pagamento, o valor correspondente às vendas do dia. Estes dados deverão ser digitados através de conferência cega, ou seja, o usuário deverá primeiro informar os valores para depois confrontar com o que o sistema calcular. À medida que os valores forem informados estes serão totalizados no campo '''Total''' à direita. As formas de pagamento serão basicamente as mesmas utilizadas no PDV conforme segue abaixo:
#'''Botão <Fechamento>:''' Quando este botão for acionado será exibida a aba ''Fechamento''.
+
#*Dinheiro
 +
#*Cartão
 +
#*Cheque
 +
#*Cheque pré-datado
 +
#*Contas a receber
 +
#*Crédito aproveitado
 +
#*Convênio
 +
#*Depósito
 +
#*Financiamento
 +
#*Troca
 +
#*Sangria (não consta no PDV)
 +
#*Suprimento (não consta no PDV)
 +
#'''Botão [Fechamento]:''' Quando este botão for acionado será exibida a aba ''Fechamento''.
  
 +
    <font face="Arial">
 
     É importante ressaltar que para sangrias e suprimentos do caixa o usuário deverá manter os recibos gerados para conferência.
 
     É importante ressaltar que para sangrias e suprimentos do caixa o usuário deverá manter os recibos gerados para conferência.
 +
 +
    <font face="Arial">
 +
    Créditos gerados '''não''' serão considerados no fechamento de caixa.
  
 
== RN03 - Descrição dos campos e funcionalidades da rotina de fechamento na aba ''Fechamento'' ==
 
== RN03 - Descrição dos campos e funcionalidades da rotina de fechamento na aba ''Fechamento'' ==
 
'''Apuração do fechamento:''' Nesta seção serão confrontados os valores informados na aba de conferência cega com os valores calculados pelo sistema onde:
 
'''Apuração do fechamento:''' Nesta seção serão confrontados os valores informados na aba de conferência cega com os valores calculados pelo sistema onde:
#'''CALCULADO:''' Para o usuário/caixa em questão serão consideradas  e discriminadas em cada forma de pagamento todas as vendas realizadas desde a abertura de seu caixa. Serão contabilizados também, desde a abertura do caixa, movimentos de sangria, suprimento de caixa e liquidações realizadas por este usuário. Sangrias, suprimentos e liquidações serão discriminadas em um grid logo à direita com os seguintes detalhes:
+
#'''CALCULADO:''' Para o usuário/caixa em questão serão consideradas  e discriminadas em cada forma de pagamento todas as vendas realizadas desde a abertura de seu caixa. Serão contabilizados também, desde a abertura do caixa, movimentos de sangria, suprimento de caixa, entradas/saídas avulsas (rotina de movimento de caixa) e liquidações realizadas por este usuário/operador. Sangrias, suprimentos, movimentos de caixa avultos e liquidações serão discriminadas em um grid logo à direita com os seguintes detalhes:
#*'''MOVIMENTO:''' Indica se foi sangria, suprimento ou liquidação.
+
#*'''MOVIMENTO:''' Indica se foi sangria, suprimento, movimento de caixa avulso ou liquidação.
 
#*'''VALOR:''' Valor do movimento.
 
#*'''VALOR:''' Valor do movimento.
 
#*'''DATA/HORA:''' Data e hora em que o movimento foi realizado.
 
#*'''DATA/HORA:''' Data e hora em que o movimento foi realizado.
#*'''MOTIVO:''' No caso da sangria ou suprimento será exibida a justificativa para tal movimento quando o mesmo foi realizado. Já no caso da liquidação deverá ser exibido: “Referente à liquidação do título XXXXX para o cliente XXXXX - XXXXXXXXXXXXXX”, onde X corresponde respectivamente ao código do documento liquidado, código e nome do cliente.
+
#*'''MOTIVO:''' No caso da sangria ou suprimento será exibida a justificativa para tal movimento quando o mesmo foi realizado. Já no caso da liquidação deverá ser exibido: <font color=#008B00>''Referente à liquidação do título XXXXX para o cliente XXXXX - XXXXXXXXXXXXXX''</font>, onde X corresponde respectivamente ao código do documento liquidado, código e nome do cliente. Para movimentos de caixa avulsos será exibido <font color=#008B00>''Referente ao movimento avulso de XXXX de caixa realizado pelo usuário YYY no dia ZZ/ZZ/ZZZZ. Histórico: WWWWW''</font>, onde X corresponde ao tipo de movimento (entrada ou saída), Y corresponde ao usuário que fez o movimento de caixa avulso, Z corresponde à data do movimento e W corresponde a seu histórico.
 
#'''INFORMADO:''' Os valores informados em cada forma de pagamento na aba de conferência cega serão listados nesta coluna.
 
#'''INFORMADO:''' Os valores informados em cada forma de pagamento na aba de conferência cega serão listados nesta coluna.
 
#'''DIFERENÇA:''' Exibirá o valor da diferença entre o valor calculado subtraído pelo informado, seja ele positivo ou negativo. Quando a diferença for negativa o campo deverá assumir a cor de fundo vermelha.
 
#'''DIFERENÇA:''' Exibirá o valor da diferença entre o valor calculado subtraído pelo informado, seja ele positivo ou negativo. Quando a diferença for negativa o campo deverá assumir a cor de fundo vermelha.
Linha 87: Linha 119:
 
#'''Saldo final:''' Exibirá a diferença da subtração de total calculado e total informado. O ideal é que o saldo final fique zerado, indicando que o fechamento do caixa bateu perfeitamente com o que o sistema calculou.
 
#'''Saldo final:''' Exibirá a diferença da subtração de total calculado e total informado. O ideal é que o saldo final fique zerado, indicando que o fechamento do caixa bateu perfeitamente com o que o sistema calculou.
  
 +
    <font face="Arial">
 
     Caso o saldo final fique negativo, o campo em questão assumirá a cor de fundo vermelha.
 
     Caso o saldo final fique negativo, o campo em questão assumirá a cor de fundo vermelha.
  
 
Após realizar o fechamento de um caixa o sistema deverá imprimir os dados do mesmo, ou seja, todos os dados existentes na aba ''Fechamento''. Na impressão deverá constar local para assinatura do operador e também do responsável pelo fechamento do caixa.
 
Após realizar o fechamento de um caixa o sistema deverá imprimir os dados do mesmo, ou seja, todos os dados existentes na aba ''Fechamento''. Na impressão deverá constar local para assinatura do operador e também do responsável pelo fechamento do caixa.
  
== RN04 - Descrição das funcionalidades da rotina ''Parâmetros'' ==
+
=== Movimentações ===
Quando este botão for acionado será exibida ao usuário uma tela de configurações onde deverá ser definida uma conta caixa de crédito e também um subcaixa para geração do movimento de crédito o valor do caixa fechado.
+
No fechamento de um caixa serão geradas no sistema os seguintes movimentos:
 +
#Com o valor total do caixa a ser fechado (total calculado), será gerado um movimento de '''saída''' utilizando o subcaixa do '''operador''' na conta caixa de fechamento definida nos [[#RN04 - Descrição das funcionalidades da rotina Parâmetros | parâmetros]] da rotina em questão. O movimento de saída deverá ser equivalente ao movimento de entrada gerado nas contas caixa/formas de pagamento configuradas no PDV, exemplo: <font color=#008B00>''Considerando que no PDV apenas as formas de pagamento '''dinheiro''' e '''cartão''' estão configurados para gerar caixa, um determinado operador vende 15.000,00 (total calculado) sendo 10.000,00 em dinheiro, 2.500,00 em cartão e 2.500,00 em contas a receber. Ao gerar o movimento de saída referente ao fechamento deste caixa o sistema considerará apenas 12.500,00, uma vez que estas são as formas de pagamento configuradas para gerar caixa na venda.''</font>
 +
#*'''Sangria/Suprimento:''' Sangrias e suprimentos devem ser considerados como '''dinheiro''', ou seja, todos os suprimentos feitos em um determinado caixa deverão ser '''somados''' e todas as sangrias deverão ser '''subtraídas'''. Tanto a soma quanto a subtração de sangrias e suprimentos deverão considerar a forma de pagamento '''dinheiro''' e sua respectiva conta caixa.
 +
#*'''Crédito gerado:''' Este '''não será considerado''', nem na venda e nem no fechamento.
 +
#*'''Crédito aproveitado:''' No fechamento do caixa ao gerar o movimento de '''saída''' na conta caixa de fechamento o total de crédito aproveitado deverá ser utilizado para zerar o subcaixa do operador (caso tenha gerado crédito na venda), porém ao gerar a entrada com o subcaixa do tesoureiro este '''não será considerado''' uma vez que não é dinheiro.
 +
#*'''Trocas:''' A exemplo do crédito aproveitado, a troca deverá gerar movimento de '''saída''' na conta de fechamento com o subcaixa do operador para zerá-lo, mas ao gerar a entrada no subcaixa do tesoureiro o total de troca '''não será considerado'''.
 +
#*'''Movimentos de caixa avulsos:''' Caso no subcaixa do operador tenham sido realizados movimentos de caixa avulsos, sejam eles de entrada ou de saída, estes serão listados/detalhados no grid e considerados da seguinte forma:
 +
#**'''Movimento avulso de saída:''' O total dos movimentos avulsos de saída será '''subtraído''' da forma de pagamento '''dinheiro'''.
 +
#**'''Movimento avulso de entrada:''' O total dos movimentos avulsos de entrada será '''somado''' à forma de pagamento '''dinheiro'''.
 +
#Com o valor de saída gerado no fechamento, deverá ser gerada uma entrada nas mesmas formas de pagamento/contas caixa configuradas para gerar caixa na venda (PDV) utilizando o subcaixa do tesoureiro.
 +
#Caso no fechamento tenha ocorrido quebra de caixa, está será tratada da seguinte maneira:
 +
#*Se o valor informado para fechamento do caixa foi '''maior''' que o calculado, o sistema lançará a diferença entre o valor calculado e o informado na conta caixa para quebra de caixa positiva definida nos parâmetros da rotina em questão  utilizando o subcaixa do tesoureiro.
 +
#*Se o valor informado para fechamento do caixa foi '''menor''' que o calculado, o sistema lançará a diferença entre o valor calculado e o informado na conta caixa para quebra de caixa negativa definida nos parâmetros da rotina em questão utilizando o subcaixa do tesoureiro.
  
Deverá ser exibido ao usuário um campo onde poderá ser parametrizado um percentual/valor de tolerância para quebra de caixa, seja ela negativa ou positiva. Este campo deverá ser chamado “Tolerância para quebra de caixa (positiva/negativa)”.
+
    <font face="Arial">
 +
    Em todas as movimentações de caixa deverão constar o seguinte histórico: '''''Movimento referente ao fechamento de caixa do usuário ZZZZZZZ no dia XX/XX/XXXX às YY:YY horas'''''.
 +
    Onde X, Y e Z correspondem respectivamente ao dia, hora  e usuário/operador do fechamento do caixa.
  
Ainda nesta tela deverão ser definidas uma conta caixa de débito para diferença negativa no fechamento de caixa e uma conta caixa de crédito para diferença positiva no fechamento. Para as diferenças será utilizado o mesmo subcaixa da geração de crédito com o valor de fechamento.
+
== RN04 - Descrição das funcionalidades da rotina ''Parâmetros'' ==
 
+
Visível somente para usuários com acesso total ao sistema, quando este botão for acionado será exibida ao usuário uma tela de configurações onde serão definidos:
== RN05 - Fechamento do caixa ==
+
#'''Subcaixa da tesouraria:''' Campo onde deverá ser selecionado um subcaixa no qual serão realizados os movimentos de sangria, suprimento, quebra e fechamento de caixa.
Ocorrerá no momento em que o botão <Fechar caixa> for acionado. Neste momento o sistema deverá:
+
#'''Conta caixa para débito de sangria:''' Campo onde deverá ser informada uma conta caixa de '''débito''' onde serão gerados (com subcaixa do operador) movimentos de saída com os valores das sangrias de caixa realizadas.
#Verificar se na aba “Conferência cega” um usuário válido foi informado. Caso usuário informado não seja válido uma mensagem com a não conformidade deverá ser exibida e o fechamento deverá ser abortado.
+
#'''Conta caixa para crédito de sangria:''' Campo onde deverá ser informada uma conta caixa de '''crédito''' onde serão gerados (com subcaixa da tesouraria) movimentos de entrada com os valores das sangrias de caixa realizadas.
#Verificar se foi informado valor maior que zero para pelo menos uma forma de pagamento na aba “Conferência cega”. Se nenhum valor foi informado, uma mensagem com a não conformidade deverá ser exibida e o fechamento será abortado.
+
#'''Conta caixa para débito de suprimento:''' Campo onde deverá ser informada uma conta caixa de '''débito''' onde serão gerados (com subcaixa da tesouraria) movimentos de saída com os valores dos suprimentos de caixa realizados.
#Verificar se na aba “Fechamento” o campo “Saldo final” está com o valor zero. Se não estiver, uma mensagem de confirmação deverá ser exibida ao usuário informando que os valores calculado e informado não bateram e perguntando se ele deseja realmente fechar o caixa.
+
#'''Conta caixa para crédito de suprimento:''' Campo onde deverá ser informada uma conta caixa de '''crédito''' onde serão gerados (com subcaixa do operador) movimentos de entrada com os valores dos suprimentos de caixa realizados.
#Se todos os passos acima estiverem OK, gerar movimento de crédito na conta caixa/subcaixa especificados nos parâmetros. Se nos parâmetros do PDV o sistema estiver configurado para fechar caixa e gerar caixa para cada usuário/operador, será gerado um movimento de débito na(s) conta(s) caixa configurada(s) tendo como observação do movimento: “Referente ao fechamento do caixa do usuário XXXXXX no data/hora XX/XX/XXXX XX:XX”, sendo que X corresponde respectivamente ao nome do usuário que teve o caixa fechado e a data e hora do fechamento.
+
#'''Conta caixa para fechamento:''' Campo onde o usuário deverá informar uma conta caixa de '''débito''' onde serão gerados (com subcaixa de cada operador) movimentos de saída com os valores dos fechamentos de cada caixa.
#Após fechar um caixa, atualizar seu status para FECHADO.
+
#'''Conta para quebra de caixa positiva:''' Campo onde deverá ser informada uma conta caixa de '''crédito''' onde serão gerados (com subcaixa da tesouraria) movimentos de entrada com os valores de quebra de caixa positivos.
 
+
#'''Conta para quebra de caixa negativa:''' Campo onde deverá ser informada uma conta caixa de '''débito''' onde serão gerados (com subcaixa da tesouraria) movimentos de saída com os valores de quebra de caixa negativos.
 
+
No fechamento, se um usuário válido que possui seu caixa em aberto foi informado, o sistema procederá conforme segue abaixo:
+
#Será verificado se na aba ''Conferência cega'' pelo menos uma forma de pagamento possui valor informado. Caso contrário o fechamento será abortado e uma mensagem com a não conformidade será exibida ao usuário.
+
#Será verificado se o saldo final do fechamento é igual a zero. Se sim, o caixa será fechado normalmente. Caso não seja, o sistema irá alertar o usuário da diferença e perguntar se deseja realmente fechar o caixa com a diferença.
+
#Ao fechar o caixa as seguintes movimentações serão realizadas:
+
#*Será gerado um movimento de crédito com a conta caixa e subcaixa definidos nos parâmetros da rotina de controle de caixa.
+
#*Será gerado movimento de crédito ou débito nas contas caixas definidas nos parâmetros para armazenar as diferenças entre calculado e informado no fechamento.
+
#*Caso PDV esteja configurado para gerar caixa para cada venda realizada pelo usuário, será gerado nas contas caixas configuradas nos parâmetros do PDV um movimento de débito com o subcaixa determinado nos parâmetros da rotina de controle de caixa.
+
  
 
== RN05 - Tela inicial (tela de pesquisa) ==
 
== RN05 - Tela inicial (tela de pesquisa) ==
Linha 120: Linha 159:
 
#Fechamento de caixa
 
#Fechamento de caixa
 
#Parâmetros
 
#Parâmetros
 +
  
 
Logo abaixo deverá ser exibido um grid que listará todas as movimentações realizadas com os seguintes dados:
 
Logo abaixo deverá ser exibido um grid que listará todas as movimentações realizadas com os seguintes dados:
Linha 134: Linha 174:
 
Na última coluna do grid além das opções de alteração, visualização e exclusão, deverão estar disponíveis (somente para Controle de caixa) opções que permitam ao usuário realizar sangria/suprimento ou fechar um determinado caixa. Obviamente, se um caixa já foi fechado à opção de sangria/suprimento não ficará habilitada.
 
Na última coluna do grid além das opções de alteração, visualização e exclusão, deverão estar disponíveis (somente para Controle de caixa) opções que permitam ao usuário realizar sangria/suprimento ou fechar um determinado caixa. Obviamente, se um caixa já foi fechado à opção de sangria/suprimento não ficará habilitada.
  
 
+
    <font face="Arial">
 
     O grid deverá ordenar seus registros de forma decrescente pela data da ultima movimentação.
 
     O grid deverá ordenar seus registros de forma decrescente pela data da ultima movimentação.
  
== RN06 - Validações gerais ==
+
== RN06 - Regras gerais ==
#As telas de sangria/suprimento e de fechamento deverão considerar/exibir somente movimentações de data menor ou igual à data de login do usuário. Desta forma se o usuário logar com data retroativa ele não corre o risco visualizar/alterar movimentações futuras.
+
*As telas de sangria/suprimento e de fechamento deverão considerar/exibir somente movimentações de data menor ou igual à data de login do usuário. Desta forma se o usuário logar com data retroativa ele não corre o risco visualizar/alterar movimentações futuras.
 +
*No momento em que o botão '''[Fechar caixa]''' for acionado o sistema deverá:
 +
*#Verificar se na aba “Conferência cega” um usuário válido foi informado. Caso usuário informado não seja válido uma mensagem com a não conformidade deverá ser exibida e o fechamento deverá ser abortado.
 +
*#Verificar se foi informado valor maior que zero para pelo menos uma forma de pagamento na aba “Conferência cega”. Se nenhum valor foi informado, uma mensagem com a não conformidade deverá ser exibida e o fechamento será abortado.
 +
*#Verificar se na aba “Fechamento” o campo “Saldo final” está com o valor zero. Se não estiver, uma mensagem de confirmação deverá ser exibida ao usuário informando que os valores calculado e informado não bateram e perguntando se ele deseja realmente fechar o caixa.
 +
 
 +
 
 +
No fechamento, se um usuário válido que possui seu caixa em aberto foi informado, o sistema procederá conforme segue abaixo:
 +
#Será verificado se na aba ''Conferência cega'' pelo menos uma forma de pagamento possui valor informado. Caso contrário o fechamento será abortado e uma mensagem com a não conformidade será exibida ao usuário.
 +
#Será verificado se o saldo final do fechamento é igual a zero. Se sim, o caixa será fechado normalmente. Caso não seja, o sistema irá alertar o usuário da diferença e perguntar se deseja realmente fechar o caixa com a diferença.
 +
 
 +
    <font face="Arial">
 +
    Se o total calculado for igual a 0,00 o caixa não poderá ser fechado.
  
 
= Layout sugerido =
 
= Layout sugerido =

Edição atual tal como às 10h29min de 4 de agosto de 2014

Conteúdo

[editar] Objetivo

Gerar movimentos de suprimento/sangria e fechamento de caixa.

[editar] Atores

  • Usuário

[editar] Pré-requisitos

  • No projeto da rotina (receber), em confsrc > META-INF > messages > view.properties definir o nome como Controle de caixa. Este nome será utilizado para criar a página no Wiki
  • Considerar documento Padrões de desenvolvimento.

[editar] Resultado esperado

  • Ter realizados e controlados movimentos de sangria/suprimento e fechamento de caixa.

[editar] Diagrama de classes

Caixa.png

[editar] Fluxo de eventos

[editar] Fluxos principais

Fluxo 1: Usuário acessa a rotina Menu > Movimentos > Tesouraria > Controle de caixa/checkouts > Fechamento de caixa.

  • Sistema exibe tela inicial da rotina conforme regra de negócio RN05.


Fluxo 2: Usuário aciona o botão [Sangria/Suprimento].


Fluxo 3: Usuário informa os dados da sangria ou suprimento e aciona o botão [Salvar].

  • Sistema procede conforme regra de negócio RN01.


Fluxo 4: Usuário aciona o botão [Fechamento de caixa].

[editar] Fluxos alternativos

Fluxo 1: Na rotina de sangria/suprimento, usuário realiza um movimento de sangria informando um valor maior do que o total em dinheiro existente no subcaixa do operador naquele momento acionando o botão [Salvar] em seguida.

  • Sistema verifica se no subcaixa do operador existe valor em dinheiro igual ou maior que o valor informado para sangria. *Caso exista dinheiro suficiente no caixa do operador, a sangria será feita normalmente.
  • Caso valor em dinheiro no subcaixa do operador seja menor que o valor informado para a sangria, antes de realizar o movimento em questão será emitida ao usuário a seguinte mensagem de confirmação: O valor informado para a sangria é maior que o valor em dinheiro existente no caixa do operador neste momento. Este movimento poderá gerar diferenças no fechamento de caixa, uma vez que sangrias/suprimentos são contabilizados como dinheiro. Deseja prosseguir?

[editar] Fluxos de exceções

Fluxo 1: Tendo mais de um caixa fechado para um determinado operador, usuário tenta a alteração/exclusão de um fechamento anterior ao último caixa fechado.

  • Sistema aborta a operação e emite a seguinte mensagem de alerta: É permitida a alteração/exclusão somente para o último registro de fechamento de caixa do operador.


Fluxo 2: Usuário tenta alterar/excluir o último caixa fechado para um determinado operador, mas o operador em questão possui um caixa ainda em aberto.

  • Sistema aborta a operação e emite a seguinte mensagem de alerta: Não é permitido alterar/excluir fechamentos de caixa de um operador enquanto o mesmo possuir caixa em aberto.


Fluxo 3: Tendo informados subcaixa e conta caixa de encerramento na aba NF-e dos parâmetros da filial logada usuário acessa a rotina de controle de caixa e aciona os botões [Sangria/Suprimento] ou [Fechamento de caixa].

  • Sistema aborta a operação e exibe ao usuário a seguinte mensagem de alerta: Na aba "NF-e" dos parâmetros da filial logada foram informados subcaixa e conta caixa de encerramento e portanto não será possível fazer sangrias/suprimentos ou fechamento de caixas. Quando utilizando fechamento de caixa a NF-e não poderá gerar movimento de caixa em seu encerramento.

[editar] Regras de negócio

[editar] RN01 - Descrição dos campos e funcionalidades da rotina de suprimento/sangria

  1. Tipo de movimento: Neste campo deverá ser definido se o movimento será de sangria ou de suprimento de caixa. Sua informação é obrigatória e a opção padrão será sangria.
  2. Data: Neste campo deverá ser informada a data em que o movimento está sendo realizado. Esta informação é obrigatória e a data deverá serio maior ou igual à data de movimento (data de login).
  3. Valor: Neste campo deverá ser informado o valor da sangria ou suprimento a ser realizado. A informação é obrigatória e somente serão aceitos valores maiores que zero.
  4. Usuário: Neste campo deverá ser informado o usuário/operador do caixa cujo movimento de sangria ou suprimento será realizado. Serão listados somente usuários que são operadores de caixa e que possuem caixa aberto. Assim que um usuário/operador for selecionado o sistema deverá marcar automaticamente os mesmos turnos marcados na abertura do caixa do mesmo.
  5. Motivo: Neste campo deverá ser esclarecido um motivo para sangria ou suprimento a ser realizado. Esta informação é obrigatória.
  6. Turno: Assim que um usuário válido for informado estes dados serão automaticamente preenchidos. Por padrão este campo ficará sempre desabilitado, ou seja, será somente para leitura.
    
    Após os movimentos de sangria e suprimento deverá ser gerado, obrigatoriamente, um recibo. 
    Este recibo deverá seguir o modelo do recibo emitido na abertura de caixa.

[editar] Movimentações

  1. Na sangria deverão ser gerados dois movimentos conforme segue abaixo:
    • Saída na Conta caixa para débito de sangria utilizando o subcaixa do operador.
    • Entrada na Conta caixa para crédito de sangria utilizando o subcaixa do tesoureiro.
  2. No suprimento também deverão ser gerados dois movimentos conforme descrito abaixo:
    • Saída na Conta caixa para débito de suprimento utilizando o subcaixa do tesoureiro.
    • Entrada na Conta caixa para crédito de suprimento utilizando o subcaixa do operador.
   
    As contas de débito e crédito de suprimento e sangria assim como o subcaixa do tesoureiro são definidos nos parâmetros da rotina em questão.
    
    O histórico das movimentações de crédito e débito de suprimento deverá conter o usuário/caixa que foi movimentado, o usuário (tesoureiro) que realizou a movimentação, valor e data/hora.
    
    Se for informado um valor de sangria maior que o valor em dinheiro existente no caixa do operador naquele momento uma mensagem de confirmação deverá ser exibida antes de realizar 
    o movimento.

[editar] RN02 - Descrição dos campos e funcionalidades da rotina de fechamento na aba Conferência cega

  1. Usuário: Neste campo deverá ser informado um usuário cujo caixa será fechado. Somente serão listados neste campo usuários que são operadores de caixa, que possuem acesso à filial logada e que possuem caixa aberto. Uma vez que o usuário for informado o sistema preencherá automaticamente a data de abertura e os turnos conforme informado na abertura do caixa. A informação deste dado é obrigatória.
  2. Data de abertura: Campo somente para leitura. Será automaticamente preenchido após o usuário ser informado.
  3. Turno: Idem data de abertura.
  4. Formas de pagamento: Nestes campos o usuário/caixa deverá informar, em cada forma de pagamento, o valor correspondente às vendas do dia. Estes dados deverão ser digitados através de conferência cega, ou seja, o usuário deverá primeiro informar os valores para depois confrontar com o que o sistema calcular. À medida que os valores forem informados estes serão totalizados no campo Total à direita. As formas de pagamento serão basicamente as mesmas utilizadas no PDV conforme segue abaixo:
    • Dinheiro
    • Cartão
    • Cheque
    • Cheque pré-datado
    • Contas a receber
    • Crédito aproveitado
    • Convênio
    • Depósito
    • Financiamento
    • Troca
    • Sangria (não consta no PDV)
    • Suprimento (não consta no PDV)
  5. Botão [Fechamento]: Quando este botão for acionado será exibida a aba Fechamento.
    
    É importante ressaltar que para sangrias e suprimentos do caixa o usuário deverá manter os recibos gerados para conferência.
    
    Créditos gerados não serão considerados no fechamento de caixa.

[editar] RN03 - Descrição dos campos e funcionalidades da rotina de fechamento na aba Fechamento

Apuração do fechamento: Nesta seção serão confrontados os valores informados na aba de conferência cega com os valores calculados pelo sistema onde:

  1. CALCULADO: Para o usuário/caixa em questão serão consideradas e discriminadas em cada forma de pagamento todas as vendas realizadas desde a abertura de seu caixa. Serão contabilizados também, desde a abertura do caixa, movimentos de sangria, suprimento de caixa, entradas/saídas avulsas (rotina de movimento de caixa) e liquidações realizadas por este usuário/operador. Sangrias, suprimentos, movimentos de caixa avultos e liquidações serão discriminadas em um grid logo à direita com os seguintes detalhes:
    • MOVIMENTO: Indica se foi sangria, suprimento, movimento de caixa avulso ou liquidação.
    • VALOR: Valor do movimento.
    • DATA/HORA: Data e hora em que o movimento foi realizado.
    • MOTIVO: No caso da sangria ou suprimento será exibida a justificativa para tal movimento quando o mesmo foi realizado. Já no caso da liquidação deverá ser exibido: Referente à liquidação do título XXXXX para o cliente XXXXX - XXXXXXXXXXXXXX, onde X corresponde respectivamente ao código do documento liquidado, código e nome do cliente. Para movimentos de caixa avulsos será exibido Referente ao movimento avulso de XXXX de caixa realizado pelo usuário YYY no dia ZZ/ZZ/ZZZZ. Histórico: WWWWW, onde X corresponde ao tipo de movimento (entrada ou saída), Y corresponde ao usuário que fez o movimento de caixa avulso, Z corresponde à data do movimento e W corresponde a seu histórico.
  2. INFORMADO: Os valores informados em cada forma de pagamento na aba de conferência cega serão listados nesta coluna.
  3. DIFERENÇA: Exibirá o valor da diferença entre o valor calculado subtraído pelo informado, seja ele positivo ou negativo. Quando a diferença for negativa o campo deverá assumir a cor de fundo vermelha.
  4. Observações: Neste campo poderão ser inseridas algumas observações em relação ao fechamento de caixa. As observações são livres para o usuário digitar o que desejar.
  5. Total calculado: Exibirá o total geral que o sistema calculou para vendas, liquidações, sangrias e suprimentos realizados no caixa do usuário em questão.
  6. Total informado: Exibirá o total geral que o usuário/caixa informou para vendas, sangrias e suprimentos.
  7. Saldo final: Exibirá a diferença da subtração de total calculado e total informado. O ideal é que o saldo final fique zerado, indicando que o fechamento do caixa bateu perfeitamente com o que o sistema calculou.
    
    Caso o saldo final fique negativo, o campo em questão assumirá a cor de fundo vermelha.

Após realizar o fechamento de um caixa o sistema deverá imprimir os dados do mesmo, ou seja, todos os dados existentes na aba Fechamento. Na impressão deverá constar local para assinatura do operador e também do responsável pelo fechamento do caixa.

[editar] Movimentações

No fechamento de um caixa serão geradas no sistema os seguintes movimentos:

  1. Com o valor total do caixa a ser fechado (total calculado), será gerado um movimento de saída utilizando o subcaixa do operador na conta caixa de fechamento definida nos parâmetros da rotina em questão. O movimento de saída deverá ser equivalente ao movimento de entrada gerado nas contas caixa/formas de pagamento configuradas no PDV, exemplo: Considerando que no PDV apenas as formas de pagamento dinheiro e cartão estão configurados para gerar caixa, um determinado operador vende 15.000,00 (total calculado) sendo 10.000,00 em dinheiro, 2.500,00 em cartão e 2.500,00 em contas a receber. Ao gerar o movimento de saída referente ao fechamento deste caixa o sistema considerará apenas 12.500,00, uma vez que estas são as formas de pagamento configuradas para gerar caixa na venda.
    • Sangria/Suprimento: Sangrias e suprimentos devem ser considerados como dinheiro, ou seja, todos os suprimentos feitos em um determinado caixa deverão ser somados e todas as sangrias deverão ser subtraídas. Tanto a soma quanto a subtração de sangrias e suprimentos deverão considerar a forma de pagamento dinheiro e sua respectiva conta caixa.
    • Crédito gerado: Este não será considerado, nem na venda e nem no fechamento.
    • Crédito aproveitado: No fechamento do caixa ao gerar o movimento de saída na conta caixa de fechamento o total de crédito aproveitado deverá ser utilizado para zerar o subcaixa do operador (caso tenha gerado crédito na venda), porém ao gerar a entrada com o subcaixa do tesoureiro este não será considerado uma vez que não é dinheiro.
    • Trocas: A exemplo do crédito aproveitado, a troca deverá gerar movimento de saída na conta de fechamento com o subcaixa do operador para zerá-lo, mas ao gerar a entrada no subcaixa do tesoureiro o total de troca não será considerado.
    • Movimentos de caixa avulsos: Caso no subcaixa do operador tenham sido realizados movimentos de caixa avulsos, sejam eles de entrada ou de saída, estes serão listados/detalhados no grid e considerados da seguinte forma:
      • Movimento avulso de saída: O total dos movimentos avulsos de saída será subtraído da forma de pagamento dinheiro.
      • Movimento avulso de entrada: O total dos movimentos avulsos de entrada será somado à forma de pagamento dinheiro.
  2. Com o valor de saída gerado no fechamento, deverá ser gerada uma entrada nas mesmas formas de pagamento/contas caixa configuradas para gerar caixa na venda (PDV) utilizando o subcaixa do tesoureiro.
  3. Caso no fechamento tenha ocorrido quebra de caixa, está será tratada da seguinte maneira:
    • Se o valor informado para fechamento do caixa foi maior que o calculado, o sistema lançará a diferença entre o valor calculado e o informado na conta caixa para quebra de caixa positiva definida nos parâmetros da rotina em questão utilizando o subcaixa do tesoureiro.
    • Se o valor informado para fechamento do caixa foi menor que o calculado, o sistema lançará a diferença entre o valor calculado e o informado na conta caixa para quebra de caixa negativa definida nos parâmetros da rotina em questão utilizando o subcaixa do tesoureiro.
    
    Em todas as movimentações de caixa deverão constar o seguinte histórico: Movimento referente ao fechamento de caixa do usuário ZZZZZZZ no dia XX/XX/XXXX às YY:YY horas. 
    Onde X, Y e Z correspondem respectivamente ao dia, hora  e usuário/operador do fechamento do caixa.

[editar] RN04 - Descrição das funcionalidades da rotina Parâmetros

Visível somente para usuários com acesso total ao sistema, quando este botão for acionado será exibida ao usuário uma tela de configurações onde serão definidos:

  1. Subcaixa da tesouraria: Campo onde deverá ser selecionado um subcaixa no qual serão realizados os movimentos de sangria, suprimento, quebra e fechamento de caixa.
  2. Conta caixa para débito de sangria: Campo onde deverá ser informada uma conta caixa de débito onde serão gerados (com subcaixa do operador) movimentos de saída com os valores das sangrias de caixa realizadas.
  3. Conta caixa para crédito de sangria: Campo onde deverá ser informada uma conta caixa de crédito onde serão gerados (com subcaixa da tesouraria) movimentos de entrada com os valores das sangrias de caixa realizadas.
  4. Conta caixa para débito de suprimento: Campo onde deverá ser informada uma conta caixa de débito onde serão gerados (com subcaixa da tesouraria) movimentos de saída com os valores dos suprimentos de caixa realizados.
  5. Conta caixa para crédito de suprimento: Campo onde deverá ser informada uma conta caixa de crédito onde serão gerados (com subcaixa do operador) movimentos de entrada com os valores dos suprimentos de caixa realizados.
  6. Conta caixa para fechamento: Campo onde o usuário deverá informar uma conta caixa de débito onde serão gerados (com subcaixa de cada operador) movimentos de saída com os valores dos fechamentos de cada caixa.
  7. Conta para quebra de caixa positiva: Campo onde deverá ser informada uma conta caixa de crédito onde serão gerados (com subcaixa da tesouraria) movimentos de entrada com os valores de quebra de caixa positivos.
  8. Conta para quebra de caixa negativa: Campo onde deverá ser informada uma conta caixa de débito onde serão gerados (com subcaixa da tesouraria) movimentos de saída com os valores de quebra de caixa negativos.

[editar] RN05 - Tela inicial (tela de pesquisa)

A tela inicial da rotina deverá dispor dos botões/funcionalidades:

  1. Sangria/Suprimento
  2. Fechamento de caixa
  3. Parâmetros


Logo abaixo deverá ser exibido um grid que listará todas as movimentações realizadas com os seguintes dados:

  1. TIPO MOVIMENTO: Informa se um determinado registro foi gerado a partir de uma sangria, suprimento ou fechamento de caixa.
  2. RESPONSÁVEL: Informa o usuário que realizou o tipo de movimento listado na primeira coluna.
  3. DATA/HORA: Informará a data e hora em que a última movimentação foi realizada.
  4. STATUS CAIXA: Informa se o caixa encontra-se aberto ou fechado.
  5. USUÁRIO/CAIXA: Informa o usuário responsável pelo caixa.
  6. DATA ABERTURA: Informa a data de abertura do caixa.
  7. DATA FECHAMENTO: Se o caixa já foi fechado, informa a data de fechamento do mesmo.
  8. OBSERVAÇÕES: No caso de sangria e suprimento, informa o motivo da movimentação. Para fechamento, informa às observações que foram gravadas no mesmo.


Na última coluna do grid além das opções de alteração, visualização e exclusão, deverão estar disponíveis (somente para Controle de caixa) opções que permitam ao usuário realizar sangria/suprimento ou fechar um determinado caixa. Obviamente, se um caixa já foi fechado à opção de sangria/suprimento não ficará habilitada.

    
    O grid deverá ordenar seus registros de forma decrescente pela data da ultima movimentação.

[editar] RN06 - Regras gerais

  • As telas de sangria/suprimento e de fechamento deverão considerar/exibir somente movimentações de data menor ou igual à data de login do usuário. Desta forma se o usuário logar com data retroativa ele não corre o risco visualizar/alterar movimentações futuras.
  • No momento em que o botão [Fechar caixa] for acionado o sistema deverá:
    1. Verificar se na aba “Conferência cega” um usuário válido foi informado. Caso usuário informado não seja válido uma mensagem com a não conformidade deverá ser exibida e o fechamento deverá ser abortado.
    2. Verificar se foi informado valor maior que zero para pelo menos uma forma de pagamento na aba “Conferência cega”. Se nenhum valor foi informado, uma mensagem com a não conformidade deverá ser exibida e o fechamento será abortado.
    3. Verificar se na aba “Fechamento” o campo “Saldo final” está com o valor zero. Se não estiver, uma mensagem de confirmação deverá ser exibida ao usuário informando que os valores calculado e informado não bateram e perguntando se ele deseja realmente fechar o caixa.


No fechamento, se um usuário válido que possui seu caixa em aberto foi informado, o sistema procederá conforme segue abaixo:

  1. Será verificado se na aba Conferência cega pelo menos uma forma de pagamento possui valor informado. Caso contrário o fechamento será abortado e uma mensagem com a não conformidade será exibida ao usuário.
  2. Será verificado se o saldo final do fechamento é igual a zero. Se sim, o caixa será fechado normalmente. Caso não seja, o sistema irá alertar o usuário da diferença e perguntar se deseja realmente fechar o caixa com a diferença.
    
    Se o total calculado for igual a 0,00 o caixa não poderá ser fechado.

[editar] Layout sugerido

Ferramentas pessoais
Espaços nominais

Variantes
Visualizações
Ações
Navegação
Ferramentas