Modelo de Datos: Sale
Modulo: sale
Total Modelos: 15+
Modelos Documentados: 2 (principales)
1. Indice de Modelos Principales
| Modelo |
Descripcion |
Campos |
Archivo |
| sale.order |
Orden de venta |
60+ |
sale_order.py |
| sale.order.line |
Linea de orden |
40+ |
sale_order_line.py |
2. Detalle por Modelo
2.1 sale.order (Orden de Venta)
Archivo: models/sale_order.py
Descripcion: Sales Order
Hereda de: portal.mixin, product.catalog.mixin, mail.thread, mail.activity.mixin, utm.mixin
Estado (state)
| Estado |
Nombre UI |
Descripcion |
| draft |
Quotation |
Cotizacion |
| sent |
Quotation Sent |
Enviada |
| sale |
Sales Order |
Confirmada |
| cancel |
Cancelled |
Cancelada |
Campos Principales
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Referencia de orden |
| state |
Selection |
Si |
Estado |
| locked |
Boolean |
No |
Orden bloqueada |
| client_order_ref |
Char |
No |
Referencia del cliente |
| create_date |
Datetime |
No |
Fecha creacion |
| date_order |
Datetime |
Si |
Fecha de orden |
| commitment_date |
Datetime |
No |
Fecha entrega prometida |
| origin |
Char |
No |
Documento origen |
| reference |
Char |
No |
Referencia de pago |
Campos de Partner
| Campo |
Tipo |
Req |
Descripcion |
| partner_id |
Many2one |
Si |
Cliente |
| partner_invoice_id |
Many2one |
Si |
Direccion facturacion |
| partner_shipping_id |
Many2one |
Si |
Direccion envio |
Campos de Firma/Pago Online
| Campo |
Tipo |
Descripcion |
| require_signature |
Boolean |
Requiere firma |
| require_payment |
Boolean |
Requiere pago |
| prepayment_percent |
Float |
Porcentaje anticipo |
| signature |
Image |
Firma digital |
| signed_by |
Char |
Nombre firmante |
| signed_on |
Datetime |
Fecha firma |
Campos de Configuracion
| Campo |
Tipo |
Descripcion |
| validity_date |
Date |
Fecha expiracion cotizacion |
| journal_id |
Many2one |
Diario facturacion |
| fiscal_position_id |
Many2one |
Posicion fiscal |
| payment_term_id |
Many2one |
Terminos de pago |
| pricelist_id |
Many2one |
Lista de precios |
| currency_id |
Many2one |
Moneda |
| user_id |
Many2one |
Vendedor |
| team_id |
Many2one |
Equipo de ventas |
| company_id |
Many2one |
Empresa |
Campos Monetarios
| Campo |
Tipo |
Descripcion |
| amount_untaxed |
Monetary |
Subtotal (computed) |
| amount_tax |
Monetary |
Impuestos (computed) |
| amount_total |
Monetary |
Total (computed) |
| amount_to_invoice |
Monetary |
Pendiente facturar |
| amount_invoiced |
Monetary |
Ya facturado |
Campos de Facturacion
| Campo |
Tipo |
Descripcion |
| invoice_ids |
Many2many |
Facturas vinculadas |
| invoice_count |
Integer |
Cantidad facturas |
| invoice_status |
Selection |
Estado facturacion |
Campos de Pago
| Campo |
Tipo |
Descripcion |
| transaction_ids |
Many2many |
Transacciones |
| authorized_transaction_ids |
Many2many |
Autorizadas |
| amount_paid |
Float |
Monto pagado |
Campos de Lineas
| Campo |
Tipo |
Descripcion |
| order_line |
One2many |
Lineas de orden |
| note |
Html |
Terminos y condiciones |
| tag_ids |
Many2many |
Etiquetas |
2.2 sale.order.line (Linea de Orden)
Archivo: models/sale_order_line.py
Descripcion: Sales Order Line
Campos Principales
| Campo |
Tipo |
Req |
Descripcion |
| order_id |
Many2one |
Si |
Orden padre |
| sequence |
Integer |
No |
Secuencia |
| company_id |
Many2one |
No |
Empresa (related) |
| name |
Text |
Si |
Descripcion |
| display_type |
Selection |
No |
Tipo display (section/note/line_note) |
| state |
Selection |
No |
Estado (related) |
Campos de Producto
| Campo |
Tipo |
Descripcion |
| product_id |
Many2one |
Producto |
| product_template_id |
Many2one |
Plantilla producto |
| product_uom |
Many2one |
Unidad de medida |
| product_uom_qty |
Float |
Cantidad ordenada |
| product_custom_attribute_value_ids |
One2many |
Valores atributos custom |
Campos de Cantidad
| Campo |
Tipo |
Descripcion |
| product_uom_qty |
Float |
Cantidad ordenada |
| qty_delivered |
Float |
Cantidad entregada |
| qty_delivered_method |
Selection |
Metodo calculo entrega |
| qty_invoiced |
Float |
Cantidad facturada |
| qty_to_invoice |
Float |
Pendiente facturar |
| untaxed_amount_invoiced |
Float |
Importe facturado sin imp |
| untaxed_amount_to_invoice |
Float |
Importe pendiente sin imp |
Campos de Precio
| Campo |
Tipo |
Descripcion |
| price_unit |
Float |
Precio unitario |
| discount |
Float |
Descuento % |
| price_subtotal |
Monetary |
Subtotal (computed) |
| price_tax |
Float |
Impuestos |
| price_total |
Monetary |
Total con impuestos |
| price_reduce |
Float |
Precio con descuento |
| price_reduce_taxinc |
Float |
Precio con desc+imp |
| price_reduce_taxexcl |
Float |
Precio con desc sin imp |
Campos de Impuestos
| Campo |
Tipo |
Descripcion |
| tax_id |
Many2many |
Impuestos aplicables |
Campos de Facturacion
| Campo |
Tipo |
Descripcion |
| invoice_lines |
Many2many |
Lineas de factura |
| invoice_status |
Selection |
Estado facturacion (computed) |
| is_downpayment |
Boolean |
Es anticipo |
Campos de Vendedor
| Campo |
Tipo |
Descripcion |
| salesman_id |
Many2one |
Vendedor (related) |
3. Diagrama Entidad-Relacion
┌───────────────────────┐ order_line ┌───────────────────────┐
│ sale.order │──────────────────────►│ sale.order.line │
│ │ │ │
│ - name │ order_id │ - product_id │
│ - state │◄──────────────────────│ - product_uom_qty │
│ - partner_id │ │ - price_unit │
│ - date_order │ │ - qty_delivered │
│ - amount_total │ │ - qty_invoiced │
└───────────┬───────────┘ └───────────┬───────────┘
│ │
│ partner_id │ invoice_lines
▼ ▼
┌───────────────────────┐ ┌───────────────────────┐
│ res.partner │ │ account.move.line │
│ │ │ │
│ (Cliente) │ │ (Linea factura) │
└───────────────────────┘ └───────────────────────┘
┌───────────────────────┐ invoice_ids ┌───────────────────────┐
│ sale.order │──────────────────────►│ account.move │
│ │ │ │
│ - invoice_status │ │ (Factura cliente) │
│ - invoice_count │ │ type = 'out_invoice' │
└───────────────────────┘ └───────────────────────┘
┌───────────────────────┐ transaction_ids ┌───────────────────────┐
│ sale.order │──────────────────────►│ payment.transaction │
│ │ │ │
│ - amount_paid │ │ (Transaccion pago) │
│ - require_payment │ │ │
└───────────────────────┘ └───────────────────────┘
4. Constantes del Modulo
# Estados de facturacion
INVOICE_STATUS = [
('upselling', 'Upselling Opportunity'),
('invoiced', 'Fully Invoiced'),
('to invoice', 'To Invoice'),
('no', 'Nothing to Invoice')
]
# Estados de orden
SALE_ORDER_STATE = [
('draft', "Quotation"),
('sent', "Quotation Sent"),
('sale', "Sales Order"),
('cancel', "Cancelled"),
]
6. Constraints (Restricciones)
| Modelo |
Campos |
Validacion |
Mensaje |
| sale.order |
company_id, order_line |
Productos deben pertenecer a la misma empresa |
Product belongs to different company |
| sale.order |
prepayment_percent |
Porcentaje entre 0 y 100% si require_payment |
Prepayment percentage must be valid |
| sale.order.line |
combo_item_id |
No debe setearse manualmente |
Combo item cannot be set manually |
| product.template |
company_id |
No restringir a empresa si fue vendido en otra |
Product sold in other company |
Referencias:
- Carpeta models:
addons/sale/models/
- Constantes:
addons/sale/const.py