Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function prosesrekalkulasi()
- {
- $bulan = $this->input->post('lstBulan', 'true');
- $tahun = $this->input->post('lstTahun', 'true');
- $opd = $this->input->post('lstOPD', 'true');
- if ($opd != '') {
- $opd_id = $this->input->post('lstOPD', 'true');
- } else {
- if ($this->session->userdata('level') == 'Admin') {
- $opd_id = $this->input->post('lstOPD', 'true');
- } else {
- $opd_id = $this->session->userdata('opd_id');
- }
- }
- // Log Report Proses
- $checkLog = $this->db->get_where('sihadir_log_report', array('log_report_bulan' => $bulan, 'log_report_tahun' => $tahun, 'opd_id' => $opd_id, 'log_report_keterangan' => 'R'))->row();
- if (count($checkLog) == 0) {
- $dataLog = array(
- 'opd_id' => $opd_id,
- 'log_report_bulan' => $bulan,
- 'log_report_tahun' => $tahun,
- 'log_report_keterangan' => 'R',
- 'log_report_proses' => 1,
- 'log_report_update' => date('Y-m-d H:i:s'),
- );
- $this->db->insert('sihadir_log_report', $dataLog);
- } else {
- $log_report_id = $checkLog->log_report_id;
- $dataLog = array(
- 'log_report_proses' => ($checkLog->log_report_proses + 1),
- 'log_report_update' => date('Y-m-d H:i:s'),
- );
- $this->db->where('log_report_id', $log_report_id);
- $this->db->update('sihadir_log_report', $dataLog);
- }
- if ($this->session->userdata('level') == 'SubOPD') {
- if ($opd != '') {
- $listPegawai = $this->db->order_by('pegawai_nama', 'asc')->get_where('v_pegawai', array('opd_id' => $opd_id, 'status_hukum_status' => 'A'))->result();
- } else {
- $user_username = $this->session->userdata('username');
- $listOPD = $this->db->order_by('opd_id', 'asc')->get_where('v_users_opd', array('user_username' => $user_username))->result();
- $where_in = array();
- foreach ($listOPD as $r) {
- $where_in[] = $r->opd_id;
- }
- $this->db->from('v_pegawai');
- $this->db->where_in('opd_id', $where_in);
- $this->db->where('status_hukum_status', 'A');
- $this->db->order_by('pegawai_nama', 'asc');
- $listPegawai = $this->db->get()->result();
- }
- } elseif ($this->session->userdata('level') == 'OPD') {
- if ($opd != '') {
- $listPegawai = $this->db->order_by('pegawai_nama', 'asc')->get_where('v_pegawai', array('opd_id' => $opd_id, 'status_hukum_status' => 'A'))->result();
- } else {
- $listPegawai = $this->db->order_by('pegawai_nama', 'asc')->get_where('v_pegawai', array('opd_id_head' => $opd_id, 'status_hukum_status' => 'A'))->result();
- }
- } else {
- $listPegawai = $this->db->order_by('pegawai_nama', 'asc')->get_where('v_pegawai', array('opd_id_head' => $opd_id, 'status_hukum_status' => 'A'))->result();
- }
- foreach ($listPegawai as $r) {
- $pegawai_id = $r->pegawai_id;
- $pegawai_nama = $r->pegawai_nama;
- $opd_id = $r->opd_id;
- // Insert Default Parameter
- $listParameterRekap = $this->db->order_by('parameter_rekap_id', 'asc')->get('sihadir_parameter_rekap')->result();
- foreach ($listParameterRekap as $parameter) {
- $parameter_rekap_id = $parameter->parameter_rekap_id;
- $checkDataRekap = $this->db->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'komponen_id' => $parameter_rekap_id, 'lap_rekap_tipe' => 'P'))->row();
- if (count($checkDataRekap) == 0) {
- $data = array(
- 'pegawai_id' => $pegawai_id,
- 'opd_id' => $opd_id,
- 'lap_rekap_bulan' => $bulan,
- 'lap_rekap_tahun' => $tahun,
- 'komponen_id' => $parameter_rekap_id,
- 'lap_rekap_jumlah' => 0,
- 'lap_rekap_potongan' => 0,
- 'lap_rekap_tipe' => 'P',
- 'lap_rekap_update' => date('Y-m-d H:i:s'),
- );
- $this->db->insert('sihadir_lap_rekap', $data);
- } else {
- $lap_rekap_id = $checkDataRekap->lap_rekap_id;
- $dataUpdate = array(
- 'lap_rekap_jumlah' => 0,
- 'lap_rekap_potongan' => 0,
- );
- $this->db->where('lap_rekap_id', $lap_rekap_id);
- $this->db->update('sihadir_lap_rekap', $dataUpdate);
- }
- }
- // Insert Jenis Cuti
- $listJenisCuti = $this->db->order_by('jenis_cuti_id', 'asc')->get_where('v_jenis_cuti', array('jenis_cuti_rekap' => 'Y'))->result();
- foreach ($listJenisCuti as $cuti) {
- $jenis_cuti_id = $cuti->jenis_cuti_id;
- $checkDataCuti = $this->db->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'komponen_id' => $jenis_cuti_id, 'lap_rekap_tipe' => 'C'))->row();
- if (count($checkDataCuti) == 0) {
- $data = array(
- 'pegawai_id' => $pegawai_id,
- 'opd_id' => $opd_id,
- 'lap_rekap_bulan' => $bulan,
- 'lap_rekap_tahun' => $tahun,
- 'komponen_id' => $jenis_cuti_id,
- 'lap_rekap_jumlah' => 0,
- 'lap_rekap_potongan' => 0,
- 'lap_rekap_tipe' => 'C',
- 'lap_rekap_update' => date('Y-m-d H:i:s'),
- );
- $this->db->insert('sihadir_lap_rekap', $data);
- } else {
- $lap_rekap_id = $checkDataCuti->lap_rekap_id;
- $dataUpdate = array(
- 'lap_rekap_jumlah' => 0,
- 'lap_rekap_potongan' => 0,
- );
- $this->db->where('lap_rekap_id', $lap_rekap_id);
- $this->db->update('sihadir_lap_rekap', $dataUpdate);
- }
- }
- // Insert Default Potongan Rekap
- $checkDataRekapPotongan = $this->db->get_where('sihadir_potongan_rekap', array('pegawai_id' => $pegawai_id, 'potongan_rekap_bulan' => $bulan, 'potongan_rekap_tahun' => $tahun))->row();
- if (count($checkDataRekapPotongan) == 0) {
- $data = array(
- 'pegawai_id' => $pegawai_id,
- 'opd_id' => $opd_id,
- 'potongan_rekap_bulan' => $bulan,
- 'potongan_rekap_tahun' => $tahun,
- 'potongan_rekap_hrkerja' => 0,
- 'potongan_rekap_masuk' => 0,
- 'potongan_rekap_tdkmasuk' => 0,
- 'potongan_rekap_lainnya' => 0,
- 'potongan_rekap_persen' => 0,
- 'potongan_rekap_persen_total' => 0,
- 'potongan_rekap_update' => date('Y-m-d H:i:s'),
- );
- $this->db->insert('sihadir_potongan_rekap', $data);
- } else {
- $potongan_rekap_id = $checkDataRekapPotongan->potongan_rekap_id;
- $dataUpdate = array(
- 'potongan_rekap_hrkerja' => 0,
- 'potongan_rekap_masuk' => 0,
- 'potongan_rekap_tdkmasuk' => 0,
- 'potongan_rekap_persen' => 0,
- 'potongan_rekap_persen_total' => 0,
- );
- $this->db->where('potongan_rekap_id', $potongan_rekap_id);
- $this->db->update('sihadir_potongan_rekap', $dataUpdate);
- }
- // Cari data Absen telat per Bulan Tahun
- $totalpersentelat = 0;
- $listAbsenTelat = $this->db->order_by('absensi_tanggal', 'asc')->get_where('v_absensi', array('MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_telat !=' => '', 'absensi_in !=' => '', 'absensi_out !=' => '', 'absensi_posting' => 'Y', 'pegawai_id' => $pegawai_id))->result();
- if (count($listAbsenTelat) > 0) {
- foreach ($listAbsenTelat as $a) {
- $jam_telat = $a->absensi_telat;
- // Parameter Rekap Telat
- $listParameterTelat = $this->db->order_by('parameter_rekap_id', 'asc')->get_where('sihadir_parameter_rekap', array('parameter_rekap_tipe' => 'T'))->result();
- foreach ($listParameterTelat as $paratelat) {
- $parameter_rekap_id = $paratelat->parameter_rekap_id;
- $parameter_rekap_min = $paratelat->parameter_rekap_min;
- $parameter_rekap_max = $paratelat->parameter_rekap_max;
- $parameter_rekap_potongan = $paratelat->parameter_rekap_potongan;
- $dataParameterTelat = $this->db->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'komponen_id' => $parameter_rekap_id, 'lap_rekap_tipe' => 'P'))->row();
- // Update Jumlah jika Masuk Kategori
- if ($jam_telat >= $parameter_rekap_min && $jam_telat <= $parameter_rekap_max) {
- $lap_rekap_id = $dataParameterTelat->lap_rekap_id;
- $jumlah = $dataParameterTelat->lap_rekap_jumlah;
- $potongan = $dataParameterTelat->lap_rekap_potongan;
- $data = array(
- 'lap_rekap_jumlah' => ($jumlah + 1),
- 'lap_rekap_potongan' => ($potongan + $parameter_rekap_potongan),
- 'lap_rekap_update' => date('Y-m-d H:i:s'),
- );
- $this->db->where('lap_rekap_id', $lap_rekap_id);
- $this->db->update('sihadir_lap_rekap', $data);
- }
- }
- }
- }
- // List Absen Pulang Cepat
- $totalpersencepat = 0;
- $listAbsenCepat = $this->db->order_by('absensi_tanggal', 'asc')->get_where('v_absensi', array('MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_plg_cepat !=' => '', 'absensi_in !=' => '', 'absensi_out !=' => '', 'absensi_posting' => 'Y', 'pegawai_id' => $pegawai_id))->result();
- if (count($listAbsenCepat) > 0) {
- foreach ($listAbsenCepat as $a) {
- $jam_cepat = $a->absensi_plg_cepat;
- // Parameter Rekap Pulang Cepat
- $listParameterCepat = $this->db->order_by('parameter_rekap_id', 'asc')->get_where('sihadir_parameter_rekap', array('parameter_rekap_tipe' => 'P'))->result();
- foreach ($listParameterCepat as $paracepat) {
- $parameter_rekap_id = $paracepat->parameter_rekap_id;
- $parameter_rekap_min = $paracepat->parameter_rekap_min;
- $parameter_rekap_max = $paracepat->parameter_rekap_max;
- $parameter_rekap_potongan = $paracepat->parameter_rekap_potongan;
- $dataParameterCepat = $this->db->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'komponen_id' => $parameter_rekap_id, 'lap_rekap_tipe' => 'P'))->row();
- // Update Jumlah jika Masuk Kategori
- if ($jam_cepat >= $parameter_rekap_min && $jam_cepat <= $parameter_rekap_max) {
- $lap_rekap_id = $dataParameterCepat->lap_rekap_id;
- $jumlah = $dataParameterCepat->lap_rekap_jumlah;
- $potongan = $dataParameterCepat->lap_rekap_potongan;
- $data = array(
- 'lap_rekap_jumlah' => ($jumlah + 1),
- 'lap_rekap_potongan' => ($potongan + $parameter_rekap_potongan),
- 'lap_rekap_update' => date('Y-m-d H:i:s'),
- );
- $this->db->where('lap_rekap_id', $lap_rekap_id);
- $this->db->update('sihadir_lap_rekap', $data);
- }
- }
- }
- }
- // Rekap Absen Cuti/Absen
- $totalpotongancuti = 0;
- $listCuti = $this->db->order_by('absensi_tanggal', 'asc')->get_where('v_absensi', array('MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_posting' => 'Y', 'jenis_cuti_rekap' => 'Y', 'jenis_cuti_default' => 'T', 'jenis_cuti_wfh' => 'T', 'pegawai_id' => $pegawai_id))->result();
- foreach ($listCuti as $c) {
- $jenis_cuti_id = $c->jenis_cuti_id;
- $jenis_cuti_potongan = $c->jenis_cuti_potongan;
- $dataParameterCuti = $this->db->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'komponen_id' => $jenis_cuti_id, 'lap_rekap_tipe' => 'C'))->row();
- if (count($dataParameterCuti) > 0) {
- $lap_rekap_id = $dataParameterCuti->lap_rekap_id;
- $jumlah = $dataParameterCuti->lap_rekap_jumlah;
- $potongan = $dataParameterCuti->lap_rekap_potongan;
- $data = array(
- 'lap_rekap_jumlah' => ($jumlah + 1),
- 'lap_rekap_potongan' => ($potongan + $jenis_cuti_potongan),
- 'lap_rekap_update' => date('Y-m-d H:i:s'),
- );
- $this->db->where('lap_rekap_id', $lap_rekap_id);
- $this->db->update('sihadir_lap_rekap', $data);
- }
- }
- // Total Persen Telat/PC
- $dataTotalPersenTelatCepat = $this->db->select_sum('lap_rekap_potongan', 'totalpersentelatcepat')->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'lap_rekap_tipe' => 'P'))->row();
- if (count($dataTotalPersenTelatCepat) > 0) {
- $totalpotongantelatcepat = $dataTotalPersenTelatCepat->totalpersentelatcepat;
- } else {
- $totalpotongantelatcepat = 0;
- }
- // Total Potongan Cuti
- $dataTotalPotonganCuti = $this->db->select_sum('lap_rekap_potongan', 'totalpotongancuti')->get_where('sihadir_lap_rekap', array('pegawai_id' => $pegawai_id, 'lap_rekap_bulan' => $bulan, 'lap_rekap_tahun' => $tahun, 'lap_rekap_tipe' => 'C'))->row();
- if (count($dataTotalPotonganCuti) > 0) {
- $totalpotongancuti = $dataTotalPotonganCuti->totalpotongancuti;
- } else {
- $totalpotongancuti = 0;
- }
- // Total Cuti
- $listCutiNonAlpha = $this->db->order_by('absensi_tanggal', 'asc')->get_where('v_absensi', array('MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_posting' => 'Y', 'jenis_cuti_rekap' => 'Y', 'jenis_cuti_default' => 'T', 'pegawai_id' => $pegawai_id))->result();
- $jumlahcuti = count($listCutiNonAlpha);
- // Hitung Hari Kerja
- $dataJadwal = $this->db->get_where('v_jadwal_kerja', array('pegawai_id' => $pegawai_id, 'MONTH(jadwal_kerja_tanggal)' => $bulan, 'YEAR(jadwal_kerja_tanggal)' => $tahun, 'jam_kerja_status_libur' => 0))->result();
- $harikerja = count($dataJadwal);
- $dataLibur = $this->db->get_where('v_hari_libur', array('MONTH(hari_libur_tanggal)' => $bulan, 'YEAR(hari_libur_tanggal)' => $tahun))->result();
- $harilibur = count($dataLibur);
- $hrkerja = ($harikerja - $harilibur);
- $totalpersenpotongan = ($totalpotongantelatcepat + $totalpotongancuti);
- // SUM Potongan
- $dataPotongan = $this->db->get_where('sihadir_potongan_rekap', array('pegawai_id' => $pegawai_id, 'potongan_rekap_bulan' => $bulan, 'potongan_rekap_tahun' => $tahun))->row();
- $dataMasuk = $this->db->get_where('sihadir_absensi', array('pegawai_id' => $pegawai_id, 'MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_in !=' => '', 'absensi_out !=' => '', 'absensi_posting' => 'Y', 'absensi_libur' => 0))->result();
- $dataInKosong = $this->db->get_where('sihadir_absensi', array('pegawai_id' => $pegawai_id, 'MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_in' => '', 'absensi_out !=' => '', 'absensi_posting' => 'Y', 'absensi_libur' => 0))->result();
- $dataOutKosong = $this->db->get_where('sihadir_absensi', array('pegawai_id' => $pegawai_id, 'MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'absensi_in !=' => '', 'absensi_out' => '', 'absensi_posting' => 'Y', 'absensi_libur' => 0))->result();
- $dataLainya = $this->db->get_where('v_absensi', array('pegawai_id' => $pegawai_id, 'MONTH(absensi_tanggal)' => $bulan, 'YEAR(absensi_tanggal)' => $tahun, 'jenis_cuti_rekap' => 'T', 'absensi_posting' => 'Y', 'absensi_libur' => 0))->result();
- $Masuk = count($dataMasuk);
- $InKosong = count($dataInKosong);
- $OutKosong = count($dataOutKosong);
- $Lainnya = count($dataLainya);
- $TotalAbsen = ($Masuk + $Lainnya + $jumlahcuti);
- $tidakmasuk = ($hrkerja - $TotalAbsen);
- // Potongan Alpha
- $dataPotonganAlpha = $this->db->get_where('v_jenis_cuti', array('jenis_cuti_default' => 'Y'))->row();
- $potonganalpha = ($dataPotonganAlpha->jenis_cuti_potongan * $tidakmasuk);
- $totalrekappotongan = ($totalpersenpotongan + ($potonganalpha > 100 ? 100 : $potonganalpha));
- $totalpersenkehadiran = (100 - $totalrekappotongan);
- // echo $pegawai_nama . ' Hari : ' . $harikerja . '-' . $harilibur . ' : ' . $hrkerja . ' Cuti Non Alpha : ' . $jumlahcuti . ' Telat : ' . $totalpersentelat . ' Cepat : ' . $totalpersencepat . ' Pot. Cuti : ' . $totalpotongancuti . ' Masuk : ' . $Masuk . ' Tdk Masuk : ' . $tidakmasuk . ' Pot. Alpha : ' . $potonganalpha . ' Rekap Potongan : ' . $totalrekappotongan . ' Kehadiran : ' . $totalpersenkehadiran . ' In Kosong : ' . $InKosong . ' Out Kosong : ' . $OutKosong . '<br>';
- if (count($dataPotongan) > 0) {
- $potongan_rekap_id = $dataPotongan->potongan_rekap_id;
- $dataUpdate = array(
- 'potongan_rekap_hrkerja' => $hrkerja,
- 'potongan_rekap_masuk' => $Masuk,
- 'potongan_rekap_tdkmasuk' => $tidakmasuk,
- 'potongan_rekap_lainnya' => $Lainnya,
- 'potongan_rekap_persen' => $totalrekappotongan,
- 'potongan_rekap_persen_total' => $totalpersenkehadiran,
- );
- $this->db->where('potongan_rekap_id', $potongan_rekap_id);
- $this->db->update('sihadir_potongan_rekap', $dataUpdate);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement