johnnyq
|
01fbcda75d
|
Security sweep 2: API archive, unarchive, resolve and close now check the client named in the call the same as create, update and delete do (every call except read.php and time.php counts as a write); API asset, contact, network and document create/update keep linked contacts, locations, vendors, networks and folders within the record's own client; linking a contact to an asset refuses another client's contact, and unlinking only clears the contact it was linked to; agents limited to certain clients no longer see other clients' names in the asset import template file name, export filter summaries, or the messages from file moves, unlinks, ticket asset removal, bulk project add and bulk interface network; guest quote Accept and Decline post instead of being plain links and check the key with hash_equals; exports that match nothing say so instead of showing a blank page; about 30 handlers now stop with 'no longer exists' when their record was just deleted, instead of showing warnings or an error page and writing history for a record that is gone; restore_contact_note reads its own id parameter; ticket prefix pattern escaped for the v flag; missing user agent and array key parameters handled; CHANGELOG updated
|
2026-10-26 19:54:36 -04:00 |
|
johnnyq
|
d0620067a1
|
Contracts stage 2: each contract is a document with placeholders ([Client], [Start Date], [Rate], an [SLA] table and more) to preview, print or download as PDF; Send to sign emails a contact or anyone a link to sign with a drawn or typed signature, from the link or the client portal (Billing > Contracts and the home page list of ones waiting); Countersign makes a draft active and emails the PDF signed by both with its signing trail and document fingerprint; Signing card with copy link, send again, withdraw and earlier requests; changing the document while it is out for signature withdraws the request; contract emails in Mail > Previews; new functions/contract_signature.php and functions/contract_pdf.php, guest/guest_view_contract.php, client/contracts.php and client/contract.php; DB 3.4.3 adds contract_signatures and keeps any stored signature as a recorded round
|
2026-10-25 01:05:42 -04:00 |
|
johnnyq
|
9a793bee98
|
Guest ticket page rebuilt to match the client portal's ticket: logo, status badge and progress, conversation oldest first with each message's files, details, request details and a Contact us panel; shows when you will reply while the SLA response time is still ahead, work booked on the ticket (onsite with the site's address, or remote) with Add to calendar, and tasks waiting for client approval; Reply by email with the ticket number in the subject when the ticket mailbox is parsed, Reply in the client portal, and Call on Urgent and High tickets; close, reopen and rating are now form posts that act once, reopen restarts the resolution SLA and notifies agents, close stops the SLA clock, and the rating takes Good or Bad only and only once; the link key must match exactly, the page sends no referrer and can't be framed, files come through new guest_ticket_attachment.php with the portal's rules and download logging, never the parsed email; fixes contact photos not showing and the rating custom action never running; adds ticketByGuestKey, ticketGuestPath, ticketScheduleRow and ticketScheduleIcs, which ticketSetSchedule now uses for its calendar file; changelog
|
2026-10-24 12:55:22 -04:00 |
|
johnnyq
|
e84e3e7e49
|
Client portal stage 2: billing in the portal - invoices and quotes open in the portal with PDF download and print, Pay invoices pays several invoices as one Stripe card payment with a saved card or a new card on a checkout page (one payment per invoice under a shared reference, booked once under a lock, one receipt and one paid notification), quotes accepted or declined with the contact's name and a note plus signed copy or PO upload, payments list with printable receipts, statement with aging and the shared statement PDF, recurring invoice page with autopay, Cards and autopay on one page, quotes waiting and past-due invoices on home, Ask us links prefill a ticket subject; shared billingQuoteAnswer and billingQuoteAddFiles used by the guest links too, new functions/billing_pay.php, Stripe-aware CSP for card pages with js/portal_stripe.js, nightly Stripe fee reconciled once per payment reference, Stripe refund limited to the payment's own amount, old add_payment_by_provider removed
|
2026-10-17 02:12:05 -04:00 |
|
johnnyq
|
87c441b3b9
|
Billing stage 5: payment reminders on a schedule set in Invoice Settings (days before, on and after the due date, then every N days until paid, with a client opt-out on the Billing tab and no reminder for autopay invoices until late), Send Reminder and next-reminder status on the invoice page, a message and PDF attachment in the invoice, quote and statement Send windows, a statement PDF with aging and an optional monthly statement run, a new look for invoice, quote, reminder, receipt, statement and team notice emails sent to primary and billing contacts, late fee added as a proper invoice line, fixes for the quote answered notice link and batch payment receipts, database 2.9.8 and changelog
|
2026-10-16 17:12:10 -04:00 |
|
johnnyq
|
fee0a5cb80
|
Invoices, quotes and recurring invoices makeover stage 1: one shared document page for all three with inline line editing (product pick, live line totals, drag to reorder, lines locked once paid or answered), shared New/Edit form, late recurring invoices offer to skip to the next date without billing missed runs, Add Payment shows remaining balance and account balances, Batch Payment lists the invoices it will pay, Add Tickets takes several at once, new PDF layout for invoices, quotes and packing slips with pay/answer QR codes and paid/answered stamps, Letter or A4 by country, guest invoice Pay Now with other open invoices, guest quote Accept/Decline then signed copy or PO upload. Line amounts rounded to the cent on save, expired quotes can no longer be accepted from the link, Batch Payment skips non-billable invoices, recurring list creation-date filter removed. Fixes discount reset to zero on invoice/quote edit, stock not moving on invoice item quantity change, invoice status not updating on payment edit, autopay left behind on recurring invoice delete. Consolidates line items, totals, statuses and PDFs into functions/billing.php, includes/billing_paper.php, agent/post/billing.php and functions/billing_pdf.php with a single billing_items_order ajax reorder; removes the three item edit modals, link_invoice_to_ticket, guest_quote_upload_file_modal.php and js/product_autocomplete.js
|
2026-10-16 12:37:50 -04:00 |
|
johnnyq
|
08ab655b2d
|
Replace Guest footer with global footer as gust footer no longer exists
|
2026-10-08 16:56:20 -04:00 |
|
johnnyq
|
bcdfab996c
|
Fix approval Syntax
|
2026-08-31 17:52:44 -04:00 |
|
Wrongecho
|
9bc0bf0b7b
|
Stripe ID creation/linking for guest flows (wip)
|
2026-08-30 12:42:12 +01: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
|
75028ba09a
|
Fix some Ticket History gaps
|
2026-08-01 14:33:37 -04:00 |
|
johnnyq
|
c64c76c577
|
Rotate session ID on login and fix client portal Entra SSO
|
2026-07-27 23:49:09 -04:00 |
|
johnnyq
|
22e93589cb
|
Fix share link view accounting and quote response handling
|
2026-07-27 21:11:45 -04:00 |
|
johnnyq
|
70d165e8bc
|
Claim shared item views atomically and log guest audit IPs
|
2026-07-27 20:58:37 -04:00 |
|
johnnyq
|
565aff35f6
|
Set SameSite=Lax on the session cookie
Applied at all seven session_start sites. keepalive.php and guest_post.php
had no cookie flags at all and now set httponly and secure too.
|
2026-07-24 14:09:52 -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 |
|
johnnyq
|
6122efc870
|
Updated all Queries related to invoice items to reflect their new tables quote, invoice, recurring invoice items
|
2026-03-07 19:35:44 -05: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
|
77e4d2b566
|
Add task approval system
|
2026-01-09 17:14:44 +00:00 |
|
johnnyq
|
00f5198bed
|
Update appNotidfy links to use Absolute paths, updated gitignore
|
2025-09-25 13:31:16 -04:00 |
|
johnnyq
|
d2d1aed393
|
Fix long Invoice/Quote notes overflowing into the invoice/quote footer by removing a rowspan class, adjusted the page margins from 15 to 10 and adjusted the invoice/quote notes to use font size 9 instead of 10
|
2025-09-05 18:48:35 -04:00 |
|
johnnyq
|
530a76a9a2
|
Fix undefined vars in export invoice / quote pdf fix regression company logo path in export invoice / quote
|
2025-08-27 11:53:58 -04:00 |
|
johnnyq
|
9caa42975d
|
rename get_settings.php to load_global_settings.php and update all requires
|
2025-08-06 17:48:23 -04:00 |
|
johnnyq
|
6b39c1a280
|
Finished moving to the redirect, flash_alert and get_field_by_id and maing sure validate_csrf is on top and some other cleanups for guest and client posts
|
2025-08-04 18:07:26 -04:00 |
|
johnnyq
|
d2dac1915d
|
Update admin, user, guest and client post to use new redirect function
|
2025-08-01 15:25:52 -04:00 |
|
johnnyq
|
4c031c8f83
|
Increase the width for totals on invoices and Quotes PDF Exports
|
2025-07-21 21:31:39 -04:00 |
|
johnnyq
|
3626777bd1
|
Fix Item name and Description Alignment in PDF Exports
|
2025-06-26 19:12:25 -04:00 |
|
johnnyq
|
12d8c8e959
|
Fix Overlapping logo with company information in PDF Invoice and Quote
|
2025-06-23 19:43:41 -04:00 |
|
johnnyq
|
2741f78bd8
|
Fully Migrated Quote and Invoice to use TCPDF and elimiated PDFMake
|
2025-06-17 14:22:57 -04:00 |
|
johnnyq
|
7150b1545a
|
Moved files check_login.php, get_settings.php, settings_localization_array.php, inc_set_timezone.php into the includes folder, we also moved /client/check_login.php into client/includes/
|
2025-03-13 17:55:31 -04:00 |
|
wrongecho
|
2fe7bf6870
|
Taking a different approach. Utilize the existing file upload functionality and just link the file to the quote.
|
2025-02-05 22:48:15 +00:00 |
|
wrongecho
|
04226101af
|
Add ability for client to upload attachments to approved invoices
|
2025-02-03 22:19:32 +00:00 |
|
johnnyq
|
2c51289d75
|
Remove mysqli connection vars when passing mail data to addToMailQueue Function
|
2025-01-22 20:56:24 -05:00 |
|
johnnyq
|
d29aa55411
|
Merge branch 'develop' of github.com:itflow-org/itflow into develop
|
2025-01-11 15:48:31 -05:00 |
|
johnnyq
|
7a23cf245d
|
Fix index.php, Move Guest files to /Guest directory, fix adminlte path
|
2025-01-11 15:48:10 -05:00 |
|