update
fixed tax logic
This commit is contained in:
parent
55d344febe
commit
ea51fa24d0
@ -148,9 +148,6 @@ switch ($action) {
|
|||||||
r2(U . "voucher/invoice/");
|
r2(U . "voucher/invoice/");
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
if($user['status'] != 'Active'){
|
|
||||||
_alert(Lang::T('This account status').' : '.Lang::T($user['status']),'danger', "");
|
|
||||||
}
|
|
||||||
$plan = ORM::for_table('tbl_plans')->where('enabled', '1')->find_one($routes['3']);
|
$plan = ORM::for_table('tbl_plans')->where('enabled', '1')->find_one($routes['3']);
|
||||||
if (empty($plan)) {
|
if (empty($plan)) {
|
||||||
r2(U . "order/package", 'e', Lang::T("Plan Not found"));
|
r2(U . "order/package", 'e', Lang::T("Plan Not found"));
|
||||||
@ -163,30 +160,48 @@ switch ($action) {
|
|||||||
} else {
|
} else {
|
||||||
$router_name = $plan['routers'];
|
$router_name = $plan['routers'];
|
||||||
}
|
}
|
||||||
|
|
||||||
list($bills, $add_cost) = User::getBills($id_customer);
|
list($bills, $add_cost) = User::getBills($id_customer);
|
||||||
if ($plan && $plan['enabled'] && $user['balance'] >= $plan['price']) {
|
|
||||||
|
// Tax calculation start
|
||||||
|
$tax_enable = isset($config['enable_tax']) ? $config['enable_tax'] : 'no';
|
||||||
|
$tax_rate_setting = isset($config['tax_rate']) ? $config['tax_rate'] : null;
|
||||||
|
$custom_tax_rate = isset($config['custom_tax_rate']) ? (float)$config['custom_tax_rate'] : null;
|
||||||
|
|
||||||
|
if ($tax_rate_setting === 'custom') {
|
||||||
|
$tax_rate = $custom_tax_rate;
|
||||||
|
} else {
|
||||||
|
$tax_rate = $tax_rate_setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tax_enable === 'yes') {
|
||||||
|
$tax = Package::tax($plan['price'], $tax_rate);
|
||||||
|
} else {
|
||||||
|
$tax = 0;
|
||||||
|
}
|
||||||
|
// Tax calculation stop
|
||||||
|
|
||||||
|
if ($plan && $plan['enabled'] && $user['balance'] >= $plan['price'] + $tax) {
|
||||||
if (Package::rechargeUser($user['id'], $router_name, $plan['id'], 'Customer', 'Balance')) {
|
if (Package::rechargeUser($user['id'], $router_name, $plan['id'], 'Customer', 'Balance')) {
|
||||||
// if success, then get the balance
|
// if success, then get the balance
|
||||||
Balance::min($user['id'], $plan['price'] + $add_cost);
|
Balance::min($user['id'], $plan['price'] + $add_cost + $tax);
|
||||||
App::setToken($_GET['stoken'], "success");
|
App::setToken($_GET['stoken'], "success");
|
||||||
r2(U . "voucher/invoice/", 's', Lang::T("Success to buy package"));
|
r2(U . "voucher/invoice/", 's', Lang::T("Success to buy package"));
|
||||||
} else {
|
} else {
|
||||||
r2(U . "order/package", 'e', Lang::T("Failed to buy package"));
|
r2(U . "order/package", 'e', Lang::T("Failed to buy package"));
|
||||||
Message::sendTelegram("Buy Package with Balance Failed\n\n#u$c[username] #buy \n" . $plan['name_plan'] .
|
Message::sendTelegram("Buy Package with Balance Failed\n\n#u$c[username] #buy \n" . $plan['name_plan'] .
|
||||||
"\nRouter: " . $router_name .
|
"\nRouter: " . $router_name .
|
||||||
"\nPrice: " . $p['price']);
|
"\nPrice: " . $plan['price'] + $tax);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
r2(U . "home", 'e', 'Plan is not exists');
|
r2(U . "home", 'e', 'Plan is not exists');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'send':
|
case 'send':
|
||||||
if ($config['enable_balance'] != 'yes') {
|
if ($config['enable_balance'] != 'yes') {
|
||||||
r2(U . "order/package", 'e', Lang::T("Balance not enabled"));
|
r2(U . "order/package", 'e', Lang::T("Balance not enabled"));
|
||||||
}
|
}
|
||||||
if($user['status'] != 'Active'){
|
|
||||||
_alert(Lang::T('This account status').' : '.Lang::T($user['status']),'danger', "");
|
|
||||||
}
|
|
||||||
$ui->assign('_title', Lang::T('Buy for friend'));
|
$ui->assign('_title', Lang::T('Buy for friend'));
|
||||||
$ui->assign('_system_menu', 'package');
|
$ui->assign('_system_menu', 'package');
|
||||||
$plan = ORM::for_table('tbl_plans')->find_one($routes['3']);
|
$plan = ORM::for_table('tbl_plans')->find_one($routes['3']);
|
||||||
@ -201,6 +216,27 @@ switch ($action) {
|
|||||||
} else {
|
} else {
|
||||||
$router_name = $plan['routers'];
|
$router_name = $plan['routers'];
|
||||||
}
|
}
|
||||||
|
$tax_rate_setting = isset($config['tax_rate']) ? $config['tax_rate'] : null;
|
||||||
|
$custom_tax_rate = isset($config['custom_tax_rate']) ? (float)$config['custom_tax_rate'] : null;
|
||||||
|
|
||||||
|
if ($tax_rate_setting === 'custom') {
|
||||||
|
$tax_rate = $custom_tax_rate;
|
||||||
|
} else {
|
||||||
|
$tax_rate = $tax_rate_setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tax_enable = isset($config['enable_tax']) ? $config['enable_tax'] : 'no';
|
||||||
|
|
||||||
|
if ($tax_enable === 'yes') {
|
||||||
|
$tax = Package::tax($plan['price'], $tax_rate);
|
||||||
|
$ui->assign('tax', $tax);
|
||||||
|
} else {
|
||||||
|
$tax = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add tax to plan price
|
||||||
|
$plan['price'] += $tax;
|
||||||
|
|
||||||
if (isset($_POST['send']) && $_POST['send'] == 'plan') {
|
if (isset($_POST['send']) && $_POST['send'] == 'plan') {
|
||||||
$target = ORM::for_table('tbl_customers')->where('username', _post('username'))->find_one();
|
$target = ORM::for_table('tbl_customers')->where('username', _post('username'))->find_one();
|
||||||
list($bills, $add_cost) = User::getBills($target['id']);
|
list($bills, $add_cost) = User::getBills($target['id']);
|
||||||
@ -209,6 +245,7 @@ switch ($action) {
|
|||||||
$ui->assign('add_cost', $add_cost);
|
$ui->assign('add_cost', $add_cost);
|
||||||
$plan['price'] += $add_cost;
|
$plan['price'] += $add_cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$target) {
|
if (!$target) {
|
||||||
r2(U . 'home', 'd', Lang::T('Username not found'));
|
r2(U . 'home', 'd', Lang::T('Username not found'));
|
||||||
}
|
}
|
||||||
@ -269,15 +306,22 @@ switch ($action) {
|
|||||||
$d->save();
|
$d->save();
|
||||||
r2(U . "order/view/$trx_id", 's', Lang::T("Success to send package"));
|
r2(U . "order/view/$trx_id", 's', Lang::T("Success to send package"));
|
||||||
} else {
|
} else {
|
||||||
r2(U . "order/package", 'e', Lang::T("Failed to Send package"));
|
$errorMessage = "Send Package with Balance Failed\n\n#u$user[username] #send \n" . $plan['name_plan'] .
|
||||||
Message::sendTelegram("Send Package with Balance Failed\n\n#u$user[username] #send \n" . $plan['name_plan'] .
|
|
||||||
"\nRouter: " . $router_name .
|
"\nRouter: " . $router_name .
|
||||||
"\nPrice: " . $plan['price']);
|
"\nPrice: " . $plan['price'];
|
||||||
|
|
||||||
|
if ($tax_enable === 'yes') {
|
||||||
|
$errorMessage .= "\nTax: " . $tax;
|
||||||
|
}
|
||||||
|
|
||||||
|
r2(U . "order/package", 'e', Lang::T("Failed to Send package"));
|
||||||
|
Message::sendTelegram($errorMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$ui->assign('username', $_GET['u']);
|
$ui->assign('username', $_GET['u']);
|
||||||
$ui->assign('router', $router_name);
|
$ui->assign('router', $router_name);
|
||||||
$ui->assign('plan', $plan);
|
$ui->assign('plan', $plan);
|
||||||
|
$ui->assign('tax', $tax);
|
||||||
$ui->display('user-sendPlan.tpl');
|
$ui->display('user-sendPlan.tpl');
|
||||||
break;
|
break;
|
||||||
case 'gateway':
|
case 'gateway':
|
||||||
@ -328,9 +372,6 @@ switch ($action) {
|
|||||||
} else if (!empty($gateway)) {
|
} else if (!empty($gateway)) {
|
||||||
$_SESSION['gateway'] = $gateway;
|
$_SESSION['gateway'] = $gateway;
|
||||||
}
|
}
|
||||||
if($user['status'] != 'Active'){
|
|
||||||
_alert(Lang::T('This account status').' : '.Lang::T($user['status']),'danger', "");
|
|
||||||
}
|
|
||||||
if (empty($gateway)) {
|
if (empty($gateway)) {
|
||||||
r2(U . 'order/gateway/' . $routes[2] . '/' . $routes[3], 'w', Lang::T("Please select Payment Gateway"));
|
r2(U . 'order/gateway/' . $routes[2] . '/' . $routes[3], 'w', Lang::T("Please select Payment Gateway"));
|
||||||
}
|
}
|
||||||
@ -368,9 +409,23 @@ switch ($action) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$add_cost = 0;
|
$add_cost = 0;
|
||||||
|
$tax = 0;
|
||||||
if ($router['name'] != 'balance') {
|
if ($router['name'] != 'balance') {
|
||||||
list($bills, $add_cost) = User::getBills($id_customer);
|
list($bills, $add_cost) = User::getBills($id_customer);
|
||||||
}
|
}
|
||||||
|
// Tax calculation start
|
||||||
|
$tax_enable = isset($config['enable_tax']) ? $config['enable_tax'] : 'no';
|
||||||
|
$tax_rate_setting = isset($config['tax_rate']) ? $config['tax_rate'] : null;
|
||||||
|
$custom_tax_rate = isset($config['custom_tax_rate']) ? (float)$config['custom_tax_rate'] : null;
|
||||||
|
if ($tax_rate_setting === 'custom') {
|
||||||
|
$tax_rate = $custom_tax_rate;
|
||||||
|
} else {
|
||||||
|
$tax_rate = $tax_rate_setting;
|
||||||
|
}
|
||||||
|
if ($tax_enable === 'yes') {
|
||||||
|
$tax = Package::tax($plan['price'], $tax_rate);
|
||||||
|
}
|
||||||
|
// Tax calculation stop
|
||||||
if (empty($id)) {
|
if (empty($id)) {
|
||||||
$d = ORM::for_table('tbl_payment_gateway')->create();
|
$d = ORM::for_table('tbl_payment_gateway')->create();
|
||||||
$d->username = $user['username'];
|
$d->username = $user['username'];
|
||||||
@ -383,12 +438,12 @@ switch ($action) {
|
|||||||
// Postpaid price from field
|
// Postpaid price from field
|
||||||
$add_inv = User::getAttribute("Invoice", $id_customer);
|
$add_inv = User::getAttribute("Invoice", $id_customer);
|
||||||
if (empty($add_inv) or $add_inv == 0) {
|
if (empty($add_inv) or $add_inv == 0) {
|
||||||
$d->price = ($plan['price'] + $add_cost);
|
$d->price = ($plan['price'] + $add_cost + $tax);
|
||||||
} else {
|
} else {
|
||||||
$d->price = ($add_inv + $add_cost);
|
$d->price = ($add_inv + $add_cost + $tax);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$d->price = ($plan['price'] + $add_cost);
|
$d->price = ($plan['price'] + $add_cost + $tax);
|
||||||
}
|
}
|
||||||
//$d->price = ($plan['price'] + $add_cost);
|
//$d->price = ($plan['price'] + $add_cost);
|
||||||
$d->created_date = date('Y-m-d H:i:s');
|
$d->created_date = date('Y-m-d H:i:s');
|
||||||
@ -406,12 +461,12 @@ switch ($action) {
|
|||||||
// Postpaid price from field
|
// Postpaid price from field
|
||||||
$add_inv = User::getAttribute("Invoice", $id_customer);
|
$add_inv = User::getAttribute("Invoice", $id_customer);
|
||||||
if (empty($add_inv) or $add_inv == 0) {
|
if (empty($add_inv) or $add_inv == 0) {
|
||||||
$d->price = ($plan['price'] + $add_cost);
|
$d->price = ($plan['price'] + $add_cost + $tax);
|
||||||
} else {
|
} else {
|
||||||
$d->price = ($add_inv + $add_cost);
|
$d->price = ($add_inv + $add_cost + $tax);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$d->price = ($plan['price'] + $add_cost);
|
$d->price = ($plan['price'] + $add_cost + $tax);
|
||||||
}
|
}
|
||||||
//$d->price = ($plan['price'] + $add_cost);
|
//$d->price = ($plan['price'] + $add_cost);
|
||||||
$d->created_date = date('Y-m-d H:i:s');
|
$d->created_date = date('Y-m-d H:i:s');
|
||||||
|
@ -132,34 +132,6 @@ switch ($action) {
|
|||||||
$d->save();
|
$d->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle tax system separately
|
|
||||||
$enable_tax = isset($_POST['enable_tax']) ? $_POST['enable_tax'] : 'no';
|
|
||||||
$tax_rate = isset($_POST['tax_rate']) ? $_POST['tax_rate'] : '0.01'; // Default tax rate 1%
|
|
||||||
|
|
||||||
// Save or update tax system settings
|
|
||||||
$d_tax_enable = ORM::for_table('tbl_appconfig')->where('setting', 'enable_tax')->find_one();
|
|
||||||
if ($d_tax_enable) {
|
|
||||||
$d_tax_enable->value = $enable_tax;
|
|
||||||
$d_tax_enable->save();
|
|
||||||
} else {
|
|
||||||
$d_tax_enable = ORM::for_table('tbl_appconfig')->create();
|
|
||||||
$d_tax_enable->setting = 'enable_tax';
|
|
||||||
$d_tax_enable->value = $enable_tax;
|
|
||||||
$d_tax_enable->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
$d_tax_rate = ORM::for_table('tbl_appconfig')->where('setting', 'tax_rate')->find_one();
|
|
||||||
if ($d_tax_rate) {
|
|
||||||
$d_tax_rate->value = $tax_rate;
|
|
||||||
$d_tax_rate->save();
|
|
||||||
} else {
|
|
||||||
$d_tax_rate = ORM::for_table('tbl_appconfig')->create();
|
|
||||||
$d_tax_rate->setting = 'tax_rate';
|
|
||||||
$d_tax_rate->value = $tax_rate;
|
|
||||||
$d_tax_rate->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
//checkbox
|
//checkbox
|
||||||
$checks = ['hide_mrc', 'hide_tms', 'hide_aui', 'hide_al', 'hide_uet', 'hide_vs', 'hide_pg'];
|
$checks = ['hide_mrc', 'hide_tms', 'hide_aui', 'hide_al', 'hide_uet', 'hide_vs', 'hide_pg'];
|
||||||
foreach ($checks as $check) {
|
foreach ($checks as $check) {
|
||||||
|
@ -604,7 +604,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{* <div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
<button class="btn btn-primary btn-xs" title="save" type="submit">
|
<button class="btn btn-primary btn-xs" title="save" type="submit">
|
||||||
<span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>
|
||||||
@ -666,7 +666,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<p class="help-block col-md-4">{Lang::T('Enter the custom tax rate (e.g., 3.75 for 3.75%)')}</p>
|
<p class="help-block col-md-4">{Lang::T('Enter the custom tax rate (e.g., 3.75 for 3.75%)')}</p>
|
||||||
</div>
|
</div>
|
||||||
</div> *}
|
</div>
|
||||||
|
|
||||||
{* <div class="panel-heading" id="envato">
|
{* <div class="panel-heading" id="envato">
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
|
@ -24,9 +24,18 @@
|
|||||||
<td>{Lang::moneyFormat($add_cost)}</td>
|
<td>{Lang::moneyFormat($add_cost)}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/if}
|
{/if}
|
||||||
|
{if $tax > 0}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{Lang::T('Price')}{if $add_cost>0}<small> + {Lang::T('Additional Cost')}{/if}</td>
|
<td>{Lang::T('Tax')}</td>
|
||||||
<td style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">{Lang::moneyFormat($plan['price'])}</td>
|
<td>{Lang::moneyFormat($tax)}</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td>{Lang::T('Price')}{if $add_cost>0}<small> + {Lang::T('Additional Cost')}{/if}{if
|
||||||
|
$tax>0}<small> + {Lang::T('Tax')}{/if}</td>
|
||||||
|
<td
|
||||||
|
style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">
|
||||||
|
{Lang::moneyFormat($plan['price'])}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{Lang::T('Validity')}</td>
|
<td>{Lang::T('Validity')}</td>
|
||||||
@ -39,15 +48,17 @@
|
|||||||
<form method="post" onsubmit="return askConfirm()" role="form">
|
<form method="post" onsubmit="return askConfirm()" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" id="username" name="username" class="form-control" required value="{$username}"
|
<input type="text" id="username" name="username" class="form-control" required
|
||||||
placeholder="{Lang::T('Username')}">
|
value="{$username}" placeholder="{Lang::T('Username')}">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-sm-3" align="center">
|
<div class="form-group col-sm-3" align="center">
|
||||||
<button class="btn btn-success btn-block" id="sendBtn" type="submit" name="send" onclick="return confirm('{Lang::T("Are You Sure?")}')"
|
<button class="btn btn-success btn-block" id="sendBtn" type="submit" name="send"
|
||||||
value="plan"><i class="glyphicon glyphicon-send"></i></button>
|
onclick="return confirm('{Lang::T(" Are You Sure?")}')" value="plan"><i
|
||||||
|
class="glyphicon glyphicon-send"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="help-block text-center">{Lang::T('If your friend have Additional Cost, you will pay for that too')}</p>
|
<p class="help-block text-center">{Lang::T('If your friend have Additional Cost, you will pay for
|
||||||
|
that too')}</p>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user