phx-node
Version:
PHX NODE
173 lines • 9.84 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var PHXSettingFormulaPromotion_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PHXSettingFormulaPromotion = void 0;
const common_1 = require("@nestjs/common");
const helper_1 = require("../../../lib/helper");
const constant_1 = require("../../../lib/constant");
const grpc_client_system_service_1 = require("../../grpc-client/grpc-client-system.service");
const setting_formula_promotion_1 = require("../../../query/tuition/setting-formula-promotion");
const tuition_1 = require("../../../lib/types/tuition");
let PHXSettingFormulaPromotion = PHXSettingFormulaPromotion_1 = class PHXSettingFormulaPromotion {
constructor(grpcClientSystemService) {
this.grpcClientSystemService = grpcClientSystemService;
this.logger = new common_1.Logger(PHXSettingFormulaPromotion_1.name);
}
getSettingFormulaPromoByCode(code, setting_type, hostname) {
return __awaiter(this, void 0, void 0, function* () {
try {
const res = yield this.grpcClientSystemService.query({
query: setting_formula_promotion_1.GET_SETTING_FORMULA_PROMOTION_QUERY,
variables: { code, setting_type },
hostname,
});
if (res) {
return res.tuition_setting_formula_promotion;
}
else {
return [];
}
}
catch (error) {
this.logger.error(`${hostname}:error`);
return [];
}
});
}
generateTuitionAfterPromotion(feeDebtRecord, listSettingBySchoolId) {
const recordLength = feeDebtRecord.length;
const dataTuitionByYear = {
total_tuition: 0,
total_promotion_computed: 0,
total_promotion_reference: 0,
};
const listDataTuitionBySemester = [];
if (recordLength <= 0) {
return {
dataTuitionByYear,
listDataTuitionBySemester,
};
}
for (const recordItem of feeDebtRecord) {
const { total_tuition, school_term: { id }, } = recordItem;
const totalToPay = (0, helper_1.generateValue)(total_tuition);
const { totalPromotionComputed, totalPromotionReference } = this.getTotalPromotionForEarlyPromo(listSettingBySchoolId, recordItem);
listDataTuitionBySemester.push({
school_term_id: id,
total_tuition: totalToPay,
total_promotion_computed: totalPromotionComputed,
total_promotion_reference: totalPromotionReference,
});
dataTuitionByYear.total_tuition += totalToPay;
dataTuitionByYear.total_promotion_computed += totalPromotionComputed;
dataTuitionByYear.total_promotion_reference += totalPromotionReference;
}
return {
dataTuitionByYear,
listDataTuitionBySemester,
};
}
getTotalPromotionForEarlyPromo(listSettingRes, recordItem) {
const settingItem = listSettingRes[0];
const { total_promotion_tuition_seniority, total_promotion_tuition_scholar_ship, total_promotion_tuition_policy, tuition_fee_detail_promotions, list_detail_fee_adjustment, } = recordItem;
const { ADMISSION_TUITION, ADMISSION_SERVICE, SERVICE } = tuition_1.DETAIL_PROMO_TYPE;
const totalPromotionAdmissionForTuition = (0, helper_1.getTotalDetailPromoByCode)(tuition_fee_detail_promotions, ADMISSION_TUITION);
const adjustmentFees = (0, helper_1.findAdjustmentForTuition)(list_detail_fee_adjustment);
const isFeeAdjustment = true;
const totalFeeAdjustmentTuition = (0, helper_1.sumTotalFee)(adjustmentFees, isFeeAdjustment);
const totalPromotionAdmissionForService = (0, helper_1.getTotalDetailPromoByCode)(tuition_fee_detail_promotions, ADMISSION_SERVICE);
const totalPromotionService = (0, helper_1.getTotalDetailPromoByCode)(tuition_fee_detail_promotions, SERVICE);
let totalPromotionComputed = 0;
const totalPromotionReference = this.getTotalPromotionReference(recordItem);
if (settingItem) {
const { list_setting_detail } = settingItem;
const listSettingLength = list_setting_detail.length;
if (listSettingLength === 0)
return { totalPromotionReference, totalPromotionComputed };
list_setting_detail.forEach((settingDetail) => {
const { code } = settingDetail;
switch (code) {
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_POLICY: {
totalPromotionComputed += (0, helper_1.generateValue)(total_promotion_tuition_policy);
break;
}
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_SCHOLARSHIP: {
totalPromotionComputed += (0, helper_1.generateValue)(total_promotion_tuition_scholar_ship);
break;
}
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_SENIORITY: {
totalPromotionComputed += (0, helper_1.generateValue)(total_promotion_tuition_seniority);
break;
}
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_ADMISSION: {
totalPromotionComputed += totalPromotionAdmissionForTuition;
break;
}
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_ADMISSION_SERVICE: {
totalPromotionComputed += (0, helper_1.generateValue)(totalPromotionAdmissionForService);
break;
}
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_SERVICE: {
totalPromotionComputed += (0, helper_1.generateValue)(totalPromotionService);
break;
}
case constant_1.SETTING_KEY_EARLY_PROMOTION_TUITION_ADJUSTMENT: {
totalPromotionComputed += (0, helper_1.generateValue)(totalFeeAdjustmentTuition);
break;
}
default: {
break;
}
}
});
}
return { totalPromotionReference, totalPromotionComputed };
}
getTotalPromotionReference(recordItem) {
const { total_promotion_tuition_seniority, total_promotion_tuition_scholar_ship, total_promotion_tuition_policy, tuition_fee_detail_promotions, list_detail_fee_adjustment, } = recordItem;
const totalPromotionAdmissionForTuition = (0, helper_1.getTotalDetailPromoByCode)(tuition_fee_detail_promotions, tuition_1.DETAIL_PROMO_TYPE.ADMISSION_TUITION);
const adjustmentFees = (0, helper_1.findAdjustmentForTuition)(list_detail_fee_adjustment);
const isFeeAdjustment = true;
const totalFeeAdjustmentTuition = (0, helper_1.sumTotalFee)(adjustmentFees, isFeeAdjustment);
const totalPromotion = (0, helper_1.generateValue)(total_promotion_tuition_seniority) +
(0, helper_1.generateValue)(total_promotion_tuition_scholar_ship) +
(0, helper_1.generateValue)(total_promotion_tuition_policy) +
totalPromotionAdmissionForTuition +
totalFeeAdjustmentTuition;
return totalPromotion;
}
getFormulaSettingBySchoolId(listFormulaSetting, schoolId) {
return listFormulaSetting.filter(({ school_id }) => school_id === schoolId);
}
checkIsLimitBySibling(listSetting) {
if (listSetting.length === 0)
return false;
const { list_setting_detail } = listSetting[0];
const { code } = list_setting_detail[0];
return code === constant_1.SETTING_KEY_LIMIT_BY_SIBLING_BY_FIRST_CHILD;
}
};
exports.PHXSettingFormulaPromotion = PHXSettingFormulaPromotion;
exports.PHXSettingFormulaPromotion = PHXSettingFormulaPromotion = PHXSettingFormulaPromotion_1 = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [grpc_client_system_service_1.PHXGrpcClientSystemService])
], PHXSettingFormulaPromotion);
//# sourceMappingURL=tuititon-formular-setting.service.js.map