1. Exporting data from mysql and then providing for downloading it using Codeigniter. it will also rename table columns fields as you required. it will create a csv file then download using force_download function. get_report function will be in a model and download is a controller function.
2. $table variable parameter denotes the name of table from which you want to get data , $header is the header information as column in csv file , You can add another case in switch condition to fetch another table record and add assign $header value as of table column. By doing this you can limit the only fields that needs to show in csv file when it will download.
3. UPLOAD_PATH_DOCUMENT_VIEW , you can define it in constant.php file in codeigniter mvc framwork like define('UPLOAD_PATH_DOCUMENT_VIEW ',FCPATH.'');
public function get_report($table,$search_gstin_id,$month,$year,$user_id,$form_id){
$this->load->dbutil();
$this->load->helper('file');
$month_in = '('.month_in_clause($month).')';
switch ($table) {
case 'b2b':
$header = array('gstin_uin_of_recipient', 'month', 'year',
'receiver_name', 'invoice_number', 'invoice_date', 'invoice_value',
'place_of_supply', 'reverse_charge', 'applicable_per_of_tax_rate', 'invoice_type',
'e_commerce_gstin', 'rate', 'taxable_value', 'cess_amount',
'hsn_no', 'hsn_uqc', 'hsn_total_quantity', 'created');
break;
case 'b2cs':
$header = array('month', 'year', 'type',
'place_of_supply', 'applicable_per_of_tax_rate',
'rate', 'taxable_value', 'cess_amount', 'e_commerce_gstin', 'created');
break;
default:
break;
}
$myheaer = array();
foreach ($header as $key => $value) {
$myheaer[] = $value." AS '".str_replace('_', ' ', ucfirst($value))."'";
}
$table_columns = implode(",", $myheaer);
$delimiter = ",";
$newline = "\r\n";
$enclosure = '"';
$q = "Select " . $table_columns . " from " . $table . "
where user_id=" . $user_id . " and form_id=" . $form_id . "
and search_gstin_id=" . $search_gstin_id . " and month in " . $month_in . "";
$query = $this->db->query($q);
if ($query->num_rows() > 0) {
$csvContent = $this->dbutil->csv_from_result($query, $delimiter, $newline, $enclosure);
if (!write_file(UPLOAD_PATH_DOCUMENT_VIEW . '/document_view.csv', $csvContent)) {
return "UNABLE-TO-WRITE";
} else {
return "WRITED";
}
} else {
return NULL;
}
}
4. reports function is the model function which you can make and just simple revert back the array from mysql database.
public function download() {
$this->load->helper('download');
$search_gstin_id = (int) $this->uri->segment(3, 0);
$month = $this->uri->segment(4, 0);
$year = (int) $this->uri->segment(5, 0);
$report_type = $this->uri->segment(6, 0);
$form_id = (int) $this->uri->segment(7, 0);
$this->load->model('Gstin');
$result=$this->Gstin->reports($report_type,$search_gstin_id,$month,$year,$user_id,$form_id);
if(!empty($result)){
if($result =='UNABLE-TO-WRITE'){
$_SESSION['markfront']=alertmessage($message_type='alert-success',$message='UnableWrite');
$this->session->mark_as_flash('markfront');
redirect(base_url().'');
exit;
}else{
$filename = $report_type . '_' . date('Ymd') . '.csv';
$inputFileName=UPLOAD_PATH_GSTR1_DOCUMENT_VIEW.'/upload_document_view.csv';
force_download($filename, file_get_contents($inputFileName));
exit;
}
}
}
5. Below function is a helper function which builds just replace dash with comma and make a in clause like '01','03'...etc
function month_in_clause($months) {
$month = "'" . str_replace("-", "','", $months) . "'";
return $month;
}
