[IMP] get translated JS strings outside of QWeb attributes as the corresponding extra...
[odoo/odoo.git] / addons / membership / membership.py
index 41435cd..4949531 100644 (file)
@@ -22,7 +22,6 @@
 import time
 
 from osv import fields, osv
-from tools import config
 import decimal_precision as dp
 from tools.translate import _
 
@@ -150,18 +149,18 @@ class membership_line(osv.osv):
         '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'
@@ -285,14 +284,14 @@ class Partner(osv.osv):
                  '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],
@@ -323,7 +322,7 @@ class Partner(osv.osv):
                     '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 = {
@@ -331,14 +330,14 @@ class Partner(osv.osv):
                         '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),
@@ -346,20 +345,20 @@ class Partner(osv.osv):
                         '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 = {
@@ -367,7 +366,7 @@ class Partner(osv.osv):
         '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
@@ -380,14 +379,12 @@ class Partner(osv.osv):
         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)
@@ -395,15 +392,13 @@ class Partner(osv.osv):
     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]
@@ -425,6 +420,7 @@ class Partner(osv.osv):
             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
@@ -452,14 +448,17 @@ Partner()
 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)
@@ -484,6 +483,7 @@ class Product(osv.osv):
     _defaults = {
         'membership': False,
     }
+
 Product()
 
 
@@ -501,6 +501,7 @@ class Invoice(osv.osv):
                         [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):
@@ -509,10 +510,8 @@ 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)
@@ -522,15 +521,15 @@ class account_invoice_line(osv.osv):
                     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)
@@ -539,8 +538,6 @@ class account_invoice_line(osv.osv):
     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)
@@ -550,9 +547,9 @@ class account_invoice_line(osv.osv):
     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:
@@ -561,7 +558,7 @@ class account_invoice_line(osv.osv):
                 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,
@@ -573,4 +570,5 @@ class account_invoice_line(osv.osv):
         return result
 
 account_invoice_line()
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: