DSRPro NAC Watcher — Chrome Extension v1.1.0
==============================================

Auto-captures Nepal Airlines tickets and sends them to DSRPro.
Detects the sale channel automatically (Direct / NAC B2B / BSP Agent)
from the ticket's "ISSUED BY" field.

WHAT'S NEW IN v1.1.0
--------------------
✓ Real Nepal Airlines ticket parser (verified against 14PJ37 sample)
✓ Channel detection: Direct (CTO/Station) · NAC B2B · BSP Agent
✓ Multi-currency: HKD, USD, NPR, AED, EUR, etc. (preserves original)
✓ Multi-tax breakdown: parses NP, T6, NQ, HK, I5, G3, YQ, YR codes
✓ Multi-segment route auto-build from airport names → IATA (HKG-KTM-HKG)
✓ "Paste Ticket Text" tab — works for PDF / email tickets
✓ Sample loader: 14PJ37 ticket pre-loaded for testing
✓ Channel-specific commission defaults:
    Direct: 0% comm, 0% TDS (airline counter sale)
    B2B   : 7% on base fare, 13% TDS deducted by NAC
    BSP   : 0% default (override per entry), 13% TDS
✓ Fixed: Nepal Airlines accounting prefix is 285 (was 114 in v1.0.0)

INSTALLATION (Chrome / Edge / Brave / Arc)
------------------------------------------
1. Unzip → folder  dsrpro-nac-watcher/
2. chrome://extensions  →  Developer mode ON
3. Load unpacked → select the  dsrpro-nac-watcher  folder
   (NOT the icons subfolder — the parent folder)
4. Pin the gold ✈ icon
5. Right-click icon → Options → set DSRPro URL → Save

TESTING WITHOUT REAL BOOKING
----------------------------
A) Use built-in sample
   • Click extension icon → "📥 Paste Ticket Text" tab
   • Click "Load Sample Ticket" (loads the 14PJ37 ticket)
   • Click "🔍 Parse Ticket"
   • Verify the preview detects: DIRECT, HKD 5,138, HKG-KTM-HKG
   • Click "→ Send to DSRPro" — DSRPro opens with form pre-filled

B) Use the mock NAC page
   • Click extension icon → "Test page →" (bottom right)
   • Page loads → banner pops up within 2 seconds
   • Click extension icon → ticket appears under "📋 Captured"

REAL USAGE
----------
On book-nac.crane.aero (or any NAC ticket page):
   1. Issue your ticket the normal way
   2. Banner pops top-right when the receipt page renders
   3. Click extension icon → "Send to DSRPro"
   4. DSRPro New Entry pre-filled · click Save

For PDF tickets (e.g., emailed Passenger Itinerary Receipts):
   1. Open PDF → Cmd+A → Cmd+C
   2. Click extension icon → "📥 Paste Ticket Text"
   3. Paste → "🔍 Parse Ticket" → verify → "Send to DSRPro"

CHANNEL DETECTION RULES (from ISSUED BY)
-----------------------------------------
"RA <city> SA ISO: ..." + STATION  →  DIRECT (NAC own office)
"... B2B / WEB / ONLINE / crane.aero" →  NAC B2B
"... <iata-agent-code> <agency name>" →  BSP

Example from 14PJ37:
  ISSUED BY : RA HKG SA ISO: HK 26MAY2026 14:49 12345678 HONGKONG STATION
  → matches "RA HKG SA" + "STATION" → DIRECT sale

WHAT GETS EXTRACTED
-------------------
• Customer name, PNR, Ticket No (285-XXXXXXXXXX format)
• Issued-by field + agent sine + issue date
• Multi-segment routes (auto IATA mapping from airport names)
• Flight number, travel date
• Base Fare, Taxes (sum of all tax codes), Surcharges (YQ+YR)
• Gross Total (in original currency)
• Payment mode (CA→Cash, CC→Credit Card, etc.)
• Fare basis, NUC, ROE for FX reference
• Channel-specific commission/TDS defaults applied

CURRENCY HANDLING
-----------------
Tickets often issued in HKD/USD/AED/etc. The watcher preserves the
original currency. In DSRPro, you can either:
   • Enter values as-is and set DSR currency to match
   • Convert manually to NPR (use ROE on ticket as reference)

Future: auto-convert via daily FX rates (Phase B).

RELATIONSHIP WITH EXISTING WATCHERS
-----------------------------------
~/Desktop/NAC_Projects/NAC_TICKET_AUTOMATION/watcher.py
   → watches ~/Downloads for PDF tickets · keep running

This Chrome extension
   → watches LIVE portal + accepts PASTED text

Together: live booking + PDFs covered.

TROUBLESHOOTING
---------------
▸ "Failed to load extension... Manifest file is missing"
  → You selected icons/ subfolder. Pick the parent  dsrpro-nac-watcher  instead.

▸ Banner doesn't appear on NAC page
  → Reload the page after enabling extension
  → Click icon → "⚡ Capture Now"

▸ Wrong channel detected
  → Open the captured ticket → 👁 View
  → If ISSUED BY field is unusual, send me the text and I'll add a pattern

▸ Some fields empty after parse
  → Click 📋 JSON to see what was captured
  → Field patterns may differ on your ticket format — paste the text
    in an issue and selectors will be updated

NEXT PHASES
-----------
B) Electron tray app — email + PDF + portal in one menu-bar app
C) Cloud sync — multi-staff agency support

GS Technologies · gurusharan.com · v1.1.0 · 2026
