[FIX] pms-api-rest: fix service av. plan rules & pricelist items with proper id

This commit is contained in:
miguelpadin
2023-08-17 18:20:16 +02:00
committed by Darío Lodeiros
parent 46cb763d5b
commit 2121f53496
2 changed files with 91 additions and 29 deletions

View File

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

View File

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