diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index 83362bfbe..6ee800782 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -121,8 +121,8 @@ class PmsFolio(models.Model): channel_type_id = fields.Many2one( "pms.sale.channel", string="Direct Sale Channel", - ondelete = "restrict", - domain=[("channel_type","=","direct")], + ondelete="restrict", + domain=[("channel_type", "=", "direct")], ) payment_ids = fields.One2many("account.payment", "folio_id", readonly=True) # return_ids = fields.One2many("payment.return", "folio_id", readonly=True) diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index dfd2c39aa..ac5077310 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -149,11 +149,11 @@ class PmsReservation(models.Model): agency_id = fields.Many2one( related="folio_id.agency_id", readonly=True, - ) + ) channel_type_id = fields.Many2one( - related="folio_id.agency_id", + related="folio_id.channel_type_id", readonly=True, - ) + ) partner_invoice_id = fields.Many2one( "res.partner", string="Invoice Address", diff --git a/pms/models/pms_sale_channel.py b/pms/models/pms_sale_channel.py index 7f72c7af9..1daa07a59 100644 --- a/pms/models/pms_sale_channel.py +++ b/pms/models/pms_sale_channel.py @@ -1,15 +1,12 @@ +from odoo import fields, models + + class PmsSaleChannel(models.Model): _name = "pms.sale.channel" _description = "Sales Channel" - #Fields declaration - name = fields.Text( - string="Sale Channel Name" - ) + # Fields declaration + name = fields.Text(string="Sale Channel Name") channel_type = fields.Selection( - [ - ("direct","Direct"), - ("indirect","Indirect") - ], - string = "Sale Channel Type" + [("direct", "Direct"), ("indirect", "Indirect")], string="Sale Channel Type" ) diff --git a/pms/models/res_partner.py b/pms/models/res_partner.py index 14ce1e831..33461f377 100644 --- a/pms/models/res_partner.py +++ b/pms/models/res_partner.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import logging -from odoo import api, fields, models +from odoo import _, api, fields, models _logger = logging.getLogger(__name__) @@ -24,8 +24,8 @@ class ResPartner(models.Model): sale_channel_id = fields.Many2one( "pms.sale.channel", string="Sale Channel", - ondelete = "restrict", - domain=[("channel_type","=","indirect")], + ondelete="restrict", + domain=[("channel_type", "=", "indirect")], ) # Compute and Search methods @@ -71,10 +71,10 @@ class ResPartner(models.Model): ) return res - @api.constrains("is_agency","sale_channel_id") + @api.constrains("is_agency", "sale_channel_id") def _check_is_agency(self): for record in self: if record.is_agency and not record.sale_channel_id: - raise models.ValidationError(_("Sale Channel must be entered")) + raise models.ValidationError(_("Sale Channel must be entered")) if not record.is_agency and record.sale_channel_id: - record.sale_channel_id=None + record.sale_channel_id = None diff --git a/pms/tests/test_pms_sale_channel.py b/pms/tests/test_pms_sale_channel.py index a955ce117..f482b773c 100644 --- a/pms/tests/test_pms_sale_channel.py +++ b/pms/tests/test_pms_sale_channel.py @@ -1,124 +1,103 @@ -from .common import TestHotel -from freezegun import freeze_time -from odoo.exceptions import ValidationError import datetime -from odoo import fields + +from freezegun import freeze_time + +from odoo.exceptions import ValidationError + +from .common import TestHotel + @freeze_time("2010-01-01") class TestPmsSaleChannel(TestHotel): def test_not_agency_as_agency(self): - #ARRANGE - PmsReservation = self.env["pms.reservation"] - not_agency = self.env["res.partner"].create( - { - "name":"partner1", - "is_agency":False - } - ) - - #ACT & ASSERT - with self.assertRaises(ValidationError), self.cr.savepoint(): - PmsReservation.create( - { - "checkin": datetime.datetime.now(), - "checkout":datetime.datetime.now() + datetime.timedelta(days=3), - "agency_id":not_agency.id, - } - ) - - def test_partner_as_direct_channel(self): - #ARRANGE + # ARRANGE PmsReservation = self.env["pms.reservation"] - partner = customer = self.env.ref("base.res_partner_12") - #ACT & ASSERT + not_agency = self.env["res.partner"].create( + {"name": "partner1", "is_agency": False} + ) + + # ACT & ASSERT with self.assertRaises(ValidationError), self.cr.savepoint(): PmsReservation.create( { "checkin": datetime.datetime.now(), - "checkout":datetime.datetime.now() + datetime.timedelta(days=3), - "channel_type_id":partner.id, + "checkout": datetime.datetime.now() + datetime.timedelta(days=3), + "agency_id": not_agency.id, + } + ) + + def test_partner_as_direct_channel(self): + # ARRANGE + PmsReservation = self.env["pms.reservation"] + partner = self.env.ref("base.res_partner_12") + # ACT & ASSERT + with self.assertRaises(ValidationError), self.cr.savepoint(): + PmsReservation.create( + { + "checkin": datetime.datetime.now(), + "checkout": datetime.datetime.now() + datetime.timedelta(days=3), + "channel_type_id": partner.id, } ) def test_channel_type_id_only_directs(self): - #ARRANGE + # ARRANGE PmsReservation = self.env["pms.reservation"] PmsSaleChannel = self.env["pms.sale.channel"] - #ACT - saleChannel = PmsSaleChannel.create( - { - "channel_type":"direct" - } - ) + # ACT + saleChannel = PmsSaleChannel.create({"channel_type": "direct"}) reservation = PmsReservation.create( { - "checkin":datetime.datetime.now(), - "checkout":datetime.datetime.now()+datetime.datetimedelta(days=3) - "channel_type_id": saleChannel.id + "checkin": datetime.datetime.now(), + "checkout": datetime.datetime.now() + datetime.datetimedelta(days=3), + "channel_type_id": saleChannel.id, } ) - #ASSERT + # ASSERT self.assertEqual( self.browse_ref(reservation.channel_type_id).channel_type, "direct", - "Sale channel is not direct" + "Sale channel is not direct", ) def test_agency_id_is_agency(self): - #ARRANGE + # ARRANGE PmsReservation = self.env["pms.reservation"] - #ACT - agency = self.env["res.partner"].create( - { - "name":"partner1", - "is_agency":True - } - ) + # ACT + agency = self.env["res.partner"].create({"name": "partner1", "is_agency": True}) reservation = PmsReservation.create( { - "checkin":datetime.datetime.now(), - "checkout":datetime.datetime.now()+datetime.datetimedelta(days=3) - "agency_id":agency.id + "checkin": datetime.datetime.now(), + "checkout": datetime.datetime.now() + datetime.datetimedelta(days=3), + "agency_id": agency.id, } ) - #ASSERT + # ASSERT self.assertEqual( self.browse_ref(reservation.agency_id).is_agency, True, - "Agency_id doesn't correspond to an agency" + "Agency_id doesn't correspond to an agency", ) def test_sale_channel_id_only_indirect(self): - #ARRANGE + # ARRANGE PmsSaleChannel = self.env["pms.sale.channel"] - #ACT - saleChannel = PmsSaleChannel.create( - { - "channel_type":"indirect" - } - ) + # ACT + saleChannel = PmsSaleChannel.create({"channel_type": "indirect"}) agency = self.env["res.partner"].create( - { - "name":"example", - "is_agency":True, - "sale_channel_id":saleChannel.id - } + {"name": "example", "is_agency": True, "sale_channel_id": saleChannel.id} ) - #ASSERT + # ASSERT self.assertEqual( self.browse_ref(agency.sale_channel_id).channel_type, "indirect", - "An agency should be a indirect channel" + "An agency should be a indirect channel", ) def test_agency_without_sale_channel_id(self): - #ARRANGE & ACT & ASSERT - with self.assertRaises(ValidationError), self.cr.savepoint(): - self.env["res.partner"].create( - { - "name":"example", - "is_agency":True, - "sale_channel_id":None - } - ) + # ARRANGE & ACT & ASSERT + with self.assertRaises(ValidationError), self.cr.savepoint(): + self.env["res.partner"].create( + {"name": "example", "is_agency": True, "sale_channel_id": None} + ) diff --git a/pms/views/pms_folio_views.xml b/pms/views/pms_folio_views.xml index a60137167..3e912eb46 100644 --- a/pms/views/pms_folio_views.xml +++ b/pms/views/pms_folio_views.xml @@ -106,8 +106,8 @@ name="agency_id" options="{'no_create': True,'no_open': True}" />--> - - + + diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml index 056cf9601..bcdde8c26 100644 --- a/pms/views/pms_reservation_views.xml +++ b/pms/views/pms_reservation_views.xml @@ -289,8 +289,8 @@ name="agency_id" options="{'no_create': True,'no_open': True}" />--> - - + + --> - +