[IMP] Expenses: Updating log expenses

closes odoo/documentation#15287

X-original-commit: d86910c36b
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
This commit is contained in:
larm-odoo
2025-11-03 20:05:18 +00:00
parent 4b739cc46b
commit cfbc540122
9 changed files with 91 additions and 91 deletions

View File

@@ -3,81 +3,88 @@ Log expenses
============
Before expenses can be reimbursed, each individual expense needs to be logged in the database.
Expense records can be created in three different ways: :ref:`manually enter an expense record
<expenses/manual_expense>`, :ref:`upload a receipt <expenses/upload_receipt>`, or :ref:`email a
receipt <expenses/email_expense>` to a preconfigured email address.
Expense records can be created in four different ways: :ref:`manually enter an expense record
<expenses/manual_expense>`, :ref:`upload a receipt <expenses/upload_receipt>`, :ref:`drag and drop
<expenses/drag_and_drop>` a receipt onto the **Expenses** app dashboard, or :ref:`email a receipt
<expenses/email_expense>` to a preconfigured email address.
.. _expenses/manual_expense:
Manually enter expenses
=======================
To record a new expense, open the :menuselection:`Expenses app`, which displays the :guilabel:`My
Expenses` page, by default.
To record a new expense, open the **Expenses** app, which displays the :guilabel:`My Expenses` page,
by default.
.. tip::
This view can also be accessed from :menuselection:`Expenses app --> My Expenses --> My
Expenses`.
This view can also be accessed at any time by navigating to :menuselection:`Expenses app --> My
Expenses --> My Expenses`.
Then, click :guilabel:`New`, and then fill out the following fields on the form that appears:
Click the :guilabel:`New` button and fill out the following fields on the blank expense form that
loads:
- :guilabel:`Description`: Enter a short description for the expense. This should be concise and
informative, such as `lunch with client` or `hotel for conference`.
- :guilabel:`Category`: Select the expense category from the drop-down menu that most closely
corresponds to the expense.
informative, such as `Lunch with client` or `Hotel for trade show`.
- :guilabel:`Category`: Using the drop-down menu, select the :doc:`expense category
<expense_categories>` that most closely corresponds to the expense.
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
#. If the expense is for a single item/expense, and the category selected was for a single item,
enter the cost in the :guilabel:`Total` field (the :guilabel:`Quantity` field is hidden).
#. If the expense is for multiples of the same item/expense with a fixed price, the
:guilabel:`Unit Price` is displayed. Enter the quantity in the :guilabel:`Quantity` field, and
the total cost is automatically updated with the correct total. The total cost appears below
the :guilabel:`Quantity`.
:guilabel:`Unit Price` is displayed. Enter the number of units in the :guilabel:`Quantity`
field, and the total cost is automatically updated with the correct total. The total cost
appears below the :guilabel:`Quantity`.
.. example::
In the case of mileage driven, the :guilabel:`Unit Price` is populated as the cost *per
mile*. Set the :guilabel:`Quantity` to the *number of miles driven*, and the total is
calculated.
An employee received one dollar for each mile driven for work. The :guilabel:`Category` is
:guilabel:`[MIL] Mileage`. The :guilabel:`Unit Price` is automatically populated with
`$1.00`, which is the cost *per mile* configured for the expense :guilabel:`Category`
:guilabel:`[MIL] Mileage`. The :guilabel:`Quantity` is set to `48`, which is the *number of
miles driven*, and the total is calculated to `$48.00`.
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
and amount appear automatically after entering either the :guilabel:`Total` or the
- :guilabel:`Included Taxes`: If taxes were configured on the selected expense category, the tax
percentage and amount appear automatically after entering either the :guilabel:`Total` or the
:guilabel:`Quantity`.
.. note::
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value updates
in real time, as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense, and should be
- :guilabel:`Employee`: Using the drop-down menu, select the employee associated with the expense.
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
reimbursed. Select either :guilabel:`Employee (to reimburse)` or :guilabel:`Company`. Depending on
the expense category selected, this field may not appear.
- :guilabel:`Expense Date`: Using the calendar popover window that appears when this field is
clicked, enter the date the expense was incurred.
- :guilabel:`Account`: Using the drop-down menu, select the expense account the expense should be
logged in.
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
customer, select the :abbr:`SO (Sales Order)` and customer that should be invoiced for this
expense from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO
(Sales Order)`, as well as the company the sales order is written for. After the expense is saved,
the customer name disappears, and only the :abbr:`SO (Sales Order)` is visible on the expense.
- :guilabel:`Account`: If the selected expense :guilabel:`Category` has a specific account linked to
it, that account appears in the :guilabel:`Account` field. If no account is specified, the default
`600000 Expenses` account populates this field. If a different account is desired, select the
account the expense should be logged in.
- :guilabel:`Customer to Reinvoice`: If the expense should be paid for by a customer and the
selected :guilabel:`Category` allows for reinvoicing of expenses, select the :abbr:`SO (Sales
Order)` and customer to be invoiced for the expense using the drop-down menu. All sales orders in
the drop-down menu list both the :abbr:`SO (Sales Order)`, as well as the company the sales order
is written for. After the expense is saved, the customer name disappears, and only the :abbr:`SO
(Sales Order)` is visible on the expense.
.. example::
A customer wishes to have an on-site meeting for the design and installation of a custom
garden, and agrees to pay for the expenses associated with it (such as travel, hotel, meals,
etc). All expenses tied to that meeting would indicate the sales order for the custom garden
(which also references the customer) as the :guilabel:`Customer to Reinvoice`.
building, and agrees to pay for all expenses associated with the meeting, including travel,
hotel, and meals for the traveling employees. All expenses tied to that meeting would indicate
the sales order for the custom building (which also references the customer) as the
:guilabel:`Customer to Reinvoice`.
- :guilabel:`Analytic Distribution`: Select the account the expense should be written against from
the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple
accounts can be listed for each category, if needed. Adjust the percentage for each analytic
account by typing in the percentage value next to each account.
- :guilabel:`Company`: If multiple companies are set up, select the company the expense should be
filed for from the drop-down menu. The current company automatically populates this field.
- :guilabel:`Company`: If in a multi-company database, select the company the expense should be
filed for using the drop-down menu. The current company automatically populates this field.
- :guilabel:`Notes...`: If any notes are needed to clarify the expense, enter them in the notes
field.
.. image:: log_expenses/expense-filled-in.png
:align: center
:alt: A filled in expense form for a client lunch.
Attach receipts
@@ -91,18 +98,16 @@ The new receipt is recorded in the *chatter*, and the number of receipts appears
:icon:`fa-paperclip` :guilabel:`(paperclip)` icon. Multiple receipts can be attached to an
individual expense record, as needed.
.. image:: log_expenses/receipt-icon.png
:align: center
:alt: Attach a receipt and it appears in the chatter.
.. _expenses/upload_receipt:
Upload expenses
===============
It is possible to have expense records created automatically, by uploading a PDF receipt. This
feature requires the enabling of a setting, and the purchasing of :abbr:`IAP (in-app purchases)`
credits.
It is possible to have expense records created automatically by :ref:`uploading a PDF receipt
<expenses/upload>`. To utilize this feature, a setting must be enabled, and :abbr:`IAP (in-app
purchases)` credits must be purchased.
.. _expenses/digitalization:
Digitalization settings
-----------------------
@@ -112,16 +117,17 @@ Settings`, and tick the checkbox beside the :guilabel:`Expense Digitization (OCR
click :guilabel:`Save`. When enabled, additional options appear. Click on the corresponding radio
button to select one of the following options:
- :guilabel:`Do not digitize`: turns off receipt digitization.
- :guilabel:`Digitize on demand only`: only digitizes receipts when requested. A
:guilabel:`Digitize document` button appears on expense records. When clicked, the receipt is
scanned and the expense record is updated.
- :guilabel:`Digitize automatically`: automatically digitizes all receipts when they are uploaded.
- :guilabel:`Do not digitize`: Disables receipt digitization but does *not* uninstall the related
digitization module.
- :guilabel:`Digitize on demand only`: Only digitizes receipts when requested. A :guilabel:`Digitize
document` button appears on expense records. When clicked, the receipt is scanned and the expense
record is updated.
- :guilabel:`Digitize automatically`: Automatically digitizes all receipts when they are uploaded.
Beneath these options are two additional links. Click the :icon:`fa-arrow-right` :guilabel:`Buy
credits` link to purchase credits for receipt digitization. Click the :icon:`fa-arrow-right`
:guilabel:`View My Services` link to view a list of all current services, and their remaining credit
balances.
Beneath these options are two additional links. Click the :icon:`fa-arrow-right` :guilabel:`Manage
Service & Buy Credits` link to view account details and settings, and purchase credits for receipt
digitization. Click the :icon:`fa-arrow-right` :guilabel:`View My Services` link to view a list of
all current services, and their remaining credit balances.
For more information on document digitization and :abbr:`IAPs (in-app purchases)`, refer to the
:doc:`In-app purchase (IAP) <../../essentials/in_app_purchase>` documentation.
@@ -135,6 +141,8 @@ For more information on document digitization and :abbr:`IAPs (in-app purchases)
uninstalled, allowing for digitization to be enabled in the future by selecting one of the other
two options.
.. _expenses/upload:
Upload receipts
---------------
@@ -142,11 +150,6 @@ Open the :guilabel:`Expenses app`, and from the :guilabel:`My Expenses` dashboar
:guilabel:`Upload`, and a file explorer appears. Navigate to the desired receipt, select it, then
click :guilabel:`Open`.
.. image:: log_expenses/upload.png
:align: center
:alt: Create an expense by scanning a receipt. Click Scan at the top of the Expenses dashboard
view.
The receipt is scanned, and a new expense record is created. The :guilabel:`Expense Date` field is
populated with today's date, along with any other fields based on the scanned data, such as the
:guilabel:`Total`.
@@ -154,6 +157,18 @@ populated with today's date, along with any other fields based on the scanned da
Click on the new entry to open the individual expense form, and make any changes, if needed. The
scanned receipt appears in the *chatter*.
.. _expenses/drag_and_drop:
Drag and drop an expense
========================
If :ref:`digitalization is enabled <expenses/digitalization>`, drag and drop a receipt onto the
**Expenses** app dashboard. The receipt is scanned and appears by itself on the :guilabel:`Generate
Expenses` dashboard.
Click on the expense record, and modify the details as needed. After changes are made, return to the
:guilabel:`My Expenses` dashboard, and the expense now appears in the list.
.. _expenses/email_expense:
Email expenses
@@ -162,24 +177,24 @@ Email expenses
Instead of individually creating each expense in the **Expenses** app, expenses can be automatically
created by sending an email to an email alias.
.. note::
For security purposes, only authenticated employee emails are accepted by Odoo when creating an
expense from an email. To confirm an authenticated employee email address, go to the employee
card in the :menuselection:`Employees app`, and refer to the :guilabel:`Work Email` field.
.. image:: log_expenses/authenticated-email-address.png
:alt: Create the domain alias by clicking the link.
To do so, an email alias must first be configured. Navigate to :menuselection:`Expenses app -->
Configuration --> Settings`. Ensure the checkbox beside :guilabel:`Incoming Emails` is ticked. The
default email alias is *expense@(domain).com*. Change the email alias by entering the desired email
in the field to the right of :guilabel:`Alias`. Then, click :guilabel:`Save`.
.. image:: log_expenses/alias-email.png
:align: center
:alt: Te default email that populates the expenses email alias.
.. note::
If the domain alias needs to be set up, :icon:`fa-arrow-right` :guilabel:`Setup your domain
alias` appears beneath the :guilabel:`Incoming Emails` checkbox, instead of the email address
field.
.. image:: log_expenses/email-alias.png
:align: center
:alt: Create the domain alias by clicking the link.
Refer to the :doc:`/applications/websites/website/configuration/domain_names` documentation for
setup instructions and more information.
@@ -189,27 +204,21 @@ in the field to the right of :guilabel:`Alias`. Then, click :guilabel:`Save`.
Once the email address has been entered, emails can be sent to that alias to create new expenses,
without having to be in the Odoo database.
To submit an expense via email, create a new email, and enter the product's *internal reference*
code (if available) and the amount of the expense as the subject of the email. Next, attach the
receipt to the email. Odoo creates the expense by taking the information in the email subject, and
combining it with the receipt.
To submit an expense via email, create a new email, and enter the product's *reference* code (if
available) and the amount of the expense as the subject of the email. Next, attach the receipt to
the email. Odoo creates the expense by taking the information in the email subject, and combining it
with the receipt.
To check an expense category's internal reference, go to :menuselection:`Expenses app -->
Configuration --> Expense Categories`. If an internal reference is listed on the expense category,
it is listed in the :guilabel:`Internal Reference` column.
.. tip::
To check an expense category's reference code, go to :menuselection:`Expenses app -->
Configuration --> Expense Categories`. Reference codes are listed in the :guilabel:`Reference`
column.
.. image:: log_expenses/ref.png
:align: center
:alt: Internal reference numbers are listed in the main Expense Categories view.
To add a reference code to an expense category, click on the category to open the expense category
form. Enter the reference code in the :guilabel:`Reference` field.
To add an internal reference on an expense category, click on the category to open the expense
category form. Enter the :guilabel:`Internal Reference` in the corresponding field. Beneath the
:guilabel:`Internal Reference` field, this sentence appears: :guilabel:`Use this reference as a
subject prefix when submitting by email.`
.. image:: log_expenses/mileage-internal-reference.png
:align: center
:alt: Internal reference numbers are listed in the main Expense Products view.
.. image:: log_expenses/ref.png
:alt: Reference categories displayed in the main Expense Categories view.
.. example::
If submitting an expense, via email, for a $25.00 meal during a work trip, the email subject
@@ -217,14 +226,5 @@ subject prefix when submitting by email.`
Explanation:
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
- The :guilabel:`Reference` for the expense category `Meals` is `FOOD`
- The :guilabel:`Cost` for the expense is `$25.00`
.. note::
For security purposes, only authenticated employee emails are accepted by Odoo when creating an
expense from an email. To confirm an authenticated employee email address, go to the employee
card in the :menuselection:`Employees app`, and refer to the :guilabel:`Work Email` field.
.. image:: log_expenses/authenticated-email-address.png
:align: center
:alt: Create the domain alias by clicking the link.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB