Recognition of project expenses in Odoo

Introduction

This blog post aims to explain the following changes introduced by Eficent to Odoo (formerly known as OpenERP) version 7, to make it possible to recognize material expenses to projects in a more accurate and timely manner.

Currently Odoo has the following limitations:

  • Acknowledges the expense in the project’s Analytic Account only when the vendor invoice is accepted. Not when existing stock is used/delivered to the customer as part of the project (bad timing for the recognition of expenses associated to a project)
  • Does to recognize in the project’s Analytic Account expenses associated to materials consumed from stock for the project (inaccuracy of the recognition of expenses associated to a project)
  • Does not allow limiting the posting to the Analytic Accounts Accounting only to P&L entries.

Business case

During the execution of a project, materials may be either consumed or delivered, as part of the activities required to produce the project deliverables.

The company may obtain the required materials from its own existing stock, or may procure the materials specifically for the project.

Every time a material is used for the project (consumed or delivered to the customer), the project’s Analytic Account needs to reflect the associated expense.

Pre-requisite modules

The following modules need to be installed:

Odoo modules:

  • account
  • account_anglo_saxon
  • project
  • analytic
  • purchase
  • sale

Eficent’s modules:

Analytic moves only for expenses or incomes
Technical name: account_analytic_moves_extend
Source: https://github.com/Eficent/eficent-odoo-addons/tree/v7
Comments: Limits the creation of analytic lines associated to invoices accepted only when the move is associated to an expense or revenue account.

Anglo-Saxon Accounting extension
Technical name: account_anglo_saxon_ext
Source: https://github.com/Eficent/eficent-odoo-addons/tree/v7
Comments: A change to the account_anglo_saxon modue is introduced in order to make it possible to post the cost of goods sold move to the analytic journal.

Stock Move Line
Technical name: stock_move_line
Source: https://github.com/Eficent/eficent-odoo-addons/tree/v7
Comments: Limits the creation of analytic lines associated to stock moves to only occur when the move is associated to an expense or revenue account. Introduces the analytic account associated to the account move. Creates an analytic line associated to the expense or income account for that analytic account when the account move is created.

Purchase Stock Analytic
Technical name: purchase_stock_analytic
Source: https://github.com/Eficent/eficent-odoo-addons/tree/v7
Comments: Copies the analytic account of the purchase order to the stock move.

Sale stock analytic
Technical name: sale_stock_analytic
Source: https://github.com/Eficent/eficent-odoo-addons/tree/v7
Comments: Copies the analytic account of the sales order to the stock move.

 

Master data set-up

Accounts

Code Description Parent Internal type Account type P&L/BS category
STIN Stock Input Current Liabilities Regular Current Liability BS
STOUT Stock Output Expenses Regular Expense BS
STVAL Stock Valuation Current Assets Regular Current Asset BS
PREX Product Expense Expenses Regular Expense P&L
120010 Account Receivable Receivable Account Receivable BS
200010 Account payable Payable Account Payable BS
PRIN Prouct Income Income Regular Income P&L
PRDIF Price Difference Expenses Regular Expense P&L

Product category

Accounting information:

Product category attribute Account
Stock Input Account Stock Input
Stock Output Account Stock Output
Stock Valuation Account Stock Valuation
Income Account Product Income
Expense Account Product Expense
Price Difference Account Price Difference

stock_1

Current situation

Procurement of products

The following table describes the usual purchase tansactions for products in Odoo using the anglo-saxon accouting module.

Product cost

9

Supplier price

10

stock_16

stock_17

 

stock_18

Remarks:

The cost associated to the products purchased is recognised at the analytic account when the supplier invoice is accepted. This is not an appropiate timing for the reconginition of expenses incurred by the project because:

a) The recognition of the cost in the Analytic Journal is not in line with the recognition of expense in the Account Journal, where no expense-related move has been yet created.

b) The products may have been purchased for the project, but they have not yet been used by the project.

Sale of products

The following table describes the usual purchase tansactions for products in Odoo using the anglo-saxon accouting module.

Product cost

9

Sale price

20

stock_19

stock_20

stock_31

Remarks
The expense associated to delivering products is not recongized in the Analytic Journal.

Scenarios with Eficent’s modules

Procurement of products

See the previous table on procurement of products, now with the changes incorporated by Eficent’s modules (see changes highlighted)

Product cost

9

Supplier price

10

stock_21

stock_22

 

stock_23

See below the Account Journal Entries created in step “2.Accept 1 product”

stock_2

See below the Account Journal Entries created in step “3. Supplier invoice”:

stock_3

See below the Analytic Journal Entries created in step “3. Supplier invoice”:

stock_4

Remarks:
The expense corresponding to the price difference is recognized at the same time in the Account Journal and in the Analytic Journal.

Sale of products

See the previous table on sale of products, now with the changes incorporated by Eficent’s modules (see changes highlighted).

stock_24

 

stock_25

stock_27

 

See below the Account Journal Entries created in step “2. Deliver 1 product”:

stock_12

See below the Analytic Journal Entries created in step “2. Deliver 1 product”:

stock_13

See below the Account Journal Entries created in step “3. Customer invoice”:

stock_14

See below the Analytic Journal Entries created in step “3. Customer invoice”:

stock_15

Remarks:
When the invoice has been confirmed the revenue associated to the sale is recognized in the Account Journal and the Analytic Journal.

Conclusions

Expenses associated to stock moves are recognized, independently of the origin of the expense (material product consumed from stock or purchased for the project), into the project’s analytic account.

The analytic account is restricted to display only expenses and revenues (P&L accounts).

The Anglo-Saxon accounting module was used in the example. This module will defer the recognition of costs associated to a sale to the event when the customer invoice is accepted. A cost work in process (WIP) asset account is normally assigned to the Stock Output Account.

This module can also be used by Rhine (continental accounting) countries, provided that in these countries change their Stock Output Account to be an expense account. These countries would benefit from the possibility of recording the price-differences entry recorded at the time of accepting the vendor invoice.

For companies managing long-term projects, IFRS and GAAP dictate that expenses shoud be recognized at the time when the event that originates the expense occurs. According to the matching principle required by IFRS and GAAP, it is revenue that must be accrued in the same accounting period as the cost that originated this revenue.

As a consequence companies whose main activities are related to long-term project should use the Odoo Anglo-Saxon Accounting module, but should set-up the Stock Output Account tp be an Expense account, not a cost work in process (WIP) asset account.

More information

The module that implements the features described in this post is available for free under the AGPL license. If you are interested to use this module and seek further assistance, please contact us and we will be happy to provide you with instructions on how to install it.

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *