[date2date] date_from choice in the wizard
authorLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Fri, 11 Jan 2013 17:15:40 +0000 (18:15 +0100)
committerLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Fri, 11 Jan 2013 17:15:40 +0000 (18:15 +0100)
__init__.py
__openerp__.py
wizard/__init__.py [new file with mode: 0644]
wizard/remembership_invoice.py [new file with mode: 0644]
wizard/remembership_invoice_view.xml [new file with mode: 0644]

index a7284a9..0c00d91 100644 (file)
@@ -22,5 +22,6 @@
 ##############################################################################
 
 import remembership
+import wizard
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
index d71b1ac..fcef0d0 100644 (file)
@@ -37,6 +37,7 @@
         'view/partner.xml',
         'view/point_of_sale.xml',
         'view/membership.xml',
+        'wizard/remembership_invoice_view.xml',
     ],
     'update_xml': [],
     'demo_xml': [],
diff --git a/wizard/__init__.py b/wizard/__init__.py
new file mode 100644 (file)
index 0000000..995bfd9
--- /dev/null
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+import remembership_invoice
diff --git a/wizard/remembership_invoice.py b/wizard/remembership_invoice.py
new file mode 100644 (file)
index 0000000..99fab8b
--- /dev/null
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import osv
+from openerp.osv import fields
+from datetime import datetime
+
+
+class membership_invoice(osv.osv):
+    _inherit = 'membership.invoice'
+
+    _columns = {
+        'date_from': fields.date('This membership start date'),
+        'is_date2date': fields.boolean('This membership product is date to date.', readonly=True),
+    }
+
+    _defaults = {
+        'date_from': datetime.today().strftime('%Y-%m-%d'),
+    }
+
+    def onchange_product(self, cr, uid, ids, product_id=False):
+        res = super(membership_invoice, self).onchange_product(cr, uid, ids, product_id)
+        if product_id:
+            res['value']['is_date2date'] = self.pool.get('product.product').browse(cr, uid, [product_id], context=None)[0].membership_date2date
+        else:
+            res['value']['is_date2date'] = False
+
+        return res
+
+    def membership_invoice(self, cr, uid, ids, context=None):
+        """NOTE:  Copy of orginial function for overwrite it by adding
+        date_from value for date to date membership products. Keep an eye of it
+        for taking advantage of its enhancements (2013-01-11)"""
+        mod_obj = self.pool.get('ir.model.data')
+        partner_obj = self.pool.get('res.partner')
+        datas = {}
+        if context is None:
+            context = {}
+        data = self.browse(cr, uid, ids, context=context)
+        if data:
+            data = data[0]
+            datas = {
+                'membership_product_id': data.product_id.id,
+                'amount': data.member_price,
+                'date_from': data.date_from
+            }
+        invoice_list = partner_obj.create_membership_invoice(cr, uid, context.get('active_ids', []), datas=datas, context=context)
+
+        res = mod_obj.get_object_reference(cr, uid, 'account', 'view_account_invoice_filter')
+
+        return {
+            'domain': [('id', 'in', invoice_list)],
+            'name': 'Membership Invoices',
+            'view_type': 'form',
+            'view_mode': 'tree,form',
+            'res_model': 'account.invoice',
+            'type': 'ir.actions.act_window',
+            'search_view_id': res and res[1] or False
+        }
+
+membership_invoice()
diff --git a/wizard/remembership_invoice_view.xml b/wizard/remembership_invoice_view.xml
new file mode 100644 (file)
index 0000000..5fdb3d2
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record id="view_membership_invoice_view" model="ir.ui.view">
+            <field name="name">membership.invoice.view.form</field>
+            <field name="model">membership.invoice</field>
+            <field name="inherit_id" ref="membership.view_membership_invoice_view"/>
+            <field name="arch" type="xml">
+                <xpath expr="//field[@name='product_id']" position="after">
+                    <field name="is_date2date" on_change="onchange_product(product_id)"/>
+                    <field name="date_from" attrs="{'invisible': [('is_date2date','=', False)]}"/>
+                </xpath>
+            </field>
+        </record>
+    </data>
+</openerp>