ok
Direktori : /home2/selectio/www/mm-tailor-billing/app/controllers/ |
Current File : //home2/selectio/www/mm-tailor-billing/app/controllers/Reports.php |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Reports extends MY_Controller { function __construct() { parent::__construct(); if ( ! $this->loggedIn) { redirect('login'); } if ( ! $this->Admin) { $this->session->set_flashdata('error', lang('access_denied')); redirect('pos'); } $this->load->model('reports_model'); } function daily_sales($year = NULL, $month = NULL) { if (!$year) { $year = date('Y'); } if (!$month) { $month = date('m'); } $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->lang->load('calendar'); $config = array( 'show_next_prev' => TRUE, 'next_prev_url' => site_url('reports/daily_sales'), 'month_type' => 'long', 'day_type' => 'long' ); $config['template'] = ' {table_open}<table border="0" cellpadding="0" cellspacing="0" class="table table-bordered table-calendar" style="min-width:522px;">{/table_open} {heading_row_start}<tr class="active">{/heading_row_start} {heading_previous_cell}<th><div class="text-center"><a href="{previous_url}"><<</div></a></th>{/heading_previous_cell} {heading_title_cell}<th colspan="{colspan}"><div class="text-center">{heading}</div></th>{/heading_title_cell} {heading_next_cell}<th><div class="text-center"><a href="{next_url}">>></a></div></th>{/heading_next_cell} {heading_row_end}</tr>{/heading_row_end} {week_row_start}<tr>{/week_row_start} {week_day_cell}<td class="cl_equal"><div class="cl_wday">{week_day}</div></td>{/week_day_cell} {week_row_end}</tr>{/week_row_end} {cal_row_start}<tr>{/cal_row_start} {cal_cell_start}<td>{/cal_cell_start} {cal_cell_content}{day}<br>{content}{/cal_cell_content} {cal_cell_content_today}<div class="highlight">{day}</div>{content}{/cal_cell_content_today} {cal_cell_no_content}{day}{/cal_cell_no_content} {cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today} {cal_cell_blank} {/cal_cell_blank} {cal_cell_end}</td>{/cal_cell_end} {cal_row_end}</tr>{/cal_row_end} {table_close}</table>{/table_close} '; $this->load->library('calendar', $config); $sales = $this->reports_model->getDailySales($year, $month); if (!empty($sales)) { foreach ($sales as $sale) { $sale->date = intval($sale->date); $daily_sale[$sale->date] = "<table class='table table-condensed table-striped' style='margin-bottom:0;'><tr><td>".lang('total'). "</td><td style='text-align:right;'>{$this->tec->formatMoney($sale->total)}</td></tr><tr><td><span style='font-weight:normal;'>".lang('product_tax')."<br>".lang('order_tax')."</span><br>".lang('tax'). "</td><td style='text-align:right;'><span style='font-weight:normal;'>{$this->tec->formatMoney($sale->product_tax)}<br>{$this->tec->formatMoney($sale->order_tax)}</span><br>{$this->tec->formatMoney($sale->total_tax)}</td></tr><tr><td class='violet'>".lang('discount'). "</td><td style='text-align:right;'>{$this->tec->formatMoney($sale->discount)}</td></tr><tr><td class='violet'>".lang('grand_total'). "</td><td style='text-align:right;' class='violet'>{$this->tec->formatMoney($sale->grand_total)}</td></tr><tr><td class='green'>".lang('paid'). "</td><td style='text-align:right;' class='green'>{$this->tec->formatMoney($sale->paid)}</td></tr><tr><td class='orange'>".lang('balance'). "</td><td style='text-align:right;' class='orange'>{$this->tec->formatMoney(($sale->grand_total+$sale->rounding) - $sale->paid)}</td></tr></table>"; } } else { $daily_sale = array(); } $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['calender'] = $this->calendar->generate($year, $month, $daily_sale); $start = $year.'-'.$month.'-01 00:00:00'; $end = $year.'-'.$month.'-'.days_in_month($month, $year).' 23:59:59'; $this->data['total_purchases'] = $this->reports_model->getTotalPurchases($start, $end); $this->data['total_sales'] = $this->reports_model->getTotalSales($start, $end); $this->data['total_expenses'] = $this->reports_model->getTotalExpenses($start, $end); $this->data['page_title'] = $this->lang->line("daily_sales"); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('daily_sales'))); $meta = array('page_title' => lang('daily_sales'), 'bc' => $bc); $this->page_construct('reports/daily', $this->data, $meta); } function monthly_sales($year = NULL) { if(!$year) { $year = date('Y'); } $this->load->language('calendar'); $this->lang->load('calendar'); $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $start = $year.'-01-01 00:00:00'; $end = $year.'-12-31 23:59:59'; $this->data['total_purchases'] = $this->reports_model->getTotalPurchases($start, $end); $this->data['total_sales'] = $this->reports_model->getTotalSales($start, $end); $this->data['total_expenses'] = $this->reports_model->getTotalExpenses($start, $end); $this->data['year'] = $year; $this->data['sales'] = $this->reports_model->getMonthlySales($year); $this->data['page_title'] = $this->lang->line("monthly_sales"); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('monthly_sales'))); $meta = array('page_title' => lang('monthly_sales'), 'bc' => $bc); $this->page_construct('reports/monthly', $this->data, $meta); } function index() { if ($this->input->post('customer')) { $start_date = $this->input->post('start_date') ? $this->input->post('start_date') : NULL; $end_date = $this->input->post('end_date') ? $this->input->post('end_date') : NULL; $user = $this->input->post('user') ? $this->input->post('user') : NULL; $this->data['total_sales'] = $this->reports_model->getTotalCustomerSales($this->input->post('customer'), $user, $start_date, $end_date); } $this->data['error'] = (validation_errors() ? validation_errors() : $this->session->flashdata('error')); $this->data['customers'] = $this->reports_model->getAllCustomers(); $this->data['users'] = $this->reports_model->getAllStaff(); $this->data['page_title'] = $this->lang->line("sales_report"); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('sales_report'))); $meta = array('page_title' => lang('sales_report'), 'bc' => $bc); $this->page_construct('reports/sales', $this->data, $meta); } function get_sales() { $customer = $this->input->get('customer') ? $this->input->get('customer') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $user = $this->input->get('user') ? $this->input->get('user') : NULL; $this->load->library('datatables'); $this->datatables ->select("id, DATE_FORMAT(sale_date, '%d-%m-%Y') as sale_date, customer_name, hold_ref, discount, total, total_tax, total_discount, grand_total, paid, (grand_total-(paid+discount)) as balance, status, DATE_FORMAT(due_date, '%d-%m-%Y') as due_date") ->from('sales'); if ($this->session->userdata('store_id')) { $this->datatables->where('store_id', $this->session->userdata('store_id')); } $this->datatables->unset_column('id'); if($customer) { $this->datatables->where('customer_id', $customer); } if($user) { $this->datatables->where('created_by', $user); } if($start_date) { $this->datatables->where('due_date >=', $start_date); } if($end_date) { $this->datatables->where('due_date <=', $end_date); } echo $this->datatables->generate(); } function products() { $this->data['error'] = (validation_errors() ? validation_errors() : $this->session->flashdata('error')); $this->data['products'] = $this->reports_model->getAllProducts(); $this->data['page_title'] = $this->lang->line("products_report"); $this->data['page_title'] = $this->lang->line("products_report"); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('products_report'))); $meta = array('page_title' => lang('products_report'), 'bc' => $bc); $this->page_construct('reports/products', $this->data, $meta); } function get_products() { $product = $this->input->get('product') ? $this->input->get('product') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; //COALESCE(sum(".$this->db->dbprefix('sale_items').".quantity)*".$this->db->dbprefix('products').".cost, 0) as cost, $this->load->library('datatables'); $this->datatables ->select($this->db->dbprefix('products').".id as id, ".$this->db->dbprefix('products').".name, ".$this->db->dbprefix('products').".code, COALESCE(sum(".$this->db->dbprefix('sale_items').".quantity), 0) as sold, ROUND(COALESCE(((sum(".$this->db->dbprefix('sale_items').".subtotal)*".$this->db->dbprefix('products').".tax)/100), 0), 2) as tax, COALESCE(sum(".$this->db->dbprefix('sale_items').".quantity)*".$this->db->dbprefix('sale_items').".cost, 0) as cost, COALESCE(sum(".$this->db->dbprefix('sale_items').".subtotal), 0) as income, ROUND((COALESCE(sum(".$this->db->dbprefix('sale_items').".subtotal), 0)) - COALESCE(sum(".$this->db->dbprefix('sale_items').".quantity)*".$this->db->dbprefix('sale_items').".cost, 0) -COALESCE(((sum(".$this->db->dbprefix('sale_items').".subtotal)*".$this->db->dbprefix('products').".tax)/100), 0), 2) as profit", FALSE) ->from('sale_items') ->join('products', 'sale_items.product_id=products.id', 'left') ->join('sales', 'sale_items.sale_id=sales.id', 'left'); if ($this->session->userdata('store_id')) { $this->datatables->where('sales.store_id', $this->session->userdata('store_id')); } $this->datatables->group_by('products.id'); if($product) { $this->datatables->where('products.id', $product); } if($start_date) { $this->datatables->where('date >=', $start_date); } if($end_date) { $this->datatables->where('date <=', $end_date); } echo $this->datatables->generate(); } function profit( $income, $cost, $tax) { return floatval($income)." - ".floatval($cost)." - ".floatval($tax); } function top_products() { $this->data['topProducts'] = $this->reports_model->topProducts(); $this->data['topProducts1'] = $this->reports_model->topProducts1(); $this->data['topProducts3'] = $this->reports_model->topProducts3(); $this->data['topProducts12'] = $this->reports_model->topProducts12(); $this->data['page_title'] = $this->lang->line("top_products"); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('top_products'))); $meta = array('page_title' => lang('top_products'), 'bc' => $bc); $this->page_construct('reports/top', $this->data, $meta); } function registers() { $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['users'] = $this->reports_model->getAllStaff(); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('registers_report'))); $meta = array('page_title' => lang('registers_report'), 'bc' => $bc); $this->page_construct('reports/registers', $this->data, $meta); } function get_register_logs() { $user = $this->input->get('user') ? $this->input->get('user') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $this->load->library('datatables'); if ($this->db->dbdriver == 'sqlite3') { $this->datatables->select("{$this->db->dbprefix('registers')}.id as id, date, closed_at, ({$this->db->dbprefix('users')}.first_name || ' ' || {$this->db->dbprefix('users')}.last_name || '<br>' || {$this->db->dbprefix('users')}.email) as user, cash_in_hand, (total_cc_slips || ' (' || total_cc_slips_submitted || ')') as cc_slips, (total_cheques || ' (' || total_cheques_submitted || ')') as total_cheques, (total_cash || ' (' || total_cash_submitted || ')') as total_cash, note", FALSE); } else { $this->datatables->select("{$this->db->dbprefix('registers')}.id as id, date, closed_at, CONCAT(" . $this->db->dbprefix('users') . ".first_name, ' ', " . $this->db->dbprefix('users') . ".last_name, '<br>', " . $this->db->dbprefix('users') . ".email) as user, cash_in_hand, CONCAT(total_cc_slips, ' (', total_cc_slips_submitted, ')') as cc_slips, CONCAT(total_cheques, ' (', total_cheques_submitted, ')') as total_cheques, CONCAT(total_cash, ' (', total_cash_submitted, ')') as total_cash, note", FALSE); } $this->datatables->from("registers") ->join('users', 'users.id=registers.user_id', 'left'); if ($user) { $this->datatables->where('registers.user_id', $user); } if ($start_date) { $this->datatables->where('date >=', $start_date)->where('date <=', $end_date); } if ($this->session->userdata('store_id')) { $this->datatables->where('registers.store_id', $this->session->userdata('store_id')); } echo $this->datatables->generate(); } function payments() { if ($this->input->post('customer')) { $start_date = $this->input->post('start_date') ? $this->input->post('start_date') : NULL; $end_date = $this->input->post('end_date') ? $this->input->post('end_date') : NULL; $user = $this->input->post('user') ? $this->input->post('user') : NULL; $this->data['total_sales'] = $this->reports_model->getTotalCustomerSales($this->input->post('customer'), $user, $start_date, $end_date); } $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['users'] = $this->reports_model->getAllStaff(); $this->data['customers'] = $this->reports_model->getAllCustomers(); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('payments_report'))); $meta = array('page_title' => lang('payments_report'), 'bc' => $bc); $this->page_construct('reports/payments', $this->data, $meta); } function get_payments() { $user = $this->input->get('user') ? $this->input->get('user') : NULL; $ref = $this->input->get('payment_ref') ? $this->input->get('payment_ref') : NULL; $sale_id = $this->input->get('sale_no') ? $this->input->get('sale_no') : NULL; $customer = $this->input->get('customer') ? $this->input->get('customer') : NULL; $paid_by = $this->input->get('paid_by') ? $this->input->get('paid_by') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $this->load->library('datatables'); $this->datatables ->select("{$this->db->dbprefix('payments')}.id as id, {$this->db->dbprefix('payments')}.date, {$this->db->dbprefix('payments')}.reference as ref, {$this->db->dbprefix('sales')}.id as sale_no, paid_by, amount, DATE_FORMAT({$this->db->dbprefix('payments')}.date, '%d-%m-%Y') as payment_date, hold_ref") ->from('payments') ->join('sales', 'payments.sale_id=sales.id', 'left') ->group_by('payments.id'); if ($this->session->userdata('store_id')) { $this->datatables->where('payments.store_id', $this->session->userdata('store_id')); } if ($user) { $this->datatables->where('payments.created_by', $user); } if ($ref) { $this->datatables->where('payments.reference', $ref); } if ($paid_by) { $this->datatables->where('payments.paid_by', $paid_by); } if ($sale_id) { $this->datatables->where('sales.hold_ref', $sale_id); } if ($customer) { $this->datatables->where('sales.customer_id', $customer); } if ($start_date) { $this->datatables->where("{$this->db->dbprefix('payments')}.date >=", $start_date) ->where("{$this->db->dbprefix('payments')}.date <=", $end_date); } echo $this->datatables->generate(); } /* Orginal Get Payments Function function get_payments() { $user = $this->input->get('user') ? $this->input->get('user') : NULL; $ref = $this->input->get('payment_ref') ? $this->input->get('payment_ref') : NULL; $sale_id = $this->input->get('sale_no') ? $this->input->get('sale_no') : NULL; $customer = $this->input->get('customer') ? $this->input->get('customer') : NULL; $paid_by = $this->input->get('paid_by') ? $this->input->get('paid_by') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $this->load->library('datatables'); $this->datatables ->select("{$this->db->dbprefix('payments')}.id as id, {$this->db->dbprefix('payments')}.date, {$this->db->dbprefix('payments')}.reference as ref, {$this->db->dbprefix('sales')}.id as sale_no, paid_by, amount") ->from('payments') ->join('sales', 'payments.sale_id=sales.id', 'left') ->group_by('payments.id'); if ($this->session->userdata('store_id')) { $this->datatables->where('payments.store_id', $this->session->userdata('store_id')); } if ($user) { $this->datatables->where('payments.created_by', $user); } if ($ref) { $this->datatables->where('payments.reference', $ref); } if ($paid_by) { $this->datatables->where('payments.paid_by', $paid_by); } if ($sale_id) { $this->datatables->where('sales.id', $sale_id); } if ($customer) { $this->datatables->where('sales.customer_id', $customer); } if ($start_date) { $this->datatables->where("{$this->db->dbprefix('payments')}.date >=", $start_date) ->where("{$this->db->dbprefix('payments')}.date <=", $end_date); } echo $this->datatables->generate(); }*/ function alerts() { $data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['page_title'] = lang('stock_alert'); $bc = array(array('link' => '#', 'page' => lang('stock_alert'))); $meta = array('page_title' => lang('stock_alert'), 'bc' => $bc); $this->page_construct('reports/alerts', $this->data, $meta); } function get_alerts() { $this->load->library('datatables'); $this->datatables->select($this->db->dbprefix('products').".id as id, ".$this->db->dbprefix('products').".image as image, ".$this->db->dbprefix('products').".code as code, ".$this->db->dbprefix('products').".name as pname, type, ".$this->db->dbprefix('categories').".name as cname, (CASE WHEN psq.quantity IS NULL THEN 0 ELSE psq.quantity END) as quantity, alert_quantity, tax, tax_method, cost, (CASE WHEN psq.price > 0 THEN psq.price ELSE {$this->db->dbprefix('products')}.price END) as price", FALSE) ->from('products') ->join('categories', 'categories.id=products.category_id') ->join("( SELECT * from {$this->db->dbprefix('product_store_qty')} WHERE store_id = {$this->session->userdata('store_id')}) psq", 'products.id=psq.product_id', 'left') ->where("(CASE WHEN psq.quantity IS NULL THEN 0 ELSE psq.quantity END) < {$this->db->dbprefix('products')}.alert_quantity", NULL, FALSE) ->group_by('products.id'); $this->datatables->add_column("Actions", "<div class='text-center'><a href='#' class='btn btn-xs btn-primary ap tip' data-id='$1' title='".lang('add_to_purcahse_order')."'><i class='fa fa-plus'></i></a></div>", "id"); // $this->datatables->unset_column('id'); echo $this->datatables->generate(); } //////////////////////--------------------------- New Reports Starts Here ----------------------------////////////////////////// /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Customers Reports Here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ public function get_customers() { $this->load->library('datatables'); $this->datatables ->select('customers.id, name, phone, email, cf1, cf2, (SELECT COUNT(id) from tec_sales where tec_sales.customer_id=tec_customers.id) as dc_count,(SELECT (SUM(tec_sales.grand_total) - SUM(tec_sales.paid))from tec_sales where tec_sales.customer_id=tec_customers.id) AS customer_balance') ->from('customers'); $this->datatables->add_column('Actions', "<div class='text-center'><div class='btn-group'><a href='" . site_url('customers/edit/$1') . "' class='tip btn btn-warning btn-xs' title='" . $this->lang->line('edit_customer') . "'><i class='fa fa-edit'></i></a> <a href='" . site_url('customers/delete/$1') . "' onClick=\"return confirm('" . $this->lang->line('alert_x_customer') . "')\" class='tip btn btn-danger btn-xs' title='" . $this->lang->line('delete_customer') . "'><i class='fa fa-trash-o'></i></a></div></div>", 'id') ->unset_column('id'); $this->datatables->add_column('Clone', "<div class='text-center'><div class='btn-group'><span href='' class='tip btn btn-info btn-xs clone' title='Customers History' id='$1'><i class='fa fa-check-circle-o'> Customers Sales History</i></span></div></div>", 'id,dc_count'); $this->datatables->add_column('DC Count', "<div class='text-center'><div class='btn-group'><span href='' class='tip btn btn-success btn-xs' title='DC Count'>DC Count : <b>$2</b></i></span></div></div>", 'id,dc_count'); $this->datatables->add_column('Balance', "<div class='text-center'><div class='btn-group'><span href='' class='tip btn btn-danger btn-xs clone' style='font-family: arial;' title='Customers Balance' id='$1'><i class='fa fa-inr'> Balance: $2 </i></span></div></div>", 'id,customer_balance'); echo $this->datatables->generate(); } public function customers() { $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['page_title'] = lang('customers_report'); $bc = [['link' => '#', 'page' => lang('customers_report')]]; $meta = ['page_title' => lang('customers_report'), 'bc' => $bc]; $this->page_construct('reports/customers', $this->data, $meta); } /******************************* Get Sale Items Starts Here ********************************/ public function sale_items_report() { $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['products'] = $this->reports_model->getAllProducts(); $this->data['page_title'] = lang('sale_items_report'); $bc = [['link' => '#', 'page' => lang('sale_items_report')]]; $meta = ['page_title' => lang('sale_items_report'), 'bc' => $bc]; $this->page_construct('reports/sale_items_report', $this->data, $meta); } function get_all_sale_items() { $product = $this->input->get('product') ? $this->input->get('product') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; /*->select($this->db->dbprefix('sale_items').".id as sale_items_id, DATE_FORMAT(sale_date, '%d-%m-%Y') as sale_date, customer_name, hold_ref, discount, total, total_tax, total_discount, grand_total, paid, (grand_total-(paid+discount)) as balance, status, DATE_FORMAT(due_date, '%d-%m-%Y') as due_date")*/ $this->load->library('datatables'); $this->datatables ->select($this->db->dbprefix('sale_items').".id as sale_items_id, DATE_FORMAT(sale_date, '%d-%m-%Y') as sale_date, customer_name, quantity, hold_ref, total, total_tax, total_discount, grand_total, paid, status, DATE_FORMAT(due_date, '%d-%m-%Y') as due_date, product_name, product_type") ->from('sale_items') ->join('sales', 'sale_items.sale_id=sales.id', 'left'); if ($this->session->userdata('store_id')) { $this->datatables->where('store_id', $this->session->userdata('store_id')); } $this->datatables->unset_column('id'); if($product) { $this->datatables->where('product_id', $product); } if($start_date) { $this->datatables->where('due_date >=', $start_date); } if($end_date) { $this->datatables->where('due_date <=', $end_date); } echo $this->datatables->generate(); } /******************************* Get Sale Items Endss Here **********************************/ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Incomes Reports Here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ public function get_incomes($user_id = null) { $category = $this->input->get('category') ? $this->input->get('category') : NULL; $sub_category = $this->input->get('sub_category') ? $this->input->get('sub_category') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $detail_link = anchor('incomes/expense_note/$1', '<i class="fa fa-file-text-o"></i> ' . lang('expense_note'), 'data-toggle="modal" data-target="#myModal2"'); $edit_link = anchor('purchases/edit_expense/$1', '<i class="fa fa-edit"></i> ' . lang('edit_expense'), 'data-toggle="modal" data-target="#myModal"'); $delete_link = "<a href='#' class='po' title='<b>" . $this->lang->line('delete_expense') . "</b>' data-content=\"<p>" . lang('r_u_sure') . "</p><a class='btn btn-danger po-delete' href='" . site_url('purchases/delete_expense/$1') . "'>" . lang('i_m_sure') . "</a> <button class='btn po-close'>" . lang('no') . "</button>\" rel='popover'><i class=\"fa fa-trash-o\"></i> " . lang('delete_expense') . '</a>'; $action = '<div class="text-center"><div class="btn-group text-left">' . '<button type="button" class="btn btn-default btn-xs btn-primary dropdown-toggle" data-toggle="dropdown">' . lang('actions') . ' <span class="caret"></span></button> <ul class="dropdown-menu pull-right" role="menu"> <li>' . $detail_link . '</li> <li>' . $edit_link . '</li> <li>' . $delete_link . '</li> </ul> </div></div>'; $this->load->library('datatables'); if ($this->db->dbdriver == 'sqlite3') { $this->datatables->select($this->db->dbprefix('incomes') . '.id as id, DATE_FORMAT(date, "%d-%m-%Y") as date, reference, amount, note, incomes.category, sub_category, IF(tec_incomes.category=tec_mm_categories.id,mm_categories.name,code) as cat_name, IF(tec_incomes.sub_category=tec_mm_sub_categories.id,mm_sub_categories.sub_name,sub_conf1) as sub_cat_name, (' . $this->db->dbprefix('users') . ".first_name || ' ' || " . $this->db->dbprefix('users') . '.last_name) as user, attachment', false); } else { $this->datatables->select($this->db->dbprefix('incomes') . '.id as id, DATE_FORMAT(date, "%d-%m-%Y") as date, reference, amount, note, incomes.category, sub_category, IF(tec_incomes.category=tec_mm_categories.id,mm_categories.name,code) as cat_name, IF(tec_incomes.sub_category=tec_mm_sub_categories.id,mm_sub_categories.sub_name,sub_conf1) as sub_cat_name, CONCAT(' . $this->db->dbprefix('users') . ".first_name, ' ', " . $this->db->dbprefix('users') . '.last_name) as user, attachment', false); } $this->datatables->from('incomes') ->join('users', 'users.id=incomes.created_by', 'left'); $this->datatables->join('mm_categories', 'incomes.category = mm_categories.id','inner'); $this->datatables->join('mm_sub_categories', 'incomes.sub_category = mm_sub_categories.id','inner'); if (!$this->Admin && !$this->session->userdata('view_right')) { $this->datatables->where('created_by', $this->session->userdata('user_id')); } $this->datatables->where('incomes.store_id', $this->session->userdata('store_id')); $this->datatables->edit_column('category', "<span class='btn btn-info btn-xs'>$3</span>", 'mm_sub_categories.id, category, cat_name'); $this->datatables->edit_column('sub_category', "<span class='btn btn-info btn-xs'>$4</span>", 'mm_sub_categories.id, category, cat_name, sub_cat_name'); $this->datatables->add_column('Actions', "<div class='text-center'><div class='btn-group'><a href='" . site_url('incomes/expense_note/$1') . "' title='" . lang('income_note') . "' class='tip btn btn-primary btn-xs' data-toggle='ajax-modal'><i class='fa fa-file-text-o'></i></a> <a href='" . site_url('incomes/edit_income/$1') . "' title='" . lang('edit_income') . "' class='tip btn btn-warning btn-xs'><i class='fa fa-edit'></i></a> <a href='" . site_url('incomes/delete_income/$1') . "' onClick=\"return confirm('" . lang('alert_x_expense') . "')\" title='" . lang('delete_expense') . "' class='tip btn btn-danger btn-xs'><i class='fa fa-trash-o'></i></a></div></div>", 'id'); $this->datatables->unset_column('id'); if($category) { $this->datatables->where('incomes.category', $category); } if($sub_category) { $this->datatables->where('sub_category', $sub_category); } if($start_date) { $this->datatables->where('date >=', $start_date); } if($end_date) { $this->datatables->where('date <=', $end_date); } /*$this->datatables->order_by('incomes.date', "asc");*/ echo $this->datatables->generate(); } public function incomes($id = null, $sub_category = null, $start_date = null, $end_date = null) { // Filter Starts Here if ($this->input->post('category')) { $sub_category = $this->input->post('sub_category') ? $this->input->post('sub_category') : NULL; $start_date = $this->input->post('start_date') ? $this->input->post('start_date') : NULL; $end_date = $this->input->post('end_date') ? $this->input->post('end_date') : NULL; $this->data['purchases'] = $this->purchases_model->getTotalIncomes($this->input->post('category'), $sub_category, $start_date, $end_date); } // Filter Ends Here $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['page_title'] = lang('incomes'); $this->data['mm_category'] = $this->site->getAllMMCategories(); $this->data['expense_category'] = $this->site->getAllMmCategory(2); $bc = [['link' => site_url('incomes'), 'page' => lang('incomes')], ['link' => '#', 'page' => lang('incomes')]]; $meta = ['page_title' => lang('incomes'), 'bc' => $bc]; $this->page_construct('reports/incomes', $this->data, $meta); } //////////////////////--------------------------- New Reports Endss Here ----------------------------////////////////////////// //////////////////////------------------------------ New Expenses Report Starts Here -------------------------------////////////////////////////// public function expenses($id = null, $sub_category = null, $start_date = null, $end_date = null) { // Filter Starts Here /*if ($this->input->post('category')) { $sub_category = $this->input->post('sub_category') ? $this->input->post('sub_category') : NULL; $start_date = $this->input->post('start_date') ? $this->input->post('start_date') : NULL; $end_date = $this->input->post('end_date') ? $this->input->post('end_date') : NULL; $this->data['purchases'] = $this->expenses_model->getTotalPurchase($this->input->post('category'), $sub_category, $start_date, $end_date); }*/ // Filter Ends Here $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['page_title'] = lang('expenses_report'); $this->data['mm_category'] = $this->site->getAllMMCategories(); $this->data['expense_category'] = $this->site->getAllMmCategory(1); $bc = [['link' => site_url('expenses'), 'page' => lang('expenses_report')], ['link' => '#', 'page' => lang('expenses_report')]]; $meta = ['page_title' => lang('expenses_report'), 'bc' => $bc]; $this->page_construct('reports/expenses', $this->data, $meta); } public function get_expenses($user_id = null) { $category = $this->input->get('category') ? $this->input->get('category') : NULL; $sub_category = $this->input->get('sub_category') ? $this->input->get('sub_category') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $detail_link = anchor('purchases/expense_note/$1', '<i class="fa fa-file-text-o"></i> ' . lang('expense_note'), 'data-toggle="modal" data-target="#myModal2"'); $edit_link = anchor('purchases/edit_expense/$1', '<i class="fa fa-edit"></i> ' . lang('edit_expense'), 'data-toggle="modal" data-target="#myModal"'); $delete_link = "<a href='#' class='po' title='<b>" . $this->lang->line('delete_expense') . "</b>' data-content=\"<p>" . lang('r_u_sure') . "</p><a class='btn btn-danger po-delete' href='" . site_url('purchases/delete_expense/$1') . "'>" . lang('i_m_sure') . "</a> <button class='btn po-close'>" . lang('no') . "</button>\" rel='popover'><i class=\"fa fa-trash-o\"></i> " . lang('delete_expense') . '</a>'; $action = '<div class="text-center"><div class="btn-group text-left">' . '<button type="button" class="btn btn-default btn-xs btn-primary dropdown-toggle" data-toggle="dropdown">' . lang('actions') . ' <span class="caret"></span></button> <ul class="dropdown-menu pull-right" role="menu"> <li>' . $detail_link . '</li> <li>' . $edit_link . '</li> <li>' . $delete_link . '</li> </ul> </div></div>'; $this->load->library('datatables'); if ($this->db->dbdriver == 'sqlite3') { $this->datatables->select($this->db->dbprefix('expenses') . '.id as id, DATE_FORMAT(date, "%d-%m-%Y") as date, reference, amount, note, expenses.category, sub_category, IF(tec_expenses.category=tec_mm_categories.id,mm_categories.name,code) as cat_name, IF(tec_expenses.sub_category=tec_mm_sub_categories.id,mm_sub_categories.sub_name,sub_conf1) as sub_cat_name, (' . $this->db->dbprefix('users') . ".first_name || ' ' || " . $this->db->dbprefix('users') . '.last_name) as user, attachment, SUM(amount) as total_amount', false); } else { $this->datatables->select($this->db->dbprefix('expenses') . '.id as id, DATE_FORMAT(date, "%d-%m-%Y") as date, reference, amount, note, expenses.category, sub_category, IF(tec_expenses.category=tec_mm_categories.id,mm_categories.name,code) as cat_name, IF(tec_expenses.sub_category=tec_mm_sub_categories.id,mm_sub_categories.sub_name,sub_conf1) as sub_cat_name, CONCAT(' . $this->db->dbprefix('users') . ".first_name, ' ', " . $this->db->dbprefix('users') . '.last_name) as user, attachment, SUM(amount) as total_amount', false); } $this->datatables->from('expenses') ->join('users', 'users.id=expenses.created_by', 'left') ->group_by('expenses.sub_category'); $this->datatables->join('mm_categories', 'expenses.category = mm_categories.id','inner'); $this->datatables->join('mm_sub_categories', 'expenses.sub_category = mm_sub_categories.id','inner'); if (!$this->Admin && !$this->session->userdata('view_right')) { $this->datatables->where('created_by', $this->session->userdata('user_id')); } $this->datatables->where('expenses.store_id', $this->session->userdata('store_id')); $this->datatables->edit_column('category', "<span class='btn btn-info btn-xs'>$3</span>", 'mm_sub_categories.id, category, cat_name'); $this->datatables->edit_column('sub_category', "<span class='btn btn-info btn-xs'>$4</span>", 'mm_sub_categories.id, category, cat_name, sub_cat_name'); $this->datatables->add_column('Actions', "<div class='text-center'><div class='btn-group'><a href='" . site_url('expenses/expense_note/$1') . "' title='" . lang('expense_note') . "' class='tip btn btn-primary btn-xs' data-toggle='ajax-modal'><i class='fa fa-file-text-o'></i></a> <a href='" . site_url('expenses/edit_expense/$1') . "' title='" . lang('edit_expense') . "' class='tip btn btn-warning btn-xs'><i class='fa fa-edit'></i></a> <a href='" . site_url('expenses/delete_expense/$1') . "' onClick=\"return confirm('" . lang('alert_x_expense') . "')\" title='" . lang('delete_expense') . "' class='tip btn btn-danger btn-xs'><i class='fa fa-trash-o'></i></a></div></div>", 'id'); $this->datatables->unset_column('id'); if($category) { $this->datatables->where('expenses.category', $category); } if($sub_category) { $this->datatables->where('sub_category', $sub_category); } if($start_date) { $this->datatables->where('date >=', $start_date); } if($end_date) { $this->datatables->where('date <=', $end_date); } echo $this->datatables->generate(); } //////////////////////------------------------------ New Expenses Report Ends Here -------------------------------////////////////////////////// /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ New Final Reports Starts Here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ function dc_income_report() { if ($this->input->post('customer')) { $start_date = $this->input->post('start_date') ? $this->input->post('start_date') : NULL; $end_date = $this->input->post('end_date') ? $this->input->post('end_date') : NULL; $user = $this->input->post('user') ? $this->input->post('user') : NULL; $this->data['total_sales'] = $this->reports_model->getTotalCustomerSales($this->input->post('customer'), $user, $start_date, $end_date); } $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['users'] = $this->reports_model->getAllStaff(); $this->data['customers'] = $this->reports_model->getAllCustomers(); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('dc_income_report'))); $meta = array('page_title' => lang('dc_income_report'), 'bc' => $bc); $this->page_construct('reports/dc_incomes_report', $this->data, $meta); } function staff_report() { $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['users'] = $this->reports_model->getAllStaff(); $this->data['customers'] = $this->reports_model->getAllCustomers(); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('staff_report'))); $meta = array('page_title' => lang('staff_report'), 'bc' => $bc); $this->page_construct('reports/staff_report', $this->data, $meta); } function inc_exp_report() { $this->data['error'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error'); $this->data['users'] = $this->reports_model->getAllStaff(); $this->data['customers'] = $this->reports_model->getAllCustomers(); $bc = array(array('link' => '#', 'page' => lang('reports')), array('link' => '#', 'page' => lang('inc_exp_report'))); $meta = array('page_title' => lang('inc_exp_report'), 'bc' => $bc); $this->page_construct('reports/inc_exp_report', $this->data, $meta); } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ New Final Reports Endss Here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /********************* GET DATATABLES NEW REPORTS Starts Here *********************************/ function get_staff_reports() { $user = $this->input->get('users') ? $this->input->get('users') : NULL; $start_date = $this->input->get('start_date') ? $this->input->get('start_date') : NULL; $end_date = $this->input->get('end_date') ? $this->input->get('end_date') : NULL; $cutting_date_filter=''; $stitching_date_filter=''; if($start_date!='' && $end_date!=''){ $cutting_date_filter="and wu.cutting_assign_date BETWEEN '$start_date' AND '$end_date'"; $stitching_date_filter="and wu.stitching_assign_date BETWEEN '$start_date' AND '$end_date'"; } $this->load->library('datatables'); $this->datatables ->select("{$this->db->dbprefix('users')}.id as id, first_name, username, IFNULL((SELECT SUM(wu.quantity) FROM `tec_work_units` wu INNER JOIN tec_products ON tec_products.id=wu.product_id WHERE tec_users.id=wu.cutting_user_id and tec_products.pant_shirt_category=1 ".$cutting_date_filter."),0) as cutting_pant, IFNULL((SELECT SUM(wu.quantity) FROM `tec_work_units` wu INNER JOIN tec_products ON tec_products.id=wu.product_id WHERE tec_users.id=wu.cutting_user_id and tec_products.pant_shirt_category=2 ".$cutting_date_filter."),0) as cutting_shirt, IFNULL((SELECT SUM(wu.quantity) FROM `tec_work_units` wu INNER JOIN tec_products ON tec_products.id=wu.product_id WHERE tec_users.id=wu.stitching_user_id and tec_products.pant_shirt_category=2 ".$stitching_date_filter."),0) as stitching_shirt, IFNULL((SELECT SUM(wu.quantity) FROM `tec_work_units` wu INNER JOIN tec_products ON tec_products.id=wu.product_id WHERE tec_users.id=wu.stitching_user_id and tec_products.pant_shirt_category=1 ".$stitching_date_filter."),0) as stitching_pant") //->select("{$this->db->dbprefix('users')}.id as id, first_name, username, (SELECT COUNT(tec_work_units.id) FROM `tec_work_units` LEFT JOIN tec_products ON tec_products.id=tec_work_units.product_id WHERE tec_users.id=tec_work_units.cutting_user_id and tec_products.pant_shirt_category=1) as pant, (SELECT COUNT(tec_work_units.id) FROM `tec_work_units` LEFT JOIN tec_products ON tec_products.id=tec_work_units.product_id WHERE tec_users.id=tec_work_units.stitching_user_id and tec_products.pant_shirt_category=1) as shirt") ->from('users'); if ($user) { $this->datatables->where('users.id', $user); } /*if ($start_date && $end_date) { $where = "(SELECT SUM(wu.quantity) FROM `tec_work_units` wu INNER JOIN tec_products ON tec_products.id=wu.product_id WHERE tec_users.id=wu.cutting_user_id and tec_products.pant_shirt_category=1 ) "; $this->datatables->where($where); // $this->datatables->where('SELECT SUM(wu.quantity) FROM `tec_work_units` wu INNER JOIN tec_products ON tec_products.id=wu.product_id WHERE tec_users.id=wu.cutting_user_id and tec_products.pant_shirt_category=1', $user); }*/ /*$where = "(IF(((SELECT sum(tec_sale_items.quantity) FROM tec_sale_items WHERE tec_sale_items.sale_id=tec_sales.id and product_type='service')-(SELECT sum(tec_work_units.quantity) FROM tec_work_units WHERE tec_work_units.sale_id=tec_sales.id and tec_work_units.type=2 and tec_work_units.assign_or_not='assign')) is NULL,(SELECT sum(tec_sale_items.quantity) FROM tec_sale_items WHERE tec_sale_items.sale_id=tec_sales.id and product_type='service'),((SELECT sum(tec_sale_items.quantity) FROM tec_sale_items WHERE tec_sale_items.sale_id=tec_sales.id and product_type='service')-(SELECT sum(tec_work_units.quantity) FROM tec_work_units WHERE tec_work_units.sale_id=tec_sales.id and tec_work_units.type=2 and tec_work_units.assign_or_not='assign'))) > 0 or IF(((SELECT sum(tec_sale_items.quantity) FROM tec_sale_items WHERE tec_sale_items.sale_id=tec_sales.id and product_type='service')-(SELECT sum(tec_work_units.quantity) FROM tec_work_units WHERE tec_work_units.sale_id=tec_sales.id and tec_work_units.type=1 and tec_work_units.assign_or_not='assign')) is NULL,(SELECT sum(tec_sale_items.quantity) FROM tec_sale_items WHERE tec_sale_items.sale_id=tec_sales.id and product_type='service'),(SELECT sum(tec_sale_items.quantity) FROM tec_sale_items WHERE tec_sale_items.sale_id=tec_sales.id and product_type='service')-(SELECT sum(tec_work_units.quantity) FROM tec_work_units WHERE tec_work_units.sale_id=tec_sales.id and tec_work_units.type=1 and tec_work_units.assign_or_not='assign')) > 0) "; $this->datatables->where($where); if($end_dc && $start_dc) {$this->datatables->where("hold_ref BETWEEN '$start_dc' AND '$end_dc'");} if($due_date) { $this->datatables->where('due_date >=', $due_date); } if($due_date) { $this->datatables->where('due_date <=', $due_date); }*/ echo $this->datatables->generate(); } /********************* GET DATATABLES NEW REPORTS Starts Here *********************************/ /*SELECT id, first_name, username, (SELECT COUNT(tec_work_units.id) FROM `tec_work_units` LEFT JOIN tec_products ON tec_products.id=tec_work_units.product_id WHERE tec_users.id=tec_work_units.cutting_user_id and tec_products.pant_shirt_category=1) as cutting_pant,(SELECT COUNT(tec_work_units.id) FROM `tec_work_units` LEFT JOIN tec_products ON tec_products.id=tec_work_units.product_id WHERE tec_users.id=tec_work_units.cutting_user_id and tec_products.pant_shirt_category=2) as cutting_shirt, (SELECT COUNT(tec_work_units.id) FROM `tec_work_units` LEFT JOIN tec_products ON tec_products.id=tec_work_units.product_id WHERE tec_users.id=tec_work_units.stitching_user_id and tec_products.pant_shirt_category=1) as stitching_pant,(SELECT COUNT(tec_work_units.id) FROM `tec_work_units` LEFT JOIN tec_products ON tec_products.id=tec_work_units.product_id WHERE tec_users.id=tec_work_units.stitching_user_id and tec_products.pant_shirt_category=1) as stitching_shirt FROM `tec_users`*/ }