N Jagdish Industries · Amritsar Operations Manual · Vol. I

Nickson CRM — the operations manual for every role at Jagdish Industries.

One console for leads, dealers, procurement, manufacturing, HR & payroll, dispatch, accounts, warranty, and quality. Same records. Different views. This manual is how the whole thing hangs together.

Modules
Seventeen
Roles served
Eight
Console URL
crm.nicksonpumps.com
Revision
v1.0 · 2026-07
I

Getting started

A ten-minute orientation. Where to sign in, how to install the console on your phone, what the screen chrome does, and who sees what.

1.1Access & login

The console lives at https://crm.nicksonpumps.com. Two sign-in methods, both fronted by the same /login screen with a tab switcher:

  • Email + password — the default for all salaried staff and admins.
  • Phone + WhatsApp OTP — for shop-floor workers and temporary hires. Enter a 10-digit Indian mobile, receive a 6-digit code on WhatsApp, log in. First-time OTP sign-in silently mints a User account and links it to the worker record — no ticket to IT required.

Forgotten passwords go through the standard reset link on the login form. Ask HR if the reset email doesn't arrive.

1.2Install as a phone app

The console is a Progressive Web App. Once installed it opens fullscreen like a native app, works offline for the login shell, and supports push notifications on Android.

  • Android · Chrome / Edge / Brave. Menu (⋮) → Install app. Or wait for the floating Install Nickson CRM pill at the bottom of the screen.
  • iPhone · Safari. Share (□↑) → Add to Home Screen. Note iOS does not support push notifications for PWAs.
  • Desktop. Look for the install icon (⊕) in the URL bar or menu → Install Nickson CRM.

1.3Interface tour

Sidebar

Grouped by function. What you see depends on your role — a sales rep sees leads, dealers, catalog, commerce; HR sees HR and payroll; the owner sees everything. Collapse the sidebar via the arrow at the bottom-left when the workstation monitor is short on horizontal room.

Command palette · ⌘K / Ctrl+K

Fastest way to jump anywhere. Type a record identifier, a page name, or a customer name — hit enter, land on the record. Faster than clicking through the sidebar for anything a user does more than twice a day.

Top bar

  • QR scanner. Scan a pump serial sticker, a package label, a vendor code, or a dealer QR. Camera permission asked once, then it's a one-tap lookup.
  • Quick capture. One-tap add of a new lead, task, or note.
  • Notifications. Inbox of things needing your attention — pending approvals, overdue tasks, new lead assignments, warranty claims raised.
  • Language. English · हिन्दी · ਪੰਜਾਬੀ. Cookie-scoped, applies to the whole console.

1.4Roles & permissions

Every user carries one role. The role controls which sidebar sections appear, which pages open, which actions are allowed, and — critically — which rows are visible. A sales rep sees their team's leads, not other teams'. A worker sees only their own payslip. Row-level security is enforced at the database boundary, not on the frontend.

Role Purpose Landing
ADMINOwner / super-user, sees everything/
SALESSales rep — leads, dealers, quotes, orders/dashboards/sales
DISPATCHWarehouse and dispatch floor/dashboards/dispatch
ACCOUNTSBookkeeping, invoices, payments, cash register/dashboards/finance
WARRANTYService and warranty claims/dispatch/warranty-claims
HRHR, payroll, attendance, statutory compliance/hr/employees
EMPLOYEEShop-floor worker (own attendance, work, pay)/e
DEALER_PORTALExternal dealer login (self-service)/dealers
II

Modules

Every function of the business, one card per module. Skim the grid for orientation, dive into a section for the fields, screens, and integrations that come with each.

The seventeen

Leads
Sales · Admin

Every inquiry from IndiaMART, walk-in, phone, dealer referral, web. Pipeline stages, kanban, activity timeline, conversion.

/leads
Dealers
Sales · Dispatch · Admin

Master of every dealer — contacts, locations, credit terms, tier, GST + PAN, consignment warehouses.

/dealers
Products & Catalog
Admin · Sales

Every SKU — pumps, motors, panels, raw materials, spares. Variants, specs, pricing, marketing content.

/products
Commerce
Sales · Accounts

Quote → Order → Invoice → Payment. GST breakdown, IRN, e-way bills, credit notes.

/commerce
Procurement
Accounts · Admin · Dispatch

Vendors, POs, GRNs (formal + cash), three-way match, MSME compliance, vendor–part directory.

/procurement
Manufacturing
Admin · Production

BOM → Work Order → Job Cards → Piece-rate logs → Stock entry. Workstations, operations, batch tracking.

/manufacturing
Inventory
Dispatch · Accounts · Admin

Warehouses, stock balances, reorder rules, movement history, FIFO/LIFO valuation, landed cost.

/inventory
HR & Payroll
HR · Admin

Employees, wage workers, departments, attendance, leave, expense, payroll — statutory compliance built in.

/hr
My Nickson
Employee

The shop-floor worker's own view — home, work log, attendance punches, payslips, running balance.

/e
Dispatch
Dispatch · Admin

Dispatch orders, packing, e-way bills, serial number allocation, delivery challan, warranty registration setup.

/dispatch
Finance
Accounts · Admin

Invoices, payments, credit notes, AR aging, MSME 45-day gate, and the Cash Register for non-GST cash.

/finance
Field & Service
Sales · Dispatch · Warranty

Visits, beat plans, daily call reports, helpdesk tickets — the field force's daily rhythm.

/field
Quality (QMS)
Quality · Admin

Non-conformance reports, corrective/preventive actions, calibration schedules — ISO 9001:2015 aligned.

/qms
Assets
Admin · Accounts · Maintenance

Fixed asset register, AMC contracts, maintenance schedules, depreciation runs.

/assets
Warranty
Warranty · public customer

Serial-scan lookup, customer self-registration, claim submission, technician dispatch, resolution log.

/w/[serial]
Notifications
Admin · HR

Announcements to roles and departments, plus the notification log auditing every message the system has sent.

/notifications
Settings
Admin

Third-party integrations (IndiaMART, WhatsApp Cloud, GST GSP), notification templates, general configuration.

/settings

2.1Leads

WhoSales · Admin
Screens/leads · /leads/kanban · /leads/new · /leads/[id]

Every inquiry that walks in the door. IndiaMART leads land automatically via the ingest webhook; walk-in and phone leads get typed in at /leads/new. The pipeline runs New → Contacted → Qualified → Proposal → Won / Lost. The kanban view is a five-minute daily stand-up in one screen.

Key actions

  • Create a lead: buyer name, phone, city, product interest, source, query, UTM if applicable.
  • Advance stage — either on the detail page dropdown or by dragging on the kanban.
  • Log activities: calls, emails, WhatsApp screenshots. Each is timestamped and shown in the timeline.
  • Convert to a dealer if the buyer is a new distributor, or route straight into a quote if they want to buy.
Filter tip: use /leads?assignedToId= (empty) to see unassigned leads that need routing this morning.

2.2Dealers

WhoSales · Admin · Dispatch
Screens/dealers · /dealers/new · /dealers/[id]

Master of every business customer that stocks Nickson pumps. Codes are free-form (DLR-PB-001 for the first Punjab dealer). Each dealer carries contacts, locations, credit terms, tier, GST, PAN, address. Consignment warehouses — dealers who hold Nickson stock on their floor — get their own Warehouse row pointing back here.

Set credit days accurately

The MSME 45-day gate at /finance/msme reads this to flag statutory-breach risk before it becomes one.

2.3Products & Catalog

WhoAdmin (write) · everyone else (read)
Screens/products · /products/new · /products/[id]

Every SKU flows through here — finished pumps, motors, control panels, and the raw materials and components used in manufacturing. The same catalog powers sales, procurement, and BOMs.

Fields that matter

  • SKU (unique), name, category, brand — the identity.
  • HP · voltage · head · flow rate — the specs dealers ask about.
  • Base price (internal, in paise) · MRP (marketing site) · MOQ.
  • Variants (HP × phase × voltage) auto-generate child SKUs when the parent has hasVariants set.
  • Serial / batch tracking flags — turn these on for finished pumps that ship with a warranty QR.

2.4Commerce · Quotes, Orders, Invoices

WhoSales (quotes, orders) · Accounts (invoices, payments)
Screens/commerce/quotes · /commerce/orders · /commerce/invoices

The GST-invoiced customer-facing flow. A quote gets picked up by the customer, converts to a sales order, which — when dispatched — becomes an invoice, which — when paid — settles receivables.

Order states

DRAFT → CONFIRMED → RELEASED_TO_FACTORY → PARTIALLY_DISPATCHED → FULLY_DISPATCHED → INVOICED → PAID

Invoice generation

Once dispatched, the sales order's Generate Invoice action mints an INV-YYYY-##### with GST breakdown (CGST + SGST for intra-state, IGST for inter-state, decided from your Warehouse state code vs the dealer state). IRN + QR code auto-populate via NIC's GSP if it's configured under Settings. Interstate invoices over ₹50,000 also auto-generate the e-way bill number.

2.5Procurement

WhoAdmin · Accounts · Dispatch (GRN gate only)
Screens/procurement · /procurement/vendors · /procurement/purchase-orders · /procurement/grns · /procurement/vendor-parts · /procurement/three-way-match

Raw materials, spares, consumables. Two parallel paths — the formal Purchase Order lifecycle for regular vendors, and the cash-purchase shortcut for market runs.

Vendor onboarding

At /procurement/vendors/new. Code is auto (V-000001). Fill legal name, trade name, vendor type (RAW_MATERIAL / CONSUMABLE / SERVICE / CAPEX / SUBCONTRACTOR), GSTIN, PAN, Udyam, MSME classification. New vendors start as PROSPECT until documents are verified.

Purchase Order flow

DRAFT → PENDING_APPROVAL → APPROVED → SENT_TO_VENDOR → ACKNOWLEDGED → PARTIALLY_RECEIVED → FULLY_RECEIVED → CLOSED

Approval threshold configured in Settings — anything above needs an approver at /workflows-admin/approvals before it can be sent.

Cash-purchase GRN — the market-run path

At /procurement/grns/new. Two vendor modes — pick from the master (existing) or type an ad-hoc shop name (market run). Line items support a datalist auto-fill from the catalog, or free-text for uncatalogued consumables. Payment mode and reference logged at the header. Catalog lines hit the stock ledger; free-text consumables (cotton waste, tea for the floor) do not.

Vendor–Part directory

At /procurement/vendor-parts. Derived entirely from GRN history — no separate maintenance table. Shows every (product, vendor) pair with last unit price, average, total quantity, GRN count, and a cash-vs-PO split badge. Consult before raising the next PO to spot the cheapest historical supplier.

Three-way match

At /procurement/three-way-match. Every vendor invoice recorded against a PO runs an automated match — line by line — against the PO and the GRN. Mismatches land in the review queue; matched invoices move to Approved for Payment.

MSME compliance: vendors registered as MICRO / SMALL / MEDIUM under MSMED Act 2006 must be paid within 45 days or the contracted term, whichever is shorter. Breach disallows the amount as an expense under Section 43B. The console tracks days-to-deadline on every MSME invoice at /finance/msme.

2.6Manufacturing

WhoAdmin · Production
Screens/manufacturing/boms · /work-orders · /job-cards · /workstations · /stock-entries · /piece-rate-operations

Bill of Materials

A BOM specifies what a product is made of — components, quantities, scrap allowance, operations. Header + version-snapshot pattern: each release creates an immutable BOMVersion, so old work orders remain reproducible even after a design revision.

Work Order

The production order — pick a BOM, target quantity, start / end dates, priority. Statuses run Planned → Released → In-Progress → Hold → Completed → Cancelled. Releasing a WO freezes material requirements and dispatches requisitions to WIP.

Job Cards

One workstation's chunk of a work order — "stator winding for 20 impellers on Machine 3". Operator starts, logs progress, closes. Piece-rate earnings roll up here.

Stock Entry

Material movements. Purposes: Material transfer for manufacture, Manufacture (finished output), Disassemble, Material return. Serial / batch tracked items prompt for the right picker. Once posted, item quantities and warehouses are frozen — corrections raise a reversal + redo entry, never a silent update.

Editing rule: a posted Stock Entry's item lines are immutable. Only header metadata — notes, posting date within a 14-day window, return flag — can be edited via /manufacturing/stock-entries/[id]/edit. Everything else corrupts the ledger.

2.7Inventory & Warehouses

WhoDispatch · Admin · Accounts
Screens/inventory · /inventory/warehouses · /stock-balances · /reorder-rules · /stock-movements · /landed-cost-vouchers

Physical stock — where it is, how much, at what value. Warehouses come in eight types (RAW_MATERIAL, FINISHED_GOODS, WIP, SPARES, SCRAP, TRANSIT, DEALER_CONSIGNMENT, RETURNS). Stock levels roll up from an append-only StockMovement ledger; the FIFO / LIFO / MOVING_AVERAGE valuation runs off a parallel StockLedgerEntry queue.

Reorder rules

Per (product, warehouse). Reorder point + reorder quantity + lead time + safety stock + preferred vendor. When on-hand drops below the reorder point, an alert fires on the Owner Brief.

Landed cost vouchers

For freight, clearing, duty, or any post-receipt cost that should be absorbed into inventory value. Distributes across the receipt basis you pick (by qty / value / weight).

2.8HR & Payroll

WhoHR · Admin
Screens/hr/employees · /hr/wage-workers · /hr/attendance · /hr/leave · /hr/payroll/payslips · /hr/approvals/daily-work · /hr/recruitment/openings

Everything people-related. Two employee models by design — EmployeeV2 for salaried permanent staff with a full compensation structure, statutory identifiers (PF · ESI · TDS · Aadhaar hash · PAN · UAN), department, designation, and grade; and TemporaryWorker for shop-floor piece-rate hires with just name, phone, join date and optional email.

Attendance

Two capture methods — biometric device push, or the worker's phone via /e/attendance with GPS + selfie verification. Both write to AttendanceLog; the day-record rollup computes hours + overtime + half-day markers.

Daily work submission — piece-rate approval

The worker's day of piece-rate entries at /e/work gets a Submit today action that locks it for HR. HR reviews the summary at /hr/approvals/daily-work: approve rolls into the next payslip, reject with a note lets the worker resubmit.

Payslip generation

At /hr/payroll/payslipsGenerate for period. EmployeeV2 rows roll up base + allowances − statutory deductions − advance recoveries → net. TemporaryWorker rows sum approved piece-rate earnings for the period. Both write to /e/salary per worker.

2.9My Nickson — employee self-service

WhoEmployee (own view only)
Screens/e · /e/work · /e/attendance · /e/salary · /e/balance

The shop-floor worker's home. As of this revision the entire tree renders inside the standard AppShell — same sidebar, same install prompt, same command palette as everyone else. A dedicated "My Nickson" sidebar section (visible only to EMPLOYEE) holds the five surfaces.

  • Home — today's earnings, pending work, last payslip, ledger balance.
  • Work — log a piece-rate entry, submit today's work at day-end.
  • Attendance — punch in / out with GPS + selfie. Regularize a missed punch.
  • Salary — payslip history (or month-by-month piece-rate earnings for temp workers).
  • Balance — advances, recoveries, cash payments received, running net.

2.10Dispatch

WhoDispatch · Admin
Screens/dispatch · /dispatch/new · /dispatch/serial-numbers · /dispatch/warranty-claims

The path out. Dispatch order pulls from a confirmed sales order, allocates serial numbers from FG stock, generates the e-way bill, prints the delivery challan. Marked dispatched when the truck leaves.

Serial numbers

Every finished pump gets a unique serial — either generated at Job Card completion or imported from a batch. Serial + Batch + Dispatch + Customer is a four-way link that powers warranty for the pump's lifetime.

Warranty claims triage

Customers scanning the QR on a delivered pump can register warranty and later raise a claim. Both land on the dispatch team's /dispatch/warranty-claims queue — assign a technician, schedule the visit, coordinate replacement if needed, close on resolution.

2.11Finance & Accounting

WhoAccounts · Admin
Screens/finance · /finance/payments · /finance/credit-notes · /finance/ar-aging · /finance/msme · /finance/cash-register

Money in, money out, and the books. Invoices come from Commerce; payments settle them; credit notes reverse them.

Cash Register — non-GST cash movements

Every cash movement outside the GST-invoiced flow — below-threshold vendor purchases, walk-in cash sales without invoice, petty cash, employee advances, owner drawings, deposits, reverse-charge purchases. One book, complete visibility. Every entry carries a mandatory legal exemption tag from a fixed list, so the year-end CA pack splits the same records into three audit buckets cleanly.

The three buckets at year-end

  • GST-invoiced turnover — already in Commerce; goes into GSTR filings.
  • Non-GST taxable income — cash sales without invoice, below-threshold vendors; goes into ITR only.
  • Non-income entries — advances, deposits, owner transactions; neither GSTR nor ITR-taxable at the moment of entry.
Section 269ST guardrail: the form soft-blocks any entry ≥ ₹2 lakh in cash mode. Section 271DA penalty is 100 % of the transacted amount. Bank / UPI / cheque modes are unaffected.
Vendor threshold advisory: when a below-threshold vendor's cumulative unbilled outflows this fiscal year cross ~ ₹35 lakh (87 % of the ₹40 lakh registration threshold), the entry saves but the detail page banner tells you to ask that vendor to register for GST and start invoicing.

2.12Field & Service

WhoSales · Dispatch · Warranty
Screens/field/visits · /field/beats · /field/dcr · /helpdesk

The field force's daily rhythm. Visits log check-in / check-out at customer or dealer sites with GPS and optional selfie. Beat plans pre-define which dealers to visit which days. The Daily Call Report summarises the day. Helpdesk absorbs inbound tickets from customers, dealers, and internal — warranty claims from the public QR flow auto-create tickets here.

2.13Quality — QMS

WhoAdmin · Quality
Screens/qms · /qms/ncrs · /qms/capas

ISO 9001:2015-aligned. Non-conformance reports capture defects from incoming QC, in-process inspection, final QC, or customer complaint — severity classified, immediate containment logged, owner assigned. Corrective / preventive actions (CAPAs) trigger from NCRs or audit findings; root-cause analysis attached, action items with owners and due dates, effectiveness verification required before closure.

2.14Assets

WhoAdmin · Accounts · Maintenance
Screens/assets · /assets/amc-contracts · /assets/depreciation · /assets/maintenance

Fixed asset register — machines, vehicles, computers, furniture. Purchase cost, salvage value, useful life, depreciation method (SLM / WDV) power the depreciation schedule. AMC contracts renew with a 30-day-before-expiry alert. Preventive maintenance schedules (every X hours / km / months) surface due-date alerts on the maintenance calendar.

2.15Warranty

WhoPublic customers (registration + claim) · Warranty (handling)
Screens/w/[serial] · /w/[serial]/register · /dispatch/warranty-claims

Every finished pump ships with a QR sticker linking to /w/[serial]. First scan by the customer prompts warranty registration — name, phone, address, installation date — verified by WhatsApp OTP. Later scans show warranty status and a Report a problem action that files a claim + a helpdesk ticket. Warranty reps triage at /dispatch/warranty-claims: assign technician, schedule visit, approve replacement, close on resolution.

2.16Notifications

WhoAdmin · HR
Screens/notifications/announcements · /notifications/log

Announcements broadcast to a role, department, region, or custom user list — surfaced as an in-app banner with optional email / SMS / WhatsApp / push fan-out. Priority levels (LOW → NORMAL → HIGH → CRITICAL) and mandatory-ack flag for policy rollouts. Notification log is the append-only audit trail of every message the system has sent — recipient, channel, template, delivery status, retries. Use it to answer "did the customer get the invoice?".

2.17Settings

WhoAdmin
Screens/settings · /settings/integrations

Third-party API keys and integration toggles — IndiaMART lead webhook, WhatsApp Cloud API, GST GSP for IRN + e-way bill, PostHog, Sentry, notification templates. Every change is audit-logged.

III

Role playbooks

Each role's daily rhythm mapped to the console. Not everything on the list, every day — the load-bearing beats that keep the operation moving.

ADMIN · owner

Morning · through the day · end

Morning
  1. Owner brief at /dashboards/owner — yesterday's summary tiles, cash movement, pending approvals count.
  2. Inbox at /inbox for anything flagged.
  3. Finance dashboard for AR aging highlights.
Through the day
  1. Approve pending items at /workflows-admin/approvals — above-threshold POs, expense claims, leave.
  2. Review any HR-flagged daily work anomalies at /hr/approvals/daily-work.
  3. Answer team questions by jumping to their view via ⌘K.
End of day
  1. Skim /finance/cash-register — sanity-check the day's cash movements.
  2. Review /dashboards/sales to see what closed.
SALES

Fill the pipeline, then move it forward

Morning
  1. Kanban at /leads/kanban to see the day's pipeline shape.
  2. Beat plan at /field/beats for today's route.
  3. Filter /leads?assignedToId=<self>&stage=CONTACTED for the call list.
Through the day
  1. Log activities on each lead as calls happen.
  2. Push accepted quotes → orders at /commerce/quotes.
  3. Punch visits at /field/visits when meeting dealers.
  4. New leads walk in → /leads/new.
End of day
  1. File the Daily Call Report at /field/dcr/new.
ACCOUNTS

Books tight, breaches zero

Morning
  1. Finance dashboard for cash position and AR aging highlights.
  2. /finance/msme for any breach approaching the 45-day mark.
  3. AR aging report — build the collection call list.
Through the day
  1. Record incoming payments at /finance/payments/new.
  2. Match vendor invoices at /procurement/three-way-match.
  3. Log cash movements at /finance/cash-register/new — petty cash, below-threshold vendor purchases, walk-in cash sales.
  4. Issue credit notes at /finance/credit-notes/new as needed.
End of day
  1. Reconcile bank statement with recorded payments.
  2. Confirm the day's cash register entries.
PROCUREMENT · Accounts + Admin

Keep the line supplied

  1. Procurement hub for KPIs — open POs, pending 3-way matches, days-to-MSME breach.
  2. Reorder alerts firing at /inventory/reorder-rules.
  3. POs awaiting approval at /procurement/purchase-orders?status=PENDING_APPROVAL.
  4. Raise new POs when alerts fire; receive against POs at /procurement/grns as vendors deliver.
  5. Cash purchases from market runs → /procurement/grns/new.
  6. Consult vendor–part directory before raising the next PO to spot the cheapest historical supplier.
  7. Onboard new vendors as needed at /procurement/vendors/new.
HR

People first, then paperwork

Morning
  1. HR dashboard for attendance rate, pending approvals, headcount.
  2. Attendance grid at /hr/attendance — absentees, regularization requests.
  3. Leave applications waiting at /hr/leave/approvals.
Through the day
  1. Approve daily work submissions at /hr/approvals/daily-work.
  2. Handle expense claims at /hr/expense/claims.
  3. Onboard new hires at /hr/employees/new or /hr/wage-workers/new.
Payroll day (monthly)
  1. Generate payslips for the period at /hr/payroll/payslips.
  2. Spot-check outliers before finalising.
  3. Trigger bulk payment via /finance/payments.
DISPATCH

Ready → truck → gate

  1. Dispatch dashboard for today's queue by priority.
  2. Orders at /dispatch?status=READY — ready to leave today.
  3. Pick + pack, allocate serial numbers as items are packed.
  4. Generate e-way bills at dispatch time.
  5. Print delivery challans, hand to driver.
  6. Mark dispatched when the truck leaves the plant.
  7. Triage new warranty claims at /dispatch/warranty-claims.
WARRANTY

Every claim, every day

  1. Open queue + new claims at /dispatch/warranty-claims.
  2. My open helpdesk tickets at /helpdesk/tickets?assignedToId=<self>.
  3. Assign technicians to claims; schedule visits.
  4. Coordinate with field service; update customers on progress.
  5. Approve replacement units when diagnosis warrants; close claims with a resolution note.
EMPLOYEE · shop-floor

Punch in · log work · punch out

Start of shift
  1. Open PWA on phone → /e/attendance → punch in.
Through the day
  1. Complete assigned work.
  2. /e/work → log an entry for each operation completed.
End of shift
  1. Punch out.
  2. /e/work → submit today's work (locks the day for HR review).
  3. Check /e/salary for month-so-far earnings.
  4. Check /e/balance for running ledger.
IV

Walkthroughs

Six real scenarios using the seeded data. Real names, real values to type, real screens to expect. If you've never used the console before, work through these end-to-end — you'll understand the whole thing.

01

A dealer inquiry becomes a booked order

Sales · about 12 minutes end-to-end

Balbir Singh Pump House (Ludhiana) rings the office asking for ten V4 5HP submersibles for a tubewell project near Sultanpur Lodhi. The dealer already exists in the master. Vikram Bhalla, the sales manager, takes it from a fresh lead to a confirmed order.

Before you start
  • Signed in as sales@test.nicksonpumps.com (password TestPass123!).
  • Dealer Balbir Singh Pump House exists (DLR-PB-... seeded).
  • Product Nickson V4 5HP Submersible (NIC-V4-5HP) exists in the catalog.
  1. Open the leads list

    In the sidebar under Leads & Data, click All Leads — you land on /leads.

    Top-right corner: click + New Lead.

    ExpectedThe New Lead form opens at /leads/new.
  2. Fill in the lead

    Enter these values (copy-safe):

    Buyer nameBalbir Singh
    Phone+91 98888-12345
    CityLudhiana
    SourcePHONE
    Product interestNIC-V4-5HP
    Estimated quantity10
    QueryWants 10 x V4 5HP for a tubewell project near Sultanpur Lodhi. Requesting a bulk quote.

    Click Save.

    ExpectedLead saves. Detail page opens with stage NEW.
  3. Log the call as an activity

    On the lead detail page, scroll to the Activity timeline.

    Click + Add note and type: Called Balbir at 11:20am. Confirmed spec, price expectation, 3-week delivery window acceptable.

    From the Stage dropdown at the top, change NEWQUALIFIED.

    ExpectedThe activity appears in the timeline with your name and timestamp. The lead's stage badge updates.
  4. Link to the existing dealer

    On the lead detail page, find the Dealer field in the right-hand panel.

    Start typing Balbir — the picker suggests Balbir Singh Pump House · DLR-PB-.... Select it.

    Click Save.

    ExpectedThe dealer link appears on the lead. Opening the dealer detail page now shows this lead in its history.
  5. Create a quote

    Sidebar → CommerceQuotes → click + New Quote.

    Fill in:

    Customer / dealerBalbir Singh Pump House
    Delivery address(auto-fills from dealer)
    Validity30 days from today

    Under Line items, click + Add line:

    ProductNIC-V4-5HP
    Quantity10
    Unit price18500
    GST rate18

    Click Save quote.

    ExpectedQuote saves with number QT-YYYY-#####. Subtotal ₹1,85,000; CGST + SGST ₹33,300 (intra-state PB → PB); total ₹2,18,300.
  6. Convert to a sales order

    On the quote detail page, click Convert to Order in the top-right.

    Confirm the customer + lines match what you quoted.

    Click Create order.

    ExpectedNew Sales Order at /commerce/orders/[id] with status DRAFT. Lines copied from the quote.
  7. Confirm the order

    Once you've received the customer's PO or advance, click Confirm order on the detail page.

    The status moves to CONFIRMED and the order enters the Manufacturing + Dispatch queues.

Verify success Navigate to /commerce/orders?status=CONFIRMED — the new order appears at the top with Balbir Singh Pump House as the customer. On the dispatch dashboard (/dashboards/dispatch) the order shows up in Ready to prepare.
If you don't see the dealer suggested It means either the dealer status isn't ACTIVE, or the dealer master isn't seeded. Run scripts/seed-day-one-data.ts to reset the demo dealer roster.
02

Bearings from the market — cash purchase

Procurement · about 5 minutes

Simran Kaur, the store keeper, drives to Chowk Mehta and buys five SKF 6205 bearings from Guru Nanak Hardware — cash, no bill because the shop is below the GST threshold. She logs it in the CRM the moment she's back so stock is up to date and the paperwork is clean for the CA.

Before you start
  • Signed in as accounts@test.nicksonpumps.com, dispatch@test.nicksonpumps.com, or admin@test.nicksonpumps.com.
  • The PLANT-MAIN warehouse and the RM-BRG-6205 product both exist (from master seed).
  1. Open the cash-purchase GRN form

    Sidebar → ProcurementGoods receipts → click + Cash purchase at the top-right.

    ExpectedThe form opens at /procurement/grns/new.
  2. Switch vendor mode to ad-hoc

    Top of the form: the vendor mode toggle. Click Ad-hoc / market.

    Enter shop details:

    Shop / supplier nameGuru Nanak Hardware, Chowk Mehta
    Phone+91 98765-43210
    GSTIN(leave blank — shop is below threshold, no GSTIN)
  3. Set receipt meta

    Fill:

    WarehousePLANT-MAIN · Main Plant (default)
    Received atNow (default)
    Vehicle number(leave blank)
    Bill number(no bill — leave blank)
  4. Add the line item

    Under What did you buy?, on the first row of the table, start typing in the Item cell: SKF 6205.

    The catalog auto-fills. Select SKF 6205-2Z Deep Groove Ball Bearing. The SKU column auto-populates to RM-BRG-6205.

    Fill the rest of the row:

    UOMEACH
    Quantity5
    Unit ₹1600
    GST %0

    The row total shows ₹8,000 at the right.

    ExpectedSubtotal ₹8,000, GST ₹0, grand total ₹8,000 in the footer.
  5. Record the payment

    Bottom section, How was it paid?:

    ModeCash
    Amount paid8000.00
    ReferenceVoucher 42

    Click Post cash-purchase receipt.

    ExpectedPost succeeds, redirects to the GRN detail page with number GRN-YY-######, status POSTED. Stock ledger for RM-BRG-6205 at PLANT-MAIN increments by 5.
Verify success Navigate to /procurement/vendor-parts — the (RM-BRG-6205, ad-hoc "Guru Nanak Hardware") pair now shows a "1 cash" pill next to it. Also check /inventory/stock-balances filtered to RM-BRG-6205 — the qty at PLANT-MAIN went up by 5.
Section 269ST reminder The console soft-blocks any cash-mode entry ≥ ₹2,00,000. If you're buying that much in one go, split into smaller receipts or switch to bank/UPI/cheque mode.
03

Petty cash — tea for the shop floor

Accounts · under 2 minutes

Ravi (accountant) hands over ₹340 from the office kitty to a tea stall. No goods came in, no invoice out — just money moving. This is a Cash Register entry, not a GRN. The distinction matters because the CA at year-end wants to see kitty spend split from stock purchases.

Before you start
  • Signed in as accounts@test.nicksonpumps.com or admin@test.nicksonpumps.com.
  1. Open the Cash Register

    Sidebar → FinanceCash Register.

    Top-right: + Log entry.

    ExpectedThe form opens at /finance/cash-register/new.
  2. Pick direction and nature

    Direction toggle at the top: click Money out (amber).

    Nature dropdown: select Kitty spend (tea, courier, small consumable).

  3. Fill the numbers
    Amount (₹)340
    Entry dateToday (default)
    Payment modeCash
  4. Counterparty
    NameAmritsar Tea Stall
    Phone / Reference(leave blank)
    Link to dealer / vendor(leave blank)
  5. Pick the legal exemption

    This is the mandatory field — the whole point of the module. Select the radio for Petty cash under limit.

    Description (optional): Tea and snacks for factory floor during machining shift.

    Click Log entry.

    ExpectedRedirects to the entry detail page at /finance/cash-register/[id]. Voucher code CR-YYYYMMDD-####.
Verify success Back at /finance/cash-register, today's Money out tile is up by ₹340. The new row shows at the top of the list with reason Petty cash and an amber Out pill.
Don't use a cash-purchase GRN for this A GRN moves stock. Tea doesn't become inventory. If you catch yourself opening /procurement/grns/new to log something that's purely money-out with no goods received, switch to /finance/cash-register/new — that's the right home.
04

HR approves a worker's day of piece-rate

HR · about 3 minutes per worker

At day-end, worker "Test Temp Worker" (worker@) submitted her work for the day — 48 pieces of V4 impeller assembly. Sunita (HR Executive) reviews it the next morning and approves so it rolls into the next payslip.

Before you start
  • Signed in as hr@test.nicksonpumps.com or admin@test.nicksonpumps.com.
  • Worker has already submitted a day's work via /e/work.
  1. Open the approvals queue

    Sidebar → HRApprovalsDaily Work Approvals.

    ExpectedList at /hr/approvals/daily-work shows submitted-but-not-reviewed entries.
  2. Open a submission

    Click the row for Test Temp Worker · today's date · 48 pcs · ₹2,160.

    The detail page opens with a table of the day's entries — each operation, piece count, rate, line total.

  3. Sanity-check the numbers

    Compare against the workstation log or the supervisor's tally sheet.

    Look for outliers — an unusually high piece count for the operation duration, or an operation the worker isn't normally on.

    If any line looks off, click Reject and add a note like "Please split OP-WIND-V4-5HP from OP-BAL-ROTOR and resubmit." The worker can then fix and resubmit.

  4. Approve

    If everything checks out, click Approve.

    Optional note field: leave a one-liner if there's context worth preserving.

    ExpectedStatus changes to APPROVED. The row disappears from the pending queue.
Verify success The worker's /e/salary page (when they log in) reflects the approved earnings in month-to-date. When you run the next payslip generation at /hr/payroll/payslips, this day rolls into her total.
05

A shop-floor worker's day, on the phone

Employee · under 90 seconds each end + during work

Ramesh Yadav (temp worker) opens the Nickson CRM PWA on his phone when he arrives at the plant, logs work through the day, and punches out at end of shift.

Before you start
  • PWA installed on Ramesh's phone (see Part I, §1.2).
  • Signed in as worker@test.nicksonpumps.com, or via phone-OTP at +91 9999-999-902.
  • Location permission granted (first-time only).
  1. Punch in at start of shift

    Open the app. Sidebar → My NicksonAttendance. Or tap the app icon and go straight to /e/attendance.

    Tap the big green Punch In button.

    The phone camera opens for a quick selfie. Take it, tap Use photo.

    ExpectedAn entry appears in today's list: IN · timestamp · location "Jagdish Industries plant". A green Present banner shows at the top.
  2. Log the day's first piece-rate work

    Sidebar → My NicksonMy work.

    Tap + Log entry.

    OperationV4 5HP impeller assembly
    Pieces24
    Notes(optional)

    Tap Save. Rate is auto-fetched from the operation master; earnings for this entry show as ₹1,080 (24 × ₹45).

  3. Log more entries as work progresses

    After lunch Ramesh does another 24 pieces on the same operation. Same form, tap + Log entry, another 24 pieces.

    The top tile Today's earnings ticks up to ₹2,160 across two entries.

    Same operation same day The database enforces one row per (worker, operation, date). If Ramesh already logged 24 for this operation today, saving another 24 will replace, not add. To add, edit the existing row and change 24 → 48.
  4. Punch out at end of shift

    Back to /e/attendance → tap Punch Out. Selfie again, tap Use photo.

    ExpectedToday's list shows both IN and OUT punches with timestamps. The day's total hours computes at the top.
  5. Submit today for HR review

    Sidebar → My NicksonMy work.

    Bottom of the page: Submit today's work. Tap it.

    Confirmation prompt shows the day's total (48 pcs, ₹2,160). Tap Yes, submit.

    ExpectedThe day locks. Ramesh sees a Submitted, awaiting HR review banner. The row is now in Sunita's queue at /hr/approvals/daily-work (see scenario 04).
Verify success Tap Salary or Balance in the sidebar — today's earnings show under "This month". If HR approves the submission, the amount stays; if rejected, Ramesh gets a notification to fix and resubmit.
06

Warranty claim — from customer QR to technician dispatch

Warranty · about 5 minutes to triage

A farmer in Sirsa scans the QR sticker on his V4 5HP pump — installed 6 months ago — and reports that the pump is running but discharge has dropped by half. The claim lands in the warranty team's queue. The warranty rep assigns a technician and schedules a visit.

Before you start
  • Signed in as warranty@test.nicksonpumps.com or admin@test.nicksonpumps.com.
  • Customer has already registered the warranty via the public QR flow (/w/[serial]/register).
  • A warranty claim has been raised via /w/[serial]Report a problem.
  1. Open the warranty claim queue

    Sidebar → Field & ServiceWarranty Claims. Or if it's your role landing, you're already there at /dispatch/warranty-claims.

    New claims sort to the top with an Open pill.

  2. Read the claim

    Click the top row. Detail page shows:

    • Pump serial, model, dispatch date, warranty valid-till date
    • Customer name, phone, address, installation location (map link)
    • Issue type (in this case: Low discharge) + customer description + photos they uploaded
  3. Assign a technician

    Right-hand panel: Assign technician.

    Pick from the technician dropdown — the list is field-service staff filtered to the customer's region.

    Set visit date (default: 2 working days out; adjust if the customer specified a slot).

    Click Assign.

    ExpectedClaim status moves from OPENTECHNICIAN_ASSIGNED. Customer receives an SMS + WhatsApp with the visit slot. The technician sees the visit in their /field/visits queue.
  4. Wait for the visit outcome

    The technician visits the customer, diagnoses the issue, logs findings on the visit detail page. Common outcomes:

    • Field-fixable — cleaned strainer, tightened seal — technician closes visit; you close the claim with Resolved on site.
    • Replacement needed — motor burnt, impeller worn — technician requests a replacement pump; you approve, dispatch a fresh unit against the claim.
    • Out of warranty — misuse, damage — technician logs the reason; you close the claim as Out of warranty, customer gets a quote for paid service.
  5. Close the claim

    Once the outcome is known, click Close claim. Pick resolution status and add a note explaining the outcome.

    ExpectedStatus CLOSED with a resolution timestamp. Customer receives a closure notification via WhatsApp.
Verify success The claim disappears from the open queue. On /dashboards/quality, the closed-claim count increments and the mean-time-to-close chart updates. If the closure was Replacement dispatched, the fresh serial number is now linked to the customer for their new warranty window.
V

Reports & dashboards

Aggregations that turn day-in day-out entries into decisions. One dashboard per role, plus a year-end pack for the CA.

Dashboard Reads Shows
/dashboards/owner ADMIN Yesterday's summary — new leads, orders booked, cash in/out, WIP work orders, dispatches, pending approvals, reorder alerts.
/dashboards/sales ADMIN · SALES Pipeline value by stage, win rate, rep leaderboard, top products, conversion funnel.
/dashboards/finance ADMIN · ACCOUNTS Cash position, AR outstanding by aging bucket, AP outstanding, MSME breach count, monthly cash flows.
/dashboards/hr ADMIN · HR Headcount by department, today's attendance %, absentees, pending approvals, monthly payroll accrual.
/dashboards/quality ADMIN · QUALITY QC pass rate, open NCRs by severity, overdue CAPAs, calibrations due.
/dashboards/employee ADMIN · shop-floor managers Attendance heat map, per-worker piece-rate productivity, weekly accrual, anomalies.
/dashboards/dispatch ADMIN · DISPATCH Today's dispatch queue, on-time dispatch %, warranty claim inflow.
/dashboards/field ADMIN · SALES Field-rep visit counts, beat coverage, dealer touch frequency.

Year-end pack for the CA

Exports to hand your Chartered Accountant at financial year end:

  • /commerce/invoices?fromDate=&toDate= — GST-invoiced sales (CSV export).
  • /procurement/vendor-invoices?fromDate=&toDate= — GST-invoiced purchases (CSV).
  • /finance/cash-register?from=&to= — non-GST cash movements, tagged by legal reason.
  • /finance/payments?fromDate=&toDate= — payments log.
  • /finance/msme — MSME 45-day compliance report.
  • /hr/payroll/payslips?year= — annual payroll summary.
Every Cash Register row carries a legal exemption tag, so the same record set splits cleanly into ITR-only / GSTR / non-income buckets — no reconciling headache.
VI

Reference

Compliance guardrails, the URL directory, test credentials, and where to shout when something's off.

6.1Compliance guardrails

Automatic protections the console enforces. You don't have to remember them — the system asks the right question before you save.

Guardrail Where Prevents
Section 269ST cash cap /finance/cash-register/new Soft-blocks any cash-mode entry ≥ ₹2 lakh. Section 271DA penalty is 100 % of the amount.
MSME 45-day gate vendor invoice save · /finance/msme Warns when an invoice is going to breach the 45-day statutory limit (Section 43B).
Vendor threshold advisory Cash Register save Warns at 87 % of ₹40 lakh cumulative unbilled purchases from a single vendor in a fiscal year.
Back-date lock · Cash Register Cash Register form No entries older than 90 days without admin re-opening the accounting period.
Back-date lock · Stock Entry meta Stock Entry edit Posting date can't shift more than 14 days.
Ledger integrity Stock Entry detail Item quantity / warehouse frozen once posted. Corrections raise a reversal + redo.
PO approval workflow Purchase Order save Above-threshold POs need explicit approval before being sent to vendor.
BOM activation BOM detail DRAFT BOMs can't drive Work Orders. Release explicitly.
Duplicate GRN detection GRN save Warns if the same vendor + PO already has a POSTED GRN today.

6.2URL directory

Public /login /w/[serial] /w/[serial]/register /api/health
Sales /leads · /leads/kanban · /leads/new · /leads/[id] /dealers · /dealers/new · /dealers/[id]
Products /products · /products/new · /products/[id] /products/attributes · /products/variants
Commerce /commerce/quotes · /commerce/quotes/new /commerce/orders · /commerce/orders/new /commerce/invoices · /commerce/invoices/[id]
Procurement /procurement (hub) /procurement/vendors · /procurement/vendors/new /procurement/purchase-orders /procurement/grns · /procurement/grns/new /procurement/vendor-invoices /procurement/vendor-parts /procurement/three-way-match
Manufacturing /manufacturing (hub) /manufacturing/boms · /boms/new · /boms/[id] /manufacturing/work-orders /manufacturing/job-cards · /job-cards/new /manufacturing/workstations /manufacturing/stock-entries · /stock-entries/new /manufacturing/stock-entries/[id]/edit
Inventory /inventory (hub) /inventory/warehouses /inventory/stock-balances /inventory/stock-levels /inventory/reorder-rules /inventory/stock-movements /inventory/landed-cost-vouchers
HR & Payroll /hr (hub) /hr/employees · /hr/employees/new /hr/wage-workers · /hr/wage-workers/new /hr/departments · /hr/designations /hr/attendance · /hr/attendance/regularize /hr/leave · /hr/leave/new · /leave/approvals /hr/expense/claims · /expense/advances /hr/payroll/payslips /hr/salary-structures /hr/piece-rate-operations · /piece-rate-overrides /hr/approvals/daily-work /hr/recruitment/openings /hr/performance/reviews
Employee (self) /e (home) /e/work /e/attendance /e/salary /e/balance
Dispatch /dispatch (hub) /dispatch/new · /dispatch/[id] /dispatch/serial-numbers /dispatch/warranty-claims
Finance /finance (hub) /finance/invoices · /finance/payments /finance/credit-notes · /finance/ar-aging /finance/msme · /finance/msme/breach-log /finance/cash-register · /new · /[id]
Field & Service /field (hub) /field/visits · /field/beats · /field/dcr /helpdesk · /helpdesk/tickets/new
Quality /qms (hub) /qms/ncrs · /qms/ncrs/new /qms/capas · /qms/capas/new
Assets /assets · /assets/[id] /assets/amc-contracts /assets/depreciation /assets/maintenance
Dashboards /dashboards (index) /dashboards/owner · sales · finance /dashboards/hr · quality · employee /dashboards/dispatch · field
Notifications /notifications/announcements /notifications/log
Settings /settings /settings/integrations
Approvals /workflows-admin/approvals /workflows-admin/approvals/[id]
CMS content /content/banners · /content/faqs /content/industries · /content/pages

6.3Test credentials

Nine test logins are seeded on prod. All share password TestPass123!. Rotate before you'd hand these to anyone real — they exist for staff walkthroughs and demos.

Login Role Notes
admin@test.nicksonpumps.comADMINFull app · owner view
sales@test.nicksonpumps.comSALESLeads, dealers, quotes, orders
dispatch@test.nicksonpumps.comDISPATCHDispatch queue, serials, warranty triage
accounts@test.nicksonpumps.comACCOUNTSFinance, invoices, cash register
warranty@test.nicksonpumps.comWARRANTYWarranty claims, helpdesk tickets
hr@test.nicksonpumps.comHRHR, payroll, attendance, approvals
dealer@test.nicksonpumps.comDEALER_PORTALExternal dealer self-service
employee@test.nicksonpumps.comEMPLOYEELinked to TMP-2026-0002
worker@test.nicksonpumps.comEMPLOYEEAlso phone-OTP at +91 9999-999-902

6.4Support

  • Business owner · Rahul Singhrahulsingh0893450@gmail.com · +91 98772-69207
  • Developer · Tarun Bhardwajitarunbhardwaj@gmail.com
  • CRM issues & feedback — file a ticket at /helpdesk/tickets/new with category set to internal.
VII

Options & choices

Every meaningful dropdown, radio, and status enum in the console — what each value means, when to reach for it, why it matters, and the common mistake to avoid.

7.1Sales & Leads

Lead stage

Every lead lives in one stage at a time. The whole daily kanban lives off this field.

Value What / when to use Downstream effect Common mistake
NEW Just captured. No conversation yet. Every incoming lead — IndiaMART, walk-in, phone — starts here. Owner brief flags any NEW lead older than 24 hours as untouched. Leaving a lead in NEW after the first call — move it to CONTACTED right away.
CONTACTED You've reached the buyer at least once — even just to acknowledge the inquiry. Lead scoring events start counting. Advancing to QUALIFIED before you actually know their spec, budget, and timing.
QUALIFIED You know what they want (SKU + quantity), their budget range, and their expected timing. Lead becomes eligible to open a quote against. Marking QUALIFIED to look busy on the kanban when you haven't actually confirmed the spec.
PROPOSAL_SENT A quote has been sent — email or WhatsApp — and you're waiting for a decision. Aging timer starts. Sales dashboard shows this as "in review" pipeline value. Not following up on stale PROPOSAL_SENT leads — they rot the pipeline.
NEGOTIATION Buyer's engaging but haggling — price, terms, spec change. Manager gets a nudge on the dashboard to help close. Skipping this and jumping straight from PROPOSAL_SENT to WON — you lose the "why did we discount?" trail.
WON Buyer has said yes. Usually paired with quote → order conversion. closedAt stamped. Rep leaderboard updates. Dealer credit history extends. Marking WON before the order is actually confirmed. Wait for the customer PO or advance.
LOST Buyer bought elsewhere or dropped off. Set a loss reason so the pattern is visible later. Feeds the loss-reason analytics. Marking LOST without a reason. "Ghosted" is a reason too — just say so.
ON_HOLD Deal paused — buyer's project got delayed, financing pending, seasonal. Removed from active aging metrics; reappears on the "revisit in X weeks" list. Using this as a permanent parking lot. Set a wake-up date.

Lead source

Where the lead came from. Drives attribution reports + which team owns the follow-up SLA.

Value What / when Downstream Mistake
INDIAMARTAuto-ingested from IndiaMART's webhook. Set automatically — don't override.UTM auto-populated from the payload. Rep auto-assigned by round-robin.Manually creating an "IndiaMART" lead when the actual source was a phone call — breaks source ROI.
WALK_INCustomer physically walked into the office or dealer shop.Usually pairs with a same-day WON conversion.Under-logging walk-ins because they feel too casual. Log them anyway — the pattern matters.
PHONECold or warm phone inquiry.SLA: first response within 4 business hours.-
DEALER_REFERRALExisting dealer referred a customer.Referral credit accrues to the dealer's account.Not linking the referring dealer — the credit gets lost.
WEB_FORMFrom the marketing site contact form.UTM captured from the page URL.-
TRADE_SHOWBusiness card / lead-form from a trade show.Batch-created after the event; tag with the show name.Losing the follow-up in the pile of cards — set a hard 7-day follow-up SLA on TRADE_SHOW leads.

7.2Products

Product status

ValueWhat / whenDownstreamMistake
ACTIVESellable + manufacturable. Shows up in every dropdown.Included in stock reports, sales forecasts, reorder rules.Making a product ACTIVE before the SKU + images + description are final. Draft-then-activate.
DISCONTINUEDNo longer manufactured or sold. Kept in the system for warranty on units already in the field.Hidden from sales quote picker. Still queryable for serial lookups.Deleting instead of discontinuing — you lose the warranty history.
BUILT_TO_ORDEROnly made when a specific customer PO comes in. No stock kept.Reorder rules disabled. Lead time surfaces on the quote.Marking regular SKUs BUILT_TO_ORDER — it turns off replenishment.

Stock valuation method

Set per product. Governs how the average cost is computed as receipts land.

ValueWhat / whenDownstreamMistake
FIFOFirst-in-first-out. Oldest stock is deemed consumed first. Standard for pumps and components without shelf-life concerns.Cost of sale reflects the oldest cost lot — usually lowest in an inflation environment.Changing the method mid-year — creates a discontinuity in valuation.
LIFOLast-in-first-out. Newest stock deemed consumed first. Not permitted under IND-AS / Ind-GAAP for most items — use only where auditor has explicitly permitted.Cost of sale reflects the newest cost — usually highest.Using LIFO without checking with the CA. Most SME auditors will disallow it.
MOVING_AVERAGERunning weighted average recomputed after every receipt. Best for consumables and low-value raw materials.Cost per unit updates continuously.-

Warranty start

ValueWhat / whenDownstreamMistake
DISPATCHWarranty clock starts the moment the pump leaves the plant. Default. Conservative from the customer's angle.Warranty valid-till = dispatch date + warrantyMonths.Using this for products with long dealer-shelf time — you'll get warranty claims on units that were never installed.
DEALER_RECEIPTClock starts when the dealer receives the unit at their warehouse. Better for slow-moving models.Uses the GRN date at the dealer warehouse.-
INSTALLATIONClock starts when the customer registers the warranty (records installation date at /w/[serial]/register).Warranty inactive until scan-and-register happens.Setting this on SKUs where dealers don't push customers to register — warranty never activates.

7.3Procurement

Vendor type

ValueWhat / whenDownstreamMistake
RAW_MATERIALCopper wire, steel, castings, bearings, insulation. Anything that becomes part of the finished pump.Feeds cost-of-goods rollup on BOMs.-
CONSUMABLENot part of the pump — tea, cotton waste, printer ink, safety gear.Categorized as operating expense in the ledger.Coding a real raw material as CONSUMABLE — it never rolls into BOM cost.
SERVICECalibration house, security agency, transporter, courier.Invoice usually posts to a specific expense head, not inventory.-
CAPEXNew machine, new vehicle, computer purchase.Invoice routes to Fixed Assets, not inventory.Treating capex as raw material — creates a phantom stock balance.
SUBCONTRACTORJob-work vendor — Singh Machining does your shafts, Chawla does winding piecework.PO turns into a subcontracting order; you send raw material to them and receive finished sub-assemblies back.Coding a subcontractor as RAW_MATERIAL — the job-work paperwork gets skipped.

Vendor status

ValueWhat / whenDownstreamMistake
PROSPECTTalking to them, not yet approved. Default on create.Can request quotes; cannot raise a formal PO.Forgetting to move to ACTIVE after docs are verified — POs sit blocked.
ACTIVEApproved and transacting.Full PO + GRN + invoice flow available.-
ON_HOLDTemporarily paused — quality issue under investigation, delivery dispute, or credit hold.New POs blocked; existing open POs continue.Leaving vendors ON_HOLD forever. Set an exit date or move to BLACKLISTED.
BLACKLISTEDNever buy from again. Fraud, repeated critical NCRs, credit fraud.All new activity blocked. Cannot be reactivated without admin override.Blacklisting on a single dispute — this is permanent-flag territory.
INACTIVEDiscontinued the relationship — not adversarial, just stopped. Historical records preserved.No new POs; historical rollups still work.-

Vendor onboarding stage

Independent from status — this is the paperwork progress.

ValueWhat / whenDownstreamMistake
REGISTEREDBasic info captured. No documents received yet.Vendor visible in reports but can't be used.-
DOCS_PENDINGWaiting on GST cert, PAN, bank details, MSME cert.Chase list surfaces on the procurement dashboard.Sitting on this stage — every day of delay is a day of delivery you're not getting.
DOCS_VERIFIEDAll docs received and internally checked.Ready for the final approval step.-
APPROVEDSign-off done. Status can now flip to ACTIVE.Formal POs unlocked.-
REJECTEDOnboarding failed — docs bad, KYC red flag.Blocks all transactions. Rejection reason logged for audit.Rejecting without a written reason.

GRN purchase type

The critical distinction — what kind of receipt this is. Set at GRN creation and never mutated.

ValueWhat / whenDownstreamMistake
PO_BACKEDClassic pull from an approved PO. Vendor sends the goods against a specific PO line.Feeds 3-way match (PO ↔ GRN ↔ Invoice). Vendor performance score computed from these.Creating a fake PO retroactively so the GRN "looks proper" — the receipt date won't match the PO date and audit picks it up.
CASH_PURCHASEMarket run — Simran drives to Chowk Mehta, buys parts, comes back. No PO cycle upstream.Skips 3-way match by design. Vendor performance score excludes these. Vendor picker offers "Ad-hoc / market" option so shops not in the vendor master still get logged.Using this for a supplier you actually have a PO relationship with — that supplier's vendor score gets skewed low because their cash receipts don't count.
DIRECT_INVOICEVendor sent stock + invoice without a PO. You didn't authorize the shipment but you're accepting delivery. Rare — happens with informal running arrangements.Same behaviour as CASH_PURCHASE for 3-way match; unlike cash, this one still gets a Vendor Invoice recorded downstream.Coding actual cash purchases as DIRECT_INVOICE — CA will look for an invoice that doesn't exist.

Cash-purchase payment mode

Shared enum used across cash-purchase GRN and Cash Register.

ValueWhat / whenDownstreamMistake
CASHPhysical currency handed over.Subject to Section 269ST cap: ≥ ₹2,00,000 soft-blocks.Coding UPI or wallet transfers as CASH just because "money left cash-in-hand" — the Section 269ST cap doesn't apply to digital.
UPIUPI transfer (PhonePe, GPay, Paytm, BHIM).Reference field takes the UPI transaction ID.-
BANK_TRANSFERRTGS, NEFT, IMPS.Reference takes the UTR / txn ref.-
CHEQUEPhysical cheque. Not settled until clearing.Reference takes the cheque number.Marking cheque as CASH — you'll double-count when the cheque clears.
CARDDebit / credit card swipe.Reference takes last 4 digits or txn ref.-
PENDINGNot yet paid — receipt on credit, will settle later.Shows on receivables (customer) or payables (vendor) side.Using PENDING when you have actually paid — the AR / AP report gets wrong.

QC decision (per GRN line)

ValueWhat / whenDownstreamMistake
PENDINGQC not yet done. Default until inspection.Stock not yet available; sits in inspection area.Bypassing this by marking ACCEPTED without inspection.
ACCEPTEDPassed inspection. Full qty enters usable stock.StockMovement RECEIPT posted for the accepted quantity.-
REJECTEDFailed inspection. Stock quarantined or returned.No stock movement for the rejected qty. Vendor performance score docked.Not filing an NCR alongside — you lose the root-cause trail.
REWORKFailed but fixable. Sent to sub-assembly or vendor.Sits in a separate WIP location until reworked.-
CONCESSIONFailed but accepted anyway with a formal concession note (from QC head or plant manager).Enters stock; flagged for downstream traceability.Approving CONCESSION verbally without the note. Written concession every time.

7.4Manufacturing

Stock Entry purpose

The most consequential enum in the system — each value posts differently to the stock ledger.

ValueWhat / whenDownstreamMistake
MATERIAL_TRANSFER_FOR_MANUFACTUREMove raw material from the Plant / RM warehouse to WIP for a specific work order.Stock reduces in From-WH, increases in To-WH. No cost impact yet.Using generic MATERIAL_TRANSFER instead — this variant is what links the movement back to a WorkOrder for MRP.
MANUFACTUREFinished goods coming out of WIP to FG warehouse. Also captures scrap generated.Increases FG stock, decreases WIP raw material consumption, posts weighted cost.Missing the scrap line — you'll have a phantom raw-material shortage later.
DISASSEMBLEUndo a build. Send a finished pump back to component stock. Rare — usually only for prototypes or QC failures caught after packing.FG decreases; components increase.Using this for warranty returns — that's MATERIAL_RETURN from a customer's angle.
MATERIAL_RETURNReturn of raw material from WIP back to store — surplus, quality reject sent back, WO cancelled.WIP decreases; Plant / RM warehouse increases.Confusing with warranty-return (dispatch side) or PO-reject (procurement side).

BOM status

ValueWhat / whenDownstreamMistake
DRAFTBeing designed. Changeable in place.Cannot drive Work Orders.Sitting in DRAFT for weeks — nothing produces until you release.
ACTIVEReleased. This version drives new Work Orders.Immutable — any change starts a new revision.Editing components after release — the system rejects it. Bump the revision instead.
OBSOLETESuperseded by a newer revision or discontinued along with the product.Existing WOs continue on this version; new WOs get the current version.-

Piece-rate operation kind

ValueWhat / when
WINDINGCoil winding — stator, rotor. Highest skill; highest per-piece rate.
MACHININGTurning, drilling, boring on lathe / CNC.
ASSEMBLYStack impellers, couple motor to pump body, wire connections.
TESTINGHydro pressure, insulation resistance, no-load current, final QC.
PAINTINGPrimer + finish coat on cast iron bodies.
PACKINGCorrugated / wooden crate + accessory pouch + label + serial etching.
OTHERAnything that doesn't fit above.

7.5Inventory

Warehouse type

Set once at warehouse creation. Governs which downstream flows can send stock in and out.

ValueWhat / whenDownstreamMistake
RAW_MATERIALMain stores. Receives GRN inflows; issues to WIP for manufacturing.Reorder rules point here.Using this as both RM and FG — split into two warehouses so counts stay honest.
FINISHED_GOODSWhere finished pumps sit before dispatch.Only Manufacture-purpose Stock Entries land here; dispatch pulls from here.-
WIPWork-in-progress floor. Material lives here from issue-to-line until MANUFACTURE.Value flows through this warehouse; cost accounting depends on accurate WIP tracking.Skipping WIP by sending raw material directly to FG — breaks cost accounting.
SPARESConsumable spares for machines, PPE, safety.Not part of BOM roll-up. Usually cost centre = maintenance.Mixing production raw materials into SPARES — they get treated as expense not asset.
SCRAPScrap generated in production. Sold to kabadi as scrap.Feeds a special "scrap sale" flow that posts to other income.Leaving scrap sitting forever — dispose regularly.
TRANSITStock in transit between warehouses. Held here until the receiving warehouse acknowledges.Auto-updated on inter-warehouse transfers.Manually posting into TRANSIT — this is system-managed only.
DEALER_CONSIGNMENTStock physically at a dealer's location but still owned by Nickson. dealerId FK required.Consignment sales flow: reduces this warehouse on the dealer's report + generates invoice.Creating one without linking to Dealer — the consignment reports don't roll up.
RETURNSWhere customer / dealer returns land pending inspection.NCR flows point here for the "returned item" queue.Merging with SCRAP — you lose the ability to rework or resell.

Reorder method

ValueWhat / whenMistake
REORDER_POINTTrigger when on-hand drops below reorderPoint. Order reorderQty.Setting reorder point too low — you'll stock out during vendor lead time.
MIN_MAXTrigger at minQty, order up to maxQty (variable order size).Not accounting for MOQ from the vendor — order sizes get rejected.
PERIODIC_REVIEWReview every reviewPeriodDays and order to a target level, ignoring the point.Using this for fast-moving items — you'll stock out between reviews.
FORECAST_BASEDUses demand-forecast module (Phase 4). Reorder based on projected consumption, not current on-hand.Turning on before the forecast has real history to fit — noisy signals.

7.6HR & Payroll

Employment status

ValueWhat / whenDownstreamMistake
ACTIVECurrently working. Default for a healthy hire.Included in payroll, attendance, statutory dues.-
ON_LEAVELong leave — maternity, extended medical, sabbatical.Still on payroll (as configured). Attendance not expected.Using this for a two-day leave. That's a Leave Application, not a status change.
RESIGNEDEmployee has resigned. Notice period may be ongoing.Payroll continues to last-working-day; F&F triggered on exit.Flipping to TERMINATED when they resigned. Different exit reasons matter for statutory reporting.
TERMINATEDCompany-initiated exit — cause or notice.F&F process, statutory settlement. Blacklisting flag if for cause.Terminating without HR sign-off — legal exposure.
SUSPENDEDTemporarily off duty — pending investigation, disciplinary.Not on payroll during suspension (or half-pay per policy).Leaving in SUSPENDED indefinitely.
RETIREDReached retirement age. Statutory payouts triggered.PF, gratuity, superannuation settled.-

Employment type

ValueWhat / whenMistake
PERMANENTRegular full-time salaried employee. Full statutory coverage (PF, ESI, gratuity).-
CONTRACTFixed-term contract (usually 1-3 years). Same statutory treatment as PERMANENT for PF / ESI.Not renewing on time — contract runs out silently and you're paying an unemployed person.
INTERNTrainee or intern. Usually stipend, no PF.Coding a full-timer as INTERN to skip PF — MSMEshould not go there.
CONSULTANTIndependent professional invoicing you. Not on payroll — pays via Vendor Invoice.Coding a consultant on payroll — messes up TDS and PF.
PART_TIMEFormal part-time salaried role.-

Attendance punch type

ValueWhat / whenMistake
INStart of shift. First punch of the day.-
OUTEnd of shift. Last punch of the day. Day-record rollup computes hours from IN → OUT.Forgetting the OUT punch — day counts as absent by policy.
BREAK_STARTOptional. Long break (lunch, prayer) that shouldn't count as worked hours.-
BREAK_ENDOptional. Resume after break.-

7.7Finance & Cash Register

Cash Register direction

ValueWhat / when
INFLOWMoney coming in — cash sale, advance received, owner capital in, refund from vendor.
OUTFLOWMoney going out — cash purchase, advance paid, kitty spend, owner drawing, reimbursement, refund to customer.

Cash Register nature

The specific kind of movement. Scoped by direction — Money in options differ from Money out.

ValueWhat / whenCommon confusion
SALE_CASHWalk-in customer paid cash, chose not to take a GST invoice. You still record income.Confusing with Advance Received — sale is complete goods handed over, advance is pending future delivery.
PURCHASE_CASHPaid cash for a below-threshold vendor purchase where a full cash-purchase GRN isn't warranted (e.g. printer paper).For actual physical goods entering stock, use Cash-purchase GRN instead — it hits the stock ledger.
ADVANCE_RECEIVEDCustomer paid an advance for a future order.Coding as SALE_CASH — you'll over-report income before the goods ship.
ADVANCE_PAIDYou paid a vendor advance against a future supply.Coding as PURCHASE_CASH — advance is refundable, expense is not.
KITTY_TOPUPMoving cash from bank / drawer into the office petty-cash imprest.Coding as OWNER_DRAWING — this is internal, not owner-personal.
KITTY_SPENDSpending from petty cash — tea, courier, printouts, small consumables.Using for anything over ₹500 — that's usually PURCHASE_CASH.
OWNER_CAPITAL_INOwner injects personal money into the business.Coding as SALE_CASH — this is capital, not income.
OWNER_DRAWINGOwner takes money out for personal use.Coding as REIMBURSEMENT — reimbursement is for staff, drawing is for the owner.
REIMBURSEMENTYou paid back a staff member for a business expense they covered personally.Coding as OWNER_DRAWING for owner reimbursement — owner reimbursement should be tagged as owner transaction with a reason note.
REFUNDMoney returned — either you sending it back to a customer, or a vendor sending it back to you.-
INTERNAL_TRANSFERMoving money between your own accounts — bank to till, till to bank, one bank to another.Marking as SALE / PURCHASE — this is not income or expense.
OTHERAnything not covered above. Include a note.Reaching for OTHER too easily — one of the specific options is usually right.

Cash Register exemption reason · the deepest reference

The mandatory field. Every entry needs one. The year-end CA pack uses this to split records into ITR / GSTR / non-income buckets.

ValueWhat it meansWhen to usePitfall
VENDOR_BELOW_GST_THRESHOLD Vendor's annual turnover is below ₹40L (goods) or ₹20L (services), so they're not GST-registered and legally cannot issue GST invoices. Hardware shops, tea stalls, small suppliers you regularly buy from without an invoice. Using for a vendor who should be registered (over threshold) — the console will warn you when this vendor crosses ~₹35L annual.
COMPOSITION_DEALER Vendor is on GST composition scheme (turnover under ₹1.5Cr). They can't issue a tax invoice — only a bill of supply with tax included. Local job workers, small services, some traders. Using for regular GST-registered vendors — different treatment.
B2C_NO_INVOICE_REQUESTED Walk-in end-customer paid cash and chose not to take a GST invoice. You still owe income tax; you just don't have GST-invoice paperwork for this transaction. Cash sales to consumers who prefer no invoice. Using this for a dealer / business buyer — B2B always needs an invoice under GST.
PETTY_CASH_UNDER_LIMIT Small purchase (typically < ₹500) where no bill was issued — tea, printouts, courier, minor repairs. Everyday petty cash outflows from the office kitty. Using for larger cash purchases — those need VENDOR_BELOW_GST_THRESHOLD or an actual cash-purchase GRN.
RCM_APPLICABLE Reverse Charge Mechanism applies — you (buyer) are liable to pay GST directly to the government instead of the vendor charging it. Purchase from unregistered supplier of a notified category, scrap dealer, GTA transport, security services from non-body-corporate. Forgetting to file the corresponding RCM entry in GSTR-3B — this exemption doesn't skip that filing.
EXEMPT_OR_NIL_RATED Items exempt or 0-rated under GST law. Fresh fruits, milk, certain agriculture items, salt, jaggery. Rare in a pump manufacturer's ledger. Occasionally food supplies for employees. Using for taxable items you just don't want to invoice — the CA will spot it.
EMPLOYEE_ADVANCE_OR_REIMBURSEMENT Money flow with a staff member — advance for work, reimbursement of business expenses, salary advance. Salary advance, travel reimbursement, expense claim payout. Coding purchase-from-a-vendor as this because the staff member handed cash — the underlying purchase reason still applies.
OWNER_TRANSACTION Owner's capital injection or drawing. Not income, not expense — it's on the owner's capital account. Owner puts personal money in; owner takes money out for personal use. Using for the owner's business travel expense reimbursement — that's EMPLOYEE_ADVANCE_OR_REIMBURSEMENT even for the owner.
INTERNAL_TRANSFER Cash moving between your own accounts. Not income or expense. Till-to-bank, bank-to-bank, imprest top-up. -
DEPOSIT_OR_SECURITY Refundable security deposit — held against future performance, gets returned. Not income at receipt. Customer advance held as security, dealer security deposit, tender EMD. Treating a non-refundable advance as deposit. If it will be applied to a future sale, it's ADVANCE_RECEIVED.
OTHER_LEGAL Any other legitimate exemption not covered above. Requires the note field to be filled with a one-line reason. Unusual one-off situations you can defend. Using OTHER_LEGAL as a lazy default — pick the specific option if one fits.

7.8Warranty

Warranty claim status

ValueWhat / whenDownstreamMistake
OPENCustomer just filed. Not yet triaged.Sits on the warranty rep's queue. SLA clock ticking.Sitting on this longer than 24 hours — customer trust erodes fast.
TECHNICIAN_ASSIGNEDWarranty rep has picked a technician and scheduled the visit.Customer notified. Visit shows on tech's queue.-
IN_SERVICETechnician has visited or is on-site.Time-on-site tracked from visit check-in.-
REPLACEMENT_APPROVEDDiagnosis says replace, not repair. Approver signed off.Dispatch new unit against this claim.Auto-approving without diagnosis — replacements are expensive.
CLOSEDResolved. Fixed on site, replaced, or out-of-warranty.Feeds MTTR chart on quality dashboard.Closing without a resolution note — audit trail is thin.
REJECTEDOut of warranty (misuse, tampering, past date).Customer notified. Optional paid-service quote generated.Rejecting without written reason — customer disputes are hard to defend.

Claim issue type

ValueWhat / when
MOTOR_FAILUREMotor won't start, burns, trips repeatedly.
IMPELLER_WEARDischarge dropped, unit still running.
SEAL_LEAKWater leaking from mechanical seal.
NOISE_VIBRATIONRough running, high noise — usually bearing or alignment.
ELECTRICAL_FAULTCable damage, insulation breakdown, capacitor issue.
CONTROL_PANELPanel-side fault — not the pump.
OTHERAnything else. Description mandatory.

7.9Notifications

Announcement audience

ValueWhat / whenMistake
ALL_STAFFEvery internal user. General policy rollout, festival greeting, holiday announcement.Using for a manufacturing-only notice — noise for sales / accounts.
ALL_DEALERSEvery dealer with an active portal login. Price revision, scheme launch, new SKU.Sending confidential internal info via this — dealers see it.
ROLETargeted at one role — HR only, dispatch only.Combining with a department filter for a role that spans departments — filter narrows too far.
DEPARTMENTEveryone in a department — Production only, Quality only.-
REGIONEveryone in a geography — North team, Punjab dealers only.-
CUSTOM_LISTSpecific users / dealers by ID.Hand-picking a list that should really be role-based — you'll miss new hires.

Notification channel

ValueWhat / when
IN_APPIn-app banner + notification bell. Default and cheapest.
EMAILFormal / long content, receipts, invoice PDFs. Ends up in Rahul's inbox for forever.
SMSShort, urgent, delivery-guaranteed even without smartphone. OTP, delivery arrival, dispatch reminder.
WHATSAPPRich messages with buttons, photos, PDFs. Most common in India. Uses Meta Cloud API.
PUSHPWA push notification. Requires user to have installed the app and granted permission.

Notification priority

ValueWhat / when
LOWInformational. Aggregated in a daily digest.
NORMALStandard. Shows in the inbox; no push interrupt.
HIGHPush notification fires. Sales lead assignment, approval waiting.
CRITICALPersistent banner + all channels. Server outage, statutory breach imminent, safety incident.
VIII

Every workflow & how it grows the business

The console isn't just a place to store records. Every workflow it runs is a lever — to grow revenue, reduce cost, speed operations, retain customers, protect against statutory risk, empower the team, or give the owner clarity. Here's the full inventory. For the important ones: what the old way looks like, what the console actually does, the impact, how to get the most out of it, and why this stack is worth bragging about.

8.1Grow revenue

Top-of-funnel to booked order. Every workflow here is about turning inquiries into rupees faster than the competition can.

01

Automatic lead capture from every channel

Sales · runs 24 × 7

The old way

IndiaMART leads sit unread in Rahul's email over the weekend. Walk-ins get scribbled on a notepad. Phone leads live in reps' heads. Half never enter the pipeline; the other half enter late.

The Nickson way

IndiaMART webhook lands every lead in /leads within seconds. Walk-ins go into a 30-second form on the rep's phone. Phone leads get typed while the call is happening. Every lead carries source, UTM, timestamp, and an auto-assigned owner.

ImpactZero lost leads. First-response SLA measurable instead of guessed. Rahul's team competes on speed, not on being first to check email.

Get the best out of it
  • Set up WhatsApp reply templates so first-touch happens in under 4 hours.
  • Turn on round-robin auto-assignment so leads get owned within seconds.
  • Review the kanban at /leads/kanban for 5 minutes every morning — that's your standup.
Why this is world-class Most SME CRMs stop at "record the lead". Nickson captures UTM attribution, runs lead scoring, auto-assigns by round-robin, and fires SLA-breach alerts — the same pipeline model IndiaMART's top-100 clients use, sized for an Amritsar family business.
02

Kanban pipeline — the whole sales team on one page

Sales · daily

The old way

Sunday-night Excel scramble. Rep stage tracking in reps' heads. Manager finds out about a stalled deal three weeks late.

The Nickson way

Drag-and-drop kanban at /leads/kanban. Aging alerts on stalled cards. Rep leaderboard live. Any stage or rep is one filter away.

ImpactThe 45-minute weekly review becomes a 5-minute daily glance. Deals that were rotting come back into focus. Rep coaching moves from monthly to daily.

Get the best out of it
  • Filter to unassigned leads first (?assignedToId=) — route them before anything else.
  • Sort by "days in stage" — anything over 7 days needs a nudge.
  • Use it as your morning standup screen.
Trello-quality UX inside a full ERP Most ERPs have a "leads list" that looks like Excel. Nickson gives you a live pipeline board that feels like a modern SaaS product — because it is one.
03

Quote → Order → Invoice — end-to-end in one system

Sales + Accounts · every deal

The old way

Quote drafted in Word. GST computed on a calculator. Emailed as PDF. Customer confirms; then someone re-types everything into an order sheet, then again into an invoice. Three days of re-entry, mistakes multiply.

The Nickson way

Quote built from the catalog with GST auto-computed and correct CGST/SGST/IGST decided by state codes. One-click Convert to Order. On dispatch, one-click Generate Invoice with IRN + e-way bill pulled from NIC.

ImpactQuote-to-invoice cycle from 3-4 days to under 24 hours. Impulse buyers close before they shop the market. IRN + e-way bill automated — no NIC portal juggling.

Get the best out of it
  • Pre-build T&C templates per product line and per dealer tier.
  • WhatsApp the quote PDF instead of emailing — 3x higher response rate in India.
  • Use dealer tier auto-pricing so reps can't underquote by mistake.
NIC-integrated invoicing, sized for you Auto-IRN and auto-e-way-bill are usually enterprise features. Nickson has them running through NIC's GSP integration — no manual portal login, no reference-number typing, no ₹200 CA-firm fee per invoice.
04

Dealer credit & tier management

Sales + Accounts · foundational

The old way

Credit limits in a notebook. Tier badges informal ("Balbir is a good dealer, give him 45 days"). Sales rep quotes a price and finds out later it was wrong for the tier.

The Nickson way

Credit days set per dealer. Tier (Silver / Gold / Platinum) drives auto-pricing tiers on quotes. AR-aging report bucketed by dealer. MSME gate warns before invoices go stale.

ImpactRep quotes the right price on the first try. Owner knows exact credit exposure per dealer. Slow-paying dealers are visible before they become collection problems.

Same tier-based pricing model Havells and Crompton use Nothing about tier-based pricing is new — it's how big brands manage dealer networks. Nickson gives Amritsar the same tooling.
And also, powering revenue growth
  • Command palette (⌘K / Ctrl+K) — jump to any record in two keystrokes. Reps save 15-20 minutes a day.
  • QR scanner in the top bar — scan a pump serial or dealer QR to jump straight to that record.
  • Quick capture bar — new lead, task, or note in one tap without leaving the current page.
  • WhatsApp Cloud API integration — send quotes, invoices, dispatch alerts as WhatsApp messages with buttons and PDFs.
  • Beat planning — pre-set dealer visit routes so field reps don't waste time deciding.
  • Referral tracking — dealer-to-dealer referrals earn credit; visible on the referring dealer's account.
  • Multi-language dealer portal (EN / हिन्दी / ਪੰਜਾਬੀ) — dealers see the console in their preferred script.

8.2Reduce cost

Every rupee saved on procurement or inventory is a rupee that hits the bottom line without needing a new sale.

05

Vendor–Part directory — price memory that never forgets

Procurement · check before every PO

The old way

"I think Sharma gave us a better rate for bearings last quarter." Nobody has the receipt. Every PO starts a negotiation from zero.

The Nickson way

At /procurement/vendor-parts — every (product × vendor) pair with last unit price, average price, GRN count, cash-vs-PO split, last received date. Derived automatically from GRN history.

ImpactSystematically buy from the cheapest historical supplier. Typical savings: 3-5 % of raw material spend — pure margin, no extra sales needed.

Get the best out of it
  • Consult before raising every PO — 30 seconds saves 3 %.
  • Watch the "cash count" pill — vendors heavy on cash purchases may not be the cheapest.
  • Use it in vendor negotiations: "Last time you gave us ₹1,580; today's rate?"
Zero maintenance — pure derivation There's no separate table to keep up-to-date. Every GRN you post automatically feeds this report. Big-ERP shops pay ₹10 lakh a year for exactly this.
06

Three-way match — catch vendor overbilling automatically

Accounts · every vendor invoice

The old way

Accountant manually checks each invoice against the PO in an Excel file. Catches maybe half the mismatches. The other half quietly ship out as overpayments.

The Nickson way

Every vendor invoice runs an automated match: PO ↔ GRN ↔ Invoice, line by line. Mismatches — price, quantity, tax — land on the review queue at /procurement/three-way-match.

ImpactCatch 100 % of overbilling. Typical SME loses 1-2 % of purchase spend to vendor invoice errors nobody spotted. That's real money.

Get the best out of it
  • Set tolerance thresholds per vendor — new vendors zero tolerance, trusted ones a small % variance allowed.
  • Track repeated mismatch offenders — that's a vendor conversation.
SAP-grade automation, priced for an SME Three-way match is the crown jewel of SAP MM and Oracle Procurement. Nickson bundles it in. Enterprise auditors will recognise it instantly.
07

Reorder rule automation — never stock out, never over-order

Procurement · continuous

The old way

Reordering by memory or panic. Stock-outs during rush season halt production for two days. Over-ordering after ties up working capital.

The Nickson way

Reorder point + reorder qty + safety stock + lead time set per SKU. The moment on-hand drops below the reorder point, an alert fires on the Owner Brief and procurement dashboard.

ImpactZero unplanned stock-outs. Working capital tied up in inventory reduces 15-20 % — that money is now available for anything else.

Get the best out of it
  • Review reorder points quarterly — tighten as vendor reliability improves.
  • Set preferred supplier per rule — one-click PO from the alert.
  • Use the forecast-based method for seasonal items once you have a year of data.
And also, keeping costs down
  • Landed cost distribution — freight, duty, and clearing costs get spread across received items in the stock ledger, so item costs reflect reality.
  • MSME 45-day gate — protects against Section 43B disallowance (details in Compliance Shield).
  • Cash-purchase GRN — market runs turn into audit-clean records with catalog-auto-fill on line items.
  • Vendor performance scoring — on-time delivery rate, QC pass rate, invoice accuracy, per vendor.
  • Cycle counts — physical stock audit with variance tracking.
  • Batch expiry monitoring — for items that go bad (varnishes, adhesives).
  • Purchase approval workflow — above-threshold POs blocked until approved.

8.3Speed up operations

Making pumps faster, with fewer disputes, with better traceability — every hour saved on the floor is an hour of extra capacity.

08

BOM → Work Order → Job Cards → Piece-rate — the whole shop-floor chain

Manufacturing + HR · every production cycle

The old way

Foreman's memory + paper job cards + Sunday-night wage calculation from a tally book. Disputes about who did how many pieces. One person off sick means the shift can't be reconciled.

The Nickson way

BOM defines the components + operations. Work Order releases material to WIP. Job Cards assign workstations. Workers log piece-rate on their phone. HR approves next morning. Payroll accrues live.

ImpactTwo days per month saved on payroll cycle alone. Foreman freed for actual supervision instead of tally-book bookkeeping. Payroll disputes drop to near-zero.

Get the best out of it
  • Set piece-rate per operation and per HP class — winding a 20HP stator is worth 3× a 3HP.
  • Use per-worker rate overrides for skilled hands who consistently deliver quality.
  • Cross-train workers on multiple operations — the console shows their operation mix per week.
End-to-end shop-floor visibility, on the owner's phone Most manufacturing systems stop at ERP. Nickson extends into piece-rate payroll and shop-floor UX — you know what's happening on Machine 3 without walking to the plant.
09

Serial number lifetime tracking

Manufacturing → Dispatch → Warranty · every pump

The old way

Serial number etched on the pump and on the invoice. After dispatch: nothing. Warranty claim comes in — nobody can tie the pump back to the batch, the raw material lot, or the operator.

The Nickson way

Every serial is linked to: production batch → raw material lots → operator who did each stage → dispatch → dealer → customer → warranty registration → every service call.

ImpactWarranty disputes resolved in minutes with proof. Product quality issues traceable to the exact shift and batch — so root cause is real, not guessed.

Regulated-industry-grade traceability Pharma and aerospace have to do this; pumps typically don't. Nickson gives you a moat around your warranty programme — competitors can't match the reliability story.
And also, speeding operations
  • Stock Entry with FIFO valuation — cost of goods sold reflects the actual oldest-lot cost, not a moving average that hides margin drift.
  • Batch traceability — which copper wire batch went into which pump, forever.
  • Workstation utilization tracking — machine hours by workstation, spot idle capacity.
  • Job card time tracking — target vs actual per operation.
  • Serial etching capture — one operation logs the etch; serials are never lost.
  • NCR + CAPA loop — quality defects trigger root-cause + corrective action + effectiveness verification.

8.4Retain customers

A pump lasts 5-10 years; a customer relationship should last longer. Retention starts with knowing every pump you've shipped and every service call it's been on.

10

Public warranty QR + self-registration

Warranty · every pump, every customer

The old way

Warranty card in a drawer. Customer loses it. Six months later they call about a leak; you have to first figure out if they even bought from you.

The Nickson way

QR sticker on every pump → customer scans → registers online with WhatsApp OTP → serial ↔ customer ↔ phone number, permanent link. Every claim they raise later ties back to that record.

ImpactWarranty capture rate goes from ~30 % to 90 %+. Your customer database expands with every pump shipped — even the ones sold through dealers you never meet.

Get the best out of it
  • Train dealers to walk customers through registration at delivery — 30 seconds, unlocks warranty.
  • Follow up on unregistered serials 30 days after dispatch with an SMS reminder.
The customer registers themselves — you get the data for free Marketing this as "premium after-sales support" is fair. Most competitors don't even collect end-customer phone numbers, let alone maintain a searchable database.
11

Warranty claim triage → technician dispatch → close

Warranty + Field Service · every claim

The old way

Customer calls the office. Gets bounced to Rahul. Rahul rings a technician. Technician goes when he can. Two weeks of back-and-forth. Customer feels ignored.

The Nickson way

Customer files via QR. Warranty rep triages same-day. Technician sees the visit on their phone. Customer gets WhatsApp updates at every stage.

ImpactMean-time-to-close warranty claims drops from ~2 weeks to 3-5 days. Customer perception moves from "small local vendor" to "professional brand".

Enterprise-brand customer experience The claim-tracking + WhatsApp update flow is what Havells and Voltas offer their retail customers. Nickson gets the same on a small-business budget.
And also, growing customer lifetime value
  • Helpdesk ticket flow — unified inbox for customer / dealer / internal tickets.
  • Field visit logging with GPS + selfie — proof of every service call.
  • Beat coverage tracking — how often each dealer is visited, by whom.
  • Daily Call Reports — field reps summarise the day; manager reviews next morning.
  • Cross-sell suggestions from order history — a customer who bought a V4 5HP is a prime target for a control panel.

8.5Compliance shield

This is where a well-designed CRM saves you money you don't even know you're at risk of losing. Every one of the workflows below has a specific penalty attached — the console makes sure you don't step on any of them.

12

Cash Register with 11 legal exemption categories

Accounts + Admin · every cash movement

The old way

Cash movements happen "off books" — nothing recorded, or thrown into a spreadsheet at year-end. Audit-triggered scramble. CA has to reverse-engineer categories from bank statements.

The Nickson way

Every cash movement recorded live with a mandatory legal exemption tag (11 categories from below-threshold vendor to owner drawing). Year-end CA pack auto-splits records into GSTR / ITR / non-income buckets.

ImpactZero audit anxiety. Books look complete and defensible. CA's year-end effort drops from weeks to hours. The story to any officer is: "Every row has a legal reason; look at column B for ITR, column C for GSTR."

Get the best out of it
  • Train every cashier and store keeper on the 11 categories — the doc has the full table in Part VII.
  • Don't reach for OTHER_LEGAL as a default — pick the specific option.
  • Review last month's entries with the accountant on the first of each month.
Purpose-built for Indian SMEs Tally + Zoho + QuickBooks all lack this. Nickson designed the module around the actual sections of the Indian tax code — Section 269ST, MSMED Act 45-day gate, GST composition scheme, MSME registration threshold. This is what these tools should look like.
13

Section 269ST cash cap — the invisible ₹2-lakh landmine

Accounts · every cash entry

The old way

Cashier accepts ₹5 lakh cash from a big dealer. Somebody eventually notices. Section 271DA penalty = ₹5 lakh — 100 % of the transacted amount. Owner has to explain to the IT officer.

The Nickson way

Live warning appears the moment cash amount crosses ₹1.5 lakh. Soft-blocks the save at ₹2 lakh in cash mode. Bank / UPI / cheque modes are unaffected — no penalty risk there.

ImpactZero risk of accidental Section 271DA penalty. Saves ₹2 lakh+ per mistake avoided.

Most SME owners don't even know Section 269ST exists It's obscure. The penalty is brutal. The console knows.
14

MSME 45-day gate — protect against Section 43B disallowance

Procurement + Accounts · every MSME vendor invoice

The old way

MSME vendor's invoice sits unpaid for 90 days. Section 43B disallows the entire amount as an expense for that year. Direct hit to taxable profit.

The Nickson way

Every MSME-classified vendor invoice tracks days-to-45-day-deadline. Alerts fire on the finance dashboard when any invoice is approaching breach. MSMED Act 2006 compliance built into the workflow.

ImpactZero Section 43B disallowance. Depending on your MSME purchase volume, saves 10-15 % of tax on those payments — plain profit.

Even most CAs don't track this proactively MSMED Act 45-day compliance is a growing enforcement area. The console does it automatically.
And also, protecting against risk
  • Vendor threshold advisory — warns when a below-threshold vendor's annual purchases from you cross ~₹35 lakh (87 % of ₹40 lakh registration threshold).
  • Back-dating locks — no cash-register entries older than 90 days without admin re-opening the accounting period.
  • Ledger integrity — stock entry item quantities are immutable once posted; corrections require reversal + redo entries. Zero silent restatement.
  • Three-way match audit trail — every mismatch resolution logged with reviewer + timestamp + reason.
  • ISO 9001 evidence chain — NCR + CAPA + calibration records auditor-ready.
  • Row-level security — sales rep only sees their team's leads; workers only see their own payslip.
  • PII protection — Aadhaar last-4 + hash (never full number stored in plaintext).
  • Audit log on every mutation — who changed what, when, and to what value.

8.6Empower workers

Retention beats hiring. Shop-floor staff who feel seen — who can check their own attendance and earnings on their phone — stay longer and work better.

15

Phone-OTP login — nobody left out

Every worker · lifetime

The old way

Email-and-password login. Half the shop-floor doesn't have an email. Result: whatever workflows the system supports, only the salaried desk-staff use them.

The Nickson way

10-digit phone number → 6-digit OTP on WhatsApp → in. Works with any smartphone. HR onboards a new hire with just a phone; the User account materializes on first successful login.

Impact100 % shop-floor participation. Zero IT tickets about lost passwords. Every worker uses the system, so every workflow it powers actually happens.

Same auth model banks use Phone + OTP is the gold standard for high-trust, low-friction authentication in India. Nickson brings it to manufacturing where most competitors are still stuck on email.
16

PWA on personal phone — your Nickson, always on

Every worker · everyday

The old way

Worker waits till Monday to know how much they earned last week. No visibility into their own ledger. HR is the only source of truth; disputes are common.

The Nickson way

Nickson installs as an app on their phone. Punch attendance, log work, see today's earnings, month-to-date total, running balance — all in a mobile-first UI. Works offline on the login shell.

ImpactRetention up because workers feel valued and informed. HR queries about salary drop 60 %+. Trust between shop-floor and management climbs.

One of the first Indian manufacturing PWAs Progressive Web Apps are the modern web's answer to native apps — instant install, offline-capable, push notifications. Nickson is early to bring this to the shop-floor experience in India.
And also, empowering the team
  • Own ledger visibility (/e/balance) — advances, recoveries, cash payments received, running net. No opacity.
  • Attendance regularization requests — worker files a "fix missed punch" request; manager approves.
  • Multi-language interface — Hindi and Punjabi in addition to English for workers who prefer mother tongue.
  • Daily piece-rate submission loop — worker submits, HR approves, worker sees the outcome. Complete feedback loop.
  • Attendance auto-computes overtime + half-day markers — no manual bookkeeping.
  • Push notifications on payslip generation — worker knows the moment their pay is ready.

8.7Owner clarity

Rahul walking into the office Monday morning should know, in five minutes, everything that moved over the weekend. Every workflow below buys back time and attention.

17

Owner Brief dashboard — one page, every morning

Admin · daily first-thing

The old way

Sunday-night Excel scramble. Weekly review meetings that take an hour. Owner finds out about problems days after they became urgent.

The Nickson way

Log in Monday morning: one page shows yesterday's leads, orders booked, cash in/out, WIP work orders, dispatches, pending approvals, reorder alerts. Anything red gets drilled into; the rest is delegated.

Impact3-5 hours per week saved. Decisions made on live data instead of week-old numbers. Problems caught early — before they become expensive.

The "morning brief" pattern Amazon executives use One page, the most important five things. Nickson gives it to you sized for a family business, not a Fortune 500.
18

Notification bell — signal-to-noise, done right

Admin · continuous

The old way

WhatsApp groups exploding with unrelated messages. Important stuff missed. Owner's phone buzzes 100 times a day; the two that matter get lost.

The Nickson way

In-app inbox surfaces only what needs the owner's decision — approvals, statutory breaches approaching, high-severity items. Priority levels (LOW → NORMAL → HIGH → CRITICAL) filter the rest.

ImpactSignal-to-noise 10x. Owner responds to real requests in minutes, not days. WhatsApp goes back to being for personal messages.

PagerDuty-quality alerting, priced for a pump manufacturer Enterprise ops teams pay ₹10 lakh per year for this kind of intelligent alerting. Nickson bundles it.
And also, giving the owner clarity
  • Command palette (⌘K / Ctrl+K) — jump to any record, page, or dealer in two keystrokes.
  • QR scanner in the top bar — scan a pump, a package label, a vendor code, and land on that record.
  • Quick capture — new lead / task / note in one tap from any page.
  • Announcements — broadcast to any role, department, or region with fan-out to email / SMS / WhatsApp / push.
  • Language switch — Hindi or Punjabi if that's how the owner thinks.
  • Multi-role tour — logged in as ADMIN, jump into any other role's view via ⌘K to see exactly what they see.
  • Year-end CA pack composition — one export session, three CSV files, done.

The whole point, on one line

The Nickson console gives a small pump manufacturer in Amritsar the same operational sophistication a ₹500 crore enterprise buyer would expect from SAP or Oracle, at a fraction of the cost, in a UI shop-floor staff actually use, with statutory guardrails specific to the Indian tax code, in three languages, on any phone. That's the pitch. Everything above is proof.

IX

Every form, field by field

The exhaustive form guide. Every field on every form gets a line — what it is, whether it's required, what to type, and the mistake to avoid. Read it end-to-end once as an admin; return to it as a lookup when a specific field is confusing. Legend: req mandatory · opt optional · italic-highlighted indicates a specific value or default.

New Lead /leads/new

Every buyer inquiry starts here. Fill the buyer name + phone + one product-interest tag and you're done — every other field is optional. Result: lead saved with stage NEW, auto-assigned if round-robin is on, and immediately visible on the kanban.

Buyer identity
Buyer name text · 200 chars req
Full name of the person or business inquiring. If it's a business, put the company name in Company below and the contact person's name here.
Phone E.164 · +91 prefix expected req
10-digit Indian mobile. WhatsApp templates and OTP flows will use this number. Format: +91 9877269207.Mistake: pasting with spaces / hyphens that break WhatsApp send. Strip formatting first.
Email email · 200 chars opt
For long-form follow-ups (proposals, invoices). Most Indian retail buyers don't use email — leave blank if unavailable.
Company text · 200 chars opt
Business name if the buyer represents a firm. Fill when the buyer is a dealer, a farmhouse owner corp, or a purchase-department contact — leave blank for individual consumers.
City text · 100 chars opt
Buyer's city. Drives beat-planning routing and dealer-territory reports. Fill even if approximate.
What they want
Product interest array · SKUs or category slugs opt
Pick from the catalog picker — SKU (NIC-V4-5HP) or category (submersible-v4). Multiple values allowed for buyers evaluating a set.
Source enum req
Where the lead came from — see Part VII § 7.1 for the six options and when each applies.IndiaMART leads should never be manually created with source=INDIAMART — that value is reserved for the webhook auto-ingest.
Query text · long opt
What they're asking for, in their own words. Auto-fills from IndiaMART payload if source is INDIAMART. Type into it for phone / walk-in leads.
Estimated quantity int opt
Total units they're looking at. Used for pipeline value roll-up.
Estimated budget paise · int opt
Their budget in paise (₹1 lakh = 10000000). Used for lead scoring and pipeline value.
Attribution
Assigned rep User picker opt
Pick the sales rep who'll own this lead. Leave blank to let round-robin auto-assign.
UTM campaign / medium / source / content text opt
Auto-populated from marketing links. Manual leads: leave blank.

New Dealer /dealers/new

The master record for every business that stocks Nickson pumps. Dealer code + legal name + primary phone are the only truly required fields; everything else can be added later.

Identity
Dealer code text · unique req
Free-form. Use DLR-STATE-### (e.g. DLR-PB-001) for readability. Cannot be changed after save — pick well.
Legal name text · 200 req
Full registered business name — matches what appears on the GST certificate. Appears on invoices.
Display name text · 100 req
Short version for the sidebar and pickers. E.g. Balbir Singh Pump House is displayName; Balbir Singh Pump House Pvt Ltd is legalName.
GSTIN 15 chars opt
Registered GST number. Format-validated. Populate to get inter-state / intra-state tax computed correctly on invoices.Skip if the dealer isn't GST-registered — the invoice will fall back to unregistered treatment.
PAN 10 chars opt
Permanent Account Number. Required for above-₹50k transactions (Section 206AB).
Contact
Primary phone E.164 req
Main contact number. Used for OTP, WhatsApp, delivery notifications.
Email email opt
For invoice PDFs and formal communication.
WhatsApp number E.164 opt
If different from primary phone. Otherwise leave blank — templates fall back to primary phone.
Address
Address line 1 & 2 text opt
Physical delivery + billing address. Line 1 = building / street; Line 2 = area / colony / landmark.
City text opt
Drives beat planning + territory reports.
State 2-char code · e.g. PB / HR / UP req
Two-letter Indian state code. Critical: determines intra-state (CGST+SGST) vs inter-state (IGST) GST computation on every invoice.Mistake: leaving blank — invoices fail to compute tax correctly.
Pincode 6 digits opt
For delivery routing and courier integrations.
Country 2-char · default IN opt
Default India. Change only for export dealers.
Commercial terms
Tier text · free-form opt
Silver / Gold / Platinum are conventional. Drives auto-pricing tiers and rebate calculations. Free-form to accommodate custom schemes.
Credit days int · default 0 opt
Payment window in days. Used by the AR-aging report and MSME gate. 0 = advance payment required.
Status enum · default ACTIVE req
ACTIVE / INACTIVE / SUSPENDED. Only ACTIVE dealers appear in pickers.

New Product /products/new

Every SKU — finished pump, raw material, spare, control panel. The catalog is shared across sales, procurement, and manufacturing, so what you enter here shows up in every quote picker, PO picker, BOM component picker, and stock report.

Identity
SKU text · unique · uppercase convention req
Stock keeping unit code. Use a consistent scheme: series-HP-phase or category-spec. E.g. NIC-V4-5HP, RM-CU-SWG22. Cannot change after save.
Slug URL-friendly · unique opt
For the marketing site URL nicksonpumps.com/products/[category]/[slug]. Auto-generates from name if left blank.
Name text · 200 req
Display name. Appears on quotes, invoices, and the marketing site.
Category slug · picker req
Product category — submersible-v4, monoblock, control-panel. Drives grouping in reports and marketing site.
Brand text opt
Nickson for own-brand pumps; Turbo / Jindal / component for OEM or raw material.
Model code text opt
Internal model number if different from SKU.
Headline specs (dealer-facing)
HP text opt
Horsepower rating. Free-form text (e.g. 5, 7.5, 10). Shown on the marketing site card.
Voltage text opt
e.g. 220V single-phase or 415V three-phase.
Head text opt
Discharge head, e.g. 90m.
Flow rate text opt
Discharge rate, e.g. 40 LPM.
Pricing
Base price (paise) int opt
Internal operational price after discount. Multiply rupees by 100. E.g. ₹15,000 = 1500000.
Price INR (MRP) int · rupees opt
Catalog price shown on the marketing site. In whole rupees, not paise.
MOQ int opt
Minimum order quantity. Used in quote validation. Default 1.
Warranty
Warranty months int · default 12 opt
Warranty duration for this SKU. Panels commonly 6 months; pumps 12; premium 18.
Warranty start enum · default DISPATCH opt
See Part VII § 7.2 for DISPATCH / DEALER_RECEIPT / INSTALLATION.
Inventory tracking
Valuation method enum · default FIFO opt
See Part VII § 7.2.
Has batch tracking bool opt
Turn on for items grouped by production batch (chemicals, adhesives, some raw materials).
Has serial tracking bool opt
Turn on for finished pumps that get a unique serial etched. This unlocks the warranty lifetime chain.
Batch / serial number series text opt
Number-series pattern for auto-generation. E.g. NKSN-V4-.####. generates NKSN-V4-0001 onwards.
Stock UoM text · default Nos opt
Unit of measure. Nos, Kg, Mtr, EACH.
Marketing content (optional)
Tagline / summary / long description text opt
Marketing site copy. Skip if the product isn't listed publicly.
Applications array opt
Use cases — Tubewell, Overhead tank filling, Farm irrigation.
Locale variants (nameHi / namePa / etc) text opt
Hindi / Punjabi translations. Only needed if the marketing site is used bilingual.
Status
Status enum · default ACTIVE req
See Part VII § 7.2 for ACTIVE / DISCONTINUED / BUILT_TO_ORDER.Keep as DRAFT (via SDK) until images + description are final; then flip to ACTIVE.
Has variants bool opt
Turn on for parent SKUs where child variants (HP × phase × voltage combinations) exist.

New Vendor /procurement/vendors/new

Vendor onboarding. Code + legal name + type is enough to save; GST / bank / MSME come later. Status starts PROSPECT until docs are verified.

Identity
Code unique · auto req
Auto-generated V-000001 style. Or use a scheme: V-STEEL-01, V-BRG-02.
Legal name text · 200 req
Full registered name on the GST certificate.
Trade name text opt
Short display name.
Vendor type enum req
See Part VII § 7.3 for RAW_MATERIAL / CONSUMABLE / SERVICE / CAPEX / SUBCONTRACTOR.
Tax & identity numbers
GSTIN 15 chars opt
Skip for below-threshold vendors — they legally can't have one.
GST registration type enum · default REGULAR opt
REGULAR / COMPOSITION / UNREGISTERED / SEZ / OVERSEAS. Composition + unregistered affect input tax credit.
PAN 10 chars opt
Required for TDS applicability at above-threshold payments.
CIN 21 chars opt
Company Identification Number. Fill only for private / public limited companies.
Udyam number text opt
MSME registration number. Format: UDYAM-XX-##-#######. Populate this to enable MSME 45-day protection.
MSME category enum · default NONE opt
NONE / MICRO / SMALL / MEDIUM. Drives the 45-day gate and vendor threshold advisory. Not MSME = leave NONE.
TDS
TDS section text opt
The Income Tax section to apply. 194C for contractors, 194J for professionals, etc.
TDS rate (bp) int · basis points opt
Rate in basis points (1 % = 100 bp). E.g. 194C default = 100.
Lower deduction cert no + expiry text + date opt
If the vendor has a Section 197 lower-TDS certificate. Number + expiry date required together.
Lifecycle
Status enum · default PROSPECT req
See Part VII § 7.3.
Onboarding stage enum · default REGISTERED req
Independent from status — see Part VII § 7.3.

New Warehouse /inventory/warehouses/new

A physical stock location. Split your inventory into warehouses by function — Main / FG / WIP / Spares / Returns — rather than one giant bucket. Once created, warehouses can't easily be merged.

Identity
Code text · unique req
Short identifier. Convention: PLANT-MAIN, WH-FG, WH-WIP. Cannot change after save.
Name text · 200 req
Full name for reports. E.g. Jagdish Industries — Main Plant.
Type enum req
See Part VII § 7.5 for the eight kinds. Type governs which flows can post to this warehouse.Cannot change after save. Pick carefully.
Status enum · default ACTIVE req
ACTIVE / INACTIVE. Only ACTIVE warehouses appear in pickers.
Address (for GST + delivery)
Address line 1 text req
Building + street.
Address line 2 text opt
Area + landmark.
City text req
-
State code 2-char req
Critical: this is your state for GST computation on outbound invoices from this warehouse.
Pincode 6 digits req
-
GSTIN 15 chars opt
Warehouse-specific GSTIN if you have multiple GST registrations.
Contact phone / email text opt
Warehouse manager's contact.
Consignment (dealer warehouses)
Dealer ID Dealer picker opt
Fill only for type DEALER_CONSIGNMENT. Links this warehouse to a specific dealer.
Manager user User picker opt
Store keeper / warehouse in-charge.
Flags
Is default bool opt
Pre-selects this warehouse in pickers. Exactly one warehouse should be default per type.
Allow negative bool · default false opt
Allow stock to go negative (over-sell during rush). Use sparingly — clean books need reconciliation later.

New Quote / Sales Order /commerce/quotes/new · /commerce/orders/new

Same form shape for both — quote becomes order on Convert to Order. Header + line items + totals. GST auto-computes from your warehouse state code vs the dealer state code.

Header
Quote / Order number auto req
Auto-generated. Quote: QT-YYYY-#####. Order: SO-YYYY-#####.
Customer / dealer Dealer picker req
Pick from the dealer master. Fills in tier for auto-pricing, credit days for aging, state for GST.
Delivery address text · auto opt
Auto-fills from dealer address. Override if ship-to is different from billing.
Order date / delivery date date opt
Order-book date; expected delivery date. Drives production planning.
Validity (quote) date · default +30 days opt
Quote expiry. After this, prices need re-quoting.
Payment terms text opt
Free text — 30 days from invoice, 50% advance, balance on dispatch.
T&C template dropdown opt
Pre-built terms & conditions template. Manage at /settings.
Line items (repeatable)
Product catalog picker req
Pick from the product catalog. Description, UoM, base price auto-fill.
Description text · auto opt
Auto-fills from product name. Edit if customer wants specific language.
Quantity int req
Units of this SKU.
UoM text · auto opt
Unit of measure from product master.
Unit price (paise) int req
Per-unit price. Multiply rupees by 100. Auto-fills from dealer tier if configured.
Discount % decimal opt
Line-level discount. Header-level discount is a separate field.
GST rate enum · 0/5/12/18/28 req
GST % for this line. Pumps and motors are typically 18%. Panels 18%. Some agricultural equipment 12%.Wrong GST = wrong invoice = customer refuses to pay until corrected.
CGST / SGST / IGST auto · computed opt
Auto-computed. Intra-state: half in CGST + half in SGST. Inter-state: all in IGST.
Totals (auto)
Subtotal / Tax / Grand total auto opt
All computed. Grand total = sum(line total) - header discount + rounding.
Notes text opt
Free-text notes for the customer.

New Purchase Order /procurement/purchase-orders/new

The formal vendor order. Header + line items. Above the approval threshold, save enters PENDING_APPROVAL instead of DRAFT.

Header
PO number auto · PO-YY-###### req
Auto-generated.
Vendor Vendor picker req
Must be ACTIVE + APPROVED-stage vendor. Fills in payment terms, MSME status, GSTIN.
PO date date · default today req
When the PO is being raised.
Expected delivery date date opt
When you expect the goods. Used for lead-time analytics and delivery-SLA tracking.
Delivery warehouse Warehouse picker req
Where the goods should be received. Usually PLANT-MAIN.
Payment terms (days) int · from vendor opt
Auto-fills from vendor default; override per PO if needed.
Currency text · default INR opt
Foreign vendors: USD / EUR / etc.
Line items
Item Product picker or free text req
Product from the catalog (auto-fills SKU) or free-text description for uncatalogued spot buys.
Description text req
Full description as you want it on the printed PO.
Quantity int req
Units to order.
UoM text req
-
Unit price (paise) int req
Negotiated rate. Consult vendor–part directory for last-price memory.
GST rate enum req
0 / 5 / 12 / 18 / 28. Auto-computes CGST/SGST or IGST from state codes.
HSN code text opt
HSN classification. Required on the printed PO for above-₹5cr turnover vendors.

Cash-purchase GRN /procurement/grns/new

Log a market run — bearings from Chowk Mehta, wire from a local shop. Two vendor modes: Existing (pick from master) or Ad-hoc / market (type shop name). See Walkthrough 02 for the end-to-end flow.

Vendor block
Vendor mode toggle · EXISTING / ADHOC req
EXISTING: pick from vendor master. ADHOC: free-text shop name (routes to CASH-VENDOR placeholder).
Vendor Vendor picker req · if EXISTING
Only shown in EXISTING mode.
Shop / supplier name text · 120 req · if ADHOC
Full shop identity, e.g. Guru Nanak Hardware, Chowk Mehta.
Phone text opt
Shop's contact.
GSTIN 15 chars opt
Only if the shop is GST-registered.
Receipt meta
Warehouse picker · default PLANT-MAIN req
Where the goods land.
Received at datetime · default now req
When the goods arrived.
Vehicle number text · 20 opt
Vehicle that brought the goods. Useful for tally with e-way bill checkpoints later.
Bill / challan number text opt
If the shop gave any bill or challan — even a hand-written slip.
Line items (repeatable)
Item name datalist · catalog + free-text req
Start typing to filter the catalog. Selecting a catalog item auto-fills SKU. Free-text works for uncatalogued consumables — but those don't hit the stock ledger.
SKU auto or manual opt
Auto-fills from item name selection. Blank = consumable line (no stock impact).
UoM text · default EACH req
Unit — EACH / Kg / Mtr / Ltr.
Quantity int req
-
Unit price (₹) rupees · decimal req
Per-unit rate in rupees. Line total auto-computes.
GST % enum · 0/5/12/18/28 req
GST on this line. For no-bill purchases, use 0.
Payment
Mode enum · default CASH req
Cash / UPI / Bank / Cheque / Card / Pending. See Part VII § 7.3.
Amount paid (₹) rupees opt
What you actually paid. Auto-fills from grand total but can be partial.
Reference text · 60 opt
UPI txn ref, cheque number, or voucher number.

New BOM /manufacturing/boms/new

Bill of Materials — components + operations to build one output product. Save enters status DRAFT. Release to ACTIVE before it can drive Work Orders.

Header
BOM code auto · convention BOM-V4-5HP req
Human-readable identifier shown on the shop floor.
Name text · 200 req
Descriptive name. E.g. V4 5HP 3-Stage Standard Build.
Output product Product picker opt
The pump this BOM produces. Nullable so sub-assembly BOMs (rotor, stator) can exist without a top-level SKU.
Assembly code text opt
Fill when this BOM makes a sub-assembly instead of a finished product. E.g. STATOR-4IN-3HP.
Standard batch qty int · default 1 req
Reference batch size — components scale from this. Almost always 1.
UoM text · default NOS opt
Output unit of measure.
Status enum · default DRAFT req
DRAFT / ACTIVE / OBSOLETE. See Part VII § 7.4.
Components (per line)
Line number auto opt
Sequence in printouts.
Kind enum req
COMPONENT (raw material) / SUB_ASSEMBLY (pre-built input) / OPERATION (labour cost).
Item name datalist · catalog picker req
Auto-fills SKU when a catalog item is selected. Free-text works for uncatalogued components.
Item code (SKU) text · auto opt
Fills from picker.
UoM text req
How the component is measured. Copper wire in Kg, bearings in EACH, cable in Mtr.
Quantity per unit decimal req
Component qty needed per one output unit. E.g. 2 bearings per pump; 0.35 kg of copper.
Scrap % decimal opt
Expected wastage. 3-5% common for copper, 1-2% for bearings.
CTQ flag bool opt
Critical-to-Quality. QC pays special attention on receipt.
Sub-contracted bool opt
Turn on if this component is made by a subcontractor (Chawla Winding, Singh Machining).
Sub-BOM link BOM picker opt
For sub-assemblies with their own BOM — links downstream.
Allow alternative bool opt
Can be substituted if primary is out of stock.
Operations (per line)
Sequence int req
Order in which operations happen.
Operation code Piece-rate op picker req
Pick from the piece-rate operations master (e.g. OP-WIND-V4-5HP).
Workstation Workstation picker req
Which machine / bench. WIND-1, ASSY-1, TEST-1.
Cycle time (min) decimal opt
How long one unit takes.
Setup time (min) decimal opt
One-off changeover time per batch.
Rate per piece (paise) int opt
Override the operation's default rate for this BOM. Blank = use master rate.

New Work Order /manufacturing/work-orders/new

Kicks off a batch of production. Auto-computes required material from the BOM × quantity. Statuses: PLANNED → RELEASED → IN_PROGRESS → HOLD → COMPLETED / CANCELLED.

Fields
WO number auto · WO-YYYY-##### req
Auto-generated.
BOM BOM picker · ACTIVE only req
Only ACTIVE BOMs are pickable.
Product auto from BOM opt
Auto-fills from the selected BOM.
Quantity to produce int req
Batch size. Required material auto-computes.
Planned start date req
When production starts.
Planned end date req
Target completion.
Priority enum · default NORMAL opt
LOW / NORMAL / HIGH / URGENT. Drives scheduling order.
Sales Order link SO picker opt
If this WO fulfils a specific Sales Order.
Source warehouse Warehouse picker req
Where raw material comes from. Usually PLANT-MAIN.
Target warehouse Warehouse picker · WIP req
Where WIP is held during production. Usually WH-WIP.
Notes text opt
Special instructions for the floor.

New Job Card /manufacturing/job-cards/new

One workstation's chunk of a Work Order. "Stator winding for 20 impellers on Machine 3" is one job card.

Fields
Job Card number auto · JC/YYYY/##### req
Auto-generated.
Work Order WO picker req
Only WOs in PLANNED / RELEASED / IN_PROGRESS / HOLD are pickable.
Stage enum req
STATOR_WINDING / MACHINING / ROTOR_BALANCING / SUB_ASSEMBLY / MAIN_ASSEMBLY / TESTING / PACKING / DISPATCH_PREP.
Allocated qty int req
How many units this job card covers. Cannot exceed the WO's remaining.
Workstation code text · uppercase opt
Which machine or bench. Auto-uppercased. E.g. WIND-1.
Primary operator User picker opt
The lead worker on this card.
Shift code text · uppercase opt
A / B / C shift, or day / night. Free-form.
Notes text opt
Special instructions.

New Stock Entry /manufacturing/stock-entries/new

Material movements between warehouses. The Purpose field is the most consequential setting — each purpose posts differently to the stock ledger.

Header
Purpose enum req
See Part VII § 7.4 for the four options.
Work Order link WO picker opt
Ties this entry back to a specific work order — enables cost roll-up.
From warehouse Warehouse picker opt
Where stock leaves from. Required for transfer / manufacture / return.
To warehouse Warehouse picker opt
Where stock arrives. Required for transfer / manufacture / return.
Posting date date · default now req
When this movement is recognized on the ledger.
Is return bool opt
Descriptive flag; doesn't change ledger posting direction (that's decided by purpose).
Notes text opt
Context for the audit trail.
Line items (per row)
Item Product picker req
What's moving.
Direction enum · INWARD / OUTWARD req
Per-line direction. Rare for the whole entry to be mixed.
Quantity decimal req
Units moving.
UoM text opt
Auto-fills from product.
Warehouse (per line) Warehouse picker opt
If the line's warehouse differs from the header — rare.
Rate (₹ per unit) decimal opt
Valuation rate. Blank = system computes from FIFO / MOVING_AVERAGE.
Amount auto · qty × rate opt
Line value.
Is finished item bool opt
Turn on for the finished pump line in a MANUFACTURE entry.
Is scrap bool opt
Turn on for the scrap line in a MANUFACTURE entry.
Has tracking bool opt
Turn on to open serial / batch pickers for tracked items.
Serial numbers array opt · if tracked
Specific serial numbers on this line — usually one per unit of qty.
Batches array · batch + qty opt · if tracked
Batch number + qty per batch. Manufacturing / expiry dates supported.

New Employee — salaried /hr/employees/new

Formal EmployeeV2 onboarding. Long form but only ~10 fields are truly required to save. Rest can be added later. Result: employee row + User account with role EMPLOYEE + welcome email with initial password.

Personal identity
Employee number auto · EMP-YYYYMM-#### req
Auto-generated.
First name text req
-
Middle name text opt
Rare in Punjabi families; common in Marathi / Bengali.
Last name text req
-
Display name text req
How the name shows across the console. Usually first + last.
Email email · unique req
Primary login. Company convention: first.last@nicksonpumps.com.
Phone E.164 opt
Enables phone-OTP fallback login.
Gender enum req
MALE / FEMALE / OTHER / PREFER_NOT_TO_SAY.
DOB date req
Date of birth. Used for retirement calculation and statutory forms.
Marital status enum opt
SINGLE / MARRIED / DIVORCED / WIDOWED / OTHER.
Blood group enum · default UNKNOWN opt
Useful in medical emergencies on the shop floor.
Statutory identity
Aadhaar last 4 4 digits opt
Only the last 4 stored plaintext; the full number is hashed for privacy.
PAN 10 chars opt
Required for TDS on salary above threshold.
PAN verified bool opt
Turn on after actual verification against the IT portal.
UAN number 12 digits opt
Universal Account Number for PF. Employee's own UAN; carries across jobs.
PF account number text opt
Nickson's PF establishment code + member ID. Format varies.
ESI number 10 digits opt
For employees under the ESI wage ceiling (~₹21k/month).
Assignment
Department Department picker req
Pick from the 8 seeded departments (Production, Quality, Dispatch, Sales, Accounts, HR, Procurement, Maintenance).
Designation Designation picker req
Pick from the 12 seeded designations.
Reporting manager Employee picker opt
Their immediate boss. Drives approval routing.
Location text opt
Physical office / plant. E.g. Amritsar HQ, Amritsar plant.
Employment
Join date date req
Date of joining. Drives leave balance accrual and probation clock.
Confirmation due date date opt
End of probation. Default: join date + 6 months.
Employment type enum · default PERMANENT req
See Part VII § 7.6.
Status enum · default ACTIVE req
See Part VII § 7.6.
Notes text opt
Confidential HR notes.

New Wage Worker /hr/wage-workers/new

Temp / piece-rate worker onboarding. Simple form — name + phone is enough to save. Phone enables OTP login.

Fields
Code auto · TMP-YYYY-#### req
Distinct prefix from EMP codes.
Name text req
Full name.
Phone E.164 req
Required for phone-OTP login. WhatsApp templates fire on this number.
Email email · unique opt
Optional. If set, HR can hand out email + temp password too.
Photo URL upload opt
Worker's photo. For attendance selfie comparison later.
ID proof type enum opt
AADHAAR / PAN / VOTER_ID / DRIVING_LICENCE.
ID proof number text opt
The number on the chosen ID. Some workers refuse to share — the foreman still needs to pay them.
Join date date req
When they started.
Active bool · default true req
false = no longer working with us. Inactive workers don't appear in piece-rate pickers.
Notes text opt
Confidential notes.

New Cash Register entry /finance/cash-register/new

Every cash movement outside GST-invoiced flow. See Part VII § 7.7 for exhaustive enum coverage; this section is field-by-field.

Movement
Direction toggle · INFLOW / OUTFLOW req
Money in vs money out. Nature options change based on this.
Nature enum req
See Part VII § 7.7 for the 12 nature values.
Amount (₹) decimal · rupees req
In whole rupees, up to 2 decimal places. Server converts to paise.Section 269ST: cash-mode entries ≥ ₹2,00,000 soft-block.
Entry date date · default today req
Cannot be older than 90 days without admin period re-open.
Payment mode enum · default CASH req
CASH / UPI / BANK_TRANSFER / CHEQUE / CARD / PENDING.
Payment ref text · 60 opt
UPI txn ref, cheque number, voucher number.
Counterparty
Counterparty name text · 120 req
Shop, customer, vendor, employee, or "Owner" for OWNER_TRANSACTION.
Counterparty phone text opt
If relevant.
Dealer link Dealer picker opt
Optional soft link — helps per-counterparty history reports.
Vendor link Vendor picker opt
Same.
Legal exemption
Exemption reason enum · 11 values req
See Part VII § 7.7 — the deepest reference on this doc.
Exemption note text · 500 req · if OTHER_LEGAL
One-line reason. Only required (and shown) when reason = OTHER_LEGAL.
Description text · 2000 opt
Free-form context — what was bought / received / paid.

New Payment /finance/payments/new

Record money received from a customer or paid to a vendor. Allocation against invoices decides which specific bills are settled.

Fields
Payment number auto · VPAY / SPAY prefix req
Auto-generated.
Type enum · RECEIVED / MADE req
Money direction.
Counterparty Dealer / Vendor picker req
Who you received from or paid to.
Amount (paise) int req
Total payment amount.
Payment date date · default today req
-
Payment mode enum req
CASH / UPI / BANK / CHEQUE / RTGS / NEFT.
Reference text opt
UTR, cheque no, txn ref.
Bank account Bank picker opt
Which of your bank accounts the money moved through.
Allocation table invoice list + amount opt
Pick specific invoices being settled. Total allocated must match the payment amount, or the excess sits as an advance.
Notes text opt
Context — Reconciled against bank statement 15 Jul.

Warranty registration + claim (public customer) /w/[serial]/register · /w/[serial]

The customer-facing screens. No login required — WhatsApp OTP verifies the phone.

Registration
Serial auto · from URL req
Pre-filled from the QR scan.
Customer name text req
End customer's name.
Customer phone E.164 req
WhatsApp OTP verifies this. Becomes the customer's identity forever.
Address text req
Installation address.
Installation date date req
When the pump was installed. Warranty starts from here if the product's warrantyStart = INSTALLATION.
Installer name text opt
Who installed — dealer, plumber, in-house.
Location coordinates lat/lng · auto opt
Captured if the customer grants location permission.
Claim (Report a problem)
Issue type enum req
See Part VII § 7.8.
Description text req
What's wrong, in customer's words.
Photos image upload · up to 5 opt
Photos of the issue — leak, error display, damaged part.
Preferred visit slot date + time opt
When the customer would like the technician to visit.
X

Admin setup checklist

You just got your admin credentials. This is what to do in order — from the first thirty minutes to the year-end pack. No thinking required; follow the checkboxes.

10.1Your first 30 minutes

  1. Sign in at https://crm.nicksonpumps.com/login with the credentials you were given. 2 min
  2. Change your password immediately — top-right avatar → Profile → change password. Don't leave the default. 2 min
  3. Install the PWA on your phone (Chrome / Edge → Install app) and your desktop. See Part I § 1.2. 3 min
  4. Take the interface tour — read Part I § 1.3 and click through the sidebar sections your role shows. 5 min
  5. Try the command palette — press CtrlK (or K on Mac). Type "dealers", "leads", "cash register" — jump around. 3 min
  6. Open the Owner Brief at /dashboards/owner. Read yesterday's tiles. This is your Monday-morning ritual. 5 min
  7. Read Part VIII (Every workflow & how it grows the business) to understand what the CRM is actually for. 10 min

10.2Week 1 goals

By end of week 1, you want: real users onboarded, real master data verified, and one real end-to-end order flowing through.

01

Day 1 · master-data audit ~2 hours

  1. Open /hr/departments — verify the 8 seeded departments match Nickson's org (Production, Quality, Dispatch, Sales, Accounts, HR, Procurement, Maintenance).
  2. Open /hr/designations — verify the 12 seeded designations. Add / rename as needed.
  3. Open /inventory/warehouses — verify 7 seeded warehouses exist (PLANT-MAIN, WH-FG, WH-WIP, WH-SPARES, WH-RTN, WH-TRANSIT, WH-SCRAP). Correct the addresses if the seed used placeholders.
  4. Open /procurement/vendors — 18 industry-real vendors are seeded. Update GSTINs with the real numbers on file. Add any Nickson-specific vendors missing.
  5. Open /products — 24 products seeded (12 finished pumps + 12 raw materials). Update prices, images, and specs where the seed used placeholders.
02

Day 2 · onboard real employees ~2 hours

  1. Delete or archive the 9 test users (admin@test, sales@test etc.) once you have real replacements ready — or keep them for training.
  2. Onboard the first real salaried employee at /hr/employees/new. See Part IX § 9.13 for every field. Result: employee row + User account + welcome email.
  3. Onboard the first real wage worker at /hr/wage-workers/new. Phone number is enough — they log in via OTP.
  4. Verify the new user can log in — send them the credentials, watch them log in successfully.
  5. Onboard the rest of the team following the same pattern.
03

Day 3 · first real transactions ~2 hours

  1. Log the first real lead at /leads/new (Walkthrough 01 in Part IV shows the flow with real values).
  2. Handle the first real cash purchase using /procurement/grns/new — this proves the market-run flow works (Walkthrough 02).
  3. Post the first real cash-register entry at /finance/cash-register/new to prove the exemption tagging (Walkthrough 03).
  4. Convert the first real lead to a quote → sales order (Walkthrough 01 continued).
04

Day 4-5 · reorder rules + integrations ~4 hours

  1. Set reorder rules at /inventory/reorder-rules for the 15-20 most critical raw materials. See Part IX § 9.5 for field reference.
  2. Configure integrations — IndiaMART webhook, WhatsApp Cloud API, GST GSP. See Part XII.
  3. Set up notification templates for the events that matter to you (Part XVI).
  4. Test each integration end-to-end — send a test IndiaMART lead, send a test WhatsApp, generate a test IRN.

10.3Weekly admin rhythm

Rinse and repeat. Small daily habits keep the console healthy.

Mon

Monday morning

  1. Open the Owner Brief — read every tile.
  2. Clear the notification bell — decide, delegate, or defer each item.
  3. Review /workflows-admin/approvals — clear pending approvals.
  4. Check /inventory/reorder-rules for stockout alerts fired over the weekend.
Tue-Thu

Middle of the week

  1. Handle exceptions as they surface — cash-register entries flagged, MSME breaches approaching, warranty claims escalating.
  2. Read Daily Call Reports from field reps at end of each day.
  3. Review /hr/approvals/daily-work — approve piece-rate submissions.
Fri

Friday close

  1. Reconcile the week's cash-register entries with till + bank statement.
  2. Confirm no MSME invoices are breaching the 45-day gate over the weekend.
  3. Skim the sales dashboard for weekly conversion trends.

10.4Monthly tasks

  1. Payroll close · run /hr/payroll/payslips → Generate for period. Spot-check outliers. Trigger bulk payment via /finance/payments.
  2. MSME 45-day review · check /finance/msme for any invoices approaching or breaching. Prioritise these in the next payment run.
  3. AR aging review · /finance/ar-aging — identify collection calls for anything over 60 days.
  4. Vendor performance · review /procurement/vendors scoring — anyone consistently late or QC-failing gets a conversation.
  5. Cash Register month-close · review last month's entries with the accountant on the first of each month. Any wrongly-tagged entries get corrected before month-close hardens.
  6. Reorder rule review · adjust reorder points based on last month's consumption vs stock-out incidents.
  7. Statutory compliance · PF, ESI, TDS payments must be made by prescribed deadlines. Confirm each is done and evidenced.

10.5Quarterly reviews

  1. Dealer tier review · promote / demote dealers based on YTD performance. Tier drives auto-pricing.
  2. Employee performance reviews · /hr/performance/reviews.
  3. Vendor threshold audit · any below-threshold vendor whose cumulative purchases are approaching ₹40 lakh — the console warns, but review proactively.
  4. QMS calibration schedules · verify all measuring instruments due for calibration have current certificates.
  5. Reorder rule + safety stock rebalance · adjust based on quarterly consumption patterns.
  6. Marketing content refresh · product pages, banners, FAQs on /content/*.

10.6Year-end pack for the CA

End of financial year (typically 31 March). Hand your Chartered Accountant these exports:

  1. /commerce/invoices?fromDate=&toDate= — GST-invoiced sales (CSV).
  2. /procurement/vendor-invoices?fromDate=&toDate= — GST-invoiced purchases (CSV).
  3. /finance/cash-register?from=&to= — non-GST cash movements, tagged by legal reason.
  4. /finance/payments?fromDate=&toDate= — all payments received + paid.
  5. /finance/msme — MSME 45-day compliance report.
  6. /hr/payroll/payslips?year= — annual payroll summary.
  7. /inventory/stock-balances — closing stock valuation.
  8. /assets/depreciation — depreciation schedule for the year.
Every Cash Register row has a legal exemption tag, so the CA can split records into ITR-only / GSTR / non-income buckets in one glance. No reconciling headache.
XI

Troubleshooting & FAQ

When something's off — an error message, a permissions puzzle, a page that seems empty when it shouldn't be. Look here first before pinging the developer.

11.1Common error messages

Cannot save — email already exists
Cause: a User row with that email is already in the database.
Fix: either change the email or find the existing user at /hr/employees?email=... and edit that record instead.
Vendor not found or not usable
Cause: vendor status is BLACKLISTED, INACTIVE, or the vendor is soft-deleted.
Fix: reactivate at /procurement/vendors/[id] → change Status to ACTIVE, or use a different vendor.
GRN number collided with a concurrent post — please retry
Cause: two operators posted GRNs simultaneously and the auto-numbering hit a race.
Fix: just click submit again. Second attempt allocates the next number.
Cash transactions ≥ Rs. 2,00,000 trigger Section 269ST / 271DA penalty risk
Cause: you're logging a cash-mode Cash Register entry at or above the ₹2 lakh cap.
Fix: split into multiple smaller entries under ₹2 lakh, or switch payment mode to Bank / UPI / Cheque — those aren't capped.
"Other (with note)" needs a short explanation so audit can see why
Cause: you picked exemption reason OTHER_LEGAL without filling the note field.
Fix: either write a one-line reason, or pick a specific exemption category that fits (see Part VII § 7.7).
Entry date is more than 90 days in the past
Cause: Cash Register back-dating lock. Prevents restating older accounting periods silently.
Fix: ask an admin to re-open the accounting period, or use today's date and add a note explaining the actual event date.
DRAFT BOMs can't drive Work Orders
Cause: the BOM you selected hasn't been released yet.
Fix: open the BOM at /manufacturing/boms/[id] and change status to ACTIVE. Only ACTIVE BOMs can drive production.
This is more than the WO's remaining allocation
Cause: job card allocated quantity exceeds what's left on the work order.
Fix: reduce the job card qty, or close prior job cards on this WO to free allocation.
Warehouse not found or inactive
Cause: warehouse status is INACTIVE.
Fix: reactivate at /inventory/warehouses/[id], or pick a different warehouse.
MSME invoice — 45-day deadline breach imminent
Cause: an MSME vendor invoice is approaching the 45-day payment gate (Section 43B).
Fix: prioritise this in the next payment run at /finance/payments/new. Breach = the whole amount disallowed as an expense for the year.

11.2Login & access issues

My phone-OTP isn't arriving.
Check the phone number is in E.164 format (+91 prefix). Confirm WhatsApp is installed and can receive messages on that number. If it's still not arriving, try email login instead — HR can set a temporary password.
I know my password is right but login fails.
Check the User row's active flag. HR can toggle it back on. Also confirm no one accidentally reset the password.
I get redirected in a loop after logging in.
Your role is EMPLOYEE but your User isn't linked to an EmployeeV2 / TemporaryWorker record. Ask HR to link you at /hr/employees/[id] or /hr/wage-workers/[id] (userId field).
Command palette (⌘K) doesn't open.
Some browsers reserve CtrlK — the console-provided combination is CtrlK on Windows / K on Mac. If it's still not opening, hard-refresh (CtrlShiftR) — service worker might be caching a stale version.

11.3"I know it exists but I can't see it"

I'm looking for a specific lead / order / dealer and it's not in the list.
Row-level security is filtering you. Sales sees their team's leads, not other teams'. Employees see only their own records. Admins see everything. Ask an admin to look up the record, or switch to the ADMIN role temporarily.
The vendor / dealer / customer isn't in the picker.
Status. Only ACTIVE records show in pickers by default. Check /procurement/vendors or /dealers — if it's PROSPECT / INACTIVE / BLACKLISTED, that's why.
My payslip isn't showing at /e/salary.
Payslip hasn't been generated yet for this period, or the daily-work submission hasn't been HR-approved. Check /hr/approvals/daily-work for approval status.
The BOM won't accept item X in the components table.
Item's status is DISCONTINUED or not ACTIVE. Reactivate at /products/[id], or pick an equivalent.

11.4PWA / mobile issues

Install prompt doesn't appear on my phone.
You're already installed (open the app icon), OR the browser cached a "not installable" verdict. Try: hard-refresh, or open in a fresh tab. Some browsers require the site to have been visited for 30 seconds before offering install.
Attendance selfie camera won't open.
Camera permission was denied at some point. Fix: phone Settings → Site permissions → crm.nicksonpumps.com → allow camera. Reload the page.
GPS location not captured on attendance.
Location permission denied. Same fix as camera. Also verify you're outside a heavily shielded factory area where GPS won't lock.
App feels slow on 3G.
The console is a full app — it's designed to work offline for the login shell but heavy pages need data. On 3G, expect 5-10 second load. Once loaded, subsequent navigation is instant (the SW caches the shell).

11.5GST / invoicing issues

My invoice shows IGST instead of CGST+SGST (or vice-versa).
The tax type is decided from state codes: your warehouse state vs the customer's state. Check both. Intra-state → CGST + SGST. Inter-state → IGST. Fix the state code on the record where it's wrong.
IRN / QR code didn't generate on the invoice.
NIC GSP integration isn't configured or has an expired credential. See Part XII § 12.3.
E-way bill number missing on inter-state dispatch.
Same NIC GSP issue, or the dispatch is under the ₹50k threshold where EWB isn't required.
Customer says they never got the invoice email.
Check /notifications/log — filter to that customer + last N days. See if the email was sent, delivered, bounced, or failed. Common cause: their email is wrong on the dealer record.

11.6Stock ledger issues

Stock balance shows a negative number.
Someone dispatched or issued more than was in stock. If the warehouse allows negative (see Part IX § 9.5), this is expected. If not, physical stock and ledger are out of sync — run a cycle count at /inventory/cycle-counts/new and adjust.
Item X is missing from stock reports.
The product's status is DISCONTINUED, or valuation method changed mid-year. Check /products/[id].
Cost of Goods Sold looks wrong on the invoice.
Valuation method (FIFO / LIFO / MOVING_AVERAGE) determines this. FIFO uses oldest cost lot; MOVING_AVERAGE uses running average. If it looks off, check what method the product uses.
I can't edit a posted Stock Entry.
Correct — item quantities and warehouses are immutable once posted. For corrections, raise a reversal + redo entry. Only header metadata (notes, posting date within 14 days) is editable. See Part II § 2.6.

11.7Frequently asked questions

How do I reset a user's password?
HR opens the User row at /hr/employees/[id] and clicks Reset Password. An email with a fresh temporary password goes to the user. For phone-OTP-only workers, no password reset needed — they always use OTP.
Can I delete a lead / dealer / order / invoice permanently?
No. All entities use soft delete (deletedAt) which hides but preserves audit history. Deletion is by policy — records must remain for tax audits (usually 8 years).
How do I fix a typo on an already-posted invoice?
You can't edit a posted invoice. Options: (a) issue a credit note at /finance/credit-notes/new to cancel it, then raise a new correct invoice; (b) for minor cosmetic fixes (spelling), edit metadata fields only (notes, descriptions).
How do I change a dealer's tier?
Edit the dealer at /dealers/[id] → Tier field. Change takes effect on the next quote generated for that dealer.
How do I add Hindi / Punjabi content for a product?
Edit the product at /products/[id] → fill nameHi, taglineHi, summaryHi, namePa, etc. The marketing site + dealer portal auto-pick based on the visitor's locale.
Can I bulk-import 500 dealers from an Excel file?
Yes — see Part XIV. Prepare the CSV to the specified schema, then run scripts/import-dealers.ts on the server. Ask the developer if it's your first time.
How does row-level security work?
Sales role sees leads assigned to their team (via hierarchy). Employees see only their own payslip / attendance. Admins see everything. It's enforced at the database query layer, not the UI — even a URL trick won't reveal restricted data.
Where are backups?
Automated nightly to the VPS backup partition. Off-site sync is manual for now. Recovery procedure in Part XVIII.
Is there a public API for external integrations?
Not a general-purpose one. Specific integration endpoints exist for IndiaMART (webhook), WhatsApp (Cloud API), and warranty registration (public routes). For anything else, ask the developer.
What timezone does the console use?
Asia/Kolkata (IST, UTC+5:30). All timestamps in the database are stored as UTC; the UI renders in IST. Reports respect IST for day boundaries.
Why does an amount show in paise instead of rupees?
Internal storage is in paise (integer) to avoid floating-point errors on money. UI usually converts to rupees for display. If you see 1500000 where you expected 15000, that's paise — multiply by 100 for rupees representation, divide by 100 to convert back.

11.8When to call the developer (Tarun)

Most things you can fix yourself with this manual. Reach out to Tarun Bhardwaj (itarunbhardwaj@gmail.com) when:

  • The console is down — https://crm.nicksonpumps.com returns 5xx or won't load at all.
  • An error message you can't find in Part XI § 11.1.
  • You need a bulk data import that doesn't have a documented importer.
  • You need a new integration configured (a new external system).
  • Backup restoration is required.
  • You suspect a bug — something silently wrong, not a misuse issue.
  • You want to change something that's structural — a new role, a new field, a workflow change.
XII

Integrations setup

Third-party systems the console talks to. Each has a specific configuration path. Get these right on day-one setup and the whole team runs at automation-speed instead of manual-copy-paste speed.

12.1IndiaMART lead ingest webhook

Auto-ingests every lead delivered by IndiaMART's leads platform into /leads with source = INDIAMART.

  1. Log into IndiaMART Seller Panel → Leads Platform → Integrations.
  2. Add a new webhook endpoint pointing at https://crm.nicksonpumps.com/api/leads/indiamart.
  3. Copy the auth token IndiaMART generates. Set it in Settings → Integrations → IndiaMART Auth Token (or environment variable INDIAMART_WEBHOOK_TOKEN).
  4. Test — trigger a fresh IndiaMART lead. It should land in /leads within seconds with the full raw payload preserved.
Attribution: UTM parameters from IndiaMART's payload auto-populate on the lead. If you're running IndiaMART ads, you'll see which campaign generated each lead.

12.2WhatsApp Cloud API

Powers OTP delivery, invoice PDF share, dispatch alerts, warranty notifications. Uses Meta's WhatsApp Cloud API directly.

  1. Register a WhatsApp Business Account at business.facebook.com.
  2. Add a phone number and get it verified (the number your customers will see).
  3. In the app dashboard → WhatsApp → Getting Started, copy Phone Number ID and permanent Access Token.
  4. Set in Settings → Integrations → WhatsApp:
    • WHATSAPP_PHONE_NUMBER_ID — your registered number ID
    • WHATSAPP_ACCESS_TOKEN — permanent token
    • WHATSAPP_APP_SECRET — for webhook verification
    • WHATSAPP_VERIFY_TOKEN — arbitrary string you pick
  5. Get message templates approved in the Meta Business Manager. Template names must match the template keys in /notifications.
  6. Test — trigger an OTP flow. If it doesn't arrive, check /notifications/log for the delivery status.
Templates approval is slow. Meta reviews each template (24-48 hours). Get all your templates approved before go-live — the "template not approved" error is the most common WhatsApp issue.

12.3GST GSP · IRN + e-way bill

Automates IRN generation on B2B invoices and e-way bill for inter-state dispatches over ₹50k. Uses a GST Suvidha Provider (GSP) — Cleartax, Masters India, or ClearTax are common.

  1. Sign up with a GSP. Cleartax is the most SME-friendly; others exist.
  2. Get GSP API credentials — client ID, client secret, endpoint URL.
  3. Register your GSTIN with the GSP for e-invoicing (IRN) if turnover ≥ ₹5 crore.
  4. Set in Settings → Integrations → GST GSP:
    • GSP_ENDPOINT — the GSP's API base URL
    • GSP_CLIENT_ID / GSP_CLIENT_SECRET
    • GST_USERNAME / GST_PASSWORD — your GST portal credentials for e-way bill
    • GSTIN — the GSTIN under which invoices are raised
  5. Test — generate a small invoice. IRN + QR should appear. Generate an inter-state dispatch over ₹50k — e-way bill number should populate.
Below the ₹5 cr threshold? IRN isn't mandatory. E-way bill still applies for inter-state dispatches over ₹50k regardless of turnover. Skip IRN registration; only configure e-way bill credentials.

12.4SMTP · outbound email

Powers invoice emails, welcome emails to new users, password resets, notification digests. Uses local Postfix on the VPS by default.

  1. SMTP credentials live in /opt/nicksonpumps-crm/.env.local on the VPS.
  2. To use an external provider (SendGrid, SES, Mailgun): set SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS.
  3. Verify SPF, DKIM, DMARC DNS records are set for nicksonpumps.com — otherwise Gmail marks your emails as spam.
  4. Test — trigger a welcome email by onboarding a test employee. Confirm it arrives in inbox (not spam).

12.5PostHog · product analytics

Anonymous product analytics — which pages get used, where users get stuck, session recordings for UX debugging. Not user tracking; product analytics.

  1. Sign up at posthog.com (free tier is generous).
  2. Get project API key from PostHog settings.
  3. Set NEXT_PUBLIC_POSTHOG_KEY and NEXT_PUBLIC_POSTHOG_HOST in .env.local.
  4. Redeploy. Events start flowing.

12.6Sentry · error tracking

Captures errors from client and server so Tarun can fix them proactively — without waiting for user reports.

  1. Sign up at sentry.io.
  2. Create a Next.js project. Get the DSN.
  3. Set SENTRY_DSN in .env.local. Set SENTRY_AUTH_TOKEN for release tagging.
  4. Redeploy. Any 5xx errors, JS exceptions, or slow requests will appear in Sentry with the exact stack trace.
XIII

Keyboard shortcuts & power-user tips

A few small habits that make everything twice as fast. Once you internalise these, sidebar-clicking feels slow.

Command palette · CtrlK / K

The fastest way to jump anywhere. Type any of:

  • A record identifier — DLR-PB-001, SO-2026-00042, a serial number, a pump SKU
  • A page name — "leads", "cash register", "warehouse", "invoices"
  • A customer / dealer / vendor name — Balbir, Sharma Steel
  • An employee name — Ramesh, Simran

Fuzzy matching. Enter to jump. Escape to close.

Global shortcuts

KeyAction
CtrlK / KOpen command palette
?Show keyboard shortcuts help overlay
EscClose modal / palette / dropdown
g lGo to Leads
g dGo to Dealers
g oGo to Orders
g iGo to Invoices
g cGo to Cash Register
g hGo to home / owner brief
nFocus quick capture bar

Form shortcuts

  • Tab — next field. ShiftTab — previous.
  • Enter in a text field — submits form (except textareas — those need CtrlEnter).
  • Esc — cancel / close without saving.
  • On line-item tables, Tab from the last cell auto-adds a new row.

QR scanner in the top bar

Camera icon (📷) opens the scanner. Point at any of:

  • Pump serial sticker — jumps to serial detail + warranty history
  • Package label QR — jumps to dispatch order
  • Vendor code QR (some vendor invoices carry one) — jumps to vendor detail
  • Dealer QR — jumps to dealer profile

First use asks for camera permission. Grant once, never asks again.

Quick capture bar

The + button top-right (or press n) opens a three-tab picker: New Lead / New Task / New Note. One-tap add without leaving the page you're on.

Power-user tips

  • URL as command line. Deep-link to filtered views: /leads?stage=NEW, /leads?assignedToId=<user>, /procurement/grns?status=DRAFT. Bookmark these.
  • Middle-click to open in a new tab. Every navigation link supports it. Useful for cross-referencing without losing your place.
  • Right-click a record row for a context menu (edit, duplicate, archive).
  • The CtrlP (print) layout hides the sidebar and paginates cleanly. Use it to generate PDFs of any list or detail page.
XIV

Bulk operations · export, import, bulk actions

Moving a lot of records at once. Everything list-page has export. Imports are file-based and per-entity. Bulk actions live on the list pages themselves.

Exporting from any list

  • Every list page has an Export CSV button in the top-right area (near filters).
  • Applied filters carry into the export — export exactly the rows you're seeing.
  • For very large exports (over 5000 rows), the export runs as a background job; you'll get a download link in the notification bell when it's ready.
  • Reports (AR aging, dashboards) export as CSV or PDF via the same button.

Bulk actions on list pages

Check-boxes on the left of each row allow bulk selection. Once one or more rows selected, a bar appears with actions:

  • Assign — reassign selected records to a specific user (Leads, Tasks, Warranty Claims).
  • Tag — add or remove tags.
  • Change status — bulk stage advance (Leads only).
  • Soft delete — hide from all views (requires admin role).
  • Export — CSV of the selection.

Importing existing data

Bulk import scripts live in /opt/nicksonpumps-crm/scripts/. Each takes a CSV in a specific schema and upserts. Documented in the script header. Run over SSH:

EntityScriptCSV columns
Dealersscripts/import-dealers.tscode, legalName, displayName, phone, city, state, pincode, tier, creditDays
Productsscripts/import-products.tssku, name, category, brand, hp, voltage, head, flowRate, priceInr, moq
Vendorsscripts/import-vendors.tscode, legalName, tradeName, vendorType, gstin, city, state
Employeesscripts/import-employees.tsempNo, firstName, lastName, email, phone, gender, dob, joinDate, deptCode, desigCode
Opening stockscripts/seed-day-one-data.tsModify the openingStock array inline for a specific list

All import scripts are idempotent — safe to re-run. They upsert by unique key.

Test in staging first. A bad CSV can create hundreds of malformed rows. If you're not sure, ask Tarun or run on a copy of the DB first.
XV

Permissions matrix · who can do what

Detailed role × action grid. Legend: full access · own records only · no access.

Action ADMIN SALES DISPATCH ACCOUNTS WARRANTY HR EMPLOYEE DEALER
Sales
Read leads
Create lead
Read dealers
Create quote / order
Read invoices
Procurement
Read vendors
Create PO
Post GRN (cash)
Three-way match
Manufacturing
Read BOMs
Create Work Order
Post Stock Entry
HR & Payroll
Read employee roster
Onboard employee
Approve daily work
Run payroll
Read own payslip
Finance
Record payment
Cash Register entry
Read AR aging
Issue credit note
Dispatch & Warranty
Prepare dispatch
Triage warranty claim
Admin
Approve above-threshold PO
Change any record's status
Configure integrations
XVI

Notification templates catalog

Every automated message the system can send — when it fires, who gets it, on which channel. Full template bodies live in lib/notifications/email-templates.ts; customise via /settings/integrations.

Sales

EventRecipientChannel(s)
New lead assigned to meSales repIn-app, WhatsApp
Lead stalled > 7 days in one stageSales rep + managerIn-app, Email
Quote sent to customerCustomerEmail, WhatsApp (with PDF)
Quote about to expireSales repIn-app
Order confirmedCustomer, dispatch teamEmail, WhatsApp, In-app

Procurement

EventRecipientChannel(s)
PO awaiting approvalApprover (admin)In-app, Email
PO sent to vendorVendorEmail, WhatsApp (with PDF)
Reorder point breachedProcurement, adminIn-app
MSME 45-day deadline approachingAccounts, adminIn-app, Email
Vendor threshold advisory (₹40 L)AccountsIn-app

Manufacturing & Dispatch

EventRecipientChannel(s)
WO released to floorProduction supervisorIn-app
Dispatch ready for pickupDispatch teamIn-app
Delivery challan issuedCustomerWhatsApp (with PDF)
E-way bill validity expiringDispatchIn-app, SMS

HR & Payroll

EventRecipientChannel(s)
Welcome / onboardingNew employeeEmail (with initial password)
Daily work submission receivedHRIn-app
Work submission approved / rejectedWorkerIn-app, WhatsApp
Payslip readyEmployee / workerWhatsApp, In-app, Push
Leave application requires approvalManagerIn-app
Leave decisionApplicantIn-app, WhatsApp
Missing punch (attendance regularization)Employee, managerIn-app

Finance

EventRecipientChannel(s)
Invoice sentCustomerEmail (with PDF), WhatsApp
Payment receivedCustomer, sales repEmail, In-app
Payment overdueCustomer, sales rep, adminEmail, WhatsApp
Section 269ST warningCash-register submitterIn-app (live in form)

Warranty & Service

EventRecipientChannel(s)
Warranty registeredCustomerWhatsApp (confirmation)
Claim filedWarranty teamIn-app
Technician assigned + scheduledCustomerSMS, WhatsApp
Technician arrival reminderCustomerSMS (2h before)
Claim closedCustomerWhatsApp
Every notification is logged at /notifications/log — recipient, channel, template, delivery status, retries. Use it to debug "did the customer get the invoice?" — search by phone or email.
XVII

Audit trail lookup · who changed what

Every mutation is logged. Two systems: Activity Timeline (record-facing, user-friendly) and Audit Log (system-facing, forensic). Use the first for daily questions; the second for disputes and compliance audits.

Activity Timeline (record-facing)

Every detail page — lead, order, invoice, employee, GRN, etc. — has an Activity section at the bottom that shows:

  • Every user-driven action on the record (created, edited, status changed, note added)
  • Automated system events (invoice generated, IRN received, notification sent)
  • Free-form notes / comments logged by users
  • Each entry has timestamp, actor, and (where applicable) a before / after diff

This answers ~90% of "who changed X" questions without needing developer access.

Audit Log (system-facing)

Deeper log at /audit (admin only). Every mutation on every table, immutable, with:

  • Actor user ID
  • Timestamp (millisecond precision)
  • Table + record ID affected
  • Operation (INSERT / UPDATE / DELETE)
  • Complete before/after JSON snapshot
  • IP address + user agent

Filter by user, date range, table, or operation. Export as CSV for audit response.

Common lookups

QuestionWhere to look
Who last edited this invoice?Invoice detail → Activity Timeline (last entry)
Who changed dealer XYZ's credit days?Dealer detail → Activity Timeline → filter to "field: creditDays"
All actions user Ramesh took last month/audit?userId=<id>&from=&to=
Every mutation on Sales Order SO-2026-00042/audit?table=SalesOrder&recordId=<id>
Who deleted anything today?/audit?op=DELETE&from=today
Retention: audit log entries are kept 8 years (matches Indian tax audit statute of limitations). Not automatically purged.
XVIII

Backup & disaster recovery

Data safety — what's backed up, how often, where it lives, and how to restore. Owner should know this at least conceptually; developer executes the recovery.

What's backed up

  • PostgreSQL database — the whole thing, including all schemas, tables, indexes, and audit history. Nightly compressed dump.
  • Uploaded files — attendance selfies, warranty photos, claim photos, product images, invoice PDFs. Nightly incremental to backup partition.
  • Configuration/opt/nicksonpumps-crm/.env.local (SMTP creds, GSP creds, VAPID keys) — backed up encrypted; separate from the main backup partition.
  • Application code — GitHub is the source of truth; not backed up separately.

Backup schedule

  • Nightly — full PostgreSQL dump + incremental file backup, both to the VPS's local backup partition /var/backups/nickson/.
  • Weekly — off-site sync to a separate storage location (currently manual; Rahul's local drive).
  • Retention — 30 days of nightlies on the VPS; 3 months of weekly off-site.

Recovery procedure

If something bad happens — data corruption, accidental bulk delete, ransomware — this is the sequence:

  1. Stop the app: pm2 stop nicksonpumps-crm on the VPS.
  2. Rename the current database: psql -c "ALTER DATABASE nickson_crm RENAME TO nickson_crm_corrupted"
  3. Create a fresh database with the same name.
  4. Restore the latest good nightly dump: pg_restore -d nickson_crm /var/backups/nickson/latest.dump
  5. Restore uploaded files: rsync -a /var/backups/nickson/uploads/ /opt/nicksonpumps-crm/uploads/
  6. Start the app: pm2 start nicksonpumps-crm
  7. Verify — log in, check /dashboards/owner, spot-check a few records.
  8. Communicate — send a notice to all users about what data is now current (up to which timestamp).

Recovery time objectives

  • RPO (Recovery Point Objective) — up to 24 hours of data loss in the worst case. Nightly backups mean transactions during the day since the last backup are lost.
  • RTO (Recovery Time Objective) — ~1 hour from disaster to app running again, assuming backups are intact.
Off-site backup is currently manual. To improve resilience, set up automated off-site sync — to a cloud object store (S3, DigitalOcean Spaces) or a rotating external drive. Discuss with Tarun.
XIX

Getting comfortable — module by module

A guided tour of every module, framed for adaptation. Not what a module is (that's Part II) — but why it matters to you, what your first task is, how it connects to everything else, and the moment you'll know you've mastered it. Read in order the first time; return to any single lesson later.

19.1How to use this section

Set aside about two hours total. Do the seventeen lessons in order — each 5-10 minutes of reading plus a small hands-on task you can literally do on prod using the seeded data. By the end, you'll have touched every corner of the console at least once and understand where each module fits in the whole.

Every lesson has the same four-block structure:

  • Why this matters to you — the business reason to care about this module today, not "one day" or "in theory".
  • Your first task — a concrete 5-minute action to try right now. Uses the seeded data so nothing breaks.
  • How it connects — the adjacent modules this one feeds into or draws from. Once you see the graph, the whole console clicks.
  • Mastery signal — the specific thing you'll be able to do without checking the manual.

19.2The learning path

Suggested reading order. Follow it and each lesson builds on the previous.

01
Foundation Leads → Dealers → Products. The identities you'll refer to everywhere else.
~20 min
02
Revenue cycle Commerce (quote → order → invoice → payment). The path from an inquiry to money in the bank.
~15 min
03
Supply cycle Procurement (PO → GRN → three-way match). The path from a shortage to raw material on the shelf.
~15 min
04
Production Manufacturing + Inventory. Turning raw material into finished pumps and tracking every unit.
~20 min
05
People HR + Payroll + Employee self-service. Onboarding, attendance, piece-rate, salary.
~20 min
06
Fulfilment & money Dispatch + Finance. Getting goods out; recording the money in and out.
~15 min
07
Customer lifetime Field & Service + Warranty. What happens after the pump leaves the plant.
~10 min
08
Governance Quality + Assets + Notifications + Settings. The support systems.
~10 min

19.3Patterns that carry across every module

Five patterns that show up everywhere. Learn them once, apply them everywhere.

  • List → Detail → Edit. Every module has a list page, a detail page per record, and an edit form. Sidebar → list → click row → detail. Simple everywhere.
  • Sidebar filter by role. What you see depends on your role. If a section is missing, that's by design — you can still ⌘K to jump if allowed.
  • Status enums drive workflow. Every record has a status; changing it advances the workflow. Part VII explains every enum in the system.
  • Every mutation logs to Activity. Detail page bottom always has an activity timeline — who, when, what changed.
  • Numbers stored as paise or integers. Money is paise (₹1 = 100). Percentages are usually 0-100. Time as ISO strings.
01

Leads — the top of your revenue funnel

5 min
Why this matters to you

Every customer that will ever buy from Nickson enters through here. If a lead isn't logged, it can't be followed up; if it isn't followed up, it becomes a sale for a competitor. This module is the first defence against lost revenue.

Your first task · 5 min

Open /leads/kanban. Look at the seeded Balbir Singh lead in the NEW column. Click it. Read the detail page. Now click + New Lead and log a fake practice lead — Ravi Kumar, phone +919999111222, city Amritsar, source PHONE. Save. Move it through NEW → CONTACTED → QUALIFIED just by dragging on the kanban. Now delete it (soft) so it's off the list.

How it connects

Feeds → Dealers Commerce (quote) Field visits

You've mastered this when

Someone tells you about a customer inquiry over the phone, and by the time you hang up, the lead exists in the console with all context captured — without you thinking about which fields to fill.

02

Dealers — your distribution network, mapped

5 min
Why this matters to you

Nickson doesn't sell direct to end-consumers — dealers do. Every one of them has credit terms, a tier, an address, a preferred contact. When those live in your head, only you can quote correctly. When they live here, the whole team can.

Your first task · 5 min

Open /dealers. Notice 15 seeded dealers across PB / HR / UP / RJ / MP / UK. Click Balbir Singh Pump House. Read the detail — tier is Gold, credit 45 days, primary phone visible. This is what a rep sees when quoting. Now click + New Dealer and try filling in the state code field — try PB vs DL to see the address form. Cancel out — you don't need to save a test dealer.

How it connects

Drawn from → Leads · Feeds → Commerce Warranty claims Cash Register AR aging

You've mastered this when

A rep asks you what price to quote Balbir Singh and you know without looking — Gold tier, 45 days, standard schedule with x% margin.

03

Products & Catalog — one SKU, one truth

10 min
Why this matters to you

The catalog is the shared language between sales, procurement, and manufacturing. When SKU NIC-V4-5HP shows up on a quote, on a BOM, on a stock report, and on a warranty claim, they're all pointing at the exact same thing. Get the catalog right and the whole system speaks the same language.

Your first task · 10 min

Open /products. Note 24 seeded products — 12 pumps + 12 raw materials. Filter by category to see submersibles only. Click NIC-V4-5HP. Read every field. Now go to /products/new and start filling in a hypothetical NIC-V4-3HP-EXPORT. Notice how many fields exist (see Part IX § 9.3). Cancel out.

How it connects

Feeds → Commerce (quote lines) Procurement (PO lines) Manufacturing (BOM components) Inventory (stock rows) Warranty (serial lookup)

You've mastered this when

When a new SKU launches, you know exactly which fields to fill in what order — pricing, specs, warranty, valuation method, tracking flags — without a checklist.

04

Commerce — turning inquiries into money

15 min
Why this matters to you

This is where a lead becomes revenue. Quote → Order → Invoice → Payment is the single most important workflow in the whole system. Every rupee that hits your bank passes through here. Master this and you understand the revenue engine.

Your first task · 15 min

Follow Walkthrough 01 (Part IV § 01) end-to-end. Log the Balbir Singh lead, convert to quote, convert to order, confirm order. At each step, look at where the record now lives in the sidebar — Leads → Commerce/Quotes → Commerce/Orders. Notice the status pill change on each transition.

How it connects

Drawn from → Leads Dealers Products · Feeds → Manufacturing (WO) Dispatch Finance (invoice, payment)

You've mastered this when

You can start with a phone call and finish with an invoice number in under 15 minutes, GST computed correctly, and the whole chain visible in one detail page.

05

Procurement — raw material in the door

15 min
Why this matters to you

You can't manufacture without raw material. This module makes the difference between "we ran out of bearings and lost a day" and "everything we need is on the shelf, at the best historical price". Also where the biggest cost-saving levers live.

Your first task · 15 min

Open /procurement hub. Click through — Vendors, Purchase Orders, Goods Receipts, Vendor–Part directory. Now follow Walkthrough 02 (Part IV § 02) — log a cash-purchase GRN for 5 bearings from Guru Nanak Hardware. Watch stock go up.

How it connects

Drawn from → Manufacturing (reorder alerts) · Feeds → Inventory Finance (vendor invoice, payment) Vendor-Part directory

You've mastered this when

You never place a PO without first checking the vendor–part directory for the last price. Every reorder alert gets converted to a PO within 24 hours.

06

Manufacturing — actually making the pumps

15 min
Why this matters to you

This is where value is created. BOM → Work Order → Job Cards → Piece-rate — every step has a name and a screen. Managing this from the office instead of the shop floor is the difference between being a scale business and being a shop.

Your first task · 15 min

Open /manufacturing hub. Click through BOMs, Work Orders, Job Cards, Workstations, Stock Entries. Try creating a fake BOM at /manufacturing/boms/new for a made-up product — use the datalist to pick real raw materials as components. Don't save.

How it connects

Drawn from → Products (BOM output + components) Procurement (raw material) Commerce (WO from SO) · Feeds → Inventory (stock entries) HR (piece-rate logs) Dispatch

You've mastered this when

Given a new pump model, you can build its BOM, release a Work Order, allocate Job Cards, and predict piece-rate payroll within a 5% margin.

07

Inventory — know exactly what you have, where

10 min
Why this matters to you

The single most expensive thing in a manufacturing business is not knowing your own stock. This module gives you real-time answers to "do we have 20 V4 5HP ready to ship" without walking to the FG warehouse.

Your first task · 10 min

Open /inventory/stock-balances. Filter to NIC-V4-5HP. See where it sits across warehouses. Now open /inventory/reorder-rules. See which raw materials have reorder alerts armed. Try tightening one reorder point by 20% and see if the alert fires — then revert.

How it connects

Fed by → Procurement (GRN) Manufacturing (stock entry) · Feeds → Dispatch (available FG) Owner Brief (alerts)

You've mastered this when

Anyone asks "do we have X in stock?" and you answer in under 30 seconds, with warehouse-level breakdown.

08

HR & Payroll — the whole team, one view

15 min
Why this matters to you

Payroll disputes are the #1 source of shop-floor friction. This module puts every worker's attendance, piece-rate, and pay in one place — so disputes become impossible instead of expensive. Also handles statutory compliance (PF / ESI / TDS) automatically.

Your first task · 15 min

Open /hr/employees. See 12 seeded employees. Click Rahul Singh — see his full profile. Now open /hr/approvals/daily-work — this is where you'd approve piece-rate submissions. Try Walkthrough 04 (Part IV § 04) if you want to see the approval flow end-to-end.

How it connects

Fed by → Manufacturing (piece-rate logs) Attendance · Feeds → Finance (payslip payment) Employee self-service

You've mastered this when

Monthly payroll close takes 30 minutes end-to-end. Every worker's balance is visible on demand. Zero disputes.

09

My Nickson — the shop-floor worker's own view

5 min
Why this matters to you

When workers can see their own earnings, attendance, and balance on their own phone, retention improves dramatically. This is the module that transforms them from "employees waiting to be paid" into "people who own their own numbers".

Your first task · 5 min

Sign out. Sign in as worker@test.nicksonpumps.com (or phone-OTP +91 9999-999-902). See the "My Nickson" section in the sidebar — that's what a shop-floor worker sees. Click Attendance, Work, Salary, Balance. This is their whole world.

How it connects

Fed by → HR (roster) Manufacturing (piece-rate ops) · Feeds → HR approvals Attendance dashboard

You've mastered this when

A worker walks up asking about a missing payment — you can pull up their /e/balance from your own admin view and resolve it in under 2 minutes.

10

Dispatch — getting product out the door

10 min
Why this matters to you

A finished pump sitting in FG is not revenue. Dispatch is where value crystallises into shipped product — with e-way bill, delivery challan, and the serial-to-customer link that unlocks warranty later.

Your first task · 10 min

Open /dispatch hub. See today's queue. Click through Serial Numbers — this is your product lifetime registry. Every pump ever built has a row here. Try /dispatch/new to see the form fields (from Part IX). Cancel out.

How it connects

Drawn from → Commerce (orders) Manufacturing (FG stock) · Feeds → Warranty (serial-to-customer) Commerce (invoice trigger)

You've mastered this when

You can prep a dispatch for a 20-unit order end-to-end in under 20 minutes — including serial allocation, e-way bill, and delivery challan.

11

Finance — money in, money out, books clean

15 min
Why this matters to you

This is where the CRM turns from an operational tool into a business you can defend on audit. Invoices, payments, credit notes, AR aging, MSME 45-day gate, and the Cash Register with legal exemption tagging. Everything the CA needs, generated automatically from actual events.

Your first task · 15 min

Open /finance hub. Note KPI tiles. Click Cash Register. See the 8 seeded sample entries — one for every legal exemption reason. Follow Walkthrough 03 (Part IV § 03) to log a ₹340 petty cash tea purchase. This is the module you should re-read most — Part VII § 7.7 has the deepest treatment of exemption reasons.

How it connects

Drawn from → Commerce (invoices) Procurement (vendor invoices) HR (payroll) · Feeds → Owner Brief CA year-end pack

You've mastered this when

For any cash movement in the business, you know instantly whether it belongs in Cash Register or as a full invoice / GRN — and which legal exemption category applies.

12

Field & Service — the outside team

5 min
Why this matters to you

Field reps and service technicians are the highest-cost, hardest-to-observe part of the team. This module makes their day-to-day visible — visits, beats, DCRs, expenses — so you can coach and optimise from the office.

Your first task · 5 min

Open /field hub. Look at visits, beats, DCRs. Notice how each visit has GPS + timestamp + notes — this is the "proof of work" for people you can't sit next to. Skim recent DCRs to see what a good end-of-day summary looks like.

How it connects

Drawn from → Dealers (beat targets) Warranty (technician visits) · Feeds → Sales dashboard Warranty claims

You've mastered this when

You know your top three field reps' beat coverage percentages off the top of your head and can spot when someone's slipping.

13

Quality (QMS) — audit-ready without audit stress

5 min
Why this matters to you

ISO 9001:2015 requires a documented evidence chain — NCRs, CAPAs, calibrations, effectiveness verifications. This module builds that chain automatically from your day-to-day quality decisions. When the ISO auditor visits, the evidence is already there.

Your first task · 5 min

Open /qms hub. Look at NCRs (Non-Conformance Reports) and CAPAs (Corrective / Preventive Actions). Even if empty right now, understand the flow: something fails QC → NCR raised → root cause → CAPA action items with owners + due dates → effectiveness verification → closure.

How it connects

Drawn from → Procurement (GRN QC decision) Manufacturing (Job Card quality) Warranty claims (root cause) · Feeds → Quality dashboard

You've mastered this when

Every QC failure automatically raises an NCR without prompting. Every recurring quality issue has a CAPA with a clear owner and due date.

14

Assets — machines, vehicles, and their upkeep

5 min
Why this matters to you

Depreciation, AMC contracts, preventive maintenance schedules — these are the things that quietly cost you money when neglected. Log them here once and get automated alerts before renewal deadlines or maintenance due dates.

Your first task · 5 min

Open /assets hub. Look at AMC contracts, depreciation schedule, maintenance calendar. If the register is empty, that's your first admin task — add every machine + vehicle you own with purchase cost + salvage value + useful life.

How it connects

Feeds → Finance (depreciation) Maintenance schedules

You've mastered this when

You know every fixed asset's next AMC renewal date and preventive maintenance due date — visible on the dashboard, no digging required.

15

Warranty — the customer relationship after the sale

5 min
Why this matters to you

Warranty capture rate is the leading indicator of brand strength. Every pump the customer registers is a lifetime relationship you own. This module makes registration nearly frictionless (QR scan → OTP) so capture rate goes from ~30% to 90%+.

Your first task · 5 min

Open a browser to /w/[any-serial-from-dispatch] as if you were a customer. See what they'd see when scanning the QR sticker on a pump. Now log in as warranty@test.nicksonpumps.com and look at /dispatch/warranty-claims — the triage queue.

How it connects

Drawn from → Dispatch (serial-to-customer) · Feeds → Helpdesk tickets Field visits NCR (recurring failures)

You've mastered this when

Every dispatched pump has warranty registered within 30 days of delivery. Every claim gets triaged and assigned to a technician within one business day.

16

Notifications — signal through the noise

5 min
Why this matters to you

Every automated message the system sends and every announcement you broadcast lives here. When someone asks "did the customer get the invoice?" — this is your answer log.

Your first task · 5 min

Open /notifications/log. See the last week's messages. Filter to a specific recipient (any test user's email). Now try creating an announcement at /notifications/announcements/new — pick audience ALL_STAFF, mark pinned, publish. See how it appears in the sidebar bell.

How it connects

Fed by → Every module · Configured via → Settings

You've mastered this when

You can answer "did the customer get X" in under 30 seconds using the notification log. You use announcements sparingly enough that people still read them.

17

Settings — the control panel

5 min
Why this matters to you

Every integration credential, every configurable behaviour, every branding value lives here. Get this right once and everything else works. Get it wrong and small paper cuts multiply across every workflow.

Your first task · 5 min

Open /settings. Click through Integrations. If Part XII (Integrations setup) had gaps in your config, this is where you fix them. Verify each integration has fresh credentials and test each end-to-end.

How it connects

Configures → Every integration Notification templates Auto-numbering

You've mastered this when

All integrations green. All templates active. You know where each credential lives without hunting.

19.4Mastery signal — you know the CRM when…

You've absorbed the system when — without checking this manual — you can:

  1. Take a phone inquiry from a farmer's cousin and get it into the system with all context captured, in under 2 minutes.
  2. Approve a batch of daily-work submissions before your morning tea.
  3. Post a market-run cash purchase for bearings on your phone, walking back from Chowk Mehta.
  4. Answer any staff question by pulling up their role's view via CtrlK — you know what they see because you've been in their shoes here.
  5. Explain to your CA at year-end why the Cash Register books are cleaner than any competitor's.
  6. Walk the ISO auditor through the QMS evidence chain from a warranty claim back to the batch and shift.
  7. Feel calm on Monday morning because the Owner Brief tells you what to attend to first.

Once you have that pattern, teach it to two other people in the team. That's when you know it's yours.

XX

Closing coverage & appendices

The last modules that weren't given their own section elsewhere, plus the reference appendices — number-series patterns, glossary, changelog. After this the manual is genuinely complete.

20.1Content Management (CMS)

The console doubles as the CMS for the public marketing site at nicksonpumps.com. Update copy, banners, and industry pages without touching code.

ScreenWhat it isCommon actions
/content/bannersAnnouncement strips + hero-below carousel bannersPublish a new campaign banner, schedule active dates, sort order
/content/faqsFAQ entries grouped by categoryAdd a Q&A, edit answer, mark featured
/content/industriesIndustry-vertical pages (agriculture, real estate, hospitality)Add a new industry, upload hero image, edit copy in EN/HI/PA
/content/pagesFree-form marketing site pages (about, careers, certifications)Edit sections, hero images, CTAs, contact info

Every content edit auto-triggers ISR revalidation on the marketing site — changes appear live within ~5 seconds. Locale-aware fields (*Hi, *Pa) allow Hindi and Punjabi variants that dealers and end-customers see based on their language switcher choice.

20.2Tasks

A lightweight task system that runs alongside every module. Tasks can be personal (yours only) or assigned to another user. Common uses:

  • Follow-up reminders on leads and quotes
  • Approval delegation ("Rahul, review this PO before Friday")
  • Recurring maintenance reminders
  • Personal to-dos that don't fit another module
ScreenPurpose
/tasksAll tasks — filter by assignee, status, due date, related record
/tasks/newCreate a task — title, description, due date, priority, assignee, optional subject linkage (Lead, Order, Warranty Claim, etc.)

Fields on the task form:

Title text req
Short description of the task.
Description text · long opt
Full context.
Assignee User picker req
Blank = yourself.
Due date date + time opt
Overdue tasks bubble to the top of the assignee's inbox.
Priority LOW / NORMAL / HIGH / URGENT opt
URGENT surfaces in the notification bell.
Related record picker opt
Optional link to a Lead, Order, Claim, etc. — creates a back-link on that record's activity timeline.

Tasks respect authority scope — via the canAssign() helper, users can only assign to their reports or peers, not to anyone across the org.

20.3Recruitment — full flow

The hiring pipeline. Publish → source candidates → interview rounds → offer → convert to Employee. Everything under /hr/recruitment.

Stages

  1. Job opening/hr/recruitment/openings/new. Title, department, designation, grade, job description, hiring manager, target close date. Publish when ready.
  2. Candidate applications — either applied via public careers page or hand-entered by HR. Each has resume upload, source, current CTC, expected CTC.
  3. Interview rounds — configurable per opening (screening call, technical, HR round, final). Each round has an interviewer, a scheduled date, notes, and a rating.
  4. Offer letter — auto-generated from a template using the candidate's negotiated compensation. Emailed as PDF.
  5. Convert to Employee — one click on the accepted candidate creates the EmployeeV2 record with everything pre-filled.

Screens

ScreenWhoPurpose
/hr/recruitment/openingsHR + hiring managerAll openings, filter by status / department
/hr/recruitment/openings/newHRPost a new opening
/hr/recruitment/openings/[id]HR + hiring managerApplicants, interview rounds, decision log
/hr/recruitment/candidates/[id]HR + interviewersCandidate profile, rounds, notes
/hr/onboarding/invitationsHRSend a self-onboarding link to a candidate after offer acceptance — they fill personal + statutory details before day 1

20.4Salary structures & piece-rate overrides

Two separate payroll systems — structured salary for EmployeeV2 and per-worker piece-rate overrides for TemporaryWorker.

Salary structures (salaried employees)

/hr/salary-structures — templates per grade. A structure defines the earnings + deductions formula:

  • Earnings — Basic (usually 40% of gross), HRA (usually 40-50% of basic), Conveyance (fixed), Special allowance (balancer)
  • Statutory deductions — PF (12% of Basic, capped at ₹1,800/month), ESI (0.75% of gross for wages ≤ ₹21k/month), Professional Tax (state-specific slab, PB = ₹200/month), TDS (per Income Tax slab)
  • Custom deductions — advance recovery, loan EMI, uniform allowance recovery

Attach a structure to an employee via their profile → Compensation Revision. Structures can be revised for salary hikes — the history is preserved.

Piece-rate overrides (temp workers)

/hr/piece-rate-overrides — per-worker rate adjustments to the operation's default rate. Use when a specific worker has consistently higher quality or speed and deserves a bonus rate:

  • Pick worker + operation
  • Override rate in paise (must be within a reasonable multiplier of default)
  • Effective from / to dates
  • Approver + reason

20.5Dealer portal — external view

What a dealer sees when they log in with role DEALER_PORTAL. Constrained, self-service, focused on their own account.

ScreenWhat the dealer can do
/dealersTheir own dealer profile — contacts, addresses, credit terms (read-only)
/commerce/ordersOnly their own orders. Track status, download invoices.
/commerce/quotesPending quotes they can accept / decline
/dispatchIn-transit shipments to their location with delivery ETA
/dispatch/warranty-claimsWarranty claims filed by their end-customers
/finance/invoicesOnly their own invoices with payment status + AR aging
/onboardFirst-time onboarding for new dealer accounts — accept T&C, upload GST cert

Dealer portal login flow:

  1. Sales creates the dealer at /dealers/new and marks portal access.
  2. Dealer receives a welcome email with a self-registration link.
  3. Dealer sets a password, uploads GST + PAN, accepts T&C at /onboard.
  4. Sales approves; dealer can now log in at /login.

20.6Approval workflow admin

Not every action goes through immediately. Some require an approval step from an authorised user. This module manages the routing.

ScreenPurpose
/workflows-admin/approvalsAll approval requests — pending, approved, rejected. Filter by kind, requester, approver.
/workflows-admin/approvals/[id]Detail of a specific approval — full context, before/after diff, approve or reject with note
/workflows-admin/rulesApproval routing rules — "any PO above ₹1 lakh needs admin approval", "expense claims > ₹5k need manager", etc.

Approval kinds

  • PO above threshold — set threshold in Settings; higher POs enter PENDING_APPROVAL until approved.
  • Expense claims above threshold — usually ₹5k for manager, higher for finance.
  • Leave applications — auto-route to reporting manager.
  • Vendor payments above threshold — require admin sign-off on the outbound.
  • Credit note issuance — accounts-authorised only.
  • Salary revision — HR + admin joint approval.

Each approval carries a full audit trail: requester, timestamp, before/after diff, approver's decision, reason note. Everything visible in the record's activity timeline.

20.7Beat planning & lead source configuration

Beat plans

Pre-defined dealer visit routes for the field team. Instead of reps deciding where to go each day, beats structure the week.

  • /field/beats — list of all beats
  • /field/beats/new — create a beat

Each beat has: name (Amritsar Zone A), day of week, assigned rep, list of dealers to visit that day, expected duration. Reps see today's beat as the top card on /field.

Lead source configuration

/sources — configure the sources that appear in the Lead form's source dropdown. Each source has:

  • CodeINDIAMART, WALK_IN, PHONE
  • Display name
  • Active flag
  • Webhook URL (if automated) — for IndiaMART, Facebook Lead Ads, etc.
  • Auth token — for verifying webhook payloads
  • Default assignee / round-robin group — who owns leads from this source by default
  • SLA target — first-response deadline (in hours)

20.8Number series & sequence patterns

Every entity has an auto-generated identifier. Learn these patterns and you can recognise records at a glance.

EntityPatternExampleReset frequency
Leadinternal cuidnever (opaque)
DealerDLR-STATE-###DLR-PB-001never (manual scheme)
VendorV-######V-000042never (system-wide)
Productcustom SKUNIC-V4-5HPnever (manual scheme)
EmployeeEMP-YYYYMM-####EMP-202607-0001per month
Temp workerTMP-YYYY-####TMP-2026-0042per year
QuoteQT-YYYY-#####QT-2026-00042per year
Sales OrderSO-YYYY-#####SO-2026-00042per year
InvoiceINV-YYYY-#####INV-2026-00042per year
Purchase OrderPO-YY-######PO-26-000042per year
GRN (from PO)GRN-YY-######GRN-26-000042per year
GRN (cash purchase)GRN-YY-######GRN-26-000123per year
Vendor InvoiceVINV-YY-######VINV-26-000042per year
Vendor PaymentVPAY-YY-######VPAY-26-000042per year
Stock MovementSM-YY-########SM-26-00000042per year
Stock EntrySE-YYYY-#####SE-2026-00042per year
Work OrderWO-YYYY-#####WO-2026-00042per year
Job CardJC/YYYY/#####JC/2026/00042per year
BOMcustomBOM-V4-5HPnever (manual scheme)
Dispatch OrderDO-YYYY-#####DO-2026-00042per year
Cash RegisterCR-YYYYMMDD-####CR-20260712-0042per day
Daily Work SubmissionDWS-YYYYMMDD-######DWS-20260712-000042per day
NCRNCR-YY-####NCR-26-0042per year
CAPACAPA-YY-####CAPA-26-0042per year

20.9Glossary of terms

Industry acronyms and Nickson-specific vocabulary used throughout the console. Alphabetical.

AR (aging)
Accounts Receivable. AR aging = how long each customer invoice has been unpaid, bucketed by 0-30 / 31-60 / 61-90 / 90+ days.
BOM
Bill of Materials. The recipe for how to build one output product — components + operations + scrap allowances.
CAPA
Corrective and Preventive Action. Formal quality response to an NCR — root cause + action items + effectiveness verification.
CGST / SGST / IGST
Central / State / Integrated GST. CGST + SGST charged on intra-state supplies (half each); IGST on inter-state (full).
CTQ
Critical-to-Quality. A BOM component flagged as CTQ gets extra QC attention at incoming and in-process stages.
DCR
Daily Call Report. End-of-day summary from field reps.
EWB · e-way bill
Electronic Waybill. Mandatory for inter-state dispatches over ₹50,000 (some states also for intra-state above thresholds). Generated via NIC GSP.
FG
Finished Goods. Warehouse type where completed pumps live before dispatch.
FIFO / LIFO / MOVING_AVERAGE
Inventory valuation methods. See Part VII § 7.2.
GRN
Goods Receipt Note. Formal record that inbound stock has been received.
GSP
GST Suvidha Provider. A licensed intermediary that connects to the government's GST portal for IRN + e-way bill.
GSTIN
GST Identification Number. 15-character format: 2-digit state + 10-char PAN + 1 entity number + 1 check + Z default.
HSN
Harmonised System of Nomenclature. GST commodity classification code. Required on invoices above certain turnovers.
IRN
Invoice Reference Number. Unique NIC-issued code that certifies an invoice under e-invoicing. Mandatory for B2B invoices from businesses with turnover ≥ ₹5 crore.
MOQ
Minimum Order Quantity.
MSME
Micro, Small & Medium Enterprise. Registered via Udyam portal. MSME vendors must be paid within 45 days (MSMED Act 2006 + Section 43B).
NCR
Non-Conformance Report. Quality defect record.
PAN
Permanent Account Number. 10-character tax identity for individuals and businesses.
PF / ESI / TDS
Provident Fund / Employees State Insurance / Tax Deducted at Source. Statutory salary deductions.
POLine / GRNLine / BOMComponent
The individual line items on a Purchase Order, Goods Receipt Note, or Bill of Materials. Each represents one item on the parent document.
Piece-rate
Payment model where a worker is paid per unit completed (not per hour). Common on the shop floor for winding, assembly, testing.
PWA
Progressive Web App. A website that behaves like a native app — installable to home screen, offline-capable, push notifications.
RCM
Reverse Charge Mechanism. Under GST, some transactions require the buyer (not the seller) to pay the tax. Common for purchases from unregistered dealers, scrap traders, some transport.
RFQ
Request For Quotation. A formal price inquiry sent to vendors before raising a PO.
RPO / RTO
Recovery Point Objective / Recovery Time Objective. Backup-and-recovery targets. See Part XVIII.
Section 269ST
Income Tax Act section that caps cash transactions at ₹2 lakh. Cross it and Section 271DA imposes a 100% penalty.
Section 43B
Income Tax Act section that disallows expenses (like MSME payments beyond 45 days) as deductions if unpaid.
SLE
Stock Ledger Entry. The immutable per-item cost queue that drives FIFO / LIFO valuation.
SO / PO
Sales Order (customer) / Purchase Order (vendor). Same shape, opposite direction.
SKU
Stock Keeping Unit. Unique identifier for a product variant.
SWG
Standard Wire Gauge. Copper-wire thickness system used in stator winding. Lower SWG number = thicker wire.
TDS
Tax Deducted at Source. Buyer withholds a percentage of vendor payment and remits to government.
UAN
Universal Account Number. Employee's PF portable identity across employers.
Udyam
The current MSME registration portal (replaced the older Udyog Aadhaar).
UoM
Unit of Measure. Nos / Kg / Mtr / Ltr / EACH.
UTM
URL parameters (utm_campaign, utm_medium, utm_source, utm_content) used to attribute web traffic to specific marketing campaigns.
V3 / V4 / V6
Nickson's submersible pump form factors — V3 (3-inch dia), V4 (4-inch), V6 (6-inch). Larger = higher discharge, deeper wells.
WIP
Work-in-Progress. Warehouse type where partially-built products live between raw material issue and finished output.
WO / Work Order
A production batch instruction. Turns a BOM into actual output.

20.10Version history · how the CRM got here

The console has evolved through several distinct phases. This is what shipped in each — useful when someone asks "when did we get X".

Ph 1

Foundation Q3 2025

  • Core Leads, Dealers, Products, Commerce (quotes + orders), Procurement, Manufacturing, Inventory, HR + Payroll
  • PWA install, mobile shell, ⌘K command palette, QR resolver
  • Quick-capture bar, Owner Daily Brief
Ph 2

Retention & approvals Q4 2025

  • Activity thread on every record
  • Approval inbox at /workflows-admin/approvals
  • Dealer portal (external self-service)
  • Web push notifications (VAPID)
  • Bulk lead actions + CSV export
  • Offline queue (IndexedDB)
  • Dark mode
Ph 3

Integrations foundation Q1 2026

  • Pluggable adapter framework — WhatsApp (Gupshup / Meta), GST (Cleartax), transcription (Whisper / Sarvam), weather (IMD)
  • Mock adapter as default; env flag switches to real
  • Schema audit: every transactional model has dealerId — dealer portal live-data-ready
Ph 4

Voice, e-invoicing, dispatch, forecasting Q2 2026

  • Voice STT wired into captures (Whisper / Sarvam)
  • IRN + e-way bill via GspAdapter
  • Dealer portal warranty / order / dispatch forms
  • AR aging report
  • Owner Daily Brief + demand-forecast dashboard widget
  • WhatsApp inbound webhook
Ph 5

Self-build providers Q2-Q3 2026

  • WhatsApp direct to Meta Cloud API (no GSP dependency)
  • e-Way Bill direct to NIC
  • IndicWhisper + PaddleOCR Python sidecars for local transcription and photo-OCR
  • Open-Meteo weather (no key)
  • IndiaMART + Justdial direct integrations
  • Photo captures auto-OCR; voice auto-transcribed
Ph 6

Design system Q3 2026

  • Linear-grade OKLCH design tokens with dark-mode inverted brand
  • 5 UI primitives (PageHeader, EmptyState, Pill, KpiTile, DataTable)
  • Linear-tight AppShell
  • 127-file retroactive polish across the whole console
  • 68/68 pages green post-deploy
Ph B

Procurement + Cash Register Q3 2026

  • Cash-purchase GRN flow — ad-hoc vendor mode, no-PO receipts
  • Vendor–Part directory (derived from GRN history)
  • Stock Entry metadata edit (safe, header-only)
  • Owner dashboard (already shipped in Phase 4)
  • Cash Register with 11 legal exemption categories, Section 269ST guardrail, vendor threshold advisory
Ph C

Adoption & documentation Q3 2026

  • Test users for every role + demo workflow seed + master data seed + day-one data seed
  • Employee model unified under one AppShell (retired the separate /e mobile shell)
  • Nickson CRM operations manual v1.0 → v1.6 — this document
  • Real vendor / product / operation seed data for immediate usability

Every phase's commits, decisions, and gotchas are logged in the git history. When you need to trace "why is X the way it is", git blame + the commit message is the source of truth.

◇ ◇ ◇