08
Mar 16

Simplified Year-end Closing in Odoo 9

In Odoo 9 the P&L report will always show in the Balance Sheet a line called “Current Year Retained Earnings” that is calculated dynamically as the profit as reported in the P&L.
year_end_closing_odoo9
What you should do at the end of the period is a manual entry:
Dr. Current Year Retained Earnings (BS account)
Cr. Retained Earnings (BS account)
So there’s no need to create a journal that changes the P&L accounts.
As a consequence, you can report on the P&L without having any issue with the manual journal entry.
For example, EOY 2015 you have a profit of $10,000. On dec. 31st:
P&L:
Net Profit: $10,000
BS:
Current Year Retained Earnings: $10,000 (dynamically calculated from P&L net profit)
Retained Earnings: $0
Total Retained Earnings: $10,000
Then you do a manual journal entry on 12/31/2015:
Dr. Current Year Retained Earnings: $10,000
Cr. Retained Earnings: $10,000
The resulting BS:
Current Year Retained Earnings: $0 (dynamically calculated from P&L net profit)
Retained Earnings: $10,000
Total Retained Earnings: $10,000

12
Feb 16

Reserve stock for your project in Odoo

Eficent has released a new feature for Odoo that makes it possible for users to reserve/unreserve stock for a project or analytic account.

Once the project stock is allocated to a project / analytic account, components can only be withdrawn for that Project / Analytic Account.

Usage

stock_analytic_reservation_1

  • Go to Inventory / Inventory Control / Stock Analytic Reservation  and create a new entry.
  • If you select the reservation action ‘Reserve’, the product entered will be reserved to the analytic account indicated.
  • If you select the reservation action ‘Unreserve’, the product entered will be unreserved from the analytic account indicated.
  • Press ‘Prepare’ to create the stock moves associated to each line.
  • Press ‘Confirm’ to confirm the stock moves. If some of the products that have been requested to be reserved/unreserved are not available, you will see in each line, in field ‘Out Move Status’, the value ‘Waiting Availability’.
  • Press ‘Check Availability’ to check again the availability of products for the selected stock location. Press ‘Force Availability’ to force the products to be withdrawn from the selected location, even when no stock is available.
  • Press ‘Complete’ to complete the operation. The products will then be  reserved/unreserved to/from the selected analytic account.

Using Inventory Analysis report it is possible then to display what are the projects / analytic accounts under which stock has been reserved.

stock_analytic_reservation_2

Configuration

  • Go to Warehouse / Configuration / Warehouses and define, for each warehouse, a Stock Analytic Reservation Location.
  • The Stock Analytic Reservation Location must be of ‘Location Type’ = ‘Inventory’
  • If you handle real time inventory valuation then must have as Stock  Valuation Accounts (Incoming and Outgoing) the same GL account, and must be of type ‘Asset’.

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.


29
Jan 16

Perpetual Inventory Management with Odoo: Reconcile your Goods Received Not Invoiced (GRNI) Account

When a company runs a Perpetual Inventory Management System in Odoo one of the things that the accounting departments needs to do periodically is to reconcile the ‘Goods Received Not Invoiced’ (GRNI) Clearing Account. This account is also referred to as GR/IR or Invoice and Goods Recipt Reconciliaton Account.

The usual purchase process under Perpetual Inventory

In a transaction related to a Purchased product, when you receive the product, the following journal entry will occur for each received product.

  • Dr. Inventory
  • Cr. Goods Received Not Invoiced (GRNI)

When you enter the corresponding supplier invoice, the following entry is created:

  • Cr. Accounts Payable
  • Dr. Goods Received Not Invoiced (GRNI)

In this case we can say that the transaction associated to that Purchase Order & Product ended up correctly, and we can call it a Balanced Transaction (debit equals credit for that purchased product).

In normal circumstances the GRNI account will be balanced (debits equals credits).

The GRNI account will usually appear in the current liabilities section of the Balance Sheet, close to the creditors, since it represents much the same thing – it’s what the company owes someone for goods provided.

Identifying problems with the Goods Received Not Invoiced (GRNI) account

There are cases where there are issues in the transaction associated to a purchase product. Possible causes include:

  • You have received the products, but not the supplier invoice yet.
  • The supplier invoice has been entered, but the products have not been received.
  • You have received the product, then returned them, and the supplier invoice was entered, but not the corresponding refund.
  • An incorrect set-up of the perpetual inventory related accounts.

In the above cases the GRNI account will end up unbalanced, and then you’ll need to investigate what are the causes, an initiate the appropriate corrective actions.

When the company has a certain volume of transactions, getting to understand the causes of an unbalanced GRNI account can be very difficult if you cannot properly distinguish between which transactions ended up correctly and which ones did not.

That’s why you need a process to match (reconcile) the transactions associated to a purchased product that ended up correctly, so that you can quickly identify the unmatched (unreconciled) transactions and focus your attention on those.

At Eficent, and in close collaboration with the Odoo Community Association, we have implemented an improved process to help in this matching (reconciliation), making it possible for Odoo to automatically match the correct transactions for you, so that you can quickly identify the outstanding transactions and take the appropriate corrective actions.

The new process for Goods Received Not Invoiced (GRNI) reconciliation in Odoo

With the new process the Journal Item generated when a product is received into stock will now include a reference to the Purchase Order Line associated to the transaction.

grni_1
When the supplier invoice is entered, the reference to the Purchase Order Line will also be included to the corresponding Journal Item.
grni_2
Using the Easy Automatic Reconciliation tool built by Akretion and Camptocamp, we’ve built a new reconciliation method that will be able to match and reconcile debits and credits of the GRNI account based on the Purchase Order Line.
grni_3
grni_4

Get trained now!

Contact us if you need further assistance to set-up your Perpetual Inventory Management system in Odoo using the new and improved Goods Received Not Invoiced reconciliation process.

Members of the Odoo Community Association will receive a 1 hour training free of charge. Become an OCA member to receive yours!

Licensing

The software that this new process relies on is free, and released under the AGPL license.

 


23
Sep 15

Streamline your Purchasing process in Odoo using Purchase Requests

Eficent has released a new app for Odoo that makes it possible for users to to give notification of requirements of materials and/or external services and keep track of such requirements. For the purchasing department, this means better planning of Calls for Bids and/or Purchases.

purchase_request_1

Users can notify requests and keep track of the purchasing and delivery

Purchase Requests can be created either directly or indirectly. “Directly” means that someone from the requesting department enters a purchase request manually. The person creating the requisition determines what and how much to order, when is it needed, and specifications about the requirement.

“Indirectly” means that the purchase request initiated by the application automatically, for example, from procurement orders.

purchase_request_2

purchase_request_3

As Purchase Requests are processed, followers of the Purchase Requests receive notification messages once the Calls for Bid are confirmed, RFQ are confirmed, and as materials are received into the warehouse.

purchase_request_4

 

Makes life easier for the Purchasing department

Users from the Purchasing department take the Purchase Requests created directly or indirectly as the basis to organize the purchasing function. Either create Calls for Bid to handle certain requests, or to directly create RFQ’s. Purchasing users have the freedom to select which Purchase Request Lines to process, and adjust the materials to be purchased in follow-up documents, in case that the request was imprecise.

Full traceability

In Purchase Orders and Calls for Bid users can trace the Purchase Request Lines that each line was obtained from.

purchase_request_5

Get trained now!

We are now scheduling a weekly, very interactive online training course on this topic. Book early here, as seats are limited!


25
Feb 15

Delivery method and Freight charges for purchase orders in Odoo

Eficent has released a new feature for Odoo that makes it possible for users to add a delivery method in the purchase order.

odoo_purchase_delivery_1

The user can choose to compute the freight cost in the same purchase order, adding an extra line, or compute it at the time of creating the invoice based on incoming shipment(s).

In order to determine the freight charges to apply, the application uses the supplier address as origin, and the company warehouse (or customer address for drop shipments) as destination address, to find the applicable freight charges.

You can define different freight charges based on origin and destination country, state or zip codes.

odoo_purchase_delivery_2

The freight charges are then computed and added to the invoice:

 

odoo_purchase_delivery_3

 

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.


20
Jan 15

Timesheet improvements in Odoo. Import accounts from last timesheet

It is usual for employees in a company to work on the same projects for weeks. Completing the timesheets id Odoo currently means entering for each timesheet the analytic accounts every time, which turns to be time consuming.

Now Eficent brings you a new improvement to the Timesheets apps that will let the user import the analytic accounts from the previous timesheet, with a simple click.

hr_timesheet_sheet_import_accounts

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.


14
Jan 15

Timesheet validators in Odoo

Timesheets in Odoo can be validated by users belonging to the group “Human Resources / Officer”.

However it is frequent for companies allow to employees outside of the Human Resources group to validate timesheet.

Eficent has released a new module that allows a user outside of the Human Resources groups to validate timesheets. A rule is predefined, but it is flexible enough to accept extensions.

At the time when a user submits a timesheet to the Manager, the application determines the validators. Only those validators or employees in the groups of Human Resources (Officer / Manager) are capable of approving the timesheet.

The current rule sets as validators of a timesheet:

  • The head of the department that the employee belongs to
  • In case that the employee is head of the department, it will attempt to add the head of the parent department instead.
  • The employee’s direct manager

The list of validators is visible in the employee’s timesheet.

Example

Peter, John, Melinda and Angela are employees of your company. Find below the department and direct manager assignment:

hr_timesheet_sheet_validators_2

Find below the departments:

hr_timesheet_sheet_validators_3

 

From a security perspective, Peter, John, Melinda belong to the group “Employees”. Angela belongs to the groups “Employees” and “Human Resources / Officer”.

Ell employees complete their timesheets for the week. John completes his timesheet as follows:

hr_timesheet_sheet_validators_4

As soon as Peter presses the button “Submit to Manager” Melinda and Peter are added as validators of the timesheet. A user in groups “Human Resources / Officer” will be able to view the validators in the timesheet.

hr_timesheet_sheet_validators_6

When Peter lists the Timesheets to Validate, he sees only the timesheets of the Engineering department, that he is head of.

hr_timesheet_sheet_validators_7

Peter can list his own timesheet, but cannot approve it, because he is not one of the validators.

Angela can list and validate all employee’s timesheets, even her own.

hr_timesheet_sheet_validators_8

Angela can also review and change the validators of any timesheet:

hr_timesheet_sheet_validators_9

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.

 


24
Dec 14

Migrating Opening Balances into Odoo

In order to move the GL Balances into Odoo from a legacy system the following procedure must be applied.

A new GL Account: “Opening Balance Equity” is required.

Opening Balance Equity is the account that is used for the other side of the entry when beginning balances are entered when setting up new accounts.

The following Account Journals must exist:

  • Opening Sales Journal
  • Opening Sales Refund Journal
  • Opening Purchase Journal
  • Opening Purchase Refund Journal

As suggested in the following link, in order to migrate the Accounts Receivable and Accounts Payable Open Items it is best if they are created as invoices.

When the load file is created, indicate the original invoice #, the customer and the open balance to-date, so that it will be easy for to later reconcile with payments received during 2015.

Normal customer invoice:
(AR Open Item Balance in legacy system >0):

  • Journal: Opening Sales Journal
  • Invoice date: the original invoice date
  • Invoice due date
  • Period: force to the period in which the invoice will be posted (e.g. 01/2015)
  • Account: AR account defined in the customer master data
  • Line items: One line item indicating as Account “Opening Balance Equity” and the total amount due.

At the time of approving the invoice a journal entry will be created with the following items:

  • Debit: AR account
  • Credit: Opening Balance Equity

Customer invoice refund:
(AR Open Item Balance in legacy system < 0)

  • Journal: Opening Sales Refund Journal
  • Invoice date: the original invoice date
  • Invoice due date
  • Period: force to the period in which the invoice will be posted (e.g. 01/2015)
  • Account: AR Account defined in the customer master data
  • Line items: One line item indicating as Account “Opening Balance Equity” and the total amount due.

At the time of approving the invoice a journal entry will be created with the following items:

  • Debit: Opening Balance Equity
  • Credit: AR Account

The Accounts Payable open items will be migrated as supplier invoices, indicating the original invoice #, the supplier and the open balance to-date, so that it will be easy  to later reconcile with payments made during 2015.

Normal supplier invoice:
(AP Open Item Balance in legacy system >0):

  • Journal: Opening Purchase Journal
  • Invoice date: the original invoice date
  • Invoice due date
  • Period: force to the period in which the invoice will be posted (e.g. 01/2015)
  • Account: AP account defined in the supplier master data
  • Line items: One line item indicating as Account “Opening Balance Equity” and the total amount due.

At the time of approving the invoice a journal entry will be created with the following items:

  • Debit: Opening Balance Equity (recorded in the invoice line item)
  • Credit: AP Account

Spplier invoice refund
(AP Open Item Balance in legacy system < 0):

  • Journal: Opening Purchase Refund Journal
  • Invoice date: the original invoice date
  • Invoice due date
  • Period: force to the period in which the invoice will be posted (e.g. 01/2015)
  • Account: AP account defined in the supplier master data
  • Line items: One line item indicating as Account “Opening Balance Equity” and the total amount due.

At the time of approving the invoice a journal entry will be created with the following items:

  • Debit: AP Account (recorded in the invoice header)
  • Credit: Opening Balance Equity (recorded in the invoice line item)

The Inventory is migrated by means of a physical inventory count. As the products in stock use real time inventory valuation,  the following Journal entry being created (one journal item for each product) when the physical inventory is posted:

  • Journal: Stock Journal
  • Debit: Stock Quantity * Average cost
  • Credit: Opening Balance Equity

When the other GL Account Balances are loaded, some weeks later, a single Journal entry will be created using the Opening Journal and .

The AR, AP and inventory balances need to be omitted, because they have already been loaded, and all the Balance Sheet GL account balances are entered using the ‘Opening Balance Equity’ as the contra GL account.

After this process, the Opening Balance Equity account should have the same balance as the Retained Earnings account in the legacy system.

Then a final journal entry needs to be created to distribute the remaining balance in the Opening Balance Equity account to the retained earnings.


15
Dec 14

Cost Management Accounting in Odoo

Odoo uses an app called Analytic Accounting. It can be described as:

  • A single-entry bookkeeping system. Is a method of bookkeeping relying on a one sided accounting entry to maintain financial information. Only the costs or revenues associated to the transactions are recorded, but they are not balanced within the accounting system.
  • A Non-integral accounting system. Means that the transactions are recorded separately from the financial accounting. In the Analytic Accounting app, separate journals are created, called Analytic Journals. A non-integral accounting system must implement a mechanism to ensure that both accounting systems can be reconciled.

The single-entry bookkeeping system

A single-entry bookkeeping system has the advantage of being simple to implement and operate, but the main disadvantage is that it cannot be easily trusted, as there are no check and balances to ensure accuracy.

For example, consider the scenario where a user wants to distribute costs from one analytic account (say, a department that services others) into two other analytic accounts, manually. The user should manually enter a -100 amount in the origin analytic account and then distribute +50 to each other. She may make a mistake, and enter +500, and the system would never prevent it.

Tracing the errors in a single-entry bookkeeping system, most specially when there’s a significant amount of cost distribution transactions, can be extremely difficult.

Reconciliation between Analytic and Financial accounts

Being a non-integral accounting system, the method that Analytic Accounts implement in order to bring reconciliation with the Financial Accounts system is through the use of the “Inverted Analytic Balance”.

cost_accounting_1

 

In order to ensure proper reconciliation the the user has to guess all accounts that may have been subject to analytic entries on a period, then print the Inverted Analytic Balance, and finally compare the balance with the debit or credit of the corresponding General Ledger Account.

In case that differences exist, adjusting entries may need to be recorded in either Accounting system.

Other Cost Management Accounting Methods

 

All researched Cost Management Accounting methods that implement a non-integral accounting system are based on:

  • The double-entry bookkeeping system.
  • Interlocking systems, by which the two sets of accounts are being kept continuously in agreement or readily recognizable.

The following article explains the interlocking system using double-entry bookkeeping. This system provides the following benefits:

  • Brings the accuracy of the double bookkeeping entry system
  • Provides the tools to easily reconcile the the Cost Accounting with the Financial Accounting.
  • Provides a trusting system to analyze the costs of your company.

05
Dec 14

Product receptions and returns with real-time inventory valuation in Odoo

In this blog post I will describe the account journal entries related to Purchase Orders for stockable product receptions and Purchase Order Returns, using real-time inventory valuation in Odoo.

I will also  explain why I consider that a new module “Account Creditor Price Difference” implemented by Eficent is required to bring-in the proper account journal entries, and why the module “Account Anglo Saxon” should not be used.

Receive product from supplier

These are the Account Journal Entries that should be produced:

goods_receipt_1

At the time when the product is accepted into stock the Stock Input Account is Credited. This account usually called in the business context as “Goods Received Not Invoiced (GRNI). I think that calling it “Stock Input Account” adds a lot of confusion.

But so far, so good. This is what the module “Account Anglo Saxon” would do…

Return product to supplier

You can see that a return to a supplier is simply a reversal of the postings explained in “Receive Products from supplier”. This is what should be, and what “Account Creditor Price Difference” delivers.

goods_receipt_2

Without this module, this is what happens:

goods_receipt_3

The Stock Input Account is debited in step “2. Return 1 product”, but never balanced.
The Stock Output Account is credited in step “3. Supplier refund”, but never balanced.

Only if Stock Input Account = Stock Output account would the flow from “Anglo Saxon Accounting” make sense.

But as I explained, both accounts have different meaning!

Supplier invoices and refunds without reference to a stock move

In case that the user may create a supplier invoice or refund not directly from a stock move, it does not make sense that the application should propose the Stock Input or Stock Output accounts (as it is doing now), because the user well may be creating this invoice/refund associated to a drop shipment.

In my opinion, in the scenario where a user creates a supplier invoice or refund without reference to an preceding document, the system should not accept it to be validated, until the invoice is properly referenced, the quantities match and the price variance is under the tolerance limit.

  • Invoice lines referencing to stockable or consumable products should refer to a stock move.
  • Invoice lines referencing to services should refer to a purchase order line.

..But this is still work in progress.. :)

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.