Dashboard

Live snapshot across catalog, customers, orders and production.

Order status mix

Top fabrics (units ordered)

Best-selling fabrics

No order lines yet.

Production pipeline โ€” est. completion = entry + lead time

No orders in progress.

Analytics

Order volume, production status, blind-type mix and material usage over any time frame and filter.

Orders by status โ€” within selected range & filters

Orders per week โ€” entry date

Blinds by system

Blinds by operation type

Fabric types โ€” hot sellers โ€” demand by fabric type/texture within this range & filters

Fabric / raw material usage โ€” top 15 fabrics ยท units consumed in this range ยท watch these to keep stock ahead of demand

Cassettes & Open Roll โ€” top 15 in this range & filters

Top accessories โ€” units sold in this range (blind-type/operation filters don't apply)

Operation systems โ€” stock planning โ€” exact systems sold in this range, with the average monthly rate to guide what to keep in stock / MOQ levels

Produced blind length โ€” day by day within the range ยท finished sizes ร— qty, converted to feet

Customer report โ€” pick a customer to see their orders and turnover within the filters above

No customer selected.

New Order

Pick a customer, configure each blind, add it, then save. Discount is compounded from the customer's level.

Customer

Effective discount for this order: 0%

Configure a blind

List price / blind
$โ€”
Fabric base
โ€”

Add an accessory โ€” remote controls, motor accessories โ€” sold as a plain line, no size needed

Order lines

#LocationDescriptionQtyList $
๐Ÿงฐ Extra servicesโ€” installation, measurement, removalโ€ฆ from your service cards
Customer Quoteโ€” your profit markup is never shown to the customer

Internal โ€” your cost (BGB net)
$0
+ Your markup$0
Your retail (before customer discounts)$0
Customer will see & pay
$0
Discount 1โˆ’$0
Discount 2โˆ’$0
HST$0

Orders

Every saved order with its status. Change status inline as it moves through production.

sort: Net โ‡… Status โ‡… Blinds โ‡…
# โ‡…Date โ‡…Customer โ‡…Contractor โ‡…๐Ÿงพ

Customers

Full customer record โ€” drives the discount level and payment terms on every order.

New customer

'+ '+'

Saved customers

No customers yet.

Order report โ€” orders for the selected customer

Select a customer to see their orders.

Fabric Cut Sheet

Fabric cut sizes for a saved order โ€” uses the selected order's blinds-system deductions. Open Roll applies the stronger deduction.

Aluminum Cut Sheet

Cassette, tube and bottom-bar cut sizes + wand/chain length. Bottom-bar color follows the cassette.

Assembly Sheet

Production build sheet โ€” finished size, operation and every cut dimension per line. All numbers are the actual sizes to be made.

Order Confirmation

Customer-facing confirmation โ€” shows the size as entered (Tight or Finished) plus the manufactured size, for the customer to approve before production starts.

Picking List

How many of each blind to pull for delivery or pickup on a saved order.

Scan station

Point a USB / Bluetooth QR scanner at the Picking List code โ€” the order advances here, on this computer. Production never needs app access.

Keep this page open on the office computer. The scanner types the code and presses Enter by itself โ€” the box below stays focused automatically.

Todayโ€™s scans

Company Information

Your business identity โ€” shown on the customer Quotation header and used in document footers. Includes HST/GST and registration numbers and your logo.

My Dashboard

๐Ÿ”’ Your data security is very important to us. Your customers, orders and prices are private to your account, stored safely in the cloud. Your customer list is YOUR business and stays yours โ€” no other contractor can ever see it.

๐Ÿค Referrals & commissions

People or companies who bring you dealers, contractors and customers. Assign a referral on any customer (Customers page) or contractor (โš™ Manage account) โ€” commissions are calculated automatically from their orders.

Add referral

Referral list & commission report

โ“ How to use your portal

Simple picture guide โ€” follow the steps, one by one. If you get stuck, call us. We are happy to help.

๐Ÿ”’ Your data is safe here

Your data security is very important to us. Everything you put in this portal โ€” your customers, your orders, your prices, your company details โ€” is private to your account. It is stored safely in the cloud and no other contractor can ever see it. Your customers are YOUR business โ€” your list stays yours, and your records are never used for anything except making your blinds.

1 What can I do here?

This is your own ordering system from Buyer's Gallery Blinds. You can: save your customers ๐Ÿ‘ฅ ยท measure and price blinds ๐Ÿ“ ยท send us orders ๐Ÿ“‹ ยท print a quote with YOUR company name ๐Ÿงพ ยท and watch your order move from confirmed to ready ๐Ÿšš โ€” all from your phone or computer.

๐Ÿ‘ฅCustomers โ†’ ๐Ÿ“Measure โ†’ ๐Ÿ“‹Order โ†’ ๐ŸงพYour quote โ†’ ๐ŸššPick up

2 First time? Make your login

a
We send you a special link (by email or WhatsApp). Tap it.
b
Choose a username and a password. Write them down somewhere safe.
c
Next time, open the same website and sign in with them. On your phone, tap ๐Ÿ“ฒ Install app to put it on your home screen like a normal app.
๐Ÿ”‘ Forgot your password? Call us โ€” 905-851-5599. We reset it in one minute, you set a new one from your link, and all your customers and orders stay exactly as they were.
๐Ÿ”—Your invite link โ†’ username password Sign in Contractor Portal โ†’ โœ…You are in!

3 Your menu โ€” what each button does

๐Ÿ“Š My Dashboard โ€” your numbers: how many orders, what is ready, your totals. Tap any box to see details.
๐Ÿ“‹ New Order โ€” make a new blind order (see step 5).
๐Ÿ“ฆ Orders โ€” all your orders and their status. Print papers from here.
๐Ÿ‘ฅ Customers โ€” save your customers once, use them forever.
๐Ÿข My Company โ€” your name, logo and numbers for YOUR quote (see step 7).
๐Ÿ“ Laser guide โ€” how to connect the laser measure tool.

4 Add your customer first

a
Tap ๐Ÿ‘ฅ Customers.
b
Type their name, phone and address โ€” this shows on their quote later.
c
If you always give this customer a discount (repeat customer), put it in ๐Ÿท My default discounts โ€” it will be used automatically every time.
d
Tap Save customer. Done โ€” they are in your list forever.

5 Make an order โ€” step by step

1
Tap ๐Ÿ“‹ New Order and choose your customer from the list.
2
Give the job a Tag โ€” a name YOU understand, like "Smith house".
3
Choose the blind options: fabric, cassette, colour, chain or motor. One time only โ€” every window uses them.
4
For each window: type the room name, the width and height (like 45 1/8), then tap โž• Add. The price shows right away.
๐Ÿ“ Size limits: every fabric has a maximum width it can be made in. If your window is too wide for the fabric you picked, the system will stop you with an OVER SIZE message โ€” it tells you the maximum. Just split the window into two blinds, or pick another fabric. This protects you from ordering something that cannot be produced.
5
When all windows are added, tap Save order. It comes to us the same second.
๐Ÿ’ก Faster way on your phone: tap โšก Quick Estimator โ€” big buttons, and if you have the laser (๐Ÿ“ Laser guide) the sizes fill themselves. Measure โ†’ tap โ†’ done.
๐Ÿ“ท Not at the house yet? Ask your customer to tape a sheet of paper on the glass and send you ONE photo. Tap ๐Ÿ“ท Photo Estimator, tap the paper corners, tap the window corners โ€” you get the size and a quote without driving there. It is an estimate โ€” we always confirm the real size before cutting.

6 No visit needed โ€” quote from a PHOTO ๐Ÿงช BETA โ€” try it & compare

1. Tape a paper on the glass โ†’ 2. One photo โ†’ 3. Tap paper corners, then window corners โ†’ 47 1/4 ร— 63 1/2 Quote ready โœ“ estimate ยฑ 2โ€“3% 4. Size and price appear

Customer far away? Ask them to tape a sheet of paper on the glass and send you one photo of the whole window. On New Order, tap ๐Ÿ“ท Photo Estimator โ†’ tap the 4 paper corners โ†’ tap the 4 window corners โ†’ the size and price appear. Send the quote without driving there.

โš ๏ธ A photo is an estimate โ€” before we cut, the real size is always measured (laser or tape).
๐Ÿงช It is new: try it on a few windows, compare with your laser, and tell us the difference โ€” your feedback improves it.

7 Your two papers โ€” do not mix them!

๐Ÿ“„ PURCHASE ORDER What YOU pay to Buyer's Gallery ๐Ÿ”’ Only for YOUR eyes shows your discount ๐Ÿงพ QUOTE What YOUR CUSTOMER pays to you โœ… Give this to customer shows YOUR company name โ‰ 

Open any order and you see both buttons. The Purchase order shows your cost from us โ€” never show it to your customer. The Quote shows your price with your markup and your company name โ€” this one you print or send to your customer.

8 Put YOUR company on the quote

Tap ๐Ÿข My Company one time. Type your company name, phone, address, your HST number and Business number, and upload your logo. From now on, every quote you print looks like it came from your own office โ€” professional and clean. Buyer's Gallery name does not appear on it.

9 What the colours mean

On your Orders page, every order has a colour. Here is the story of your order:

Draft you are still working on it  โ†’  Submitted sent to us  โ†’  Confirmed we accepted it  โ†’  Production we are cutting โ€” no more changes!  โ†’  Completed ready ๐ŸŽ‰  โ†’  Picked up in your hands

โš ๏ธ You can change an order only before it goes to Production. After that, the material is already cut โ€” call us if something is wrong.

10 Keep your records safe โ€” backup

Your records live in the cloud, but a smart contractor keeps his own copy too โ€” like keeping paper invoices in a drawer.

a
Tap ๐Ÿข My Company, find ๐Ÿ’พ My backup, tap โฌ‡ Download my backup. A file lands in your Downloads.
b
Keep that file somewhere safe: Google Drive, a USB stick, or simply email it to yourself.
c
To bring everything back (new phone, mistake, anything): same place โ†’ โฌ† Restore from a backup file โ†’ choose your file. Your customers and orders come back. Nothing gets doubled โ€” restoring twice is safe.
๐Ÿ’ก Do it once a week, or after a big job. It takes 5 seconds.
๐Ÿ“ด No internet at the job site? Keep working. Everything you do is saved on your phone. The moment you are back online, it uploads by itself โ€” you will see โณ waiting to sync turn into a โœ“. Your offline work is never thrown away.

11 Stuck? We are one call away

Nothing here can break. If you are not sure, contact Buyer's Gallery Blinds and we will walk through it together:

๐Ÿ“ž Phone: 905-851-5599
โœ‰ Email: admin@buyers-gallery.com
๐Ÿ“ Visit us: 132 Woodstream Blvd, Woodbridge, ON L4L 7Y3, Canada

12๐Ÿ‘ฅ Working with your team โ€” estimators

a
Tap ๐Ÿข My Company and find ๐Ÿ‘ฅ My team โ€” estimators & users. Type each person's name and tap โž• Add person. (Rename with โœŽ, remove with โœ• โ€” removed names stay on old orders.)
b
On each phone or computer, after sign-in, look at the sidebar: ๐Ÿ‘ค Working as. Pick your own name once โ€” the device remembers it.
c
Done! Every order now shows who created it, who submitted it and who confirmed it โ€” open any order with View to see the full trail.
d
On the ๐Ÿ“ฆ Orders page, use the ๐Ÿ‘ค estimator dropdown to see only one person's work โ€” that is each estimator's own report.
๐Ÿ’ก Everyone still shares ONE portal password. The names are for tracking who did the job โ€” pick your own name, not a teammate's.

๐Ÿ†• What's new for contractors

๐Ÿ”” Notifications (NEW): the bell in the sidebar tells you the moment BGB changes one of your orders โ€” "Order #13 status changed: Submitted โ†’ Confirmed". A popup appears too. Tap the bell to see the history โ€” and tap any alert line to jump straight to that order: the alert clears itself, and the order stays marked โฌค REVIEW (black) in your Orders list until you open it.

๐Ÿ‘ฅ My team (NEW): add your estimators under ๐Ÿข My Company, pick ๐Ÿ‘ค Working as in the sidebar, and every order records who created, submitted and confirmed it. Filter the Orders page per estimator to see each person's own work โ€” full steps in section 12 above.

โœŽ Edit service cards: on My Company, every service now has an โœŽ button โ€” change the name or default price anytime.

๐Ÿท Your discount level now shows on My Dashboard with the full breakdown, and updates by itself within a minute whenever BGB changes it.

๐Ÿงพ Customer quote header: a tidy 4-line box โ€” customer name ยท phone/email/address ยท tag+ref ยท date+installation address (when filled). The top of the page carries YOUR company name and logo from My Company โ€” never BGB's.

๐Ÿ“ Location column: the room/location of every blind now shows while you build the order and in the order view.

โ‡… Newest first: the Orders page now always shows the newest order on top, whether it came from you or from BGB.

๐Ÿ”” โ†’ ๐Ÿ“ฃ One tap to inform your client: when BGB finishes an order (production scans it), your ๐Ÿ”” Notifications alert carries a ๐Ÿ“ฃ Tell customer button โ€” tap it and the email / WhatsApp message is ready to send.

๐Ÿ“ฃ Status update: on every order, the ๐Ÿ“ฃ button sends your customer the standard status message โ€” ๐Ÿ“ง by email or ๐Ÿ’ฌ on WhatsApp โ€” same clean structure for every status, never showing amounts.

๐Ÿ‘ค Who is working: if your company has a team, the portal asks you to pick your name before anything else โ€” every order and status change is recorded under that person, and your manager can filter Orders by estimator to review performance.

๐Ÿ” Stay signed in: your sign-in now survives the back button and closing the app โ€” it expires only after a period of inactivity set by BGB (typically 30 minutes on phones, 15 on computers), then asks for your password again.

๐Ÿญ Supplier Purchase order: its own purple button with the full chooser โ€” print / save as PDF, or email it to the supplier with the PDF attached automatically.

๐Ÿ“ฑ On phones, documents travel as links: customer emails and WhatsApp shares send a view-and-print-online link instead of a heavy attachment; on a desktop the PDF is still attached.

โœ… Confirmation button: next to View and Edit on every order โ€” same chooser as the Quote: print it, email it to your customer with the PDF attached, or share via WhatsApp.

๐Ÿ“„ One Quote button (NEW): every order now has a single ๐Ÿ“„ Quote button โ€” it opens a chooser: ๐Ÿ–จ Print, ๐Ÿ“ง Email with the PDF attached (sent straight from the portal, your branding, replies come to you, and the sender name your customer sees is YOUR company โ€” no Outlook needed), ๐Ÿ’ฌ WhatsApp / Share the PDF, or โœ‰ open your own mail app (on phones the PDF is prepared first โ€” then one more tap opens the share sheet with the file already attached; on a computer the PDF downloads next to a ready email draft). The email message prefills from your template on ๐Ÿข My Company โ€” set it once with your greeting and signature; placeholders {contact} {order} {date} fill themselves. Sending needs your โ˜ cloud sign-in.

๐Ÿ–จ Clean printouts: no more browser web-address on printed pages โ€” every document ends with a small "Generated by Blinds ERP System" line instead.

๐Ÿงพ Your order numbers look like C-abc-0001 โ€” C = contractor, abc = your company, and the count is yours alone.

โ‡… Orders: tap any column title to sort; your newest order is always on top.

๐Ÿ–จ Customer quotes carry a faint BGB PRO seal in the middle; your Purchase Orders stay clean.

๐Ÿ™ˆ Quote privacy: before printing a customer quote, tick Hide sizes and/or Hide line prices beside the HST field โ€” your customer sees only descriptions, quantities and the total. Your own Purchase Orders always show full details.

๐Ÿ” Sign-in: the invite link identifies your account, but your password is always required.

๐Ÿข My Company

Your business identity for the quotes you give YOUR customers โ€” your name, logo, Business No. and HST No. appear on the printed quote instead of ours.

Company details

๐Ÿงฐ My services โ€” extra charges for your customers

Installation, measurement visit, removal of old blindsโ€ฆ Add your service cards once โ€” then on any order, attach them with one click. They appear on YOUR customer quote (never on your purchase order from us).

ServiceDefault $

๐Ÿ‘ฅ My team โ€” estimators & users

Add the people who use this portal. After sign-in, each device picks Working as in the sidebar โ€” every order then permanently records who created, submitted and confirmed it, and you can filter the Orders page per estimator.

Name

๐Ÿ’พ My backup โ€” keep your records safe

Download a copy of your customers, orders and company info to your own device. Do it after big jobs or once a week. If anything ever happens, restore brings it all back.

Where it appears

Everything here goes on the ๐Ÿงพ Quote you print for your customer: your logo and company name at the top, address ยท phone ยท email ยท website underneath, plus your HST/GST and Business Reg numbers โ€” a fully branded, professional quotation. Your ๐Ÿ“„ Purchase Order (your cost from us) keeps our header, and your emails to customers are signed with these details too.

๐Ÿ“ Laser measure โ€” built in

Simple picture guide โ€” measure with a Bluetooth laser and the number lands directly in your order. No typing, no mistakes, instant quote on the spot.

1๐Ÿ’ก Why you'll love it

โœ—
Measurement typos are the #1 cause of remakes โ€” one wrong digit means a blind that doesn't fit, a lost week, and an awkward call to your customer.
โœ“
With the laser connected, the exact reading jumps from the device into the Width or Height box in one tap. The price updates instantly โ€” hand your customer a finished quote before you leave the house.
Typed: 54 1/8meant 45 1/8 ๐Ÿ˜ฑ= remakeโ†’Laser sends45 1/8"straight into the box โœ“Price updatesinstantly ๐Ÿ’ฒ

2๐Ÿ›’ Which laser to buy

โœ“
Leica DISTO D2 (Bluetooth Smart) โ€” the industry standard: ยฑ1.5 mm accuracy, pocket size, about CA$250โ€“300 at Amazon.ca or Home Depot. Budget option: DISTO D1 (~CA$180) โ€” works the same way.
Leica DISTOD2 / D1 โœ“ buy thisBosch GLM "C"โœ— closed protocol โ€” won't connect
๐Ÿ’ก Any model marked "Bluetooth Smart" in the DISTO family works. If unsure, send us the model name before buying โ€” we'll confirm it.

3๐Ÿ“ฑ What you need

1
An Android phone or tablet โ€” or a Windows/Mac laptop โ€” using Chrome or Edge.
2
Bluetooth ON, and this app installed on your phone: menu โ†’ ๐Ÿ“ฒ Install app.
โš  iPhone and iPad are not supported โ€” Apple does not allow web apps to use Bluetooth. Use any Android device or a laptop instead.

4โ–ถ How to use โ€” 30 seconds

1
Turn the laser on.
2
In ๐Ÿ“ New Order, tap ๐Ÿ“ Connect laser measure above the size boxes and pick your DISTO from the list โ€” the status turns ๐ŸŸข connected.
3
Point and press the measure button on the device.
4
A panel pops up with the reading already converted to inches and sixteenths (e.g. 45 1/8") โ€” tap โฌŒ WIDTH or โฌ† HEIGHT and it lands in the right box. Price updates immediately.
5
Bad reading? Tap โœ— Wrong โ€” measure again and press the laser once more. The connection stays alive for the whole order โ€” measure, tap, measure, tap, room by room.
1 ยท Connect๐Ÿ“ Connect laserconnected2 ยท Measurepress the button3 ยท Tap where it goesโฌŒ Wโฌ† H45 1/8"4 ยท Price ready$ โœ“quote on the spot

๐Ÿ”ง If it doesn't connect

1
Bluetooth on, laser awake (press any button on it).
2
On Android, Chrome asks for Location permission for Bluetooth scanning โ€” allow it once.
3
DISTO not in the list? Switch it off and on and try again.
4
Still stuck? Tell Buyer's Gallery the exact device model โ€” support for additional models can be added.

Users & Access

Create logins and control exactly which pages each access level can open. Changes take effect at the next sign-in (or immediately for the matrix).

Add user

Users

Access matrix โ€” tick = that level can open the page. Administrator is always full access. Don't forget ๐Ÿ’พ Save page.

Sheet Creator

Build your own printable sheets โ€” pick a name, choose which columns appear and in what order, then print for any saved order. The four standard sheets are included as editable templates.

Print style โ€” applies to every printed sheet

My sheets

Sheet nameColumns

Sheet editor

Label Creator

Design blind labels โ€” choose the specs to show (no titles, values only), the label size and font, and a QR code that carries all the label data. One label prints per blind, numbered "1 of N".

My label designs

DesignSizeFields

Label editor

Max 5 lines per label โ€” extra specs automatically share a line.

Fabrics

Import in bulk from Excel, or add one at a time.

Step 1Import from Excel

Columns: Blinds type ยท Group ยท Name ยท Color code ยท Fabric type ยท Size ยท Note ยท Base price. Missing base price โ†’ grid.

Step 2Add a fabric

Fabric list

BlindsGrpNameColorTypeStatusMax W"Max H"Base

Click any Blinds / Group / Name / Color / Type field to edit it directly โ€” changes save immediately.

โœ Rename an item โ€” cassettes & bottom bars

Cassettes & Bottom bars

Add types and manage colors. New types appear in the order configurator immediately.

CassettesTypes & colors


Flat $ = one price added to every size. By width = 14 comma-separated prices, one for each width column (24,30,36โ€ฆ102 inches).

Bottom barsTypes & colors


Flat $ = one price added to every size. By width = 14 comma-separated prices, one for each width column (24,30,36โ€ฆ102 inches).

โœ Rename an operation type

Operation types

Motor ยท Wand Motor ยท Wand ยท Chain ยท Spring. Add operation products with their own sizing rule and price.

Operation products


Sizes use size:price pairs (heightรท2 rule); bands use maxWidth:price. Chain remains a special manual type with metal/plastic sub-choice.

๐Ÿ’ฒ Cost & margin

True material cost of every finished blind โ€” fabric + aluminum + hardware + labor โ€” compared cell-by-cell against your price list, with margin %% and suggested prices at your target. Adjust the price list with open eyes.

Step 1Cost setup โ€” your material & labor costs

โ„น How costing really works now: the engine prices every part from the recipes in Step 1c (tube, cassette, bottom bar, chain, motorโ€ฆ each with its own $). The boxes below marked retired are ignored โ€” only the waste %, labor tolerance, QC % and target margin here still apply, plus crew wages & overhead in Step 1d. Open roll blinds have no cassette โ€” their recipes simply contain none. Bottom bars come in three families (Roller, Zebra, Venus) โ€” edit their names and prices per recipe in Step 1c.

a ยท Aluminum ($/ft) + waste

b ยท Fabric waste (cost $/ftยฒ is per fabric in Step 2)

c ยท Components & materials (per blind unless noted)

d ยท Labor โ€” crew & production time

e ยท Overhead & quality

Step 1b๐Ÿงฎ Quick blind cost โ€” one size, full breakdown

Step 1c๐Ÿงฐ Recipe editor โ€” parts, prices, minutes (saves to database, syncs everywhere)

Step 1d๐Ÿ‘ฅ Crew & overhead โ€” individual salaries and monthly expenses

Name$ / hour

 Average: โ€”  

โ€”

๐Ÿ“– How Step 1d works: Labor per blind = the recipe's assembly minutes ร— wage (Step 1c holds the minutes for every blind type; the average of your employees' salaries is applied with one tap). Overhead spreads your fixed monthly expenses over the blinds your team can physically make: weekly hours ร— 4.33 weeks = monthly production hours; divided by the average recipe minutes = your monthly blind capacity; monthly expenses รท capacity = overhead $ per blind. Both numbers flow automatically into every cost, quote margin and the Step 3 grid when the checkbox is on.

Step 1e๐Ÿ“Š REAL performance โ€” actual production, actual payroll (minute-weighted)

๐Ÿ‘ฅ Employees this month (name ยท $/h ยท hours worked)

Name$ / hourHours worked

๐ŸชŸ Blinds actually produced (manual operation)  

Step 2Fabric cost โ€” $ per ftยฒ (your buying price)

This IS the Catalog โ†’ Fabrics data โ€” edits here save to the catalog and apply everywhere (order form, BOM, analytics, every device). New fabrics added on the Fabrics page appear here automatically. PDI fabrics missing from the catalog were added once with their costs โ€” no existing price or group was changed; assign their group manually when ready.

Fabric (catalog)Group โ‡…$ / LN YDRoll width "Cost $/ftยฒ โ‡…

Step 3Margin check โ€” price list vs true cost

Step 4Group fit โ€” which price group suits each fabric

For every fabric with a cost, this computes the average margin under EVERY group's price grid, then recommends the group that lands closest at-or-above your target โ€” the analytic base for moving fabrics between groups or adjusting a group's formula.

Step 5Team performance & commission (weekly)

Step 6๐Ÿ“ˆ Term profit & investment capacity โ€” how much can go to R&D and advertising

๐Ÿ“ฆ Remnants & Cutting optimizer

Leftover fabric & aluminum inventory with locations โ€” find a matching piece before cutting new material.

๐Ÿ“ฅ Register a leftover piece

Pieces smaller than ร— inches (fabric), or aluminum shorter than " are marked โ™ป useless โ€” recycling automatically.

๐Ÿ“ Shelf pool for auto-address (ranges, e.g. A1-A10,B1-B10): โ€” the system assigns the first free shelf itself; the worker only confirms.   

๐Ÿ”Ž Find a matching piece for a new order

๐Ÿ“ Inventory

IDTypeItemSize "LocationFromStatus

๐Ÿงป Open fabric rolls โ€” enter the REAL length when a new roll starts

Roll widths are standard; the length varies per roll. Register each roll when it comes from main inventory โ€” the cutting plan uses the actual remaining length of the open roll first. Fabric is never rotated: width across the roll, height along the length.

RollFabricEnteredRemainingStartedStatus

๐Ÿงต Fabric roll cutting plan

Plans all fabric cuts of the selected scope onto rolls (shelf packing across the roll width). Suggests usable leftovers to register.

๐Ÿชš Aluminum bar cutting plan

First-fit optimization of tube / bottom bar / cassette cuts onto stock bars, with per-bar diagrams. Save usable offcuts to inventory in one tap.

๐Ÿงพ BOM / Work order

Bill of materials for production โ€” exact fabric & aluminum cut lists (same deduction formulas as the cut sheets), hardware counts, raw-bar estimate with waste %, and stock-blind lines separated out. The foundation of waste management.

Step 1Scope

๐Ÿงฐ Services

Reusable service cards โ€” installation, measurement visit, old blinds removalโ€ฆ Add them once here, then attach to any order with one click. Amount is a default; it can be adjusted per order.

Add a service card

Your service cards

ServiceDefault $

โ™ป Stock blinds

Blinds made by mistake or ordered wrong, waiting for a second life. Every new order line is compared against this list โ€” a match means production can RESIZE a stock blind instead of cutting new material.

Add oneIndividual entry

In stock

No.Color codeFabricW"H"CassetteStatusNote

Accessories

Remote controls, motor accessories and other add-on products โ€” sellable directly on an order.

Add a product

Product list

NameCategoryPriceVIP flat $UnitNote

Contractors

Introduce contractors here. Each contractor gets a fixed discount level; orders they enter are locked to it and tagged with their name. Use the Copy portal invite link button to get a link to send a contractor โ€” opening it takes them straight into their own portal, locked to only their own data.

Add a dealer

Contractor list & order tracking

No dealers yet.

Blinds Systems

Create blind types, define each one's cut-deduction formula, and attach the materials it uses. Add a new system for a new product line.

Deduction formula = ordered size โˆ’ deduct (fabric height adds). Open Roll behavior follows your rule: cassette blank only, or stronger deduction on tube/bottom/fabric.

Discounts & deductions

Compounded discount levels, payment terms, cut-deduction formulas and production lead time โ€” all editable.

Discount levels โ€” compounded: each step applies after the previous

Payment terms

Production lead time

Tight โ†’ Finished measurement adjustment โ€” manufacturing makes the blind this much smaller than a "Tight" (frame-to-frame) entry

Applies only when a line's measurement type is set to Tight on the New Order page โ€” the app then subtracts these amounts before pricing and cutting. "Finished" entries are used exactly as typed.

Customer Quote defaults

Pricing reference

Fitted formula per group and the full catalog grids.

Formula per group

Base = a + bยทW + cยทH + dยท(WยทH) (Rยฒโ‰ˆ0.9999). Grid lookup (round up) is authoritative.

GrpBlinds typeFabric listabcd

Grid viewer

Cols=width ยท rows=height ยท orange=current order size

Add additional width/height & price โ€” for a size beyond the printed grid, per group

Orders that land on or under this size use this price automatically โ€” same "smallest size that fits" rule as the printed grid.

Additional sizes on file

None yet.

Formula editor

Play with a, b, c, d for any group โ€” Price = a + bยทW + cยทH + dยท(WยทH). Changes apply immediately; the grid lookup stays authoritative for billing, this is for building and testing custom formulas.

Coefficients

Editing any value here marks this group's formula as custom โ€” it will no longer auto-update when the printed grid changes. Use "Re-fit from grid" any time to go back to the fitted formula.

Test size
Formula price
$โ€”
Grid (authoritative) price at nearest cellโ€”
Differenceโ€”

Data & Export

The complete ERP state. Export to keep it; paste + Apply to reload.

Automatic local backup โ€” pick a file on your computer once; the app then keeps it updated automatically after every change, so it's always current when you close

Known catalog typo: Group L 48ร—48 reads 279 (โ‰ˆ321).

Cloud / Online

Your data already saves automatically on this computer. Turning on Cloud makes it save online too, so every device and person sees the same data.

๐Ÿงฐ Contractor Portal site (separate app)

If you deploy the separate Contractor Portal app on its own address, put that address here โ€” every "๐Ÿ”— Copy portal invite link" will then point contractors to the portal site instead of this admin app.

โฑ Portal sign-in timeout โ€” how long a contractor stays signed in without activity before the portal asks for the password again. Recommended: computers 15 min (walk-away safety in the shop), phones 30 min (field estimators get interrupted; the phoneโ€™s own lock is the first defense). Publishes to every contractor device automatically.

๐Ÿ” Staff sign-in โ€” authenticated cloud (Phase 1)

Sign in with the staff account you created in Supabase. Once Part B of the SQL is run, ONLY signed-in staff can read or write the business database โ€” the key in the page becomes powerless.

Not signed in โ€” saves use the shared key (Phase 1 transition mode).

๐Ÿ“ค Catalog publisher: โ€” contractor-safe subset (no customers, no orders, no costs) โ†’ bgb_catalog

๐Ÿ›Ÿ Safety snapshot (automatic on every close)

Every time the app closes or the tab hides, the full database is snapshotted on this device and pushed to the cloud. If anything ever goes wrong, restore the last snapshot here.

checkingโ€ฆ

๐Ÿงน Reset โ€” two levels (a safety snapshot saves first)

Level 1 โ€” clear TEST entries: deletes all orders, remnants, fabric rolls and the transaction log. Keeps catalog, prices, customers, contractors, recipes and settings.

Level 2 โ€” NEW ORGANIZATION: also deletes customers, contractors, fabrics, recipes, referrals and cost data โ€” an empty system for a fresh setup. Type RESET to confirm.

Step 1 โ€” Automatic saving on this computer checkingโ€ฆ

Every change is stored in this browser instantly. Close the file, reopen it โ€” your data is still here. No setup needed. (Clearing the browser's site data erases it, so use Data & Export โ†’ Export as an occasional backup.)

Step 2 โ€” Turn on Cloud (optional, for online/multi-device)

One-time setup, about 15 minutes, no coding. Do these four things:

  1. Go to supabase.com โ†’ sign up (free) โ†’ New project. Name it bgb-erp, set any database password, click Create.
  2. In the left menu open SQL Editor โ†’ New query โ†’ click Copy setup text below โ†’ paste it there โ†’ press Run. Done once, never again.
  3. In the left menu open Project Settings โ†’ API. Copy the Project URL and the anon public key into the two boxes below.
  4. Click Connect. When it says Connected โœ“ you're live โ€” this device now saves online.

Zero-setup for staff devices (recommended): the app file has a spot near the top of its code marked DEFAULT_CLOUD โ€” open the file in any text editor (Notepad), paste your Project URL and anon key between the quotes, save, and upload that file to Netlify. Every device that opens your site then connects automatically โ€” nobody ever sees this page. Otherwise, the same URL + key work on every device: open this app anywhere, paste them once, Connect โ€” everyone shares the same live data. The anon key is designed to be public; just keep your app link within your team for now.

Step 3 โ€” Put the app at a web address (optional)

Go to netlify.com โ†’ Add new site โ†’ Deploy manually โ†’ drag this HTML file (renamed index.html) onto the page. You get a link like bgb-erp.netlify.app to open from anywhere. To update the app later, drag the new file again. That's all hosting is.

Legend for the support team: topics marked ๐Ÿงฐ also in Contractor Portal also exist in the separate Contractor Portal app (teal, its own address) โ€” contractors have the same feature there, seeing only their own records. Topics without the badge are admin-only and do not exist on the portal.

Help

What every page and option does. This page is kept up to date whenever the app changes โ€” search below or scroll.

What's new โ€” latest capabilities at a glance

Users & login: username/password sign-in with 5 access levels (Administrator, Manager, Operator, Manufacturing, Dispatching) and an editable per-page access matrix. New Order discipline: all mandatory fields marked *, everything blank on the first blind, + Add to order locked until complete, and specs stay sticky for the following blinds. Backups: automatic local backup to a JSON file and a 15-sheet Excel snapshot, updated seconds after every change. Excel group setup: matching โฌ‡ Excel / โฌ† Import pairs on Customers (incl. bulk discount level, steps & effective %), Accessories, Operation types, Cassettes & Bars, and Discounts & management. Documents: pure-black printing, notes on their own line attached to their blind, accessories shown on the Quote / Confirmation / Assembly / Picking, company logo + HST/GST on quotes, label sheets with a saved start position so partial sheets aren't wasted. Insight: clickable dashboard cards and click-to-print Analytics reports including operation-system and accessory consumption per month (MOQ planning) and produced blind length day-by-day. Safety: a floating ๐Ÿ’พ Save with leave-confirmation on every setup page, and edited blinds keep their position on the order.

Order statuses โ€” what each one means ๐Ÿงฐ also in Contractor Portal

Every order moves through a fixed sequence. Draft โ€” the order is being prepared (typical for orders you create yourself); everything is editable. Submitted โ€” a contractor sent it from their portal but has not confirmed it yet; still editable. Confirmed โ€” the contractor pressed "โœ” Confirm order": measurements are declared final and it's ready for you to accept โ€” but editing is still allowed on both sides, because mistakes happen and materials sometimes need substituting. Active โ€” you've accepted it into the production queue (materials allocated, scheduled); still editable for last-minute fixes. Production โ€” manufacturing has started: the order is locked โ€” no one can edit lines, sizes, or materials anymore; only the status can move forward. Completed โ€” manufactured and ready for pickup/delivery (locked). Picked up โ€” delivered to the customer; the order is closed (locked).

Editing rules in one line: contractors can edit their orders through Draft โ†’ Submitted โ†’ Confirmed; you (admin) can edit anything up to and including Active โ€” for example applying a change a contractor phones in about, to speed things up; from Production onward nobody edits, and locked orders show ๐Ÿ”’ instead of an Edit button. The status dropdown on your Orders page always works regardless of the lock; each change is saved instantly and the system asks whether to inform the customer/contractor by email โ€” OK opens a pre-written message, Cancel skips it (hand them a printed copy instead). If a locked order truly must be fixed, the admin Orders page shows a ๐Ÿ”“ Unlock button next to the lock: it requires a double confirmation (material may already be cut), grants exactly one edit, and the order re-locks automatically when that edit is saved.

Users & Access (Management)

Create staff logins with a full name, username, password (stored only as a secure hash, never as text) and one of five access levels: 1 ยท Administrator โ€” full access, always; 2 ยท Manager โ€” everything except Cloud / Online setup and user management; 3 ยท Operator โ€” Manager minus Sheet Creator, Label Creator, Discounts & deductions, Formula editor and Pricing reference; 4 ยท Manufacturing department โ€” production-focused: Dashboard, Orders and the five production sheets, with order values/totals hidden and no Analytics, New Order, Customers or catalog setup; 5 ยท Dispatching department โ€” only the Order Confirmation and Picking list.

The Access matrix is yours to adjust: every page ร— every level is a checkbox (including "๐Ÿ’ฒ See order values / totals"), so any level can be granted or removed access to anything โ€” Administrator stays locked at full access, and the app refuses to remove or deactivate the last active Administrator. Until the first user is created the app opens without a login, so create your Administrator account first. Signing out is in the sidebar; sessions survive a page refresh but not closing the browser. Contractor-portal logins are separate and unaffected.

Dashboard

Your daily snapshot: fabrics in the catalog, customers, total orders, blinds ordered, how many are actively in production, and total value after discount. Below that: a donut of order status mix, a bar chart of your top-selling fabrics, best-sellers, and a production pipeline showing each in-progress order's estimated completion date (entry date + your lead-time setting, skipping weekends).

Analytics

Deeper reporting, always scoped to a date range (From/To, or the 7d/30d/90d/1y/All quick buttons) and two optional filters: Blinds type and Operation type. Narrowing these changes every KPI and chart on the page to match โ€” e.g. "Roller blinds with Chain operation in the last 90 days."

  • KPIs โ€” orders in range, blinds ordered, completed, in production, average production time (real entry-to-completion days, from actual status timestamps), and value.
  • Orders by status โ€” donut chart. Orders per week โ€” trend bar chart by entry date.
  • Blinds by system and Blinds by operation type โ€” volume breakdowns, respect the filters above.
  • Fabric types โ€” hot sellers โ€” demand by fabric type/texture (e.g. Roller Shades, Twilight, Venus), the number to watch for what's trending.
  • Fabric / raw material usage โ€” units consumed per individual fabric, to help plan reorders before stock runs low.
  • Customer report โ€” search any customer (by name, phone, anything โ€” not just the first letter) to see their order count and turnover within the current filters.
  • โฌ‡ Export Excel / ๐Ÿ–จ Print report โ€” a shareable report (Summary, Orders, Fabric types, Fabric usage, and the selected customer if any) reflecting everything currently filtered.

New Order ๐Ÿงฐ also in Contractor Portal

Customer โ€” type any part of a name, phone, or company to search (not limited to the first letter); pick from the results. Contractors only see and search their own customers here โ€” never the full BGB customer list. Tag name auto-fills with the customer's name but is a free editable field โ€” use it as a reference/label for this specific order.

Project Address / Contact info sits right after the Tag name โ€” the install/job-site address and on-site contact for this specific order (every order can have a different site). It prints on all sheets and the Order Confirmation.

Discount level for this order starts from the customer's assigned level with the customer's default step selection already applied, but you can switch levels or untick/re-tick individual steps (e.g. no pickup, no promo) just for this order โ€” the customer's default is never changed. The effective % recalculates live.

โœ‰ Email buttons (Orders list): every order row has โœ‰ Email (status update) and โœ‰ Quote โ€” they open your own email program with a complete, pre-written message: recipient (the customer's email, or the contractor's for portal orders), subject with order # + tag + status, the blind lines, accessories, project address, note, and your company signature โ€” review and press Send. Inside the contractor portal the same button writes to your company email instead, referencing the order. If no email is on file you're told, and the message opens with an empty To field.

Customer Quote (available to both Admin and Contractor) โ€” turns the order's net cost into a price for your own end customer. The printed quote lists every line including accessories (accessories show their price โ€” VIP flat, or list price after the order discount; blind pricing stays bundled in the totals), shows per-blind notes under each line, and prints the order note right under the Date / Ref line. Enter your markup / profit % (added silently on top of the cost), then optionally two discount percentages (compounded, e.g. a standard discount followed by a promo) and an HST %. The card shows your internal cost + markup on one side (never printed) and what the customer actually pays on the other. ๐Ÿ–จ Print customer quote opens a clean, customer-facing page showing only line items, Subtotal, the two discounts, HST, and the Total โ€” your cost and markup percentage are never included on it, even though they drove the numbers.

Measurement type โ€” Tight vs Finished: choose Tight when the width/height you're entering is the frame-to-frame opening as measured by the dealer/installer; choose Finished when it's already the exact size to manufacture. On Tight, the app automatically subtracts the Width/Height adjustment set on the Management page (default 1/4" each) before pricing and cutting โ€” a note under the size fields shows the resulting finished size live. This choice is saved per line and shown on every production sheet as "Entered size" vs "Finished size" so nothing is ambiguous on the shop floor.

Configure the blind (fabric, cassette/color, bottom bar โ€” mandatory, color follows the cassette unless you override it, type is only selectable on Roller โ€” operation, side, bracket), add a note per blind if needed, then + Add to order. Each line can be edited (โœŽ) or removed before saving. An Order note field at the bottom covers instructions for the whole order. Save order (or Update order when editing an existing one).

If you're in Contractor portal mode, the discount is locked to the dealer's assigned level and the order saves with status Submitted, awaiting admin confirmation.

Orders ๐Ÿงฐ also in Contractor Portal

Every saved order with its status. Search matches order number, tag name, customer name, date, or status all at once. View opens a full read-only summary with quick-print buttons; Edit reopens the order in the configurator (badge shows "Editing order #N", button becomes "Update order", with a Cancel-edit option); โœ• deletes it.

Status changes are timestamped automatically the moment they happen โ€” this is what powers Analytics' "Avg. production time." Orders submitted from the Contractor portal show status Submitted with a โœ“ Confirm button (admin only) that moves them into your normal Draftโ†’Activeโ†’Productionโ†’Completedโ†’Picked up flow โ€” production should treat Submitted as "not yet confirmed."

Each order takes two lines: the first line is the spec (number, date, customer, contractor, lines, blinds, net, status, View / Edit / โœ•), the second is the Print line with every document for that order: ๐Ÿงต Fabric, ๐Ÿ”ฉ Aluminum, ๐Ÿ“‹ Assembly, โœ… Confirmation, ๐Ÿ“ฆ Picking, ๐Ÿงพ Quote, and ๐Ÿท Labels (prints one label per blind using your default label design โ€” set with the โ˜… button in Label Creator). Any custom sheet you build in Sheet Creator with "Show on the Orders print line" ticked appears here too, on every order.

Printing never blocks the app: every document opens as an independent tab that prints itself, so you can open several sheets side by side and keep working.

Production documents โ€” Fabric / Aluminum / Assembly / Confirmation / Picking

Five separate pages, each with its own order selector and ๐Ÿ–จ Print. All production sheets show and calculate from the Finished size only โ€” the actual size to be made. If a Tight (opening) size was entered, the app subtracts the Tight adjustment (Settings, default ยผโ€ณ off width and ยผโ€ณ off height) and every cut and deduction is based on that Finished size. The finished size is recomputed live from the raw entered size, so it can never go stale even on old orders.

  • Fabric Cut Sheet โ€” Fabric code, System, Finished size, fabric cut W/H. โฌ‡ Excel export.
  • Aluminum Cut Sheet โ€” Cassette, Finished size, cassette/tube/bottom-bar cut widths, Bottom bar type + color (Flat/Ovalโ€ฆ), and operation Side. โฌ‡ Excel export.
  • Assembly Sheet โ€” the component/build sheet: Fabric code, Finished size, Operation, Side, Cassette type + color (shows "Open Roll" when applicable), Bottom bar type + color, and Wand/Chain color (no lengths โ€” those live on the cut sheets). โฌ‡ Excel + full order workbook.
  • Order Confirmation โ€” the customer-facing document: Entered size (Tight/Finished as the customer gave it) next to the Finished size, full specs, an explanation line, and a customer approval signature + date block. Send it out before production starts.
  • Picking List โ€” Location, Entered + Finished size, Fabric code, Cassette / color, Bottom bar / color, System, Qty, Note, with a running total. โฌ‡ Excel export.

The Fabric, Aluminum and Assembly sheets don't show the order status or payment term (production doesn't need them), and any per-blind note prints on its own line under the blind instead of a column โ€” narrower rows, more blinds per page. Accessories on the order are listed at the bottom of the Assembly Sheet and the Order Confirmation. Every printed production sheet carries an Operator signature + date block, a divider line under every row, and bold numbers for shop-floor readability. Print font and size are adjustable globally at the top of the Sheet Creator page. Location is always stored in CAPITALS automatically.

Customers ๐Ÿงฐ also in Contractor Portal

Default discount steps: pick the customer's level, then untick any step that doesn't apply to them (e.g. no pickup, no promo) โ€” the effective % updates live. Every new order for that customer starts from this selection and can still be adjusted per order. Full customer records โ€” company, contact, billing address, a separate Project Address / Contact info (the actual install/job-site location and on-site contact, when it differs from billing), phones, emails, type (B2B/B2C), assigned discount level, payment term, and notes. Use the search box above the list to filter by company, contact, phone, or email. Each row has its own Edit button (or click the row itself) to load it into the form and see that customer's order history, and a Delete button (with a confirmation) to remove it. Excel export available. VIP flat accessory pricing: tick this on a customer and any accessory that has a VIP flat price set (Accessories page) is added to their orders at that flat price as the final amount โ€” exempt from the order's discount steps; the order totals show it on its own line.

Fabrics

Add fabrics one at a time or import a whole spreadsheet (with a downloadable template). Every field in the list โ€” Blinds type, Group, Name, Color, Type โ€” is directly editable right in the table; click any cell and change it, and it saves immediately. Use the search box above the table to filter a long list down to what you're looking for. Every fabric can be removed (โœ•). Excel export round-trips the exact same columns the importer reads, so re-importing an updated price list just works.

Cassettes & Bars

Define cassette types and bottom-bar types with their own colors and pricing rule (flat $ or price-by-width). These feed the New Order configurator and the Blinds Systems "related materials" checklist.

Operation types

Add operation products (Motor, Wand Motor, Wand, Chain, Spring category) with a pricing rule โ€” flat, by-height (round up to the next stocked size), or by-width band โ€” plus optional colors. Every operation type now has an โœŽ Edit button โ€” it loads the type back into the form (flat price, size:price pairs, or width bands, plus colors), and Update saves in place while keeping the internal id, so existing orders and lines stay valid. Chain keeps its special manual behavior even after renaming.

Contractors

Introduce a contractor by searching your Customers and picking the matching record โ€” the contractor's name is read directly from that customer, so there's never a spelling mismatch. Assign a fixed discount level; every order that contractor submits is locked to it. This page also tracks each contractor's order count, turnover, and a live list of their orders with status โ€” from the admin side, a contractor behaves just like any other customer you can track.

Inside the Contractor portal, a contractor can create and manage their own customers (their downstream buyers) on the Customers page โ€” these are strictly private to that contractor. A contractor never sees BGB's full customer list, another contractor's customers, or any bulk export/import of customer data; their order search, customer list, and Orders export are all scoped to their own records only. Admin still sees and can export everything. Each contractor order can also become a Customer Quote with the contractor's own markup and discounts (see New Order above) โ€” the contractor's profit is never visible to their customer, only the final price is.

Blinds Systems

Each blinds type (Venus, Twilight, Roller, or any you create) has its own card. Inside, every operation type that's been added (Motorized, Wand Motor, Wand System, Chain, Spring) shows its own complete, independent deduction formula โ€” Width Deduct, Height Add, Cassette Deduct, Tube Deduct, Bottom Bar Deduct, Open Roll behavior, and Wand/Chain sizing โ€” all stacked and visible together, not hidden behind tabs. Use + Add operation to add a formula for an operation that doesn't have one yet (its boxes appear immediately, defaulted to zero); Remove operation takes one out. A brand-new blinds system starts completely empty, so you build it up operation by operation. "Related materials" (which cassette types this system uses) is shared across all its operations.

Mandatory fields on New Order ๐Ÿงฐ also in Contractor Portal

Fields marked with a red * are required: Customer, Tag name, Blinds type, Fabric, Location, Width, Height, Cassette / headrail (and its color when the cassette has colors), Bottom bar, Operation system, Operation side, Chain type (when a chain operation is chosen), and Installation bracket. The + Add to order button stays off until everything is set, and the note above it lists exactly what's still missing. All fields start blank for the first blind. After the first blind is added, the Fabric, Cassette & color, Bottom bar, Operation system, Operation side, Chain type and Bracket stay selected โ€” only Location, Width and Height clear โ€” so the rest of the order needs just a few keystrokes per blind, and any spec can still be changed at any time.

Excel everywhere โ€” group setup & automatic Excel backup

Group setup by Excel: every setup area now has a matching โฌ‡ Excel / โฌ† Import Excel pair, and the export format is exactly the import format โ€” so the workflow is: export, edit in Excel, import back. Imports merge: existing records (matched by name/id) are updated, new rows are added, and blank cells leave existing values untouched. Available on: Customers (incl. discount level, payment term, VIP accessories YES/blank), Accessories (price + VIP flat price), Operation types (Rule = flat / by_height_half / by_width_band with Values like 42:85,66:130 โ€” chain is protected and skipped), Cassettes & Bottom bars (multi-sheet workbook: Cassettes, Bottom bars, Brackets, Chain types โ€” with Families, Colors and price Table), and Discounts & management (Discount levels as Level/Step/Rate % rows, Payment terms, Order statuses, Operation sides โ€” these lists are replaced after confirmation). Fabrics keep their existing template importer.

Excel backup: on Data & Export, beside the JSON auto-backup you can also pick an .xlsx backup file โ€” the app then keeps a 15-sheet human-readable snapshot (customers, orders + order lines, catalog, discounts, settings) automatically updated after every change. Use the JSON file for full restore; the Excel file is for reading, sharing and archival.

Saving changes โ€” Catalog & Management pages

Every Catalog and Management page (Fabrics, Cassettes & Bars, Operation types, Accessories, Blinds Systems, Discounts & deductions, Formula editor, Pricing reference, Company Info, Sheet Creator, Label Creator) now has a floating ๐Ÿ’พ Save page button at the bottom-right. Edit freely; press Save to commit. If you leave the page with unsaved edits โ€” including closing the browser tab โ€” you get a confirmation: OK saves the changes, Cancel discards them and restores the previous values, so an accidental keystroke in a price grid can't silently stick. The Accessories product list also has its own ๐Ÿ’พ Save list button.

On the New Order page, a + New customer button beside the customer search jumps straight to the Customers page with a blank form. And when you โœŽ Edit a line on an order, the updated blind goes back into the same position in the list โ€” the order of blinds never shuffles.

Company Information (Management)

Your business identity in one place: name, address, phone, email, website, HST/GST number, company registration number, and logo. The logo and full header (including the tax and registration numbers) print at the top of every customer Quotation, and the name/address/phone feed the footers of all printed sheets and labels. Contractor-portal quotes keep the contractor's own identity instead.

Sheet Creator (Management)

Build unlimited custom printable sheets that work with every order. Give the sheet a name, click columns to add them (19 available: Location, Entered/Finished size, Fabric code/color, System, Cassette, Bottom bar, Operation, Side, Wand/Chain with or without length, all cut widths, Qty, Note) and arrange them with โ†‘ โ†“ โœ•. Each sheet can set its own font size; a global Print style (font + size for all printed documents) lives at the top of the page.

The four standard sheets are pre-loaded as editable templates โ€” Duplicate one as a starting point. Tick "Show on the Orders print line" and the sheet appears as a print button on every order's print row. Print any sheet for any order via the order selector or straight from the Orders page.

Label Creator (Management)

Design blind labels that print for any order โ€” one label per blind, numbered "1 of N" across the whole order (quantities expand automatically). Pick the specs to show (customer, tag, order #, blind #, date, Finished size, fabric, operation, side, cassette, bottom bar, location, note) and arrange them; labels print values only, no captions, key numbers bold, with a small manufacturer footer and an optional QR code carrying all the label data in one scan (QR needs internet, same as Excel export).

Max 5 lines per label โ€” if you pick more specs, they automatically share lines separated by "ยท". Page layout: choose Uline S-21933 / Avery 5160 to print 30 labels per Letter sheet (2โ… ร— 1โ€ณ, 3 columns ร— 10 rows) at exact die-cut positions โ€” set the print dialog to 100% scale, margins None โ€” or Continuous for free-size labels. Start position: every print asks which label position (1โ€“30, counting across then down) to start at, so a partially used sheet can be reloaded and continued instead of wasted โ€” the suggested position advances automatically after each print (e.g. a 7-blind order leaves the next print starting at position 8) and can be overridden anytime. Mark one design as โ˜… Default: that's what the Orders ๐Ÿท Labels button uses. Live preview shows a real label from the selected order.

Discounts & deductions (Management)

Discount levels are compounded chains of named steps (e.g. Standard Dealer 65% โ†’ Dealer CBD 15% โ†’ VIP Dealer 12.5%) โ€” add levels, add/remove/rename steps, and the effective % recalculates live. Payment terms are a simple editable list. Production lead time sets the business-day window used for estimated completion dates. Tight โ†’ Finished measurement adjustment sets how much smaller (in inches, width and height separately) manufacturing makes a blind versus a Tight-entered opening size โ€” defaults to 1/4" each, fully editable for future changes.

Pricing reference

Shows every group's fitted formula (a, b, c, d โ€” see Formula editor below) and the full catalog grid, with the current order's size highlighted. โฌ‡ Export Excel / โฌ† Import Excel round-trip the whole pricing grid (and formulas, if included). Add additional width/height & price lets you extend a group beyond its printed sizes โ€” enter a size and price once, and any order at or under it prices correctly from then on, without touching anything already in the grid.

Formula editor

Pick any group and directly edit its a, b, c, d coefficients (Price = a + bยทW + cยทH + dยท(WยทH)), with a live equation and a test calculator โ€” type a width/height and watch the formula price update instantly, compared side-by-side with the authoritative grid price at the nearest cell. Editing any number marks that group Custom โ€” it stops auto-updating when the grid changes. โ†บ Re-fit from grid reverts to the mathematically fitted formula at any time. A Formula sheet in the Pricing Reference Excel import can also set these directly in bulk.

Data & Export

The complete app state as JSON โ€” paste and Apply changes to reload, or use Export all JSON / Import all JSON as a full backup and restore. Every other page also has its own โฌ‡ Export / โฌ† Import for just that page's data.

Cloud / Online

Automatic saving on this computer is always on (shown in the sidebar status) โ€” no setup needed; it also remembers your in-progress order draft. To share data across devices, follow the three plain-language steps here to connect a free Supabase project (copy one setup script, paste two values) and, optionally, host the file on Netlify for a web address. No coding required.

Settings โ€” Theme & Panel

At the bottom of the sidebar: Theme picks the accent color (Blue, Indigo, Teal, Emerald, Violet, Slate) used throughout the app and its charts; Panel switches the sidebar itself between Navy (dark) and Light.

Roles โ€” Admin & Contractor portal

๐Ÿงฐ Two separate apps since build 137: the admin ERP (navy, this app) and the Contractor Portal (teal, its own address, "BGB PRO PORTAL" logo) with no admin pages inside. Contractor features โ€” New Order, Orders, Customers, My Company branding & backup, ๐Ÿงฐ Services, ๐Ÿ“ Laser, ๐Ÿ“ท Photo Estimator, โ“ How-to guide โ€” live there. Set the portal address in โ˜ Cloud / Online so ๐Ÿ”— invite links point contractors to the right app.

The role switch at the top of the sidebar controls what's visible. Admin sees everything. Contractor portal collapses the menu to New Order, Orders, and Customers (their own only), locks the discount to that contractor's assigned level, and shows only that contractor's own orders.

Giving a dealer access โ€” the invite link: on the Contractors page, each contractor has a ๐Ÿ”— Copy portal invite link button. Click it, and send the copied link to that contractor (email, text, however you'd share a link). When they open it, the app automatically signs them straight into their own portal โ€” the role and dealer switches are hidden entirely, replaced with a "Signed in as [Contractor Name]" badge, so they can't switch to Admin or to another dealer's view. A wrong or made-up link does nothing and leaves the app in normal Admin view.

Important limit to know: this link is a convenience lock built into the front-end, not a real login system โ€” there's no password, and anyone holding the exact link can open it. Treat the link the way you'd treat a shared document link: send it only to that contractor. Real secure accounts (password-protected logins, so even someone with the link can't get in without credentials) are part of the Supabase step described on the Cloud/Online page โ€” worth doing once you're ready to go fully online with multiple contractors.

This Help page is updated every time a feature is added or changed, so it should always match what's actually in the app.

๐Ÿ†• Recent features

๐Ÿ”” Notifications (NEW): the bell in the sidebar (plus a popup) alerts you when a contractor submits a new order or an order is confirmed โ€” so you can follow up with the contractor and the production line. Status changes on contractor orders are announced with who made them. Click any alert line to jump straight to that order โ€” the alert clears from the bell, and the order carries a black โฌค REVIEW mark on the Orders page until an operator opens it (View or Edit). Contractors get the mirror alerts on their portal whenever you change their order's status. Contractor addresses are read automatically from their card (or from their own My Company email when the card is empty) โ€” no per-contractor setup, ever. Email copies are possible via a small one-time Supabase setup โ€” see BGB_Email_Notifications_Setup.md shipped with build 236.

๐Ÿ”Ž Contractors page (NEW): a searchable compact list โ€” name, ๐Ÿข company, level, order count, total $, status dot. Click a contractor to open their full card: account form, aligned portal-access switches, ๐Ÿ‘ show / ๐Ÿ™ˆ hide order list, order table sortable by Date / Status / Net, and a ๐Ÿ–จ Print report (orders + totals + discount level).

โšก Live sync: contractor orders land on your Orders page within 45 s โ€” no reload. The portal refreshes each contractor's discount level, activation and permissions within 60 s; โธ Deactivate locks their portal instantly, signing them out mid-session.

๐Ÿท Discounts & ๐Ÿ” access travel via the catalog: after changing a discount level or portal-access switch, any staff save (or Publish catalog now) sends it out โ€” the portal picks it up automatically.

๐Ÿ‘ฅ Estimators: contractors add their team on the portal; every order records created / submitted / confirmed by. You see the team on their card, a By column on their order table and printed report, and ๐Ÿ‘ค chips on the Orders page. Your own status changes stamp your staff name.

๐Ÿงพ Quote header โ€” one format everywhere: 4 lines: name+contact ยท phone/email/address ยท tag+ref ยท date+installation. Contractor quotes always carry THEIR branding (My Company), never BGB's.

โœŽ Service cards are editable on the Services page and on each contractor's My Company โ€” name and default amount, no delete-and-re-add.

โ™ป Stock-match privacy: stock-match notes now appear ONLY on the Fabric, Aluminum and Assembly sheets. Order Confirmations, Picking Lists, Quotes and POs print clean, and the contractor portal never sees or receives the match info โ€” the matched configuration still applies on your side exactly as before.

๐Ÿ“ท Scan station (office scanner): open Production โ†’ Scan station on the office computer and scan the Picking List QR with any USB or Bluetooth 2D scanner โ€” it types the code like a keyboard. Choose whether each scan asks you or goes straight to โœ… Completed / ๐Ÿ“ฆ Picked up, and watch the dayโ€™s scans build up in the list. Production staff never need app access.

๐Ÿ“ท QR production scan: every Picking List carries a QR code โ€” the production manager scans it with a phone (signed into this app), taps โœ… Completed or ๐Ÿ“ฆ Picked up, and the contractor is notified automatically. Notification emails no longer show any dollar amount.

๐Ÿ“ฃ Status update sender: the ๐Ÿ“ฃ button on every order opens a two-option chooser โ€” ๐Ÿ“ง email the customer or ๐Ÿ’ฌ WhatsApp โ€” with the same standard message for every status (no amounts shown).

๐Ÿ“ท Scan to finish an order: every Picking list now prints with a QR code. When production finishes the job, scan it with any phone camera โ€” the ERP opens and offers Completed โ€” ready for pickup or Picked up. The status change notifies the contractor instantly, and they can forward it to their customer by email or WhatsApp from the status chooser.

๐Ÿ—‚ Grouped sidebar: the five everyday functions (Dashboard, New Order, Orders, Customers, Contractors) stay on top; everything else lives in click-to-open groups that remember your open/closed choice. Services moved into ๐Ÿ“š Catalog and Referrals into โš™ Administration.

โ‡… Newest first: Orders now default-sort by date with creation-sequence tiebreak โ€” customer and contractor orders interleave correctly, newest on top, on both portals.

๐Ÿ” 10-minute sessions: portal sign-ins survive the back button and app close; the idle timeout is configurable on the โ˜ Cloud page (computer / phone separately, default 15 / 30 minutes) and publishes to every contractor device.

๐Ÿ“ฑ Mobile link-only sending: on phones, customer emails and shares carry the view-online link instead of the PDF attachment (desktops still attach; supplier POs always attach). The repeated โœ‰ Email buttons were removed on both portals โ€” the Quote / Confirmation / Supplier-PO choosers cover every send.

โœ… Confirmation on line 1: the order row reads View / Edit / โœ… Confirmation / โœ• โ€” the Confirmation button opens the same chooser as the Quote (print, email with PDF attached, WhatsApp share, mail app), so the customer can receive their signed-off confirmation directly.

๐Ÿ“„ One Quote button (NEW): each order has a single ๐Ÿ“„ Quote button opening a chooser: ๐Ÿ–จ Print, ๐Ÿ“ง Email with the PDF attached (direct from the app), ๐Ÿ’ฌ WhatsApp / Share, or โœ‰ mail app โ€” on phones both prepare the PDF first, then one fresh tap opens the share sheet with the file attached (mail apps chosen there receive the attachment automatically); on desktop the mail option downloads the PDF beside a short ready draft. The PDF renders in the classic print style with the logo. The email message prefills from the template on the Company Information page (contractors set theirs on My Company) โ€” placeholders {contact} {customer} {order} {date} {company}; empty = professional default with the BGB signature. Requires the send-quote function (BGB_Send_Quote_Setup.md); sending to customers additionally needs Stage 5.

๐Ÿ–จ Printouts: the browser's URL/timestamp header is suppressed on every document; each one ends with "Generated by Blinds ERP System". Production sheets (Fabric / Aluminum / Assembly / Picking) now open the print dialog in landscape automatically, so wide tables fill the page edge to edge with nothing cut off.

๐Ÿ”’ Domain lock: even if the admin file is ever deployed to the contractor site by mistake, it detects the domain and forces full portal mode โ€” admin UI can never appear there.

๐Ÿ“ฆ Remnants & Cutting: register fabric/aluminum leftovers โ€” the shelf address is assigned automatically; the worker only taps โœ” done. Small pieces go to โ™ป Recycling by themselves. The ๐Ÿ”Ž finder shows the exact shelf to pick from. Roll & bar plans show utilization with one-tap offcut registration. Fabric never rotates (width across the roll). Register each new roll with its real measured length โ€” the plan consumes the open roll first.

๐Ÿ”ข Cutting sequence: a switch on the Remnants page adds numbered cut order to the Fabric/Aluminum sheets. Off by default โ€” enable after training.

๐Ÿงพ Order codes: Contractor = C-xxx-0001, B2B = B-xxx-0001, retail = plain 0001. Origin emoji: ๐Ÿ”ง contractor ยท ๐Ÿฌ B2B ยท ๐Ÿ  B2C; a B2B customer who signs as a contractor shows ๐Ÿฌ๐Ÿ”ง.

โ‡… Orders: click any column header to sort; newest first; large books show the latest 50 (search reaches all).

๐Ÿ’ฒ Cost & margin: quick one-blind cost, recipe editor (parts/prices/minutes โ€” synced), crew salaries โ†’ average โ†’ apply to recipes, monthly overhead per blind, sortable fabric costs + Excel export/import. The catalog is the single source of truth.

๐Ÿ–จ Quotes carry a faint centered logo watermark (gear = admin, hard-hat = contractor); Purchase Orders stay clean.

๐Ÿ™ˆ Quote privacy: two checkboxes beside the HST field โ€” Hide sizes replaces every measurement with "โ€”"; Hide line prices removes per-line prices AND the subtotal/discount rows so the math can't be reverse-engineered โ€” only descriptions, quantities, TOTAL and HST remain. Purchase Orders always show everything regardless.

๐Ÿงพ Accounting export (Orders page): choose QuickBooks Online CSV or Sage 50 CSV and tap Accounting export โ€” every order with status Confirmed or later exports as invoice lines with your order codes, plus an automatic Discount line so each invoice balances exactly to the order's net. Import via QuickBooks "Import invoices" or Sage's CSV import โ€” no more double entry.

๐Ÿ’ฒ Cost & margin โ€” complete guide

What this page does: it computes the true finished cost of every blind you make and compares it against your price list, so every discount level you sell at is priced with open eyes.

The cost formula for one blind:
Materials = recipe parts (tube, cassette, bottom bar, chain/motor, bracketsโ€ฆ each priced per piece or per ft in the Step 1c recipe) + aluminum waste %  โž•  Fabric = width ร— height ร— $/ftยฒ (from the catalog; Twilight automatically costs a double layer) + fabric waste %  โž•  Labor = recipe assembly minutes ร— average wage ร— (1 + tolerance %)  โž•  Overhead per blind (Step 1d, if enabled)  โž•  QC % on top = true cost.

Step 1 โ€” global percentages only: aluminum waste, fabric waste, labor tolerance, QC %, and your target margin. Part prices are NOT here โ€” they live in the recipes.

Step 1b โ€” quick blind cost: pick type, operation, cassette, a fabric (list is filtered to that blind type), size and quantity โ†’ full line-by-line breakdown of one blind. Use it to sanity-check a single quote.

Step 1c โ€” recipes (the heart): one recipe per Type + Operation + Cassette combination. Every part has a name and a unit price; plus assembly minutes and wage. Edit anything โ€” it saves instantly and syncs to all devices. Open roll recipes contain no cassette. Bottom bars come in three families (Roller, Zebra, Venus) โ€” rename them here. Export all recipes to Excel with one tap.

Step 1d โ€” crew & overhead: list your employees with real salaries โ†’ the average appears โ†’ Apply average to ALL recipes sets the wage everywhere. Overhead: weekly hours ร— 4.33 = monthly production hours รท average recipe minutes = monthly blind capacity; monthly expenses รท capacity = overhead $ per blind. The live line shows the whole chain; the checkbox controls whether it enters every cost.

Step 1e โ€” REAL performance guide: once a month, record what actually happened: each employee's rate and hours worked, monthly expenses, and blinds actually produced by type (Open roll, Roller, Twilight/Zebra, Venus) plus how many were motorized or spring. The system computes: blended wage = total payroll รท total hours (totals, never averages of averages โ€” correct no matter how the team size changes) ยท equivalent minutes = each type's count ร— its recipe minutes + motor/spring extra minutes (so a Venus counts for more factory time than a small Roller) ยท efficiency % = equivalent รท paid minutes ยท overhead $/minute = expenses รท equivalent minutes โ€” every blind absorbs overhead by its own minutes. The table shows every month plus ฮฃ quarterly rollups. The โ€œUse REAL numbers in all costsโ€ switch makes every cost, quote and the Step 3 grid use real labor (efficiency-adjusted) and real overhead instead of the theoretical Step 1d model. The โ€œAuto from systemโ€ switch fills production counts straight from the month's orders โ€” use it once the factory runs fully on this software; payroll and expenses stay manual.

๐Ÿ“Š Management dashboard (top of Step 1e): four KPIs โ€” Factory efficiency % (green โ‰ฅ70), True cost/blind = (payroll+expenses) รท blinds, Gross margin (real) using the month's actual order revenue, and Capacity available (how many more blinds your paid hours could make). Alerts: ๐ŸŸก labour cost up >5% vs last month ยท ๐ŸŸก efficiency drop >5 points ยท ๐Ÿ”ด any fabric group selling below TRUE cost at your deepest discount level (named by group) ยท ๐ŸŸข factory healthy.

Step 2 โ€” fabric costs: this IS the catalog โ€” $/LNYD and roll width per fabric compute $/ftยฒ. Sortable by cost or group; โฌ‡ Excel export and โฌ† Excel import (matches by name, adds unknown fabrics).

Step 3 โ€” margin grid: pick a Group (default analyzes the whole group using its highest-cost fabric โ€” the safe worst case) or a specific fabric, plus operation, cassette and customer level โ†’ a price-grid-style matrix. Each cell: small gray = list + add-on before discount ยท bold = what that level pays ยท +$ = your profit ยท % = margin. Green โ‰ฅ target, red below. ๐Ÿ–จ Print grid outputs the exact view landscape with the legend at the end; โ†บ Reset view clears it.