accounting in the eyes of a programmer - haifa linux club · 29 hacking gnucash default data...

30
1 GnuCash Accounting in the Eyes of a Programmer Oron Peled <[email protected]>

Upload: vutruc

Post on 14-May-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

11

GnuCash

Accounting in the Eyes of a Programmer

Oron Peled <[email protected]>

Page 2: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

22

Motivation

● You have a small business

● Family accounts

● Your bank manager calls...

Page 3: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

33

Account Types

● Double Entry:

Each transaction appears on two accounts

Page 4: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

44

Account Tree

● How detailed?

– Labor

vs.

– Control

Page 5: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

55

Simple Transactions

Page 6: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

66

Split Transactions

Page 7: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

77

Date Shortcuts

- previous day today + next day

[ month ago ] month ahead

month start month end

year start year end

In any date field

Page 8: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

88

Other Shortcuts

● In any amount field there is:

– A mini-calculator

● In the number field:

– A +/- increments/decrements by one

● The description field:

– Is copied from previous transations

Page 9: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

99

The “num” field

● Used for reference

● Examples:

– Check number (for my checks)

– Invoice number (for my invoices)

– Payment counter – 3/12

Page 10: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1010

A mini-demo

● Create an account tree

● Set assets and liabilities (against equity)

● Use transactions

Page 11: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1111

Action->Schedule...

Page 12: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1212

Scheduled Transactions

Page 13: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1313

Scheduling Variables

● ST may contain arbitrary variables

● Must be filed during "run"

● Obviously cannot be automatic

● Example...

Page 14: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1414

Since Last Run...

Page 15: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1515

Reconciliation

● Against the bank/credit card statement

– I do it every month

● This is the QA of your management:

– How many items are "discovered"

– "What? I bought this? When?"

– You get to see the bank commissions etc.

Page 16: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1616

Reconciliation Window

Page 17: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1717

Business Features

● Relatively new (GnuCash 1.8.x)

● Entities:

– Customer: Jobs, Invoices

– Vendor: Jobs, Bills

– Employee: Expenses (no Integrated Payroll yet)

● Tax Tables

● Billing Terms

Page 18: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1818

Tax Tables

● Percent or Fixed

● Tax account

● I only use VAT

Page 19: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

1919

Billing Terms

● Days or Proximo

● Discounts

● Where is?

current + 60

And its ilk?

Page 20: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2020

Customer

● Billing Address

● Terms

● Tax

Page 21: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2121

Invoice

● Manual Invoice ID

● One job, Many invoices

● Terms

Page 22: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2222

Edit Invoice

● Action: Hours, Material, Project

● Discounts, Tax included

● POST when ready!

Page 23: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2323

Invoice List

● Search similar to:

– Vendors

– Jobs

– Customers

– Bills

● Invoice status

Page 24: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2424

Process Payment

● Amount:

Default – invoice sum

● Transfer Account

And for the hard work...

Page 25: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2525

Customer Report (Tada!!)

Page 26: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2626

More Reports

● Cash Flow

● Profit and Loss

● Expenses/Income Bar/Pie charts

● Balance Sheet

● Print Checks (from Register)

● Print invoices

Page 27: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2727

Print Invoice

Page 28: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2828

Not Covered● Investments

– Stock, prices, dividends

– Interest, depreciation

– Currencies

● Tax Forms (US)● Localization:

– Hebrew data

– Hebrew interface

– Local data sources

– Local taxes

Page 29: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

2929

Hacking GnuCash

● Default data storage is in XML (gzipped)● Root is in /usr/share/gnucash:

– User interface is done via Glade

– Logic is in scheme (libguile)

● Example:cd guile-modules/gnucash/reportdiff invoice.scm fancy-invoice.scm

● Anybody?

Page 30: Accounting in the Eyes of a Programmer - Haifa Linux Club · 29 Hacking GnuCash Default data storage is in XML (gzipped) Root is in /usr/share/gnucash: – User interface is done

3030

Thank You

Questions?