mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD] Turist Operator Rol
This commit is contained in:
@@ -134,6 +134,9 @@ class HotelFolio(models.Model):
|
||||
('web', 'Web')], 'Sales Channel', default='door')
|
||||
user_id = fields.Many2one('res.users', string='Salesperson', index=True,
|
||||
track_visibility='onchange', default=lambda self: self.env.user)
|
||||
tour_operator_id = fields.Many2one('res.partner',
|
||||
'Tour Operator',
|
||||
domain=[('is_tour_operator', '=', True)])
|
||||
date_order = fields.Datetime(
|
||||
string='Order Date',
|
||||
required=True, readonly=True, index=True,
|
||||
|
||||
@@ -210,6 +210,7 @@ class HotelReservation(models.Model):
|
||||
required=True, track_visibility='onchange')
|
||||
|
||||
partner_id = fields.Many2one(related='folio_id.partner_id')
|
||||
tour_operator_id = fields.Many2one(related='folio_id.tour_operator_id')
|
||||
partner_invoice_id = fields.Many2one(related='folio_id.partner_invoice_id')
|
||||
partner_invoice_vat = fields.Char(related="partner_invoice_id.vat")
|
||||
partner_invoice_name = fields.Char(related="partner_invoice_id.name")
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
from odoo import api, fields, models
|
||||
from odoo.osv.expression import get_unaccent_wrapper
|
||||
from odoo.exceptions import ValidationError
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -29,49 +30,23 @@ class ResPartner(models.Model):
|
||||
folios_count = fields.Integer('Folios', compute='_compute_folios_count')
|
||||
unconfirmed = fields.Boolean('Unconfirmed', default=True)
|
||||
main_partner_id = fields.Many2one('res.partner', string='Destination Partner fusion')
|
||||
is_tour_operator = fields.Boolean('Is Tour Operator')
|
||||
|
||||
@api.model
|
||||
def name_search(self, name, args=None, operator='ilike', limit=100):
|
||||
result = super(ResPartner, self).name_search(name, args=None,
|
||||
operator='ilike',
|
||||
limit=100)
|
||||
if args is None:
|
||||
if not args:
|
||||
args = []
|
||||
if name and operator in ('=', 'ilike', '=ilike', 'like', '=like'):
|
||||
self.check_access_rights('read')
|
||||
where_query = self._where_calc(args)
|
||||
self._apply_ir_rules(where_query, 'read')
|
||||
from_clause, where_clause, where_clause_params = where_query.get_sql()
|
||||
where_str = where_clause and (" WHERE %s AND " % where_clause) or ' WHERE '
|
||||
|
||||
# search on the name of the contacts and of its company
|
||||
search_name = name
|
||||
if operator in ('ilike', 'like'):
|
||||
search_name = '%%%s%%' % name
|
||||
if operator in ('=ilike', '=like'):
|
||||
operator = operator[1:]
|
||||
|
||||
unaccent = get_unaccent_wrapper(self.env.cr)
|
||||
|
||||
query = """SELECT id
|
||||
FROM res_partner
|
||||
{where} ({phone} {operator} {percent}
|
||||
OR {mobile} {operator} {percent})
|
||||
ORDER BY {display_name} {operator} {percent} desc,
|
||||
{display_name}
|
||||
""".format(where=where_str,
|
||||
operator=operator,
|
||||
phone=unaccent('phone'),
|
||||
display_name=unaccent('display_name'),
|
||||
mobile=unaccent('mobile'),
|
||||
percent=unaccent('%s'),)
|
||||
|
||||
where_clause_params += [search_name]*3
|
||||
if limit:
|
||||
query += ' limit %s'
|
||||
where_clause_params.append(limit)
|
||||
self.env.cr.execute(query, where_clause_params)
|
||||
partner_ids = [row[0] for row in self.env.cr.fetchall()]
|
||||
if partner_ids:
|
||||
result += self.browse(partner_ids).name_get()
|
||||
return result
|
||||
domain = ['|', '|', ('phone', operator, name),
|
||||
('mobile', operator, name), ('email', operator, name),
|
||||
]
|
||||
partners = self.search(domain + args, limit=limit,)
|
||||
res = partners.name_get()
|
||||
if limit:
|
||||
limit_rest = limit - len(partners)
|
||||
else:
|
||||
limit_rest = limit
|
||||
if limit_rest or not limit:
|
||||
args += [('id', 'not in', partners.ids)]
|
||||
res += super(ResPartner, self).name_search(
|
||||
name, args=args, operator=operator, limit=limit_rest)
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user