django-ledger


Namedjango-ledger JSON
Version 0.7.3 PyPI version JSON
download
home_pageNone
SummaryDouble entry accounting system built on the Django Web Framework.
upload_time2025-01-07 14:03:15
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseGPLv3 License
keywords django finance bookkeeping accounting balance sheet income statement general ledger money engine
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![django ledger logo](https://us-east-1.linodeobjects.com/django-ledger/logo/django-ledger-logo@2x.png)

# Django Ledger

## A Double Entry Accounting Engine for Django

Django Ledger is a powerful financial management system built on the Django Web Framework. It offers a simplified API for handling complex accounting tasks in financially driven applications.

[Join our Discord](https://discord.gg/c7PZcbYgrc) | [Documentation](https://django-ledger.readthedocs.io/en/latest/) | [QuickStart Notebook](https://github.com/arrobalytics/django-ledger/blob/develop/notebooks/QuickStart%20Notebook.ipynb)

## Key Features

- High-level API
- Double entry accounting
- Hierarchical Chart of Accounts
- Financial statements (Income Statement, Balance Sheet, Cash Flow)
- Purchase Orders, Sales Orders, Bills, and Invoices
- Financial ratio calculations
- Multi-tenancy support
- Ledgers, Journal Entries & Transactions
- OFX & QFX file import
- Closing Entries
- Inventory management
- Unit of Measures
- Bank account information
- Django Admin integration
- Built-in Entity Management UI

## Getting Involved

- **Feature Requests/Bug Reports**: Open an issue in the repository
- **For software customization, advanced features and consulting services**: 
[Contact us](https://www.miguelsanda.com/work-with-me/) or email msanda@arrobalytics.com
- **Contribute**: See our [contribution guidelines](https://github.com/arrobalytics/django-ledger/blob/master/Contribute.md)

## Who Should Contribute?

We're looking for contributors with:
- Python and Django programming skills
- Finance and accounting expertise
- Interest in developing a robust accounting engine API

If you have relevant experience, especially in accounting, we welcome your pull requests or direct contact.

# Installation

Django Ledger is a [Django](https://www.djangoproject.com/) application. If you haven't, you need working knowledge of
Django and a working Django project before you can use Django Ledger. A good place to start
is [here](https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-a-project).

Make sure you refer to the django version you are using.

The easiest way to start is to use the zero-config Django Ledger starter template. See
details [here](https://github.com/arrobalytics/django-ledger-starter). Otherwise, you may create your
project from scratch.

To create a new Django Ledger project:

* Make sure you have the latest version of python [here](https://www.python.org/) (recommended).

* Install Django:

```shell
pip install django
```

* Install Python [Pipenv](https://pipenv.pypa.io/en/latest/) (python package manager):

```shell script
pip install pipenv
```

* Go to your desired development folder and create a new django project:

```shell
django-admin startproject django_ledger_project && cd django_ledger_project
```

* Install Django on you virtual environment.

```shell
pipenv install django
```

* Install Django Ledger

```shell script
pipenv install django-ledger[graphql,pdf]
```

* Activate your new virtual environment:

```shell
pipenv shell
```

* Add django_ledger to INSTALLED_APPS in you new Django Project.

```python
INSTALLED_APPS = [
    ...,
    'django_ledger',
    ...,
]
```

* Perform database migrations:

```shell
python manage.py migrate
```

* Add Django SuperUser and follow the prompts.

```shell
python manage.py createsuperuser
```

* Add URLs to your project's __urls.py__:

```python
from django.urls import include, path

urlpatterns = [
    ...,
    path('ledger/', include('django_ledger.urls', namespace='django_ledger')),
    ...,
]
```

* Run your project:

```shell
python manage.py runserver
```

* Navigate to Django Ledger root view assigned in your project urlpatterns setting (
  typically http://127.0.0.1:8000/ledger
  if you followed this installation guide).
* Use your superuser credentials to login.

# How To Set Up Django Ledger for Development

Django Ledger comes with a basic development environment already configured under __dev_env/__ folder not to be used
for production environments. If you want to contribute to the project perform the following steps:

1. Navigate to your projects directory.
2. Clone the repo from github and CD into project.

```shell
git clone https://github.com/arrobalytics/django-ledger.git && cd django-ledger
```

3. Install PipEnv, if not already installed:

```shell
pip install -U pipenv
```

4. Create virtual environment.

```shell
pipenv install
```

If using a specific version of Python you may specify the path.

```shell
pipenv install --python PATH_TO_INTERPRETER
```

5. Activate environment.

```shell
pipenv shell
```

6. Apply migrations.

```shell
python manage.py migrate
```

7. Create a Development Django user.

```shell
python manage.py createsuperuser
```

8. Run development server.

```shell
python manage.py runserver
```

# How To Set Up Django Ledger for Development using Docker

1. Navigate to your projects directory.

2. Give executable permissions to entrypoint.sh

```shell
sudo chmod +x entrypoint.sh
```

3. Add host '0.0.0.0' into ALLOWED_HOSTS in settings.py.

4. Build the image and run the container.

```shell
docker compose up --build
```

5. Add Django Superuser by running command in seprate terminal

```shell
docker ps
```

Select container id of running container and execute following command

```shell
docker exec -it containerId /bin/sh
```

```shell
python manage.py createsuperuser
```

6. Navigate to http://0.0.0.0:8000/ on browser.

# Run Test Suite

After setting up your development environment you may run tests.

```shell
python manage.py test django_ledger
```

# Screenshots

![django ledger entity dashboard](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_entity_dashboard.png)
![django ledger balance sheet](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_income_statement.png)
![django ledger income statement](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_balance_sheet.png)
![django ledger bill](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_bill.png)
![django ledger invoice](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_invoice.png)

# Financial Statements Screenshots

![balance_sheet_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/BalanceSheetStatement.png)
![income_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/IncomeStatement.png)
![cash_flow_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/CashFlowStatement.png)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "django-ledger",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Miguel Sanda <msanda@arrobalytics.com>",
    "keywords": "django, finance, bookkeeping, accounting, balance sheet, income statement, general ledger, money, engine",
    "author": null,
    "author_email": "Miguel Sanda <msanda@arrobalytics.com>",
    "download_url": null,
    "platform": null,
    "description": "![django ledger logo](https://us-east-1.linodeobjects.com/django-ledger/logo/django-ledger-logo@2x.png)\n\n# Django Ledger\n\n## A Double Entry Accounting Engine for Django\n\nDjango Ledger is a powerful financial management system built on the Django Web Framework. It offers a simplified API for handling complex accounting tasks in financially driven applications.\n\n[Join our Discord](https://discord.gg/c7PZcbYgrc) | [Documentation](https://django-ledger.readthedocs.io/en/latest/) | [QuickStart Notebook](https://github.com/arrobalytics/django-ledger/blob/develop/notebooks/QuickStart%20Notebook.ipynb)\n\n## Key Features\n\n- High-level API\n- Double entry accounting\n- Hierarchical Chart of Accounts\n- Financial statements (Income Statement, Balance Sheet, Cash Flow)\n- Purchase Orders, Sales Orders, Bills, and Invoices\n- Financial ratio calculations\n- Multi-tenancy support\n- Ledgers, Journal Entries & Transactions\n- OFX & QFX file import\n- Closing Entries\n- Inventory management\n- Unit of Measures\n- Bank account information\n- Django Admin integration\n- Built-in Entity Management UI\n\n## Getting Involved\n\n- **Feature Requests/Bug Reports**: Open an issue in the repository\n- **For software customization, advanced features and consulting services**: \n[Contact us](https://www.miguelsanda.com/work-with-me/) or email msanda@arrobalytics.com\n- **Contribute**: See our [contribution guidelines](https://github.com/arrobalytics/django-ledger/blob/master/Contribute.md)\n\n## Who Should Contribute?\n\nWe're looking for contributors with:\n- Python and Django programming skills\n- Finance and accounting expertise\n- Interest in developing a robust accounting engine API\n\nIf you have relevant experience, especially in accounting, we welcome your pull requests or direct contact.\n\n# Installation\n\nDjango Ledger is a [Django](https://www.djangoproject.com/) application. If you haven't, you need working knowledge of\nDjango and a working Django project before you can use Django Ledger. A good place to start\nis [here](https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-a-project).\n\nMake sure you refer to the django version you are using.\n\nThe easiest way to start is to use the zero-config Django Ledger starter template. See\ndetails [here](https://github.com/arrobalytics/django-ledger-starter). Otherwise, you may create your\nproject from scratch.\n\nTo create a new Django Ledger project:\n\n* Make sure you have the latest version of python [here](https://www.python.org/) (recommended).\n\n* Install Django:\n\n```shell\npip install django\n```\n\n* Install Python [Pipenv](https://pipenv.pypa.io/en/latest/) (python package manager):\n\n```shell script\npip install pipenv\n```\n\n* Go to your desired development folder and create a new django project:\n\n```shell\ndjango-admin startproject django_ledger_project && cd django_ledger_project\n```\n\n* Install Django on you virtual environment.\n\n```shell\npipenv install django\n```\n\n* Install Django Ledger\n\n```shell script\npipenv install django-ledger[graphql,pdf]\n```\n\n* Activate your new virtual environment:\n\n```shell\npipenv shell\n```\n\n* Add django_ledger to INSTALLED_APPS in you new Django Project.\n\n```python\nINSTALLED_APPS = [\n    ...,\n    'django_ledger',\n    ...,\n]\n```\n\n* Perform database migrations:\n\n```shell\npython manage.py migrate\n```\n\n* Add Django SuperUser and follow the prompts.\n\n```shell\npython manage.py createsuperuser\n```\n\n* Add URLs to your project's __urls.py__:\n\n```python\nfrom django.urls import include, path\n\nurlpatterns = [\n    ...,\n    path('ledger/', include('django_ledger.urls', namespace='django_ledger')),\n    ...,\n]\n```\n\n* Run your project:\n\n```shell\npython manage.py runserver\n```\n\n* Navigate to Django Ledger root view assigned in your project urlpatterns setting (\n  typically http://127.0.0.1:8000/ledger\n  if you followed this installation guide).\n* Use your superuser credentials to login.\n\n# How To Set Up Django Ledger for Development\n\nDjango Ledger comes with a basic development environment already configured under __dev_env/__ folder not to be used\nfor production environments. If you want to contribute to the project perform the following steps:\n\n1. Navigate to your projects directory.\n2. Clone the repo from github and CD into project.\n\n```shell\ngit clone https://github.com/arrobalytics/django-ledger.git && cd django-ledger\n```\n\n3. Install PipEnv, if not already installed:\n\n```shell\npip install -U pipenv\n```\n\n4. Create virtual environment.\n\n```shell\npipenv install\n```\n\nIf using a specific version of Python you may specify the path.\n\n```shell\npipenv install --python PATH_TO_INTERPRETER\n```\n\n5. Activate environment.\n\n```shell\npipenv shell\n```\n\n6. Apply migrations.\n\n```shell\npython manage.py migrate\n```\n\n7. Create a Development Django user.\n\n```shell\npython manage.py createsuperuser\n```\n\n8. Run development server.\n\n```shell\npython manage.py runserver\n```\n\n# How To Set Up Django Ledger for Development using Docker\n\n1. Navigate to your projects directory.\n\n2. Give executable permissions to entrypoint.sh\n\n```shell\nsudo chmod +x entrypoint.sh\n```\n\n3. Add host '0.0.0.0' into ALLOWED_HOSTS in settings.py.\n\n4. Build the image and run the container.\n\n```shell\ndocker compose up --build\n```\n\n5. Add Django Superuser by running command in seprate terminal\n\n```shell\ndocker ps\n```\n\nSelect container id of running container and execute following command\n\n```shell\ndocker exec -it containerId /bin/sh\n```\n\n```shell\npython manage.py createsuperuser\n```\n\n6. Navigate to http://0.0.0.0:8000/ on browser.\n\n# Run Test Suite\n\nAfter setting up your development environment you may run tests.\n\n```shell\npython manage.py test django_ledger\n```\n\n# Screenshots\n\n![django ledger entity dashboard](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_entity_dashboard.png)\n![django ledger balance sheet](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_income_statement.png)\n![django ledger income statement](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_balance_sheet.png)\n![django ledger bill](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_bill.png)\n![django ledger invoice](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_invoice.png)\n\n# Financial Statements Screenshots\n\n![balance_sheet_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/BalanceSheetStatement.png)\n![income_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/IncomeStatement.png)\n![cash_flow_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/CashFlowStatement.png)\n",
    "bugtrack_url": null,
    "license": "GPLv3 License",
    "summary": "Double entry accounting system built on the Django Web Framework.",
    "version": "0.7.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/arrobalytics/django-ledger/issues",
        "Documentation": "https://django-ledger.readthedocs.io/en/latest/",
        "Homepage": "https://www.djangoledger.com",
        "Source Code": "https://github.com/arrobalytics/django-ledger"
    },
    "split_keywords": [
        "django",
        " finance",
        " bookkeeping",
        " accounting",
        " balance sheet",
        " income statement",
        " general ledger",
        " money",
        " engine"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "796237804aed1fd9de249c98aaed95179f8778ac58015876f6ae82693490cef4",
                "md5": "fe9b86d7427c914d0efc3c1921dc772c",
                "sha256": "a126ae91d0783434ac54a886cce03ba8cc7cecd23bc324dc188be2898403bb8f"
            },
            "downloads": -1,
            "filename": "django_ledger-0.7.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fe9b86d7427c914d0efc3c1921dc772c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 2645925,
            "upload_time": "2025-01-07T14:03:15",
            "upload_time_iso_8601": "2025-01-07T14:03:15.822886Z",
            "url": "https://files.pythonhosted.org/packages/79/62/37804aed1fd9de249c98aaed95179f8778ac58015876f6ae82693490cef4/django_ledger-0.7.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-07 14:03:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "arrobalytics",
    "github_project": "django-ledger",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "django-ledger"
}
        
Elapsed time: 0.96358s