fix: update booking item pricing logic to use current rate based on season period IDs

pull/142/head 1.6.22-alpha.2
shancheas 2025-06-19 15:34:12 +07:00
parent a77e6b0381
commit 09b0133bf4
1 changed files with 4 additions and 14 deletions

View File

@ -42,8 +42,11 @@ export class BookingItemManager extends IndexItemManager {
const { data, total } = result;
const hasRates = (this.filterParam.season_period_ids?.length ?? 0) > 0;
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 rate = item_rates?.[0]?.['price'] ?? rest.base_price;
const rate = currentRate?.['price'] ?? rest.base_price;
return {
...rest,
base_price: hasRates ? rate : rest.base_price,
@ -51,17 +54,4 @@ export class BookingItemManager extends IndexItemManager {
});
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;
}
}