Commit Graph

7183 Commits

Author SHA1 Message Date
johnnyq
156c51224d Fix client portal review findings: PIN wipe, log indexing, statement currency (db 2.7.8)
Setting a PIN containing < or > silently cleared it: the length check ran before escapeSql(), whose strip_tags() then emptied the value, and the UPDATE stored the blank while flashing success. Length is now checked after sanitising.

Password and PIN changes require the current password. SSO contacts are exempt - no local password to check, and the IdP already did it.

New index on logs(log_user_id, log_client_id) for the portal profile and activity pages, which were scanning the whole table twice per profile view. admin/audit_logs.php's date filter rewritten as a half-open range so KEY log_created_at is usable - DATE(log_created_at) BETWEEN made it non-sargable.

Portal statement page and PDF now render in the client's currency, matching the guest view and the emailed statement.

Quick Send asks for confirmation; confirm-link extended to submit buttons.

Portal audit entries logged an empty name - client/post.php used , which only exists agent-side.
2026-08-28 16:38:42 -04:00
johnnyq
820103460f Add Top Bottom Margin for Guest Quote and Invoice Quote 2026-08-28 16:29:58 -04:00
johnnyq
be20810d18 Use Datatables for User Activity on the client portal 2026-08-28 16:19:27 -04:00
johnnyq
10fb40f36f Feature: Major spruce up of the client portal profile page, added Department, Location, Title, Phone with Edit, editing Pin, Recent signins and recent activity along with a seperate activity page 2026-08-28 16:08:23 -04:00
johnnyq
194841e7f8 Add Empty state messages in client portal instead of just showing an empty table with the table header 2026-08-28 15:26:43 -04:00
johnnyq
c10d4eb736 Add Account Statment in Client Portal with option to download as a PDF 2026-08-28 15:22:02 -04:00
johnnyq
c53b2402e5 Spruced up the Account Statement on Guest View Invoice 2026-08-28 15:13:17 -04:00
johnnyq
6586a557ed Fix Send Client Account Statement Bug 2026-08-28 15:04:43 -04:00
johnnyq
342502073e Feature: Added Send Account Statment in Client Invoices Drop Down with Date Options and options to only include paid invoices 2026-08-28 14:50:15 -04:00
johnnyq
86ba041cdc Add Quick Send Quote / Invoice to replicate the old single click to Send Email 2026-08-28 14:40:25 -04:00
johnnyq
68b15ca49b Email Invoice Only shows Billing and Primary, Quote shows Important Billing, Primary and Technical contacts that can be selected 2026-08-28 13:43:51 -04:00
johnnyq
72e6f23e19 Send Email and Mark Sent modals for invoices and quotes (db 2.7.7)
Send Email opens a contact picker instead of hardcoding the primary contact; Mark Sent asks how it went out and takes a note. Both log recipients / method / note to the document history. Handlers moved GET -> POST.

Fixes two pre-existing bugs in the email path: archived contacts were still receiving billing copies, and every copy was addressed to the primary contact by name.
2026-08-28 13:31:22 -04:00
johnnyq
20b8fb5379 Make Add Primary links small 2026-08-28 00:44:47 -04:00
johnnyq
097891ed96 Add Primary Location / Contact if missing link modals 2026-08-28 00:26:40 -04:00
johnnyq
6d13237a17 DB Structure Update 2026-08-28 00:13:20 -04:00
johnnyq
27c5502de2 Index the per-parent child fetches and the mail queue loop (db 2.7.6) 2026-08-28 00:11:22 -04:00
johnnyq
8f884f789a Cleanup - fix two broken script paths and drop 29 dead/duplicate files (348KB of unused FullCalendar themes) 2026-08-28 00:01:44 -04:00
johnnyq
1119e13e5d restore nice toast alerts 2026-08-27 23:54:04 -04:00
johnnyq
988788b7c0 Add height placeholder to calendar to reduce jankiness on load 2026-08-27 23:50:19 -04:00
johnnyq
f182eec0b1 Fix content area flashing blank on every client page - defer the client delete modal's script so it stops blocking the parser mid-body 2026-08-27 23:26:29 -04:00
johnnyq
1eabf1ec7d Cleanup CSS Drop dead view transitions 2026-08-27 23:10:39 -04:00
johnnyq
0838ed07ec Add indexes on the client-scoped columns (db 2.7.5)
None of the *_client_id columns carried an index, so agent/includes/inc_all_client.php was doing a full table scan per badge count before the page rendered a byte - 27 of them. The main agent context runs 8 counts and the admin context none, which is why the client side nav was the only one that felt slow.

24 indexes, shaped (<entity>_client_id, <entity>_archived_at) where the query pairs the two and the client column alone otherwise. The archived column is always trailing and never an index of its own - on a healthy instance nearly every row has it NULL, so it cannot lead. recurring_tickets, services, invoices, recurring_invoices and calendar_events get a single column because their queries carry no archived filter; invoices is in that group because the money total there spans archived rows on purpose. payments.payment_invoice_id and transfers.transfer_revenue_id are join keys rather than client scoping but sit on the same page's critical path.

Migration checks information_schema.STATISTICS before each ALTER, since MySQL has no ADD INDEX IF NOT EXISTS and re-adding is an error - safe to re-run and safe where an index was added by hand. db.sql carries the same keys so fresh installs skip the update step.

Wider than the side nav: these are the columns clientScopeSql() filters on, so every client-scoped list page was paying for their absence. Expect the ALTERs to be the slow part of the upgrade on a mature instance.
2026-08-27 22:59:14 -04:00
johnnyq
877474b7f0 Speed up client context pages - badge counts are now one query per table instead of one per number (43 -> 27 queries per page load, invoices scanned once instead of eight times) 2026-08-27 22:47:09 -04:00
johnnyq
f980893cb1 Make each page refresh feel less Jenky with Smooth Fade Page Transitions 2026-08-27 22:44:53 -04:00
johnnyq
6d5152d1e6 Fix Tom Select JS Jankiness on page load 2026-08-27 19:06:36 -04:00
johnnyq
131b10eeb0 Fix Active Side nav Highlight 2026-08-27 18:43:14 -04:00
johnnyq
12ed62326a Add Holiday / Closure Days to SLA to pause SLA timer on defined days, also has a US Holiday Importer 2026-08-27 17:58:02 -04:00
johnnyq
32811fd1d2 Security: gate and client-scope the client overview record pages 2026-08-27 15:27:55 -04:00
johnnyq
4e1d72e06d Roll SLA email targets up to business days, escape priority, validate priority in the tickets API 2026-08-27 15:15:40 -04:00
johnnyq
ac175e7dc0 Add SLA response target to ticket created emails, with a call-in note on High and Urgent 2026-08-27 15:03:31 -04:00
johnnyq
855a608ee4 Default to Public reply by default in Ticket Reply 2026-08-27 13:15:15 -04:00
johnnyq
bf04d6a757 Ticket default to Medium Priority unless specified, as this is just good practice 2026-08-27 13:04:19 -04:00
johnnyq
069f587c1d Implemented Check for updates which removs the last shell exec from web ui, and reimplemented db_update switch to update_cli.php 2026-08-26 23:38:23 -04:00
johnnyq
14c38b9814 Remove DB Update from WebUI as this is handled by the update_cli backend 2026-08-26 22:59:17 -04:00
johnnyq
51c925522c Remove thr web updater this is now either queued from the web or ran from the shell to update 2026-08-26 22:53:29 -04:00
johnnyq
93fc6cd2ef Offset background color fix datepciker empty right column 2026-08-26 22:42:20 -04:00
johnnyq
1bebd2d578 Fix Light mode Initialization flash when in dark mode 2026-08-26 22:09:29 -04:00
johnnyq
2409c98e1e Added Border End to clients checkbox column 2026-08-26 15:20:15 -04:00
johnnyq
e637da615e Added More Meaningful nothing matches filters or no records exist 2026-08-26 15:12:16 -04:00
johnnyq
806732c8f5 Display Phone number Country Codes 2026-08-26 14:19:32 -04:00
johnnyq
422f88c25e Retain PHone Country code on edit 2026-08-26 14:11:23 -04:00
johnnyq
96f2c697c6 use intl js lib across all phone number fields 2026-08-26 13:53:27 -04:00
johnnyq
cfafc385f0 Bump intl-tel-input 2026-08-26 13:14:32 -04:00
johnnyq
3d9a41bec4 Bump imapengine from 1.25.4 to 1.25.6 and dependencies 2026-08-26 13:02:29 -04:00
johnnyq
71cfdf5e39 Pruned printer custom css patches as upstream vendor adminlte fixed the issue 2026-08-26 12:33:34 -04:00
johnnyq
6d043948b4 Updated Adminlte from 4.8.5 to 4.9.1 to fix print issues 2026-08-26 12:24:16 -04:00
johnnyq
0440aa8ffa Fix copy to clipboard to be a ntn-link instead of a button fixes adminlte4 regression 2026-08-25 18:42:37 -04:00
johnnyq
c6d642fbe7 Use new lte skin preview class for themes instead of colored circles 2026-08-25 18:31:33 -04:00
johnnyq
d20e3f78d1 Add Margin and remove un needed card surrounding calendar 2026-08-25 18:00:51 -04:00
johnnyq
fdc2a8c2c3 Switch some bg-primary to bg-blue so they are consistent across themes, use new bs5 to reduce width on certain form inputs 2026-08-25 17:44:18 -04:00