芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/public_html/portal.pulsehost.co.uk/modules/reports/transactions.php
'ID', 'userid' => 'User ID', 'clientname' => 'Client Name', 'currency' => 'Currency', 'gateway' => 'Payment Method', 'date' => 'Date', 'description' => 'Description', 'invoiceid' => 'Invoice ID', 'transid' => 'Transaction ID', 'amountin' => 'Amount In', 'fees' => 'Fees', 'amountout' => 'Amount Out', 'rate' => 'Exchange Rate', 'refundid' => 'Refund ID' ]; $dateRangeFields = [ 'date' => 'Date', ]; $removedDateRangeFields = array_diff($filterfields, $dateRangeFields); $reportdata["description"] = $reportdata["headertext"] = ''; $incfields = $whmcs->get_req_var('incfields'); $filterfield = $whmcs->get_req_var('filterfield'); $filtertype = $whmcs->get_req_var('filtertype'); $filterq = $whmcs->get_req_var('filterq'); $range = App::getFromRequest('range'); if (!is_array($incfields)) { $incfields = []; } if (!is_array($filterfield)) { $filterfield = []; } if (!is_array($filtertype)) { $filtertype = []; } if (!is_array($filterq)) { $filterq = []; } if (!$print) { $reportdata["description"] = "This report can be used to generate a custom export of" . " transactions by applying up to 5 filters. CSV Export is available via the" . " Tools menu to the right."; $reportdata["headertext"] = '
Fields to Include
'; $i=0; foreach ($filterfields as $k => $v) { $reportdata["headertext"] .= '
'.$v.'
'; $i++; if (($i%5)==0) { $reportdata["headertext"] .= '
'; } } $reportdata["headertext"] .= '
'; for ($i = 1; $i <= 5; $i ++) { $reportdata["headertext"] .= '
Filter ' . $i . '
None
'; foreach ($removedDateRangeFields as $k => $v) { $reportdata["headertext"] .= '
'; } $reportdata["headertext"] .= '
' . '
Exact Match
'; } $reportdata["headertext"] .= <<
Date Range
HTML; } if (count($incfields)) { $query = Capsule::table('tblaccounts'); foreach ($filterfield as $i => $val) { if ($val && array_key_exists($val, $filterfields)) { if ($filtertype[$i] == 'like') { $filterq[$i] = "%{$filterq[$i]}%"; } if ($val == 'clientname') { $query->whereRaw( "concat(tblclients.firstname, ' ', tblclients.lastname) " . "{$filtertype[$i]} '{$filterq[$i]}'" ); } elseif ($val == 'currency') { $currencyCode = strtoupper(trim($filterq[$i])); $currencyId = Currency::where('code', $currencyCode) ->value('id'); $query->where(function ($query) use ($currencyId) { return $query->where('tblclients.currency', (int) $currencyId) ->orWhere(function ($query) use ($currencyId) { return $query->where('tblaccounts.userid', 0) ->where('tblaccounts.currency', (int) $currencyId); }); }); } else { $query->where( "tblaccounts.{$filterfield[$i]}", $filtertype[$i], $filterq[$i] ); } } } foreach ($incfields as $fieldname) { if (array_key_exists($fieldname, $filterfields)) { $reportdata["tableheadings"][] = $filterfields[$fieldname]; if ($fieldname == "clientname") { $query->addSelect(Capsule::raw("concat(tblclients.firstname, ' ', tblclients.lastname)")); } else { $query->addSelect("tblaccounts.{$fieldname}"); } } } if (in_array('currency', $incfields) && !in_array('userid', $incfields)) { $query->addSelect('tblaccounts.userid'); } if ($range) { $dateRange = Carbon::parseDateRangeValue($range); $fromdate = $dateRange['from']->toDateTimeString(); $todate = $dateRange['to']->toDateTimeString(); $query->whereBetween('date', [$fromdate, $todate]); } $results = $query->leftJoin('tblclients', 'tblclients.id', '=', 'tblaccounts.userid') ->orderBy('date', 'asc') ->get() ->all(); foreach ($results as $result) { $result = (array) $result; if (isset($result['currency'])) { $currency = getCurrency($result['userid'], $result['currency']); $result['currency'] = $currency['code']; if (!in_array('userid', $incfields)) { unset($result['userid']); } } if (isset($result['gateway'])) { $result['gateway'] = $gateways->getDisplayName($result['gateway']); } $reportdata["tablevalues"][] = $result; } }