phx-node
Version:
PHX NODE
205 lines • 12.3 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 PHXSettingFormulaPromotionV2_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PHXSettingFormulaPromotionV2 = 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 PHXSettingFormulaPromotionV2 = PHXSettingFormulaPromotionV2_1 = class PHXSettingFormulaPromotionV2 {
constructor(grpcClientSystemService) {
this.grpcClientSystemService = grpcClientSystemService;
this.logger = new common_1.Logger(PHXSettingFormulaPromotionV2_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 [];
}
});
}
getTotalToPayBySetting(debtRecordItem, settingEarlyPromotionMustPayItem) {
const { total_tuition, total_required_service, total_not_required_service, total_adjustment_additional, } = debtRecordItem;
const settingMustPayItem = settingEarlyPromotionMustPayItem === null || settingEarlyPromotionMustPayItem === void 0 ? void 0 : settingEarlyPromotionMustPayItem.list_setting_detail[0];
const isTotalAll = (settingMustPayItem === null || settingMustPayItem === void 0 ? void 0 : settingMustPayItem.code) === constant_1.SETTING_KEY_EARLY_MUST_PAY_CONDITION_ALL;
if (isTotalAll) {
return (total_tuition +
total_required_service +
total_not_required_service +
total_adjustment_additional);
}
else {
return total_tuition;
}
}
generateTuitionAfterPromotion(feeDebtRecord, listSettingEarlyPromotionBySchoolId, listSettingEarlyPromotionConditionBySchoolId, listSettingEarlyMustPayConditionBySchoolId) {
const recordLength = feeDebtRecord.length;
const dataTuitionByYear = {
total_tuition: 0,
total_to_pay: 0,
total_promotion_computed: 0,
total_promotion_reference: 0,
};
const settingEarlyPromotionMustPayItem = listSettingEarlyMustPayConditionBySchoolId[0];
const listDataTuitionBySemester = [];
if (recordLength <= 0) {
return {
dataTuitionByYear,
listDataTuitionBySemester,
};
}
for (const recordItem of feeDebtRecord) {
const { total_tuition, school_term: { id }, } = recordItem;
const totalToPay = this.getTotalToPayBySetting(recordItem, settingEarlyPromotionMustPayItem);
const totalTuition = (0, helper_1.generateValue)(total_tuition);
const { totalPromotionComputed, totalPromotionReference } = this.getTotalPromotionForEarlyPromo(listSettingEarlyPromotionBySchoolId, listSettingEarlyPromotionConditionBySchoolId, recordItem);
listDataTuitionBySemester.push({
school_term_id: id,
total_tuition: totalTuition,
total_to_pay: totalToPay,
total_promotion_computed: totalPromotionComputed,
total_promotion_reference: totalPromotionReference,
});
dataTuitionByYear.total_tuition += totalTuition;
dataTuitionByYear.total_to_pay += totalToPay;
dataTuitionByYear.total_promotion_computed += totalPromotionComputed;
dataTuitionByYear.total_promotion_reference += totalPromotionReference;
}
return {
dataTuitionByYear,
listDataTuitionBySemester,
};
}
getTotalPromotionForEarlyPromo(listSettingEarlyPromotion, listSettingEarlyPromotionCondition, recordItem) {
const settingEarlyPromotionItem = listSettingEarlyPromotion[0];
const settingEarlyPromotionConditionItem = listSettingEarlyPromotionCondition[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, totalPromotionService, totalPromotionAdmissionForTuition, totalPromotionAdmissionForService, settingEarlyPromotionConditionItem);
if (settingEarlyPromotionItem) {
const { list_setting_detail } = settingEarlyPromotionItem;
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, totalPromotionService, totalPromotionAdmissionForTuition, totalPromotionAdmissionForService, settingEarlyPromotionConditionItem) {
var _a;
const { total_promotion_tuition_seniority, total_promotion_tuition_scholar_ship, total_promotion_tuition_policy, list_detail_fee_adjustment, } = recordItem;
const isPromotionAll = ((_a = settingEarlyPromotionConditionItem === null || settingEarlyPromotionConditionItem === void 0 ? void 0 : settingEarlyPromotionConditionItem.list_setting_detail[0]) === null || _a === void 0 ? void 0 : _a.code) ===
constant_1.SETTING_KEY_EARLY_PROMOTION_CONDITION_ALL;
const adjustmentFees = (0, helper_1.findAdjustmentForTuition)(list_detail_fee_adjustment);
const isFeeAdjustment = true;
const totalFeeAdjustmentTuition = (0, helper_1.sumTotalFee)(adjustmentFees, isFeeAdjustment);
let totalOtherPromotion = 0;
if (isPromotionAll) {
const adjustmentFeesOtherService = (0, helper_1.findAdjustmentForOtherService)(list_detail_fee_adjustment);
const totalFeeAdjustmentOtherService = (0, helper_1.sumTotalFee)(adjustmentFeesOtherService, isFeeAdjustment);
totalOtherPromotion +=
totalPromotionService +
totalPromotionAdmissionForService +
totalFeeAdjustmentOtherService;
}
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 +
totalOtherPromotion;
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.PHXSettingFormulaPromotionV2 = PHXSettingFormulaPromotionV2;
exports.PHXSettingFormulaPromotionV2 = PHXSettingFormulaPromotionV2 = PHXSettingFormulaPromotionV2_1 = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [grpc_client_system_service_1.PHXGrpcClientSystemService])
], PHXSettingFormulaPromotionV2);
//# sourceMappingURL=tuititon-formula-setting-v2.service.js.map