Files
pms/pms/wizards/wizard_several_partners.py

80 lines
2.7 KiB
Python

from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class SeveralPartners(models.TransientModel):
_name = "pms.several.partners.wizard"
_description = "Partner Operations"
reservation_id = fields.Many2one(
string="Reservation",
comodel_name="pms.reservation",
)
folio_id = fields.Many2one(
string="Folio",
comodel_name="pms.folio",
)
checkin_partner_id = fields.Many2one(
string="Checkin Partner", comodel_name="pms.checkin.partner"
)
possible_existing_customer_ids = fields.Many2many(
string="Customers", comodel_name="res.partner", store=True, readonly=False
)
@api.model
def default_get(self, fields):
res = super(SeveralPartners, self).default_get(fields)
possibles_customers_ids = self.env["res.partner"].browse(
self._context.get("possible_existing_customer_ids")
)
res.update({"possible_existing_customer_ids": possibles_customers_ids})
reservation = self.env["pms.reservation"].browse(
self._context.get("reservation_id")
)
if reservation:
res.update(
{
"reservation_id": reservation.id,
}
)
folio = self.env["pms.folio"].browse(self._context.get("folio_id"))
if folio:
res.update(
{
"folio_id": folio.id,
}
)
checkin_partner = self.env["pms.checkin.partner"].browse(
self._context.get("checkin_partner_id")
)
if checkin_partner:
res.update(
{
"checkin_partner_id": checkin_partner.id,
}
)
return res
def add_partner(self):
for record in self:
if len(record.possible_existing_customer_ids) == 0:
raise ValidationError(
_(
"You must select a client to be able to add it to the reservation "
)
)
if len(record.possible_existing_customer_ids) > 1:
raise ValidationError(
_("Only one customer can be added to the reservation")
)
if record.reservation_id:
record.reservation_id.partner_id = record.possible_existing_customer_ids
elif record.folio_id:
record.folio_id.partner_id = record.possible_existing_customer_ids
elif record.checkin_partner_id:
record.checkin_partner_id.partner_id = (
record.possible_existing_customer_ids
)