You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
3.1 KiB

  1. # -*- coding: utf-8 -*-
  2. from openerp import api, fields, models, _
  3. class res_partner(models.Model):
  4. _inherit = 'res.partner'
  5. @api.multi
  6. def _get_share_type(self):
  7. share_type_list = [('','')]
  8. for share_type in self.env['product.template'].search([('is_share','=',True)]):
  9. share_type_list.append((str(share_type.id),share_type.short_name))
  10. return share_type_list
  11. @api.multi
  12. @api.depends('share_ids')
  13. def _compute_effective_date(self):
  14. for partner in self:
  15. if partner.share_ids:
  16. partner.effective_date = partner.share_ids[0].effective_date
  17. @api.multi
  18. @api.depends('share_ids')
  19. def _compute_cooperator_type(self):
  20. for partner in self:
  21. share_type = ''
  22. for line in partner.share_ids:
  23. share_type = str(line.share_product_id.id)
  24. if share_type != '':
  25. partner.cooperator_type = share_type
  26. @api.multi
  27. @api.depends('share_ids')
  28. def _compute_share_info(self):
  29. for partner in self:
  30. number_of_share = 0
  31. total_value = 0.0
  32. for line in partner.share_ids:
  33. number_of_share += line.share_number
  34. total_value += line.share_unit_price * line.share_number
  35. partner.number_of_share = number_of_share
  36. partner.total_value = total_value
  37. cooperator = fields.Boolean(string='Cooperator', help="Check this box if this contact is a cooperator(effective or not).")
  38. member = fields.Boolean(string='Effective cooperator', help="Check this box if this cooperator is an effective member.")
  39. old_member = fields.Boolean(string='Old cooperator', help="Check this box if this cooperator is no more an effective member.")
  40. gender = fields.Selection([('male', 'Male'), ('female', 'Female'), ('other', 'Other')], string='Gender')
  41. national_register_number = fields.Char(string='National Register Number')
  42. share_ids = fields.One2many('share.line','partner_id',string='Share Lines')
  43. cooperator_register_number = fields.Integer(string='Cooperator Number')
  44. birthdate = fields.Date(string="Birthdate")
  45. number_of_share = fields.Integer(compute="_compute_share_info", multi='share', string='Number of share', readonly=True)
  46. total_value = fields.Float(compute="_compute_share_info", multi='share', string='Total value of shares', readonly=True)
  47. company_register_number = fields.Char(string='National Register Number')
  48. cooperator_type = fields.Selection(selection='_get_share_type', compute='_compute_cooperator_type', string='Cooperator Type', store=True)
  49. effective_date = fields.Date(sting="Effective Date", compute='_compute_effective_date', store=True)
  50. def get_cooperator_from_nin(self, national_id_number):
  51. return self.search([('cooperator','=',True),('national_register_number','=',national_id_number)])
  52. def get_cooperator_from_crn(self, company_register_number):
  53. return self.search([('cooperator','=',True),('company_register_number','=',company_register_number)])