{{ t.message }}
P

PARAM ERP Software

Enterprise Operations & Resource Management

{{ currentTab === 'home' ? 'Home' : (currentTab === 'purchases' ? 'Purchase Records & Vendor Bills' : (currentTab === 'inventory' ? 'Inventory Management' : (currentTab === 'warranties' ? 'Installations and Warranty' : (currentTab === 'settings' ? 'System Setting' : (currentTab === 'quotations' ? 'Quotations' : currentTab.replace('_', ' ')))))) }}

{{ (currentUser?.name || 'U').charAt(0) }}
ParamERP

Operational Modules

Tap or click any module to open
{{ t.icon }}
{{ t.badge }}

{{ t.title }}

{{ t.subtitle }}

Open {{ t.title }} โ†’
๐Ÿ›’ Gross Purchase Value {{ purchasesPeriod.toUpperCase() }}
โ‚น{{ Number(purchasesStats.total_grand || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}

Total billing amount across filtered period

๐Ÿ’ณ Total Paid to Suppliers
โ‚น{{ Number(purchasesStats.paid_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}

Total payments settled via Cheque, RTGS & Cash

โณ Balance Due to Suppliers Payable
โ‚น{{ Number(purchasesStats.pending_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}

Pending payments to be cleared to vendors

๐Ÿ“‘ Total Vendor Bills ITC: โ‚น{{ Number(purchasesStats.total_tax || 0).toLocaleString('en-IN') }}
{{ purchasesStats.total_bills }} Bills
Subtotal: โ‚น{{ Number(purchasesStats.total_subtotal || 0).toLocaleString('en-IN') }}
to
Bill # & Date Vendor / Supplier Items / Description Taxable Subtotal GST Amount Grand Total Paid / Balance Status Actions
No purchase records found matching filter criteria.
{{ p.bill_number }}
{{ p.purchase_date }}
{{ p.vendor_name }}
GSTIN: {{ p.vendor_gstin }}
๐Ÿ“ž +91 {{ p.supplier_phone }}
{{ p.notes }}
{{ p.items_data.length }} Item{{ p.items_data.length > 1 ? 's' : '' }}: {{ p.items_data.map(i => (i.product_name || i.name || i.description) + (i.quantity ? ' (x' + i.quantity + ')' : '')).slice(0, 2).join(', ') }}{{ p.items_data.length > 2 ? '...' : '' }}
{{ p.category || 'Standard Goods' }}
โ‚น{{ Number(p.subtotal).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }} + โ‚น{{ Number(p.tax_amount).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }} โ‚น{{ Number(p.grand_total).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
Paid: โ‚น{{ Number(p.paid_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
Due: โ‚น{{ Number(p.balance_due || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
Settled
{{ p.payment_status }}
Voucher # & Date Supplier / Vendor Payment Mode & Ref Allocated Bill # Payment Amount (โ‚น) Remarks / Bank Actions
No supplier payment entries recorded yet.
{{ pay.payment_number }}
{{ pay.payment_date }}
{{ pay.supplier_name }}
GSTIN: {{ pay.supplier_gstin }}
{{ pay.payment_mode }} #{{ pay.reference_number }} {{ pay.bill_number }} Lump-Sum Auto Allocated โ‚น{{ Number(pay.amount).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }} {{ pay.notes || '-' }}
๐Ÿ“ฆ Delivered Orders DELIVERED ONLY
{{ deliverySummary.delivered_orders_count || deliveryReportList.length }}

Confirmed & successfully handed over

Total Delivered Value
โ‚น{{ Number(deliverySummary.total_delivered_value || 0).toLocaleString('en-IN') }}

Gross delivered merchandise value

Payments Collected
โ‚น{{ Number(deliverySummary.total_collected_value || 0).toLocaleString('en-IN') }}

Total token & milestone receipts

Outstanding Balance Due
โ‚น{{ Number(deliverySummary.total_balance_due || 0).toLocaleString('en-IN') }}

Pending dealer/customer settlement

Period:
to
Selected {{ selectedDeliveryOrders.length }} of {{ deliveryReportList.length }} delivered orders
Order # / Date Customer / Dealer Delivered Products Order Value Paid Balance Transporter & LR Actions
No delivered orders found matching filter.
{{ del.order_number }}
Delivered: {{ del.delivery_date || del.expected_delivery_date || del.order_date }}
{{ del.customer_name }}
+91 {{ del.primary_phone }}
{{ del.shipping_city || del.city }}, {{ del.shipping_state || del.state }}
{{ it.product_name || it.name }} ร— {{ it.quantity }} {{ it.unit || '' }}
Delivered Items
โ‚น{{ Number(del.grand_total).toLocaleString('en-IN') }} โ‚น{{ Number(del.advance_paid).toLocaleString('en-IN') }} โ‚น{{ Number(del.balance_due).toLocaleString('en-IN') }}
{{ del.transporter_name || 'Direct Delivery' }}
LR: {{ del.lr_tracking_number }}
Today's Follow-ups Due Filter โ†ต
{{ leadsStats.today_follow_ups || leadsStats.todays_followups || 0 }}

Pending callback or meeting scheduled today

Open Leads (In Progress) Filter โ†ต
{{ leadsStats.open_leads || 0 }}

Active leads not yet converted into orders

Confirmed Orders Filter โ†ต
{{ leadsStats.confirmed_leads || leadsStats.confirmed_orders || 0 }}

Successfully closed & converted to orders

Total Pipeline Leads Filter โ†ต
{{ leadsStats.total_leads || 0 }}

All sales opportunities in database

โฐ Showing: Today's Follow-ups Due ({{ leadsList.length }} record(s) found)
๐Ÿ—“๏ธ Month:
๐Ÿ“… Created Date: to
โฐ Next Follow-up: to
Lead # Created Date Customer Contact Full Customer Address Status Inquired Products Next Follow-Up Actions
No leads found matching current filter & date criteria.
{{ l.lead_number }} {{ l.created_at ? l.created_at.split(' ')[0] : 'N/A' }}
{{ l.customer_name }}
+91 {{ l.primary_phone }}
{{ l.email }}
{{ [l.address_line, l.city, l.state, l.pincode].filter(Boolean).join(', ') || 'Address not recorded' }}
{{ l.status === 'WON' ? 'CONFIRMED' : (l.status === 'LOST' ? 'CANCELLED' : l.status.replace(/_/g, ' ')) }}
{{ p.name }}
{{ l.next_follow_up_date || 'None set' }}
{{ l.latest_remark || 'No logs yet' }}
Quotation In Review
{{ quotationsStats.in_review_count || 0 }}

โ‚น{{ Number(quotationsStats.in_review_amount || 0).toLocaleString('en-IN') }} active proposals

Order Confirmed
{{ quotationsStats.confirmed_count || 0 }}

โ‚น{{ Number(quotationsStats.confirmed_amount || 0).toLocaleString('en-IN') }} successfully won

Cancelled / Rejected
{{ quotationsStats.cancelled_count || 0 }}

โ‚น{{ Number(quotationsStats.cancelled_amount || 0).toLocaleString('en-IN') }} rejected quotes

Total Quotations Issued
{{ quotationsStats.total_count || 0 }}

โ‚น{{ Number(quotationsStats.total_amount || 0).toLocaleString('en-IN') }} commercial value

๐Ÿ—“๏ธ Month:
Quote # Quotation Created Date Date & Validity Customer & Address Status Inquired Items Discount & Tax Payable Amount Actions
No commercial quotations found.
{{ q.quotation_number }}
Lead: {{ q.lead_number }}
๐Ÿ“ฆ {{ q.order_number }} ({{ q.order_status || 'CONFIRMED' }})
{{ q.created_at ? q.created_at.split(' ')[0] : (q.quotation_date || '-') }}
{{ q.quotation_date }}
Until: {{ q.valid_until }}
{{ q.customer_name }}
+91 {{ q.primary_phone }}
๐Ÿ“ {{ q.customer_address }}
{{ q.customer_state }}
{{ q.status === 'WON' ? 'ORDER CONFIRMED' : (q.status === 'QUOTATION_IN_REVIEW' ? 'IN REVIEW' : q.status.replace(/_/g, ' ')) }}
โ€ข {{ it.product_name || it.name || 'Item' }} ({{ it.capacity }}) ร— {{ it.quantity || 1 }}
Sub: โ‚น{{ Number(q.subtotal || 0).toLocaleString('en-IN') }}
- โ‚น{{ Number(q.discount_amount).toLocaleString('en-IN') }} ({{ q.discount_reason || 'Offer' }})
Tax: + โ‚น{{ Number(q.tax_amount || 0).toLocaleString('en-IN') }}
โ‚น{{ Number(q.grand_total || 0).toLocaleString('en-IN') }}

๐Ÿ“œ Default Quotation Terms & Conditions

Configure standard payment terms, delivery schedules, warranty notes, and statutory compliance clauses automatically embedded onto all newly generated quotations.

Confirmed Orders
{{ ordersStats.confirmed_count || 0 }}
โ‚น{{ Number(ordersStats.confirmed_amount || 0).toLocaleString('en-IN') }}
Processing / In Transit
{{ ordersStats.in_transit_count || 0 }}
โ‚น{{ Number(ordersStats.in_transit_amount || 0).toLocaleString('en-IN') }}
Delivered & Closed
{{ ordersStats.delivered_count || 0 }}
โ‚น{{ Number(ordersStats.delivered_amount || 0).toLocaleString('en-IN') }}
Total Orders Booked
{{ ordersStats.total_orders || 0 }}
โ‚น{{ Number(ordersStats.total_grand_total || 0).toLocaleString('en-IN') }}
Balance Due Receivable
โ‚น{{ Number(ordersStats.total_balance_due || 0).toLocaleString('en-IN') }}
Pending payments
๐Ÿ—“๏ธ Month:
Order # Order Converted Date Customer & Delivery Site Status Grand Total Advance Paid Balance Due Actions
No orders found matching filter.
{{ o.order_number }}
Deliv: {{ o.expected_delivery_date }}
{{ o.order_converted_date || (o.created_at || o.order_date || '').split(' ')[0] }}
{{ o.customer_name }}
+91 {{ o.primary_phone }}
๐Ÿ“ {{ o.shipping_address }}
{{ o.status }} โ‚น{{ Number(o.grand_total).toLocaleString('en-IN') }} โ‚น{{ Number(o.advance_paid).toLocaleString('en-IN') }} โ‚น{{ Number(o.balance_due).toLocaleString('en-IN') }}
Total Invoices (Filtered)
{{ invoicesStats.total_invoices_count || 0 }}

โ‚น{{ Number(invoicesStats.total_invoices_amount || 0).toLocaleString('en-IN') }} gross billed

Active Tax Invoices
{{ invoicesStats.active_invoices_count || 0 }}

โ‚น{{ Number(invoicesStats.active_invoices_amount || 0).toLocaleString('en-IN') }} valid turnover

Cancelled Invoices
{{ invoicesStats.cancelled_invoices_count || 0 }}

โ‚น{{ Number(invoicesStats.cancelled_invoices_amount || 0).toLocaleString('en-IN') }} voided amount

Outstanding Balance Due
โ‚น{{ Number(invoicesStats.total_balance_due || 0).toLocaleString('en-IN') }}

Receivables awaiting settlement

๐Ÿ—“๏ธ Month:
Custom Period: to
Invoice # Date Customer & Address Status Tax Type Grand Total Balance Payable Actions
No invoices generated yet matching criteria.
{{ inv.invoice_number }}
PO: {{ inv.po_number }}
DEALER DIRECT
{{ inv.invoice_date }}
{{ inv.customer_name }}
๐Ÿ“ {{ inv.customer_address }}
{{ inv.customer_state }}
{{ inv.status || 'ACTIVE' }}
Reason: {{ inv.cancellation_reason }}
IGST (Inter-State) CGST + SGST (Intra-State) โ‚น{{ Number(inv.grand_total).toLocaleString('en-IN') }} โ‚น{{ Number(inv.balance_payable).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
โœ“ Fully Paid
Paid: โ‚น{{ Number(inv.total_paid || inv.advance_adjusted || 0).toLocaleString('en-IN') }}
Total Collections
โ‚น{{ Number(paymentsStats.total_amount || 0).toLocaleString('en-IN') }}

Sum of all audited payment receipts

Pending Payments Receivable
โ‚น{{ Number(paymentsStats.pending_receivable || 0).toLocaleString('en-IN') }}

Total outstanding order balances due

Advance Booking Tokens
โ‚น{{ Number(paymentsStats.advance_amount || 0).toLocaleString('en-IN') }}

Upfront order confirmations

Post-Installation Milestone
โ‚น{{ Number(paymentsStats.post_installation_amount || 0).toLocaleString('en-IN') }}

Field commissioning sign-off receipts

Receipts Logged
{{ paymentsStats.total_count || 0 }}

Audited transactions across orders

๐Ÿ—“๏ธ Month:
Custom Period: to
Receipt # Date Order / Linked Invoice Customer Stage / Type Mode & Ref / UTR Audit Signatory Amount (โ‚น) Actions
No payment receipts found matching filter.
{{ r.receipt_number }} {{ r.payment_date }}
Inv: {{ r.invoice_number }}
Inv: {{ r.invoice_number }}
Unassigned (Pre-Payment)
{{ r.customer_name }}
+91 {{ r.primary_phone }}
{{ r.receipt_type === 'PRE_PAYMENT' ? 'PRE PAYMENT' : (r.receipt_type === 'BALANCE' || r.receipt_type === 'INVOICE_PAYMENT' || r.receipt_type === 'POST_INSTALLATION' ? 'FINAL BALANCE' : (r.receipt_type || 'ADVANCE')) }}
{{ (r.payment_mode || 'UPI').replace('_', ' ') }}
{{ r.transaction_ref || 'N/A' }}
{{ r.collected_by_name || 'System' }}
{{ r.collector_role || 'STAFF' }}
โ‚น{{ Number(r.amount).toLocaleString('en-IN') }}
Period:
From: To:
โšก Active โณ
{{ warrantyStats.active_count || 0 }}

Invoiced orders pending delivery & serial registration

๐Ÿšš Delivered โœ“
{{ warrantyStats.delivered_count || 0 }}

Delivered orders with completed site installation

๐Ÿ›ก๏ธ In Warranty ๐ŸŸข
{{ warrantyStats.in_warranty_count || 0 }}

Units covered under active manufacturer warranty

โš ๏ธ Out of Warranty ๐Ÿ”ด
{{ warrantyStats.out_of_warranty_count || 0 }}

Expired units eligible for AMC / paid servicing

๐Ÿ” Instant Warranty Verification

Verify warranty status instantly based on serial number, customer name, phone number, or invoice number.

{{ res.product_name }}
SN: {{ res.serial_number }}
๐Ÿ‘ค {{ res.customer_name }} โ€ข ๐Ÿ“ž +91 {{ res.primary_phone }}
Inv: {{ res.invoice_number }} โ€ข End: {{ res.warranty_end_date }}
{{ res.warranty_status === 'VALID' || res.status === 'ACTIVE' ? 'VALID' : 'INVALID' }}
{{ Number(res.days_remaining) > 0 ? res.days_remaining + ' days left' : 'Expired' }}

โšก Invoiced Orders Pending Delivery & Warranty Update ๐Ÿšš Delivered & Installed Orders ๐Ÿ›ก๏ธ Active Valid Warranties โš ๏ธ Expired & Void Warranties

{{ warrantiesList.length }} entries
Invoice # Invoice Date Customer & Address Products to Install Status Action
No active invoices pending delivery. All deliveries are up to date!
{{ w.invoice_number }}
Ord: {{ w.order_number }}
{{ w.invoice_date }}
{{ w.customer_name }}
+91 {{ w.primary_phone }}
๐Ÿ“ {{ w.address_line }}, {{ w.customer_city }}
{{ w.product_name }}
โš ๏ธ Serials Pending
Pending Delivery
Invoice # Order # Customer Installed Products Serial Number(s) Install Date Warranty End Status Action
No delivered installations found.
{{ w.invoice_number }} {{ w.order_number || 'N/A' }}
{{ w.customer_name }}
+91 {{ w.primary_phone }}
{{ w.product_name }} {{ w.serial_numbers || 'Registered' }} {{ w.installation_date || 'N/A' }} {{ w.warranty_end_date || 'N/A' }} DELIVERED
Serial Number Product Name Customer Install Date Warranty End Days Left Warranty Status Action
No warranty records found for this tab and period.
{{ w.serial_number }} {{ w.product_name }}
{{ w.customer_name }}
+91 {{ w.primary_phone }}
{{ w.installation_date }} {{ w.warranty_end_date }} {{ Number(w.days_remaining) > 0 ? w.days_remaining + 'd' : 'Expired' }} {{ w.warranty_status || w.status }}
Total Products
{{ productsStats.total || productsList.length }}

Master catalog items & equipment

Active Products
{{ productsStats.active || activeProducts.length }}

Available for live lead quotes & order billing

Inactive Products
{{ productsStats.inactive || inactiveProducts.length }}

Discontinued items hidden from quotation select

Product Name SKU / Code HSN & GST Unit Selling Price Purchase Price Live Stock Warranty Status Actions
No {{ productTab === 'ACTIVE' ? 'active' : 'inactive' }} products found in catalog.
{{ p.name }}
{{ p.description }}
{{ v.capacity }} โ‚น{{ Number(v.price).toLocaleString('en-IN') }}
Reason: {{ p.deactivation_reason }}
{{ p.sku || '-' }}
{{ p.hsn_code }}
{{ Number(p.gst_rate) === 0 ? '0% Exempt' : Number(p.gst_rate) + '%' }} 18%
{{ p.unit }} โ‚น{{ Number(p.price).toLocaleString('en-IN') }} โ‚น{{ Number(p.purchase_price || 0).toLocaleString('en-IN') }} {{ Number(p.stock_quantity || 0) <= 0 ? '0 (Out of Stock)' : (Number(p.stock_quantity || 0) <= Number(p.low_stock_threshold || 5) ? p.stock_quantity + ' (Low Stock)' : p.stock_quantity + ' ' + (p.unit || 'Units')) }}
{{ p.warranty_months }} Mo
{{ p.warranty_effective_from }}
{{ Number(p.is_active) === 1 ? 'ACTIVE' : 'DISCONTINUED' }}
Individual Customers (Retail)
{{ customersStats.individual_count || 0 }}

Retail clients without registered GSTIN

Registered Dealers
{{ customersStats.dealers_count || 0 }}

Commercial partners with verified GSTIN

Suppliers & Vendors
{{ customersStats.suppliers_count || 0 }}

Vendor profiles for purchase entries

Total Accounts
{{ customersStats.total_count || customersStats.total_customers || 0 }}

Synchronized phone-keyed master

Party / Trade Name Primary Phone Full Address GSTIN & Type Account Status Leads Orders Warranties Actions
No customer, dealer, or supplier accounts found.
{{ c.is_supplier == 1 ? '๐Ÿšš' : (c.is_dealer == 1 ? '๐Ÿฌ' : '๐Ÿ‘ค') }} {{ c.name }} Supplier
Firm: {{ c.trade_name }}
{{ c.email || 'No email' }}
+91 {{ c.primary_phone }} {{ [c.address_line, c.city, c.state, c.pincode].filter(Boolean).join(', ') || 'No address logged' }} {{ c.gstin }} Unregistered {{ c.supplier_status || 'ACTIVE' }} {{ c.dealer_status || 'ACTIVE' }} RETAIL {{ c.leads_count }} {{ c.orders_count }} {{ c.warranties_count }}
๐Ÿ“ฆ Catalog SKUs
{{ inventoryStats.total_products || inventoryStats.total_skus || 0 }}

Tracked inventory models

๐ŸŸข In Stock Items
{{ inventoryStats.in_stock || inventoryStats.in_stock_skus || 0 }}

Adequate inventory level

โš ๏ธ Low Stock Alert
{{ inventoryStats.low_stock || inventoryStats.low_stock_skus || 0 }}

Near out of stock threshold

๐Ÿšซ Out of Stock Invoicing Blocked
{{ inventoryStats.out_of_stock || inventoryStats.out_of_stock_skus || 0 }}

Cannot issue invoice if zero stock

๐Ÿ’ฐ Stock Valuation
โ‚น{{ Number(inventoryStats.total_valuation || 0).toLocaleString('en-IN', {minimumFractionDigits: 0, maximumFractionDigits: 0}) }}

Based on purchase prices

Status Filter:
Product Catalog Item SKU / Code Unit Opening Stock Live Available Stock Selling Price Stock Valuation Invoicing Gate Actions
No products found matching inventory filter.
{{ p.name }}
HSN: {{ p.hsn_code }} | {{ p.gst_rate }}% GST
{{ p.sku || '-' }} {{ p.unit || 'PCS' }} {{ p.opening_stock || 0 }} {{ p.stock_quantity }} {{ p.unit || 'Units' }}
Threshold: โ‰ค {{ p.low_stock_threshold }}
โ‚น{{ Number(p.price).toLocaleString('en-IN') }} โ‚น{{ Number(p.stock_valuation || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }} โœ“ Allowed โœ• Blocked (0 Stock)
Date & Time Product Name Movement Type Quantity Stock Transition Document Ref Logged By & Remarks
No stock movement logs recorded yet.
{{ log.created_at }} {{ log.product_name }}
{{ log.product_sku }}
{{ log.movement_type.replace('_', ' ') }} {{ Number(log.quantity) > 0 ? '+' + log.quantity : log.quantity }} {{ log.stock_before ?? log.previous_stock }} โ†’ {{ log.stock_after ?? log.new_stock }} {{ log.reference_type }}: {{ log.reference_number || ('#' + log.reference_id) }} -
{{ log.created_by_name || log.user_name || 'System' }}
{{ log.notes || log.remarks || '-' }}

๐Ÿ“‹ System Activity Logs & Enterprise Audit Trail

{{ activityLogsList.length }} Records

Real-time audit ledger tracking all events, modifications, financial transactions, and user logins.

When (Timestamp) Who (Actor & Role) Action Entity / Reference What Was Changed / Logged
๐Ÿ“‹
No activity logs recorded matching criteria.

All system modifications, leads, orders, receipts, invoice generation, cancellations, and settings edits will be tracked here in real-time.

{{ formatDateTime(log.created_at) }}
{{ timeAgo(log.created_at) }}
{{ log.user_name }}
{{ log.user_role || 'SYSTEM' }}
{{ log.action_type }} {{ log.entity_ref || (log.entity_type + ' #' + log.entity_id) }}
{{ log.entity_type }}
{{ log.description }}
Origin IP: {{ log.ip_address }}

โš™๏ธ System Settings & Administration

ADMIN PRIVILEGES ONLY

Configure company branding, logo & visual identity, bank details, statutory GST classifications, and comprehensive user role management & tile permissions.

๐Ÿ–ผ๏ธ Company Logo & Brand Identity

Enlarged and crisp on PDF invoices, quotations, and app navbar.

A4 Document Print Preview
Logo {{ companySettingsForm.name || 'Company Name' }}

โœ๏ธ Authorized Signatory Signature Image

Used as official stamp/signatory on Invoices, Receipts & Quotations.

Official Signatory Stamp Preview
Signature No signature uploaded yet

Company Identity & Statutory Profile

Default Invoice Terms & Conditions

Printed at the bottom of all GST Tax Invoices.

Default Quotation Terms & Conditions

Pre-populated onto all newly created quotations.

๐Ÿฆ Official Bank Settlement Accounts

Bank details and UPI QR identifiers printed on official receipts, proformas, and tax invoices.

๐Ÿ“Š GST Classifications & Versioned Tax Rates

{{ gstClassificationsList.length }} Slabs

Statutory GST rate versions. When tax rates change, adding a new rate slab with an effective date preserves historical rates for previous invoices without altering historical tax audits.

Classification Name Tax Rate (%) Effective Period Description / Scope Status Actions
No GST classifications defined yet. Click '+ New GST Classification' to add.
{{ c.name }}
ID: #{{ c.id }}
{{ Number(c.tax_rate) === 0 ? '0.00% (Exempt)' : Number(c.tax_rate).toFixed(2) + '%' }}
From: {{ c.effective_from }}
To: {{ c.effective_to || 'Open-ended (Current)' }}
{{ c.description || 'Standard rate classification' }} {{ Number(c.is_active) === 1 ? 'ACTIVE' : 'INACTIVE' }}

๐Ÿ‘ฅ User Management & Tile Permission Control

{{ usersList.length }} Registered Users

As Admin, create staff/technician user credentials, reset passwords securely, and assign granular tile access control defining exactly which operational modules each user is authorized to access.

User Name Email / Login ID Role Contact Phone Account Status Authorized Modules Actions
No users registered or loading users list...
{{ u.name }} {{ u.email }} {{ u.role }} {{ u.phone || 'N/A' }} {{ Number(u.is_active) === 1 ? 'ACTIVE' : 'INACTIVE' }}
Full Access (All 11 Tiles)
{{ t.trim() }}

Create New Sales Lead

โš ๏ธ
{{ newLeadModal.error }}
๐Ÿ” Check Existing Customer

Note: Check if this lead belongs to an existing customer. First enter primary phone number (or name). If found, contact details and address will auto-fill automatically. You only need to choose products.

โœ“ Linked
{{ c.name }}
Phone: {{ c.primary_phone }} โ€ข {{ c.city }} โ€ข GST: {{ c.gstin }}
Use This Customer โ†ต
Using Existing Customer: {{ linkedCustomer?.name }} (+91 {{ linkedCustomer?.primary_phone }})
{{ c.name }}
Phone: {{ c.primary_phone }} โ€ข {{ c.city }} โ€ข GST: {{ c.gstin }}
Select Customer โ†ต
{{ newLeadModal.data.primary_phone.replace(/\D/g, '').length }}/10 digits
{{ newLeadModal.data.secondary_phone.replace(/\D/g, '').length }}/10 digits
{{ activeProducts.length }} Active
No active products in catalog.

Default set to current date + 2 days.

Edit Sales Lead Details

{{ editLeadModal.data.lead_number }}

โš ๏ธ
{{ editLeadModal.error }}
{{ editLeadModal.data.primary_phone.replace(/\D/g, '').length }}/10 digits
{{ editLeadModal.data.secondary_phone.replace(/\D/g, '').length }}/10 digits
{{ activeProducts.length }} Active
{{ selectedLead.lead_number }}

{{ selectedLead.customer_name }}

Primary Phone: +91 {{ selectedLead.primary_phone }}
Secondary Phone: +91 {{ selectedLead.secondary_phone }}
Email: {{ selectedLead.email }}
Address: {{ selectedLead.address_line }}
Status: {{ selectedLead.status }}
Next Follow-Up: {{ selectedLead.next_follow_up_date || 'None set' }}
Lead Status: CANCELLED
Reason: {{ selectedLead.cancellation_reason || selectedLead.latest_remark || 'Customer not interested / cancelled' }}
No active interactions or quotation conversions are permitted for this cancelled lead.
โœ“ Converted to Confirmed Order (Details Locked & Managed under Orders)

Interaction History (Append-Only)

No interactions logged yet.
{{ item.interaction_type }} {{ item.created_at }}

{{ item.remarks }}

Next Follow-up set to: {{ item.follow_up_date_set }}
{{ selectedOrder.order_number }} Booked: {{ selectedOrder.order_date }}

{{ selectedOrder.customer_name }}

{{ selectedOrder.status }}
๐Ÿšซ Order Cancelled
Refund: {{ selectedOrder.refund_status || 'NONE' }}
Cancellation Reason: {{ selectedOrder.cancellation_reason }}
Refund Amount Adjusted:
โ‚น{{ Number(selectedOrder.refund_amount || 0).toLocaleString('en-IN') }}
Refund Notes / Ref:
{{ selectedOrder.refund_notes }}
Customer Contact
Name: {{ selectedOrder.customer_name }}
Primary: +91 {{ selectedOrder.primary_phone }}
Email: {{ selectedOrder.customer_email }}
Billing: {{ selectedOrder.billing_address }}
Shipping & Logistics
Delivery Address: {{ selectedOrder.shipping_address || 'Same as billing' }}
Expected Delivery: {{ selectedOrder.expected_delivery_date }}
Transporter: {{ selectedOrder.transporter_name }}
LR Docket #: {{ selectedOrder.lr_tracking_number }}

Ordered Products (Bill of Materials)

Item / SKU HSN Qty Unit Rate Total
{{ item.product_name }}
{{ item.sku }}
{{ item.hsn_code || '8541' }} {{ item.quantity }} โ‚น{{ Number(item.unit_price).toLocaleString('en-IN') }} โ‚น{{ Number(item.total_amount).toLocaleString('en-IN') }}
Order Financial Breakdown
Items Subtotal:
โ‚น{{ Number(selectedOrder.subtotal).toLocaleString('en-IN') }}
Discount Offered:
-โ‚น{{ Number(selectedOrder.discount_amount).toLocaleString('en-IN') }}
GST (CGST+SGST / IGST):
โ‚น{{ Number(selectedOrder.tax_amount).toLocaleString('en-IN') }}
Grand Total:
โ‚น{{ Number(selectedOrder.grand_total).toLocaleString('en-IN') }}
Total Receipts Received:
โ‚น{{ Number(selectedOrder.advance_paid).toLocaleString('en-IN') }}
Balance Due:
โ‚น{{ Number(selectedOrder.balance_due).toLocaleString('en-IN') }}

๐Ÿ’ฐ Payment Receipts {{ selectedOrder.receipts?.length || 0 }} Logged

No payment receipts logged for this order yet.
{{ rcpt.receipt_number }} {{ (rcpt.receipt_type || 'PAYMENT').replace('_', ' ') }} {{ rcpt.payment_date }}
Mode: {{ (rcpt.payment_mode || 'UPI').replace('_', ' ') }} โ€ข Ref / UTR: {{ rcpt.transaction_ref || 'N/A' }} โ€ข Logged By: {{ rcpt.collected_by_name || 'System' }} ({{ rcpt.collector_role || 'STAFF' }})
Note: {{ rcpt.notes }}
โ‚น{{ Number(rcpt.amount).toLocaleString('en-IN') }}

GST Tax Invoice

{{ selectedOrder.invoice_number }}
Generated: {{ selectedOrder.invoice_date }}
{{ selectedOrder.invoice_status || 'ACTIVE' }}
Invoice Cancelled: {{ selectedOrder.invoice_cancellation_reason || 'Voided by audit' }}
No GST invoice issued for this order yet.

Append Interaction Log

Lead status will automatically update to FOLLOW_UP.

Convert Lead to Confirmed Order

{{ wonOrderModal.lead?.customer_name }} โ€ข {{ wonOrderModal.lead?.lead_number }}

Approved Quotation: {{ wonOrderModal.quotation.quotation_number }}
Products, pricing & discounts locked from finalized proposal.
GST {{ it.tax_rate ?? 18 }}% Unit: {{ it.unit || 'PCS' }}
Line Total: โ‚น{{ ((Number(it.quantity) || 1) * (Number(it.unit_rate) || 0)).toLocaleString('en-IN') }}
- โ‚น{{ Number(wonOrderModal.discount_amount || 0).toLocaleString('en-IN') }}
Taxable Amount (After Discount): โ‚น{{ (computedWonOrderSubtotal - (wonOrderModal.discount_amount || 0)).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
GST Tax Amount: ({{ wonOrderModal.billing_state === companySettingsForm.state ? 'CGST + SGST Intra-State' : 'IGST Inter-State' }}) + โ‚น{{ computedWonOrderTax.toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
Confirmed Order Grand Total: โ‚น{{ computedWonOrderGrandTotal.toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
Advance Booking Token Paid: โ‚น{{ (Number(wonOrderModal.advance_paid) || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
Balance Due at Delivery / Invoice: โ‚น{{ computedWonOrderBalanceDue.toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}
๐Ÿ“ Billing & Shipping Addresses
Billing Address (For GST State Matching)
Separate Site / Delivery Shipping Address

Register Product Warranty

Serial Tracking & Manufacturer Coverage

Customer
{{ registerWarrantyModal.selectedOrder.customer_name }}
Phone
+91 {{ registerWarrantyModal.selectedOrder.primary_phone }}
๐Ÿ“ฆ Order Products & Serials ({{ registerWarrantyModal.entries.length }} Units) Auto-populated

Enter unique serial number for each billed product unit in this order.

{{ entry.product_name }} {{ entry.unit_label }}
{{ entry.warranty_months }} Mo Warranty

Warranty end date is calculated dynamically using product's warranty months.

Record Payment Receipt

Sequential Audit Receipt Generation

โš ๏ธ
{{ paymentModal.error }}
Target Order (Auto-Selected)
{{ paymentModal.lockedOrder.order_number }} - {{ paymentModal.lockedOrder.customer_name }}
Balance Due
โ‚น{{ Number(paymentModal.lockedOrder.balance_due).toLocaleString('en-IN') }}
Order
{{ paymentModal.order.order_number }}
Customer
{{ paymentModal.order.customer_name }}
Grand Total
โ‚น{{ Number(paymentModal.order.grand_total).toLocaleString('en-IN') }}
Total Paid
โ‚น{{ Number(paymentModal.order.advance_paid).toLocaleString('en-IN') }}
Balance Due
โ‚น{{ Number(paymentModal.order.balance_due).toLocaleString('en-IN') }}
Target Invoice (Auto-Selected)
{{ paymentModal.lockedInvoice.invoice_number }} - {{ paymentModal.lockedInvoice.customer_name }}
Balance Due
โ‚น{{ Number(paymentModal.lockedInvoice.balance_payable).toLocaleString('en-IN') }}
Invoice & Linked Order
{{ paymentModal.invoice.invoice_number }} ({{ paymentModal.invoice.order_number }})
Customer
{{ paymentModal.invoice.customer_name }}
Grand Total
โ‚น{{ Number(paymentModal.invoice.grand_total).toLocaleString('en-IN') }}
Total Paid
โ‚น{{ Number(paymentModal.invoice.total_paid || paymentModal.invoice.advance_adjusted || 0).toLocaleString('en-IN') }}
Balance Due
โ‚น{{ Number(paymentModal.invoice.balance_payable).toLocaleString('en-IN') }}
๐Ÿ’ก Pre-Payment Notice: This excess/advance payment will not be tagged to any specific order or invoice now. It will be credited to this customer's account so you can adjust it against any future invoice in the Payments tile.
(Mandatory for money audit)
Logged By Audit User: {{ currentUser?.name || 'Operator' }} ({{ currentUser?.role || 'STAFF' }})
๐Ÿ”’ Confirm Payment Entry VERIFICATION STEP
Tagged Order Number
{{ paymentModal.order?.order_number || ('Order #' + paymentModal.data.order_id) }}
Tagged Invoice Number
{{ paymentModal.invoice?.invoice_number || ('Invoice #' + paymentModal.data.invoice_id) }}
Linked Order: {{ paymentModal.invoice.order_number }}
Tagged Order / Invoice
None (Pre-Payment Credit)
Customer / Dealer
{{ paymentModal.customer?.name || paymentModal.invoice?.customer_name || paymentModal.order?.customer_name || 'Customer' }}
Receipt Stage
{{ paymentModal.data.receipt_type === 'ADVANCE' ? 'Advance Booking (Tagged to Order)' : (paymentModal.data.receipt_type === 'BALANCE' ? 'Final Balance Settlement (Tagged to Invoice)' : 'Pre Payment / Excess Amount') }}
Payment Mode
{{ paymentModal.data.payment_mode }}
Transaction Ref / UTR
{{ paymentModal.data.transaction_ref }}
Payment Date
{{ paymentModal.data.payment_date }}
Amount to be Credited
โ‚น{{ Number(paymentModal.data.amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Remarks:
{{ paymentModal.data.notes }}

โš ๏ธ Please review carefully. Clicking confirm will permanently register this payment in the ledger and generate a formal, audited receipt.

Assign Pre-Payment to Invoice

Adjust unassigned credit against Tax Invoice

โš ๏ธ
{{ assignInvoiceModal.error }}
Receipt Number
{{ assignInvoiceModal.receipt.receipt_number }}
Receipt Date
{{ assignInvoiceModal.receipt.payment_date }}
Customer / Dealer
{{ assignInvoiceModal.receipt.customer_name }}
Available Credit
โ‚น{{ Number(assignInvoiceModal.receipt.amount).toLocaleString('en-IN') }}
Invoice Settlement Preview {{ invoicesList.find(i => i.id == assignInvoiceModal.invoice_id).invoice_number }}
Current Due
โ‚น{{ Number(invoicesList.find(i => i.id == assignInvoiceModal.invoice_id).balance_payable).toLocaleString('en-IN') }}
Pre-Payment Credit
- โ‚น{{ Number(assignInvoiceModal.receipt?.amount || 0).toLocaleString('en-IN') }}
New Balance Due
โ‚น{{ Math.max(0, Number(invoicesList.find(i => i.id == assignInvoiceModal.invoice_id).balance_payable) - Number(assignInvoiceModal.receipt?.amount || 0)).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
โœ“ This invoice will be marked as fully paid!
๐Ÿ’ก Once assigned, the receipt will be permanently linked to this invoice (and its order). The "Assign Invoice" button will no longer appear for this receipt.

Issue GST Tax Invoice

Order: {{ invoiceModal.order?.order_number }}

โš ๏ธ
{{ invoiceModal.error }}
๐Ÿข Customer Billing Details (Editable for Tax Invoice)
{{ invoiceModal.data.primary_phone.replace(/\D/g, '').length }}/10 digits

Karnataka = Intra (CGST+SGST). Other = Inter (IGST).

๐Ÿšš Shipping & Consignee Address
๐Ÿ“„ PO Reference & Dispatch Docket (All fields optional)
๐Ÿท๏ธ Commercial Discount Adjustment Items Subtotal: โ‚น{{ Number(invoiceModal.subtotal).toLocaleString('en-IN') }}
Effective Discount:
-โ‚น{{ Number(computedInvoiceDiscount).toLocaleString('en-IN') }}
Computed Tax Invoice Totals
Bill of Materials Subtotal:
โ‚น{{ Number(invoiceModal.subtotal).toLocaleString('en-IN') }}
Discount Adjusted:
-โ‚น{{ Number(computedInvoiceDiscount).toLocaleString('en-IN') }}
Taxable Amount:
โ‚น{{ Number(computedInvoiceTaxable).toLocaleString('en-IN') }}
Total GST (18%) [{{ (invoiceModal.data.billing_state || '').toLowerCase().trim() === 'karnataka' ? 'CGST 9% + SGST 9%' : 'IGST 18%' }}]:
โ‚น{{ Number(computedInvoiceTax).toLocaleString('en-IN') }}
Invoice Grand Total:
โ‚น{{ Number(computedInvoiceGrandTotal).toLocaleString('en-IN') }}
Advance Adjusted from Order:
-โ‚น{{ Number(invoiceModal.order?.advance_paid || 0).toLocaleString('en-IN') }}
Net Balance Payable:
โ‚น{{ Number(computedInvoiceBalanceDue).toLocaleString('en-IN') }}
โš ๏ธ

Cancel Tax Invoice

โš ๏ธ
{{ cancelInvoiceModal.error }}
Invoice: {{ cancelInvoiceModal.invoice?.invoice_number }}
Customer: {{ cancelInvoiceModal.invoice?.customer_name }}
Amount: โ‚น{{ Number(cancelInvoiceModal.invoice?.grand_total || 0).toLocaleString('en-IN') }}
Audit Notice: This action permanently voids the invoice and displays an official "CANCELLED" watermark on printouts and public sharing links. The order and its logged payment receipts remain intact.

{{ productModal.isEdit ? 'Edit Product Master' : 'Add New Product to Catalog' }}

Manage pricing, warranty effective ranges, and capacity variants (e.g. 100 LPD, 200 LPD, 300 LPD).

Initial physical stock count
Triggers near out-of-stock warning
๐Ÿ›ก๏ธ Warranty Duration & Effective Date Range Maintains yearly/periodic warranty updates

โš™๏ธ Capacity / Size Variants

Define different capacities (e.g. 100 LPD, 200 LPD, 300 LPD) and respective selling prices.

No capacity variants added. Base price (โ‚น{{ Number(productModal.data.price || 0).toLocaleString('en-IN') }}) will apply.
Taxes Calculated Dynamically
โš ๏ธ

Confirm Product Deactivation

Reason required to discontinue this product.

Deactivating {{ deactivateProductModal.product?.name }} will remove it from active quotation lists and future billing.

๐Ÿ“„ Commercial Quotation Proposal ๐Ÿ”’ {{ quotationModal.status || 'CONFIRMED' }} (Read-Only)

This quotation is confirmed / converted to an order and is locked in read-only mode. Creates formal shareable quotation with itemized products, capacity variants, and editable commercial terms.

โ„น๏ธ This quotation is {{ quotationModal.status }}. Displayed in read-only mode without modification controls.
Quotation For
{{ quotationModal.customer_name }}
+91 {{ quotationModal.customer_phone }} โ€ข {{ quotationModal.customer_email || 'No email' }}
State / Tax Type
{{ quotationModal.customer_state }}
{{ quotationSummary.isIntraState ? 'Intra-State (CGST + SGST)' : 'Inter-State (IGST)' }}
{{ it.unit || 'PCS' }}
Subtotal
โ‚น{{ (Number(it.quantity || 1) * Number(it.unit_price || 0)).toFixed(2) }}
๐Ÿ“ Billing & Delivery Address
Products Subtotal: โ‚น{{ (quotationSummary.productTotal || 0).toFixed(2) }}
Special Discount ({{ quotationModal.discount_reason || 'Offer' }}): - โ‚น{{ (quotationSummary.discount || 0).toFixed(2) }}
Taxable Amount after Discount: โ‚น{{ (quotationSummary.subtotal || quotationSummary.taxable || 0).toFixed(2) }}
Central GST (CGST): โ‚น{{ (quotationSummary.cgst || 0).toFixed(2) }}
State GST (SGST): โ‚น{{ (quotationSummary.sgst || 0).toFixed(2) }}
Integrated GST (IGST): โ‚น{{ (quotationSummary.igst || 0).toFixed(2) }}
Payable Amount (Grand Total): โ‚น{{ (quotationSummary.grandTotal || 0).toFixed(2) }}
โœ“

Quotation Generated!

{{ quotationModal.createdQuote.quotation_number }}

Total Value: โ‚น{{ Number(quotationModal.createdQuote.total_amount).toLocaleString('en-IN') }}

{{ selectedCustomer?.customer?.name }}

+91 {{ selectedCustomer?.customer?.primary_phone }}

Location: {{ selectedCustomer?.customer?.city || '-' }}, {{ selectedCustomer?.customer?.state }}
Address: {{ selectedCustomer?.customer?.address_line || 'None specified' }}
GSTIN: {{ selectedCustomer?.customer?.gstin || 'Unregistered' }}

Orders History ({{ selectedCustomer.orders?.length || 0 }})

No orders yet.
{{ ord.order_number }}
{{ ord.order_date }}
โ‚น{{ Number(ord.grand_total).toLocaleString() }}
{{ ord.status }}

Warranties ({{ selectedCustomer.warranties?.length || 0 }})

No warranties registered.
{{ w.serial_number }}
{{ w.product_name }}
{{ w.status }}

Email Invoice {{ emailInvoiceModal.invoice?.invoice_number }}

Dispatches HTML Tax invoice with public view link via Hostinger mail transport.

Edit Customer Record

โš ๏ธ
{{ customerModal.error }}
{{ customerModal.data.primary_phone.replace(/\D/g, '').length }}/10 digits
{{ customerModal.data.secondary_phone.replace(/\D/g, '').length }}/10 digits

{{ gstClassificationModal.createNewSlab ? 'Add New Rate Slab Version' : (gstClassificationModal.isEdit ? 'Edit GST Classification' : 'Create GST Classification') }}

{{ gstClassificationModal.createNewSlab ? 'Non-destructive rate versioning preserving historical invoice records' : 'GST master classification linked to product catalog' }}

๐Ÿ›ก๏ธ
Historical Invoices Protected: The previous rate slab will remain locked in database history for old invoice reprints. This new rate will take effect from the specified Effective From date.
โ„น๏ธ
Modifying the tax rate will automatically archive the previous rate to guarantee historical invoice reprinting accuracy.

Enter 0 for Non-Taxable / Exempt commodities.

{{ confirmDialog.isDestructive ? 'โš ๏ธ' : 'โ“' }}

{{ confirmDialog.title }}

{{ confirmDialog.message }}

Add New Dealer / Distributor

{{ dealerModal.error }}

๐Ÿšš Onboard Supplier / Vendor

Profile will auto-populate in Purchase Entry

{{ supplierModal.error }}

๐Ÿฌ Create Direct Dealer Tax Invoice

Wholesale direct billing without requiring lead or quotation workflow

{{ dealerInvoiceModal.error }}
Subtotal: โ‚น{{ computedDealerInvoiceSubtotal.toFixed(2) }}
Discount: - โ‚น{{ computedDealerInvoiceDiscount.toFixed(2) }}
Taxable Value: โ‚น{{ computedDealerInvoiceTaxable.toFixed(2) }}
GST Tax Amount: + โ‚น{{ computedDealerInvoiceTax.toFixed(2) }}
Invoice Grand Total: โ‚น{{ computedDealerInvoiceGrandTotal.toFixed(2) }}

{{ userModal.isEdit ? 'Edit System User' : 'Create New User Account' }}

{{ userModal.error }}

๐Ÿ”‘ Reset User Password

{{ resetPassModal.error }}
Target User Account
{{ resetPassModal.user?.name }}
{{ resetPassModal.user?.email }}

๐Ÿ›ก๏ธ Assign Operational Tiles

{{ tilePermsModal.user?.name }} ({{ tilePermsModal.user?.role }})

Select exactly which operational tiles this user is authorized to access on the Home dashboard and side navigation menu:
๐Ÿ“ธ

Fullscreen Bill / Invoice Page Scanner

Position vendor bill in viewfinder. Capture frame to auto-extract details into draft.

{{ purchaseScanModal.error }}
PAGE SCANNER ACTIVE
Ensure Bill #, Vendor Name, Date & Amounts are clearly visible inside this frame
Auto-detects GSTIN, subtotal, and tax

{{ purchaseModal.isDraftReview ? '๐Ÿ” Review & Verify Scanned Draft Bill' : '๐Ÿ›’ Record Vendor Purchase Bill' }}

Auto-populate supplier details, select catalog products with purchase rates, and track inventory.

โœจ Data auto-extracted from page capture. Check supplier details, items, and tax amounts before finalizing.
{{ purchaseModal.error }}
Scanned Draft
Captured Draft Page
Camera Snapshot Attached

This draft copy will be linked to the purchase transaction ledger.

{{ s.trade_name || s.name }}
GSTIN: {{ s.gstin || 'None' }} | Phone: {{ s.primary_phone }}
Select โ†ต

๐Ÿ“ฆ Purchase Products / Line Items

Products use dedicated Purchasing Rates and automatically increment stock.

Catalog Product / Description Qty Purchase Rate (โ‚น) GST % Tax (โ‚น) Total (โ‚น)
โ‚น{{ Number(item.tax_amount || 0).toFixed(2) }} โ‚น{{ Number(item.total_amount || 0).toFixed(2) }}
Financial Breakup All figures in INR (โ‚น)
Recorded products will automatically update inventory stock
Purchase Bill Entry {{ viewPurchaseModal.purchase?.payment_status }}

{{ viewPurchaseModal.purchase?.bill_number }}

Bill Date: {{ viewPurchaseModal.purchase?.purchase_date }} โ€ข Recorded by {{ viewPurchaseModal.purchase?.created_by_name }}

๐Ÿข Vendor / Supplier Information
{{ viewPurchaseModal.purchase?.vendor_name }}
GSTIN: {{ viewPurchaseModal.purchase?.vendor_gstin }}
๐Ÿ“ž Phone: +91 {{ viewPurchaseModal.purchase?.supplier_phone }}
๐Ÿ“ {{ viewPurchaseModal.purchase?.supplier_address }}
๐Ÿ’ณ Settlement & Payment Status
Total Payable Amount: โ‚น{{ Number(viewPurchaseModal.purchase?.grand_total || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Paid to Supplier: โ‚น{{ Number(viewPurchaseModal.purchase?.paid_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Outstanding Due: โ‚น{{ Number(viewPurchaseModal.purchase?.balance_due || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
๐Ÿ“ฆ Line Items & Products Purchased
# Catalog Product / Description HSN Qty Purchase Rate (โ‚น) GST % Tax (โ‚น) Total (โ‚น)
No individual line items stored for this bill.
{{ idx + 1 }}
{{ item.product_name || item.name || item.description }}
Unit: {{ item.unit }}
{{ item.hsn_code || '-' }} {{ item.quantity }} โ‚น{{ Number(item.rate || item.purchase_price || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }} {{ item.tax_rate ?? item.gst_rate ?? 18 }}% โ‚น{{ Number(item.tax_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }} โ‚น{{ Number(item.total_amount || item.line_total || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Total amount without tax
โ‚น{{ Number(viewPurchaseModal.purchase?.subtotal || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Tax amount (GST)
โ‚น{{ Number(viewPurchaseModal.purchase?.tax_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Total payable amount
โ‚น{{ Number(viewPurchaseModal.purchase?.grand_total || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Notes / Description: {{ viewPurchaseModal.purchase?.notes }}
Scanned Draft
Scanned Vendor Bill Attached
Original physical receipt photo/scan
View Full Image โ†—
โš ๏ธ

Confirm Delete Purchase Bill

Bill Number: {{ deletePurchaseModal.purchase?.bill_number }}
Vendor: {{ deletePurchaseModal.purchase?.vendor_name }}
Grand Total: โ‚น{{ Number(deletePurchaseModal.purchase?.grand_total || 0).toLocaleString('en-IN') }}

โš ๏ธ Inventory Notice: Deleting this purchase bill will automatically reverse the stock quantities that were added to your catalog products upon bill receipt.

๐Ÿ’ณ Record Supplier Payment Voucher

Lodge cheque, RTGS/NEFT, UPI or cash payments to vendors.

{{ purchasePaymentModal.error }}
{{ s.trade_name || s.name }}
๐Ÿ“ž {{ s.primary_phone }} โ€ข GST: {{ s.gstin }} Vendor ID #{{ s.id }}
Select โ†ต
Selected Supplier: {{ purchasePaymentModal.selectedSupplier?.trade_name || purchasePaymentModal.selectedSupplier?.name }} (+91 {{ purchasePaymentModal.selectedSupplier?.primary_phone }})
Total Outstanding Balance Due: โ‚น{{ Number(purchasePaymentModal.supplierOutstanding || 0).toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2}) }}

If lump-sum amount exceeds a bill, ParamERP automatically allocates remaining balance across older pending bills.

โš–๏ธ Stock Adjustment

Manual stock reconciliation with audit ledger

{{ adjustStockModal.error }}
Installation & Warranty Record

{{ warrantyDetailModal.data.serial_number || warrantyDetailModal.data.invoice_number || 'Details' }}

Invoice Reference: {{ warrantyDetailModal.data.invoice_number }} (Ord: {{ warrantyDetailModal.data.order_number }})
Customer: {{ warrantyDetailModal.data.customer_name }} +91 {{ warrantyDetailModal.data.primary_phone }}
Address: {{ [warrantyDetailModal.data.address_line, warrantyDetailModal.data.customer_city || warrantyDetailModal.data.city, warrantyDetailModal.data.customer_state || warrantyDetailModal.data.state].filter(Boolean).join(', ') || 'N/A' }}
Product(s): {{ warrantyDetailModal.data.product_name }}
Serial Number: {{ warrantyDetailModal.data.serial_number }}
Installation Date:
{{ warrantyDetailModal.data.installation_date || 'N/A' }}
Warranty End:
{{ warrantyDetailModal.data.warranty_end_date || 'N/A' }}
Warranty Status: {{ warrantyDetailModal.data.warranty_status || warrantyDetailModal.data.status }}
{{ Number(warrantyDetailModal.data.days_remaining) > 0 ? warrantyDetailModal.data.days_remaining + ' days remaining' : 'Warranty Expired' }}
Installed By: {{ warrantyDetailModal.data.technician_name }}
Registered Units & Serials ({{ warrantyDetailModal.data.warranties.length }})
{{ unit.product_name }}
SN: {{ unit.serial_number }}
{{ unit.status }}
๐Ÿšš
Installations & Delivery

Update Delivery for Invoice {{ updateDeliveryModal.data.invoice_number }}

Loading invoice & product details...
Customer: {{ updateDeliveryModal.data.customer_name }} +91 {{ updateDeliveryModal.data.primary_phone }}
Inv #{{ updateDeliveryModal.data.invoice_number }}
Delivery Address: {{ updateDeliveryModal.data.customer_address }}
{{ updateDeliveryModal.data.items?.length || 0 }} unit(s) to verify
{{ it.product_name }}
{{ it.unit_label }} โ€ข {{ it.warranty_months }} Months Coverage
โš ๏ธ
Submitting this will immediately mark Invoice #{{ updateDeliveryModal.data.invoice_number }}, its linked Order, and Quotation as DELIVERED and activate manufacturer warranty. You will be prompted for double confirmation.
{{ activityLogModal.log.action_type }}

Audit Log #{{ activityLogModal.log.id }}

Timestamp: {{ activityLogModal.log.created_at }}
Actor / User: {{ activityLogModal.log.user_name }} ({{ activityLogModal.log.user_role }})
Target Entity: {{ activityLogModal.log.entity_type }} (Ref: {{ activityLogModal.log.entity_ref || 'N/A' }})
IP Address: {{ activityLogModal.log.ip_address || '127.0.0.1' }}
Event Description:

{{ activityLogModal.log.description }}

Payload Details / Audit Diff:
{{ typeof activityLogModal.log.details === 'string' ? activityLogModal.log.details : JSON.stringify(activityLogModal.log.details, null, 2) }}
๐Ÿšซ

Cancel Order: {{ cancelOrderModal.order_number }}

{{ cancelOrderModal.customer_name }} โ€ข Grand Total: โ‚น{{ Number(cancelOrderModal.grand_total).toLocaleString('en-IN') }}

โš ๏ธ Warning: Cancellation & Synchronization

Cancelling this order will mark the order as CANCELLED, adjust any refund due, clear outstanding balance receivable to โ‚น0.00, and synchronize the linked Quotation and Lead to CANCELLED.

โ‚น{{ Number(cancelOrderModal.advance_paid).toLocaleString('en-IN') }}
๐Ÿšซ

Cancel Quotation {{ cancelQuotationModal.quote_number }}

{{ cancelQuotationModal.customer_name }}

Cancelling this quotation will mark it as CANCELLED and synchronize the linked Lead and any associated Order to CANCELLED.

โœ๏ธ

Edit Order: {{ editOrderModal.order_number }}

{{ editOrderModal.customer_name }} โ€ข Confirmed Order

Add or remove products, edit quantities or prices. Changes will recompute GST and balances, syncing back across tiles and to the linked Commercial Quotation.

๐Ÿ“ฆ Order Items / Bill of Materials
Total
โ‚น{{ (Number(it.quantity || 1) * Number(it.unit_price || 0)).toFixed(2) }}
Subtotal (After discount): โ‚น{{ computedEditOrderSubtotal.toFixed(2) }}
GST Tax Amount (18% / Classification): โ‚น{{ computedEditOrderTax.toFixed(2) }}
New Grand Total: โ‚น{{ computedEditOrderGrandTotal.toFixed(2) }}
Advance Paid: โ‚น{{ Number(editOrderModal.advance_paid || 0).toLocaleString('en-IN') }}
Adjusted Balance Due: โ‚น{{ computedEditOrderBalanceDue.toFixed(2) }}
๐Ÿงพ

{{ invoiceViewModal.data?.invoice_number || 'Tax Invoice' }}

{{ invoiceViewModal.data?.status || 'ACTIVE' }}

Date: {{ invoiceViewModal.data?.invoice_date }} โ€ข Order: {{ invoiceViewModal.data?.order_number || 'N/A' }}

Loading invoice details...
Customer / Billed To
{{ invoiceViewModal.data.customer_name }}
+91 {{ invoiceViewModal.data.customer_phone }}
GSTIN: {{ invoiceViewModal.data.customer_gstin }}
๐Ÿ“ {{ invoiceViewModal.data.customer_address }}, {{ invoiceViewModal.data.customer_state }}
Dispatch / Site Address
{{ invoiceViewModal.data.shipping_address || invoiceViewModal.data.customer_address || 'Same as Billing Address' }}
Tax Type: {{ Number(invoiceViewModal.data.igst_amount) > 0 ? 'Inter-State (IGST 18%)' : 'Intra-State (CGST 9% + SGST 9%)' }}
Billed Line Items
Item HSN Qty Unit Rate Total
{{ it.product_name }} {{ it.hsn_code || '8419' }} {{ it.quantity }} โ‚น{{ Number(it.unit_price).toLocaleString('en-IN') }} โ‚น{{ Number(it.total_amount).toLocaleString('en-IN') }}
Taxable Subtotal: โ‚น{{ Number(invoiceViewModal.data.subtotal_amount || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Discount: -โ‚น{{ Number(invoiceViewModal.data.discount_amount).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Integrated GST (IGST): โ‚น{{ Number(invoiceViewModal.data.igst_amount).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
CGST + SGST: โ‚น{{ (Number(invoiceViewModal.data.cgst_amount || 0) + Number(invoiceViewModal.data.sgst_amount || 0)).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Invoice Grand Total: โ‚น{{ Number(invoiceViewModal.data.grand_total || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Advance / Amount Received: โ‚น{{ Number(invoiceViewModal.data.advance_adjusted || invoiceViewModal.data.total_paid || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}
Balance Payable: โ‚น{{ Number(invoiceViewModal.data.balance_payable || 0).toLocaleString('en-IN', {minimumFractionDigits: 2}) }}