Zum Inhalt springen
← Alle Add-ons

Purchase & Invoice Approval Workflow

Unkontrollierte Ausgaben sind eines der größten Risiken im Einkauf. Der Freigabe-Workflow stellt sicher, dass keine Bestellung bestätigt und keine Rechnung gebucht wird, bevor die richtigen Personen zugestimmt haben.

Ihr Nutzen

Ausgabenkontrolle

Betragschwellen und Genehmiger-Pools definieren: über 5.000 € braucht Abteilungsleiter-Freigabe, über 20.000 € die Geschäftsführung.

Transparenz und Compliance

Lückenlose Dokumentation aller Genehmigungsschritte. Automatische Benachrichtigungen. Ideal für ISO-Zertifizierungen.

Kanban-Dashboard

Genehmiger sehen alle offenen Freigaben auf einen Blick. Mehrstufig, sequenziell oder parallel konfigurierbar.

Funktionen im Detail

dtx_approval

Multi-stage approval workflow for purchase orders and vendor bills based on analytic distribution.

The module dtx_approval blocks purchase.order.button_confirm() and account.move.action_post() (only in_invoice/in_refund) until all required approvals are in place. Amounts are aggregated per Analytic Account via analytic_distribution. For each branch the highest matching min_amount tier is determined and all stages within that tier are processed sequentially by sequence. Approvers are resolved per stage as a pool (any/all). A mail.activity is scheduled on the document itself for every open entry.

1. Roles and Permissions

GroupPermissions
DTX Approval / User View own requests, approve/refuse assigned entries, read-only access to stages.
DTX Approval / Administrator Configure stages, view all requests, maintain approval responsibles and groups on analytic accounts, manually cancel requests.

Assign via Settings → Users → Groups: DTX Approval.

2. Configuring Approval Stages

Menu: Accounting → Configuration → Approval Stages

A stage is global per company and has the following fields:

  • Name — Display name
  • Sequence — Processing order (lower = earlier)
  • Document Typepurchase, vendor_bill or both
  • Minimum Amount — Threshold on branch level. Only the highest matching min_amount tier is used — lower tiers are discarded entirely.
  • Approver Type:
    • Fixed Users — explicit user list in Approver Users
    • Fixed Group — all active users of a res.groups
    • Analytic Responsible — project manager plus the Approval Responsibles and all active members of Approval Groups configured on the analytic account; without an AA it falls back to the requester's HR manager
    • Requester's Manager — always resolves to the requester's HR manager
  • Approver Mode:
    • any — the first approver closes the stage (natural substitution)
    • all — every approver must approve
  • Activity Deadline (Days) — sets mail.activity.date_deadline; overdue activities appear in Odoo's standard overdue view.
  • Active — a stage can be deactivated at any time.

Simple Example

SeqNameTypeMin ModeDeadline
10Project Manager analytic_responsible0 any3 days

In this simple example there is only one stage — every order (from 0 €) is approved by the analytic responsible.

Important: Only the highest matching min_amount tier applies. Stages with a lower min_amount are discarded once a higher tier matches. To create multiple approval levels within a single tier, create several stages with the same min_amount and different sequence values — see the next section.

Hierarchical Approval within a Price Tier

For amounts above a certain threshold, multiple approval levels can be processed sequentially. To achieve this, create several stages with the same min_amount. The sequence determines the order — the lowest sequence starts first; the next level is activated only after the previous one is completed.

Example: Three-level approval from 5,000 €

SeqNameTypeMin ModeDeadline
10Technical Review analytic_responsible5,000 any3 days
20Controlling fixed_group5,000 all3 days
30Management fixed_users5,000 any2 days

Flow for an order of 8,000 €:

  1. Level 1 — Technical Review (Seq 10): The analytic responsible receives an activity immediately. Mode any → one approver is sufficient.
  2. Level 2 — Controlling (Seq 20): Only after level 1 is completed do all members of the controlling group receive an activity. Mode all → every member must approve (in parallel, order within the level does not matter).
  3. Level 3 — Management (Seq 30): Only after level 2 is completed does management receive an activity. Mode any → one member is sufficient.
Tip: Amounts below 5,000 € do not match any stage in this example — the request is immediately marked as approved. For a baseline approval without a threshold, add an additional stage with min_amount = 0 (it will apply on its own for amounts below 5,000 €).
Flow: Hierarchical Approval (min_amount = 5,000, amount = 8,000 EUR) LEVEL 1 — Seq 10 Technical Review Type: Analytic Responsible · Mode: any · Deadline: 3 days AP Anna PM-A Activity immediately · approved Stage done — activate next LEVEL 2 — Seq 20 Controlling Type: Fixed Group · Mode: all · Deadline: 3 days All members must approve (in parallel, order does not matter) CC Carsten Ctrl approved DK Diana Acct approved All approved — activate next LEVEL 3 — Seq 30 Management Type: Fixed Users · Mode: any · Deadline: 2 days MG Max Manager Activity only now · approved Request APPROVED
Flow diagram: Three approval levels with the same min_amount are processed sequentially. Activities are scheduled only when the previous level has been completed.

Combining Multiple Price Tiers

You can define different hierarchies for different amounts. Since only the highest matching min_amount applies, separate tiers are formed:

SeqNameTypeMin ModeApplies to
10Project Manager analytic_responsible0 any0 – 4,999 €
10Technical Review analytic_responsible5,000 anyfrom 5,000 €
20Controlling fixed_group5,000 all
30Management fixed_users5,000 any
  • Amount < 5,000 €: Only "Project Manager" (min_amount = 0) applies — single-level approval.
  • Amount ≥ 5,000 €: Only the three stages with min_amount = 5,000 apply — three-level hierarchical approval. The stage with min_amount = 0 is discarded.
Accounting > Configuration > Approval Stages 1-4 / 4 New Search... Seq Name Document Type Min Amount Approver Type Mode Deadline 10 Project Manager Both 0.00 EUR Analytic Responsible any 3 Tier from 5,000 EUR (hierarchical) 10 Technical Review Both 5,000.00 EUR Analytic Responsible any 3 20 Controlling Both 5,000.00 EUR Fixed Group all 3 30 Management Both 5,000.00 EUR Fixed Users any 2 dtx.approval.stage · Company: Detalex GmbH
List view: One base stage (min_amount = 0) for small amounts, plus three stages with identical min_amount = 5,000 for hierarchical approval from 5,000 EUR. Colour coding highlights the levels within the tier.
Accounting > Configuration > Approval Stages > Controlling Discard Save Name Controlling Sequence 20 Document Type Both Minimum Amount 5,000.00 EUR Company Detalex GmbH Approver Type Fixed Group Approver Mode all Activity Deadline 3 Days Active Approvers Approver Group DTX Approval Test Controlling Members: Alice (Controller), Bob (Controller) ...
Stage form — "Controlling" with fixed_group, mode all and a 5,000 EUR threshold.

3. Maintaining Analytic Accounts

Menu: Accounting → Configuration → Analytic Accounting → Analytic Accounts

The form contains two fields under Approval:

  • Approval Responsibles — individual users who can approve documents for this analytic account.
  • Approval Groups — user groups whose active members are automatically included as approvers.

Both serve as a fallback (or supplement) when the stage type is Analytic Responsible and are merged with any project managers linked to the analytic account into a single approver pool.

Accounting > Analytic Accounts > AA Project A Analytic Account AA Project A Plan Projects Company Detalex GmbH Active Currency EUR Partner Approval Approval Responsibles PM A Substitute x Alice K. x Approval Groups Controlling x
Analytic account "AA Project A" with fallback approval responsibles and an approval group — all are merged with the project manager into a single approver pool.

4. Workflow: Purchase Order / Vendor Bill

4.1 Requesting Approval

  1. Create a purchase order or vendor bill in Draft, assign analytic_distribution to the lines.
  2. Click Request Approval in the header.
  3. The module:
    • aggregates the amount per analytic account (price_subtotal * distribution_pct / 100),
    • creates a Branch for each AA,
    • creates a Fallback Branch (analytic_account_id = False) for lines without distribution,
    • determines the highest matching min_amount tier per branch and activates all stages within it,
    • schedules mail.activity entries on the document for the first stage immediately.

The status field dtx_approval_state in the header shows pending.

Purchases > Requests for Quotation > P00023 Request Approval Confirm Order Send by Email PENDING Draft RFQ Sent Purchase Request for Quotation P00023 Vendor Sample Supplier GmbH Order Deadline 2026-04-18 Total 12,600.00 EUR Company Detalex GmbH Products Product Qty Unit Price Analytic Distribution Subtotal Office Chair (ergo) 6 1,200.00 EUR AA Project A 100% 7,200.00 EUR Standing Desk 3 1,800.00 EUR AA Project B 100% 5,400.00 EUR
Purchase order in draft: The Request Approval button is primary, Confirm Order remains disabled until the request reaches approved status. The approval workflow status badge is shown on the right.

4.2 Granting Approval

Assigned approvers see the activity on the document (purchase order or bill) in their My Activities view and in the chatter. The actions Approve / Refuse are available on the Approval Request form.

  • Approve closes the activity, sets the entry to approved and posts a message in the chatter.
  • With mode any, all remaining entries for the stage are automatically closed with the note "Auto-closed: another approver already approved this stage."
  • After a stage is completed, activities for the next stage are scheduled automatically.
Accounting > Approvals > Approval Requests > APR/2026/00017 Draft Pending Approved Approval Request APR/2026/00017 Document P00023 — Sample Supplier GmbH Requester Thomas Meier Amount 12,600.00 EUR Company Detalex GmbH Branches Analytic Account Amount Stage Approver State AA Project A 7,200.00 EUR Technical Review Anna PM-A approved Controlling Carsten Ctrl pending AA Project B 5,400.00 EUR Technical Review Bernd PM-B pending Approve Refuse Thomas Meier: Stage 'Technical Review' approved by Anna PM-A
Request form with two branches (AA Project A and B). Stage 1 on branch A is already approved, stage 2 is waiting for controlling. The Approve and Refuse actions are available per entry.

4.3 Refusal

A single Refuse in any stage and any branch immediately cancels the entire request:
  • request.state = refused
  • All remaining open activities are deleted
  • The document stays in its current status (draft); the approval must be requested again.
Chatter — P00023 ! Activity — Approval required: P00023 — stage 'Technical Review' For: Anna PM-A · Due: 2026-04-14 · Amount: 7,200.00 EUR · Analytic Account: AA Project A Approve Refuse CM Carsten Ctrl just now Stage 'Controlling' refused by Carsten Ctrl — budget exceeded SYS System 1 second ago Approval request refused. Branch: AA Project A
Document chatter: open activity at the top, below the refuse message and the automatic cancellation log for the entire request.

4.4 Confirmation / Posting

  • Purchase Order: button_confirm() is blocked until the associated request has status approved — otherwise a UserError is raised.
  • Vendor Bill: action_post() is gated only for in_invoice and in_refund; customer invoices (out_invoice) are not affected.
  • Only then is the original behaviour executed.

4.5 Subsequent Changes to the Document

If a line is changed in draft after approval has been granted (price_unit, product_qty/quantity, analytic_distribution, product_id, price_subtotal) or a line is added / deleted, the request is automatically set to refused via action_cancel(). The user must restart the approval process by clicking Request Approval again.

After confirm/post, changes are no longer monitored — the request is preserved unchanged as a historical audit record.

5. Dashboards and Views

  • Accounting → Approvals → Approval Requests: filtered by default to state pending. The filter "Waiting on me" shows only requests where the current user is listed as an approver in an open stage.
  • Kanban view (default):
    • Requests are grouped by state with colour-coded borders (grey = draft, blue = pending, green = approved, red = refused).
    • Each card shows the document reference, requester, amount and date.
    • Approve and Refuse buttons are available directly on each card for quick action.
    • Columns follow the fixed order: Draft → Pending → Approved → Refused.
  • List view: Available as an alternative view for a compact tabular overview of all requests.
  • Request form view:
    • Header with statusbar draft → pending → approved/refused
    • Notebook Branches with totals per analytic account
    • Branch dialog lists entries per stage (approver, state, comment, approved-on)
    • Chatter at the bottom for the audit trail

6. Frequently Asked Questions

A user is both requester and approver — what happens?

Self-approval is blocked by _assert_can_act() (UserError). Exception: members of the group DTX Approval / Administrator.

What if no stage matches a document?

The request is immediately set to approved and confirmation can proceed without further steps.

Why is the "Request Approval" button not shown?

  • For purchase.order: state must be draft or sent and no active request may exist.
  • For account.move: the entry must be in_invoice/in_refund and still in draft.
  • Additionally, at least one active stage for the matching document_type must exist, otherwise _dtx_needs_approval() returns False and the gate mechanism is disabled.

I need to substitute for an approver immediately.

Use the pool mechanism: set the stage type to fixed_group or fixed_users, add multiple users, mode any — the first approval is sufficient.

How can I manually cancel a request?

As a DTX Approval / Administrator, click Cancel on the request form. Activities are deleted and the request is set to refused.

Accounting
+-- Approvals
|   +-- Approval Requests          (User + Admin)
+-- Configuration
    +-- Approval Stages            (Admin)

Analytic account form (Analytic Accounting): additional section Approval with fields Approval Responsibles and Approval Groups.

Förderfähige Maßnahme

Die Einführung und Anpassung von ERP-Systemen wie Odoo ist in Deutschland förderfähig. Unternehmen können von staatlichen Förderprogrammen profitieren – z. B. über das Programm „go-digital“ des BMWi, „Digital Jetzt“ oder länderspezifische Digitalisierungsförderungen. Wir unterstützen Sie gerne bei der Antragstellung und beraten Sie zu den Möglichkeiten für Ihr Unternehmen.

Interesse geweckt?

Lassen Sie sich unverbindlich beraten – wir zeigen Ihnen, wie dieses Modul in Ihre Prozesse passt.

Beratungsgespräch vereinbaren