feat: Add online share functionality for secretaries

- Introduced `online_share_enabled` and `online_share_percent` fields in the `doctor_secretaries` table to manage secretary shares from online appointments.
- Added `bank_account` field in the `profiles` table to store user-level IBANs for settlements.
- Created `secretary_earnings` table to track earnings per secretary from online appointments, including a foreign key relationship with `financial_breakdowns`.
- Implemented `SecretaryEarning` entity and repository for managing secretary earnings.
- Developed `SecretaryShareResolver` service to determine which secretaries earn from online payments.
- Added `UserIbanResolver` service to handle user IBAN retrieval and management.
- Created `HasIbansTrait` for entities to manage IBANs in a JSON format.
- Implemented tests for secretary earnings and API endpoints for managing secretary shares and IBANs.
This commit is contained in:
hamed
2026-07-25 18:34:18 +03:30
parent 73a608c3dd
commit 8d2b0d908a
33 changed files with 2564 additions and 76 deletions
+10
View File
@@ -485,6 +485,16 @@ export interface Secretary {
address?: string | null;
permissions: SecretaryPermissions;
created_at: string;
clinic_uuid?: string | null;
clinic_name?: string | null;
/** سهم منشی از نوبت‌های آنلاین — per-relation، توسط ادمین تنظیم می‌شود. */
online_share_enabled?: boolean;
online_share_percent?: number;
earnings?: {
total_rials: number;
this_month_rials: number;
appointments_count: number;
};
}
export interface SecretaryPermissions {