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

See the new Odoo user documentation.

See the new Odoo technical documentation.

Testing a Purchase-Sale workflow

To familiarize yourself with the system workflow you'll test a purchase-sale workflow in two phases.


  1. 从 元件供应商 那里以单价 56.00 采购 10 个钛合金散热器。

  2. 做采购收货入库操作.

  3. 做供应商采购发票.

  4. 支付该发票.

Following this, you'll sell some of these products, using this sequence:

  1. 客户Smith 和 Sons这两位客户下单订购6 台钛合金散热器,卖 130.00每个。

  2. Despatch the products.

  3. 开据客户发票.

  4. 并做客户收款.


To place a Purchase Order with your supplier, use the menu Purchase Management ‣ New Purchase Order for a new Purchase Order form.


  • Supplier : Plumbing Component Suppliers .

As you complete the Supplier field, Open ERP automatically completes the Address field and the Price List field from information it takes out of the Partner record. Then click on the Save Parent Record. icon to the right of the Order Line field. This automatically saves the body of the Purchase Order, and changes to a Create New Record. icon. Click that to open the Purchase Order Line window.


  • Product : Titanium Alloy Radiator - type in part of this name then press the tab key to complete it, or click the Search icon at the end of the line to bring a search box,

When you've selected a product on the product line, Open ERP automatically completes the following fields from information it finds in the Product record:

  • 单位 : 产品的默认采购单位,

  • 名称 : 产品的描述性名称,

  • Scheduled date : based on the product lead time,

  • Unit price : the unit price of the product,

  • Analytic account : if any account is specified then it will appear on the order line (it's not in this example),

  • Taxes : applicable taxes defined in the partner, if specified, otherwise in the product, if specified (there aren't any in this example).


  • 数量 : 10.00.

  • 价格 : 56.00.

Save the order line and close the Purchase Order Line window by clicking the Close button. You can then confirm the whole one-line order by clicking Save, which makes the form non-editable.

It's now in a state of Request for Quotation, so click Confirm Purchase Order, which corresponds to an approval from a manager or from Accounts within your own company and moves the order into Confirmedstate. Finally click Approved by Supplier to indicate the supplier's acknowledgment of the order. The order becomes Approved .

If you click the Delivery & Invoices tab you'll see the delivery Destination is your own company's Stock location and that the invoice was created from the order and is SI: PO001. It's not entirely obvious at this stage, but the invoice is in a draft state so it can be edited and, crucially, has no accounting impact yet: it's just ready for your accounting group to activate it.


After confirming the order you'd wait for the delivery of the products from your supplier. Typically this would be somebody in Stores, who would:

  1. Open the menu Stock Management ‣ Incoming Products ‣ Packings to Process using the expand/collapse icon.



    You could have clicked the Packing link to the right of the Purchase Order to reach the same screen, but this would confuse the purchasing role with the stores role. That link is very useful during testing and training, however.

  2. When the Packing window appears, select the name of the entry in the list (PACK1) to display the Packing List itself – you'd usually do a search for the supplier name or order number in a list that was larger than this – then click Products Received to load the Make Packing form.

  3. Click Make Picking to indicate that you're receiving the whole quantity of 10 units.

At this point you've accepted 10 units into your company, in a location that you've already seen.

To check actual stock levels, use the menu Stock Management ‣ Stock Locations Structure, find Stockin the hierarchy under Physical Locations, using the expand/collapse controls to make your way through the tree and click it. You'll next get a View Stock of Products screen, where you just click Open Products to select everything that the system knows.

You'll see that Products: Stock shows everything in the Stock location (and below it) with Real stock (the actual quantity recorded) and Future stock (the quantities expected in future when all receipts and despatches have been made) – both 10 in this case.

Alternatively you could have clicked the Ambitious Plumbing Enterprises line to highlight it (the line, not the Ambitious Plumbing Enterprises text itself), and then click the Lots by Location button in the Reports to the top right of the form. You'll see that you've now got 10 pieces of Titanium Alloy Radiatorin the location Stockand also in the location Ambitious Plumbing Enterprises , its parent as shown in the figure List of products and their stock levels. If you explore further you'll also see you have -10 pieces in the Partner Location Suppliers.


List of products and their stock levels


Traceability in double-entry

Open ERP operates a double-entry stock transfer scheme similar to double-entry accounting. Because of this you can carry out various analyses of stock levels in your warehouse, along with the corresponding levels in Partner Location at your Supplier. The double-entry system, analogous to that of accounting, enables you to keep track of stock movements quite easily, and to resolve any errors that occur.

Control of purchase invoices

When you've received an invoice from your supplier (which would usually be sent to your Accounts department) go to the menu Financial Management ‣ Invoices ‣ Supplier Invoices ‣ Draft Supplier Invoices to open a list of supplier invoices waiting for receipt. These invoices enable your Accounts Department to match the the price and quantities ordered against the price and quantities on the supplier's invoice (and since it's not uncommon to receive an invoice showing details more favourable to the supplier than those agreed at the time of purchase, this is a useful function).

In this example, you created an invoice automatically when you confirmed the supplier's Purchase Order. That's because the Invoicing Control field on the order was set to From Order(the default option). Other options enable you to create invoices at the time of receiving goods or manually. The initial state of an invoice is Draft .

Now click the invoice for your order PO001 to display its contents. You can compare the goods that you've recorded there with the invoice received from your supplier. If there's a difference it's possible to change the order lines to, for example, add a delivery charge. Click Validate to confirm the invoice and put it into the Open state.

Accounting entries are generated automatically once the invoice is validated. To see the effects on your chart of accounts, use the menu Financial Management ‣ Charts ‣ Chart of Accounts ,then click Open Charts at the Account charts page to see that you have a debit of 560.00 in the Purchases account and a credit of 560.00 in the Payable account.

Paying the supplier

Select the menu Financial Management ‣ Invoices ‣ Supplier Invoices ‣ Unpaid Supplier Invoices for a list of supplier invoices that haven't yet been paid. Click the PO001 text itself to open the invoice in read-only mode. In practice you'd search for the invoice by order number or, more generally, for invoices nearing their payment date.

Click Pay Invoice in the toolbar to the right of the form, which opens a Pay invoice window with a description of the payment. Type Pay Supplier in the Entry Name field, and select Bank Journal in the Journal/Payment Mode field. Then click Full Payment to the top left of the form, which carries out the payment action within Open ERP and returns you to the invoice. Although this invoice is still in the Unpaid Invoices screen, you can see it is actually paid because the Paid/Reconciled box is now checked and the State is now Done .


Payment of an invoice

The method described here is for companies that don't use their accounting system to pay bills – just to record them. If you're using the account module fully other, more efficient, methods let you manage payments, such as entering account statements, reconciling paperwork, using tools for preparing payments, interfacing with banks.

You can monitor the accounting impact of paying the invoice through the chart of accounts available from the menu Financial Management ‣ Charts ‣ Chart of Accounts. Open ERP automatically creates accounting entries from the payment and can reconcile the payment to the invoice. You now have a new transaction that has debited the Payable account with 560.00 and credited the Cash account.

If you look in Financial Management ‣ Reporting ‣ Journals you'll see both accounting transactions, one in each of the Purchase Journal and Bank Journal in Draft state.


In Open ERP, sales proposals and sales orders are managed using documents that are based on the same common functionality as purchase orders, so you'll recognize the following documents in general but see changes to their detail and to their workflows. To create a new sales proposal, use the menu Sales Management ‣ Sales Orders ‣ New Quotation which creates a new order in a state of Quotation , then:

  1. Select the Customer Smith and Offspring . This has the effect of automatically completing several other fields: Ordering Contact, Invoice Address, Shipping Address, and the Pricelist Public Pricelist. They're all only defaults so these fields can be modified as you need.

  2. Click the Save parent record. icon to the right of the Sales Order Lines field. It saves the main order form and becomes a new Create new record. icon. Click that to open a Sales Order Lines window.

  3. Select the product Titanium Alloy Radiator Although the Product field isn't itself required, it's used by Open ERP to select the specific product so that several other fields can be automatically completed on the order line of the proposal, such as Description, Product UoM, Unit Price, Procure Method, Delivery Delay, and Taxes.

  4. Change the Quantity to 6 and the Unit Price to 130.00Then click Save and the line appears on the quotation form. A blank order line form reappears so that you can enter another line, but it's enough now just to click Close to return to the order form.

  5. On the Other data tab of this Sales Order select a Packing Policy of Complete Delivery and Shipping Policy of Invoice on Order After Delivery from their dropdown menu lists.

  6. Return to the first tab Sale Order and validate the document by clicking Confirm Order which calculates prices and the changes the order's state from Quotation to In Progressas shown in screenshot Sales Order Form. If you were in negotiation with the prospective customer you'd keep clicking Compute and Save keeping the document in Quotation state for as long as necessary.


    Sales Order Form

  7. In the last tab of the order, History you can see the Packing List that's been created and you'll be able to see any invoices that relate to this order when they're generated.

From the Main Menu click Products ‣ Products to display a list of products: just the one, Titanium Alloy Radiator , currently exists in this example. Its Real Stock still shows 10.00 but its Virtual Stock now shows 4.00 to reflect the new future requirement of 6 units for despatch.

Preparing goods for despatch to customers

The stores manager selects the menu Stock Management ‣ Outgoing Products ‣ Confirmed Packing Waiting Availability to get a list of orders to despatch. In this example there's only one, PACK2 , so click the text to open the Confirmed Packing Waiting Availability form.


计划运行(MRP 计算)

At the moment your Sales Order is waiting for products to be reserved to fulfil it. A stock reservation activity takes place periodically to calculate the needs, which also takes customer priorities into account. The calculation can be started from the menu Manufacturing ‣ Compute All Schedulers. Running this automatically reserves products.

If you don't want to have to work out your stock needs but have a lean workflow you can install the mrp_jit (Just In Time) module.

Although Open ERP has automatically been made aware that items on this order will need to be despatched, it has not yet assigned any specific items from any location to fulfil it. It's ready to move 6.00 Titanium Alloy Radiators from the Stock location to the Customers location, so start this process by clicking Check Availability. The Move line has now changed from the Confirmed state to the Available state.

Then click the Packing Done button to reach the Make Packing window, where you click the Make Picking button to transfer the 6 radiators to the customer.

To analyze stock movements that you've made during these operations use Stock Management ‣ Stock Locations Structure to see that your stocks have reduced to 4 radiators and the generic Customers location has a level of 6 radiators.


Use the menu Financial Management ‣ Invoices ‣ Customer Invoices ‣ Draft Customer Invoices to open a list of Sales invoices generated by Open ERP. These are in the Draftstate, which means that they don't yet have any presence in the accounting system. You'll find a draft invoice has been created for the order SO001 once you have despatched the goods because you'd selected Invoice on Order After Delivery .

Once you confirm an invoice, Open ERP assigns it a unique number, and all of the corresponding accounting entries are generated. So open the invoice and click Create to do that and move the invoice into an Open state with a number of 2009/001.

You can send your customer the invoice for payment at this stage. Click Invoices from the Reports section of the toolbar at the right of the form to get a PDF document that can be printed or emailed to the customer.

You can also attach the PDF document to the Open ERP invoice record. Save the PDF somewhere convenient on your PC (such as on your desktop). Then click the Add an attachment to this resource button to the top right of the invoice form (it looks like a clipboard). Browse to the file you just saved (record.pdf if you didn't change its name) from the Attachments dialog box that pops up, and Close the dialog box. This gives you a permanent non-editable record of your invoice on the Open ERP system.

Review your chart of accounts to check the impact of these activities on your accounting. You'll see the new revenue line from the invoice.


Registering an invoice payment by a customer is essentially the same as the process of paying a supplier. From the menu Financial Management ‣ Invoices ‣ Customer Invoices ‣ Unpaid Customer Invoices, click the name of the invoice that you want to mark as paid, or just check its checkbox in the list:

  1. Use the Pay Invoice button in the Action section of the toolbar at the right to open a window that enables you to register the payment.

  2. Select the Entry Name and type Got paid by customer and select the Journal to be Bank Journal .

  3. Click Full Payment. The invoice is then marked as paid, with its Paid/Reconciled box checked as you can see if you select it again 发票表单.



然后,你就可以看到会计科目一览表中当前公司 现金(Cash)科目的余额已发生变化。