diff --git a/content/applications/sales/sales/invoicing/expense.rst b/content/applications/sales/sales/invoicing/expense.rst index d73570b1b..01a47cc20 100644 --- a/content/applications/sales/sales/invoicing/expense.rst +++ b/content/applications/sales/sales/invoicing/expense.rst @@ -1,65 +1,228 @@ -================================ -Re-invoice expenses to customers -================================ +=============================== +Reinvoice expenses to customers +=============================== -It often happens that your employees have to spend their personal money -while working on a project for your client. Let's take the example of a -consultant paying for a hotel to work on the site of your client. As a -company, you would like to be able to invoice that expense to your -client. +While working on a project for a client, employees often have to spend their own money on various +expenses related to the project. -Expenses configuration -====================== +For example, an employee may need to use their own money to pay for a hotel, while they provide an +on-site service for a client. As a company, this expense should be reinvoiced to the customer. With +Odoo, these kinds of expenses can quickly be reinvoiced to the customer related to the project. -To track & invoice expenses, you will need the expenses app. Go to -:menuselection:`Apps --> Expenses` to install it. +Expenses application +==================== -You should also activate the analytic accounts feature to link expenses -to the sales order, to do so, go to :menuselection:`Invoicing --> -Configuration --> Settings` and activate *Analytic Accounting*. +To be able to reinvoice a customer for an expense, the *Expenses* application **must** be installed. -Add expenses to your sales order -================================ +To install the *Expenses* application, navigate to :menuselection:`main Odoo dashboard --> Apps`, +and click :guilabel:`Install` on the *Expenses* application block. When clicked, Odoo installs the +application, refreshes the page, and returns to the main Odoo dashboard. -From the expense app, you or your consultant can create a new one, e.g. -the hotel for the first week on the site of your customer. +Add expenses to sales orders +============================ -You can then enter a relevant description and select an existing product -or create a new one from right there. +To begin, have a sales order confirmed in the *Sales* app to which a reinvoiced expense can be +added. Or, create a new sales order from scratch. To do that, navigate to the :menuselection:`Sales +app --> New`. Doing so reveals a blank quotation form. -.. image:: expense/expense01.png +Then, add a :guilabel:`Customer`, and add a product to the :guilabel:`Order Lines` tab, by clicking +:guilabel:`Add a product`. Next, select a product from the drop-down menu. + +Lastly, click :guilabel:`Confirm` to confirm the sales order. + +.. image:: expense/confirmed-sales-order.png :align: center + :alt: This is how a confirmed sales order looks in the Odoo Sales application. -Here, we are creating a *Hotel* product: +With the sales order confirmed, it's time to create an expense. -.. image:: expense/expense02.png +To do that, navigate to the *Expenses* application, by going to :menuselection:`main Odoo dashboard +--> Expenses`. + +Then, from the *Expenses* dashboard, click :guilabel:`New` to reveal a blank expenses form. + +.. image:: expense/blank-expenses-form.png :align: center + :alt: A blank expenses form in the Odoo Expenses application. -Under the invoicing tab, select *Delivered quantities* and either *At -cost* or *Sales price* as well depending if you want to invoice the -cost of your expense or a previously agreed on sales price. +On the expenses form, add a :guilabel:`Description` to easily reference the expense. -.. image:: expense/expense03.png +Then, in the :guilabel:`Category` field, select one of the following options from the drop-down +menu: + +- :guilabel:`Communication`: any form of communication related to a project/order. +- :guilabel:`Others`: expense that doesn't fit into any other categories. +- :guilabel:`Meals`: any form of meal costs related to a project/order. +- :guilabel:`Gifts`: any form of gift costs related to a project/order. +- :guilabel:`Mileage`: any form of mileage (gas) costs related to project/order. +- :guilabel:`Travel \& Accommodation`: any travel or accommodation costs related to a project/order. + +.. tip:: + New expense categories can be created from an expense form, by clicking the :guilabel:`Category` + field drop-down menu, selecting :guilabel:`View All`, and clicking :guilabel:`New` from the + :guilabel:`Search:Category` pop-up window. + + .. image:: expense/expense-category-pop-up.png + :align: center + :alt: The Search:Category expenses pop-up window from a blank expenses form in Odoo Expenses. + +For this sample workflow, which will reinvoice a customer for a brief hotel stay, the +:guilabel:`Category` for this example is :guilabel:`[TRANS \& ACC] Travel \& Accommodation`. + +.. note:: + The following example requires the *Sales*, *Accounting*, and *Expense* apps to view/modify all + the fields mentioned during the workflow. + +Beneath the :guilabel:`Category` field, enter in the amount to be expensed in the :guilabel:`Total` +field. + +Next, designate if there are any :guilabel:`Included taxes` in the :guilabel:`Total`. If a +preconfigured tax amount is selected from the :guilabel:`Included taxes` field, Odoo auto-calculates +the taxed amount, based on the amount entered in the :guilabel:`Total` field. + +Then, choose which :guilabel:`Employee` was responsible for the expense, and choose an option in the +:guilabel:`Paid By` field: :guilabel:`Employee (to reimburse)` or :guilabel:`Company`. + +In this case, our employee paid for the hotel with their own money, so the :guilabel:`Employee (to +reimburse)` option is chosen. + +On the right-hand side of the expenses form, the option to add a :guilabel:`Bill Reference` is +available. Beneath that, the auto-populated :guilabel:`Expense Date` and :guilabel:`Account` fields +are available. + +.. note:: + The :guilabel:`Expense Date` and :guilabel:`Account` field can be modified, if needed. + +Next, in the :guilabel:`Customer to Reinvoice` field, click the blank field to reveal a drop-down +menu. From this drop-down menu, select the appropriate sales order to which this expense should be +attached. This field **must** be filled, in order to reinvoice a customer for an expense. + +Lastly, the option to modify the :guilabel:`Analytic Distribution` and :guilabel:`Company` fields +are available. These fields are *not* required to complete a reinvoiced expense to a customer, but +are available to modify, if needed. + +Also, at the bottom of the expense form, there is a :guilabel:`Notes...` section, wherein any notes +related to this expense can be added, if needed. + +.. image:: expense/filled-in-expense-form.png :align: center + :alt: A filled out expenses form in the Odoo Expenses application. -To modify or create more products go to :menuselection:`Expenses --> -Configuration --> Expense products`. +At the top of the expense form, there are buttons to :guilabel:`Attach Receipt`, :guilabel:`Create +Report`, and :guilabel:`Split Expense`. -Back on the expense, add the original sale order in the expense to -submit. +If there is a physical or digital receipt that should be attached to the expense, click +:guilabel:`Attach Receipt`. -.. image:: expense/expense04.png +If the cost of this expense needs to be split, click :guilabel:`Split Expense`. This feature can be +used for a number of reasons (spitting expense with another employee, to accommodate different tax +rates, etc.). + +If neither of these options are necessary, click :guilabel:`Create Report` to lock in the expense +report that was just configured. + +Doing so reveals an :guilabel:`Expense Report Summary` for the new expense. + +.. image:: expense/expense-report-summary-form.png :align: center + :alt: An expense report summary in the Odoo Expenses application. -It can then be submitted to the manager, approved and finally posted. +Here, once the details related to the expense have been confirmed, click :guilabel:`Submit to +Manager`. This sends the expense report to the approving manager, who will review the expense. -.. image:: expense/expense05.png +The manager in charge of reviewing and approving the expense will inspect the details related to +the expense, and if there are no issues, they will click the :guilabel:`Approve` button — which +*only* appears on the manager's view of the :guilabel:`Expense Report Summary` that's been submitted +to the manager by the employee. + +.. image:: expense/expense-report-summary-manager-approve.png :align: center + :alt: An expense report summary that a manager will approve with an Approve button. -.. image:: expense/expense06.png +Once approved, the buttons at the top of the :guilabel:`Expense Report Summary` change once again. +At this point, the buttons at the top of the :guilabel:`Expense Report Summary` are: :guilabel:`Post +Journal Entries`, :guilabel:`Report in Next Payslip`, :guilabel:`Refuse`, and :guilabel:`Reset to +Draft`. + +.. image:: expense/expense-report-summary-manager-post-journal.png :align: center + :alt: An expense report summary with post journal entries button at the top of the form. -.. image:: expense/expense07.png +When the manager is satisfied with the :guilabel:`Expense Report Summary`, they'll click +:guilabel:`Post Journal Entries`. + +Upon clicking :guilabel:`Post Journal Entries`, that button disappears, and the :guilabel:`Analytic +Distribution` column in the :guilabel:`Expense` tab is filled with the sales order that was +initially configured to the expense in the :guilabel:`Customer to Reinvoice` field. + +Reinvoice expense +================= + +With those steps completed, it's time to return to the sales order to complete the reinvoice of the +expense to the customer. + +To do that, navigate to :menuselection:`main Odoo dashboard --> Sales app`, and select the +appropriate sales order that should be reinvoiced for the expense. + +On the sales form, the newly-configured expense is now in the :guilabel:`Order Lines` tab, with its +:guilabel:`Delivered` column filled in, and ready to be invoiced. + +.. image:: expense/sales-order-with-expense-order-lines.png :align: center + :alt: A sales order with the configured expense ready to be invoiced in the Order Lines tab. -It will then be in the sales order and ready to be invoiced. +After confirming the details of the expense, click :guilabel:`Create Invoice` at the top of the +sales order. When clicked, a :guilabel:`Create invoices` pop-up window appears. + +.. image:: expense/create-invoices-popup.png + :align: center + :alt: A create invoices pop-up window that appears when the Create Invoice is clicked. + +From this pop-up window, leave the :guilabel:`Create Invoice` field on the default +:guilabel:`Regular invoice` option, and click :guilabel:`Create Draft Invoice`. + +Doing so reveals a :guilabel:`Customer Invoice Draft` showing *only* the expense in the +:guilabel:`Invoice Lines` tab. + +.. image:: expense/customer-invoice-draft-with-expense.png + :align: center + :alt: A customer invoice draft with the expense in the Invoice Lines tab of the form. + +If all the information related to the expense is correct, click :guilabel:`Confirm` to confirm the +invoice. Doing so moves the status of the invoice from :guilabel:`Draft` to :guilabel:`Posted`. + +To send the invoice to the customer, click :guilabel:`Send \& Print`. Doing so reveals a +:guilabel:`Send` pop-up window, with a preconfigured message and PDF invoice in the body of the +message. The message can be reviewed and modified, if needed. + +Once ready, click :guilabel:`Send \& Print` to send the invoice to the customer. When clicked, the +pop-up window disappears, and Odoo sends the message/invoice to the customer. Additionally, a PDF of +the invoice is automatically downloaded for record-keeping and/or printing purposes. + +Back on the :guilabel:`Customer Invoice`, click the :guilabel:`Register Payment` button when the +customer pays for the invoiced expense. + +.. image:: expense/customer-invoice-register-payment.png + :align: center + :alt: A customer invoice with the register payment button ready to be clicked. + +When :guilabel:`Register Payment` is clicked, a :guilabel:`Register Payment` pop-up window appears. +In this pop-up window, the necessary fields are auto-populated with the correct information. After +reviewing the information, click :guilabel:`Create Payment`. + +.. image:: expense/register-payment-popup.png + :align: center + :alt: A register payment pop-up window on a customer invoice in Odoo Sales. + +Once :guilabel:`Create Payment` is clicked, the pop-up window disappears, and a green :guilabel:`In +Payment` banner is in the upper-right corner of the invoice, signifying this invoice is paid for in +full. Thus, completing the workflow. + +.. image:: expense/expense-invoice-in-payment-banner.png + :align: center + :alt: A register payment pop-up window on a customer invoice in Odoo Sales. + +.. seealso:: + - :doc:`invoicing_policy` + - :doc:`time_materials` + - :doc:`milestone` diff --git a/content/applications/sales/sales/invoicing/expense/blank-expenses-form.png b/content/applications/sales/sales/invoicing/expense/blank-expenses-form.png new file mode 100644 index 000000000..d9bc6ef25 Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/blank-expenses-form.png differ diff --git a/content/applications/sales/sales/invoicing/expense/confirmed-sales-order.png b/content/applications/sales/sales/invoicing/expense/confirmed-sales-order.png new file mode 100644 index 000000000..5dda184f5 Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/confirmed-sales-order.png differ diff --git a/content/applications/sales/sales/invoicing/expense/create-invoices-popup.png b/content/applications/sales/sales/invoicing/expense/create-invoices-popup.png new file mode 100644 index 000000000..d619cab9f Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/create-invoices-popup.png differ diff --git a/content/applications/sales/sales/invoicing/expense/customer-invoice-draft-with-expense.png b/content/applications/sales/sales/invoicing/expense/customer-invoice-draft-with-expense.png new file mode 100644 index 000000000..f855a5d14 Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/customer-invoice-draft-with-expense.png differ diff --git a/content/applications/sales/sales/invoicing/expense/customer-invoice-register-payment.png b/content/applications/sales/sales/invoicing/expense/customer-invoice-register-payment.png new file mode 100644 index 000000000..537ac890d Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/customer-invoice-register-payment.png differ diff --git a/content/applications/sales/sales/invoicing/expense/expense-category-pop-up.png b/content/applications/sales/sales/invoicing/expense/expense-category-pop-up.png new file mode 100644 index 000000000..da8e60901 Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/expense-category-pop-up.png differ diff --git a/content/applications/sales/sales/invoicing/expense/expense-invoice-in-payment-banner.png b/content/applications/sales/sales/invoicing/expense/expense-invoice-in-payment-banner.png new file mode 100644 index 000000000..a36774e90 Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/expense-invoice-in-payment-banner.png differ diff --git a/content/applications/sales/sales/invoicing/expense/expense-report-summary-form.png b/content/applications/sales/sales/invoicing/expense/expense-report-summary-form.png new file mode 100644 index 000000000..3b20fd467 Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/expense-report-summary-form.png differ diff --git a/content/applications/sales/sales/invoicing/expense/expense-report-summary-manager-approve.png b/content/applications/sales/sales/invoicing/expense/expense-report-summary-manager-approve.png new file mode 100644 index 000000000..96cc3aa9c Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/expense-report-summary-manager-approve.png differ diff --git a/content/applications/sales/sales/invoicing/expense/expense-report-summary-manager-post-journal.png b/content/applications/sales/sales/invoicing/expense/expense-report-summary-manager-post-journal.png new file mode 100644 index 000000000..b118d402b Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/expense-report-summary-manager-post-journal.png differ diff --git a/content/applications/sales/sales/invoicing/expense/expense01.png b/content/applications/sales/sales/invoicing/expense/expense01.png deleted file mode 100644 index 9976b7504..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense01.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/expense02.png b/content/applications/sales/sales/invoicing/expense/expense02.png deleted file mode 100644 index 24861d3cf..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense02.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/expense03.png b/content/applications/sales/sales/invoicing/expense/expense03.png deleted file mode 100644 index 4c8e36a34..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense03.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/expense04.png b/content/applications/sales/sales/invoicing/expense/expense04.png deleted file mode 100644 index d3ccf4f8c..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense04.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/expense05.png b/content/applications/sales/sales/invoicing/expense/expense05.png deleted file mode 100644 index bd7de4fa4..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense05.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/expense06.png b/content/applications/sales/sales/invoicing/expense/expense06.png deleted file mode 100644 index 0938cf4c9..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense06.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/expense07.png b/content/applications/sales/sales/invoicing/expense/expense07.png deleted file mode 100644 index 3089c93fd..000000000 Binary files a/content/applications/sales/sales/invoicing/expense/expense07.png and /dev/null differ diff --git a/content/applications/sales/sales/invoicing/expense/filled-in-expense-form.png b/content/applications/sales/sales/invoicing/expense/filled-in-expense-form.png new file mode 100644 index 000000000..8637aeb6d Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/filled-in-expense-form.png differ diff --git a/content/applications/sales/sales/invoicing/expense/register-payment-popup.png b/content/applications/sales/sales/invoicing/expense/register-payment-popup.png new file mode 100644 index 000000000..ac027b88e Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/register-payment-popup.png differ diff --git a/content/applications/sales/sales/invoicing/expense/sales-order-with-expense-order-lines.png b/content/applications/sales/sales/invoicing/expense/sales-order-with-expense-order-lines.png new file mode 100644 index 000000000..db453683d Binary files /dev/null and b/content/applications/sales/sales/invoicing/expense/sales-order-with-expense-order-lines.png differ