1 <?xml version="1.0" encoding="utf-8"?>
4 <!-- Resource: sale.order -->
5 <record id="test_order_1" model="sale.order">
6 <field model="product.pricelist" name="pricelist_id" search="[]"/>
7 <field name="user_id" ref="base.user_root"/>
8 <field model="res.partner" name="partner_id" search="[]"/>
9 <field model="res.partner" name="partner_invoice_id" search="[]"/>
10 <field model="res.partner" name="partner_shipping_id" search="[]"/>
12 <!-- Resource: sale.order.line -->
13 <record id="test_order_1_line_1" model="sale.order.line">
14 <field name="order_id" ref="test_order_1"/>
15 <field name="name">[PCSC234] PC Assemble SC234</field>
16 <field name="product_id" ref="product.product_product_3"/>
17 <field name="product_uom" ref="product.product_uom_unit"/>
18 <field name="price_unit">450</field>
19 <field name="product_uom_qty">2</field>
20 <field name="product_uos_qty">2</field>
21 <field name="type">make_to_stock</field>
23 <record id="test_order_1_line_3" model="sale.order.line">
24 <field name="order_id" ref="test_order_1"/>
25 <field name="name">[HDD-SH2] HDD SH-2</field>
26 <field name="product_id" ref="product.product_product_18"/>
27 <field name="product_uom" ref="product.product_uom_unit"/>
28 <field name="price_unit">90</field>
29 <field name="product_uom_qty">3</field>
30 <field name="product_uos_qty">3</field>
31 <field name="type">make_to_stock</field>
34 <assert id="test_order_1" model="sale.order" severity="error" string="The amount of the sales order is correctly computed">
35 <test expr="sum([l.price_subtotal for l in order_line]) == amount_untaxed"/>
38 <workflow action="order_confirm" model="sale.order" ref="test_order_1"/>
40 <assert id="test_order_1" model="sale.order" string="the sales order is now in 'Manual in progress' state">
41 <test expr="state">manual</test>
44 <workflow action="manual_invoice" model="sale.order" ref="test_order_1" uid="base.user_root"/>
46 <assert id="test_order_1" model="sale.order" string="the sales order is now in progress">
47 <test expr="state">progress</test>
50 <!-- Treat generated invoice -->
51 <assert id="test_order_1" model="sale.order" severity="fatal" string="the sales order has now a corresponding invoice">
52 <test expr="len(invoice_ids) == 1"/>
55 <assert id="test_order_1" model="sale.order" severity="fatal" string="the sales order's has the same amount and is currently a draft">
56 <test expr="invoice_ids[0].amount_untaxed == amount_untaxed"/>
57 <test expr="invoice_ids[0].amount_total == amount_total"/>
58 <test expr="invoice_ids[0].state">draft</test>
61 <workflow action="invoice_open" model="account.invoice">
62 <value eval="obj(ref('test_order_1')).invoice_ids[0].id" model="sale.order"/>
65 <function model="account.invoice" name="pay_and_reconcile">
66 <value eval="[obj(ref('test_order_1')).invoice_ids[0].id]" model="sale.order"/>
67 <value eval="obj(ref('test_order_1')).amount_total" model="sale.order"/>
68 <value model="account.account" search="[('type', '=', 'cash')]"/>
69 <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
70 <value eval="ref('account.bank_journal')"/>
71 <value model="account.account" search="[('type', '=', 'cash')]"/>
72 <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
73 <value eval="ref('account.bank_journal')"/>
76 <assert id="test_order_1" model="sale.order" severity="fatal" string="the sales order's invoice is now paid">
77 <test expr="invoice_ids[0].state">paid</test>
80 <!-- Treat generated picking -->
81 <assert id="test_order_1" model="sale.order" severity="fatal" string="the sales order has now a correspending picking">
82 <test expr="len(picking_ids) == 1"/>
85 <assert id="test_order_1" model="sale.order" severity="error" string="the sales order's picking will be sent to the good address and is already confirmed">
86 <test expr="picking_ids[0].partner_id == partner_shipping_id"/>
87 <!-- test expr="picking_ids[0].state">confirmed</test # Desactivated because of MRP_JIT -->
90 <!-- Here we need to use the function tag because action_assign is a method of stock_picking and not part of the workflow -->
91 <function model="stock.picking" name="action_assign">
92 <value eval="[obj(ref('test_order_1')).picking_ids[0].id]" model="sale.order"/>
95 <assert id="test_order_1" model="sale.order" severity="fatal" string="the sales order's picking is now assigned">
96 <test expr="picking_ids[0].state">assigned</test>
99 <!-- Do the same as in wizard_partial_picking lines 143-144 -->
100 <function model="stock.picking" name="action_move">
101 <value eval="[obj(ref('test_order_1')).picking_ids[0].id]" model="sale.order"/>
104 <workflow action="button_done" model="stock.picking">
105 <value eval="obj(ref('test_order_1')).picking_ids[0].id" model="sale.order"/>
108 <assert id="test_order_1" model="sale.order" string="the sales order's picking is now done">
109 <test expr="picking_ids[0].state">done</test>
112 <!-- Run all schedulers -->
113 <function model="procurement.order" name="run_scheduler"/>
115 <assert id="test_order_1" model="sale.order" string="the sales order is now done">
116 <test expr="state">done</test>