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.
 
 

135 lines
4.8 KiB

# -*- 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
)