Merge lp:~openerp-dev/openobject-addons/trunk-simplify_picking_invoice-sgo into lp:openobject-addons

Proposed by Sanjay Gohel (Open ERP)
Status: Merged
Merged at revision: 6764
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-simplify_picking_invoice-sgo
Merge into: lp:openobject-addons
Diff against target: 142 lines (+13/-69)
6 files modified
sale/__openerp__.py (+0/-1)
sale/sale.py (+10/-11)
sale/sale_demo.xml (+1/-1)
sale/sale_view.xml (+1/-1)
sale/sale_workflow.xml (+1/-1)
sale/test/postpaid_order_policy.yml (+0/-54)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-simplify_picking_invoice-sgo
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+96071@code.launchpad.net

Description of the change

Hello,

    I have done following works.

1. Simplify picking and invoice policy for this I have edit field order_policy rename view as a create invoice.

2. Remove one selection postpaid which is no longer use. and also remove all postpaid related code demo data and yml file.

3.Make invisible field invoice_on as it works automatically on the basis of create invoice.create invoice worked with combination of invoice_on and itself.

4. Rename invoice picking policy to ship policy for more understanding.

Thank You
sanjay Gohel
(SGO)

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'sale/__openerp__.py'
2--- sale/__openerp__.py 2012-04-02 09:27:46 +0000
3+++ sale/__openerp__.py 2012-04-27 13:37:21 +0000
4@@ -92,7 +92,6 @@
5 'test/sale_order_demo.yml',
6 'test/picking_order_policy.yml',
7 'test/manual_order_policy.yml',
8- 'test/postpaid_order_policy.yml',
9 'test/prepaid_order_policy.yml',
10 'test/cancel_order.yml',
11 'test/delete_order.yml',
12
13=== modified file 'sale/sale.py'
14--- sale/sale.py 2012-04-18 15:00:26 +0000
15+++ sale/sale.py 2012-04-27 13:37:21 +0000
16@@ -222,18 +222,17 @@
17
18 'incoterm': fields.many2one('stock.incoterms', 'Incoterm', help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction."),
19 'picking_policy': fields.selection([('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')],
20- 'Picking Policy', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
21+ 'Shipping Policy', required=True, readonly=True, states={'draft': [('readonly', False)]},
22+ help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
23 'order_policy': fields.selection([
24- ('prepaid', 'Pay before delivery'),
25- ('manual', 'Deliver & invoice on demand'),
26- ('picking', 'Invoice based on deliveries'),
27- ('postpaid', 'Invoice on order after delivery'),
28- ], 'Invoice Policy', required=True, readonly=True, states={'draft': [('readonly', False)]},
29- help="""The Invoice Policy is used to synchronise invoice and delivery operations.
30- - The 'Pay before delivery' choice will first generate the invoice and then generate the picking order after the payment of this invoice.
31- - The 'Deliver & Invoice on demand' will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice based on the sale order or the sale order lines.
32- - The 'Invoice on order after delivery' choice will generate the draft invoice based on sales order after all picking lists have been finished.
33- - The 'Invoice based on deliveries' choice is used to create an invoice during the picking process."""),
34+ ('manual', 'On Demand'),
35+ ('picking', 'On Delivery Order'),
36+ ('prepaid', 'Before Delivery'),
37+ ], 'Create Invoice', required=True, readonly=True, states={'draft': [('readonly', False)]},
38+ help="""This field controls how invoice and delivery operations are synchronized.
39+ - With 'On Demand', the invoice is created manually when needed.
40+ - With 'On Delivery Order', a draft invoice is generated after all pickings have been processed.
41+ - With 'Before Delivery', a draft invoice is created, and it must be paid before delivery."""),
42 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist for current sales order."),
43 'project_id': fields.many2one('account.analytic.account', 'Contract/Analytic Account', readonly=True, states={'draft': [('readonly', False)]}, help="The analytic account related to a sales order."),
44
45
46=== modified file 'sale/sale_demo.xml'
47--- sale/sale_demo.xml 2012-03-20 05:22:58 +0000
48+++ sale/sale_demo.xml 2012-04-27 13:37:21 +0000
49@@ -68,7 +68,7 @@
50 <field name="partner_invoice_id" ref="base.res_partner_address_9"/>
51 <field name="partner_shipping_id" ref="base.res_partner_address_9"/>
52 <field name="invoice_quantity">order</field>
53- <field name="order_policy">postpaid</field>
54+ <field name="order_policy">prepaid</field>
55
56 </record>
57
58
59=== modified file 'sale/sale_view.xml'
60--- sale/sale_view.xml 2012-04-25 12:12:23 +0000
61+++ sale/sale_view.xml 2012-04-27 13:37:21 +0000
62@@ -227,7 +227,7 @@
63 <field name="incoterm" widget="selection"/>
64 <field name="picking_policy" required="True"/>
65 <field name="order_policy" on_change="shipping_policy_change(order_policy)"/>
66- <field name="invoice_quantity" attrs="{'readonly':[('order_policy','in',('prepaid','picking'))]}"/>
67+ <field name="invoice_quantity" invisible="True"/>
68 </group>
69 <group colspan="2" col="2">
70 <separator string="References" colspan="2"/>
71
72=== modified file 'sale/sale_workflow.xml'
73--- sale/sale_workflow.xml 2011-12-19 16:54:40 +0000
74+++ sale/sale_workflow.xml 2012-04-27 13:37:21 +0000
75@@ -172,7 +172,7 @@
76 <record id="trans_wait_invoice_invoice" model="workflow.transition">
77 <field name="act_from" ref="act_wait_invoice"/>
78 <field name="act_to" ref="act_invoice"/>
79- <field name="condition">(order_policy=='prepaid') or ((order_policy=='postpaid') and shipped)</field>
80+ <field name="condition">(order_policy=='prepaid')</field>
81 </record>
82
83 <record id="trans_wait_invoice_invoice_manual" model="workflow.transition">
84
85=== removed file 'sale/test/postpaid_order_policy.yml'
86--- sale/test/postpaid_order_policy.yml 2011-12-19 16:54:40 +0000
87+++ sale/test/postpaid_order_policy.yml 1970-01-01 00:00:00 +0000
88@@ -1,54 +0,0 @@
89--
90- Now I confirm the Quotation with "Invoice on order after delivery" policy.
91--
92- !workflow {model: sale.order, action: order_confirm, ref: order2}
93--
94- I check that related delivery order after confirmed.
95--
96- !python {model: sale.order}: |
97- sale_order = self.browse(cr, uid, ref("order2"))
98- assert sale_order.picking_ids, "Delivery Order should be created."
99- assert len(sale_order.invoice_ids) == False, "Invoice should be not created."
100--
101- Now, I dispatch delivery order.
102--
103- !python {model: stock.partial.picking}: |
104- order = self.pool.get('sale.order').browse(cr, uid, ref("order2"))
105- for pick in order.picking_ids:
106- data = pick.force_assign()
107- if data == True:
108- partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick.id]})
109- self.do_partial(cr, uid, [partial_id])
110--
111- I open the invoice.
112--
113- !python {model: sale.order}: |
114- import netsvc
115- wf_service = netsvc.LocalService("workflow")
116- order = self.browse(cr, uid, ref("order2"))
117- #assert order.invoice_ids, "Invoice should be created after dispatch delivery order."
118- for invoice in order.invoice_ids:
119- wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_open', cr)
120--
121- I pay the invoice.
122--
123- !python {model: account.invoice}: |
124- sale_order = self.pool.get('sale.order')
125- order = sale_order.browse(cr, uid, ref("order2"))
126- journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
127- for invoice in order.invoice_ids:
128- invoice.pay_and_reconcile(
129- invoice.amount_total, ref('account.cash'), ref('account.period_8'),
130- journal_ids[0], ref('account.cash'),
131- ref('account.period_8'), journal_ids[0],
132- name='test')
133--
134- I check that an order has been invoiced, shipped and closed.
135--
136- !python {model: sale.order}: |
137- order = self.browse(cr, uid, ref("order2"))
138- assert order.picked_rate == 100, "Shipment progress is not 100%."
139- #assert order.shipped, "Delivery Order should be dispatch." #TOFIX: procurement is gone in idle state so order never shipped, invoiced. after install mrp, it will be normal.
140- #assert order.invoiced == True, "Sale order is not invoiced."
141- #assert order.invoiced_rate == 100, "Invoiced progress is not 100%."
142- #assert order.state == 'done', 'Order should be in closed.'

Subscribers

People subscribed via source and target branches

to all changes: