mirror of
https://github.com/fspc/Yellow-Bike-Database.git
synced 2025-02-22 17:03:22 -05:00
1) Does not automatically download them the browser yet, but can be found in the designated directory. Works great with GnuCash! Victory!
356 lines
14 KiB
PHP
356 lines
14 KiB
PHP
<?php
|
|
|
|
require_once('../Connections/database_functions.php');
|
|
require_once('../Connections/YBDB.php');
|
|
mysql_select_db($database_YBDB, $YBDB);
|
|
|
|
$change_fund = CHANGE_FUND;
|
|
$csv_directory = CSV_DIRECTORY;
|
|
|
|
// Is there a current shop?
|
|
if(isset($_POST['shop_exist'])) {
|
|
if(current_shop_by_ip()>=1) {
|
|
echo "current_shop";
|
|
} else {
|
|
echo "no_shop";
|
|
}
|
|
}
|
|
|
|
// update whether paid or not
|
|
if(isset($_POST['paid'])) {
|
|
if ($_POST['paid'] == 1) {
|
|
|
|
$query = "UPDATE transaction_log SET paid=1 WHERE transaction_id=" . $_POST['transaction_id'] . ";";
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
|
|
} elseif($_POST['paid'] == 0) {
|
|
|
|
$query = "UPDATE transaction_log SET paid=0 WHERE transaction_id=" . $_POST['transaction_id'] . ";";
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
|
|
}
|
|
}
|
|
|
|
// update payment type
|
|
if(isset($_POST['payment_type'])) {
|
|
|
|
$query = 'UPDATE transaction_log SET payment_type="' .
|
|
$_POST['payment_type'] . '" WHERE transaction_id=' .
|
|
$_POST['transaction_id'] . ";";
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
|
|
}
|
|
|
|
// If payment_type check is selected - return check number if exists
|
|
if (isset($_POST['check_number'])) {
|
|
|
|
$query = 'SELECT check_number FROM transaction_log WHERE transaction_id="' . $_POST['transaction_id'] . '";';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
echo json_encode($result);
|
|
|
|
}
|
|
|
|
// Editable Change Fund
|
|
if(isset($_POST['editable_change'])) {
|
|
|
|
$transaction_id = split('_', $_POST['id'], 1);
|
|
$query = 'UPDATE transaction_log set change_fund="' . $_POST['editable_change'] . '" WHERE transaction_id="' . $transaction_id[0] . '";';
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$send_back = array(
|
|
"changed_change" => $_POST['editable_change'],
|
|
"change" => $change_fund,
|
|
);
|
|
echo json_encode($send_back);
|
|
}
|
|
|
|
// Patron who made a transaction not logged in.
|
|
if (isset($_POST['not_logged_in'])) {
|
|
$query = "SELECT CONCAT(contacts.last_name, ', ', contacts.first_name, ' ',contacts.middle_initial) AS full_name,
|
|
transaction_log.sold_to
|
|
FROM transaction_log, contacts
|
|
WHERE transaction_id=" . $_POST['transaction_id'] .
|
|
" AND contacts.contact_id = transaction_log.sold_to;";
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
echo json_encode($result);
|
|
}
|
|
|
|
// Anonymous transaction - save and communicate back settings
|
|
if(isset($_POST['anonymous'])) {
|
|
|
|
if ($_POST['anonymous'] == 1) {
|
|
$query = 'UPDATE transaction_log SET anonymous=1, sold_to=NULL WHERE transaction_id="' .
|
|
$_POST['transaction_id'] . '";';
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
} else {
|
|
$query = 'UPDATE transaction_log SET anonymous=0 WHERE transaction_id="' .
|
|
$_POST['transaction_id'] . '";';
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
}
|
|
}
|
|
|
|
// Transaction history - fetch history
|
|
if(isset($_POST['history_select'])) {
|
|
$query = 'SELECT history FROM transaction_log WHERE transaction_id="' . $_POST['transaction_id'] . '";';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
if ($result['history'] == "") {
|
|
echo "First Transaction";
|
|
} else {
|
|
// Description may have newlines
|
|
$history_result = str_replace("\n", "\\n",$result['history']);
|
|
echo $history_result;
|
|
}
|
|
}
|
|
|
|
// Transaction history - update transaction history
|
|
// Note: This could easily be turned into its own table with a foreign key
|
|
// referencing transaction_log.transaction_id, but most transactions
|
|
// will probably only occur 1 time, and there probably isn't that much
|
|
// need to do many things with this data other than rollback a transaction, or
|
|
// research what happened on a particular shop day.
|
|
if(isset($_POST['history_update'])) {
|
|
$json = json_encode($_POST['history']);
|
|
$query = "UPDATE transaction_log SET history='$json'" .
|
|
' WHERE transaction_id="' . $_POST['transaction_id'] . '";';
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
|
|
// show history
|
|
if(isset($_POST['more_than_one'])) {
|
|
list_history($_POST['history']);
|
|
}
|
|
}
|
|
|
|
// Check for most recent transaction_id if transaction_id has changed
|
|
if(isset($_POST['most_recent_transaction_id'])) {
|
|
$query = 'SELECT MAX(transaction_id) as transaction_id FROM transaction_log;';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
echo $result['transaction_id'];
|
|
}
|
|
|
|
// check if start storage date has been changed since original shop date
|
|
if(isset($_POST['date_startstorage'])) {
|
|
$query = 'SELECT shops.date FROM transaction_log, shops WHERE transaction_id=' . $_POST['transaction_id'] .
|
|
' AND transaction_log.shop_id = shops.shop_id;';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
if ($result['date'] != $_POST['date_startstorage']) {
|
|
echo $result['date'];
|
|
}
|
|
}
|
|
|
|
// reset payment_type && amount for storage transaction
|
|
if(isset($_POST['storage_payment_reset'])) {
|
|
|
|
$query = 'UPDATE transaction_log SET payment_type=NULL, amount=NULL WHERE transaction_id="' .
|
|
$_POST['transaction_id'] . '";';
|
|
$result = mysql_query($query, $YBDB) or die(mysql_error());
|
|
}
|
|
|
|
// populate transaction slider for accounting programs
|
|
|
|
// Originally, deposits of $0 (amount > 0) would not be considered real deposits, however,
|
|
// there may be shops where only non-monetary transactions occurred (amount >= 0)
|
|
// which would be useful to record in an accounting program.
|
|
// One caveat, if a monetary transaction is recorded, but the depositor only
|
|
// enters $0, the deposit will show "Difference: n/a", however this should be a cue
|
|
// since it should be obvious that a real world deposit of $0
|
|
// would not be made at a bank.
|
|
if (isset($_POST['transaction_slider'])) {
|
|
$query = 'SELECT transaction_id, IF(amount >= 0, "yes", "no") AS "deposited", date
|
|
FROM transaction_log WHERE transaction_type= "Deposit";';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
while ( $result = mysql_fetch_assoc($sql) ) {
|
|
$slider_range[] = $result;
|
|
}
|
|
|
|
// this is the first real deposit
|
|
if ( ($slider_range && !$slider_range[1]["transaction_id"]) || ($slider_range && $slider_range[1]["deposited"] == "no") ) {
|
|
$fake_trans_id = 0;
|
|
$real_trans = $slider_range[0];
|
|
$year = date("Y");
|
|
$slider_range[0] = array("transaction_id" => "$fake_trans_id","deposited" => "yes","date" => "$year-01-01 22:22:22");
|
|
$slider_range[1] = $real_trans;
|
|
echo json_encode($slider_range);
|
|
|
|
// no real deposits exist
|
|
} elseif (!$slider_range) {
|
|
// send fake data
|
|
$year = date("Y");
|
|
$slider_range = array
|
|
( array("transaction_id" => "0","deposited" => "yes","date" => "$year-01-01 22:22:22"),
|
|
array("transaction_id" => "1","deposited" => "yes","date" => "$year-01-02 22:22:22"),
|
|
);
|
|
echo json_encode($slider_range);
|
|
|
|
// more than 1 deposit exists
|
|
} else {
|
|
echo json_encode($slider_range);
|
|
}
|
|
|
|
}
|
|
|
|
// Create csv file(s) for GnuCash
|
|
if(isset($_POST['gnucash_account_type'])) {
|
|
|
|
|
|
/* require_once('../php-console/src/PhpConsole/__autoload.php');
|
|
$handler = PhpConsole\Handler::getInstance();
|
|
$handler->start();*/
|
|
|
|
$transaction_range = $_POST['transaction_range'];
|
|
$account_type = $_POST['gnucash_account_type'];
|
|
$accounts_gnucash = array_flip($gnucash_accounts);
|
|
|
|
|
|
// Date (yyyy-mm-dd), Num, Description, Deposit, Account
|
|
|
|
// checking (check or cash) || credit
|
|
// transaction has been 1) paid and is 2) cash & check [checking] or credit and 3) deposited
|
|
if( $account_type === 'checking' ) {
|
|
$query = "SELECT SUBSTRING_INDEX(date, ' ', 1) AS 'date', transaction_id, transaction_type, description, amount " .
|
|
"FROM transaction_log WHERE paid=1 AND date!='NULL' " .
|
|
"AND (payment_type='cash' OR payment_type='check') " .
|
|
"AND (transaction_id>" . $transaction_range[0] . " AND transaction_id<" . $transaction_range[1] . ");";
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$gnucash_csv_file = "";
|
|
while ( $result = mysql_fetch_assoc($sql) ) {
|
|
$description = preg_replace('/\n/', ' \r ', $result['description']);
|
|
$description = preg_replace('/\r/', '\r', $description);
|
|
$description = preg_replace('/,/', ';', $description);
|
|
$gnucash_csv_file .= $result['date'] . ', ' . $result['transaction_id'] .
|
|
', (Income:' . $result['transaction_type'] . ') ' . $description . ', ' . $result['amount'] . ', ' .
|
|
$accounts_gnucash['checking'] . "\n";
|
|
}
|
|
|
|
$file_name = preg_replace('/ /', '_', $accounts_gnucash['checking']);
|
|
$file_name = preg_replace('/:/', '-', $file_name);
|
|
$file_name = $file_name . '-' . $transaction_range[0] . '-' . $transaction_range[1] . '.csv';
|
|
$file = '../' . $csv_directory . '/' . $file_name;
|
|
$csv_file = fopen($file, "w") or die("Unable to open file for writing.");
|
|
fwrite($csv_file, $gnucash_csv_file);
|
|
fclose($csv_file);
|
|
|
|
// download file to browser
|
|
/*
|
|
header('Content-Description: File Transfer');
|
|
header('Content-Type: application/octet-stream');
|
|
header('Content-Disposition: attachment; filename='.basename($file));
|
|
header('Expires: 0');
|
|
header('Cache-Control: must-revalidate');
|
|
header('Pragma: public');
|
|
header('Content-Length: ' . filesize($file));
|
|
readfile($file);
|
|
*/
|
|
}
|
|
|
|
if ( $account_type === 'credit' ) {
|
|
$query = "SELECT SUBSTRING_INDEX(date, ' ', 1) AS 'date', transaction_id, transaction_type, description, amount " .
|
|
"FROM transaction_log WHERE paid=1 AND date!='NULL' " .
|
|
"AND payment_type='credit' " .
|
|
"AND (transaction_id>" . $transaction_range[0] . " AND transaction_id<" . $transaction_range[1] . ");";
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
$gnucash_csv_file = "";
|
|
while ( $result = mysql_fetch_assoc($sql) ) {
|
|
$description = preg_replace('/\n/', ' \r ', $result['description']);
|
|
$description = preg_replace('/\r/', '\r', $description);
|
|
$description = preg_replace('/,/', ';', $description);
|
|
$gnucash_csv_file .= $result['date'] . ', ' . $result['transaction_id'] .
|
|
', (Income:' . $result['transaction_type'] . ') ' . $description . ', ' . $result['amount'] . ', ' .
|
|
$accounts_gnucash['credit'] . "\n";
|
|
}
|
|
|
|
$file_name = preg_replace('/ /', '_', $accounts_gnucash['credit']);
|
|
$file_name = preg_replace('/:/', '-', $file_name);
|
|
$file_name = $file_name . '-' . $transaction_range[0] . '-' . $transaction_range[1] . '.csv';
|
|
$file = '../' . $csv_directory . '/' . $file_name;
|
|
$csv_file = fopen($file, "w") or die("Unable to open file for writing.");
|
|
fwrite($csv_file, $gnucash_csv_file);
|
|
fclose($csv_file);
|
|
|
|
}
|
|
|
|
} // Create csv file(s) for GnuCash
|
|
|
|
// Deposit Calculator
|
|
if (isset($_POST['deposit'])) {
|
|
|
|
$visible_count = count($_POST['deposit']);
|
|
$c = $visible_count - 1;
|
|
$deposit = $_POST['deposit'];
|
|
|
|
$query = 'SELECT COUNT(transaction_type) AS "count" FROM transaction_log WHERE transaction_type="Deposit";';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
|
|
|
|
if ( $visible_count == $result["count"] ) { // 1 or more deposits, and all deposits are visible
|
|
|
|
foreach ( $deposit as $key => $value ) {
|
|
|
|
if ( $c > $key ) {
|
|
$query = 'SELECT SUM(IF(payment_type="check", amount, 0)) AS "check",
|
|
SUM(IF(payment_type="credit", amount, 0)) AS "credit",
|
|
SUM(IF(payment_type="cash", amount, 0)) AS "cash"
|
|
FROM transaction_log WHERE paid=1 AND transaction_id <' . $deposit[$key] . ' AND transaction_id >'
|
|
. $deposit[$key + 1] . ';';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
$result_obj[$deposit[$key]] = $result;
|
|
} else {
|
|
$query = 'SELECT SUM(IF(payment_type="check", amount, 0)) AS "check",
|
|
SUM(IF(payment_type="credit", amount, 0)) AS "credit",
|
|
SUM(IF(payment_type="cash", amount, 0)) AS "cash"
|
|
FROM transaction_log WHERE paid=1 AND transaction_id <' . $deposit[$key] . ';';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
$result_obj[$deposit[$key]] = $result;
|
|
}
|
|
|
|
}
|
|
echo json_encode($result_obj);
|
|
|
|
} else { // more deposits than visible
|
|
|
|
$limit = $visible_count + 1;
|
|
$query = 'SELECT transaction_id FROM transaction_log
|
|
WHERE transaction_type="Deposit" AND transaction_id<=' . $deposit[0] .
|
|
' ORDER BY transaction_id DESC LIMIT ' . $limit . ';';
|
|
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
|
|
while ( $result = mysql_fetch_assoc($sql) ) {
|
|
$transaction_id[] = $result['transaction_id'];
|
|
}
|
|
|
|
foreach ( $transaction_id as $key => $value ) {
|
|
|
|
if ($key <= $c && $transaction_id[$key + 1]) {
|
|
$query = 'SELECT SUM(IF(payment_type="check", amount, 0)) AS "check",
|
|
SUM(IF(payment_type="credit", amount, 0)) AS "credit",
|
|
SUM(IF(payment_type="cash", amount, 0)) AS "cash"
|
|
FROM transaction_log WHERE paid=1 AND transaction_id <' . $transaction_id[$key] . ' AND transaction_id >'
|
|
. $transaction_id[$key + 1] . ';';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
$result_obj[$transaction_id[$key]] = $result;
|
|
} elseif ($key <= $c && !$transaction_id[$key + 1] ) {
|
|
$query = 'SELECT SUM(IF(payment_type="check", amount, 0)) AS "check",
|
|
SUM(IF(payment_type="credit", amount, 0)) AS "credit",
|
|
SUM(IF(payment_type="cash", amount, 0)) AS "cash"
|
|
FROM transaction_log WHERE paid=1 AND transaction_id <' . $transaction_id[$key] . ';';
|
|
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
|
$result = mysql_fetch_assoc($sql);
|
|
$result_obj[$transaction_id[$key]] = $result;
|
|
}
|
|
|
|
} // foreach
|
|
echo json_encode($result_obj);
|
|
} // end else for invisibles
|
|
|
|
} // End Deposit Calculator
|
|
|
|
?>
|