Java Swing-based desktop application for managing invoices, products, customers, and related business operations.
Uses Microsoft SQL Server for persistence and supports exporting invoices to Excel (Apache POI).
- Invoice creation with group/sub-group item logic
- Percentage-based discount support
- Per-line labor cost (visible in the app; excluded from Excel export)
- Invoice viewing, filtering, and Excel export (single invoice or all)
- Product & category management
- Customer (company) management with company-name autocomplete
- Favorites management
- Java (Swing) UI
- SQL Server + JDBC (
mssql-jdbc) - Apache POI for Excel export
src/
com/bicakclc/
main/ Application entry point
ui/ Swing UI panels (InvoicePanel, InvoiceViewPanel, MainWindow, ...)
service/ Business logic
dao/ Data access layer (SQL Server)
model/ Data models (Invoice, InvoiceItem, Product, Customer, ...)
util/ Utilities (DatabaseConnection, constants, ...)
resources/
sql/ SQL scripts (schema + migrations)
templates/ Excel template (local, ignored by git)
lib/ External JARs (add to classpath)
bin/ Compiled output (ignored by git)
- JDK 11+ (the commonly used SQL Server driver for this project targets Java 11)
- Microsoft SQL Server (Express or Standard)
- An IDE (Eclipse / IntelliJ IDEA) or your preferred Java runner
Run:
src/resources/sql/create_invoice_tables.sql
If you already have a database and you’re updating to a newer version, run:
src/resources/sql/add_discount_and_missing_fields.sql
The application reads DB settings from config.properties in the repository root (if present).
This file is gitignored (to avoid committing secrets).
- Copy the example:
config.properties.example→config.properties
- Edit values as needed.
Windows Authentication note:
- If you use
integratedSecurity=true, you must place the correctmssql-jdbc_auth-*.dllinto your JDKbin/directory.
Place the required JARs under lib/ and add them to the classpath (not modulepath).
See lib/README.txt for the expected JAR list.
This repository currently ignores *.xlsx, so the template is not committed.
To enable Excel export, make sure the template exists locally at:
src/resources/templates/inovice_template.xlsx
Run the main class:
com.bicakclc.main.BicakClcApplication(src/com/bicakclc/main/BicakClcApplication.java)
flowchart TD
User["User"] --> MainWindow["MainWindow (Swing UI)"]
MainWindow --> InvoicePanel["InvoicePanel"]
MainWindow --> InvoiceViewPanel["InvoiceViewPanel"]
MainWindow --> ProductPanel["ProductPanel"]
MainWindow --> CustomerPanel["CustomerPanel"]
MainWindow --> FavoritePanel["FavoritePanel"]
InvoicePanel --> InvoiceService["InvoiceService"]
InvoicePanel --> PriceCalc["PriceCalculationService"]
InvoiceViewPanel --> ExcelExport["Excel export (Apache POI)"]
InvoiceService --> InvoiceDAO["InvoiceDAO"]
InvoiceService --> InvoiceItemDAO["InvoiceItemDAO"]
InvoiceService --> CustomerService["CustomerService"]
CustomerService --> CustomerDAO["CustomerDAO"]
InvoiceDAO --> DB["SQL Server"]
InvoiceItemDAO --> DB
CustomerDAO --> DB
ExcelExport --> Template["inovice_template.xlsx (local)"]
ClassNotFoundException/NoClassDefFoundError: verify all JARs are on the classpath.- DB connection errors:
- Ensure SQL Server is running and reachable.
- Verify
db.url(anddb.username/db.passwordif using SQL auth) inconfig.properties. - For Windows auth, ensure the
mssql-jdbc_authDLL is installed into the JDKbin/.
See CHANGELOG.md.
See LICENSE (Non-Commercial Portfolio License).