johnnyq
06668d5004
Get started: Do it later and Skip all at the top while a step is still to do - Do it later goes to the dashboard and leaves Finish setting up there, Skip all asks first then skips every step (done ones too, so one that comes undone stays off the dashboard), goes to the dashboard and is logged with what was left to do; Go to ITFlow once every step is done or skipped; the footer's Don't show it on the dashboard removed (the dashboard card's x still dismisses); setup_cli.php --skip-get-started leaves Get started in Admin instead of opening it on first sign-in or showing it on the dashboard; CHANGELOG updated
2026-10-27 11:53:27 -04:00
johnnyq
211c24ac48
Setup wizard stage 3: make Finish list what to know before signing in and what to do after (HTTPS, the backup key with a copy button, the email link address, the cron line, mail, backups, starter content and the team) with telemetry off unless switched on and showing what it sends, restore a backup by drag and drop with upload progress and a done page and point oversized files at the command line, rework scripts/setup_cli.php to share the wizard's checks and install code, ask again on wrong answers, suggest region settings, end with the backup key and crontab line, honour --non-interactive and add --phone-country-code, --tax-id, --share-telemetry and --comments, and stop apostrophes in names and passwords with spaces breaking the command-line install
2026-10-20 11:25:50 -04:00
johnnyq
e7389a60be
Accounts and transactions: each account gets a kind (checking, savings, credit card, cash, payment processor, other) with its own icon, and a credit card's balance reads as owed on the accounts page, its ledger, the dashboard and every account picker; the accounts page has cards for what the accounts hold, what is owed on cards and money in and out this month against the same days of last month with transfers left out, and each row shows its description, defaults, kind, currency, balance with opening balance, this month's in and out and latest line, with Pay the Card or Transfer from it, Archive once empty, an Archived pill with Restore, and Delete only for an account never used; New Account and Edit share one form with an editable opening balance that is logged, the currency locked once money is on the account, and every field checked; Transactions is rebuilt as each account's ledger with an account switcher or every account, In and Out columns, the running balance for one account, pills for money in, money out and transfers, category, client, kind, method and amount filters, search, footer totals and an export taking the same filters with Account, Who or What, Client, In and Out columns; Transfers fold into the Transfers pill of Transactions with the menu link and old transfers.php links kept, New Transfer, Pay the Card and Edit share one checked form with a Swap button that keeps both sides in step and takes the from account's currency, a transfer into a card is a card payment, and a new transfer quick look has Edit and Delete; archive and delete rules are enforced in the handlers, editing a transfer no longer takes the expense and revenue ids from the form, transfer legs record who entered them, and one balance rule leaving out archived rows is used everywhere; new functions/accounts.php and agent/modals/transfer/transfer.php, account_form.php and transfer_form.php, transfer_model.php removed; database 3.0.7 sets each account's kind from its name; demo data adds a Business Visa paid off monthly from Operating Checking; CHANGELOG updated
2026-10-16 22:26:45 -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
d5ee0bff74
update_cli.php now does both db and forces app updates all in one go no more switches
2026-08-15 15:25:14 -04:00
johnnyq
77319f8fc1
update_cli.php now updates both the app and all database updates in one go and the switches --update only updates the app --db_update only updates the db
2026-08-15 15:12:45 -04:00
johnnyq
10f0c9de58
remove audit system time script
2026-08-06 19:26:43 -04:00
johnnyq
ac598f6379
Fix system-generated ticket replies booking fake time worked
2026-08-06 19:25:39 -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
c30c12674a
Sync DB Seed data between setup and setup cli
2026-08-03 22:41:31 -04:00
wrongecho
5ee1c9580f
Enhance .htaccess rules
2026-08-03 17:51:04 +01:00
johnnyq
6b5be0f881
Rework Update UI and fix banch
2026-08-02 18:07:24 -04:00
johnnyq
a27019511e
Remove unused overdue invoice setting move master cron switch out of notificaiton and into cron
2026-08-02 17:22:28 -04:00
johnnyq
ae468d6cee
Encrypted backups with types, scheduling and CLI restore
...
Backups are now AES-256 encrypted zips in three types (full, database
only, master key), catalogued in a new backups table, built by cron rather
than the web request, and kept under uploads/backups with retention in the
nightly job. The encryption key is one value per install held in config.php,
never in the database and never in the file name.
Restore is shared by the setup wizard and the new scripts/restore_cli.php,
which is the only path without an upload size limit. It verifies the key and
unpacks the archive before dropping anything, and dumps the current database
first so a failed import is rolled back.
A backup dumps, zips and encrypts for minutes without issuing a query, so on
a server with a short wait_timeout the connection is closed underneath it and
the UPDATE marking the backup complete is what fails - long after the archive
was written correctly. The connection is now held open for the job and
re-established before any write that follows long file work, including the
database phase of a restore. Retention recovers rows a dropped connection
left behind: still Running after six hours becomes Complete if the archive is
on disk, Failed if it is not.
cron.php's own failure path is hardened to match. It recorded job failures
through the same connection the failing job had just killed, so an uncaught
exception ended the dispatch and no trace of the original error survived.
Failures now also echo to stdout, so cron mails something useful when the
database is unreachable.
Security: the setup wizard's restore step is now closed on any install that
has users, whatever config.php says. $config_enable_setup defaulted to
enabled when the flag was absent, and the flag is only written at the end of
a successful install, so an install abandoned partway left an unauthenticated
endpoint that would drop every table, import an attacker-supplied archive,
and overwrite uploads/ including the .htaccess that stops PHP running there.
Affects 26.07 and earlier. Restoring over a live install is now CLI only.
2026-07-31 16:18:20 -04:00
johnnyq
fc5cdeea82
Add UI Elements for Asset Notes similar to contact notes
2026-07-29 14:13:55 -04:00
johnnyq
78e7e1c49e
Remove Normalize Scripts
2026-07-28 17:46:39 -04:00
johnnyq
c5ff3e2a3f
Normalize line endings to LF; add .gitattributes and .editorconfig
2026-07-28 17:45:52 -04:00
johnnyq
2b756f6ea4
Split DB Updates into seperate files, with the cutoff being 2.0.0
2026-07-22 18:43:11 -04:00
johnnyq
63ad3256ee
CLI Setup: Add repo_branch option defaults to master
2026-06-24 13:18:01 -04:00
johnnyq
78971d1ccb
Setup cli: add categories to mimic setup web ui
2026-04-04 18:09:29 -04: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
johnnyq
61dedb7e7b
Removed old Cron Files from /scripts/ removed old sendmail function along with PHPMailer requirments in functions.php, removed debug php ext check for php-mime-mail-parser and php-imap
2025-11-08 12:56:16 -05:00
johnnyq
6d15640ae4
[Feature] Recurring Ticket - Add Three Day and Biweekly to the Frequency options
2025-10-29 18:15:21 -04:00
johnnyq
35a7506c26
Copy crons from /scripts to /cron, added custom directories for api/v1/, /setup, /cron and /scripts
2025-10-07 13:55:54 -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
wrongecho
058f79d0a1
Fix file paths in cron notifs to new structure
2025-09-23 08:38:29 +01:00
johnnyq
04b29d43df
Update Agent ticket access path in emails to new /user/ path
2025-09-15 17:28:58 -04:00
johnnyq
aa516529e7
Another attempt at fix automatic recurring payments expense
2025-09-04 17:56:00 -04:00
johnnyq
2283ad0eb2
Fix Adding Expense on recurring stripe payments in cron
2025-09-04 17:44:34 -04:00
johnnyq
fd73f132bc
Fixed a few table names in Stripe Migration, Removed legacy stripe and AI settings
2025-08-28 11:44:29 -04:00
Marcus Hill
5c93753b7e
Rm extra unnecessary line in overdue invoice email
2025-08-16 15:17:48 +01:00
johnnyq
7172c92f02
Update Database updates patch in update_cli
2025-08-08 15:09:03 -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
31a89c0641
Update Recurring Payment Auto pay in cron
2025-07-09 17:05:56 -04:00
johnnyq
a6f83493f8
Fix Payment Method Additons in setup
2025-07-07 23:22:35 -04:00
johnnyq
c76da10747
Add Payment Method to UI and switch Add Payment modals to use the new table
2025-07-07 16:37:51 -04:00
johnnyq
8f704dade8
Recurring Payments now make the payment on the invoice Due Date instead of when the recurring invoice is generated
2025-06-18 15:32:22 -04:00
johnnyq
e7e7272002
Migrated Vendor Templates to its own table, lots of code modifications here
2025-06-17 22:44:54 -04:00
johnnyq
7c3332570a
Add Ticket Category UI for Recurring Tickets
2025-06-11 18:11:08 -04:00
Marcus Hill
c486682a0e
Cron mail queue - fix app_log_type not being one of available enums
2025-05-27 14:05:09 +01:00
wrongecho
e1f212d30d
Start recording ticket source (API, Email, Portal, Agent)
2025-04-28 14:51:38 +01:00
wrongecho
393c0b8c11
Recurring invoices
...
- Fix the delete link
- Cron should only flag recurring invoices that with a next-run in the past if the recurring invoice is active
2025-03-31 08:28:22 +01:00
johnnyq
2fb75e6d67
Uncommented out temp comment check cli runtime
2025-03-27 12:40:43 -04:00
Johnny
810af638a3
Merge pull request #1193 from itflow-org/cron-recurring-notify
...
Recurring items with next-run dates in the past
2025-03-27 12:39:27 -04:00
johnnyq
9223b8cfb1
Fixed some renamed vars
2025-03-27 12:29:55 -04:00
wrongecho
b7df21a663
Notify if a recurring ticket, invoice or expense has a next run date in the past - it needs to be manually adjusted for cron to pick it up again. Also, bugfix bulk recurring ticket delete.
2025-03-27 16:29:39 +00:00
johnnyq
5b89e3dbee
Add Phone Country code in even more places
2025-03-26 14:04:47 -04:00
johnnyq
6a26b611fa
Remove Phone Masking option in favor of Country Codes
2025-03-26 11:10:51 -04:00
wrongecho
e69d69760d
Cron - Only notify on certificates expiring in 45 days if they are valid for longer than 90 (i.e. not LE)
2025-03-20 13:53:53 +00:00