diff --git a/pms/__manifest__.py b/pms/__manifest__.py index 7ff82bd38..9bbbd5b1b 100644 --- a/pms/__manifest__.py +++ b/pms/__manifest__.py @@ -47,6 +47,7 @@ "wizards/folio_make_invoice_advance_views.xml", "wizards/pms_booking_engine_views.xml", "wizards/wizard_folio_changes.xml", + "wizards/wizard_several_partners.xml", "views/pms_amenity_views.xml", "views/pms_amenity_type_views.xml", "views/pms_board_service_views.xml", diff --git a/pms/security/ir.model.access.csv b/pms/security/ir.model.access.csv index f536bb9a2..4897a7e30 100644 --- a/pms/security/ir.model.access.csv +++ b/pms/security/ir.model.access.csv @@ -61,3 +61,4 @@ user_access_wizard_folio_changes,user_access_wizard_folio_changes,model_wizard_f user_access_pms_folio_portal,user_access_pms_folio_portal,model_pms_folio,base.group_portal,1,0,0,0 user_access_pms_reservation_portal,user_access_pms_reservation_portal,model_pms_reservation,base.group_portal,1,0,0,0 user_access_pms_automated_mails,user_access_pms_automated_mails,model_pms_automated_mails,pms.group_pms_user,1,1,1,1 +access_pms_several_partners_wizard,access_pms_several_partners_wizard,model_pms_several_partners_wizard,base.group_user,1,1,1,1 diff --git a/pms/wizards/__init__.py b/pms/wizards/__init__.py index 3833141ff..f6f5db47e 100644 --- a/pms/wizards/__init__.py +++ b/pms/wizards/__init__.py @@ -5,3 +5,4 @@ from . import pms_booking_engine from . import folio_make_invoice_advance from . import wizard_payment_folio from . import wizard_folio_changes +from . import wizard_several_partners diff --git a/pms/wizards/wizard_several_partners.py b/pms/wizards/wizard_several_partners.py new file mode 100644 index 000000000..95729fd3a --- /dev/null +++ b/pms/wizards/wizard_several_partners.py @@ -0,0 +1,72 @@ +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class SeveralPartners(models.TransientModel): + _name = "pms.several.partners.wizard" + + 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 diff --git a/pms/wizards/wizard_several_partners.xml b/pms/wizards/wizard_several_partners.xml new file mode 100644 index 000000000..1c8d21d2c --- /dev/null +++ b/pms/wizards/wizard_several_partners.xml @@ -0,0 +1,32 @@ + + + + Several Partners + pms.several.partners.wizard + +
+
Choose a customer if you want to add it to the reservation
+ + + +
+
+
+
+
+ + Open Several Partners + ir.actions.act_window + pms.several.partners.wizard + + form + new + +