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