[ADD] Turist Operator Rol

This commit is contained in:
Dario Lodeiros
2019-04-08 23:04:56 +02:00
parent fbaecc2f9f
commit 47064a3365
8 changed files with 59 additions and 92 deletions

View File

@@ -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,

View File

@@ -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")

View File

@@ -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