workspace-v1/shared/knowledge-base/reference/odoo/docs/03-modelado-datos/MODELO-purchase.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

8.6 KiB

Modelo de Datos: Purchase

Modulo: purchase Total Modelos: 8+ Modelos Documentados: 3 (principales)


1. Indice de Modelos Principales

Modelo Descripcion Campos Archivo
purchase.order Orden de compra 50+ purchase_order.py
purchase.order.line Linea de orden 30+ purchase_order_line.py
purchase.bill.line.match Match facturas 10+ purchase_bill_line_match.py

2. Detalle por Modelo

2.1 purchase.order (Orden de Compra)

Archivo: models/purchase_order.py Descripcion: Purchase Order Hereda de: portal.mixin, product.catalog.mixin, mail.thread, mail.activity.mixin

Estado (state)

Estado Nombre UI Descripcion
draft RFQ Solicitud de cotizacion
sent RFQ Sent Enviada al proveedor
to approve To Approve Pendiente aprobacion
purchase Purchase Order Confirmada
cancel Cancelled Cancelada

Campos Principales

Campo Tipo Req Descripcion
name Char Si Referencia de orden
priority Selection No Prioridad (0=Normal, 1=Urgente)
origin Char No Documento origen
partner_ref Char No Referencia del proveedor
date_order Datetime Si Fecha limite de orden
date_approve Datetime No Fecha de confirmacion
date_planned Datetime No Fecha esperada llegada
state Selection Si Estado
locked Boolean No Orden bloqueada

Campos de Proveedor

Campo Tipo Req Descripcion
partner_id Many2one Si Proveedor
dest_address_id Many2one No Direccion dropship
user_id Many2one No Comprador responsable

Campos Monetarios

Campo Tipo Descripcion
currency_id Many2one Moneda
amount_untaxed Monetary Subtotal (computed)
amount_tax Monetary Impuestos (computed)
amount_total Monetary Total (computed)
amount_total_cc Monetary Total en moneda empresa

Campos de Facturacion

Campo Tipo Descripcion
invoice_ids Many2many Facturas vinculadas
invoice_count Integer Cantidad de facturas
invoice_status Selection Estado facturacion

Campos de Lineas

Campo Tipo Descripcion
order_line One2many Lineas de orden

Campos de Configuracion

Campo Tipo Descripcion
fiscal_position_id Many2one Posicion fiscal
payment_term_id Many2one Terminos de pago
incoterm_id Many2one Incoterm
company_id Many2one Empresa
acknowledged Boolean Acuse de recibo

2.2 purchase.order.line (Linea de Orden)

Archivo: models/purchase_order_line.py Descripcion: Purchase Order Line

Campos Principales

Campo Tipo Req Descripcion
order_id Many2one Si Orden padre
sequence Integer No Secuencia
product_id Many2one No Producto
product_template_id Many2one No Plantilla producto
name Text Si Descripcion
date_planned Datetime Si Fecha esperada
display_type Selection No Tipo display (section/note)

Campos de Cantidad

Campo Tipo Descripcion
product_qty Float Cantidad ordenada
product_uom Many2one Unidad de medida
qty_received Float Cantidad recibida
qty_received_manual Float Recibida manual
qty_invoiced Float Cantidad facturada
qty_to_invoice Float Pendiente facturar

Campos de Precio

Campo Tipo Descripcion
price_unit Float Precio unitario
price_subtotal Monetary Subtotal (computed)
price_total Monetary Total con impuestos
price_tax Float Impuestos
discount Float Descuento %

Campos de Impuestos

Campo Tipo Descripcion
taxes_id Many2many Impuestos aplicables
tax_calculation_rounding_method Selection Metodo redondeo

Campos de Facturacion

Campo Tipo Descripcion
invoice_lines One2many Lineas de factura

2.3 purchase.bill.line.match (Match de Facturas)

Archivo: models/purchase_bill_line_match.py Descripcion: Purchase Bill Line Match

Campos

Campo Tipo Req Descripcion
product_id Many2one Si Producto
company_id Many2one Si Empresa
partner_id Many2one Si Proveedor
purchase_order_id Many2one No Orden de compra
aml_id Many2one No Linea de factura
line_qty Float No Cantidad linea
line_amount_untaxed Monetary No Monto sin impuesto

3. Diagrama Entidad-Relacion

┌───────────────────────┐      order_line      ┌───────────────────────┐
│   purchase.order      │──────────────────────►│ purchase.order.line   │
│                       │                       │                       │
│  - name               │      order_id        │  - product_id         │
│  - state              │◄──────────────────────│  - product_qty        │
│  - partner_id         │                       │  - price_unit         │
│  - date_order         │                       │  - qty_received       │
│  - amount_total       │                       │  - qty_invoiced       │
└───────────┬───────────┘                       └───────────┬───────────┘
            │                                               │
            │ partner_id                                    │ invoice_lines
            ▼                                               ▼
┌───────────────────────┐                       ┌───────────────────────┐
│     res.partner       │                       │  account.move.line    │
│                       │                       │                       │
│  (Proveedor)          │                       │  (Linea factura)      │
└───────────────────────┘                       └───────────────────────┘

┌───────────────────────┐      invoice_ids     ┌───────────────────────┐
│   purchase.order      │──────────────────────►│    account.move       │
│                       │                       │                       │
│  - invoice_status     │                       │  (Factura proveedor)  │
│  - invoice_count      │                       │                       │
└───────────────────────┘                       └───────────────────────┘

4. Extensiones a Otros Modelos

4.1 res.partner (Proveedor)

Campo Tipo Descripcion
property_purchase_currency_id Many2one Moneda compra
purchase_warn Selection Tipo advertencia
purchase_warn_msg Text Mensaje advertencia
supplier_invoice_count Integer Facturas proveedor
receipt_reminder_email Boolean Email recordatorio
reminder_date_before_receipt Integer Dias antes recepcion

4.2 product.template

Campo Tipo Descripcion
purchase_ok Boolean Se puede comprar
purchase_method Selection Metodo control
purchase_line_warn Selection Advertencia
purchase_line_warn_msg Text Mensaje advertencia

5. Constraints (Restricciones)

Modelo Campos Validacion Mensaje
purchase.order company_id, order_line Productos deben pertenecer a la misma empresa Product belongs to different company

Nota: La mayoria de validaciones de negocio se realizan en los metodos de transicion (button_confirm, button_approve), no como constraints explicitos.


Referencias:

  • Carpeta models: addons/purchase/models/