14 Commits

Author SHA1 Message Date
9c4c752800 feat: quote detail modal, SteelERP favicon, and notification navigation
- Pipeline page: clicking a supplier quote card opens a modal with full
  line-item breakdown, lead time, payment terms, notes, awarded status,
  and a Compare All Quotes button
- Eager-load supplierQuotes.supplier and supplierQuotes.items in pipeline
  controller to avoid N+1 on the modal data
- Browser tab now shows SteelERP first (SteelERP — Page Name)
- Added SVG favicon matching the sidebar blue-square logo
- Notification clicks now navigate to the relevant page via a dedicated
  /notifications/{id}/go route that marks only that notification as read

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 17:39:04 +03:00
04ced4d2da feat: add VAT settings page and controller 2026-06-01 12:10:01 +03:00
dca9cd5d99 feat: RFQ portal, notifications, and project settings updates
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 11:52:21 +03:00
f2c0f22156 feat: add Excel importer and template download for projects/departments
- ProjectImportService: reads Projects + Departments sheets, creates
  companies automatically if missing, skips duplicates (case-insensitive)
- Controller: import() POST (JSON response) + downloadTemplate() GET
- Template: 2-tab .xlsx (Projects | Departments) with headers, sample rows, note
- View: Import Excel button (AJAX upload with drag-and-drop modal) +
  Template download button in page header; page reloads after successful import

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 18:42:25 +03:00
12e07480a0 feat: move departments from projects to companies
Departments now belong to a Company, not a Project.
- New migration: recreates settings_departments with company_id (migrates existing data)
- Department model: company_id FK, company() relation
- Company model: departments() hasMany relation
- ProjectSetting model: removes departments() relation
- Controller: dept methods now take Company instead of ProjectSetting
- Routes: department CRUD moves to companies/{company}/departments
- View: departments section appears on each company card (purple theme);
  project body is now locations-only (single column)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 18:26:27 +03:00
a425e12349 feat: add companies as top-level container for projects with departments
- Company → Project → (Locations + Departments) hierarchy
- Company CRUD (add, edit, delete) with AJAX
- Projects are created under a company via inline strip
- Two-column project body: Locations | Departments
- Stats show companies, projects, locations, departments, active projects
- Dynamic stat counters update on add/delete without page reload

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 18:05:04 +03:00
60d57af630 feat: add departments to projects — two-column layout with inline CRUD 2026-05-26 17:41:15 +03:00
303cdf6d6e feat: move send-test sections inline — WhatsApp right panel, Email side card with account selector 2026-05-26 15:05:24 +03:00
8d336466f4 feat: add MailAccountController with CRUD + test + toggle routes 2026-05-26 12:25:27 +03:00
dda2022d96 feat: add Azure Mail routes to settings integrations 2026-05-26 11:43:24 +03:00
7f8ae898d5 feat: add Projects settings with sub-locations and cascading dropdowns in purchase request modal
- Migration: add project_id FK to settings_locations
- Models: ProjectSetting hasMany Location, Location belongsTo ProjectSetting
- Settings: /settings/projects page — manage projects and their sub-locations (two-panel UI)
- Sidebar: Projects nav item under Settings group
- Routes: 7 new settings/projects routes (Admin only)
- Modal: project_name and location fields now cascading dropdowns populated from settings_projects/settings_locations

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 11:31:12 +03:00
d1f40c4124 fix: toggle double-fire and CSRF-protect test-whatsapp endpoint 2026-05-19 13:16:07 +03:00
e4e04e9419 feat: add SettingsController and settings routes 2026-05-19 13:04:23 +03:00
11e94889b2 chore: initial commit of existing codebase 2026-05-19 12:40:08 +03:00