예제 #1
0
if (!$invoiceid) {
    $apiresults = array("result" => "error", "message" => "Invoice ID Not Found");
    return null;
}
$userid = $data['userid'];
$credit = $data['credit'];
$total = $data['total'];
$status = $data['status'];
$amountpaid = get_query_val("tblaccounts", "SUM(amountin)-SUM(amountout)", array("invoiceid" => $invoiceid));
$balance = round($total - $amountpaid, 2);
$amount = $amount == "full" ? $balance : round($amount, 2);
$totalcredit = get_query_val("tblclients", "credit", array("id" => $userid));
if ($status != "Unpaid") {
    $apiresults = array("result" => "error", "message" => "Invoice Not in Unpaid Status");
    return null;
}
if ($totalcredit < $amount) {
    $apiresults = array("result" => "error", "message" => "Amount exceeds customer credit balance");
    return null;
}
if ($balance < $amount) {
    $apiresults = array("result" => "error", "message" => "Amount Exceeds Invoice Balance");
    return null;
}
if ($amount == "0.00") {
    $apiresults = array("result" => "error", "message" => "Credit Amount to apply must be greater than zero");
    return null;
}
$appliedamount = min($amount, $totalcredit);
applyCredit($invoiceid, $userid, $appliedamount, $noemail);
$apiresults = array("result" => "success", "invoiceid" => $invoiceid, "amount" => $appliedamount, "invoicepaid" => get_query_val("tblinvoices", "status", array("id" => $invoiceid)) == "Paid" ? "true" : "false");
예제 #2
0
}
$creditbal = get_query_val("tblclients", "credit", array("id" => $invoice->getData("userid")));
if ($invoice->getData("status") == "Unpaid" && 0 < $creditbal) {
    $balance = $invoice->getData("balance");
    $creditamount = $whmcs->get_req_var("creditamount");
    if ($whmcs->get_req_var("applycredit") && 0 < $creditamount) {
        check_token();
        if ($creditbal < $creditamount) {
            echo $_LANG['invoiceaddcreditovercredit'];
            exit;
        } else {
            if ($balance < $creditamount) {
                echo $_LANG['invoiceaddcreditoverbalance'];
                exit;
            } else {
                applyCredit($invoiceid, $invoice->getData("userid"), $creditamount);
            }
        }
        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;
예제 #3
0
     $balance = $total - $amountpaid;
     if ($CONFIG['TaxType'] == "Inclusive") {
         $subtotal = $total;
     }
     $addcredit = round($addcredit, 2);
     $balance = round($balance, 2);
     $result2 = select_query("tblclients", "credit", array("id" => $userid));
     $data = mysql_fetch_array($result2);
     $totalcredit = $data['credit'];
     if ($totalcredit < $addcredit) {
         infoBox("An Error Occurred", "You cannot apply more credit than the client's credit balance");
     } else {
         if ($balance < $addcredit) {
             infoBox("An Error Occurred", "You cannot apply more credit than the invoice total");
         } else {
             applyCredit($id, $userid, $addcredit);
             $currency = getCurrency($userid);
             infoBox("Success", formatCurrency($addcredit) . " credit was successfully added to the invoice");
         }
     }
 }
 if ($removecredit != "0.00" && $removecredit != "") {
     check_token("WHMCS.admin.default");
     $result2 = select_query("tblinvoices", "userid,subtotal,credit,total", array("id" => $id));
     $data = mysql_fetch_array($result2);
     $userid = $data['userid'];
     $subtotal = $data['subtotal'];
     $credit = $data['credit'];
     $total = $data['total'];
     if ($credit < $removecredit) {
         infoBox("An Error Occurred", "You cannot remove more credit than the invoice has applied");
예제 #4
0
function processPaidInvoice($invoiceid, $noemail = "", $date = "")
{
    global $CONFIG;
    $result = select_query("tblinvoices", "invoicenum,userid,status", array("id" => $invoiceid));
    $data = mysql_fetch_array($result);
    $userid = $data['userid'];
    $invoicestatus = $data['status'];
    $invoicenum = $data['invoicenum'];
    if ($invoicestatus != "Unpaid") {
        return false;
    }
    $date = $date ? toMySQLDate($date) . date(" H:i:s") : "now()";
    update_query("tblinvoices", array("status" => "Paid", "datepaid" => $date), array("id" => $invoiceid));
    logActivity("Invoice Marked Paid - Invoice ID: " . $invoiceid, $userid);
    if ($CONFIG['SequentialInvoiceNumbering'] && !$invoicenum) {
        $invoicenumber = $CONFIG['SequentialInvoiceNumberFormat'];
        $invnumval = get_query_val("tblconfiguration", "value", array("setting" => "SequentialInvoiceNumberValue"));
        update_query("tblconfiguration", array("value" => "+1"), array("setting" => "SequentialInvoiceNumberValue"));
        $invoicenumber = str_replace("{NUMBER}", $invnumval, $invoicenumber);
        update_query("tblinvoices", array("invoicenum" => $invoicenumber), array("id" => $invoiceid));
        ++$CONFIG['SequentialInvoiceNumberValue'];
    }
    run_hook("InvoicePaidPreEmail", array("invoiceid" => $invoiceid));
    if (!$noemail) {
        sendMessage("Invoice Payment Confirmation", $invoiceid);
    }
    $result = select_query("tblinvoiceitems", "", "invoiceid='" . mysql_real_escape_string($invoiceid) . "' AND type!=''", "id", "ASC");
    while ($data = mysql_fetch_array($result)) {
        $userid = $data['userid'];
        $type = $data['type'];
        $relid = $data['relid'];
        $amount = $data['amount'];
        if ($type == "Hosting") {
            makeHostingPayment($relid);
        }
        if ($type == "DomainRegister" || $type == "DomainTransfer" || $type == "Domain") {
            makeDomainPayment($relid, $type);
        }
        if ($type == "DomainAddonDNS") {
            $enabledcheck = get_query_val("tbldomains", "dnsmanagement", array("id" => $relid));
            if (!$enabledcheck) {
                $currency = getCurrency($userid);
                $dnscost = get_query_val("tblpricing", "msetupfee", array("type" => "domainaddons", "currency" => $currency['id'], "relid" => 0));
                update_query("tbldomains", array("dnsmanagement" => "on", "recurringamount" => "+=" . $dnscost), array("id" => $relid));
            }
        }
        if ($type == "DomainAddonEMF") {
            $enabledcheck = get_query_val("tbldomains", "emailforwarding", array("id" => $relid));
            if (!$enabledcheck) {
                $currency = getCurrency($userid);
                $emfcost = get_query_val("tblpricing", "qsetupfee", array("type" => "domainaddons", "currency" => $currency['id'], "relid" => 0));
                update_query("tbldomains", array("emailforwarding" => "on", "recurringamount" => "+=" . $emfcost), array("id" => $relid));
            }
        }
        if ($type == "DomainAddonIDP") {
            $enabledcheck = get_query_val("tbldomains", "idprotection", array("id" => $relid));
            if (!$enabledcheck) {
                $currency = getCurrency($userid);
                $idpcost = get_query_val("tblpricing", "ssetupfee", array("type" => "domainaddons", "currency" => $currency['id'], "relid" => 0));
                update_query("tbldomains", array("idprotection" => "on", "recurringamount" => "+=" . $idpcost), array("id" => $relid));
                $data = get_query_vals("tbldomains", "type,domain,registrar,registrationperiod", array("id" => $relid));
                $domainparts = explode(".", $data['domain'], 2);
                $params = array();
                $params['domainid'] = $relid;
                $params['sld'] = $domainparts[0];
                $params['tld'] = $domainparts[1];
                $params['regperiod'] = $data['registrationperiod'];
                $params['registrar'] = $data['registrar'];
                $params['regtype'] = $data['type'];
                if (!function_exists("RegIDProtectToggle")) {
                    require ROOTDIR . "/includes/registrarfunctions.php";
                }
                $values = RegIDProtectToggle($params);
                if ($values['error']) {
                    logActivity("ID Protection Enabling Failed - Error: " . $values['error'] . " - Domain ID: " . $relid, $userid);
                }
                logActivity("ID Protection Enabled Successfully - Domain ID: " . $relid, $userid);
            }
        }
        if ($type == "Addon") {
            makeAddonPayment($relid);
        }
        if ($type == "Upgrade") {
            if (!function_exists("processUpgradePayment")) {
                require dirname(__FILE__) . "/upgradefunctions.php";
            }
            processUpgradePayment($relid, "", "", "true");
        }
        if ($type == "AddFunds") {
            insert_query("tblcredit", array("clientid" => $userid, "date" => "now()", "description" => "Add Funds Invoice #" . $invoiceid, "amount" => $amount, "relid" => $invoiceid));
            update_query("tblclients", array("credit" => "+=" . $amount), array("id" => (int) $userid));
        }
        if ($type == "Invoice") {
            insert_query("tblcredit", array("clientid" => $userid, "date" => "now()", "description" => "Mass Invoice Payment Credit for Invoice #" . $relid, "amount" => $amount));
            update_query("tblclients", array("credit" => "+=" . $amount), array("id" => (int) $userid));
            applyCredit($relid, $userid, $amount);
        }
        if (substr($type, 0, 14) == "ProrataProduct") {
            $newduedate = substr($type, 14);
            update_query("tblhosting", array("nextduedate" => $newduedate, "nextinvoicedate" => $newduedate), array("id" => $relid));
        }
        if (substr($type, 0, 12) == "ProrataAddon") {
            $newduedate = substr($type, 12);
            update_query("tblhostingaddons", array("nextduedate" => $newduedate, "nextinvoicedate" => $newduedate), array("id" => $relid));
        }
    }
    run_hook("InvoicePaid", array("invoiceid" => $invoiceid));
}