--- /dev/null
+# -*- 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()
--- /dev/null
+<?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>