Difference between revisions of "Libero Human Resource & Payroll Official Extension"
(→Functional team) |
|||
(13 intermediate revisions by 2 users not shown) | |||
Line 15: | Line 15: | ||
== SourceCode == | == SourceCode == | ||
− | You may access the | + | |
+ | You may access the Mercurial Repository [http://adempiere.hg.sourceforge.net/hgweb/adempiere/extension_libero_hr_and_payroll/file/ Mercurial Repository] | ||
+ | |||
+ | It is licensed under GPLv2.0 copyright of e-Evolution, Mexico. | ||
=== Procedure to test using Eclipse === | === Procedure to test using Eclipse === | ||
Line 25: | Line 28: | ||
=== Install the extension into ADempiere Setup === | === Install the extension into ADempiere Setup === | ||
− | + | 1.- unzip and apply the migration script for Libero HR & Payroll in a new ADempiere Instance based on 360TLS | |
− | + | ||
− | + | http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/migration_script.zip/download | |
− | + | ||
− | + | 2.- Download the binary liberoHR.jar, liberozkHR.jar and patches.jar files | |
− | + | ||
+ | http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/liberozkHR.jar/download | ||
+ | http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/liberoHR.jar/download | ||
+ | http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/patches.jar/download | ||
+ | |||
+ | 3.- Open Terminal command | ||
+ | 4.- Change the ADempiere Home directory | ||
+ | #cd $ADEMPIERE_HOME | ||
+ | 5.- Copy the liberoHR.jar file to packages directory | ||
+ | #cp liberoHR.jar $ADEMPIERE_HOME/packages/liberoHR/lib | ||
+ | 6.- Copy the liberozkHR.jar file to packages directory | ||
+ | #cp liberozkHR.jar $ADEMPIERE_HOME/zkpackages/liberoHR/lib | ||
+ | 7.- Copy the patches.jar file to lib directory | ||
+ | #cp patches.jar $ADEMPIERE_HOME/lib | ||
+ | 8.- Run ADempiere setup | ||
+ | #RUN_setup.sh or RUN_silentsetup.sh | ||
+ | 9.- Login using SuperUser , and execute the System Admin -> General Rules -> Security -> Role Access Update,after you need Login again, now you would see the new option in menu | ||
== Roadmap Document== | == Roadmap Document== | ||
Line 48: | Line 67: | ||
!align="left" style="background:#EFF5FB; color:#0080FF" |Payment Selection | !align="left" style="background:#EFF5FB; color:#0080FF" |Payment Selection | ||
− | !style="background:#EFF5FB; color:#0080FF"| | + | !style="background:#EFF5FB; color:#0080FF"|Implemented |
!style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd |Victor Perez]] | !style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd |Victor Perez]] | ||
!style="background:#EFF5FB; color:#0080FF"|High | !style="background:#EFF5FB; color:#0080FF"|High | ||
!style="background:#EFF5FB; color:#0080FF"|2.0 | !style="background:#EFF5FB; color:#0080FF"|2.0 | ||
− | !style="background:#EFF5FB; color:#0080FF"| | + | !style="background:#EFF5FB; color:#0080FF"|last build |
!style="background:#EFF5FB; color:#0080FF"|... | !style="background:#EFF5FB; color:#0080FF"|... | ||
|- | |- | ||
!align="left" style="background:#EFF5FB; color:#0080FF" |Payment Print/Export | !align="left" style="background:#EFF5FB; color:#0080FF" |Payment Print/Export | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|Implemented |
! style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd |Victor Perez]] | ! style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd |Victor Perez]] | ||
! style="background:#EFF5FB; color:#0080FF"|High | ! style="background:#EFF5FB; color:#0080FF"|High | ||
! style="background:#EFF5FB; color:#0080FF"|2.0 | ! style="background:#EFF5FB; color:#0080FF"|2.0 | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|last build |
! style="background:#EFF5FB; color:#0080FF"|... | ! style="background:#EFF5FB; color:#0080FF"|... | ||
|- | |- | ||
!align="left" style="background:#EFF5FB; color:#0080FF"|Concept to generate AR/AP Invoice | !align="left" style="background:#EFF5FB; color:#0080FF"|Concept to generate AR/AP Invoice | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|Implemented |
! style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd|Victor Perez]] | ! style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd|Victor Perez]] | ||
! style="background:#EFF5FB; color:#0080FF"|High | ! style="background:#EFF5FB; color:#0080FF"|High | ||
! style="background:#EFF5FB; color:#0080FF"|2.0 | ! style="background:#EFF5FB; color:#0080FF"|2.0 | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|last build |
! style="background:#EFF5FB; color:#0080FF"|... | ! style="background:#EFF5FB; color:#0080FF"|... | ||
|- | |- | ||
!align="left" style="background:#EFF5FB; color:#0080FF"|Payroll Engine Based on JSR 223 Scripting APIs | !align="left" style="background:#EFF5FB; color:#0080FF"|Payroll Engine Based on JSR 223 Scripting APIs | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|Implemented |
! style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd|Victor Perez]] | ! style="background:#EFF5FB; color:#0080FF"|[[User:vpj-cd|Victor Perez]] | ||
! style="background:#EFF5FB; color:#0080FF"|High | ! style="background:#EFF5FB; color:#0080FF"|High | ||
! style="background:#EFF5FB; color:#0080FF"|2.0 | ! style="background:#EFF5FB; color:#0080FF"|2.0 | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|last build |
! style="background:#EFF5FB; color:#0080FF"|... | ! style="background:#EFF5FB; color:#0080FF"|... | ||
|- | |- | ||
Line 96: | Line 115: | ||
|- | |- | ||
!align="left" style="background:#EFF5FB; color:#0080FF"|Import Payroll | !align="left" style="background:#EFF5FB; color:#0080FF"|Import Payroll | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|Implemented |
! style="background:#EFF5FB; color:#0080FF"|Contribution from GlobalQSS | ! style="background:#EFF5FB; color:#0080FF"|Contribution from GlobalQSS | ||
! style="background:#EFF5FB; color:#0080FF"|High | ! style="background:#EFF5FB; color:#0080FF"|High | ||
! style="background:#EFF5FB; color:#0080FF"|3.0 | ! style="background:#EFF5FB; color:#0080FF"|3.0 | ||
− | ! style="background:#EFF5FB; color:#0080FF"| | + | ! style="background:#EFF5FB; color:#0080FF"|last build |
! style="background:#EFF5FB; color:#0080FF"|... | ! style="background:#EFF5FB; color:#0080FF"|... | ||
|} | |} | ||
Line 308: | Line 327: | ||
[[Category:Features]] | [[Category:Features]] | ||
[[Category:Documentation]] | [[Category:Documentation]] | ||
+ | == Functional team == | ||
+ | *Volunteers for reviewing: | ||
+ | ** [[User:mar_cal_westf|Mario Calderon]] 01:25, 28 July 2013 (UTC) - Functional Review | ||
+ | === Result of Functional Review === | ||
+ | *General observations. San Salvador, July 28th, 2013, 01:25 GMT. | ||
+ | **Libero HR/Payroll is now part of Adempiere; the main difference is that is is implemented as a package (like Libero MFG), which can or cannot be included in the implementation. | ||
+ | **The module reuses whenever possible existing Adempiere objects. A good example is here the usage of windows, scripts and processes. | ||
+ | **Libero HR/Payroll concentrates more on the Payroll than in the Human Resources part. | ||
+ | ***IMHO this models right now just basic HR needs, though thanks to its flexibility more advanced solutions -like the one from Walking Tree- can be easily added. | ||
+ | **The module is more tool-kit than a ready-to-use module. This means, the implementors have to develop everything. | ||
+ | **The module enables to manage complex payroll scenarios/situations. | ||
+ | **Downside: the module offers all possibilities, but you have to do it by yourself. There is no solution for a specific country. | ||
+ | **I have tested it with the rules for Nicaragua, El Salvador and Colombia which are with some slight differences similar (Financial and Tax officers come to mind similar ideas). I suppose other countries should behave to a great extent similar. If not, the module offers all possibilities to model it as well. | ||
+ | **I refrained from explaining every window, because they are depicted above and their behavior is self-explanatory. | ||
+ | **I have used extensively Scripts, as they don't need to be installed; the only (and great) disadvantage is that it is not possible to debug scripts: you must run it and "post mortem" guess what it might have happened. | ||
+ | **One way to overcoming the debugging shortage of Scripts is developing a process in java, debugging it, and converting into a Script. You must only be careful to translate variables and parameters. This is a matter of taste. | ||
+ | **The movements process do what it is supposed to do. You can simulate in an easy manner the behavior of a payroll. | ||
+ | **Recursive definitions work well, i.e. you can define a Rule which is based in another Rule and it is resolved well. | ||
+ | == Technical team == | ||
+ | *Volunteers for reviewing: | ||
+ | ** [[User:mar_cal_westf|Mario Calderon]] 01:25, 28 July 2013 (UTC) - Technical Review | ||
+ | === Result of Technical Review === | ||
+ | *General observations San Salvador, July 28th, 2013, 01:25 GMT. | ||
+ | **Libero Production and HR is somehow split: some files are in the actual code, others are in packages. | ||
+ | **ADempiere code now | ||
+ | ***All model classes are in the package ''org.eevolution.model'', which is an integral part of ADempiere | ||
+ | ****This applies to Libero Manufacturing and Libero HR | ||
+ | ****Example: ''X_HR_Attribute'', ''I_HR_Attribute'' (Model for Payroll attributes) | ||
+ | **In the Libero branch are the classes defined which implement the business logic | ||
+ | ***No I nor X class | ||
+ | ***Almost all M classes (a couple are in the actual ADempiere branch now) | ||
+ | ****Example: ''MHRConcept'', ''MHRPayroll'', ''MHRMovement'' | ||
+ | ***All processes | ||
+ | ****Example: ''HRCreatePeriods'', ''HRAttributeEmployee'', ''HRCreateConcept'', ''HRPAySelectionCreateScheck'', ''PayrollProcessing'' | ||
+ | **The I and X classes are generated and their nomenclature is OK. | ||
+ | **The same applies to the M classes: they stick to the naming of other ADempiere documents like ''MOrder''. | ||
+ | **Private variables follow the ADempiere convention (m_.... or p_....) | ||
+ | **All class headers I reviewed have JavaDoc comments with Licence documentation. | ||
+ | **Most methods have very short JavaDoc comments. | ||
+ | **Extensive usage of Query and DB classes for accessing the database. | ||
+ | **Model validators are used as otherwise in ADempiere | ||
+ | **Usage of self-explanatory exceptions when important errors encountered | ||
+ | **License headers and ''serialVersionUID'' existent in the "M"classes I reviewed. | ||
+ | **Comments are sparse and could be more explicit, but this is common in ADempiere | ||
+ | **Imports are dedicated | ||
+ | ***example: ''import org.compiere.util.Env;''. This is how it is implemented --> OK | ||
+ | ***example: ''import org.compiere.model.*''. I haven't found any case like this --> OK | ||
+ | **Usage of static final variables when needed | ||
+ | **Code readable: well formatted. | ||
+ | **Some methods are quite long | ||
+ | **I have debugged ''HRCreateConcept'', ''HRPAySelectionCreateScheck'', ''PayrollProcessing'' and other processes; after "a couple" of tries, the functionality can be understood. | ||
+ | **The code is well readable, but the matter is complex, so you have to take patience and time if you want to understand it completely. |
Latest revision as of 06:15, 29 July 2013
This is to introduce Libero's HR Payroll and HR Management modules for integrating into ADempiere ERP Business Suite. The code is preliminarily in version 354 and has its own branch in SVN. The modules reuses the Application Dictionary and Data Models.
Contents
- 1 Introduction
- 2 SourceCode
- 3 Roadmap Document
- 4 Project Lead
- 5 Requirements
- 6 Successful Installed Sites
- 7 Libero Human Resources & Payroll FAQs
- 8 Screenshots
- 8.1 Payroll Menu
- 8.2 Contract
- 8.3 Employee Job
- 8.4 Department
- 8.5 Employee Setup
- 8.6 Employee Data
- 8.7 Employee Account
- 8.8 Employee Attribute
- 8.9 Employee Bank Account
- 8.10 Employee Location
- 8.11 Employee Contact
- 8.12 Payroll Setup
- 8.13 Payroll: Sequence Calculation Concepts
- 8.14 Payroll Year
- 8.15 Payroll Periods
- 8.16 Concept Category
- 8.17 Concept Setup
- 8.18 Types of concept
- 8.19 Content type of concept
- 8.20 Concept Attribute
- 8.21 Concept Type Rule Engine
- 8.22 Attribute Type Rule Engine
- 8.23 Rule Engine: Calculating total income
- 8.24 Rule Engine: Calculating Days
- 8.25 Rule Engine: Calculating withholding tax
- 8.26 List Category
- 8.27 List
- 8.28 List Version
- 8.29 List: Line Detail
- 8.30 Payroll Events
- 8.31 Process Document Payroll
- 8.32 Process
- 8.33 Movement
- 8.34 Functional team
- 8.35 Technical team
Introduction
The Libero Human Resource & Payroll is developed and maintained for [e-Evolution]. Configuring HR module in ADempiere is an easy task. First you have to setup basic data such as HR Contract, HR Employee Job type, and HR Employee. Based on these data, you can start entering the HR Employee information one by one. The screen shots in the following section will explain more about how to configure the ADempiere HR module.
SourceCode
You may access the Mercurial Repository Mercurial Repository
It is licensed under GPLv2.0 copyright of e-Evolution, Mexico.
Procedure to test using Eclipse
- 1.- Checkout the source code from SVN
- 2.- Modify the adempiereLiberoHR.launch and change your -DPropertyFile= and -DADEMPIERE_HOME= parameters
- 3.- Start ADempiere using the adempiereLiberoHR.launch file (you need the adempiereTrunk source code as dependency)
Install the extension into ADempiere Setup
1.- unzip and apply the migration script for Libero HR & Payroll in a new ADempiere Instance based on 360TLS
2.- Download the binary liberoHR.jar, liberozkHR.jar and patches.jar files
http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/liberozkHR.jar/download http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/liberoHR.jar/download http://sourceforge.net/projects/adempiere/files/Adempiere%20Packages/Libero%20Human%20Resource%20and%20Payroll/patches.jar/download
3.- Open Terminal command 4.- Change the ADempiere Home directory
#cd $ADEMPIERE_HOME
5.- Copy the liberoHR.jar file to packages directory
#cp liberoHR.jar $ADEMPIERE_HOME/packages/liberoHR/lib
6.- Copy the liberozkHR.jar file to packages directory
#cp liberozkHR.jar $ADEMPIERE_HOME/zkpackages/liberoHR/lib
7.- Copy the patches.jar file to lib directory
#cp patches.jar $ADEMPIERE_HOME/lib
8.- Run ADempiere setup
#RUN_setup.sh or RUN_silentsetup.sh
9.- Login using SuperUser , and execute the System Admin -> General Rules -> Security -> Role Access Update,after you need Login again, now you would see the new option in menu
Roadmap Document
Functionality / Feature | Status | Developer | Priority | Milestone | Release Date | Summary |
---|---|---|---|---|---|---|
Human Resource & Payroll -> Payroll | ||||||
Payment Selection | Implemented | Victor Perez | High | 2.0 | last build | ... |
Payment Print/Export | Implemented | Victor Perez | High | 2.0 | last build | ... |
Concept to generate AR/AP Invoice | Implemented | Victor Perez | High | 2.0 | last build | ... |
Payroll Engine Based on JSR 223 Scripting APIs | Implemented | Victor Perez | High | 2.0 | last build | ... |
Concept Recurrence | Under development | Victor Perez | High | 2.0 | no defined | ... |
Payroll Movement Report | Under development | Victor Perez | High | 2.0 | no defined | ... |
Import Payroll | Implemented | Contribution from GlobalQSS | High | 3.0 | last build | ... |
Project Lead
- Victor Perez, e-Evolution, Latin America.
Coordinator
Functional Specs
Key Functionality
- Payroll Contacts
- Department
- Job Position
- Employes
- General Data
- Employe Attribute (Numeric,String,Quantity,Date, Logic)
- Employe Account Bank
- Employe Contact
- Employe Location
- Employe Interest Area
- Payroll
- Concept Category
- Concept &
- List Category
- List and Tables
- Period Control
- Payroll Events
- Payroll Rule Engine (Based in JSR 223 Scripting APIs)
- Payroll Document Process
Technical Specs
- Totally integrate with Adempiere
Reference
Developers
Testers
- [6]
- [7]
- Juddm: Testing of UK Data is located here: UK Payroll
Sponsors
e-Evolution, Mexico
Requirements
A good HR & Payroll Management to Adempiere
Successful Installed Sites
- Implemented by Consulting firm e-Evolution
- 1 Customer in Venezuela with 750 employees
- 1 Customer in Ecuador with 600 employees
- 1 Customer in Ecuador with 100 employees
Libero Human Resources & Payroll FAQs
Q: How do you calculate tax from a table like this one?
From Michael Judd of Akuna Ltd
I want to have a monthly gross pay, and then calculate tax using the bands on this table like this:
Gross Pay = 2000
- 0 - 435 * col_1 (0%) = 0
- 436.00 - 620.83 * col_1 (10%) = 18.48
- 620.84 - 2000.00 * col_1 (22%) = 303.42
- Total 321.90
I expect I need to create a Rule as BeanShell (for example) in the System client and allocate this to Payroll Concept Catalog.
How would I define the rule? Use getConcept to retrieve the values from the table lines?
Employee Staturary Deductions
- This example is also suitable for employee's contribution similar to Singapore's CPF and Malaysia's Employee Provident Fund (EPF)
Hi Michael!
Here the answer your question and screen shot:
In the class model HRProcess we have some static methods that you can use in Rule Engine:
1.- 2.- 3.-
Screenshots
Payroll Menu
Contract
Employee Job
Department
Employee Setup
Employee Data
Employee Account
Employee Attribute
Employee Bank Account
Employee Location
Employee Contact
Payroll Setup
Payroll: Sequence Calculation Concepts
Payroll Year
Payroll Periods
Concept Category
Concept Setup
Types of concept
Content type of concept
Concept Attribute
Concept Type Rule Engine
Attribute Type Rule Engine
Rule Engine: Calculating total income
Rule Engine: Calculating Days
Rule Engine: Calculating withholding tax
List Category
List
List Version
List: Line Detail
Payroll Events
Process Document Payroll
Process
Movement
Functional team
- Volunteers for reviewing:
- Mario Calderon 01:25, 28 July 2013 (UTC) - Functional Review
Result of Functional Review
- General observations. San Salvador, July 28th, 2013, 01:25 GMT.
- Libero HR/Payroll is now part of Adempiere; the main difference is that is is implemented as a package (like Libero MFG), which can or cannot be included in the implementation.
- The module reuses whenever possible existing Adempiere objects. A good example is here the usage of windows, scripts and processes.
- Libero HR/Payroll concentrates more on the Payroll than in the Human Resources part.
- IMHO this models right now just basic HR needs, though thanks to its flexibility more advanced solutions -like the one from Walking Tree- can be easily added.
- The module is more tool-kit than a ready-to-use module. This means, the implementors have to develop everything.
- The module enables to manage complex payroll scenarios/situations.
- Downside: the module offers all possibilities, but you have to do it by yourself. There is no solution for a specific country.
- I have tested it with the rules for Nicaragua, El Salvador and Colombia which are with some slight differences similar (Financial and Tax officers come to mind similar ideas). I suppose other countries should behave to a great extent similar. If not, the module offers all possibilities to model it as well.
- I refrained from explaining every window, because they are depicted above and their behavior is self-explanatory.
- I have used extensively Scripts, as they don't need to be installed; the only (and great) disadvantage is that it is not possible to debug scripts: you must run it and "post mortem" guess what it might have happened.
- One way to overcoming the debugging shortage of Scripts is developing a process in java, debugging it, and converting into a Script. You must only be careful to translate variables and parameters. This is a matter of taste.
- The movements process do what it is supposed to do. You can simulate in an easy manner the behavior of a payroll.
- Recursive definitions work well, i.e. you can define a Rule which is based in another Rule and it is resolved well.
Technical team
- Volunteers for reviewing:
- Mario Calderon 01:25, 28 July 2013 (UTC) - Technical Review
Result of Technical Review
- General observations San Salvador, July 28th, 2013, 01:25 GMT.
- Libero Production and HR is somehow split: some files are in the actual code, others are in packages.
- ADempiere code now
- All model classes are in the package org.eevolution.model, which is an integral part of ADempiere
- This applies to Libero Manufacturing and Libero HR
- Example: X_HR_Attribute, I_HR_Attribute (Model for Payroll attributes)
- All model classes are in the package org.eevolution.model, which is an integral part of ADempiere
- In the Libero branch are the classes defined which implement the business logic
- No I nor X class
- Almost all M classes (a couple are in the actual ADempiere branch now)
- Example: MHRConcept, MHRPayroll, MHRMovement
- All processes
- Example: HRCreatePeriods, HRAttributeEmployee, HRCreateConcept, HRPAySelectionCreateScheck, PayrollProcessing
- The I and X classes are generated and their nomenclature is OK.
- The same applies to the M classes: they stick to the naming of other ADempiere documents like MOrder.
- Private variables follow the ADempiere convention (m_.... or p_....)
- All class headers I reviewed have JavaDoc comments with Licence documentation.
- Most methods have very short JavaDoc comments.
- Extensive usage of Query and DB classes for accessing the database.
- Model validators are used as otherwise in ADempiere
- Usage of self-explanatory exceptions when important errors encountered
- License headers and serialVersionUID existent in the "M"classes I reviewed.
- Comments are sparse and could be more explicit, but this is common in ADempiere
- Imports are dedicated
- example: import org.compiere.util.Env;. This is how it is implemented --> OK
- example: import org.compiere.model.*. I haven't found any case like this --> OK
- Usage of static final variables when needed
- Code readable: well formatted.
- Some methods are quite long
- I have debugged HRCreateConcept, HRPAySelectionCreateScheck, PayrollProcessing and other processes; after "a couple" of tries, the functionality can be understood.
- The code is well readable, but the matter is complex, so you have to take patience and time if you want to understand it completely.