Giter Club home page Giter Club logo

pacioli.jl's Introduction

Pacioli.jl is a double entry bookkeeping package, to allow accounting to be done in Julia, and especilly within Pluto. Written in Julia and Markdown, it's intended to allow for a printable document to be created in Pluto.

Instalation

This program is designed to be used in Pluto, but may work in Juno, or and IDE. futre testing will test the usability in these environments.

Juno is required. Currently version requirements are untested but 1.6.3 or 1.7 rc1 or higher is recomended. These can be downloaded here. https://julialang.org/downloads/

Pluto

Install Pluto

Once Julia is loaded according to the instructions for your OS and computer archetecture, enter Julia in a terminal or IDE

]add Pluto #installs Pluto.jl to Julia in the package manager
import Pkg; Pkg.add("Pluto") #installs  Pluto.jl to Julia in the terminal or IDE

Load Pluto

in the terminal or IDE enter:

import Pluto; using Pluto
Pluto.run()

Load Pacioli to Pluto

From the Pluto homepage, add the link to Pluto in the GitHub registry to 'Open from file:' or Download Pacioli.jl and Enter the path to 'Open from file'

This notebook can then be used as an accounting ledger, or tested and modified at personal risk. However for good practice, it is better to start a new notebooke and save as:

<name>ledger<year>.jl

Save to a common folder for other materials of the same year, such as the starting balnce, recipts, and invoices.

Using Pacioli

##Loading Pacioli

Since Pacioli is not currently registered as a Julia package, it must be downloaded and extracted to a destination.

add the relevant packages

using DecFP #allows data to exist as fixed point decimals

using DataFrames #allows data to be shown in dataframes

using XLSX # allows spreadsheets to be loaded

Loading Accounts from XLSX

stay tuned!

Balance Sheet

balancesheet(starting_balance)

This will produce the starting balance sheet.

Replace starting_balance with another ledger, such as general_ledger will a balance sheet after all transactions in the ledger. If there is a problem such as a sub ledger not being recorded property will result in an imbalance. In this case the error needs to be fixed, and an issue report should be filled, to ensure such problems with the program are fixed.

Set Up General Ledger

general_ledger=deepcopy(starting_balance)

This sets creates a copy of the starting balance, in a form that can then be edited.

Transaction

a transaction is recoreded as follows

transaction(<memo>,# string to 
<date> # date is entered using the format day <3 letter abbreviation for month> <Year> seperated by spaces
 [debit_ledger_entries],# sub ledger keys sepperated by commas, keys are all strings
 [debit_account_entries], # accounts are entered as strings 
 [debit_ammount_entires], # the actual values that go in each account, entered as Float values, these will convert to Dec64 to 2 decimal places,
                          [credit_ledger_entries],# sub ledger keys sepperated by commas, keys are all strings
                          [credit_account_entries], # accounts are entered as strings 
                          [credit_ammount_entires], # the actual values that go in each account, entered as Float values, these will convert to Dec64 to 2 decimal places,
 ledger # the ledger to be modified, general_ledger by default   
 )
 
 ###Transaction breakdown
 
 ####Date
 ex."1 Jan 2021"
 
 Day - is a 1 or 2 digit number
 
 Month- is the first three letters of each month name, with the first letter capitalized
 
 Year - is the 4 digit year (Y2K)
 
 
 ## Income Statement

income_statement(ledger) # enter the ledger that is last used, usually this would be general_ledger, after the year/months entries

This will produce an income statement listing each revenue, and expense, as well as the Net Income/Loss of the above transactions. 

pacioli.jl's People

Contributors

brettknoss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pacioli.jl's Issues

Misspelled Accounts Geneate Missing Key Error, not User Error

Between lines 498 and 515 are supposed to return an error if the user misspells an account name.

						if !haskey(general_ledger["debit"][credit_ledger_entries[i]],  credit_account_entries[i])
						
							return "Error --"*credit_account_entries[i]*" not found in" *credit_ledger_entries[i]*"."
						
						elseif !haskey(general_ledger["credit"][credit_ledger_entries[i]],  credit_account_entries[i])
						
							return "Error --"*credit_account_entries[i]*" not found in" *credit_ledger_entries[i]*"."
						
						elseif!haskey(general_ledger["debit"][debit_ledger_entries[i]],  debit_account_entries[i])
						
							return "Error --"*debit_account_entries[i]*" not found in" *debit_ledger_entries[i]*"."
						
						elseif !haskey(general_ledger["credit"][debit_ledger_entries[i]],  debit_account_entries[i])
										
						return "Error --"*credit_account_entries[i]*" not found in" *credit_ledger_entries[i]*"."

but instead there is an error at line 425, which is an array of strings, to be used as keys, and at line 541, which executes the calc_debit_balance! function, indicating that miss spelled entries are getting passed this test.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.