Commit 56465a6d by Lalang Trendy Buana Committed by nurchamim

modul: bug import jadwal shift

status: selesai
keterangan: ketika import, hapus data temporary hanya berdasarkan id_company
parent ba85a5db
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
defined('BASEPATH') or exit('No direct script access allowed');
class Pengaturan_shift_import extends MY_Controller {
class Pengaturan_shift_import extends MY_Controller
{
public function __construct(){
public function __construct()
{
parent::__construct();
$this->load->model(array('Pengaturan_shift_import_m', 'Pengaturan_shift_m'));
$this->load->library(array('PHPExcel/Excel', 'PHPExcel/PHPExcel', 'Uploadfile'));
......@@ -19,7 +21,8 @@ class Pengaturan_shift_import extends MY_Controller {
$this->id_karyawan = $this->session->userdata('id_karyawan');
}
public function index(){
public function index()
{
$data['judul'] = 'Import Shift';
$data['aktif'] = 'pengaturan_shift';
......@@ -29,18 +32,20 @@ class Pengaturan_shift_import extends MY_Controller {
$this->load->view('main_template', $data, false);
}
public function form_template_import(){
public function form_template_import()
{
$this->load->view('pengaturan/pengaturan_shift/import/form_template_import');
}
public function view_data(){
public function view_data()
{
$this->load->config('datatables');
$this->load->helper('datatables');
$ttl_periode = $this->Pengaturan_shift_import_m->getCountPeriodeShift();
$data['ttl_periode'] = $ttl_periode;
if($ttl_periode > 0){
if ($ttl_periode > 0) {
$periode = $this->Pengaturan_shift_import_m->getPeriodeShift();
$tgl_mulai = $periode->tgl_mulai;
$tgl_selesai = $periode->tgl_selesai;
......@@ -54,10 +59,11 @@ class Pengaturan_shift_import extends MY_Controller {
} else {
$data['id_cabang'] = $this->Pengaturan_shift_import_m->getIdCabangPusat();
}
$this->load->view('pengaturan/pengaturan_shift/import/list_data',$data);
$this->load->view('pengaturan/pengaturan_shift/import/list_data', $data);
}
public function list_data(){
public function list_data()
{
$periode = $this->Pengaturan_shift_import_m->getPeriodeShift();
$tgl_mulai = $periode->tgl_mulai;
$tgl_selesai = $periode->tgl_selesai;
......@@ -73,50 +79,53 @@ class Pengaturan_shift_import extends MY_Controller {
$no++;
$row = array();
$row[] = $no;
$row[] = $field->nama_lengkap."<br><span class='font-size-xsmall'>".$field->nik."</span>";
$row[] = $field->kode_cabang." - ".$field->nama_cabang;
$row[] = $field->kode_departemen." - ".$field->nama_departemen;
$row[] = $field->kode_jabatan." - ".$field->nama_jabatan;
foreach($kolom_header['data_tanggal'] as $header){
$tgl_shift = date_format(date_create($header['tanggal']),"Y-m-d");
$kode_shift = $data_shift[$field->id_karyawan."-".$tgl_shift]["kode_shift"];
$flag = $data_shift[$field->id_karyawan."-".$tgl_shift]["flag"];
if($flag == "2"){
if(!empty($kode_shift)){
$row[] = $field->nama_lengkap . "<br><span class='font-size-xsmall'>" . $field->nik . "</span>";
$row[] = $field->kode_cabang . " - " . $field->nama_cabang;
$row[] = $field->kode_departemen . " - " . $field->nama_departemen;
$row[] = $field->kode_jabatan . " - " . $field->nama_jabatan;
foreach ($kolom_header['data_tanggal'] as $header) {
$tgl_shift = date_format(date_create($header['tanggal']), "Y-m-d");
$kode_shift = $data_shift[$field->id_karyawan . "-" . $tgl_shift]["kode_shift"];
$flag = $data_shift[$field->id_karyawan . "-" . $tgl_shift]["flag"];
if ($flag == "2") {
if (!empty($kode_shift)) {
$class = "badge badge-warning";
}else{
} else {
$class = "badge badge-danger";
$kode_shift = $this->lang->line('data_kosong');
}
}else if($flag == "3"){
} else if ($flag == "3") {
$class = "badge badge-warning";
}else if($flag == "4"){
} else if ($flag == "4") {
$class = "badge badge-success";
}else{
} else {
$class = "";
}
$row[] = "<div class='".$class."'>".$kode_shift."</div>";
$row[] = "<div class='" . $class . "'>" . $kode_shift . "</div>";
}
$data[] = $row;
}
$output = array("draw" => $_POST['draw'],
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->Pengaturan_shift_import_m->count_all(),
"recordsFiltered" => $this->Pengaturan_shift_import_m->count_filtered(),
"data" => $data);
"data" => $data
);
$output = __response($this->MY_response, $output);
echo json_encode($output);
}
private function __kolom_periode($tgl_mulai="-", $tgl_selesai="-", $id_cabang=0){
private function __kolom_periode($tgl_mulai = "-", $tgl_selesai = "-", $id_cabang = 0)
{
$this->load->config('excel');
$m_jam_kerja_libur = ["6", "7"];
......@@ -143,7 +152,7 @@ class Pengaturan_shift_import extends MY_Controller {
'warna_teks' => ''
];
if(in_array($dt->format("N"), $m_jam_kerja_libur) or in_array($Y_m_d, $m_libur_nasional)) {
if (in_array($dt->format("N"), $m_jam_kerja_libur) or in_array($Y_m_d, $m_libur_nasional)) {
$temp['libur'] = true;
$temp['warna'] = $this->config->item('warna_background_libur');
$temp['warna_teks'] = $this->config->item('warna_teks_libur');
......@@ -158,29 +167,30 @@ class Pengaturan_shift_import extends MY_Controller {
return $header;
}
function download_template($tgl_mulai="-", $tgl_selesai="-", $id_cabang="-", $id_departemen="-"){
function download_template($tgl_mulai = "-", $tgl_selesai = "-", $id_cabang = "-", $id_departemen = "-")
{
$this->load->helper('excel');
$nama_cabang = $this->db->select("nama")
->from("master_cabang")
->where("id_cabang",$id_cabang)
->where("id_company",$this->id_company)
->where("id_cabang", $id_cabang)
->where("id_company", $this->id_company)
->get()
->row("nama");
if($id_departemen != "-") {
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_departemen", $id_departemen)
->where("id_company", $this->id_company)
->get()
->row("nama");
$filename = "Template Import Shift " .$this->lang->line('cabang')." ". $nama_cabang . " ".$this->lang->line('departemen'). " " . $nama_departemen;
}else{
$filename = "Template Import Shift " .$this->lang->line('cabang'). " ". $nama_cabang . " Semua". $this->lang->line('departemen');
$filename = "Template Import Shift " . $this->lang->line('cabang') . " " . $nama_cabang . " " . $this->lang->line('departemen') . " " . $nama_departemen;
} else {
$filename = "Template Import Shift " . $this->lang->line('cabang') . " " . $nama_cabang . " Semua" . $this->lang->line('departemen');
}
$header = $this->__kolom_periode($tgl_mulai,$tgl_selesai, $id_cabang);
$header = $this->__kolom_periode($tgl_mulai, $tgl_selesai, $id_cabang);
$colspan = count($header['data_tanggal']) + 7;
$data['colspan'] = $colspan;
......@@ -201,13 +211,13 @@ class Pengaturan_shift_import extends MY_Controller {
$column = [
'A' => ['width' => 5, 'align' => 'center', 'valign' => 'middle'],
'B' => ['width' => 30, 'align' => 'center', 'valign' => 'middle','format'=>'text'],
'B' => ['width' => 30, 'align' => 'center', 'valign' => 'middle', 'format' => 'text'],
'C' => ['width' => 40],
'D' => ['width' => 20],
'E' => ['width' => 20],
'F' => ['width' => 20],
'G' => ['width' => 0,'format'=>'text'],
'H' => ['width' => 0,'format'=>'text'],
'G' => ['width' => 0, 'format' => 'text'],
'H' => ['width' => 0, 'format' => 'text'],
];
$column = kolom_highlight_libur($column, $header['data_tanggal'], $tgl_mulai, $tgl_selesai, $id_cabang, 6);
......@@ -241,33 +251,34 @@ class Pengaturan_shift_import extends MY_Controller {
}
public function import_data_excel(){
if(!empty($_FILES['file']['name'])) {
public function import_data_excel()
{
if (!empty($_FILES['file']['name'])) {
$tahunbulan = date('Ym');
$fileUpload['fname'] = 'file';
$fileUpload['location'] = 'template_shift/'.$tahunbulan;
$fileUpload['location'] = 'template_shift/' . $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);
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]);
} 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]);
}
$tags = $objPHPExcel->getProperties()->getKeywords();
......@@ -275,10 +286,10 @@ class Pengaturan_shift_import extends MY_Controller {
if ($tags != '1.2') {
$message = '<font color="#eb3a28"><i class="fa fa-exclamation-triangle">&nbsp;</i>GAGAL, template import masih menggunakan versi lama, silahkan download template versi terbaru</font>';
return __response_save(false, array('message' => $message));
}else{
} else {
$id_cabang = $objPHPExcel->setActiveSheetIndex(0)->getCell("H7")->getValue();
$master_shift = $this->Pengaturan_shift_import_m->masterShift($id_cabang);
$id_temp = $this->fungsi->getNextId('data_shift_karyawan_temp','id',$this->id_company,5);
$id_temp = $this->fungsi->getNextId('data_shift_karyawan_temp', 'id', $this->id_company, 5);
$highestColumm = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
$highestRow = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
......@@ -288,46 +299,48 @@ class Pengaturan_shift_import extends MY_Controller {
for ($row = 7; $row < $highestRow; $row++) {
$dataset = array();
for ($column = 'I'; $column != $highestColumm; $column++) {
$id_karyawan = $objPHPExcel->setActiveSheetIndex(0)->getCell("G". $row)->getValue();
$id_karyawan = $objPHPExcel->setActiveSheetIndex(0)->getCell("G" . $row)->getValue();
$tgl_shift = $objPHPExcel->setActiveSheetIndex(0)->getCell($column ."6")->getValue();
if($tgl_shift == '') {
$tgl_shift = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . "6")->getValue();
if ($tgl_shift == '') {
continue;
}
$tgl_shift = date_format(date_create($tgl_shift),"Y-m-d");
$tgl_shift = date_format(date_create($tgl_shift), "Y-m-d");
$kode_shift = $objPHPExcel->setActiveSheetIndex(0)->getCell($column . $row)->getValue();
$kode_shift = strtoupper(strtolower(trim($kode_shift)));
if(empty($kode_shift)){
if (empty($kode_shift)) {
$flag = '2';
}else{
if(strtotime($tgl_shift) < strtotime(date("Y-m-d"))){
} else {
if (strtotime($tgl_shift) < strtotime(date("Y-m-d"))) {
$flag = '3';
}else{
} else {
$flag = '1';
}
}
if(empty($master_shift[$kode_shift])){
if (empty($master_shift[$kode_shift])) {
$id_master_shift = $kode_shift;
$flag = '2';
}else{
} else {
$id_master_shift = $master_shift[$kode_shift];
}
if(!empty($id_karyawan)){
$data = array("id" => $id_temp,
"id_karyawan"=>$id_karyawan,
"tanggal"=>$tgl_shift,
"id_master_shift" =>$id_master_shift,
"flag" =>$flag,
"user_input" =>$this->id_karyawan,
"id_company" => $this->id_company);
if (!empty($id_karyawan)) {
$data = array(
"id" => $id_temp,
"id_karyawan" => $id_karyawan,
"tanggal" => $tgl_shift,
"id_master_shift" => $id_master_shift,
"flag" => $flag,
"user_input" => $this->id_karyawan,
"id_company" => $this->id_company
);
$data_insert[] = $data;
$last_id = substr($id_temp,-5);
$next_id = $last_id+1;
$id_temp = substr($id_temp,0,-5).sprintf("%05d", $next_id);
$last_id = substr($id_temp, -5);
$next_id = $last_id + 1;
$id_temp = substr($id_temp, 0, -5) . sprintf("%05d", $next_id);
}
}
......@@ -336,8 +349,8 @@ class Pengaturan_shift_import extends MY_Controller {
$this->db->trans_start();
$this->db->where("id_company",$this->id_company);
$this->db->where("user_input",$this->id_karyawan);
$this->db->where("id_company", $this->id_company);
// $this->db->where("user_input", $this->id_karyawan);
$this->db->delete("data_shift_karyawan_temp");
$this->db->insert_batch('data_shift_karyawan_temp', $data_insert);
......@@ -346,24 +359,25 @@ class Pengaturan_shift_import extends MY_Controller {
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{
$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);
$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()
{
$periode = $this->Pengaturan_shift_import_m->getPeriodeShift();
$tgl_mulai = $periode->tgl_mulai;
$tgl_selesai = $periode->tgl_selesai;
$data_shift_ready = $this->Pengaturan_shift_import_m->getDataShiftReady($tgl_mulai,$tgl_selesai);
$data_shift_ready = $this->Pengaturan_shift_import_m->getDataShiftReady($tgl_mulai, $tgl_selesai);
$id_shift_karyawan = $this->fungsi->getNextId('data_shift_karyawan','id_shift_karyawan',$this->id_company,5);
$id_shift_karyawan = $this->fungsi->getNextId('data_shift_karyawan', 'id_shift_karyawan', $this->id_company, 5);
$tgl_now = date("Y-m-d");
$data_insert = [];
......@@ -372,34 +386,38 @@ class Pengaturan_shift_import extends MY_Controller {
$data_shift = $this->Pengaturan_shift_import_m->getDataShiftTemp();
foreach($data_shift as $rows){
foreach ($data_shift as $rows) {
$id = $rows->id;
$tanggal = $rows->tanggal;
$id_karyawan = $rows->id_karyawan;
$id_master_shift = $rows->id_master_shift;
if(strtotime($tanggal) >= strtotime($tgl_now)){
if (strtotime($tanggal) >= strtotime($tgl_now)) {
$flag = "4";
$data_insert[] = ["id_shift_karyawan"=>$id_shift_karyawan,
$data_insert[] = [
"id_shift_karyawan" => $id_shift_karyawan,
"tanggal" => $tanggal,
"id_karyawan" => $id_karyawan,
"id_master_shift" => $id_master_shift,
"user_input" => $this->id_karyawan,
"id_company" => $this->id_company];
"id_company" => $this->id_company
];
$last_id = substr($id_shift_karyawan,-5);
$next_id = $last_id+1;
$id_shift_karyawan = substr($id_shift_karyawan,0,-5).sprintf("%05d", $next_id);
$last_id = substr($id_shift_karyawan, -5);
$next_id = $last_id + 1;
$id_shift_karyawan = substr($id_shift_karyawan, 0, -5) . sprintf("%05d", $next_id);
if(!empty($data_shift_ready[$id_karyawan."-".$tanggal])){
$data_delete[] = $data_shift_ready[$id_karyawan."-".$tanggal];
if (!empty($data_shift_ready[$id_karyawan . "-" . $tanggal])) {
$data_delete[] = $data_shift_ready[$id_karyawan . "-" . $tanggal];
}
}else{
} else {
$flag = "3";
}
$data_update[] = ["id"=>$id,
"flag" => $flag];
$data_update[] = [
"id" => $id,
"flag" => $flag
];
......@@ -412,7 +430,7 @@ class Pengaturan_shift_import extends MY_Controller {
$this->db->trans_start();
if(count($data_delete) > 0){
if (count($data_delete) > 0) {
$this->db->where_in('id_shift_karyawan', $data_delete);
$this->db->delete('data_shift_karyawan');
}
......@@ -422,18 +440,19 @@ class Pengaturan_shift_import extends MY_Controller {
$this->db->trans_complete();
if($this->db->trans_status() === FALSE) {
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
return __response_save(false);
}else{
} else {
$this->db->trans_commit();
return __response_save(true);
}
}
public function delete_all_temp(){
$this->db->where("id_company",$this->id_company);
$this->db->where("user_input",$this->id_karyawan);
public function delete_all_temp()
{
$this->db->where("id_company", $this->id_company);
$this->db->where("user_input", $this->id_karyawan);
$delete = $this->db->delete("data_shift_karyawan_temp");
return __response_delete($delete);
}
......
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