100 lines
3.1 KiB
TypeScript
100 lines
3.1 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
Param,
|
|
Post,
|
|
Query,
|
|
} from '@nestjs/common';
|
|
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
|
|
import { AllocateBillLandedCostDto } from './dtos/AllocateBillLandedCost.dto';
|
|
import { AllocateLandedCostService } from './commands/AllocateLandedCost.service';
|
|
import { BillAllocatedLandedCostTransactions } from './commands/BillAllocatedLandedCostTransactions.service';
|
|
import { RevertAllocatedLandedCost } from './commands/RevertAllocatedLandedCost.service';
|
|
import { LandedCostTranasctions } from './commands/LandedCostTransactions.service';
|
|
import { LandedCostTransactionsQueryDto } from './dtos/LandedCostTransactionsQuery.dto';
|
|
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
|
|
|
|
@ApiTags('Landed Cost')
|
|
@Controller('landed-cost')
|
|
@ApiCommonHeaders()
|
|
export class BillAllocateLandedCostController {
|
|
constructor(
|
|
private allocateLandedCost: AllocateLandedCostService,
|
|
private billAllocatedCostTransactions: BillAllocatedLandedCostTransactions,
|
|
private revertAllocatedLandedCost: RevertAllocatedLandedCost,
|
|
private landedCostTransactions: LandedCostTranasctions,
|
|
) { }
|
|
|
|
@Get('/transactions')
|
|
@ApiOperation({ summary: 'Get landed cost transactions' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'List of landed cost transactions.',
|
|
})
|
|
async getLandedCostTransactions(
|
|
@Query() query: LandedCostTransactionsQueryDto,
|
|
) {
|
|
const transactions =
|
|
await this.landedCostTransactions.getLandedCostTransactions(query);
|
|
|
|
return transactions;
|
|
}
|
|
|
|
@Post('/bills/:billId/allocate')
|
|
@ApiOperation({ summary: 'Allocate landed cost to bill items' })
|
|
@ApiResponse({
|
|
status: 201,
|
|
description: 'Landed cost allocated successfully.',
|
|
})
|
|
public async calculateLandedCost(
|
|
@Param('billId') billId: number,
|
|
@Body() landedCostDTO: AllocateBillLandedCostDto,
|
|
) {
|
|
const billLandedCost = await this.allocateLandedCost.allocateLandedCost(
|
|
landedCostDTO,
|
|
billId,
|
|
);
|
|
return {
|
|
id: billLandedCost.id,
|
|
message: 'The items cost are located successfully.',
|
|
};
|
|
}
|
|
|
|
@Delete('/:allocatedLandedCostId')
|
|
@ApiOperation({ summary: 'Delete allocated landed cost' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'Allocated landed cost deleted successfully.',
|
|
})
|
|
public async deleteAllocatedLandedCost(
|
|
@Param('allocatedLandedCostId') allocatedLandedCostId: number,
|
|
) {
|
|
await this.revertAllocatedLandedCost.deleteAllocatedLandedCost(
|
|
allocatedLandedCostId,
|
|
);
|
|
return {
|
|
id: allocatedLandedCostId,
|
|
message: 'The allocated landed cost are delete successfully.',
|
|
};
|
|
}
|
|
|
|
@Get('/bills/:billId/transactions')
|
|
@ApiOperation({ summary: 'Get bill landed cost transactions' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'List of bill landed cost transactions.',
|
|
})
|
|
async getBillLandedCostTransactions(@Param('billId') billId: number) {
|
|
const data =
|
|
await this.billAllocatedCostTransactions.getBillLandedCostTransactions(
|
|
billId,
|
|
);
|
|
return {
|
|
billId,
|
|
data,
|
|
};
|
|
}
|
|
}
|