fix: update booking item pricing logic to use current rate based on season period IDs
parent
a77e6b0381
commit
09b0133bf4
|
@ -42,8 +42,11 @@ export class BookingItemManager extends IndexItemManager {
|
||||||
const { data, total } = result;
|
const { data, total } = result;
|
||||||
const hasRates = (this.filterParam.season_period_ids?.length ?? 0) > 0;
|
const hasRates = (this.filterParam.season_period_ids?.length ?? 0) > 0;
|
||||||
const items = data.map((item) => {
|
const items = data.map((item) => {
|
||||||
|
const currentRate = item.item_rates.find((rate) =>
|
||||||
|
this.filterParam.season_period_ids.includes(rate.season_period_id),
|
||||||
|
);
|
||||||
const { item_rates, ...rest } = item;
|
const { item_rates, ...rest } = item;
|
||||||
const rate = item_rates?.[0]?.['price'] ?? rest.base_price;
|
const rate = currentRate?.['price'] ?? rest.base_price;
|
||||||
return {
|
return {
|
||||||
...rest,
|
...rest,
|
||||||
base_price: hasRates ? rate : rest.base_price,
|
base_price: hasRates ? rate : rest.base_price,
|
||||||
|
@ -51,17 +54,4 @@ export class BookingItemManager extends IndexItemManager {
|
||||||
});
|
});
|
||||||
return { total, data: items };
|
return { total, data: items };
|
||||||
}
|
}
|
||||||
|
|
||||||
setQueryFilter(
|
|
||||||
queryBuilder: SelectQueryBuilder<ItemEntity>,
|
|
||||||
): SelectQueryBuilder<ItemEntity> {
|
|
||||||
const query = super.setQueryFilter(queryBuilder);
|
|
||||||
|
|
||||||
if (this.filterParam.season_period_ids) {
|
|
||||||
query.andWhere(`item_rates.season_period_id In (:...seasonIds)`, {
|
|
||||||
seasonIds: this.filterParam.season_period_ids,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return query;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue