12 lines
3.5 KiB
PHP
12 lines
3.5 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
class Taxes extends MY_Controller
|
|
{
|
|
public function __construct(){parent::__construct();$this->requirePermission('taxes');$this->load->database();}
|
|
private function uid(){return(int)$this->session->userdata('user_id');}private function go($ok,$m){$this->session->set_flashdata($ok?'success':'error',$m);redirect('taxes');}
|
|
public function index(){$period=$this->input->get('period')?:date('Y-m');$d=array('active_menu'=>'taxes','period'=>$period);$d['codes']=$this->db->order_by('code')->get('tax_codes')->result();$d['periods']=$this->db->order_by('period','DESC')->get('tax_periods')->result();$d['register']=$this->db->select('t.*,c.code,c.name')->from('tax_transactions t')->join('tax_codes c','c.id=t.tax_code_id')->like('t.tax_date',$period,'after')->order_by('t.tax_date')->get()->result();$d['summary']=$this->db->query("SELECT direction,SUM(tax_base) tax_base,SUM(tax_amount) tax_amount FROM tax_transactions WHERE DATE_FORMAT(tax_date,'%Y-%m')=? AND status='posted' GROUP BY direction",array($period))->result();$this->load->view('partials/header',$d);$this->load->view('taxes/index',$d);$this->load->view('partials/footer');}
|
|
public function code(){try{$this->db->insert('tax_codes',array('code'=>strtoupper(trim($this->input->post('code',true))),'name'=>$this->input->post('name',true),'tax_type'=>$this->input->post('tax_type'),'calculation_method'=>$this->input->post('calculation_method'),'rate'=>(float)$this->input->post('rate'),'formula_expression'=>$this->input->post('formula_expression',true)?:null,'input_account_id'=>$this->input->post('input_account_id')?:null,'output_account_id'=>$this->input->post('output_account_id')?:null,'withholding_payable_account_id'=>$this->input->post('withholding_payable_account_id')?:null,'withholding_receivable_account_id'=>$this->input->post('withholding_receivable_account_id')?:null,'effective_from'=>$this->input->post('effective_from'),'effective_to'=>$this->input->post('effective_to')?:null,'is_active'=>1));$this->go(true,'Kode pajak disimpan.');}catch(Throwable$e){$this->go(false,$e->getMessage());}}
|
|
public function period(){try{$period=$this->input->post('period');$status=$this->input->post('status');$row=$this->db->get_where('tax_periods',array('period'=>$period,'tax_type'=>$this->input->post('tax_type')))->row();$data=array('period'=>$period,'tax_type'=>$this->input->post('tax_type'),'status'=>$status,'filing_reference'=>$this->input->post('filing_reference',true),'notes'=>$this->input->post('notes',true));if(in_array($status,array('filed','closed'),true)){$data[$status.'_at']=date('Y-m-d H:i:s');$data[$status.'_by']=$this->uid();}if($row)$this->db->where('id',$row->id)->update('tax_periods',$data);else$this->db->insert('tax_periods',$data);$this->go(true,'Status periode pajak diperbarui.');}catch(Throwable$e){$this->go(false,$e->getMessage());}}
|
|
public function export($period){$rows=$this->db->select('t.tax_date,c.code,c.tax_type,t.direction,t.source_type,t.source_id,t.tax_invoice_no,t.tax_base,t.tax_amount,t.status')->from('tax_transactions t')->join('tax_codes c','c.id=t.tax_code_id')->like('t.tax_date',$period,'after')->order_by('t.tax_date')->get()->result_array();$name='tax-register-'.$period.'.csv';$this->output->set_content_type('text/csv')->set_header('Content-Disposition: attachment; filename="'.$name.'"');$h=fopen('php://output','w');fputcsv($h,array('tanggal','kode','jenis','arah','sumber','id_sumber','nomor_faktur','dasar_pajak','nilai_pajak','status'));foreach($rows as$r)fputcsv($h,$r);fclose($h);}
|
|
}
|