Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET GLOBAL log_bin_trust_function_creators = 1;
- SET GLOBAL event_scheduler = OFF;
- USE `e-presensi`;
- ALTER TABLE `tabsensi`
- CHANGE COLUMN `id_data_masuk` `id_data_masuk` INT(11) NOT NULL DEFAULT '0' AFTER `jam_masuk`,
- CHANGE COLUMN `jam_masuk_created_at` `jam_masuk_created_at` DATETIME NULL DEFAULT NULL AFTER `id_data_masuk`,
- CHANGE COLUMN `jam_masuk_by` `jam_masuk_by` VARCHAR(50) NULL DEFAULT '0' AFTER `jam_masuk_created_at`,
- CHANGE COLUMN `menit_boleh_terlambat` `menit_boleh_terlambat` INT(11) NOT NULL DEFAULT '0' AFTER `jam_masuk_by`,
- CHANGE COLUMN `menit_terlambat` `menit_terlambat` INT(11) NULL DEFAULT NULL AFTER `menit_boleh_terlambat`,
- CHANGE COLUMN `id_data_pulang` `id_data_pulang` INT(11) NOT NULL DEFAULT '0' AFTER `jam_pulang`,
- CHANGE COLUMN `jam_pulang_created_at` `jam_pulang_created_at` DATETIME NULL DEFAULT NULL AFTER `id_data_pulang`,
- CHANGE COLUMN `jam_pulang_by` `jam_pulang_by` VARCHAR(50) NOT NULL DEFAULT '0' AFTER `jam_pulang_created_at`,
- CHANGE COLUMN `menit_boleh_cp` `menit_boleh_cp` INT(11) NOT NULL DEFAULT '0' AFTER `jam_pulang_by`,
- CHANGE COLUMN `menit_cp` `menit_cp` INT(11) NOT NULL DEFAULT '0' AFTER `menit_boleh_cp`;
- delete from tlibur where tgl = "2019-01-01";
- delete from tlibur where tgl = "2019-02-05";
- delete from tlibur where tgl = "2019-03-07";
- delete from tlibur where tgl = "2019-04-01";
- delete from tlibur where tgl = "2019-04-02";
- delete from tlibur where tgl = "2019-04-03";
- delete from tlibur where tgl = "2019-04-04";
- delete from tlibur where tgl = "2019-04-05";
- delete from tlibur where tgl = "2019-04-19";
- delete from tlibur where tgl = "2019-05-01";
- delete from tlibur where tgl = "2019-05-30";
- delete from tlibur where tgl = "2019-06-03";
- delete from tlibur where tgl = "2019-06-04";
- delete from tlibur where tgl = "2019-06-05";
- delete from tlibur where tgl = "2019-06-06";
- delete from tlibur where tgl = "2019-06-07";
- delete from tlibur where tgl = "2019-12-24";
- delete from tlibur where tgl = "2019-12-25";
- INSERT INTO `tlibur` (`id`, `tgl`, `hari_libur`, `gup_id`, `all_grup`) VALUES
- (null, '2019-01-01', 'TAHUN BARU MASEHI', NULL, 1),
- (null, '2019-02-05', 'TAHUN BARU IMLEK', NULL, 1),
- (null, '2019-03-07', 'HARI RAYA NYEPI', NULL, 1),
- (null, '2019-04-03', 'PERINGATAN ISRA MIRAJ', NULL, 1),
- (null, '2019-04-19', 'JUMAT AGUNG', NULL, 1),
- (null, '2019-05-01', 'HARI BURUH', NULL, 1),
- (null, '2019-05-30', 'KENAIKAN ISA ALMASIH', NULL, 1),
- (null, '2019-06-03', 'CUTI BERSAMA IDUL FITRI', NULL, 1),
- (null, '2019-06-04', 'CUTI BERSAMA IDUL FITRI', NULL, 1),
- (null, '2019-06-05', 'IDUL FITRI', NULL, 1),
- (null, '2019-06-06', 'IDUL FITRI', NULL, 1),
- (null, '2019-06-07', 'CUTI BERSAMA IDUL FITRI', NULL, 1),
- (null, '2019-12-24', 'CUTI BERSAMA NATAL', NULL, 1),
- (null, '2019-12-25', 'HARI NATAL', NULL, 1);
- CREATE TABLE IF NOT EXISTS `tb_jamkantor_kondisi` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `shift` int(11) NOT NULL,
- `hari` int(11) NOT NULL,
- `kode_grup` int(11) NOT NULL DEFAULT 0,
- `mulai_absen_masuk` time NOT NULL,
- `jam_masuk` time NOT NULL,
- `batas_absen_masuk` time NOT NULL,
- `jam_breakin` time DEFAULT NULL,
- `batas_absen_breakin` time DEFAULT NULL,
- `jam_breakout` time DEFAULT NULL,
- `batas_absen_breakout` time DEFAULT NULL,
- `mulai_absen_pulang` time NOT NULL,
- `jam_pulang` time NOT NULL,
- `batas_absen_pulang` time NOT NULL,
- `stay_day` tinyint(4) NOT NULL DEFAULT 0,
- `ket` varchar(200) DEFAULT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `shiftday` (`shift`,`hari`)
- ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
- INSERT INTO `tb_jamkantor_kondisi` (`id`, `shift`, `hari`, `kode_grup`, `mulai_absen_masuk`, `jam_masuk`, `batas_absen_masuk`, `jam_breakin`, `batas_absen_breakin`, `jam_breakout`, `batas_absen_breakout`, `mulai_absen_pulang`, `jam_pulang`, `batas_absen_pulang`, `stay_day`, `ket`) VALUES
- (4, 0, 2, 0, '06:00:00', '08:00:00', '12:00:00', NULL, NULL, NULL, NULL, '12:00:01', '15:00:00', '23:00:00', 0, 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- (8, 0, 3, 0, '06:00:00', '08:00:00', '12:00:00', NULL, NULL, NULL, NULL, '12:00:01', '15:00:00', '23:00:00', 0, 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- (12, 0, 4, 0, '06:00:00', '08:00:00', '12:00:00', NULL, NULL, NULL, NULL, '12:00:01', '15:00:00', '23:00:00', 0, 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- (16, 0, 5, 0, '06:00:00', '08:00:00', '12:00:00', NULL, NULL, NULL, NULL, '12:00:01', '15:00:00', '23:00:00', 0, 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- (20, 0, 6, 0, '06:00:00', '08:00:00', '12:00:00', NULL, NULL, NULL, NULL, '12:00:01', '15:30:00', '23:00:00', 0, 'JAM KANTOR BULAN RAMADHAN 1440 H');
- CREATE TABLE IF NOT EXISTS `tb_tgl_kondisi` (
- `tgl` date NOT NULL,
- `kondisi` varchar(250) DEFAULT NULL,
- PRIMARY KEY (`tgl`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- INSERT INTO `tb_tgl_kondisi` (`tgl`, `kondisi`) VALUES
- ('2019-05-06', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-07', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-08', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-09', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-10', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-11', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-12', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-13', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-14', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-15', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-16', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-17', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-18', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-19', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-20', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-21', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-22', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-23', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-24', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-25', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-26', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-27', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-28', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-29', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-30', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-05-31', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-01', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-02', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-03', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-04', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-05', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-06', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-07', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-08', 'JAM KANTOR BULAN RAMADHAN 1440 H'),
- ('2019-06-09', 'JAM KANTOR BULAN RAMADHAN 1440 H');
- DROP FUNCTION IF EXISTS `tdaylyshiftschedule_f_filler`;
- DROP FUNCTION IF EXISTS `synch3_f_insert_or_update`;
- DROP FUNCTION IF EXISTS `synch3_f_non_shift_handler`;
- DROP FUNCTION IF EXISTS `synch3_f_non_shift_handler_condition`;
- DROP FUNCTION IF EXISTS `synch3_f_shift_stayday_handler`;
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` FUNCTION `synch3_f_insert_or_update`(`prm_checktime_id` INT, `prm_nrp` VARCHAR(20), `prm_tgl` DATE, `prm_waktu` TIME, `prm_checktype` VARCHAR(1), `prm_run_mode` VARCHAR(50)
- ) RETURNS tinyint(4)
- BEGIN
- SELECT COUNT(ti.nap), ti.nap, ti.ni, ti.id_grup, ti.shift, ti.kode_jam
- INTO @cekRegistered, @gotNAP, @gotNIP, @gotID_SK, @shift, @kode_jam
- FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- IF @cekRegistered < 1 THEN /*NAP registerd in system */
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 0, "Data NRP tidak terdaftar pada sistem!") INTO @MESSAGE;
- RETURN 0;
- END IF;
- /* [HARI KE 1] cek data shift stay day (shift kena dua hari) */
- SELECT COUNT(td.nap), td.kode_shift, td.tgl, "HARI-1"
- INTO @shift_stayday_hari_1, @kode_shift, @tgl_absen, @sts_shift
- FROM tdaylyshiftschedule td WHERE td.stay_day = 1
- AND td.nap = prm_nrp
- AND td.tgl = DATE(prm_tgl) LIMIT 1;
- /* fungsi [HARI KE 1] cek data shift stay day */
- IF @shift_stayday_hari_1 > 0 THEN
- RETURN synch3_f_shift_stayday_handler(prm_checktime_id, prm_nrp, @tgl_absen, prm_waktu, prm_checktype, prm_run_mode, @kode_shift, @sts_shift);
- END IF;
- /* [HARI KE 2] cek data shift stay day (shift kena dua hari) */
- SELECT COUNT(td2.nap), td2.kode_shift, td2.tgl, "HARI-2"
- INTO @shift_stayday_hari_2, @kode_shift, @tgl_absen, @sts_shift
- FROM tdaylyshiftschedule td2 WHERE td2.stay_day = 1
- AND td2.nap = prm_nrp
- AND td2.tgl = DATE_SUB(DATE(prm_tgl), INTERVAL 1 DAY) LIMIT 1;
- /* fungsi [HARI KE 2] cek data shift stay day */
- IF @shift_stayday_hari_2 > 0 THEN
- RETURN synch3_f_shift_stayday_handler(prm_checktime_id, prm_nrp, @tgl_absen, prm_waktu, prm_checktype, prm_run_mode, @kode_shift, @sts_shift);
- END IF;
- /*cek apakah tgl masuk bulan ramadhan*/
- SELECT COUNT(V.tgl) INTO @jam_kondisi FROM tb_tgl_kondisi V WHERE V.tgl = prm_tgl;
- CASE WHEN @shift = 0 THEN
- /*fungsi tgl masuk bulan ramadhan (khusus non shift)*/
- IF @jam_kondisi > 0 THEN
- RETURN synch3_f_non_shift_handler_condition(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, prm_run_mode, @kode_jam);
- END IF;
- /*jam normal biasa*/
- RETURN synch3_f_non_shift_handler(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, prm_run_mode, @kode_jam);
- ELSE
- RETURN synch3_f_shift_handler(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, prm_run_mode);
- END CASE;
- END//
- DELIMITER ;
- -- Dumping structure for function e-presensi.synch3_f_non_shift_handler
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` FUNCTION `synch3_f_non_shift_handler`(`prm_checktime_id` INT, `prm_nrp` VARCHAR(20), `prm_tgl` DATE, `prm_waktu` TIME, `prm_checktype` VARCHAR(1), `prm_run_mode` VARCHAR(50), `prm_kode_jam` TINYINT(2)
- ) RETURNS tinyint(4)
- BEGIN
- SELECT COUNT(tj.id), tj.mulai_absen_masuk, tj.jam_masuk, tj.batas_absen_masuk, tj.mulai_absen_pulang, tj.jam_pulang, tj.batas_absen_pulang,
- tj.jam_breakin, tj.batas_absen_breakin, tj.jam_breakout, tj.batas_absen_breakout
- INTO @scheduleExistNormal, @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal,
- @breakinNormal, @batasBreakinNormal, @breakoutNormal, @batasBreakoutNormal
- FROM tjamkantor tj WHERE tj.hari = DAYOFWEEK(prm_tgl) AND tj.shift = prm_kode_jam LIMIT 1;
- IF @scheduleExistNormal < 1 THEN /* SCHEDULE tidak tersedia */
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 10, CONCAT("DAY:", DAYNAME(prm_tgl), "=> ","Jam Kantor non shift tidak tersedia!")) INTO @MESSAGE;
- RETURN 10;
- END IF;
- SELECT COUNT(ta.id), ta.jam_masuk, ta.jam_pulang, ta.id_data_masuk, ta.id_data_pulang, ta.breakout, ta.breakin
- INTO @countPrensented, @jamMasukTersimpan, @jamPulangTersimpan, @idJamMasukTersimpan, @idJamPulangTersimpan, @jamBreakoutTersimpan, @jamBreakinTersimpan
- FROM tabsensi ta WHERE ta.nap = prm_nrp AND ta.tgl = prm_tgl LIMIT 1;
- CASE WHEN @countPrensented = 0 THEN /* RECORD tabsensi tgl tersebut belum tersedia */
- /* Prosess as new inserting data */
- IF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal THEN
- /* Insert as data breakout */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- /* nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk, */
- nap, grup, tgl, breakout,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data breakout */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal THEN
- /* Insert as data breakin */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, breakin,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen BREAKIN") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen breakin ditambahkan */
- /* END Insert as data breakin */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal THEN
- /* Insert as data pagi */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu < @masukNormal,"OK","TERLAMBAT")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen PAGI") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data pagi */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal THEN
- /* Insert as data sore */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_pulang, id_data_pulang, jam_pulang_created_at, jam_pulang_by, ket_pulang,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu > @pulangNormal,"OK","CEPAT PULANG")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen SORE") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen SORE ditambahkan */
- /* END Insert as data sore */
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 13, "SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE") INTO @MESSAGE;
- RETURN 13; /* SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE */
- END IF;
- /* END: Prosess as new inserting data */
- ELSE
- /* Prosess as updating data */
- IF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal THEN
- /* Update as data breakout */
- IF @jamBreakoutTersimpan IS NULL OR @jamBreakoutTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakoutTersimpan > prm_waktu THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakoutTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakoutTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakout */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal THEN
- /* Update as data breakin */
- IF @jamBreakinTersimpan IS NULL OR @jamBreakinTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKIN") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakinTersimpan < prm_waktu THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKIN") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakinTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih cepat: Absen BREAKIN") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakinTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakin */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal THEN
- /* Update as data pagi */
- IF @jamMasukTersimpan IS NULL OR @jamMasukTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen PAGI") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamMasukTersimpan > prm_waktu THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen PAGI") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamMasukTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen PAGI") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @idJamMasukTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen PAGI") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen PAGI") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data pagi */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal THEN
- /* Update as data sore */
- IF @jamPulangTersimpan IS NULL OR @jamPulangTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 19, "Data diperbaharui/Tambah sebagai data baru: Absen SORE") INTO @MESSAGE;
- RETURN 19;
- ELSEIF @jamPulangTersimpan < prm_waktu THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 20, "Data diperbaharui/Ganti data lama: Absen SORE") INTO @MESSAGE;
- RETURN 20;
- ELSEIF @jamPulangTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 21, "Data SKIPPED: Data tersimpan lebih akhir/besar: Absen SORE") INTO @MESSAGE;
- RETURN 21;
- ELSEIF @jamPulangTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 22, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen SORE") INTO @MESSAGE;
- RETURN 22;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 23, "Data SKIPPED: Alasan tidak diketahui.: Absen SORE") INTO @MESSAGE;
- RETURN 23;
- END IF;
- /* END Update as data sore */
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 24, "SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE") INTO @MESSAGE;
- RETURN 24; /* SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE */
- END IF;
- /* END: Prosess as updating data */
- END CASE;
- END//
- DELIMITER ;
- -- Dumping structure for function e-presensi.synch3_f_non_shift_handler_condition
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` FUNCTION `synch3_f_non_shift_handler_condition`(`prm_checktime_id` INT, `prm_nrp` VARCHAR(20), `prm_tgl` DATE, `prm_waktu` TIME, `prm_checktype` VARCHAR(1), `prm_run_mode` VARCHAR(50), `prm_kode_jam` TINYINT(2)
- ) RETURNS tinyint(4)
- BEGIN
- SELECT COUNT(tj.id), tj.mulai_absen_masuk, tj.jam_masuk, tj.batas_absen_masuk, tj.mulai_absen_pulang, tj.jam_pulang, tj.batas_absen_pulang,
- tj.jam_breakin, tj.batas_absen_breakin, tj.jam_breakout, tj.batas_absen_breakout
- INTO @scheduleExistNormal, @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal,
- @breakinNormal, @batasBreakinNormal, @breakoutNormal, @batasBreakoutNormal
- FROM tb_jamkantor_kondisi tj WHERE tj.hari = DAYOFWEEK(prm_tgl) AND tj.shift = prm_kode_jam LIMIT 1;
- IF @scheduleExistNormal < 1 THEN /* SCHEDULE tidak tersedia */
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 10, CONCAT("DAY:", DAYNAME(prm_tgl), "=> ","Jam Kantor non shift tidak tersedia!")) INTO @MESSAGE;
- RETURN 10;
- END IF;
- SELECT COUNT(ta.id), ta.jam_masuk, ta.jam_pulang, ta.id_data_masuk, ta.id_data_pulang, ta.breakout, ta.breakin
- INTO @countPrensented, @jamMasukTersimpan, @jamPulangTersimpan, @idJamMasukTersimpan, @idJamPulangTersimpan, @jamBreakoutTersimpan, @jamBreakinTersimpan
- FROM tabsensi ta WHERE ta.nap = prm_nrp AND ta.tgl = prm_tgl LIMIT 1;
- CASE WHEN @countPrensented = 0 THEN /* RECORD tabsensi tgl tersebut belum tersedia */
- /* Prosess as new inserting data */
- IF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal THEN
- /* Insert as data breakout */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- /* nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk, */
- nap, grup, tgl, breakout,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data breakout */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal THEN
- /* Insert as data breakin */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, breakin,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen BREAKIN") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen breakin ditambahkan */
- /* END Insert as data breakin */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal THEN
- /* Insert as data pagi */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu < @masukNormal,"OK","TERLAMBAT")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen PAGI") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data pagi */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal THEN
- /* Insert as data sore */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_pulang, id_data_pulang, jam_pulang_created_at, jam_pulang_by, ket_pulang,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu > @pulangNormal,"OK","CEPAT PULANG")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen SORE") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen SORE ditambahkan */
- /* END Insert as data sore */
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 13, "SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE") INTO @MESSAGE;
- RETURN 13; /* SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE */
- END IF;
- /* END: Prosess as new inserting data */
- ELSE
- /* Prosess as updating data */
- IF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal THEN
- /* Update as data breakout */
- IF @jamBreakoutTersimpan IS NULL OR @jamBreakoutTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakoutTersimpan > prm_waktu THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakoutTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakoutTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakout */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal THEN
- /* Update as data breakin */
- IF @jamBreakinTersimpan IS NULL OR @jamBreakinTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKIN") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakinTersimpan < prm_waktu THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKIN") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakinTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih cepat: Absen BREAKIN") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakinTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakin */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal THEN
- /* Update as data pagi */
- IF @jamMasukTersimpan IS NULL OR @jamMasukTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen PAGI") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamMasukTersimpan > prm_waktu THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen PAGI") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamMasukTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen PAGI") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @idJamMasukTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen PAGI") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen PAGI") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data pagi */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal THEN
- /* Update as data sore */
- IF @jamPulangTersimpan IS NULL OR @jamPulangTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 19, "Data diperbaharui/Tambah sebagai data baru: Absen SORE") INTO @MESSAGE;
- RETURN 19;
- ELSEIF @jamPulangTersimpan < prm_waktu THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 20, "Data diperbaharui/Ganti data lama: Absen SORE") INTO @MESSAGE;
- RETURN 20;
- ELSEIF @jamPulangTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 21, "Data SKIPPED: Data tersimpan lebih akhir/besar: Absen SORE") INTO @MESSAGE;
- RETURN 21;
- ELSEIF @jamPulangTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 22, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen SORE") INTO @MESSAGE;
- RETURN 22;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 23, "Data SKIPPED: Alasan tidak diketahui.: Absen SORE") INTO @MESSAGE;
- RETURN 23;
- END IF;
- /* END Update as data sore */
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 24, "SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE") INTO @MESSAGE;
- RETURN 24; /* SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE */
- END IF;
- /* END: Prosess as updating data */
- END CASE;
- END//
- DELIMITER ;
- -- Dumping structure for function e-presensi.synch3_f_shift_stayday_handler
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` FUNCTION `synch3_f_shift_stayday_handler`(`prm_checktime_id` INT, `prm_nrp` VARCHAR(20), `prm_tgl` DATE, `prm_waktu` TIME, `prm_checktype` VARCHAR(1), `prm_run_mode` VARCHAR(50), `prm_kode_jam` TINYINT(2), `prm_status_shift` VARCHAR(50)
- ) RETURNS tinyint(4)
- BEGIN
- SELECT COUNT(tj.id), tj.mulai_absen_masuk, tj.jam_masuk, tj.batas_absen_masuk, tj.mulai_absen_pulang, tj.jam_pulang, tj.batas_absen_pulang,
- tj.jam_breakin, tj.batas_absen_breakin, tj.jam_breakout, tj.batas_absen_breakout
- INTO @scheduleExistNormal, @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal,
- @breakinNormal, @batasBreakinNormal, @breakoutNormal, @batasBreakoutNormal
- FROM tjamkantor tj WHERE tj.hari = DAYOFWEEK(prm_tgl) AND tj.shift = prm_kode_jam LIMIT 1;
- IF @scheduleExistNormal < 1 THEN /* SCHEDULE tidak tersedia */
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 10, CONCAT("DAY:", DAYNAME(prm_tgl), " DATE:", prm_tgl, " => ","Jam Kantor shift stayday tidak tersedia!")) INTO @MESSAGE;
- /*RETURN 10;*/
- RETURN prm_kode_jam;
- END IF;
- SELECT COUNT(ta.id), ta.jam_masuk, ta.jam_pulang, ta.id_data_masuk, ta.id_data_pulang, ta.breakout, ta.breakin
- INTO @countPrensented, @jamMasukTersimpan, @jamPulangTersimpan, @idJamMasukTersimpan, @idJamPulangTersimpan, @jamBreakoutTersimpan, @jamBreakinTersimpan
- FROM tabsensi ta WHERE ta.nap = prm_nrp AND ta.tgl = prm_tgl LIMIT 1;
- CASE WHEN @countPrensented = 0 THEN /* RECORD tabsensi tgl tersebut belum tersedia */
- /* Prosess as new inserting data */
- IF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal AND prm_status_shift = 'HARI-1' THEN
- /* Insert as data pagi */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu < @masukNormal,"OK","TERLAMBAT")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen PAGI") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data pagi */
- ELSEIF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal AND prm_status_shift = 'HARI-1' THEN
- /* Insert as data breakout */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- /* nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk, */
- nap, grup, tgl, breakout,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data breakout */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal AND prm_status_shift = 'HARI-1' THEN
- /* Insert as data breakin */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, breakin,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen BREAKIN") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen breakin ditambahkan */
- /* END Insert as data breakin */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal AND prm_status_shift = 'HARI-1' THEN
- /* Insert as data sore */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_pulang, id_data_pulang, jam_pulang_created_at, jam_pulang_by, ket_pulang,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu > @pulangNormal,"OK","CEPAT PULANG")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen SORE") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen SORE ditambahkan */
- /* END Insert as data sore */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal AND prm_status_shift = 'HARI-2' THEN
- /* Insert as data pagi */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu < @masukNormal,"OK","TERLAMBAT")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen PAGI") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data pagi */
- ELSEIF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal AND prm_status_shift = 'HARI-2' THEN
- /* Insert as data breakout */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- /* nap, grup, tgl, jam_masuk, id_data_masuk, jam_masuk_created_at, jam_masuk_by, ket_masuk, */
- nap, grup, tgl, breakout,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 11, "Data ditambahkan: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 11; /* RECORD tabsensi record baru absen PAGI ditambahkan */
- /* END Insert as data breakout */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal AND prm_status_shift = 'HARI-2' THEN
- /* Insert as data breakin */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, breakin,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu,
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen BREAKIN") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen breakin ditambahkan */
- /* END Insert as data breakin */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal AND prm_status_shift = 'HARI-2' THEN
- /* Insert as data sore */
- SELECT ti.id_grup INTO @grup_id FROM tindentitas ti WHERE ti.nap = prm_nrp LIMIT 1;
- SELECT tg.grup INTO @grup FROM tgrup tg WHERE tg.id = @grup_id LIMIT 1;
- INSERT INTO tabsensi (
- nap, grup, tgl, jam_pulang, id_data_pulang, jam_pulang_created_at, jam_pulang_by, ket_pulang,
- ref_mulai_jam_masuk, ref_jam_masuk, ref_batas_absen_masuk, ref_jam_breakin, ref_batas_absen_breakin,
- ref_jam_breakout, ref_batas_absen_breakout, ref_mulai_absen_pulang, ref_jam_pulang, ref_batas_absen_pulang
- )
- VALUES (
- prm_nrp, @grup, prm_tgl, prm_waktu, prm_checktime_id, NOW(), "AUTOMATIC", (IF(prm_waktu > @pulangNormal,"OK","CEPAT PULANG")),
- @mulaiMasukNormal, @masukNormal, @batasMasukNormal, @breakinNormal, @batasBreakinNormal,
- @breakoutNormal, @batasBreakoutNormal, @mulaiPulangNormal, @pulangNormal, @batasPulangNormal
- );
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 12, "Data ditambahkan: Absen SORE") INTO @MESSAGE;
- RETURN 12; /* RECORD tabsensi record baru absen SORE ditambahkan */
- /* END Insert as data sore */
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 13, "SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE") INTO @MESSAGE;
- RETURN 13; /* SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE */
- END IF;
- /* END: Prosess as new inserting data */
- ELSE
- /* Prosess as updating data */
- IF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal AND prm_status_shift = 'HARI-1' THEN
- /* Update as data sore */
- IF @jamPulangTersimpan IS NULL OR @jamPulangTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 19, "Data diperbaharui/Tambah sebagai data baru: Absen SORE") INTO @MESSAGE;
- RETURN 19;
- ELSEIF @jamPulangTersimpan < prm_waktu THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 20, "Data diperbaharui/Ganti data lama: Absen SORE") INTO @MESSAGE;
- RETURN 20;
- ELSEIF @jamPulangTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 21, "Data SKIPPED: Data tersimpan lebih akhir/besar: Absen SORE") INTO @MESSAGE;
- RETURN 21;
- ELSEIF @jamPulangTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 22, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen SORE") INTO @MESSAGE;
- RETURN 22;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 23, "Data SKIPPED: Alasan tidak diketahui.: Absen SORE") INTO @MESSAGE;
- RETURN 23;
- END IF;
- /* END Update as data sore */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal AND prm_status_shift = 'HARI-1' THEN
- /* Update as data breakin */
- IF @jamBreakinTersimpan IS NULL OR @jamBreakinTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKIN") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakinTersimpan < prm_waktu THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKIN") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakinTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih cepat: Absen BREAKIN") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakinTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakin */
- ELSEIF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal AND prm_status_shift = 'HARI-1' THEN
- /* Update as data breakout */
- IF @jamBreakoutTersimpan IS NULL OR @jamBreakoutTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakoutTersimpan > prm_waktu THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakoutTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakoutTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakout */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal AND prm_status_shift = 'HARI-1' THEN
- /* Update as data pagi */
- IF @jamMasukTersimpan IS NULL OR @jamMasukTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen PAGI") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamMasukTersimpan > prm_waktu THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen PAGI") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamMasukTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen PAGI") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @idJamMasukTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen PAGI") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen PAGI") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data pagi */
- ELSEIF prm_waktu > @mulaiPulangNormal AND prm_waktu < @batasPulangNormal AND prm_status_shift = 'HARI-2' THEN
- /* Update as data sore */
- IF @jamPulangTersimpan IS NULL OR @jamPulangTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 19, "Data diperbaharui/Tambah sebagai data baru: Absen SORE") INTO @MESSAGE;
- RETURN 19;
- ELSEIF @jamPulangTersimpan < prm_waktu THEN
- SELECT synch3_f_update_jam_pulang(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @pulangNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 20, "Data diperbaharui/Ganti data lama: Absen SORE") INTO @MESSAGE;
- RETURN 20;
- ELSEIF @jamPulangTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 21, "Data SKIPPED: Data tersimpan lebih akhir/besar: Absen SORE") INTO @MESSAGE;
- RETURN 21;
- ELSEIF @jamPulangTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 22, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen SORE") INTO @MESSAGE;
- RETURN 22;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 23, "Data SKIPPED: Alasan tidak diketahui.: Absen SORE") INTO @MESSAGE;
- RETURN 23;
- END IF;
- /* END Update as data sore */
- ELSEIF prm_waktu > @breakinNormal AND prm_waktu < @batasBreakinNormal AND prm_status_shift = 'HARI-2' THEN
- /* Update as data breakin */
- IF @jamBreakinTersimpan IS NULL OR @jamBreakinTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKIN") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakinTersimpan < prm_waktu THEN
- UPDATE tabsensi
- SET breakin = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKIN") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakinTersimpan > prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih cepat: Absen BREAKIN") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakinTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKIN") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakin */
- ELSEIF prm_waktu > @breakoutNormal AND prm_waktu < @batasBreakoutNormal AND prm_status_shift = 'HARI-2' THEN
- /* Update as data breakout */
- IF @jamBreakoutTersimpan IS NULL OR @jamBreakoutTersimpan = '00:00:00' THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamBreakoutTersimpan > prm_waktu THEN
- UPDATE tabsensi
- SET breakout = prm_waktu WHERE nap = prm_nrp AND tgl = prm_tgl;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamBreakoutTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @jamBreakoutTersimpan = prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen BREAKOUT") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data breakout */
- ELSEIF prm_waktu > @mulaiMasukNormal AND prm_waktu < @batasMasukNormal AND prm_status_shift = 'HARI-2' THEN
- /* Update as data pagi */
- IF @jamMasukTersimpan IS NULL OR @jamMasukTersimpan = '00:00:00' THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 14, "Data diperbaharui/Tambah sebagai data baru: Absen PAGI") INTO @MESSAGE;
- RETURN 14;
- ELSEIF @jamMasukTersimpan > prm_waktu THEN
- SELECT synch3_f_update_jam_masuk(prm_checktime_id, prm_nrp, prm_tgl, prm_waktu, prm_checktype, @masukNormal, prm_run_mode) INTO @INFO;
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 15, "Data diperbaharui/Ganti data lama: Absen PAGI") INTO @MESSAGE;
- RETURN 15;
- ELSEIF @jamMasukTersimpan < prm_waktu THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 16, "Data SKIPPED: Data tersimpan lebih awal/kecil: Absen PAGI") INTO @MESSAGE;
- RETURN 16;
- ELSEIF @idJamMasukTersimpan = prm_checktime_id THEN
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 17, "Data SKIPPED: Data telah disimpan sebelumnya.: Absen PAGI") INTO @MESSAGE;
- RETURN 17;
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 18, "Data SKIPPED: Alasan tidak diketahui.: Absen PAGI") INTO @MESSAGE;
- RETURN 18;
- END IF;
- /* END Update as data pagi */
- ELSE
- SELECT synch3_f_update_tb_synch_status(prm_checktime_id, 24, "SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE") INTO @MESSAGE;
- RETURN 24; /* SKIPPED: Data absen tidak memenuhi batas absen PAGI dan SORE */
- END IF;
- /* END: Prosess as updating data */
- END CASE;
- END//
- DELIMITER ;
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` FUNCTION `tdaylyshiftschedule_f_filler`(`prm_nap` VARCHAR(10), `prm_tgl` DATE, `prm_shift` VARCHAR(3)
- ) RETURNS varchar(100) CHARSET utf8
- BEGIN
- SET @shift_kode = REPLACE(UPPER(prm_shift),' ','');
- SET @shift = 20;
- SET @hari = DAYOFWEEK(prm_tgl);
- SET @response = "UNKNOWN:::Error";
- CASE
- WHEN @shift_kode = "P" THEN SET @shift = 1;
- WHEN @shift_kode = "S" THEN SET @shift = 2;
- WHEN @shift_kode = "M" THEN SET @shift = 3;
- WHEN @shift_kode = "RK" THEN SET @shift = 4;
- WHEN @shift_kode = "D1" THEN SET @shift = 5;
- WHEN @shift_kode = "D2" THEN SET @shift = 6;
- WHEN @shift_kode = "D3" THEN SET @shift = 7;
- WHEN @shift_kode = "D4" THEN SET @shift = 8;
- WHEN @shift_kode = "D5" THEN SET @shift = 9;
- WHEN @shift_kode = "S1" THEN SET @shift = 10;
- WHEN @shift_kode = "S2" THEN SET @shift = 11;
- WHEN @shift_kode = "L" THEN SET @shift = 13;
- ELSE SET @shift = 20;
- END CASE;
- SELECT COUNT(ti.shift) INTO @isIdentitasExist FROM tindentitas ti WHERE ti.nap = prm_nap LIMIT 1;
- IF @isIdentitasExist = 1 THEN
- SELECT ti.shift INTO @isScheduledShift FROM tindentitas ti WHERE ti.nap = prm_nap LIMIT 1;
- ELSE
- SELECT 0 INTO @isScheduledShift;
- END IF;
- SELECT COUNT(td.id) INTO @recordExist FROM tdaylyshiftschedule td WHERE td.nap = prm_nap AND DATE(td.tgl) = DATE(prm_tgl) LIMIT 1;
- IF (@shift=13) THEN
- SELECT COUNT(tj.id), tj.mulai_absen_masuk, tj.jam_masuk, tj.batas_absen_masuk, tj.jam_breakin, tj.batas_absen_breakin,
- tj.jam_breakout, tj.batas_absen_breakout, tj.mulai_absen_pulang, tj.jam_pulang, tj.batas_absen_pulang, tj.stay_day, 1
- INTO @availableDataShift, @mulai_absen_masuk, @jam_masuk, @batas_absen_masuk, @jam_breakin, @batas_absen_breakin,
- @jam_breakout, @batas_absen_breakout, @mulai_absen_pulang, @jam_pulang, @batas_absen_pulang, @stay_day, @day_off
- FROM tjamkantor tj
- WHERE tj.shift = @shift AND tj.hari = @hari LIMIT 1;
- ELSEIF (@shift>=1 AND @shift<=11) THEN
- SELECT COUNT(tj.id), tj.mulai_absen_masuk, tj.jam_masuk, tj.batas_absen_masuk, tj.jam_breakin, tj.batas_absen_breakin,
- tj.jam_breakout, tj.batas_absen_breakout, tj.mulai_absen_pulang, tj.jam_pulang, tj.batas_absen_pulang, tj.stay_day, 0
- INTO @availableDataShift, @mulai_absen_masuk, @jam_masuk, @batas_absen_masuk, @jam_breakin, @batas_absen_breakin,
- @jam_breakout, @batas_absen_breakout, @mulai_absen_pulang, @jam_pulang, @batas_absen_pulang, @stay_day, @day_off
- FROM tjamkantor tj
- WHERE tj.shift = @shift AND tj.hari = @hari LIMIT 1;
- END IF;
- IF (@isIdentitasExist != 1) THEN
- SET @response = CONCAT("ERROR:",prm_nap,":FALSE:NAP Pegawai tidak diketahui!");
- ELSEIF (@isScheduledShift != 1) THEN
- SET @response = CONCAT("ERROR:",prm_nap,":FALSE:Pegawai tidak terdaftar shift!");
- ELSEIF (@shift=14) THEN
- SET @response = CONCAT("ERROR:",@shift_kode,":FALSE:Kode shift tidak dikenal!");
- ELSEIF (@availableDataShift != 1) THEN
- SET @response = CONCAT("ERROR:",@shift_kode,"[",prm_tgl,"]:FALSE:Jam kantor shift tidak tersedia!",@shift,@availableDataShift);
- ELSE
- CASE WHEN @recordExist = 0 THEN
- INSERT INTO `tdaylyshiftschedule`
- (`nap`, `tgl`, kode_shift,
- `mulai_absen_masuk`, `jam_masuk`, `batas_absen_masuk`,
- `jam_breakin`, `batas_absen_breakin`,
- `jam_breakout`, `batas_absen_breakout`,
- `mulai_absen_pulang`, `jam_pulang`, `batas_absen_pulang`,
- `day_off`, stay_day)
- VALUES (prm_nap, DATE(prm_tgl), @shift,
- @mulai_absen_masuk, @jam_masuk, @batas_absen_masuk,
- @jam_breakin, @batas_absen_breakin,
- @jam_breakout, @batas_absen_breakout,
- @mulai_absen_pulang, @jam_pulang, @batas_absen_pulang,
- @day_off, @stay_day);
- SET @response = CONCAT("INSERT:",@shift_kode,":TRUE:OK");
- ELSE
- UPDATE tdaylyshiftschedule th
- SET kode_shift = @shift,
- mulai_absen_masuk = @mulai_absen_masuk, jam_masuk = @jam_masuk, batas_absen_masuk = @batas_absen_masuk,
- jam_breakin = @jam_breakin, batas_absen_breakin = @batas_absen_breakin,
- jam_breakout = @jam_breakout, batas_absen_breakout = @batas_absen_breakout,
- mulai_absen_pulang = @mulai_absen_pulang, jam_pulang = @jam_pulang, batas_absen_pulang = @batas_absen_pulang,
- stay_day = @stay_day, day_off = @day_off
- WHERE nap = prm_nap AND DATE(tgl) = DATE(prm_tgl);
- SET @response = CONCAT("UPDATE:",@shift_kode,":TRUE:OK",@isScheduledShift);
- END CASE;
- END IF;
- RETURN @response;
- END//
- DELIMITER ;
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` PROCEDURE `synch3_p_push_manual_all_employee`(IN `prm_tanggal` DATE, IN `prm_bulanan` TINYINT(1))
- BEGIN
- SELECT synch3_f_insert_or_update(V.checktime_id, V.nrp, V.tanggal, V.waktu, V.checktype, "MANUAL-ALL-EMP") AS HASIL
- FROM (
- SELECT `cio`.`checktime_id`,
- `cio`.`NRP` AS `nrp`,
- CAST(`cio`.`checktime` as date) AS `tanggal`,
- CAST(`cio`.`checktime` as time) AS `waktu`,
- `cio`.`checktype`
- FROM `adms_retriever`.`checkinout` `cio`
- WHERE `cio`.NRP IN (
- SELECT ti.nap FROM tindentitas ti WHERE ti.status = 1
- )
- AND ((YEAR(cio.checktime)=YEAR(prm_tanggal) AND MONTH(cio.checktime)=MONTH(prm_tanggal) AND prm_bulanan)
- OR (DATE(cio.checktime) = DATE(prm_tanggal)))
- ORDER BY `cio`.`checktime_id`
- ) V;
- END//
- DELIMITER ;
- UPDATE `trulerekap` SET `value`= 0 WHERE `id`=2;
- TRUNCATE `tabsensi`;
- CALL `synch3_p_push_manual_all_employee`('2019-03-01', '1');
- CALL `synch3_p_push_manual_all_employee`('2019-04-01', '1');
- CALL `synch3_p_push_manual_all_employee`('2019-05-01', '1');
- /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27 MEI 2019 */
- /* [1] PENAMBAHAN SISTEM PENDETEKSI ZONA WAKTU RUSAK */
- /* [2] CONVERT ZONA WAKTU GMT+3 KE GMT+8 */
- /* [3] EVENT PEDETEKSI ZONWA WAKTU RUSAK DAN CONVERT ZONA WAKTU GMT+3 KE GMT+8 */
- DROP FUNCTION IF EXISTS `func_repair_time_zone_gmt3_to_gmt8`;
- DROP PROCEDURE IF EXISTS `proc_convert_time_zone_gmt3_to_gmt8`;
- DROP EVENT IF EXISTS `repair_and_convert_timezone_gmt3_to_gmt8`;
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` FUNCTION `func_repair_time_zone_gmt3_to_gmt8`() RETURNS varchar(50) CHARSET latin1
- MODIFIES SQL DATA
- BEGIN
- /*NB: procedure ini hanya bisa di terapkan oleh kantor yang pegawai jam kantor REGULER*/
- /* Function ini digunakan terlebig dahulu sebelum menggunakan procedure `proc_convert_time_zone_gmt3_to_gmt8`*/
- /*
- Mengecek tanggal brp saja yang memiliki absen di jam tidak wajar (jam 1,2,3,4,5)
- */
- SELECT DISTINCT DATE(checktime) INTO @tgl_target FROM adms_retriever.checkinout where HOUR(checktime) IN (1,2,3,4,5) AND serverid != "TIMEZONE-ERR" LIMIT 1;
- /*
- Menghitung Pegawai yang memiliki absen di jam tidak wajar (jam 1,2,3,4,5)
- */
- SELECT COUNT(NRP) INTO @total_emply FROM adms_retriever.checkinout WHERE HOUR(checktime) IN (1,2,3,4,5) AND DATE(checktime) = @tgl_target;
- /*
- Kondisi TRUE: dimana pegawainya ada diatas persyaratan fungsi
- */
- IF @total_emply > 4 THEN
- DELETE FROM tabsensi where tgl = @tgl_target;
- UPDATE adms_retriever.checkinout SET serverid = 'TIMEZONE-ERR' WHERE DATE(checktime) = @tgl_target;
- END IF;
- SELECT COUNT(DISTINCT DATE(checktime)) INTO @sisa_target FROM adms_retriever.checkinout where HOUR(checktime) IN (1,2,3,4,5) AND serverid != "TIMEZONE-ERR";
- RETURN CONCAT("Tersisa ", @sisa_target, " Data");
- END//
- DELIMITER ;
- -- Dumping structure for procedure e-presensi.proc_convert_time_zone_gmt3_to_gmt8
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_convert_time_zone_gmt3_to_gmt8`()
- BEGIN
- /* procedure ini digunakan setelah semau data di proses oleh function `func_repair_time_zone_gmt3_to_gmt8`*/
- SELECT ch.id, DATE(ch.checktime), HOUR(ch.checktime) INTO @ID, @tgl, @jam FROM adms_retriever.checkinout ch WHERE ch.serverid = 'TIMEZONE-ERR' LIMIT 1;
- IF @jam = 1 THEN SET @prm_jam_real = 6;
- ELSEIF @jam = 2 THEN SET @prm_jam_real = 7;
- ELSEIF @jam = 3 THEN SET @prm_jam_real = 8;
- ELSEIF @jam = 4 THEN SET @prm_jam_real = 9;
- ELSEIF @jam = 5 THEN SET @prm_jam_real = 10;
- ELSEIF @jam = 6 THEN SET @prm_jam_real = 11;
- ELSEIF @jam = 7 THEN SET @prm_jam_real = 12;
- ELSEIF @jam = 8 THEN SET @prm_jam_real = 13;
- ELSEIF @jam = 9 THEN SET @prm_jam_real = 14;
- ELSEIF @jam = 10 THEN SET @prm_jam_real = 15;
- ELSEIF @jam = 11 THEN SET @prm_jam_real = 16;
- ELSEIF @jam = 12 THEN SET @prm_jam_real = 17;
- ELSEIF @jam = 13 THEN SET @prm_jam_real = 18;
- ELSEIF @jam = 14 THEN SET @prm_jam_real = 19;
- ELSEIF @jam = 15 THEN SET @prm_jam_real = 20;
- ELSEIF @jam = 16 THEN SET @prm_jam_real = 21;
- ELSEIF @jam = 17 THEN SET @prm_jam_real = 22;
- END IF;
- UPDATE adms_retriever.checkinout
- SET adms_retriever.checkinout.checktime = DATE_ADD(adms_retriever.checkinout.checktime, INTERVAL (@prm_jam_real - HOUR(adms_retriever.checkinout.checktime)) HOUR),
- adms_retriever.checkinout.serverid = 'SER-ADMS-02'
- WHERE id = @ID;
- CALL `synch3_p_push_manual_all_employee`(@tgl, '0');
- END//
- DELIMITER ;
- DELIMITER //
- CREATE DEFINER=`root`@`localhost` EVENT `repair_and_convert_timezone_gmt3_to_gmt8` ON SCHEDULE EVERY 20 SECOND STARTS '2019-05-27 23:36:53' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
- SELECT `func_repair_time_zone_gmt3_to_gmt8`();
- CALL `proc_convert_time_zone_gmt3_to_gmt8`();
- END//
- DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement