| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 5067 |
| Technical Name |
docuware_accounting |
| License | LGPL-3 |
| Website | https://www.codebar.ch |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 5067 |
| Technical Name |
docuware_accounting |
| License | LGPL-3 |
| Website | https://www.codebar.ch |
DocuWare Accounting Import
Turn DocuWare-indexed vendor invoices into posted Odoo bills, with closed-loop status writeback.
codebar Solutions AG
DocuWare Accounting Import polls DocuWare file
cabinets for documents flagged ready-to-import (configurable
status field) and creates Odoo vendor bills or vendor credit
notes from them. Header fields and line items (DocuWare Index
Tables) are mapped to account.move and
account.move.line via a flexible UI; partner,
journal, account, tax and currency are resolved by VAT, code,
external ID, name or email. Per-document audit log, dedupe via
per-connection link records, optional auto-post, and
configurable index-field writeback to DocuWare on success or
error.
Includes one year of updates and helpdesk@codebar.ch support. Requires DW Authentication (free); DW Master Data is strongly recommended.
At a glance
- Vendor bills and credit notes, polled from DocuWare on a configurable schedule.
- Header and line-table mapping configured entirely in the UI — no Python.
- Resolve partners, accounts, taxes and currencies by VAT, code, external ID, name or email.
- Optional auto-post and index-field writeback (status, ODOO_REF, error message) to DocuWare.
- Per-document audit trail with redacted error messages — failed docs become an error inbox.
- Dry-run wizard validates filters before going live; one connection per cabinet/dialog flow.
Who this is for
- Accounting teams whose vendor invoices land in DocuWare via OCR or scan workflows, ready for posting in Odoo.
- Finance operations needing closed-loop status writeback so DocuWare and Odoo never drift out of sync.
- Managed-service partners running multi-cabinet imports per customer, with different mappings and writeback rules.
- Companies replacing manual data entry of scanned bills with a configurable, audited import pipeline.
Key features
Multiple import connections
One Accounting Import Connection per (DocuWare connection, file cabinet, dialog) tuple. A single tenant can feed several import flows with different filters, mappings and writeback policies — for example, one connection per document type or per legal entity.
Header mapping with flexible resolvers
Bind any DocuWare index field to any account.move
field via the UI. Many2one targets resolve by VAT,
code, external ID, name or email, with optional
transforms (strip, upper, lower, parse decimal, parse ISO
date) and a fallback when no match is found. Required-field
validation runs before the move is created.
Table-based booking lines
Each booking’s lines come from a DocuWare Index Table
field on the document. Every row in the table becomes one
account.move.line, with per-column mapping to
account, tax, quantity, price and analytic distribution. Same
resolver and transform options as the header.
Round-trip status writeback
After every import attempt — success or error —
user-configured rules update DocuWare index fields. Triggers:
success, error or always.
Value sources: literal string (e.g.
STATUS = imported-to-odoo), Odoo move field path
(e.g. name, partner_id.vat),
connection field, or the redacted error message. DocuWare and
Odoo stay in lockstep without a separate sync.
Dedupe + per-document audit
A per-(connection, DocuWare document) link record prevents double imports and surfaces failed documents as the operator’s error inbox. Every event lands in the shared DocuWare log with redacted payloads, capped error messages, and a deep link back to the original DocuWare document.
Auto-post and PDF attach
Optional auto-post posts valid bills the moment they are imported; validation errors flip the link to error state and fire error-triggered writeback. The original PDF is downloaded and attached to the move, with a deep-link URL back to the DocuWare Web Client on the bill form.
Dry-run wizard
Before going live, the Dry run button on each connection runs the same search as the cron without creating anything in Odoo — it returns the matching document count and a preview of the first hits, so you can validate filters and the status field choice in seconds.
How it works
-
Configure a connection in
DocuWare → Connections (provided by
docuware_authentication) and authorize via OAuth. -
Open DocuWare → Accounting Imports and
create one entry per (cabinet, document type) flow.
Pick the file cabinet, search dialog,
status field and the value that
triggers an import (e.g.
STATUS = ready-to-import-at-odoo). -
Define the header mapping (DocuWare
index field →
account.movefield) and the line mapping (DocuWare table column →account.move.linefield). Resolve relational targets by VAT, code, external ID, name or email. - Add optional writeback rules that fire on success, on error, or always — e.g. flip the DocuWare status, write the Odoo bill number back into DocuWare.
- Click Dry run to validate filters, then enable polling and let the cron run, or click Run now. Imported bills appear in Accounting with the original PDF attached and a deep link back to the DocuWare document. Errors land on the connection’s link list with a redacted message.
The DocuWare connector family
Three modules from codebar Solutions AG, designed to layer. You are looking at the inbound half — turning DocuWare-indexed documents into Odoo bookings.
| Module | Direction | Role |
|---|---|---|
| DW Authentication | Foundation | OAuth, REST client, audit log, shared schema cache. |
| DW Master Data | Odoo → DocuWare | Push contacts, accounts, taxes & any Odoo model as indexed records. |
| DW Accounting Import — you are here | DocuWare → Odoo | Create vendor bills & credit notes from DocuWare documents. |
Why DW Master Data is strongly recommended: this module’s VAT, code and email resolvers match DocuWare values against existing Odoo records. Pushing Odoo’s contacts, chart of accounts and taxes into DocuWare via Master Data ensures the values that arrive on inbound documents match cleanly — without it, every missing master is an import error.
Scope — what this module does and doesn’t do
This module is a vendor-inbound import pipeline. It creates Odoo bookings from DocuWare-indexed documents — nothing more, nothing less.
-
Vendor inbound only. Vendor bills
(
in_invoice) and vendor credit notes (in_refund). Customer invoices, sales orders, purchase orders and receipts are out of scope. - Does not OCR. Index fields and table rows are read from DocuWare as-is; the assumption is that DocuWare’s capture and OCR workflows have already populated them. If DocuWare hasn’t indexed it, this module can’t map it.
- Resolves existing records only. The mapping layer matches DocuWare values against Odoo partners, accounts, taxes and currencies that already exist; it never creates new ones on the fly. To keep the DocuWare side aligned with Odoo’s current data, install DW Master Data.
- Writeback updates index fields, not the file. Round-trip writeback writes back to DocuWare index fields (status, ODOO_REF, error message). The original PDF stays in DocuWare; this module does not delete or re-file it.
- One company, one cabinet per connection. Each Accounting Import Connection is scoped to a single company and a single cabinet/dialog. Multi-company or multi-cabinet setups use multiple connection records.
- Single PDF only. The main document file is downloaded and attached to the move; ancillary attachments on the same DocuWare document are not pulled.
Frequently asked questions
Does this module OCR my invoices?
No. OCR happens upstream in DocuWare. This module reads DocuWare index fields and Index Tables that DocuWare’s capture workflow has already populated, and turns them into Odoo bookings. If a value isn’t indexed in DocuWare, it isn’t available for mapping.
Will it auto-create vendors or accounts I don’t have yet?
No. The relational resolvers (VAT, code, external ID, name, email) match DocuWare values against existing Odoo records. Missing masters become import errors that surface in the connection’s error inbox. Install DW Master Data to push Odoo’s contacts, chart of accounts and taxes into DocuWare so the values that arrive on inbound documents are the same ones Odoo expects.
Can it import customer invoices or sales documents?
No. Only vendor bills (in_invoice) and vendor
credit notes (in_refund). Customer invoices,
sales orders, purchase orders and receipts are out of scope
and not on the roadmap — the mapping model and
writeback semantics are tuned for accounts-payable inbound.
Requirements
- Odoo: 19.0
-
Odoo modules:
docuware_authentication>= 19.1.0.0.0 (provides the OAuth connection, REST client, and the shared cabinet / dialog cache — pulled in automatically) and the standard Accounting app (account). -
Strongly recommended:
docuware_masterdata>= 19.1.0.0.0, which pushes Odoo’s chart of accounts, contacts (with VAT) and taxes into DocuWare so this module’s mapping layer can resolve VAT/code lookups against live DocuWare values. - A DocuWare tenant with one or more file cabinets exposing a status index field and an Index Table field for booking lines.
- Optional: OCA queue_job with a running worker for asynchronous import execution. Without it, polls run inline in the cron / button thread — fine for small deployments. Concurrent runs are serialised by a per-connection PostgreSQL advisory lock, so cron tick N+1 never piles on top of an in-flight tick N.
Module version follows the
19.0.<module_major>.<module_minor>.<patch>
scheme. The leading 19.0. matches the Odoo 19.0
platform version used at runtime.
Permissions
-
docuware_accounting.group_docuware_accounting— read access on connections, links and imported moves; sees the menu but cannot edit configuration. -
docuware_accounting.group_docuware_accounting_manager— full CRUD on connections, mappings and writeback rules. Impliesaccount.group_account_managerso managers can also work with imported bills. -
All DocuWare credentials remain on the
dw.connectionrecord (gated tobase.group_system); this module adds no secret-bearing fields.
Privacy & telemetry
Telemetry is off by default and is configured once on DW Authentication (the connector family shares a single telemetry surface). This module forwards no additional data of its own; with no DSN configured, nothing is sent.
See the DW Authentication description for the full privacy and telemetry details.
Setup walkthrough
Configure a DocuWare connection, create an import connection, map header and line fields, add optional writeback, dry-run, then enable polling.
- Connect DocuWare. Authorize a connection under DocuWare → Connections via DW Authentication, and click Sync to cache cabinets and dialogs.
- Create an import connection. Open DocuWare → Accounting Imports and add one entry per (cabinet, document type) flow. Choose the DocuWare connection, file cabinet and search dialog.
-
Pick the trigger. Set the
status field on the cabinet and the value
that flags a document as ready-to-import (e.g.
STATUS = ready-to-import-at-odoo). Add additional AND-combined filters as needed. -
Map the header. Bind DocuWare index fields
to
account.movefields. For Many2one targets (partner, journal, account, currency), pick a resolver: VAT, code, external ID, name or email. Add transforms and fallbacks where needed. -
Map the lines. Pick the DocuWare Index
Table field that holds the booking lines. For each
column, bind it to an
account.move.linefield with the appropriate resolver. -
Add writeback rules. Optional: configure
rules that fire on success, error or always — e.g.
flip the DocuWare status to
imported-to-odooon success, write the Odoo move name intoODOO_REF, write the redacted error message on failure. - Dry-run. Click Dry run to execute the same search the cron will run, without creating any moves. Review the matching count and the preview to validate filters and the status value.
- Enable polling. Activate the connection and let the cron pick it up (default every 15 minutes, editable in Settings → Technical → Scheduled Actions). Or click Run now for a one-shot poll.
- Review. Imported bills appear in Accounting with the original PDF attached and a deep link back to DocuWare. Errors surface on the connection’s link list and in DocuWare → Sync Log.
Annotated screenshots will follow in a future release.
License & support
Released under LGPL-3.0-or-later .
Built and maintained by codebar Solutions AG. Support: helpdesk@codebar.ch.
Privacy: see codebar.ch for our data protection notice.
Please log in to comment on this module