34 lines
866 B
TypeScript
34 lines
866 B
TypeScript
|
|
/**
|
||
|
|
* 품목 테이블 금액 계산 유틸리티
|
||
|
|
*/
|
||
|
|
|
||
|
|
const DEFAULT_TAX_RATE = 0.1;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 공급가액 계산
|
||
|
|
*/
|
||
|
|
export function calcSupplyAmount(quantity: number, unitPrice: number): number {
|
||
|
|
return quantity * unitPrice;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 부가세 계산 (공급가액의 10%, 소수점 내림)
|
||
|
|
*/
|
||
|
|
export function calcVat(supplyAmount: number, taxRate: number = DEFAULT_TAX_RATE): number {
|
||
|
|
return Math.floor(supplyAmount * taxRate);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 수량 또는 단가 변경 시 공급가액 + 부가세 자동 재계산
|
||
|
|
* @returns { supplyAmount, vat } 계산된 값
|
||
|
|
*/
|
||
|
|
export function recalculate(
|
||
|
|
quantity: number,
|
||
|
|
unitPrice: number,
|
||
|
|
taxRate: number = DEFAULT_TAX_RATE,
|
||
|
|
): { supplyAmount: number; vat: number } {
|
||
|
|
const supplyAmount = calcSupplyAmount(quantity, unitPrice);
|
||
|
|
const vat = calcVat(supplyAmount, taxRate);
|
||
|
|
return { supplyAmount, vat };
|
||
|
|
}
|