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/