1. 29 Aug, 2026 1 commit
  2. 28 Aug, 2026 2 commits
  3. 27 Aug, 2026 1 commit
    • Mahmoud Aglan's avatar
      feat(sa-reports, discounts): sports activity reports + membership discount fixes · 40f1c0c0
      Mahmoud Aglan authored
      Sports Activity Reports: player reports with filters (discipline/program/group/
      player type/medical/payment status/branch) and finance reports (revenue/costs/
      profit with daily/weekly/monthly/yearly/3yr/5yr/custom periods). CSV and PDF
      export for both. Role-based access with 3 new permissions.
      
      Membership Discounts: fix BillingService to include regulatory discount as bill
      line item, add regulatory discount section to edit page, add FYI discount guide
      to show page covering all 3 discount types (special, regulatory, board offers),
      handle regulatory discount in update controller with document upload.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      40f1c0c0
  4. 26 Aug, 2026 4 commits
    • Mahmoud Aglan's avatar
    • Mahmoud Aglan's avatar
      feat(hr): work schedules, job description cards, org hierarchy · 9342a5ee
      Mahmoud Aglan authored
      Phase 3: Weekly work schedules
      - Migration: hr_weekly_schedules table (per-employee per-day shift times + rest days)
      - Seed: import 59 employees' weekly schedules from club's work schedule sheet
      - Seed: 13 shift definitions (9-5, 3-11, 10-6, 12-8, etc.)
      
      Phase 7B: Job description cards
      - Migration: hr_job_descriptions table (purpose, authority, duties per job title)
      - View: printable بطاقة الوصف الوظيفي matching club's official template
      - Route: GET /hr/job-titles/{id}/description-card
      
      Phase 8: Org structure hierarchy
      - Migration sets parent_id=1 (EXEC) for all other departments
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      9342a5ee
    • Mahmoud Aglan's avatar
      fix(hr-seeds): fix department type constraint + create employee login accounts · f61ceb27
      Mahmoud Aglan authored
      - Phase_05_001: changed department_type from 'edara' to 'idara' (CHECK constraint only allows 'idara'/'qism')
      - Phase_05_002: create employees table records before hr_employee_profiles to satisfy FK constraint
        - Generates unique usernames (emp0001, emp0002, ...)
        - Sets default password 'Club@2026' with force_password_change=1
        - Links hr_employee_profiles.employee_id to newly created employees.id
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      f61ceb27
    • Mahmoud Aglan's avatar
      feat(hr): 2025 Labour Law compliance + employee import + payroll alignment · 23dd0208
      Mahmoud Aglan authored
      Phase 1 - Leave System (2025 Law):
      - Annual leave: 15d (1st year) → 21d (after 1y) → 30d (10y+/age 50+) → 45d (disability)
      - Maternity: 90 → 120 days (4 months), hajj: now PAID with 5y service min
      - New leave types: childcare (unpaid, 3 career, 24mo gap), paternity (1d, 3 career), exam
      - Casual leave: enforce max 2 consecutive days
      - Childcare gap enforcement, service months validation
      
      Phase 2 - Employee Import:
      - Extract 75 employees from HR registry Excel → JSON seed data
      - 34 Bank of Alexandria accounts extracted for salary transfers
      - 14 departments + all job titles auto-created from registry
      - Migration adds variable_salary + total_allowances columns
      
      Phase 4 - Payroll Alignment (July 2026 format):
      - Solidarity fund: 0.25% of gross (صندوق التكافل)
      - Stamp duty: 3% of net (دمغة عادية وإضافية) - now percentage-based
      - Emergency fund + VAT config keys added
      - calculation_json includes full breakdown
      
      Phase 5 - Bank Transfer Export:
      - BankTransferService generates transfer data from payroll runs
      - CSV export with BOM for Arabic compatibility
      - View + route: /hr/payroll/periods/{id}/bank-transfer
      
      Phase 6 - Performance Evaluation:
      - Seed 10-criteria template matching club's official form (100 points)
      - Dual evaluator support (direct manager + general supervisor)
      - 5-tier rating labels (ضعيف → ممتاز)
      
      Phase 7 - Reports & Forms:
      - Work receipt printable form (إقرار استلام العمل)
      - Workforce statement report (بيان القوة الفعلية)
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      23dd0208
  5. 23 Aug, 2026 3 commits
    • Mahmoud Aglan's avatar
      ui(members): add FYI hints table showing all available regulatory discounts · 9585e99f
      Mahmoud Aglan authored
      Always-visible reference table on the membership form showing:
      - All 7 articles with their discount percentages and conditions
      - Which branches each applies to
      - What proof is needed (auto-verify vs document upload)
      - Non-stacking rule note
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      9585e99f
    • Mahmoud Aglan's avatar
      feat(members): integrate regulatory discounts into membership form · b86c24f6
      Mahmoud Aglan authored
      - Add regulatory_discount_id/amount/document columns to members table
      - Add eligibility type selector with conditional sections per type
      - Auto-verification for cross-branch (checks members DB) and club employee (HR)
      - Document upload for types requiring manual proof (gov, ministry, board, group)
      - AJAX eligibility check button calls /pricing/regulatory-discounts/check-eligibility
      - Creates audit trail application record on form submit (status: pending)
      - Dynamic UI: shows/hides relevant fields based on selected type
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      b86c24f6
    • Mahmoud Aglan's avatar
      feat(pricing): implement regulatory discounts (Articles 97-102, 110) · 3f42fa01
      Mahmoud Aglan authored
      Full-cycle implementation of club bylaw discount rules:
      - Art 97: Cross-branch member discounts (50% Sheraton6th Oct, 25% →Admin Capital)
      - Art 98: Government employees 50%, Ministry of Youth 62.5% at Admin Capital
      - Art 99: Ministry of Youth 25% at Sheraton/6th Oct
      - Art 100: Board of Trustees 50% + 2yr interest-free installment
      - Art 101: Ministry employees installment-only (no discount)
      - Art 102: Club employees (5+ yrs) up to 15%
      - Art 110: Group membership tiered (5-10→3%, 11-20→7%, 21+→10%)
      
      Includes: migration, seed data, model, service with eligibility engine,
      controller (CRUD + eligibility check API + application workflow),
      views (index, form, applications), routes, permissions, menu entry,
      and PricingEngine integration.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      3f42fa01
  6. 20 Aug, 2026 2 commits
    • Mahmoud Aglan's avatar
    • Mahmoud Aglan's avatar
      feat(pricing+subscriptions): multi-tier board offers + fix first-year subscription logic · cb63de72
      Mahmoud Aglan authored
      Board Offers:
      - Add board_offer_tiers table for multiple payment plans per offer
      - Each offer now supports 4 tiers: cash (10% discount), 24mo/0%, 40mo/15%, 60mo/15%
      - View shows all tiers as selectable cards with pre-calculated breakdowns
      - Controller accepts offer_tier_id and uses tier-specific terms
      - Seed populates tiers for all active board offers
      - Legacy fallback preserved when no tiers are configured
      
      Subscription Fix:
      - First-year members no longer get subscription rows (membership fee covers current FY)
      - First-year dependents no longer get subscription rows (addition fee covers current FY)
      - MembershipValidationService bypasses subscription check for first-year members
      - AutoFreezeService.checkSubscriptionBlock bypasses for first-year members
      - MembershipRulesService.canPrintCarnet bypasses for first-year members
      - SubscriptionGenerator skips first-year members/dependents entirely
      - Individual subscription pay() now redirects to payYear() (all-or-nothing family payment)
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      cb63de72
  7. 19 Aug, 2026 3 commits
  8. 18 Aug, 2026 9 commits
  9. 16 Aug, 2026 3 commits
  10. 12 Aug, 2026 12 commits