2 In order to test the Sale module in OpenERP,
3 I create a Sale Order for Slider Mobile for 500 quantity having Shipping Policy 'Shipping & Manual Invoice' and Invoice on 'Shipped quantities'
4 in order to create an invoice based on the shipping quantity
6 !record {model: sale.order, id: sale_order_so6}:
7 date_order: '2010-07-17'
8 invoice_quantity: order
13 product_uom: product.product_uom_unit
14 product_uom_qty: 200.0
17 product_id: sale.product_product_slidermobile0
18 product_uos_qty: 200.0
21 invoice_quantity: procurement
22 partner_id: sale.res_partner_cleartrail0
23 partner_invoice_id: sale.res_partner_address_2
24 partner_order_id: sale.res_partner_address_1
25 partner_shipping_id: sale.res_partner_address_3
26 picking_policy: direct
27 pricelist_id: product.list0
30 I confirm the Sale Order.
32 !workflow {model: sale.order, action: order_confirm, ref: sale_order_so6}
34 I verify that the picking has been generated for the sale order
36 !python {model: sale.order}: |
37 so = self.browse(cr, uid, ref("sale_order_so6"))
38 assert so.picking_ids,"Picking has not been generated for sale_order_so6"
40 Then I click on the "Products Received" button of Incoming Shipments
42 !record {model: stock.partial.picking, id: stock_partial_picking_0}:
43 date: '2010-07-17 17:52:09'
45 Then I done the picking
47 !python {model: stock.picking }: |
49 sale_order_obj = self.pool.get('sale.order')
50 so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
51 picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
53 pick=self.browse(cr,uid,picking_id[0])
54 pick.force_assign(cr, uid)
56 'partner_id':pick.address_id.partner_id.id,
57 'address_id': pick.address_id.id,
58 'delivery_date' : time.strftime('%Y-%m-%d'),
60 move = pick.move_lines[0]
61 partial_datas['move%s'%(move.id)]= {
62 'product_id': move.product_id.id,
64 'product_uom': move.product_uom.id,
66 self.do_partial(cr, uid, [pick.id],partial_datas)
68 I click on Create Invoice button to create the invoice.
70 !workflow {model: sale.order, action: manual_invoice, ref: sale_order_so6}
72 I verify whether the invoice has been generated for SO
74 !python {model: sale.order}: |
75 so = self.browse(cr, uid, ref("sale_order_so6"))
76 assert so.invoice_ids, "Invoices has not been generated for sale_order_so6"
78 I verify that an invoice is created on the basis of shipped quantity
80 !python {model: account.invoice}: |
81 sale_order_obj = self.pool.get('sale.order')
82 so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
83 picking_obj = self.pool.get('stock.picking')
84 ids = picking_obj.search(cr, uid, [('origin', '=', so.name)])
85 pick_brw = picking_obj.browse(cr,uid, ids)[0]
86 for lines in pick_brw.move_lines:
88 inv_id = self.search(cr, uid, [('origin', '=', so.name)])
89 inv_brw = self.browse(cr,uid,inv_id)[0]
90 for inv_lines in inv_brw.invoice_line:
91 qty1=inv_lines.quantity
92 invoice_id = self.search(cr, uid, [('qty1','=', 'qty') and ('origin', '=', so.name)])
93 assert invoice_id, "Quantities are not same"
95 I open the Invoice for the SO.
97 !python {model: account.invoice}: |
98 sale_order_obj = self.pool.get('sale.order')
99 so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
101 wf_service = netsvc.LocalService("workflow")
102 invoice_ids = so.invoice_ids
103 for invoice in invoice_ids:
104 wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
106 Creating a account invoice pay entry.
108 !record {model: account.invoice.pay, id: account_invoice_pay_tst1}:
111 journal_id: sale.account_journal_bankjournal0
113 period_id: account.period_5
117 !python {model: account.invoice.pay}: |
118 sale_order_obj = self.pool.get('sale.order')
119 so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
120 self.wo_check(cr, uid, [ref("account_invoice_pay_tst1")], {"lang": "en_US", "tz":
121 False, "active_model": 'account.invoice', "active_ids": [so.invoice_ids[0].id], "type":
122 "out_invoice", "active_id": so.invoice_ids[0].id, })
124 Creating an account invoice pay writeoff entry.
126 !record {model: account.invoice.pay.writeoff, id: account_invoice_pay_writeoff_0}:
127 analytic_id: account.analytic_customers
129 writeoff_acc_id: account.a_sale
130 writeoff_journal_id: sale.account_journal_bankjournal0
132 Pay and Reconcile the Invoice.
134 !python {model: account.invoice.pay.writeoff}: |
135 sale_order_obj = self.pool.get('sale.order')
136 so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
137 self.pay_and_reconcile_writeoff(cr, uid, [ref("account_invoice_pay_writeoff_0")],
138 {"lang": 'en_US', "tz": False, "active_model": 'account.invoice', "active_ids":
139 [so.invoice_ids[0].id], "type": "out_invoice", "active_id": so.invoice_ids[0].id })
141 I verify the invoice are in paid state or not.
143 !python {model: account.invoice}: |
144 sale_order_obj = self.pool.get('sale.order')
145 so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
146 invoice_ids = so.invoice_ids
147 for invoice in invoice_ids:
148 assert (invoice.state) =='paid', "Invoice for SO is not in done state."
150 I check that Paid has been set to true.
152 !python {model: sale.order}: |
153 sale_id=self.browse(cr, uid, ref("sale_order_so6"))
154 assert(sale_id.invoiced == True), "Paid has not been set to true"