Data Files samples / Barber shop
Copper Pole Barbers
The queue board, walk-ins and bookings, takings by barber, loyalty cards, chair rent and stock for a barber shop.
Queries
The questions this database answers, saved under a name. Open one to see its answer, or its design to see how it is built and change it.
- Queue board
Who is waiting, who is in the chair and who is booked, today and the next two days, in time order. The board by the door.
From Visits, Barbers. Shows Day, Time, Name, Kind, Barber, Status.
Calculated: Day is
Format(Nz([Booked For], [Arrived]), "yyyy-mm-dd"); Time isMid(Nz([Booked For], [Arrived]), 12, 5); Barber is[Barbers].[First Name] & " " & [Barbers].[Last Name].Only where
Days Away Between 0 And 2andStatus In ("Waiting", "In chair", "Booked").- Bookings next 7 days
Every booking from today to a week ahead, by time, with the barber.
From Visits, Barbers. Shows When, Barber, Name, Booked On.
Calculated: When is
Left([Booked For], 10) & " " & Mid([Booked For], 12, 5); Barber is[Barbers].[First Name] & " " & [Barbers].[Last Name].Only where
Days Away Between 0 And 7andStatus = Booked.- Takings by barber, last 7 days
For each barber over the last seven days: visits, how many were walk-ins, free cuts given and the takings. A chair renter's takings are their own.
From Visits, Barbers. Shows Barber, Basis, Visits, Walk-ins, Free Cuts, Takings, with totals.
Calculated: Barber is
[Barbers].[First Name] & " " & [Barbers].[Last Name]; Walk-ins isIIf([Kind] = "Walk-in", 1, 0); Free Cuts isIIf([Free Cut], 1, 0).Only where
Status = DoneandDays Ago Between 0 And 6.- Takings by barber by day
Each day of the last week, each barber's visits and takings, the newest day first.
From Visits, Barbers. Shows Day, Barber, Visits, Takings, with totals.
Calculated: Day is
Format([Arrived], "yyyy-mm-dd"); Barber is[Barbers].[First Name] & " " & [Barbers].[Last Name].Only where
Status = DoneandDays Ago Between 0 And 6.- Takings by barber by month
Visits and takings for each barber each month, with whether they are employed or renting.
From Visits, Barbers. Shows Month, Barber, Basis, Visits, Takings, with totals.
Calculated: Month is
Format([Arrived], "yyyy-mm"); Barber is[Barbers].[First Name] & " " & [Barbers].[Last Name].Only where
Status = Done.- Shop takings and VAT by month
The shop's own takings each month (the employed barbers' visits and the products), with the net and VAT within them, for the VAT return.
From Visits, Barbers. Shows Month, Visits, Takings, Net, VAT, with totals.
Calculated: Month is
Format([Arrived], "yyyy-mm").Only where
Status = DoneandBasis = Employed.- Chair rent due
Rent invoices not yet paid, by due date, with how many days each is overdue (nought when not yet due).
From Rent Charges, Chair Rentals, Barbers. Shows Invoice, Renter, Week Starting, Due On, Total, Days Overdue.
Calculated: Renter is
[Barbers].[First Name] & " " & [Barbers].[Last Name]; Days Overdue isIIf(DateDiff("d", [Due On], Date()) > 0, DateDiff("d", [Due On], Date()), 0).Only where
Paid On Is Null.- Chair rent by month
For each renter each month: the weeks invoiced, the rent, the total with VAT, what has been paid and what is owed.
From Rent Charges, Chair Rentals, Barbers. Shows Month, Renter, Weeks, Rent, Invoiced, Paid, Owing, with totals.
Calculated: Month is
Format([Week Starting], "yyyy-mm"); Renter is[Barbers].[First Name] & " " & [Barbers].[Last Name]; Paid isIIf(Nz([Paid On], "") = "", 0, [Total]); Owing isIIf(Nz([Paid On], "") = "", [Total], 0).- Walk-in waits by hour
For walk-ins over the last four weeks, by the hour they arrived: how many came, the average and longest wait in minutes, and how many walked out. Use it to plan who works when.
From Visits. Shows Hour, Walk-ins, Average Wait, Longest Wait, Walked Out, with totals.
Calculated: Hour is
Mid([Arrived], 12, 2); Average Wait is(Mid([Started], 12, 2) * 60 + Mid([Started], 15, 2)) - (Mid([Arrived], 12, 2) * 60 + Mid([Arrived], 15, 2)); Longest Wait is(Mid([Started], 12, 2) * 60 + Mid([Started], 15, 2)) - (Mid([Arrived], 12, 2) * 60 + Mid([Arrived], 15, 2)); Walked Out isIIf([Status] = "Walked out", 1, 0).Only where
Kind = Walk-inandStatus In ("Done", "Walked out")andDays Ago Between 0 And 28.- Walk-in waits by day
The same for each of the last fourteen days, to see which days the queue got long.
From Visits. Shows Day, Walk-ins, Average Wait, Longest Wait, Walked Out, with totals.
Calculated: Day is
Format([Arrived], "yyyy-mm-dd"); Average Wait is(Mid([Started], 12, 2) * 60 + Mid([Started], 15, 2)) - (Mid([Arrived], 12, 2) * 60 + Mid([Arrived], 15, 2)); Longest Wait is(Mid([Started], 12, 2) * 60 + Mid([Started], 15, 2)) - (Mid([Arrived], 12, 2) * 60 + Mid([Arrived], 15, 2)); Walked Out isIIf([Status] = "Walked out", 1, 0).Only where
Kind = Walk-inandStatus In ("Done", "Walked out")andDays Ago Between 0 And 14.- Busiest hours
Visits by the hour they arrived over the last thirteen weeks, walk-ins and bookings apart.
From Visits. Shows Hour, Visits, Walk-ins, Booked, with totals.
Calculated: Hour is
Mid([Arrived], 12, 2); Walk-ins isIIf([Kind] = "Walk-in", 1, 0); Booked isIIf([Kind] = "Booked", 1, 0).Only where
Status In ("Done", "Walked out")andDays Ago Between 0 And 91.- Due a free cut
Loyalty cards with nine stamps whose free cut has not been given yet, the longest waiting first. Text them, or have it ready when they come in.
From Loyalty Cards, Clients. Shows Card, Client, Phone, Started, Full On, Days Waiting.
Calculated: Client is
[Clients].[First Name] & " " & [Clients].[Last Name]; Days Waiting isDateDiff("d", [Full On], Date()).Only where
Status = Due a free cut.- Loyalty cards nearly full
Open cards with seven or eight stamps.
From Loyalty Cards, Clients. Shows Card, Client, Phone, Stamps, Started.
Calculated: Client is
[Clients].[First Name] & " " & [Clients].[Last Name].Only where
Stamps Between 7 And 8andStatus = Open.- Products low
Products at or below their reorder level, with what the order will cost. The Monday order list.
From Products. Shows Supplier, Product, Size, In Stock, Reorder Level, Reorder Quantity, Order Cost.
Calculated: Order Cost is
Round([Reorder Quantity] * [Cost Price], 2).Only where
Above Reorder Level <= 0andActive = Yes.- Product sales by month
Products sold each month, the sales with VAT in, and the profit after VAT and cost.
From Visit Lines, Visits, Products. Shows Month, Items, Sales, Profit, with totals.
Calculated: Month is
Format([Arrived], "yyyy-mm"); Sales isRound([Quantity] * [Unit Price], 2); Profit isRound([Quantity] * ([Unit Price] / (1 + [Visit Lines].[Tax Rate]) - [Cost Price]), 2).Only where
Status = Done.- Popular services
The services done over the last thirteen weeks, the most done first, with what each took.
From Visit Lines, Services, Visits. Shows Service, Times, Takings, with totals.
Calculated: Takings is
Round([Quantity] * [Unit Price], 2).Only where
Status = DoneandDays Ago Between 0 And 91.- Regulars not seen lately
Clients who agreed to hear from the shop, last in between eight weeks and a year ago, with nothing booked.
From Clients, Visits. Shows Client, Phone, Usual Cut, Last Visit, Visits, Days Since, with totals.
Calculated: Client is
[Clients].[First Name] & " " & [Clients].[Last Name]; Last Visit isFormat(Nz([Booked For], [Arrived]), "yyyy-mm-dd"); Days Since isDateDiff("d", Nz([Booked For], [Arrived]), Date()).Only where
Days Since Between 56 And 365andStatus In ("Done", "Booked")andMarketing Consent = Yes.
Forms
Every table has a form of the same name: Start Here, Business, Chairs, Barbers, Clients, Services, Products, Loyalty Cards, Visits, Visit Lines, Stock Deliveries, Chair Rentals, Rent Charges, Rent Lines. A form shows one record at a time and adds new ones. A field that points at another table is a list of that table's records, and the records that point at this one are listed below it.
Reports
Pages to print or save as a PDF, laid out from a query or a table.
- Queue board: today and the next two days
Today's queue and the next two days' bookings, a section a day, to pin up or check at the desk.
From the query Queue board, a group for each Day: Time, Name, Kind, Barber, Status, with the count of Name.
- Bookings: the next 7 days by barber
The next seven days of bookings, a section for each barber.
From the query Bookings next 7 days, a group for each Barber: When, Name, Booked On, with the count of Name.
- Takings by barber: the last 7 days
The last seven days' visits and takings by barber, with totals.
From the query Takings by barber, last 7 days: Barber, Basis, Visits, Walk-ins, Free Cuts, Takings, with the total of Visits, total of Takings.
- Takings by day and barber: the last 7 days
The last seven days, a section a day, with each barber's visits and takings: to check against the till and the card machine.
From the query Takings by barber by day, a group for each Day: Barber, Visits, Takings, with the total of Visits, total of Takings.
- Takings by month and barber
Each month's takings by barber, with a total for the month.
From the query Takings by barber by month, a group for each Month: Barber, Basis, Visits, Takings, with the total of Takings.
- Shop takings and VAT by month
The shop's takings, net and VAT month by month, with totals, for the bookkeeper.
From the query Shop takings and VAT by month: Month, Visits, Takings, Net, VAT, with the total of Takings, total of Net, total of VAT.
- Chair rent not yet paid
Chair rent not yet paid, a section for each renter, with the total owed.
From the query Chair rent due, a group for each Renter: Invoice, Week Starting, Due On, Days Overdue, Total, with the total of Total.
- Walk-in waits by hour: the last 4 weeks
The average and longest waits by hour over the last four weeks, and how many walked out.
From the query Walk-in waits by hour: Hour, Walk-ins, Average Wait, Longest Wait, Walked Out, with the total of Walk-ins, total of Walked Out.
- Free cuts due
The list of clients due a free cut.
From the query Due a free cut: Card, Client, Phone, Full On, Days Waiting, with the count of Card.
- Products to order
Monday's order, with the cost of each line and the total.
From the query Products low, a group for each Supplier: Product, Size, In Stock, Reorder Level, Reorder Quantity, Order Cost, with the total of Order Cost.
- Price list
The services and prices, for the board in the window.
From the query Service menu: Service, Minutes, Price.
- Start here: the everyday tasks, step by step
The guide to this database printed: each everyday task and its steps, from the Start Here table.
From the table Start Here, a group for each Task: Step, What to do.
Print templates
What the business sends out, one for each record, with its own name, address and payment details at the head from the Business table. Print one from its form, or choose which to print under Print templates, or save them as a PDF. The words in braces are filled in from the record.
Receipt
The receipt from the till for a visit, on an 80 mm roll: the barber and chair, each service and product with the VAT within it, the total, how it was paid and the loyalty stamps so far. On a rented chair it says the takings are the renter's and carry no VAT. Every visit has one, including ones not yet paid: print the one on screen.
One for each record of Visits, on a till roll 80 mm wide paper.
Receipt {Receipt No}
Date · Barber · Chair · Client · Loyalty card · Stamps on the card
A line for each record of Visit Lines: Item, Qty, Price, Amount, VAT %, VAT
Total paid · Of which VAT
Paid by {Paid By}. {Barber.Receipt Note}
Loyalty card: a stamp for every paid cut, on any chair, and the tenth cut is free. Ask at the desk for a card.
{Business.Document Footer}
Chair rental agreement
The agreement a self-employed barber signs to rent a chair: the parties, the chair, the weekly rent and the day it is due, the deposit, what the rent covers, the hours, clients and payment, insurance, tax, notice and signatures. Plain words of our own: have it checked for your own country before you use it.
One for each record of Chair Rentals, on A4 paper.
Chair rental agreement {Number}
Chair renter · Chair · Trading as · Starts · Address · Weekly rent (plus VAT) · City · Rent due each · Postcode · Deposit
This agreement is made on {Signed On} between {Business.Name} of {Business.Address}, {Business.City} {Business.Postcode} ("the Shop") and {Barber.First Name} {Barber.Last Name}, trading as {Barber.Trading Name}, of {Barber.Address}, {Barber.City} {Barber.Postcode} ("the Barber").
1. The chair. The Shop lets the Barber use {Chair.Name} ({Chair.Position}) in the shop, with its mirror, station, drawer and the shared basin, from {Start Date} until either side ends this agreement. The Barber runs their own business from the chair as a self-employed person. The Barber is not an employee or a partner of the Shop.
2. Rent. The Barber pays {Weekly Rent} a week plus VAT, in advance, on each {Rent Day}. The Shop sends a numbered invoice for each week on the Friday before. Rent is due for every week of the agreement, including weeks the Barber is on holiday or chooses not to work. Rent more than 14 days late may end the agreement under clause 10.
3. Deposit. The Barber has paid a deposit of {Deposit}. The Shop returns it within 14 days of the agreement ending, less any rent still owed and the cost of putting right any damage beyond fair wear.
4. What the rent includes. {Included}
5. Hours. The Barber may work at the chair during the shop's opening hours: {Hours}. The Barber chooses their own days and hours within these and tells the Shop by Friday which days they will work the next week, so the queue board is right.
6. Clients, prices and payment. The Barber keeps their own clients and their own takings, and takes payment for their own work. Walk-ins are offered the first free chair, the Barber's included. The Barber may set their own prices but shows them on the shop's price board. The Barber honours the shop's loyalty card: a stamp for each cut, and the tenth cut free; each free cut the Barber gives is credited at the shop's menu price against the next week's rent.
7. Products. The Barber buys their own tools and the products used in their work. Retail products are sold by the Shop; the Barber does not sell products from the chair without the Shop's agreement.
8. Insurance and standards. The Barber holds public liability insurance cover of at least {Insurance Cover} and shows the Shop the certificate each year (policy {Barber.Insurance Policy}, renewed by {Barber.Insurance Expires}). The Barber cleans and disinfects tools between clients, keeps the station tidy, and follows the shop's health and safety rules and its rules on behaviour towards clients and colleagues.
9. Tax. The Barber is responsible for their own income tax and National Insurance, and for VAT if they become registered for it. The Shop makes no deductions from the Barber's takings and pays the Barber no wages, holiday pay or sick pay.
10. Ending the agreement. Either side may end this agreement by giving {Notice Weeks} weeks' notice in writing. The Shop may end it at once if rent is more than 14 days late after a written reminder, or for serious misconduct. On the last day the Barber clears the station, returns the keys, and pays any rent owed up to the end of the notice.
11. Changes. Any change to this agreement is made in writing and signed by both sides.
Signed: Signed for the Shop, Signed by the Barber, Date
Chair rent invoice
The weekly invoice for a rented chair, numbered RENT-2026-0042, with the week's rent, any credit for free loyalty cuts, the VAT and the total due on the rent day.
One for each record of Rent Charges, on A4 paper.
Invoice {Number}
Invoice to · Invoice number · Trading as · Date · Address · Week starting · City · Payment due · Postcode · Agreement
A line for each record of Rent Lines: Description, Qty, Unit Price, Net, VAT %, VAT
Net · VAT · Total due
{Business.Payment Terms} Please pay to {Business.Bank Details}, quoting {Number}, or in cash at the desk.
Paid on: {Paid On}
Loyalty card
A client's loyalty card on the narrow roll: the days of each stamped cut and who did it, the stamps so far and how many to the free cut.
One for each record of Loyalty Cards, on a till roll 58 mm wide paper.
Loyalty card {Number}
For · Started · Card
A line for each record of Visits: Day, Barber, Stamp, Free
Stamps · Cuts to your free one
One stamp for every paid cut, on any chair. Nine stamps and your tenth cut is free. Show your card or give your name at the desk.
Back to the overview of Copper Pole Barbers