diff --git a/system/controllers/prepaid.php b/system/controllers/prepaid.php
index 0fbee57f..d57433e6 100644
--- a/system/controllers/prepaid.php
+++ b/system/controllers/prepaid.php
@@ -72,8 +72,6 @@ switch ($action) {
$type = _post('type');
$server = _post('server');
$plan = _post('plan');
-
- $date_now = date("Y-m-d H:i:s");
$date_only = date("Y-m-d");
$time = date("H:i:s");
@@ -83,212 +81,27 @@ switch ($action) {
}
if ($msg == '') {
- $c = ORM::for_table('tbl_customers')->where('id', $id_customer)->find_one();
- $p = ORM::for_table('tbl_plans')->where('id', $plan)->where('enabled', '1')->find_one();
- $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one();
-
- $mikrotik = Mikrotik::info($server);
- if($p['validity_unit']=='Months'){
- $date_exp = date("Y-m-d", strtotime('+'.$p['validity'].' month'));
- }else if($p['validity_unit']=='Days'){
- $date_exp = date("Y-m-d", strtotime('+'.$p['validity'].' day'));
- }else if($p['validity_unit']=='Hrs'){
- $datetime = explode(' ',date("Y-m-d H:i:s", strtotime('+'.$p['validity'].' hour')));
- $date_exp = $datetime[0];
- $time = $datetime[1];
- }else if($p['validity_unit']=='Mins'){
- $datetime = explode(' ',date("Y-m-d H:i:s", strtotime('+'.$p['validity'].' minute')));
- $date_exp = $datetime[0];
- $time = $datetime[1];
+ if(Package::rechargeUser($id_customer, $server, $plan, "Recharge", $admin['fullname'])){
+ $c = ORM::for_table('tbl_customers')->where('id', $id_customer)->find_one();
+ $in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
+ $ui->assign('in', $in);
+ $ui->assign('date', date("Y-m-d H:i:s"));
+ $ui->display('invoice.tpl');
+ }else{
+ r2(U . 'prepaid/recharge', 'e', "Failed to recharge account");
}
- run_hook('recharge_customer'); #HOOK
- if ($type == 'Hotspot') {
- if ($b) {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::removeHotspotUser($client,$c['username']);
- Mikrotik::addHotspotUser($client,$p,$c);
- }
-
- $b->customer_id = $id_customer;
- $b->username = $c['username'];
- $b->plan_id = $plan;
- $b->namebp = $p['name_plan'];
- $b->recharged_on = $date_only;
- $b->expiration = $date_exp;
- $b->time = $time;
- $b->status = "on";
- $b->method = "admin";
- $b->routers = $server;
- $b->type = "Hotspot";
- $b->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "admin";
- $t->routers = $server;
- $t->type = "Hotspot";
- $t->save();
- } else {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::addHotspotUser($client,$p,$c);
- }
-
- $d = ORM::for_table('tbl_user_recharges')->create();
- $d->customer_id = $id_customer;
- $d->username = $c['username'];
- $d->plan_id = $plan;
- $d->namebp = $p['name_plan'];
- $d->recharged_on = $date_only;
- $d->expiration = $date_exp;
- $d->time = $time;
- $d->status = "on";
- $d->method = "admin";
- $d->routers = $server;
- $d->type = "Hotspot";
- $d->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "admin";
- $t->routers = $server;
- $t->type = "Hotspot";
- $t->save();
- }
- Message::sendTelegram( "$admin[fullname] #Recharge Voucher #Hotspot for #u$c[username]\n".$p['name_plan'].
- "\nRouter: ".$server.
- "\nPrice: ".$p['price']);
- } else {
-
- if ($b) {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::removePpoeUser($client,$c['username']);
- Mikrotik::addPpoeUser($client,$p,$c);
- }
-
- $b->customer_id = $id_customer;
- $b->username = $c['username'];
- $b->plan_id = $plan;
- $b->namebp = $p['name_plan'];
- $b->recharged_on = $date_only;
- $b->expiration = $date_exp;
- $b->time = $time;
- $b->status = "on";
- $b->method = "admin";
- $b->routers = $server;
- $b->type = "PPPOE";
- $b->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "admin";
- $t->routers = $server;
- $t->type = "PPPOE";
- $t->save();
- } else {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::addPpoeUser($client,$p,$c);
- }
-
- $d = ORM::for_table('tbl_user_recharges')->create();
- $d->customer_id = $id_customer;
- $d->username = $c['username'];
- $d->plan_id = $plan;
- $d->namebp = $p['name_plan'];
- $d->recharged_on = $date_only;
- $d->expiration = $date_exp;
- $d->time = $time;
- $d->status = "on";
- $d->method = "admin";
- $d->routers = $server;
- $d->type = "PPPOE";
- $d->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "admin";
- $t->routers = $server;
- $t->type = "PPPOE";
- $t->save();
- }
- Message::sendTelegram( "$admin[fullname] #Recharge Voucher #PPPOE for #u$c[username]\n".$p['name_plan'].
- "\nRouter: ".$server.
- "\nPrice: ".$p['price']);
- }
-
- $in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
- $ui->assign('in', $in);
-
- $msg = "*$config[CompanyName]*\n".
- "$config[address]\n".
- "$config[phone]\n".
- "\n\n".
- "INVOICE: *$in[invoice]*\n".
- "$_L[Date] : $date_now\n".
- "$_L[Sales] : $admin[fullname]\n".
- "\n\n".
- "$_L[Type] : *$in[type]*\n".
- "$_L[Plan_Name] : *$in[plan_name]*\n".
- "$_L[Plan_Price] : *$config[currency_code] ".number_format($in['price'],2,$config['dec_point'],$config['thousands_sep'])."*\n\n".
- "$_L[Username] : *$in[username]*\n".
- "$_L[Password] : **********\n\n".
- "$_L[Created_On] :\n*".date($config['date_format'], strtotime($in['recharged_on']))."*\n".
- "$_L[Expires_On] :\n*".date($config['date_format'], strtotime($in['expiration']))." $in[time]*\n".
- "\n\n".
- "$config[note]";
-
- if ($_c['user_notification_payment'] == 'sms') {
- Message::sendSMS($c['phonenumber'], $msg);
- } else if ($_c['user_notification_payment'] == 'wa') {
- Message::sendWhatsapp($c['phonenumber'], $msg);
- }
-
- $ui->assign('date', $date_now);
- $ui->display('invoice.tpl');
} else {
r2(U . 'prepaid/recharge', 'e', $msg);
}
break;
case 'print':
- $date_now = date("Y-m-d H:i:s");
$id = _post('id');
$d = ORM::for_table('tbl_transactions')->where('id', $id)->find_one();
$ui->assign('d', $d);
- $ui->assign('date', $date_now);
+ $ui->assign('date', date("Y-m-d H:i:s"));
run_hook('print_invoice'); #HOOK
$ui->display('invoice-print.tpl');
break;
@@ -526,7 +339,7 @@ switch ($action) {
case 'refill':
$ui->assign('xfooter', '');
-
+ $ui->assign('_title', $_L['Refill_Account']);
$c = ORM::for_table('tbl_customers')->find_many();
$ui->assign('c', $c);
run_hook('view_refill'); #HOOK
@@ -540,221 +353,50 @@ switch ($action) {
$v1 = ORM::for_table('tbl_voucher')->where('code', $code)->where('status', 0)->find_one();
- $c = ORM::for_table('tbl_customers')->find_one($user);
- $p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']);
- $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $user)->find_one();
-
- $date_now = date("Y-m-d H:i:s");
- $date_only = date("Y-m-d");
- $time = date("H:i:s");
-
- $mikrotik = Mikrotik::info($v1['routers']);
-
- if($p['validity_unit']=='Months'){
- $date_exp = date("Y-m-d", strtotime('+'.$p['validity'].' month'));
- }else if($p['validity_unit']=='Days'){
- $date_exp = date("Y-m-d", strtotime('+'.$p['validity'].' day'));
- }else if($p['validity_unit']=='Hrs'){
- $datetime = explode(' ',date("Y-m-d H:i:s", strtotime('+'.$p['validity'].' hour')));
- $date_exp = $datetime[0];
- $time = $datetime[1];
- }else if($p['validity_unit']=='Mins'){
- $datetime = explode(' ',date("Y-m-d H:i:s", strtotime('+'.$p['validity'].' minute')));
- $date_exp = $datetime[0];
- $time = $datetime[1];
- }
run_hook('refill_customer'); #HOOK
if ($v1) {
- if ($v1['type'] == 'Hotspot') {
- if ($b) {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::removeHotspotUser($client,$c['username']);
- Mikrotik::addHotspotUser($client,$p,$c);
- }
-
- $b->customer_id = $user;
- $b->username = $c['username'];
- $b->plan_id = $v1['id_plan'];
- $b->namebp = $p['name_plan'];
- $b->recharged_on = $date_only;
- $b->expiration = $date_exp;
- $b->time = $time;
- $b->status = "on";
- $b->method = "voucher";
- $b->routers = $v1['routers'];
- $b->type = "Hotspot";
- $b->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "voucher";
- $t->routers = $v1['routers'];
- $t->type = "Hotspot";
- $t->save();
- } else {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::addHotspotUser($client,$p,$c);
- }
-
- $d = ORM::for_table('tbl_user_recharges')->create();
- $d->customer_id = $user;
- $d->username = $c['username'];
- $d->plan_id = $v1['id_plan'];
- $d->namebp = $p['name_plan'];
- $d->recharged_on = $date_only;
- $d->expiration = $date_exp;
- $d->time = $time;
- $d->status = "on";
- $d->method = "voucher";
- $d->routers = $v1['routers'];
- $d->type = "Hotspot";
- $d->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "voucher";
- $t->routers = $v1['routers'];
- $t->type = "Hotspot";
- $t->save();
- }
-
+ if(Package::rechargeUser($user, $v1['routers'], $v1['id_plan'], "Refill", "Voucher")){
$v1->status = "1";
$v1->user = $c['username'];
$v1->save();
-
- Message::sendTelegram( "$admin[fullname] #Refill #Voucher #Hotspot for #u$c[username]\n".$p['name_plan'].
- "\nCode: ".$code.
- "\nRouter: ".$v1['routers'].
- "\nPrice: ".$p['price']);
- } else {
- if ($b) {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::removePpoeUser($client,$c['username']);
- Mikrotik::addPpoeUser($client,$p,$c);
- }
-
- $b->customer_id = $user;
- $b->username = $c['username'];
- $b->plan_id = $v1['id_plan'];
- $b->namebp = $p['name_plan'];
- $b->recharged_on = $date_only;
- $b->expiration = $date_exp;
- $b->time = $time;
- $b->status = "on";
- $b->method = "voucher";
- $b->routers = $v1['routers'];
- $b->type = "PPPOE";
- $b->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "voucher";
- $t->routers = $v1['routers'];
- $t->type = "PPPOE";
- $t->save();
- } else {
- if(!$config['radius_mode']){
- $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
- Mikrotik::addPpoeUser($client,$p,$c);
- }
-
- $d = ORM::for_table('tbl_user_recharges')->create();
- $d->customer_id = $user;
- $d->username = $c['username'];
- $d->plan_id = $v1['id_plan'];
- $d->namebp = $p['name_plan'];
- $d->recharged_on = $date_only;
- $d->expiration = $date_exp;
- $d->time = $time;
- $d->status = "on";
- $d->method = "voucher";
- $d->routers = $v1['routers'];
- $d->type = "PPPOE";
- $d->save();
-
- // insert table transactions
- $t = ORM::for_table('tbl_transactions')->create();
- $t->invoice = "INV-" . _raid(5);
- $t->username = $c['username'];
- $t->plan_name = $p['name_plan'];
- $t->price = $p['price'];
- $t->recharged_on = $date_only;
- $t->expiration = $date_exp;
- $t->time = $time;
- $t->method = "voucher";
- $t->routers = $v1['routers'];
- $t->type = "PPPOE";
- $t->save();
- }
-
- $v1->status = "1";
- $v1->user = $c['username'];
- $v1->save();
-
-
- Message::sendTelegram( "$admin[fullname] Refill #Voucher #PPPOE for #u$c[username]\n".$p['name_plan'].
- "\nCode: ".$code.
- "\nRouter: ".$v1['routers'].
- "\nPrice: ".$p['price']);
+ $c = ORM::for_table('tbl_customers')->where('id', $id_customer)->find_one();
+ $in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
+ $ui->assign('in', $in);
+ $ui->assign('date', date("Y-m-d H:i:s"));
+ $ui->display('invoice.tpl');
+ }else{
+ r2(U . 'prepaid/refill', 'e', "Failed to refill account");
}
- $in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
- $ui->assign('in', $in);
-
-
- $msg = "*$config[CompanyName]*\n".
- "$config[address]\n".
- "$config[phone]\n".
- "\n\n".
- "INVOICE: *$in[invoice]*\n".
- "$_L[Date] : $date_now\n".
- "$_L[Sales] : $admin[fullname]\n".
- "\n\n".
- "$_L[Type] : *$in[type]*\n".
- "$_L[Plan_Name] : *$in[plan_name]*\n".
- "$_L[Plan_Price] : *$config[currency_code] ".number_format($in['price'],2,$config['dec_point'],$config['thousands_sep'])."*\n\n".
- "$_L[Username] : *$in[username]*\n".
- "$_L[Password] : **********\n\n".
- "$_L[Created_On] :\n*".date($config['date_format'], strtotime($in['recharged_on']))."*\n".
- "$_L[Expires_On] :\n*".date($config['date_format'], strtotime($in['expiration']))." $in[time]*\n".
- "\n\n".
- "$config[note]";
-
- if ($_c['user_notification_payment'] == 'sms') {
- Message::sendSMS($c['phonenumber'], $msg);
- } else if ($_c['user_notification_payment'] == 'wa') {
- Message::sendWhatsapp($c['phonenumber'], $msg);
- }
- $ui->assign('date', $date_now);
- $ui->display('invoice.tpl');
} else {
r2(U . 'prepaid/refill', 'e', $_L['Voucher_Not_Valid']);
}
break;
+ case 'deposit':
+ $ui->assign('_title', Lang::T('Refill Balance'));
+ $ui->assign('c', ORM::for_table('tbl_customers')->find_many());
+ $ui->assign('p', ORM::for_table('tbl_plans')->where('enabled', '1')->where('type', 'Balance')->find_many());
+ run_hook('view_deposit'); #HOOK
+ $ui->display('deposit.tpl');
+ break;
+ case 'deposit-post':
+ $user = _post('id_customer');
+ $plan = _post('id_plan');
+ run_hook('deposit_customer'); #HOOK
+ if (!empty($user) && !empty($plan)) {
+ if(Package::rechargeUser($user, 'balance', $plan, "Deposit", $admin['fullname'])){
+ $c = ORM::for_table('tbl_customers')->where('id', $user)->find_one();
+ $in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
+ $ui->assign('in', $in);
+ $ui->assign('date', date("Y-m-d H:i:s"));
+ $ui->display('invoice.tpl');
+ }else{
+ r2(U . 'prepaid/refill', 'e', "Failed to refill account");
+ }
+ } else {
+ r2(U . 'prepaid/refill', 'e', "All field is required");
+ }
+ break;
default:
echo 'action not defined';
}
diff --git a/system/lan/english/common.lan.php b/system/lan/english/common.lan.php
index 0516eea8..5f7b6ad3 100644
--- a/system/lan/english/common.lan.php
+++ b/system/lan/english/common.lan.php
@@ -363,3 +363,4 @@ $_L['Disable_auto_renewal'] = 'Disable auto renewal?';
$_L['Auto_Renewal_On'] = 'Auto Renewal On';
$_L['Enable_auto_renewal'] = 'Enable auto renewal?';
$_L['Auto_Renewal_Off'] = 'Auto Renewal Off';
+$_L['Refill_Balance'] = 'Refill Balance';
diff --git a/ui/ui/deposit.tpl b/ui/ui/deposit.tpl
new file mode 100644
index 00000000..f3d34c63
--- /dev/null
+++ b/ui/ui/deposit.tpl
@@ -0,0 +1,47 @@
+{include file="sections/header.tpl"}
+
+
+
+
+
{Lang::T('Refill Balance')}
+
+
+
+
+
+{include file="sections/footer.tpl"}
\ No newline at end of file
diff --git a/ui/ui/invoice-print.tpl b/ui/ui/invoice-print.tpl
index 2036c576..76e7cbbc 100644
--- a/ui/ui/invoice-print.tpl
+++ b/ui/ui/invoice-print.tpl
@@ -1,5 +1,6 @@
+
{$_title}
@@ -7,52 +8,55 @@
-
+
-
-
-
-
-
-
- |
-
-
+
+
+
+
+
+
+ |
+
+
+
-
-
-
-{if isset($xfooter)}
- {$xfooter}
-{/if}
+
+
+ {if isset($xfooter)}
+ {$xfooter}
+ {/if}
-
+
+