This is the documentation for older versions of Odoo (formerly OpenERP).

See the new Odoo user documentation.

See the new Odoo technical documentation.

Understanding double-entry stock management

为了讲解复式记账库存的概念, 我们来看以下业务会产生怎样的的库存移动:

  • Receiving products from a supplier,

  • Delivery to a customer,

  • Inventory operation for lost materials,

  • Manufacturing.

The structure of stock locations is shown by the figure Stores location structure when OpenERP has just been installed. Stocks are assumed to be totally empty and no operation is in progress nor planned.

If you order '30 bicycles' from a supplier, OpenERP will then do the following operations after the receipt of the products:

Stock Move operation from Suppliers to Stock

库位

产品

Partner Locations > Suppliers > Suppliers

-30 bicycles

Physical Locations > Tiny SPRL > Stock

+30 bicycles

If you deliver 2 bicycles to a European customer you will get the following transactions for the delivery:

Stock Move operation from Stock to European Customers

库位

产品

Physical Locations > Tiny SPRL > Stock

-2 bicycles

Partner Locations > Customers > European Customers

+2 bicycles

When the two operations are complete you'll then get the following stock in each location:

Resulting stock situation

库位

产品

Partner Locations > Suppliers > Suppliers

-30 bicycles

Physical Locations > Tiny SPRL > Stock

+28 bicycles

Partner Locations > Customers > European Customers

+2 bicycles

So you can see that the sum of the stocks of a product in all the locations in OpenERP is always zero. In accounting you'd say that the sum of the debits is equal to the sum of the credits.

Partner locations (customers and suppliers) aren't located under your company in the hierarchical structure, so their contents are not considered as part of your own stock. So if you look just at the physical locations inside your own company those two bicycles are no longer in your company. They're not in your own physical stock but it's still very useful to see them in your customer's stock because that helps when you carry out detailed stock management analysis.

注解

科目

In managing stock, a gap between the data in the software and real quantities in stock is difficult to avoid. Double-entry stock management gives twice as many opportunities to find an error. If you forget two items of stock this error will automatically be reflected in the counterpart's location.

You can make a comparison with accounting, where you'll easily find an error because you can look for an anomaly in an account or in the counterparts: if there's not enough in a bank account then that's probably because someone's forgotten to enter a customer's invoice payment. You always know that the sum of debits must equal the sum of the credits in both accounting and OpenERP's stock management.

In accounting, all documents lead to accounting entries that form the basis of management accounting. If you create invoices or code in statements of account, for example, the results of the operations are accounting entries on accounts. And it's the same for stock management in OpenERP. All stock operations are carried out as simple stock moves. Whether you pack items, or manufacture them, or carry out a stock inventory operation, stock moves are carried out every time.

You've seen a fairly simple example of goods receipt and product delivery, but some operations are less obvious – a stock inventory operation, for example. An inventory operation is carried out when you compare the stock shown in software with real stock numbers counted in the stores.

In OpenERP, with its double-entry stock management, you'd use stock moves for this inventory operation. That helps you manage your stock traceability. If there are 26 Bicycles in real stock but OpenERP shows 28 in the system. You then have to reduce the number in OpenERP to 26. This reduction of 2 units is considered as a loss or destruction of products and the correction is carried out as in the following operation:

Inventory operation to adjust stock

库位

产品

Physical Locations > Tiny SPRL > Stock

-2 bicycles

Virtual Locations > Inventory Loss

+2 bicycles

The product stock under consideration then becomes:

Real and counterpart stocks when operations are completed

库位

产品

Partner Locations > Suppliers > Suppliers

-30 bicycles

Physical Locations > Tiny SPRL > Stock

+26 bicycles

Partner Locations > Customers > European Customers

+2 bicycles

Virtual Locations > Inventory Loss

+2 bicycles

This example shows one of the great advantages of this approach in terms of performance analysis. After a few months, you can just make a stock valuation of the location Virtual Locations > Inventory Loss to give you the value of the company's stock losses in the given period.

Now see how the following manufacturing operation is structured in OpenERP. To make a bicycle you need two wheels and a frame. This means that there should be a reduction of two wheels and a frame from real stock and the addition of a bicycle there. The consumption / production is formalized by moving products out of and into physical stock. The stock operations for this are as follows:

Stock situation resulting from manufacture

库位

产品

Step

Virtual Locations > Default Production

+2 Wheels

Consumption of raw materials

Physical Locations > Tiny SPRL > Stock

-2 Wheels

Consumption of raw materials

Virtual Locations > Default Production

+1 Frame

Consumption of raw materials

Physical Locations > Tiny SPRL > Stock

-1 Frame

Consumption of raw materials

Virtual Locations > Default Production

-1 Bicycle

Manufacture of finished products

Physical Locations > Tiny SPRL > Stock

+1 Bicycle

Manufacture of finished products

So you've now got the outcome you need from the consumption of raw materials and the manufacture of finished products.

注解

Assessing created value

You might already have noticed a useful effect of this approach: if you do a stock valuation in the Default Production location you get a statement of value created by your company (as a negative amount). Stock valuation in any given location is calculated by multiplying quantities of products in stock by their cost. In this case the raw material value is deducted from the finished product value.