← Back to team overview

savoirfairelinux-openerp team mailing list archive

lp:~camptocamp/e-commerce-addons/7.0-sale_automatic_workflow-create_invoice_option into lp:e-commerce-addons

 

Guewen Baconnier @ Camptocamp has proposed merging lp:~camptocamp/e-commerce-addons/7.0-sale_automatic_workflow-create_invoice_option into lp:e-commerce-addons.

Requested reviews:
  extra-addons-commiter (extra-addons-commiter)

For more details, see:
https://code.launchpad.net/~camptocamp/e-commerce-addons/7.0-sale_automatic_workflow-create_invoice_option/+merge/194367

On the workflows, the 'create_invoice' option is no longer a boolean, but a selection between 'off | on confirmation of sales order | after delivery'. The option is only available when the selected order policy is 'manual'. This replaces the removed 'postpaid' order_policy when we use automatic workflows.

It means that your are allowed to invoice on order after delivery, by choosing the 'On Demand' order policy and  'After Delivery' for the 'Create Invoice' option.
-- 
https://code.launchpad.net/~camptocamp/e-commerce-addons/7.0-sale_automatic_workflow-create_invoice_option/+merge/194367
Your team extra-addons-commiter is requested to review the proposed merge of lp:~camptocamp/e-commerce-addons/7.0-sale_automatic_workflow-create_invoice_option into lp:e-commerce-addons.
=== modified file 'sale_automatic_workflow/automatic_workflow_data.xml'
--- sale_automatic_workflow/automatic_workflow_data.xml	2013-03-27 13:21:58 +0000
+++ sale_automatic_workflow/automatic_workflow_data.xml	2013-11-07 15:51:51 +0000
@@ -8,18 +8,28 @@
 <openerp>
     <data noupdate="1">
 
-        <!-- VIEW FOR THE OBJECT : payment_method -->
         <record id="automatic_validation" model="sale.workflow.process">
-            <field name="name">Automatic Validation</field>
-            <field name="picking_policy">one</field>
-            <field name="order_policy">picking</field>
+            <field name="name">Automatic</field>
+            <field name="picking_policy">one</field>
+            <field name="order_policy">manual</field>
+            <field name="invoice_quantity">order</field>
+            <field name="validate_order" eval="1"/>
+            <field name="create_invoice_on">on_picking_done</field>
+            <field name="validate_invoice" eval="1" />
+            <field name="invoice_date_is_order_date" eval="0" />
+            <field name="validate_picking" eval="0" />
+        </record>
+
+        <record id="manual_validation" model="sale.workflow.process">
+            <field name="name">Manual</field>
+            <field name="picking_policy">one</field>
+            <field name="order_policy">manual</field>
             <field name="invoice_quantity">order</field>
             <field name="validate_order" eval="0"/>
-            <field name="create_invoice" eval="1" />
-            <field name="validate_invoice" eval="1" />
+            <field name="create_invoice_on">manual</field>
+            <field name="validate_invoice" eval="0" />
             <field name="invoice_date_is_order_date" eval="0" />
             <field name="validate_picking" eval="0" />
-            <field name="validate_manufactoring_order" eval="0" />
         </record>
 
         <record forcecreate="True" id="ir_cron_automatic_workflow_job" model="ir.cron">

=== modified file 'sale_automatic_workflow/sale.py'
--- sale_automatic_workflow/sale.py	2013-03-27 14:12:59 +0000
+++ sale_automatic_workflow/sale.py	2013-11-07 15:51:51 +0000
@@ -72,3 +72,19 @@
         if workflow.invoice_quantity:
             result['invoice_quantity'] = workflow.invoice_quantity
         return {'value': result}
+
+    def test_create_invoice(self, cr, uid, ids):
+        """ Workflow condition: test if an invoice should be created,
+        based on the automatic workflow rules """
+        if isinstance(ids, (list, tuple)):
+            assert len(ids) == 1
+            ids = ids[0]
+        order = self.browse(cr, uid, ids)
+        if order.order_policy != 'manual' or not order.workflow_process_id:
+            return False
+        invoice_on = order.workflow_process_id.create_invoice_on
+        if invoice_on == 'on_order_confirm':
+            return True
+        elif invoice_on == 'on_picking_done' and order.shipped:
+            return True
+        return False

=== modified file 'sale_automatic_workflow/sale_workflow.xml'
--- sale_automatic_workflow/sale_workflow.xml	2012-04-22 12:49:21 +0000
+++ sale_automatic_workflow/sale_workflow.xml	2013-11-07 15:51:51 +0000
@@ -5,7 +5,7 @@
         <record id="trans_wait_invoice_invoice" model="workflow.transition">
             <field name="act_from" ref="sale.act_wait_invoice"/>
             <field name="act_to" ref="sale.act_invoice"/>
-            <field name="condition">(order_policy=='manual' and workflow_process_id.create_invoice)</field>
+            <field name="condition">test_create_invoice()</field>
         </record>
 
     </data>

=== modified file 'sale_automatic_workflow/sale_workflow_process.py'
--- sale_automatic_workflow/sale_workflow_process.py	2013-09-25 08:38:41 +0000
+++ sale_automatic_workflow/sale_workflow_process.py	2013-11-07 15:51:51 +0000
@@ -38,21 +38,25 @@
 
     _columns = {
         'name': fields.char('Name', size=64),
-        'picking_policy': fields.selection([('direct', 'Deliver each product when available'),
-                                            ('one', 'Deliver all products at once')],
-                                           string='Shipping Policy'),
-        'order_policy': fields.selection([
-            ('prepaid', 'Before Delivery'),
-            ('manual', 'On Demand'),
-            # https://bugs.launchpad.net/openobject-addons/+bug/1160835
-            # ('postpaid', 'Invoice on Order After Delivery'),
-            ('picking', 'On Delivery Order'),
-        ], 'Invoice Policy'),
-        'invoice_quantity': fields.selection([('order', 'Ordered Quantities'),
-                                              ('procurement', 'Shipped Quantities')],
-                                             string='Invoice on'),
+        'picking_policy': fields.selection(
+            [('direct', 'Deliver each product when available'),
+             ('one', 'Deliver all products at once')],
+            string='Shipping Policy'),
+        'order_policy': fields.selection([('prepaid', 'Before Delivery'),
+                                          ('manual', 'On Demand'),
+                                          ('picking', 'On Delivery Order')],
+                                         string='Invoice Policy'),
+        'invoice_quantity': fields.selection(
+            [('order', 'Ordered Quantities'),
+             ('procurement', 'Shipped Quantities')],
+            string='Invoice on'),
         'validate_order': fields.boolean('Validate Order'),
-        'create_invoice': fields.boolean('Create Invoice'),
+        'create_invoice_on': fields.selection(
+            [('manual', 'No automatic invoice'),
+             ('on_order_confirm', 'On confirmation of Sale Order'),
+             ('on_picking_done', 'After Delivery')],
+            required=True,
+            string='Create Invoice'),
         'validate_invoice': fields.boolean('Validate Invoice'),
         'validate_picking': fields.boolean('Confirm and Close Picking'),
         # TODO not implemented actually
@@ -66,6 +70,7 @@
     _defaults = {
         'picking_policy': 'direct',
         'order_policy': 'manual',
+        'create_invoice_on': 'manual',
         'invoice_quantity': 'order',
         'validate_invoice': False,
     }

=== modified file 'sale_automatic_workflow/sale_workflow_process_view.xml'
--- sale_automatic_workflow/sale_workflow_process_view.xml	2013-04-11 09:15:22 +0000
+++ sale_automatic_workflow/sale_workflow_process_view.xml	2013-11-07 15:51:51 +0000
@@ -23,7 +23,7 @@
                     <field name="validate_order"/>
                     <field name="validate_picking"/>
                     <!-- <field name="validate_manufactoring_order"/> -->
-                    <field name="create_invoice" />
+                    <field name="create_invoice_on" attrs="{'readonly': [('order_policy', '!=', 'manual')]}" />
                     <field name="validate_invoice"/>
                     <field name="invoice_date_is_order_date"/>
 
@@ -43,7 +43,7 @@
                     <field name="validate_order"/>
                     <field name="validate_picking"/>
                     <!-- <field name="validate_manufactoring_order"/> -->
-                    <field name="create_invoice" />
+                    <field name="create_invoice_on" />
                     <field name="validate_invoice"/>
                     <field name="invoice_date_is_order_date"/>
                 </tree>


Follow ups