Development version, definitely unstable and insecure...
This commit is contained in:
commit
7c71c6506d
4 changed files with 148 additions and 0 deletions
44
apply.php
Normal file
44
apply.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
require_once('../../../init.php');
|
||||
require_once('functions.php');
|
||||
|
||||
$currentUser = localAPI("GetAdminDetails");
|
||||
|
||||
if ($currentUser["result"] == "success") {
|
||||
|
||||
$billables = array();
|
||||
$prices = array();
|
||||
$taxed = array();
|
||||
|
||||
foreach ($_POST["billable"] as $billableid) {
|
||||
$billable = getBillable($billableid);
|
||||
$billables[] = $billable->description;
|
||||
$prices[] = $billable->amount;
|
||||
$taxed[] = true;
|
||||
}
|
||||
|
||||
print_r($billables);
|
||||
print_r($prices);
|
||||
print_r($taxed);
|
||||
|
||||
$result = localAPI("UpdateInvoice", array(
|
||||
'invoiceid' => $_POST["invoiceid"],
|
||||
'newitemdescription' => $billables,
|
||||
'newitemamount' => $prices,
|
||||
'newitemtaxed' => $taxed
|
||||
));
|
||||
|
||||
if (!$result["result"] == "success") {
|
||||
die("Could not apply billables to invoice.");
|
||||
}
|
||||
|
||||
foreach ($_POST["billable"] as $billableid) {
|
||||
incrementBillableInvoices($billableid);
|
||||
}
|
||||
|
||||
header("Location: /admin/invoices.php?action=edit&id=" . $_POST["invoiceid"]);
|
||||
|
||||
} else {
|
||||
die();
|
||||
}
|
32
functions.php
Normal file
32
functions.php
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
use WHMCS\Database\Capsule;
|
||||
|
||||
function getBillables($userid, $invoiced=false) {
|
||||
$billables = Capsule::table('tblbillableitems')
|
||||
->where("userid", $userid);
|
||||
|
||||
if (!$invoiced) {
|
||||
$billables = $billables->where("invoicecount", 0);
|
||||
}
|
||||
|
||||
$billables = $billables->get();
|
||||
|
||||
return $billables;
|
||||
}
|
||||
|
||||
function getBillable($billableid) {
|
||||
$billables = Capsule::table('tblbillableitems')
|
||||
->where("id", $billableid)
|
||||
->get();
|
||||
|
||||
foreach ($billables as $billable) {
|
||||
return $billable;
|
||||
}
|
||||
}
|
||||
|
||||
function incrementBillableInvoices($billableid) {
|
||||
Capsule::table('tblbillableitems')
|
||||
->where("id", $billableid)
|
||||
->increment("invoicecount");
|
||||
}
|
59
hooks.php
Normal file
59
hooks.php
Normal file
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
require_once("functions.php");
|
||||
|
||||
add_hook('AdminInvoicesControlsOutput', 99, function($vars) {
|
||||
$billables = getBillables($vars["userid"]);
|
||||
print('<br><input type="button" value="Apply Billable Items" onclick="jQuery(\'#applyBillables\').modal(\'show\');" class="button btn btn-default">');
|
||||
print('<div class="modal fade" id="applyBillables" tabindex="-1" role="dialog" aria-labelledby="applyBillablesLabel" aria-hidden="true" style="display: none;">
|
||||
<form method="post" action="../modules/addons/whmcs_apply_billables/apply.php">
|
||||
<input type="hidden" name="invoiceid" value="' . $vars["invoiceid"] . '" class="id-target">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content panel panel-primary">
|
||||
<div class="modal-header panel-heading">
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span aria-hidden="true">×</span>
|
||||
<span class="sr-only">Close</span>
|
||||
</button>
|
||||
<h4 class="modal-title">Select Billable Items</h4>
|
||||
</div>
|
||||
<div class="modal-body panel-body">
|
||||
<table>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>ID</th>
|
||||
<th>Description</th>
|
||||
<th>Hours</th>
|
||||
<th>Amount</th>
|
||||
</tr>
|
||||
');
|
||||
|
||||
foreach ($billables as $billable) {
|
||||
print('
|
||||
<tr>
|
||||
<td><input type="checkbox" name="billable[]" value="' . $billable->id . '"></td>
|
||||
<td>' . $billable->id . '</td>
|
||||
<td>' . $billable->description . '</td>
|
||||
<td>' . $billable->hours . '</td>
|
||||
<td>' . $billable->amount . '</td>
|
||||
</tr>
|
||||
');
|
||||
};
|
||||
|
||||
print('
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer panel-footer">
|
||||
<button type="button" id="doDeleteClient-cancel" class="btn btn-default" data-dismiss="modal">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" id="doDeleteClient-ok" class="btn btn-primary">
|
||||
OK
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>');
|
||||
});
|
13
whmcs_apply_billables.php
Normal file
13
whmcs_apply_billables.php
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if (!defined("WHMCS")) {
|
||||
die("This file cannot be accessed directly");
|
||||
}
|
||||
|
||||
function whmcs_apply_billables_MetaData()
|
||||
{
|
||||
return array(
|
||||
'DisplayName' => 'Apply Billables to Invoices',
|
||||
'APIVersion' => '1.1'
|
||||
);
|
||||
}
|
Loading…
Reference in a new issue