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