Vendor Executive
Intelligent Terminal
Vendor ID: ---
KYC PENDING

SOP: Customer Service Guidelines

Please follow these guidelines for every customer visit to ensure 5-star ratings.

  • Punctuality: Arrive on time. Inform the customer in advance if delayed.
  • ID & Uniform: Wear clean uniform and carry your company ID card.
  • Hygiene: Seek permission before entering. Clean the workspace after the job is done.
  • Professionalism: Be polite and respectful. Do not argue. Respect privacy.
  • Transparency: Clearly explain the problem and costs before starting. No hidden charges.
  • Tools: Carry your own complete set of professional tools.
  • Verification: Test the service in front of the customer and ask for feedback/ratings.
₹0
Net Revenue
₹0
₹0 ₹0
0.0
0 reviews
0
Open Leads
No recent activity found.

Profile Completion

75% CompleteComplete ?
  • Basic info added
  • Services selected
  • Add portfolio photos
  • +Add certifications
  • Service Name Standard Price
    Mon
    Tue
    Wed
    Thu?
    Fri
    Sat
    Sun
    ${printContent} `); printWindow.document.close(); } function downloadIdCard() { const btn = event.currentTarget; const originalText = btn.innerHTML; btn.innerHTML = ' Processing...'; if (!window.html2canvas) { const script = document.createElement('script'); script.src = 'https ://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js'; script.onload = () => captureIdCard(btn , originalText); document.head.appendChild(script); } else { captureIdCard(btn, originalText); } } function captureIdCard(btn, originalText) { const card = document.getElementById('idCardPrintableArea'); html2canvas(card, { scale : 3, backgroundColor: '#1e2337' , useCORS: true }).then(canvas => { const link = document.createElement('a'); link.download = 'HM_ID_Card_' + (HM.currentUser.vendorId || HM.currentUser.id) + '.png'; link.href = canvas.toDataURL('image/png'); link.click(); btn.innerHTML = originalText; }).catch(err => { console.error(err); btn.innerHTML = originalText; alert('Failed to generate image'); }); } function updateLiveStatus(status, silent = false) { if(!window.HM || !HM.currentUser) return; // 1. Update currentUser HM.currentUser.onlineStatus = status; // 2. Sync to HM.users[] array so Firebase saves the correct value if (HM.users) { const dbUser = HM.users.find(u => u.id === HM.currentUser.id); if (dbUser) dbUser.onlineStatus = status; } // 3. Sync to HM.vendors[] array so marketplace filters work if (HM.vendors) { const dbVendor = HM.vendors.find(v => v.id === HM.currentUser.vendorId || v.email === HM.currentUser.email); if (dbVendor) dbVendor.onlineStatus = status; } // 4. Update lastActive timestamp if(status === 'online' || status === 'busy') { HM.updateLastActive(HM.currentUser.id); } // 5. Persist to localStorage localStorage.setItem('hm_user', JSON.stringify(HM.currentUser)); // 5. Save to Firebase via HM.save() (skip if silent) if (!silent) { HM.save(true); } // 6. Update indicator UI const indicator = document.getElementById('liveStatusIndicator'); if (indicator) { if(status === 'online') indicator.style.background = '#00D9A5'; else if(status === 'busy') indicator.style.background = '#FF4757'; else indicator.style.background = '#ccc'; indicator.style.boxShadow = '0 0 8px ' + indicator.style.background; } // 7. Also sync topbar status select const topbarToggle = document.getElementById('topbarStatusToggle'); if (topbarToggle) { topbarToggle.value = status === 'offline' ? 'away' : status; } if(!silent && window.showToast) showToast('success', 'Status Updated', 'You are now marked as ' + status.toUpperCase()); } // Init Live Status document.addEventListener('DOMContentLoaded', () => { setTimeout(() => { if(HM.currentUser && HM.currentUser.onlineStatus) { const sel = document.getElementById('vendorLiveStatus'); if(sel) { sel.value = HM.currentUser.onlineStatus; updateLiveStatus(HM.currentUser.onlineStatus, true); } } }, 500); });