erp-retail/orchestration/directivas/DIRECTIVA-INVENTARIO-SUCURSALES.md

4.2 KiB

DIRECTIVA-INVENTARIO-SUCURSALES

Version: 1.0 Fecha: 2025-12-08 Vertical: Retail / POS Nivel: 2B.2


PROPOSITO

Define las directrices para la gestion de inventario multi-sucursal en retail.


ALCANCE

  • Control de stock por sucursal
  • Transferencias entre sucursales
  • Reabastecimiento centralizado
  • Conteos ciclicos

PRINCIPIOS

1. Visibilidad en Tiempo Real

  • Stock actualizado inmediatamente con cada venta
  • Dashboard centralizado de todas las sucursales
  • Alertas de stock bajo automaticas

2. Control Centralizado

  • Politicas de inventario desde central
  • Transferencias autorizadas
  • Precios unificados

3. Autonomia Operativa

  • Cada sucursal opera independiente
  • Conteos locales permitidos
  • Ajustes menores autorizados

MODELO DE DATOS

branches (sucursales)

campos:
  - id: uuid
  - code: string (ej: SUC001)
  - name: string
  - address: text
  - manager_id: FK -> auth.users
  - location_id: FK -> inventory.locations
  - status: enum(active, inactive)
  - is_warehouse: boolean

branch_stock

campos:
  - id: uuid
  - branch_id: FK -> branches
  - product_id: FK -> retail.products
  - quantity_available: decimal
  - quantity_reserved: decimal
  - minimum_stock: decimal
  - reorder_point: decimal
  - last_count_date: date

stock_transfers

campos:
  - id: uuid
  - transfer_number: string
  - origin_branch_id: FK -> branches
  - destination_branch_id: FK -> branches
  - status: enum(draft, requested, approved, in_transit, received, cancelled)
  - requested_by: FK -> auth.users
  - approved_by: FK -> auth.users
  - requested_at: timestamp
  - shipped_at: timestamp
  - received_at: timestamp

FLUJO DE TRANSFERENCIA

1. Sucursal A solicita productos
   |
2. Central aprueba transferencia
   |
3. Almacen prepara envio
   |
4. Registro de salida (origen)
   |
5. Transito
   |
6. Sucursal B recibe productos
   |
7. Registro de entrada (destino)

Estados de Transferencia

draft --> requested --> approved --> in_transit --> received
              |             |             |
              v             v             v
          cancelled     rejected       lost

REABASTECIMIENTO

Tipos de Reabastecimiento

Tipo Trigger Proceso
Automatico Stock < reorder_point Sistema genera solicitud
Manual Solicitud de sucursal Manager aprueba
Push Decision central Central envia sin solicitud

Algoritmo de Reabastecimiento

# Pseudocodigo
for product in products_below_reorder:
    needed = max_stock - current_stock
    available_in_warehouse = get_warehouse_stock(product)

    if available_in_warehouse >= needed:
        create_transfer(warehouse, branch, product, needed)
    else:
        create_purchase_order(product, needed - available_in_warehouse)
        create_transfer(warehouse, branch, product, available_in_warehouse)

CONTEOS CICLICOS

Frecuencia por Clasificacion ABC

Clasificacion Frecuencia Productos
A Semanal Alta rotacion/valor
B Quincenal Rotacion media
C Mensual Baja rotacion

Proceso de Conteo

1. Sistema genera lista de conteo
   |
2. Encargado realiza conteo fisico
   |
3. Registra cantidades en sistema
   |
4. Sistema calcula diferencias
   |
5. Aprobacion de ajustes
   |
6. Actualizacion de stock

INTEGRACION CON CORE

Herencia de Specs

Spec Core Aplicacion
SPEC-INVENTARIOS-CICLICOS Conteos por sucursal
SPEC-VALORACION-INVENTARIO Costeo centralizado
SPEC-TRAZABILIDAD-LOTES-SERIES Caducidades

Mapeo con Core

  • branches extiende inventory.locations
  • branch_stock extiende inventory.quants
  • stock_transfers usa inventory.stock_moves

REPORTES

Reporte Frecuencia Destinatario
Stock por sucursal Diario Managers
Movimientos Semanal Central
Diferencias Por conteo Auditoria
Rotacion Mensual Compras

REFERENCIAS

  • SPEC-INVENTARIOS-CICLICOS.md (core)
  • SPEC-VALORACION-INVENTARIO.md (core)
  • DIRECTIVA-PUNTO-VENTA.md

Documento de directiva oficial