mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD]pms_api_rest: Add serviceLines field like NestedModel in service.service
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user