Paymaster
Overview
Paymaster is an open source free payroll and HR application designed for small to large organisations. It works in batch process system for paying employees, using journal entries and a series of ledgers for storing the accounts. A customisable backed calculates the results to help meet the diverse requirements of payroll. Complex tax laws, leave, varying pay rates, allowances, superannuation are some of the things the payroll system can handle. Paymaster is written for gnome and uses postgresql for its database backend.
It is licensed under the GPL.
Current status
Paymaster payroll is pre-alpha. Its not ready for deployment and still under heavy development (the version number should be giving that away). In the screen shots section I have indicated where a section of the programme is not complete to give an idea where the payroll is at. You can add and remove employees, configure the software, create batches but the all important thing of calculating tax is not functioning at the moment. This isn't vaporware, I hope to get a working version by the end of the financial year.
The international aspect.
Being able to write good payroll software for an international market is complicated by the varying laws in every country regarding payroll systems, taxation and leave. I am from New Zealand and so unfortunately I only know our taxation system and its requirements. I am continually trying to make certain that code that could work for many countries. Functions for calculating tax and leave are kept in separate libraries with its own API's so that other countries can be easily add if someone knew there own laws.
Help wanted.
I'm writing this software in my free time and paying some other developers to help me. I would really appreciate any help in developing this software, feedback, words of encouragement, or even donations to help cover my costs. Linux has long been without a adequate payroll solution and I want to help do something about that.
Technical aspects.
Paymaster runs on a Postgresql 7.4 sql database. Mysql will be supported at a later date and some work on porting has already been done for this. GTK 2.4 is the widget set used, which is run from within bond. Bond is the the building blocks for the GUI and data awareness in the application. Reporting will run of the papyrus reporting engine which will run in a separate process to the payroll. Timesheet data entry from the web will be added later.
Requirements
Postgresql 7.4
Bond 2.0.4
Bonddb 0.8.1
GTK 2.4
Installation.
Create a database in postgresql by calling
createdb paymaster
Then go to the schema directory in paymaster and run this to create the database.
psql -f paymaster.sql paymaster
You first of all need to get bond installed. Once bond is installed and working go into the bond/src directory and run : ./bondfrontend -c ~/paymaster/src/bondfrontend.conf Change the ~/paymaster/src directory to where you have untar'd paymaster. You need to edit the bondfrontend.conf file to put in your username, password, and hostname name for your postgresql database. You also need to modify the xml file location to the directory paymaster.xml file is located.
The employee screen should come up. You should set up some branches, departments, pay periods, tax codes and company details first before entering employees. There is no mandatory prompting for required fields at the moment (like tax number) so some records may fail to save if you haven't got all the required fields filled in. Bond will display the SQL errors in the console screen.
Screen shots
This is the employees details screen. I'm keeping it simple. I want to keep most of the details about the employee in the HR section. Most of the subforms of this are designed but the code underneath is not written. You can use the navigation keys on the employee to move around records as well as the drop down menu of employee listing. The find employee page gives you another way to locate employees.
These screen shots are all from the HR section. This is still under development.
This is where pay rates changes are entered in. Employees can have more than one pay rate which can be either salary, wage or both. All pay changes are recorded, so you quickly work out who's up for pay review as well as auditing. The code for carrying out payrate changes isn't written yet.
These two screens relate to setting up your company. They work fine.
These screen are for configuring the payroll. Its still under development.
Here is where you create batches. Once a batch is processed it vanishes from the list. Clicking on details will bring up all the employee transactions.
Employee transactions window. Writing of the code that actually calculates the results for the transactions and does end of month processing hasn't been written yet.
Documentation
Pay periods
Pay periods are weekly, fortnightly or monthly payment to employees. Every employee is assigned a pay period which they are paid on. Every time a batch is created for that pay period they get paid whatever hours they are due.
Batches
Batches are run every pay period and are a collection of employee transactions. These transactions create all the journal entries that will occur for the employee. A batch can only be processed once and when the processing occurs it will add these journal entries. Once everyones hours have been entered in you can process the batch.
Employee Transactions
In a batch every employee will have a list of transactions that will be run for them. These transactions act as functions and calculate such things as gross pay, tax, leave etc. They require inputs like quantity and pay period, along with the results of other employee transactions to calculate their results. Standing pay from employee records will be copied as a series of employee transactions if their pay period matches the batches pay period.
You can remove and add employee transactions into their pay, each one will have a bearing on the final pay the employee will receive.
Transactions
Transactions are functions that are linked to the employee transactions. A transaction will have a series of input ledgers and output ledgers. It will also return an amount that will be displayed in the employee transaction list. When the pay is processed, the transaction will generate a series of journal entries based upon these inputs. These journal entries will set the balances of the varies ledgers.
Standing pay
Standing pay is a list of transactions that get added automatically whenever a batch is created. These transactions will be copied into the employee transactions. By changing your tax code, pay rate or leave entitlement your standing pay will get modified automatically. Whats useful about standing pay is you can go in and set up a set of standard transactions that occur every pay period for an employee like allowances or deductions.
Ledgers
Every employee and the company have a series of ledgers. These ledgers are where journal entries end up. If you are familiar with accounting you know the debit and credit principles. Every transaction which occurs will create a series of debit and credits to a number of different ledgers of both the employees and the companies.
Company wages expense ledger will be debited, employees gross wages will be credited.
