Bharat Devnani (Open ERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-addons-issues5-sale-pso-direct-invoice-bde
 into lp:~openerp-dev/openobject-addons/trunk-addons-issues5-sale-pso.

Requested reviews:
  OpenERP R&D Team (openerp-dev)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-addons-issues5-sale-pso-direct-invoice-bde/+merge/122803

Hello Sir,

I have added functionality which will create invoice directly when there 
is no product_id in Sale Order Line, without considering order_policy.

Thanks & Regards,
Devnani Bharat R.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-addons-issues5-sale-pso-direct-invoice-bde/+merge/122803
Your team OpenERP R&D Team is requested to review the proposed merge of 
lp:~openerp-dev/openobject-addons/trunk-addons-issues5-sale-pso-direct-invoice-bde
 into lp:~openerp-dev/openobject-addons/trunk-addons-issues5-sale-pso.
=== modified file 'sale/sale.py'
--- sale/sale.py	2012-08-23 12:19:52 +0000
+++ sale/sale.py	2012-09-05 07:09:18 +0000
@@ -726,12 +726,33 @@
             self.cancel_send_note(cr, uid, [sale.id], context=None)
         self.write(cr, uid, ids, {'state': 'cancel'})
         return True
-
+    
+    def check_product(self, cr, uid, ids, mode, context=None):
+        res = self.check_so_lines_product(cr, uid, ids, context=context)
+        if not res:
+            return mode
+    
+    def check_so_lines_product(self, cr, uid, ids, context=None):
+        ''' IF all SO lines are without product_id, then invoice will be created without considering 
+        order policy '''
+        sale_order_lines = self.browse(cr, uid, ids, context=context)[0].order_line
+        num_order_lines = len(sale_order_lines)
+        cnt = 0
+        for sale_order_line in sale_order_lines:
+            if not sale_order_line.product_id:
+                cnt += 1
+        if cnt == num_order_lines:
+            return True
+        return False
+    
     def action_button_confirm(self, cr, uid, ids, context=None):
         assert len(ids) == 1, 'This option should only be used for a single id at a time.'
         wf_service = netsvc.LocalService('workflow')
+        order_policy = self.browse(cr, uid, ids, context=context)[0].order_policy
         wf_service.trg_validate(uid, 'sale.order', ids[0], 'order_confirm', cr)
-
+        res = self.check_so_lines_product(cr, uid, ids, context=context)
+        if res:
+            self.manual_invoice(cr, uid, ids, context=context)
         # redisplay the record as a sale order
         view_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'sale', 'view_order_form')
         view_id = view_ref and view_ref[1] or False,

=== modified file 'sale/sale_view.xml'
--- sale/sale_view.xml	2012-08-23 12:19:52 +0000
+++ sale/sale_view.xml	2012-09-05 07:09:18 +0000
@@ -163,7 +163,7 @@
                             <button name="action_button_confirm" states="draft" string="Confirm" type="object"/>
                             <button name="action_button_confirm" states="sent" string="Confirm" class="oe_highlight" type="object"/>
                             <button name="action_view_invoice" string="View Invoice" type="object" class="oe_highlight"
-                              attrs="{'invisible': ['|','|',('state', '!=','progress'), ('invoiced', '=', True),('order_policy','=','picking')]}"/>
+                              attrs="{'invisible': ['|','|','|','|',('state', '!=','progress'), ('invoiced', '=', True),('order_policy','=','picking'), ('invoice_ids', '=', []), ('shipped', '=', False)]}"/>
                             <button name="action_view_delivery" string="View Delivery Order" type="object" class="oe_highlight"
                               attrs="{'invisible': ['|','|','|',('picking_ids','=',False),('picking_ids','=',[]), ('state', 'not in', ('progress','manual')),('shipped','=',True)]}"/>
                             <button name="%(action_view_sale_advance_payment_inv)d" string="Create Invoice"

=== modified file 'sale/sale_workflow.xml'
--- sale/sale_workflow.xml	2012-05-25 13:35:36 +0000
+++ sale/sale_workflow.xml	2012-09-05 07:09:18 +0000
@@ -162,7 +162,7 @@
         <record id="trans_router_wait_invoice_shipping" model="workflow.transition">
             <field name="act_from" ref="act_wait_invoice"/>
             <field name="act_to" ref="act_invoice_end"/>
-            <field name="condition">(order_policy=='picking')</field>
+            <field name="condition">(order_policy=='picking') and check_product('product')</field>
         </record>
 
         <record id="trans_router_wait_invoice" model="workflow.transition">

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to