nazar-salary 2.4.0 → 2.5.1

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 (3) hide show
  1. package/index.d.ts +120 -0
  2. package/index.js +44 -0
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -652,6 +652,121 @@ 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
+ commission: number;
664
+ net_amount: number;
665
+ manager_commission: number;
666
+ verified_at: string;
667
+ }
668
+
669
+ export interface ManagerSalaryItem {
670
+ manager_id: number;
671
+ first_name: string;
672
+ last_name: string;
673
+ phone: string;
674
+ hire_date: string;
675
+ work_days: number;
676
+ students_count: number;
677
+ payments_count: number;
678
+ total_commission: number;
679
+ payments: ManagerPayment[];
680
+ }
681
+
682
+ export interface ManagerSalaryResponse {
683
+ period: {
684
+ month: string;
685
+ display: string;
686
+ date_from: string;
687
+ date_to: string;
688
+ };
689
+ summary: {
690
+ total_managers: number;
691
+ total_students: number;
692
+ total_payments: number;
693
+ total_commission: number;
694
+ };
695
+ manager_list: ManagerSalaryItem[];
696
+ }
697
+
698
+ export type TeacherPaymentStatus = 'not_paid' | 'pending' | 'paid';
699
+
700
+ export interface TeacherPayment {
701
+ id: number;
702
+ type: 'individual' | 'group';
703
+ month_number: number | null;
704
+ lessons_count: number;
705
+ rate_per_lesson: number;
706
+ amount: number;
707
+ status: TeacherPaymentStatus;
708
+ created_at: string;
709
+ paid_at?: string;
710
+ student_id?: number;
711
+ student_name?: string;
712
+ lesson_group_id?: number;
713
+ lesson_group_name?: string;
714
+ students?: Array<{ id: number; name: string }>;
715
+ note?: string;
716
+ }
717
+
718
+ export interface TeacherSalaryItem {
719
+ teacher_id: number;
720
+ first_name: string;
721
+ last_name: string;
722
+ phone: string;
723
+ payments_count: number;
724
+ total_amount: number;
725
+ payments: TeacherPayment[];
726
+ }
727
+
728
+ export interface TeachersSalaryParams {
729
+ period_type: 'month' | 'custom';
730
+ month?: string;
731
+ date_from?: string;
732
+ date_to?: string;
733
+ status?: TeacherPaymentStatus;
734
+ teacher_id?: number;
735
+ }
736
+
737
+ export interface TeachersSalaryResponse {
738
+ period: {
739
+ type: 'month' | 'custom';
740
+ month?: string;
741
+ date_from?: string;
742
+ date_to?: string;
743
+ display: string;
744
+ };
745
+ summary: {
746
+ total_teachers: number;
747
+ total_payments: number;
748
+ total_amount: number;
749
+ by_status: {
750
+ not_paid: number;
751
+ pending: number;
752
+ paid: number;
753
+ };
754
+ };
755
+ teachers: TeacherSalaryItem[];
756
+ }
757
+
758
+ export interface MarkTeacherPaymentsPaidData {
759
+ payment_ids?: number[];
760
+ teacher_id?: number;
761
+ mark_all?: boolean;
762
+ }
763
+
764
+ export interface MarkTeacherPaymentsPaidResponse {
765
+ status: string;
766
+ updated_count: number;
767
+ total_amount: number;
768
+ }
769
+
655
770
  export interface StudentBasicInfo {
656
771
  id: number;
657
772
  first_name: string;
@@ -861,6 +976,11 @@ declare module 'nazar-salary' {
861
976
  getOrphanPayments(params?: { page?: number; limit?: number }): Promise<OrphanPaymentsResponse>;
862
977
  getBanksConfig(): Promise<BanksConfigResponse>;
863
978
  getManagerStudentsAdmin(managerId: number, params?: StudentsListParams): Promise<StudentsListResponse>;
979
+
980
+ // Salary endpoints
981
+ getManagerSalary(month: string, managerId?: number): Promise<ManagerSalaryResponse>;
982
+ getTeachersSalary(params: TeachersSalaryParams): Promise<TeachersSalaryResponse>;
983
+ markTeacherPaymentsPaid(data: MarkTeacherPaymentsPaidData): Promise<MarkTeacherPaymentsPaidResponse>;
864
984
 
865
985
  // Teacher endpoints
866
986
  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
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nazar-salary",
3
- "version": "2.4.0",
3
+ "version": "2.5.1",
4
4
  "description": "Frontend library for Nazar Salary API",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",