[ADD]pms_api_rest: Add serviceLines field like NestedModel in service.service

This commit is contained in:
Darío Lodeiros
2022-07-22 09:58:05 +02:00
parent 10db3c2e0c
commit 861156832d
3 changed files with 20 additions and 2 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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(