1970 lines
85 KiB
PHP
Executable File

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Finance extends MX_Controller {
function __construct() {
parent::__construct();
$this->load->model('finance_model');
$this->load->model('doctor/doctor_model');
$this->load->model('patient/patient_model');
$this->load->model('finance/pharmacy_model');
$this->load->model('accountant/accountant_model');
$this->load->model('receptionist/receptionist_model');
$this->load->module('sms');
require APPPATH . 'third_party/stripe/stripe-php/init.php';
$this->load->module('paypal');
if (!$this->ion_auth->in_group(array('admin', 'Accountant', 'Receptionist', 'Nurse', 'Laboratorist', 'Doctor'))) {
redirect('home/permission');
}
}
public function index() {
redirect('finance/financial_report');
}
public function payment() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$data['settings'] = $this->settings_model->getSettings();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('payment', $data);
$this->load->view('home/footer'); // just the header file
}
function amountDistribution() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$data['settings'] = $this->settings_model->getSettings();
$data['payments'] = $this->finance_model->getPayment();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('amount_distribution', $data);
$this->load->view('home/footer'); // just the header file
}
public function addPaymentView() {
$data = array();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['settings'] = $this->settings_model->getSettings();
$data['categories'] = $this->finance_model->getPaymentCategory();
$data['gateway'] = $this->finance_model->getGatewayByName($data['settings']->payment_gateway);
$data['patients'] = $this->patient_model->getPatient();
$data['doctors'] = $this->doctor_model->getDoctor();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_payment_view', $data);
$this->load->view('home/footer'); // just the header file
}
public function addPayment() {
$id = $this->input->post('id');
$item_selected = array();
$quantity = array();
$category_selected = array();
// $amount_by_category = $this->input->post('category_amount');
$category_selected = $this->input->post('category_name');
$item_selected = $this->input->post('category_id');
$quantity = $this->input->post('quantity');
$remarks = $this->input->post('remarks');
if (empty($item_selected)) {
$this->session->set_flashdata('feedback', 'Select a Item');
redirect('finance/addPaymentView');
} else {
$item_quantity_array = array();
$item_quantity_array = array_combine($item_selected, $quantity);
}
$cat_and_price = array();
if (!empty($item_quantity_array)) {
foreach ($item_quantity_array as $key => $value) {
$current_item = $this->finance_model->getPaymentCategoryById($key);
$category_price = $current_item->c_price;
$category_type = $current_item->type;
$qty = $value;
$cat_and_price[] = $key . '*' . $category_price . '*' . $category_type . '*' . $qty;
$amount_by_category[] = $category_price * $qty;
}
$category_name = implode(',', $cat_and_price);
} else {
$this->session->set_flashdata('feedback', 'Atend The Required Fields');
redirect('finance/addPaymentView');
}
$patient = $this->input->post('patient');
$p_name = $this->input->post('p_name');
$p_email = $this->input->post('p_email');
if (empty($p_email)) {
$p_email = $p_name . '-' . rand(1, 1000) . '-' . $p_name . '-' . rand(1, 1000) . '@example.com';
}
if (!empty($p_name)) {
$password = $p_name . '-' . rand(1, 100000000);
}
$p_phone = $this->input->post('p_phone');
$p_age = $this->input->post('p_age');
$p_gender = $this->input->post('p_gender');
$add_date = date('m/d/y');
$patient_id = rand(10000, 1000000);
$d_name = $this->input->post('d_name');
$d_email = $this->input->post('d_email');
if (empty($d_email)) {
$d_email = $d_name . '-' . rand(1, 1000) . '-' . $d_name . '-' . rand(1, 1000) . '@example.com';
}
if (!empty($d_name)) {
$password = $d_name . '-' . rand(1, 100000000);
}
$d_phone = $this->input->post('d_phone');
$doctor = $this->input->post('doctor');
$date = time();
$date_string = date('d-m-y', $date);
$discount = $this->input->post('discount');
if (empty($discount)) {
$discount = 0;
}
$amount_received = $this->input->post('amount_received');
$deposit_type = $this->input->post('deposit_type');
$user = $this->ion_auth->get_user_id();
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
// Validating Category Field
// $this->form_validation->set_rules('category_amount[]', 'Category', 'min_length[1]|max_length[100]');
// Validating Price Field
$this->form_validation->set_rules('patient', 'Patient', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Price Field
$this->form_validation->set_rules('discount', 'Discount', 'trim|min_length[1]|max_length[100]|xss_clean');
if ($this->form_validation->run() == FALSE) {
redirect('finance/addPaymentView');
} else {
if (!empty($p_name)) {
$data_p = array(
'patient_id' => $patient_id,
'name' => $p_name,
'email' => $p_email,
'phone' => $p_phone,
'sex' => $p_gender,
'age' => $p_age,
'add_date' => $add_date,
'how_added' => 'from_pos'
);
$username = $this->input->post('p_name');
// Adding New Patient
if ($this->ion_auth->email_check($p_email)) {
$this->session->set_flashdata('feedback', 'This Email Address Is Already Registered');
} else {
$dfg = 5;
$this->ion_auth->register($username, $password, $p_email, $dfg);
$ion_user_id = $this->db->get_where('users', array('email' => $p_email))->row()->id;
$this->patient_model->insertPatient($data_p);
$patient_user_id = $this->db->get_where('patient', array('email' => $p_email))->row()->id;
$id_info = array('ion_user_id' => $ion_user_id);
$this->patient_model->updatePatient($patient_user_id, $id_info);
}
// }
}
if (!empty($d_name)) {
$data_d = array(
'name' => $d_name,
'email' => $d_email,
'phone' => $d_phone,
);
$username = $this->input->post('d_name');
// Adding New Patient
if ($this->ion_auth->email_check($d_email)) {
$this->session->set_flashdata('feedback', 'This Email Address Is Already Registered');
} else {
$dfgg = 4;
$this->ion_auth->register($username, $password, $d_email, $dfgg);
$ion_user_id = $this->db->get_where('users', array('email' => $d_email))->row()->id;
$this->doctor_model->insertDoctor($data_d);
$doctor_user_id = $this->db->get_where('doctor', array('email' => $d_email))->row()->id;
$id_info = array('ion_user_id' => $ion_user_id);
$this->doctor_model->updateDoctor($doctor_user_id, $id_info);
}
}
if ($patient == 'add_new') {
$patient = $patient_user_id;
}
if ($doctor == 'add_new') {
$doctor = $doctor_user_id;
}
$amount = array_sum($amount_by_category);
$sub_total = $amount;
$discount_type = $this->finance_model->getDiscountType();
if (!empty($doctor)) {
$all_cat_name = explode(',', $category_name);
foreach ($all_cat_name as $indiviual_cat_nam) {
$indiviual_cat_nam1 = explode('*', $indiviual_cat_nam);
$qty = $indiviual_cat_nam1[3];
$d_commission = $this->finance_model->getPaymentCategoryById($indiviual_cat_nam1[0])->d_commission;
$h_commission = 100 - $d_commission;
$hospital_amount_per_unit = $indiviual_cat_nam1[1] * $h_commission / 100;
$hospital_amount_by_category[] = $hospital_amount_per_unit * $qty;
}
$hospital_amount = array_sum($hospital_amount_by_category);
if ($discount_type == 'flat') {
$flat_discount = $discount;
$gross_total = $sub_total - $flat_discount;
$doctor_amount = $amount - $hospital_amount - $flat_discount;
} else {
$flat_discount = $sub_total * ($discount / 100);
$gross_total = $sub_total - $flat_discount;
$doctor_amount = $amount - $hospital_amount - $flat_discount;
}
} else {
$doctor_amount = '0';
if ($discount_type == 'flat') {
$flat_discount = $discount;
$gross_total = $sub_total - $flat_discount;
$hospital_amount = $gross_total;
} else {
$flat_discount = $amount * ($discount / 100);
$gross_total = $sub_total - $flat_discount;
$hospital_amount = $gross_total;
}
}
$data = array();
if (!empty($patient)) {
$patient_details = $this->patient_model->getPatientById($patient);
$patient_name = $patient_details->name;
$patient_phone = $patient_details->phone;
$patient_address = $patient_details->address;
$patient_email = $patient_details->email;
} else {
$patient_name = 0;
$patient_phone = 0;
$patient_address = 0;
}
if (!empty($doctor)) {
$doctor_details = $this->doctor_model->getDoctorById($doctor);
$doctor_name = $doctor_details->name;
} else {
$doctor_name = 0;
}
if (empty($id)) {
$data = array(
'category_name' => $category_name,
'patient' => $patient,
'date' => $date,
'amount' => $sub_total,
'doctor' => $doctor,
'discount' => $discount,
'flat_discount' => $flat_discount,
'gross_total' => $gross_total,
'status' => 'unpaid',
'hospital_amount' => $hospital_amount,
'doctor_amount' => $doctor_amount,
'user' => $user,
'patient_name' => $patient_name,
'patient_phone' => $patient_phone,
'patient_address' => $patient_address,
'doctor_name' => $doctor_name,
'date_string' => $date_string,
'remarks' => $remarks
);
$this->finance_model->insertPayment($data);
$inserted_id = $this->db->insert_id();
//sms
$set['settings'] = $this->settings_model->getSettings();
$autosms = $this->sms_model->getAutoSmsByType('payment');
$message = $autosms->message;
$to = $patient_phone;
$name1 = explode(' ', $patient_name);
if (!isset($name1[1])) {
$name1[1] = null;
}
$data1 = array(
'firstname' => $name1[0],
'lastname' => $name1[1],
'name' => $patient_name,
'amount' => $gross_total,
);
if ($autosms->status == 'Active') {
$messageprint = $this->parser->parse_string($message, $data1);
$data2[] = array($to => $messageprint);
$this->sms->sendSms($to, $message, $data2);
}
//end
//email
$autoemail = $this->email_model->getAutoEmailByType('payment');
if ($autoemail->status == 'Active') {
$emailSettings = $this->email_model->getEmailSettings();
$message1 = $autoemail->message;
$messageprint1 = $this->parser->parse_string($message1, $data1);
$this->email->from($emailSettings->admin_email);
$this->email->to($patient_email);
$this->email->subject('Appointment confirmation');
$this->email->message($messageprint1);
$this->email->send();
}
//end
if ($deposit_type == 'Card') {
$gateway = $this->settings_model->getSettings()->payment_gateway;
if ($gateway == 'PayPal') {
$card_type = $this->input->post('card_type');
$card_number = $this->input->post('card_number');
$expire_date = $this->input->post('expire_date');
$cvv = $this->input->post('cvv');
$all_details = array(
'patient' => $patient,
'date' => $date,
'amount' => $sub_total,
'doctor' => $doctor,
'discount' => $discount,
'flat_discount' => $flat_discount,
'gross_total' => $gross_total,
'status' => 'unpaid',
'hospital_amount' => $hospital_amount,
'doctor_amount' => $doctor_amount,
'patient_name' => $patient_name,
'patient_phone' => $patient_phone,
'patient_address' => $patient_address,
'doctor_name' => $doctor_name,
'date_string' => $date_string,
'remarks' => $remarks,
'deposited_amount' => $amount_received,
'payment_id' => $inserted_id,
'card_type' => $card_type,
'card_number' => $card_number,
'expire_date' => $expire_date,
'cvv' => $cvv,
'from' => 'pos',
'user' => $user
);
// $data_payments['all_details'] = $all_details;
// $this->load->view('home/dashboard'); // just the header file
// $this->load->view('paypal/confirmation', $data_payments);
// $this->load->view('home/footer'); // just the header file
$this->paypal->Do_direct_payment($all_details);
} elseif ($gateway == 'Stripe') {
$card_number = $this->input->post('card_number');
$expire_date = $this->input->post('expire_date');
$cvv = $this->input->post('cvv');
$token = $this->input->post('token');
$stripe = $this->db->get_where('paymentGateway', array('name =' => 'Stripe'))->row();
\Stripe\Stripe::setApiKey($stripe->secret);
$charge = \Stripe\Charge::create(array(
"amount" => $amount_received * 100,
"currency" => "usd",
"source" => $token
));
$chargeJson = $charge->jsonSerialize();
redirect("finance/invoice?id=" . "$inserted_id");
} elseif ($gateway == 'Pay U Money') {
redirect("payu/check1?deposited_amount=" . "$amount_received" . '&payment_id=' . $inserted_id);
} else {
$this->session->set_flashdata('feedback', 'Payment failed. No Gateway Selected');
redirect("finance/invoice?id=" . "$inserted_id");
}
} else {
$data1 = array(
'date' => $date,
'patient' => $patient,
'deposited_amount' => $amount_received,
'payment_id' => $inserted_id,
'amount_received_id' => $inserted_id . '.' . 'gp',
'deposit_type' => $deposit_type,
'user' => $user
);
$this->finance_model->insertDeposit($data1);
$data_payment = array('amount_received' => $amount_received, 'deposit_type' => $deposit_type);
$this->finance_model->updatePayment($inserted_id, $data_payment);
$this->session->set_flashdata('feedback', 'Added');
redirect("finance/invoice?id=" . "$inserted_id");
}
} else {
$deposit_edit_amount = $this->input->post('deposit_edit_amount');
$deposit_edit_id = $this->input->post('deposit_edit_id');
if (!empty($deposit_edit_amount)) {
$deposited_edit = array_combine($deposit_edit_id, $deposit_edit_amount);
foreach ($deposited_edit as $key_deposit => $value_deposit) {
$data_deposit = array(
'deposited_amount' => $value_deposit
);
$this->finance_model->updateDeposit($key_deposit, $data_deposit);
}
}
$a_r_i = $id . '.' . 'gp';
$deposit_id = $this->db->get_where('patient_deposit', array('amount_received_id' => $a_r_i))->row();
$data = array(
'category_name' => $category_name,
'patient' => $patient,
'doctor' => $doctor,
'amount' => $sub_total,
'discount' => $discount,
'flat_discount' => $flat_discount,
'gross_total' => $gross_total,
'amount_received' => $amount_received,
'hospital_amount' => $hospital_amount,
'doctor_amount' => $doctor_amount,
'user' => $user,
'patient_name' => $patient_details->name,
'patient_phone' => $patient_details->phone,
'patient_address' => $patient_details->address,
'doctor_name' => $doctor_details->name,
'remarks' => $remarks
);
if (!empty($deposit_id->id)) {
$data1 = array(
'date' => $date,
'patient' => $patient,
'payment_id' => $id,
'deposited_amount' => $amount_received,
'user' => $user
);
$this->finance_model->updateDeposit($deposit_id->id, $data1);
} else {
$data1 = array(
'date' => $date,
'patient' => $patient,
'payment_id' => $id,
'deposited_amount' => $amount_received,
'amount_received_id' => $id . '.' . 'gp',
'user' => $user
);
$this->finance_model->insertDeposit($data1);
}
$this->finance_model->updatePayment($id, $data);
$this->session->set_flashdata('feedback', 'Updated');
redirect("finance/invoice?id=" . "$id");
}
}
}
function editPayment() {
if ($this->ion_auth->in_group(array('admin', 'Accountant', 'Receptionist'))) {
$data = array();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['settings'] = $this->settings_model->getSettings();
$data['categories'] = $this->finance_model->getPaymentCategory();
// $data['patients'] = $this->patient_model->getPatient();
// $data['doctors'] = $this->doctor_model->getDoctor();
$id = $this->input->get('id');
$data['payment'] = $this->finance_model->getPaymentById($id);
$data['patients'] = $this->patient_model->getPatientById($data['payment']->patient);
$data['doctors'] = $this->doctor_model->getDoctorById($data['payment']->doctor);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_payment_view', $data);
$this->load->view('home/footer'); // just the footer file
}
}
function delete() {
if ($this->ion_auth->in_group(array('admin', 'Accountant', 'Receptionist'))) {
$id = $this->input->get('id');
$this->finance_model->deletePayment($id);
$this->finance_model->deleteDepositByInvoiceId($id);
$this->session->set_flashdata('feedback', 'Deleted');
redirect('finance/payment');
}
}
public function otPayment() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$data['settings'] = $this->settings_model->getSettings();
$data['ot_payments'] = $this->finance_model->getOtPayment();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('ot_payment', $data);
$this->load->view('home/footer'); // just the header file
}
public function addOtPaymentView() {
$data = array();
$data['doctors'] = $this->doctor_model->getDoctor();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['settings'] = $this->settings_model->getSettings();
$data['categories'] = $this->finance_model->getPaymentCategory();
$data['patients'] = $this->patient_model->getPatient();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_ot_payment', $data);
$this->load->view('home/footer'); // just the header file
}
public function addOtPayment() {
$id = $this->input->post('id');
$patient = $this->input->post('patient');
$doctor_c_s = $this->input->post('doctor_c_s');
$doctor_a_s_1 = $this->input->post('doctor_a_s_1');
$doctor_a_s_2 = $this->input->post('doctor_a_s_2');
$doctor_anaes = $this->input->post('doctor_anaes');
$n_o_o = $this->input->post('n_o_o');
$c_s_f = $this->input->post('c_s_f');
$a_s_f_1 = $this->input->post('a_s_f_1');
$a_s_f_2 = $this->input->post('a_s_f_2');
$anaes_f = $this->input->post('anaes_f');
$ot_charge = $this->input->post('ot_charge');
$cab_rent = $this->input->post('cab_rent');
$seat_rent = $this->input->post('seat_rent');
$others = $this->input->post('others');
$discount = $this->input->post('discount');
$vat = $this->input->post('vat');
$amount_received = $this->input->post('amount_received');
$date = time();
$user = $this->ion_auth->get_user_id();
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
// Validating Patient Field
$this->form_validation->set_rules('patient', 'Patient', 'trim|required|min_length[2]|max_length[100]|xss_clean');
// Validating Consultant surgeon Field
$this->form_validation->set_rules('doctor_c_s', 'Consultant surgeon', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Assistant Surgeon Field
$this->form_validation->set_rules('doctor_a_s_1', 'Assistant Surgeon (1)', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Assistant Surgeon Field
$this->form_validation->set_rules('doctor_a_s_2', 'Assistant Surgeon(2)', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Anaesthisist Field
$this->form_validation->set_rules('doctor_anaes', 'Anaesthisist', 'trim|min_length[2]|max_length[100]|xss_clean');
// Validating Nature Of Operation Field
$this->form_validation->set_rules('n_o_o', 'Nature Of Operation', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Consultant Surgeon Fee Field
$this->form_validation->set_rules('c_s_f', 'Consultant Surgeon Fee', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Assistant surgeon fee Field
$this->form_validation->set_rules('a_s_f_1', 'Assistant surgeon fee', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Assistant surgeon fee Field
$this->form_validation->set_rules('a_s_f_2', 'Assistant surgeon fee', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Anaesthesist Field
$this->form_validation->set_rules('anaes_f', 'Anaesthesist', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating OT Charge Field
$this->form_validation->set_rules('ot_charge', 'OT Charge', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Cabin Rent Field
$this->form_validation->set_rules('cab_rent', 'Cabin Rent', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Seat Rent Field
$this->form_validation->set_rules('seat_rent', 'Seat Rent', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Others Field
$this->form_validation->set_rules('others', 'Others', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Discount Field
$this->form_validation->set_rules('discount', 'Discount', 'trim|min_length[1]|max_length[100]|xss_clean');
if ($this->form_validation->run() == FALSE) {
echo 'form validate noe nai re';
// redirect('accountant/add_new');
} else {
$doctor_fees = $c_s_f + $a_s_f_1 + $a_s_f_2 + $anaes_f;
$hospital_fees = $ot_charge + $cab_rent + $seat_rent + $others;
$amount = $doctor_fees + $hospital_fees;
$discount_type = $this->finance_model->getDiscountType();
if ($discount_type == 'flat') {
$amount_with_discount = $amount - $discount;
$gross_total = $amount_with_discount + $amount_with_discount * ($vat / 100);
$flat_discount = $discount;
$flat_vat = $amount_with_discount * ($vat / 100);
$hospital_fees = $hospital_fees - $flat_discount;
} else {
$flat_discount = $amount * ($discount / 100);
$amount_with_discount = $amount - $amount * ($discount / 100);
$gross_total = $amount_with_discount + $amount_with_discount * ($vat / 100);
$discount = $discount . '*' . $amount * ($discount / 100);
$flat_vat = $amount_with_discount * ($vat / 100);
$hospital_fees = $hospital_fees - $flat_discount;
}
$data = array();
if (empty($id)) {
$data = array(
'patient' => $patient,
'doctor_c_s' => $doctor_c_s,
'doctor_a_s_1' => $doctor_a_s_1,
'doctor_a_s_2' => $doctor_a_s_2,
'doctor_anaes' => $doctor_anaes,
'n_o_o' => $n_o_o,
'c_s_f' => $c_s_f,
'a_s_f_1' => $a_s_f_1,
'a_s_f_2' => $a_s_f_2,
'anaes_f' => $anaes_f,
'ot_charge' => $ot_charge,
'cab_rent' => $cab_rent,
'seat_rent' => $seat_rent,
'others' => $others,
'discount' => $discount,
'date' => $date,
'amount' => $amount,
'doctor_fees' => $doctor_fees,
'hospital_fees' => $hospital_fees,
'gross_total' => $gross_total,
'flat_discount' => $flat_discount,
'amount_received' => $amount_received,
'status' => 'unpaid',
'user' => $user
);
$this->finance_model->insertOtPayment($data);
$inserted_id = $this->db->insert_id();
$data1 = array(
'date' => $date,
'patient' => $patient,
'deposited_amount' => $amount_received,
'amount_received_id' => $inserted_id . '.' . 'ot',
'user' => $user
);
$this->finance_model->insertDeposit($data1);
$this->session->set_flashdata('feedback', 'Added');
redirect("finance/otInvoice?id=" . "$inserted_id");
} else {
$a_r_i = $id . '.' . 'ot';
$deposit_id = $this->db->get_where('patient_deposit', array('amount_received_id' => $a_r_i))->row()->id;
$data = array(
'patient' => $patient,
'doctor_c_s' => $doctor_c_s,
'doctor_a_s_1' => $doctor_a_s_1,
'doctor_a_s_2' => $doctor_a_s_2,
'doctor_anaes' => $doctor_anaes,
'n_o_o' => $n_o_o,
'c_s_f' => $c_s_f,
'a_s_f_1' => $a_s_f_1,
'a_s_f_2' => $a_s_f_2,
'anaes_f' => $anaes_f,
'ot_charge' => $ot_charge,
'cab_rent' => $cab_rent,
'seat_rent' => $seat_rent,
'others' => $others,
'discount' => $discount,
'amount' => $amount,
'doctor_fees' => $doctor_fees,
'hospital_fees' => $hospital_fees,
'gross_total' => $gross_total,
'flat_discount' => $flat_discount,
'amount_received' => $amount_received,
'user' => $user
);
$data1 = array(
'date' => $date,
'patient' => $patient,
'deposited_amount' => $amount_received,
'user' => $user
);
$this->finance_model->updateDeposit($deposit_id, $data1);
$this->finance_model->updateOtPayment($id, $data);
$this->session->set_flashdata('feedback', 'Updated');
redirect("finance/otInvoice?id=" . "$id");
}
}
}
function editOtPayment() {
if ($this->ion_auth->in_group(array('admin', 'Accountant'))) {
$data = array();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['settings'] = $this->settings_model->getSettings();
$data['patients'] = $this->patient_model->getPatient();
$id = $this->input->get('id');
$data['ot_payment'] = $this->finance_model->getOtPaymentById($id);
$data['doctors'] = $this->doctor_model->getDoctor();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_ot_payment', $data);
$this->load->view('home/footer'); // just the footer file
}
}
function otInvoice() {
$id = $this->input->get('id');
$data['settings'] = $this->settings_model->getSettings();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['ot_payment'] = $this->finance_model->getOtPaymentById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('ot_invoice', $data);
$this->load->view('home/footer'); // just the footer fi
}
function otPaymentDetails() {
$id = $this->input->get('id');
$patient = $this->input->get('patient');
$data['patient'] = $this->patient_model->getPatientByid($patient);
$data['settings'] = $this->settings_model->getSettings();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['ot_payment'] = $this->finance_model->getOtPaymentById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('ot_payment_details', $data);
$this->load->view('home/footer'); // just the footer fi
}
function otPaymentDelete() {
if ($this->ion_auth->in_group(array('admin', 'Accountant'))) {
$id = $this->input->get('id');
$this->finance_model->deleteOtPayment($id);
$this->session->set_flashdata('feedback', 'Deleted');
redirect('finance/otPayment');
}
}
function addPaymentByPatient() {
$data = array();
$id = $this->input->get('id');
$data['patient'] = $this->patient_model->getPatientById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('choose_payment_type', $data);
$this->load->view('home/footer'); // just the footer fi
}
function addPaymentByPatientView() {
$id = $this->input->get('id');
$type = $this->input->get('type');
$data = array();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['settings'] = $this->settings_model->getSettings();
$data['categories'] = $this->finance_model->getPaymentCategory();
$data['gateway'] = $this->finance_model->getGatewayByName($data['settings']->payment_gateway);
$data['doctors'] = $this->doctor_model->getDoctor();
$data['patient'] = $this->patient_model->getPatientById($id);
if ($type == 'gen') {
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_payment_view_single', $data);
$this->load->view('home/footer'); // just the footer fi
} else {
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_ot_payment_view_single', $data);
$this->load->view('home/footer'); // just the footer fi
}
}
public function paymentCategory() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$data['categories'] = $this->finance_model->getPaymentCategory();
$data['settings'] = $this->settings_model->getSettings();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('payment_category', $data);
$this->load->view('home/footer'); // just the header file
}
public function addPaymentCategoryView() {
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_payment_category');
$this->load->view('home/footer'); // just the header file
}
public function addPaymentCategory() {
$id = $this->input->post('id');
$category = $this->input->post('category');
$type = $this->input->post('type');
$description = $this->input->post('description');
$c_price = $this->input->post('c_price');
$d_commission = $this->input->post('d_commission');
if (empty($c_price)) {
$c_price = 0;
}
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
// Validating Category Name Field
$this->form_validation->set_rules('category', 'Category', 'trim|required|min_length[1]|max_length[100]|xss_clean');
// Validating Description Field
$this->form_validation->set_rules('description', 'Description', 'trim|required|min_length[1]|max_length[100]|xss_clean');
// Validating Description Field
$this->form_validation->set_rules('c_price', 'Category price', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Doctor Commission Rate Field
$this->form_validation->set_rules('d_commission', 'Doctor Commission rate', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Description Field
$this->form_validation->set_rules('type', 'Type', 'trim|min_length[1]|max_length[100]|xss_clean');
if ($this->form_validation->run() == FALSE) {
if (!empty($id)) {
$this->session->set_flashdata('feedback', 'Validation Error !');
redirect('finance/editPaymentCategory?id=' . $id);
} else {
$data = array();
$data['setval'] = 'setval';
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_payment_category', $data);
$this->load->view('home/footer'); // just the header file
}
} else {
$data = array();
$data = array('category' => $category,
'description' => $description,
'type' => $type,
'c_price' => $c_price,
'd_commission' => $d_commission
);
if (empty($id)) {
$this->finance_model->insertPaymentCategory($data);
$this->session->set_flashdata('feedback', 'Added');
} else {
$this->finance_model->updatePaymentCategory($id, $data);
$this->session->set_flashdata('feedback', 'Updated');
}
redirect('finance/paymentCategory');
}
}
function editPaymentCategory() {
$data = array();
$id = $this->input->get('id');
$data['category'] = $this->finance_model->getPaymentCategoryById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_payment_category', $data);
$this->load->view('home/footer'); // just the footer file
}
function deletePaymentCategory() {
$id = $this->input->get('id');
$this->finance_model->deletePaymentCategory($id);
redirect('finance/paymentCategory');
}
public function expense() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$data['settings'] = $this->settings_model->getSettings();
$data['expenses'] = $this->finance_model->getExpense();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('expense', $data);
$this->load->view('home/footer'); // just the header file
}
public function addExpenseView() {
$data = array();
$data['settings'] = $this->settings_model->getSettings();
$data['categories'] = $this->finance_model->getExpenseCategory();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_expense_view', $data);
$this->load->view('home/footer'); // just the header file
}
public function addExpense() {
$id = $this->input->post('id');
$category = $this->input->post('category');
$date = time();
$amount = $this->input->post('amount');
$user = $this->ion_auth->get_user_id();
$note = $this->input->post('note');
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
// Validating Category Field
$this->form_validation->set_rules('category', 'Category', 'trim|required|min_length[1]|max_length[100]|xss_clean');
// Validating Generic Name Field
$this->form_validation->set_rules('amount', 'Amount', 'trim|required|min_length[1]|max_length[100]|xss_clean');
// Validating Note Field
$this->form_validation->set_rules('note', 'Note', 'trim|min_length[1]|max_length[100]|xss_clean');
if ($this->form_validation->run() == FALSE) {
if (!empty($id)) {
$this->session->set_flashdata('feedback', 'Validation Error !');
redirect('finance/editExpense?id=' . $id);
} else {
$data = array();
$data['setval'] = 'setval';
$data['settings'] = $this->settings_model->getSettings();
$data['categories'] = $this->finance_model->getExpenseCategory();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_expense_view', $data);
$this->load->view('home/footer'); // just the header file
}
} else {
$data = array();
if (empty($id)) {
$data = array(
'category' => $category,
'date' => $date,
'datestring' => date('d/m/y', $date),
'amount' => $amount,
'note' => $note,
'user' => $user
);
} else {
$data = array(
'category' => $category,
'amount' => $amount,
'note' => $note,
'user' => $user,
);
}
if (empty($id)) {
$this->finance_model->insertExpense($data);
$this->session->set_flashdata('feedback', 'Added');
} else {
$this->finance_model->updateExpense($id, $data);
$this->session->set_flashdata('feedback', 'Updated');
}
redirect('finance/expense');
}
}
function editExpense() {
$data = array();
$data['categories'] = $this->finance_model->getExpenseCategory();
$data['settings'] = $this->settings_model->getSettings();
$id = $this->input->get('id');
$data['expense'] = $this->finance_model->getExpenseById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_expense_view', $data);
$this->load->view('home/footer'); // just the footer file
}
function deleteExpense() {
$id = $this->input->get('id');
$this->finance_model->deleteExpense($id);
redirect('finance/expense');
}
public function expenseCategory() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$data['categories'] = $this->finance_model->getExpenseCategory();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('expense_category', $data);
$this->load->view('home/footer'); // just the header file
}
public function addExpenseCategoryView() {
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_expense_category');
$this->load->view('home/footer'); // just the header file
}
public function addExpenseCategory() {
$id = $this->input->post('id');
$category = $this->input->post('category');
$description = $this->input->post('description');
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
// Validating Category Name Field
$this->form_validation->set_rules('category', 'Category', 'trim|required|min_length[1]|max_length[100]|xss_clean');
// Validating Description Field
$this->form_validation->set_rules('description', 'Description', 'trim|required|min_length[1]|max_length[100]|xss_clean');
if ($this->form_validation->run() == FALSE) {
if (!empty($id)) {
$this->session->set_flashdata('feedback', 'Validation Error !');
redirect('finance/editExpenseCategory?id=' . $id);
} else {
$data = array();
$data['setval'] = 'setval';
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_expense_category', $data);
$this->load->view('home/footer'); // just the header file
}
} else {
$data = array();
$data = array('category' => $category,
'description' => $description
);
if (empty($id)) {
$this->finance_model->insertExpenseCategory($data);
$this->session->set_flashdata('feedback', 'Added');
} else {
$this->finance_model->updateExpenseCategory($id, $data);
$this->session->set_flashdata('feedback', 'Updated');
}
redirect('finance/expenseCategory');
}
}
function editExpenseCategory() {
$data = array();
$id = $this->input->get('id');
$data['category'] = $this->finance_model->getExpenseCategoryById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('add_expense_category', $data);
$this->load->view('home/footer'); // just the footer file
}
function deleteExpenseCategory() {
$id = $this->input->get('id');
$this->finance_model->deleteExpenseCategory($id);
redirect('finance/expenseCategory');
}
function invoice() {
$id = $this->input->get('id');
$data['settings'] = $this->settings_model->getSettings();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['payment'] = $this->finance_model->getPaymentById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('invoice', $data);
$this->load->view('home/footer'); // just the footer fi
}
function printInvoice() {
$id = $this->input->get('id');
$data['settings'] = $this->settings_model->getSettings();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['payment'] = $this->finance_model->getPaymentById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('print_invoice', $data);
$this->load->view('home/footer'); // just the footer fi
}
function expenseInvoice() {
$id = $this->input->get('id');
$data['settings'] = $this->settings_model->getSettings();
$data['expense'] = $this->finance_model->getExpenseById($id);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('expense_invoice', $data);
$this->load->view('home/footer'); // just the footer fi
}
function amountReceived() {
$id = $this->input->post('id');
$amount_received = $this->input->post('amount_received');
$previous_amount_received = $this->db->get_where('payment', array('id' => $id))->row()->amount_received;
$amount_received = $amount_received + $previous_amount_received;
$data = array();
$data = array('amount_received' => $amount_received);
$this->finance_model->amountReceived($id, $data);
redirect('finance/invoice?id=' . $id);
}
function otAmountReceived() {
$id = $this->input->post('id');
$amount_received = $this->input->post('amount_received');
$previous_amount_received = $this->db->get_where('ot_payment', array('id' => $id))->row()->amount_received;
$amount_received = $amount_received + $previous_amount_received;
$data = array();
$data = array('amount_received' => $amount_received);
$this->finance_model->otAmountReceived($id, $data);
redirect('finance/oTinvoice?id=' . $id);
}
function patientPaymentHistory() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$patient = $this->input->get('patient');
if (empty($patient)) {
$patient = $this->input->post('patient');
}
$data['settings'] = $this->settings_model->getSettings();
$date_from = strtotime($this->input->post('date_from'));
$date_to = strtotime($this->input->post('date_to'));
if (!empty($date_to)) {
$date_to = $date_to + 86399;
}
$data['date_from'] = $date_from;
$data['date_to'] = $date_to;
if (!empty($date_from)) {
$data['payments'] = $this->finance_model->getPaymentByPatientIdByDate($patient, $date_from, $date_to);
$data['deposits'] = $this->finance_model->getDepositByPatientIdByDate($patient, $date_from, $date_to);
$data['gateway'] = $this->finance_model->getGatewayByName($data['settings']->payment_gateway);
} else {
$data['payments'] = $this->finance_model->getPaymentByPatientId($patient);
$data['pharmacy_payments'] = $this->pharmacy_model->getPaymentByPatientId($patient);
$data['ot_payments'] = $this->finance_model->getOtPaymentByPatientId($patient);
$data['deposits'] = $this->finance_model->getDepositByPatientId($patient);
$data['gateway'] = $this->finance_model->getGatewayByName($data['settings']->payment_gateway);
}
$data['patient'] = $this->patient_model->getPatientByid($patient);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('patient_deposit', $data);
$this->load->view('home/footer'); // just the header file
}
function deposit() {
$id = $this->input->post('id');
$patient = $this->input->post('patient');
$payment_id = $this->input->post('payment_id');
$date = time();
$deposited_amount = $this->input->post('deposited_amount');
$deposit_type = $this->input->post('deposit_type');
if (empty($deposit_type)) {
$deposit_type = 'Cash';
}
$user = $this->ion_auth->get_user_id();
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
// Validating Patient Name Field
$this->form_validation->set_rules('patient', 'Patient', 'trim|min_length[1]|max_length[100]|xss_clean');
// Validating Deposited Amount Field
$this->form_validation->set_rules('deposited_amount', 'Deposited Amount', 'trim|min_length[1]|max_length[100]|xss_clean');
if ($this->form_validation->run() == FALSE) {
redirect('finance/patientPaymentHistory?patient=' . $patient);
} else {
$data = array();
$data = array('patient' => $patient,
'date' => $date,
'payment_id' => $payment_id,
'deposited_amount' => $deposited_amount,
'deposit_type' => $deposit_type,
'user' => $user
);
if (empty($id)) {
if ($deposit_type == 'Card') {
$payment_details = $this->finance_model->getPaymentById($payment_id);
$gateway = $this->settings_model->getSettings()->payment_gateway;
if ($gateway == 'PayPal') {
$card_type = $this->input->post('card_type');
$card_number = $this->input->post('card_number');
$expire_date = $this->input->post('expire_date');
$cvv = $this->input->post('cvv');
$all_details = array(
'patient' => $payment_details->patient,
'date' => $payment_details->date,
'amount' => $payment_details->amount,
'doctor' => $payment_details->doctor_name,
'discount' => $payment_details->discount,
'flat_discount' => $payment_details->flat_discount,
'gross_total' => $payment_details->gross_total,
'status' => 'unpaid',
'patient_name' => $payment_details->patient_name,
'patient_phone' => $payment_details->patient_phone,
'patient_address' => $payment_details->patient_address,
'deposited_amount' => $deposited_amount,
'payment_id' => $payment_details->id,
'card_type' => $card_type,
'card_number' => $card_number,
'expire_date' => $expire_date,
'cvv' => $cvv,
'from' => 'patient_payment_details',
'user' => $user
);
$this->paypal->Do_direct_payment($all_details);
} elseif ($gateway == 'Stripe') {
$card_number = $this->input->post('card_number');
$expire_date = $this->input->post('expire_date');
$cvv = $this->input->post('cvv');
$token = $this->input->post('token');
$stripe = $this->db->get_where('paymentGateway', array('name =' => 'Stripe'))->row();
\Stripe\Stripe::setApiKey($stripe->secret);
$charge = \Stripe\Charge::create(array(
"amount" => $deposited_amount * 100,
"currency" => "usd",
"source" => $token
));
$chargeJson = $charge->jsonSerialize();
// redirect("finance/invoice?id=" . "$inserted_id");
} elseif ($gateway == 'Pay U Money') {
redirect("payu/check?deposited_amount=" . "$deposited_amount" . '&payment_id=' . $payment_id);
} else {
$this->session->set_flashdata('feedback', 'Payment failed. No Gateway Selected');
redirect("finance/invoice?id=" . "$payment_id");
}
} else {
$this->finance_model->insertDeposit($data);
$this->session->set_flashdata('feedback', 'Added');
}
} else {
$this->finance_model->updateDeposit($id, $data);
$amount_received_id = $this->finance_model->getDepositById($id)->amount_received_id;
if (!empty($amount_received_id)) {
$amount_received_payment_id = explode('.', $amount_received_id);
$payment_id = $amount_received_payment_id[0];
$data_amount_received = array('amount_received' => $deposited_amount);
$this->finance_model->updatePayment($amount_received_payment_id[0], $data_amount_received);
}
$this->session->set_flashdata('feedback', 'Updated');
}
redirect('finance/patientPaymentHistory?patient=' . $patient);
}
}
function editDepositByJason() {
$id = $this->input->get('id');
$data['deposit'] = $this->finance_model->getDepositById($id);
echo json_encode($data);
}
function deleteDeposit() {
$id = $this->input->get('id');
$patient = $this->input->get('patient');
$amount_received_id = $this->finance_model->getDepositById($id)->amount_received_id;
if (!empty($amount_received_id)) {
$amount_received_payment_id = explode('.', $amount_received_id);
$payment_id = $amount_received_payment_id[0];
$data_amount_received = array('amount_received' => NULL);
$this->finance_model->updatePayment($amount_received_payment_id[0], $data_amount_received);
}
$this->finance_model->deleteDeposit($id);
redirect('finance/patientPaymentHistory?patient=' . $patient);
}
function invoicePatientTotal() {
$id = $this->input->get('id');
$data['settings'] = $this->settings_model->getSettings();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['payments'] = $this->finance_model->getPaymentByPatientIdByStatus($id);
$data['ot_payments'] = $this->finance_model->getOtPaymentByPatientIdByStatus($id);
$data['patient_id'] = $id;
$this->load->view('home/dashboard'); // just the header file
$this->load->view('invoicePT', $data);
$this->load->view('home/footer'); // just the footer fi
}
function lastPaidInvoice() {
$id = $this->input->get('id');
$data['settings'] = $this->settings_model->getSettings();
$data['discount_type'] = $this->finance_model->getDiscountType();
$data['payments'] = $this->finance_model->lastPaidInvoice($id);
$data['ot_payments'] = $this->finance_model->lastOtPaidInvoice($id);
$data['patient_id'] = $id;
$this->load->view('home/dashboard'); // just the header file
$this->load->view('LPInvoice', $data);
$this->load->view('home/footer'); // just the footer fi
}
function makePaid() {
$id = $this->input->get('id');
$patient_id = $this->finance_model->getPaymentById($id)->patient;
$data = array();
$data = array('status' => 'paid');
$data1 = array();
$data1 = array('status' => 'paid-last');
$this->finance_model->makeStatusPaid($id, $patient_id, $data, $data1);
$this->session->set_flashdata('feedback', 'Paid');
redirect('finance/invoice?id=' . $id);
}
function makePaidByPatientIdByStatus() {
$id = $this->input->get('id');
$data = array();
$data = array('status' => 'paid-last');
$data1 = array();
$data1 = array('status' => 'paid');
$this->finance_model->makePaidByPatientIdByStatus($id, $data, $data1);
$this->session->set_flashdata('feedback', 'Paid');
redirect('patient');
}
function makeOtStatusPaid() {
$id = $this->input->get('id');
$this->finance_model->makeOtStatusPaid($id);
$this->session->set_flashdata('feedback', 'Paid');
redirect("finance/otInvoice?id=" . "$id");
}
function doctorsCommission() {
$date_from = strtotime($this->input->post('date_from'));
$date_to = strtotime($this->input->post('date_to'));
if (!empty($date_to)) {
$date_to = $date_to + 86399;
}
$data['doctors'] = $this->doctor_model->getDoctor();
$data['payments'] = $this->finance_model->getPaymentByDate($date_from, $date_to);
$data['ot_payments'] = $this->finance_model->getOtPaymentByDate($date_from, $date_to);
$data['settings'] = $this->settings_model->getSettings();
$data['from'] = $this->input->post('date_from');
$data['to'] = $this->input->post('date_to');
$this->load->view('home/dashboard'); // just the header file
$this->load->view('doctors_commission', $data);
$this->load->view('home/footer'); // just the footer fi
}
function docComDetails() {
$date_from = strtotime($this->input->post('date_from'));
$date_to = strtotime($this->input->post('date_to'));
if (!empty($date_to)) {
$date_to = $date_to + 86399;
}
$doctor = $this->input->get('id');
if (empty($doctor)) {
$doctor = $this->input->post('doctor');
}
$data['doctor'] = $doctor;
if (!empty($date_from)) {
$data['payments'] = $this->finance_model->getPaymentByDoctorDate($doctor, $date_from, $date_to);
} else {
$data['payments'] = $this->finance_model->getPaymentByDoctor($doctor);
}
$data['settings'] = $this->settings_model->getSettings();
$data['from'] = $this->input->post('date_from');
$data['to'] = $this->input->post('date_to');
$this->load->view('home/dashboard'); // just the header file
$this->load->view('doc_com_view', $data);
$this->load->view('home/footer'); // just the footer fi
}
function financialReport() {
$date_from = strtotime($this->input->post('date_from'));
$date_to = strtotime($this->input->post('date_to'));
if (!empty($date_to)) {
$date_to = $date_to + 86399;
}
$data = array();
$data['payment_categories'] = $this->finance_model->getPaymentCategory();
$data['expense_categories'] = $this->finance_model->getExpenseCategory();
// if(empty($date_from)&&empty($date_to)) {
// $data['payments']=$this->finance_model->get_payment();
// $data['ot_payments']=$this->finance_model->get_ot_payment();
// $data['expenses']=$this->finance_model->get_expense();
// }
// else{
$data['payments'] = $this->finance_model->getPaymentByDate($date_from, $date_to);
$data['ot_payments'] = $this->finance_model->getOtPaymentByDate($date_from, $date_to);
$data['deposits'] = $this->finance_model->getDepositsByDate($date_from, $date_to);
$data['expenses'] = $this->finance_model->getExpenseByDate($date_from, $date_to);
// }
$data['from'] = $this->input->post('date_from');
$data['to'] = $this->input->post('date_to');
$data['settings'] = $this->settings_model->getSettings();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('financial_report', $data);
$this->load->view('home/footer'); // just the footer fi
}
function UserActivityReport() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
if ($this->ion_auth->in_group(array('Accountant'))) {
$user = $this->ion_auth->get_user_id();
$data['user'] = $this->accountant_model->getAccountantByIonUserId($user);
}
if ($this->ion_auth->in_group(array('Receptionist'))) {
$user = $this->ion_auth->get_user_id();
$data['user'] = $this->receptionist_model->getReceptionistByIonUserId($user);
}
$hour = 0;
$TODAY_ON = $this->input->get('today');
$YESTERDAY_ON = $this->input->get('yesterday');
$ALL = $this->input->get('all');
$today = strtotime($hour . ':00:00');
$today_last = strtotime($hour . ':00:00') + 86399;
$data['payments'] = $this->finance_model->getPaymentByUserIdByDate($user, $today, $today_last);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserIdByDate($user, $today, $today_last);
$data['deposits'] = $this->finance_model->getDepositByUserIdByDate($user, $today, $today_last);
$data['day'] = 'Today';
if (!empty($YESTERDAY_ON)) {
$today = strtotime($hour . ':00:00');
$yesterday = strtotime('-1 day', $today);
$data['day'] = 'Yesterday';
$data['payments'] = $this->finance_model->getPaymentByUserIdByDate($user, $yesterday, $today);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserIdByDate($user, $yesterday, $today);
$data['deposits'] = $this->finance_model->getDepositByUserIdByDate($user, $yesterday, $today);
}
if (!empty($ALL)) {
$data['day'] = 'All';
$data['payments'] = $this->finance_model->getPaymentByUserId($user);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserId($user);
$data['deposits'] = $this->finance_model->getDepositByUserId($user);
}
$data['settings'] = $this->settings_model->getSettings();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('user_activity_report', $data);
$this->load->view('home/footer'); // just the header file
}
function UserActivityReportDateWise() {
$data = array();
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
if ($this->ion_auth->in_group(array('Accountant'))) {
$user = $this->input->post('user');
$data['user'] = $this->accountant_model->getAccountantByIonUserId($user);
}
if ($this->ion_auth->in_group(array('Receptionist'))) {
$user = $this->input->post('user');
$data['user'] = $this->receptionist_model->getReceptionistByIonUserId($user);
}
$date_from = strtotime($this->input->post('date_from'));
$date_to = strtotime($this->input->post('date_to'));
if (!empty($date_to)) {
$date_to = $date_to + 86399;
}
$data['date_from'] = $date_from;
$data['date_to'] = $date_to;
$data['payments'] = $this->finance_model->getPaymentByUserIdByDate($user, $date_from, $date_to);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserIdByDate($user, $date_from, $date_to);
$data['deposits'] = $this->finance_model->getDepositByUserIdByDate($user, $date_from, $date_to);
$data['settings'] = $this->settings_model->getSettings();
$this->load->view('home/dashboard'); // just the header file
$this->load->view('user_activity_report', $data);
$this->load->view('home/footer'); // just the header file
}
function AllUserActivityReport() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$user = $this->input->get('user');
if (!empty($user)) {
$user_group = $this->db->get_where('users_groups', array('user_id' => $user))->row()->group_id;
if ($user_group == '3') {
$data['user'] = $this->accountant_model->getAccountantByIonUserId($user);
}
if ($user_group == '10') {
$data['user'] = $this->receptionist_model->getReceptionistByIonUserId($user);
}
$data['settings'] = $this->settings_model->getSettings();
$hour = 0;
$TODAY_ON = $this->input->get('today');
$YESTERDAY_ON = $this->input->get('yesterday');
$ALL = $this->input->get('all');
$today = strtotime($hour . ':00:00');
$today_last = strtotime($hour . ':00:00') + 86399;
$data['payments'] = $this->finance_model->getPaymentByUserIdByDate($user, $today, $today_last);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserIdByDate($user, $today, $today_last);
$data['deposits'] = $this->finance_model->getDepositByUserIdByDate($user, $today, $today_last);
$data['day'] = 'Today';
if (!empty($YESTERDAY_ON)) {
$today = strtotime($hour . ':00:00');
$yesterday = strtotime('-1 day', $today);
$data['payments'] = $this->finance_model->getPaymentByUserIdByDate($user, $yesterday, $today);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserIdByDate($user, $yesterday, $today);
$data['deposits'] = $this->finance_model->getDepositByUserIdByDate($user, $yesterday, $today);
$data['day'] = 'Yesterday';
}
if (!empty($ALL)) {
$data['payments'] = $this->finance_model->getPaymentByUserId($user);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserId($user);
$data['deposits'] = $this->finance_model->getDepositByUserId($user);
$data['day'] = 'All';
}
$this->load->view('home/dashboard'); // just the header file
$this->load->view('user_activity_report', $data);
$this->load->view('home/footer'); // just the header file
}
if (empty($user)) {
$hour = 0;
$today = strtotime($hour . ':00:00');
$today_last = strtotime($hour . ':00:00') + 86399;
$data['accountants'] = $this->accountant_model->getAccountant();
$data['receptionists'] = $this->receptionist_model->getReceptionist();
$data['settings'] = $this->settings_model->getSettings();
$data['payments'] = $this->finance_model->getPaymentByDate($today, $today_last);
$data['ot_payments'] = $this->finance_model->getOtPaymentByDate($today, $today_last);
$data['deposits'] = $this->finance_model->getDepositsByDate($today, $today_last);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('all_user_activity_report', $data);
$this->load->view('home/footer'); // just the header file
}
}
function AllUserActivityReportDateWise() {
if (!$this->ion_auth->logged_in()) {
redirect('auth/login', 'refresh');
}
$user = $this->input->post('user');
if (!empty($user)) {
$user_group = $this->db->get_where('users_groups', array('user_id' => $user))->row()->group_id;
if ($user_group == '3') {
$data['user'] = $this->accountant_model->getAccountantByIonUserId($user);
}
if ($user_group == '10') {
$data['user'] = $this->receptionist_model->getReceptionistByIonUserId($user);
}
$date_from = strtotime($this->input->post('date_from'));
$date_to = strtotime($this->input->post('date_to'));
if (!empty($date_to)) {
$date_to = $date_to + 86399;
}
$data['settings'] = $this->settings_model->getSettings();
$data['date_from'] = $date_from;
$data['date_to'] = $date_to;
$data['payments'] = $this->finance_model->getPaymentByUserIdByDate($user, $date_from, $date_to);
$data['ot_payments'] = $this->finance_model->getOtPaymentByUserIdByDate($user, $date_from, $date_to);
$data['deposits'] = $this->finance_model->getDepositByUserIdByDate($user, $date_from, $date_to);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('user_activity_report', $data);
$this->load->view('home/footer'); // just the header file
}
if (empty($user)) {
$hour = 0;
$today = strtotime($hour . ':00:00');
$today_last = strtotime($hour . ':00:00') + 86399;
$data['accountants'] = $this->accountant_model->getAccountant();
$data['receptionists'] = $this->receptionist_model->getReceptionist();
$data['settings'] = $this->settings_model->getSettings();
$data['payments'] = $this->finance_model->getPaymentByDate($today, $today_last);
$data['ot_payments'] = $this->finance_model->getOtPaymentByDate($today, $today_last);
$data['deposits'] = $this->finance_model->getDepositsByDate($today, $today_last);
$this->load->view('home/dashboard'); // just the header file
$this->load->view('all_user_activity_report', $data);
$this->load->view('home/footer'); // just the header file
}
}
function getPayment() {
$requestData = $_REQUEST;
$start = $requestData['start'];
$limit = $requestData['length'];
$search = $this->input->post('search')['value'];
$settings = $this->settings_model->getSettings();
if ($limit == -1) {
if (!empty($search)) {
$data['payments'] = $this->finance_model->getPaymentBysearch($search);
} else {
$data['payments'] = $this->finance_model->getPayment();
}
} else {
if (!empty($search)) {
$data['payments'] = $this->finance_model->getPaymentByLimitBySearch($limit, $start, $search);
} else {
$data['payments'] = $this->finance_model->getPaymentByLimit($limit, $start);
}
}
// $data['payments'] = $this->finance_model->getPayment();
foreach ($data['payments'] as $payment) {
$date = date('d-m-y', $payment->date);
$discount = $payment->discount;
if (empty($discount)) {
$discount = 0;
}
if ($this->ion_auth->in_group(array('admin', 'Accountant'))) {
$options1 = ' <a class="btn btn-info btn-xs editbutton" title="' . lang('edit') . '" href="finance/editPayment?id=' . $payment->id . '"><i class="fa fa-edit"> </i> ' . lang('edit') . '</a>';
}
$options2 = '<a class="btn btn-info btn-xs invoicebutton" title="' . lang('invoice') . '" style="color: #fff;" href="finance/invoice?id=' . $payment->id . '"><i class="fa fa-file-invoice"></i> ' . lang('invoice') . '</a>';
$options4 = '<a class="btn btn-info btn-xs invoicebutton" title="' . lang('print') . '" style="color: #fff;" href="finance/printInvoice?id=' . $payment->id . '"target="_blank"> <i class="fa fa-print"></i> ' . lang('print') . '</a>';
if ($this->ion_auth->in_group(array('admin', 'Accountant'))) {
$options3 = '<a class="btn btn-info btn-xs delete_button" title="' . lang('delete') . '" href="finance/delete?id=' . $payment->id . '" onclick="return confirm(\'Are you sure you want to delete this item?\');"><i class="fa fa-trash"></i> ' . lang('delete') . '</a>';
}
if (empty($options1)) {
$options1 = '';
}
if (empty($options3)) {
$options3 = '';
}
$doctor_details = $this->doctor_model->getDoctorById($payment->doctor);
if (!empty($doctor_details)) {
$doctor = $doctor_details->name;
} else {
if (!empty($payment->doctor_name)) {
$doctor = $payment->doctor_name;
} else {
$doctor = $payment->doctor_name;
}
}
$patient_info = $this->db->get_where('patient', array('id' => $payment->patient))->row();
if (!empty($patient_info)) {
$patient_details = $patient_info->name . '</br>' . $patient_info->address . '</br>' . $patient_info->phone . '</br>';
} else {
$patient_details = ' ';
}
$info[] = array(
$payment->id,
$patient_details,
$doctor,
$date,
$settings->currency . '' . $payment->amount,
$settings->currency . '' . $discount,
$settings->currency . '' . $payment->gross_total,
$settings->currency . '' . $this->finance_model->getDepositAmountByPaymentId($payment->id),
$settings->currency . '' . ($payment->gross_total - $this->finance_model->getDepositAmountByPaymentId($payment->id)),
$payment->remarks,
$options1 . ' ' . $options2 . ' ' . $options4 . ' ' . $options3,
// $options2
);
}
if (!empty($data['payments'])) {
$output = array(
"draw" => intval($requestData['draw']),
"recordsTotal" => $this->db->get('payment')->num_rows(),
"recordsFiltered" => $this->db->get('payment')->num_rows(),
"data" => $info
);
} else {
$output = array(
// "draw" => 1,
"recordsTotal" => 0,
"recordsFiltered" => 0,
"data" => []
);
}
echo json_encode($output);
}
function previousInvoice() {
$id = $this->input->get('id');
$data1 = $this->finance_model->getFirstRowPaymentById();
if ($id == $data1->id) {
$data = $this->finance_model->getLastRowPaymentById();
redirect('finance/invoice?id=' . $data->id);
} else {
for ($id1 = $id - 1; $id1 >= $data1->id; $id1--) {
$data = $this->finance_model->getPreviousPaymentById($id1);
if (!empty($data)) {
redirect('finance/invoice?id=' . $data->id);
break;
} elseif ($id1 == $data1->id) {
$data = $this->finance_model->getLastRowPaymentById();
redirect('finance/invoice?id=' . $data->id);
} else {
continue;
}
}
}
}
function nextInvoice() {
$id = $this->input->get('id');
$data1 = $this->finance_model->getLastRowPaymentById();
// echo $data1->id;
// echo $id;
// die();
//$id1 = $id + 1;
if ($id == $data1->id) {
$data = $this->finance_model->getFirstRowPaymentById();
redirect('finance/invoice?id=' . $data->id);
} else {
for ($id1 = $id + 1; $id1 <= $data1->id; $id1++) {
$data = $this->finance_model->getNextPaymentById($id1);
if (!empty($data)) {
redirect('finance/invoice?id=' . $data->id);
break;
} elseif ($id1 == $data1->id) {
$data = $this->finance_model->getFirstRowPaymentById();
redirect('finance/invoice?id=' . $data->id);
} else {
continue;
}
}
}
}
function daily() {
$data = array();
$year = $this->input->get('year');
$month = $this->input->get('month');
if (empty($year)) {
$year = date('Y');
}
if (empty($month)) {
$month = date('m');
}
$first_minute = mktime(0, 0, 0, $month, 1, $year);
$last_minute = mktime(23, 59, 59, $month, date("t", $first_minute), $year);
$payments = $this->finance_model->getPaymentByDate($first_minute, $last_minute);
$all_payments = array();
foreach ($payments as $payment) {
$date = date('D d-m-y', $payment->date);
if (array_key_exists($date, $all_payments)) {
$all_payments[$date] = $all_payments[$date] + $payment->gross_total;
} else {
$all_payments[$date] = $payment->gross_total;
}
}
$data['year'] = $year;
$data['month'] = $month;
$data['first_minute'] = $first_minute;
$data['last_minute'] = $last_minute;
$data['all_payments'] = $all_payments;
$this->load->view('home/dashboard', $data); // just the header file
$this->load->view('daily', $data);
$this->load->view('home/footer'); // just the header file
}
function dailyExpense() {
$data = array();
$year = $this->input->get('year');
$month = $this->input->get('month');
if (empty($year)) {
$year = date('Y');
}
if (empty($month)) {
$month = date('m');
}
$first_minute = mktime(0, 0, 0, $month, 1, $year);
$last_minute = mktime(23, 59, 59, $month, date("t", $first_minute), $year);
$expenses = $this->finance_model->getExpenseByDate($first_minute, $last_minute);
$all_expenses = array();
foreach ($expenses as $expense) {
$date = date('D d-m-y', $expense->date);
if (array_key_exists($date, $all_expenses)) {
$all_expenses[$date] = $all_expenses[$date] + $expense->amount;
} else {
$all_expenses[$date] = $expense->amount;
}
}
$data['year'] = $year;
$data['month'] = $month;
$data['first_minute'] = $first_minute;
$data['last_minute'] = $last_minute;
$data['all_expenses'] = $all_expenses;
$this->load->view('home/dashboard', $data); // just the header file
$this->load->view('daily_expense', $data);
$this->load->view('home/footer'); // just the header file
}
function monthly() {
$data = array();
$year = $this->input->get('year');
if (empty($year)) {
$year = date('Y');
}
$first_minute = mktime(0, 0, 0, 1, 1, $year);
$last_minute = mktime(23, 59, 59, 12, 31, $year);
$payments = $this->finance_model->getPaymentByDate($first_minute, $last_minute);
$all_payments = array();
foreach ($payments as $payment) {
$month = date('m-Y', $payment->date);
if (array_key_exists($month, $all_payments)) {
$all_payments[$month] = $all_payments[$month] + $payment->gross_total;
} else {
$all_payments[$month] = $payment->gross_total;
}
}
$data['year'] = $year;
$data['first_minute'] = $first_minute;
$data['last_minute'] = $last_minute;
$data['all_payments'] = $all_payments;
$this->load->view('home/dashboard', $data); // just the header file
$this->load->view('monthly', $data);
$this->load->view('home/footer'); // just the header file
}
function monthlyExpense() {
$data = array();
$year = $this->input->get('year');
if (empty($year)) {
$year = date('Y');
}
$first_minute = mktime(0, 0, 0, 1, 1, $year);
$last_minute = mktime(23, 59, 59, 12, 31, $year);
$expenses = $this->finance_model->getExpenseByDate($first_minute, $last_minute);
$all_expenses = array();
foreach ($expenses as $expense) {
$month = date('m-Y', $expense->date);
if (array_key_exists($month, $all_expenses)) {
$all_expenses[$month] = $all_expenses[$month] + $expense->amount;
} else {
$all_expenses[$month] = $expense->amount;
}
}
$data['year'] = $year;
$data['first_minute'] = $first_minute;
$data['last_minute'] = $last_minute;
$data['all_expenses'] = $all_expenses;
$this->load->view('home/dashboard', $data); // just the header file
$this->load->view('monthly_expense', $data);
$this->load->view('home/footer'); // just the header file
}
function getExpense() {
$requestData = $_REQUEST;
$start = $requestData['start'];
$limit = $requestData['length'];
$search = $this->input->post('search')['value'];
$settings = $this->settings_model->getSettings();
if ($limit == -1) {
if (!empty($search)) {
$data['expenses'] = $this->finance_model->getExpenseBysearch($search);
} else {
$data['expenses'] = $this->finance_model->getExpense();
}
} else {
if (!empty($search)) {
$data['expenses'] = $this->finance_model->getExpenseByLimitBySearch($limit, $start, $search);
} else {
$data['expenses'] = $this->finance_model->getExpenseByLimit($limit, $start);
}
}
// $data['payments'] = $this->finance_model->getPayment();
foreach ($data['expenses'] as $expense) {
if ($this->ion_auth->in_group(array('admin'))) {
$options1 = ' <a class="btn btn-info btn-xs editbutton" title="' . lang('edit') . '" href="finance/editExpense?id=' . $expense->id . '"><i class="fa fa-edit"> </i></a>';
}
$options2 = '<a class="btn btn-info btn-xs invoicebutton" title="' . lang('invoice') . '" style="color: #fff;" href="finance/expenseInvoice?id=' . $expense->id . '"><i class="fa fa-file-invoice"></i> </a>';
//$options4 = '<a class="btn btn-info btn-xs invoicebutton" title="' . lang('print') . '" style="color: #fff;" href="finance/printInvoice?id=' . $payment->id . '"target="_blank"> <i class="fa fa-print"></i> ' . lang('print') . '</a>';
if ($this->ion_auth->in_group(array('admin'))) {
$options3 = '<a class="btn btn-info btn-xs delete_button" title="' . lang('delete') . '" href="finance/deleteExpense?id=' . $expense->id . '" onclick="return confirm(\'Are you sure you want to delete this item?\');"><i class="fa fa-trash"></i> </a>';
}
if (empty($options1)) {
$options1 = '';
}
if (empty($options3)) {
$options3 = '';
}
$info[] = array(
$expense->category,
date('d/m/y', $expense->date),
$expense->note,
$settings->currency . '' . $expense->amount,
$options1 . ' ' . $options2 . ' ' . $options3,
// $options2
);
}
if (!empty($data['expenses'])) {
$output = array(
"draw" => intval($requestData['draw']),
"recordsTotal" => $this->db->get('expense')->num_rows(),
"recordsFiltered" => $this->db->get('expense')->num_rows(),
"data" => $info
);
} else {
$output = array(
// "draw" => 1,
"recordsTotal" => 0,
"recordsFiltered" => 0,
"data" => []
);
}
echo json_encode($output);
}
}
/* End of file finance.php */
/* Location: ./application/modules/finance/controllers/finance.php */