This repository contains the source code for a custom-built invoice-handling system designed to meet the unique needs of an accounting firm in Argentina. The software and documentation are primarily in Spanish, with partial English translations available.
The system is built with Java and SQL for backend operations, paired with a JavaFX-based frontend. It efficiently manages database operations, tracks transaction and invoice histories, and generates polished PDF reports using JasperReports.
Here’s what the system can do:
- Invoice Creation: Create detailed invoices that include job descriptions, charges for each task, taxes, and dates.
- Invoice Drafting and Bulk Operations: Draft invoices are stored in the database and support bulk operations. For example, draft invoices can be auto-generated for all active clients for the upcoming month using data from the previous month (assuming similar tasks are performed monthly, which was a common scenario for the requesting firm). Bulk features include price adjustments (e.g., inflation increases) and allow users to review, modify, and finalize invoices collectively. Drafts can be previewed with watermarks and printed for clients.
- Customer Balance Management: Tracks customer balances, showing whether they owe money (unpaid invoices), have credit (overpayments), or have settled their account (zero balance). Users can register payments, issue or cancel invoices, and view the full transaction history for any client. This history can be fetched and printed for client reference.
- Invoice History and Draft Management: Access the complete history of issued invoices (read-only) and manage draft invoices (read and edit).
- Client Management: Add or update client details and flag clients as active or inactive. Inactive clients remain in the database for historical purposes but are excluded from bulk invoice generation.
- Report Generation: Uses JasperReports to create detailed PDF reports, such as invoices and transaction summaries.
- Database Management: Relies on MariaDB for storage and SQL for database queries and updates.
- Frontend: Built with JavaFX, offering an intuitive and user-friendly interface.
- Database Code: Located in the
db
folder, with core functionality inDBEngine.java
. - Report Code: Found in the
reports
folder, with primary logic inReportsEngine.java
. - Frontend Code: Stored in the
view
folder, utilizing FXML files to define the interface. - Report Templates: Saved in the
report_templates
folder and used for generating client-specific invoices and balance summaries.
This project is licensed under the MIT License - see the LICENSE.md file for details
We welcome contributions from the community. Please open an issue or submit a pull request for any improvements or suggestions.