Every engagement, open and closed — live from Pharmacy Audit Hub.
⏳ Loading…
⏳ Loading from Audit…
Live counts
Audit
📦 BT Inventory
Live product inventory, synced from Pharmacy Audit Hub via Supabase.
⏳ Loading…
⏳ Loading inventory from Random…
Product
Qty
Price
Manufacturer
Supplier
Conv.
Inventory Movement Audit
Stock Ledger
Five views on the shelf: stock that's never sold, stock gone quiet, stock stacked past what recent sales justify, plus two reference lists — items with an unreliable pack size, and items already at zero.
Using the Supabase client your host app already provides. No setup needed here.
Project URL Supabase project settings → API
Anon public key safe to use client-side — this is what it's for
Table name
Fallback sources — used if Supabase isn't reachable
JSON
Load an inventory fileDrop your inventory.json here, or browse. Fields expected: code, name, stock, unitPrice, conversionFactor, lastReceiveDate, lastSaleDate, netQty100Days.
1 — App key from your Dropbox App Console — not secret, fine to paste here
2 — Paste the code Dropbox shows you
Already connected before? paste the refresh token you saved last time and skip steps 1–2
Your refresh token — save this somewhere safe (password manager / notes). It won't be shown again and never gets written into this file.
File path in Dropbox relative to the app folder if you used "App folder" access
No file loaded yet
Load inventory.json above to generate the never-sold, dead-stock, excess, and reference reports.
No sale on record at all, and last received more than the selected window ago. Quantities are rounded down to full pack sizes (conversionFactor) before valuing — loose, partial-pack units are excluded from the value.
Has a sale history, but nothing sold in the selected window, and last received more than that same window ago. Mutually exclusive with Never Sold — this tab only covers items that sold at some point. Quantities down-rounded to full pack sizes before valuing.
The source data's "netQty100Days" field is actually a 90-day net sold quantity. Target 100d Stock = (Sold /90d ÷ 90) × 100 — the amount needed to cover 100 days at the current sell-through rate. Excess = current stock beyond that target, valued at unit price, no pack rounding. Items with zero sales in the last 90 days are excluded here — they show up under Never Sold or Dead Stock instead.
Stock is greater than zero but the pack size (conversionFactor) is missing, zero, or invalid — down-rounding to a pack isn't reliable, so these are excluded from Never Sold and Dead Stock and just listed here as raw data for review. (They can still appear under 100-Day Excess, since that calc doesn't depend on pack size.)
Stock is currently zero, so there's nothing to value — listed here as raw reference data only, excluded from all three main reports.
Excess Stock Working
Excess Working
Takes the 100-Day Excess rows from Stock Ledger, corrects each one down to whole packs, lets you mark items to always retain, and rolls it all up into a single corrected excess value — with a Top N / full-sheet export.
Replenishment
Reorder Report
Ranks items by sale value that are running low on stock cover for a chosen sales window (30/60/90d), against a "less than N days stock" threshold you set — a Top N buy list plus the full flagged list, groupable by supplier.
Inventory
Inventory Health Dashboard
One place for the whole catalogue's status — health mix, movers, a reorder-value trend, and a searchable table with every product's stock, cover days, sale velocity, and reorder/excess/dead-stock flag.
Health Breakdown
Movers (30d Sale Value)
SLOW MOVERS
Reorder Value Trend
Stock Value by Supplier
Product Status
Product
Supplier
Stock
Stock Value
Cover Days
Velocity 30/60/90d
Status
Last Received
Reorder Value
STR
STR Report
Stock transfers touching Bahria Town — dispatched out or received in — synced from the source system's last 7 days.
Loading…
to
STR #
Date
From → To
Status
Comments
Items
STR
Report
Every matching STR, flattened: dispatch branch → STR # → supplier, sorted by product code.
Loading…
to
STR
Zero Dispatch
Lines where STR Qty is raised but Dispatch Qty is still zero. Tick the STRs you want, then print.
All data syncs automatically to Supabase in real-time. No configuration needed — just push and pull.
Supabase sync ready…
⚡ Real-time sync active — when another device saves data, this device receives it instantly. No polling needed.
🕐 Sync History
last 10 events
No sync events yet.
🌙 Appearance
▶
Choose a light or dark theme, or follow your device's setting automatically.
⚡ Auto-Sync
▶
⚡ Real-time sync is always on — data from other devices arrives instantly. No 30-min polling needed.
☁ Google Drive Backup Not set up
▶
Saves a daily JSON backup to your BT-SALE-DATA folder in Google Drive. Drive API is enabled ✓ — just authorize once and backups run automatically.
✓ Google Drive API is enabled.
Just click Authorize Drive below (once). After that, a backup is saved to
BT-SALE-DATA
automatically every day when you open the app.
🔒 Security
▶
Ends every active session for your account — every phone, browser, or tab it's currently signed into. Use this if a device was lost, shared, or you're unsure who still has access.
🎯 Monthly Targets
▶
Set a sales goal for any month. Progress shows on Dashboard, Index cards, and the Sale Report page.
🔐 Google Auth & PIN Settings
▶
Google Sign-In
Managed in Supabase (bt_authorized_users) — add or remove rows in the Table Editor to change who can sign in, no redeploy needed.
🔒 Offline password sign-in has been disabled. Access is restricted to the three authorised Google accounts above — no other sign-in method is available.
📊 Export / Import
▶
📅 Add New Month
▶
📋 Data Summary
▶
🖨 Print PDF Reports
▶
Generate printable PDF reports for any day, month, or full year. Use your browser's Print → Save as PDF to export.
📅 Daily Report
📆 Monthly Report
📊 Yearly Report
💡 Tip: On the Index page, each year group has a 🖨 button to instantly print that year. Month cards in the Index open a modal with a Print Monthly button.
PDF Library
📚 Saved Reports
Every report you've printed, synced across devices — saved from the print prompt, auto-cleared once expired unless pinned.
Loading…
Activity Log
🕒 Activity Log
Date, time, section, and what changed — add, edit, or delete — synced across every device.
Add employees here once — they auto-appear in Salary, Generic Working and Staff Credits every month.
Edits auto-save as you type — this button is only for a manual sync-now / list cleanup.
Total Employees
0
Active
0
Inactive
0
💡 How it works: Saving the staff list here automatically updates Salary Sheet, Generic Working, and Staff Credit for the current month. Inactive employees are hidden from new months but their historical data stays intact. Changes sync to Supabase automatically.
Loading Jazz Cash ledger…
💡 Create any number of custom ledgers with your own categories — each one continuous, not month-scoped.
Auto-saves as you type.
#
Name
Designation
Days
HO Salary
Advance
Generic
Net Salary
🖨
Del
Auto-saves as you type.
#
Name
Designation
Generic Sale
Incentive (4%)
Extra
Final
Del
💡 New continuous Expense ledger — every entry saves immediately, no monthly reset, no "unsaved until you click Save" risk.
Auto-saves as you type.
💡 Each employee row shows their previous balance, daily credits/deductions, and the net carried to next month. Positive = money owed to employee, Negative = deducted next month. When the month ends, click 📋 Copy → Next Month — it saves current data and opens the next month with each person's net as their new opening balance.
Auto-saves as you type.
Groups
0
Total Items
0
Grand Total
₨0
Entries from Closing App that couldn't be automatically matched to a staff member or expense category.
The amount is already accounted for the moment it's saved — resolving here just decides where it belongs.
Auto-saves as you type.
📊 Base Figures
Sale Value
Generic Sale
Less Pilferage
Unapproved Discount
Till Short
💰 Bonus & Fines
Cash Target Bonus
Less Excess Fine (Generic)
Less Plus % Fine
Less Paper Fine
Less Panel Fine
🧾 Distribution
Tax (Salman)
📋 Commission
Sale Commission (0.5%)₨0
Less Pilferage₨0
Till Cheque₨0
Total Commission₨0
🎯 Bonus
Total Bonus₨0
💊 Generic
Generic Incentive (4.5%)₨0
Less Excess Fine₨0
Total Generic₨0
🏆 Grand Total₨0
➖ Deductions
Total Less (Fine)₨0
Pre-panel Total₨0
Less Panel Fine₨0
✅ Net Incentive₨0
👤 Split (÷ 2)
Tax₨0
Salman Net₨0
📑 Notes & Sheets
Notes, multi-sheet workbooks, and a live read-only view of Sale Data / Staff.
📑
Loading Notes & Sheets…
⚠️ Sync Conflict Detected
💻 This Device
☁️ Cloud (Other Device)
🔄 Restore from Drive Backup
Loading backups…
⚠ Restoring will merge backup data with current data (no duplicates). Existing entries are kept.
EMP-001
Employee
Uses the phone number above — save it first if you haven't.