Package: django-ledger
An Accounting, Bookkeeping & Financial Analysis Engine for the Django Framework.Django Ledgeris a double entry accounting system based on
theDjango Web Framework,
which aims to power financially driven applications by removing the complexity of the accounting domain into a simple,
high-level API.Prior experience with Django is required to more effectively use this software.Django Ledgerwas created and is currently maintained and developed by lead developer Miguel Sanda.
If you want to contribute please consider joining our new discord channel here.Join our Discord ChannelHereThe software is still in early stages of development. For more information, please check theRoadmap.How long until all features are implemented?Finance and Accounting is a complicated subject. Django Ledger is different from other Django projects
as it aims to provide a developer-friendly accounting engine while providing a reliable and extensible API to
power financially driven applications. This project in particular, not only requires Python AND Django programming
experience, but also finance and accounting experience. So, that's the long way of saying, we need your help!
Join our Discord Channelhereto learn more.This project can greatly benefit from contributions towards Documentation and Unit Tests.This is the best way to get started with this project if you are not familiar with the models.DocumentationAccess the latest documentation and QuickStart guidehere.
Also, you may download the QuickStart Jupyter Notebookhere.Django Ledger supports:Double entry accounting.Hierarchical Chart of Accounts.Financial Statements (Income Statement, Balance Sheet & Cash Flow Statement).Purchase Orders, Sales Orders (Estimates), Bills and Invoices.Automatic financial ratio & insight calculations.High Level Entity API.Multi tenancy (multiple companies/users/clients).Self-contained Ledgers, Journal Entries & Transactions.Basic OFX & QFX file import.Bills & Invoices with optional cash/accrual functionality.Basic navigational templates.Entity administration & entity manager support.Items, lists & inventory management.Unit of Measures.Bank Accounts.Roadmap to Version 1.0.Version 0.4completed0.4.0: Items, resources and & lists for bills & invoices itemization:0.4.0: Enhance and optimize Django Ledger the random data generation functionality to properly populate relevant
random data for testing.0.4.1: Entity internal organizations, department, branches, etc.0.4.2: Custom Accounting Periods.0.4.3: Purchase Order Model implementation.Bugfixes & UI/UX Enhancements.Version 0.5More details available in theDjango Ledger v0.5 Page.0.5: Testing framework implementation that will include:Unit tests using theBuilt-in Djangounit test modules.Behavioral Driven Testing usingbehavelibrary.Need help!!!! If you want to contribute PLEASE ADD UNIT TESTS!!!Start creating basic package documentation viaSphinxDocument code and functions within code base.Generate HTML documentation.Work with Accountants, Subject Experts and Developers to define an initial list of Unit Tests to validate output _
_(
help needed!)__.Update package and code documentation.Bugfixes & UI/UX Enhancements.0.5.0: Inventory tracking.Average Cost.0.5.1: Customer estimates & contract tracking.Link Estimate/PO/Bill/Invoice workflow.Journal Entry activity determination & validation (for cash flow).0.5.2: Cash flow statement.Human Readable Journal Entry document numbers.Hierarchical Account Model Management.Generate all Django Ledger Model documentation.0.5.3: High Level EntityModel API.0.5.4: Balance Sheet Statement, Income Statement & Cash Flow Statement API & PDF report export.0.5.5: Closing Entries.0.5.5.1: Open Financial Exchange Imports (OFX) Bugfixes and Optimizations.0.5.5.2: BugFixes and Optimizations..0.5.5.3: Closing Entries will be used if requested date is present. Documentation Update.0.5.6: Transaction Library & Blueprints.0.5.7: Chart of Accounts Import.0.5.8: Trial Balance Import.Version 0.6Credit Line Models.Time tracking.Transaction tagging.Update package and code documentation.Bugfixes & UI/UX Enhancements.Version 0.7Currency Models implementation as a way to define EntityModel default currency.Produce financial statements in different currencies.Update package and code documentation.Bugfixes & UI/UX Enhancements.Version 0.8User roles and permissions on views to support read/write permissions for assigned managers to entities.User preferences and settings & account creation views.Update package and code documentation.Version 0.9Enable Hierarchical Entity Structures.Consolidated financial statements.InterCompany transactions.Update package and code documentation.Version 1.0Complete Internationalization of all user-related fields.*** Roadmap subject to change based on user feedback and backlog priorities.Want to contribute?This project is actively looking for contributors. Any financial and/or accounting experience is a big plus.If you have prior accounting experience and want to contribute, don't hesitate to contact me.
Seecontribution guidelines.InstallationDjango Ledger is aDjangoapplication. 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
ishere.
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
detailshere. Otherwise, you may create your
project from scratch.To create a new Django Ledger project:Make sure you have the latest version of pythonhere(recommended).Install Django:pipinstalldjangoInstall PythonPipenv(python package manager):pipinstallpipenvGo to your desired development folder and create a new django project:django-adminstartprojectdjango_ledger_project&&cddjango_ledger_projectInstall Django on you virtual environment.pipenvinstalldjangoInstall Django Ledgerpipenvinstalldjango-ledger[graphql,pdf]Activate your new virtual environment:pipenvshellAdd django_ledger to INSTALLED_APPS in you new Django Project.INSTALLED_APPS=[...,'django_ledger',...,]Perform database migrations:pythonmanage.pymigrateAdd Django SuperUser and follow the prompts.pythonmanage.pycreatesuperuserAdd URLs to your project'surls.py:fromdjango.urlsimportinclude,pathurlpatterns=[...,path('ledger/',include('django_ledger.urls',namespace='django_ledger')),...,]Run your project:pythonmanage.pyrunserverNavigate to Django Ledger root view assigned in your project urlpatterns setting (
typicallyhttp://127.0.0.1:8000/ledgerif you followed this installation guide).Use your superuser credentials to login.How To Set Up Django Ledger for DevelopmentDjango Ledger comes with a basic development environment already configured underdev_env/folder not to be used
for production environments. If you want to contribute to the project perform the following steps:Navigate to your projects directory.Clone the repo from github and CD into project.gitclonehttps://github.com/arrobalytics/django-ledger.git&&cddjango-ledgerInstall PipEnv, if not already installed:pipinstall-UpipenvCreate virtual environment.pipenvinstallIf using a specific version of Python you may specify the path.pipenvinstall--pythonPATH_TO_INTERPRETERActivate environment.pipenvshellApply migrations.pythonmanage.pymigrateCreate a Development Django user.pythonmanage.pycreatesuperuserRun development server.pythonmanage.pyrunserverRun Test SuiteAfter setting up your development environment you may run tests.pythonmanage.pytestdjango_ledgerScreenshotsFinancial Statements Screenshots