##############################################################################
import remembership
+import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
'view/partner.xml',
'view/point_of_sale.xml',
'view/membership.xml',
+ 'wizard/remembership_invoice_view.xml',
],
'update_xml': [],
'demo_xml': [],
msgstr ""
"Project-Id-Version: OpenERP Server 6.2dev-20121129-000101\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-20 15:21+0000\n"
-"PO-Revision-Date: 2012-12-20 16:23+0100\n"
+"POT-Creation-Date: 2012-12-20 16:17+0000\n"
+"PO-Revision-Date: 2012-12-20 17:50+0100\n"
"Last-Translator: Ludovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>\n"
"Language-Team: \n"
"Language: \n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
+#. module: remembership
+#: help:res.partner,associate_members:0
+msgid "Members who are associated to this partner. If this member buy a membership, the associates members will be members too."
+msgstr "Membres qui sont associé-e-s à ce partenaire. Si ce partenaire adhère, ses membres associé-e-s adhèreront également."
+
+#. module: remembership
+#: view:res.partner:0
+msgid "Members"
+msgstr "Membres"
+
#. module: remembership
#: model:ir.model,name:remembership.model_pos_make_payment
msgid "Point of Sale Payment"
msgid "Invoice Line"
msgstr "Ligne de facture"
-#. module: remembership
-#: help:res.partner,associate_members:0
-msgid "Members who are associated to this partner."
-msgstr "Membres qui sont associé-e-s à ce-tte partenaire."
-
#. module: remembership
#: field:res.partner,member_ident:0
msgid "Member identifier"
msgid "Associate members"
msgstr "Membres associé-e-s"
+#~ msgid "Members who are associated to this partner."
+#~ msgstr "Membres qui sont associé-e-s à ce-tte partenaire."
+
#~ msgid "Product"
#~ msgstr "Produit"
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha-20121206-000102\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-20 15:21+0000\n"
-"PO-Revision-Date: 2012-12-20 15:21+0000\n"
+"POT-Creation-Date: 2012-12-20 16:17+0000\n"
+"PO-Revision-Date: 2012-12-20 16:17+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
+#. module: remembership
+#: help:res.partner,associate_members:0
+msgid "Members who are associated to this partner. If this member buy a membership, the associates members will be members too."
+msgstr ""
+
+#. module: remembership
+#: view:res.partner:0
+msgid "Members"
+msgstr ""
+
#. module: remembership
#: model:ir.model,name:remembership.model_pos_make_payment
msgid "Point of Sale Payment"
msgid "Invoice Line"
msgstr ""
-#. module: remembership
-#: help:res.partner,associate_members:0
-msgid "Members who are associated to this partner."
-msgstr ""
-
#. module: remembership
#: field:res.partner,member_ident:0
msgid "Member identifier"
import time
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
+from openerp.tools.translate import _
class Partner(osv.osv):
print ("DEV: [_membership_date] [associate] date_from: %s" % str(res[partner.id]['membership_start']))
else:
print ("DEV: [_membership_date] date_from: %s" % str(res[partner.id]['membership_start']))
-
+
if name == 'membership_stop':
line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
limit=1, order='date_to desc', context=context)
print ("DEV: [_membership_date] [associate] date_to: %s" % str(res[partner.id]['membership_stop']))
else:
print ("DEV: [_membership_date] date_to: %s" % str(res[partner.id]['membership_stop']))
-
+
if name == 'membership_cancel':
if partner.membership_state == 'canceled':
line_id2 = member_line_obj.search(cr, uid, [('partner', '=', partner.id)], limit=1, order='date_cancel', context=context)
'date_to': date_to,
'account_invoice_line': line.id,
}, context=context)
+ elif line.product_id.membership_grouped and not line.invoice_id.partner_id.associate_members:
+ raise osv.except_osv(_('Error!!!'), _('You try to invoice grouped membership product to a partner who hasn\'t associated partners.'))
#Define member ident if it's necessary
for i in partners:
if not i.member_ident:
<field name="member_ident" readonly="1"/>
<newline/>
</xpath>
+ <xpath expr="//field[@name='associate_member']" position="replace">
+ <field name="associate_members" widget="many2many"/>
+ </xpath>
+ </field>
+ </record>
+ <record id="view_remembership_members_simple_tree" model="ir.ui.view">
+ <field name="name">res.partner.tree</field>
+ <field name="model">res.partner</field>
+ <field name="type">tree</field>
+ <field name="priority" eval="1"/>
+ <field name="arch" type="xml">
+ <tree string="Members">
+ <field name="member_ident"/>
+ <field name="name"/>
+ </tree>
</field>
</record>
<record id="view_remembership_members_tree" model="ir.ui.view">
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import remembership_invoice
--- /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>