KIB
KUWAIT INTERNATIONAL BANK • WFM PORTAL

Welcome back 👋

Enter your staff password to sign in

Incorrect password. Please try again.
?

Your Shift Today

Detected from your schedule

💼
Today's Shift
Loading...
KIB WFM Portal
Contact Center
?
Good morning,
Loading…
Today’s Shift 💼
Your working hours
Working
Break Balance
0 min used
60 min total
📢
Announcement
☕ Break in Progress 00:00
Break Booked
Quick Actions
📅 This Week
👥 On Break Now
Break System
Contact Center
--:--
--
🔔
?
Notifications
ℹ️
No notifications yet.
— min
Kuwait International Bank
KIB
Contact Center · Break System
KIB
📢
Announcement
Break In Progress
Break
00:00
elapsed
Break Balance
Shift: --
60
min remaining
0 of 60 minutes scheduled
0 min used60 min total
Now on Break
No one on break ✓
My Schedule Today
🕐
Today's Shift
📅
No breaks booked yet.
Full Team Status
Loading…
Book a Break
⏳ Select Time Slot
Available   1 booked   Full   Yours   Blocked
Loading...
0 of 2 on break now
All agents available
0
0
Total Agents
0
On Break
0
Online Today
0
Min Used Today
Incoming Requests
🔄
No pending requests
My Breaks (Request Swap)
No scheduled breaks
My Breaks Today
No breaks today
Settings
Daily Break Allowance
Minutes per agent per shift
Max Concurrent
Agents on break at same time
Max Single Break (min)
Maximum per booking
Team Announcement
Live Overview
Reports & Data
KIB
KIB
Kuwait International Bank · Schedule Portal

Welcome back 👋

Select your role to get started

👤
Agent
👥
Team Leader
🏢
Manager
⚙️
Admin
Please select your role and name
KB
Incorrect PIN. Please try again.
Schedule Portal
Contact Center
--:--
---
🔔
?
Notifications
KB
Today's Shift
📅 This Week
📋
My Schedule
View full calendar
📝
My Requests
Swaps & Leave
📆 Upcoming Days
📅 My Schedule
📝 Submit Request
March 2026 — My Schedule
📅
Full Schedule Grid
🔄 Swap
🌴 Leave
✅ Attendance
🔄 New Swap Request
Shows colleagues working the same shift as you
My Swap History
👥 Monitor
✅ Attendance
🔄 Swaps 0
🌴 Leaves
📊 Reports
📤 Upload
🗓️ Build
📜 Log
🔗 Sheets
Daily Operations
DAILY KPI
Extra break, meeting, permissions, and system issue forms
Today
0
Extra Break
0
Meetings
0
Permissions
0
System Issues
Daily KPI Forms
Extra Break
📋
Select a form type above to get started
📅 My KPI History
Last 5 days
Loading...
My Profile
KB
Today's Shift
Team
Break Usage Today
Loading…
Monthly Attendance
Loading…
Swap Request History
No swap history
Change PIN
Notifications
Schedule Published
When new schedule is ready
Swap Decision
Approval or rejection
Leave Decision
Leave request outcome
Coverage Alert
When team is understaffed
// ── Toggle announcement bar ──────────────────────────────────────── function toggleAnnBar(){ var bar=document.getElementById('u-ann-bar'); var showBtn=document.getElementById('u-ann-show'); if(!bar)return; var hidden=bar.style.display==='none'; bar.style.display=hidden?'':('none'); if(showBtn)showBtn.style.display=hidden?'none':'block'; } // ── Quick Swap from schedule grid ──────────────────────────────────── var _qs_date='',_qs_myShift=''; function openQuickSwap(date,shift){ _qs_date=date;_qs_myShift=shift; var ol=document.getElementById('quickSwapOverlay'); if(!ol)return; var myShiftEl=document.getElementById('qs-myShift'); var dateEl=document.getElementById('qs-date'); if(myShiftEl)myShiftEl.textContent=shift||'—'; if(dateEl)dateEl.textContent=date||''; // Populate swap-with dropdown filtered by date var sel=document.getElementById('qs-swWith'); if(sel){ sel.innerHTML=''; var idx=DATES.indexOf(date); AGENTS.filter(function(a){ if(!me||a.n===me.n)return false; if(!['agent','maker','checker'].includes(a.r))return false; if(idx>=0){var s=a.sch[idx]||'OFF';if(s==='OFF'||s==='Leave'||s==='Sick')return false;} return true; }).forEach(function(a){ var sched=idx>=0?(a.sch[idx]||'OFF'):'?'; sel.innerHTML+=''; }); } var reason=document.getElementById('qs-reason');if(reason)reason.value=''; ol.style.display='flex'; } function closeQuickSwap(){ var ol=document.getElementById('quickSwapOverlay');if(ol)ol.style.display='none'; } function submitQuickSwap(){ var wId=document.getElementById('qs-swWith').value; if(!wId){if(typeof sp_showToast==='function')sp_showToast('Select a colleague','err');return;} var ag=AGENTS.find(function(a){return a.id===wId;}); if(!ag)return; var reason=document.getElementById('qs-reason').value||'Schedule swap'; var idx=DATES.indexOf(_qs_date); var theirShift=idx>=0?(ag.sch[idx]||'OFF'):'?'; var entry={id:'SW'+(Date.now()%100000),from:me.n,to:ag.n,date:_qs_date,sA:_qs_myShift,sB:theirShift,reason:reason,status:'pending_peer',ts:new Date().toISOString()}; SWAPS.push(entry); fetch(API,{method:'POST',body:JSON.stringify({action:'saveSwapRequest',id:entry.id,from:entry.from,to:entry.to,date:entry.date,fromShift:entry.sA,toShift:entry.sB,reason:entry.reason,ts:entry.ts}),headers:{'Content-Type':'text/plain'}}) .then(function(r){return r.json();}).then(function(res){if(res&&res.ok)setSy(true);else setSy(false);}).catch(function(){setSy(false);}); if(typeof logA==='function')logA('SWAP_REQUEST',me.n+' ↔ '+ag.n+' on '+_qs_date,'inf'); closeQuickSwap(); if(typeof sp_showToast==='function')sp_showToast('Swap request sent to '+ag.n,'ok'); else if(typeof showToast==='function')showToast('Swap request sent to '+ag.n,'ok'); }