mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[FIX] pms-api-rest: fix service av. plan rules & pricelist items with proper id
This commit is contained in:
committed by
Darío Lodeiros
parent
46cb763d5b
commit
2121f53496
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from odoo.exceptions import MissingError
|
||||
from odoo.exceptions import MissingError, ValidationError
|
||||
|
||||
from odoo.addons.base_rest import restapi
|
||||
from odoo.addons.base_rest_datamodel.restapi import Datamodel
|
||||
@@ -183,21 +183,7 @@ class PmsAvailabilityPlanService(Component):
|
||||
|
||||
return result
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:availability_plan_id>/availability-plan-rules",
|
||||
],
|
||||
"POST",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.availability.plan.rules.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def create_availability_plan_rule(
|
||||
self, availability_plan_id, pms_avail_plan_rules_info
|
||||
):
|
||||
def _create_or_update_avail_plan_rules(self, pms_avail_plan_rules_info):
|
||||
for avail_plan_rule in pms_avail_plan_rules_info.availabilityPlanRules:
|
||||
vals = dict()
|
||||
date = datetime.strptime(avail_plan_rule.date, "%Y-%m-%d").date()
|
||||
@@ -239,3 +225,41 @@ class PmsAvailabilityPlanService(Component):
|
||||
}
|
||||
)
|
||||
self.env["pms.availability.plan.rule"].create(vals)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:availability_plan_id>/availability-plan-rules",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.availability.plan.rules.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def create_availability_plan_rule(self, availability_plan_id, pms_avail_plan_rules_info):
|
||||
availability_plan_ids = list(
|
||||
{
|
||||
item.availabilityPlanId for item in pms_avail_plan_rules_info.availabilityPlanRules
|
||||
}
|
||||
)
|
||||
if len(availability_plan_ids) > 1 or availability_plan_ids[0] != availability_plan_id:
|
||||
raise ValidationError("You cannot create availability plan rules for different availability plans")
|
||||
else:
|
||||
self._create_or_update_avail_plan_rules(pms_avail_plan_rules_info)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/batch-changes",
|
||||
],
|
||||
"POST",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.availability.plan.rules.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_availability_plan_rules(self, pms_avail_plan_rules_info):
|
||||
self._create_or_update_avail_plan_rules(pms_avail_plan_rules_info)
|
||||
|
||||
@@ -143,19 +143,7 @@ class PmsPricelistService(Component):
|
||||
result.append(pricelist_info)
|
||||
return result
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:pricelist_id>/pricelist-items",
|
||||
],
|
||||
"POST",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.pricelist.items.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def create_pricelist_item(self, pricelist_id, pms_pricelist_item_info):
|
||||
def _create_or_update_pricelist_items(self, pms_pricelist_item_info):
|
||||
for pms_pricelist_item in pms_pricelist_item_info.pricelistItems:
|
||||
date = datetime.strptime(pms_pricelist_item.date, "%Y-%m-%d").date()
|
||||
product_id = (
|
||||
@@ -191,3 +179,53 @@ class PmsPricelistService(Component):
|
||||
"pricelist_id": pms_pricelist_item.pricelistId,
|
||||
}
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:pricelist_id>/pricelist-items",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.pricelist.items.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def create_pricelist_item(self, pricelist_id, pms_pricelist_item_info):
|
||||
self._create_or_update_pricelist_items(pms_pricelist_item_info)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:pricelist_id>/pricelist-items",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.pricelist.items.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def create_pricelist_item(self, pricelist_id, pms_pricelist_item_info):
|
||||
pricelist_ids = list({item.pricelistId for item in pms_pricelist_item_info.pricelistItems})
|
||||
print(pricelist_ids)
|
||||
if len(pricelist_ids) > 1 or pricelist_ids[0] != pricelist_id:
|
||||
raise ValidationError("You cannot create pricelist items for different pricelists at once.")
|
||||
else:
|
||||
self._create_or_update_pricelist_items(pms_pricelist_item_info)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/batch-changes",
|
||||
],
|
||||
"POST",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.pricelist.items.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_availability_plan_rules(self, pms_avail_plan_rules_info):
|
||||
self._create_or_update_pricelist_items(pms_avail_plan_rules_info)
|
||||
|
||||
Reference in New Issue
Block a user