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