Compare commits

..

1 Commits

Author SHA1 Message Date
Jonathan Castillo (jcs)
559a611336 [MOV] accounting: rename VAT verification filename and title 2023-06-06 16:22:37 +02:00
43 changed files with 209 additions and 525 deletions

View File

@@ -193,7 +193,7 @@ todo_include_todos = False
intersphinx_mapping = {
'python': ('https://docs.python.org/3/', None),
'werkzeug': ('https://werkzeug.palletsprojects.com/en/2.3.x/', None),
'werkzeug': ('https://werkzeug.palletsprojects.com/en/1.0.x/', None),
}
github_user = 'odoo'

View File

@@ -4,8 +4,8 @@ Follow-up on invoices
A follow-up message can be sent to customers when a payment is overdue. Odoo helps you identify late
payments and allows you to schedule and send the appropriate reminders using **follow-up actions**
that automatically trigger one or more actions according to the number of overdue days. You can send
your follow-ups via different means, such as email, post, or SMS.
that trigger automatically one or more actions according to the number of overdue days. You can send
your follow-ups via different means such as email, post, or SMS.
.. seealso::
- `Odoo Tutorials: Payment Follow-up <https://www.odoo.com/slides/slide/payment-follow-up-1682>`_
@@ -48,7 +48,7 @@ options:
- **%(company_name)s**: User's company name.
.. tip::
Set a negative number of days to send a reminder before the actual due date.
To send a reminder before the actual due date is reached, set a negative number of due days.
Follow-up reports
=================
@@ -66,15 +66,16 @@ It is up to you to decide how to remind your customer. You can select :guilabel:
:guilabel:`Done` to view the next follow-up that needs your attention.
.. note::
- The contact information on the invoice or the contact form is used to send the reminder.
- The contact information available on the invoice or on the contact form is used to send the
reminder.
- When the reminder is sent, it is documented in the chatter of the invoice.
- If it is not the right time for a reminder, you can specify the :guilabel:`Next Reminder Date`
and click on :guilabel:`Remind me later`. You will get the next report according to the next
reminder date set on the statement.
.. tip::
Reconcile all bank statements right before launching the follow-up process to avoid sending a
reminder to a customer that has already paid.
Reconcile your bank statements right before launching your follow-up process to avoid sending a
reminder to a customer that has already paid you.
Debtor's trust level
--------------------

View File

@@ -4,533 +4,231 @@
Expenses
========
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
in Odoo, the expenses are reviewed by management and accounting teams. Once approved, payments can
then be processed and disbursed back to the employee for reimbursement(s).
**Odoo Expenses** streamlines the management of expenses. Employees can submit their expenses;
managers can approve them; accountants can record them and process the payments.
.. seealso::
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
- `Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
Set expense types
=================
The first step to track expenses is to configure the different *expense types* for the company
(managed as *products* in Odoo). Each "product" can be as specific or generalized as needed. Go to
:menuselection:`Expenses app --> Configuration --> Expense Products` to view the current expensable
products in a default kanban view.
.. image:: expenses/products.png
:align: center
:alt: Set expense costs on products.
To create a new expense product, click :guilabel:`Create`. A product form will appear. Only two
fields are required, the :guilabel:`Product Name` and the :guilabel:`Unit of Measure`. Enter the
:guilabel:`Product Name` in the field, and select the :guilabel:`Unit of Measure` from the drop-down
menu (most products will be set to :guilabel:`Units`).
.. tip::
The *Sales* app is where specification on the units of measure are created and edited (e.g.
units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and
ensure `Units of Measure` is checked off in the `Product Catalog` section. Click on the
:guilabel:`Units of Measure` internal link to view, create, and edit the units of measure. Refer
to :doc:`this document </applications/inventory_and_mrp/inventory/management/products/uom>` to
learn more about units of measure and how to configure them.
.. image:: expenses/new-expense-product.png
:align: center
:alt: Set expense costs on products.
The :guilabel:`Cost` field on the product form is populated with a value of `0.00` by default. When
a specific expense should always be reimbursed for a particular price, enter that amount in the
:guilabel:`Cost` field. Otherwise, leave the :guilabel:`Cost` set to `0.00`, and employees will
report the actual cost when submitting an expense report.
.. example::
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
:guilabel:`Cost` at `0.00`:
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal, they
enter the actual amount of the bill and will be reimbursed for that amount. An expense for a
meal costing $95.23 would equal a reimbursement for $95.23.
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
"mileage", they enter the number of miles driven, and are reimbursed 0.30 per mile they
entered. An expense for 100 miles would equal a reimbursement for $30.00.
- **Monthly Parking**: Set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
"monthly parking", the reimbursement would be for $75.00.
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An
expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and
the reimbursement would be for $350.00.
Select an :guilabel:`Expense Account` if using the Odoo *Accounting* app. It is recommended to check
with the accounting department to determine the correct account to reference in this field as it
will affect reports.
Set a tax on each product in the :guilabel:`Vendor Taxes` and :guilabel:`Customer Taxes` fields if
applicable. It is considered good practice to use a tax that is configured with :ref:`Tax Included
in Price <taxes/included-in-price>`. Taxes will be automatically configured if this is set.
.. _expenses/new:
Record expenses
===============
Manually create a new expense
-----------------------------
To record a new expense, begin in the main :menuselection:`Expenses` app dashboard, which presents
the default :guilabel:`My Expenses to Report` view. This view can also be accessed from
:menuselection:`Expenses app --> My Expenses --> My Expenses to Report`.
First, click :guilabel:`Create`, and then fill out the various fields on the form.
- :guilabel:`Description`: Enter a short description for the expense in the :guilabel:`Description`
field. This should be short and informative, such as `lunch with client` or `hotel for
conference`.
- :guilabel:`Product`: Select the product from the drop-down menu that most closely corresponds to
the expense. For example, an airplane ticket would be appropriate for an expense
:guilabel:`Product` named :guilabel:`Air Travel`.
- :guilabel:`Unit Price`: Enter the total amount paid for the expense in one of two ways:
#. If the expense is for one single item/expense, enter the cost in the :guilabel:`Unit Price`
field, and leave the :guilabel:`Quantity` `1.00`.
#. If the expense is for multiples of the same item/expense, enter the price *per unit* in the
:guilabel:`Unit Price` field, and enter the *quantity of units* in the :guilabel:`Quantity`
field.
.. example::
In the case of a hotel stay, for example, the :guilabel:`Unit Price` would be set as the
cost *per night*, and set the :guilabel:`Quantity` to the *number of nights* stayed.
- :guilabel:`Taxes`: If taxes were paid on the expense, select the tax percentage using the
drop-down menu. Tax options are pre-configured based on the localization setting selected when the
database was created. Adding any new taxes should only be done when necessary.
.. note::
When a tax is selected, the :guilabel:`Total` value will update in real time to show the added
taxes.
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
reimbursed. If the employee paid for the expense (and should be reimbursed) select
:guilabel:`Employee (to reimburse)`. If the company paid directly instead (e.g. if the company
credit card was used to pay for the expense) select :guilabel:`Company`.
- :guilabel:`Expense Date`: Using the calendar module, enter the date the expense was incurred. Use
the :guilabel:`< (left)` and :guilabel:`> (right)` arrows to navigate to the correct month, then
click on the specific day to enter the selection.
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
expense, enter it in this field.
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
drop-down menu.
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
customer, select the customer that will be invoiced for this expense from the drop-down menu. For
example, if a customer wishes to have an on-site meeting, and agrees to pay for the expenses
associated with it (such as travel, hotel, meals, etc.), then all expenses tied to that meeting
would indicate that customer as the :guilabel:`Customer to Reinvoice`.
- :guilabel:`Analytic Account`: Select the account the expense should be written against from the
drop-down menu.
- :guilabel:`Company`: If multiple companies are set-up, select the company this expense should be
filed for from the drop-down menu. If there is only one company, this field will be automatically
populated.
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
notes field.
Once all the fields have been filled out, click :guilabel:`Save`.
.. image:: expenses/expense-filled-in.png
:align: center
:alt: A filled in expense form for a client lunch.
Attach a receipt
~~~~~~~~~~~~~~~~
After the expense is saved, the next step is to attach a receipt. A new :guilabel:`Attach Receipt`
button appears after the entry is saved, beneath the former :guilabel:`Save` button (which turns
into an :guilabel:`Edit` button).
.. image:: expenses/save-receipt.png
:align: center
:alt: Attach a receipt after saving the record.
Click the new :guilabel:`Attach Receipt` button, and a file explorer appears. Navigate to the
receipt to be attached, and click :guilabel:`Open`. A new :guilabel:`Receipts` smart button appears
at the top, and the new receipt is recorded in the chatter. More than one receipt can be attached to
an individual expense, as needed. The number of receipts attached to the expense will be noted on
the smart button.
.. image:: expenses/receipt-smartbutton.png
:align: center
:alt: Attach a receipt after saving the record.
Automatically create new expenses from an email
-----------------------------------------------
Instead of individually creating each expense in the *Expenses* app, expenses can be automatically
created by sending an email to an email alias.
To do so, first, an email alias needs to be configured. Go to :menuselection:`Expenses app -->
Configuration --> Settings`. Ensure :guilabel:`Incoming Emails` is checked off.
.. image:: expenses/email-alias.png
:align: center
:alt: Create the domain alias by clicking the link.
.. note::
If the domain alias needs to be set up, :guilabel:`Setup your domain alias` will appear beneath
the incoming emails check box instead of the email address field. Refer to this documentation for
setup instructions and more information: :doc:`/administration/maintain/domain_names`. Once the
domain alias is configured, the email address field will be visible beneath the incoming emails
section.
Next, enter the email address to be used in the email field, then click :guilabel:`Save`. Now that
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 in the email subject. 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 product's internal reference, go to :menuselection:`Expenses app -->
Configuration --> Expense Products`. If an internal reference is listed on the product, it is
visible in this view as :guilabel:`(Ref###)`.
.. image:: expenses/internal-ref-numbers.png
:align: center
:alt: Internal reference numbers are listed in the main Expense Products view.
To add an internal reference on an expense product, click on the product, then click
:guilabel:`Edit`. In edit mode, enter the :guilabel:`Internal Reference` in the field. Beneath the
:guilabel:`Internal Reference` field, this sentence appears: :guilabel:`Use this reference as a
subject prefix when submitting by email.`.
.. image:: expenses/meals-internal-reference.png
:align: center
:alt: Internal reference numbers are listed in the main Expense Products view.
.. 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 :guilabel:`Employees` app, and refer to the :guilabel:`Work Email` in the main field.
.. image:: expenses/authenticated-email-address.png
:align: center
:alt: Create the domain alias by clicking the link.
.. example::
If submitting an expense via email for a $25.00 meal during a work trip, the email subject would
be `Ref005 Meal $25.00`.
Explanation:
- The :guilabel:`Internal Reference` for the expense product `Meals` is `Ref005`
- The :guilabel:`Cost` for the expense is `$25.00`
Create an expense report
How to set expense types
========================
When expenses are ready to submit (such as at the end of a business trip, or once a month), an
*expense report* needs to be created. Go to the main :menuselection:`Expenses` app dashboard, which
displays a default :guilabel:`My Expenses` view, or go to :menuselection:`Expenses app --> My
Expenses --> My Expenses to Report`.
The first step to track expenses is to configure the expense types (managed as products in Odoo)
that your company allows, from the *Configuration* menu.
When a specific expense is reimbursed at a fixed price, set a cost on the product.
Otherwise keep the cost at 0.0 and employees will report the real cost per expense.
First, each individual expense for the report must be selected by clicking the check box next to
each entry, or quickly select all the expenses in the list by clicking the check box next to
:guilabel:`Expense Date`.
.. image:: expenses/create-report.png
.. image:: expenses/product.png
:align: center
:alt: Select the expenses to submit, then create the report.
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
appears with all the expenses listed, and the number of documents is visible in the
:guilabel:`Documents` smart button.
Here are some examples:
It is recommended to add a short summary for each report to help keep expenses organized. Click the
:guilabel:`Edit` button, and the :guilabel:`Expense Report Summary` field appears. Enter a short
description for the expense report (such as `Client Trip NYC`, or `Repairs for Company Car`). Next,
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
* Restaurant:
.. image:: expenses/expense-report-summary.png
* Cost: 0.00 (the cost of the ticket will be recorded on every expense)
* Travel with Personal Car:
* Cost: 0.30 (the price per mile reimbursed by the company is fixed)
* Hotel:
* Cost: 0.00 (the cost of the ticket will be recorded on every expense)
* Others:
* Cost: 0.0
Don't forget to set an expense tax on each expense type
(and an account if you use Odoo Accounting).
It's usually a good practice to use a tax that is configured
with :ref:`Tax Included in Price <taxes/included-in-price>`.
That way, employees report expenses with
prices including taxes, which is usually the expected behaviour.
.. tip::
The *Sales* app allows you to specify units of measure for your
expense types (units, miles, nights, etc.).
Go to :menuselection:`Sales --> Configuration --> Settings` and check
*Some products may be sold/purchased in different units of measure (advanced)*.
How to record expenses
======================
Manually
--------
As an employee (Employee in user access rights), you can record
expenses from :menuselection:`My Expenses --> Expenses to Submit`.
.. image:: expenses/submit_01.png
:align: center
:alt: Enter a short description and select a manager for the report.
If some expenses are not on the report that should be, they can still be added. Click :guilabel:`Add
a line` at the bottom of the :guilabel:`Expense` tab. Click the check box next to each expense to
add, then click :guilabel:`Select`. The items now appear on the report that was just created.
1. Select the related product and enter either the total amount
you paid (with Quantity = 1) or the unit price if Quantity is
countable (e.g. number of hotel nights).
2. Enter the expense date.
3. Choose if you paid the bill on your own (and expect to be reimbursed)
or if the company paid directly (e.g. if you used a company's credit card).
4. Set the bill reference, add some notes if requested and attach a
photo/scan of the receipt from the discussion thread.
That will help the manager and the accountant validate it.
.. image:: expenses/add-an-expense-line.png
.. image:: expenses/submit_02.png
:align: center
:alt: Add more expenses to the report before submitting.
.. note::
:guilabel:`Add a line` only appears when the document is in edit mode. It does not appear
otherwise.
When all edits have been completed, click :guilabel:`Save`.
Submit an expense report
In one click from emails
------------------------
When an expense report is completed, the next step is to submit the report to a manager for
approval. Reports must be individually submitted, and cannot be submitted in batches. Open the
specific report from the list of expense reports (if the report is not already open). To view all
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
Let your employees record their expenses from a simple email.
Make a snapshot of the receipt and send it by email, or simply forward a bill!
If the list is large, grouping the results by status may be helpful since only reports that are in a
:guilabel:`Draft` mode need to be submitted, reports with an :guilabel:`Approved` or
:guilabel:`Submitted` status do not.
The only thing to do is setting up an email alias in
:menuselection:`Expenses --> Configuration --> Settings` (e.g. *expenses* @mycompany.odoo.com).
For security purposes, only authenticated employee emails
(cfr. *Work Email* in employee detail form) are accepted.
.. image:: expenses/expense-status.png
.. tip::
The expense product is set automatically if the mail subject contains
the product's internal reference in first position.
Type the expense amount in the mail subject to set it on the expense too (e.g. Ref001 Food 100€).
How to submit expenses to managers
==================================
When you are ready to submit your expenses to your manager
(e.g. at the end of a business trip, or once a month),
go to the menu :menuselection:`My Expenses --> Expenses to Submit`. Select all expenses
from the list view and click on :menuselection:`Action --> Submit to Manager`.
Save the newly created expense report (i.e. set of expenses),
and wait for your manager to approve it.
.. image:: expenses/submit_03.png
:align: center
:alt: Submit the report to the manager.
You can also submit expenses one by one from the *Submit to Manager*
button on the form view of an expense.
All your submitted expense reports can be found in
:menuselection:`Expenses --> My Expenses --> Expense Reports`.
How to approve expenses
=======================
HR and team managers get an overview of all expense reports to
validate from the top menu :menuselection:`To Approve --> Expense Reports to Approve`.
Such users must have at least *Officers* access rights for *Expenses*.
.. image:: expenses/approval_01.png
:align: center
They can review expense reports, approve or reject them, as well as providing
feedback thanks to the integrated communication tool.
.. image:: expenses/approval_02.png
:align: center
As a team manager you can easily find the expense reports of your team members.
You need to be set as manager in the detail form of those employees.
.. image:: expenses/approval_03.png
:align: center
How to post expenses in accounting
==================================
Once expense reports approved by managers, the accounting department
goes to :menuselection:`Expenses --> Accountant --> Expense Reports To Post` to check
accounts, products and taxes. They can click *Post Journal Entries*
to post related journal entries into your books.
To do so, the user must have following access rights:
* Accounting: Accountant or Adviser
* Expenses: Manager
.. note::
The status of each report is shown in the :guilabel:`Status` column on the far right. If the
:guilabel:`Status` column is not visible, click the :guilabel:`⋮ (additional options)` icon at
the end of the row, and check the box next to :guilabel:`Status`.
To post an expense, a *Home Address* must be set on the employee.
If you get a related blocking message when posting, click the employee,
go to *Personal Information* tab and select/create the contact of your employee
in the address book.
A contact has been automatically created if this person is using Odoo.
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
the next step is to wait for the manager to approve it.
How to reimburse employees
==========================
.. important::
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
**only** for users with the *necessary rights*.
You can now see all the expense reports to reimburse in
:menuselection:`Expenses --> Accountant --> Expense Reports To Pay`.
To record the payment or pay by check, click *Register a Payment*.
.. _expenses/approve:
See how you can easily manage the payment process in Odoo:
Approve expenses
================
* :doc:`accounting/payments/pay_checks`
* :doc:`accounting/payments/pay_sepa`
In Odoo, not just anyone can approve expense reports— only users with the necessary rights (or
permissions) can. This means that a user must have at least *Team Approver* rights for the
*Expenses* app. Employees with the necessary rights can review expense reports, and approve or
reject them, as well as provide feedback thanks to the integrated communication tool.
To see who has rights to approve, go to the main :menuselection:`Settings` app and click on
:guilabel:`Manage Users`.
How to re-invoice expenses to your customers
============================================
.. note::
If the *Settings* app is not available, then certain rights are not set on the account. In the
:guilabel:`Access Rights` tab of a user's card in the :menuselection:`Settings` app, the
:guilabel:`Administration` section is set to one of three options:
- :guilabel:`None (blank)`: The user cannot access the *Settings* app at all.
- :guilabel:`Access Rights`: The user can only view the :guilabel:`User's & Companies` section of
the *Settings* app.
- :guilabel:`Settings`: The user has access to the entire *Settings* app with no restrictions.
Please refer to :doc:`this document </applications/general/users/manage_users>` to learn more
about managing users and their access rights.
Click on an individual to view their card, which displays the :guilabel:`Access Rights` tab in the
default view. Scroll down to the :guilabel:`Human Resources` section. Under :guilabel:`Expenses`,
there are four options:
- :guilabel:`None (blank)`: A blank field means the user has no rights to view or approve expense
reports, and can only view their own.
- :guilabel:`Team Approver`: The user can only view and approve expense reports for their own
specific team.
- :guilabel:`All Approver`: The user can view and approve any expense report.
- :guilabel:`Administrator`: The user can view and approve any expense report as well as access the
reporting and configuration menus in the *Expenses* app.
Users who are able to approve expense reports (typically managers) can easily view all expense
reports to validate. Go to :menuselection:`Expenses app --> Expense Reports --> Reports to
Approve`. This view lists all the expense reports that have been submitted but not approved, as
noted by the :guilabel:`Submitted` tag in the status column.
.. image:: expenses/reports-to-approve.png
:align: center
:alt: Reports to validate are found on the Reports to Approve page.
Reports can be approved in two ways (individually or several at once) and refused only one way. To
approve multiple expense reports at once, remain in the list view. First, select the reports to
approve by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
to select all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
:guilabel:`Approve Report`.
.. image:: expenses/approve-report.png
:align: center
:alt: Approve multiple reports by clicking the checkboxes next to each report.
To approve an individual report, click on a report to go to a detailed view of that report. In this
view, several options are presented: :guilabel:`Approve`, :guilabel:`Refuse`, or :guilabel:`Reset to
draft`. Click :guilabel:`Approve` to approve the report.
If :guilabel:`Refuse` is clicked, a pop-up window appears. Enter a brief explanation for the refusal
in the :guilabel:`Reason to refuse Expense` field, then click :guilabel:`Refuse`.
.. image:: expenses/refuse-expense.png
:align: center
:alt: Send messages in the chatter.
Team managers can easily view all the expense reports for their team members. While in the
:guilabel:`Reports to Approve` view, click on :guilabel:`Filters`, then click :guilabel:`My Team`.
This presents all the reports for the manager's team.
.. image:: expenses/my-team-filter.png
:align: center
:alt: Select the My Team filter.
.. note::
If more information is needed, such as a receipt is missing, communication is easy from the
chatter. In an individual report, simply type in a message, tagging the proper person (if
needed), and post it to the chatter by clicking :guilabel:`Send`. The message is posted in the
chatter, and the person tagged will be notified via email of the message, as well as anyone
following.
.. image:: expenses/chatter.png
:align: center
:alt: Send messages in the chatter.
.. _expenses/post:
Post expenses in accounting
===========================
Once an expense report is approved, the next step is to post the report to the accounting journal.
To view all expense reports to post, go to :menuselection:`Expenses --> Expense Reports --> Reports
To Post`.
.. image:: expenses/post-reports.png
:align: center
:alt: View reports to post by clicking on expense reports, then reports to post.
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
post multiple expense reports at once, remain in the list view. First, select the reports to post by
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
:guilabel:`Post Entries`.
.. image:: expenses/post-entries.png
:align: center
:alt: Post multiple reports from the Post Entries view.
To post an individual report, click on a report to go to the detailed view of that report. In this
view, several options are presented: :guilabel:`Post Journal Entries`, :guilabel:`Report In Next
Payslip`, or :guilabel:`Refuse`. Click :guilabel:`Post Journal Entries` to post the report.
If :guilabel:`Refuse` is clicked, a pop-up window appears. Enter a brief explanation for the refusal
in the :guilabel:`Reason to refuse Expense` field, then click :guilabel:`Refuse`. Refused reports
can be viewed by going to :menuselection:`Expenses app --> Expense Reports --> All Reports`. This
list shows all reports, including the refused ones.
.. note::
To post expense reports to an accounting journal, the user must have following access rights:
- Accounting: Accountant or Adviser
- Expenses: Manager
.. _expenses/reimburse:
Reimburse employees
===================
After an expense report is posted to an accounting journal, the next step is to reimburse the
employee. To view all expense reports to pay, go to :menuselection:`Expenses --> Expense Reports -->
Reports To Pay`.
.. image:: expenses/reports-to-pay.png
:align: center
:alt: View reports to pay by clicking on expense reports, then reports to pay.
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
to select all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
:guilabel:`Register Payment`.
.. image:: expenses/register-payment.png
:align: center
:alt: Post multiple reports by clicking the checkboxes, clicking the gear, then post the entries.
To pay an individual report, click on a report to go to a detailed view of that report. Click
:guilabel:`Register Payment` to pay the employee.
Re-invoice expenses to customers
================================
If expenses are tracked on customer projects, expenses can be automatically charged back to the
customer. This is done by creating an expense report, then creating a sales order with the expensed
items on it. Then, managers approve the expense report, and the accounting department posts the
journal entries. Finally, the customer is invoiced.
If you track expenses on customer projects, you can charge them back to
your customers automatically.
Setup
-----
First, specify the invoicing policy for each expense product. Go to :menuselection:`Expenses app -->
Configuration --> Expense Products`. Click on the expense product to edit, then click
:guilabel:`Edit`. Under the :guilabel:`Invoicing` section, select the :guilabel:`Invoicing Policy`
and :guilabel:`Re-Invoicing Policy` by clicking the radio button next to the desired selection.
- Enable **Customer Billing** in the Expenses settings
:guilabel:`Invoicing Policy`:
- Go to the product configuration menu and set the invoicing method on
all your Expense types:
- :guilabel:`Ordered quantities`: Expense product will only invoice expenses based on the ordered
quantity.
- :guilabel:`Delivered quantities`: Expense product will only invoice expenses based on the
delivered quantity.
- Ordered quantities: it will invoice expenses based on the ordered
quantity
:guilabel:`Re-Invoicing Policy`:
- Delivered quantities: it will invoice expenses based on the
expenses quantity
- :guilabel:`No`: Expense product will not be re-invoiced.
- :guilabel:`At cost`: Expense product will invoice expenses at their real cost.
- :guilabel:`At sales price`: Expense product will invoice the price set on the sale order.
- At cost: will invoice expenses at their real cost.
Create an expense
-----------------
- At sales price: will invoice based on a fixed sales price set on
the sale order.
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
entered in order to re-invoice a customer. Select the :guilabel:`Customer to Reinvoice` from the
drop-down menu. Next, select the :guilabel:`Analytic Account` the expense will be posted to.
.. image:: expenses/invoicing_01.png
:align: center
.. image:: expenses/reinvoice-expense.png
:align: center
:alt: Ensure the customer to be invoiced is called out on the expense.
Create an order
---------------
Create a quote and sales order
------------------------------
- As a salesman, create and confirm a Sales Order for the services
delivered to your customer. If you don't put any expense in the
order, it will be added automatically once posted by the
accountant.
In the :menuselection:`Sales` app, create a quote for the customer being invoiced, listing the
expense products. First, click :guilabel:`Create` to create a new quotation. Next, select the
:guilabel:`Customer` being invoiced for the expenses from the drop-down menu.
- Link the expense to the Sale Order.
In the :guilabel:`Order Lines` tab, click :guilabel:`Add a product`. In the :guilabel:`Product`
field, select the first item being invoiced from the drop-down menu, or type in the product name.
Then, update the :guilabel:`Quantity`, the :guilabel:`Delivered` quantity, and the :guilabel:`Unit
Price` if needed. Repeat this for all products being invoiced. When all the products have been added
to the quote, click :guilabel:`Confirm` and the quotation becomes a sales order.
.. image:: expenses/invoicing_02.png
:align: center
.. image:: expenses/expenses-salesorder.png
:align: center
:alt: Create and confirm the sales order with the expenses listed as products.
Submit, validate and post expenses
----------------------------------
Once the quote turns into a sales order, a :guilabel:`Delivered` column appears. The delivered
quantity must be updated for each item. Click on the `0.000` field for each product, and enter the
delivered quantity. When all delivered quantities have been entered, click :guilabel:`Save`.
- As a manager, make sure the analytic account is set on every expense
line on approving expenses reports. Click the line to add one if
missing. Employees are already able to set one when submitting.
Validate and post expenses
--------------------------
.. image:: expenses/invoicing_03.png
:align: center
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic Account` is
set on every expense line of a report. If an :guilabel:`Analytic Account` is missing, click
:guilabel:`Edit` and select the correct account from the drop-down menu, then click
:guilabel:`Approve` or :guilabel:`Refuse`.
The accounting department is typically responsible for :ref:`posting journal entries
<expenses/post>`. Once an expense report is approved, it can then be posted.
- As an accountant, post journal entries.
Invoice expenses
----------------
Once the quote has turned into a sales order, and the expense report has been approved, it is time
to invoice the customer. Go to :menuselection:`Sales app --> To Invoice --> Orders to Invoice` to
view the sales orders ready to be invoiced.
Now you can invoice the order. It shows up in
:menuselection:`Sales --> Invoicing --> Sales`
to Invoice. The expenses have been added automatically in the order
lines. Such items show up in blue (i.e. to invoice).
Next, find the sales order related to the expense report, click into it, and then click
:guilabel:`Create Invoice` and a :guilabel:`Create invoices` pop-up window appears. Select if the
invoice is a :guilabel:`Regular invoice`, :guilabel:`Down payment (percentage)`, or :guilabel:`Down
payment (fixed amount)` by clicking the radio button next to the selection. For either down payment
options, enter the amount (fixed or percentage) in the :guilabel:`Down Payment Amount` field.
Finally, click either :guilabel:`create and view invoice` or :guilabel:`create invoice`.
.. image:: expenses/invoicing_04.png
:align: center
e (i.e. to invoice).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -47,10 +47,8 @@ API Key and Client Key
In order to retrieve the API Key and the Client Key, log into your Adyen account, go to
:menuselection:`Developers --> API Credentials`.
- If you already have an API user, open it.
- If you don't have an API user yet, click on **Create new credential**.
Go to :menuselection:`Server settings --> Authentification` and copy or generate your **API Key**.
Be careful to copy your API key as you'll not be allowed to get it later without generating a new
one.
@@ -90,30 +88,17 @@ You have to save the webhook to finalize its creation.
.. _adyen/urls:
API URLs
~~~~~~~~
URLs
~~~~
All Adyen API URLs include a customer area-specific prefix generated by Adyen. To configure the
URLs, proceed as follows:
To retrieve the URLs, log into your Adyen account, go to :menuselection:`Developers --> API URLs`.
Select one of the URLs listed next to :guilabel:`Classic Recurring API` as your
:guilabel:`Recurring API URL` and one listed next to :guilabel:`Checkout API` as your
:guilabel:`Checkout API URL`.
#. Log into your Adyen account, then go to :menuselection:`Developers --> API URLs`.
#. Copy the :guilabel:`Prefix` for your live Customer area (i.e., **data center**) and save it for
later.
.. image:: adyen/adyen-api-urls.png
:alt: Copy the prefix for the Adyen APIs
#. In Odoo, :ref:`navigate to the payment acquirer Adyen <payment_acquirers/add_new>`.
#. In the :guilabel:`Checkout API URL` field, enter the following URL and replace `yourprefix` with the
prefix you previously saved: `https://yourprefix.com/checkout`.
#. In the :guilabel:`Recurring API URL` field, enter the following URL and replace `yourprefix` with
the prefix you previously saved: `https://yourprefix.com/pal/servlet/Recurring`.
.. note::
If you are trying Adyen as a test, you can use the following URLs instead:
- :guilabel:`Checkout API URL`: `https://checkout-test.adyen.com/checkout/`
- :guilabel:`Recurring API URL`: `https://pal-test.adyen.com/pal/servlet/Recurring/`
.. image:: adyen/adyen-api-urls.png
:align: center
:alt: Get the links for the different API.
Adyen Account
-------------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -32,7 +32,7 @@ Configure multi-step routes
===========================
First, make sure the :guilabel:`Multi-Step Routes` option is enabled in :menuselection:`Inventory
--> Configuration --> Settings`, under the :guilabel:`Warehouse` heading. After enabling the
--> Configuration --> Settings`, under the ::guilabel:`Warehouse` heading. After enabling the
setting, :guilabel:`Save` the changes.
.. note::
@@ -60,7 +60,7 @@ Shipments`. :guilabel:`Save` the changes to finish.
by default, are labeled :guilabel:`WH/Input` and :guilabel:`WH/Output`, respectively, on the
:guilabel:`Locations` dashboard. To rename these locations, go to :menuselection:`Configuration
--> Locations`, select the :guilabel:`Location` to change, and then click :guilabel:`Edit`. On
the location form, update the :guilabel:`Location Name`, make any other changes (if necessary)
the location form, update the ::guilabel:`Location Name`, make any other changes (if necessary)
and :guilabel:`Save` the changes.
Process a receipt in two steps (input + stock)
@@ -76,12 +76,12 @@ quote as a new purchase order.
.. important::
For businesses with multiple warehouses that have different step configurations, the
:guilabel:`Deliver To` field on the :abbr:`PO (Purchase Order)` form may need to be specified as
:guilabel:`Deliver To` field on the ::abbr:`PO (Purchase Order)` form may need to be specifed as
the correct *input location* connected to the two-step warehouse, which can be done by selecting
the warehouse from the drop-down selection that includes the `Receipts` label at the end of the
name.
After confirming the :abbr:`PO (Purchase Order)`, a :guilabel:`Receipt` smart button will appear in
After confirming the ::abbr:`PO (Purchase Order)`, a :guilabel:`Receipt` smart button will appear in
the top-right corner of the :abbr:`PO (Purchase Order)` form — click it to reveal the associated
receipt.
@@ -90,8 +90,8 @@ receipt.
:alt: After confirming a purchase order, a Receipt smart button will appear.
.. tip::
Purchase order receipts can also be found in the :menuselection:`Inventory` application. In the
:guilabel:`Overview` dashboard, click the :guilabel:`# to Process` smart button in the
Purchase order receipts can also be found in the :menuselection:`Inventory` application. In
the :guilabel:`Overview` dashboard, click the :guilabel:`# to Process` smart button in the
:guilabel:`Receipts` kanban card.
.. image:: receipts_delivery_two_steps/two-step-receipts-kanban.png
@@ -143,12 +143,12 @@ Create a sales order
--------------------
In the :menuselection:`Sales` application, create a new quote by clicking :guilabel:`Create`. Select
or create a :guilabel:`Customer`, add a storable :guilabel:`Product` to the order lines, and then
(or create) a :guilabel:`Customer`, add a storable :guilabel:`Product` to the order lines, and then
click :guilabel:`Confirm`.
After confirming the :abbr:`SO (Sales Order)`, a :guilabel:`Delivery` smart button will appear in
the top-right corner of the :abbr:`SO (Sales Order)` form. Click it to reveal the associated
delivery forms.
After confirming the ::abbr:`SO (Sales Order)`, a :guilabel:`Receipt` smart button will appear in
the top-right corner of the :abbr:`PO (Sales Order)` form — click it to reveal the associated
receipt.
.. image:: receipts_delivery_two_steps/two-step-sales-quote.png
:align: center
@@ -168,8 +168,8 @@ Process the picking
-------------------
The picking and delivery order will be created once the sales order is confirmed. When the
:guilabel:`Delivery` smart button appears, click it to reveal the :guilabel:`Transfers` dashboard,
which lists both the picking and the delivery orders.
:guilabel:`Delivery` smart button appears, click it to arrive to the :guilabel:`Transfers`
dashboard, which lists both the picking and the delivery orders.
The status of the picking will be :guilabel:`Ready`, since the product must be picked from stock
before it can be shipped. The status of the delivery order will be :guilabel:`Waiting Another
@@ -201,8 +201,8 @@ the :guilabel:`# To Process` smart button in the :guilabel:`Delivery Orders` kan
.. tip::
The delivery order associated with the :abbr:`SO (Sales Order)` can also be quickly accessed by
clicking on the :guilabel:`Delivery` smart button again, and choosing the delivery order on the
:guilabel:`Transfers` page (which should now be marked as :guilabel:`Ready`).
clicking on the ::guilabel:`Delivery` smart button again, and choosing the delivery order on the
::guilabel:`Transfers` page (which should now be marked as ::guilabel:`Ready`).
.. image:: receipts_delivery_two_steps/deliver-two-step-kanban.png
:align: center
@@ -217,5 +217,5 @@ Click on the delivery order associated with the :abbr:`SO (Sales Order)`, then c
the customer location.
Once the delivery order is validated, the product leaves the :guilabel:`WH/Output` location on the
:guilabel:`Transfers` dashboard and moves to the :guilabel:`Partners/Customers` location. Then, the
status of the document will change to :guilabel:`Done`.
:guilabel:`Transfers` dashboard and moves to the :guilabel:`Partners/Customers` location. Then,
the status of the document will change to :guilabel:`Done`.