/home/smartonegroup/www/veroserv/system/controllers/delete.php
<?php
/*
|--------------------------------------------------------------------------
| Controller
|--------------------------------------------------------------------------
|
*/
_auth();
$ui->assign('selected_navigation', 'accounts');
$ui->assign('_title', $_L['Delete'] . '- ' . $config['CompanyName']);
$action = $routes['1'];
$user = User::_info();
function clxDeleteInvoice($id)
{
$d = ORM::for_table('sys_invoices')->find($id);
if ($d) {
//delete all invoice items
$items = InvoiceItem::where('invoiceid', $id)->get();
foreach ($items as $item) {
if ($item->itemcode != '') {
Inventory::increaseByItemNumber($item->itemcode, $item->qty);
}
$item->delete();
}
$d->delete();
$transactions = Transaction::where('iid', $id)->get();
foreach ($transactions as $transaction) {
$t = Transaction::remove($transaction->id);
}
}
return true;
}
switch ($action) {
case 'crm-user':
if (!has_access($user->roleid, 'customers', 'delete')) {
permissionDenied();
}
$id = $routes['2'];
$id = str_replace('uid', '', $id);
$d = ORM::for_table('crm_accounts')->find($id);
if ($d) {
$username = $d->account;
//delete all activity
$x = ORM::for_table('sys_activity')
->where('cid', $id)
->delete_many();
$x = ORM::for_table('sys_invoices')
->where('userid', $id)
->delete_many();
$x = ORM::for_table('sys_quotes')
->where('userid', $id)
->delete_many();
$x = ORM::for_table('sys_orders')
->where('cid', $id)
->delete_many();
$x = ORM::for_table('sys_staffpermissions')
->where('rid', $id)
->delete_many();
$x = ORM::for_table('ib_doc_rel')
->where('rtype', 'contact')
->where('rid', $id)
->delete_many();
// Delete credit card info if exist
$credit_card = CreditCard::where('contact_id', $id)->first();
if ($credit_card) {
$credit_card->delete();
}
$d->delete();
_log('Contact Deleted: ' . $username, 'Admin', $user->id);
$gid = route(3);
if ($gid === '' || $gid === '0') {
r2(
U . 'contacts/list/',
's',
$_L['Contact Deleted Successfully']
);
} else {
r2(
U . 'contacts/find_by_group/' . $gid . '/',
's',
$_L['Contact Deleted Successfully']
);
}
} else {
echo 'contact not found';
}
break;
case 'ps':
if (!has_access($user->roleid, 'products_n_services', 'delete')) {
permissionDenied();
}
$id = $routes['2'];
$id = str_replace('pid', '', $id);
$d = ORM::for_table('sys_items')->find($id);
if ($d) {
$type = $d['type'];
$r = 'ps/services';
if ($type == 'Product') {
$r = 'ps/products';
}
if (APP_STAGE == 'Demo') {
r2(U . $r, 'e', 'Deleting product is disabled in the Demo.');
}
_log(
$type . ' Deleted: ' . $d['name'] . ' [ID: ' . $d['id'] . ']',
'Admin',
$user->id
);
$d->delete();
r2(U . $r, 's', $type . ' ' . $_L['Deleted Successfully']);
} else {
echo 'not found';
}
break;
case 'invoice':
if (!has_access($user->roleid, 'sales', 'delete')) {
permissionDenied();
}
$id = $routes['2'];
$id = str_replace('iid', '', $id);
clxDeleteInvoice($id);
r2(U . 'invoices/list', 's', $_L['Invoice Deleted Successfully']);
break;
case 'quote':
if (!has_access($user->roleid, 'sales', 'delete')) {
permissionDenied();
}
$id = $routes['2'];
$id = str_replace('iid', '', $id);
$d = ORM::for_table('sys_quotes')->find($id);
if ($d) {
//delete all invoice items
$x = ORM::for_table('sys_quoteitems')
->where('qid', $id)
->delete_many();
$d->delete();
r2(U . 'quotes/list/', 's', $_L['Quote Deleted Successfully']);
} else {
echo 'Invoice not found';
}
break;
case 'tags':
$id = $routes['2'];
$id = str_replace('iid', '', $id);
$d = ORM::for_table('sys_tags')->find($id);
if ($d) {
//delete all invoice items
$d->delete();
r2(U . 'settings/tags', 's', $_L['Tag Deleted Successfully']);
} else {
echo 'Invoice not found';
}
break;
case 'tax':
$id = $routes['2'];
$id = str_replace('t', '', $id);
$d = ORM::for_table('sys_tax')->find($id);
if ($d) {
$d->delete();
r2(U . 'tax/list/', 's', $_L['TAX Deleted Successfully']);
} else {
echo 'TAX not found';
}
break;
case 'customfield':
$id = $routes[2];
$id = str_replace('d', '', $id);
$d = ORM::for_table('crm_customfields')->find($id);
if ($d) {
$d->delete();
r2(
U . 'settings/customfields/',
's',
$_L['Custom Field Deleted Successfully']
);
} else {
echo 'Custom Field Not found';
}
break;
case 'crm-group':
//
if (!has_access($user->roleid, 'customers', 'delete')) {
permissionDenied();
}
$id = $routes[2];
$id = str_replace('g', '', $id);
$d = ORM::for_table('crm_groups')->find($id);
if ($d) {
// find all contacts with this group
$gname = $d->gname;
ORM::execute(
"update crm_accounts set gid=0, gname='' where gid=$id"
);
$d->delete();
_log('Group Deleted: ' . $gname, 'Admin', $user->id);
r2(U . 'contacts/groups/', 's', $_L['Group Deleted Successfully']);
} else {
echo 'contact not found';
}
break;
case 'currency':
$id = route(2);
$id = str_replace('c', '', $id);
$c = Currency::find($id);
if ($c) {
if ($c->cname == $config['home_currency']) {
r2(
U . 'settings/currencies/',
'e',
'You Can\'t Delete Home Currency'
);
}
// check currency is using
$check = Invoice::where('currency', $id)->first();
if ($check) {
r2(
U . 'settings/currencies/',
'e',
'This Currency is in use, You Can\'t Delete.'
);
}
$c->delete();
r2(
U . 'settings/currencies/',
's',
'Currency Deleted Successfully.'
);
}
break;
case 'company':
if (!has_access($user->roleid, 'customers', 'delete')) {
permissionDenied();
}
$id = route(2);
$id = str_replace('c', '', $id);
$c = Company::find($id);
if ($c) {
$c->delete();
r2(U . 'contacts/companies/', 's', $_L['Deleted Successfully']);
}
break;
case 'event':
$id = route(2);
$calendar = Calendar::find($id);
if ($calendar) {
$calendar->delete();
r2(U . 'calendar/events/', 's', $_L['Deleted Successfully']);
}
break;
case 'role':
$id = route(2);
$role = Role::find($id);
if ($role) {
// check this role is using
$users = User::where('roleid', $id)->first();
if ($users) {
r2(
U . 'settings/roles/',
'e',
'This Role is in Use. You will have to assign User to another Role before deleting.'
);
} else {
// delete all permissions
$p = ORM::for_table('sys_staffpermissions')
->where('rid', $id)
->delete_many();
$role->delete();
r2(U . 'settings/roles/', 's', $_L['Deleted Successfully']);
}
}
break;
case 'order':
if (!has_access($user->roleid, 'orders', 'delete')) {
permissionDenied();
}
$id = route(2);
$id = str_replace('uid', '', $id);
$d = ORM::for_table('sys_orders')->find($id);
if ($d) {
// Check order has invoice
if ($d->iid != '' || $d->iid != 0) {
clxDeleteInvoice($d->iid);
}
$d->delete();
}
r2(U . 'orders/list/', 's', $_L['Deleted Successfully']);
break;
case 'document':
if (APP_STAGE == 'Demo') {
r2(U . 'documents/list/', 'e', $_L['disabled_in_demo']);
}
if (!has_access($user->roleid, 'documents', 'delete')) {
permissionDenied();
}
$id = route(2);
$id = str_replace('did', '', $id);
$d = ORM::for_table('sys_documents')->find($id);
if ($d) {
$file = 'storage/docs/' . $d->file_path;
if (file_exists($file)) {
unlink($file);
}
$d->delete();
// now delete file relations
$rel = ORM::for_table('ib_doc_rel')
->where('did', $id)
->delete_many();
}
r2(U . 'documents/list/', 's', $_L['Deleted Successfully']);
break;
case 'unit':
$id = route(2);
$id = str_replace('c', '', $id);
$unit = ORM::for_table('sys_units')->find($id);
if ($unit) {
$unit->delete();
r2(U . 'settings/units/', 's', $_L['Deleted Successfully']);
}
break;
case 'lead':
$id = route(2);
$id = str_replace('did', '', $id);
$lead = ORM::for_table('crm_leads')->find($id);
if ($lead) {
$lead->delete();
}
echo 'ok';
break;
case 'multiple':
$type = _post('type');
if ($type === 'customers') {
if (!has_access($user->roleid, 'customers', 'delete')) {
permissionDenied();
}
$data = request()->all();
$ids_raw = $data['ids'] ?? [];
$ids = [];
foreach ($ids_raw as $id_single) {
$id = str_replace('row_', '', $id_single);
$ids[] = $id;
}
$contacts = ORM::for_table('crm_accounts')
->where_id_in($ids)
->delete_many();
r2(U . 'contacts/list/', 's', $_L['Deleted Successfully']);
}
break;
case 'email-templates':
$id = route(2);
$id = str_replace('ed', '', $id);
$d = ORM::for_table('sys_email_templates')->find($id);
if ($d) {
if ($d->core == 'Yes') {
r2(
U . 'settings/email-templates/',
'e',
'Unable to Delete System Email Templates'
);
} else {
$d->delete();
}
}
r2(U . 'settings/email-templates/', 's', $_L['Deleted Successfully']);
break;
case 'tasks':
$id = route(2);
$id = str_replace('d_', '', $id);
$d = ORM::for_table('sys_tasks')->find($id);
if ($d) {
$d->delete();
_msglog('s', $_L['Deleted Successfully']);
}
echo '1';
break;
case 'expense_type':
$id = route(2);
$id = str_replace('d_', '', $id);
$d = ORM::for_table('expense_types')->find($id);
if ($d) {
$d->delete();
}
r2(U . 'settings/expense-types', 's', $_L['Deleted Successfully']);
break;
case 'sms':
$id = route(2);
$sms = SMS::find($id);
if ($sms) {
$sms->delete();
}
r2(U . 'sms/init/sent/', 's', $_L['Deleted Successfully']);
break;
case 'purchase':
if (!has_access($user->roleid, 'sales', 'delete')) {
permissionDenied();
}
$id = $routes['2'];
$id = str_replace('iid', '', $id);
$d = ORM::for_table('sys_purchases')->find($id);
if ($d) {
//delete all invoice items
$x = ORM::for_table('sys_purchaseitems')
->where('invoiceid', $id)
->delete_many();
$d->delete();
r2(U . 'purchases/list', 's', $_L['Deleted Successfully']);
} else {
echo 'Invoice not found';
}
break;
case 'password':
$id = route(2);
$id = str_replace('c', '', $id);
$p = PasswordManager::find($id);
if ($p) {
$p->delete();
}
r2(U . 'password_manager', 's', $_L['Deleted Successfully']);
break;
case 'asset-category':
$id = route(2);
$asset_category = AssetCategory::find($id);
if ($asset_category) {
$asset_category->delete();
}
r2(U . 'assets/list', 's', $_L['Deleted Successfully']);
break;
case 'asset':
if (!has_access($user->roleid, 'assets', 'delete')) {
permissionDenied();
}
$id = route(2);
$asset = AccountingAsset::find($id);
if ($id !== '' && $id !== '0') {
$asset->delete();
}
r2(U . 'assets/list', 's', $_L['Deleted Successfully']);
break;
case 'employee':
if (APP_STAGE == 'Demo') {
r2(
U . 'hrm/employees',
'e',
'Sorry! This option is disabled in the demo mode.'
);
}
$id = route(2);
$employee = Employee::find($id);
if ($employee) {
$employee->delete();
}
r2(U . 'hrm/employees', 's', $_L['Deleted Successfully']);
break;
default:
echo 'action not defined';
}