993 lines
30 KiB
PHP
Executable File

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Finance_model extends CI_model {
function __construct() {
parent::__construct();
$this->load->database();
}
function insertPayment($data) {
$this->db->insert('payment', $data);
}
function getPayment() {
$this->db->order_by('id', 'desc');
$query = $this->db->get('payment');
return $query->result();
}
function getPaymentBySearch($search) {
$this->db->order_by('id', 'desc');
$this->db->like('id', $search);
$this->db->or_like('amount', $search);
$this->db->or_like('gross_total', $search);
$this->db->or_like('patient_name', $search);
$this->db->or_like('patient_phone', $search);
$this->db->or_like('patient_address', $search);
$this->db->or_like('remarks', $search);
$this->db->or_like('doctor_name', $search);
$this->db->or_like('flat_discount', $search);
$this->db->or_like('date_string', $search);
$query = $this->db->get('payment');
return $query->result();
}
function getPaymentByLimit($limit, $start) {
$this->db->order_by('id', 'desc');
$this->db->limit($limit, $start);
$query = $this->db->get('payment');
return $query->result();
}
function getGatewayByName($name) {
$this->db->where('name', $name);
$query = $this->db->get('paymentGateway')->row();
return $query;
}
function getPaymentByLimitBySearch($limit, $start, $search) {
$this->db->like('id', $search);
$this->db->or_like('amount', $search);
$this->db->or_like('gross_total', $search);
$this->db->order_by('id', 'desc');
$this->db->or_like('patient_name', $search);
$this->db->or_like('patient_phone', $search);
$this->db->or_like('patient_address', $search);
$this->db->or_like('remarks', $search);
$this->db->or_like('doctor_name', $search);
$this->db->or_like('flat_discount', $search);
$this->db->or_like('date_string', $search);
$this->db->limit($limit, $start);
$query = $this->db->get('payment');
return $query->result();
}
function getPaymentById($id) {
$this->db->where('id', $id);
$query = $this->db->get('payment');
return $query->row();
}
function getPaymentByPatientId($id) {
$this->db->order_by('id', 'desc');
$this->db->where('patient', $id);
$query = $this->db->get('payment');
return $query->result();
}
function getPaymentByPatientIdByDate($id, $date_from, $date_to) {
$this->db->order_by('id', 'desc');
$this->db->where('patient', $id);
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get('payment');
return $query->result();
}
function getPaymentByUserId($id) {
$this->db->order_by('id', 'desc');
$this->db->where('user', $id);
$query = $this->db->get('payment');
return $query->result();
}
function thisMonthPayment() {
$query = $this->db->get('payment')->result();
$total = array();
foreach ($query as $q) {
if (date('m/Y', time()) == date('m/Y', $q->date)) {
$total[] = $q->gross_total;
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisMonthExpense() {
$query = $this->db->get('expense')->result();
$total = array();
foreach ($query as $q) {
if (date('m/Y', time()) == date('m/Y', $q->date)) {
$total[] = $q->amount;
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisMonthAppointment() {
$query = $this->db->get('appointment')->result();
$total = array();
foreach ($query as $q) {
if (date('m/Y', time()) == date('m/Y', $q->date)) {
$total[] = '1';
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisDayPayment() {
$query = $this->db->get('payment')->result();
$total = array();
foreach ($query as $q) {
if (date('d/m/Y', time()) == date('d/m/Y', $q->date)) {
$total[] = $q->gross_total;
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisDayExpense() {
$query = $this->db->get('expense')->result();
$total = array();
foreach ($query as $q) {
if (date('d/m/Y', time()) == date('d/m/Y', $q->date)) {
$total[] = $q->amount;
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisDayAppointment() {
$query = $this->db->get('appointment')->result();
$total = array();
foreach ($query as $q) {
if (date('d/m/Y', time()) == date('d/m/Y', $q->date)) {
$total[] = '1';
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisYearPayment() {
$query = $this->db->get('payment')->result();
$total = array();
foreach ($query as $q) {
if (date('Y', time()) == date('Y', $q->date)) {
$total[] = $q->gross_total;
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisYearExpense() {
$query = $this->db->get('expense')->result();
$total = array();
foreach ($query as $q) {
if (date('Y', time()) == date('Y', $q->date)) {
$total[] = $q->amount;
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisYearAppointment() {
$query = $this->db->get('appointment')->result();
$total = array();
foreach ($query as $q) {
if (date('Y', time()) == date('Y', $q->date)) {
$total[] = '1';
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisMonthAppointmentTreated() {
$query = $this->db->get('appointment')->result();
$total = array();
foreach ($query as $q) {
if (date('m/Y', time()) == date('m/Y', $q->date)) {
if ($q->status == 'Treated') {
$total[] = '1';
}
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function thisMonthAppointmentCancelled() {
$query = $this->db->get('appointment')->result();
$total = array();
foreach ($query as $q) {
if (date('m/Y', time()) == date('m/Y', $q->date)) {
if ($q->status == 'Cancelled') {
$total[] = '1';
}
}
}
if (!empty($total)) {
return array_sum($total);
} else {
return 0;
}
}
function getPaymentPerMonthThisYear() {
$query = $this->db->get('payment')->result();
$total = array();
foreach ($query as $q) {
if (date('Y', time()) == date('Y', $q->date)) {
if (date('m', $q->date) == '01') {
$total['january'][] = $q->gross_total;
}
if (date('m', $q->date) == '02') {
$total['february'][] = $q->gross_total;
}
if (date('m', $q->date) == '03') {
$total['march'][] = $q->gross_total;
}
if (date('m', $q->date) == '04') {
$total['april'][] = $q->gross_total;
}
if (date('m', $q->date) == '05') {
$total['may'][] = $q->gross_total;
}
if (date('m', $q->date) == '06') {
$total['june'][] = $q->gross_total;
}
if (date('m', $q->date) == '07') {
$total['july'][] = $q->gross_total;
}
if (date('m', $q->date) == '08') {
$total['august'][] = $q->gross_total;
}
if (date('m', $q->date) == '09') {
$total['september'][] = $q->gross_total;
}
if (date('m', $q->date) == '10') {
$total['october'][] = $q->gross_total;
}
if (date('m', $q->date) == '11') {
$total['november'][] = $q->gross_total;
}
if (date('m', $q->date) == '12') {
$total['december'][] = $q->gross_total;
}
}
}
if (!empty($total['january'])) {
$total['january'] = array_sum($total['january']);
} else {
$total['january'] = 0;
}
if (!empty($total['february'])) {
$total['february'] = array_sum($total['february']);
} else {
$total['february'] = 0;
}
if (!empty($total['march'])) {
$total['march'] = array_sum($total['march']);
} else {
$total['march'] = 0;
}
if (!empty($total['april'])) {
$total['april'] = array_sum($total['april']);
} else {
$total['april'] = 0;
}
if (!empty($total['may'])) {
$total['may'] = array_sum($total['may']);
} else {
$total['may'] = 0;
}
if (!empty($total['june'])) {
$total['june'] = array_sum($total['june']);
} else {
$total['june'] = 0;
}
if (!empty($total['july'])) {
$total['july'] = array_sum($total['july']);
} else {
$total['july'] = 0;
}
if (!empty($total['august'])) {
$total['august'] = array_sum($total['august']);
} else {
$total['august'] = 0;
}
if (!empty($total['september'])) {
$total['september'] = array_sum($total['september']);
} else {
$total['september'] = 0;
}
if (!empty($total['october'])) {
$total['october'] = array_sum($total['october']);
} else {
$total['october'] = 0;
}
if (!empty($total['november'])) {
$total['november'] = array_sum($total['november']);
} else {
$total['november'] = 0;
}
if (!empty($total['december'])) {
$total['december'] = array_sum($total['december']);
} else {
$total['december'] = 0;
}
return $total;
}
function getExpensePerMonthThisYear() {
$query = $this->db->get('expense')->result();
$total = array();
foreach ($query as $q) {
if (date('Y', time()) == date('Y', $q->date)) {
if (date('m', $q->date) == '01') {
$total['january'][] = $q->amount;
}
if (date('m', $q->date) == '02') {
$total['february'][] = $q->amount;
}
if (date('m', $q->date) == '03') {
$total['march'][] = $q->amount;
}
if (date('m', $q->date) == '04') {
$total['april'][] = $q->amount;
}
if (date('m', $q->date) == '05') {
$total['may'][] = $q->amount;
}
if (date('m', $q->date) == '06') {
$total['june'][] = $q->amount;
}
if (date('m', $q->date) == '07') {
$total['july'][] = $q->amount;
}
if (date('m', $q->date) == '08') {
$total['august'][] = $q->amount;
}
if (date('m', $q->date) == '09') {
$total['september'][] = $q->amount;
}
if (date('m', $q->date) == '10') {
$total['october'][] = $q->amount;
}
if (date('m', $q->date) == '11') {
$total['november'][] = $q->amount;
}
if (date('m', $q->date) == '12') {
$total['december'][] = $q->amount;
}
}
}
if (!empty($total['january'])) {
$total['january'] = array_sum($total['january']);
} else {
$total['january'] = 0;
}
if (!empty($total['february'])) {
$total['february'] = array_sum($total['february']);
} else {
$total['february'] = 0;
}
if (!empty($total['march'])) {
$total['march'] = array_sum($total['march']);
} else {
$total['march'] = 0;
}
if (!empty($total['april'])) {
$total['april'] = array_sum($total['april']);
} else {
$total['april'] = 0;
}
if (!empty($total['may'])) {
$total['may'] = array_sum($total['may']);
} else {
$total['may'] = 0;
}
if (!empty($total['june'])) {
$total['june'] = array_sum($total['june']);
} else {
$total['june'] = 0;
}
if (!empty($total['july'])) {
$total['july'] = array_sum($total['july']);
} else {
$total['july'] = 0;
}
if (!empty($total['august'])) {
$total['august'] = array_sum($total['august']);
} else {
$total['august'] = 0;
}
if (!empty($total['september'])) {
$total['september'] = array_sum($total['september']);
} else {
$total['september'] = 0;
}
if (!empty($total['october'])) {
$total['october'] = array_sum($total['october']);
} else {
$total['october'] = 0;
}
if (!empty($total['november'])) {
$total['november'] = array_sum($total['november']);
} else {
$total['november'] = 0;
}
if (!empty($total['december'])) {
$total['december'] = array_sum($total['december']);
} else {
$total['december'] = 0;
}
return $total;
}
function getOtPaymentByPatientId($id) {
$this->db->order_by('id', 'desc');
$this->db->where('patient', $id);
$query = $this->db->get('ot_payment');
return $query->result();
}
function getOtPaymentByUserId($id) {
$this->db->order_by('id', 'desc');
$this->db->where('user', $id);
$query = $this->db->get('ot_payment');
return $query->result();
}
function insertDeposit($data) {
$this->db->insert('patient_deposit', $data);
}
function getDeposit() {
$query = $this->db->get('patient_deposit');
return $query->result();
}
function updateDeposit($id, $data) {
$this->db->where('id', $id);
$this->db->update('patient_deposit', $data);
}
function getDepositById($id) {
$this->db->where('id', $id);
$query = $this->db->get('patient_deposit');
return $query->row();
}
function getDepositByPatientId($id) {
$this->db->order_by('id', 'desc');
$this->db->where('patient', $id);
$query = $this->db->get('patient_deposit');
return $query->result();
}
function getDepositByPatientIdByDate($id, $date_from, $date_to) {
$this->db->order_by('id', 'desc');
$this->db->where('patient', $id);
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get('patient_deposit');
return $query->result();
}
function getDepositByUserId($id) {
$this->db->order_by('id', 'desc');
$this->db->where('user', $id);
$query = $this->db->get('patient_deposit');
return $query->result();
}
function deleteDeposit($id) {
$this->db->where('id', $id);
$this->db->delete('patient_deposit');
}
function deleteDepositByInvoiceId($id) {
$this->db->where('payment_id', $id);
$this->db->delete('patient_deposit');
}
function getPaymentByPatientIdByStatus($id) {
$this->db->where('patient', $id);
$this->db->where('status', 'unpaid');
$query = $this->db->get('payment');
return $query->result();
}
function getOtPaymentByPatientIdByStatus($id) {
$this->db->where('patient', $id);
$this->db->where('status', 'unpaid');
$query = $this->db->get('ot_payment');
return $query->result();
}
function updatePayment($id, $data) {
$this->db->where('id', $id);
$this->db->update('payment', $data);
}
function insertOtPayment($data) {
$this->db->insert('ot_payment', $data);
}
function getOtPayment() {
$this->db->order_by('id', 'desc');
$query = $this->db->get('ot_payment');
return $query->result();
}
function getOtPaymentById($id) {
$this->db->where('id', $id);
$query = $this->db->get('ot_payment');
return $query->row();
}
function updateOtPayment($id, $data) {
$this->db->where('id', $id);
$this->db->update('ot_payment', $data);
}
function deleteOtPayment($id) {
$this->db->where('id', $id);
$this->db->delete('ot_payment');
}
function insertPaymentCategory($data) {
$this->db->insert('payment_category', $data);
}
function getPaymentCategory() {
$query = $this->db->get('payment_category');
return $query->result();
}
function getPaymentCategoryById($id) {
$this->db->where('id', $id);
$query = $this->db->get('payment_category');
return $query->row();
}
function getDoctorCommissionByCategory($id) {
$this->db->where('id', $id);
$query = $this->db->get('payment_category');
return $query->row();
}
function updatePaymentCategory($id, $data) {
$this->db->where('id', $id);
$this->db->update('payment_category', $data);
}
function deletePayment($id) {
$this->db->where('id', $id);
$this->db->delete('payment');
}
function deletePaymentCategory($id) {
$this->db->where('id', $id);
$this->db->delete('payment_category');
}
function insertExpense($data) {
$this->db->insert('expense', $data);
}
function getExpense() {
$query = $this->db->get('expense');
return $query->result();
}
function getExpenseBySearch($search) {
$this->db->order_by('id', 'desc');
$this->db->like('id', $search);
$this->db->or_like('amount', $search);
$this->db->or_like('datestring', $search);
$this->db->or_like('category', $search);
$query = $this->db->get('expense');
return $query->result();
}
function getExpenseByLimit($limit, $start) {
$this->db->order_by('id', 'desc');
$this->db->limit($limit, $start);
$query = $this->db->get('expense');
return $query->result();
}
function getExpenseByLimitBySearch($limit, $start, $search) {
$this->db->like('id', $search);
$this->db->or_like('amount', $search);
$this->db->order_by('id', 'desc');
$this->db->or_like('datestring', $search);
$this->db->or_like('category', $search);
$this->db->limit($limit, $start);
$query = $this->db->get('expense');
return $query->result();
}
function getExpenseById($id) {
$this->db->where('id', $id);
$query = $this->db->get('expense');
return $query->row();
}
function updateExpense($id, $data) {
$this->db->where('id', $id);
$this->db->update('expense', $data);
}
function insertExpenseCategory($data) {
$this->db->insert('expense_category', $data);
}
function getExpenseCategory() {
$query = $this->db->get('expense_category');
return $query->result();
}
function getExpenseCategoryById($id) {
$this->db->where('id', $id);
$query = $this->db->get('expense_category');
return $query->row();
}
function updateExpenseCategory($id, $data) {
$this->db->where('id', $id);
$this->db->update('expense_category', $data);
}
function deleteExpense($id) {
$this->db->where('id', $id);
$this->db->delete('expense');
}
function deleteExpenseCategory($id) {
$this->db->where('id', $id);
$this->db->delete('expense_category');
}
function getDiscountType() {
$query = $this->db->get('settings');
return $query->row()->discount;
}
function getPaymentByDoctor($doctor) {
$this->db->select('*');
$this->db->from('payment');
$this->db->where('doctor', $doctor);
$query = $this->db->get();
return $query->result();
}
function getDepositAmountByPaymentId($payment_id) {
$this->db->select('*');
$this->db->from('patient_deposit');
$this->db->where('payment_id', $payment_id);
$query = $this->db->get();
$total = array();
$deposited_total = array();
$total = $query->result();
foreach ($total as $deposit) {
$deposited_total[] = $deposit->deposited_amount;
}
if (!empty($deposited_total)) {
$deposited_total = array_sum($deposited_total);
} else {
$deposited_total = 0;
}
return $deposited_total;
}
function getPaymentByDate($date_from, $date_to) {
$this->db->select('*');
$this->db->from('payment');
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getPaymentByDoctorDate($doctor, $date_from, $date_to) {
$this->db->select('*');
$this->db->from('payment');
$this->db->where('doctor', $doctor);
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getDepositByPaymentId($payment_id) {
$this->db->select('*');
$this->db->from('patient_deposit');
$this->db->where('payment_id', $payment_id);
$query = $this->db->get();
$total = array();
$deposited_total = array();
$total = $query->result();
return $total;
}
function getOtPaymentByDate($date_from, $date_to) {
$this->db->select('*');
$this->db->from('ot_payment');
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getDepositsByDate($date_from, $date_to) {
$this->db->select('*');
$this->db->from('patient_deposit');
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getExpenseByDate($date_from, $date_to) {
$this->db->select('*');
$this->db->from('expense');
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function makeStatusPaid($id, $patient_id, $data, $data1) {
$this->db->where('patient', $patient_id);
$this->db->where('status', 'paid-last');
$this->db->update('payment', $data);
$this->db->where('id', $id);
$this->db->update('payment', $data1);
}
function makePaidByPatientIdByStatus($id, $data, $data1) {
$this->db->where('patient', $id);
$this->db->where('status', 'paid-last');
$this->db->update('payment', $data1);
$this->db->where('patient', $id);
$this->db->where('status', 'paid-last');
$this->db->update('ot_payment', $data1);
$this->db->where('patient', $id);
$this->db->where('status', 'unpaid');
$this->db->update('payment', $data);
$this->db->where('patient', $id);
$this->db->where('status', 'unpaid');
$this->db->update('ot_payment', $data);
}
function makeOtStatusPaid($id) {
$this->db->where('id', $id);
$this->db->update('ot_payment', array('status' => 'paid'));
}
function lastPaidInvoice($id) {
$this->db->where('patient', $id);
$this->db->where('status', 'paid-last');
$query = $this->db->get('payment');
return $query->result();
}
function lastOtPaidInvoice($id) {
$this->db->where('patient', $id);
$this->db->where('status', 'paid-last');
$query = $this->db->get('ot_payment');
return $query->result();
}
function amountReceived($id, $data) {
$this->db->where('id', $id);
$query = $this->db->update('payment', $data);
}
function otAmountReceived($id, $data) {
$this->db->where('id', $id);
$query = $this->db->update('ot_payment', $data);
}
function getThisMonth() {
$payments = $this->db->get('payment')->result();
foreach ($payments as $payment) {
if (date('m/y', $payment->date) == date('m/y', time())) {
$this_month_payment[] = $payment->gross_total;
}
}
if (!empty($this_month_payment)) {
$this_month_payment = array_sum($this_month_payment);
} else {
$this_month_payment = 0;
}
$expenses = $this->db->get('expense')->result();
foreach ($expenses as $expense) {
if (date('m/y', $expense->date) == date('m/y', time())) {
$this_month_expense[] = $expense->amount;
}
}
if (!empty($this_month_expense)) {
$this_month_expense = array_sum($this_month_expense);
} else {
$this_month_expense = 0;
}
$appointments = $this->db->get('appointment')->result();
foreach ($appointments as $appointment) {
if (date('m/y', $appointment->date) == date('m/y', time())) {
$this_month_appointment[] = 1;
}
}
if (!empty($this_month_appointment)) {
$this_month_appointment = array_sum($this_month_appointment);
} else {
$this_month_appointment = 0;
}
$this_month_details = array($this_month_payment, $this_month_expense, $this_month_appointment);
return $this_month_details;
}
function getPaymentByUserIdByDate($user, $date_from, $date_to) {
$this->db->order_by('id', 'desc');
$this->db->select('*');
$this->db->from('payment');
$this->db->where('user', $user);
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getOtPaymentByUserIdByDate($user, $date_from, $date_to) {
$this->db->order_by('id', 'desc');
$this->db->select('*');
$this->db->from('ot_payment');
$this->db->where('user', $user);
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getDepositByUserIdByDate($user, $date_from, $date_to) {
$this->db->order_by('id', 'desc');
$this->db->select('*');
$this->db->from('patient_deposit');
$this->db->where('user', $user);
$this->db->where('date >=', $date_from);
$this->db->where('date <=', $date_to);
$query = $this->db->get();
return $query->result();
}
function getDueBalanceByPatientId($patient) {
$query = $this->db->get_where('payment', array('patient' => $patient->id))->result();
$deposits = $this->db->get_where('patient_deposit', array('patient' => $patient->id))->result();
$balance = array();
$deposit_balance = array();
foreach ($query as $gross) {
$balance[] = $gross->gross_total;
}
$balance = array_sum($balance);
foreach ($deposits as $deposit) {
$deposit_balance[] = $deposit->deposited_amount;
}
$deposit_balance = array_sum($deposit_balance);
$bill_balance = $balance;
return $due_balance = $bill_balance - $deposit_balance;
}
function getFirstRowPaymentById() {
// $this->load->database();
$last = $this->db->order_by('id', "asc")
->limit(1)
->get('payment')
->row();
return $last;
}
function getLastRowPaymentById() {
// $this->load->database();
$last = $this->db->order_by('id', "desc")
->limit(1)
->get('payment')
->row();
return $last;
}
function getPreviousPaymentById($id) {
$this->db->where('id', $id);
$query = $this->db->get('payment');
return $query->previous_row();
}
function getNextPaymentById($id) {
$this->db->where('id', $id);
$query = $this->db->get('payment');
return $query->row();
}
}