Accounting: Journals: Journal Entries: Stock Movements


Purpose

This document will go over what configurations on products, product categories, and locations impact stock movement journal entries, and how to get Odoo to automatically create stock movement journal entries for you in real time. 

We will also provide some example journal entries from common stock moves at the end of this document. 

Process

To get started, navigate to the Accounting app. 

Odoo image and text block

Overview

Stock movement journal entries are created when storable products are being received into your stock from a virtual location or leaving your stock and going to a virtual location. 

For example, receiving storable stock from a vendor, shipping storable stock to a customer, or moving storable stock to a virtual scrap location would all trigger stock movement journal entries as long as the necessary settings were configured prior to those moves occurring. 

Moving storable stock between internal locations does not create stock movement journal entries because the net value of your storable stock is not increasing or decreasing, the stock is just changing locations within your organization. 

Product Category Configuration 

Odoo does not create stock movement journal entries for you by default. To trigger this behavior, you will need to make sure that your product categories are configured correctly.  

To see your product categories, click on Configuration > Product Categories

This page will show you all of your current product categories.  

Select the product category ALL.

Odoo image and text block

Select the Edit button. 

Under the Inventory Valuation drop down menu, Select Automated. If this is not selected, no stock movement journal entries will be created. 

Odoo image and text block

You can also adjust your Costing Method for your inventory in this section. Costing Methods impact how Odoo calculates the value of your inventory. Your costing method selection will not impact when the creation of stock movement journal entries occurs.

Odoo gives you three costing methods to choose from: 

  • Standard Price: This allows you to set the costs of your goods sold manually. 

  • First In First Out (FIFO): This will calculate your costs based on selling your oldest goods first. 

  • Average Cost (AVCO): This will calculate the average cost of your entire inventory at receipt and assign that average cost to all of your goods when sold. 

Make your selection for costing method and make sure that your Inventory Valuation is set to Automated.

Next, we will review the Account Stock Properties area in the bottom right. This is where you will select the accounts that should be debited and credited for your stock movements. 

You have the following options: 

Stock Input Account: This is the account used to track the value of your incoming goods before they are processed into your inventory. 

Stock Output Account: This is the account used to track the value of your outgoing goods, either products that got sold to customers or product that you are moving out of your stock for other reasons like scrapping. 

Stock Valuation Account: This is the account used to track the total value of your inventory within your warehouse(s). 

Stock Journal: This is the journal that you want to record your stock moves in. 

Odoo image and text block

Once you've made the necessary changes on this page, click save. Go through all of your product categories and make sure that your Inventory Valuation is set to Automated and you have the correct accounts and journal set for your accounting. 

Product Configuration

Individual products also have an impact on whether or not stock movement journal entries are created. Stock movement journal entries will only be created if your product is designated as a Storable Product.

Consumable products and service products have accounting implications, but do not trigger stock movement journal entries.

To access your product settings, go to either Customers or Vendors > Products. (there are many other ways to manage products)

From this page, you will see all of your products in a list view. 

To view which of your products are set as Storable and will therefore create stock movement journal entries, select the  Group By   filter, choose to Add Custom Group, and then select Product Type from the list.

This will sort your salable products into their product types so that you can check to make sure that your current configuration will make the necessary journal entries when products are moved. 

Odoo image and text block

If you need to modify the product category or the accounting journals for a particular product, select the product from the list and click Edit on the product details page. 

To ensure that journal entries are made on your product moves, set your Product Type to Storable Product and set your Product Category to one that is designated for Automated Inventory Valuations as specified in the above section. 

Odoo image and text block

You also have the option to select specific accounts to track the value of any transfers on the product itself. If there are no accounts set on the product, they will inherit the accounts set on the product category. 

To set accounts on a product, select the Accounting tab and input the desired accounts in the Stock Valuation section. 

Odoo image and text block

Location Configuration

Locations also have implications for stock movement journal entries. Remember that stock movement journal entries are created when storable products move between an internal location and a virtual location. So, ensuring that your locations are designated correctly as either Virtual or Internal is important. 

To get started, navigate to the Inventory application. 

Odoo image and text block

Navigate to Configuration > Locations

This is where all of your locations are listed. You can see their location type in the right hand side of the location. 

Location types that will trigger stock movement journal entries when moving stock between them and Internal locations are:

  • Vendor 

  • Customer 

  • Inventory Loss

  • Procurement

  • Production

  • All Virtual Locations

All virtual locations created by Odoo, regardless of their actual location type, will always create a stock movement journal entry on a transfer. 

You can also set your accounts on the location itself. For example, a scrap location could associate a specific account for tracking the value of all incoming and outgoing scrapped goods.

To review this example, select the Virtual locations/Scrapped from your location list. On the Location's details page, select the Edit button. 

You will see that the Inventory Loss location type has it's own Accounting Information section which will utilize the accounts you specify in this area to track the value entering and leaving this location. 

Odoo image and text block

The only other location type that allows you to input Accounting Information is Production,  which is also very important to setup with a "Work in Process" account. 

Example Journal Entry: Incoming Stock Picking

This example journal entry was made from an inbound stock picking generated by a purchase order. Once we completed the stock picking, the products were moved into our stock and the below journal entry was created. 

You can see a credit to the Stock Interim Account (Received) and a debit to the Stock Valuation Account. This is because as the value is entering our warehouse and adding value to our stock value, it is leaving the interim account used to hold the value of our pending incoming transfers.  

Odoo CMS - a big picture

Example Journal Entry: Outgoing Stock Picking

This example journal entry was made from an outbound stock picking generated by a sales order from a customer. Once we completed the stock picking from our inventory, this journal entry was made. 

You can see a credit to the Stock Valuation Account and a debit to the Stock Interim Account (Delivered). This is because value is leaving our stock and is going outbound to a customer, so we have to remove value from our stock and move it into the account used to track outbound goods. 

Odoo CMS - a big picture

Example Journal Entry: Inventory Adjustment

The below journal entry was made from an inventory adjustment after we discovered that we actually had more of a particular product on hand then the system said we did. Inventory adjustments are necessary when human error occurs somewhere along the way and the amount of goods that Odoo recognizes and the amount of goods that you actually have are different and need to be corrected. 

You'll see that the Stock Adjustment account was credited and the Stock Valuation account was debited to correct for the additional inventory. 

Odoo CMS - a big picture

Example Journal Entry: Manufacturing Order

The below journal entries were made when we processed a manufacturing order. When you move component products from your stock to your production location, that will create a journal entry. Likewise, once the finished product is produced, you will have a journal entry for the move out of your production location back into your inventory. 

The below journal entries were made when we processed a manufacturing order. When you move component products from your stock to your production location, that will create a journal entry. Likewise, once the finished product is produced, you will have a journal entry for the move out of your production location back into your inventory. 

Important!

You will only have stock movement journal entries for Manufacturing Orders if your component products(s) and finished product(s) are set as storable products and are in a product category that is set for Automated Inventory Valuation. If your component product(s) or finished product(s) are consumable or in a product category that is set for Manual valuation, then you will not have any journal entries for their movements. 

Odoo CMS - a big picture
Odoo CMS - a big picture