62 Commits

Author SHA1 Message Date
ee89269c0b feat: load VAT rate and store is_vatable in RFQ portal 2026-06-01 12:11:02 +03:00
a9db089a90 feat: add VAT Settings link to sidebar 2026-06-01 12:10:27 +03:00
04ced4d2da feat: add VAT settings page and controller 2026-06-01 12:10:01 +03:00
b19396c996 feat: add is_vatable column to supplier_quote_items 2026-06-01 12:09:13 +03:00
3252cf7fb8 docs: add VAT + RFQ vatable checkbox design spec 2026-06-01 12:06:37 +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
72e6c3170e fix: use label[for] to trigger file input in import modal
Browsers treat label clicks as direct user gestures, ensuring the
OS file picker always opens. Removes unreliable div.onclick -> input.click()
pattern. Also fixes DataTransfer.files assignment (read-only in some browsers).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 18:51:26 +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
9a268dc79b feat: add company reassignment to project edit strip
Each project's Edit strip now has a Company dropdown.
Changing company and saving moves the project card to the
correct company section live without a page reload.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 18:17:50 +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
58b3e9e0de feat: remove accordion from projects — all projects always expanded 2026-05-26 17:33:39 +03:00
b1986e8654 all 2026-05-26 17:17:05 +03:00
a43805e30c debug: log full trace on sendTestEmail failure 2026-05-26 16:41:06 +03:00
6955d7b422 fix: pass transport directly to Mailer constructor, not wrapped in Symfony Mailer 2026-05-26 16:32:28 +03:00
c6a12163bb fix: log sendTestEmail errors and show error toast for 15s so it can be read 2026-05-26 16:31:45 +03:00
9115bc9630 fix: build Mailer directly in sendTestEmail to avoid Mailer[name] not defined error 2026-05-26 16:29:56 +03:00
f471102b00 feat: full-width cards with gradient headers and decoration for WhatsApp and Email tabs 2026-05-26 15:26:27 +03:00
573f156a82 fix: consolidate pill tab styles into :style binding — Alpine was stripping static style attr 2026-05-26 15:19:47 +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
b3650489af feat: rewrite Email tab as multi-account list with Add/Edit/Delete modal 2026-05-26 12:29:03 +03:00
db5272dd1d feat: register dynamic mailers in AppServiceProvider, remove single-azure methods from SettingsController 2026-05-26 12:26:02 +03:00
8d336466f4 feat: add MailAccountController with CRUD + test + toggle routes 2026-05-26 12:25:27 +03:00
bbc06738e9 feat: add mail_accounts migration and MailAccount model 2026-05-26 12:24:44 +03:00
33c0a5eb73 docs: add multi mail accounts design spec 2026-05-26 12:16:35 +03:00
bf21e89497 feat: rewrite integrations view with WhatsApp/Email pill tabs and AJAX saves 2026-05-26 11:46:19 +03:00
1804ed4266 feat: update SettingsController for Azure Mail tab — AJAX whatsapp save, 3 new azure methods 2026-05-26 11:44:05 +03:00
dda2022d96 feat: add Azure Mail routes to settings integrations 2026-05-26 11:43:24 +03:00
2c67606bdb feat: integrate promoseven/azure-mailer as mail transport
Adds path repository, composer dependency, azure mailer config entry,
and AZURE_* env vars to .env.example.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 11:18:06 +03:00
3cf54ff4b0 docs: add azure-mailer implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 10:50:15 +03:00
a922450e50 docs: add azure-mailer package design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 10:43:55 +03:00
d8cab94bcb feat: supplier modal wizard, pipeline delete, sidebar cleanup
- Replace two-tab supplier selector with two-step wizard (method select → suppliers → summary)
- Add per-item channel picker (Email / WhatsApp / Both) in By Item mode
- Add confirmation summary step before submitting By Item supplier assignments
- Add type-to-confirm delete on pipeline list rows
- Redirect purchase.requests.index to pipeline (same data, single entry point)
- Remove Purchase Requests from sidebar nav
- Add edit-request-modal, supplier-invite-list components
- Add address coordinates migration for settings_locations

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 17:08:58 +03:00
dd924904c5 docs: add supplier modal wizard implementation plan 2026-05-25 14:15:17 +03:00
099f1efde3 docs: add supplier modal wizard redesign spec 2026-05-25 14:10:08 +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
75e4890a08 feat: add Settings controllers for Location, ProjectSetting, UrgencyLevel 2026-05-24 09:56:03 +03:00
70db1184c8 feat: add UrgencyLevelSeeder with 4 default urgency levels 2026-05-24 09:53:01 +03:00
f8dc7f6d1c feat: add Settings models for Location, ProjectSetting, UrgencyLevel 2026-05-24 09:48:31 +03:00
c70dde9b1b feat: add migrations for settings_locations, settings_projects, settings_urgency_levels 2026-05-24 09:45:34 +03:00
45f330617c docs: add implementation plan for purchase request form upgrade 2026-05-24 09:43:09 +03:00
41da090c01 docs: add purchase request form upgrade design spec 2026-05-24 09:31:36 +03:00
add011790c fix: add Notifiable trait to Supplier and Customer, add null guards to notification messages 2026-05-19 13:29:28 +03:00
2d54c670de fix: low stock alert only on out movements, fix date formatting in notifications 2026-05-19 13:25:29 +03:00
fddfb2aaff fix: use salesOrder.customer path in DeliveryNote dispatch notification 2026-05-19 13:22:17 +03:00
a1f6e765e1 feat: send WhatsApp notification on production order completed 2026-05-19 13:19:49 +03:00
5b2a46c753 feat: send WhatsApp low stock alert to store managers 2026-05-19 13:19:45 +03:00
8303df358f feat: send WhatsApp notification on delivery dispatched 2026-05-19 13:19:41 +03:00
a64443110a feat: send WhatsApp notification on sales invoice created 2026-05-19 13:19:36 +03:00
68c605bc69 feat: send WhatsApp notification on sales order confirmed 2026-05-19 13:19:31 +03:00