(description)
* @version GIT: $Id$
* @since Version 0.0.1
* @filesource
*
*/
class Expence extends Admin_Controller
{
/**
* [__construct description]
*
* @method __construct
*/
public function __construct()
{
// To inherit directly the attributes of the parent class.
parent::__construct();
### Syntax : $this->load->model('Model Path' , 'Alias name');
### The second parameter (optional) is used to call the method.
$this->load->model('MY_Model','MY_Model');
$this->load->model('Expence_model','Expence_model');
$this->load->model('Employee/Employee_model','Emp_model');
$this->load->model('Audit/Audit_model','audit_model');
$this->load->helper(array('form', 'url'));
}
public function expence_form()
{
$id = $this->input->get('id');
$expense_data = $this->Expence_model->get_expense_data($id);
$expense_child_data = $this->Expence_model->get_expense_child_data($id);
$this->layout->set('expense_child_data', $expense_child_data);
$this->layout->buffer('main_content', 'Expence/expence_form');
$this->layout->render('Employee_Layout');
}
public function get_emp_name()
{
$emp = $this->Expence_model->get_employee_name(user()->business_id);
$html = '';
foreach($emp as $val)
{
if($val->user_id != user()->id)
{
$html .='';
}
}
echo json_encode($html);
}
public function rise_expence_request()
{
$data = $this->input->post('emp_id');
if(!empty($data)){
$emp_id =$this->input->post('emp_id');
}else{
$emp_id = user()->id;
}
$get_manager_id = $this->Expence_model->get_manager_id($emp_id);
if($get_manager_id[0]->manager == null){
$manager = 0;
}else{
$manager = $get_manager_id[0]->manager;
}
$data1 = array(
'created_by'=>user()->id,
'requested_for'=>$emp_id ,
'expense_name'=>$this->input->post('expense_name'),
'business_reason'=>$this->input->post('business_reason'),
'manager_id' => $manager,
'business_id' => user()->business_id,
'status'=>'Draft',
);
$table="expense";
$create_Expence = $this->MY_Model->insert($data1,$table);
$count = count($this->input->post('date_of_expence'));
for($i=0;$i<$count;$i++)
{
$data2 = array(
'expense_id' => $create_Expence,
'emp_id'=>$emp_id ,
'business_id' => user()->business_id,
'manager_id' => $manager,
'status' => 'Draft',
'date_of_expense'=> $this->input->post('date_of_expence')[$i],
'amount' => $this->input->post('amount')[$i],
'description' => $this->input->post('description')[$i],
);
$this->load->library('upload');
$config['upload_path'] = APPPATH. '../assets/uploads/Expence_Bill/';
$config['allowed_types'] = 'jpg|png|jpeg|pdf';
$config['max_size'] = 80000;
$config['file_name'] = time(). '_' . $_FILES['bill']['name'][$i];
$_FILES['userfile']['name'] = $_FILES['bill']['name'][$i];
$_FILES['userfile']['type'] = $_FILES['bill']['type'][$i];
$_FILES['userfile']['tmp_name'] = $_FILES['bill']['tmp_name'][$i];
$_FILES['userfile']['error'] = $_FILES['bill']['error'][$i];
$_FILES['userfile']['size'] = $_FILES['bill']['size'][$i];
$this->upload->initialize($config);
if ($this->upload->do_upload('userfile'))
{
$upload_image = $this->upload->data();
$data2['bill'] = $upload_image['file_name'];
}
else
{
$error = $this->upload->display_errors();
}
$table="expense_child";
$create_expence_list = $this->MY_Model->insert($data2,$table);
}
$this->session->set_flashdata('Create', '1');
redirect('Expence/Emp_Expence_List');
}
public function edit_expence($id)
{
$expense_data = $this->Expence_model->get_expense_data($id);
$expense_child_data = $this->Expence_model->get_expense_child_data($id);
$this->layout->set('expense_data', $expense_data);
$this->layout->set('expense_child_data', $expense_child_data);
$this->layout->buffer('main_content', 'Expence/edit_expence');
$this->layout->render('Employee_Layout');
}
public function edit_rise_expence_request()
{
$id = $this->input->post('expense_pid');
$data = $this->input->post('emp_id');
if(!empty($data)){
$emp_id =$this->input->post('emp_id');
}else{
$emp_id = user()->id;
}
$get_manager_id = $this->Expence_model->get_manager_id($emp_id);
if($get_manager_id[0]->manager == null){
$manager = 0;
}else{
$manager = $get_manager_id[0]->manager;
}
$data1 = array(
'created_by'=>user()->id,
'requested_for'=>$emp_id ,
'expense_name'=>$this->input->post('expense_name'),
'business_reason'=>$this->input->post('business_reason'),
'manager_id' => $manager,
'business_id' => user()->business_id,
'status'=>'Draft',
);
$table="expense";
$create_Expence = $this->MY_Model->edit_option($data1, $id, $table);
$count = count($this->input->post('date_of_expence'));
for($i=0;$i<$count;$i++)
{
$expense_child_id = $this->input->post('expense_child_id')[$i];
$data2 = array(
'date_of_expense'=> $this->input->post('date_of_expence')[$i],
'amount' => $this->input->post('amount')[$i],
'description' => $this->input->post('description')[$i],
);
$this->load->library('upload');
$config['upload_path'] = APPPATH. '../assets/uploads/Expence_Bill/';
$config['allowed_types'] = 'jpg|png|jpeg|pdf';
$config['max_size'] = 80000;
$config['file_name'] = time(). '_' . $_FILES['bill']['name'][$i];
$_FILES['userfile']['name'] = $_FILES['bill']['name'][$i];
$_FILES['userfile']['type'] = $_FILES['bill']['type'][$i];
$_FILES['userfile']['tmp_name'] = $_FILES['bill']['tmp_name'][$i];
$_FILES['userfile']['error'] = $_FILES['bill']['error'][$i];
$_FILES['userfile']['size'] = $_FILES['bill']['size'][$i];
$this->upload->initialize($config);
if ($this->upload->do_upload('userfile'))
{
$upload_image = $this->upload->data();
$data2['bill'] = $upload_image['file_name'];
}
else
{
$error = $this->upload->display_errors();
}
$table="expense_child";
$update_expence_list = $this->MY_Model->edit_option($data2, $expense_child_id, $table);
}
if($this->input->post('date_of_expence2'))
{
$count = count($this->input->post('date_of_expence2'));
for($i=0;$i<$count;$i++)
{
$data2 = array(
'expense_id' => $this->input->post('expense_pid'),
'emp_id'=>$emp_id ,
'business_id' => user()->business_id,
'manager_id' => $manager,
'status' => 'Draft',
'date_of_expense'=> $this->input->post('date_of_expence2')[$i],
'amount' => $this->input->post('amount2')[$i],
'description' => $this->input->post('description2')[$i],
);
$this->load->library('upload');
$config['upload_path'] = APPPATH. '../assets/uploads/Expence_Bill/';
$config['allowed_types'] = 'jpg|png|jpeg|pdf';
$config['max_size'] = 80000;
$config['file_name'] = time(). '_' . $_FILES['bill2']['name'][$i];
$_FILES['userfile']['name'] = $_FILES['bill2']['name'][$i];
$_FILES['userfile']['type'] = $_FILES['bill2']['type'][$i];
$_FILES['userfile']['tmp_name'] = $_FILES['bill2']['tmp_name'][$i];
$_FILES['userfile']['error'] = $_FILES['bill2']['error'][$i];
$_FILES['userfile']['size'] = $_FILES['bill2']['size'][$i];
$this->upload->initialize($config);
if ($this->upload->do_upload('userfile'))
{
$upload_image = $this->upload->data();
$data2['bill'] = $upload_image['file_name'];
}
else
{
$error = $this->upload->display_errors();
}
$table="expense_child";
$create_expence_list = $this->MY_Model->insert($data2,$table);
//print_r($this->db->last_query()); die;
}
}
redirect('Expence/Emp_Expence_List');
}
public function expence_list()
{
$business_id = user()->business_id;
$expence_list = $this->Expence_model->get_expence_list($business_id);
$get_count_amount = $this->Expence_model->get_count_amount();
// $get_business_admin = $this->Expence_model->get_business_admin();
$this->layout->set('count_amount', $get_count_amount);
$this->layout->set('tableData', $expence_list);
$this->layout->buffer('main_content', 'Expence/expence_list');
$this->layout->render('Employee_Layout');
}
public function expence_list_view($id)
{
$expence_list = $this->Expence_model->get_expense_child_data2($id);
$get_expense_name = $this->Expence_model->get_expense_data_not_md5($id);
$expence_list_with_delegation = $this->Expence_model->get_all_leave_request_by_manager_id_with_delegation(user()->business_id, user()->id);
if($expence_list_with_delegation == NULL){
$expence_list_with_delegation = [];
}
$this->layout->set('tableData', $expence_list);
$this->layout->set('expense_name', $get_expense_name);
$this->layout->buffer('main_content', 'Expence/expence_list_view');
$this->layout->render('Employee_Layout');
}
public function expence_list2()
{
$id = $this->input->get('id');
$expence_list2 = $this->Expence_model->get_expence_child_list($id);
echo json_encode($expence_list2);
}
public function Emp_Expence_List()
{
$business_id = user()->business_id;
$expence_list = $this->Expence_model->get_expence_list_all($business_id);
$get_count_amount = $this->Expence_model->get_count_amount();
$this->layout->set('count_amount', $get_count_amount);
$this->layout->set('tableData', $expence_list);
$this->layout->buffer('main_content', 'Expence/emp_expence_list');
$this->layout->render('Employee_Layout');
}
public function Emp_Expence_List_view($id)
{
$expence_list = $this->Expence_model->get_expense_child_data2($id);
$get_expense_name = $this->Expence_model->get_expense_data_not_md5($id);
$this->layout->set('tableData', $expence_list);
$this->layout->set('expense_name', $get_expense_name);
$this->layout->buffer('main_content', 'Expence/emp_expence_list_view');
$this->layout->render('Employee_Layout');
}
public function getDeleteConfirmationPopup()
{
$data = array();
$htmlPage = $this->load->view('confirmation_popup.php',$data,true);
echo json_encode($htmlPage);
}
public function Approve_Expence()
{
$id=$this->input->post('id');
// echo $id; die;
$action['status'] = 'Approved';
$action['approved_by']= user()->name;
$action['approved_at'] = date('Y-m-d h:i:s');
$table = "expense";
$expence_id = $this->MY_Model->edit_option($action, $id, $table);
$this->Expence_model->approve_child_expense($action, $id);
if($expence_id){
$code = 'APPROVE_EXPENCE';
$type = 'Email';
$this->notification->sendNotificationForExpense($id, $code, $type);
}
$this->session->set_flashdata('Create', '1');
redirect('Expence/expence_list');
}
public function Approve_Child_Expence()
{
if($this->input->post('declinedata'))
{
$id=$this->input->post('id');
$expense_id=$this->input->post('expence_id');
$decline_action['status'] = 'Declined';
$decline_action['decline_by'] = user()->name;
$decline_action['decline_reason'] = $this->input->post('declinedata');
$is_decline = $this->Expence_model->approve_child_expense_2($decline_action, $id);
if($is_decline == true)
{
$count = $this->Expence_model->get_status_update($expense_id);
$table = "expense";
if($count->pending_count >= 1)
{
$status_update['status'] = 'pending';
$this->MY_Model->edit_option($status_update, $expense_id, $table);
}
else if($count->approve_count >= 1 && $count->declined_count >= 1)
{
$status_update['status'] = 'Partially approved';
$id_for_expence = $this->MY_Model->edit_option($status_update, $expense_id, $table);
if($id_for_expence){
$code = 'APPROVE_EXPENCE';
$type = 'Email';
$this->notification->sendNotificationForExpense($expense_id, $code, $type);
}
}
else if($count->declined_count >= 1 && $count->approve_count == 0 && $count->pending_count == 0)
{
$status_update['status'] = 'Declined';
$status_update['decline_by'] = user()->name;
return $this->MY_Model->edit_option($status_update, $expense_id, $table);
}
}
redirect('Expence/expence_list_view/'.$this->input->post('expence_id'));
}
else
{
$id=$this->input->post('id');
$expense_id=$this->input->post('expence_id');
$action['status'] = 'Approved';
$action['approved_at'] = date('Y-m-d h:i:s');
$action['approved_by']= user()->name;
$is_approve = $this->Expence_model->approve_child_expense_2($action, $id);
if($is_approve == true)
{
$count = $this->Expence_model->get_status_update($expense_id);
$table = "expense";
if($count->pending_count >= 1)
{
$status_update['status'] = 'pending';
$this->MY_Model->edit_option($status_update, $expense_id, $table);
}
else if($count->approve_count >= 1 && $count->declined_count >= 1)
{
$status_update['status'] = 'Partially approved';
$id_for_expence = $this->MY_Model->edit_option($status_update, $expense_id, $table);
if($id_for_expence){
$code = 'APPROVE_EXPENCE';
$type = 'Email';
$this->notification->sendNotificationForExpense($expense_id, $code, $type);
}
}
else if($count->approve_count >= 1 && $count->declined_count == 0 && $count->pending_count == 0)
{
$status_update['status'] = 'Approved';
$action['approved_at'] = date('Y-m-d h:i:s');
$status_update['approved_by'] = user()->name;
$this->MY_Model->edit_option($status_update, $expense_id, $table);
}
}
redirect('Expence/expence_list_view/'.$this->input->post('expence_id'));
}
}
public function getDeclineConfirmationPopup()
{
$data = array();
$htmlPage = $this->load->view('confirmation_popup_2.php',$data,true);
echo json_encode($htmlPage);
}
public function Decline_expence()
{
$id=$this->input->post('id');
// echo $id; die;
$data['status'] = 'Declined';
$data['decline_by'] = user()->name;
$data['decline_reason'] = $this->input->get('declinedata');
$expence_id = $this->Expence_model->ExpenceDecline($id, $data);
$this->Expence_model->Expence_Decline_Child($id, $data);
if($expence_id){
$code = 'DECLINE_EXPENCE';
$type = 'Email';
$this->notification->sendNotificationForExpense($id, $code, $type);
}
redirect('Expence/expence_list');
}
public function getCancelConfirmationPopup()
{
$data = array();
$htmlPage = $this->load->view('confirmation_popup.php',$data,true);
echo json_encode($htmlPage);
}
public function cancled_expence()
{
$id=$this->input->post('id');
$data['status'] = 'Cancelled';
$data['cancelled_at'] = date('Y-m-d h:i:s');
$first = $this->Expence_model->Expencecancle($id, $data);
$second = $this->Expence_model->Expencecancle_child($id, $data);
redirect('Expence/emp_expence_list');
}
public function remove_row()
{
$get_count_from_child = $this->Expence_model->get_expense_child_data(md5($this->input->post('expence_id')));
$count = count($get_count_from_child);
if($count === 1)
{
$this->session->set_flashdata('remove_row', '1');
redirect('Expence/edit_expence/'.md5($this->input->post('expence_id')));
}
else
{
$id = $this->input->post('id');
$delete = $this->Expence_model->remove_row($id);
redirect('Expence/edit_expence/'.md5($this->input->post('expence_id')));
}
}
public function submit()
{
$id = $this->input->post('id');
$table1 = 'expense';
$data['status'] = "pending";
$data['updated_on'] = date('Y-m-d h:i:s');
$expence_id = $this->MY_Model->edit_option($data, $id, $table1);
$expence_child_id = $this->Expence_model->update_to_submit_all($id, $data);
if($expence_child_id){
$code = 'EXPENCE_CLAIM';
$type = 'Email';
$this->notification->sendNotificationForExpense($id, $code, $type);
}
redirect('Expence/emp_expence_list');
}
}