diff --git a/hotel/models/hotel_folio.py b/hotel/models/hotel_folio.py
index 814428784..77aeabf08 100644
--- a/hotel/models/hotel_folio.py
+++ b/hotel/models/hotel_folio.py
@@ -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,
diff --git a/hotel/models/hotel_reservation.py b/hotel/models/hotel_reservation.py
index 47b17924c..f9fcd328c 100644
--- a/hotel/models/hotel_reservation.py
+++ b/hotel/models/hotel_reservation.py
@@ -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")
diff --git a/hotel/models/inherited_res_partner.py b/hotel/models/inherited_res_partner.py
index 0979bcfb8..0e41db720 100644
--- a/hotel/models/inherited_res_partner.py
+++ b/hotel/models/inherited_res_partner.py
@@ -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
diff --git a/hotel/views/hotel_folio_views.xml b/hotel/views/hotel_folio_views.xml
index 420a7fb70..0409be154 100644
--- a/hotel/views/hotel_folio_views.xml
+++ b/hotel/views/hotel_folio_views.xml
@@ -84,6 +84,8 @@
+
@@ -287,6 +289,7 @@
+
-
+
+
diff --git a/hotel/views/hotel_reservation_views.xml b/hotel/views/hotel_reservation_views.xml
index 55fe8f0c9..25fbfbf69 100644
--- a/hotel/views/hotel_reservation_views.xml
+++ b/hotel/views/hotel_reservation_views.xml
@@ -192,26 +192,28 @@
attrs="{'invisible': [('reservation_type','in',('out'))]}"/>
+
+
-
-
-
+
+