mirror of
https://github.com/cursos-uai/sap_tfi_2026.git
synced 2026-07-31 20:48:30 -03:00
feat(initial-iteration): primera iteración ICONIX del flujo venta→factura→pago
Documentación generada: - 7 casos de uso (CU-VEN-001, CU-VEN-004, CU-ENT-002, CU-ENT-004, CU-FAC-001, CU-FAC-002, CU-FAC-003) - Modelo de dominio inicial (12 conceptos, 9 reglas de negocio) - Arquitectura general (C4 contexto + contenedores) - Prototipo del formulario de presupuesto - 5 diagramas PlantUML (.puml): - Diagrama general de casos de uso - Modelo de dominio conceptual - Diagrama de robustez de CU-VEN-004 - Diagrama de secuencia de CU-VEN-004 - Diagrama de clases técnicas (integración Venta/Stock/Contabilidad) - Matriz de trazabilidad con 20 EV-COD y 22 EV-INF Odoo analizado: 19.0 Community (rama 19.0) Método: ingeniería inversa con verificación de código fuente Nota: NO pushear (gate S2). Ale debe revisar antes de merge a main.
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# Modelo de Dominio Inicial
|
||||
|
||||
> Documento vivo. Última actualización: 2026-06-18.
|
||||
|
||||
## Conceptos del dominio
|
||||
|
||||
Estos son los conceptos funcionales identificados a partir del análisis de Odoo 19.0. Se mantienen separados de las clases técnicas de Odoo.
|
||||
|
||||
### Cliente (`Customer`)
|
||||
|
||||
- **Definición**: Persona o empresa que compra productos o servicios.
|
||||
- **Correspondencia técnica**: `res.partner` (con `is_company=True` para empresas).
|
||||
- **Atributos clave**: nombre, dirección, contacto, lista de precios, condición de pago.
|
||||
- **Evidencia**: módulo `contacts` en `addons/contacts/`.
|
||||
|
||||
### Producto (`Product`)
|
||||
|
||||
- **Definición**: Bien o servicio que se vende.
|
||||
- **Correspondencia técnica**: `product.template` + `product.product`.
|
||||
- **Atributos clave**: nombre, descripción, precio, costo, impuestos, categoría.
|
||||
- **Evidencia**: módulo `product` en `addons/product/`.
|
||||
|
||||
### Lista de precios (`Price List`)
|
||||
|
||||
- **Definición**: Conjunto de precios para productos en función de la moneda, el país y el período.
|
||||
- **Correspondencia técnica**: `product.pricelist`.
|
||||
- **Evidencia**: ver `addons/product/models/product_pricelist.py`.
|
||||
|
||||
### Impuesto (`Tax`)
|
||||
|
||||
- **Definición**: Regla fiscal aplicada a las ventas.
|
||||
- **Correspondencia técnica**: `account.tax`.
|
||||
- **Evidencia**: ver `addons/account/models/account_tax.py`.
|
||||
|
||||
### Presupuesto (`Quotation`)
|
||||
|
||||
- **Definición**: Oferta de venta en estado `draft` o `sent`, previa al pedido confirmado.
|
||||
- **Correspondencia técnica**: `sale.order` con `state IN ('draft', 'sent')`.
|
||||
- **Atributos clave**: nombre, cliente, líneas, totales, fechas.
|
||||
- **Estado actual**: `draft` (Quotation), `sent` (Quotation Sent).
|
||||
- **Evidencia**: `addons/sale/models/sale_order.py:26-31` (definición de `SALE_ORDER_STATE`).
|
||||
|
||||
### Pedido de venta (`Sales Order`)
|
||||
|
||||
- **Definición**: Pedido confirmado (`state='sale'`) que activa el flujo operativo.
|
||||
- **Correspondencia técnica**: `sale.order` con `state='sale'`.
|
||||
- **Atributos clave**: idem presupuesto + fecha de confirmación + estado de facturación + estado de entrega.
|
||||
- **Evidencia**: `addons/sale/models/sale_order.py:34-36` (clase `SaleOrder`).
|
||||
|
||||
### Línea de pedido (`Order Line`)
|
||||
|
||||
- **Definición**: Línea de producto dentro de un presupuesto o pedido.
|
||||
- **Correspondencia técnica**: `sale.order.line`.
|
||||
- **Atributos clave**: producto, cantidad, precio unitario, descuento, subtotal, impuesto.
|
||||
- **Evidencia**: ver `addons/sale/models/sale_order_line.py`.
|
||||
|
||||
### Transferencia (`Delivery`)
|
||||
|
||||
- **Definición**: Movimiento físico de productos del almacén al cliente.
|
||||
- **Correspondencia técnica**: `stock.picking`.
|
||||
- **Atributos clave**: líneas de movimiento, estado, cantidad reservada/entregada.
|
||||
- **Evidencia**: ver `addons/stock/models/stock_picking.py`.
|
||||
|
||||
### Línea de transferencia (`Move Line`)
|
||||
|
||||
- **Definición**: Línea de producto dentro de una transferencia, con cantidad reservada y entregada.
|
||||
- **Correspondencia técnica**: `stock.move` (movimiento) y `stock.move.line` (reservas).
|
||||
- **Evidencia**: ver `addons/stock/models/stock_move.py` y `addons/stock/models/stock_move_line.py`.
|
||||
|
||||
### Factura (`Invoice`)
|
||||
|
||||
- **Definición**: Documento contable que registra una venta.
|
||||
- **Correspondencia técnica**: `account.move` con `move_type='out_invoice'`.
|
||||
- **Atributos clave**: número, fecha, cliente, líneas, totales, impuestos, estado de pago.
|
||||
- **Estado actual**: `draft`, `posted`, `cancel`.
|
||||
- **Evidencia**: `addons/account/models/account_move.py:72-73` (clase `AccountMove`).
|
||||
|
||||
### Línea de factura (`Invoice Line`)
|
||||
|
||||
- **Definición**: Línea de producto dentro de una factura.
|
||||
- **Correspondencia técnica**: `account.move.line`.
|
||||
- **Atributos clave**: producto, cantidad, precio, impuestos, cuenta contable.
|
||||
- **Evidencia**: ver `addons/account/models/account_move_line.py`.
|
||||
|
||||
### Pago (`Payment`)
|
||||
|
||||
- **Definición**: Registro de un cobro aplicado a una factura.
|
||||
- **Correspondencia técnica**: `account.payment`.
|
||||
- **Atributos clave**: fecha, monto, diario, método de pago, factura relacionada.
|
||||
- **Evidencia**: ver `addons/account/models/account_payment.py`.
|
||||
|
||||
### Almacén (`Warehouse`)
|
||||
|
||||
- **Definición**: Lugar físico donde se almacenan productos.
|
||||
- **Correspondencia técnica**: `stock.warehouse`.
|
||||
- **Evidencia**: ver `addons/stock/models/stock_warehouse.py`.
|
||||
|
||||
### Ubicación (`Location`)
|
||||
|
||||
- **Definición**: Posición específica dentro de un almacén.
|
||||
- **Correspondencia técnica**: `stock.location`.
|
||||
- **Evidencia**: ver `addons/stock/models/stock_location.py`.
|
||||
|
||||
## Diagrama del modelo de dominio
|
||||
|
||||
Ver `diagrams/plantuml/d_cla_con_gen_001_modelo_dominio.puml`.
|
||||
|
||||
## Reglas de negocio del dominio
|
||||
|
||||
- **RN-DOM-001**: Un Cliente puede tener muchos Pedidos de venta.
|
||||
- **RN-DOM-002**: Un Pedido de venta tiene muchas Líneas de pedido.
|
||||
- **RN-DOM-003**: Un Pedido de venta confirmado genera una o más Transferencias.
|
||||
- **RN-DOM-004**: Una Transferencia genera cero o más Reservas (Líneas de transferencia).
|
||||
- **RN-DOM-005**: Un Pedido de venta genera una o más Facturas.
|
||||
- **RN-DOM-006**: Una Factura tiene muchas Líneas de factura.
|
||||
- **RN-DOM-007**: Una Factura puede tener muchos Pagos (pagos parciales).
|
||||
- **RN-DOM-008**: Un Producto pertenece a una o más Categorías.
|
||||
- **RN-DOM-009**: Una Línea de pedido referencia un Producto y aplica Impuestos.
|
||||
|
||||
## Pendientes de validación
|
||||
|
||||
- **EV-INF-017**: Las correspondencias técnicas son aproximadas; algunas relaciones pueden ser más complejas (campos calculados, herencia, etc.).
|
||||
- **EV-INF-018**: El modelo conceptual debe refinarse a medida que se descubran nuevos conceptos en iteraciones siguientes.
|
||||
Reference in New Issue
Block a user