Skip to content

[IMP] accounting: vendor bill digitization & update PO matching #13928

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 17.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions content/applications/finance/accounting/vendor_bills.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,23 @@ Automatically
-------------

Vendor bills can be automatically created by **sending an email** to an :ref:`email alias
<invoice-digitization/email-alias>` associated with the purchase journal, or by **uploading a PDF**
in :menuselection:`Accounting --> Vendors --> Bills` and then clicking :guilabel:`Upload`.
<accounting/invoice-digitization/email-alias>` associated with the purchase journal, or by
:ref:`uploading a PDF <accounting/invoice-digitization/manual-upload>`.

.. note::
- Once the bill is uploaded, the PDF document appears on the right side of the screen, making it
easy to fill in the bill information.
- Bills can be :doc:`digitized <vendor_bills/invoice_digitization>` for automatic completion.
- Bills can be :doc:`digitized <vendor_bills/invoice_digitization>` for automatic
completion and :ref:`matched with purchase orders
<accounting/invoice-digitization/vendor-bills-matching-po>` to replace OCR-detected data with
purchase order details.
Comment on lines +49 to +50
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<accounting/invoice-digitization/vendor-bills-matching-po>` to replace OCR-detected data with
purchase order details.
<accounting/invoice-digitization/vendor-bills-matching-po>` to replace OCR-detected data with
the existing purchase order's details.

- Services such as digitizing scanned or PDF vendor bills in Odoo require :doc:`In-App
Purchase (IAP) </applications/essentials/in_app_purchase>` credit or tokens.

.. seealso::
:ref:`Vendor bills matching with purchase orders
<accounting/invoice-digitization/vendor-bills-matching-po>`

.. _accounting/vendor_bills/bill-completion:

Bill completion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,99 +2,152 @@
AI-powered document digitization
================================

**Invoice digitization** is the process of converting paper documents into vendor bill and customer
invoice forms in your accounting.
**Digitization** converts paper documents into vendor bills and customer invoices.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • I liked "refers to the process of converting"
  • I don't like using "digitization" on its own here because digitization as a whole is more general, and this particular doc is specific to vendor bills and invoices. Coudl we find something a bit more precise and accurate?
  • I suppose the documents are not necessarily physical paper documents per say (they could be a PDF for example?)


Odoo uses :abbr:`OCR (optical character recognition)` and artificial intelligence technologies to
recognize the content of the documents. Vendor bill and customer invoice forms are automatically
created and populated based on the scanned invoices.
Odoo recognizes the content of documents using :abbr:`OCR (optical character recognition)` and
artificial intelligence technologies. Based on the scanned documents, vendor bills and customer
invoices are automatically created and populated.

.. seealso::
- `Test Odoo's invoice digitization <https://www.odoo.com/app/invoice-automation>`_
- `Odoo Tutorials: Vendor Bill Digitization
<https://www.odoo.com/slides/slide/vendor-bill-digitization-7065>`_
- :doc:`/applications/essentials/in_app_purchase`

.. _accounting/invoice-digitization/configuration:

Configuration
=============

In :menuselection:`Accounting --> Configuration --> Settings --> Digitization`, check the box
:guilabel:`Document Digitization` and choose whether :guilabel:`Vendor Bills` and
:guilabel:`Customer Invoices` (this includes customer credit notes) should be processed
automatically or on demand.
Go to :menuselection:`Accounting --> Configuration --> Settings` and navigate to the
:guilabel:`Digitization` section. Enable the :guilabel:`Document Digitization` option and choose
whether :guilabel:`Vendor Bills` and :guilabel:`Customer Invoices` should be processed automatically
or on demand.

.. note::
If the :guilabel:`Single Invoice Line Per Tax` option is enabled, only one line is created per
tax in the new bill/invoice, regardless of the number of lines on it.

.. _accounting/invoice-digitization/vendor-bills-invoices-upload:

Vendor bills and invoices upload
================================

Vendor bills and invoices are :ref:`uploaded manually
<accounting/invoice-digitization/manual-upload>` or sent to a :ref:`designated email alias
<accounting/invoice-digitization/email-alias>` to be digitized.

.. seealso::
:doc:`Vendor bills <../vendor_bills>`

.. _accounting/invoice-digitization/manual-upload:

If you enable the :guilabel:`Single Invoice Line Per Tax` option, only one line is created per tax
in the new bill, regardless of the number of lines on the invoice.
Uploading manually
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Uploading manually
Manual upload

------------------

Invoice upload
==============
From the :guilabel:`Accounting Dashboard`, click :guilabel:`Upload` on the :guilabel:`Vendor
Bills` journal.

Upload invoices manually
------------------------
Alternatively, go to :menuselection:`Accounting --> Vendors --> Bills` or :menuselection:`Accounting
--> Customers --> Invoices` and click :guilabel:`Upload`.

From the :guilabel:`Accounting Dashboard`, click on the :guilabel:`Upload` button of your vendor
bills journal.
Alternatively, go to :menuselection:`Accounting --> Customers --> Invoices` or
:menuselection:`Accounting --> Vendors --> Bills` and select :guilabel:`Upload`.
.. _accounting/invoice-digitization/email-alias:

.. _invoice-digitization/email-alias:
Uploading using an email alias
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Uploading using an email alias
Upload via email alias

------------------------------

Upload invoices using an email alias
------------------------------------
Vendor bills (or customer invoices) can be uploaded with an email alias in two ways:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Vendor bills (or customer invoices) can be uploaded with an email alias in two ways:
Vendor bills (or customer invoices) can be uploaded via email alias in two ways:

and I think I would mention that this alias is associated with the relevant journal somewhere here?


You can configure your connected scanner to send scanned documents to an email alias. Emails sent to
these aliases are converted into new draft customer invoices or vendor bills.
- scanned from a connected scanner configured to send email to an email alias;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is one example where I would leave "scanned", of course 😉 !

- sent directly to an email alias.

You can modify the email alias of a journal. To do so, go to the :guilabel:`Settings` app. Under
:guilabel:`General Settings: Discuss`, enable :guilabel:`Custom Email Servers`, add an
:guilabel:`Alias Domain`, and :guilabel:`Save`.
Each PDF attached to the email is automatically converted into a new draft vendor bill (or customer
invoices).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
invoices).
invoice).

Also, I understand from the note below that it's not just PDFs? do you know how XMLs are processed then? Or do we mean PDFs with embedded XML in the note below? Are there other formats as well?


The email alias is now available in the :guilabel:`Advanced Settings` tab of the journal. Emails
sent to this address will be converted automatically into new invoices or bills.
.. note::
- Only PDF and XML formats are processed via email alias associated with a journal.
- JPEG files must be processed via :ref:`email alias in the Documents app <documents/upload>`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- JPEG files must be processed via :ref:`email alias in the Documents app <documents/upload>`
- JPEG files must be processed via :ref:`email alias in the Documents app <documents/upload>`.

Also, I think I would point to this section of the Documents doc instead: https://www.odoo.com/documentation/17.0/applications/productivity/documents.html#digitize-documents-with-ai-and-optical-character-recognition-ocr


To add an email alias to a journal, follow these steps:

#. Open the Settings app, navigate to the :guilabel:`Discuss` section, enable :guilabel:`Custom
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#. Open the Settings app, navigate to the :guilabel:`Discuss` section, enable :guilabel:`Custom
#. Open the Settings app, navigate to the :guilabel:`Discuss` section, enable :guilabel:`Use Custom

Email Servers`, and :guilabel:`Save`.
#. :ref:`Add an Alias Domain <email-inbound-custom-domain>`.
#. The default email aliases `vendor-bills@` and `customer-invoices@` followed by the
:guilabel:`Alias Domain` set, are automatically created and available in the :guilabel:`Advanced
Comment on lines +76 to +77
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#. The default email aliases `vendor-bills@` and `customer-invoices@` followed by the
:guilabel:`Alias Domain` set, are automatically created and available in the :guilabel:`Advanced
#. The default email aliases `vendor-bills@` and `customer-invoices@` followed by the
alias domain, are automatically created and available in the :guilabel:`Advanced

since we are referring to the general concept here

Settings` tab of the :guilabel:`Vendor Bills` and :guilabel:`Customer Invoices` journals,
respectively.
#. To change a default email alias, go to :menuselection:`Accounting --> Configuration -->
Journals`, select the corresponding journal, and edit the :guilabel:`Email Alias` on the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Journals`, select the corresponding journal, and edit the :guilabel:`Email Alias` on the
Journals`, select the corresponding journal, and edit the :guilabel:`Email Alias` in the

:guilabel:`Advanced Settings` tab.
#. Configure the connected scanner to send scanned documents to the email alias, if needed.

.. note::
If you use the :doc:`Documents </applications/productivity/documents>` app, you can automatically
send your scanned invoices to the :guilabel:`Finance` workspace (e.g.,
Alternatively, an :ref:`email alias in the Documents app <documents/upload>` can be used to
automatically send scanned bills/invoices to the :guilabel:`Finance` workspace (e.g.,
`inbox-financial@example.odoo.com`).

The default email aliases `vendor-bills@` and `customer-invoices@` followed by the
:guilabel:`Alias Domain` you set are automatically created for the :guilabel:`Vendor Bills` and
:guilabel:`Customer Invoices` journals, respectively. Emails sent to these addresses are converted
automatically into new invoices or bills.
.. _accounting/invoice-digitization/digitization:

Digitization and data recognition with AI
=========================================

Depending on the :ref:`settings <accounting/invoice-digitization/configuration>`, the document is
either digitized automatically or requires manual processing.
Comment on lines +95 to +96
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Depending on the :ref:`settings <accounting/invoice-digitization/configuration>`, the document is
either digitized automatically or requires manual processing.
Depending on the :ref:`settings <accounting/invoice-digitization/configuration>`, documents are
either digitized automatically or require manual processing.


To manually digitize an :ref:`uploaded vendor bill
<accounting/invoice-digitization/vendor-bills-invoices-upload>`, follow these steps:

To change a default email alias, go to
:menuselection:`Accounting --> Configuration --> Accounting: Journals`. Select the journal you want
to edit, click on the :guilabel:`Advanced Settings` tab, and edit the `Email Alias`.
#. In the uploaded vendor bill, click :guilabel:`Digitize document`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see this 🙈
EDIT: actually I see but only if the setting is set to "Digitize on demand", but I guess that's what you meant by "manually digitize", correct? I'd still clarify I think. I was confused because even when documents are digitized automatically, the next steps (refresh, update the fields, etc.) are also useful for automatic digitization, aren't they?

I'd suggest maybe splitting the info:

l98-99: change to something like: To manually digitize an uploaded document, click Digitize document.

Then add: Once the document has been digitized, follow these steps: (or something similar; the list might not even be necessary). Then add the steps.

What do you think? (sorry, I hope this is clear, I realize I just wrote down my whole thought process 😅 )

#. A blue :guilabel:`All fields will be automated by Artificial Intelligence, it might take 5
seconds` banner appears; click :icon:`oi-arrow-right` :guilabel:`Refresh` if needed.
#. If necessary, review and correct the information uploaded during digitization. Click on the
related field(s) to edit and make updates, or click :guilabel:`Reload AI data` to refresh the
data.
Comment on lines +104 to +106
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#. If necessary, review and correct the information uploaded during digitization. Click on the
related field(s) to edit and make updates, or click :guilabel:`Reload AI data` to refresh the
data.
#. If necessary, review and correct the data uploaded during digitization by editing the relevant fields or clicking :guilabel:`Reload AI data` to refresh the data.

Also, I noticed the following:

I uploaded a document, refreshed the data; the Vendor field was still empty. When I went to select a vendor, some data was highlighting in the uploaded document on the right:
image

and I could click it in the document to create a new vendor:
image

I think it might be worth adding a tip with this info maybe? I wasn't able to do it for other fields but you might want to double-check?

#. Click :guilabel:`Confirm` to post the document.

Invoice digitization
====================
This process helps the AI learn and improves data recognition for future digitizations.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need this?


According to your settings, the document is either processed automatically, or you need to click on
:guilabel:`Send for digitization` to do it manually.
.. _accounting/invoice-digitization/vendor-bills-matching-po:

Vendor bills matching with purchase orders
------------------------------------------

When a purchase order is detected on a vendor bill through OCR, Odoo searches the database for a
matching purchase order number. If found, it pulls in as much information as possible from the
purchase order and replaces the OCR-detected data on the vendor bill.
Comment on lines +116 to +118
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m having trouble understanding how this works exactly; I wasn’t able to test it based on the current info or the task description 😞. More specifically:

  1. When does Odoo start looking for a potential match in the POs? Once the (digitized) bill is confirmed?
  2. I see in the Knowledge article linked in the task the PO needs to meet a few condidtions (e.g., the Billing status) for it to be considered a potential match, should we mention those conditions? Are there others?
  3. Then what happens? And what happens if there are several potential matches?
  4. Just in case because I'm not 100% sure: Is this only for digitized documents or is this matching feature also available when we create vendor bills the "standard" (i.e. 100% manual) way?

I suggest reviewing this section a bit to make sure everything is clear and accurate.


For example, the vendor :guilabel:`Bill Reference` number is overwritten by the :guilabel:`Vendor
Reference` from the purchase order.

.. note::
- All changes are logged in the chatter.
- A smart button linking to the related purchase order is available on the vendor bill.

Once the data is extracted from the PDF, you can correct it if necessary by clicking on the
respective tags (available in :guilabel:`Edit` mode) and selecting the proper information instead.
To correct any mismatches, either edit the incorrect section of the purchase order or leave it
blank.

Data recognition with AI
========================
.. tip::
- Use electronic invoices with embedded XML to ensure more accurate and efficient processing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this is actually up to the Odoo user when it comes to digitized documents (since they receive the documents in this case) so maybe we should rephrase this sentence a bit (to remove "use")

- Alternatively, the :ref:`Auto-complete <accounting/vendor_bills/bill-completion>` feature
transfers information from the purchase order to the vendor bill without OCR required.
Comment on lines +132 to +133
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Alternatively, the :ref:`Auto-complete <accounting/vendor_bills/bill-completion>` feature
transfers information from the purchase order to the vendor bill without OCR required.
- Alternatively, the :ref:`Auto-complete <accounting/vendor_bills/bill-completion>` feature
can be used to transfer information from the purchase order to the vendor bill, without requiring OCR.


It is essential to review and correct (if needed) the information uploaded during digitization.
Then, you have to post the document by clicking on :guilabel:`Confirm`. In this manner, the AI
learns, and the system identifies the correct data for future digitizations.
.. _accounting/invoice-digitization/pricing:

Pricing
=======

The **invoice digitization** is an In-App Purchase (IAP) service that requires prepaid credits to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we really keep "invoice" here (you removed it elsewhere on this doc page)? And I would also add "feature": The document (or XX) digitization feature

work. Digitizing one document consumes one credit.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses instead of consumes?


To buy credits, go to :menuselection:`Accounting --> Configuration --> Settings --> Digitization`
and click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> Odoo IAP` and click on
:guilabel:`View My Services`.
To buy credits, :ref:`go to the Settings app <iap/buying_credits>` or :menuselection:`Accounting -->
Configuration --> Settings`, navigate to the :guilabel:`Digitization` section, and click
:guilabel:`Buy credits`.

.. note::
Enterprise Odoo users with a valid subscription get free credits to test IAP features before
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Odoo Enterprise?

deciding to purchase more credits for the database. This includes demo/training databases,
educational databases, and one-app-free databases.
purchasing more credits for the database. This includes demo/training databases, educational
databases, and one-app-free databases.

.. seealso::
- `Our Privacy Policy <https://iap.odoo.com/privacy#header_6>`_
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `Our Privacy Policy <https://iap.odoo.com/privacy#header_6>`_
- `Odoo In-App Purchase Privacy Policy <https://iap.odoo.com/privacy#header_6>`_

Expand Down