-
Notifications
You must be signed in to change notification settings - Fork 10.8k
[IMP] expenses: reinvoice expenses #15554
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
base: 17.0
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -4,7 +4,7 @@ Re-invoice expenses | |||||||||
|
|
||||||||||
| If expenses are tracked on customer projects, they can be automatically charged back to the | ||||||||||
| customer. This is done by :ref:`creating an expense <expenses/reinvoice-create>`, referencing the | ||||||||||
| sales order the expense is added to, and then :ref:`creating an expense report | ||||||||||
| sales order to which it is added, then :ref:`creating an expense report | ||||||||||
| <expenses/reinvoice-report>`. | ||||||||||
|
|
||||||||||
| Next, managers :ref:`approve the expense report <expenses/reinvoice-approve>`, before the accounting | ||||||||||
|
|
@@ -16,50 +16,107 @@ thus charging the customer for the expenses. | |||||||||
|
|
||||||||||
| .. important:: | ||||||||||
| Approving expenses, posting expenses to accounting, and reinvoicing expenses on :abbr:`SOs (Sales | ||||||||||
| Orders)` is **only** possible for users with the appropriate :doc:`access rights | ||||||||||
| Orders)` are **only** possible for users with the appropriate :doc:`access rights | ||||||||||
| <../../general/users/access_rights>`. | ||||||||||
|
|
||||||||||
| .. seealso:: | ||||||||||
| This document provides lower-level instructions for the creation, submission, approval, and | ||||||||||
| posting of expenses. For fully-detailed instructions for any of these steps, refer to the | ||||||||||
| following documentation: | ||||||||||
| This document provides lower-level instructions to create, submit, approve, and post expenses. | ||||||||||
| For fully-detailed instructions for any of these steps, refer to the following documentation: | ||||||||||
|
|
||||||||||
| - :doc:`Log expenses <../expenses/log_expenses>` | ||||||||||
| - :doc:`Expense reports <../expenses/expense_reports>` | ||||||||||
| - :doc:`Approving expenses <../expenses/approve_expenses>` | ||||||||||
| - :doc:`Posting expenses in accounting <../expenses/post_expenses>` | ||||||||||
| - :doc:`Log expenses <log_expenses>` | ||||||||||
| - :doc:`Expense reports <expense_reports>` | ||||||||||
| - :doc:`Approving expenses <approve_expenses>` | ||||||||||
| - :doc:`Posting expenses in accounting <post_expenses>` | ||||||||||
|
|
||||||||||
| Setup | ||||||||||
| ===== | ||||||||||
|
|
||||||||||
| First, specify the invoicing policy for each expense category. Navigate to :menuselection:`Expenses | ||||||||||
| app --> Configuration --> Expense Categories`. Click on an expense category to view the expense | ||||||||||
| category form. Under the :guilabel:`INVOICING` section, click the radio button next to the desired | ||||||||||
| selection for :guilabel:`Re-Invoice Expenses`: | ||||||||||
| category form. | ||||||||||
|
|
||||||||||
| Under the :guilabel:`INVOICING` section, click the radio button next to the desired selection for | ||||||||||
| :guilabel:`Re-Invoice Expenses`: | ||||||||||
|
|
||||||||||
| - :guilabel:`No`: The expense category cannot be re-invoiced. | ||||||||||
| - :guilabel:`At cost`: The expense category invoices expenses at the cost set on the expense | ||||||||||
| category form. | ||||||||||
| - :guilabel:`Sales price`: The expense category invoices at the sales price set on the expense form. | ||||||||||
|
|
||||||||||
| .. important:: | ||||||||||
|
|
||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK, this is a very complicated issue - all RUNBOTS fault, and why I never use Runbot except as a preliminary check/double check for changes. So the runbots that we have all have demo data populated- meaning they've overwritten the default and added a ton of other stuff. In the case of Expenses, they redid all the categories, and they are not the default. While this is a good section/Important block to add, the information is not correct. This is why it is always best ot make a blank database for every doc you are doing. For example, when I originally did the Expenses docs, I created a database (in the version I was writing) and added all the relevant apps that I know interact with Expenses: Employees, Incoicing, Sales, Payroll, Accounting, Approvals, and Sign. Then, I go into that database to see what the actual defaults are. It's the only way to verify what is native/default in Odoo. Then, usually when I do that, I'll do ALL the docs for the app, since I made a database for it. To make a 17.0 demo database, go here: Add all the apps I mentioned above- then you will see that the default categories are: |
||||||||||
| By default, the :guilabel:`Customer to Reinvoice` field is enabled for the :guilabel:`[TRANS & | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I recommend making this a 3-section bullet-style list, tpo show the defaukts. Example: The default expense categories have the following re-invoicing policies:
(but prettier- you know what I mean - my formatting here is not correct! =) ) |
||||||||||
| ACC] Travel & Accommodation`, :guilabel:`[COMM] Communication`, :guilabel:`[FOOD] Meals`, and | ||||||||||
| :guilabel:`[MIL] Mileage` expense categories. | ||||||||||
|
|
||||||||||
| It should be noted that **not** all default expense categories installed with the **Expenses** | ||||||||||
| application have reinvoicing policies activated. The setting may have to be manually activated. | ||||||||||
meval1006 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
|
|
||||||||||
| To do that, navigate to ::menuselection:`Expenses app --> Configuration --> Expenses Categories` | ||||||||||
| to view a list of all expense categories in the database. | ||||||||||
|
|
||||||||||
| Look in the :guilabel:`Re-Invoice Expenses` column to see which selections have been made for | ||||||||||
| each expense category. | ||||||||||
|
|
||||||||||
| .. image:: reinvoice_expenses/reinvoice-expenses-column.png | ||||||||||
| :alt: Sample of Reinvoice Expenses column in the Expenses Categories window. | ||||||||||
meval1006 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
|
|
||||||||||
| .. _expenses/reinvoice-create: | ||||||||||
|
|
||||||||||
| Create an expense | ||||||||||
| ================= | ||||||||||
|
|
||||||||||
| First, when :doc:`creating a new expense <../expenses/log_expenses>`, the correct information needs | ||||||||||
| to be entered to re-invoice the expense to a customer. Using the drop-down menu, select the | ||||||||||
| :abbr:`SO (Sales Order)` to add the expense to in the :guilabel:`Customer to Reinvoice` field. | ||||||||||
| To see detailed instructions on completing an expense form, refer to the :doc:`Log expenses | ||||||||||
| <log_expenses>` page. This section focuses on the information required to reinvoice an expense to an | ||||||||||
| :abbr:`SO (Sales Order)`. | ||||||||||
meval1006 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
|
|
||||||||||
| Navigate to the :guilabel:`Expense app` and click :guilabel:`New` to reveal a blank expense form. On | ||||||||||
| the expenses form, add a :guilabel:`Description` to reference the expense. | ||||||||||
|
|
||||||||||
| Then, for the :guilabel:`Category` field, select one of the following options from the drop-down | ||||||||||
| menu: | ||||||||||
|
|
||||||||||
| - **Communication:** any form of communication related to a project/order. | ||||||||||
| - **Others:** expense that does not fit into any other categories. | ||||||||||
| - **Meals:** any form of meal costs related to a project/order. | ||||||||||
| - **Gifts:** any form of gift costs related to a project/order. | ||||||||||
| - **Mileage:** any form of mileage (gas) costs related to project/order. | ||||||||||
| - **Travel & Accommodation:** any travel or accommodation costs related to a project/order. | ||||||||||
meval1006 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
|
|
||||||||||
| Next, fill in the correct information for the following fields: | ||||||||||
|
|
||||||||||
| - :guilabel:`Total` | ||||||||||
| - :guilabel:`Included Taxes` | ||||||||||
| - :guilabel:`Employee` | ||||||||||
| - :guilabel:`Paid By` | ||||||||||
| - Optional: :guilabel:`Bill Reference` | ||||||||||
|
|
||||||||||
| The :guilabel:`Expense Date` and :guilabel:`Account` fields are auto-populated, but can be modified | ||||||||||
| if needed. In the :guilabel:`Customer to Reinvoice` field, use the drop-down menu to select the | ||||||||||
| :abbr:`SO (Sales Order)` to add the expense to. | ||||||||||
|
|
||||||||||
| .. important:: | ||||||||||
| Selecting the proper :abbr:`SO (Sales Order)` in the :guilabel:`Customer to Reinvoice` field is | ||||||||||
| critical, since this is how expenses are automatically invoiced after an expense report is | ||||||||||
| approved. | ||||||||||
|
|
||||||||||
| The :guilabel:`Customer to Reinvoice` field can be modified only until an expense report is | ||||||||||
| approved. After an expense report is approved, the :guilabel:`Customer to Reinvoice` field cannot | ||||||||||
| be modified. | ||||||||||
|
|
||||||||||
| Next, select the :guilabel:`Analytic Distribution` the expense is posted to. Multiple accounts can | ||||||||||
| be selected, if desired. | ||||||||||
|
|
||||||||||
| .. image:: reinvoice_expenses/sample-expense-form-hotel.png | ||||||||||
meval1006 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
| :alt: Sample of a complete expense form in the Expense app. | ||||||||||
|
|
||||||||||
| To add another :guilabel:`Analytic Distribution`, click on the line to reveal the | ||||||||||
| :guilabel:`Analytic` pop-over window. Click :guilabel:`Add a line`, then select the desired | ||||||||||
| :guilabel:`Analytic Distribution` from the drop-down field. If selecting more than one | ||||||||||
| :guilabel:`Analytic Distribution`, the :guilabel:`Percentage` fields **must** be modified. By | ||||||||||
| default, both fields are populated with `100%`. Adjust the percentages for all the fields, so the | ||||||||||
| total of all selected accounts equals `100%`. | ||||||||||
| :guilabel:`Analytic Distribution` from the drop-down field. | ||||||||||
|
|
||||||||||
| If selecting more than one :guilabel:`Analytic Distribution`, the :guilabel:`Percentage` fields | ||||||||||
| **must** be modified. By default, both fields are populated with `100%`. Adjust the percentages for | ||||||||||
| all the fields, so the total of all selected accounts equals `100%`. | ||||||||||
|
|
||||||||||
| .. example:: | ||||||||||
| A painting company agrees to paint an office building that houses two different companies. During | ||||||||||
|
|
@@ -74,16 +131,17 @@ total of all selected accounts equals `100%`. | |||||||||
| Create an expense report | ||||||||||
| ======================== | ||||||||||
|
|
||||||||||
| After the expenses are created, the expense report must be :ref:`created <expenses/create_report>` | ||||||||||
| and :ref:`submitted <expenses/submit>`, in the same manner as all other expenses. | ||||||||||
| For detailed instructions to create and submit a expense report, refer to the :doc:`Expense reports | ||||||||||
| <expense_reports>` page. | ||||||||||
meval1006 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
|
|
||||||||||
| Once the expense report is submitted, a :icon:`fa-money` :guilabel:`Sales Orders` smart button | ||||||||||
| appears at the top-center of both the expense report, and each individual expense record being | ||||||||||
| reinvoiced. | ||||||||||
| After the expenses are created, click :guilabel:`Create report`. Once the expense report is | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While this individual instruction is a duplicate form the Expense Reports doc, this is good since doing this one thing is what amkes that button appear - so this is a good exmaple of "not redundant" information- becaiuse it's one step, and directly causes the new thing we want to see (the SO) |
||||||||||
| submitted, a :icon:`fa-money` :guilabel:`Sales Orders` smart button appears at the top-center of | ||||||||||
| both the expense report, and each individual expense record being reinvoiced. | ||||||||||
|
|
||||||||||
| .. image:: reinvoice_expenses/reinvoice-expense.png | ||||||||||
| :align: center | ||||||||||
| :alt: Ensure the customer to be invoiced is called out on the expense. | ||||||||||
| .. image:: reinvoice_expenses/reinvoice-expense-report.png | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as the other image - I recommend you redo these so that they show default items/options in the app |
||||||||||
| :alt: Sample of a expense report in the Expense app. | ||||||||||
|
|
||||||||||
| Next, click :guilabel:`Submit to Manager` to request approval from the assigned Manager. | ||||||||||
|
|
||||||||||
| .. important:: | ||||||||||
| Selecting the proper :abbr:`SO (Sales Order)` in the :guilabel:`Customer to Reinvoice` field is | ||||||||||
|
|
@@ -99,53 +157,88 @@ reinvoiced. | |||||||||
| Approve and post expenses | ||||||||||
| ========================= | ||||||||||
|
|
||||||||||
| Before :doc:`approving an expense report <../expenses/approve_expenses>`, ensure the | ||||||||||
| :guilabel:`Analytic Distribution` section is populated for every expense line. | ||||||||||
| For detailed instructions to approve a expense report, refer to the :doc:`Approve expenses | ||||||||||
| <approve_expenses>` page. | ||||||||||
|
Comment on lines
+160
to
+161
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same suggestion |
||||||||||
|
|
||||||||||
| If an :guilabel:`Analytic Distribution` entry is missing, assign the correct accounts from the | ||||||||||
| drop-down menu, then click :guilabel:`Approve`. | ||||||||||
| Before approving an expense report, ensure the :guilabel:`Analytic Distribution` section is | ||||||||||
| populated for every expense line. If an :guilabel:`Analytic Distribution` entry is missing, assign | ||||||||||
| the correct accounts from the drop-down menu, then click :guilabel:`Approve`. | ||||||||||
|
|
||||||||||
| .. image:: reinvoice_expenses/analytic-dist.png | ||||||||||
| :align: center | ||||||||||
| :alt: The expense report with all the Analytic Distribution lines populated. | ||||||||||
|
|
||||||||||
| .. note:: | ||||||||||
| The :guilabel:`Approve` button **only** appears after an expense report has been :ref:`submitted | ||||||||||
| <expenses/submit>`. | ||||||||||
|
|
||||||||||
| The accounting department is typically responsible for :doc:`posting journal entries | ||||||||||
| <../expenses/post_expenses>`. To post expenses to an accounting journal, click :guilabel:`Post | ||||||||||
| Journal Entries`. Once an expense report is approved, it can then be posted. | ||||||||||
| <post_expenses>`. To post expenses to an accounting journal, click :guilabel:`Post Journal Entries`. | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I cannot believe I did the doc anchors wrong =D =D =D |
||||||||||
| Once an expense report is approved, it can then be posted. | ||||||||||
|
|
||||||||||
| The :abbr:`SO (Sales Order)` is **only** updated *after* the journal entries are posted. Once the | ||||||||||
| journal entries are posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`. | ||||||||||
|
|
||||||||||
| .. _expenses/reinvoice: | ||||||||||
|
|
||||||||||
| Invoice expenses | ||||||||||
| ================ | ||||||||||
| Invoice expenses to the customer | ||||||||||
| ================================ | ||||||||||
|
|
||||||||||
| After the expense report has been approved, and the journal entries have been posted, the :abbr:`SO | ||||||||||
| (Sales Order)` is updated, and the customer can be invoiced. | ||||||||||
| Once the expense report is approved and the corresponding journal entries are posted, the :abbr:`SO | ||||||||||
| (Sales Order)` is automatically updated, allowing the customer can be invoiced. The account | ||||||||||
| department is typically responsible for generating the final invoice. | ||||||||||
|
Comment on lines
+187
to
+188
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| Select the expense report, and click the :icon:`fa-money` :guilabel:`Sales Orders` smart button to | ||||||||||
| open the :abbr:`SO (Sales Order)`. The expenses to be re-invoiced now appear on the :abbr:`SO (Sales | ||||||||||
| Order)`. | ||||||||||
| Select the desired expense report, and click the :icon:`fa-money` :guilabel:`Sales Orders` smart | ||||||||||
| button to open the :abbr:`SO (Sales Order)`. The expenses to be re-invoiced now appear on the | ||||||||||
| :abbr:`SO (Sales Order)`. | ||||||||||
|
|
||||||||||
| .. note:: | ||||||||||
| More than one :abbr:`SO (Sales Order)` can be referenced on an expense report. If more than one | ||||||||||
| :abbr:`SO (Sales Order)` is referenced, clicking the :guilabel:`Sales Orders` smart button opens | ||||||||||
| a list displaying all the :abbr:`SOs (Sales Order)` associated with that expense report. Click on | ||||||||||
| a :abbr:`SO (Sales Order)` to open the individual :abbr:`SO (Sales Order)` details. | ||||||||||
|
|
||||||||||
| The expenses are listed in the :abbr:`SO (Sales Order)` :guilabel:`Order Lines` tab. | ||||||||||
| On the :abbr:`SO (Sales Order)` form, the expenses are now line items in the :guilabel:`Order Lines` | ||||||||||
| tab, with their :guilabel:`Delivered` column filled in, and ready to be invoiced. | ||||||||||
|
|
||||||||||
| .. image:: reinvoice_expenses/so-details.png | ||||||||||
| :align: center | ||||||||||
| :alt: See the expenses listed on the sales order after clicking into it. | ||||||||||
|
|
||||||||||
| Next, click :guilabel:`Create Invoice`, and a :guilabel:`Create invoices` pop-up window appears. | ||||||||||
| Click :guilabel:`Create Invoice`, and a :guilabel:`Create invoices` pop-up window appears. | ||||||||||
|
|
||||||||||
| Select if the invoice is a :guilabel:`Regular invoice`, a :guilabel:`Down payment (percentage)`, or | ||||||||||
| a :guilabel:`Down payment (fixed amount)`. Then, click :guilabel:`Create Draft Invoice`. Doing so | ||||||||||
| creates a draft invoice for the customer. Click :guilabel:`Confirm` to confirm the invoice, and the | ||||||||||
| customer is invoiced for the expenses. | ||||||||||
| a :guilabel:`Down payment (fixed amount)`, and click :guilabel:`Create Draft Invoice`. A customer | ||||||||||
| invoice draft window displays with the products and expensees in the :guilabel:`Invoice Lines` tab. | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| .. note:: | ||||||||||
| If the product has not been delivered, then when creating an invoice draft, only the expense is | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
I am a little confused by this. I rearranged the wording just for clarity - but I still am not siure what is happening. Don't we want to see the expense in the invoice tab? |
||||||||||
| listed in the :guilabel:`Invoice Lines` tab. Creating two invoices for one :abbr:`SO (Sales | ||||||||||
| Order)` is possible. | ||||||||||
|
|
||||||||||
| Click :guilabel:`Confirm` to change the invoice status from :guilabel:`Draft` to :guilabel:`Posted`. | ||||||||||
|
|
||||||||||
| To email the invoice to the customer, click :guilabel:`Send & Print`. A document layout | ||||||||||
| configuration pop-up window appears for layout customization. | ||||||||||
|
|
||||||||||
| Click :guilabel:`Save`, and a pop-up window with a preconfigured email message and a PDF invoice in | ||||||||||
| its body displays. The message can be reviewed and modified, if needed. | ||||||||||
|
|
||||||||||
| Click :guilabel:`Send & Print` to email the invoice to the customer. The pop-up window disappears, | ||||||||||
| and Odoo sends the invoice to the customer. Additionally, a PDF of the invoice is automatically | ||||||||||
| downloaded for record-keeping and/or printing purposes. | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
We avoid and/or and just go for the 'and' option
Comment on lines
+214
to
+227
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great addition of steps. While this is similar to contect in other docs, it is directly from the workflow for this, so I think this is a good addition and not a "doubling up" of information =) |
||||||||||
|
|
||||||||||
| Invoice payment | ||||||||||
| =============== | ||||||||||
|
|
||||||||||
| On the :guilabel:`Customer Invoice`, click :guilabel:`Register Payment` when the customer pays for | ||||||||||
| the invoiced expense.` | ||||||||||
|
Comment on lines
+232
to
+233
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| A :guilabel:`Pay` pop-up window appears, and the necessary fields are auto-populated with the | ||||||||||
| correct information. After reviewing the information, click :guilabel:`Create Payment`. | ||||||||||
|
|
||||||||||
| A green :guilabel:`In Payment` banner appears in the upper-right corner of the invoice, indicating | ||||||||||
| that the invoice is paid in full. | ||||||||||
|
|
||||||||||
| A :guilabel:`Payments` smart button displays at the top of the form. Click :guilabel:`Payments` to | ||||||||||
| go to the :guilabel:`Pay` form. Click :guilabel:`Validate` to confirm the invoice is paid for in | ||||||||||
| full. Thus, completing the workflow. | ||||||||||
|
|
||||||||||

Uh oh!
There was an error while loading. Please reload this page.