0) { $query .= "AND transaction_datetime >= '" . db_escape_string($_GET['start_date']) . " 00:00:00' "; } // Manage end date parameter if (array_key_exists('end_date',$_GET) && strlen($_GET['end_date']) > 0) { $query .= "AND transaction_datetime <= '" . db_escape_string($_GET['end_date']) . " 23:59:59' "; } // Manage user_num parameter if (array_key_exists('selected_usernum',$_GET) && strlen($_GET['selected_usernum']) > 0) { $query .= "AND ua.user_num = " . intval($_GET['selected_usernum']) . " "; $mode = 'account'; } // Manage selected transaction type parameter if (array_key_exists('selected_transaction_type',$_GET) && strlen($_GET['selected_transaction_type']) > 0) { $trxType = db_escape_string($_GET['selected_transaction_type']); $query .= "AND ua.transaction_type = '$trxType' "; if ($trxType == 'Payment') $reportMode = 'Detail'; } // Manage selected payment methods if (array_key_exists('selected_payment_method',$_GET) && strlen($_GET['selected_payment_method']) > 0) { if (array_key_exists('selected_transaction_type',$_GET) && $_GET['selected_transaction_type'] != 'Payment') $selected_payment_method == NULL; else { $query .= "AND ua.payment_method = '$_GET[selected_payment_method]' "; } } // View only selected schedule if (array_key_exists('selected_schedule_num',$_GET) && strlen($_GET['selected_schedule_num']) > 0) { $query .= "AND ua.schedule_num = '$_GET[selected_schedule_num]' "; } // Process the optional type parameter if (array_key_exists('type',$_GET) && strlen($_GET['type']) > 0 && $_GET['type'] == 'deleted') { $query .= "AND deleted = 'Y' "; } else { $query .= "AND (deleted != 'Y' OR deleted IS NULL) "; } // Set trx view if (array_key_exists('view_trx',$_REQUEST) && strlen($_REQUEST['view_trx'])) { $view_trx = $_REQUEST['view_trx']; if ($view_trx == 'Open') $query .= "AND transaction_status = 'Open' "; if ($view_trx == 'Closed') $query .= "AND transaction_status = 'Closed' "; } // Set query sort order $order_by = "ORDER BY transaction_datetime,record_num"; if (array_key_exists('sort',$_GET) && strlen($_GET['sort'])) { if (array_key_exists('sort', $_GET) && $_GET['sort'] == 'Name') $order_by = "ORDER BY last_name,first_name,transaction_datetime,record_num"; if (array_key_exists('sort', $_GET) && $_GET['sort'] == 'Payment Date') $order_by = "ORDER BY payment_time,record_num"; } // Complete the query $query .= $order_by; $transactions = db_query($query); } // Headings $column_headers = array(getLanguageText('TEXT-USER-ID'), getLanguageText('TEXT-NAME'), getLanguageText('TEXT-DATE'), getLanguageText('TEXT-TYPE'), getLanguageText('TEXT-NOTE'), getLanguageText('TEXT-TRX-ID'), getLanguageText('TEXT-CHARGES'), getLanguageText('TEXT-CREDITS'), getLanguageText('TEXT-METHOD'), getLanguageText('TEXT-BALANCE')); $data = array(); $balance = 0; $total_charges = 0; $total_credits = 0; while ($row = db_fetch_array($transactions)) { extract($row); $entry = array(); $entry[] = $row['userid']; $entry[] = $row['first_name'].' '.$row['last_name']; $entry[] = $row['trx_date']; $entry[] = translateText($row['transaction_type']); $entry[] = translateText($row['note']); $entry[] = $row['payment_reference']; // Determine if this is a charge or credit and set the values $charge = ''; $credit = ''; // Lookup TRX Type code $trx_type = $transaction_type; $r = db_query("SELECT * FROM user_account_trx_codes WHERE school_num = $school_num AND transaction_type_code = '$transaction_type'"); if (db_num_rows($r)) { $row = db_fetch_assoc($r); $trx_type = $row['trx_category']; } switch ($trx_type) { case 'Order': case 'Donation': case 'NSF': case 'Refund': case 'Late Charge': case 'Tax Charge': case 'Paper Order Charge': case 'Remittance Form Fee': case 'Additional Order Fee': case 'Other Charge': case 'Charge Adjustment': case 'PayPal Transaction Fee': case 'Credit Card Transaction Fee': case 'Reversed Payment': case 'Charge': case 'Generated Charge': $charge = '$' . $transaction_amount; $balance += $transaction_amount; $total_charges += $transaction_amount; break; case 'TRX Note': break; case 'Payment': case 'Credit': case 'Credit Adjustment': case 'Multiple Order Discount': default: $credit = "- $currencySymbol" . number_format(abs($transaction_amount),2); $balance += $transaction_amount; $total_credits += $transaction_amount; break; } // Format the current balance $balance = round($balance * 100) / 100; if ($balance < 0.00) $balance_amt = "- $currencySymbol" . number_format(abs($balance),2); else $balance_amt = $currencySymbol . number_format($balance,2); $entry[] = $charge; $entry[] = $credit; $payment_method = ''; if (array_key_exists('payment_method', $row)) $payment_method = translateText($row['payment_method']); $entry[] = $payment_method; $entry[] = $balance_amt; $data[] = $entry; if ($reportMode == 'Detail') { $entry[0] = ''; $entry[1] = ''; $entry[2] = ''; $payments = explode('|',$order_payments); for ($i = 0; $i < count($payments); $i++) { $p = str_replace('{','',str_replace('}','',$payments[$i])); list($onum,$oamt) = explode(':',$p); if ($onum) { $entry[3] = getLanguageText('TEXT-ORDER').": #".$onum; $results = db_query("SELECT * FROM hotlunch_order_header WHERE school_num = $school_num AND record_num = $onum"); $row = db_fetch_assoc($results); $oactual = $row['order_total']; $total_charges += $oactual; $schedule_name = ""; $schedule_num = $row['schedule_num']; if (isset($schedule_num) && $schedule_num > 0) { if (array_key_exists($schedule_num,$schoolSchedules)) { $schedule = $schoolSchedules[$schedule_num]; $sname = $schedule['schedule_name']; $schedule_name = str_replace("'","'",$sname); } } $entry[4] = $schedule_name; $entry[5] = ''; $entry[6] = "$currencySymbol$oactual"; $entry[7] = ''; $entry[8] = ''; $entry[9] = ''; } $data[] = $entry; } } // Display deleted information if required if (isset($row['deleted']) && $row['deleted'] == 'Y') { $deleted_datetime = $row['deleted_datetime']; $deleted_by_user_num = $row['deleted_by_user_num']; $delete_reason = $row['delete_reason']; $delete_userid = "superuser"; if ($deleted_by_user_num != 1) $delete_userid = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $deleted_by_user_num"); $delete_info = "Deleted $deleted_datetime by $delete_userid - $delete_reason"; $data[] = array('','','',$delete_info); } } if ($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff' || $mode == "account") { $data[] = array('','','','',getLanguageText('TEXT-ACCOUNT-BALANCE')." :: ",'','','',$balance_amt); } else { // Format report totals $total_charges = round($total_charges * 100) / 100; if ($total_charges < 0.00) $total_charges = "- $currencySymbol" . number_format(abs($total_charges),2); else $total_charges = $currencySymbol . number_format($total_charges,2); $total_credits = round($total_credits * 100) / 100; if ($total_credits < 0.00) $total_credits = "- $currencySymbol" . number_format(abs($total_credits),2); else $total_credits = $currencySymbol . number_format($total_credits,2); // Display totals for the report $data[] = array('','','','','',getLanguageText('TEXT-TRX-TOTALS-FOR-PERIOD')." :: ",$total_charges,$total_credits); } // Output the XLS data $fname = genFileName("account-transactions.csv"); xlsData($data,$column_headers,$fname); return; ?>