mirror of https://github.com/itflow-org/itflow
Feature - Recurring Expenses - Cron Completed, project finished
This commit is contained in:
parent
3ee38c3fdd
commit
7d06be0946
43
cron.php
43
cron.php
|
|
@ -652,6 +652,49 @@ while ($row = mysqli_fetch_array($sql_recurring)) {
|
|||
// Logging
|
||||
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Cron', log_action = 'Task', log_description = 'Cron created invoices from recurring invoices and sent emails out'");
|
||||
|
||||
// Recurring Expenses
|
||||
// Loop through all recurring expenses that match today's date and is active
|
||||
$sql_recurring_expenses = mysqli_query($mysqli, "SELECT * FROM recurring_expenses WHERE recurring_expense_next_date = CURDATE() AND recurring_expense_status = 1");
|
||||
|
||||
while ($row = mysqli_fetch_array($sql_recurring_expenses)) {
|
||||
$recurring_expense_id = intval($row['recurring_expense_id']);
|
||||
$recurring_expense_frequency = intval($row['recurring_expense_frequency']);
|
||||
$recurring_expense_month = intval($row['recurring_expense_month']);
|
||||
$recurring_expense_day = intval($row['recurring_expense_day']);
|
||||
$recurring_expense_description = sanitizeInput($row['recurring_expense_description']);
|
||||
$recurring_expense_amount = floatval($row['recurring_expense_amount']);
|
||||
$recurring_expense_payment_method = sanitizeInput($row['recurring_expense_payment_method']);
|
||||
$recurring_expense_reference = sanitizeInput($row['recurring_expense_reference']);
|
||||
$recurring_expense_currency_code = sanitizeInput($row['recurring_expense_currency_code']);
|
||||
$recurring_expense_vendor_id = intval($row['recurring_expense_vendor_id']);
|
||||
$recurring_expense_category_id = intval($row['recurring_expense_category_id']);
|
||||
$recurring_expense_account_id = intval($row['recurring_expense_account_id']);
|
||||
$recurring_expense_client_id = intval($row['recurring_expense_client_id']);
|
||||
|
||||
// Calculate next billing date based on frequency
|
||||
if ($recurring_expense_frequency == 1) { // Monthly
|
||||
$next_date_query = "DATE_ADD(CURDATE(), INTERVAL 1 MONTH)";
|
||||
} elseif ($recurring_expense_frequency == 2) { // Yearly
|
||||
$next_date_query = "DATE(CONCAT(YEAR(CURDATE()) + 1, '-', $recurring_expense_month, '-', $recurring_expense_day))";
|
||||
} else {
|
||||
// Handle unexpected frequency values. For now, just use current date.
|
||||
$next_date_query = "CURDATE()";
|
||||
}
|
||||
|
||||
mysqli_query($mysqli,"INSERT INTO expenses SET expense_date = CURDATE(), expense_amount = $recurring_expense_amount, expense_currency_code = '$recurring_expense_currency_code', expense_account_id = $recurring_expense_account_id, expense_vendor_id = $recurring_expense_vendor_id, expense_client_id = $recurring_expense_client_id, expense_category_id = $recurring_expense_category_id, expense_description = '$recurring_expense_description', expense_reference = '$recurring_expense_reference'");
|
||||
|
||||
$expense_id = mysqli_insert_id($mysqli);
|
||||
|
||||
mysqli_query($mysqli, "INSERT INTO notifications SET notification_type = 'Expense Created', notification = 'Expense $recurring_expense_description created from recurring expenses', notification_client_id = $recurring_expense_client_id, notification_entity_id = $expense_id");
|
||||
|
||||
// Update recurring dates using calculated next billing date
|
||||
|
||||
mysqli_query($mysqli, "UPDATE recurring_expenses SET recurring_expense_last_sent = CURDATE(), recurring_expense_next_date = $next_date_query WHERE recurring_expense_id = $recurring_expense_id");
|
||||
|
||||
|
||||
} //End Recurring Invoices Loop
|
||||
// Logging
|
||||
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Cron', log_action = 'Task', log_description = 'Cron created expenses from recurring expenses'");
|
||||
|
||||
// TELEMETRY
|
||||
|
||||
|
|
|
|||
|
|
@ -1215,11 +1215,19 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
|
|||
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.6.8'");
|
||||
}
|
||||
|
||||
//if (CURRENT_DATABASE_VERSION == '0.6.8') {
|
||||
if (CURRENT_DATABASE_VERSION == '0.6.8') {
|
||||
//Insert queries here required to update to DB version 0.6.9
|
||||
mysqli_query($mysqli, "ALTER TABLE `recurring_expenses` CHANGE `recurring_expense_payment_reference` `recurring_expense_reference` VARCHAR(255) DEFAULT NULL");
|
||||
|
||||
// Then, update the database to the next sequential version
|
||||
//mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.6.9'");
|
||||
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.6.9'");
|
||||
}
|
||||
|
||||
//if (CURRENT_DATABASE_VERSION == '0.6.9') {
|
||||
//Insert queries here required to update to DB version 0.7.0
|
||||
|
||||
// Then, update the database to the next sequential version
|
||||
//mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '0.7.0'");
|
||||
//}
|
||||
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@
|
|||
* It is used in conjunction with database_updates.php
|
||||
*/
|
||||
|
||||
DEFINE("LATEST_DATABASE_VERSION", "0.6.8");
|
||||
DEFINE("LATEST_DATABASE_VERSION", "0.6.9");
|
||||
|
|
|
|||
4
db.sql
4
db.sql
|
|
@ -952,7 +952,7 @@ CREATE TABLE `recurring_expenses` (
|
|||
`recurring_expense_description` text DEFAULT NULL,
|
||||
`recurring_expense_amount` decimal(15,2) NOT NULL,
|
||||
`recurring_expense_payment_method` varchar(200) DEFAULT NULL,
|
||||
`recurring_expense_payment_reference` varchar(200) DEFAULT NULL,
|
||||
`recurring_expense_reference` varchar(255) DEFAULT NULL,
|
||||
`recurring_expense_currency_code` varchar(200) NOT NULL,
|
||||
`recurring_expense_created_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`recurring_expense_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
|
||||
|
|
@ -1669,4 +1669,4 @@ CREATE TABLE `vendors` (
|
|||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2023-08-16 17:56:01
|
||||
-- Dump completed on 2023-08-17 16:03:19
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ if (isset($_POST['create_recurring_expense'])) {
|
|||
|
||||
$start_date = date('Y') . "-$month-$day";
|
||||
|
||||
mysqli_query($mysqli,"INSERT INTO recurring_expenses SET recurring_expense_frequency = $frequency, recurring_expense_day = $day, recurring_expense_month = $month, recurring_expense_next_date = '$start_date', recurring_expense_description = '$description', recurring_expense_payment_reference = '$reference', recurring_expense_amount = $amount, recurring_expense_currency_code = '$session_company_currency', recurring_expense_vendor_id = $vendor, recurring_expense_client_id = $client, recurring_expense_category_id = $category, recurring_expense_account_id = $account");
|
||||
mysqli_query($mysqli,"INSERT INTO recurring_expenses SET recurring_expense_frequency = $frequency, recurring_expense_day = $day, recurring_expense_month = $month, recurring_expense_next_date = '$start_date', recurring_expense_description = '$description', recurring_expense_reference = '$reference', recurring_expense_amount = $amount, recurring_expense_currency_code = '$session_company_currency', recurring_expense_vendor_id = $vendor, recurring_expense_client_id = $client, recurring_expense_category_id = $category, recurring_expense_account_id = $account");
|
||||
|
||||
$recurring_expense_id = mysqli_insert_id($mysqli);
|
||||
|
||||
|
|
@ -205,7 +205,7 @@ if (isset($_POST['edit_recurring_expense'])) {
|
|||
|
||||
$start_date = date('Y') . "-$month-$day";
|
||||
|
||||
mysqli_query($mysqli,"UPDATE recurring_expenses SET recurring_expense_frequency = $frequency, recurring_expense_day = $day, recurring_expense_month = $month, recurring_expense_next_date = '$start_date', recurring_expense_description = '$description', recurring_expense_payment_reference = '$reference', recurring_expense_amount = $amount, recurring_expense_currency_code = '$session_company_currency', recurring_expense_vendor_id = $vendor, recurring_expense_client_id = $client, recurring_expense_category_id = $category, recurring_expense_account_id = $account WHERE recurring_expense_id = $recurring_expense_id");
|
||||
mysqli_query($mysqli,"UPDATE recurring_expenses SET recurring_expense_frequency = $frequency, recurring_expense_day = $day, recurring_expense_month = $month, recurring_expense_next_date = '$start_date', recurring_expense_description = '$description', recurring_expense_reference = '$reference', recurring_expense_amount = $amount, recurring_expense_currency_code = '$session_company_currency', recurring_expense_vendor_id = $vendor, recurring_expense_client_id = $client, recurring_expense_category_id = $category, recurring_expense_account_id = $account WHERE recurring_expense_id = $recurring_expense_id");
|
||||
|
||||
$recurring_expense_id = mysqli_insert_id($mysqli);
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ $sql = mysqli_query(
|
|||
LEFT JOIN vendors ON recurring_expense_vendor_id = vendor_id
|
||||
LEFT JOIN accounts ON recurring_expense_account_id = account_id
|
||||
LEFT JOIN clients ON recurring_expense_client_id = client_id
|
||||
WHERE DATE(recurring_expense_next_date) BETWEEN '$dtf' AND '$dtt'
|
||||
WHERE DATE(recurring_expense_created_at) BETWEEN '$dtf' AND '$dtt'
|
||||
AND (vendor_name LIKE '%$q%' OR client_name LIKE '%$q%' OR category_name LIKE '%$q%' OR account_name LIKE '%$q%' OR recurring_expense_description LIKE '%$q%' OR recurring_expense_amount LIKE '%$q%')
|
||||
ORDER BY $sort $order LIMIT $record_from, $record_to"
|
||||
);
|
||||
|
|
@ -112,7 +112,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
|||
$recurring_expense_day = intval($row['recurring_expense_day']);
|
||||
$recurring_expense_month = intval($row['recurring_expense_month']);
|
||||
$recurring_expense_last_sent = nullable_htmlentities($row['recurring_expense_last_sent']);
|
||||
if(empty($client_name)) {
|
||||
if(empty($recurring_expense_last_sent)) {
|
||||
$recurring_expense_last_sent_display = "-";
|
||||
} else {
|
||||
$recurring_expense_last_sent_display = $recurring_expense_last_sent;
|
||||
|
|
|
|||
Loading…
Reference in New Issue