nazar-salary 2.4.0 → 2.5.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.
- package/index.d.ts +121 -0
- package/index.js +44 -0
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -652,6 +652,122 @@ declare module 'nazar-salary' {
|
|
|
652
652
|
};
|
|
653
653
|
}
|
|
654
654
|
|
|
655
|
+
// Salary interfaces
|
|
656
|
+
export interface ManagerPayment {
|
|
657
|
+
payment_id: number;
|
|
658
|
+
student_id: number;
|
|
659
|
+
student_name: string;
|
|
660
|
+
operation_number: string;
|
|
661
|
+
purchase_amount: number;
|
|
662
|
+
prepayment: boolean;
|
|
663
|
+
kaspi_amount: number;
|
|
664
|
+
kaspi_commission: number;
|
|
665
|
+
net_amount: number;
|
|
666
|
+
manager_commission: number;
|
|
667
|
+
verified_at: string;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
export interface ManagerSalaryItem {
|
|
671
|
+
manager_id: number;
|
|
672
|
+
first_name: string;
|
|
673
|
+
last_name: string;
|
|
674
|
+
phone: string;
|
|
675
|
+
hire_date: string;
|
|
676
|
+
work_days: number;
|
|
677
|
+
students_count: number;
|
|
678
|
+
payments_count: number;
|
|
679
|
+
total_commission: number;
|
|
680
|
+
payments: ManagerPayment[];
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
export interface ManagerSalaryResponse {
|
|
684
|
+
period: {
|
|
685
|
+
month: string;
|
|
686
|
+
display: string;
|
|
687
|
+
date_from: string;
|
|
688
|
+
date_to: string;
|
|
689
|
+
};
|
|
690
|
+
summary: {
|
|
691
|
+
total_managers: number;
|
|
692
|
+
total_students: number;
|
|
693
|
+
total_payments: number;
|
|
694
|
+
total_commission: number;
|
|
695
|
+
};
|
|
696
|
+
manager_list: ManagerSalaryItem[];
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
export type TeacherPaymentStatus = 'not_paid' | 'pending' | 'paid';
|
|
700
|
+
|
|
701
|
+
export interface TeacherPayment {
|
|
702
|
+
id: number;
|
|
703
|
+
type: 'individual' | 'group';
|
|
704
|
+
month_number: number | null;
|
|
705
|
+
lessons_count: number;
|
|
706
|
+
rate_per_lesson: number;
|
|
707
|
+
amount: number;
|
|
708
|
+
status: TeacherPaymentStatus;
|
|
709
|
+
created_at: string;
|
|
710
|
+
paid_at?: string;
|
|
711
|
+
student_id?: number;
|
|
712
|
+
student_name?: string;
|
|
713
|
+
lesson_group_id?: number;
|
|
714
|
+
lesson_group_name?: string;
|
|
715
|
+
students?: Array<{ id: number; name: string }>;
|
|
716
|
+
note?: string;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
export interface TeacherSalaryItem {
|
|
720
|
+
teacher_id: number;
|
|
721
|
+
first_name: string;
|
|
722
|
+
last_name: string;
|
|
723
|
+
phone: string;
|
|
724
|
+
payments_count: number;
|
|
725
|
+
total_amount: number;
|
|
726
|
+
payments: TeacherPayment[];
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
export interface TeachersSalaryParams {
|
|
730
|
+
period_type: 'month' | 'custom';
|
|
731
|
+
month?: string;
|
|
732
|
+
date_from?: string;
|
|
733
|
+
date_to?: string;
|
|
734
|
+
status?: TeacherPaymentStatus;
|
|
735
|
+
teacher_id?: number;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
export interface TeachersSalaryResponse {
|
|
739
|
+
period: {
|
|
740
|
+
type: 'month' | 'custom';
|
|
741
|
+
month?: string;
|
|
742
|
+
date_from?: string;
|
|
743
|
+
date_to?: string;
|
|
744
|
+
display: string;
|
|
745
|
+
};
|
|
746
|
+
summary: {
|
|
747
|
+
total_teachers: number;
|
|
748
|
+
total_payments: number;
|
|
749
|
+
total_amount: number;
|
|
750
|
+
by_status: {
|
|
751
|
+
not_paid: number;
|
|
752
|
+
pending: number;
|
|
753
|
+
paid: number;
|
|
754
|
+
};
|
|
755
|
+
};
|
|
756
|
+
teachers: TeacherSalaryItem[];
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
export interface MarkTeacherPaymentsPaidData {
|
|
760
|
+
payment_ids?: number[];
|
|
761
|
+
teacher_id?: number;
|
|
762
|
+
mark_all?: boolean;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
export interface MarkTeacherPaymentsPaidResponse {
|
|
766
|
+
status: string;
|
|
767
|
+
updated_count: number;
|
|
768
|
+
total_amount: number;
|
|
769
|
+
}
|
|
770
|
+
|
|
655
771
|
export interface StudentBasicInfo {
|
|
656
772
|
id: number;
|
|
657
773
|
first_name: string;
|
|
@@ -861,6 +977,11 @@ declare module 'nazar-salary' {
|
|
|
861
977
|
getOrphanPayments(params?: { page?: number; limit?: number }): Promise<OrphanPaymentsResponse>;
|
|
862
978
|
getBanksConfig(): Promise<BanksConfigResponse>;
|
|
863
979
|
getManagerStudentsAdmin(managerId: number, params?: StudentsListParams): Promise<StudentsListResponse>;
|
|
980
|
+
|
|
981
|
+
// Salary endpoints
|
|
982
|
+
getManagerSalary(month: string, managerId?: number): Promise<ManagerSalaryResponse>;
|
|
983
|
+
getTeachersSalary(params: TeachersSalaryParams): Promise<TeachersSalaryResponse>;
|
|
984
|
+
markTeacherPaymentsPaid(data: MarkTeacherPaymentsPaidData): Promise<MarkTeacherPaymentsPaidResponse>;
|
|
864
985
|
|
|
865
986
|
// Teacher endpoints
|
|
866
987
|
getTeacherLanguages(): Promise<TeacherLanguagesResponse>;
|
package/index.js
CHANGED
|
@@ -280,6 +280,50 @@ class SalaryAPI {
|
|
|
280
280
|
);
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
+
/**
|
|
284
|
+
* Get manager salary for specific month (Admin only)
|
|
285
|
+
* @param {string} month - Month in YYYY-MM format
|
|
286
|
+
* @param {number} [managerId] - Optional manager ID filter
|
|
287
|
+
* @returns {Promise<{period: object, summary: object, manager_list: array}>}
|
|
288
|
+
*/
|
|
289
|
+
async getManagerSalary(month, managerId = null) {
|
|
290
|
+
const params = { month };
|
|
291
|
+
if (managerId) {
|
|
292
|
+
params.manager_id = managerId;
|
|
293
|
+
}
|
|
294
|
+
return await this.client.get("/api/v1/admin/salary/manager", { params });
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Get teachers salary for specific period (Admin only)
|
|
299
|
+
* @param {object} params - Query parameters
|
|
300
|
+
* @param {string} params.period_type - 'month' or 'custom'
|
|
301
|
+
* @param {string} [params.month] - Month in YYYY-MM format (required if period_type=month)
|
|
302
|
+
* @param {string} [params.date_from] - Start date YYYY-MM-DD (required if period_type=custom)
|
|
303
|
+
* @param {string} [params.date_to] - End date YYYY-MM-DD (required if period_type=custom)
|
|
304
|
+
* @param {string} [params.status] - Filter by status: 'not_paid', 'pending', 'paid'
|
|
305
|
+
* @param {number} [params.teacher_id] - Filter by teacher ID
|
|
306
|
+
* @returns {Promise<{period: object, summary: object, teachers: array}>}
|
|
307
|
+
*/
|
|
308
|
+
async getTeachersSalary(params) {
|
|
309
|
+
return await this.client.get("/api/v1/admin/salary/teachers", { params });
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Mark teacher payments as paid (Admin only)
|
|
314
|
+
* @param {object} data - Payment data
|
|
315
|
+
* @param {number[]} [data.payment_ids] - Array of payment IDs to mark as paid
|
|
316
|
+
* @param {number} [data.teacher_id] - Teacher ID (used with mark_all)
|
|
317
|
+
* @param {boolean} [data.mark_all] - Mark all pending payments for teacher
|
|
318
|
+
* @returns {Promise<{status: string, updated_count: number, total_amount: number}>}
|
|
319
|
+
*/
|
|
320
|
+
async markTeacherPaymentsPaid(data) {
|
|
321
|
+
return await this.client.post(
|
|
322
|
+
"/api/v1/admin/salary/teachers/mark-paid",
|
|
323
|
+
data,
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
|
|
283
327
|
// ===== TEACHER ENDPOINTS =====
|
|
284
328
|
|
|
285
329
|
/**
|