diff --git a/addons/gamification/goal.py b/addons/gamification/goal.py index 9f9df9b9d41..c5ef960d4b4 100644 --- a/addons/gamification/goal.py +++ b/addons/gamification/goal.py @@ -40,12 +40,32 @@ class gamification_goal_type(osv.Model): _name = 'gamification.goal.type' _description = 'Gamification goal type' + def _get_suffix(self, cr, uid, ids, field_name, arg, context=None): + res = dict.fromkeys(ids, 0) + for goal in self.browse(cr, uid, ids, context): + if goal.unit and not goal.monetary: + res[goal.id] = goal.unit + elif goal.monetary: + # use the current user's company currency + user = self.pool.get('res.users').browse(cr, uid, uid, context) + if goal.unit: + res[goal.id] = "%s %s" % (user.company_id.currency_id.symbol, goal.unit) + else: + res[goal.id] = user.company_id.currency_id.symbol + else: + res[goal.id] = "" + return res + _columns = { 'name': fields.char('Goal Type Name', required=True, translate=True), 'description': fields.text('Goal Description'), + 'monetary': fields.boolean('Monetary Value', help="The target and current value are defined in the company currency."), 'unit': fields.char('Suffix', help="The unit of the target and current values", translate=True), + 'full_suffix': fields.function(_get_suffix, type="char", + string="Full Suffix", help="The currency and suffix field"), + 'computation_mode': fields.selection([ ('manually', 'Recorded manually'), ('count', 'Automatic: number of records'), @@ -64,7 +84,7 @@ class gamification_goal_type(osv.Model): help='The date to use for the time period evaluated'), 'domain': fields.char("Filter Domain", help="Technical filters rules to apply", - required=True), # how to apply it ? + required=True), 'condition': fields.selection([ ('higher', 'The higher the better'), ('lower', 'The lower the better') diff --git a/addons/gamification/plan.py b/addons/gamification/plan.py index a05870e02cd..56c41c63996 100644 --- a/addons/gamification/plan.py +++ b/addons/gamification/plan.py @@ -237,7 +237,7 @@ class gamification_goal_plan(osv.Model): for plan in self.browse(cr, uid, ids, context=context): if plan.autojoin_group_id: - self.plan_subscribe_users(cr, uid, ids, [user.id for user in plan.autojoin_group_id.users], context=context) + self.plan_subscribe_users(cr, uid, [plan.id], [user.id for user in plan.autojoin_group_id.users], context=context) self.generate_goals_from_plan(cr, uid, [plan.id], context=context) # goals closed but still opened at the last report date @@ -577,4 +577,5 @@ class gamification_goal_planline(osv.Model): readonly=True, string="Condition", selection=[('lower', '<='), ('higher', '>=')]), 'type_unit': fields.related('type_id', 'unit', type="char", readonly=True, string="Unit"), 'type_monetary': fields.related('type_id', 'monetary', type="boolean", readonly=True, string="Monetary"), + 'type_full_suffix': fields.related('type_id', 'full_suffix', type="char", readonly=True, string="Suffix"), }