1
<?xml version="1.0" encoding="utf-8"?>
5
Tests for an order with invoice from the packings
8
<!-- Resource: sale.order -->
9
<record id="test_order_2" model="sale.order">
10
<field name="name">test_order_2</field>
11
<field name="note">This Sale Order was used to test the following use case during the installation: Order - Picking - Invoice - Payment</field>
12
<field name="shop_id" ref="shop" />
13
<field model="product.pricelist" name="pricelist_id" search="[]" />
14
<field name="user_id" ref="base.user_root" />
15
<field name="partner_id" ref="base.res_partner_agrolait" />
16
<field name="partner_invoice_id" ref="base.res_partner_address_8invoice" /> <!-- you should patch your server to get res_partner_address_8invoice, or revert to res_partner_address_8 -->
17
<field name="partner_shipping_id" ref="base.res_partner_address_8delivery" /> <!-- you should patch your server to get res_partner_address_8delivery, or revert to res_partner_address_8 -->
18
<field name="partner_order_id" ref="base.res_partner_address_8" />
19
<field name="order_policy">picking</field>
21
<!-- Resource: sale.order.line -->
22
<record id="test_order_2_line_1" model="sale.order.line">
23
<field name="order_id" ref="test_order_2" />
24
<field name="name">[PC1] Basic PC</field>
25
<field name="product_id" ref="product.product_product_pc1" />
26
<field name="product_uom" ref="product.product_uom_unit" />
27
<field name="price_unit">450</field>
28
<field name="product_uom_qty">2</field>
29
<field name="product_uos_qty">2</field>
30
<field name="type">make_to_stock</field>
32
<record id="test_order_2_line_3" model="sale.order.line">
33
<field name="order_id" ref="test_order_2" />
34
<field name="name">[RAM512] DDR 512MB PC400</field>
35
<field name="product_id" ref="product.product_product_ram512" />
36
<field name="product_uom" ref="product.product_uom_unit" />
37
<field name="price_unit">90</field>
38
<field name="product_uom_qty">3</field>
39
<field name="product_uos_qty">3</field>
40
<field name="type">make_to_stock</field>
42
<assert id="test_order_2" model="sale.order" severity="error" string="The amount of the sale order is correctly computed">
43
<test expr="amount_untaxed == 450*2 + 90*3" />
44
<test expr="state">draft</test>
47
<workflow action="order_confirm" model="sale.order" ref="test_order_2" />
48
<assert id="test_order_2" model="sale.order" string="the sale order is now in progress">
49
<test expr="state">progress</test>
52
<!-- Treat generated picking -->
53
<assert id="test_order_2" model="sale.order" severity="error" string="the sale order has now a correspending packing">
54
<test expr="len(picking_ids) == 1" />
55
<test expr="picking_ids[0].invoice_state">2binvoiced</test>
56
<test expr="picking_ids[0].address_id == partner_shipping_id" />
59
<!-- Here we need to use the function tag because action_assign is a method of stock_picking and not part of the workflow -->
60
<function model="stock.picking" name="action_assign">
61
<value eval="[obj(ref('test_order_2')).picking_ids[0].id]" model="sale.order" />
63
<assert id="test_order_2" model="sale.order" severity="error" string="the sale order's picking is now assigned">
64
<test expr="picking_ids[0].state">assigned</test>
67
<!-- Do the same as in wizard_partial_picking lines 143-144 -->
68
<function model="stock.picking" name="action_move">
69
<value eval="[obj(ref('test_order_2')).picking_ids[0].id]" model="sale.order" />
71
<workflow action="button_done" model="stock.picking">
72
<value eval="obj(ref('test_order_2')).picking_ids[0].id" model="sale.order" />
74
<assert id="test_order_2" model="sale.order" string="the sale order's picking is now done">
75
<test expr="picking_ids[0].state">done</test>
78
<!-- Run all schedulers -->
79
<function model="mrp.procurement" name="run_scheduler" />
80
<assert id="test_order_2" model="sale.order" string="the sale order is now done">
81
<test expr="state">done</test>
82
<test expr="shipped == True" />
83
<test expr="invoiced == False" />
86
<!-- Invoice from the packing -->
87
<function model="stock.picking" name="action_invoice_create">
88
<value eval="[obj(ref('test_order_2')).picking_ids[0].id]" model="sale.order" />
89
<value eval="ref('account.sales_journal')" />
91
<value eval="'out_invoice'" />
93
<assert id="test_order_2" model="sale.order" severity="error" string="the sale order's picking is invoiced">
94
<test expr="picking_ids[0].invoice_state">invoiced</test>
95
<test expr="len(invoice_ids) == 1" />
96
<test expr="invoice_ids[0].amount_untaxed == amount_untaxed" />
97
<test expr="invoice_ids[0].amount_total == amount_total" />
98
<test expr="invoice_ids[0].reconciled == False" />
99
<test expr="invoice_ids[0].residual == 450*2 + 90*3" />
100
<test expr="invoice_ids[0].state">draft</test>
101
<test expr="invoice_ids[0].address_invoice_id == partner_invoice_id" />
104
<!-- Confirm the invoice -->
105
<workflow action="invoice_open" model="account.invoice">
106
<value eval="obj(ref('test_order_2')).invoice_ids[0].id" model="sale.order" />
108
<assert id="test_order_2" model="sale.order" severity="error" string="the sale order's picking is invoiced">
109
<test expr="invoice_ids[0].reconciled == False" />
110
<test expr="invoice_ids[0].residual == amount_total" />
111
<test expr="invoice_ids[0].state">open</test>
114
<!-- Pay the invoice -->
115
<function model="account.invoice" name="pay_and_reconcile">
116
<value eval="[obj(ref('test_order_2')).invoice_ids[0].id]" model="sale.order" />
117
<value eval="obj(ref('test_order_2')).amount_total" model="sale.order" />
118
<value eval="ref('account.cash')" />
119
<value eval="ref('account.period_' + str(int(time.strftime('%m'))))" />
120
<value eval="ref('account.bank_journal')" />
121
<value eval="ref('account.cash')" />
122
<value eval="ref('account.period_' + str(int(time.strftime('%m'))))" />
123
<value eval="ref('account.bank_journal')" />
125
<assert id="test_order_2" model="sale.order" severity="error" string="the sale order's invoice is now paid">
126
<test expr="invoice_ids[0].reconciled == True" />
127
<test expr="invoice_ids[0].residual == 0.0" />
128
<test expr="invoice_ids[0].state">paid</test>
129
<test expr="state">done</test>
130
<test expr="shipped == True" />
131
<test expr="invoiced == True" />