koo5 / accounts-assessor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Accounts Assessor - introduction

This repository hosts practical research into leveraging logic programming to solve accounting problems. The core logic runs in SWI-Prolog, and is aided by a python webserver. Several services are available:

  • investment calculator
  • hirepurchase agreement
  • depreciation
  • livestock (standalone)
  • division 7A loan calculator

We use it at http://www.nobleaccounting.com.au, along with a proprietary (but free) frontend in the form of a Microsoft Excel plugin, to automate accounting tasks.

investment calculator

The most complex endpoint is the investment calculator; it validates and processes financial data of a financial entity for a given period:

  • bank statements
  • raw general ledger input
  • change in investment unit values
  • (SMSF member accounting - fixme)
  • (livestock accounting information - fixme)

screenshot

It automates some of the usual accounting procedures, like tax calculations, and it generates balance sheets, trial balances, investment report and other types of reports.

screenshot

livestock calculator

screenshot screenshot

depreciation calculator

screenshot screenshot

hirepurchase calculator

screenshot (todo: UI)

Given a hire purchase arrangement, it can track the balance of a hire purchase account through time, the total payment and the total interest.

Division 7A Loan calculator

screenshot

screenshot

chatbot services

  • determine tax residency by carrying out a dialog with the user
  • determine small business entity status by carrying out a dialog with the user

in detail

running the server with docker

  1. clone the repo,
  2. git submodule update --init --recursive
  3. cd docker_scripts
  4. see docker_scripts/README.md

usage

with Excel and LSU plugin

https://github.com/koo5/accounts-assessor-public-wiki/blob/master/excel_usage/README.md

without Excel

  1. Load http://localhost:88/ in your browser
  2. upload one of the request files found in tests/endpoint_tests/ (todo: needs updating)
  3. you should get back a json with links to generated report files

documentation

todo, this is all private at the moment:

most endpoints should have some resources in lodgeit_private/doc/. Introductions to individual concepts can be found in videos on dropbox.

videos: https://www.dropbox.com/sh/prgubjzoo9zpkhp/AACd6YmoWxf9IUi5CriihKlLa?dl=0 https://www.dropbox.com/sh/o5ck3qm79zwgpc5/AABD9jUcWiNpWMb2fxsmeVfia?dl=0

wiki: https://github.com/lodgeit-labs/accounts-assessor-wiki/

architecture

there are 4 main components:

services

various helper functions that prolog invokes over http/rpc

workers

a remoulade worker that:

  • wraps prolog and spawns prolog on request
  • talks to the triplestore

frontend

lets users upload request files and triggers workers.

apache

serves static files and proxies requests to frontend

`

directory structure

  • source/lib - prolog source code
  • tests ** plunit - contains queries that test the functionality of the main Prolog program ** endpoint_tests - contains test requests for the web endpoint as well as expected reponses
  • misc - contains the stuff that does not yet clearly fit into a category
  • server_root - this directory is served by the prolog server ** tmp - each request gets its own directory here ** taxonomy - contains all xbrl taxonomy files. ** schemas - xsd schemas

version 2.0

A new version is planned, using a constrained logic programming language, aiming for these features:

Derives, validates, and corrects the financial information that it is given. The program uses redundancy to carry out its validations and corrections. By this it is meant that knowledge of parts of a company's financial data imposes certain constraints on the company's other financial data. If the program is given a company's ledger, then it knows what the balance sheet should look like. If the program is given a company's balance sheet, then it has a rough idea of what the ledger should look like.

  • Given a hire purchase arrangement and ledger, it can guess what the erroneous transactions are
  • Given a hire purchase arrangement and ledger, it can generate correction transactions to fix the erroneous transactions ...

todo: comparisons to other projects

Contributors ✨

All Contributors

Thanks goes to these wonderful people (emoji key):


stoopkid

πŸš‡ ⚠️ πŸ’»

Schwitter

πŸš‡ ⚠️ πŸ’»

salamt2

πŸš‡ ⚠️ πŸ’»

Murisi Tarusenga

πŸš‡ ⚠️ πŸ’»

koo5

πŸš‡ ⚠️ πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

About

License:GNU Affero General Public License v3.0


Languages

Language:HTML 51.7%Language:Prolog 21.9%Language:JavaScript 16.8%Language:C# 4.5%Language:Python 3.7%Language:Jupyter Notebook 0.5%Language:Shell 0.5%Language:CSS 0.4%Language:Dockerfile 0.1%Language:Vue 0.0%Language:Stylus 0.0%Language:ASP.NET 0.0%