Le 04/03/2014 20:07, Mark Hayden (local) a écrit :
Payroll can be complex--perhaps that is why it isn't a core Tryton module (yet) and closed source systems often charge obscene amounts of money for a license to such a module.

here is a preliminary list of the fields i need to add to employee /
party for payroll:
name, birth_date, gender, marital_status, nationality, national_id,
national_id_date, passport, passport_date, social_security_id

how do you think this should be done?

As far as how you want to do it, it largely depends upon if you want a general purpose module or one tailored to your case.
it will be a basic and general module. everyone can add localization extensions for his case.

for example where I live our "national_id" is called a "social insurance number" or SIN and is like a "social security ID" in any case. SINs do not expire and the date a SIN is issued is not tracked (indeed an employer is not allowed to ask that infomation). Thus the "national_id_date" is an invalid field for me and would always be blank. Also, employers where I live are not allowed to collect passport information (unless it is part of sponsoring a foreing worker perhaps but it is not allowed for citizens).
with national_id, i mean identity card.
any way, with localization modules, the titles can be adapted

Thus only 6 of the 10 fields would be used for the vast majority of employees. Considering this, if you intend to design a payroll module that can apply to general cases it would be bad design to design a data model involving a table with these fields as it would be inefficient and awkward to deal with all the blank fields.

with localization modules, it is possible to hide fields / make adapted views, ...
Also be aware that "party" does not mean "person". Parties are very often corporate entities that have no gender and no "birth" date (perhaps a founding date, but that is not relevant to most business activity).

More appropriate would be to extend the "employees" (party->configuration->employees). Employees records link to parties and employees are generally "people" so would have birth dates and so forth.
i considered a person as a party because i think these fields can be used for other applications example: in real estate in tunisia, customers are identified with their id, birthdate, job,... in tunisia, parties can be physical parties (individuals with or without vat) or moral parties (companies)

Better yet instead of just extending employees directly you should have a separate table/model for "employee_payroll". That way if an employee quits or is fired, but is then re-hired later (or circumstances change in other ways) multiple records could exist to maintain history since some of the details can change (marital status, position, salary, full/part time, contract/inside, etc).
with the current design, one employee can have many contracts with the same company. so, it is currently possible to keep some of these tracks. but, i will think deeper about this

the employee_payroll would have to be pretty general to support a general case and so some info would be best stored in a key/value table rather than as distinct fields in a table (like national_id_* or passport fields which in some places are not relevant to payroll).

Because of the nature of payroll it has to be extended based upon region/market the way chart of accounts is (account_de, account_fr, etc). so the base payroll module has to be very general and configurable.

Hope this helps give you an appreciation of what payroll module would involve. It is doable and would be very very welcome by many. Perhaps we should see how openERP does it and emulate what works and change what doesn't...
thank you for your answer
i will make a simple version, and i will follow the demands of the community
you can already install the version published in bitbucket to see what i included in the views. for the moment, there is no workflow, no button, no reports

Reply via email to