@aibrains/shared-types 0.14.0 → 0.16.0

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 (108) hide show
  1. package/dist/events/enrollment-billing.events.d.ts +47 -0
  2. package/dist/events/enrollment-billing.events.d.ts.map +1 -0
  3. package/dist/events/enrollment-billing.events.js +9 -0
  4. package/dist/events/enrollment-billing.events.js.map +1 -0
  5. package/dist/identity/country-config.d.ts +120 -0
  6. package/dist/identity/country-config.d.ts.map +1 -0
  7. package/dist/identity/country-config.js +404 -0
  8. package/dist/identity/country-config.js.map +1 -0
  9. package/dist/identity/field-governance.d.ts +40 -0
  10. package/dist/identity/field-governance.d.ts.map +1 -0
  11. package/dist/identity/field-governance.js +111 -0
  12. package/dist/identity/field-governance.js.map +1 -0
  13. package/dist/index.d.ts +6 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +9 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/mappers/edfi/education-org.mapper.js +3 -3
  18. package/dist/mappers/edfi/education-org.mapper.js.map +1 -1
  19. package/dist/schemas/academics/assignment.schema.d.ts +10 -10
  20. package/dist/schemas/academics/attendance.schema.d.ts +16 -16
  21. package/dist/schemas/academics/classwork.schema.d.ts +4 -4
  22. package/dist/schemas/academics/grade.schema.d.ts +2 -2
  23. package/dist/schemas/academics/index.d.ts +1 -0
  24. package/dist/schemas/academics/index.d.ts.map +1 -1
  25. package/dist/schemas/academics/index.js +1 -0
  26. package/dist/schemas/academics/index.js.map +1 -1
  27. package/dist/schemas/academics/section-attendance.schema.d.ts +447 -0
  28. package/dist/schemas/academics/section-attendance.schema.d.ts.map +1 -0
  29. package/dist/schemas/academics/section-attendance.schema.js +126 -0
  30. package/dist/schemas/academics/section-attendance.schema.js.map +1 -0
  31. package/dist/schemas/academics/student.schema.d.ts +15 -15
  32. package/dist/schemas/common.d.ts +4 -2
  33. package/dist/schemas/common.d.ts.map +1 -1
  34. package/dist/schemas/common.js +7 -2
  35. package/dist/schemas/common.js.map +1 -1
  36. package/dist/schemas/enrollment/enrollment.schema.d.ts +55 -55
  37. package/dist/schemas/finance/common.d.ts +1 -1
  38. package/dist/schemas/finance/common.d.ts.map +1 -1
  39. package/dist/schemas/finance/common.js +1 -1
  40. package/dist/schemas/finance/common.js.map +1 -1
  41. package/dist/schemas/finance/credit-note.schema.d.ts +127 -0
  42. package/dist/schemas/finance/credit-note.schema.d.ts.map +1 -0
  43. package/dist/schemas/finance/credit-note.schema.js +55 -0
  44. package/dist/schemas/finance/credit-note.schema.js.map +1 -0
  45. package/dist/schemas/finance/discount-rule.schema.d.ts +352 -0
  46. package/dist/schemas/finance/discount-rule.schema.d.ts.map +1 -0
  47. package/dist/schemas/finance/discount-rule.schema.js +57 -0
  48. package/dist/schemas/finance/discount-rule.schema.js.map +1 -0
  49. package/dist/schemas/finance/fee-structure.schema.d.ts +40 -10
  50. package/dist/schemas/finance/fee-structure.schema.d.ts.map +1 -1
  51. package/dist/schemas/finance/fee-structure.schema.js +10 -0
  52. package/dist/schemas/finance/fee-structure.schema.js.map +1 -1
  53. package/dist/schemas/finance/index.d.ts +3 -0
  54. package/dist/schemas/finance/index.d.ts.map +1 -1
  55. package/dist/schemas/finance/index.js +3 -0
  56. package/dist/schemas/finance/index.js.map +1 -1
  57. package/dist/schemas/finance/invoice.schema.d.ts +68 -8
  58. package/dist/schemas/finance/invoice.schema.d.ts.map +1 -1
  59. package/dist/schemas/finance/invoice.schema.js +10 -1
  60. package/dist/schemas/finance/invoice.schema.js.map +1 -1
  61. package/dist/schemas/finance/payment.schema.d.ts +38 -22
  62. package/dist/schemas/finance/payment.schema.d.ts.map +1 -1
  63. package/dist/schemas/finance/payment.schema.js +2 -0
  64. package/dist/schemas/finance/payment.schema.js.map +1 -1
  65. package/dist/schemas/finance/refund.schema.d.ts +99 -0
  66. package/dist/schemas/finance/refund.schema.d.ts.map +1 -0
  67. package/dist/schemas/finance/refund.schema.js +47 -0
  68. package/dist/schemas/finance/refund.schema.js.map +1 -0
  69. package/dist/schemas/identity/academic-year.schema.d.ts +14 -14
  70. package/dist/schemas/identity/bell-schedule.schema.d.ts +5 -5
  71. package/dist/schemas/identity/calendar-date.schema.d.ts +12 -12
  72. package/dist/schemas/identity/credential.schema.d.ts +4 -4
  73. package/dist/schemas/identity/department.schema.d.ts +6 -6
  74. package/dist/schemas/identity/education-org-network.schema.d.ts +7 -7
  75. package/dist/schemas/identity/education-organization.schema.d.ts +1 -1
  76. package/dist/schemas/identity/education-service-center.schema.d.ts +4 -4
  77. package/dist/schemas/identity/index.d.ts +2 -0
  78. package/dist/schemas/identity/index.d.ts.map +1 -1
  79. package/dist/schemas/identity/index.js +4 -0
  80. package/dist/schemas/identity/index.js.map +1 -1
  81. package/dist/schemas/identity/leave.schema.d.ts +34 -34
  82. package/dist/schemas/identity/local-education-agency.schema.d.ts +4 -4
  83. package/dist/schemas/identity/school-year.schema.d.ts +18 -18
  84. package/dist/schemas/identity/school.schema.d.ts +613 -124
  85. package/dist/schemas/identity/school.schema.d.ts.map +1 -1
  86. package/dist/schemas/identity/school.schema.js +32 -8
  87. package/dist/schemas/identity/school.schema.js.map +1 -1
  88. package/dist/schemas/identity/staff-assignment.schema.d.ts +3 -3
  89. package/dist/schemas/identity/staff.schema.d.ts +18 -18
  90. package/dist/schemas/identity/state-education-agency.schema.d.ts +3 -3
  91. package/dist/utils/bikram-sambat.d.ts +68 -0
  92. package/dist/utils/bikram-sambat.d.ts.map +1 -0
  93. package/dist/utils/bikram-sambat.js +301 -0
  94. package/dist/utils/bikram-sambat.js.map +1 -0
  95. package/dist/utils/currency.d.ts +30 -8
  96. package/dist/utils/currency.d.ts.map +1 -1
  97. package/dist/utils/currency.js +93 -25
  98. package/dist/utils/currency.js.map +1 -1
  99. package/dist/utils/date-format.d.ts +20 -0
  100. package/dist/utils/date-format.d.ts.map +1 -0
  101. package/dist/utils/date-format.js +66 -0
  102. package/dist/utils/date-format.js.map +1 -0
  103. package/dist/utils/school-hours.d.ts +48 -0
  104. package/dist/utils/school-hours.d.ts.map +1 -0
  105. package/dist/utils/school-hours.js +134 -0
  106. package/dist/utils/school-hours.js.map +1 -0
  107. package/dist/validators/date-range.d.ts +6 -6
  108. package/package.json +1 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Credit Note Schemas
3
+ *
4
+ * Scholarships, grants, refund credits, fee waivers, adjustments.
5
+ */
6
+ import { z } from 'zod';
7
+ export declare const creditNoteTypeEnum: z.ZodEnum<["scholarship", "grant", "refund", "adjustment", "fee_waiver"]>;
8
+ export type CreditNoteType = z.infer<typeof creditNoteTypeEnum>;
9
+ export declare const creditNoteStatusEnum: z.ZodEnum<["active", "applied", "expired", "cancelled"]>;
10
+ export type CreditNoteStatus = z.infer<typeof creditNoteStatusEnum>;
11
+ export declare const creditNoteResponseSchema: z.ZodObject<{
12
+ id: z.ZodString;
13
+ studentAccountId: z.ZodString;
14
+ studentId: z.ZodString;
15
+ schoolId: z.ZodString;
16
+ amount: z.ZodNumber;
17
+ remainingAmount: z.ZodNumber;
18
+ currency: z.ZodEnum<["NPR", "USD", "INR", "GBP", "AUD", "CAD"]>;
19
+ type: z.ZodEnum<["scholarship", "grant", "refund", "adjustment", "fee_waiver"]>;
20
+ description: z.ZodString;
21
+ fundingSource: z.ZodOptional<z.ZodString>;
22
+ appliedToInvoices: z.ZodDefault<z.ZodArray<z.ZodObject<{
23
+ invoiceId: z.ZodString;
24
+ amount: z.ZodNumber;
25
+ appliedAt: z.ZodString;
26
+ }, "strip", z.ZodTypeAny, {
27
+ amount: number;
28
+ invoiceId: string;
29
+ appliedAt: string;
30
+ }, {
31
+ amount: number;
32
+ invoiceId: string;
33
+ appliedAt: string;
34
+ }>, "many">>;
35
+ status: z.ZodEnum<["active", "applied", "expired", "cancelled"]>;
36
+ effectiveDate: z.ZodString;
37
+ expiryDate: z.ZodNullable<z.ZodOptional<z.ZodString>>;
38
+ approvedBy: z.ZodString;
39
+ createdAt: z.ZodString;
40
+ updatedAt: z.ZodString;
41
+ }, "strip", z.ZodTypeAny, {
42
+ type: "refund" | "adjustment" | "scholarship" | "grant" | "fee_waiver";
43
+ status: "active" | "expired" | "cancelled" | "applied";
44
+ createdAt: string;
45
+ updatedAt: string;
46
+ schoolId: string;
47
+ description: string;
48
+ effectiveDate: string;
49
+ studentId: string;
50
+ id: string;
51
+ approvedBy: string;
52
+ amount: number;
53
+ currency: "NPR" | "USD" | "INR" | "GBP" | "CAD" | "AUD";
54
+ studentAccountId: string;
55
+ remainingAmount: number;
56
+ appliedToInvoices: {
57
+ amount: number;
58
+ invoiceId: string;
59
+ appliedAt: string;
60
+ }[];
61
+ fundingSource?: string | undefined;
62
+ expiryDate?: string | null | undefined;
63
+ }, {
64
+ type: "refund" | "adjustment" | "scholarship" | "grant" | "fee_waiver";
65
+ status: "active" | "expired" | "cancelled" | "applied";
66
+ createdAt: string;
67
+ updatedAt: string;
68
+ schoolId: string;
69
+ description: string;
70
+ effectiveDate: string;
71
+ studentId: string;
72
+ id: string;
73
+ approvedBy: string;
74
+ amount: number;
75
+ currency: "NPR" | "USD" | "INR" | "GBP" | "CAD" | "AUD";
76
+ studentAccountId: string;
77
+ remainingAmount: number;
78
+ fundingSource?: string | undefined;
79
+ appliedToInvoices?: {
80
+ amount: number;
81
+ invoiceId: string;
82
+ appliedAt: string;
83
+ }[] | undefined;
84
+ expiryDate?: string | null | undefined;
85
+ }>;
86
+ export type CreditNote = z.infer<typeof creditNoteResponseSchema>;
87
+ export declare const createCreditNoteSchema: z.ZodObject<{
88
+ studentId: z.ZodString;
89
+ amount: z.ZodNumber;
90
+ currency: z.ZodDefault<z.ZodEnum<["NPR", "USD", "INR", "GBP", "AUD", "CAD"]>>;
91
+ type: z.ZodEnum<["scholarship", "grant", "refund", "adjustment", "fee_waiver"]>;
92
+ description: z.ZodString;
93
+ fundingSource: z.ZodOptional<z.ZodString>;
94
+ effectiveDate: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
95
+ expiryDate: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
96
+ }, "strip", z.ZodTypeAny, {
97
+ type: "refund" | "adjustment" | "scholarship" | "grant" | "fee_waiver";
98
+ description: string;
99
+ effectiveDate: string;
100
+ studentId: string;
101
+ amount: number;
102
+ currency: "NPR" | "USD" | "INR" | "GBP" | "CAD" | "AUD";
103
+ fundingSource?: string | undefined;
104
+ expiryDate?: string | undefined;
105
+ }, {
106
+ type: "refund" | "adjustment" | "scholarship" | "grant" | "fee_waiver";
107
+ description: string;
108
+ effectiveDate: string;
109
+ studentId: string;
110
+ amount: number;
111
+ currency?: "NPR" | "USD" | "INR" | "GBP" | "CAD" | "AUD" | undefined;
112
+ fundingSource?: string | undefined;
113
+ expiryDate?: string | undefined;
114
+ }>;
115
+ export type CreateCreditNoteDto = z.infer<typeof createCreditNoteSchema>;
116
+ export declare const applyCreditNoteSchema: z.ZodObject<{
117
+ invoiceId: z.ZodString;
118
+ amount: z.ZodNumber;
119
+ }, "strip", z.ZodTypeAny, {
120
+ amount: number;
121
+ invoiceId: string;
122
+ }, {
123
+ amount: number;
124
+ invoiceId: string;
125
+ }>;
126
+ export type ApplyCreditNoteDto = z.infer<typeof applyCreditNoteSchema>;
127
+ //# sourceMappingURL=credit-note.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-note.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/finance/credit-note.schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kBAAkB,2EAE7B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEhE,eAAO,MAAM,oBAAoB,0DAE/B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEpE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBnC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAElE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Credit Note Schemas
4
+ *
5
+ * Scholarships, grants, refund credits, fee waivers, adjustments.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.applyCreditNoteSchema = exports.createCreditNoteSchema = exports.creditNoteResponseSchema = exports.creditNoteStatusEnum = exports.creditNoteTypeEnum = void 0;
9
+ const zod_1 = require("zod");
10
+ const common_1 = require("./common");
11
+ const common_2 = require("../common");
12
+ exports.creditNoteTypeEnum = zod_1.z.enum([
13
+ 'scholarship', 'grant', 'refund', 'adjustment', 'fee_waiver',
14
+ ]);
15
+ exports.creditNoteStatusEnum = zod_1.z.enum([
16
+ 'active', 'applied', 'expired', 'cancelled',
17
+ ]);
18
+ exports.creditNoteResponseSchema = zod_1.z.object({
19
+ id: common_2.uuidSchema,
20
+ studentAccountId: common_2.uuidSchema,
21
+ studentId: common_2.uuidSchema,
22
+ schoolId: common_2.uuidSchema,
23
+ amount: common_1.amountSchema,
24
+ remainingAmount: common_1.amountSchema,
25
+ currency: common_1.currencyEnum,
26
+ type: exports.creditNoteTypeEnum,
27
+ description: zod_1.z.string(),
28
+ fundingSource: zod_1.z.string().optional(),
29
+ appliedToInvoices: zod_1.z.array(zod_1.z.object({
30
+ invoiceId: common_2.uuidSchema,
31
+ amount: zod_1.z.number().min(0),
32
+ appliedAt: zod_1.z.string(),
33
+ })).default([]),
34
+ status: exports.creditNoteStatusEnum,
35
+ effectiveDate: zod_1.z.string(),
36
+ expiryDate: zod_1.z.string().optional().nullable(),
37
+ approvedBy: zod_1.z.string(),
38
+ createdAt: zod_1.z.string(),
39
+ updatedAt: zod_1.z.string(),
40
+ });
41
+ exports.createCreditNoteSchema = zod_1.z.object({
42
+ studentId: common_2.uuidSchema,
43
+ amount: common_1.amountSchema.positive('Amount must be greater than 0'),
44
+ currency: common_1.currencyEnum.default('NPR'),
45
+ type: exports.creditNoteTypeEnum,
46
+ description: zod_1.z.string().min(1).max(500),
47
+ fundingSource: zod_1.z.string().max(200).optional(),
48
+ effectiveDate: common_2.dateSchema,
49
+ expiryDate: common_2.dateSchema.optional(),
50
+ });
51
+ exports.applyCreditNoteSchema = zod_1.z.object({
52
+ invoiceId: common_2.uuidSchema,
53
+ amount: common_1.amountSchema.positive('Amount must be greater than 0'),
54
+ });
55
+ //# sourceMappingURL=credit-note.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-note.schema.js","sourceRoot":"","sources":["../../../src/schemas/finance/credit-note.schema.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,6BAAwB;AACxB,qCAAsD;AACtD,sCAAmD;AAEtC,QAAA,kBAAkB,GAAG,OAAC,CAAC,IAAI,CAAC;IACvC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY;CAC7D,CAAC,CAAC;AAGU,QAAA,oBAAoB,GAAG,OAAC,CAAC,IAAI,CAAC;IACzC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW;CAC5C,CAAC,CAAC;AAGU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,EAAE,EAAE,mBAAU;IACd,gBAAgB,EAAE,mBAAU;IAC5B,SAAS,EAAE,mBAAU;IACrB,QAAQ,EAAE,mBAAU;IACpB,MAAM,EAAE,qBAAY;IACpB,eAAe,EAAE,qBAAY;IAC7B,QAAQ,EAAE,qBAAY;IACtB,IAAI,EAAE,0BAAkB;IACxB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC;QAClC,SAAS,EAAE,mBAAU;QACrB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;KACtB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACf,MAAM,EAAE,4BAAoB;IAC5B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;IACzB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,mBAAU;IACrB,MAAM,EAAE,qBAAY,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC9D,QAAQ,EAAE,qBAAY,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,IAAI,EAAE,0BAAkB;IACxB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC7C,aAAa,EAAE,mBAAU;IACzB,UAAU,EAAE,mBAAU,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,mBAAU;IACrB,MAAM,EAAE,qBAAY,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC/D,CAAC,CAAC"}
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Discount Rule Schemas
3
+ *
4
+ * Rules for automatic and manual discounts:
5
+ * sibling discounts, early payment, scholarships, staff child, manual.
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const discountConditionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
9
+ type: z.ZodLiteral<"sibling">;
10
+ minSiblings: z.ZodDefault<z.ZodNumber>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ type: "sibling";
13
+ minSiblings: number;
14
+ }, {
15
+ type: "sibling";
16
+ minSiblings?: number | undefined;
17
+ }>, z.ZodObject<{
18
+ type: z.ZodLiteral<"early_payment">;
19
+ daysBefore: z.ZodNumber;
20
+ }, "strip", z.ZodTypeAny, {
21
+ type: "early_payment";
22
+ daysBefore: number;
23
+ }, {
24
+ type: "early_payment";
25
+ daysBefore: number;
26
+ }>, z.ZodObject<{
27
+ type: z.ZodLiteral<"scholarship">;
28
+ scholarshipId: z.ZodString;
29
+ }, "strip", z.ZodTypeAny, {
30
+ type: "scholarship";
31
+ scholarshipId: string;
32
+ }, {
33
+ type: "scholarship";
34
+ scholarshipId: string;
35
+ }>, z.ZodObject<{
36
+ type: z.ZodLiteral<"staff_child">;
37
+ }, "strip", z.ZodTypeAny, {
38
+ type: "staff_child";
39
+ }, {
40
+ type: "staff_child";
41
+ }>, z.ZodObject<{
42
+ type: z.ZodLiteral<"manual">;
43
+ }, "strip", z.ZodTypeAny, {
44
+ type: "manual";
45
+ }, {
46
+ type: "manual";
47
+ }>]>;
48
+ export type DiscountCondition = z.infer<typeof discountConditionSchema>;
49
+ export declare const discountRuleResponseSchema: z.ZodObject<{
50
+ id: z.ZodString;
51
+ schoolId: z.ZodString;
52
+ academicYearId: z.ZodString;
53
+ name: z.ZodString;
54
+ description: z.ZodOptional<z.ZodString>;
55
+ type: z.ZodEnum<["percentage", "fixed"]>;
56
+ value: z.ZodNumber;
57
+ applicableFeeTypes: z.ZodArray<z.ZodEnum<["tuition", "admission", "exam", "transport", "library", "lab", "hostel", "uniform", "miscellaneous", "custom"]>, "many">;
58
+ condition: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
59
+ type: z.ZodLiteral<"sibling">;
60
+ minSiblings: z.ZodDefault<z.ZodNumber>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ type: "sibling";
63
+ minSiblings: number;
64
+ }, {
65
+ type: "sibling";
66
+ minSiblings?: number | undefined;
67
+ }>, z.ZodObject<{
68
+ type: z.ZodLiteral<"early_payment">;
69
+ daysBefore: z.ZodNumber;
70
+ }, "strip", z.ZodTypeAny, {
71
+ type: "early_payment";
72
+ daysBefore: number;
73
+ }, {
74
+ type: "early_payment";
75
+ daysBefore: number;
76
+ }>, z.ZodObject<{
77
+ type: z.ZodLiteral<"scholarship">;
78
+ scholarshipId: z.ZodString;
79
+ }, "strip", z.ZodTypeAny, {
80
+ type: "scholarship";
81
+ scholarshipId: string;
82
+ }, {
83
+ type: "scholarship";
84
+ scholarshipId: string;
85
+ }>, z.ZodObject<{
86
+ type: z.ZodLiteral<"staff_child">;
87
+ }, "strip", z.ZodTypeAny, {
88
+ type: "staff_child";
89
+ }, {
90
+ type: "staff_child";
91
+ }>, z.ZodObject<{
92
+ type: z.ZodLiteral<"manual">;
93
+ }, "strip", z.ZodTypeAny, {
94
+ type: "manual";
95
+ }, {
96
+ type: "manual";
97
+ }>]>;
98
+ priority: z.ZodDefault<z.ZodNumber>;
99
+ isActive: z.ZodBoolean;
100
+ maxDiscountAmount: z.ZodOptional<z.ZodNumber>;
101
+ createdAt: z.ZodString;
102
+ updatedAt: z.ZodString;
103
+ }, "strip", z.ZodTypeAny, {
104
+ type: "percentage" | "fixed";
105
+ value: number;
106
+ createdAt: string;
107
+ updatedAt: string;
108
+ name: string;
109
+ schoolId: string;
110
+ isActive: boolean;
111
+ id: string;
112
+ academicYearId: string;
113
+ priority: number;
114
+ applicableFeeTypes: ("custom" | "lab" | "library" | "exam" | "tuition" | "admission" | "transport" | "hostel" | "uniform" | "miscellaneous")[];
115
+ condition: {
116
+ type: "sibling";
117
+ minSiblings: number;
118
+ } | {
119
+ type: "early_payment";
120
+ daysBefore: number;
121
+ } | {
122
+ type: "scholarship";
123
+ scholarshipId: string;
124
+ } | {
125
+ type: "staff_child";
126
+ } | {
127
+ type: "manual";
128
+ };
129
+ description?: string | undefined;
130
+ maxDiscountAmount?: number | undefined;
131
+ }, {
132
+ type: "percentage" | "fixed";
133
+ value: number;
134
+ createdAt: string;
135
+ updatedAt: string;
136
+ name: string;
137
+ schoolId: string;
138
+ isActive: boolean;
139
+ id: string;
140
+ academicYearId: string;
141
+ applicableFeeTypes: ("custom" | "lab" | "library" | "exam" | "tuition" | "admission" | "transport" | "hostel" | "uniform" | "miscellaneous")[];
142
+ condition: {
143
+ type: "sibling";
144
+ minSiblings?: number | undefined;
145
+ } | {
146
+ type: "early_payment";
147
+ daysBefore: number;
148
+ } | {
149
+ type: "scholarship";
150
+ scholarshipId: string;
151
+ } | {
152
+ type: "staff_child";
153
+ } | {
154
+ type: "manual";
155
+ };
156
+ description?: string | undefined;
157
+ priority?: number | undefined;
158
+ maxDiscountAmount?: number | undefined;
159
+ }>;
160
+ export type DiscountRule = z.infer<typeof discountRuleResponseSchema>;
161
+ export declare const createDiscountRuleSchema: z.ZodObject<{
162
+ name: z.ZodString;
163
+ description: z.ZodOptional<z.ZodString>;
164
+ academicYearId: z.ZodString;
165
+ type: z.ZodEnum<["percentage", "fixed"]>;
166
+ value: z.ZodNumber;
167
+ applicableFeeTypes: z.ZodArray<z.ZodEnum<["tuition", "admission", "exam", "transport", "library", "lab", "hostel", "uniform", "miscellaneous", "custom"]>, "many">;
168
+ condition: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
169
+ type: z.ZodLiteral<"sibling">;
170
+ minSiblings: z.ZodDefault<z.ZodNumber>;
171
+ }, "strip", z.ZodTypeAny, {
172
+ type: "sibling";
173
+ minSiblings: number;
174
+ }, {
175
+ type: "sibling";
176
+ minSiblings?: number | undefined;
177
+ }>, z.ZodObject<{
178
+ type: z.ZodLiteral<"early_payment">;
179
+ daysBefore: z.ZodNumber;
180
+ }, "strip", z.ZodTypeAny, {
181
+ type: "early_payment";
182
+ daysBefore: number;
183
+ }, {
184
+ type: "early_payment";
185
+ daysBefore: number;
186
+ }>, z.ZodObject<{
187
+ type: z.ZodLiteral<"scholarship">;
188
+ scholarshipId: z.ZodString;
189
+ }, "strip", z.ZodTypeAny, {
190
+ type: "scholarship";
191
+ scholarshipId: string;
192
+ }, {
193
+ type: "scholarship";
194
+ scholarshipId: string;
195
+ }>, z.ZodObject<{
196
+ type: z.ZodLiteral<"staff_child">;
197
+ }, "strip", z.ZodTypeAny, {
198
+ type: "staff_child";
199
+ }, {
200
+ type: "staff_child";
201
+ }>, z.ZodObject<{
202
+ type: z.ZodLiteral<"manual">;
203
+ }, "strip", z.ZodTypeAny, {
204
+ type: "manual";
205
+ }, {
206
+ type: "manual";
207
+ }>]>;
208
+ priority: z.ZodDefault<z.ZodNumber>;
209
+ maxDiscountAmount: z.ZodOptional<z.ZodNumber>;
210
+ }, "strip", z.ZodTypeAny, {
211
+ type: "percentage" | "fixed";
212
+ value: number;
213
+ name: string;
214
+ academicYearId: string;
215
+ priority: number;
216
+ applicableFeeTypes: ("custom" | "lab" | "library" | "exam" | "tuition" | "admission" | "transport" | "hostel" | "uniform" | "miscellaneous")[];
217
+ condition: {
218
+ type: "sibling";
219
+ minSiblings: number;
220
+ } | {
221
+ type: "early_payment";
222
+ daysBefore: number;
223
+ } | {
224
+ type: "scholarship";
225
+ scholarshipId: string;
226
+ } | {
227
+ type: "staff_child";
228
+ } | {
229
+ type: "manual";
230
+ };
231
+ description?: string | undefined;
232
+ maxDiscountAmount?: number | undefined;
233
+ }, {
234
+ type: "percentage" | "fixed";
235
+ value: number;
236
+ name: string;
237
+ academicYearId: string;
238
+ applicableFeeTypes: ("custom" | "lab" | "library" | "exam" | "tuition" | "admission" | "transport" | "hostel" | "uniform" | "miscellaneous")[];
239
+ condition: {
240
+ type: "sibling";
241
+ minSiblings?: number | undefined;
242
+ } | {
243
+ type: "early_payment";
244
+ daysBefore: number;
245
+ } | {
246
+ type: "scholarship";
247
+ scholarshipId: string;
248
+ } | {
249
+ type: "staff_child";
250
+ } | {
251
+ type: "manual";
252
+ };
253
+ description?: string | undefined;
254
+ priority?: number | undefined;
255
+ maxDiscountAmount?: number | undefined;
256
+ }>;
257
+ export type CreateDiscountRuleDto = z.infer<typeof createDiscountRuleSchema>;
258
+ export declare const updateDiscountRuleSchema: z.ZodObject<{
259
+ name: z.ZodOptional<z.ZodString>;
260
+ description: z.ZodOptional<z.ZodString>;
261
+ value: z.ZodOptional<z.ZodNumber>;
262
+ applicableFeeTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["tuition", "admission", "exam", "transport", "library", "lab", "hostel", "uniform", "miscellaneous", "custom"]>, "many">>;
263
+ condition: z.ZodOptional<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
264
+ type: z.ZodLiteral<"sibling">;
265
+ minSiblings: z.ZodDefault<z.ZodNumber>;
266
+ }, "strip", z.ZodTypeAny, {
267
+ type: "sibling";
268
+ minSiblings: number;
269
+ }, {
270
+ type: "sibling";
271
+ minSiblings?: number | undefined;
272
+ }>, z.ZodObject<{
273
+ type: z.ZodLiteral<"early_payment">;
274
+ daysBefore: z.ZodNumber;
275
+ }, "strip", z.ZodTypeAny, {
276
+ type: "early_payment";
277
+ daysBefore: number;
278
+ }, {
279
+ type: "early_payment";
280
+ daysBefore: number;
281
+ }>, z.ZodObject<{
282
+ type: z.ZodLiteral<"scholarship">;
283
+ scholarshipId: z.ZodString;
284
+ }, "strip", z.ZodTypeAny, {
285
+ type: "scholarship";
286
+ scholarshipId: string;
287
+ }, {
288
+ type: "scholarship";
289
+ scholarshipId: string;
290
+ }>, z.ZodObject<{
291
+ type: z.ZodLiteral<"staff_child">;
292
+ }, "strip", z.ZodTypeAny, {
293
+ type: "staff_child";
294
+ }, {
295
+ type: "staff_child";
296
+ }>, z.ZodObject<{
297
+ type: z.ZodLiteral<"manual">;
298
+ }, "strip", z.ZodTypeAny, {
299
+ type: "manual";
300
+ }, {
301
+ type: "manual";
302
+ }>]>>;
303
+ priority: z.ZodOptional<z.ZodNumber>;
304
+ isActive: z.ZodOptional<z.ZodBoolean>;
305
+ maxDiscountAmount: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
306
+ }, "strip", z.ZodTypeAny, {
307
+ value?: number | undefined;
308
+ name?: string | undefined;
309
+ isActive?: boolean | undefined;
310
+ description?: string | undefined;
311
+ priority?: number | undefined;
312
+ applicableFeeTypes?: ("custom" | "lab" | "library" | "exam" | "tuition" | "admission" | "transport" | "hostel" | "uniform" | "miscellaneous")[] | undefined;
313
+ condition?: {
314
+ type: "sibling";
315
+ minSiblings: number;
316
+ } | {
317
+ type: "early_payment";
318
+ daysBefore: number;
319
+ } | {
320
+ type: "scholarship";
321
+ scholarshipId: string;
322
+ } | {
323
+ type: "staff_child";
324
+ } | {
325
+ type: "manual";
326
+ } | undefined;
327
+ maxDiscountAmount?: number | null | undefined;
328
+ }, {
329
+ value?: number | undefined;
330
+ name?: string | undefined;
331
+ isActive?: boolean | undefined;
332
+ description?: string | undefined;
333
+ priority?: number | undefined;
334
+ applicableFeeTypes?: ("custom" | "lab" | "library" | "exam" | "tuition" | "admission" | "transport" | "hostel" | "uniform" | "miscellaneous")[] | undefined;
335
+ condition?: {
336
+ type: "sibling";
337
+ minSiblings?: number | undefined;
338
+ } | {
339
+ type: "early_payment";
340
+ daysBefore: number;
341
+ } | {
342
+ type: "scholarship";
343
+ scholarshipId: string;
344
+ } | {
345
+ type: "staff_child";
346
+ } | {
347
+ type: "manual";
348
+ } | undefined;
349
+ maxDiscountAmount?: number | null | undefined;
350
+ }>;
351
+ export type UpdateDiscountRuleDto = z.infer<typeof updateDiscountRuleSchema>;
352
+ //# sourceMappingURL=discount-rule.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discount-rule.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/finance/discount-rule.schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAerC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUnC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE7E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASnC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Discount Rule Schemas
4
+ *
5
+ * Rules for automatic and manual discounts:
6
+ * sibling discounts, early payment, scholarships, staff child, manual.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.updateDiscountRuleSchema = exports.createDiscountRuleSchema = exports.discountRuleResponseSchema = exports.discountConditionSchema = void 0;
10
+ const zod_1 = require("zod");
11
+ const common_1 = require("./common");
12
+ const common_2 = require("../common");
13
+ exports.discountConditionSchema = zod_1.z.discriminatedUnion('type', [
14
+ zod_1.z.object({ type: zod_1.z.literal('sibling'), minSiblings: zod_1.z.number().int().min(2).default(2) }),
15
+ zod_1.z.object({ type: zod_1.z.literal('early_payment'), daysBefore: zod_1.z.number().int().min(1) }),
16
+ zod_1.z.object({ type: zod_1.z.literal('scholarship'), scholarshipId: zod_1.z.string().min(1) }),
17
+ zod_1.z.object({ type: zod_1.z.literal('staff_child') }),
18
+ zod_1.z.object({ type: zod_1.z.literal('manual') }),
19
+ ]);
20
+ exports.discountRuleResponseSchema = zod_1.z.object({
21
+ id: common_2.uuidSchema,
22
+ schoolId: common_2.uuidSchema,
23
+ academicYearId: common_2.uuidSchema,
24
+ name: zod_1.z.string(),
25
+ description: zod_1.z.string().optional(),
26
+ type: zod_1.z.enum(['percentage', 'fixed']),
27
+ value: zod_1.z.number().min(0),
28
+ applicableFeeTypes: zod_1.z.array(common_1.feeTypeEnum),
29
+ condition: exports.discountConditionSchema,
30
+ priority: zod_1.z.number().int().min(0).default(0),
31
+ isActive: zod_1.z.boolean(),
32
+ maxDiscountAmount: zod_1.z.number().min(0).optional(),
33
+ createdAt: zod_1.z.string(),
34
+ updatedAt: zod_1.z.string(),
35
+ });
36
+ exports.createDiscountRuleSchema = zod_1.z.object({
37
+ name: zod_1.z.string().min(1).max(200),
38
+ description: zod_1.z.string().max(1000).optional(),
39
+ academicYearId: common_2.uuidSchema,
40
+ type: zod_1.z.enum(['percentage', 'fixed']),
41
+ value: zod_1.z.number().min(0),
42
+ applicableFeeTypes: zod_1.z.array(common_1.feeTypeEnum).min(1),
43
+ condition: exports.discountConditionSchema,
44
+ priority: zod_1.z.number().int().min(0).default(0),
45
+ maxDiscountAmount: zod_1.z.number().min(0).optional(),
46
+ });
47
+ exports.updateDiscountRuleSchema = zod_1.z.object({
48
+ name: zod_1.z.string().min(1).max(200).optional(),
49
+ description: zod_1.z.string().max(1000).optional(),
50
+ value: zod_1.z.number().min(0).optional(),
51
+ applicableFeeTypes: zod_1.z.array(common_1.feeTypeEnum).optional(),
52
+ condition: exports.discountConditionSchema.optional(),
53
+ priority: zod_1.z.number().int().min(0).optional(),
54
+ isActive: zod_1.z.boolean().optional(),
55
+ maxDiscountAmount: zod_1.z.number().min(0).optional().nullable(),
56
+ });
57
+ //# sourceMappingURL=discount-rule.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discount-rule.schema.js","sourceRoot":"","sources":["../../../src/schemas/finance/discount-rule.schema.ts"],"names":[],"mappings":"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"}