workspace-v1/shared/knowledge-base/reference/odoo/docs/04-logica-negocio/FLUJO-account.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

7.5 KiB

Flujo de Negocio: Account (Contabilidad)

Modulo: account Modelo Principal: account.move Aplica Workflow: Si


1. Estados del Documento (state)

Estado Nombre UI Descripcion Siguiente
draft Borrador Estado inicial, editable posted
posted Publicado Contabilizado, no editable cancel
cancel Cancelado Anulado -

2. Diagrama de Transiciones - account.move

                    ┌──────────────────┐
                    │      DRAFT       │
                    │   (Borrador)     │
                    └────────┬─────────┘
                             │
                     action_post()
                     _post()
                             │
                             ▼
                    ┌──────────────────┐
                    │     POSTED       │
                    │  (Publicado)     │◄────────┐
                    └────────┬─────────┘         │
                             │                   │
          ┌──────────────────┼───────────────────┤
          │                  │                   │
          ▼                  ▼                   │
┌─────────────────┐  ┌──────────────┐    button_draft()
│ button_cancel() │  │action_reverse│    (si draftable)
│                 │  │              │
└────────┬────────┘  └──────┬───────┘
         │                  │
         ▼                  ▼
┌─────────────────┐  ┌──────────────────┐
│    CANCEL       │  │   NUEVO MOVE     │
│  (Cancelado)    │  │  (tipo inverso)  │
└─────────────────┘  └──────────────────┘

3. Estados de Pago (payment_state)

    ┌──────────────┐
    │   NOT_PAID   │  (Publicado, sin pagos)
    └──────┬───────┘
           │ Reconciliacion parcial
           ▼
    ┌──────────────┐
    │   PARTIAL    │  (Parcialmente pagado)
    └──────┬───────┘
           │ Pago registrado pero no confirmado
           ▼
    ┌──────────────┐
    │  IN_PAYMENT  │  (En proceso)
    └──────┬───────┘
           │ Pago completado
           ▼
    ┌──────────────┐
    │     PAID     │  (Totalmente pagado)
    └──────────────┘

Estados especiales:
    ┌──────────────┐
    │   REVERSED   │  (Asiento revertido)
    └──────────────┘

    ┌──────────────┐
    │   BLOCKED    │  (Pagos bloqueados manualmente)
    └──────────────┘

4. Flujo de Factura de Cliente

1. CREACION
   └─ account.move creado con move_type='out_invoice'
   └─ state = 'draft'
   └─ payment_state = N/A

2. AGREGAR LINEAS
   └─ invoice_line_ids con productos, cantidades, impuestos
   └─ amount_untaxed, amount_tax, amount_total calculados

3. PUBLICAR (action_post)
   └─ Validar: lineas balanceadas (debito = credito)
   └─ Generar nombre secuencial
   └─ state = 'posted'
   └─ payment_state = 'not_paid'

4. REGISTRAR PAGO
   └─ Crear account.payment vinculado
   └─ Reconciliar lineas receivable
   └─ payment_state = 'partial' o 'paid'

5. (Opcional) REVERTIR
   └─ action_reverse() crea nota de credito
   └─ Ambos documentos se reconcilian
   └─ payment_state = 'reversed'

5. Flujo de Pago (account.payment)

    ┌──────────────────┐
    │      DRAFT       │
    │   (Borrador)     │
    └────────┬─────────┘
             │
      action_post()
             │
             ▼
    ┌──────────────────┐
    │    IN_PROCESS    │  (Opcional, segun metodo)
    │   (En proceso)   │
    └────────┬─────────┘
             │
      action_validate()
             │
             ▼
    ┌──────────────────┐
    │       PAID       │
    │     (Pagado)     │
    └────────┬─────────┘
             │
         ┌───┴───┐
         │       │
         ▼       ▼
┌────────────┐ ┌──────────────┐
│  CANCELED  │ │   REJECTED   │
│(Cancelado) │ │ (Rechazado)  │
└────────────┘ └──────────────┘

6. Metodos de Transicion

Modelo Metodo De Estado A Estado
account.move action_post() draft posted
account.move _post() draft posted
account.move button_draft() posted draft
account.move button_cancel() * cancel
account.move action_reverse() posted (crea nuevo)
account.payment action_post() draft in_process/paid
account.payment action_validate() in_process paid
account.payment action_cancel() * canceled
account.payment action_reject() * rejected
account.payment action_draft() canceled draft

7. Reglas de Negocio

ID Regla Validacion Mensaje
R1 Balance cero sum(debit) = sum(credit) El asiento no cuadra
R2 Cuenta requerida line.account_id presente Falta cuenta contable
R3 Periodo cerrado date dentro de periodo abierto Periodo cerrado
R4 Diario requerido journal_id presente Falta diario
R5 Secuencia unica name unico por empresa Secuencia duplicada
R6 Hash integridad hash no modificado Violacion de integridad

8. Acciones Automaticas

Trigger Accion Condicion
action_post Generar nombre secuencial Si name = '/'
action_post Calcular hash Si journal.restrict_mode_hash_table
Reconciliacion Actualizar payment_state Automatico
Pago creado Vincular con facturas Si invoice_ids

9. Permisos por Estado

Estado Editable Grupos
draft Si account.group_account_invoice
posted No account.group_account_manager (para revertir)
cancel No -

10. Flujo de Reconciliacion

FACTURA (out_invoice, posted)
    │
    │ Linea receivable: credit = 1000
    │
    ▼
PAGO (payment, paid)
    │
    │ Linea receivable: debit = 1000
    │
    ▼
RECONCILIACION
    │
    ├─► account.partial.reconcile (si parcial)
    │       amount = 500
    │
    └─► account.full.reconcile (si completo)
            Agrupa todas las partidas

Referencias:

  • account_move.py: action_post, button_draft, button_cancel
  • account_payment.py: action_post, action_validate