public function view_ledger($type, $id, $paged_vaccine = null, $date_from = null, $date_to = null, $offset = 0, $default_offset = 0) { $data['type'] = $type; //get current district/region $district_or_province = $this -> session -> userdata('district_province_id'); //get current level $identifier = $this -> session -> userdata('user_identifier'); $dummy_identifier = ""; //Determine if the user is trying to view the ledger for his/her own store //Type 0 means we are drilling down to a region if ($type == 0) { if ($identifier == "provincial_officer" && $district_or_province == $id) { redirect("disbursement_management/view_disbursements"); } $dummy_identifier = "provincial_officer"; } //Type 1 means we are drilling down to a district else if ($type == 1) { if ($identifier == "district_officer" && $district_or_province == $id) { redirect("disbursement_management/view_disbursements"); } $dummy_identifier = "district_officer"; } //Type 2 means we are drilling down to the whole country else if ($type == 2) { if ($identifier == "national_officer") { redirect("disbursement_management/view_disbursements"); } $dummy_identifier = "national_officer"; } $data['identifier'] = $dummy_identifier; $data['district_or_province'] = $id; $district_or_province = $id; //Now display the 'foreign' ledger $to = $this -> input -> post('to'); $from = $this -> input -> post('from'); $store = $this -> input -> post('selected_store_id'); $order_by = $this -> input -> post('order_by'); $order = $this -> input -> post('order'); $per_page = $this -> input -> post('per_page'); if ($to == false) { $to = date("U", mktime(0, 0, 0, 1, 1, date("Y") + 1)); } else if ($to == true) { $to = strtotime($to); } if ($from == false) { $from = date("U", mktime(0, 0, 0, 1, 1, date('Y'))); } else if ($from == true) { $from = strtotime($from); } if ($date_from != null) { $from = $date_from; } else if ($date_to != null) { $to = $date_to; } //Check if the user has specified how many items he/she wants per page. If not, default to 10 items per page. if ($per_page > 0) { $this -> session -> set_userdata(array("external_from" => $from, "external_to" => $to, "external_per_page" => $per_page, "external_order_by" => $order_by, "external_order" => $order)); } else { $temp = $this -> session -> userdata('external_per_page'); if ($temp == false) { $this -> session -> set_userdata(array("external_from" => $from, "external_to" => $to, "external_per_page" => 10, "external_order_by" => "Date_Issued_Timestamp", "external_order" => "DESC")); } } $items_per_page = $this -> session -> userdata('external_per_page'); $order_by = $this -> session -> userdata('external_order_by'); $order = $this -> session -> userdata('external_order'); $region = 0; $district = 0; if ($store != null) { $split_parts = explode("_", $store); $type = $split_parts[0]; $id = $split_parts[1]; if ($type == "district") { $district = $id; $this -> session -> set_userdata(array("external_region" => "")); $this -> session -> set_userdata(array("external_district" => $district)); } else if ($type == "region") { $region = $id; $this -> session -> set_userdata(array("external_district" => "")); $this -> session -> set_userdata(array("external_region" => $region)); } else if ($type == "national") { $this -> session -> set_userdata(array("external_district" => "")); $this -> session -> set_userdata(array("external_region" => "")); } } $district = $this -> session -> userdata('external_district'); $region = $this -> session -> userdata('external_region'); $data['vaccines'] = Vaccines::getAll_Minified(); $return_array = array(); $balances = array(); if ($type == 2) {//National Level $recipient = "Central Vaccines Store"; foreach ($data['vaccines'] as $vaccine) { //skip the vaccine that is currently being browsed through if ($vaccine -> id == $paged_vaccine) { continue; } $total_disbursements = Disbursements::getTotalNationalDisbursements($vaccine -> id, $from, $to, $district, $region); if ($total_disbursements > $items_per_page) { $config['base_url'] = base_url() . "external_ledger_management/view_ledger/" . $type . "/" . $id . "/" . $vaccine -> id . "/" . $from . "/" . $to; $config['total_rows'] = $total_disbursements; $config['per_page'] = $items_per_page; $config['uri_segment'] = 9; $config['num_links'] = 5; $this -> pagination -> initialize($config); $data['pagination'][$vaccine -> id] = $this -> pagination -> create_links(); } if ($order == "ASC") { $balances[$vaccine -> id] = Disbursements::getNationalPeriodBalance($vaccine -> id, $from); } else if ($order == "DESC") { $balances[$vaccine -> id] = Disbursements::getNationalPeriodBalance($vaccine -> id, $to); } $return_array[$vaccine -> id] = Disbursements::getNationalDisbursements($vaccine -> id, $from, $to, $default_offset, $items_per_page, $district, $region, $order_by, $order, $balances[$vaccine -> id]); } if ($paged_vaccine != null) { $data['paged_vaccine'] = $paged_vaccine; $total_disbursements = Disbursements::getTotalNationalDisbursements($paged_vaccine, $from, $to, $district, $region); if ($total_disbursements > $items_per_page) { $config['base_url'] = base_url() . "external_ledger_management/view_ledger/" . $type . "/" . $id . "/" . $paged_vaccine . "/" . $from . "/" . $to; $config['total_rows'] = $total_disbursements; $config['per_page'] = $items_per_page; $config['uri_segment'] = 8; $config['num_links'] = 5; $this -> pagination -> initialize($config); $data['pagination'][$paged_vaccine] = $this -> pagination -> create_links(); } if ($order == "ASC") { $balances[$paged_vaccine] = Disbursements::getNationalPeriodBalance($paged_vaccine, $from); } else if ($order == "DESC") { $balances[$paged_vaccine] = Disbursements::getNationalPeriodBalance($paged_vaccine, $to); } $return_array[$paged_vaccine] = Disbursements::getNationalDisbursements($paged_vaccine, $from, $to, $offset, $items_per_page, $district, $region, $order_by, $order, $balances[$paged_vaccine]); } } else if ($type == 0) {//Regional Store Level $recipient = Regions::getRegionName($district_or_province); foreach ($data['vaccines'] as $vaccine) { if ($vaccine -> id == $paged_vaccine) { continue; } $total_disbursements = Disbursements::getTotalRegionalDisbursements($district_or_province, $vaccine -> id, $from, $to, $district, $region); if ($total_disbursements > $items_per_page) { $config['base_url'] = base_url() . "external_ledger_management/view_ledger/" . $type . "/" . $id . "/" . $vaccine -> id . "/" . $from . "/" . $to; $config['total_rows'] = $total_disbursements; $config['per_page'] = $items_per_page; $config['uri_segment'] = 9; $config['num_links'] = 5; $this -> pagination -> initialize($config); $data['pagination'][$vaccine -> id] = $this -> pagination -> create_links(); } if ($order == "ASC") { $balances[$vaccine -> id] = Disbursements::getRegionalPeriodBalance($district_or_province, $vaccine -> id, $from); } else if ($order == "DESC") { $balances[$vaccine -> id] = Disbursements::getRegionalPeriodBalance($district_or_province, $vaccine -> id, $to); } $return_array[$vaccine -> id] = Disbursements::getRegionalDisbursements($district_or_province, $vaccine -> id, $from, $to, $default_offset, $items_per_page, $district, $region, $order_by, $order, $balances[$vaccine -> id]); } if ($paged_vaccine != null) { $data['paged_vaccine'] = $paged_vaccine; $total_disbursements = Disbursements::getTotalRegionalDisbursements($district_or_province, $paged_vaccine, $from, $to, $district, $region); if ($total_disbursements > $items_per_page) { $config['base_url'] = base_url() . "external_ledger_management/view_ledger/" . $type . "/" . $id . "/" . $paged_vaccine . "/" . $from . "/" . $to; $config['total_rows'] = $total_disbursements; $config['per_page'] = $items_per_page; $config['uri_segment'] = 8; $config['num_links'] = 5; $this -> pagination -> initialize($config); $data['pagination'][$paged_vaccine] = $this -> pagination -> create_links(); } if ($order == "ASC") { $balances[$paged_vaccine] = Disbursements::getRegionalPeriodBalance($district_or_province, $paged_vaccine, $from); } else if ($order == "DESC") { $balances[$paged_vaccine] = Disbursements::getRegionalPeriodBalance($district_or_province, $paged_vaccine, $to); } $return_array[$paged_vaccine] = Disbursements::getRegionalDisbursements($district_or_province, $paged_vaccine, $from, $to, $offset, $items_per_page, $district, $region, $order_by, $order, $balances[$paged_vaccine]); } } else if ($type == 1) {//District Store Level $recipient = Districts::getDistrictName($district_or_province); foreach ($data['vaccines'] as $vaccine) { if ($vaccine -> id == $paged_vaccine) { continue; } $total_disbursements = Disbursements::getTotalDistrictDisbursements($district_or_province, $vaccine -> id, $from, $to, $district); if ($total_disbursements > $items_per_page) { $config['base_url'] = base_url() . "external_ledger_management/view_ledger/" . $type . "/" . $id . "/" . $vaccine -> id . "/" . $from . "/" . $to; $config['total_rows'] = $total_disbursements; $config['per_page'] = $items_per_page; $config['uri_segment'] = 9; $config['num_links'] = 5; $this -> pagination -> initialize($config); $data['pagination'][$vaccine -> id] = $this -> pagination -> create_links(); } if ($order == "ASC") { $balances[$vaccine -> id] = Disbursements::getDistrictPeriodBalance($district_or_province, $vaccine -> id, $from); } else if ($order == "DESC") { $balances[$vaccine -> id] = Disbursements::getDistrictPeriodBalance($district_or_province, $vaccine -> id, $to); } $return_array[$vaccine -> id] = Disbursements::getDistrictDisbursements($district_or_province, $vaccine -> id, $from, $to, $default_offset, $items_per_page, $order_by, $order, $district, $balances[$vaccine -> id]); } if ($paged_vaccine != null) { $data['paged_vaccine'] = $paged_vaccine; $total_disbursements = Disbursements::getTotalDistrictDisbursements($district_or_province, $paged_vaccine, $from, $to, $district); if ($total_disbursements > $items_per_page) { $config['base_url'] = base_url() . "external_ledger_management/view_ledger/" . $type . "/" . $id . "/" . $paged_vaccine . "/" . $from . "/" . $to; $config['total_rows'] = $total_disbursements; $config['per_page'] = $items_per_page; $config['uri_segment'] = 8; $config['num_links'] = 5; $this -> pagination -> initialize($config); $data['pagination'][$paged_vaccine] = $this -> pagination -> create_links(); } if ($order == "ASC") { $balances[$paged_vaccine] = Disbursements::getDistrictPeriodBalance($district_or_province, $paged_vaccine, $from); } else if ($order == "DESC") { $balances[$paged_vaccine] = Disbursements::getDistrictPeriodBalance($district_or_province, $paged_vaccine, $to); } $return_array[$paged_vaccine] = Disbursements::getDistrictDisbursements($district_or_province, $paged_vaccine, $from, $to, $offset, $items_per_page, $order_by, $order, $district, $balances[$paged_vaccine]); } } $data['title'] = $recipient . " Stock Ledger For The Period Between " . date('d/m/Y', $from) . " to " . date('d/m/Y', $to); $data['recipient'] = $recipient; $data['content_view'] = "view_external_ledger"; $data['disbursements'] = $return_array; //$data['balances'] = $balances; $data['stylesheets'] = array("pagination.css"); //Get all the districts and regions so as to enable drilling down to a particular store $data['districts'] = Districts::getAllDistricts(); $data['regions'] = Regions::getAllRegions(); $this -> base_params_min($data); }
public function download() { $this->load->database(); $valid = $this->validate_form(); if ($valid) { $data_buffer = "\n\t\t\t<style>\n\t\t\ttable.data-table {\n\t\t\ttable-layout: fixed;\n\t\t\twidth: 700px;\n\t\t\tborder-collapse:collapse;\n\t\t\tborder:1px solid black;\n\t\t\t}\n\t\t\ttable.data-table td, th {\n\t\t\twidth: 100px;\n\t\t\tborder: 1px solid black;\n\t\t\t}\n\t\t\t.leftie{\n\t\t\t\ttext-align: left !important;\n\t\t\t}\n\t\t\t.center{\n\t\t\t\ttext-align: center !important;\n\t\t\t}\n\t\t\t.right{\n\t\t\t\ttext-align: right !important;\n\t\t\t}\n\t\t\t</style> \n\t\t\t"; $start_date = $this->input->post("start_date"); $end_date = $this->input->post("end_date"); $data_buffer .= "<table class='data-table'>"; $vaccines = Vaccines::getAll_Minified(); $data_buffer .= $this->echoTitles($vaccines); $population = 0; $store = ""; $district_or_region = $this->session->userdata('district_province_id'); $identifier = $this->session->userdata('user_identifier'); $sql_issues = ""; if ($identifier == 'provincial_officer') { $region_object = Regions::getRegion($district_or_region); $store = $region_object->name; $owner = "R" . $district_or_region; $sql_issues = "select vaccine_summaries.*,group_concat(vaccine_id,'-',quantity) as vaccine_issues from (SELECT vaccine_id,sum(Quantity) as quantity,issued_to_region,issued_to_district,issued_to_facility FROM `disbursements` where owner = '" . $owner . "' and Issued_By_Region = '" . $district_or_region . "' and vaccine_id != '' and str_to_date(date_issued,'%m/%d/%Y') between str_to_date('" . $start_date . "','%m/%d/%Y') and str_to_date('" . $end_date . "','%m/%d/%Y') group by vaccine_id,issued_to_region,issued_to_district,issued_to_facility) vaccine_summaries group by issued_to_region,issued_to_district,issued_to_facility"; } else { if ($identifier == 'district_officer') { $district_object = Districts::getDistrict($district_or_region); $store = $district_object->name; $owner = "D" . $district_or_region; $sql_issues = "select vaccine_summaries.*,group_concat(vaccine_id,'-',quantity) as vaccine_issues from (SELECT vaccine_id,sum(Quantity) as quantity,issued_to_region,issued_to_district,issued_to_facility FROM `disbursements` where owner = '" . $owner . "' and Issued_By_Region = '" . $district_or_region . "' and vaccine_id != '' and str_to_date(date_issued,'%m/%d/%Y') between str_to_date('" . $start_date . "','%m/%d/%Y') and str_to_date('" . $end_date . "','%m/%d/%Y') group by vaccine_id,issued_to_region,issued_to_district,issued_to_facility) vaccine_summaries group by issued_to_region,issued_to_district,issued_to_facility"; } else { if ($identifier == 'national_officer') { $store = "Central Vaccines Store"; $sql_issues = "select vaccine_summaries.*,group_concat(vaccine_id,'-',quantity) as vaccine_issues from (SELECT vaccine_id,sum(Quantity) as quantity,issued_to_region,issued_to_district,issued_to_facility FROM `disbursements` where owner = 'N0' and Issued_By_National = '0' and vaccine_id != '' and str_to_date(date_issued,'%m/%d/%Y') between str_to_date('" . $start_date . "','%m/%d/%Y') and str_to_date('" . $end_date . "','%m/%d/%Y') group by vaccine_id,issued_to_region,issued_to_district,issued_to_facility) vaccine_summaries group by issued_to_region,issued_to_district,issued_to_facility"; } } } $query = $this->db->query($sql_issues); $issues_data = $query->result_array(); foreach ($issues_data as $recipient_data) { $population = 0; $recipient = ""; if (isset($recipient_data['issued_to_region'])) { $population = Regional_Populations::getRegionalPopulation($recipient_data['issued_to_region'], date('Y')); $recipient = Regions::getRegionName($recipient_data['issued_to_region']); } else { if (isset($recipient_data['issued_to_district'])) { $population = District_Populations::getDistrictPopulation($recipient_data['issued_to_district'], date('Y')); $recipient = Districts::getDistrictName($recipient_data['issued_to_district']); } else { if (isset($recipient_data['issued_to_facility'])) { $recipient = $recipient_data['issued_to_facility']; } } } $data_buffer .= "<tr><td style='text-align:left;'>" . $recipient . "</td><td class='right'>" . number_format($population + 0) . "</td>"; //Get the vaccine data $vaccine_data = $recipient_data['vaccine_issues']; $separated_data = explode(',', $vaccine_data); $final_vaccine_data = array(); foreach ($separated_data as $vaccine_issue) { $further_separation = explode("-", $vaccine_issue); $final_vaccine_data[$further_separation[0]] = $further_separation[1]; } foreach ($vaccines as $vaccine) { $doses = 0; $mos = 0; $population = str_replace(',', '', $population); if (isset($final_vaccine_data[$vaccine->id])) { $doses = $final_vaccine_data[$vaccine->id]; } if ($population != 0 && $doses != 0) { $monthly_requirement = ceil($vaccine->Doses_Required * $population * $vaccine->Wastage_Factor / 12); $mos = number_format($doses / $monthly_requirement, 1); } $data_buffer .= "<td class='right'>" . number_format($doses + 0) . "</td><td class='center'>" . $mos . "</td>"; } $data_buffer .= "</tr>"; } $data_buffer .= "</table>"; $this->generatePDF($data_buffer, $start_date, $end_date, $store); } else { $this->view_transactions_interface(); } }
public function drill_down($type, $id) { $to = $this -> input -> post('to'); $from = $this -> input -> post('from'); if ($to == false) { $to = date("U", mktime(0, 0, 0, 1, 1, date("Y") + 1)); } else if ($to == true) { $to = strtotime($to); } if ($from == false) { $from = date("U", mktime(0, 0, 0, 1, 1, date('Y'))); } else if ($from == true) { $from = strtotime($from); } $data['type'] = $type; $data['id'] = $id; $data['title'] = "Disbursement Management::Receipts Log For The Period Between " . date('d/m/Y', $from) . " to " . date('d/m/Y', $to); $data['content_view'] = "view_receipts_view"; $data['vaccines'] = Vaccines::getAll_Minified(); $return_array = array(); $current_stock = array(); $population = 0; $year = date('Y'); $balances = array(); $archive_date = date('U'); //Type 0 means we are drilling down to a region if ($type == 0) { $data['recipient'] = Regions::getRegionName($id); $data['type'] = 0; $data['store_id'] = $id; foreach ($data['vaccines'] as $vaccine) { $return_array[$vaccine -> id] = Disbursements::getRegionalReceipts($id, $vaccine -> id, $from, $to); $current_stock[$vaccine -> id] = Disbursements::getRegionalPeriodBalance($id, $vaccine -> id, $archive_date); } $population = Regional_Populations::getRegionalPopulation($id, $year); } //Type 1 means we are drilling down to a district else if ($type == 1) { $data['recipient'] = Districts::getDistrictName($id); $data['type'] = 1; $data['store_id'] = $id; foreach ($data['vaccines'] as $vaccine) { $return_array[$vaccine -> id] = Disbursements::getDistrictReceipts($id, $vaccine -> id, $from, $to); //$current_stock[$vaccine->id] = Disbursements::getDistrictStockAtHand($id,$vaccine->id); $current_stock[$vaccine -> id] = Disbursements::getDistrictPeriodBalance($id, $vaccine -> id, $archive_date); } $population = District_Populations::getDistrictPopulation($id, $year); } //Type 2 means we are drilling down to the whole country if ($type == 2) { $data['recipient'] = "National Store"; $data['type'] = 2; $data['store_id'] = "0"; foreach ($data['vaccines'] as $vaccine) { $return_array[$vaccine -> id] = Disbursements::getNationalReceived($vaccine -> id, $from, $to); $current_stock[$vaccine -> id] = Disbursements::getNationalPeriodBalance($vaccine -> id, $archive_date); } $population = Regional_Populations::getNationalPopulation($year); } $data['population'] = $population; $data['disbursements'] = $return_array; $data['current_stocks'] = $current_stock; $this -> base_params_min_graph($data); }