Dashboard
View and manage your planned visits
No planned visits
Try adjusting your date filters or create a visit plan from the Places section
{{ dateLabel }}
{{ plans.length }} {{ plans.length === 1 ? 'visit' : 'visits' }} ⚠️ Missed{{ plan.notes }}
Places
Manage all your places and locations
Categories
Organize places by type to make filtering faster
No categories yet
Add your first category to start grouping places like hospitals, institutes, or shops.
{{ category.name }}
Updated {{ formatDateTime(category.updated_at) }}
{{ category.description || 'No description provided.' }}
Visit Plans
All scheduled visit plans
No plans found
Create a visit plan from the Places section
{{ plan.place_name }}
📍 {{ plan.city }}
📅 {{ plan.planned_date }}
🕐 {{ plan.planned_time }}
By: {{ plan.user_name }}
{{ plan.notes }}
Visits
View all completed visits
No visits recorded
Mark visits as completed from the Dashboard or Plans section
{{ dateLabel }}
{{ visitsGroup.length }} {{ visitsGroup.length === 1 ? 'visit' : 'visits' }}{{ visit.place_name }}
📍 {{ visit.city }}
🕐 {{ new Date(visit.visited_at).toLocaleTimeString() }}
By: {{ visit.user_name }}
{{ visit.notes }}
Pending Offers
Visits where clients requested offers/quotations
No pending offers
Offers requested during visits will appear here
{{ offer.place_name }}
📍 {{ offer.city }}
📅 {{ formatDateTime(offer.visited_at) }}
By: {{ offer.user_name }}
{{ offer.notes }}
📨 Offers Requested
Track all visits where clients requested offers/quotations
No offers requested yet
Visits where offers were requested will appear here
| Place | City | Status | Contact | Visit Date | By | Offer Price | Notes |
|---|---|---|---|---|---|---|---|
|
{{ offer.place_name }}
|
{{ offer.city }} | ✅ Sent ⏳ Pending |
👤 {{ offer.contact_name }}
📞 {{ offer.contact_phone }}
📞
-
|
{{ formatDateTime(offer.visited_at) }} | {{ offer.user_name }} | ${{ formatAmount(offer.offer_price) }} - |
📝 {{ offer.offer_notes }}
-
|
{{ offer.place_name }}
📍 {{ offer.city }}
{{ selectedPlace.name }}
📍 {{ selectedPlace.city }}, {{ selectedPlace.address }}
Details
Contact
{{ selectedPlace.contact_name || 'N/A' }}
Phone
{{ selectedPlace.contact_phone || 'N/A' }}
Priority
{{ selectedPlace.priority }}Status
{{ selectedPlace.status }}Suggested Product
{{ formatProduct(selectedPlace.suggested_product) }}
Category
{{ selectedPlace.category_name || 'Uncategorized' }}
Last Visited
{{ formatDateTime(selectedPlace.last_visited_at) }}
Notes
{{ note.body }}
{{ note.user_name }} - {{ formatDateTime(note.created_at) }}
📨 Offers for this Place
Visit History
{{ formatDateTime(visit.visited_at) }}
By: {{ visit.user_name }}
{{ visit.notes }}
🕐 {{ user && user.role === 'admin' ? 'Attendance' : 'Check In / Check Out' }}
View all employee check-ins and check-outs
📋 This week's plan & tasks
{{ formatAttendanceWeekBatchRange(attendanceWeekBatch) }}No weekly plan for this week yet. When your manager assigns a week in Weekly Tasks, your day plans and tasks will appear here.
Today's plan ({{ getDayLabel(getAttendanceTodayDayKey()) }})
{{ getAttendanceTodayManagerNote() }}
No manager note for today.
Your open tasks (not completed)
-
{{ t.title }} {{ t.task_type }}
{{ t.description }}
Progress: {{ t.completed_count || 0 }} / {{ t.required_count }} Plan date: {{ formatAttendanceDateShort(t.visit_planned_date) }} Place: {{ t.place_name }}
✓ No open tasks for this week.
✅ Checked in · {{ formatAttendanceTime(currentAttendance.check_in_at) }}
⏸️ Not checked in
⏱ {{ formatAttendanceDuration(currentAttendance) }}
{{ gpsError }}
📝 Today's work report
{{ todayWorkReportHeading }}
Write at least 4 real words about what you did (example: record wise sale video). Dots, dashes, or “…” alone are not accepted.
{{ countDailyReportWords(todayReportBody) }}/4 words
- 📎 {{ f.name }}
Already saved
No extra off days remaining this month.
{{ employeeOffQuotaSummary.remaining }} extra off day(s) still available this month.
- Marked off: {{ d }}
📅 Duty hours by month
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
{{ cell.day }}
📝
✓ Off
{{ formatMinutesShort(cell.minutes) }}
{{ getDailyBalanceLabel(cell) }}
|
Monthly total (past workdays)
Weekly summary
Your recent check-ins
📅 Duty hours by month
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
{{ cell.day }}
📝
✓ Off
{{ formatMinutesShort(cell.minutes) }}
{{ getDailyBalanceLabel(cell) }}
|
Monthly total (past workdays)
Weekly summary
| Employee | Check-in | Check-out | Actual check-out | Hours on duty | Location (in) | Location (out) | Actions |
|---|---|---|---|---|---|---|---|
| {{ row.user_name }} | {{ formatAttendanceTime(row.check_in_at) }} | {{ row.check_out_at ? formatAttendanceTime(row.check_out_at) : '—' }} | {{ formatAttendanceTime(row.check_out_actual_at) }} Real device time — | ⏱ {{ formatAttendanceDuration(row) }} | 📍 {{ row.check_in_address || (row.check_in_lat + ', ' + row.check_in_lng) }} Manual entry — | 📍 {{ row.check_out_address || (row.check_out_lat + ', ' + row.check_out_lng) }} Manual entry — |
Add check-in / check-out
Edit check-in / check-out times
Check-ins on {{ attendanceDayDateLabel }} Your day · {{ attendanceDayDateLabel }}
Showing {{ attendanceDayItems.length }} check-ins.
No check-ins or check-outs recorded on this day.
✓ Off for all employees ✓ Off for {{ attendanceOffTargetLabel() }} ✓ This day is off
📝 Work report
{{ attendanceDayDateLabel }}
{{ rep.user_name }}
{{ rep.weekday }} · {{ rep.report_date }}
{{ rep.body || '—' }}
No work report for this day yet.
{{ countDailyReportWords(dayReportBody) }}/4 words · dots/dashes alone are not accepted
- 📎 {{ f.name }}
🎤 Voice note ready to upload
🕐 Check-in / check-out
{{ row.user_name || 'Employee' }} {{ user?.name || 'You' }}
Session #{{ row.id }}
⏱ {{ formatAttendanceDuration(row) }}
Check-out
{{ formatAttendanceTime(row.check_out_at) }} Still on duty / not checked out
Location: Open in Maps Location: Manual entry
Real check-out (device): {{ formatAttendanceTime(row.check_out_actual_at) }}
ڕاپۆرتی کارەکانی ڕۆژی چێک ئین
{{ checkoutReportDateLabel }}
تکایە ڕاپۆرتی ئەو کارانە بنووسە کە لەم ڕۆژەدا ئەنجامت داوە (بەپێی بەرواری چێک ئین) ئەگەر نا ناتوانیت چێک ئاوت بکەیت
{{ countDailyReportWords(todayReportBody) }}/٤ وشە · خاڵ و هێڵ و ... قبوڵ نین
- 📎 {{ f.name }}
🎤 دەنگی تۆمارکراو ئامادەیە
Users Management
Manage sales people and admin accounts
{{ u.name }}
{{ u.email }}
📋 Weekly Tasks Management
👥 Assign and track weekly tasks for employees
{{ adminSelectedBatchDetails.user_name }} - Week Details
⭐ Current Week ⚠ IncompleteWeek: {{ formatDate(adminSelectedBatchDetails.week_start_date) }} - {{ formatDate(adminSelectedBatchDetails.week_end_date) }}
{{ adminSelectedBatchDetails.completed_tasks }} / {{ adminSelectedBatchDetails.total_tasks }} tasks completed
Tasks ({{ adminSelectedBatchTasks.length }})
{{ task.description }}
📊 Weekly Tasks Overview
{{ batch.user_name }}
📅 Week: {{ formatDate(batch.week_start_date) }} - {{ formatDate(batch.week_end_date) }}
📝 Weekly Plan
No weekly plan added yet
Tasks ({{ batch.tasks.length }})
{{ task.description }}
No weekly tasks found
Create weekly tasks for employees to get started
📋 My Weekly Tasks
👋 View and complete your assigned tasks
Week: {{ formatDate(currentWeeklyBatch.week_start_date) }} - {{ formatDate(currentWeeklyBatch.week_end_date) }}
{{ currentWeeklyBatch.completed_tasks }} / {{ currentWeeklyBatch.total_tasks }} tasks completed
Your Weekly Plan
{{ item.note }}
{{ type }} Tasks ({{ tasks.length }})
{{ task.title }}
✨ My Task 👤 Added by {{ task.created_by_name }}{{ task.description }}
No tasks assigned yet
😊 Contact your admin to get tasks assigned
No weekly tasks found
No tasks have been assigned for this week
📊 Reports & Analytics
Comprehensive reports and statistics
Visits by Outcome
Daily Visits Trend
Product Interest Distribution
Top Visited Places
| Place | City | Visits | Positive | Negative |
|---|---|---|---|---|
| {{ place.name }} | {{ place.city }} | {{ place.visit_count }} | {{ place.positive_count }} | {{ place.negative_count }} |
No report data available
Select a date range to view reports