workspace-v1/shared/knowledge-base/reference/odoo/docs/03-modelado-datos/MODELO-stock.md
rckrdmrd cb4c0681d3 feat(workspace): Add new projects and update architecture
New projects created:
- michangarrito (marketplace mobile)
- template-saas (SaaS template)
- clinica-dental (dental ERP)
- clinica-veterinaria (veterinary ERP)

Architecture updates:
- Move catalog from core/ to shared/
- Add MCP servers structure and templates
- Add git management scripts
- Update SUBREPOSITORIOS.md with 15 new repos
- Update .gitignore for new projects

Repository infrastructure:
- 4 main repositories
- 11 subrepositorios
- Gitea remotes configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:43:28 -06:00

15 KiB

Modelo de Datos: Stock

Modulo: stock Total Modelos: 30+ Modelos Documentados: 8 (principales)


1. Indice de Modelos Principales

Modelo Descripcion Campos Archivo
stock.move Movimientos 40+ stock_move.py
stock.move.line Lineas operacion 25+ stock_move_line.py
stock.picking Albaranes 35+ stock_picking.py
stock.location Ubicaciones 20+ stock_location.py
stock.warehouse Almacenes 30+ stock_warehouse.py
stock.quant Cantidades 20+ stock_quant.py
stock.rule Reglas procura 15+ stock_rule.py
stock.lot Lotes/SN 10+ stock_lot.py

2. Detalle por Modelo

2.1 stock.move (Movimientos)

Archivo: models/stock_move.py Descripcion: Stock Move Hereda de: - (modelo independiente)

Estado (state)

Estado Descripcion
draft Nuevo
waiting Esperando otro movimiento
confirmed Esperando disponibilidad
partially_available Parcialmente disponible
assigned Disponible/Reservado
done Completado
cancel Cancelado

Campos Principales

Campo Tipo Req Descripcion
sequence Integer No Secuencia (default=10)
state Selection Si Estado del movimiento
date Datetime Si Fecha programada
product_id Many2one Si Producto
product_qty Float No Cantidad real (computed)
product_uom_qty Float Si Cantidad demandada
product_uom Many2one Si Unidad de medida
location_id Many2one Si Ubicacion origen
location_dest_id Many2one Si Ubicacion destino
picking_id Many2one No Albaran asociado
company_id Many2one Si Empresa
partner_id Many2one No Direccion destino

Campos de Cadena

Campo Tipo Descripcion
move_orig_ids Many2many Movimientos origen (cadena)
move_dest_ids Many2many Movimientos destino (cadena)
rule_id Many2one Regla que lo creo
picking_type_id Many2one Tipo de operacion
route_ids Many2many Rutas preferidas
move_line_ids One2many Lineas de operacion

2.2 stock.move.line (Lineas de Operacion)

Archivo: models/stock_move_line.py Descripcion: Product Moves (Detailed Operations)

Campos Principales

Campo Tipo Req Descripcion
move_id Many2one No Movimiento padre
picking_id Many2one No Albaran
product_id Many2one Si Producto
product_uom_id Many2one Si Unidad de medida
quantity Float Si Cantidad hecha
quantity_product_uom Float No Cantidad en UoM producto
lot_id Many2one No Lote/Numero de serie
lot_name Char No Nombre del lote
package_id Many2one No Paquete origen
result_package_id Many2one No Paquete destino
owner_id Many2one No Propietario
location_id Many2one Si Ubicacion origen
location_dest_id Many2one Si Ubicacion destino
state Selection No Estado (related)

2.3 stock.picking (Albaranes/Transferencias)

Archivo: models/stock_picking.py Descripcion: Transfer Hereda de: mail.thread, mail.activity.mixin

Estado (state)

Estado Descripcion
draft Borrador
waiting Esperando otra operacion
confirmed Esperando disponibilidad
assigned Listo
done Completado
cancel Cancelado

Campos Principales

Campo Tipo Req Descripcion
name Char No Referencia (secuencial)
state Selection No Estado (computed)
picking_type_id Many2one Si Tipo de operacion
picking_type_code Selection No Codigo tipo (related)
move_type Selection Si Politica envio
location_id Many2one Si Ubicacion origen
location_dest_id Many2one Si Ubicacion destino
move_ids One2many No Movimientos
move_line_ids One2many No Lineas detalladas
partner_id Many2one No Contacto
company_id Many2one No Empresa (related)

Campos de Fecha

Campo Tipo Descripcion
scheduled_date Datetime Fecha programada (computed)
date_deadline Datetime Fecha limite
date_done Datetime Fecha de ejecucion

Campos Adicionales

Campo Tipo Descripcion
priority Selection Prioridad (0=Normal, 1=Urgente)
user_id Many2one Responsable
owner_id Many2one Propietario asignado
is_locked Boolean Bloqueado (default=True)
backorder_id Many2one Albaran original (backorder)
signature Image Firma
printed Boolean Impreso

2.4 stock.location (Ubicaciones)

Archivo: models/stock_location.py Descripcion: Inventory Locations Estructura: Jerarquica (_parent_store)

Tipos de Ubicacion (usage)

Tipo Descripcion Virtual
supplier Proveedores Si
view Virtual/Jerarquica Si
internal Interna fisica No
customer Clientes Si
inventory Ajustes inventario Si
production Produccion Si
transit Transito Si

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre
complete_name Char No Nombre completo (computed)
usage Selection Si Tipo de ubicacion
location_id Many2one No Ubicacion padre
child_ids One2many No Ubicaciones hijas
parent_path Char No Ruta de padres (indexed)
company_id Many2one No Empresa
barcode Char No Codigo de barras
active Boolean No Activo

Campos de Configuracion

Campo Tipo Descripcion
replenish_location Boolean Trigger reposicion
removal_strategy_id Many2one Estrategia extraccion
putaway_rule_ids One2many Reglas ubicacion
storage_category_id Many2one Categoria almacenamiento
cyclic_inventory_frequency Integer Frecuencia inventario (dias)

2.5 stock.warehouse (Almacenes)

Archivo: models/stock_warehouse.py Descripcion: Warehouse

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre
code Char Si Codigo corto (5 chars)
company_id Many2one Si Empresa
partner_id Many2one No Direccion
active Boolean No Activo
sequence Integer No Secuencia

Ubicaciones del Almacen

Campo Tipo Descripcion
view_location_id Many2one Ubicacion raiz
lot_stock_id Many2one Stock principal
wh_input_stock_loc_id Many2one Entrada
wh_qc_stock_loc_id Many2one Control calidad
wh_output_stock_loc_id Many2one Salida
wh_pack_stock_loc_id Many2one Empaque

Configuracion de Flujos

Campo Tipo Descripcion
reception_steps Selection Pasos recepcion (1/2/3)
delivery_steps Selection Pasos entrega (1/2/3)
route_ids Many2many Rutas por defecto

Tipos de Operacion

Campo Tipo Descripcion
in_type_id Many2one Tipo recepcion
out_type_id Many2one Tipo envio
int_type_id Many2one Tipo interno
pick_type_id Many2one Tipo pick
pack_type_id Many2one Tipo empaque

2.6 stock.quant (Cantidades)

Archivo: models/stock_quant.py Descripcion: Quants

Campos Principales

Campo Tipo Req Descripcion
product_id Many2one Si Producto
product_tmpl_id Many2one No Plantilla (related)
location_id Many2one Si Ubicacion
warehouse_id Many2one No Almacen (related)
lot_id Many2one No Lote/SN
package_id Many2one No Paquete
owner_id Many2one No Propietario
company_id Many2one No Empresa (related)

Campos de Cantidad

Campo Tipo Descripcion
quantity Float Cantidad actual (readonly)
reserved_quantity Float Cantidad reservada (readonly)
available_quantity Float Cantidad disponible (computed)
in_date Datetime Fecha de entrada

Campos de Inventario

Campo Tipo Descripcion
inventory_quantity Float Cantidad contada
inventory_date Date Fecha programada
inventory_diff_quantity Float Diferencia (computed)
last_count_date Date Ultimo conteo
user_id Many2one Usuario asignado

2.7 stock.rule (Reglas de Procura)

Archivo: models/stock_rule.py Descripcion: Stock Rule

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre
active Boolean No Activo
action Selection Si Accion (pull/push/pull_push)
sequence Integer No Secuencia
route_id Many2one Si Ruta
location_src_id Many2one No Ubicacion origen
location_dest_id Many2one Si Ubicacion destino
picking_type_id Many2one Si Tipo operacion
procure_method Selection Si Metodo procura
company_id Many2one No Empresa
warehouse_id Many2one No Almacen
delay Integer No Tiempo entrega (dias)
auto Selection No Automatizacion
propagate_cancel Boolean No Propagar cancelacion

2.8 stock.lot (Lotes/Numeros de Serie)

Archivo: models/stock_lot.py Descripcion: Lot/Serial

Campos Principales

Campo Tipo Req Descripcion
name Char Si Lote/SN
ref Char No Referencia interna
product_id Many2one Si Producto
product_qty Float No Cantidad en mano (computed)
company_id Many2one Si Empresa
expiration_date Datetime No Fecha expiracion
use_date Datetime No Mejor antes de
removal_date Datetime No Fecha remocion
alert_date Datetime No Fecha alerta
quant_ids One2many No Cantidades

3. Diagrama Entidad-Relacion

┌───────────────────────┐      move_ids       ┌───────────────────────┐
│    stock.picking      │────────────────────►│     stock.move        │
│                       │                      │                       │
│  - name               │      picking_id     │  - state              │
│  - state              │◄─────────────────────│  - product_id         │
│  - picking_type_id    │                      │  - product_qty        │
│  - scheduled_date     │                      │  - location_id        │
└───────────┬───────────┘                      │  - location_dest_id   │
            │                                  └───────────┬───────────┘
            │ picking_type_id                              │
            ▼                                   move_line_ids
┌───────────────────────┐                                  ▼
│  stock.picking.type   │                      ┌───────────────────────┐
│                       │                      │   stock.move.line     │
│  - code               │                      │                       │
│  - warehouse_id       │                      │  - quantity           │
│  - reservation_method │                      │  - lot_id             │
└───────────────────────┘                      │  - package_id         │
                                               └───────────────────────┘

┌───────────────────────┐      lot_stock_id   ┌───────────────────────┐
│   stock.warehouse     │────────────────────►│   stock.location      │
│                       │                      │                       │
│  - code               │      warehouse_id   │  - usage              │
│  - reception_steps    │◄─────────────────────│  - location_id        │
│  - delivery_steps     │                      │  - parent_path        │
└───────────────────────┘                      └───────────┬───────────┘
                                                           │
                                                location_id │
                                                           ▼
┌───────────────────────┐                      ┌───────────────────────┐
│     stock.quant       │────────────────────►│   product.product     │
│                       │     product_id       │                       │
│  - quantity           │                      │  (from product)       │
│  - reserved_quantity  │                      └───────────────────────┘
│  - location_id        │
│  - lot_id             │
└───────────────────────┘

┌───────────────────────┐      route_id       ┌───────────────────────┐
│     stock.rule        │────────────────────►│    stock.route        │
│                       │                      │                       │
│  - action             │                      │  - name               │
│  - procure_method     │                      │  - product_selectable │
│  - location_src_id    │                      │  - warehouse_selectable│
│  - location_dest_id   │                      └───────────────────────┘
└───────────────────────┘

Referencias:

  • Carpeta models: addons/stock/models/