@kipicore/dbcore 1.1.189 → 1.1.191

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +3 -0
  2. package/dist/constants/app.d.ts +7 -0
  3. package/dist/constants/app.js +12 -4
  4. package/dist/constants/successMessages.js +15 -1
  5. package/dist/db/psql/migrations/20260101103458-student_fee_collection.d.ts +2 -0
  6. package/dist/db/psql/migrations/20260101103458-student_fee_collection.js +218 -0
  7. package/dist/db/psql/migrations/20260102085140-student_histroy.d.ts +2 -0
  8. package/dist/db/psql/migrations/20260102085140-student_histroy.js +258 -0
  9. package/dist/db/psql/migrations/20260105053705-school_fee_terms.d.ts +2 -0
  10. package/dist/db/psql/migrations/20260105053705-school_fee_terms.js +192 -0
  11. package/dist/db/psql/migrations/20260105070348-student_feeType_collection.d.ts +2 -0
  12. package/dist/db/psql/migrations/20260105070348-student_feeType_collection.js +204 -0
  13. package/dist/interfaces/feeTypeInterface.d.ts +6 -1
  14. package/dist/interfaces/index.d.ts +4 -0
  15. package/dist/interfaces/index.js +4 -0
  16. package/dist/interfaces/schoolFee1Interface.d.ts +1 -6
  17. package/dist/interfaces/schoolFeeTermsInterface.d.ts +14 -0
  18. package/dist/interfaces/schoolFeeTermsInterface.js +2 -0
  19. package/dist/interfaces/studentFeeCollectionInterface.d.ts +18 -0
  20. package/dist/interfaces/studentFeeCollectionInterface.js +2 -0
  21. package/dist/interfaces/studentFeeHistoryInterface.d.ts +23 -0
  22. package/dist/interfaces/studentFeeHistoryInterface.js +2 -0
  23. package/dist/interfaces/studentFeeTypeCollectionInterface.d.ts +15 -0
  24. package/dist/interfaces/studentFeeTypeCollectionInterface.js +2 -0
  25. package/dist/models/mongodb/schoolFee1Model.js +24 -21
  26. package/dist/models/psql/feeTypeModel.d.ts +6 -1
  27. package/dist/models/psql/feeTypeModel.js +26 -11
  28. package/dist/models/psql/index.d.ts +4 -0
  29. package/dist/models/psql/index.js +9 -1
  30. package/dist/models/psql/schoolFeeTermsModel.d.ts +24 -0
  31. package/dist/models/psql/schoolFeeTermsModel.js +121 -0
  32. package/dist/models/psql/studentFeeCollectionModel.d.ts +29 -0
  33. package/dist/models/psql/studentFeeCollectionModel.js +152 -0
  34. package/dist/models/psql/studentFeeHistoryModel.d.ts +34 -0
  35. package/dist/models/psql/studentFeeHistoryModel.js +134 -0
  36. package/dist/models/psql/studentFeeTypeCollectionModel.d.ts +26 -0
  37. package/dist/models/psql/studentFeeTypeCollectionModel.js +96 -0
  38. package/dist/types/index.d.ts +4 -0
  39. package/dist/types/index.js +4 -0
  40. package/dist/types/schoolFeeTermsType.d.ts +3 -0
  41. package/dist/types/schoolFeeTermsType.js +2 -0
  42. package/dist/types/studentFeeCollectionType.d.ts +3 -0
  43. package/dist/types/studentFeeCollectionType.js +2 -0
  44. package/dist/types/studentFeeHistoryType.d.ts +3 -0
  45. package/dist/types/studentFeeHistoryType.js +2 -0
  46. package/dist/types/studentFeeTypeCollectionType.d.ts +3 -0
  47. package/dist/types/studentFeeTypeCollectionType.js +2 -0
  48. package/package.json +3 -2
@@ -5,15 +5,15 @@ const index_1 = require("./index");
5
5
  const app_1 = require("../../constants/app");
6
6
  class FeeTypeModel extends sequelize_1.Model {
7
7
  static associate(models) {
8
- const { BankAccountDetailsModel, TypeManagementModel, InstituteModel, UserModel, AcademicCalendarModel } = models;
9
- FeeTypeModel.belongsTo(BankAccountDetailsModel, {
10
- foreignKey: { name: 'account' },
11
- as: 'accountFeeType',
12
- });
13
- BankAccountDetailsModel.hasMany(FeeTypeModel, {
14
- foreignKey: 'account',
15
- as: 'feeTypeHasAccount',
16
- });
8
+ const { TypeManagementModel, InstituteModel, UserModel, AcademicCalendarModel } = models;
9
+ // FeeTypeModel.belongsTo(BankAccountDetailsModel, {
10
+ // foreignKey: { name: 'account' },
11
+ // as: 'accountFeeType',
12
+ // });
13
+ // BankAccountDetailsModel.hasMany(FeeTypeModel, {
14
+ // foreignKey: 'account',
15
+ // as: 'feeTypeHasAccount',
16
+ // });
17
17
  TypeManagementModel.hasMany(FeeTypeModel, {
18
18
  foreignKey: 'typeManagementId',
19
19
  as: 'feeTypeTypeManagement',
@@ -70,8 +70,8 @@ FeeTypeModel.init({
70
70
  allowNull: false,
71
71
  },
72
72
  account: {
73
- type: sequelize_1.DataTypes.UUID,
74
- allowNull: false,
73
+ type: sequelize_1.DataTypes.ARRAY(sequelize_1.DataTypes.UUID),
74
+ allowNull: true,
75
75
  },
76
76
  status: {
77
77
  type: sequelize_1.DataTypes.ENUM(...Object.values(app_1.COMMAN_STATUS)),
@@ -101,6 +101,21 @@ FeeTypeModel.init({
101
101
  field: 'academic_calendar_id',
102
102
  allowNull: true,
103
103
  },
104
+ isCreditAllowed: {
105
+ type: sequelize_1.DataTypes.BOOLEAN,
106
+ },
107
+ isCashAllowed: {
108
+ type: sequelize_1.DataTypes.BOOLEAN,
109
+ },
110
+ isRefundable: {
111
+ type: sequelize_1.DataTypes.BOOLEAN,
112
+ },
113
+ isTaxable: {
114
+ type: sequelize_1.DataTypes.BOOLEAN,
115
+ },
116
+ isRequired: {
117
+ type: sequelize_1.DataTypes.BOOLEAN,
118
+ },
104
119
  }, {
105
120
  modelName: 'FeeTypeModel',
106
121
  tableName: 'fee_type',
@@ -114,5 +114,9 @@ export { default as IncomeExpenseModel } from './incomeExpenseModel';
114
114
  export { default as CloneListModel } from './cloneListModel';
115
115
  export { default as StudentLeaveRequestModel } from './studentLeaveRequestModel';
116
116
  export { default as UserDirectoryModel } from './userDirectoryModel';
117
+ export { default as StudentFeeCollectionModel } from './studentFeeCollectionModel';
118
+ export { default as StudentFeeHistoryModel } from './studentFeeHistoryModel';
119
+ export { default as SchoolFeeTermsModel } from './schoolFeeTermsModel';
120
+ export { default as StudentFeeTypeCollectionModel } from './studentFeeTypeCollectionModel';
117
121
  export { default as ClassRoomEventModel } from './classRoomEvent';
118
122
  export { default as ClassRoomCollectionModel } from './classRoomCollectionModel';
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.OfferModel = exports.ModuleModel = exports.ModuleFeatureModel = exports.MasterLeaveModel = exports.LectureModel = exports.LectureHistoryModel = exports.InventoryModel = exports.InventoryHistoryModel = exports.InstituteSubscriptionPlanModel = exports.InstituteModel = exports.InstituteEntityTypeModel = exports.InstituteEntityModel = exports.HomeWorkModel = exports.GreetingsModel = exports.FloorManagementModel = exports.FileStorageModel = exports.FeesCollectionModel = exports.FeeTypeModel = exports.FeeTypeHasTermsModel = exports.FeeReminderSettingModel = exports.FeeReminderModel = exports.FeeHistoryModel = exports.FeeHistoryDetailsModel = exports.FeatureActionModel = exports.FacilityModel = exports.EntityGroupModel = exports.DriverModel = exports.CourseModel = exports.CourseHasVisitorsModel = exports.CountryModel = exports.ContactFeedBackModel = exports.CoinPurchaseOfferModel = exports.CloudStorageModel = exports.ClassRoomModel = exports.CityModel = exports.CategoriesModel = exports.BookAssessmentDateModel = exports.BatchSubjectProjectAssessmentModel = exports.BatchSubjectBookAssessmentModel = exports.BatchModel = exports.BannerModel = exports.BankAccountDetailsModel = exports.AreaModel = exports.AnnouncementModel = exports.AccountHasReceiptDetailsModel = exports.AcademicCalendarModel = exports.SubCategoriesModel = exports.Sequelize = exports.db = exports.sequelize = void 0;
7
7
  exports.VendorManagementModel = exports.VehicleModel = exports.UserRequiredStepsModel = exports.UserProjectAssessmentOptionModel = exports.UserPayoutModel = exports.UserPayoutHistoryModel = exports.UserPayoutDetailsModel = exports.UserModel = exports.UserLeaveRequestModel = exports.UserHasSubjectFeeModel = exports.UserHasStorageModel = exports.UserHasRollNumberModel = exports.UserHasRoleModel = exports.UserHasParentModel = exports.UserHasOfferModel = exports.UserHasLeaveModel = exports.UserHasLeaveHistoryModel = exports.UserHasInventoryModel = exports.UserHasInventoryHistoryModel = exports.UserHasHomeWorkModel = exports.UserHasFileModel = exports.UserHasFeeTermsModel = exports.UserHasDeviceModel = exports.UserHasCourseModel = exports.UserHasBatchModel = exports.UserHasAnnouncementModel = exports.UserFeeTypeModel = exports.UserFeeTypeByAccountModel = exports.UserBookAssessmentModel = exports.TypeManagementModel = exports.TripModel = exports.TokenModel = exports.ToDoModel = exports.TestimonialModel = exports.SyllabusModel = exports.SubjectHasPayFeeHistoryModel = exports.SubjectHasFeeModel = exports.StateModel = exports.SlotModel = exports.SendNotificationModel = exports.SchoolOfferModel = exports.SchoolFeeCollectionModel = exports.RulesRegulationModel = exports.RoleModel = exports.ProjectAssessmentOptionModel = exports.ProductModel = exports.PincodeModel = exports.PdcHistoryModel = exports.PdcChequeModel = exports.PaymentTermsModel = void 0;
8
- exports.ClassRoomCollectionModel = exports.ClassRoomEventModel = exports.UserDirectoryModel = exports.StudentLeaveRequestModel = exports.CloneListModel = exports.IncomeExpenseModel = exports.MaintenanceModel = exports.AdvertisementModel = exports.WorkOffDaysModel = exports.EntityWiseCalendarModel = exports.CampusModel = exports.LostFoundItemModel = exports.WorkingShiftModel = exports.WorkingDayModel = exports.WalletModel = exports.WalletHistoryModel = void 0;
8
+ exports.ClassRoomCollectionModel = exports.ClassRoomEventModel = exports.StudentFeeTypeCollectionModel = exports.SchoolFeeTermsModel = exports.StudentFeeHistoryModel = exports.StudentFeeCollectionModel = exports.UserDirectoryModel = exports.StudentLeaveRequestModel = exports.CloneListModel = exports.IncomeExpenseModel = exports.MaintenanceModel = exports.AdvertisementModel = exports.WorkOffDaysModel = exports.EntityWiseCalendarModel = exports.CampusModel = exports.LostFoundItemModel = exports.WorkingShiftModel = exports.WorkingDayModel = exports.WalletModel = exports.WalletHistoryModel = void 0;
9
9
  /* eslint-disable @typescript-eslint/no-explicit-any */
10
10
  const sequelize_1 = require("sequelize");
11
11
  Object.defineProperty(exports, "Sequelize", { enumerable: true, get: function () { return sequelize_1.Sequelize; } });
@@ -323,6 +323,14 @@ var studentLeaveRequestModel_1 = require("./studentLeaveRequestModel");
323
323
  Object.defineProperty(exports, "StudentLeaveRequestModel", { enumerable: true, get: function () { return __importDefault(studentLeaveRequestModel_1).default; } });
324
324
  var userDirectoryModel_1 = require("./userDirectoryModel");
325
325
  Object.defineProperty(exports, "UserDirectoryModel", { enumerable: true, get: function () { return __importDefault(userDirectoryModel_1).default; } });
326
+ var studentFeeCollectionModel_1 = require("./studentFeeCollectionModel");
327
+ Object.defineProperty(exports, "StudentFeeCollectionModel", { enumerable: true, get: function () { return __importDefault(studentFeeCollectionModel_1).default; } });
328
+ var studentFeeHistoryModel_1 = require("./studentFeeHistoryModel");
329
+ Object.defineProperty(exports, "StudentFeeHistoryModel", { enumerable: true, get: function () { return __importDefault(studentFeeHistoryModel_1).default; } });
330
+ var schoolFeeTermsModel_1 = require("./schoolFeeTermsModel");
331
+ Object.defineProperty(exports, "SchoolFeeTermsModel", { enumerable: true, get: function () { return __importDefault(schoolFeeTermsModel_1).default; } });
332
+ var studentFeeTypeCollectionModel_1 = require("./studentFeeTypeCollectionModel");
333
+ Object.defineProperty(exports, "StudentFeeTypeCollectionModel", { enumerable: true, get: function () { return __importDefault(studentFeeTypeCollectionModel_1).default; } });
326
334
  var classRoomEvent_1 = require("./classRoomEvent");
327
335
  Object.defineProperty(exports, "ClassRoomEventModel", { enumerable: true, get: function () { return __importDefault(classRoomEvent_1).default; } });
328
336
  var classRoomCollectionModel_1 = require("./classRoomCollectionModel");
@@ -0,0 +1,24 @@
1
+ import { Model } from 'sequelize';
2
+ import { ISchoolFeeTermsModelAttributes } from '../../interfaces/schoolFeeTermsInterface';
3
+ import { PAYMENT_TERMS_TYPE } from '../../constants';
4
+ import { TSchoolFeeTermsModelCreationAttributes } from '../../types/schoolFeeTermsType';
5
+ export declare class SchoolFeeTermsModel extends Model<ISchoolFeeTermsModelAttributes, TSchoolFeeTermsModelCreationAttributes> {
6
+ id: string;
7
+ instituteId: string;
8
+ academicCalendarId: string;
9
+ stdId: string;
10
+ feeTypeId: string;
11
+ frequency: PAYMENT_TERMS_TYPE;
12
+ amount: number;
13
+ date: Date;
14
+ oldId?: string;
15
+ termsDependedId: string;
16
+ createdBy: string;
17
+ updatedBy: string;
18
+ deletedBy: string;
19
+ readonly createdAt: Date;
20
+ readonly updatedAt: Date;
21
+ readonly deletedAt: string;
22
+ static associate(models: any): void;
23
+ }
24
+ export default SchoolFeeTermsModel;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchoolFeeTermsModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ const index_1 = require("./index");
6
+ class SchoolFeeTermsModel extends sequelize_1.Model {
7
+ static associate(models) {
8
+ const { UserModel, InstituteModel, AcademicCalendarModel, FeeTypeModel, InstituteEntityModel } = models;
9
+ SchoolFeeTermsModel.belongsTo(SchoolFeeTermsModel, {
10
+ foreignKey: { name: 'oldId', field: 'old_id', allowNull: true },
11
+ as: 'schoolOldFeeTerms',
12
+ });
13
+ SchoolFeeTermsModel.hasMany(SchoolFeeTermsModel, {
14
+ foreignKey: { name: 'oldId', field: 'old_id', allowNull: true },
15
+ as: 'schoolTermsHasOldTerms',
16
+ });
17
+ SchoolFeeTermsModel.belongsTo(FeeTypeModel, {
18
+ foreignKey: { name: 'feeTypeId', field: 'fee_type_id', allowNull: true },
19
+ as: 'feeTermsFeeType',
20
+ });
21
+ FeeTypeModel.hasMany(SchoolFeeTermsModel, {
22
+ foreignKey: { name: 'feeTypeId', field: 'fee_type_id', allowNull: true },
23
+ as: 'schoolTermsHasFeeType',
24
+ });
25
+ SchoolFeeTermsModel.belongsTo(InstituteModel, {
26
+ foreignKey: { name: 'instituteId', field: 'institute_id' },
27
+ as: 'schoolFeeTermsInstitute',
28
+ });
29
+ InstituteModel.hasMany(SchoolFeeTermsModel, {
30
+ foreignKey: 'instituteId',
31
+ as: 'instituteHasSchoolFeeTerms',
32
+ });
33
+ SchoolFeeTermsModel.belongsTo(AcademicCalendarModel, {
34
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id' },
35
+ as: 'schoolFeeTermsAcaCal',
36
+ });
37
+ AcademicCalendarModel.hasMany(SchoolFeeTermsModel, {
38
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id' },
39
+ as: 'acaCalSchoolFeeTerms',
40
+ });
41
+ SchoolFeeTermsModel.belongsTo(InstituteEntityModel, {
42
+ foreignKey: { name: 'stdId', field: 'std_id' },
43
+ as: 'schoolFeeTermsStd',
44
+ });
45
+ InstituteEntityModel.hasMany(SchoolFeeTermsModel, {
46
+ foreignKey: { name: 'stdId', field: 'std_id' },
47
+ as: 'stdHasSchoolFeeTerms',
48
+ });
49
+ SchoolFeeTermsModel.belongsTo(UserModel, {
50
+ foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
51
+ as: 'createdByUser',
52
+ });
53
+ SchoolFeeTermsModel.belongsTo(UserModel, {
54
+ foreignKey: { name: 'updatedBy', allowNull: true, field: 'updated_by' },
55
+ as: 'updatedByUser',
56
+ });
57
+ SchoolFeeTermsModel.belongsTo(UserModel, {
58
+ foreignKey: { name: 'deletedBy', allowNull: true, field: 'deleted_by' },
59
+ as: 'deletedByUser',
60
+ });
61
+ }
62
+ }
63
+ exports.SchoolFeeTermsModel = SchoolFeeTermsModel;
64
+ SchoolFeeTermsModel.init({
65
+ id: {
66
+ type: sequelize_1.DataTypes.UUID,
67
+ defaultValue: sequelize_1.DataTypes.UUIDV4,
68
+ allowNull: true,
69
+ primaryKey: true,
70
+ },
71
+ instituteId: {
72
+ type: sequelize_1.DataTypes.UUID,
73
+ field: 'institute_id',
74
+ allowNull: true,
75
+ },
76
+ academicCalendarId: {
77
+ type: sequelize_1.DataTypes.UUID,
78
+ field: 'academic_calendar_id',
79
+ allowNull: true,
80
+ },
81
+ stdId: {
82
+ type: sequelize_1.DataTypes.UUID,
83
+ field: 'std_id',
84
+ allowNull: true,
85
+ },
86
+ feeTypeId: {
87
+ type: sequelize_1.DataTypes.UUID,
88
+ field: 'fee_type_id',
89
+ allowNull: true,
90
+ },
91
+ amount: {
92
+ type: sequelize_1.DataTypes.INTEGER,
93
+ field: 'amount',
94
+ allowNull: true,
95
+ },
96
+ date: {
97
+ type: sequelize_1.DataTypes.DATE,
98
+ field: 'date',
99
+ allowNull: true,
100
+ },
101
+ oldId: {
102
+ type: sequelize_1.DataTypes.STRING,
103
+ field: 'old_id',
104
+ allowNull: true,
105
+ },
106
+ termsDependedId: {
107
+ type: sequelize_1.DataTypes.STRING,
108
+ field: 'terms_depended_id',
109
+ allowNull: true,
110
+ },
111
+ frequency: {
112
+ type: sequelize_1.DataTypes.STRING,
113
+ allowNull: true,
114
+ },
115
+ }, {
116
+ modelName: 'SchoolFeeTermsModel',
117
+ tableName: 'school_fee_terms',
118
+ timestamps: true,
119
+ sequelize: index_1.sequelize,
120
+ });
121
+ exports.default = SchoolFeeTermsModel;
@@ -0,0 +1,29 @@
1
+ import { Model } from 'sequelize';
2
+ import { IStudentFeeCollectionModelAttributes } from '../../interfaces/studentFeeCollectionInterface';
3
+ import { TStudentFeeCollectionModelCreationAttributes } from '../../types/studentFeeCollectionType';
4
+ import { STUDENT_FEE_COLLECTION_STATUS } from '../../constants/app';
5
+ declare class StudentFeeCollectionModel extends Model<IStudentFeeCollectionModelAttributes, TStudentFeeCollectionModelCreationAttributes> {
6
+ id: string;
7
+ userId: string;
8
+ academicCalendarId: string;
9
+ instituteId: string;
10
+ oldId?: string;
11
+ status: STUDENT_FEE_COLLECTION_STATUS;
12
+ oldPendingAmount: number;
13
+ discount: number;
14
+ settleUpFee: number;
15
+ paidFee: number;
16
+ totalFee: number;
17
+ collectionDependedId: string;
18
+ carryForwardTo: string;
19
+ carryForwardFee: number;
20
+ createdBy: string;
21
+ updatedBy: string;
22
+ deletedBy: string;
23
+ readonly createdAt: Date;
24
+ readonly deletedAt: string;
25
+ readonly updatedAt: Date;
26
+ static addHooks(models: any): void;
27
+ static associate(models: any): void;
28
+ }
29
+ export default StudentFeeCollectionModel;
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sequelize_1 = require("sequelize");
4
+ const index_1 = require("./index");
5
+ const app_1 = require("../../constants/app");
6
+ class StudentFeeCollectionModel extends sequelize_1.Model {
7
+ static addHooks(models) {
8
+ const beforeCreateOrUpdateHook = async (feeCollection) => {
9
+ // if need write logic for validate fee
10
+ };
11
+ StudentFeeCollectionModel.beforeBulkCreate(async (instances) => {
12
+ for (const instance of instances) {
13
+ await beforeCreateOrUpdateHook(instance);
14
+ }
15
+ });
16
+ StudentFeeCollectionModel.beforeCreate(beforeCreateOrUpdateHook);
17
+ StudentFeeCollectionModel.beforeBulkUpdate(async (options) => {
18
+ await beforeCreateOrUpdateHook(options.attributes);
19
+ });
20
+ }
21
+ static associate(models) {
22
+ const { InstituteModel, UserModel, AcademicCalendarModel } = models;
23
+ StudentFeeCollectionModel.belongsTo(InstituteModel, {
24
+ foreignKey: { name: 'instituteId', field: 'institute_id' },
25
+ as: 'studentCollectionInstitute',
26
+ });
27
+ InstituteModel.hasMany(StudentFeeCollectionModel, {
28
+ foreignKey: 'instituteId',
29
+ as: 'instituteHasStudentCollection',
30
+ });
31
+ StudentFeeCollectionModel.belongsTo(UserModel, {
32
+ foreignKey: { name: 'userId', field: 'user_id' },
33
+ as: 'studentCollectionUser',
34
+ });
35
+ UserModel.hasMany(StudentFeeCollectionModel, {
36
+ foreignKey: 'userId',
37
+ as: 'userHasStudentCollection',
38
+ });
39
+ StudentFeeCollectionModel.belongsTo(AcademicCalendarModel, {
40
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id', allowNull: true },
41
+ as: 'collectionCalendar',
42
+ });
43
+ AcademicCalendarModel.hasMany(StudentFeeCollectionModel, {
44
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id', allowNull: true },
45
+ as: 'collectionHasCalendar',
46
+ });
47
+ StudentFeeCollectionModel.belongsTo(StudentFeeCollectionModel, {
48
+ foreignKey: { name: 'oldId', field: 'old_id', allowNull: true },
49
+ as: 'oldCollection',
50
+ });
51
+ StudentFeeCollectionModel.hasMany(StudentFeeCollectionModel, {
52
+ foreignKey: { name: 'oldId', field: 'old_id', allowNull: true },
53
+ as: 'collectionHasOldCollection',
54
+ });
55
+ StudentFeeCollectionModel.belongsTo(UserModel, {
56
+ foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
57
+ as: 'createdByUser',
58
+ });
59
+ StudentFeeCollectionModel.belongsTo(UserModel, {
60
+ foreignKey: { name: 'updatedBy', allowNull: true, field: 'updated_by' },
61
+ as: 'updatedByUser',
62
+ });
63
+ StudentFeeCollectionModel.belongsTo(UserModel, {
64
+ foreignKey: { name: 'deletedBy', allowNull: true, field: 'deleted_by' },
65
+ as: 'deletedByUser',
66
+ });
67
+ }
68
+ }
69
+ StudentFeeCollectionModel.init({
70
+ id: {
71
+ type: sequelize_1.DataTypes.UUID,
72
+ defaultValue: sequelize_1.DataTypes.UUIDV4,
73
+ allowNull: false,
74
+ primaryKey: true,
75
+ },
76
+ userId: {
77
+ type: sequelize_1.DataTypes.UUID,
78
+ allowNull: true,
79
+ field: 'user_id',
80
+ },
81
+ academicCalendarId: {
82
+ type: sequelize_1.DataTypes.UUID,
83
+ allowNull: true,
84
+ field: 'academic_calendar_id',
85
+ },
86
+ instituteId: {
87
+ type: sequelize_1.DataTypes.UUID,
88
+ allowNull: true,
89
+ field: 'institute_id',
90
+ },
91
+ oldId: {
92
+ type: sequelize_1.DataTypes.UUID,
93
+ allowNull: true,
94
+ field: 'old_id',
95
+ },
96
+ status: {
97
+ type: sequelize_1.DataTypes.STRING,
98
+ defaultValue: app_1.STUDENT_FEE_COLLECTION_STATUS.PENDING,
99
+ allowNull: true,
100
+ },
101
+ oldPendingAmount: {
102
+ type: sequelize_1.DataTypes.INTEGER,
103
+ allowNull: true,
104
+ defaultValue: 0,
105
+ field: 'old_pending_amount',
106
+ },
107
+ discount: {
108
+ type: sequelize_1.DataTypes.INTEGER,
109
+ allowNull: true,
110
+ defaultValue: 0,
111
+ },
112
+ settleUpFee: {
113
+ type: sequelize_1.DataTypes.INTEGER,
114
+ allowNull: true,
115
+ defaultValue: 0,
116
+ field: 'settle_up_fee',
117
+ },
118
+ paidFee: {
119
+ type: sequelize_1.DataTypes.INTEGER,
120
+ allowNull: true,
121
+ defaultValue: 0,
122
+ field: 'paid_fee',
123
+ },
124
+ totalFee: {
125
+ type: sequelize_1.DataTypes.INTEGER,
126
+ allowNull: true,
127
+ defaultValue: 0,
128
+ field: 'total_fee',
129
+ },
130
+ collectionDependedId: {
131
+ type: sequelize_1.DataTypes.STRING,
132
+ allowNull: true,
133
+ field: 'collection_depended_id',
134
+ },
135
+ carryForwardTo: {
136
+ type: sequelize_1.DataTypes.UUID,
137
+ allowNull: true,
138
+ field: 'carry_forward_to',
139
+ },
140
+ carryForwardFee: {
141
+ type: sequelize_1.DataTypes.INTEGER,
142
+ allowNull: true,
143
+ defaultValue: 0,
144
+ field: 'carry_forward_fee',
145
+ },
146
+ }, {
147
+ modelName: 'StudentFeeCollectionModel',
148
+ tableName: 'student_fee_collection',
149
+ timestamps: true,
150
+ sequelize: index_1.sequelize,
151
+ });
152
+ exports.default = StudentFeeCollectionModel;
@@ -0,0 +1,34 @@
1
+ import { Model } from 'sequelize';
2
+ import { IStudentFeeHistoryModelAttributes } from '../../interfaces/studentFeeHistoryInterface';
3
+ import { FEE_HISTORY_STATUS, PAYMENT_TYPE } from '../../constants';
4
+ import { TStudentFeeHistoryModelCreationAttributes } from '../../types/studentFeeHistoryType';
5
+ export declare class StudentFeeHistoryModel extends Model<IStudentFeeHistoryModelAttributes, TStudentFeeHistoryModelCreationAttributes> {
6
+ id: string;
7
+ instituteId: string;
8
+ userId: string;
9
+ academicCalendarId: string;
10
+ parentHistoryId?: string;
11
+ paymentType: PAYMENT_TYPE;
12
+ paidFee: number;
13
+ status: FEE_HISTORY_STATUS;
14
+ feeTypeId?: string[];
15
+ bankAccountId?: string;
16
+ invoicePdf?: string;
17
+ invoiceNumber?: string;
18
+ studentFeeCollectionId: string;
19
+ feeHistoryConfigId?: string;
20
+ note?: string;
21
+ paidDate: Date;
22
+ upiId?: string;
23
+ bankName?: string;
24
+ chequeNo?: string;
25
+ createdBy: string;
26
+ updatedBy: string;
27
+ deletedBy: string;
28
+ readonly createdAt: Date;
29
+ readonly updatedAt: Date;
30
+ readonly deletedAt: string;
31
+ static associate(models: any): void;
32
+ static addHooks(models: any): void;
33
+ }
34
+ export default StudentFeeHistoryModel;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StudentFeeHistoryModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ const index_1 = require("./index");
6
+ const constants_1 = require("../../constants");
7
+ class StudentFeeHistoryModel extends sequelize_1.Model {
8
+ static associate(models) {
9
+ const { UserModel, InstituteModel, StudentFeeCollectionModel, FileStorageModel, BankAccountDetailsModel, AcademicCalendarModel } = models;
10
+ StudentFeeHistoryModel.belongsTo(StudentFeeCollectionModel, {
11
+ foreignKey: { name: 'studentFeeCollectionId', field: 'student_fee_collection_id', allowNull: true },
12
+ as: 'feeHistoryCollection',
13
+ });
14
+ StudentFeeCollectionModel.hasMany(StudentFeeHistoryModel, {
15
+ foreignKey: { name: 'studentFeeCollectionId', field: 'student_fee_collection_id', allowNull: true },
16
+ as: 'collectionHasFeeHistory',
17
+ });
18
+ StudentFeeHistoryModel.belongsTo(FileStorageModel, {
19
+ foreignKey: { name: 'invoicePdf', field: 'invoice_pdf', allowNull: true },
20
+ as: 'studentFeeHistoryInvoice',
21
+ });
22
+ FileStorageModel.hasMany(StudentFeeHistoryModel, {
23
+ foreignKey: { name: 'invoicePdf', field: 'invoice_pdf', allowNull: true },
24
+ as: 'invoiceHasStudentFeeHistory',
25
+ });
26
+ StudentFeeHistoryModel.belongsTo(BankAccountDetailsModel, {
27
+ foreignKey: { name: 'bankAccountId', field: 'bank_account_id', allowNull: true },
28
+ as: 'studentFeeHistoryAccount',
29
+ });
30
+ BankAccountDetailsModel.hasMany(StudentFeeHistoryModel, {
31
+ foreignKey: { name: 'bankAccountId', field: 'bank_account_id', allowNull: true },
32
+ as: 'studentFeeHistoryHasAccount',
33
+ });
34
+ StudentFeeHistoryModel.belongsTo(StudentFeeHistoryModel, {
35
+ foreignKey: { name: 'parentHistoryId', field: 'parent_history_id', allowNull: true },
36
+ as: 'studentOldFeeHistory',
37
+ });
38
+ StudentFeeHistoryModel.hasMany(StudentFeeHistoryModel, {
39
+ foreignKey: { name: 'parentHistoryId', field: 'parent_history_id', allowNull: true },
40
+ as: 'feeHistoryHasOldFee',
41
+ });
42
+ StudentFeeHistoryModel.belongsTo(InstituteModel, {
43
+ foreignKey: { name: 'instituteId', field: 'institute_id' },
44
+ as: 'studentFeeHistoryInstitute',
45
+ });
46
+ InstituteModel.hasMany(StudentFeeHistoryModel, {
47
+ foreignKey: 'instituteId',
48
+ as: 'instituteHasStudentFeeHistory',
49
+ });
50
+ StudentFeeHistoryModel.belongsTo(UserModel, {
51
+ foreignKey: { name: 'userId', field: 'user_id' },
52
+ as: 'studentFeeHistoryUser',
53
+ });
54
+ UserModel.hasMany(StudentFeeHistoryModel, {
55
+ foreignKey: 'userId',
56
+ as: 'userHasStudentFeeHistory',
57
+ });
58
+ StudentFeeHistoryModel.belongsTo(AcademicCalendarModel, {
59
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id' },
60
+ as: 'studentFeeHistoryAcaCal',
61
+ });
62
+ AcademicCalendarModel.hasMany(StudentFeeHistoryModel, {
63
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id' },
64
+ as: 'acaCalStudentFeeHistory',
65
+ });
66
+ StudentFeeHistoryModel.belongsTo(UserModel, {
67
+ foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
68
+ as: 'createdByUser',
69
+ });
70
+ StudentFeeHistoryModel.belongsTo(UserModel, {
71
+ foreignKey: { name: 'updatedBy', allowNull: true, field: 'updated_by' },
72
+ as: 'updatedByUser',
73
+ });
74
+ StudentFeeHistoryModel.belongsTo(UserModel, {
75
+ foreignKey: { name: 'deletedBy', allowNull: true, field: 'deleted_by' },
76
+ as: 'deletedByUser',
77
+ });
78
+ }
79
+ static addHooks(models) {
80
+ StudentFeeHistoryModel.beforeCreate(async (feeCollection) => {
81
+ if (feeCollection.paidFee) {
82
+ if (feeCollection.paymentType === constants_1.PAYMENT_TYPE.CHEQUE) {
83
+ delete feeCollection.upiId;
84
+ if (!feeCollection.chequeNo || !feeCollection.bankName) {
85
+ throw new Error(constants_1.FEESCOLLECTION_ERROR_MESSAGES.FEE_PAID_BY_CHQUE);
86
+ }
87
+ }
88
+ else if (feeCollection.paymentType === constants_1.PAYMENT_TYPE.UPI) {
89
+ delete feeCollection.chequeNo;
90
+ delete feeCollection.bankName;
91
+ if (!feeCollection.upiId) {
92
+ throw new Error(constants_1.FEESCOLLECTION_ERROR_MESSAGES.FEE_PAID_BY_UPI);
93
+ }
94
+ }
95
+ else if (feeCollection.paymentType === constants_1.PAYMENT_TYPE.CASH) {
96
+ delete feeCollection.chequeNo;
97
+ delete feeCollection.bankName;
98
+ delete feeCollection.upiId;
99
+ }
100
+ else {
101
+ throw new Error(constants_1.FEESCOLLECTION_ERROR_MESSAGES.PAYMENT_TYPE_REQUIRED);
102
+ }
103
+ }
104
+ });
105
+ }
106
+ }
107
+ exports.StudentFeeHistoryModel = StudentFeeHistoryModel;
108
+ StudentFeeHistoryModel.init({
109
+ id: { type: sequelize_1.DataTypes.UUID, defaultValue: sequelize_1.DataTypes.UUIDV4, allowNull: true, primaryKey: true },
110
+ instituteId: { type: sequelize_1.DataTypes.UUID, field: 'institute_id', allowNull: true },
111
+ userId: { type: sequelize_1.DataTypes.UUID, field: 'user_id', allowNull: true },
112
+ academicCalendarId: { type: sequelize_1.DataTypes.UUID, field: 'academic_calendar_id', allowNull: true },
113
+ parentHistoryId: { type: sequelize_1.DataTypes.UUID, field: 'parent_history_id', allowNull: true },
114
+ paymentType: { type: sequelize_1.DataTypes.STRING, allowNull: true },
115
+ paidFee: { type: sequelize_1.DataTypes.INTEGER, allowNull: true },
116
+ status: { type: sequelize_1.DataTypes.STRING, allowNull: true, defaultValue: constants_1.FEE_HISTORY_STATUS.COMPLETED },
117
+ feeTypeId: { type: sequelize_1.DataTypes.ARRAY(sequelize_1.DataTypes.STRING), field: 'fee_type_id', allowNull: true, defaultValue: [] },
118
+ bankAccountId: { type: sequelize_1.DataTypes.UUID, field: 'bank_account_id', allowNull: true },
119
+ invoicePdf: { type: sequelize_1.DataTypes.UUID, field: 'invoice_pdf', allowNull: true },
120
+ invoiceNumber: { type: sequelize_1.DataTypes.STRING, field: 'invoice_number', allowNull: true },
121
+ feeHistoryConfigId: { type: sequelize_1.DataTypes.STRING, field: 'fee_history_config_id', allowNull: true },
122
+ note: { type: sequelize_1.DataTypes.STRING, field: 'note', allowNull: true },
123
+ studentFeeCollectionId: { type: sequelize_1.DataTypes.UUID, field: 'student_fee_collection_id', allowNull: true },
124
+ paidDate: { type: sequelize_1.DataTypes.DATE, defaultValue: sequelize_1.DataTypes.NOW, allowNull: true },
125
+ upiId: { type: sequelize_1.DataTypes.STRING, allowNull: true },
126
+ bankName: { type: sequelize_1.DataTypes.STRING, allowNull: true },
127
+ chequeNo: { type: sequelize_1.DataTypes.STRING, allowNull: true },
128
+ }, {
129
+ modelName: 'StudentFeeHistoryModel',
130
+ tableName: 'student_fee_history',
131
+ timestamps: true,
132
+ sequelize: index_1.sequelize,
133
+ });
134
+ exports.default = StudentFeeHistoryModel;
@@ -0,0 +1,26 @@
1
+ import { Model } from 'sequelize';
2
+ import { IStudentFeeTypeCollectionModelAttributes } from '../../interfaces/studentFeeTypeCollectionInterface';
3
+ import { STUDENT_FEE_COLLECTION_STATUS } from '../../constants';
4
+ import { TStudentFeeTypeCollectionModelCreationAttributes } from '../../types/studentFeeTypeCollectionType';
5
+ export declare class StudentFeeTypeCollectionModel extends Model<IStudentFeeTypeCollectionModelAttributes, TStudentFeeTypeCollectionModelCreationAttributes> {
6
+ id: string;
7
+ instituteId: string;
8
+ userId: string;
9
+ academicCalendarId: string;
10
+ studentFeeCollectionId: string;
11
+ feeTypeId: string;
12
+ amount: number;
13
+ status: STUDENT_FEE_COLLECTION_STATUS;
14
+ paidAmount: number;
15
+ discount: number;
16
+ oldId?: string;
17
+ createdBy: string;
18
+ updatedBy: string;
19
+ deletedBy: string;
20
+ readonly createdAt: Date;
21
+ readonly updatedAt: Date;
22
+ readonly deletedAt: string;
23
+ static associate(models: any): void;
24
+ static addHooks(models: any): void;
25
+ }
26
+ export default StudentFeeTypeCollectionModel;