StockConversion (Conversao de Estoque)
O StockConversion representa a transformacao de um produto em outro, como fracionar embalagens ou montar kits.
Descricao
A conversao de estoque permite transformar produtos, como abrir um pacote de racao de 15kg em 3 pacotes de 5kg, ou montar um kit de higiene a partir de produtos individuais.
Dados
Informacoes da Conversao
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| reference | Texto | Auto | Codigo de referencia |
| type | Selecao | Sim | Tipo de conversao |
| status | Selecao | Sim | Status |
| date | Data | Sim | Data da conversao |
| notes | Texto | Nao | Observacoes |
Tipos de Conversao
| Tipo | Descricao | Exemplo |
|---|---|---|
| fractioning | Fracionamento | 1 pacote 15kg -> 3 de 5kg |
| grouping | Agrupamento | 3 de 5kg -> 1 de 15kg |
| kit_assembly | Montagem de kit | Produtos -> Kit |
| kit_disassembly | Desmontagem de kit | Kit -> Produtos |
| transformation | Transformacao | Materia-prima -> Produto final |
Status
| Status | Descricao |
|---|---|
| draft | Rascunho |
| pending | Aguardando execucao |
| done | Executada |
| canceled | Cancelada |
Relacionamentos
Pertence a
| Entidade | Obrigatorio | Descricao |
|---|---|---|
| Account | Sim | Conta do petshop |
| Store | Sim | Filial |
| Deposit | Nao | Deposito |
| User | Sim | Usuario responsavel |
Possui
| Entidade | Descricao |
|---|---|
| ConversionInputs | Produtos de entrada |
| ConversionOutputs | Produtos de saida |
ConversionInput (Entrada)
Dados
| Campo | Tipo | Descricao |
|---|---|---|
| sale_product_id | Referencia | Produto consumido |
| quantity | Decimal | Quantidade consumida |
| unit_cost | Monetario | Custo unitario |
| total_cost | Monetario | Custo total |
ConversionOutput (Saida)
Dados
| Campo | Tipo | Descricao |
|---|---|---|
| sale_product_id | Referencia | Produto gerado |
| quantity | Decimal | Quantidade gerada |
| unit_cost | Monetario | Custo unitario calculado |
| total_cost | Monetario | Custo total |
Fluxo de Conversao
Calculo de Custos
Custo Total de Entrada
custo_entrada = soma(quantidade * custo_unitario) de cada entrada
Rateio para Saidas
O custo de entrada e distribuido entre as saidas:
Por Quantidade
custo_saida = custo_entrada * (qtd_saida / qtd_total_saidas)
Por Valor
Se saidas tem precos diferentes, ratear proporcionalmente ao valor:
custo_saida = custo_entrada * (valor_saida / valor_total_saidas)
Exemplo - Fracionamento
Entrada:
1x Racao Premium 15kg @ R$ 150,00 = R$ 150,00
Saidas (por quantidade):
3x Racao Premium 5kg
Custo cada: R$ 150 / 3 = R$ 50,00
Exemplo - Kit
Entradas:
1x Shampoo @ R$ 20,00
1x Condicionador @ R$ 15,00
1x Escova @ R$ 10,00
Total: R$ 45,00
Saida:
1x Kit Banho
Custo: R$ 45,00
Tipos de Conversao
Fracionamento
Divide um produto em unidades menores:
| Entrada | Saida |
|---|---|
| 1x Produto G | Nx Produto P |
Regras:
- Produto de saida deve ter mesma categoria
- Quantidade de saida deve ser multipla
- Custo e dividido proporcionalmente
Agrupamento
Combina unidades menores em uma maior:
| Entrada | Saida |
|---|---|
| Nx Produto P | 1x Produto G |
Regras:
- Produto de saida deve ter mesma categoria
- Custo e somado
Montagem de Kit
Combina produtos diferentes em um kit:
| Entrada | Saida |
|---|---|
| Produto A | 1x Kit |
| Produto B | |
| Produto C |
Regras:
- Kit deve estar cadastrado como produto
- Custo do kit = soma dos componentes
- Pode ter margem adicional
Desmontagem de Kit
Separa kit em componentes:
| Entrada | Saida |
|---|---|
| 1x Kit | Produto A |
| Produto B | |
| Produto C |
Movimentacoes Geradas
Ao Executar
Para cada entrada:
StockTransaction tipo "exit" (conversao)
Para cada saida:
StockTransaction tipo "entry" (conversao)
Referencia Cruzada
Todas as transacoes ficam vinculadas a conversao para rastreabilidade.
Validacoes
| Campo | Regra |
|---|---|
| type | Obrigatorio |
| inputs | Minimo 1 entrada |
| outputs | Minimo 1 saida |
| estoque | Entrada deve ter estoque suficiente |
Validacoes de Custo
| Regra | Descricao |
|---|---|
| Entrada = Saida | Custo total entrada deve igualar custo total saida |
| Tolerancia | Diferenca maxima de R$ 0,01 (arredondamento) |
Regras de Negocio
Estoque Minimo
Nao permite conversao se:
- Estoque de entrada for insuficiente
- Conversao deixaria estoque negativo
Lotes
Se produto tem controle de lote:
- Deve especificar lote de entrada
- Pode definir lote de saida
Reversao
Conversoes executadas podem ser revertidas:
- Cria conversao inversa
- Restaura estoques originais
- Registra referencia a conversao original
Templates de Conversao
ConversionTemplate
Para conversoes frequentes, pode-se criar templates:
| Campo | Descricao |
|---|---|
| name | Nome do template |
| type | Tipo de conversao |
| inputs | Produtos e quantidades de entrada |
| outputs | Produtos e quantidades de saida |
Exemplo
Template: Fracionar Racao Premium
Tipo: Fracionamento
Entrada: 1x Racao Premium 15kg
Saidas: 3x Racao Premium 5kg
Permissoes
| Acao | Descricao |
|---|---|
| Criar | Criar conversao |
| Editar | Alterar rascunho |
| Executar | Executar conversao |
| Reverter | Reverter conversao |
| Cancelar | Cancelar conversao |