Commit d2ac3ac2 by nurchamim

modul: Bug filter payroll komponen tidak tetap

status: selesai
keterangan:
-bug fix filter cabang dan departemen
-penyesuaian kolom sesuai dengan urutan master komponen
-menghilangkan alert error ketika pengambilan data pada datatable
-menghilangkan alert error pengambilan data
parent 1b36272f
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
defined('BASEPATH') or exit('No direct script access allowed');
class Data_komponen extends MY_Controller{
class Data_komponen extends MY_Controller
{
public function __construct(){
public function __construct()
{
parent::__construct();
$this->load->model('payroll/data_komponen_tdk_tetap/Data_komponen_m', 'model');
}
public function index()
public function index()
{
$data['judul'] = 'Data Komponen Tidak Tetap';
$data['aktif'] = 'data_komponen_tdk_tetap';
$data['menu'] = $this->load->view('main_menu', $data, true);
$data['content'] = $this->load->view('payroll/data_komponen_tdk_tetap/home', $data, true);
$this->load->view('main_template', $data, false);
}
$data['judul'] = 'Data Komponen Tidak Tetap';
$data['aktif'] = 'data_komponen_tdk_tetap';
$data['menu'] = $this->load->view('main_menu', $data, true);
$data['content'] = $this->load->view('payroll/data_komponen_tdk_tetap/home', $data, true);
$this->load->view('main_template', $data, false);
}
public function view_data($bulan, $id_karyawan = 'all', $id_cabang = 'all', $id_departemen = 'all')
{
......@@ -25,27 +27,33 @@ class Data_komponen extends MY_Controller{
$data['id_karyawan'] = $id_karyawan;
$data['id_cabang'] = $id_cabang;
$data['id_departemen'] = $id_departemen;
$this->load->view('payroll/data_komponen_tdk_tetap/list_data', $data);
}
$this->load->view('payroll/data_komponen_tdk_tetap/list_data', $data);
}
public function list_data($bulan, $id_karyawan = 'all', $id_cabang = 'all', $id_departemen = 'all')
{
$list = $this->model->get_datatables($id_karyawan, $id_cabang, $id_departemen);
$get_pend = json_decode($this->model->tambah_pendapatan($bulan, $id_karyawan, $id_cabang, $id_departemen), true);
$get_pot = json_decode($this->model->tambah_potongan($bulan, $id_karyawan, $id_cabang, $id_departemen), true);
$data = array();
$bulan = date('Y-m', strtotime('01-'.$bulan));
$no = $_GET['start'];
// decode URI
$id_cabang = urldecode($id_cabang);
$id_departemen = urldecode($id_departemen);
$list = $this->model->get_datatables($id_karyawan, $id_cabang, $id_departemen);
$get_pend = json_decode($this->model->tambah_pendapatan($bulan, $id_karyawan, $id_cabang, $id_departemen), true);
$get_pot = json_decode($this->model->tambah_potongan($bulan, $id_karyawan, $id_cabang, $id_departemen), true);
$data = array();
$bulan = date('Y-m', strtotime('01-' . $bulan));
$no = $_GET['start'];
$cek_data = false;
// jika ada data pendapatan / potongan
if (count($get_pend) > 0 || count($get_pot) > 0) {
foreach ($list as $field) {
$no++;
$row = array();
$row[] = $no;
$row[] = $field->nama_lengkap."<br><b>".$field->nik."</b>";
$row[] = $field->nama_lengkap . "<br><b>" . $field->nik . "</b>";
$total_pendapatan = 0;
if (count($get_pend[$field->id_karyawan]) > 0) {
$cek_data = true;
// show cabang, departemen, jabatan
$row[] = $get_pend[$field->id_karyawan][0]['cabang'];
$row[] = $get_pend[$field->id_karyawan][0]['departemen'];
......@@ -54,17 +62,18 @@ class Data_komponen extends MY_Controller{
$pendapatan = $komponen['nominal_tunjangan'];
$nominalWithButton = '
<div class="nominal-with-button">
<span>'.number_format($komponen['nominal_tunjangan'],0,',','.').'</span>
<button class="btn-link border-0 text-warning" data-toggle="modal" data-target="#modal-nominal" data-item="'.md5($komponen['id_karyawan'].$komponen['id_item'].$bulan.$this->id_company).'" data-komponen="pendapatan" data-nominal="'.number_format($komponen['nominal_tunjangan'],0,',','.').'" data-nm_komponen="'.$komponen['nm_tunjangan'].'"><i class="fa fa-edit (alias) "></i></button>
<span>' . number_format($komponen['nominal_tunjangan'], 0, ',', '.') . '</span>
<button class="btn-link border-0 text-warning" data-toggle="modal" data-target="#modal-nominal" data-item="' . md5($komponen['id_karyawan'] . $komponen['id_item'] . $bulan . $this->id_company) . '" data-komponen="pendapatan" data-nominal="' . number_format($komponen['nominal_tunjangan'], 0, ',', '.') . '" data-nm_komponen="' . $komponen['nm_tunjangan'] . '"><i class="fa fa-edit (alias) "></i></button>
</div>';
$row[] = $nominalWithButton;
$total_pendapatan += $pendapatan;
}
$row[] = number_format($total_pendapatan,0,',','.');
$row[] = number_format($total_pendapatan, 0, ',', '.');
}
$total_potongan = 0;
if (count($get_pot[$field->id_karyawan]) > 0) {
$cek_data = true;
// show cabang, departemen, jabatan jika tidak ada data pendapatan
if (empty($get_pend[$field->id_karyawan])) {
$row[] = $get_pot[$field->id_karyawan][0]['cabang'];
......@@ -75,33 +84,35 @@ class Data_komponen extends MY_Controller{
$potongan = $komponen['nominal_potongan'];
$nominalWithButton = '
<div class="nominal-with-button">
<span>'.number_format($komponen['nominal_potongan'],0,',','.').'</span>
<button class="btn-link border-0 text-warning" data-toggle="modal" data-target="#modal-nominal" data-item="'.md5($komponen['id_karyawan'].$komponen['id_item'].$bulan.$this->id_company).'" data-komponen="potongan" data-nominal="'.number_format($komponen['nominal_potongan'],0,',','.').'" data-nm_komponen="'.$komponen['nm_potongan'].'"><i class="fa fa-edit (alias) "></i></button>
<span>' . number_format($komponen['nominal_potongan'], 0, ',', '.') . '</span>
<button class="btn-link border-0 text-warning" data-toggle="modal" data-target="#modal-nominal" data-item="' . md5($komponen['id_karyawan'] . $komponen['id_item'] . $bulan . $this->id_company) . '" data-komponen="potongan" data-nominal="' . number_format($komponen['nominal_potongan'], 0, ',', '.') . '" data-nm_komponen="' . $komponen['nm_potongan'] . '"><i class="fa fa-edit (alias) "></i></button>
</div>';
$row[] = $nominalWithButton;
$total_potongan += $potongan;
}
$row[] = number_format($total_potongan,0,',','.');
$row[] = number_format($total_potongan, 0, ',', '.');
}
$data[] = $row;
}
}
$output = array("draw" => $_GET['draw'],
"recordsTotal" => $this->model->count_all($id_karyawan, $id_cabang, $id_departemen),
"recordsFiltered" => $this->model->count_filtered($id_karyawan, $id_cabang, $id_departemen),
"data" => $data);
$output = array(
"draw" => $_GET['draw'],
"recordsTotal" => ($cek_data == true) ? $this->model->count_all($id_karyawan, $id_cabang, $id_departemen) : 0,
"recordsFiltered" => ($cek_data == true) ? $this->model->count_filtered($id_karyawan, $id_cabang, $id_departemen) : 0,
"data" => $data
);
$output = __response($this->MY_response, $output);
$output = __response($this->MY_response, $output);
echo json_encode($output);
}
echo json_encode($output);
}
public function form()
public function form()
{
$this->load->view('payroll/data_komponen_tdk_tetap/form');
}
}
public function update()
{
......@@ -111,16 +122,16 @@ class Data_komponen extends MY_Controller{
if ($master_komponen == 'pendapatan') {
$komponen = 'nominal_tunjangan';
}else if ($master_komponen == 'potongan') {
} else if ($master_komponen == 'potongan') {
$komponen = 'nominal_potongan';
}else{
} else {
return __response_update(false);
}
$data = array(
'user_update' => $this->nik_karyawan.' - '.$this->nm_karyawan,
'user_update' => $this->nik_karyawan . ' - ' . $this->nm_karyawan,
'tgl_update' => date('Y-m-d H:i:s'),
$komponen => str_replace('.','',$nominal)
$komponen => str_replace('.', '', $nominal)
);
$this->model->update($data, $master_komponen, $id_item);
......@@ -130,10 +141,10 @@ class Data_komponen extends MY_Controller{
{
$search = $this->input->get("q");
if($this->level_user == "5"){ # KEPALA CABANG
if($this->multi_cabang == true){
if ($this->level_user == "5") { # KEPALA CABANG
if ($this->multi_cabang == true) {
$this->db->where_in('id_cabang', $this->id_cabang_arr);
}else{
} else {
$this->db->where('id_cabang', $this->id_cabang);
}
}
......@@ -150,29 +161,34 @@ class Data_komponen extends MY_Controller{
$json = [];
foreach ($result as $rows) {
$json[] = ['id' =>$rows->kode,
'kodecabang'=>$rows->kode,
'namacabang'=>$rows->nama,
'text' =>$rows->kode." - ".$rows->nama];
$json[] = [
'id' => $rows->kode,
'kodecabang' => $rows->kode,
'namacabang' => $rows->nama,
'text' => $rows->kode . " - " . $rows->nama
];
}
echo json_encode($json);
}
public function departemen_by_cabang($id_cabang = null)
{
$search = $this->input->get("q");
// decode URI
$id_cabang = urldecode($id_cabang);
if($this->level_user == "2"){ # KEPALA DEPARTEMEN
if($this->multi_departemen == true){
$search = $this->input->get("q");
if ($this->level_user == "2") { # KEPALA DEPARTEMEN
if ($this->multi_departemen == true) {
$this->db->where_in('data_karyawan.id_departemen', $this->id_departemen_arr);
}else{
} else {
$this->db->where('data_karyawan.id_departemen', $this->id_departemen);
}
}
$this->db->select('master_departemen.id_departemen, master_departemen.kode, master_departemen.nama');
$this->db->join('data_karyawan','data_karyawan.id_departemen = master_departemen.id_departemen');
$this->db->join('master_cabang','data_karyawan.id_cabang = master_cabang.id_cabang');
$this->db->join('data_karyawan', 'data_karyawan.id_departemen = master_departemen.id_departemen');
$this->db->join('master_cabang', 'data_karyawan.id_cabang = master_cabang.id_cabang');
$this->db->where('master_departemen.id_company', $this->id_company);
$this->db->where('master_cabang.kode', $id_cabang);
......@@ -187,12 +203,13 @@ class Data_komponen extends MY_Controller{
$result = $this->db->get()->result();
$json = [];
foreach ($result as $rows) {
$json[] = ['id' =>$rows->kode,
'kodedepartemen'=>$rows->kode,
'namadepartemen'=>$rows->nama,
'text' =>$rows->kode." - ".$rows->nama];
$json[] = [
'id' => $rows->kode,
'kodedepartemen' => $rows->kode,
'namadepartemen' => $rows->nama,
'text' => $rows->kode . " - " . $rows->nama
];
}
echo json_encode($json);
}
}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
defined('BASEPATH') or exit('No direct script access allowed');
class Data_komponen_import extends MY_Controller {
class Data_komponen_import extends MY_Controller
{
public function __construct(){
public function __construct()
{
parent::__construct();
$this->load->model('payroll/data_komponen_tdk_tetap/Data_komponen_import_m', 'model');
$this->load->model('payroll/data_komponen_tdk_tetap/Data_komponen_import_m', 'model');
$this->load->library(array('PHPExcel/Excel', 'PHPExcel/PHPExcel', 'Uploadfile'));
}
public function index(){
$data['judul'] = 'Import Data Komponen Tidak Tetap';
$data['aktif'] = 'data_komponen_tdk_tetap';
public function index()
{
$data['judul'] = 'Import Data Komponen Tidak Tetap';
$data['aktif'] = 'data_komponen_tdk_tetap';
$data['menu'] = $this->load->view('main_menu', $data, true);
$data['content'] = $this->load->view('payroll/data_komponen_tdk_tetap/import/home', $data, true);
$this->load->view('main_template', $data, false);
}
$data['content'] = $this->load->view('payroll/data_komponen_tdk_tetap/import/home', $data, true);
$this->load->view('main_template', $data, false);
}
public function form_template_import(){
$this->load->view('payroll/data_komponen_tdk_tetap/import/form_template_import');
}
public function form_template_import()
{
$this->load->view('payroll/data_komponen_tdk_tetap/import/form_template_import');
}
public function view_data(){
public function view_data()
{
$data['master'] = json_decode($this->model->master_komponen(), true);
$this->load->view('payroll/data_komponen_tdk_tetap/import/list_data', $data);
}
public function list_data(){
$get_pend = json_decode($this->model->tambah_pendapatan(), true);
$get_pot = json_decode($this->model->tambah_potongan(), true);
$temp = ((count($get_pend) > 0) ? 'pend' : 'pot');
$list = $this->model->get_datatables($temp);
$this->load->view('payroll/data_komponen_tdk_tetap/import/list_data', $data);
}
public function list_data()
{
$get_pend = json_decode($this->model->tambah_pendapatan(), true);
$get_pot = json_decode($this->model->tambah_potongan(), true);
$temp = ((count($get_pend) > 0) ? 'pend' : 'pot');
$list = $this->model->get_datatables($temp);
// print_r($get_pot);
$data = array();
$no = $_GET['start'];
foreach ($list as $field) {
$no++;
$data = array();
$no = $_GET['start'];
foreach ($list as $field) {
$no++;
$row = array();
$row[] = $no;
$row[] = ($field->id_karyawan) ? $field->id_karyawan : '-';
$row[] = $field->nm_karyawan."<br><b>".$field->nik."</b>";
$row[] = indo_date(strtotime($field->bulan.'-01'), 'F Y');
$row[] = $field->nm_karyawan . "<br><b>" . $field->nik . "</b>";
$row[] = indo_date(strtotime($field->bulan . '-01'), 'F Y');
$row[] = $field->cabang;
$row[] = $field->departemen;
$row[] = $field->jabatan;
if (count($get_pend[$field->id_karyawan]) > 0) {
foreach ($get_pend[$field->id_karyawan] as $komponen) {
$row[] = number_format($komponen['nominal_tunjangan'],0,',','.');
$row[] = number_format($komponen['nominal_tunjangan'], 0, ',', '.');
}
}
if (count($get_pot[$field->id_karyawan]) > 0) {
foreach ($get_pot[$field->id_karyawan] as $komponen) {
$row[] = number_format($komponen['nominal_potongan'],0,',','.');
$row[] = number_format($komponen['nominal_potongan'], 0, ',', '.');
}
}
$data[] = $row;
}
$data[] = $row;
}
$output = array("draw" => $_GET['draw'],
"recordsTotal" => $this->model->count_all($temp),
"recordsFiltered" => $this->model->count_filtered($temp),
"data" => $data);
$output = array(
"draw" => $_GET['draw'],
"recordsTotal" => $this->model->count_all($temp),
"recordsFiltered" => $this->model->count_filtered($temp),
"data" => $data
);
$output = __response($this->MY_response, $output);
$output = __response($this->MY_response, $output);
echo json_encode($output);
}
echo json_encode($output);
}
function download_template($bulan, $id_cabang="-", $id_departemen="-")
function download_template($bulan, $id_cabang = "-", $id_departemen = "-")
{
if($id_cabang != "-") {
if ($id_cabang != "-") {
$nama_cabang = $this->db->select("nama")
->from("master_cabang")
->where("id_cabang", $id_cabang)
->where("id_company",$this->id_company)
->where("id_company", $this->id_company)
->get()
->row("nama");
$filename = "Template Import Data Komponen Tidak Tetap Cabang " . $nama_cabang;
}else{
$filename = "Template Import Data Komponen Tidak Tetap Semua Cabang ";
$filename = "Template Import Data Komponen Tidak Tetap Cabang " . $nama_cabang;
} else {
$filename = "Template Import Data Komponen Tidak Tetap Semua Cabang ";
}
if($id_departemen != "-") {
$nama_departemen = $this->db->select("nama")
if ($id_departemen != "-") {
$nama_departemen = $this->db->select("nama")
->from("master_departemen")
->where("id_departemen", $id_departemen)
->where("id_company",$this->id_company)
->where("id_company", $this->id_company)
->get()
->row("nama");
$filename .= " Departemen " . $nama_departemen;
}else{
$filename .= " Semua Departemen";
}
$data['nama'] = $filename;
$data['bulan'] = $bulan;
$data['data'] = $this->model->getDataKaryawan($id_cabang, $id_departemen);
$data['master'] = json_decode($this->model->master_komponen(), true);
$data['is_excel'] = true;
$output = true;
$sb_view = $this->load->view('payroll/data_komponen_tdk_tetap/import/download', $data, $output);
$filename .= " Departemen " . $nama_departemen;
} else {
$filename .= " Semua Departemen";
}
$data['nama'] = $filename;
$data['bulan'] = $bulan;
$data['data'] = $this->model->getDataKaryawan($id_cabang, $id_departemen);
$data['master'] = json_decode($this->model->master_komponen(), true);
$data['is_excel'] = true;
$output = true;
$sb_view = $this->load->view('payroll/data_komponen_tdk_tetap/import/download', $data, $output);
// echo $sb_view;exit;
$komponen = $data['master'];
......@@ -115,19 +123,19 @@ class Data_komponen_import extends MY_Controller {
if (count($komponen['potongan']) > 0) {
if (count($komponen['pendapatan']) > 0) {
$merge_komponen = array_merge($merge_komponen, $komponen['potongan']);
}else{
} else {
$merge_komponen = array_merge($komponen['potongan']);
}
}
}else{
} else {
// pendapatan + potongan = 0
return ;
return;
}
// column dinamis dari header table
$column_param = array(
'A' => ['align' => 'center', 'valign' => 'middle'],
'B' => ['width' => 10, 'align' => 'center', 'valign' => 'middle', 'format'=>'text'],
'B' => ['width' => 10, 'align' => 'center', 'valign' => 'middle', 'format' => 'text'],
'C' => ['width' => 40, 'lock' => true],
'D' => ['width' => 10, 'lock' => true],
'E' => ['width' => 20, 'lock' => true],
......@@ -136,95 +144,94 @@ class Data_komponen_import extends MY_Controller {
'H' => ['width' => 20, 'align' => 'right', 'valign' => 'middle', 'rupiah' => true, 'lock' => true],
);
$col = 'I';
for ($i=0; $i < ($total_column-7); $i++) {
for ($i = 0; $i < ($total_column - 7); $i++) {
// jika dari persentase gapok maka di lock
if ($merge_komponen[$i]['flag_persentase_gapok'] == '1') {
$column_param[$col] = ['align' => 'right', 'valign' => 'middle', 'format'=>'text', 'rupiah' => true, 'lock' => true];
}else{
$column_param[$col] = ['align' => 'right', 'valign' => 'middle', 'format'=>'text', 'rupiah' => true];
$column_param[$col] = ['align' => 'right', 'valign' => 'middle', 'format' => 'text', 'rupiah' => true, 'lock' => true];
} else {
$column_param[$col] = ['align' => 'right', 'valign' => 'middle', 'format' => 'text', 'rupiah' => true];
}
$col++;
}
$param = [
'download' => true,
'cLength' => $total_column,
'file_name' => strtoupper($filename),
'paper_size' => 'A4',
'font-size' => 12,
// 'pagebreak' => true,
'page_margin' => ['top' => 0, 'right' => 0.75, 'left' => 0.75, 'botom' => 0],
'orientation' => 'potrait',
'header' => [
'1' => ['merge' => true, 'align' => 'center', 'weight' => 'bold'],
'2' => ['merge' => true, 'align' => 'center', 'weight' => 'bold'],
'3' => ['merge' => true, 'align' => 'center', 'weight' => 'bold'],
],
// 'freezecolumn' => ['D7'],
'thead' => ['4', '5'],
'tbody' => [
'start' => '4',
'height' => 13,
// 'runFunction' => ['highlightlibur' => 'P'],
'wrap' => ['B', 'C', 'D', 'E', 'F'],
'column' => $column_param,
],
];
$this->excel->generateExcel($sb_view, $param);
}
public function import_data_excel()
$param = [
'download' => true,
'cLength' => $total_column,
'file_name' => strtoupper($filename),
'paper_size' => 'A4',
'font-size' => 12,
// 'pagebreak' => true,
'page_margin' => ['top' => 0, 'right' => 0.75, 'left' => 0.75, 'botom' => 0],
'orientation' => 'potrait',
'header' => [
'1' => ['merge' => true, 'align' => 'center', 'weight' => 'bold'],
'2' => ['merge' => true, 'align' => 'center', 'weight' => 'bold'],
'3' => ['merge' => true, 'align' => 'center', 'weight' => 'bold'],
],
// 'freezecolumn' => ['D7'],
'thead' => ['4', '5'],
'tbody' => [
'start' => '4',
'height' => 13,
// 'runFunction' => ['highlightlibur' => 'P'],
'wrap' => ['B', 'C', 'D', 'E', 'F'],
'column' => $column_param,
],
];
$this->excel->generateExcel($sb_view, $param);
}
public function import_data_excel()
{
if(!empty($_FILES['file']['name'])) {
if (!empty($_FILES['file']['name'])) {
$tahunbulan = date('Ym');
$fileUpload['fname'] = 'file';
$fileUpload['location'] = 'template_data_komponen/'.$tahunbulan;
$fileUpload['location'] = 'template_data_komponen/' . $tahunbulan;
$fileUpload['allowed'] = 'xls|xlsx';
$fileUpload['compress_image'] = false;
$upload = $this->uploadfile->doUpload($fileUpload);
if($upload["success"] == true){
$dir_file = $this->config->item('base_upload').$upload['url'];
}else{
$message = ["message"=>$upload["message"]];
return __response_save(false,$message);
}
}else{
$message = ["message"=>'<font color="#eb3a28"><i class="fa fa-exclamation-triangle">&nbsp;</i>Data gagal import</font>'];
return __response_save(false,["message"=>$message]);
if ($upload["success"] == true) {
$dir_file = $this->config->item('base_upload') . $upload['url'];
} else {
$message = ["message" => $upload["message"]];
return __response_save(false, $message);
}
} else {
$message = ["message" => '<font color="#eb3a28"><i class="fa fa-exclamation-triangle">&nbsp;</i>Data gagal import</font>'];
return __response_save(false, ["message" => $message]);
}
try{
try {
$inputFileType = PHPExcel_IOFactory::identify($dir_file);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($dir_file);
}catch(Exception $e){
$message = ["message"=>'Error loading file "' . pathinfo($dir_file, PATHINFO_BASENAME) . '": ' . $e->getMessage()];
return __response_save(false,["message"=>$message]);
} catch (Exception $e) {
$message = ["message" => 'Error loading file "' . pathinfo($dir_file, PATHINFO_BASENAME) . '": ' . $e->getMessage()];
return __response_save(false, ["message" => $message]);
}
$highestColumm = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
$highestRow = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$data_insert = array();
$highestColumm = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
$highestRow = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$data_insert = array();
$highestColumm++;
for ($row = 6; $row < ($highestRow-4); $row++) {
$highestColumm++;
for ($row = 6; $row < ($highestRow - 4); $row++) {
$dataset = array();
for ($column = 'B'; $column != $highestColumm; $column++) {
$head = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . '5')->getValue();
$head = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . '5')->getValue();
if (empty($head)) {
$head = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . '4')->getValue();
}
if (str_contains($head, '(')) {
$head = (substr($head, -8, 1) != '(') ? substr($head, 0, -8) : substr($head, 0, -9);
}
$cell = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . $row)->getValue();
$cell = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . $row)->getValue();
$dataset[$head] = $cell;
}
}
$data_insert[] = $dataset;
}
}
$results = array_filter($data_insert);
$master_komponen = $this->model->master_komponen();
$komponen = json_decode($master_komponen, true);
......@@ -234,21 +241,21 @@ class Data_komponen_import extends MY_Controller {
$data_pendapatan = array();
$data_potongan = array();
for ($i_data=0; $i_data < count($results); $i_data++) {
for ($i_data = 0; $i_data < count($results); $i_data++) {
if ($jml_pend > 0) {
for ($i_pend=$jml_header; $i_pend < ($jml_header+$jml_pend); $i_pend++) {
for ($i_pend = $jml_header; $i_pend < ($jml_header + $jml_pend); $i_pend++) {
$nm_pendapatan = array_keys($results[$i_data])[$i_pend];
$data_pendapatan[] = [
'nik' => $results[$i_data][array_keys($results[$i_data])[0]],
'nm_karyawan' => $results[$i_data][array_keys($results[$i_data])[1]],
'bulan' => date('Y-m', strtotime('01-'.$results[$i_data][array_keys($results[$i_data])[2]])),
'bulan' => date('Y-m', strtotime('01-' . $results[$i_data][array_keys($results[$i_data])[2]])),
'cabang' => $results[$i_data][array_keys($results[$i_data])[3]],
'departemen' => $results[$i_data][array_keys($results[$i_data])[4]],
'jabatan' => $results[$i_data][array_keys($results[$i_data])[5]],
'gapok' => $results[$i_data][array_keys($results[$i_data])[6]],
'nominal_tunjangan' => $results[$i_data][$nm_pendapatan],
'nm_tunjangan' => $nm_pendapatan,
'user_input' => $this->nik_karyawan. ' - ' .$this->nm_karyawan,
'user_input' => $this->nik_karyawan . ' - ' . $this->nm_karyawan,
'id_company' => $this->id_company
];
}
......@@ -256,23 +263,23 @@ class Data_komponen_import extends MY_Controller {
if ($jml_pot > 0) {
if ($jml_pend > 0) {
$header = $jml_header+$jml_pend;
}else{
$header = $jml_header + $jml_pend;
} else {
$header = $jml_header;
}
for ($i_pot=$header; $i_pot < ($header+$jml_pot); $i_pot++) {
for ($i_pot = $header; $i_pot < ($header + $jml_pot); $i_pot++) {
$nm_potongan = array_keys($results[$i_data])[$i_pot];
$data_potongan[] = [
'nik' => $results[$i_data][array_keys($results[$i_data])[0]],
'nm_karyawan' => $results[$i_data][array_keys($results[$i_data])[1]],
'bulan' => date('Y-m', strtotime('01-'.$results[$i_data][array_keys($results[$i_data])[2]])),
'bulan' => date('Y-m', strtotime('01-' . $results[$i_data][array_keys($results[$i_data])[2]])),
'cabang' => $results[$i_data][array_keys($results[$i_data])[3]],
'departemen' => $results[$i_data][array_keys($results[$i_data])[4]],
'jabatan' => $results[$i_data][array_keys($results[$i_data])[5]],
'gapok' => $results[$i_data][array_keys($results[$i_data])[6]],
'nominal_potongan' => $results[$i_data][$nm_potongan],
'nm_potongan' => $nm_potongan,
'user_input' => $this->nik_karyawan. ' - ' .$this->nm_karyawan,
'user_input' => $this->nik_karyawan . ' - ' . $this->nm_karyawan,
'id_company' => $this->id_company
];
}
......@@ -280,7 +287,7 @@ class Data_komponen_import extends MY_Controller {
}
$this->db->trans_strict();
$this->db->trans_start();
$this->db->trans_start();
if (count($data_pendapatan) > 0) {
// hapus data payroll_tunj_tdk_tetap_temp
......@@ -304,30 +311,32 @@ class Data_komponen_import extends MY_Controller {
}
}
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
$message = ["message"=>'<font color="#eb3a28"><i class="fa fa-exclamation-triangle">&nbsp;</i>Data gagal diimport</font>'];
return __response_save(false,$message);
}else{
$this->db->trans_commit();
$message = ["message"=>'<font color="#009900"><i class="fa fa-check-square">&nbsp;</i>Data berhasil diimport</font>'];
return __response_save(true,$message);
}
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
$message = ["message" => '<font color="#eb3a28"><i class="fa fa-exclamation-triangle">&nbsp;</i>Data gagal diimport</font>'];
return __response_save(false, $message);
} else {
$this->db->trans_commit();
$message = ["message" => '<font color="#009900"><i class="fa fa-check-square">&nbsp;</i>Data berhasil diimport</font>'];
return __response_save(true, $message);
}
}
public function publish_all()
public function publish_all()
{
$get_pend = json_decode($this->model->tambah_pendapatan(), true);
$get_pot = json_decode($this->model->tambah_potongan(), true);
$temp = ((count($get_pend) > 0) ? 'pend' : 'pot');
$list = $this->model->get_datatables($temp);
$get_pend = json_decode($this->model->tambah_pendapatan(), true);
$get_pot = json_decode($this->model->tambah_potongan(), true);
$temp = ((count($get_pend) > 0) ? 'pend' : 'pot');
$list = $this->model->get_datatables($temp);
$data_pendapatan = array();
$data_potongan = array();
$data_pendapatan_delete = array(); // utk table payroll_tunj_tdk_tetap_temp
$data_potongan_delete = array(); // utk table payroll_pot_tdk_tetap_temp
$data_pendapatan_delete = array(); // utk table payroll_tunj_tdk_tetap_temp
$data_potongan_delete = array(); // utk table payroll_pot_tdk_tetap_temp
$bulan = '';
$cabang = '';
$departemen = '';
foreach ($list as $field) {
if (count($get_pend[$field->id_karyawan]) > 0) {
foreach ($get_pend[$field->id_karyawan] as $key) {
......@@ -350,9 +359,11 @@ class Data_komponen_import extends MY_Controller {
'flag_pph21' => '0',
'flag_pot_absensi' => '0',
'id_company' => $this->id_company,
'user_input' => $this->nik_karyawan. ' - ' .$this->nm_karyawan
'user_input' => $this->nik_karyawan . ' - ' . $this->nm_karyawan
];
$data_pendapatan_delete[] = $key['nik'].$key['bulan'].$key['nm_tunjangan'].$this->id_company;
$data_pendapatan_delete[] = $key['nik'] . $key['bulan'] . $key['nm_tunjangan'] . $this->id_company . $key['cabang'] . $key['departemen'];
$cabang = $key['cabang'];
$departemen = $key['departemen'];
}
$bulan = $key['bulan'];
}
......@@ -378,70 +389,84 @@ class Data_komponen_import extends MY_Controller {
'flag_pph21' => '0',
'flag_pot_absensi' => '0',
'id_company' => $this->id_company,
'user_input' => $this->nik_karyawan. ' - ' .$this->nm_karyawan
'user_input' => $this->nik_karyawan . ' - ' . $this->nm_karyawan
];
$data_potongan_delete[] = $key['nik'].$key['bulan'].$key['nm_potongan'].$this->id_company;
$data_potongan_delete[] = $key['nik'] . $key['bulan'] . $key['nm_potongan'] . $this->id_company . $key['cabang'] . $key['departemen'];
$cabang = $key['cabang'];
$departemen = $key['departemen'];
}
$bulan = $key['bulan'];
}
}
}
$this->db->trans_start();
$this->db->trans_start();
if(count($data_pendapatan_delete) > 0){
$this->db->where_in('concat(nik,bulan,nm_tunjangan,id_company)', $data_pendapatan_delete);
$this->db->delete('payroll_tunj_tdk_tetap_temp');
}
if (count($data_pendapatan_delete) > 0) {
$this->db->where_in('concat(nik,bulan,nm_tunjangan,id_company,cabang,departemen)', $data_pendapatan_delete);
$this->db->delete('payroll_tunj_tdk_tetap_temp');
}
if (count($data_pendapatan) > 0) {
// hapus semua pot tdk tetap pada periode yang di import
$this->db->where('periode', $bulan);
if (!empty($cabang)) {
$this->db->where('cabang', $cabang);
}
if (!empty($departemen)) {
$this->db->where('departemen', $departemen);
}
$this->db->delete('payroll_tunj_tdk_tetap_m');
// insert
$this->db->insert_batch('payroll_tunj_tdk_tetap_m', $data_pendapatan);
}
if(count($data_potongan_delete) > 0){
$this->db->where_in('concat(nik,bulan,nm_potongan,id_company)', $data_potongan_delete);
$this->db->delete('payroll_pot_tdk_tetap_temp');
}
if (count($data_potongan_delete) > 0) {
$this->db->where_in('concat(nik,bulan,nm_potongan,id_company,cabang,departemen)', $data_potongan_delete);
$this->db->delete('payroll_pot_tdk_tetap_temp');
}
if (count($data_potongan) > 0) {
// hapus semua pot tdk tetap pada periode yang di import
$this->db->where('periode', $bulan);
if (!empty($cabang)) {
$this->db->where('cabang', $cabang);
}
if (!empty($departemen)) {
$this->db->where('departemen', $departemen);
}
$this->db->delete('payroll_pot_tdk_tetap_m');
// insert
$this->db->insert_batch('payroll_pot_tdk_tetap_m', $data_potongan);
}
$this->db->trans_complete();
$this->db->trans_complete();
if($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_save(false);
}else{
$this->db->trans_commit();
return __response_save(true);
}
}
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_save(false);
} else {
$this->db->trans_commit();
return __response_save(true);
}
}
public function delete_all_temp()
public function delete_all_temp()
{
$this->db->trans_start();
$this->db->where("id_company", $this->id_company);
$this->db->delete("payroll_tunj_tdk_tetap_temp");
$this->db->where("id_company", $this->id_company);
$this->db->delete("payroll_tunj_tdk_tetap_temp");
$this->db->where("id_company", $this->id_company);
$this->db->delete("payroll_pot_tdk_tetap_temp");
$this->db->where("id_company", $this->id_company);
$this->db->delete("payroll_pot_tdk_tetap_temp");
$this->db->trans_complete();
$this->db->trans_complete();
if($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_delete(false);
}else{
$this->db->trans_commit();
return __response_delete(true);
}
}
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_delete(false);
} else {
$this->db->trans_commit();
return __response_delete(true);
}
}
}
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Data_komponen_m extends CI_Model {
class Data_komponen_m extends CI_Model
{
protected $master = "payroll_komponen_m";
protected $pendapatan = "payroll_tunj_tdk_tetap_m";
protected $potongan = "payroll_pot_tdk_tetap_m";
function get_datatables($id_karyawan, $id_cabang, $id_departemen){
function get_datatables($id_karyawan, $id_cabang, $id_departemen)
{
$this->_get_datatables_query($id_karyawan, $id_cabang, $id_departemen);
if($_GET['length'] != -1){
if ($_GET['length'] != -1) {
$this->db->limit($_GET['length'], $_GET['start']);
}
$query = $this->db->get();
return $query->result();
}
function count_filtered($id_karyawan, $id_cabang, $id_departemen){
function count_filtered($id_karyawan, $id_cabang, $id_departemen)
{
$this->_get_datatables_query($id_karyawan, $id_cabang, $id_departemen);
$query = $this->db->get();
return $query->num_rows();
}
public function count_all($id_karyawan, $id_cabang, $id_departemen){
public function count_all($id_karyawan, $id_cabang, $id_departemen)
{
$this->_get_datatables_query($id_karyawan, $id_cabang, $id_departemen);
return $this->db->count_all_results();
}
private function _get_datatables_query($id_karyawan, $id_cabang, $id_departemen){
if($id_karyawan != 'all'){
private function _get_datatables_query($id_karyawan, $id_cabang, $id_departemen)
{
if ($id_karyawan != 'all') {
$this->db->where('md5(dk.id_karyawan)', $id_karyawan);
}else{
if($id_cabang != 'all'){
} else {
if ($id_cabang != 'all') {
$this->db->where('master_cabang.kode', $id_cabang);
}
if($id_departemen != 'all'){
if ($id_departemen != 'all') {
$this->db->where('master_departemen.kode', $id_departemen);
}
}
......@@ -42,28 +48,28 @@ class Data_komponen_m extends CI_Model {
dk.nama_lengkap,
dk.nik,
')
->from('data_karyawan AS dk')
->join('master_cabang','master_cabang.id_cabang = dk.id_cabang')
->join('master_departemen','master_departemen.id_departemen = dk.id_departemen','LEFT')
->join('master_jabatan','master_jabatan.id_jabatan = dk.id_jabatan')
->where('dk.id_company', $this->id_company)
->where_in('dk.status', ['1','2','3','4'])
->where_not_in("master_jabatan.level_user",["1","6"]);
->from('data_karyawan AS dk')
->join('master_cabang', 'master_cabang.id_cabang = dk.id_cabang')
->join('master_departemen', 'master_departemen.id_departemen = dk.id_departemen', 'LEFT')
->join('master_jabatan', 'master_jabatan.id_jabatan = dk.id_jabatan')
->where('dk.id_company', $this->id_company)
->where_in('dk.status', ['1', '2', '3', '4'])
->where_not_in("master_jabatan.level_user", ["1", "6"]);
$column_search = array('');
$i = 0;
foreach ($column_search as $item){ // looping awal
if($_GET['search']['value']){ // jika datatable mengirimkan pencarian dengan metode POST
foreach ($column_search as $item) { // looping awal
if ($_GET['search']['value']) { // jika datatable mengirimkan pencarian dengan metode POST
if($i===0){ // looping awal
if ($i === 0) { // looping awal
$this->db->group_start();
$this->db->like($item, $_GET['search']['value']);
}else{
} else {
$this->db->or_like($item, $_GET['search']['value']);
}
if(count($column_search) - 1 == $i){
if (count($column_search) - 1 == $i) {
$this->db->group_end();
}
}
......@@ -72,29 +78,30 @@ class Data_komponen_m extends CI_Model {
$column_order = array('');
if(isset($_GET['order'])){
if (isset($_GET['order'])) {
$this->db->order_by($column_order[$_GET['order']['0']['column']], $_GET['order']['0']['dir']);
}
else{
$this->db->order_by("dk.nama_lengkap ASC", "dk.nik ASC");
} else {
$this->db->order_by("dk.nama_lengkap ASC, dk.nik ASC");
}
}
public function list_komponen_pendapatan($bulan)
{
$select = $this->db->select('
id_item,
jenis_komponen,
jenis_master,
nm_tunjangan
p.id_item,
p.jenis_komponen,
p.jenis_master,
p.nm_tunjangan
')
->from($this->pendapatan)
->where('jenis_komponen', 'tidak tetap')
->where('periode', date('Y-m', strtotime('01-'.$bulan)))
->where('id_company', $this->id_company)
->group_by('id_item')
->get()
->result();
->from($this->pendapatan . ' as p')
->join($this->master . ' as master', 'master.id_item = p.id_item')
->where('p.jenis_komponen', 'tidak tetap')
->where('p.periode', date('Y-m', strtotime('01-' . $bulan)))
->where('p.id_company', $this->id_company)
->group_by('p.id_item')
->order_by('master.no_urut ASC')
->get()
->result();
$data = [];
foreach ($select as $key) {
......@@ -110,18 +117,20 @@ class Data_komponen_m extends CI_Model {
public function list_komponen_potongan($bulan)
{
$select = $this->db->select('
id_item,
jenis_komponen,
jenis_master,
nm_potongan
p.id_item,
p.jenis_komponen,
p.jenis_master,
p.nm_potongan
')
->from($this->potongan)
->where('jenis_komponen', 'tidak tetap')
->where('periode', date('Y-m', strtotime('01-'.$bulan)))
->where('id_company', $this->id_company)
->group_by('id_item')
->get()
->result();
->from($this->potongan . ' as p')
->join($this->master . ' as master', 'master.id_item = p.id_item')
->where('p.jenis_komponen', 'tidak tetap')
->where('p.periode', date('Y-m', strtotime('01-' . $bulan)))
->where('p.id_company', $this->id_company)
->group_by('p.id_item')
->order_by('master.no_urut ASC')
->get()
->result();
$data = [];
foreach ($select as $key) {
......@@ -136,34 +145,36 @@ class Data_komponen_m extends CI_Model {
public function tambah_pendapatan($bulan, $id_karyawan, $id_cabang, $id_departemen)
{
if($id_karyawan != 'all'){
if ($id_karyawan != 'all') {
$this->db->where('md5(id_karyawan)', $id_karyawan);
}else{
if($id_cabang != 'all'){
} else {
if ($id_cabang != 'all') {
$this->db->like('cabang', $id_cabang, 'after');
}
if($id_departemen != 'all'){
if ($id_departemen != 'all') {
$this->db->like('departemen', $id_departemen, 'after');
}
}
$select = $this->db->select('
id_karyawan,
periode,
id_item,
nm_tunjangan,
nominal_tunjangan,
cabang,
departemen,
jabatan
p.id_karyawan,
p.periode,
p.id_item,
p.nm_tunjangan,
p.nominal_tunjangan,
p.cabang,
p.departemen,
p.jabatan
')
->from($this->pendapatan)
->where('jenis_komponen', 'tidak tetap')
->where('periode', date('Y-m', strtotime('01-'.$bulan)))
->where('id_company', $this->id_company)
->get()
->result();
->from($this->pendapatan . ' as p')
->join($this->master . ' as master', 'master.id_item = p.id_item')
->where('p.id_company', $this->id_company)
->where('p.jenis_komponen', 'tidak tetap')
->where('p.periode', date('Y-m', strtotime('01-' . $bulan)))
->order_by('master.no_urut ASC')
->get()
->result();
$data = [];
foreach ($select as $key) {
......@@ -182,34 +193,36 @@ class Data_komponen_m extends CI_Model {
public function tambah_potongan($bulan, $id_karyawan, $id_cabang, $id_departemen)
{
if($id_karyawan != 'all'){
if ($id_karyawan != 'all') {
$this->db->where('md5(id_karyawan)', $id_karyawan);
}else{
if($id_cabang != 'all'){
} else {
if ($id_cabang != 'all') {
$this->db->like('cabang', $id_cabang, 'after');
}
if($id_departemen != 'all'){
if ($id_departemen != 'all') {
$this->db->like('departemen', $id_departemen, 'after');
}
}
$select = $this->db->select('
id_karyawan,
periode,
id_item,
nm_potongan,
nominal_potongan,
cabang,
departemen,
jabatan
p.id_karyawan,
p.periode,
p.id_item,
p.nm_potongan,
p.nominal_potongan,
p.cabang,
p.departemen,
p.jabatan
')
->from($this->potongan)
->where('jenis_komponen', 'tidak tetap')
->where('periode', date('Y-m', strtotime('01-'.$bulan)))
->where('id_company', $this->id_company)
->get()
->result();
->from($this->potongan . ' as p')
->join($this->master . ' as master', 'master.id_item = p.id_item')
->where('p.id_company', $this->id_company)
->where('p.jenis_komponen', 'tidak tetap')
->where('p.periode', date('Y-m', strtotime('01-' . $bulan)))
->order_by('master.no_urut ASC')
->get()
->result();
$data = [];
foreach ($select as $key) {
......@@ -226,27 +239,28 @@ class Data_komponen_m extends CI_Model {
return json_encode($data);
}
public function update($data, $master_komponen, $id_item){
public function update($data, $master_komponen, $id_item)
{
$this->db->trans_start();
if ($master_komponen == 'pendapatan') {
$komponen = $this->pendapatan;
}else{
} else {
$komponen = $this->potongan;
}
$this->db->where('md5(concat(id_karyawan,id_item,periode,id_company))', $id_item);
$this->db->update($komponen, $data);
$this->db->trans_complete();
$this->db->trans_complete();
if($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_update(false);
}else{
$this->db->trans_commit();
$message = ["message"=>'<font color="#009900"><i class="fa fa-check-square">&nbsp;</i>Data berhasil disimpan</font>'];
return __response_update(true, $message);
}
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_update(false);
} else {
$this->db->trans_commit();
$message = ["message" => '<font color="#009900"><i class="fa fa-check-square">&nbsp;</i>Data berhasil disimpan</font>'];
return __response_update(true, $message);
}
}
}
......@@ -2,7 +2,10 @@
$(function() {
view_data($("#filter #bulan").val());
$("#filter #bulan").inputmask({'alias':'datetime','inputFormat': 'mm-yyyy'});
$("#filter #bulan").inputmask({
'alias': 'datetime',
'inputFormat': 'mm-yyyy'
});
$("#filter #bulan").datepicker({
format: "mm-yyyy",
viewMode: "months",
......@@ -12,7 +15,7 @@
endDate: "today"
});
$('#modal-nominal').on('show.bs.modal', function (event) {
$('#modal-nominal').on('show.bs.modal', function(event) {
$('#message').hide();
let button = $(event.relatedTarget);
......@@ -22,14 +25,14 @@
let nominal = button.data('nominal');
let modal = $(this);
modal.find(".modal-title").text('Ubah nominal '+komponen);
modal.find(".modal-title").text('Ubah nominal ' + komponen);
modal.find('.card-body label').text(nm_komponen);
modal.find('#item').val(item);
modal.find('#komponen').val(komponen);
modal.find('#nominal_pendapatan').val(nominal);
modal.find('#nominal_pendapatan').focus();
$("#nominal_pendapatan").keydown(function (event) {
$("#nominal_pendapatan").keydown(function(event) {
if (event.which == 13) {
event.preventDefault();
$('.btn_save').click();
......@@ -37,28 +40,28 @@
});
})
$(document).on('click', '.btn_save', function (e) {
$(document).on('click', '.btn_save', function(e) {
e.preventDefault();
var loading = Ladda.create(this);
loading.start();
var param = {};
param.item = $("#item").val();
param.item = $("#item").val();
param.komponen = $("#komponen").val();
param.nominal = ($("#nominal_pendapatan").val()!="")?$("#nominal_pendapatan").val():0;
param.nominal = ($("#nominal_pendapatan").val() != "") ? $("#nominal_pendapatan").val() : 0;
$.ajax({
type: 'POST',
url: "<?= route('payroll.data.komponen.tdk.tetap.update') ?>",
data: param,
dataType:'JSON',
success: function(result){
dataType: 'JSON',
success: function(result) {
loading.stop();
$('#message').show();
$('#message').html(result.message);
},
error:function(){
error: function() {
loading.stop();
$('#message').show();
$('#message').html('<font color="#eb3a28"><i class="fa fa-close(alias)">&nbsp;</i><strong>Gagal : Terjadi Kesalahan</strong></font>');
......@@ -69,22 +72,22 @@
function formatangka(objek) {
a = objek.value;
b = a.replace(/[^\d]/g,"");
b = a.replace(/[^\d]/g, "");
c = "";
panjang = b.length;
j = 0;
for (i = panjang; i > 0; i--) {
j = j + 1;
if (((j % 3) == 1) && (j != 1)) {
c = b.substr(i-1,1) + "." + c;
c = b.substr(i - 1, 1) + "." + c;
} else {
c = b.substr(i-1,1) + c;
c = b.substr(i - 1, 1) + c;
}
}
objek.value = c;
}
function view_data(bulan){
function view_data(bulan) {
$("#listdata").load("<?= route('payroll.data.komponen.tdk.tetap.viewdata', ['bulan' => '"+bulan+"', 'id_karyawan' => 'all', 'id_cabang' => 'all', 'id_departemen' => 'all']) ?>");
}
</script>
......@@ -101,8 +104,8 @@
url: '<?= route("dropdown.karyawan.encrypt") ?>',
dataType: 'json',
delay: 250,
processResults: function (data) {
return {
processResults: function(data) {
return {
results: data
};
},
......@@ -111,31 +114,31 @@
minLength: 3
});
$('#filter #btn_cari').click(function(){
$('#filter #btn_cari').click(function() {
let loading = Ladda.create(this);
loading.start();
let bulan = ($("#filter #bulan").val()) ? $("#filter #bulan").val() : "<?= date('m-Y') ?>";
let id_cabang = "all";
let bulan = ($("#filter #bulan").val()) ? $("#filter #bulan").val() : "<?= date('m-Y') ?>";
let id_cabang = "all";
let id_departemen = "all";
let id_karyawan = ($("#filter #id_karyawan").val()) ? $("#filter #id_karyawan").val() : "all";
let id_karyawan = ($("#filter #id_karyawan").val()) ? $("#filter #id_karyawan").val() : "all";
$("#listdata").load("<?= route('payroll.data.komponen.tdk.tetap.viewdata', ['bulan' => '"+bulan+"', 'id_karyawan' => '"+id_karyawan+"', 'id_cabang' => '"+id_cabang+"', 'id_departemen' => '"+id_departemen+"']) ?>");
loading.stop();
});
$('#filter #btn_filter').click(function(){
$('#filter #btn_filter').click(function() {
let loading = Ladda.create(this);
loading.start();
let bulan = ($("#filter #bulan").val()) ? $("#filter #bulan").val() : "<?= date('m-Y') ?>";
let id_cabang = (!$("#filter #cabang").val()) ? "all" : $("#filter #cabang").val();
let id_departemen = (!$("#filter #departemen").val()) ? "all" : $("#filter #departemen").val();
let id_karyawan = "all";
$("#listdata").load("<?= route('payroll.data.komponen.tdk.tetap.viewdata', ['bulan' => '"+bulan+"', 'id_karyawan' => '"+id_karyawan+"', 'id_cabang' => '"+id_cabang+"', 'id_departemen' => '"+id_departemen+"']) ?>");
let bulan = ($("#filter #bulan").val()) ? $("#filter #bulan").val() : "<?= date('m-Y') ?>";
let id_cabang = (!$("#filter #cabang").val()) ? "all" : $("#filter #cabang").val();
let id_departemen = (!$("#filter #departemen").val()) ? "all" : $("#filter #departemen").val();
let id_karyawan = "all";
$("#listdata").load("<?= route('payroll.data.komponen.tdk.tetap.viewdata', ['bulan' => '"+bulan+"', 'id_karyawan' => '"+id_karyawan+"', 'id_cabang' => '"+encodeURIComponent(id_cabang)+"', 'id_departemen' => '"+encodeURIComponent(id_departemen)+"']) ?>");
loading.stop();
});
});
function dropdown_cabang(){
function dropdown_cabang() {
$('#filter #cabang').select2({
placeholder: 'Semua Cabang',
allowClear: true,
......@@ -143,37 +146,35 @@
url: '<?= route("payroll.data.komponen.tdk.tetap.dropdown.cabang") ?>',
dataType: 'json',
delay: 250,
processResults: function (data) {
return {
processResults: function(data) {
return {
results: data
};
},
cache: false
},
minLength: 3
}).change(function() {
$("#filter #departemen").val('').trigger('change');
dropdown_departemen();
});
}
function onchange_dropdown_cabang(){
$("#filter #departemen").val('').trigger('change');
dropdown_departemen();
}
function dropdown_departemen(){
function dropdown_departemen() {
var id_cabang = ($("#filter #cabang").val() == null)?"all":$("#filter #cabang").val();
var id_cabang = ($("#filter #cabang").val() == null) ? "all" : $("#filter #cabang").val();
$("#filter #departemen").select2({
placeholder: "Semua Departemen",
allowClear: true,
ajax: {
url: '<?= route("payroll.data.komponen.tdk.tetap.dropdown.departemen") ?>/'+id_cabang,
url: '<?= route("payroll.data.komponen.tdk.tetap.dropdown.departemen") ?>/' + encodeURIComponent(id_cabang),
dataType: 'json',
delay: 250,
processResults:function(data) {
processResults: function(data) {
return {
results: data
};
results: data
};
},
cache: false
}
......@@ -238,7 +239,7 @@
</div>
</div>
<div class="col-md-3">
<select id="cabang" class="form-control" onchange="onchange_dropdown_cabang()">
<select id="cabang" class="form-control">
<option></option>
</select>
</div>
......
<style>
th, td {
th,
td {
white-space: nowrap;
}
div.dataTables_wrapper {
margin: 0 auto;
}
......@@ -10,10 +12,10 @@
<thead>
<tr class="bg-tr">
<?php
$numrow = 1;
if (count($master['pendapatan']) > 0 || count($master['potongan']) > 0) {
$numrow = 2;
}
$numrow = 1;
if (count($master['pendapatan']) > 0 || count($master['potongan']) > 0) {
$numrow = 2;
}
?>
<th rowspan="<?= $numrow ?>" class="align-middle text-center" width="30">NO</th>
<th rowspan="<?= $numrow ?>" class="align-middle text-center">NIK</th>
......@@ -23,28 +25,28 @@
<th rowspan="<?= $numrow ?>" class="align-middle text-center">DEPARTEMEN</th>
<th rowspan="<?= $numrow ?>" class="align-middle text-center">JABATAN</th>
<?php
if (count($master['pendapatan']) > 0) {
echo '<th colspan="'.count($master['pendapatan']).'" class="align-middle text-center">PENDAPATAN</th>';
}
if (count($master['potongan']) > 0) {
echo '<th colspan="'.count($master['potongan']).'" class="align-middle text-center">POTONGAN</th>';
}
if (count($master['pendapatan']) > 0) {
echo '<th colspan="' . count($master['pendapatan']) . '" class="align-middle text-center">PENDAPATAN</th>';
}
if (count($master['potongan']) > 0) {
echo '<th colspan="' . count($master['potongan']) . '" class="align-middle text-center">POTONGAN</th>';
}
?>
</tr>
<?php
if (count($master['pendapatan']) > 0 || count($master['potongan']) > 0) {
echo '<tr class="bg-tr">';
if (count($master['pendapatan']) > 0) {
foreach ($master['pendapatan'] as $komponen) {
echo '<th class="align-middle text-center">'.strtoupper($komponen['nm_komponen']).'</th>';
}
if (count($master['pendapatan']) > 0 || count($master['potongan']) > 0) {
echo '<tr class="bg-tr">';
if (count($master['pendapatan']) > 0) {
foreach ($master['pendapatan'] as $komponen) {
echo '<th class="align-middle text-center">' . strtoupper($komponen['nm_komponen']) . '</th>';
}
if (count($master['potongan']) > 0) {
foreach ($master['potongan'] as $komponen) {
echo '<th class="align-middle text-center">'.strtoupper($komponen['nm_komponen']).'</th>';
}
}
if (count($master['potongan']) > 0) {
foreach ($master['potongan'] as $komponen) {
echo '<th class="align-middle text-center">' . strtoupper($komponen['nm_komponen']) . '</th>';
}
}
}
?>
</thead>
<tbody>
......@@ -55,59 +57,78 @@
$(function() {
var paramBulan = "<?= $bulan ?>";
$.fn.dataTableExt.sErrMode = 'none';
list_data = $('#list_data').on('error.dt', function ( e, settings, techNote, message ) {
if(confirm('Terjadi kesalahan saat memproses data, muat ulang halaman ?')){
window.location.reload();
}
}).DataTable({
'searching' : true,
'paging' : true,
'lengthChange' : true,
'ordering' : true,
'info' : true,
'scrollX' : true,
list_data = $('#list_data').DataTable({
'searching': true,
'paging': true,
'lengthChange': true,
'ordering': true,
'info': true,
'scrollX': true,
'scrollCollapse': true,
'fixedColumns' : {
'fixedColumns': {
'leftColumns': 3,
},
'language' : {
'url' : '<?=base_url("assets/plugins/datatables/dataTables-language-id.json")?>',
'sEmptyTable' : 'Tidak ada data untuk ditampilkan',
'language': {
'url': '<?= base_url("assets/plugins/datatables/dataTables-language-id.json") ?>',
'sEmptyTable': 'Tidak ada data untuk ditampilkan',
'searchPlaceholder': 'NIK/Karyawan'
},
"processing" : true,
"serverSide" : true,
"order" : [],
"processing": true,
"serverSide": true,
"order": [],
"ajax" : {
"ajax": {
"url": "<?= route('payroll.data.komponen.tdk.tetap.import.listdata', ['bulan' => '"+paramBulan+"']) ?>",
"type": "GET",
"data" : function (d) {
"data": function(d) {
delete d.columns;
},
"complete" : function(data){
"complete": function(data) {
reconfigure(data);
}
},
"aoColumnDefs": [
{ "aTargets": [1], "bSortable": true},
{ "aTargets": "_all", "bSortable": false},
{ "visible": false, "targets": [1]},
{ "className": "text-center", "targets": [0]},
{ "className": "text-left", "targets": [1,2,3,4,5,6]},
{ "className": "text-right", "targets": "_all"},
"aoColumnDefs": [{
"aTargets": [1],
"bSortable": true
},
{
"aTargets": "_all",
"bSortable": false
},
{
"visible": false,
"targets": [1]
},
{
"className": "text-center",
"targets": [0]
},
{
"className": "text-left",
"targets": [1, 2, 3, 4, 5, 6]
},
{
"className": "text-right",
"targets": "_all"
},
],
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull) {
"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
for (let index = 1; index < aData.length; index++) {
const col = aData[index];
if(col == ""){
$('td:eq('+index+')', nRow).css({'background-color':'#FF7588','color':'White'});
if (col == "") {
$('td:eq(' + index + ')', nRow).css({
'background-color': '#FF7588',
'color': 'White'
});
}
}
if(aData[1] == "-"){
$('td:eq(1)', nRow).css({'background-color':'#ffbc34','color':'White'});
if (aData[1] == "-") {
$('td:eq(1)', nRow).css({
'background-color': '#ffbc34',
'color': 'White'
});
}
},
});
......
......@@ -3,48 +3,55 @@
$(document).ready(function() {
var bulan = ($("#filter #bulan").val()) ? $("#filter #bulan").val() : '';
$.fn.dataTableExt.sErrMode = 'none';
list_data = $('#list_data').on('error.dt', function ( e, settings, techNote, message ) {
if(confirm('Terjadi kesalahan saat memproses data, muat ulang halaman ?')){
window.location.reload();
}
}).DataTable({
'searching' : false,
'searchDelay' : 1000,
'paging' : true,
list_data = $('#list_data').DataTable({
'searching': false,
'searchDelay': 1000,
'paging': true,
'lengthChange': true,
'ordering' : true,
'info' : true,
'scrollX' : true,
'ordering': true,
'info': true,
'scrollX': true,
'fixedColumns': {
leftColumns: 2
},
// 'scrollCollapse': true,
// 'fixedColumns': true,
'language' :{
'url' : '<?=base_url("assets/plugins/datatables/dataTables-language-id.json")?>',
'sEmptyTable' : 'Tidak ada data untuk ditampilkan',
'language': {
'url': '<?= base_url("assets/plugins/datatables/dataTables-language-id.json") ?>',
'sEmptyTable': 'Tidak ada data untuk ditampilkan',
'searchPlaceholder': ''
},
"processing" : true,
"serverSide" : true,
"order" : [],
"processing": true,
"serverSide": true,
"order": [],
"ajax" : {
"url" : "<?= route('payroll.data.komponen.tdk.tetap.datatable', ['bulan' => '"+bulan+"', 'id_karyawan' => $id_karyawan, 'id_cabang' => $id_cabang, 'id_departemen' => $id_departemen]) ?>",
"ajax": {
"url": "<?= route('payroll.data.komponen.tdk.tetap.datatable', ['bulan' => '"+bulan+"', 'id_karyawan' => $id_karyawan, 'id_cabang' => $id_cabang, 'id_departemen' => $id_departemen]) ?>",
"type": "GET",
"data": function (d) {
"data": function(d) {
delete d.columns;
},
"complete" : function(data){
"complete": function(data) {
reconfigure(data);
}
},
"aoColumnDefs": [
{ "aTargets": "_all", "bSortable": false },
{ "className": "text-center", "targets": [0] },
{ "className": "text-left", "targets": [1,2,3,4] },
{ "className": "text-right", "targets": "_all" },
"aoColumnDefs": [{
"aTargets": "_all",
"bSortable": false
},
{
"className": "text-center",
"targets": [0]
},
{
"className": "text-left",
"targets": [1, 2, 3, 4]
},
{
"className": "text-right",
"targets": "_all"
},
]
});
});
......@@ -55,10 +62,10 @@
<thead>
<tr class="bg-tr">
<?php
$numrow = 1;
if (count($list_pendapatan) > 0 || count($list_potongan) > 0) {
$numrow = 2;
}
$numrow = 1;
if (count($list_pendapatan) > 0 || count($list_potongan) > 0) {
$numrow = 2;
}
?>
<th rowspan="<?= $numrow ?>" class="align-middle text-center" width="30">NO</th>
<th rowspan="<?= $numrow ?>" class="align-middle text-center">NAMA KARYAWAN</th>
......@@ -66,31 +73,31 @@
<th rowspan="<?= $numrow ?>" class="align-middle text-center">DEPARTEMEN</th>
<th rowspan="<?= $numrow ?>" class="align-middle text-center">JABATAN</th>
<?php
if (count($list_pendapatan) > 0) {
echo '<th colspan="'.(count($list_pendapatan)+1).'" class="align-middle text-center">PENDAPATAN</th>';
}
if (count($list_potongan) > 0) {
echo '<th colspan="'.(count($list_potongan)+1).'" class="align-middle text-center">POTONGAN</th>';
}
if (count($list_pendapatan) > 0) {
echo '<th colspan="' . (count($list_pendapatan) + 1) . '" class="align-middle text-center">PENDAPATAN</th>';
}
if (count($list_potongan) > 0) {
echo '<th colspan="' . (count($list_potongan) + 1) . '" class="align-middle text-center">POTONGAN</th>';
}
?>
</tr>
<?php
if (count($list_pendapatan) > 0 || count($list_potongan) > 0) {
echo '<tr>';
if (count($list_pendapatan) > 0) {
foreach ($list_pendapatan as $komponen) {
echo '<th class="align-middle text-center">'.strtoupper($komponen['nm_tunjangan']).'</th>';
}
echo '<th class="align-middle text-center">TOTAL PENDAPATAN</th>';
if (count($list_pendapatan) > 0 || count($list_potongan) > 0) {
echo '<tr>';
if (count($list_pendapatan) > 0) {
foreach ($list_pendapatan as $komponen) {
echo '<th class="align-middle text-center">' . strtoupper($komponen['nm_tunjangan']) . '</th>';
}
if (count($list_potongan) > 0) {
foreach ($list_potongan as $komponen) {
echo '<th class="align-middle text-center">'.strtoupper($komponen['nm_potongan']).'</th>';
}
echo '<th class="align-middle text-center">TOTAL POTONGAN</th>';
echo '<th class="align-middle text-center">TOTAL PENDAPATAN</th>';
}
if (count($list_potongan) > 0) {
foreach ($list_potongan as $komponen) {
echo '<th class="align-middle text-center">' . strtoupper($komponen['nm_potongan']) . '</th>';
}
echo '</tr>';
echo '<th class="align-middle text-center">TOTAL POTONGAN</th>';
}
echo '</tr>';
}
?>
</thead>
<tbody>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment