X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22cfg%22%2C%22cfg=%24lien%22%29%20.%20%22?a=blobdiff_plain;f=pos_membership.py;h=e0b63c9908a3d116e16e6be037bc98ccd2703b9a;hb=HEAD;hp=cce51b5632c911931eed5f5e7a77505e29f3fd00;hpb=335a3f0c69793b57da7d7a5443c25efa8f4029d4;p=burette%2Fpos_membership.git diff --git a/pos_membership.py b/pos_membership.py index cce51b5..e0b63c9 100644 --- a/pos_membership.py +++ b/pos_membership.py @@ -385,12 +385,13 @@ class Partner(osv.osv): today = time.strftime('%Y-%m-%d') for id in ids: partner_data = self.browse(cr, uid, id, context=context) - if partner_data.membership_cancel and today > partner_data.membership_cancel: - res[id] = 'canceled' - continue - if partner_data.membership_stop and today > partner_data.membership_stop: - res[id] = 'old' - continue + if not partner_data.free_member: + if partner_data.membership_cancel and today > partner_data.membership_cancel: + res[id] = 'canceled' + continue + if partner_data.membership_stop and today > partner_data.membership_stop: + res[id] = 'old' + continue s = 4 if partner_data.member_lines: for mline in partner_data.member_lines: @@ -477,9 +478,6 @@ class Partner(osv.osv): res[id] = 'none' if partner_data.free_member and s != 0: res[id] = 'free' - if partner_data.associate_member: - res_state = self._membership_state(cr, uid, [partner_data.associate_member.id], name, args, context=context) - res[id] = res_state[partner_data.associate_member.id] return res def _membership_date(self, cr, uid, ids, name, args, context=None): @@ -488,10 +486,7 @@ class Partner(osv.osv): res = {} member_line_obj = self.pool.get('membership.membership_line') for partner in self.browse(cr, uid, ids, context=context): - if partner.associate_member: - partner_id = partner.associate_member.id - else: - partner_id = partner.id + partner_id = partner.id res[partner.id] = { 'membership_start': False, 'membership_stop': False, @@ -673,11 +668,24 @@ class pos_order(osv.osv): return res def onchange_partner_id(self, cr, uid, ids, part=False, context=None): + """ + - Change membership stop value if partner change + - Change partner in membership line if s·he is change + """ if not part: return {'value': {}} res = super(pos_order, self).onchange_partner_id(cr, uid, ids, part=part, context=context) membership_stop = self.pool.get('res.partner').browse(cr, uid, part, context=context).membership_stop res['value']['membership_stop'] = membership_stop + ml_line_obj = self.pool.get('membership.membership_line') + pol_obj = self.pool.get('pos.order.line') + for id in ids: + pol_ids = pol_obj.search(cr, uid, [('order_id', '=', id)], context=context) + pols = pol_obj.browse(cr, uid, pol_ids, context=context) + for pol in pols: + if pol.product_id.membership: + ml_line_ids = ml_line_obj.search(cr, uid, [('pos_order_line', '=', pol.id)], context=context) + ml_line_obj.write(cr, uid, ml_line_ids, {'partner': part}, context=context) return res def _get_membership_stop(self, cr, uid, ids, name, args, context=None): @@ -716,16 +724,18 @@ class pos_order_line(osv.osv): date_from = member_line.date_from date_to = member_line.date_to if line.product_id.membership_date2date: - date_from = ('date_from' in context - and context.get('date_from') - and datetime.strptime(context('date_from'), "%Y-%m-%d") - or date.today()) + date_from = datetime.strptime(line.order_id.date_order, "%Y-%m-%d %H:%M:%S") date_to = date_from + relativedelta(months=+12, days=-1) # TODO: parameterize this delta? date_from = date_from.strftime("%Y-%m-%d") date_to = date_to .strftime("%Y-%m-%d") - member_line_obj.write(cr, uid, member_line.id - , {'date_from': date_from - ,'date_to' : date_to + member_line_obj.write(cr, uid, member_line.id, { + 'partner': line.order_id.partner_id and line.order_id.partner_id.id or False, + 'membership_id': line.product_id.id, + 'member_price': line.price_unit, + 'date': date_from, + 'date_from': date_from, + 'date_to': date_to, + 'pos_order_line': line.id, } , context=context) if line.product_id.membership_grouped: @@ -787,10 +797,7 @@ class pos_order_line(osv.osv): if line.order_id.date_order > date_from and line.order_id.date_order < date_to: date_from = line.order_id.date_order if line.product_id.membership_date2date: - date_from = ('date_from' in context - and context.get('date_from') - and datetime.strptime(context.get('date_from'), "%Y-%m-%d") - or date.today()) + date_from = datetime.strptime(line.order_id.date_order, "%Y-%m-%d %H:%M:%S") date_to = date_from + relativedelta(months=+12, days=-1) # TODO: parameterize this delta? date_from = date_from.strftime("%Y-%m-%d") date_to = date_to.strftime("%Y-%m-%d") @@ -798,7 +805,7 @@ class pos_order_line(osv.osv): 'partner': line.order_id.partner_id and line.order_id.partner_id.id or False, 'membership_id': line.product_id.id, 'member_price': line.price_unit, - 'date': time.strftime('%Y-%m-%d'), + 'date': date_from, 'date_from': date_from, 'date_to': date_to, 'pos_order_line': line.id,