Individual natural stone slab records — dimensions, bundle, finish, warehouse location, status (available → reserved → sold/damaged). Each slab variant is its own SKU.
📍 Phase 6 — Slab Tracker
Loading purchase orders…
PO #
Vendor
Status
Expected
Subtotal
Shipping
Total
Created
Loading…
Loading special orders…
SPO #
Customer
Vendor
Status
Expected
Invoice
Created
Loading…
Loading orders…
Order #
Customer
Invoice
Priority
Scheduled
Delivered
No completed orders yet.
Loading transfers…
Transfer #
From
To
Status
Items
Created
Dispatched
Loading…
Loading returns…
RMA #
Customer
Invoice
Status
Reason
Refund
Created
Loading…
Loading tasks…
Task #
Subject
From
To
Priority
Status
Due
Created
Loading…
Team Portal
Everything in one place
Jump to the tools your team uses every day, and see what’s happening across the company.
Loading…
Loading the board…
Time Clock
Loading…
to
⚠ Limited to 6 months
Loading reports…
💰 Sales Summary
Today
—
Total Revenue
—
Invoices
—
Avg Sale
—
Quick Sales
Paid 0%Outstanding $0
💳 Payment Methods
Loading…
📋 Estimate Pipeline
—
Draft
—
Pending
—
Approved
—
Invoiced
Conversion rate—%
Total value in pipeline—
🏆 Top 10 Products
Loading…
⚠ Outstanding Invoices
—
0–30 days
—
31–60 days
—
60+ days
Loading…
📦 Inventory Value
Loading…
Total retail value—
Settings
Company-wide settings are managed in the Admin Control Panel (Admin role required). Settings include default tax rate, discount thresholds, return policy text, invoice terms, estimate validity, and optional feature toggles (swatches, add-ons).
Supabase Project URL
Configured in source code
Logged in as: —
Role: —
Location: —
🔐
Admin Control Panel
Re-enter your password to continue.
Build Roadmap
All 17 build phases and where each one stands.
Phase
Feature
Status
Product Categories
One list, used everywhere — dropdowns, filters, the product picker, imports, and pricing. Order here is the order shown app-wide.
Order
Icon
Name
Status
Loading…
Catalog Load — Deferred Items
Items listed here are skipped when Products and Inventory open, and loaded only when you search for them or open their category/line — everything else loads immediately. Search always finds deferred items.
SKU
Name
Category
Unit
Retail
Cost
Margin
Status
Loading…
User Management
Create accounts, assign roles and locations, set manager PINs
Name
Email
Role
Location
PIN
Status
Last Login
Loading…
🔐 Page Access by Role
Which sidebar pages each role can open, and where they land after login.
Admins always see everything. Changes apply at each user's next login.
Loading…
Manager / Supervisor Price Editing
When on, managers & supervisors at the selected stores get an “Edit Price” button on a product’s detail in the Products tab. Turn off to keep price changes inside this admin panel.
Enabled at these stores
Tier Pricing Rules
Discount % applied by customer tier & product category — auto-applied in all pickers
Tier
Category
Discount %
Effective From
Effective To
Notes
Action
Loading…
Location Price Modifiers
Base prices are Carson (QB baseline). Click any cell to edit — blank cells inherit the location's "All" default.
Loading…
Audit Log
When
Action
Performed By
Record
Result
Loading…
Product Pricing
Retail & cost prices — changes are effective-dated
Product
SKU
Category
Retail
Cost
Margin %
Since
Action
Loads on demand — the full catalog is large. Typing in search also loads it.
💬 Comment Presets
Standard comments staff insert by typing the code in any comment line
(Estimates, Invoices, Quick Sale) — exactly like the SKU lookup.
Loading…
Default Tax Rate
× 100 = % (e.g. 0.0950 = 9.50%)
Applied to all new invoices and estimates unless overridden by a location-specific rate below.
🖨 Print Font Size
Overall text scale for all printed documents — estimates, invoices, letterhead, purchase orders, quick-sale receipts, and packing slips. 14 = standard size (documents print as designed); higher scales everything up proportionally, lower scales down. Larger is easier to read but may push long documents onto an extra page.
scale (8–20). 14 = standard.
Saved — takes effect on the next print.
📐 Document Top Margin
Top margin (inches) for the colored estimate, invoice, purchase order, and return/credit-memo documents. Lower values move content up and shrink the blank band at the top of page 1. Letterhead documents use the separate Letterhead Margins above.
inches (0.25–2). 0.5 = default.
Saved — takes effect on the next print.
Per-Location Tax Rate Overrides
Location
Tax Rate (decimal)
Notes
Loading…
Invoice & Estimate Settings
Set the top and bottom margins when printing on pre-printed letterhead paper. Adjust until your content lands in the blank body zone of the form. Typical starting values: top 2.2in, bottom 1.8in.
Min 6 characters. Share verbally — never email.
Return & Restocking Policy
All unopened returns
Opened countertop returns
Opened cabinet returns
Discount Label Options
Labels available when adding a Group Discount. Staff see all labels including Manager Discount.
Location Settings
Edit showroom details, toggle active status
Loading…
Data Export
🧾
Invoices
All invoices with totals, status, customer, location
📋
Estimates
All estimates with status, customer, totals
👥
Customers
All customers with tier, type, contact, location
💰
Payments
All payments with method, amount, invoice reference
📦
Inventory
Current stock levels per product per location
📊
Inventory Movements
Full ledger of all stock changes with reasons
🏷️
Products (Price List)
One row per SKU — name, category, unit, retail, cost, description, tags, active. Edit and re-import to update fields.
⏱️
Time Clock
Weekly timesheet — summary + detailed breakdown by employee
📕
Product Price List
Price sheet by category & line — for dealers & retailers
Data Import
🏷️
Products
Import products from XLSX or CSV. Supports QuickBooks and Apex standard format.
Required: sku (always) · name, category, unit (new products). Tags use | between values.
👥
Customers
Import customers from QuickBooks XLSX export. Auto-detects Sale Permit (tax exempt) customers.
📦
Bulk Inventory Count
Upload a two-column CSV (sku, qty) to set stock counts for one location. Writes through the movements ledger.
🎨
Product Swatches
Optional feature: manage color/material swatches shown in the estimate builder.
📍 Phase 17
⚙️ Built-in Suggestions
When a cabinet door style line is added (any C- line except the carcass series),
the matching carcass is suggested with the same model code and quantity —
American/face-frame doors pair with C-12, European/frameless doors with C-18.
Suggestions appear in the "Goes with" strip in Estimates, Invoices, and Quick Sale,
and hide automatically when the box is out of stock at the register's location.
Comma-separated line codes. These lines get no box suggestion and never trigger the
missing-box warning — they keep their American/European tag and grouping.
When a countertop piece is added, the other pieces of the same color family
(family = the SKU's first token, e.g. Q-E09) are suggested —
counter, backsplash, peninsula — so the set sells together. Out-of-stock pieces show with the ⚠ marker.
➕ Static Suggestion Rules
"When the document has trigger, suggest product." Triggers: a whole category,
a SKU prefix (e.g. G- for granite), or an exact SKU.
Suggested products pool into the same "Goes with" strip at location pricing.
Loading…
Vendor Directory
Company-wide supplier list — all staff can view, admin can edit
Loading…
Time Clock Employees
Enroll employees in the time-clock system. Enrolled employees with a PIN set can clock in at their store's kiosk.
Loading…
Kiosk Announcements
Messages shown on the time-clock screen. Target one or more locations; each can carry English and Vietnamese text and an optional show/hide date window.
Loading…
Edit shift
Times are in Pacific. Clearing the Clock Out reopens the shift. Saving records who made the correction.
Manage apps
Add the tools your team uses. Links open in a new tab. Use the order number to sort, and pick which roles see each tile. Leave a URL blank to grey-out a tile until it’s ready.
New Announcement
Tablets refresh announcements every few minutes. Leave a language blank if it does not apply — the other language still shows.
Select Your Location
Loading locations…
⚠️
Are you sure?
Add Category
Lower = earlier everywhere (use gaps of 10 to leave room).
Add Product
Unique company-wide identifier
Used in product picker search across all modules
Specs shown on product detail and printed documents — e.g. Finish, Mount Type, Flow Rate
Initial Pricing
Opening Inventory (optional)
Set starting stock quantities per location. Leave blank for 0.
Loading locations…
Product Details
Group Images
One image per Countertop color group — every size/cut variant with no image of its own uses it. A product's own image always wins.
Loading…
Finish photo by color + type, with a style + type shape diagram as fallback. A product uses its own image first, then its color+type photo, then the shape diagram.
Loading…
One image per Shower Panel color — every size with no image of its own uses it. A product's own image always wins.
Loading…
Edit Pricing
Previous price record will be closed as of this date.
Add Tier Rule
⚡ Tier rules auto-apply to all product pickers — estimates, invoices, and quick sale.
Applied as: Retail Price × (1 − discount% / 100)
Leave blank = ongoing
Import Preview
Fields to write — for existing SKUs, only ticked fields change. Everything is left alone by default.
Edit Location Modifier
Positive = more expensive than Carson baseline. Negative = less expensive.
Carson should remain at 0.
Subcategory rules
Override this category's modifier for specific product types, matched by SKU prefix.
Most specific (longest prefix) wins; products without a matching rule use the category modifier above.
Bulk Inventory Count Import
Location:
#
SKU
Description
Category
Current QOH
New Count
Delta
Import Customers
QuickBooks customer list
#
First Name
Last Name
Company
Phone
Email
Address
Tax Exempt
Adjust Stock
—
—
—
Set Reorder Point
Low stock alert fires when qty_on_hand drops to or below this number. Set 0 to disable.
Add Customer
Contact Info
Which location owns this customer record
Address
Classification
Controls automatic price discounts in estimates & invoices
Tax Status
Tax Exempt (Resale Permit)
Invoices will have $0 tax — permit details required
⚠ Resale Permit Required — CA Board of Equalization
California seller's permit number
Leave blank if permit has no expiry
Add Note
New Estimate
·● UNSAVED
Customer & Project▾
Click to select customer…
Line Items
#
Description
Qty
Unit Price
Disc %
Line Total
No items yet — click "Add Product" or "Custom Line" below
Subtotal$0.00
Taxable / Non-taxable
Item discounts$0.00
Order discount
Additional discount
Tax
%
$0.00
Total$0.00
⚡ pricing applied
Notes
Submit for Review
⚠ This PO is already pending review. Resubmitting will notify the assignee the PO has been updated.
Send Purchase Order
Choose how to send to the vendor
Sends from sales@apexgraniteoutlet.com.
↩ Send Back to Manager
Send Stock to a Store
Number assigned on save
Anyone active at the other store.
Products to Transfer
#
Product
On Hand
Qty Requested
Add products above
Assign Transfer
Pick who owns this transfer.
TRF-2026-001
Manager Authorization
Incorrect PIN. Please try again.
Dispatch Quantities
·→
Confirm qty to dispatch per product. If you can only send a partial amount, reduce the qty — the shortfall will be recorded.
Product
Requested
On hand
Dispatching
🔐 Manager authorization — deducts inventory from the sending store
Confirm Receipt
·→
Enter the quantity actually received per item. If less than dispatched, a damage reason is required.
Product
Dispatched
Received
Damage Reason
🔐 Manager authorization — adds inventory to the receiving store
Add User
Share this verbally with the user — they can change it after logging in.
PIN — used for clock in/out and approvals
Leave blank to keep existing
Login Password — the sign-in password (min 6 characters)
Type a new password, then Set
Edit Location
🏪 Business names on printed documents
Leave blank to use the corporate name (Apex Home Outlet).
New Special Order
SPO number assigned on save · Stock reserved to customer on receipt
Items to Order
#
Product
Qty
Unit Price
Line Total
Add products above
SPO-FRD-2026-001
Receive Special Order Stock
⚠ Stock received here is reserved directly to the customer — it will NOT be added to general inventory.
Product
Ordered
Prev. Rcvd
Receiving Now
New Task
TSK-2026-001
ORD-2026-001
Add Vendor
Add Non-Inventory Item
Add Group Discount
%
Remove Discount Group?
This will remove the Group Sub Total, Discount, and Group Net rows together.
New Purchase Order
PO number assigned on save
↩ Returned by Purchaser — review notes
Products to Order
#
Product
Qty
Cost Price
Line Total
Add products above
Shipping:
Total: $0.00
PO-2026-001
Receive Stock
Enter the quantity actually received. Stock will be added to inventory immediately on confirmation.
Product
Ordered
Prev. Rcvd
Receiving Now
New Credit / Refund
Credit Memo (RMA) number assigned on save
Invoice *
Items to Credit
Credit Summary
Add-on Invoice
Add-on subtotal$0.00
Sales tax$0.00
Add-on total$0.00
Tax refunded only on taxable items. Restock fee deducted from merchandise credit only.
RMA-2026-001
Reject Return
The customer will be informed the return was not accepted. A reason is required.
Cancel Transfer
⚠ This transfer is in transit. Cancelling will automatically reverse the inventory deduction at the sending location.
Decline Stock Request
The requesting store will be notified. No inventory changes occur.
✓ Sale Complete
Decline Estimate
The estimate will be returned to Draft so staff can revise and re-submit.
Select Customer
Export Products CSV
One row per SKU with product fields, pricing, and per-location stock. Edit and re-import to update.