abiatarfestus / quote-invoice

A Tkinter application for quoting and invoicing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Quote & Invoice App

A desktop application to keep track of your customers and generate quotes and invoices
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Product Name Screen Shot

This project was adapted from a Microsoft Access application I made for my colleague's business. As part of my Python learning journey, I decided to convert the Access application to a desktop application using Python and its Tkinter module. The application has a number of features, which include storing and retrieving customer information, products and services, quotations and orders, as well as generating quotes and invoices based on quotations and orders saved in the database.

(back to top)

Built With

This project was built with, among others, the following frameworks/libraries.

  • Python
  • Sqlite

(back to top)

Getting Started

To get this project up and running on your local machine follow these steps.

Prerequisites

  • Pipenv
    pip install pipenv --user

Installation

  1. Clone the repo
    git clone https://github.com/abiatarfestus/quote-invoice.git
  2. Install dependencies
    pipenv install
  3. Lauch project
    pipenv shell
    python -m quote_invoice

(back to top)

Usage

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

For more examples, please refer to the Documentation

(back to top)

Roadmap

  • Add unique constrations to quotations
  • Add clumn attributes (unique, nullable, auto_add_date)
  • Review the update methods
  • Wrap data display/insertion on the treeview into a function for reuse by search function
  • Wrap clear treeview into a method for access by all search methods
  • Limit number of list items diplayed in the list views
  • Add option for adding items not in the product table (de-link foreignkey)
  • Quote/OrderItem description defaults to associated product description, but can be modified
  • Change if quote_id and product_id: to if not quote_id or not product_id: and return error message
  • Show info message on print("THE SELECTED PRODUCT IS ALREADY ON THE QUOTATION") but continue with next item
  • Check if product is in stock
  • Change money/prices representation in the db and elsewhere from float to strings
  • Verify/validate customer field when submitting quotation
  • Enforce or validate a particular date format
  • Reduce items.append(self.quote_items_tree.item(item)) to values instead of the whole dictionaries
  • Verify if get_connection() has to appear twice
  • Change self.notebook.select(6) to self.notebook.select(tab name)
  • Add specific exceptions
  • change print("THIS ORDER IS CLOSED") to error message
  • Refactor update_order in order details to connect to db's method
  • Disable order_date when in editing mode
  • Reset variables on open_new blank form and open record
  • Check if !disabled is necessary before modifying the widget
  • Fix customer selction: ID vs display name
  • Prevent settings window from disappearing when dialog box pops up
  • Managing session in the app
  • Check data entry formatting e.g., .lower() etc
  • Add on_delete restrictions
  • Where to calculate Tax?/ Add VAT to Product table
  • Prefix for invoice/quote number (add it to settings)
  • Change some if statements to asserts
  • Trigger buttons with enter
  • Refresh pages on new data entry
  • Add data validation to all data entry forms

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contributing

I welcome any and all contributions! Here are some ways you can get started:

  1. Report bugs: If you encounter any bugs, please let me know. Open up an issue and let me know the problem.
  2. Contribute code: If you are a developer and want to contribute, follow the instructions below to get started!
  3. Suggestions: If you don't want to code but have some awesome ideas, open up an issue explaining some updates or improvements you would like to see!
  4. Documentation: If you see the need for some additional documentation, feel free to add some!

Instructions

  1. Fork this repository
  2. Clone the forked repository
  3. Add your contributions (code or documentation)
  4. Commit and push
  5. Wait for pull request to be merged

(back to top)

Contact

Your Name - @abiatarfestus

Project Link: https://github.com/abiatarfestus/quote-invoice

(back to top)

Acknowledgments

(back to top)

About

A Tkinter application for quoting and invoicing

License:MIT License


Languages

Language:Python 99.9%Language:Makefile 0.1%