The system aims to facilitate the management of appointments, transactions, products, services, invoices, and requisitions for a barber shop. It allows appointments scheduling, billing of services and products, management of inventory, and tracking of financial transactions.
- Client: Represents customers who schedule appointments and receive invoices for services and products.
- Service: Describes the services offered by the business, including their name, code, description, price, and duration.
- Product: Represents the products available for sale, including their name, code, description, and price.
- Invoice: Represents the billing document issued to clients, including details such as the total cost, subtotal, tips, discount, tax rate, and balance due.
- Appointment: Represents scheduled appointments, including the date, time, requested service, and any additional notes.
- Requisition: Represents requests for products, including details such as the requisition number, requested date, received date, quantity received, and any notes.
The system stores data related to clients, services, products, invoices and appointments. This data includes client information, service and product details, invoice amounts and appointment schedules.
You can run the project using the .jar file: BarberShop.jar
βββ controllers
β βββ alerts
β βββ database
β βββ patterns
β βββ style
βββ models
β βββ Client.java
β βββ Event.java
β βββ Invoice.java
β βββ InvoiceProduct.java
β βββ InvoiceService.java
β βββ Product.java
β βββ Service.java
βββ views
β βββ calandar
β βββ clients
β βββ products
β βββ services
β βββ Menu.java
βββ App.java
βββ Main.javaβββ controllers
βββ alerts
β βββ AlertController.java # control warrning, info and errors popups
β βββ StockAlert.java # control low stock popups
βββ database
β βββ DB.java # control database basic operations
β βββ GetData.java # fetch data from the database
β βββ AddData.java # add rows to the database
β βββ UpdateData.java # update rows on the database
β βββ DeleteData.java # delete rows from the database
βββ patterns
β βββ PaternController.java # control text patterns
βββ style
βββ Colors.java # control the app colors and themes
βββ HoverController.java # control the button hoversβββ models
βββ Client.java # client model
βββ Event.java # event model
βββ Product.java # product model
βββ Service.java # service model
βββ Invoice.java # invoice model
βββ InvoiceProduct.java # invoice product model
βββ InvoiceService.java # invoice service modelβββ views
βββ calandar
β βββ Calendar.java # calandar view
β βββ AddEvent.java # add new event view
β βββ EditEvent.java # edit event view
β βββ DeleteEvent.java- # delete event view
β βββ GenerateInvoice.java # generate an invoice view
β βββ SeeInvoice.java # see an invoice view
βββ clients
β βββ Clients.java # clients list view
β βββ AddClient.java # add new client view
β βββ EditClient.java # edit client view
β βββ DeleteClient.java # delete client view
βββ products
β βββ Products.java # products list view
β βββ AddProduct.java # add new product view
β βββ EditProduct.java # edit product view
β βββ DeleteProduct.java # delete product view
βββ services
β βββ Services.java # services list view
β βββ AddService.java # add new service view
β βββ EditService.java # edit service view
β βββ DeleteService.java # delete service view
βββ Menu.java # side menu viewCREATE TABLE Client (
client_id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name VARCHAR(255),
last_name VARCHAR(255),
phone INT
);
CREATE TABLE Event (
event_id INTEGER PRIMARY KEY AUTOINCREMENT,
date_time DATETIME,
client_id INT,
invoice_id INT,
service_id INT,
description TEXT,
type INTEGER CHECK (type IN (0, 1, 2)),
FOREIGN KEY (client_id) REFERENCES Client(client_id),
FOREIGN KEY (invoice_id) REFERENCES Invoice(invoice_id),
FOREIGN KEY (service_id) REFERENCES Service(service_id)
);
CREATE TABLE Invoice (
invoice_id INTEGER PRIMARY KEY AUTOINCREMENT,
client_id INT,
appointment_id INT,
sub_total DOUBLE,
reductions DOUBLE,
tax DOUBLE,
total DOUBLE,
FOREIGN KEY (client_id) REFERENCES Client(client_id),
FOREIGN KEY (appointment_id) REFERENCES Event(event_id)
);
CREATE TABLE BillProduct (
invoice_id INTEGER,
product_id INTEGER,
FOREIGN KEY (invoice_id) REFERENCES Invoice(invoice_id),
FOREIGN KEY (product_id) REFERENCES Product(product_id)
);
CREATE TABLE BillService (
invoice_id INTEGER,
service_id INTEGER,
FOREIGN KEY (invoice_id) REFERENCES Invoice(invoice_id),
FOREIGN KEY (service_id) REFERENCES Service(service_id),
PRIMARY KEY (invoice_id, service_id)
);
CREATE TABLE Product (
product_id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255),
description TEXT,
quantity INT,
price DOUBLE
);
CREATE TABLE Service (
service_id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255),
description TEXT,
price DOUBLE
);