Compare commits
3 Commits
b574d3a39d
...
7e18580540
Author | SHA1 | Date |
---|---|---|
|
7e18580540 | |
|
e64799f7de | |
|
78ae2a5d8e |
|
@ -6,6 +6,7 @@ import {
|
||||||
RelationParam,
|
RelationParam,
|
||||||
} from 'src/core/modules/domain/entities/base-filter.entity';
|
} from 'src/core/modules/domain/entities/base-filter.entity';
|
||||||
import { ItemEntity } from 'src/modules/item-related/item/domain/entities/item.entity';
|
import { ItemEntity } from 'src/modules/item-related/item/domain/entities/item.entity';
|
||||||
|
import { STATUS } from 'src/core/strings/constants/base.constants';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class IndexItemRateManager extends BaseIndexManager<ItemEntity> {
|
export class IndexItemRateManager extends BaseIndexManager<ItemEntity> {
|
||||||
|
@ -27,6 +28,7 @@ export class IndexItemRateManager extends BaseIndexManager<ItemEntity> {
|
||||||
) {
|
) {
|
||||||
const rate = item['item_rates']?.find(
|
const rate = item['item_rates']?.find(
|
||||||
(rate) =>
|
(rate) =>
|
||||||
|
rate.season_period?.status == STATUS.ACTIVE &&
|
||||||
d >= new Date(rate.season_period.start_date) &&
|
d >= new Date(rate.season_period.start_date) &&
|
||||||
d <= new Date(rate.season_period.end_date),
|
d <= new Date(rate.season_period.end_date),
|
||||||
);
|
);
|
||||||
|
@ -84,6 +86,7 @@ export class IndexItemRateManager extends BaseIndexManager<ItemEntity> {
|
||||||
'item_rates.price',
|
'item_rates.price',
|
||||||
|
|
||||||
'season_period.id',
|
'season_period.id',
|
||||||
|
'season_period.status',
|
||||||
'season_period.holiday_name',
|
'season_period.holiday_name',
|
||||||
'season_period.start_date',
|
'season_period.start_date',
|
||||||
'season_period.end_date',
|
'season_period.end_date',
|
||||||
|
|
|
@ -6,4 +6,5 @@ export interface FilterItemEntity extends BaseFilterEntity {
|
||||||
limit_types: string[];
|
limit_types: string[];
|
||||||
tenant_ids: string[];
|
tenant_ids: string[];
|
||||||
all_item: boolean;
|
all_item: boolean;
|
||||||
|
season_period_ids: string[];
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { ItemRateEntity } from 'src/modules/item-related/item-rate/domain/entiti
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class IndexItemRatesManager extends BaseIndexManager<ItemRateEntity> {
|
export class IndexItemRatesManager extends BaseIndexManager<ItemRateEntity> {
|
||||||
async prepareData(): Promise<void> {
|
async prepareData(): Promise<void> {
|
||||||
this.filterParam.order_by = `${this.tableName}.id`;
|
this.filterParam.order_by = `season_period.id`;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,9 +38,11 @@ export class IndexItemRatesManager extends BaseIndexManager<ItemRateEntity> {
|
||||||
get selects(): string[] {
|
get selects(): string[] {
|
||||||
return [
|
return [
|
||||||
`${this.tableName}.id`,
|
`${this.tableName}.id`,
|
||||||
|
`${this.tableName}.item_id`,
|
||||||
`${this.tableName}.price`,
|
`${this.tableName}.price`,
|
||||||
|
|
||||||
`season_period.id`,
|
`season_period.id`,
|
||||||
|
`season_period.priority`,
|
||||||
`season_period.created_at`,
|
`season_period.created_at`,
|
||||||
`season_period.creator_name`,
|
`season_period.creator_name`,
|
||||||
`season_period.editor_name`,
|
`season_period.editor_name`,
|
||||||
|
@ -68,20 +70,25 @@ export class IndexItemRatesManager extends BaseIndexManager<ItemRateEntity> {
|
||||||
itemIds: this.filterParam.item_ids,
|
itemIds: this.filterParam.item_ids,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (this.filterParam.start_date) {
|
|
||||||
queryBuilder.andWhere(`season_period.start_date BETWEEN :from AND :to`, {
|
if (this.filterParam.season_period_ids) {
|
||||||
from: this.filterParam.start_date,
|
queryBuilder.andWhere(`season_period.id In (:...itemIds)`, {
|
||||||
to: this.filterParam.end_date,
|
itemIds: this.filterParam.season_period_ids,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.filterParam.end_date) {
|
if (this.filterParam.start_date) {
|
||||||
queryBuilder.andWhere(`season_period.end_date BETWEEN :from AND :to`, {
|
queryBuilder.andWhere(`season_period.start_date < :inputStartDate`, {
|
||||||
from: this.filterParam.start_date,
|
inputStartDate: this.filterParam.end_date,
|
||||||
to: this.filterParam.end_date,
|
});
|
||||||
|
|
||||||
|
queryBuilder.andWhere(`season_period.end_date > :inputEndDate`, {
|
||||||
|
inputEndDate: this.filterParam.start_date,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
queryBuilder.addOrderBy('season_period.priority', 'ASC');
|
||||||
|
|
||||||
return queryBuilder;
|
return queryBuilder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,12 @@ export class FilterItemDto extends BaseFilterDto implements FilterItemEntity {
|
||||||
})
|
})
|
||||||
item_categories: string[];
|
item_categories: string[];
|
||||||
|
|
||||||
|
@ApiProperty({ type: ['string'], required: false })
|
||||||
|
@Transform((body) => {
|
||||||
|
return Array.isArray(body.value) ? body.value : [body.value];
|
||||||
|
})
|
||||||
|
season_period_ids: string[];
|
||||||
|
|
||||||
@ApiProperty({ type: ['string'], required: false })
|
@ApiProperty({ type: ['string'], required: false })
|
||||||
@Transform((body) => {
|
@Transform((body) => {
|
||||||
return Array.isArray(body.value) ? body.value : [body.value];
|
return Array.isArray(body.value) ? body.value : [body.value];
|
||||||
|
|
|
@ -45,6 +45,7 @@ export class CreateSeasonPeriodManager extends BaseCreateManager<SeasonPeriodEnt
|
||||||
{
|
{
|
||||||
topic: SeasonPeriodCreatedEvent,
|
topic: SeasonPeriodCreatedEvent,
|
||||||
data: {
|
data: {
|
||||||
|
id: this.result.id,
|
||||||
...this.data,
|
...this.data,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -13,6 +13,7 @@ import {
|
||||||
UnprocessableEntityException,
|
UnprocessableEntityException,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { STATUS } from 'src/core/strings/constants/base.constants';
|
import { STATUS } from 'src/core/strings/constants/base.constants';
|
||||||
|
import { TransactionPaymentType } from '../../../constants';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class BatchConfirmDataTransactionManager extends BaseBatchUpdateStatusManager<TransactionEntity> {
|
export class BatchConfirmDataTransactionManager extends BaseBatchUpdateStatusManager<TransactionEntity> {
|
||||||
|
@ -29,7 +30,10 @@ export class BatchConfirmDataTransactionManager extends BaseBatchUpdateStatusMan
|
||||||
|
|
||||||
Object.assign(data, {
|
Object.assign(data, {
|
||||||
status: STATUS.WAITING,
|
status: STATUS.WAITING,
|
||||||
reconciliation_status: STATUS.PENDING,
|
reconciliation_status:
|
||||||
|
data.payment_type == TransactionPaymentType.COUNTER
|
||||||
|
? null
|
||||||
|
: STATUS.PENDING,
|
||||||
});
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {
|
||||||
import { TransactionModel } from '../../../data/models/transaction.model';
|
import { TransactionModel } from '../../../data/models/transaction.model';
|
||||||
import { TransactionChangeStatusEvent } from '../../entities/event/transaction-change-status.event';
|
import { TransactionChangeStatusEvent } from '../../entities/event/transaction-change-status.event';
|
||||||
import { STATUS } from 'src/core/strings/constants/base.constants';
|
import { STATUS } from 'src/core/strings/constants/base.constants';
|
||||||
|
import { TransactionPaymentType } from '../../../constants';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ConfirmDataTransactionManager extends BaseUpdateStatusManager<TransactionEntity> {
|
export class ConfirmDataTransactionManager extends BaseUpdateStatusManager<TransactionEntity> {
|
||||||
|
@ -38,7 +39,10 @@ export class ConfirmDataTransactionManager extends BaseUpdateStatusManager<Trans
|
||||||
|
|
||||||
Object.assign(this.data, {
|
Object.assign(this.data, {
|
||||||
status: STATUS.WAITING,
|
status: STATUS.WAITING,
|
||||||
reconciliation_status: STATUS.PENDING,
|
reconciliation_status:
|
||||||
|
this.oldData.payment_type == TransactionPaymentType.COUNTER
|
||||||
|
? null
|
||||||
|
: STATUS.PENDING,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue