# -*- coding: utf-8 -*-
|
|
|
|
from odoo import models, fields, api
|
|
from odoo.exceptions import UserError, ValidationError
|
|
from psycopg2 import sql, DatabaseError
|
|
|
|
from werkzeug import utils
|
|
|
|
class donation_categoryQualifier(models.Model):
|
|
_name = 'donation_qualifier.donation_categoryqualifier'
|
|
_description = 'categories pour les qualificatifs'
|
|
|
|
sql_constraints = [
|
|
('category_uniq', 'UNIQUE((name))', 'This name already exists.')
|
|
]
|
|
name = fields.Char('Name', required=True)
|
|
order= fields.Integer()
|
|
description = fields.Text()
|
|
|
|
@api.constrains('name')
|
|
def _check_name(self):
|
|
|
|
count=self.search_count([('name','=',self.name),('id', '!=', self.id)])
|
|
if count>0:
|
|
raise UserError('This name already exist')
|
|
|
|
|
|
|
|
# @api.depends('value')
|
|
# def _value_pc(self):
|
|
# for record in self:
|
|
# record.value2 = float(record.value) / 100
|
|
|
|
class donation_qualifier(models.Model):
|
|
_name = 'donation_qualifier.donation_qualifier'
|
|
_description = 'qualificatifs de contacts'
|
|
|
|
name = fields.Char()
|
|
type=fields.Selection([('checkbox','checkbox'),('text','text'),('numerical','numerical')], default='checkbox')
|
|
default_value = fields.Char()
|
|
description = fields.Text()
|
|
category_id = fields.Many2one(
|
|
'donation_qualifier.donation_categoryqualifier', string='Category', tracking=True,
|
|
required=True)
|
|
|
|
|
|
class donation_partnerqualifier(models.Model):
|
|
_name = 'donation_qualifier.donation_partnerqualifier'
|
|
_description = 'qualificatifs pour stocker les valeurs au niveau du contact'
|
|
|
|
# partner_id=fields.Many2one('res.partner',compute='compute_partner', inverse='partner_inverse')
|
|
# partner_ids = fields.One2many('res.partner', 'qualifier_id')
|
|
|
|
value=fields.Char()
|
|
qualifier_id=fields.Many2one('donation_qualifier.donation_qualifier',string='qualifier')
|
|
category = fields.Char(related='qualifier_id.category_id.name')
|
|
partner_id = fields.Many2one(
|
|
'res.partner',
|
|
string='partner',
|
|
required=True,
|
|
index=True,
|
|
readonly=True,
|
|
track_visibility='onchange',
|
|
ondelete='restrict'
|
|
)
|
|
|
|
sql_constraints = [
|
|
('qualifier_uniq', 'unique (qualifier_id,partner_id)', 'A qualifier could be defined only one time on same partner.')
|
|
]
|
|
|
|
@api.constrains('qualifier_id')
|
|
def _check_qualifier_id(self):
|
|
for q in self:
|
|
result=self.search_count([('qualifier_id','=',int(self.qualifier_id)),('id', '!=', self.id),('partner_id','=',int(self.partner_id))])
|
|
if result>0:
|
|
raise UserError('A qualifier could be defined only one time on same partner.')
|
|
|
|
# _sql_constraints = [
|
|
# ('code_company_uniq', 'unique (code,company_id)', 'The code of the account must be unique per company !')
|
|
# ]
|
|
# def validate(self):
|
|
# raise UserError(_(
|
|
# 'This qualifier %s can\'t be used twice')
|
|
# % donation_partnerqualifier.qualifier_id.name)
|
|
|
|
# for donation_partnerqualifier in self:
|
|
# vals={}
|
|
# if self.env['donation_qualifier.donation_qualifier'].search([('name','=',donation_partnerqualifier.qualifier_id.name)]):
|
|
# raise UserError(_(
|
|
# 'This qualifier %s can\'t be used twice')
|
|
# % donation_partnerqualifier.qualifier_id.name)
|
|
# vals['value']=donation_partnerqualifier.value
|
|
# vals['partner_id']=donation_partnerqualifier.partner_id
|
|
# vals['qualifier_id']=donation_partnerqualifier.qualifier_id
|
|
|
|
# donation_partnerqualifier.write(vals)
|
|
# return
|
|
# @api.depends('contact_ids')
|
|
# def compute_partner(self):
|
|
# if len(self.partner_ids) > 0:
|
|
# self.partner_id = self.partner_ids[0]
|
|
|
|
|
|
# def partner_inverse(self):
|
|
# if len(self.partner_ids) > 0:
|
|
# # delete previous reference
|
|
# partner = self.env['res.partner'].browse(self.partner_ids[0].id)
|
|
# partner.qualifier_id = False
|
|
# # set new reference
|
|
# self.partner_id.qualifier_id = self
|
|
|
|
|
|
class partner(models.Model):
|
|
_inherit = 'res.partner'
|
|
|
|
@api.depends('qualifier_ids.partner_id')
|
|
def _compute_qualifier_count(self):
|
|
# The current user may not have access rights for donations
|
|
for partner in self:
|
|
try:
|
|
partner.qualifier_count = len(partner.qualifier_ids)
|
|
except Exception:
|
|
partner.qualifier_count = 0
|
|
|
|
qualifier_ids = fields.One2many(
|
|
'donation_qualifier.donation_partnerqualifier',
|
|
'partner_id',
|
|
string='Qualifier',
|
|
readonly=True
|
|
)
|
|
qualifier_count = fields.Integer(
|
|
compute='_compute_qualifier_count',
|
|
string="# of Qualifiers",
|
|
readonly=True
|
|
)
|