diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py
index 4d3722511..f2c3f7d7e 100644
--- a/pms/models/pms_folio.py
+++ b/pms/models/pms_folio.py
@@ -469,11 +469,13 @@ class PmsFolio(models.Model):
ondelete="restrict",
)
- is_possible_existing_customer_id = fields.Many2one(
+ possible_existing_customer_ids = fields.One2many(
string="Possible existing customer",
readonly=False,
store=True,
- compute="_compute_is_possible_existing_customer_id",
+ compute="_compute_possible_existing_customer_ids",
+ comodel_name="res.partner",
+ inverse_name="folio_possible_customer_id",
)
add_possible_customer = fields.Boolean(string="Add possible Customer")
@@ -1011,10 +1013,17 @@ class PmsFolio(models.Model):
for record in self:
self._apply_document_id(record)
- @api.depends("email", "mobile")
- def _compute_is_possible_existing_customer_id(self):
+ @api.depends("email", "mobile", "partner_name")
+ def _compute_possible_existing_customer_ids(self):
for record in self:
- self._apply_is_possible_existing_customer_id(record)
+ if record.partner_name:
+ possible_customer = self._apply_possible_existing_customer_ids(
+ record.email, record.mobile, record.partner_id
+ )
+ if possible_customer:
+ record.possible_existing_customer_ids = possible_customer
+ else:
+ record.possible_existing_customer_ids = False
def _search_invoice_ids(self, operator, value):
if operator == "in" and value:
@@ -1473,6 +1482,21 @@ class PmsFolio(models.Model):
)
self.env["account.bank.statement.line"].sudo().create(line)
+ def open_wizard_several_partners(self):
+ ctx = dict(
+ folio_id=self.id,
+ possible_existing_customer_ids=self.possible_existing_customer_ids.ids,
+ )
+ return {
+ "view_type": "form",
+ "view_mode": "form",
+ "name": "Several Customers",
+ "res_model": "pms.several.partners.wizard",
+ "target": "new",
+ "type": "ir.actions.act_window",
+ "context": ctx,
+ }
+
@api.model
def _get_statement_line_vals(
self,
@@ -1776,17 +1800,17 @@ class PmsFolio(models.Model):
record.email = False
@api.model
- def _apply_is_possible_existing_customer_id(self, record):
- if record.email and not record.partner_id:
- record.is_possible_existing_customer_id = (
- self.env["res.partner"].search([("email", "=", record.email)]).id
+ def _apply_possible_existing_customer_ids(
+ self, email=False, mobile=False, partner=False
+ ):
+ possible_customer = False
+ if email and not partner:
+ possible_customer = self.env["res.partner"].search([("email", "=", email)])
+ if mobile and not partner:
+ possible_customer = self.env["res.partner"].search(
+ [("mobile", "=", mobile)]
)
- elif record.mobile and not record.partner_id:
- record.is_possible_existing_customer_id = (
- self.env["res.partner"].search([("mobile", "=", record.mobile)]).id
- )
- else:
- record.is_possible_existing_customer_id = False
+ return possible_customer
@api.model
def _apply_document_id(self, record):
@@ -1861,7 +1885,7 @@ class PmsFolio(models.Model):
# and therefore also the document_number, email or mobile
@api.model
def _add_customer(self, record):
- record.partner_id = record.is_possible_existing_customer_id.id
+ record.partner_id = record.possible_existing_customer_ids.id
record._compute_document_number()
record._compute_email()
record._compute_mobile()
diff --git a/pms/views/pms_folio_views.xml b/pms/views/pms_folio_views.xml
index 572cbd1f1..05b7607df 100644
--- a/pms/views/pms_folio_views.xml
+++ b/pms/views/pms_folio_views.xml
@@ -59,13 +59,14 @@
class="alert alert-warning"
role="alert"
style="margin-bottom:0px;"
- attrs="{'invisible': [('is_possible_existing_customer_id','=',False)]}"
+ attrs="{'invisible': [('possible_existing_customer_ids','=',[])]}"
>
- There is a customer with this email or mobile, do you want to add it to the reservation?
-
-
+