O Cashier representa um caixa do PDV, controlando abertura, fechamento, sangrias e suprimentos.
Descricao
O caixa e o ponto de operacao do PDV. Ele controla o saldo em dinheiro, registra movimentacoes e permite o fechamento com conferencia de valores.
Dados
| Campo | Tipo | Obrigatorio | Descricao |
|---|
| name | Texto | Sim | Nome do caixa (ex: "Caixa 1") |
| status | Selecao | Sim | "open" ou "closed" |
| opening_value | Monetario | Sim | Valor de abertura |
| opening_date_time | DataHora | Auto | Data/hora da abertura |
| closing_date_time | DataHora | Auto | Data/hora do fechamento |
Valores Calculados
| Campo | Tipo | Descricao |
|---|
| current_balance | Monetario | Saldo atual em dinheiro |
| expected_balance | Monetario | Saldo esperado (calculado) |
| total_sales | Monetario | Total de vendas no periodo |
| total_withdrawals | Monetario | Total de sangrias |
| total_deposits | Monetario | Total de suprimentos |
Relacionamentos
Pertence a
| Entidade | Obrigatorio | Descricao |
|---|
| Account | Sim | Conta do petshop |
| Store | Sim | Filial |
| User | Sim | Operador responsavel |
Possui
| Entidade | Descricao |
|---|
| CashierTransactions | Movimentacoes do caixa |
| CashierBalances | Fechamentos realizados |
| CashierDivergences | Divergencias encontradas |
Ciclo de Vida
Estados
| Status | Descricao | Operacoes Permitidas |
|---|
| closed | Caixa fechado | Abrir |
| open | Caixa em operacao | Vender, sangria, suprimento, fechar |
Abertura de Caixa
Processo
- Informar valor de abertura (fundo de caixa)
- Sistema registra data/hora
- Status muda para "open"
- Cria CashierTransaction tipo "opening"
Validacoes
- Caixa deve estar fechado
- Valor de abertura deve ser >= 0
- Usuario deve ter permissao
Fechamento de Caixa
Processo
- Usuario informa valor contado
- Sistema calcula valor esperado
- Compara e registra divergencia (se houver)
- Cria CashierBalance com resumo
- Status muda para "closed"
Calculo do Saldo Esperado
saldo_esperado = abertura
+ vendas_dinheiro
+ suprimentos
- sangrias
Tratamento de Divergencia
| Situacao | Acao |
|---|
| Contado > Esperado | Registra sobra |
| Contado < Esperado | Registra falta |
| Contado = Esperado | Sem divergencia |
Sangria
Descricao
Retirada de dinheiro do caixa durante o expediente.
Dados
| Campo | Tipo | Obrigatorio |
|---|
| value | Monetario | Sim |
| reason | Texto | Sim |
| date_time | DataHora | Auto |
Validacoes
- Caixa deve estar aberto
- Valor deve ser > 0
- Valor nao pode exceder saldo atual
Efeito
- Diminui
current_balance
- Cria CashierTransaction tipo "withdrawal"
Suprimento
Descricao
Adicao de dinheiro ao caixa durante o expediente.
Dados
| Campo | Tipo | Obrigatorio |
|---|
| value | Monetario | Sim |
| reason | Texto | Sim |
| date_time | DataHora | Auto |
Validacoes
- Caixa deve estar aberto
- Valor deve ser > 0
Efeito
- Aumenta
current_balance
- Cria CashierTransaction tipo "deposit"
CashierTransaction (Movimentacao)
Tipos
| Tipo | Descricao | Efeito no Saldo |
|---|
| opening | Abertura | + valor |
| sale | Venda em dinheiro | + valor |
| withdrawal | Sangria | - valor |
| deposit | Suprimento | + valor |
| closing | Fechamento | Zera |
Dados
| Campo | Tipo | Descricao |
|---|
| type | Selecao | Tipo da movimentacao |
| value | Monetario | Valor movimentado |
| date_time | DataHora | Data/hora da operacao |
| description | Texto | Descricao/motivo |
| user_id | Referencia | Operador |
CashierBalance (Fechamento)
Descricao
Registro do fechamento do caixa com resumo de valores.
Dados
| Campo | Tipo | Descricao |
|---|
| opening_value | Monetario | Valor de abertura |
| sales_value | Monetario | Total de vendas |
| withdrawals_value | Monetario | Total de sangrias |
| deposits_value | Monetario | Total de suprimentos |
| expected_value | Monetario | Saldo esperado |
| counted_value | Monetario | Saldo contado |
| divergence_value | Monetario | Diferenca |
| opening_date_time | DataHora | Abertura |
| closing_date_time | DataHora | Fechamento |
Resumo por Metodo
O fechamento tambem inclui totais por metodo de pagamento:
| Metodo | Total |
|---|
| Dinheiro | R$ X |
| Debito | R$ Y |
| Credito | R$ Z |
| PIX | R$ W |
CashierDivergence (Divergencia)
Descricao
Registro de diferenca entre valor esperado e contado.
Dados
| Campo | Tipo | Descricao |
|---|
| type | Selecao | "surplus" (sobra) ou "shortage" (falta) |
| value | Monetario | Valor da divergencia |
| status | Selecao | "pending" ou "solved" |
| resolution | Texto | Descricao da resolucao |
Estados
| Status | Descricao |
|---|
| pending | Aguardando resolucao |
| solved | Divergencia resolvida/justificada |
Registro de Venda em Dinheiro
Quando venda e paga em dinheiro:
- Cria CashierTransaction tipo "sale"
- Valor = pagamento em dinheiro
- Aumenta current_balance
Troco
Troco e calculado no Checkout, nao afeta o caixa diretamente (valor registrado e o recebido, nao o troco).
Relatorios
Movimentacoes do Periodo
Lista todas as transacoes entre abertura e fechamento:
- Tipo, valor, data/hora
- Vendas associadas (se aplicavel)
- Usuario responsavel
Resumo de Fechamento
Exibe:
- Periodo (abertura a fechamento)
- Totais por tipo de movimentacao
- Totais por metodo de pagamento
- Divergencia (se houver)
Permissoes
| Acao | Perfis Tipicos |
|---|
| Abrir caixa | Operador, Gerente |
| Fechar caixa | Operador, Gerente |
| Fazer sangria | Gerente |
| Fazer suprimento | Gerente |
| Ver relatorios | Gerente, Admin |
| Resolver divergencia | Gerente, Admin |
Validacoes de Operacao
Venda
- Para registrar venda, caixa do usuario deve estar aberto
- Se nao ha caixa aberto, sistema solicita abertura
Multiplos Caixas
- Cada usuario pode ter apenas um caixa aberto por vez
- Filial pode ter multiplos caixas abertos (usuarios diferentes)