Forráskód Böngészése

add pricing calculation including minimal configoption values

root 4 éve
commit
42443796a1
1 módosított fájl, 161 hozzáadás és 0 törlés
  1. 161 0
      producttotalpricing.php

+ 161 - 0
producttotalpricing.php

@@ -0,0 +1,161 @@
+<?php
+
+use WHMCS\Application;
+use WHMCS\Database\Capsule;
+
+require("../../init.php");
+
+/*
+*** USAGE SAMPLES ***
+
+<script language="javascript" src="feeds/producttotalpricing.php?pid=1&currency=1"></script>
+
+<script language="javascript" src="feeds/producttotalpricing.php?pid=5&currency=2"></script>
+
+*/
+    $whmcs = Application::getInstance();
+    $pid = $whmcs->get_req_var('pid');
+    $currencyid = $whmcs->get_req_var('currencyid');
+
+    // Verify user input for pid exists, is numeric, and as is a valid id
+    if (is_numeric($pid)) {
+        $data = Capsule::table('tblproducts')
+            ->where('id', '=', $pid)
+            ->first();
+        $pid = $data->id;
+        $paytype = $data->paytype;
+    } else {
+        $pid = '';
+    }
+
+    if (!$pid) {
+        widgetoutput('Product ID Not Found');
+    }
+
+    $currencyid = $whmcs->get_req_var('currency');
+    // Support for older currencyid variable
+    if (!$currencyid) {
+        $currencyid = $whmcs->get_req_var('currencyid');
+    }
+    if (!is_numeric($currencyid)) {
+        $currency = array();
+    } else {
+        $currency = getCurrency('', $currencyid);
+    }
+
+    if (!$currency || !is_array($currency) || !isset($currency['id'])) {
+        $currency = getCurrency();
+    }
+    $currencyid = $currency['id'];
+
+    $data = Capsule::table('tblpricing')
+        ->where('type', '=', 'product')
+        ->where('currency', '=', $currencyid)
+        ->where('relid', '=', $pid)
+        ->first();
+
+    $msetupfee = $data->msetupfee;
+    $qsetupfee = $data->qsetupfee;
+    $ssetupfee = $data->ssetupfee;
+    $asetupfee = $data->asetupfee;
+    $bsetupfee = $data->bsetupfee;
+    $tsetupfee = $data->tsetupfee;
+    $monthly = $data->monthly;
+    $quarterly = $data->quarterly;
+    $semiannually = $data->semiannually;
+    $annually = $data->annually;
+    $biennially = $data->biennially;
+    $triennially = $data->triennially;
+
+    $configOptionsGroupID = Capsule::table('tblproductconfiglinks')
+	->where('pid', '=', $pid)
+	->select('gid')
+	->first();
+
+    $configOptions = Capsule::table('tblproductconfigoptions')
+	->where('gid', '=', $configOptionsGroupID->gid)
+	->select('id','qtyminimum')
+	->get();
+
+    foreach($configOptions as $configOption) {
+	$configOptionSub = Capsule::table('tblproductconfigoptionssub')
+	    ->where('configid', '=', $configOption->id)
+	    ->select('id')
+	    ->first();
+	$configOptionPrices = Capsule::table('tblpricing')
+	    ->where('type', '=', 'configoptions')
+	    ->where('relid', '=', $configOptionSub->id)
+	    ->where('currency', '=', $currencyid)
+	    ->first();
+	
+	$msetupfee += $configOptionPrices->msetupfee * $configOption->qtyminimum;
+	$qsetupfee += $configOptionPrices->qsetupfee * $configOption->qtyminimum;
+	$ssetupfee += $configOptionPrices->ssetupfee * $configOption->qtyminimum;
+	$asetupfee += $configOptionPrices->asetupfee * $configOption->qtyminimum;
+	$bsetupfee += $configOptionPrices->bsetupfee * $configOption->qtyminimum;
+	$tsetupfee += $configOptionPrices->tsetupfee * $configOption->qtyminimum;
+	$monthly += $configOptionPrices->monthly * $configOption->qtyminimum;
+	$quarterly += $configOptionPrices->quarterly * $configOption->qtyminimum;
+	$semiannually += $configOptionPrices->semiannually * $configOption->qtyminimum;
+	$annually += $configOptionPrices->annually * $configOption->qtyminimum;
+	$biennially += $configOptionPrices->biennially * $configOption->qtyminimum;
+	$triennially += $configOptionPrices->triennially * $configOption->qtyminimum;
+    }
+
+    $systemurl = App::getSystemUrl();
+
+    if ($paytype=="free") {
+
+        $output .= $_LANG['orderfree'];
+
+    } elseif ($paytype=="onetime") {
+
+        $output .= formatCurrency($monthly);
+        if ($msetupfee!="0.00") $output .= " + ".formatCurrency($msetupfee)." ".$_LANG['ordersetupfee'];
+
+    } elseif ($paytype=="recurring") {
+
+        if ($monthly>=0) {
+            $output .= '<option value="monthly">'.formatCurrency($monthly).' - '.$_LANG['orderpaymenttermmonthly'];
+            if($msetupfee!="0.00") $output .= " + ".formatCurrency($msetupfee)." ".$_LANG['ordersetupfee'];
+            $output .= '</option>';
+        }
+
+        if ($quarterly>=0) {
+            $output .= '<option value="quarterly">'.formatCurrency($quarterly).' - '.$_LANG['orderpaymentterm3month'];
+            if($qsetupfee!="0.00") $output .= " + ".formatCurrency($qsetupfee)." ".$_LANG['ordersetupfee'];
+            $output .= '</option>';
+        }
+
+        if ($semiannually>=0) {
+            $output .= '<option value="semiannually">'.formatCurrency($semiannually).' - '.$_LANG['orderpaymentterm6month'];
+            if($ssetupfee!="0.00") $output .= " + ".formatCurrency($ssetupfee)." ".$_LANG['ordersetupfee'];
+            $output .= '</option>';
+        }
+
+        if ($annually>=0) {
+            $output .= '<option value="annually">'.formatCurrency($annually).' - '.$_LANG['orderpaymentterm12month'];
+            if($asetupfee!="0.00") $output .= " + ".formatCurrency($asetupfee)." ".$_LANG['ordersetupfee'];
+            $output .= '</option>';
+        }
+
+        if ($biennially>=0) {
+            $output .= '<option value="biennially">'.formatCurrency($biennially).' - '.$_LANG['orderpaymentterm24month'];
+            if($bsetupfee!="0.00") $output .= " + ".formatCurrency($bsetupfee)." ".$_LANG['ordersetupfee'];
+            $output .= '</option>';
+        }
+
+        if ($triennially>=0) {
+            $output .= '<option value="triennially">'.formatCurrency($triennially).' - '.$_LANG['orderpaymentterm36month'];
+            if($tsetupfee!="0.00") $output .= " + ".formatCurrency($tsetupfee)." ".$_LANG['ordersetupfee'];
+            $output .= '</option>';
+        }
+
+    }
+
+    widgetoutput($output);
+
+function widgetoutput($value) {
+    echo "document.write('".$value."');";
+    exit;
+}