public function getInvoices($criteria = array()) { global $aInt; global $currency; $query = " FROM tblinvoices INNER JOIN tblclients ON tblclients.id=tblinvoices.userid"; $filters = $this->buildCriteria($criteria); $query .= count($filters) ? " WHERE " . implode(" AND ", $filters) : ""; $result = full_query("SELECT COUNT(*)" . $query); $data = mysql_fetch_array($result); $this->getPageObj()->setNumResults($data[0]); $gateways = new WHMCS_Gateways(); $orderby = $this->getPageObj()->getOrderBy(); if ($orderby == "clientname") { $orderby = "firstname " . $this->getPageObj()->getSortDirection() . ",lastname " . $this->getPageObj()->getSortDirection() . ",companyname"; } if ($orderby == "id") { $orderby = "tblinvoices.invoicenum " . $this->getPageObj()->getSortDirection() . ",tblinvoices.id"; } $invoices = array(); $query = "SELECT tblinvoices.*,tblclients.firstname,tblclients.lastname,tblclients.companyname,tblclients.groupid,tblclients.currency" . $query . " ORDER BY " . $orderby . " " . $this->getPageObj()->getSortDirection() . " LIMIT " . $this->getQueryLimit(); $result = full_query($query); while ($data = mysql_fetch_array($result)) { $id = $data['id']; $invoicenum = $data['invoicenum']; $userid = $data['userid']; $date = $data['date']; $duedate = $data['duedate']; $subtotal = $data['subtotal']; $credit = $data['credit']; $total = $data['total']; $gateway = $data['paymentmethod']; $status = $data['status']; $firstname = $data['firstname']; $lastname = $data['lastname']; $companyname = $data['companyname']; $groupid = $data['groupid']; $currency = $data['currency']; $clientname = $aInt->outputClientLink($userid, $firstname, $lastname, $companyname, $groupid); $paymentmethod = $gateways->getDisplayName($gateway); $currency = getCurrency("", $currency); $totalformatted = formatCurrency($credit + $total); $statusformatted = $this->formatStatus($status); $date = fromMySQLDate($date); $duedate = fromMySQLDate($duedate); if (!$invoicenum) { $invoicenum = $id; } $invoices[] = array("id" => $id, "invoicenum" => $invoicenum, "userid" => $userid, "clientname" => $clientname, "date" => $date, "duedate" => $duedate, "subtotal" => $subtotal, "credit" => $credit, "total" => $total, "totalformatted" => $totalformatted, "gateway" => $gateway, "paymentmethod" => $paymentmethod, "status" => $status, "statusformatted" => $statusformatted); } return $invoices; }
public static function makeSafeName($gateway) { $validgateways = WHMCS_Gateways::getactivegateways(); return in_array($gateway, $validgateways) ? $gateway : ""; }
$breadcrumbnav = $_LANG['ordercheckout']; $templatefile = "creditcard"; initialiseClientArea($pagetitle, $pageicon, $breadcrumbnav); $invoiceid = (int) $whmcs->get_req_var("invoiceid"); if (!$_SESSION['uid'] || !$invoiceid) { redir("", "clientarea.php"); } $result = select_query("tblinvoices", "", array("id" => $invoiceid, "userid" => $_SESSION['uid'])); $data = mysql_fetch_array($result); $invoiceid = $data['id']; $status = $data['status']; $total = $data['total']; if ($status != "Unpaid") { redir("", "clientarea.php"); } $gateways = new WHMCS_Gateways(); $params = getCCVariables($invoiceid); $fromorderform = false; if (isset($_SESSION['cartccdetail'])) { $cartccdetail = unserialize(base64_decode(decrypt($_SESSION['cartccdetail']))); $cctype = $cartccdetail[0]; $ccnumber = $cartccdetail[1]; $ccexpirymonth = $cartccdetail[2]; $ccexpiryyear = $cartccdetail[3]; $ccstartmonth = $cartccdetail[4]; $ccstartyear = $cartccdetail[5]; $ccissuenum = $cartccdetail[6]; $cccvv = $cartccdetail[7]; $nostore = $cartccdetail[8]; unset($_SESSION['cartccdetail']); $action = "submit";
} } redir("id=" . $invoiceid); } $smartyvalues['manualapplycredit'] = true; $smartyvalues['totalcredit'] = formatCurrency($creditbal) . generate_token("form"); if (!$creditamount) { $creditamount = $balance <= $creditbal ? $balance : $creditbal; } $smartyvalues['creditamount'] = $creditamount; } $outputvars = $invoice->getOutput(); $smartyvalues = array_merge($smartyvalues, $outputvars); $invoiceitems = $invoice->getLineItems(); $smartyvalues['invoiceitems'] = $invoiceitems; $transactions = $invoice->getTransactions(); $smartyvalues['transactions'] = $transactions; $paymentbutton = $invoice->getData("status") == "Unpaid" && 0 < $invoice->getData("balance") ? $invoice->getPaymentLink() : ""; $smartyvalues['paymentbutton'] = $paymentbutton; $smartyvalues['offlinepaid'] = $whmcs->get_req_var("offlinepaid"); if ($whmcs->get_config("AllowCustomerChangeInvoiceGateway")) { $smartyvalues['allowchangegateway'] = true; $gateways = new WHMCS_Gateways(); $availablegateways = $gateways->getAvailableGateways($invoiceid); $frm = new WHMCS_Form(); $gatewaydropdown = generate_token("form") . $frm->dropdown("gateway", $availablegateways, $invoice->getData("paymentmodule"), "submit()"); $smartyvalues['gatewaydropdown'] = $gatewaydropdown; } else { $smartyvalues['allowchangegateway'] = false; } outputClientArea("viewinvoice", true);
function refundInvoicePayment($transid, $amount, $sendtogateway, $addascredit = "", $sendemail = true, $refundtransid = "") { $result = select_query("tblaccounts", "", array("id" => $transid)); $data = mysql_fetch_array($result); $transid = $data['id']; if (!$transid) { return "amounterror"; } $userid = $data['userid']; $invoiceid = $data['invoiceid']; $gateway = $data['gateway']; $fullamount = $data['amountin']; $fees = $data['fees']; $gatewaytransid = $data['transid']; $rate = $data['rate']; $gateway = WHMCS_Gateways::makesafename($gateway); $result = select_query("tblaccounts", "SUM(amountout),SUM(fees)", array("refundid" => $transid)); $data = mysql_fetch_array($result); $alreadyrefunded = $data[0]; $alreadyrefundedfees = $data[1]; $fullamount -= $alreadyrefunded; $fees -= $alreadyrefundedfees * (0 - 1); if ($fees <= 0) { $fees = 0; } $result = select_query("tblaccounts", "SUM(amountin),SUM(amountout)", array("invoiceid" => $invoiceid)); $data = mysql_fetch_array($result); $invoicetotalpaid = $data[0]; $invoicetotalrefunded = $data[1]; if (!$amount) { $amount = $fullamount; } if (!$amount || $fullamount < $amount) { return "amounterror"; } $amount = format_as_currency($amount); if ($addascredit) { addTransaction($userid, 0, "Refund of Transaction ID " . $gatewaytransid . " to Credit Balance", 0, $fees * (0 - 1), $amount, "", "", $invoiceid, "", $transid, $rate); addTransaction($userid, 0, "Credit from Refund of Invoice ID " . $invoiceid, $amount, $fees, 0, "", "", "", "", "", ""); logActivity("Refunded Invoice Payment to Credit Balance - Invoice ID: " . $invoiceid, $userid); insert_query("tblcredit", array("clientid" => $userid, "date" => "now()", "description" => "Credit from Refund of Invoice ID " . $invoiceid, "amount" => $amount)); update_query("tblclients", array("credit" => "+=" . $amount), array("id" => (int) $userid)); if ($invoicetotalpaid - $invoicetotalrefunded - $amount <= 0) { update_query("tblinvoices", array("status" => "Refunded"), array("id" => $invoiceid)); run_hook("InvoiceRefunded", array("invoiceid" => $invoiceid)); } if ($sendemail) { sendMessage("Invoice Refund Confirmation", $invoiceid, array("invoice_refund_type" => "credit")); } return "creditsuccess"; } $result = select_query("tblpaymentgateways", "value", array("gateway" => $gateway, "setting" => "convertto")); $data = mysql_fetch_array($result); $convertto = $data['value']; if ($convertto) { $result = select_query("tblclients", "currency", array("id" => $userid)); $data = mysql_fetch_array($result); $fromcurrencyid = $data['currency']; $convertedamount = convertCurrency($amount, $fromcurrencyid, $convertto, $rate); } if ($gateway) { $params = getCCVariables($invoiceid); } if ($sendtogateway && function_exists($gateway . "_refund")) { $params['amount'] = $convertedamount ? $convertedamount : $amount; $params['transid'] = $gatewaytransid; $params['paymentmethod'] = $gateway; $gatewayresult = call_user_func($gateway . "_refund", $params); $refundtransid = $gatewayresult['transid']; $rawdata = $gatewayresult['rawdata']; if (isset($gatewayresult['fees'])) { $fees = $gatewayresult['fees']; } $gatewayresult = $gatewayresult['status']; $result = select_query("tblpaymentgateways", "value", array("gateway" => $gateway, "setting" => "name")); $data = mysql_fetch_array($result); $gatewayname = $data['value']; logTransaction($gatewayname . " Refund", $rawdata, ucfirst($gatewayresult)); } else { $gatewayresult = "manual"; run_hook("ManualRefund", array("transid" => $transid, "amount" => $amount)); } if ($gatewayresult == "success" || $gatewayresult == "manual") { addTransaction($userid, 0, "Refund of Transaction ID " . $gatewaytransid, 0, $fees * (0 - 1), $amount, $gateway, $refundtransid, $invoiceid, "", $transid, $rate); logActivity("Refunded Invoice Payment - Invoice ID: " . $invoiceid . " - Transaction ID: " . $transid, $userid); $result = select_query("tblinvoices", "total", array("id" => $invoiceid)); $data = mysql_fetch_array($result); $invoicetotal = $data[0]; if ($invoicetotalpaid - $invoicetotalrefunded - $amount <= 0) { update_query("tblinvoices", array("status" => "Refunded"), array("id" => $invoiceid)); run_hook("InvoiceRefunded", array("invoiceid" => $invoiceid)); } if ($sendemail) { sendMessage("Invoice Refund Confirmation", $invoiceid, array("invoice_refund_type" => "gateway")); } } return $gatewayresult; }
function getGatewayVariables($gateway, $invoiceid = "", $amount = "0.00") { global $whmcs; global $CONFIG; global $_LANG; global $clientsdetails; $res = loadGatewayModule($gateway); if (!$res) { exit("Gateway Module '" . $gateway . "' is Missing or Invalid"); } $gateway = WHMCS_Gateways::makesafename($gateway); if (!function_exists($gateway . "_link")) { eval("function " . $gateway . "_link({$params}) { return '<form method=\"post\" action=\"" . $params['systemurl'] . "/creditcard.php\" name=\"paymentfrm\"><input type=\"hidden\" name=\"invoiceid\" value=\"" . $params['invoiceid'] . "\"><input type=\"submit\" value=\"" . $params['langpaynow'] . "\"></form>'; }"); } $GATEWAY = array(); $GATEWAY['paymentmethod'] = $gateway; $result = select_query("tblpaymentgateways", "", array("gateway" => $gateway)); while ($data = mysql_fetch_array($result)) { $gVgwsetting = $data['setting']; $gVgwvalue = $data['value']; $GATEWAY["" . $gVgwsetting] = "" . $gVgwvalue; } $GATEWAY['companyname'] = $CONFIG['CompanyName']; if ($CONFIG['SystemSSLURL']) { $GATEWAY['systemurl'] = $CONFIG['SystemSSLURL']; } else { $GATEWAY['systemurl'] = $CONFIG['SystemURL']; } $GATEWAY['returnurl'] = $GATEWAY['systemurl']; $GATEWAY['langpaynow'] = $_LANG['invoicespaynow']; if ($invoiceid) { $clientsdetails['fullstate'] = $clientsdetails['state']; if (!function_exists("convertStateToCode")) { require ROOTDIR . "/includes/clientfunctions.php"; } $clientsdetails['state'] = convertStateToCode($clientsdetails['state'], $clientsdetails['country']); $result = select_query("tblclients", "tblinvoices.invoicenum,tblclients.currency,tblcurrencies.code", array("tblinvoices.id" => $invoiceid), "", "", "", "tblinvoices ON tblinvoices.userid=tblclients.id INNER JOIN tblcurrencies ON tblcurrencies.id=tblclients.currency"); $data = mysql_fetch_array($result); $invoicenum = $data['invoicenum']; $invoice_currency_id = $data['currency']; $invoice_currency_code = $data['code']; if (!trim($invoicenum)) { $invoicenum = $invoiceid; } $GATEWAY['description'] = $CONFIG['CompanyName'] . " - " . $_LANG['invoicenumber'] . $invoicenum; $GATEWAY['invoiceid'] = $invoiceid; $GATEWAY['clientdetails'] = $clientsdetails; $GATEWAY['returnurl'] = $GATEWAY['systemurl'] . "/viewinvoice.php?id=" . $invoiceid; if ($GATEWAY['convertto']) { $result = select_query("tblcurrencies", "code", array("id" => $GATEWAY['convertto'])); $data = mysql_fetch_array($result); $converto_currency_code = $data['code']; $converto_amount = convertCurrency($amount, $invoice_currency_id, $GATEWAY['convertto']); $GATEWAY['amount'] = format_as_currency($converto_amount); $GATEWAY['currency'] = $converto_currency_code; $GATEWAY['basecurrencyamount'] = format_as_currency($amount); $GATEWAY['basecurrency'] = $invoice_currency_code; } if (!$GATEWAY['currency']) { $GATEWAY['amount'] = format_as_currency($amount); $GATEWAY['currency'] = $invoice_currency_code; } } return $GATEWAY; }
public function getOrders($criteria = array()) { global $aInt; global $currency; $query = "FROM tblorders INNER JOIN tblclients ON tblclients.id=tblorders.userid"; if ($criteria['paymentstatus']) { $query .= " INNER JOIN tblinvoices ON tblinvoices.id=tblorders.invoiceid"; } $filters = $this->buildCriteria($criteria); if (count($filters)) { $query .= " WHERE " . implode(" AND ", $filters); } $result = full_query("SELECT COUNT(tblorders.id) " . $query); $data = mysql_fetch_array($result); $this->getPageObj()->setNumResults($data[0]); $query .= " ORDER BY tblorders." . $this->getPageObj()->getOrderBy() . " " . $this->getPageObj()->getSortDirection(); $gateways = new WHMCS_Gateways(); $invoices = new WHMCS_Invoices(); $orders = array(); $query = "SELECT tblorders.id,tblorders.ordernum,tblorders.userid,tblorders.date,tblorders.amount,tblorders.paymentmethod,tblorders.status,tblorders.invoiceid,tblorders.ipaddress,tblclients.firstname,tblclients.lastname,tblclients.companyname,tblclients.groupid,tblclients.currency,(SELECT status FROM tblinvoices WHERE id=tblorders.invoiceid) AS invoicestatus " . $query . " LIMIT " . $this->getQueryLimit(); $result = full_query($query); while ($data = mysql_fetch_array($result)) { $id = $data['id']; $ordernum = $data['ordernum']; $userid = $data['userid']; $date = $data['date']; $amount = $data['amount']; $gateway = $data['paymentmethod']; $status = $data['status']; $invoiceid = $data['invoiceid']; $firstname = $data['firstname']; $lastname = $data['lastname']; $companyname = $data['companyname']; $groupid = $data['groupid']; $currency = $data['currency']; $ipaddress = $data['ipaddress']; $invoicestatus = $data['invoicestatus']; $date = fromMySQLDate($date, 1); $paymentmethod = $gateways->getDisplayName($gateway); $statusformatted = $this->formatStatus($status); if ($invoiceid == "0") { $paymentstatus = "<span class=\"textgreen\">" . $aInt->lang("orders", "noinvoicedue") . "</span>"; } else { if (!$invoicestatus) { $paymentstatus = "<span class=\"textred\">Invoice Deleted</span>"; } else { if ($invoicestatus == "Paid") { $paymentstatus = "<span class=\"textgreen\">" . $aInt->lang("status", "complete") . "</span>"; } else { if ($invoicestatus == "Unpaid") { $paymentstatus = "<span class=\"textred\">" . $aInt->lang("status", "incomplete") . "</span>"; } else { $paymentstatus = $invoices->formatStatus($invoicestatus); } } } } $currency = getCurrency("", $currency); $amount = formatCurrency($amount); $clientname = $aInt->outputClientLink($userid, $firstname, $lastname, $companyname, $groupid); $orders[] = array("id" => $id, "ordernum" => $ordernum, "date" => $date, "clientname" => $clientname, "gateway" => $gateway, "paymentmethod" => $paymentmethod, "amount" => $amount, "paymentstatus" => strip_tags($paymentstatus), "paymentstatusformatted" => $paymentstatus, "status" => $status, "statusformatted" => $statusformatted); } return $orders; }
$ordernotes = $notes; } $_SESSION['upgradeorder'] = createUpgradeOrder($serviceid, $ordernotes, $promocode, $paymentmethod); redir("step=4"); } else { if ($step == "4") { $orderfrm = new WHMCS_OrderForm(); $invoiceid = (int) $invoiceid; if ($invoiceid) { $result = select_query("tblinvoices", "id,total,paymentmethod", array("userid" => $_SESSION['uid'], "id" => $invoiceid)); $data = mysql_fetch_array($result); $invoiceid = $data['id']; $total = $data['total']; $paymentmethod = $data['paymentmethod']; if ($invoiceid && 0 < $total) { $paymentmethod = WHMCS_Gateways::makesafename($paymentmethod); if (!$paymentmethod) { exit("Unexpected payment method value. Exiting."); } $result = select_query("tblpaymentgateways", "value", array("gateway" => $paymentmethod, "setting" => "type")); $data = mysql_fetch_array($result); $gatewaytype = $data['value']; if (($gatewaytype == "CC" || $gatewaytype == "OfflineCC") && ($CONFIG['AutoRedirectoInvoice'] == "on" || $CONFIG['AutoRedirectoInvoice'] == "gateway")) { if (!isValidforPath($paymentmethod)) { exit("Invalid Payment Gateway Name"); } $gatewaypath = ROOTDIR . "/modules/gateways/" . $paymentmethod . ".php"; if (file_exists($gatewaypath)) { require_once $gatewaypath; } if (!function_exists($paymentmethod . "_link")) {