Exemple #1
0
 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;
 }
Exemple #2
0
 public static function makeSafeName($gateway)
 {
     $validgateways = WHMCS_Gateways::getactivegateways();
     return in_array($gateway, $validgateways) ? $gateway : "";
 }
Exemple #3
0
$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";
Exemple #4
0
            }
        }
        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;
}
Exemple #7
0
 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;
 }
Exemple #8
0
         $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")) {