From 861156832dc4f255d2733c9697cd282056f21baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Lodeiros?= Date: Fri, 22 Jul 2022 09:58:05 +0200 Subject: [PATCH] [ADD]pms_api_rest: Add serviceLines field like NestedModel in service.service --- pms_api_rest/datamodels/pms_service.py | 2 ++ pms_api_rest/services/pms_reservation_service.py | 11 ++++++++++- pms_api_rest/services/pms_service_service.py | 9 ++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/pms_api_rest/datamodels/pms_service.py b/pms_api_rest/datamodels/pms_service.py index 9879e3ddf..74c73b6cf 100644 --- a/pms_api_rest/datamodels/pms_service.py +++ b/pms_api_rest/datamodels/pms_service.py @@ -1,6 +1,7 @@ from marshmallow import fields from odoo.addons.datamodel.core import Datamodel +from odoo.addons.datamodel.fields import NestedModel class PmsServiceInfo(Datamodel): @@ -14,3 +15,4 @@ class PmsServiceInfo(Datamodel): priceTaxes = fields.Float(required=False, allow_none=True) discount = fields.Float(required=False, allow_none=True) isBoardService = fields.Boolean(required=False, allow_none=True) + serviceLines = NestedModel("pms.service.line.info", many=True) diff --git a/pms_api_rest/services/pms_reservation_service.py b/pms_api_rest/services/pms_reservation_service.py index 593031f18..11e2eb32c 100644 --- a/pms_api_rest/services/pms_reservation_service.py +++ b/pms_api_rest/services/pms_reservation_service.py @@ -392,9 +392,17 @@ class PmsReservationService(Component): if not reservation: raise MissingError(_("Reservation not found")) vals = { - "product_id": service_info.quantity, + "product_id": service_info.productId, "reservation_id": reservation.id, + "is_board_service": service_info.isBoardService or False, } + if service_info.serviceLines: + vals["service_line_ids"] = [(0, False, { + "date": line.date, + "price_unit": line.priceUnit, + "discount": line.discount or 0, + "day_qty": line.quantity + }) for line in service_info.serviceLines] service = self.env["pms.service"].create(vals) return service.id @@ -608,3 +616,4 @@ class PmsReservationService(Component): ): vals.update({"residence_state_id": pms_checkin_partner_info.countryState}) return vals + diff --git a/pms_api_rest/services/pms_service_service.py b/pms_api_rest/services/pms_service_service.py index de6d05582..73730d73d 100644 --- a/pms_api_rest/services/pms_service_service.py +++ b/pms_api_rest/services/pms_service_service.py @@ -42,7 +42,14 @@ class PmsServiceService(Component): priceTaxes=round(service.price_tax, 2), discount=round(service.discount, 2), isBoardService=service.is_board_service, - + serviceLines=[self.env.datamodels["pms.service.line.info"]( + id=line.id, + date=datetime.combine( + line.date, datetime.min.time() + ).isoformat(), + priceUnit=line.price_unit, + discount=line.discount, + ) for line in service.service_line_ids], ) @restapi.method(