import time
from osv import fields, osv
-from tools import config
import decimal_precision as dp
from tools.translate import _
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True, help='Amount for the membership'),
'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True),
'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True),
- 'state': fields.function(_state, method=True,
+ 'state': fields.function(_state,
string='Membership State', type='selection',
selection=STATE, store = {
'account.invoice': (_get_membership_lines, ['state'], 10),
'res.partner': (_get_partners, ['membership_state'], 12),
}, help="""It indicates the membership state.
- -Non Member: A member who has not applied for any membership.
- -Cancelled Member: A member who has cancelled his membership.
- -Old Member: A member whose membership date has expired.
- -Waiting Member: A member who has applied for the membership and whose invoice is going to be created.
- -Invoiced Member: A member whose invoice has been created.
- -Paid Member: A member who has paid the membership amount."""),
+ -Non Member: A member who has not applied for any membership.
+ -Cancelled Member: A member who has cancelled his membership.
+ -Old Member: A member whose membership date has expired.
+ -Waiting Member: A member who has applied for the membership and whose invoice is going to be created.
+ -Invoiced Member: A member whose invoice has been created.
+ -Paid Member: A member who has paid the membership amount."""),
'company_id': fields.related('account_invoice_line', 'invoice_id', 'company_id', type="many2one", relation="res.company", string="Company", readonly=True, store=True)
}
_rec_name = 'partner'
'membership_cancel': False
}
if name == 'membership_start':
- line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id)],
+ line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
limit=1, order='date_from', context=context)
if line_id:
res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0],
['date_from'], context=context)['date_from']
if name == 'membership_stop':
- line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id)],
+ line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
limit=1, order='date_to desc', context=context)
if line_id1:
res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0],
'Membership amount', digits=(16, 2),
help = 'The price negotiated by the partner'),
'membership_state': fields.function(
- __get_membership_state, method=True,
+ __get_membership_state,
string = 'Current Membership State', type = 'selection',
selection = STATE,
store = {
'membership.membership_line': (_get_partner_id, ['state'], 10),
'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10)
}, help="""It indicates the membership state.
- -Non Member: A member who has not applied for any membership.
- -Cancelled Member: A member who has cancelled his membership.
- -Old Member: A member whose membership date has expired.
- -Waiting Member: A member who has applied for the membership and whose invoice is going to be created.
- -Invoiced Member: A member whose invoice has been created.
- -Paid Member: A member who has paid the membership amount."""),
+ -Non Member: A member who has not applied for any membership.
+ -Cancelled Member: A member who has cancelled his membership.
+ -Old Member: A member whose membership date has expired.
+ -Waiting Member: A member who has applied for the membership and whose invoice is going to be created.
+ -Invoiced Member: A member whose invoice has been created.
+ -Paid Member: A member who has paid the membership amount."""),
'membership_start': fields.function(
- _membership_date, method=True, multi = 'membeship_start',
+ _membership_date, multi = 'membeship_start',
string = 'Start membership date', type = 'date',
store = {
'account.invoice': (_get_invoice_partner, ['state'], 10),
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
}, help="Date from which membership becomes active."),
'membership_stop': fields.function(
- _membership_date, method=True,
+ _membership_date,
string = 'Stop membership date', type='date', multi='membership_stop',
store = {
'account.invoice': (_get_invoice_partner, ['state'], 10),
'membership.membership_line': (_get_partner_id, ['state'], 10),
- 'res.partner': (lambda self, cr, uid, ids, c={}:ids, ['free_member'], 10)
+ 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
}, help="Date until which membership remains active."),
'membership_cancel': fields.function(
- _membership_date, method=True,
+ _membership_date,
string = 'Cancel membership date', type='date', multi='membership_cancel',
store = {
'account.invoice': (_get_invoice_partner, ['state'], 11),
'membership.membership_line': (_get_partner_id, ['state'], 10),
- 'res.partner': (lambda self, cr, uid, ids, c={}:ids, ['free_member'], 10)
+ 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
}, help="Date on which membership has been cancelled"),
}
_defaults = {
'membership_cancel': False,
}
- def _check_recursion(self, cr, uid, ids):
+ def _check_recursion(self, cr, uid, ids, context=None):
"""Check Recursive for Associated Members.
"""
level = 100
return True
_constraints = [
- (_check_recursion, 'Error ! You can not create recursive associated members.', ['associate_member'])
+ (_check_recursion, 'Error ! You cannot create recursive associated members.', ['associate_member'])
]
def copy(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
- if context is None:
- context = {}
default = default.copy()
default['member_lines'] = []
return super(Partner, self).copy(cr, uid, id, default, context=context)
def create_membership_invoice(self, cr, uid, ids, product_id=None, datas=None, context=None):
""" Create Customer Invoice of Membership for partners.
@param datas: datas has dictionary value which consist Id of Membership product and Cost Amount of Membership.
- datas = {'membership_product_id': None, 'amount':None}
+ datas = {'membership_product_id': None, 'amount': None}
"""
invoice_obj = self.pool.get('account.invoice')
invoice_line_obj = self.pool.get('account.invoice.line')
invoice_tax_obj = self.pool.get('account.invoice.tax')
product_id = product_id or datas.get('membership_product_id', False)
amount = datas.get('amount', 0.0)
- if not context:
- context={}
invoice_list = []
if type(ids) in (int, long,):
ids = [ids]
line_dict = invoice_line_obj.product_id_change(cr, uid, {},
product_id, False, quantity, '', 'out_invoice', partner.id, fpos_id, price_unit=amount, context=context)
line_value.update(line_dict['value'])
+ line_value['price_unit'] = amount
if line_value.get('invoice_line_tax_id', False):
tax_tab = [(6, 0, line_value['invoice_line_tax_id'])]
line_value['invoice_line_tax_id'] = tax_tab
class product_template(osv.osv):
_inherit = 'product.template'
_columns = {
- 'member_price':fields.float('Member Price', digits_compute= dp.get_precision('Sale Price')),
+ 'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Sale Price')),
}
+
product_template()
class Product(osv.osv):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
model_obj = self.pool.get('ir.model.data')
+ if context is None:
+ context = {}
if ('product' in context) and (context['product']=='membership_product'):
model_data_ids_form = model_obj.search(cr, user, [('model','=','ir.ui.view'), ('name', 'in', ['membership_products_form', 'membership_products_tree'])], context=context)
_defaults = {
'membership': False,
}
+
Product()
[l.id for l in invoice.invoice_line])])
member_line_obj.write(cr, uid, mlines, {'date_cancel': today})
return super(Invoice, self).action_cancel(cr, uid, ids)
+
Invoice()
class account_invoice_line(osv.osv):
def write(self, cr, uid, ids, vals, context=None):
"""Overrides orm write method
"""
- if not context:
- context={}
- res = super(account_invoice_line, self).write(cr, uid, ids, vals, context=context)
member_line_obj = self.pool.get('membership.membership_line')
+ res = super(account_invoice_line, self).write(cr, uid, ids, vals, context=context)
for line in self.browse(cr, uid, ids, context=context):
if line.invoice_id.type == 'out_invoice':
ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line', '=', line.id)], context=context)
date_to = line.product_id.membership_date_to
if line.invoice_id.date_invoice > date_from and line.invoice_id.date_invoice < date_to:
date_from = line.invoice_id.date_invoice
- line_id = member_line_obj.create(cr, uid, {
- 'partner': line.invoice_id.partner_id.id,
- 'membership_id': line.product_id.id,
- 'member_price': line.price_unit,
- 'date': time.strftime('%Y-%m-%d'),
- 'date_from': date_from,
- 'date_to': date_to,
- 'account_invoice_line': line.id,
- }, context=context)
+ member_line_obj.create(cr, uid, {
+ 'partner': line.invoice_id.partner_id.id,
+ 'membership_id': line.product_id.id,
+ 'member_price': line.price_unit,
+ 'date': time.strftime('%Y-%m-%d'),
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'account_invoice_line': line.id,
+ }, context=context)
if line.product_id and not line.product_id.membership and ml_ids:
# Product line has changed to a non membership product
member_line_obj.unlink(cr, uid, ml_ids, context=context)
def unlink(self, cr, uid, ids, context=None):
"""Remove Membership Line Record for Account Invoice Line
"""
- if not context:
- context={}
member_line_obj = self.pool.get('membership.membership_line')
for id in ids:
ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line', '=', id)], context=context)
def create(self, cr, uid, vals, context=None):
"""Overrides orm create method
"""
+ member_line_obj = self.pool.get('membership.membership_line')
result = super(account_invoice_line, self).create(cr, uid, vals, context=context)
line = self.browse(cr, uid, result, context=context)
- member_line_obj = self.pool.get('membership.membership_line')
if line.invoice_id.type == 'out_invoice':
ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line', '=', line.id)], context=context)
if line.product_id and line.product_id.membership and not ml_ids:
date_to = line.product_id.membership_date_to
if line.invoice_id.date_invoice > date_from and line.invoice_id.date_invoice < date_to:
date_from = line.invoice_id.date_invoice
- line_id = member_line_obj.create(cr, uid, {
+ member_line_obj.create(cr, uid, {
'partner': line.invoice_id.partner_id and line.invoice_id.partner_id.id or False,
'membership_id': line.product_id.id,
'member_price': line.price_unit,
return result
account_invoice_line()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: