Credito e Cashback
O sistema de Credito e Cashback permite que clientes tenham saldos disponiveis para uso em compras futuras.
Visao Geral
| Tipo | Descricao | Origem |
|---|---|---|
| Credito | Valor pre-pago pelo cliente | Deposito antecipado, devolucao |
| Cashback | Valor devolvido ao cliente | Bonificacao por compras |
Ambos funcionam como "carteira digital" do cliente dentro do petshop.
Credito do Cliente
O que e Credito
Credito e um valor que o cliente tem disponivel para usar em compras. Funciona como um pre-pagamento ou conta corrente do cliente no petshop.
Origens de Credito
| Origem | Descricao |
|---|---|
| Deposito | Cliente deposita valor antecipadamente |
| Devolucao | Valor de troca/devolucao de produto |
| Estorno | Cancelamento de compra paga |
| Bonificacao | Premio ou compensacao |
Transacoes de Credito
Cada movimentacao gera uma CreditTransaction:
| Campo | Tipo | Descricao |
|---|---|---|
| value | Monetario | Valor da transacao (sempre positivo) |
| signal | Selecao | "credit" (entrada) ou "debit" (saida) |
| signal_value | Monetario | Valor com sinal (+ ou -) |
| description | Texto | Descricao da transacao |
| created_at | Data/Hora | Momento da transacao |
Saldo de Credito
O campo credit_value do cliente e calculado:
credit_value = SOMA(signal_value de todas as credit_transactions)
Onde:
- signal = "credit" → signal_value positivo
- signal = "debit" → signal_value negativo
Fluxo de Credito
Cashback
O que e Cashback
Cashback e um valor devolvido ao cliente como recompensa por compras. Incentiva a fidelidade e retorno do cliente.
Como Funciona
- Cliente realiza compra
- Sistema calcula cashback (% do valor ou regra customizada)
- Cashback e creditado apos confirmacao do pagamento
- Cliente pode usar em compras futuras
Transacoes de Cashback
Cada movimentacao gera uma CashbackTransaction:
| Campo | Tipo | Descricao |
|---|---|---|
| value | Monetario | Valor da transacao |
| signal | Selecao | "credit" (ganhou) ou "debit" (usou) |
| signal_value | Monetario | Valor com sinal |
| description | Texto | Descricao |
| sale_id | Referencia | Venda que gerou o cashback |
Saldo de Cashback
O campo cashback_value do cliente e calculado:
cashback_value = SOMA(signal_value de todas as cashback_transactions)
Fluxo de Cashback
Uso no Checkout
Aplicacao de Credito/Cashback
No checkout de uma venda:
- Sistema mostra saldo disponivel (credito + cashback)
- Operador seleciona valor a usar
- Sistema cria transacoes de debito
- Valor e abatido do total da venda
Validacoes
| Regra | Descricao |
|---|---|
| Saldo suficiente | Nao pode usar mais do que tem |
| Valor positivo | Valor a usar deve ser > 0 |
| Venda aberta | So pode usar em vendas nao finalizadas |
Visualizacao no Perfil
Exibicao dos Saldos
No perfil do cliente sao exibidos:
| Campo | Cor | Descricao |
|---|---|---|
| credit_value | Verde | Saldo de credito disponivel |
| cashback_value | Azul | Saldo de cashback disponivel |
| pending_value | Vermelho | Valores pendentes de pagamento |
Historico de Transacoes
Clicando nos saldos, o usuario pode ver:
- Lista de todas as transacoes
- Data e hora de cada movimentacao
- Descricao e origem
- Vendas relacionadas (se aplicavel)
Permissoes
Credito
| Acao | Permissao |
|---|---|
| Ver saldo | credit_transaction.view_all/view_own |
| Emitir credito | credit_transaction.create |
| Usar credito | credit_transaction.use |
| Editar | credit_transaction.edit_all/edit_own |
Cashback
| Acao | Permissao |
|---|---|
| Ver saldo | cashback_transaction.view_all/view_own |
| Emitir cashback | cashback_transaction.create |
| Usar cashback | cashback_transaction.use |
| Editar | cashback_transaction.edit_all/edit_own |
Regras de Negocio
Credito
- Saldo nunca negativo: Sistema impede uso acima do saldo
- Transacoes imutaveis: Nao se edita, cria-se nova transacao
- Rastreabilidade: Toda transacao tem origem identificavel
- Multi-uso: Pode ser usado parcialmente em varias compras
Cashback
- Vinculo com venda: Cashback gerado sempre tem sale_id
- Calculo configuravel: Regras definidas por Account
- Nao expira: Cashback nao tem validade
- Cumulativo: Valores se acumulam indefinidamente
Configuracao de Cashback
Regras de Calculo
O cashback pode ser configurado por:
| Criterio | Exemplo |
|---|---|
| Percentual fixo | 2% de todas as compras |
| Por categoria | 5% em racao, 3% em acessorios |
| Por valor minimo | Cashback so acima de R$ 100 |
| Por tipo de cliente | VIP ganha mais cashback |
Momento do Credito
| Opcao | Descricao |
|---|---|
| Imediato | Ao finalizar a venda |
| Apos pagamento | Quando pagamento e confirmado |
| Apos carencia | X dias apos a compra |
Atualizacao de Saldos
Metodos de Calculo
| Metodo | Comportamento |
|---|---|
| set_credit_value | Calcula e armazena em memoria |
| set_credit_value! | Calcula e persiste no banco |
| set_cashback_value! | Calcula e persiste no banco |
Quando Atualizar
Os saldos sao recalculados:
- Ao criar transacao
- Ao acessar perfil do cliente
- Em jobs de reconciliacao
- Ao gerar relatorios
Integracao com Outros Modulos
PDV
- Uso como forma de pagamento
- Geracao de cashback em vendas
- Debito automatico no checkout
Financial
- Transacoes refletem no fluxo de caixa
- Credito e um passivo (divida com cliente)
- Cashback e uma despesa de marketing
Restricoes
- Saldo nao negativo: Nunca pode ficar abaixo de zero
- Unico por Account: Saldo e por cliente por Account
- Nao transferivel: Saldo nao pode ser transferido entre clientes
- Nao monetizavel: Nao pode ser convertido em dinheiro (saque)
- Vinculo obrigatorio: Transacoes sempre vinculadas ao cliente