With Odoo 13, a lot has changed in the Invoicing and Finance modules. The most significant change probably is that Invoicing no longer exists as a single object. Until last October, with the release of version 13, the analog world acted as a template for the technical invoicing process. You generated an invoice, used „the next number“ on the list, put it on the document, sent it off, and forwarded it to the accounting department. The latter put a date of receipt stamp on it, allocated it to an account, added it to a batch, and finally posted it.

In Odoo, the process used to be almost similar. There was a table or an object called account.invoice, where data records without invoice numbers or dates were created, listing all relevant data: recipient, payment terms, line texts, amounts, taxes, subtotals, grand totals, etc.

Most importantly, revenue and expense accounts as well as accounts receivable, and, if applicable, tax accounts were pre-allocated. This process represented, as it were, the initial account assignment of the past. With the validation, a posting record was generated, which received a sequential number that, in turn, was passed back to the invoice.

In other words, the digital and analog procedure was almost identical.

Now, things are quite different. The invoice itself does no longer exist, and you only have posting records. The journal or book to which a posting record has been assigned helps you to recognize what you are dealing with. Alternatively, you can identify the type of posting record by whether or not it has documents attached to it. Odoo has justified this change by claiming that to have the data on both the invoice and the posting record is redundant.

I do agree with that, and I even think that these changes are an improvement. (The real estate industry, in particular, should love this new approach since contracts will no longer trigger the creation of invoices, but of booking records.)

Unfortunately, there is a catch. Why Odoo has chosen to do this or what the cause for this change was, we cannot even guess. What we can tell you, however, is that at first glance, it looks much worse than it actually is. Still, one likes to be told how to limit the damage.

As we have reported several times already, Odoo 13 contains a module called „invoice_cancel.“ After having overcome another small hurdle, it allows every user to cancel posted invoices, to change and confirm them, and to re-create them under the same invoice number – without an off-setting entry or a balancing post. Although this procedure will be recorded, and the changes made will be version-controlled, this line of action contradicts the underlying accounting principle that posted invoices may not be changed under any circumstances.

The good news is – this module does no longer exist.
The bad news – this module has now been integrated into the Odoo core!

Simply put, all posted invoices may now be canceled, edited, and re-posted under the same transaction number.

Let us have a look at the proof below:

An invoice has been created in draft form:

Now we post it:

Now, only the reference may be edited, everything else is locked, as usual.

But as you can see already, there is one more, rather suspicious button „Reset to Draft.” If you click on this button, the invoice will retain its number, and its status will immediately jump back to “Draft.” What is more, we are now even in edit mode:

And now, we may create not only one, but two „DESK0004“,

and even re-post them directly. Odoo will record the individual steps:

Still, the editability of invoices remains a sensitive topic, and the tolerance for interpretation is low.