https://github.com/darshxm/invoice_generator
A python app that helps generate and manage invoices for companies/sole proprietors in the Netherlands.
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (17.1%) to scientific vocabulary
Repository
A python app that helps generate and manage invoices for companies/sole proprietors in the Netherlands.
Basic Info
- Host: GitHub
- Owner: darshxm
- License: gpl-3.0
- Language: Python
- Default Branch: main
- Size: 0 Bytes
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Invoice Generator
A Python-based GUI application for creating and managing invoices, built using tkinter, ReportLab, and SQLite3. This project is designed to streamline the process of generating professional invoices, maintaining a database of invoicing companies, clients, and invoices. This app is also completely local, so no worries about a server being compromised in a faraway land with a company that "apologizes" for data leaks the size of a supermassive black hole.
Of course, there may be bugs, and I would be happy to fix them if you let me know, or if you're really generous and fix them yourself :)
I hope this tool is useful, and saves you the headache of making invoices. If you are unfamiliar with Python, then I made a .exe version of the application to be used as an end user.
Download the .exe File for This Project
This repository is set up to automatically generate an .exe file for this project using GitHub Actions. You can download the executable directly from the repository without needing to manually run any packaging tools. Here's how:
Steps to Download the .exe File
Go to the Actions Tab
- Navigate to the Actions tab in this GitHub repository.
Select the Latest Workflow Run
- Find the most recent workflow run triggered by a push or pull request to the
mainbranch. - Click on the workflow name (e.g., "Build EXE").
- Find the most recent workflow run triggered by a push or pull request to the
Download the Artifact
- Scroll down to the Artifacts section in the workflow summary.
- You’ll find a downloadable artifact named
python-app-exe(or a similar name). - Click on it to download the
.exefile.
- Scroll down to the Artifacts section in the workflow summary.
Run the
.exeFile- Extract the
.exefile (if needed). - Double-click the
.exefile to run the application. No additional setup is required.
- Extract the
Additional Notes
- The
.exefile is built usingpyinstallerto ensure it works as a standalone executable on Windows systems. - If you encounter issues or need the application for a different platform, feel free to open an issue in the repository.
Features
Invoice Management
- Add, edit, and manage invoicing companies and client details.
- Generate detailed invoices in PDF format.
- Maintain a history of invoices with options to mark invoices as erroneous.
User-Friendly Interface
- Modern GUI designed using
ttkbootstrapfor enhanced aesthetics. - Scrollable sections to manage long forms and itemized invoices.
- Automatic calculation of totals, including VAT.
Database Integration
- Use
SQLite3to store and retrieve invoicing company and client information. - Maintain a history of generated invoices.
Additional Features
- Dynamically calculated prices and totals.
- VAT exemption toggle.
- Error handling and logging.
Requirements
Dependencies
- Python 3.10 or higher
tkinterttkbootstrapReportLabSQLite3
Install dependencies using the following command:
bash
pip install -r requirements.txt
Project Structure
plaintext
.
├── main.py # Entry point for the application
├── gui.py # GUI implementation using tkinter and ttkbootstrap
├── invoice.py # Invoice generation logic using ReportLab
├── database.py # SQLite3 database integration
├── utils.py # Utility functions
├── invoice_app.db # SQLite3 database (auto-generated on first run)
├── invoice_app.log # Log file for error tracking
├── requirements.txt # Dependencies for the project
└── README.md # Project documentation
Usage
Clone the repository:
bash git clone https://github.com/your-username/invoice-generator.git cd invoice-generatorInstall required dependencies:
bash pip install -r requirements.txtRun the application:
bash python main.py
How to Use
Adding an Invoicing Company
- Click on "Add Invoicing Company".
- Enter the company's details (e.g., KVK number, VAT number, etc.) in the prompted dialog.
- Save the details to populate the dropdown menu.
Adding a Client
- Click on "Add Client Company".
- Enter the client's name and address in the prompted dialog.
- Save the details to populate the dropdown menu.
Generating an Invoice
- Select an invoicing company and client.
- Fill in the invoice metadata (e.g., invoice number, date, reference).
- Add items to the invoice with descriptions, hours, and prices.
- Click on "Generate Invoice" to create a PDF and save the details to the database.
Viewing Invoice History
- Click on "View Invoices".
- Browse the list of invoices for the selected company.
- Mark invoices as erroneous or unmark them as needed.
Customization
Adding Additional Fields
To add more fields to the invoice:
1. Update the gui.py file to include the new field in the GUI.
2. Update the invoice.py file to include the field in the PDF generation.
3. Modify the database schema in database.py to store the additional data.
Themes
You can customize the GUI theme by changing the ttkbootstrap style in gui.py:
python
self.style = ttk.Style("cosmo") # Replace "cosmo" with a preferred style
Packaging as an Executable
If you want to use the application without requiring Python installation, you can package it as an executable using pyinstaller:
Install
pyinstaller:bash pip install pyinstallerCreate the executable:
bash pyinstaller --onefile --noconsole main.pyThe executable will be located in the
distfolder. Share this file with users who can run the application without installing Python.
Possible Future Improvements
- Multi-language support for invoices (let's be real, Dutch would probably be the only other language added).
- A better GUI (Python may not have been the right choice for this).
- Tax calculation and management for each of your companies.
- Integration with email to directly send invoices and keep track of them in your local database.
- Role-based access for multiple users.
Feel free to pick up any one you think would be the most helpful and contribute! They are not listed in any particular order of importance.
Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository.
2. Create a new branch for your feature: git checkout -b feature-name
3. Commit your changes: git commit -m "Add feature-name"
4. Push to your branch: git push origin feature-name
5. Create a pull request.
License
This project is licensed under the GNU GPL License. See the LICENSE file for details.
Acknowledgments
- ttkbootstrap for the modern tkinter themes.
- ReportLab for PDF generation.
Author
- Darsh Modi
Feel free to reach out for feedback or questions!
Owner
- Login: darshxm
- Kind: user
- Repositories: 1
- Profile: https://github.com/darshxm
GitHub Events
Total
- Release event: 1
- Push event: 14
- Fork event: 1
- Create event: 3
Last Year
- Release event: 1
- Push event: 14
- Fork event: 1
- Create event: 3
Dependencies
- reportlab *
- ttkbootstrap *