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
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
8c0e5246b4
Fix Card Margin bottoms client header and ticket cards on the right
2026-08-14 19:08:15 -04:00
johnnyq
64423cbefa
Fix Client PDF Export
2026-08-06 18:51:09 -04:00
johnnyq
b3744e9ed5
More sweeps to replace select * with actual returned column names dramatically reduces php memory usage and speeds up processing dramatically especially in the crons since they run all the time
2026-08-06 13:10:23 -04:00
johnnyq
b8c9d5b4cf
Query Optimization: Select only needed columns instead of SELECT * on looped queries
2026-08-06 12:59:43 -04:00
johnnyq
ddd9c2b56a
clientScopeSql sweep whicn now removed the extra unessesary client joins
2026-08-06 11:45:56 -04:00
johnnyq
3c8f812a16
Feature: On all export modals added Filter Tab and Selectable Columns tab with default selected, also you can now export to a PDF
2026-07-30 00:46:15 -04:00
johnnyq
5c4805b822
Neutralize CSV formula injection in generated exports using the new created escapeCsvFormula Function
2026-07-24 18:12:45 -04:00
johnnyq
af51c4316f
Updated validateCSRFToken to automatically grab and compare get or post csrf token no longer need to pass an argument to the function which fixed the issue if no hash was present
2026-07-24 13:40:37 -04:00
johnnyq
41b118ab87
Add formatAddress function and replace all addresses with it
2026-07-23 18:10:39 -04:00
johnnyq
9d540f4bfe
Replace Function customAction() with triggerCustomAction()
2026-07-14 17:43:55 -04:00
johnnyq
b8873039a4
Rename Functions: flash_alert, sanitizeFilename and display_folder_options using camelCase instead to match other custom php functions
2026-07-14 17:41:41 -04:00
johnnyq
f1836c70cd
Replace Function logAction() with logAudit()
2026-07-14 17:35:23 -04:00
johnnyq
b57ddc0e5c
Replace Function sanitizeInput() with just escapeSql() and update all instances throughout
2026-07-14 17:17:50 -04:00
johnnyq
7bc47a58fe
Replace Function nullable_htmlentities() with just escapeHtml() and update all instances throughout
2026-07-14 17:10:45 -04:00
johnnyq
8da3a107fb
Rename plugins to libs and update all file references
2026-07-10 13:24:20 -04:00
wrongecho
7211426292
Invoices - Secure date/frequency input handling
2026-05-20 13:32:21 +01:00
johnnyq
6d2cb0aea3
Split out item edits into seperate posts and modals for editing invoice, quote and recurring invoice items
2026-03-07 12:12:27 -05:00
johnnyq
202f55c2ff
invoices: remove client_id post from edit and link modals as it should get the client_id in post, enforceClientAccess
2026-03-06 17:53:44 -05:00
johnnyq
4440581f14
Invoice: Add missing CSRF checks and missing permissions
2026-03-01 22:22:21 -05:00
johnnyq
3ed2582a9b
Remove TaxID from packing slip
2026-01-15 14:09:03 -05:00
wrongecho
5a274061f3
Invoice - add a basic picking/packaging slip
2026-01-15 13:58:53 +00:00
wrongecho
7322bd66df
Invoices - Show agent names in history
2026-01-15 10:19:56 +00:00
johnnyq
0a30300bde
replace all instances of mysqli_fetch_array with mysqli_fetch_assoc for better performance and memory usage
2026-01-14 17:30:23 -05:00
wrongecho
88a29b7599
Bugfix: Mail queue loop not sending invoices to all billing contacts
2026-01-09 16:56:11 +00:00
johnnyq
ad5710b1d8
Fix Invoice CSV Exporting
2025-12-18 20:00:56 -05:00
johnnyq
a79ce23ae5
Fix randomString() to generate cryptographically secure URL-safe tokens, reduced url keys to 32 Characters for performance and easy copy and paste and compatibility while still mainitaining ubreakable cryptographic keys
2025-12-18 14:24:53 -05:00
johnnyq
e1a579387f
Convert all Import / Export Modals to Ajax and a few other lingering modals that were not converted yet
2025-12-02 15:04:05 -05:00
johnnyq
99e2487d2b
Fix dupe race condition with ticket, invoice, quote, project, recurring ticket numbering when being created in parallel Atomically update and get the next ticket number in one SQL query everywhere.
2025-11-28 14:14:46 -05:00
wrongecho
0347382a34
Invoices - Allow specifying discount during creation
2025-11-27 09:53:35 +00:00
johnnyq
26bb430d6e
Seperate out posts into payment, invoice and recurring invoice instead of them all being under invoice post file
2025-10-29 16:18:32 -04:00
johnnyq
0cacf83ae5
Fix Sending Email when Forcing a Recurring Invoice into an Invoice
2025-10-22 16:28:53 -04:00
johnnyq
00f5198bed
Update appNotidfy links to use Absolute paths, updated gitignore
2025-09-25 13:31:16 -04:00
johnnyq
edabc5c33f
rename /user/ to /agent/ and update links to use agent/ instead
2025-09-23 18:04:23 -04:00