odex25_standard/odex25_sales/dev_membership/models/res_partner.py

89 lines
3.9 KiB
Python

# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2015 DevIntelle Consulting Service Pvt.Ltd (<http://www.devintellecs.com>).
#
# For Module Support : devintelle@gmail.com or Skype : devintelle
#
##############################################################################
from odoo import fields, models, api
from datetime import datetime
class PartnerExtended(models.Model):
_inherit = 'res.partner'
is_member = fields.Boolean(string='Is Member')
membership_count = fields.Integer(string="Membership Count", compute="_get_membership_count")
active_membership_id = fields.Many2one('dev.membership', string='Membership', compute='check_active_membership')
state = fields.Selection(related='active_membership_id.state',store=True)
nationality_id = fields.Many2one('res.country', string="Nationality")
is_membership_expire = fields.Boolean('Expire Membership', compute='check_active_membership')
memebership_status = fields.Char('Membership Status', compute='check_memebership_status')
birth_date = fields.Date(string='Birth Date')
join_date = fields.Date(string='Join Date')
memebership_end_date = fields.Date(string='Memebership End Date',store=True,related='active_membership_id.to_date')
age = fields.Integer(string='Age',store=True,compute='_compute_age')
employer = fields.Char(string='Employer',)
product_id = fields.Many2one('product.product', string="Membership Type",store=True,related='active_membership_id.product_id')
# todo start
@api.depends('birth_date')
def _compute_age(self):
for rec in self:
if rec.birth_date:
rec.age = (datetime.today().year-rec.birth_date.year)
# @api.depends('active_membership_id')
def _compute_info(self):
for rec in self:
if rec.active_membership_id:
print('if in.....')
# todo end
def check_memebership_status(self):
for partner in self:
partner.memebership_status = ''
if partner.membership_count == 0:
partner.memebership_status = 'No Membership'
else:
if partner.is_membership_expire:
partner.memebership_status = 'Membership Expire'
else:
if partner.active_membership_id:
partner.memebership_status = 'Membership : ' + partner.active_membership_id.name
def check_active_membership(self):
for partner in self:
partner.active_membership_id = False
partner.is_membership_expire = False
if partner.membership_count > 0:
c_date = datetime.now().date()
membership_id = self.env['dev.membership'].sudo().search([('partner_id', '=', partner.id),
('state', '=', 'active'),
('from_date', '<=', c_date),
('to_date', '>=', c_date)], limit=1)
if membership_id:
partner.active_membership_id = membership_id and membership_id.id or False
else:
partner.is_membership_expire = True
def _get_membership_count(self):
for rec in self:
membership_count = self.env['dev.membership'].search_count([('partner_id', '=', rec.id)])
rec.membership_count = membership_count
def view_membership(self):
ctx = dict(create=False, search_default_state=1)
return {
'type': 'ir.actions.act_window',
'name': 'Membership',
'res_model': 'dev.membership',
'domain': [('partner_id', '=', self.id)],
'view_mode': 'tree,form',
'target': 'current',
'context': ctx,
}