{{ sectionTitles[currentSection] }}

Shop Online
{{ clockTime }}
Today's Jobs assignment
{{ stats.total || 0 }}
Active workflow count
Revenue Today payments
₹{{ formatNum(summary.total_revenue) }}
Cash: ₹{{ formatNum(summary.cash) }} | UPI: ₹{{ formatNum(summary.upi) }}
Ready for Delivery check_circle
{{ stats.ready || 0 }}
Notify customers
Expenses Today receipt_long
₹{{ formatNum(summary.expenses) }}
Daily store overheads
task_alt Jobs Ready for Customer Pickup
verified
No pending pickups
All completed jobs have been delivered.
{{ job.job_no }}
{{ job.customer_name || 'Walk-in' }} • ₹{{ formatNum(job.total_amount) }}
check Ready
warning Stock & Material Alerts
inventory_2
Supplies Healthy
All papers, toners and materials are above min threshold.
{{ item.name }}
Min Level: {{ item.min_qty }} {{ item.unit }}
warning {{ item.current_qty }} {{ item.unit }}
person Customer Information
bolt Quick Add Presets
add_circle Custom Service / Custom Sized Item
receipt Current Invoice
shopping_basket
No items added to bill yet
{{ item.description }}
{{ item.quantity }} × ₹{{ item.unit_price }} ({{ item.width }}×{{ item.height }} ft)
₹{{ formatNum(item.total_price) }}
Subtotal ₹{{ formatNum(posSubtotal) }}
GST Amount ₹{{ formatNum(posGstAmount) }}
Discount -₹{{ formatNum(pos.discount) }}
TOTAL ₹{{ formatNum(posGrandTotal) }}
{{ col.icon }} {{ col.label }}
{{ filterJobsByStatus(col.id).length }}
No jobs in this stage
{{ job.job_no }} online
{{ job.customer_name || 'Walk-in' }}
{{ (job.items || []).map(i => i.service_name || i.description).join(', ').slice(0, 45) || 'Printing Service' }}
₹{{ formatNum(job.total_amount) }} {{ job.due_date ? formatDate(job.due_date) : 'No due date' }} warning
Job No Customer Items Summary Total (₹) Balance Due Status Due Date Actions
{{ job.job_no }} online {{ job.customer_name || 'Walk-in' }}
{{ job.customer_phone || '' }}
{{ (job.items || []).map(i => i.service_name || i.description).join(', ').slice(0, 45) || 'Service' }} ₹{{ formatNum(job.total_amount) }} ₹{{ formatNum(job.balance_due) }} {{ job.status }} {{ job.due_date ? formatDate(job.due_date) : '—' }} warning
shopping_cart Online Customer Order Stream
inbox
No Pending Online Orders
Customer orders placed from the customer app will show up here in real-time.
Order No Customer Details Order Date Ordered Items Customer Uploaded Files Amount Status Stage Actions
{{ order.order_no }} {{ order.customer_name || 'Customer' }}
call {{ order.customer_phone || 'No phone' }}
{{ formatDate(order.created_at) }}
{{ it.service_name || it.description }} × {{ it.quantity }}
Standard Print
No files ₹{{ formatNum(order.total) }} {{ order.status }}
inventory_2 Store Inventory & Paper Stock
warning Low Stock Threshold Alert: {{ lowStockItems.map(i => `${i.name} (${i.current_qty} ${i.unit})`).join(', ') }}
Item Name Category Current Quantity Minimum Alert Level Cost Price Storage / Notes Action
{{ item.name }} {{ item.category }} {{ item.current_qty }} {{ item.unit }} warning {{ item.min_qty }} {{ item.unit }} ₹{{ formatNum(item.cost_price) }} {{ item.notes || '—' }}
payments Daily Expenses & Overheads
Today's Recorded Expenses receipt_long
₹{{ formatNum(todayExpenseTotal) }}
{{ expensesList.length }} Entries recorded today
Time Category Description / Purpose Recorded By Amount (₹) Action
{{ formatTime(exp.created_at) }} {{ exp.category }} {{ exp.description || '—' }} {{ exp.paid_by_name || 'Staff' }} ₹{{ formatNum(exp.amount) }}
precision_manufacturing Printing & Xerox Machine Fleet

{{ m.name }}

{{ m.model || '' }} ({{ m.type }})
{{ m.service_due ? 'warning' : 'check_circle' }} {{ m.service_due ? 'Service Due' : 'Operational' }}
Current Meter Counter
{{ (m.current_meter || 0).toLocaleString('en-IN') }}
Last check: {{ formatDate(m.last_reading.created_at) }} • Count: {{ m.last_reading.reading }}
group Customer Directory & Khata Balances
search
Customer Name Mobile Phone Total Orders Khata Store Credit Actions
{{ c.name }} {{ c.phone || '—' }} {{ c.total_orders || 0 }} ₹{{ formatNum(c.credit_balance) }}
badge Shop Employee & Staff Roster
Staff Name Username Phone Assigned Role Salary (₹) Joining Date Status Action
{{ emp.name }} {{ emp.username }} {{ emp.phone || '—' }} {{ emp.role_type || 'counter' }} ₹{{ formatNum(emp.salary) }} {{ formatDate(emp.join_date) }} {{ emp.is_active ? 'Active' : 'Inactive' }}
to
Period Gross Revenue
₹{{ formatNum(reportSalesTotal) }}
Total Completed Jobs
{{ reportOrdersCount }}
Daily Sales Breakdown
Period DateTotal JobsRevenue (₹)
{{ formatDate(row.period) }} {{ row.orders }} ₹{{ formatNum(row.revenue) }}
Gross Revenue
₹{{ formatNum(reportData?.revenue) }}
Store Expenses
₹{{ formatNum(reportData?.expenses) }}
Net Profit / Loss
₹{{ formatNum(reportData?.profit) }}
GST Liability (Sales vs Purchases)
Output GST (Billed)
₹{{ formatNum(reportData?.output_gst) }}
Net Tax Payable
₹{{ formatNum(reportData?.net_gst || reportData?.output_gst) }}
Customer Pending Dues
Customer NamePhonePending Amount (₹)
{{ due.name }} {{ due.phone || '—' }} ₹{{ formatNum(due.balance_due) }}
{{ toast.type === 'error' ? 'error' : 'check_circle' }} {{ toast.message }}