from pathlib import Path from datetime import date, timedelta tabs = [ “Dashboard”,”365-Day Transactions”,”Daily Sales”,”Weekly Report”,”Monthly Report”,”Quarterly Report”,”Annual Report”, “Hair Styles”,”Services”,”Retail Products”,”Braiders”,”Braider Earnings”,”Split Calculator”,”Clients”,”Payment Methods”, “Daily Expenses”,”Weekly Expenses”,”Monthly Expenses”,”YTD Expenses”,”Expense Types”,”Inventory Dashboard”, “Hair Inventory”,”Hair Usage”,”Hair Purchases”,”Hair Replenishment”,”Supply Inventory”,”Supply Usage”,”Supply Purchases”, “Locations”,”Profit & Loss”,”Cash Flow”,”Sales by Style”,”Sales by Braider”,”Sales by Location”,”Sales by Payment”, “Client KPI”,”Income KPI”,”Profitability KPI”,”Performance Scorecard”,”Targets vs Actual”,”Owner Draw”,”Payroll / Commissions”, “Accounts Payable”,”Accounts Receivable”,”Taxes”,”Rent & Utilities”,”Repairs & Maintenance”,”Cleaning & Supplies”, “Marketing”,”Discounts & Refunds”,”Appointments”,”Notes & Observations”,”Settings”,”Data Export / Backup” ] styles = [“Box Braids”,”Knotless Braids”,”Micro Braids”,”Cornrows”,”Feed-In Braids”,”Goddess Braids”,”Bohemian Braids”,”Senegalese Twists”,”Passion Twists”,”Marley Twists”,”Havana Twists”,”Fulani Braids”,”Lemonade Braids”,”Crochet Braids”,”Kids Braids”,”Ponytail Braids”,”Stitch Braids”,”Tribal Braids”,”Loc Retwist”,”Custom Style”] services = [“Wash & Blow Dry”,”Take Down”,”Hair Included”,”Deep Conditioning”,”Trim”,”Edge Styling”,”Detangling”,”Loc Maintenance”,”Custom Parting”,”Other Service”] products = [“Braiding Hair”,”Edge Control”,”Mousse”,”Shine Spray”,”Gel”,”Shampoo”,”Conditioner”,”Scalp Oil”,”Beads/Accessories”,”Other Retail”] braiders=[f”Braider {i}” for i in range(1,31)] colors=[“1″,”1B”,”2″,”4″,”27″,”30″,”33″,”350″,”613″,”99J”,”T1B/27″,”T1B/30″,”T1B/613″,”T1B/BG”,”Burgundy”,”Blue”,”Red”,”Purple”,”Pink”,”Green”,”Orange”,”Silver”,”Gray”,”White”,”Ombre Brown”,”Ombre Blonde”,”Honey Blonde”,”Copper”,”Mixed Color”,”Custom”] payments=[“Cash”,”Credit Card”,”Debit Card”,”Zelle”,”Cash App”,”PayPal”,”Venmo”,”Apple Pay”,”Google Pay”,”Check”,”Other”] expense_types=[“Supplies”,”Hair”,”Rent”,”Utilities”,”Employee / Labor”,”Repairs”,”Snacks & Water”,”Cleaning”,”Marketing”,”Insurance”,”Taxes”,”Software”,”Bank Fees”,”Miscellaneous”] locations=[f”Location {i}” for i in range(1,11)] def opt(items): return “”.join(f”” for x in items) tab_buttons=””.join(f’‘ for i,t in enumerate(tabs)) panels=[] panels.append(“””

Salon Dashboard

Today Sales$0
Today Clients0
Salon 40%$0
Braiders 60%$0
Today Expenses$0
Today Net Income$0
YTD Sales$0
YTD Net Income$0

Client KPI

0
0%

Income KPI

$0
0%

Profitability KPI

0%
Not calculated
“””) # 365 rows trs=[] start=date(2026,1,1) for i in range(365): d=start+timedelta(days=i) sample=250 if i<5 else 0 trs.append(f""" $0$0$0 $0“””) panels.append(f”””

365-Day Transaction Log

{”.join(trs)}
DateClientLocationStyleServiceService AmountPaymentBraider 1Braider 2Braider 3Braider 4Braider Pool 60%Salon 40%Each BraiderProduct SalesDiscountRefundNet SaleNotes
“””) # Daily sales 200 rows daily=””.join(f”””$0$0$0“”” for _ in range(200)) panels.append(f”””

Daily Sales Detail

{daily}
DateClientLocationStyleAmountPaymentBraider 1Braider 2Braider 3Braider 4Salon 40%Braiders 60%Each BraiderNotes
“””) for idx,title in [(3,”Weekly Report”),(4,”Monthly Report”),(5,”Quarterly Report”),(6,”Annual Report”)]: panels.append(f”””

{title}

Sales$0
Clients0
Salon Share$0
Braider Share$0
Expenses$0
Net Income$0
“””) style_prices=[180,220,200,120,160,200,240,190,210,200,180,200,180,170,100,140,180,200,120,250] panels.append(f”””

Hair Styles – 20

{”.join(f’‘ for i,s in enumerate(styles))}
#StyleBase PriceHoursHair PacksNotes
{i+1}
“””) panels.append(f”””

Services – 10

{”.join(f’‘ for i,s in enumerate(services))}
#ServicePriceNotes
{i+1}
“””) panels.append(f”””

Retail Products – 10

{”.join(f’‘ for i,s in enumerate(products))}
#ProductCostSelling PriceNotes
{i+1}
“””) panels.append(f”””

Braiders – 30

{”.join(f’‘ for i,b in enumerate(braiders))}
#NamePhoneEmailStatusBraider %SalesEarnings
{i+1}$0$0
“””) panels.append(“””

Braider Earnings

Service Revenue$0
Braider Pool$0
Salon Share$0
“””) panels.append(“””

Braider Split Calculator

Salon$0
Braider Pool$0
Each Braider$0
“””) clients=””.join(‘‘ for _ in range(200)) panels.append(f”””

Clients

{clients}
NamePhoneEmailPreferred StyleLast VisitLifetime SpendNotes
“””) panels.append(f”””

Payment Methods

{”.join(f’‘ for p in payments)}
Payment MethodTotal% of SalesNotes
{p}$00%
“””) expense_rows=””.join(f’‘ for _ in range(300)) panels.append(f”””

Daily Expenses

{expense_rows}
DateTypeVendorAmountPaymentLocationNotes
“””) for idx,title in [(16,”Weekly Expenses”),(17,”Monthly Expenses”),(18,”YTD Expenses”)]: panels.append(f”””

{title}

Total$0
Hair & Supplies$0
Rent & Utilities$0
Other$0
“””) panels.append(f”””

Expense Types

{”.join(f’‘ for e in expense_types)}
TypeYTD Amount%Notes
{e}$00%
“””) panels.append(“””

Inventory Dashboard

Hair Inventory$0
Supply Inventory$0
Reorder Items0
Total Inventory$0
“””) hairrows=””.join(f’{i+1}20$80No‘ for i,c in enumerate(colors)) panels.append(f”””

Hair Inventory – 30 Synthetic Colors

{hairrows}
#TypeColorOpeningPurchasedUsedOn HandReorder PointUnit CostValueReplenish?
“””) simple_hair=””.join(f’‘ for _ in range(150)) panels.append(f’

Hair Usage

{simple_hair}
DateColorQuantityClient / Notes
‘) panels.append(f’

Hair Purchases

{simple_hair}
DateColorQuantityVendor / Notes
‘) panels.append(‘

Hair Replenishment

No items flagged.
‘) supplies=[“Edge Control”,”Braiding Gel”,”Mousse”,”Shine Spray”,”Shampoo”,”Conditioner”,”Scalp Oil”,”Rubber Bands”,”Beads”,”Clips”,”Combs”,”Brushes”,”Gloves”,”Neck Strips”,”Towels”,”Disinfectant”,”Paper Towels”,”Trash Bags”,”Foil”,”Misc. Supply”] suprows=””.join(f’{i+1}10$50No‘ for i,s in enumerate(supplies)) panels.append(f’

Supply Inventory

{suprows}
#SupplyOpeningPurchasedUsedOn HandReorder PointUnit CostValueReplenish?
‘) simple_sup=””.join(f’‘ for _ in range(150)) panels.append(f’

Supply Usage

{simple_sup}
DateSupplyQuantityNotes
‘) panels.append(f’

Supply Purchases

{simple_sup}
DateSupplyQuantityVendor / Notes
‘) panels.append(f’

Locations – Up to 10

{“”.join(f”” for i,l in enumerate(locations))}
#LocationAddressManagerPhoneSalesProfit
{i+1}$0$0
‘) panels.append(“””

Salon Profit & Loss

ItemAmount% of Sales
Total Sales$0100%
Braider Commissions$00%
Salon Gross Share$00%
Operating Expenses$00%
Net Income / Loss$00%
“””) panels.append(“””

Cash Flow

Cash In$0
Cash Out$0
Net Cash Flow$0
“””) for idx,title in [(31,”Sales by Style”),(32,”Sales by Braider”),(33,”Sales by Location”),(34,”Sales by Payment”)]: panels.append(f’

{title}

‘) for idx,title in [(35,”Client KPI”),(36,”Income KPI”),(37,”Profitability KPI”),(38,”Performance Scorecard”),(39,”Targets vs Actual”)]: panels.append(f’

{title}

KPITargetActualAchievementStatus
Clients / Day1200%
Daily Sales$2,500$00%
Net Margin20%0%0%
‘) generic={40:”Owner Draw”,41:”Payroll / Commissions”,42:”Accounts Payable”,43:”Accounts Receivable”,44:”Taxes”,45:”Rent & Utilities”,46:”Repairs & Maintenance”,47:”Cleaning & Supplies”,48:”Marketing”,49:”Discounts & Refunds”,50:”Appointments”,51:”Notes & Observations”,52:”Settings”,53:”Data Export / Backup”} for idx,title in generic.items(): if idx==53: body=’

Data is stored in this browser unless exported.

‘ else: rows=””.join(‘‘ for _ in range(75)) body=f’
{rows}
DateDescriptionAmountNotes
‘ panels.append(f’

{title}

{body}
‘) html=f””” Braiding Salon Accounting 360

Braiding Salon Accounting 360

Today Sales$0
Today Clients0
Salon 40%$0
Braiders 60%$0
Today Expenses$0
Today Net$0
YTD Sales$0
YTD Net$0
{tab_buttons}
{”.join(panels)}
“”” out=Path(“/mnt/data/braiding_salon_accounting_360_multitab.html”) out.write_text(html,encoding=”utf-8″) print(f”Created: {out}”) print(f”Tabs: {len(tabs)}”) print(f”Size: {out.stat().st_size:,} bytes”)

Leave A Comment

Your email address will not be published. Required fields are marked *