(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() { ## Logged In Variables $logged_in_user = user()->id; $logged_in_business = user()->business_id; ## Form Requested Data $requested_data = $this->input->post(); //Employee id $employee_id = (isset($requested_data['emp_id']) && !empty($requested_data['emp_id'])) ? $requested_data['emp_id'] : $logged_in_user; //Manager id $get_manager_details = $this->Expence_model->get_manager_id($employee_id); $manager_id = ((!empty($get_manager_details)) && $get_manager_details[0]->manager != null) ? $get_manager_details[0]->manager : 0; // Table Name Declarations $expense_master_table = "expense"; $expense_child_table = "expense_child"; // Array formation for updating the master details $expense_master_arr = array( 'created_by'=>$logged_in_user, 'requested_for'=>$employee_id, 'expense_name'=>$requested_data['expense_name'], 'business_reason'=>$requested_data['business_reason'], 'manager_id' => $manager_id, 'business_id' => $logged_in_business, 'status'=>'Draft', ); ## Retrive the Inserted ID from Master Table $create_expence = $this->MY_Model->insert($expense_master_arr,$expense_master_table); $first = $requested_data['date_of_expence_new']; ## Get the Count for Child Expence $count = (gettype($first) == 'array') ? count($first) : 0; if ($count > 0) { for ($i = 0; $i < $count; $i++) { ##Preparing Array Stored in Expence child Table $expense_child_arr = array( 'expense_id' => $create_expence, 'emp_id'=>$employee_id , 'business_id' => $logged_in_business, 'manager_id' => $manager_id, 'status' => 'Draft', 'date_of_expense'=> $this->input->post('date_of_expence_new')[$i], 'date_of_expense_new' => date('Y-m-d', strtotime($this->input->post('date_of_expence_new')[$i])), 'amount' => $this->input->post('amount')[$i], 'description' => $this->input->post('description')[$i], ); if (!empty($_FILES['bill']['name'][$i])) { $upload_result = $this->upload_file($_FILES['bill'], $i); if ($upload_result['success']) { $expense_child_arr['bill'] = $upload_result['file_name']; } else { log_message('error', $upload_result['error']); } } $create_expence_child = $this->MY_Model->insert($expense_child_arr, $expense_child_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() { ## Logged In Variables $logged_in_user = user()->id; $logged_in_business = user()->business_id; ## Form Requested Data $requested_data = $this->input->post(); ## Expense primary key $id = $requested_data['expense_pid']; // Employee id $employee_id = (isset($requested_data['emp_id']) && !empty($requested_data['emp_id'])) ? $requested_data['emp_id'] : $logged_in_user; // Manager id $get_manager_details = $this->Expence_model->get_manager_id($employee_id); $manager_id = ((!empty($get_manager_details)) && $get_manager_details[0]->manager != null) ? $get_manager_details[0]->manager : 0; // Table Name Declarations $expense_master_table = "expense"; $expense_child_table = "expense_child"; // Array formation for updating the master details $expense_master_arr = array( 'created_by' => $logged_in_user, 'requested_for' => $employee_id, 'expense_name' => $requested_data['expense_name'], 'business_reason' => $requested_data['business_reason'], 'manager_id' => $manager_id, 'business_id' => $logged_in_business, 'status' => 'Draft', ); // Update process for master $update_expense = $this->MY_Model->edit_option($expense_master_arr, $id, $expense_master_table); log_message('info', "update_expense_master - expense_id => ".$id." is updated == ".$update_expense); $first = $requested_data['date_of_expence_new']; $count = (gettype($first) == 'array') ? count($first) : 0; if ($count > 0) { for ($i = 0; $i < $count; $i++) { $expense_child_id = $this->input->post('expense_child_id')[$i]; $first_child = array( 'date_of_expense' => $this->input->post('date_of_expence_new')[$i], 'date_of_expense_new' => date('Y-m-d', strtotime($this->input->post('date_of_expence_new')[$i])), 'amount' => $this->input->post('amount')[$i], 'description' => $this->input->post('description')[$i], ); $update_expense_list = $this->MY_Model->edit_option($first_child, $expense_child_id, $expense_child_table); log_message('info', "update_expense_list - expense_id => ".$id." is updated == ".$update_expense_list); } } // Details gathering from JavaScript new entries $second = $this->input->post('date_of_expence_new2'); $additional_count = (gettype($second) == 'array') ? count($second) : 0; if ($additional_count > 0) { for ($j = 0; $j < $additional_count; $j++) { $second_child = array( 'expense_id' => $id, 'emp_id' => $employee_id, 'business_id' => user()->business_id, 'manager_id' => $manager_id, 'status' => 'Draft', 'date_of_expense' => date('d-m-Y', strtotime($this->input->post('date_of_expence_new2')[$j])), 'date_of_expense_new' => date('Y-m-d', strtotime($this->input->post('date_of_expence_new2')[$j])), 'amount' => $this->input->post('amount2')[$j], 'description' => $this->input->post('description2')[$j], ); if (!empty($_FILES['bill2']['name'][$j])) { $upload_result = $this->upload_file($_FILES['bill2'], $j); if ($upload_result['success']) { $second_child['bill'] = $upload_result['file_name']; } else { log_message('error', $upload_result['error']); } } $create_expense_list = $this->MY_Model->insert($second_child, $expense_child_table); log_message('info', "create_expense_list - expense_id => ".$id." is created == ".$create_expense_list); } } redirect('Expence/Emp_Expence_List'); } public function upload_file($file_data, $index) { $this->load->library('upload'); $upload_path = APPPATH . '../assets/uploads/Expense_Bill/'; $config['upload_path'] = realpath($upload_path); $config['allowed_types'] = 'jpg|png|jpeg|pdf'; $config['max_size'] = 80000; $config['file_name'] = time() . '_' . $file_data['name'][$index]; $_FILES['userfile']['name'] = $file_data['name'][$index]; $_FILES['userfile']['type'] = $file_data['type'][$index]; $_FILES['userfile']['tmp_name'] = $file_data['tmp_name'][$index]; $_FILES['userfile']['error'] = $file_data['error'][$index]; $_FILES['userfile']['size'] = $file_data['size'][$index]; $this->upload->initialize($config); if ($this->upload->do_upload('userfile')) { $upload_data = $this->upload->data(); return array('success' => true, 'file_name' => $upload_data['file_name']); } else { $error = $this->upload->display_errors(); return array('success' => false, 'error' => $error); } } 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() { $title = $this->input->get('title'); $data['title'] = $title ? $title : "Are you sure to Approve this Action"; $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 Reimbursed_Expence() { $id=$this->input->post('id'); $action['status'] = 'Reimbursed'; $action['reimbursed_by']= user()->name; $action['reimbursed_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 = 'REIMBURSED_EXPENCE'; $type = 'Email'; $this->notification->sendNotificationForExpense($id, $code, $type); } $this->session->set_flashdata('Create', '3'); redirect('Expence/expence_list'); } public function Approve_Child_Expence() { if($this->input->post('declinedata')) { // echo $this->input->post('expence_id'); // var_dump($this->input->post('expence_id')); // print_r($this->input->post('declinedata')); // echo $this->input->post('expence_id'); // die; $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'); // echo $this->input->post('expence_id'); $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; $this->MY_Model->edit_option($status_update, $expense_id, $table); } } redirect(base_url('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() { $title = $this->input->get('title'); $data['title'] = $title ? $title : "Are you sure to Approve this Action"; $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_data2($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'); } }