Connecting to database…
🌐
Open in Browser Required
This file is opened inside WhatsApp / a messaging app.
Storage is blocked in this viewer — your inventory data cannot be saved here.
1
Tap the ⋮ menu or share icon at the top of this screen
2
Choose "Open in browser" or "Open with Chrome / Firefox"
3
Your inventory will be saved permanently in that browser
4
Next time: open the file directly from Downloads or Files app — not from WhatsApp
⚠️ Important: Always open TGAC GLASS STORE from your Files / Downloads app or browser bookmark — never from WhatsApp or Telegram — to keep your data safe.
Dashboard
Overview & Analytics
Category Distribution
Warehouse Stock
🏭 Warehouse Locations
📦 PRODN · INTRACO · OTHER
💎 Most Expensive Glass (per m²)
Select All
Top Categories by Quantity
Stock by Location
Items per Supplier
Category Breakdown
Full Inventory — Quantity by Item
Select All
Select All
📂
No Receiving Data
Import your ALL_RECIVING_TAG_DETAILS.xlsx file to see date-wise glass receiving summaries with codes auto-summed by date
Select All
Item Code ↕ Size (mm) Glass Description ↕ Height (mm) ↕ Width (mm) ↕ Supplier ↕ Category ↕ Actions
📑
PDF Report Export
Generate filtered PDF reports → go to Export page
💾
Full JSON Backup Import
Restore complete backup → Settings › Data

Upload File

Drag & Drop File Here

Excel (.xlsx, .xls) or CSV files

Browse Files

Import Options

Preview & Column Mapping

Map your file columns to inventory fields

Upload a file to preview data
📊

Excel Export

Full inventory as .xlsx

📄

CSV Export

Universal comma-separated

⬆️
Import Data
Import inventory from Excel or CSV → click to go to Import page
📑
PDF Report Generator
Filter · Select sections · Generate professional report
① Report Information
② Filter Glass Items
Select All Visible 0 selected
③ Report Sections to Include
⑤ Preview & Adjust Columns
Header
Cell Text
Border
💡 Drag column borders to resize  ·  Colors & borders apply to PDF export

📊 Inventory Overview

Live totals across your entire stock

System Settings

Low Stock Threshold
Alert when quantity falls below this
Items Per Page
Rows shown in table view
Currency
Used for all price displays
Default View
Default inventory display on load

🎨 App Theme

Choose a colour theme for the entire interface

☀️ Light
Classic Red
Pure White
Monochrome
Emerald
Ocean Blue
Arctic
Purple
Rose Pink
Sunset
Gold
Copper
Forest
Slate Orange
🌙 Dark
Dark Mode
Midnight Indigo
Carbon
Neon
🔮 Ultra 3D
Hologram
Deep Space
Obsidian Gold
Aurora
Lava Forge
Ice Crystal

🔤 Font Family

Choose the typeface used throughout the app

Aa
Inter
Aa
System UI
Aa
Rounded
Aa
Condensed
Aa
Monospace
Aa
Serif / Slab

📐 Layout & Density

Density
Spacing between elements
Sidebar Width
Width of the navigation sidebar
Border Radius
Card and button corner roundness
Font Size
Base text size for the app

📦 Dashboard Stats Display

Choose which statistics appear on your dashboard. All totals update live.

📦
Total Items
Unique product lines
🪟
Total Units
All sheets in stock
📐
Total SQM
Square metres (units × size)
📏
Avg SQM/Glass
Average sheet size
💰
Inventory Value
Total stock worth
⚠️
Low Stock Alerts
Items below threshold
🏷️
Categories
Glass type groups
🏭
Suppliers
Unique suppliers
🏆
Top Category
Highest quantity type

Table & Grid Options

Show SQM Column
Display calculated SQM in table
Show Unit Price
Display calculated unit price
Compact Grid Cards
Smaller cards = more per row
Highlight Low Stock
Color low-stock rows in table

Lock / Protection

Lock the file to prevent changes. Share while locked — edits are blocked until unlocked.

File Lock
Currently unlocked — data can be edited
Set / Change PIN
4-digit PIN protects the lock

📦 Full Backup & Restore

Export or restore ALL data (inventory + projects + item master) as one JSON file.

🗂 Per-Section Data Controls

Each section can be locked, exported, imported or cleared independently.

📦 Inventory
🏗 Projects
📋 Item Master
🪟 Glass View
💬 WA Orders
document.getElementById('pdf-section').scrollIntoView({behavior:'smooth'}),200)" onmouseover="this.style.boxShadow='var(--shadow-md)'" onmouseout="this.style.boxShadow=''">
📑
PDF Report Export
Generate professional filtered PDF reports → Export section
⬆️
Import Inventory (Excel / CSV)
Map columns and import data → Import section

⚠️ Danger Zone

These actions delete data from both local storage and Supabase cloud. They cannot be undone.

Storage Info

Storage Used
IndexedDB + LocalStorage

🔗 Public Link Mode

When enabled, anyone who opens your Netlify link will only see the Inventory page — nothing else. No login required for them. Perfect for sharing stock with customers or staff who only need to view.

Public Inventory View
Currently OFF — login required to access

🖼️ Company Logo

Upload your logo — it will appear in the header of every generated PDF report.

Click to upload logo
PNG, JPG or SVG · Max 2MB

🎨 PDF Report Theme

Choose a color theme for your exported PDF reports. The selected theme applies to all reports.

📧 EmailJS Configuration

EmailJS lets you send emails directly from this app — free up to 200 emails/month, no backend needed.

📋 How to set up (5 minutes, free):
1. Go to emailjs.com → Sign up free
2. Add an Email Service (Gmail / Outlook) → copy Service ID
3. Create an Email Template → copy Template ID
4. Go to Account → copy Public Key
5. Paste all three below and click Save
Public Key
From EmailJS Account page
Service ID
From EmailJS Email Services
Template ID
From EmailJS Email Templates
Default Recipient Email
Pre-filled in send modal
Sender Name
Shown as "From" name
💡 Template tip: In your EmailJS template, use these variables:
{{to_email}} · {{subject}} · {{message}} · {{from_name}}

📤 Quick Send Email Alert

Send a custom stock alert email right now.

📦 Create Data Tables (itemmaster, projects, inventory)

If Item Master import is not saving or Projects/Inventory data is not persisting to cloud, your Supabase project is missing the data tables. Run this SQL once in Supabase Dashboard → SQL Editor.

-- Create missing data tables (safe to run on existing DB) CREATE TABLE IF NOT EXISTS inventory ( id text PRIMARY KEY, data jsonb, updated_at timestamptz DEFAULT now() ); CREATE TABLE IF NOT EXISTS itemmaster ( id text PRIMARY KEY, data jsonb, updated_at timestamptz DEFAULT now() ); CREATE TABLE IF NOT EXISTS projects ( id text PRIMARY KEY, data jsonb, updated_at timestamptz DEFAULT now() ); -- Enable RLS ALTER TABLE inventory ENABLE ROW LEVEL SECURITY; ALTER TABLE itemmaster ENABLE ROW LEVEL SECURITY; ALTER TABLE projects ENABLE ROW LEVEL SECURITY; -- Drop old policies if they exist DROP POLICY IF EXISTS "allow_anon_all" ON inventory; DROP POLICY IF EXISTS "allow_anon_all" ON itemmaster; DROP POLICY IF EXISTS "allow_anon_all" ON projects; -- Allow full access via anon key (app uses its own login) CREATE POLICY "allow_anon_all" ON inventory FOR ALL USING (true) WITH CHECK (true); CREATE POLICY "allow_anon_all" ON itemmaster FOR ALL USING (true) WITH CHECK (true); CREATE POLICY "allow_anon_all" ON projects FOR ALL USING (true) WITH CHECK (true); -- ── TRANSACTIONS TABLE (Stock IN / OUT) ────────────────────────────────────── CREATE TABLE IF NOT EXISTS transactions ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), direction text NOT NULL CHECK (direction IN ('in','out')), txn_date date NOT NULL, txn_ref_no text, inventory_id text, item_code text, description text, height text, width text, quantity integer NOT NULL, reason text, created_by text, created_at timestamptz DEFAULT now(), updated_at timestamptz DEFAULT now() ); ALTER TABLE transactions ENABLE ROW LEVEL SECURITY; DROP POLICY IF EXISTS "allow_anon_all" ON transactions; CREATE POLICY "allow_anon_all" ON transactions FOR ALL USING (true) WITH CHECK (true);
🔗 Open Supabase

🛠️ Database Migration — v24 Update

If you see the error "Could not find the 'can_view_stockrecon' column" when creating users, your Supabase database needs a one-time column update. Copy the SQL below and run it in your Supabase Dashboard → SQL Editor.

-- Run this in Supabase SQL Editor (safe on existing databases) ALTER TABLE app_users ADD COLUMN IF NOT EXISTS can_view_stockrecon boolean DEFAULT false; ALTER TABLE app_users ADD COLUMN IF NOT EXISTS can_view_glassview boolean DEFAULT true; ALTER TABLE app_users ADD COLUMN IF NOT EXISTS can_view_itemmaster boolean DEFAULT false; ALTER TABLE app_users ADD COLUMN IF NOT EXISTS can_view_settings boolean DEFAULT false; -- Grant access by role: UPDATE app_users SET can_view_stockrecon = true, can_view_itemmaster = true WHERE role IN ('admin','manager'); UPDATE app_users SET can_view_settings = true WHERE role = 'admin'; UPDATE app_users SET can_view_glassview = true WHERE role IN ('admin','manager','viewer');
🔗 Open Supabase
✅ After running: Stock Reconciliation will show automatically for Admin and Manager users. For Viewer accounts, tick the checkbox when creating/editing the user.

📋 Full DB Setup (Fresh Install)

Setting up a brand new Supabase project? Use the complete schema from the setup wizard.

Select All

⚙️ Global Stock Thresholds

These apply to all items unless overridden per item below.

📋 Inventory Alert Status

Select All
📥 Bulk Import from File
Upload Excel / CSV — auto-detects item codes from your stock

🐢 Slow Moving & Old Stock

0 items
🐢
No Slow Moving Items
Search and select items from inventory above to build your slow moving / old stock list.
Stock Reconciliation
Awaiting Data

PHYSICAL COUNT Production WH

🏭
Movetro Inside
Click or drag .xlsx / .xls / .csv
🏗️
Movetro Outside
Click or drag .xlsx / .xls / .csv

PHYSICAL COUNT Newland WH

📦
Jumbo Stand
Click or drag .xlsx / .xls / .csv
🗄️
Small Stand
Click or drag .xlsx / .xls / .csv

ERP SYSTEM System Data

🖥️
ERP Production WH
Click or drag .xlsx / .xls / .csv
🖥️
ERP Newland WH
Click or drag .xlsx / .xls / .csv

Preview & Column Mapping

Select a file slot to preview. Map your columns to the required fields.

Upload a file to preview
Click any slot on the left to load a file

Options

Upload Progress
Movetro Inside
Movetro Outside
Jumbo Stand
Small Stand
ERP Production
ERP Newland
0 / 6 files loaded
Glass Item Information Production WH Newland WH Remarks
Code ↕ Description ↕ Height ↕ Weight ↕ Supplier ↕ PH Qty Prod ↕ ERP Qty Prod ↕ Diff ↕ PH Qty New ↕ ERP Qty New ↕ Diff ↕ Remarks
📦
Total Unique SKUs
Match Accuracy
⚠️
Shortages
⬆️
Excess SKUs
Missing in ERP
📦
Orphan in ERP
Status Breakdown
Accuracy by Location
Top 10 Discrepancies by Volume
🏭 Production WH
Physical Total
ERP Total
Net Difference
Accuracy
Matched SKUs
🏢 Newland WH
Physical Total
ERP Total
Net Difference
Accuracy
Matched SKUs
⚠️ Critical Shortages
No data yet
❓ Missing in ERP
No data yet
📦 Orphan in ERP
No data yet
Reconciliation History
📈
No history yet
Run a reconciliation to start tracking
OB Checker LISEC vs Master Excel
📊
Master Opening Balance
.xlsx / .xls / .csv — Drop or click
No file selected
📋
LISEC Stock Ledger PDF
.pdf only — Drop or click
No file selected
Matching key: Excel ItemCode must equal Base Code + Width + Height from LISEC (e.g. 10300106 + 5100 + 3210 → 1030010651003210). Both dimension orders (W×H and H×W) are tried automatically. Only OPENING BALANCE quantities are compared.
⚖️
No comparison loaded
Upload your Master Excel and LISEC Ledger PDF, then click Run Matching
Stock Movement
Movement Type
🟢
Stock In
🔴
Stock Out
🔴
Delivery
⚠️
Damaged
🔵
Internal Transfer
Item
Transaction
Total IN:
Total OUT:
Records: 0
Date Type Txn No Code Description Qty Supplier Reason By Actions
No transactions yet — click + New Transaction to get started
📅 Inventory snapshots saved automatically on each upload
to
⏳ Loading history…
Loading…