Merge lp:~openerp-canada/openerp-canada/6.1-l10n_ca_hr_payroll into lp:openerp-canada/6.1
- 6.1-l10n_ca_hr_payroll
- Merge into 6.1
Status: | Merged |
---|---|
Merged at revision: | 5 |
Proposed branch: | lp:~openerp-canada/openerp-canada/6.1-l10n_ca_hr_payroll |
Merge into: | lp:openerp-canada/6.1 |
Diff against target: |
2837 lines (+2682/-0) 23 files modified
l10n_ca_hr_payroll/AUTHORS.txt (+4/-0) l10n_ca_hr_payroll/__init__.py (+24/-0) l10n_ca_hr_payroll/__openerp__.py (+50/-0) l10n_ca_hr_payroll/l10n_ca_hr_payroll.py (+260/-0) l10n_ca_hr_payroll/l10n_ca_hr_payroll_data.xml (+282/-0) l10n_ca_hr_payroll/l10n_ca_hr_payroll_view.xml (+210/-0) l10n_ca_hr_payroll_account/AUTHORS.txt (+3/-0) l10n_ca_hr_payroll_account/__init__.py (+22/-0) l10n_ca_hr_payroll_account/__openerp__.py (+51/-0) l10n_ca_hr_payroll_account/l10n_ca_hr_payroll_account_data.xml (+31/-0) l10n_ca_on_hr_payroll/__init__.py (+24/-0) l10n_ca_on_hr_payroll/__openerp__.py (+52/-0) l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll.py (+141/-0) l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_data.xml (+597/-0) l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_view.xml (+149/-0) l10n_ca_qc_hr_payroll/__init__.py (+24/-0) l10n_ca_qc_hr_payroll/__openerp__.py (+46/-0) l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll.py (+38/-0) l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_data.xml (+534/-0) l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_view.xml (+18/-0) l10n_ca_qc_hr_payroll_account/__init__.py (+22/-0) l10n_ca_qc_hr_payroll_account/__openerp__.py (+56/-0) l10n_ca_qc_hr_payroll_account/l10n_ca_qc_hr_payroll_account_data.xml (+44/-0) |
To merge this branch: | bzr merge lp:~openerp-canada/openerp-canada/6.1-l10n_ca_hr_payroll |
Related bugs: | |
Related blueprints: |
Payroll rules for Quebec
(Low)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Maxime Chambreuil (http://www.savoirfairelinux.com) | Approve | ||
Review via email: mp+141101@code.launchpad.net |
Commit message
Description of the change
[ADD] Canadian and Quebec basic payroll rules
[ADD] Canadian and Quebec payroll accounting
To post a comment you must log in.
Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added directory 'l10n_ca_account_fiscal_position_rule/static' |
2 | === added directory 'l10n_ca_account_fiscal_position_rule/static/src' |
3 | === added directory 'l10n_ca_account_fiscal_position_rule/static/src/img' |
4 | === added file 'l10n_ca_account_fiscal_position_rule/static/src/img/icon.png' |
5 | Binary files l10n_ca_account_fiscal_position_rule/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_account_fiscal_position_rule/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |
6 | === added directory 'l10n_ca_hr_payroll' |
7 | === added file 'l10n_ca_hr_payroll/AUTHORS.txt' |
8 | --- l10n_ca_hr_payroll/AUTHORS.txt 1970-01-01 00:00:00 +0000 |
9 | +++ l10n_ca_hr_payroll/AUTHORS.txt 2012-12-21 16:45:28 +0000 |
10 | @@ -0,0 +1,4 @@ |
11 | +Amura Consulting |
12 | +Pierre Lamarche <pierre.lamarche@savoirfairelinux.com> |
13 | +Maxime Chambreuil <maxime.chambreuil@savoirfairelinux.com> |
14 | +Savoir-faire Linux <contact@savoirfairelinux.com> |
15 | |
16 | === added file 'l10n_ca_hr_payroll/__init__.py' |
17 | --- l10n_ca_hr_payroll/__init__.py 1970-01-01 00:00:00 +0000 |
18 | +++ l10n_ca_hr_payroll/__init__.py 2012-12-21 16:45:28 +0000 |
19 | @@ -0,0 +1,24 @@ |
20 | +#-*- coding:utf-8 -*- |
21 | +############################################################################## |
22 | +# |
23 | +# Copyright (C) 2012 OpenERP Canada. All Rights Reserved. |
24 | +# |
25 | +# This program is free software: you can redistribute it and/or modify |
26 | +# it under the terms of the GNU Affero General Public License as published |
27 | +# by |
28 | +# the Free Software Foundation, either version 3 of the License, or |
29 | +# (at your option) any later version. |
30 | +# |
31 | +# This program is distributed in the hope that it will be useful, |
32 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
33 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
34 | +# GNU Affero General Public License for more details. |
35 | +# |
36 | +# You should have received a copy of the GNU Affero General Public License |
37 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
38 | +# |
39 | +############################################################################## |
40 | + |
41 | +import l10n_ca_hr_payroll |
42 | + |
43 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
44 | |
45 | === added file 'l10n_ca_hr_payroll/__openerp__.py' |
46 | --- l10n_ca_hr_payroll/__openerp__.py 1970-01-01 00:00:00 +0000 |
47 | +++ l10n_ca_hr_payroll/__openerp__.py 2012-12-21 16:45:28 +0000 |
48 | @@ -0,0 +1,50 @@ |
49 | +#-*- coding:utf-8 -*- |
50 | +############################################################################## |
51 | +# |
52 | +# Copyright (C) 2012 OpenERP Canada. All Rights Reserved. |
53 | +# |
54 | +# This program is free software: you can redistribute it and/or modify |
55 | +# it under the terms of the GNU Affero General Public License as published by |
56 | +# the Free Software Foundation, either version 3 of the License, or |
57 | +# (at your option) any later version. |
58 | +# |
59 | +# This program is distributed in the hope that it will be useful, |
60 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
61 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
62 | +# GNU Affero General Public License for more details. |
63 | +# |
64 | +# You should have received a copy of the GNU Affero General Public License |
65 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
66 | +# |
67 | +############################################################################## |
68 | +{ |
69 | + 'name': 'Canada - Payroll', |
70 | + 'category': 'Localization', |
71 | + 'version': '0.1', |
72 | + 'license': 'AGPL-3', |
73 | + 'category': 'Generic Modules/Human Resources', |
74 | + 'description': """ |
75 | +Canada Payroll Rules |
76 | +============================== |
77 | + * Adds Federal Salary Rules |
78 | + * Adds Federal Salary Structure |
79 | + * Adds Federal Claim Codes, Deductions and Exemptions on the Employee Form |
80 | + * Adds 'Pays Per Year' field on the Contract Form |
81 | + """, |
82 | + 'author':'OpenERP Canada', |
83 | + 'website':'http://launchpad.net/openerp-canada', |
84 | + 'depends': [ |
85 | + 'hr_payroll', |
86 | + 'l10n_ca_toponyms', |
87 | + ], |
88 | + 'data': [ |
89 | + 'l10n_ca_hr_payroll_view.xml', |
90 | + 'l10n_ca_hr_payroll_data.xml', |
91 | + ], |
92 | + 'test': [], |
93 | + 'demo': [], |
94 | + 'installable': True, |
95 | + 'active': False, |
96 | +} |
97 | + |
98 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
99 | |
100 | === added file 'l10n_ca_hr_payroll/l10n_ca_hr_payroll.py' |
101 | --- l10n_ca_hr_payroll/l10n_ca_hr_payroll.py 1970-01-01 00:00:00 +0000 |
102 | +++ l10n_ca_hr_payroll/l10n_ca_hr_payroll.py 2012-12-21 16:45:28 +0000 |
103 | @@ -0,0 +1,260 @@ |
104 | +#-*- coding:utf-8 -*- |
105 | +############################################################################## |
106 | +# |
107 | +# Copyright (C) 2012 Amura Consulting. All Rights Reserved. |
108 | +# |
109 | +# This program is free software: you can redistribute it and/or modify |
110 | +# it under the terms of the GNU Affero General Public License as published |
111 | +# by |
112 | +# the Free Software Foundation, either version 3 of the License, or |
113 | +# (at your option) any later version. |
114 | +# |
115 | +# This program is distributed in the hope that it will be useful, |
116 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
117 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
118 | +# GNU Affero General Public License for more details. |
119 | +# |
120 | +# You should have received a copy of the GNU Affero General Public License |
121 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
122 | +# |
123 | +############################################################################## |
124 | + |
125 | +from osv import fields, osv |
126 | + |
127 | +def get_jurisdiction(self, cursor, user_id, context=None): |
128 | + return ( |
129 | + ('federal', 'Federal'), |
130 | + ('provincial', 'Provincial')) |
131 | + |
132 | +def get_type(self, cursor, user_id, context=None): |
133 | + return ( |
134 | + ('federal', 'Federal'), |
135 | + ('ei', 'Employment Insurance'), |
136 | + ('qc', 'Quebec'), |
137 | + ('rqap', 'RQAP / RRQ'), |
138 | + ('csst', 'CSST')) |
139 | + |
140 | +class hr_payroll_tax_table(osv.osv): |
141 | + ''' |
142 | + Canadian Tax Payroll Table |
143 | + ''' |
144 | + _name = 'hr.payroll.tax.table' |
145 | + _description = 'Canadian Tax Payroll Table' |
146 | + |
147 | + def onchange_year(self, cr, uid, ids, year, prov=False): |
148 | + res = {} |
149 | + res['name'] = 'Tax Table: ' + str(year) |
150 | + if prov: |
151 | + prov_obj = self.pool.get('res.country.state').browse(cr, uid, prov) |
152 | + res['name'] += ' / Provincial - ' + prov_obj.code |
153 | + else: |
154 | + res['name'] += ' / Federal' |
155 | + |
156 | + return {'value': res} |
157 | + |
158 | + _columns = { |
159 | + 'name': fields.char('Description', size=128), |
160 | + 'year': fields.integer('Year', required=True), |
161 | + 'date_from': fields.date('Date From'), |
162 | + 'date_to': fields.date('Date To'), |
163 | + 'jurisdiction': fields.selection(get_jurisdiction, 'Jurisdiction', required=True), |
164 | + 'state_id': fields.many2one('res.country.state', 'Province'), |
165 | + 'type': fields.selection(get_type, 'Type', required=True), |
166 | + 'line_federal_ids': fields.one2many('hr.payroll.tax.table.federal.line', 'table_id', 'Lines'), |
167 | + 'line_ei_ids': fields.one2many('hr.payroll.tax.table.ei.line', 'table_id', 'Lines'), |
168 | + 'line_qc_ids': fields.one2many('hr.payroll.tax.table.qc.line', 'table_id', 'Lines'), |
169 | + 'line_rqap_ids': fields.one2many('hr.payroll.tax.table.rqap.line', 'table_id', 'Lines'), |
170 | + 'line_csst_ids': fields.one2many('hr.payroll.tax.table.csst.line', 'table_id', 'Lines'), |
171 | + } |
172 | + |
173 | + _defaults = { |
174 | + 'jurisdiction': 'federal', |
175 | + 'type': 'federal', |
176 | + } |
177 | + |
178 | +hr_payroll_tax_table() |
179 | + |
180 | +class hr_payroll_tax_table_federal_line(osv.osv): |
181 | + ''' |
182 | + Federal Lines |
183 | + ''' |
184 | + _name = 'hr.payroll.tax.table.federal.line' |
185 | + _description = 'Federal Lines' |
186 | + _columns = { |
187 | + 'table_id': fields.many2one('hr.payroll.tax.table', 'Table'), |
188 | + 'inc_from': fields.float('Income From', digits=(16, 2), required=True), |
189 | + 'inc_to': fields.float('Income To', digits=(16, 2), required=True), |
190 | + 'code0': fields.float('Code 0', digits=(16, 2)), |
191 | + 'code1': fields.float('Code 1', digits=(16, 2)), |
192 | + 'code2': fields.float('Code 2', digits=(16, 2)), |
193 | + 'code3': fields.float('Code 3', digits=(16, 2)), |
194 | + 'code4': fields.float('Code 4', digits=(16, 2)), |
195 | + 'code5': fields.float('Code 5', digits=(16, 2)), |
196 | + 'code6': fields.float('Code 6', digits=(16, 2)), |
197 | + 'code7': fields.float('Code 7', digits=(16, 2)), |
198 | + 'code8': fields.float('Code 8', digits=(16, 2)), |
199 | + 'code9': fields.float('Code 9', digits=(16, 2)), |
200 | + 'code10': fields.float('Code 10', digits=(16, 2)), |
201 | + } |
202 | + |
203 | + _rec_name = 'inc_from' |
204 | + |
205 | +hr_payroll_tax_table_federal_line() |
206 | + |
207 | +class hr_payroll_tax_table_ei_line(osv.osv): |
208 | + ''' |
209 | + Employment Insurance Lines |
210 | + ''' |
211 | + _name = 'hr.payroll.tax.table.ei.line' |
212 | + _description = 'Employment Insurance Lines' |
213 | + _columns = { |
214 | + 'table_id': fields.many2one('hr.payroll.tax.table', 'Table'), |
215 | + 'inc_from': fields.float('Income From', digits=(16, 2), required=True), |
216 | + 'inc_to': fields.float('Income To', digits=(16, 2), required=True), |
217 | + 'rate': fields.float('Rate', digits=(16, 2), required=True), |
218 | + 'max_annual_insurable_earnings': fields.float('Maximum Annual Insurable Earnings', digits=(16, 2), required=True), |
219 | + } |
220 | + |
221 | + _rec_name = 'inc_from' |
222 | + |
223 | +hr_payroll_tax_table_ei_line() |
224 | + |
225 | +class hr_payroll_tax_table_qc_line(osv.osv): |
226 | + ''' |
227 | + Quebec Lines |
228 | + ''' |
229 | + _name = 'hr.payroll.tax.table.qc.line' |
230 | + _description = 'Quebec Lines' |
231 | + _columns = { |
232 | + 'table_id': fields.many2one('hr.payroll.tax.table', 'Table'), |
233 | + 'inc_from': fields.float('Income From', digits=(16, 2), required=True), |
234 | + 'inc_to': fields.float('Income To', digits=(16, 2), required=True), |
235 | + 'code0': fields.float('Code 0', digits=(16, 2)), |
236 | + 'codeA': fields.float('Code A', digits=(16, 2)), |
237 | + 'codeB': fields.float('Code B', digits=(16, 2)), |
238 | + 'codeC': fields.float('Code C', digits=(16, 2)), |
239 | + 'codeD': fields.float('Code D', digits=(16, 2)), |
240 | + 'codeE': fields.float('Code E', digits=(16, 2)), |
241 | + 'codeF': fields.float('Code F', digits=(16, 2)), |
242 | + 'codeG': fields.float('Code G', digits=(16, 2)), |
243 | + 'codeH': fields.float('Code H', digits=(16, 2)), |
244 | + 'codeI': fields.float('Code I', digits=(16, 2)), |
245 | + 'codeJ': fields.float('Code J', digits=(16, 2)), |
246 | + 'codeK': fields.float('Code K', digits=(16, 2)), |
247 | + 'codeL': fields.float('Code L', digits=(16, 2)), |
248 | + 'codeM': fields.float('Code M', digits=(16, 2)), |
249 | + 'codeN': fields.float('Code N', digits=(16, 2)), |
250 | + 'codeY': fields.float('Code Y', digits=(16, 2)), |
251 | + 'codeZ': fields.float('Code Z', digits=(16, 2)), |
252 | + } |
253 | + |
254 | + _rec_name = 'inc_from' |
255 | + |
256 | +hr_payroll_tax_table_qc_line() |
257 | + |
258 | +class hr_payroll_tax_table_rqap_line(osv.osv): |
259 | + ''' |
260 | + RQAP Lines |
261 | + ''' |
262 | + _name = 'hr.payroll.tax.table.rqap.line' |
263 | + _description = 'RQAP Lines' |
264 | + _columns = { |
265 | + 'table_id': fields.many2one('hr.payroll.tax.table', 'Table'), |
266 | + 'inc_from': fields.float('Income From', digits=(16, 2), required=True), |
267 | + 'inc_to': fields.float('Income To', digits=(16, 2), required=True), |
268 | + 'employee_contrib': fields.float('Employee contribution', digits=(16, 2)), |
269 | + 'employer_contrib': fields.float('Employer contribution', digits=(16, 2)), |
270 | + 'max_annual_insurable_earnings': fields.float('Maximum Annual Insurable Earnings', digits=(16, 2)), |
271 | + } |
272 | + |
273 | +hr_payroll_tax_table_rqap_line() |
274 | + |
275 | +class hr_payroll_tax_table_csst_line(osv.osv): |
276 | + ''' |
277 | + CSST Lines |
278 | + ''' |
279 | + _name = 'hr.payroll.tax.table.csst.line' |
280 | + _description = 'CSST Lines' |
281 | + _columns = { |
282 | + 'name': fields.char('Name', size=256, required=True), |
283 | + 'table_id': fields.many2one('hr.payroll.tax.table', 'Table'), |
284 | + } |
285 | + |
286 | +hr_payroll_tax_table_csst_line() |
287 | + |
288 | +class hr_employee(osv.osv): |
289 | + _name = 'hr.employee' |
290 | + _inherit = 'hr.employee' |
291 | + |
292 | + _columns = { |
293 | + 'ei_exempt': fields.boolean('EI Exempt'), |
294 | + 'td1f': fields.selection([('code1',1),('code2',2),('code3',3),('code4',4),('code5',5),('code6',6),('code7',7),('code8',8),('code9',9),('code10',10),('code0',0)], 'Federal Claim Code', required=True), |
295 | + 'td1p': fields.selection([('codeA','A'),('codeB','B'),('codeC','C'),('codeD','D'),('codeE','E'),('codeF','F'),('codeG','G'),('codeH','H'),('codeI','I'),('codeJ','J'),('codeK','K'),('codeL','L'),('codeM','M'),('codeN','N'),('codeY','Y'),('codeZ','Z'),('code0',0)], 'Provincial Claim Code', required=True), |
296 | + 'cpp_exempt': fields.boolean('CPP/QPP Exempt'), |
297 | + 'qpip_exempt': fields.boolean('QPIP Exempt'), |
298 | + 'cpp_ytd_adj': fields.float('CPP/QPP YTD Adjustment', help="Amount to adjust CPP/QPP for calculations. Used if employee has contributed elsewhere and will be factored in when calculating maximum CPP payment"), |
299 | + 'ei_ytd_adj': fields.float('EI YTD Adjustment', help="Amount to adjust EI for calculations. Used if employee has contributed elsewhere and will be factored in when calculating maximum EI payment"), |
300 | + 'vac_pay': fields.float('Vacation Pay %', digits=(16,2)), |
301 | + 'f1': fields.float('Childcare/Alimony (F1)', digits=(16,2), help="Annual deductions such as child care expenses and support payments, etc., authorized by a tax services office or tax centre"), |
302 | + 'f2': fields.float('Alimony/Maint Garnish (F2)', digits=(16,2), help="Alimony or maintenance payments required by a legal document to be payroll-deducted authorized by a tax services office or tax centre"), |
303 | + 'hd': fields.float('Prescribed Zone (HD)', digits=(16,2), help="Annual deduction for living in a prescribed zone as indicated on Form TD1"), |
304 | + 'lcf': fields.float('Fed Labour sponsored funds (LCF)', digits=(16,2), help="Federal labour-sponsored funds tax credit"), |
305 | + 'lcp': fields.float('Prov Labour sponsored funds (LCP)', digits=(16,2), help="Provincial or territorial labour-sponsored funds tax credit"), |
306 | + 'f': fields.float('RSP/RPP/RCA (F)', digits=(16,2), help="Payroll deductions for employee contributions to a registered pension plan (RPP), a registered retirement savings plan (RRSP), or a retirement compensation arrangement (RCA)"), |
307 | + 'l': fields.float('Extra Tax Deductions (L)', digits=(16,2), help="Extra tax deductions requested for the pay period."), |
308 | + 'k3': fields.float('Federal Medical (K3)', digits=(16,2), help="Other federal tax credits, such as medical expenses and charitable donations authorized by a tax services office or tax centre"), |
309 | + 'u1': fields.float('Union Dues (U1)', digits=(16,2), help="Union dues"), |
310 | + 'y': fields.float('MB/ON Extra Tax Reduction(Y)', digits=(16,2), help="Extra provincial or territorial tax reduction based on applicable amounts reported on the provincial or territorial Form TD1"), |
311 | + 'td1': fields.float('Personal Tax Credits Return (TD1)', digits=(16,2), required=True, help="Personal Tax Credits Return"), |
312 | + 'eeins': fields.float('Insurance - Employee Contribution (EeINS)', digits=(16,2), required=True), |
313 | + 'erins': fields.float('Insurance - Employer Contribution (ErINS)', digits=(16,2), required=True), |
314 | + } |
315 | + |
316 | + _defaults = { |
317 | + 'td1f': 'code1', |
318 | + 'td1p': 'codeA', |
319 | + 'td1': 10822.00, |
320 | + 'eeins': 0.00, |
321 | + 'erins': 0.00, |
322 | + } |
323 | + |
324 | +hr_employee() |
325 | + |
326 | +class hr_contract(osv.osv): |
327 | + _inherit = 'hr.contract' |
328 | + |
329 | + def _get_pays_per_year(self, cr, uid, ids, names, arg, context=None): |
330 | + """ |
331 | + @param ids: ID of contract |
332 | + @return: The number of pays per year |
333 | + """ |
334 | + res = {} |
335 | + #FIXME: Should likely pull these values from somewhere else, depending on whether a 52 or 53 year week is used |
336 | + schedule_pay = { |
337 | + 'weekly': 52, |
338 | + 'bi-weekly': 26, |
339 | + 'monthly': 12, |
340 | + 'bi-monthly': 6, |
341 | + 'quarterly': 4, |
342 | + 'semi-annually': 2, |
343 | + 'annually': 1, |
344 | + } |
345 | + for contract in self.browse(cr, uid, ids, context): |
346 | + if contract.schedule_pay and schedule_pay.get(contract.schedule_pay, False): |
347 | + res[contract.id] = schedule_pay[contract.schedule_pay] |
348 | + |
349 | + return res |
350 | + |
351 | + _columns = { |
352 | + 'pays_per_year': fields.function(_get_pays_per_year, method=True, string='Pays Per Year', type='float', readonly=True), |
353 | + 'weeks_of_vacation': fields.integer('Number of weeks of vacation', required=True), |
354 | + } |
355 | + |
356 | + _defaults = { |
357 | + 'weeks_of_vacation': 2, |
358 | + } |
359 | + |
360 | +hr_contract() |
361 | + |
362 | + |
363 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
364 | |
365 | === added file 'l10n_ca_hr_payroll/l10n_ca_hr_payroll_data.xml' |
366 | --- l10n_ca_hr_payroll/l10n_ca_hr_payroll_data.xml 1970-01-01 00:00:00 +0000 |
367 | +++ l10n_ca_hr_payroll/l10n_ca_hr_payroll_data.xml 2012-12-21 16:45:28 +0000 |
368 | @@ -0,0 +1,282 @@ |
369 | +<?xml version="1.0" encoding="utf-8"?> |
370 | +<openerp> |
371 | + <data noupdate="1"> |
372 | + |
373 | + <!-- Salary Rules Category --> |
374 | + |
375 | + <record id="I" model="hr.salary.rule.category"> |
376 | + <field name="name">Taxable Income</field> |
377 | + <field name="code">I</field> |
378 | + </record> |
379 | + |
380 | + <record id="CALC" model="hr.salary.rule.category"> |
381 | + <field name="code">CALC</field> |
382 | + <field name="name">Standard Calculation</field> |
383 | + </record> |
384 | + |
385 | + <record id="FCALC" model="hr.salary.rule.category"> |
386 | + <field name="code">FCALC</field> |
387 | + <field name="name">Federal Calculation</field> |
388 | + </record> |
389 | + |
390 | + <record id="PCALC" model="hr.salary.rule.category"> |
391 | + <field name="code">PCALC</field> |
392 | + <field name="name">Provincial Calculation</field> |
393 | + </record> |
394 | + |
395 | + <record id="EMP" model="hr.salary.rule.category"> |
396 | + <field name="code">EMP</field> |
397 | + <field name="name">Employer Contribution</field> |
398 | + </record> |
399 | + |
400 | + <record id="SDED" model="hr.salary.rule.category"> |
401 | + <field name="code">SDED</field> |
402 | + <field name="name">Source Deduction</field> |
403 | + <field name="note">Used for after tax deductions at source</field> |
404 | + </record> |
405 | + |
406 | + <record id="VAC" model="hr.salary.rule.category"> |
407 | + <field name="code">VAC</field> |
408 | + <field name="name">Vacation Calculation</field> |
409 | + </record> |
410 | + |
411 | + <!-- Update salary rules of hr_payroll --> |
412 | + |
413 | + <record id="hr_payroll.hr_rule_basic" model="hr.salary.rule"> |
414 | + <field name="appears_on_payslip" eval="0"/> |
415 | + </record> |
416 | + |
417 | + <record id="hr_payroll.hr_rule_taxable" model="hr.salary.rule"> |
418 | + <field name="appears_on_payslip" eval="0"/> |
419 | + </record> |
420 | + |
421 | + <record id="hr_payroll.hr_rule_net" model="hr.salary.rule"> |
422 | + <field name="amount_python_compute">result = BASICP + categories.ALW - categories.DED - categories.SDED</field> |
423 | + </record> |
424 | + |
425 | + <!-- Common rules to all canadian salary structures --> |
426 | + |
427 | + <record id="rule_ca_p" model="hr.salary.rule"> |
428 | + <field name="name">Pays Per Year</field> |
429 | + <field name="sequence" eval="1"/> |
430 | + <field name="code">P</field> |
431 | + <field name="appears_on_payslip" eval="0"/> |
432 | + <field name="active" eval="1"/> |
433 | + <field name="category_id" ref="CALC"/> |
434 | + <field name="condition_select">none</field> |
435 | + <field name="amount_select">code</field> |
436 | + <field name="amount_python_compute">result = contract.pays_per_year or 0</field> |
437 | + <field name="note">Pays per year from the contract form</field> |
438 | + </record> |
439 | + |
440 | + <record id="rule_ca_pocc" model="hr.salary.rule"> |
441 | + <field name="name">Payslip Counter (POCC)</field> |
442 | + <field name="sequence" eval="1"/> |
443 | + <field name="code">POCC</field> |
444 | + <field name="appears_on_payslip" eval="0"/> |
445 | + <field name="active" eval="1"/> |
446 | + <field name="category_id" ref="CALC"/> |
447 | + <field name="condition_select">none</field> |
448 | + <field name="amount_select">fix</field> |
449 | + <field name="quantity">1.0</field> |
450 | + <field name="amount_fix">1.0</field> |
451 | + <field name="note">Sloppy way of counting payslips for use in PR calc</field> |
452 | + </record> |
453 | + |
454 | + <record id="rule_ca_basic" model="hr.salary.rule"> |
455 | + <field name="name">Basic per pay (BASICP)</field> |
456 | + <field name="sequence" eval="10"/> |
457 | + <field name="code">BASICP</field> |
458 | + <field name="appears_on_payslip" eval="1"/> |
459 | + <field name="active" eval="1"/> |
460 | + <field name="category_id" ref="CALC"/> |
461 | + <field name="condition_select">none</field> |
462 | + <field name="amount_select">code</field> |
463 | + <field name="amount_python_compute">result = BASIC / P</field> |
464 | + </record> |
465 | + |
466 | + <record id="rule_ca_gross" model="hr.salary.rule"> |
467 | + <field name="name">Gross per pay (GROSSP)</field> |
468 | + <field name="sequence" eval="101"/> |
469 | + <field name="code">GROSSP</field> |
470 | + <field name="appears_on_payslip" eval="1"/> |
471 | + <field name="active" eval="1"/> |
472 | + <field name="category_id" ref="CALC"/> |
473 | + <field name="condition_select">none</field> |
474 | + <field name="amount_select">code</field> |
475 | + <field name="amount_python_compute">result = GROSS / P</field> |
476 | + </record> |
477 | + |
478 | + <!-- Employment Insurance - 140 --> |
479 | + |
480 | + <record id="rule_ca_ei_maxie" model="hr.salary.rule"> |
481 | + <field name="name">EI - Maximum Insurable Earnings (EIMAXIE)</field> |
482 | + <field name="sequence" eval="140"/> |
483 | + <field name="code">EIMAXIE</field> |
484 | + <field name="appears_on_payslip" eval="0"/> |
485 | + <field name="active" eval="1"/> |
486 | + <field name="category_id" ref="FCALC"/> |
487 | + <field name="condition_select">none</field> |
488 | + <field name="amount_select">code</field> |
489 | + <field name="amount_python_compute">result = min(GROSS,45900)</field> |
490 | + </record> |
491 | + |
492 | + <!-- Employment Insurance - Employer - 145 --> |
493 | + |
494 | + <record id="rule_ca_ei_er_c" model="hr.salary.rule"> |
495 | + <field name="name">EI - Employer - Contribution (EIERC)</field> |
496 | + <field name="sequence" eval="145"/> |
497 | + <field name="code">EIERC</field> |
498 | + <field name="category_id" ref="EMP"/> |
499 | + <field name="appears_on_payslip" eval="0"/> |
500 | + <field name="active" eval="1"/> |
501 | + <field name="condition_select">python</field> |
502 | + <field name="condition_python">result = not employee.ei_exempt</field> |
503 | + <field name="amount_select">percentage</field> |
504 | + <field name="amount_percentage_base">EIEEC</field> |
505 | + <field name="quantity">1.0</field> |
506 | + <field name="amount_percentage">140.0</field> |
507 | + </record> |
508 | + |
509 | + <record id="rule_ca_ei_er_pytdc" model="hr.salary.rule"> |
510 | + <field name="name">EI - Employer - Previous Year To Date Contribution (EIERPYTDC)</field> |
511 | + <field name="sequence" eval="145"/> |
512 | + <field name="code">EIERPYTDC</field> |
513 | + <field name="category_id" ref="l10n_ca_hr_payroll.FCALC"/> |
514 | + <field name="appears_on_payslip" eval="0"/> |
515 | + <field name="active" eval="1"/> |
516 | + <field name="condition_select">none</field> |
517 | + <field name="amount_select">code</field> |
518 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
519 | +date_to = payslip.date_to |
520 | +result = payslip.sum('EIERYTDC',date_from,date_to) |
521 | + </field> |
522 | + </record> |
523 | + |
524 | + <record id="rule_ca_ei_er_ytdc" model="hr.salary.rule"> |
525 | + <field name="name">EI - Employer - Year To Date Contribution (EIERYTDC)</field> |
526 | + <field name="sequence" eval="146"/> |
527 | + <field name="code">EIERYTDC</field> |
528 | + <field name="category_id" ref="l10n_ca_hr_payroll.FCALC"/> |
529 | + <field name="appears_on_payslip" eval="0"/> |
530 | + <field name="active" eval="1"/> |
531 | + <field name="condition_select">none</field> |
532 | + <field name="amount_select">code</field> |
533 | + <field name="amount_python_compute">result = EIERPYTDC + EIERC</field> |
534 | + </record> |
535 | + |
536 | + <!-- Federal Income Tax - 170 --> |
537 | + |
538 | + <record id="rule_ca_fit_rate" model="hr.salary.rule"> |
539 | + <field name="name">FIT - Rate 16.5% (FITRATE)</field> |
540 | + <field name="sequence" eval="170"/> |
541 | + <field name="code">FITRATE</field> |
542 | + <field name="appears_on_payslip" eval="0"/> |
543 | + <field name="active" eval="1"/> |
544 | + <field name="category_id" ref="FCALC"/> |
545 | + <field name="condition_select">none</field> |
546 | + <field name="amount_select">fix</field> |
547 | + <field name="quantity">1.0</field> |
548 | + <field name="amount_fix">16.5</field> |
549 | + </record> |
550 | + |
551 | + <record id="rule_ca_fit_ti" model="hr.salary.rule"> |
552 | + <field name="name">FIT - Taxable Income (FITTI)</field> |
553 | + <field name="sequence" eval="171"/> |
554 | + <field name="code">FITTI</field> |
555 | + <field name="appears_on_payslip" eval="0"/> |
556 | + <field name="active" eval="1"/> |
557 | + <field name="category_id" ref="FCALC"/> |
558 | + <field name="condition_select">none</field> |
559 | + <field name="amount_select">code</field> |
560 | + <field name="amount_python_compute">result = GROSS - (employee.td1 + QPIPEEMAXC + QPPEEMAXC + EIEEMAXC) * (1 + FITRATE * 0.01)</field> |
561 | + </record> |
562 | + |
563 | + <record id="rule_ca_fit" model="hr.salary.rule"> |
564 | + <field name="name">FIT - Federal Income Tax (FIT)</field> |
565 | + <field name="sequence" eval="172"/> |
566 | + <field name="code">FIT</field> |
567 | + <field name="appears_on_payslip" eval="1"/> |
568 | + <field name="active" eval="1"/> |
569 | + <field name="category_id" ref="hr_payroll.DED"/> |
570 | + <field name="condition_select">none</field> |
571 | + <field name="amount_select">code</field> |
572 | + <field name="amount_python_compute">if FITTI >= 132407: |
573 | + res = (FITTI - 132407) * 0.29 + (132407-85415) * 0.26 + (85414-42708) * 0.22 + 42707 * 0.15 |
574 | +if FITTI >= 85415 and FITTI < 132407: |
575 | + res = (FITTI - 85415) * 0.26 + (85414-42708) * 0.22 + 42707 * 0.15 |
576 | +if FITTI >= 42708 and FITTI < 85414: |
577 | + res = (FITTI - 42708) * 0.22 + 42707 * 0.15 |
578 | +if FITTI < 42707: |
579 | + res = FITTI * 0.15 |
580 | +result = res / P |
581 | + </field> |
582 | + </record> |
583 | + |
584 | + <record id="rule_ca_fit_ytd" model="hr.salary.rule"> |
585 | + <field name="name">FIT - Year To Date (FITYTD)</field> |
586 | + <field name="sequence" eval="173"/> |
587 | + <field name="code">FITYTD</field> |
588 | + <field name="category_id" ref="FCALC"/> |
589 | + <field name="appears_on_payslip" eval="1"/> |
590 | + <field name="active" eval="1"/> |
591 | + <field name="condition_select">none</field> |
592 | + <field name="amount_select">code</field> |
593 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
594 | +date_to = payslip.date_to |
595 | +result = payslip.sum('FITYTD',date_from,date_to) + FIT |
596 | + </field> |
597 | + </record> |
598 | + |
599 | + <!-- Vacation - 210 --> |
600 | + |
601 | + <record id="rule_ca_vac" model="hr.salary.rule"> |
602 | + <field name="name">Vacation (VAC)</field> |
603 | + <field name="sequence" eval="210"/> |
604 | + <field name="code">VAC</field> |
605 | + <field name="category_id" ref="VAC"/> |
606 | + <field name="condition_select">none</field> |
607 | + <field name="amount_select">code</field> |
608 | + <field name="amount_python_compute">result = GROSSP * contract.weeks_of_vacation * 0.02</field> |
609 | + </record> |
610 | + |
611 | + <record id="rule_ca_vac_ytd" model="hr.salary.rule"> |
612 | + <field name="name">Vacation - Year To Date (VACYTD)</field> |
613 | + <field name="sequence" eval="211"/> |
614 | + <field name="code">VACYTD</field> |
615 | + <field name="category_id" ref="VAC"/> |
616 | + <field name="appears_on_payslip" eval="1"/> |
617 | + <field name="active" eval="1"/> |
618 | + <field name="condition_select">none</field> |
619 | + <field name="amount_select">code</field> |
620 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
621 | +date_to = payslip.date_to |
622 | +result = payslip.sum('VACYTD',date_from,date_to) + VAC |
623 | + </field> |
624 | + </record> |
625 | + |
626 | + <!-- Base for Canadian Salary Structure --> |
627 | + |
628 | + <record id="hr_structure_ca_base" model="hr.payroll.structure"> |
629 | + <field name="code">CA</field> |
630 | + <field name="name">Canadian Base</field> |
631 | + <field eval="[(6, 0, [ |
632 | + ref('rule_ca_p'), |
633 | + ref('rule_ca_pocc'), |
634 | + ref('rule_ca_basic'), |
635 | + ref('rule_ca_gross'), |
636 | + ref('rule_ca_ei_maxie'), |
637 | + ref('rule_ca_ei_er_c'), |
638 | + ref('rule_ca_ei_er_pytdc'), |
639 | + ref('rule_ca_ei_er_ytdc'), |
640 | + ref('rule_ca_fit_rate'), |
641 | + ref('rule_ca_fit_ti'), |
642 | + ref('rule_ca_fit'), |
643 | + ref('rule_ca_fit_ytd'), |
644 | + ref('rule_ca_vac'), |
645 | + ref('rule_ca_vac_ytd') |
646 | + ])]" name="rule_ids"/> |
647 | + </record> |
648 | + |
649 | + </data> |
650 | +</openerp> |
651 | |
652 | === added file 'l10n_ca_hr_payroll/l10n_ca_hr_payroll_view.xml' |
653 | --- l10n_ca_hr_payroll/l10n_ca_hr_payroll_view.xml 1970-01-01 00:00:00 +0000 |
654 | +++ l10n_ca_hr_payroll/l10n_ca_hr_payroll_view.xml 2012-12-21 16:45:28 +0000 |
655 | @@ -0,0 +1,210 @@ |
656 | +<?xml version="1.0" encoding="utf-8"?> |
657 | +<openerp> |
658 | + <data> |
659 | + |
660 | + <record id="hr_payroll_tax_table_form" model="ir.ui.view"> |
661 | + <field name="name">hr.payroll.tax.table.form</field> |
662 | + <field name="model">hr.payroll.tax.table</field> |
663 | + <field name="type">form</field> |
664 | + <field name="arch" type="xml"> |
665 | + <form string="Canadian Tax Table"> |
666 | + <field name="name" select="1"/> |
667 | + <field name="year" select="1" on_change="onchange_year(year,state_id)"/> |
668 | + <field name="date_from"/> |
669 | + <field name="date_to"/> |
670 | + <field name="jurisdiction"/> |
671 | + <field name="state_id" |
672 | + attrs="{'invisible': [('jurisdiction','!=','provincial')], 'required': [('jurisdiction','=','provincial')]}" |
673 | + on_change="onchange_year(year,state_id)" |
674 | + domain="[('country_id.code', '=', 'CA')]"/> |
675 | + <field name="type"/> |
676 | + <newline/> |
677 | + <separator colspan="4"/> |
678 | + <newline/> |
679 | + <field name="line_federal_ids" nolabel="1" colspan="4" widget="one2many_list" |
680 | + attrs="{'invisible': [('type','!=','federal')]}"> |
681 | + <tree string="Federal Lines" editable="top"> |
682 | + <field name="inc_from"/> |
683 | + <field name="inc_to"/> |
684 | + <field name="code0"/> |
685 | + <field name="code1"/> |
686 | + <field name="code2"/> |
687 | + <field name="code3"/> |
688 | + <field name="code4"/> |
689 | + <field name="code5"/> |
690 | + <field name="code6"/> |
691 | + <field name="code7"/> |
692 | + <field name="code8"/> |
693 | + <field name="code9"/> |
694 | + <field name="code10"/> |
695 | + </tree> |
696 | + </field> |
697 | + <field name="line_ei_ids" nolabel="1" colspan="4" widget="one2many_list" |
698 | + attrs="{'invisible': [('type','!=','ei')]}"> |
699 | + <tree string="Employment Insurance Lines" editable="top"> |
700 | + <field name="inc_from"/> |
701 | + <field name="inc_to"/> |
702 | + <field name="rate"/> |
703 | + <field name="max_annual_insurable_earnings"/> |
704 | + </tree> |
705 | + </field> |
706 | + <field name="line_qc_ids" nolabel="1" colspan="4" widget="one2many_list" |
707 | + attrs="{'invisible': [('type','!=','qc')]}"> |
708 | + <tree string="Quebec Lines" editable="top"> |
709 | + <field name="inc_from"/> |
710 | + <field name="inc_to"/> |
711 | + <field name="code0"/> |
712 | + <field name="codeA"/> |
713 | + <field name="codeB"/> |
714 | + <field name="codeC"/> |
715 | + <field name="codeD"/> |
716 | + <field name="codeE"/> |
717 | + <field name="codeF"/> |
718 | + <field name="codeG"/> |
719 | + <field name="codeH"/> |
720 | + <field name="codeI"/> |
721 | + <field name="codeJ"/> |
722 | + <field name="codeK"/> |
723 | + <field name="codeL"/> |
724 | + <field name="codeM"/> |
725 | + <field name="codeN"/> |
726 | + <field name="codeY"/> |
727 | + <field name="codeZ"/> |
728 | + </tree> |
729 | + </field> |
730 | + <field name="line_rqap_ids" nolabel="1" colspan="4" widget="one2many_list" |
731 | + attrs="{'invisible': [('type','!=','rqap')]}"> |
732 | + <tree string="RQAP / RRQ Lines" editable="top"> |
733 | + <field name="inc_from"/> |
734 | + <field name="inc_to"/> |
735 | + <field name="employee_contrib"/> |
736 | + <field name="employer_contrib"/> |
737 | + <field name="max_annual_insurable_earnings"/> |
738 | + </tree> |
739 | + </field> |
740 | + <field name="line_csst_ids" nolabel="1" colspan="4" widget="one2many_list" |
741 | + attrs="{'invisible': [('type','!=','csst')]}"> |
742 | + <tree string="CSST Lines" editable="top"> |
743 | + <field name="name"/> |
744 | + </tree> |
745 | + </field> |
746 | + </form> |
747 | + </field> |
748 | + </record> |
749 | + |
750 | + <record id="hr_payroll_tax_table_search" model="ir.ui.view"> |
751 | + <field name="name">hr.payroll.tax.table.search</field> |
752 | + <field name="model">hr.payroll.tax.table</field> |
753 | + <field name="type">search</field> |
754 | + <field name="arch" type="xml"> |
755 | + <search string="Canadian Tax Table"> |
756 | + <field name="name"/> |
757 | + <field name="year"/> |
758 | + <field name="jurisdiction"/> |
759 | + <field name="state_id"/> |
760 | + <field name="type"/> |
761 | + </search> |
762 | + </field> |
763 | + </record> |
764 | + |
765 | + <record id="hr_payroll_tax_table_tree" model="ir.ui.view"> |
766 | + <field name="name">hr.payroll.tax.table.tree</field> |
767 | + <field name="model">hr.payroll.tax.table</field> |
768 | + <field name="type">tree</field> |
769 | + <field name="arch" type="xml"> |
770 | + <tree string="Canadian Tax Table"> |
771 | + <field name="name"/> |
772 | + <field name="year"/> |
773 | + <field name="jurisdiction"/> |
774 | + <field name="state_id"/> |
775 | + <field name="type"/> |
776 | + </tree> |
777 | + </field> |
778 | + </record> |
779 | + |
780 | + <record id="action_hr_payroll_tax_table_tree" model="ir.actions.act_window"> |
781 | + <field name="name">Canadian Tax Table</field> |
782 | + <field name="res_model">hr.payroll.tax.table</field> |
783 | + <field name="view_type">form</field> |
784 | + <field name="view_mode">tree,form</field> |
785 | + <field name="view_id" ref="hr_payroll_tax_table_tree"/> |
786 | + <field name="search_view_id" ref="hr_payroll_tax_table_search"/> |
787 | + </record> |
788 | + |
789 | + <menuitem id="menu_hr_payroll_tax_table_tree" action="action_hr_payroll_tax_table_tree" parent="hr_payroll.payroll_configure"/> |
790 | + |
791 | + <record id="hr_employee_view_form_inherit" model="ir.ui.view"> |
792 | + <field name="name">hr.employee.view.form.inherit</field> |
793 | + <field name="model">hr.employee</field> |
794 | + <field name="type">form</field> |
795 | + <field name="inherit_id" ref="hr.view_employee_form"/> |
796 | + <field name="arch" type="xml"> |
797 | + <notebook position="inside"> |
798 | + <page string="Canadian Payroll"> |
799 | + <group colspan="1" col="2"> |
800 | + <separator string="Claim Codes" colspan="2"/> |
801 | + <field name="td1f" colspan="1"/> |
802 | + <field name="td1p" colspan="1"/> |
803 | + </group> |
804 | + <group colspan="3" col="2"> |
805 | + <separator string="Exemptions" colspan="2"/> |
806 | + <group colspan="1" col="2"> |
807 | + <field name="ei_ytd_adj"/> |
808 | + <field name="cpp_ytd_adj"/> |
809 | + </group> |
810 | + <group colspan="1" col="2"> |
811 | + <field name="ei_exempt"/> |
812 | + <field name="cpp_exempt"/> |
813 | + <field name="qpip_exempt"/> |
814 | + </group> |
815 | + </group> |
816 | + <separator string="Deductions" colspan="4"/> |
817 | + <field name="f1"/> |
818 | + <field name="f2"/> |
819 | + <field name="hd"/> |
820 | + <field name="lcf"/> |
821 | + <field name="lcp"/> |
822 | + <field name="f"/> |
823 | + <field name="k3"/> |
824 | + <field name="u1"/> |
825 | + <field name="y"/> |
826 | + <field name="l"/> |
827 | + <field name="td1"/> |
828 | + <field name="eeins"/> |
829 | + <field name="erins"/> |
830 | + </page> |
831 | + </notebook> |
832 | + </field> |
833 | + </record> |
834 | + |
835 | + <!-- Contract View --> |
836 | + <record id="hr_contract_form_inherit" model="ir.ui.view"> |
837 | + <field name="name">hr.contract.view.form.inherit</field> |
838 | + <field name="model">hr.contract</field> |
839 | + <field name="type">form</field> |
840 | + <field name="inherit_id" ref="hr_contract.hr_contract_view_form"/> |
841 | + <field name="arch" type="xml"> |
842 | + <xpath expr="/form/notebook/page/group/field[@name='working_hours']" position="after"> |
843 | + <field name="pays_per_year"/> |
844 | + <field name="weeks_of_vacation"/> |
845 | + </xpath> |
846 | + </field> |
847 | + </record> |
848 | + |
849 | + <!-- End Contract View--> |
850 | + |
851 | + <!-- Salary Rules - unhide the sequence, not sure why it's invisible --> |
852 | + <record id="hr_salary_rule_list_inherit" model="ir.ui.view"> |
853 | + <field name="name">hr.salary.rule.list.inherit</field> |
854 | + <field name="model">hr.salary.rule</field> |
855 | + <field name="type">tree</field> |
856 | + <field name="inherit_id" ref="hr_payroll.hr_salary_rule_list"/> |
857 | + <field name="arch" type="xml"> |
858 | + <xpath expr="//field[@name='sequence']" position="replace"> |
859 | + <field name="sequence" groups="base.group_extended"/> |
860 | + </xpath> |
861 | + </field> |
862 | + </record> |
863 | + |
864 | + </data> |
865 | +</openerp> |
866 | |
867 | === added directory 'l10n_ca_hr_payroll/static' |
868 | === added directory 'l10n_ca_hr_payroll/static/src' |
869 | === added directory 'l10n_ca_hr_payroll/static/src/img' |
870 | === added file 'l10n_ca_hr_payroll/static/src/img/icon.png' |
871 | Binary files l10n_ca_hr_payroll/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_hr_payroll/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |
872 | === added directory 'l10n_ca_hr_payroll_account' |
873 | === added file 'l10n_ca_hr_payroll_account/AUTHORS.txt' |
874 | --- l10n_ca_hr_payroll_account/AUTHORS.txt 1970-01-01 00:00:00 +0000 |
875 | +++ l10n_ca_hr_payroll_account/AUTHORS.txt 2012-12-21 16:45:28 +0000 |
876 | @@ -0,0 +1,3 @@ |
877 | +Pierre Lamarche <pierre.lamarche@savoirfairelinux.com> |
878 | +Maxime Chambreuil <maxime.chambreuil@savoirfairelinux.com> |
879 | +Savoir-faire Linux <contact@savoirfairelinux.com> |
880 | |
881 | === added file 'l10n_ca_hr_payroll_account/__init__.py' |
882 | --- l10n_ca_hr_payroll_account/__init__.py 1970-01-01 00:00:00 +0000 |
883 | +++ l10n_ca_hr_payroll_account/__init__.py 2012-12-21 16:45:28 +0000 |
884 | @@ -0,0 +1,22 @@ |
885 | +#-*- coding:utf-8 -*- |
886 | +############################################################################## |
887 | +# |
888 | +# Copyright (C) 2012 OpenERP Canada. All Rights Reserved. |
889 | +# |
890 | +# This program is free software: you can redistribute it and/or modify |
891 | +# it under the terms of the GNU Affero General Public License as published |
892 | +# by |
893 | +# the Free Software Foundation, either version 3 of the License, or |
894 | +# (at your option) any later version. |
895 | +# |
896 | +# This program is distributed in the hope that it will be useful, |
897 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
898 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
899 | +# GNU Affero General Public License for more details. |
900 | +# |
901 | +# You should have received a copy of the GNU Affero General Public License |
902 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
903 | +# |
904 | +############################################################################## |
905 | + |
906 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
907 | |
908 | === added file 'l10n_ca_hr_payroll_account/__openerp__.py' |
909 | --- l10n_ca_hr_payroll_account/__openerp__.py 1970-01-01 00:00:00 +0000 |
910 | +++ l10n_ca_hr_payroll_account/__openerp__.py 2012-12-21 16:45:28 +0000 |
911 | @@ -0,0 +1,51 @@ |
912 | +#-*- coding:utf-8 -*- |
913 | +############################################################################## |
914 | +# |
915 | +# Copyright (C) 2012 OpenERP Canada. All Rights Reserved. |
916 | +# |
917 | +# This program is free software: you can redistribute it and/or modify |
918 | +# it under the terms of the GNU Affero General Public License as published by |
919 | +# the Free Software Foundation, either version 3 of the License, or |
920 | +# (at your option) any later version. |
921 | +# |
922 | +# This program is distributed in the hope that it will be useful, |
923 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
924 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
925 | +# GNU Affero General Public License for more details. |
926 | +# |
927 | +# You should have received a copy of the GNU Affero General Public License |
928 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
929 | +# |
930 | +############################################################################## |
931 | +{ |
932 | + 'name': 'Canada - Payroll Accounting', |
933 | + 'category': 'Localization', |
934 | + 'version': '0.1', |
935 | + 'license': 'AGPL-3', |
936 | + 'category': 'Generic Modules/Human Resources', |
937 | + 'description': """ |
938 | +Canada Payroll Accounting |
939 | +========================= |
940 | + |
941 | +This module: |
942 | + * creates salary journal |
943 | + * creates financial accounts for payroll |
944 | + * updates salary rules with accounting information |
945 | + """, |
946 | + 'author':'OpenERP Canada', |
947 | + 'website':'http://launchpad.net/openerp-canada', |
948 | + 'depends': [ |
949 | + 'l10n_ca', |
950 | + 'l10n_ca_hr_payroll', |
951 | + 'hr_payroll_account', |
952 | + ], |
953 | + 'data': [ |
954 | + 'l10n_ca_hr_payroll_account_data.xml', |
955 | + ], |
956 | + 'test': [], |
957 | + 'demo': [], |
958 | + 'installable': True, |
959 | + 'active': False, |
960 | +} |
961 | + |
962 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
963 | |
964 | === added file 'l10n_ca_hr_payroll_account/l10n_ca_hr_payroll_account_data.xml' |
965 | --- l10n_ca_hr_payroll_account/l10n_ca_hr_payroll_account_data.xml 1970-01-01 00:00:00 +0000 |
966 | +++ l10n_ca_hr_payroll_account/l10n_ca_hr_payroll_account_data.xml 2012-12-21 16:45:28 +0000 |
967 | @@ -0,0 +1,31 @@ |
968 | +<?xml version="1.0" encoding="utf-8"?> |
969 | +<openerp> |
970 | + <data noupdate="1"> |
971 | + |
972 | + <!-- Payroll Journal --> |
973 | + |
974 | + <record id="payroll_journal" model="account.journal"> |
975 | + <field name="name">Payroll Journal</field> |
976 | + <field name="code">PAYJ</field> |
977 | + <field name="type">general</field> |
978 | + <field name="view_id" ref="account.account_journal_view"/> |
979 | + </record> |
980 | + |
981 | + <!-- Salary rules --> |
982 | + |
983 | + <!-- Employment Insurance --> |
984 | + |
985 | + <record id="l10n_ca_hr_payroll.rule_ca_ei_er_c" model="hr.salary.rule"> |
986 | + <field name="account_debit" model='account.account' search="[('code','like','51203')]"/> |
987 | + <field name="account_credit" model='account.account' search="[('code','like','214112')]"/> |
988 | + </record> |
989 | + |
990 | + <!-- Federal Tax Income --> |
991 | + |
992 | + <record id="l10n_ca_hr_payroll.rule_ca_fit" model="hr.salary.rule"> |
993 | + <field name="account_debit" model='account.account' search="[('code','like','51209')]"/> |
994 | + <field name="account_credit" model='account.account' search="[('code','like','21412')]"/> |
995 | + </record> |
996 | + |
997 | + </data> |
998 | +</openerp> |
999 | |
1000 | === added directory 'l10n_ca_hr_payroll_account/static' |
1001 | === added directory 'l10n_ca_hr_payroll_account/static/src' |
1002 | === added directory 'l10n_ca_hr_payroll_account/static/src/img' |
1003 | === added file 'l10n_ca_hr_payroll_account/static/src/img/icon.png' |
1004 | Binary files l10n_ca_hr_payroll_account/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_hr_payroll_account/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |
1005 | === added directory 'l10n_ca_on_hr_payroll' |
1006 | === added file 'l10n_ca_on_hr_payroll/__init__.py' |
1007 | --- l10n_ca_on_hr_payroll/__init__.py 1970-01-01 00:00:00 +0000 |
1008 | +++ l10n_ca_on_hr_payroll/__init__.py 2012-12-21 16:45:28 +0000 |
1009 | @@ -0,0 +1,24 @@ |
1010 | +#-*- coding:utf-8 -*- |
1011 | +############################################################################## |
1012 | +# |
1013 | +# Copyright (C) 2012 Amura Consulting. All Rights Reserved. |
1014 | +# |
1015 | +# This program is free software: you can redistribute it and/or modify |
1016 | +# it under the terms of the GNU Affero General Public License as published |
1017 | +# by |
1018 | +# the Free Software Foundation, either version 3 of the License, or |
1019 | +# (at your option) any later version. |
1020 | +# |
1021 | +# This program is distributed in the hope that it will be useful, |
1022 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1023 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1024 | +# GNU Affero General Public License for more details. |
1025 | +# |
1026 | +# You should have received a copy of the GNU Affero General Public License |
1027 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
1028 | +# |
1029 | +############################################################################## |
1030 | + |
1031 | +import l10n_ca_on_hr_payroll |
1032 | + |
1033 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1034 | |
1035 | === added file 'l10n_ca_on_hr_payroll/__openerp__.py' |
1036 | --- l10n_ca_on_hr_payroll/__openerp__.py 1970-01-01 00:00:00 +0000 |
1037 | +++ l10n_ca_on_hr_payroll/__openerp__.py 2012-12-21 16:45:28 +0000 |
1038 | @@ -0,0 +1,52 @@ |
1039 | +#-*- coding:utf-8 -*- |
1040 | +############################################################################## |
1041 | +# |
1042 | +# Copyright (C) 2012 Amura Consulting. All Rights Reserved. |
1043 | +# |
1044 | +# This program is free software: you can redistribute it and/or modify |
1045 | +# it under the terms of the GNU Affero General Public License as published by |
1046 | +# the Free Software Foundation, either version 3 of the License, or |
1047 | +# (at your option) any later version. |
1048 | +# |
1049 | +# This program is distributed in the hope that it will be useful, |
1050 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1051 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1052 | +# GNU Affero General Public License for more details. |
1053 | +# |
1054 | +# You should have received a copy of the GNU Affero General Public License |
1055 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
1056 | +# |
1057 | +############################################################################## |
1058 | +{ |
1059 | + 'name': 'Canada - Ontario - Payroll', |
1060 | + 'category': 'Localization', |
1061 | + 'version': '0.9', |
1062 | + 'category': 'Generic Modules/Human Resources', |
1063 | + 'description': """ |
1064 | +Ontario Canadian Payroll Rules |
1065 | +============================== |
1066 | + * Adds all Federal and Provincial Salary Rules for Ontario |
1067 | + * Adds Ontario Salary Structure |
1068 | + * Adds Claim Codes, Deductions and Exemptions on the Employee Form |
1069 | + * Adds 'Pays Per Year' field on the Contract Form |
1070 | + """, |
1071 | + 'author':'Amura Consulting', |
1072 | + 'website':'http://www.openerp.com', |
1073 | + 'depends': [ |
1074 | + 'hr_payroll', |
1075 | + ], |
1076 | + 'init_xml': [ |
1077 | + ], |
1078 | + 'update_xml': [ |
1079 | + 'l10n_ca_on_hr_payroll_view.xml', |
1080 | + 'l10n_ca_on_hr_payroll_data.xml', |
1081 | + ], |
1082 | + 'test': [ |
1083 | + ], |
1084 | + 'demo_xml': [ |
1085 | + ], |
1086 | + 'installable': True, |
1087 | + 'active': False, |
1088 | +} |
1089 | + |
1090 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1091 | |
1092 | === added file 'l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll.py' |
1093 | --- l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll.py 1970-01-01 00:00:00 +0000 |
1094 | +++ l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll.py 2012-12-21 16:45:28 +0000 |
1095 | @@ -0,0 +1,141 @@ |
1096 | +#-*- coding:utf-8 -*- |
1097 | +############################################################################## |
1098 | +# |
1099 | +# Copyright (C) 2012 Amura Consulting. All Rights Reserved. |
1100 | +# |
1101 | +# This program is free software: you can redistribute it and/or modify |
1102 | +# it under the terms of the GNU Affero General Public License as published |
1103 | +# by |
1104 | +# the Free Software Foundation, either version 3 of the License, or |
1105 | +# (at your option) any later version. |
1106 | +# |
1107 | +# This program is distributed in the hope that it will be useful, |
1108 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1109 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1110 | +# GNU Affero General Public License for more details. |
1111 | +# |
1112 | +# You should have received a copy of the GNU Affero General Public License |
1113 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
1114 | +# |
1115 | +############################################################################## |
1116 | + |
1117 | +from osv import fields, osv |
1118 | + |
1119 | +""" |
1120 | +class hr_payroll_tax_table(osv.osv): |
1121 | + ''' |
1122 | + Canadian Tax Payroll Table |
1123 | + ''' |
1124 | + _name = 'hr.payroll.tax.table' |
1125 | + _description = 'Canadian Tax Payroll Table' |
1126 | + |
1127 | + def onchange_year(self, cr, uid, ids, year, prov=False): |
1128 | + res = {} |
1129 | + res['name'] = 'Tax Table: ' + str(year) |
1130 | + if prov: |
1131 | + prov_obj = self.pool.get('res.country.state').browse(cr, uid, prov) |
1132 | + res['name'] += ' / Provincial - ' + prov_obj.code |
1133 | + else: |
1134 | + res['name'] += ' / Federal' |
1135 | + |
1136 | + return {'value': res} |
1137 | + |
1138 | + _columns = { |
1139 | + 'name': fields.char('Description', size=128), |
1140 | + 'year': fields.integer('Year', required=True), |
1141 | + 'date_from': fields.date('Date From'), |
1142 | + 'date_to': fields.date('Date To'), |
1143 | + 'fed_prov': fields.selection([ |
1144 | + ('federal','Federal'), |
1145 | + ('provincial','Provincial')], 'Federal/Provincial', required=True), |
1146 | + 'province': fields.many2one('res.country.state', 'Province'), |
1147 | + 'line_ids': fields.one2many('hr.payroll.tax.table.line', 'table_id', 'Lines'), |
1148 | + } |
1149 | + |
1150 | + _defaults = { |
1151 | + 'fed_prov': 'federal', |
1152 | + } |
1153 | +hr_payroll_tax_table() |
1154 | + |
1155 | +class hr_payroll_tax_table_line(osv.osv): |
1156 | + ''' |
1157 | + Canadian Tax Payroll Table Lines |
1158 | + ''' |
1159 | + _name = 'hr.payroll.tax.table.line' |
1160 | + _description = 'Canadian Tax Payroll Table Lines' |
1161 | + _columns = { |
1162 | + 'name': fields.char('Name', size=64), |
1163 | + 'code': fields.char('Code', size=16), |
1164 | + 'inc_from': fields.float('Income From', digits=(16, 2)), |
1165 | + 'inc_to': fields.float('Income To', digits=(16, 2)), |
1166 | + 'rate': fields.float('Rate', digits=(16, 2)), |
1167 | + 'table_id': fields.many2one('hr.payroll.tax.table', 'Table'), |
1168 | + } |
1169 | +hr_payroll_tax_table_line() |
1170 | +""" |
1171 | + |
1172 | +class hr_employee(osv.osv): |
1173 | + _name = 'hr.employee' |
1174 | + _inherit = 'hr.employee' |
1175 | + |
1176 | + _columns = { |
1177 | + 'ei_exempt': fields.boolean('EI Exempt'), |
1178 | + 'td1f': fields.selection([(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(0,0)], 'Federal Claim Code', required=True), |
1179 | + 'td1p': fields.selection([(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(0,0)], 'Provincial Claim Code', required=True), |
1180 | + 'cpp_exempt': fields.boolean('CPP/QPP Exempt'), |
1181 | + 'qpip_exempt': fields.boolean('QPIP Exempt'), |
1182 | + 'cpp_ytd_adj': fields.float('CPP/QPP YTD Adjustment', help="Amount to adjust CPP/QPP for calculations. Used if employee has contributed elsewhere and will be factored in when calculating maximum CPP payment"), |
1183 | + 'ei_ytd_adj': fields.float('EI YTD Adjustment', help="Amount to adjust EI for calculations. Used if employee has contributed elsewhere and will be factored in when calculating maximum EI payment"), |
1184 | + 'vac_pay': fields.float('Vacation Pay %', digits=(16,2)), |
1185 | + 'f1': fields.float('Childcare/Alimony (F1)', digits=(16,2), help="Annual deductions such as child care expenses and support payments, etc., authorized by a tax services office or tax centre"), |
1186 | + 'f2': fields.float('Alimony/Maint Garnish (F2)', digits=(16,2), help="Alimony or maintenance payments required by a legal document to be payroll-deducted authorized by a tax services office or tax centre"), |
1187 | + 'hd': fields.float('Prescribed Zone (HD)', digits=(16,2), help="Annual deduction for living in a prescribed zone as indicated on Form TD1"), |
1188 | + 'lcf': fields.float('Fed Labour sponsored funds (LCF)', digits=(16,2), help="Federal labour-sponsored funds tax credit"), |
1189 | + 'lcp': fields.float('Prov Labour sponsored funds (LCP)', digits=(16,2), help="Provincial or territorial labour-sponsored funds tax credit"), |
1190 | + 'f': fields.float('RSP/RPP/RCA (F)', digits=(16,2), help="Payroll deductions for employee contributions to a registered pension plan (RPP), a registered retirement savings plan (RRSP), or a retirement compensation arrangement (RCA)"), |
1191 | + 'l': fields.float('Extra Tax Deductions (L)', digits=(16,2), help="Extra tax deductions requested for the pay period."), |
1192 | + 'k3': fields.float('Federal Medical (K3)', digits=(16,2), help="Other federal tax credits, such as medical expenses and charitable donations authorized by a tax services office or tax centre"), |
1193 | + 'u1': fields.float('Union Dues (U1)', digits=(16,2), help="Union dues"), |
1194 | + 'y': fields.float('MB/ON Extra Tax Reduction(Y)', digits=(16,2), help="Extra provincial or territorial tax reduction based on applicable amounts reported on the provincial or territorial Form TD1"), |
1195 | + } |
1196 | + |
1197 | + _defaults = { |
1198 | + 'td1f': 1, |
1199 | + 'td1p': 1, |
1200 | + } |
1201 | + |
1202 | +hr_employee() |
1203 | + |
1204 | +class hr_contract(osv.osv): |
1205 | + _inherit = 'hr.contract' |
1206 | + |
1207 | + def _get_pays_per_year(self, cr, uid, ids, names, arg, context=None): |
1208 | + """ |
1209 | + @param ids: ID of contract |
1210 | + @return: The number of pays per year |
1211 | + """ |
1212 | + res = {} |
1213 | + #FIXME: Should likely pull these values from somewhere else, depending on whether a 52 or 53 year week is used |
1214 | + schedule_pay = { |
1215 | + 'monthly': 12, |
1216 | + 'quarterly': 4, |
1217 | + 'semi-annually': 2, |
1218 | + 'annually': 1, |
1219 | + 'weekly': 52, |
1220 | + 'bi-weekly': 26, |
1221 | + 'bi-monthly': 6, |
1222 | + } |
1223 | + for contract in self.browse(cr, uid, ids, context): |
1224 | + if contract.schedule_pay and schedule_pay.get(contract.schedule_pay, False): |
1225 | + res[contract.id] = schedule_pay[contract.schedule_pay] |
1226 | + |
1227 | + return res |
1228 | + |
1229 | + _columns = { |
1230 | + 'pays_per_year': fields.function(_get_pays_per_year, method=True, string='Pays Per Year', type='float', readonly=True), |
1231 | + } |
1232 | + |
1233 | +hr_contract() |
1234 | + |
1235 | + |
1236 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1237 | |
1238 | === added file 'l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_data.xml' |
1239 | --- l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_data.xml 1970-01-01 00:00:00 +0000 |
1240 | +++ l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_data.xml 2012-12-21 16:45:28 +0000 |
1241 | @@ -0,0 +1,597 @@ |
1242 | +<?xml version="1.0" encoding="utf-8"?> |
1243 | +<openerp> |
1244 | + <data noupdate="1"> |
1245 | + |
1246 | + <record id="I" model="hr.salary.rule.category"> |
1247 | + <field name="name">Taxable Income</field> |
1248 | + <field name="code">I</field> |
1249 | + </record> |
1250 | + |
1251 | + <record id="CALC" model="hr.salary.rule.category"> |
1252 | + <field name="code">CALC</field> |
1253 | + <field name="name">Standard Calculation</field> |
1254 | + </record> |
1255 | + |
1256 | + <record id="FCALC" model="hr.salary.rule.category"> |
1257 | + <field name="code">FCALC</field> |
1258 | + <field name="name">Federal Calculation</field> |
1259 | + </record> |
1260 | + |
1261 | + <record id="PCALC" model="hr.salary.rule.category"> |
1262 | + <field name="code">PCALC</field> |
1263 | + <field name="name">Provincial Calculation</field> |
1264 | + </record> |
1265 | + |
1266 | + <record id="EMP" model="hr.salary.rule.category"> |
1267 | + <field name="code">EMP</field> |
1268 | + <field name="name">Employer Contribution</field> |
1269 | + </record> |
1270 | + |
1271 | + <record id="SDED" model="hr.salary.rule.category"> |
1272 | + <field name="code">SDED</field> |
1273 | + <field name="name">Source Deduction</field> |
1274 | + <field name="notes">Used for after tax deductions at source</field> |
1275 | + </record> |
1276 | + |
1277 | + <record id="hr_salary_rule_p" model="hr.salary.rule"> |
1278 | + <field name="name">Pays Per Year</field> |
1279 | + <field name="sequence" eval="1"/> |
1280 | + <field name="code">P</field> |
1281 | + <field eval="0" name="appears_on_payslip"/> |
1282 | + <field eval="1" name="active"/> |
1283 | + <field name="category_id" ref="CALC"/> |
1284 | + <field name="condition_select">none</field> |
1285 | + <field name="amount_select">code</field> |
1286 | + <field name="amount_python_compute">result = contract.pays_per_year or 0</field> |
1287 | + <field name="notes">Pays per year from the contract form</field> |
1288 | + </record> |
1289 | + |
1290 | + <record id="hr_salary_rule_pocc" model="hr.salary.rule"> |
1291 | + <field name="name">Payslip Counter(POCC)</field> |
1292 | + <field name="sequence" eval="1"/> |
1293 | + <field name="code">POCC</field> |
1294 | + <field eval="0" name="appears_on_payslip"/> |
1295 | + <field eval="1" name="active"/> |
1296 | + <field name="category_id" ref="CALC"/> |
1297 | + <field name="condition_select">none</field> |
1298 | + <field name="amount_select">fix</field> |
1299 | + <field name="quantity">1.0</field> |
1300 | + <field name="amount_fix">1.0</field> |
1301 | + <field name="notes">Sloppy way of counting payslips for use in PR calc</field> |
1302 | + </record> |
1303 | + |
1304 | + <record id="hr_salary_rule_cppmax" model="hr.salary.rule"> |
1305 | + <field name="name">CPP Maximum(CPPMAX)</field> |
1306 | + <field name="sequence" eval="1"/> |
1307 | + <field name="code">CPPMAX</field> |
1308 | + <field eval="0" name="appears_on_payslip"/> |
1309 | + <field eval="1" name="active"/> |
1310 | + <field name="category_id" ref="CALC"/> |
1311 | + <field name="condition_select">none</field> |
1312 | + <field name="amount_select">fix</field> |
1313 | + <field name="quantity">1.0</field> |
1314 | + <field name="amount_fix">2306.70</field> |
1315 | + <field name="notes">Annual maximum employee CPP contribution</field> |
1316 | + </record> |
1317 | + |
1318 | + <record id="hr_salary_rule_eimax" model="hr.salary.rule"> |
1319 | + <field name="name">EI Maximum(EIMAX)</field> |
1320 | + <field name="sequence" eval="1"/> |
1321 | + <field name="code">EIMAX</field> |
1322 | + <field eval="0" name="appears_on_payslip"/> |
1323 | + <field eval="1" name="active"/> |
1324 | + <field name="category_id" ref="CALC"/> |
1325 | + <field name="condition_select">none</field> |
1326 | + <field name="amount_select">fix</field> |
1327 | + <field name="quantity">1.0</field> |
1328 | + <field name="amount_fix">839.97</field> |
1329 | + <field name="notes">Annual maximum employee EI contribution</field> |
1330 | + </record> |
1331 | + |
1332 | + <record id="hr_salary_rule_pr" model="hr.salary.rule"> |
1333 | + <field name="name">Pays Remaining(PR)</field> |
1334 | + <field name="sequence" eval="2"/> |
1335 | + <field name="code">PR</field> |
1336 | + <field eval="0" name="appears_on_payslip"/> |
1337 | + <field eval="1" name="active"/> |
1338 | + <field name="category_id" ref="CALC"/> |
1339 | + <field name="condition_select">none</field> |
1340 | + <field name="amount_select">code</field> |
1341 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1342 | +date_to = payslip.date_to |
1343 | +result = P - payslip.sum('POCC',date_from,date_to)</field> |
1344 | + </record> |
1345 | + |
1346 | + <record id="hr_salary_rule_ca_wage" model="hr.salary.rule"> |
1347 | + <field name="name">Base Pay</field> |
1348 | + <field name="sequence" eval="2"/> |
1349 | + <field name="code">CAWAGE</field> |
1350 | + <field name="category_id" ref="I"/> |
1351 | + <field name="condition_select">none</field> |
1352 | + <field name="amount_select">code</field> |
1353 | + <field name="amount_python_compute">result = contract.wage</field> |
1354 | + </record> |
1355 | + |
1356 | + <record id="hr_salary_rule_vpay" model="hr.salary.rule"> |
1357 | + <field name="name">Vacation Pay</field> |
1358 | + <field name="sequence" eval="2"/> |
1359 | + <field name="code">VPAY</field> |
1360 | + <field name="category_id" ref="I"/> |
1361 | + <field name="condition_select">none</field> |
1362 | + <field name="amount_select">code</field> |
1363 | + <field name="amount_python_compute">result = categories.I * 0.04</field> |
1364 | + </record> |
1365 | + |
1366 | + <record id="hr_salary_rule_i" model="hr.salary.rule"> |
1367 | + <field name="name">Gross Pay</field> |
1368 | + <field name="sequence" eval="40"/> |
1369 | + <field name="code">I</field> |
1370 | + <field name="category_id" ref="hr_payroll.GROSS"/> |
1371 | + <field name="condition_select">none</field> |
1372 | + <field name="amount_select">code</field> |
1373 | + <field name="amount_python_compute">result = categories.I + categories.ALW</field> |
1374 | + </record> |
1375 | + |
1376 | + <record id="hr_salary_rule_pi_ytd" model="hr.salary.rule"> |
1377 | + <field name="name">Pensionable Income YTD(PIYTD)</field> |
1378 | + <field eval="45" name="sequence"/> |
1379 | + <field name="code">PIYTD</field> |
1380 | + <field name="category_id" ref="CALC"/> |
1381 | + <field eval="1" name="appears_on_payslip"/> |
1382 | + <field eval="1" name="active"/> |
1383 | + <field name="condition_select">none</field> |
1384 | + <field name="amount_select">code</field> |
1385 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1386 | +date_to = payslip.date_to |
1387 | +result = min(payslip.sum('I',date_from,date_to) + I, 50100)</field> |
1388 | + </record> |
1389 | + |
1390 | + <record id="hr_salary_rule_ie_ytd" model="hr.salary.rule"> |
1391 | + <field name="name">Insurable Income YTD(IEYTD)</field> |
1392 | + <field eval="45" name="sequence"/> |
1393 | + <field name="code">IEYTD</field> |
1394 | + <field name="category_id" ref="CALC"/> |
1395 | + <field eval="1" name="appears_on_payslip"/> |
1396 | + <field eval="1" name="active"/> |
1397 | + <field name="condition_select">none</field> |
1398 | + <field name="amount_select">code</field> |
1399 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1400 | +date_to = payslip.date_to |
1401 | +result = min(payslip.sum('I',date_from,date_to) + I, 45900)</field> |
1402 | + </record> |
1403 | + |
1404 | + <record id="hr_salary_rule_u1" model="hr.salary.rule"> |
1405 | + <field name="name">Union Dues(U1)</field> |
1406 | + <field name="sequence" eval="50"/> |
1407 | + <field name="code">U1</field> |
1408 | + <field name="category_id" ref="hr_payroll.DED"/> |
1409 | + <field name="condition_select">none</field> |
1410 | + <field name="amount_select">code</field> |
1411 | + <field name="amount_python_compute">result = employee.u1</field> |
1412 | + </record> |
1413 | + |
1414 | + <record id="hr_salary_rule_l" model="hr.salary.rule"> |
1415 | + <field name="name">Extra Tax Deductions Requested(L)</field> |
1416 | + <field name="sequence" eval="50"/> |
1417 | + <field name="code">L</field> |
1418 | + <field name="category_id" ref="CALC"/> |
1419 | + <field name="condition_select">none</field> |
1420 | + <field name="amount_select">code</field> |
1421 | + <field name="amount_python_compute">result = (employee.l + inputs.L.amount) if I else 0.0</field> |
1422 | + </record> |
1423 | + |
1424 | + <record id="hr_salary_rule_f" model="hr.salary.rule"> |
1425 | + <field name="name">RSP/RPP/RCA(F)</field> |
1426 | + <field eval="60" name="sequence"/> |
1427 | + <field name="code">F</field> |
1428 | + <field name="category_id" ref="hr_payroll.DED"/> |
1429 | + <field eval="1" name="appears_on_payslip"/> |
1430 | + <field eval="1" name="active"/> |
1431 | + <field name="condition_select">none</field> |
1432 | + <field name="amount_select">code</field> |
1433 | + <field name="amount_python_compute">result = employee.f or 0.0</field> |
1434 | + </record> |
1435 | + |
1436 | + <record id="hr_salary_rule_f1" model="hr.salary.rule"> |
1437 | + <field name="name">Childcare/Alimony(F1)</field> |
1438 | + <field eval="60" name="sequence"/> |
1439 | + <field name="code">F1</field> |
1440 | + <field name="category_id" ref="hr_payroll.DED"/> |
1441 | + <field eval="1" name="appears_on_payslip"/> |
1442 | + <field eval="1" name="active"/> |
1443 | + <field name="condition_select">none</field> |
1444 | + <field name="amount_select">code</field> |
1445 | + <field name="amount_python_compute">result = employee.f1 or 0.0</field> |
1446 | + </record> |
1447 | + |
1448 | + <record id="hr_salary_rule_f2" model="hr.salary.rule"> |
1449 | + <field name="name">Alimony/Maintenance(F2)</field> |
1450 | + <field eval="60" name="sequence"/> |
1451 | + <field name="code">F2</field> |
1452 | + <field name="category_id" ref="hr_payroll.DED"/> |
1453 | + <field eval="1" name="appears_on_payslip"/> |
1454 | + <field eval="1" name="active"/> |
1455 | + <field name="condition_select">none</field> |
1456 | + <field name="amount_select">code</field> |
1457 | + <field name="amount_python_compute">result = employee.f2 or 0.0</field> |
1458 | + </record> |
1459 | + |
1460 | + <record id="hr_salary_rule_hd" model="hr.salary.rule"> |
1461 | + <field name="name">Prescribed Zone(HD)</field> |
1462 | + <field eval="60" name="sequence"/> |
1463 | + <field name="code">HD</field> |
1464 | + <field name="category_id" ref="hr_payroll.DED"/> |
1465 | + <field eval="1" name="appears_on_payslip"/> |
1466 | + <field eval="1" name="active"/> |
1467 | + <field name="condition_select">none</field> |
1468 | + <field name="amount_select">code</field> |
1469 | + <field name="amount_python_compute">result = employee.hd or 0.0</field> |
1470 | + </record> |
1471 | + |
1472 | + <record id="hr_salary_rule_a" model="hr.salary.rule"> |
1473 | + <field name="name">Annual Taxable Income(A)</field> |
1474 | + <field eval="101" name="sequence"/> |
1475 | + <field name="code">A</field> |
1476 | + <field name="category_id" ref="CALC"/> |
1477 | + <field eval="0" name="appears_on_payslip"/> |
1478 | + <field eval="1" name="active"/> |
1479 | + <field name="condition_select">none</field> |
1480 | + <field name="amount_select">code</field> |
1481 | + <field name="amount_python_compute">result = max((P * (I - F - F2 - U1)) - HD - F1, 0.0)</field> |
1482 | + </record> |
1483 | + |
1484 | + <record id="hr_salary_rule_r" model="hr.salary.rule"> |
1485 | + <field name="name">Annual Federal Tax Rate(R)</field> |
1486 | + <field eval="110" name="sequence"/> |
1487 | + <field name="code">R</field> |
1488 | + <field name="category_id" ref="FCALC"/> |
1489 | + <field eval="0" name="appears_on_payslip"/> |
1490 | + <field eval="1" name="active"/> |
1491 | + <field name="condition_select">none</field> |
1492 | + <field name="amount_select">code</field> |
1493 | + <field name="amount_python_compute">result = (A > 132406 and 0.29) or (A > 85424 and 0.26) or (A > 42707 and 0.22) or 0.15</field> |
1494 | + </record> |
1495 | + |
1496 | + <record id="hr_salary_rule_c" model="hr.salary.rule"> |
1497 | + <field name="name">Canada Pension Plan(C)</field> |
1498 | + <field eval="140" name="sequence"/> |
1499 | + <field name="code">C</field> |
1500 | + <field name="category_id" ref="hr_payroll.DED"/> |
1501 | + <field eval="1" name="appears_on_payslip"/> |
1502 | + <field eval="1" name="active"/> |
1503 | + <field name="condition_select">python</field> |
1504 | + <field name="condition_python">result = not employee.cpp_exempt</field> |
1505 | + <field name="amount_select">code</field> |
1506 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1507 | +date_to = payslip.date_to |
1508 | +Ccalc = 0.0495 * (I - (3500.0 / P)) |
1509 | +result = max(Ccalc if (Ccalc < (CPPMAX - (payslip.sum('C',date_from,date_to) + employee.cpp_ytd_adj))) else (CPPMAX - (payslip.sum('C',date_from,date_to) + employee.cpp_ytd_adj)), 0)</field> |
1510 | + </record> |
1511 | + |
1512 | + <record id="hr_salary_rule_ei" model="hr.salary.rule"> |
1513 | + <field name="name">Employment Insurance(EI)</field> |
1514 | + <field eval="140" name="sequence"/> |
1515 | + <field name="code">EI</field> |
1516 | + <field name="category_id" ref="hr_payroll.DED"/> |
1517 | + <field eval="1" name="appears_on_payslip"/> |
1518 | + <field eval="1" name="active"/> |
1519 | + <field name="condition_select">python</field> |
1520 | + <field name="condition_python">result = not employee.cpp_exempt</field> |
1521 | + <field name="amount_select">code</field> |
1522 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1523 | +date_to = payslip.date_to |
1524 | +EIcalc = 0.0183 * I |
1525 | +result = max(min(EIcalc, (EIMAX - payslip.sum('EI',date_from,date_to) - employee.ei_ytd_adj)), 0.0)</field> |
1526 | + </record> |
1527 | + |
1528 | + <record id="hr_salary_rule_c_ytd" model="hr.salary.rule"> |
1529 | + <field name="name">Canada Pension Plan YTD</field> |
1530 | + <field eval="145" name="sequence"/> |
1531 | + <field name="code">CPPYTD</field> |
1532 | + <field name="category_id" ref="FCALC"/> |
1533 | + <field eval="1" name="appears_on_payslip"/> |
1534 | + <field eval="1" name="active"/> |
1535 | + <field name="condition_select">none</field> |
1536 | + <field name="amount_select">code</field> |
1537 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1538 | +date_to = payslip.date_to |
1539 | +result = payslip.sum('C',date_from,date_to) + C</field> |
1540 | + </record> |
1541 | + |
1542 | + <record id="hr_salary_rule_ei_ytd" model="hr.salary.rule"> |
1543 | + <field name="name">Employment Insurance YTD</field> |
1544 | + <field eval="145" name="sequence"/> |
1545 | + <field name="code">EIYTD</field> |
1546 | + <field name="category_id" ref="FCALC"/> |
1547 | + <field eval="1" name="appears_on_payslip"/> |
1548 | + <field eval="1" name="active"/> |
1549 | + <field name="condition_select">none</field> |
1550 | + <field name="amount_select">code</field> |
1551 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
1552 | +date_to = payslip.date_to |
1553 | +result = payslip.sum('EI',date_from,date_to) + EI</field> |
1554 | + </record> |
1555 | + |
1556 | + <record id="hr_salary_rule_empc" model="hr.salary.rule"> |
1557 | + <field name="name">Employer CPP Contribution(EMPC)</field> |
1558 | + <field eval="146" name="sequence"/> |
1559 | + <field name="code">EMPC</field> |
1560 | + <field name="category_id" ref="EMP"/> |
1561 | + <field eval="0" name="appears_on_payslip"/> |
1562 | + <field eval="1" name="active"/> |
1563 | + <field name="condition_select">python</field> |
1564 | + <field name="condition_python">result = not employee.cpp_exempt</field> |
1565 | + <field name="amount_select">percentage</field> |
1566 | + <field name="amount_percentage_base">I</field> |
1567 | + <field name="quantity">1.0</field> |
1568 | + <field name="amount_percentage">100.0</field> |
1569 | + </record> |
1570 | + |
1571 | + <record id="hr_salary_rule_empei" model="hr.salary.rule"> |
1572 | + <field name="name">Employer EI Contribution(EMPEI)</field> |
1573 | + <field eval="146" name="sequence"/> |
1574 | + <field name="code">EMPEI</field> |
1575 | + <field name="category_id" ref="EMP"/> |
1576 | + <field eval="0" name="appears_on_payslip"/> |
1577 | + <field eval="1" name="active"/> |
1578 | + <field name="condition_select">python</field> |
1579 | + <field name="condition_python">result = not employee.ei_exempt</field> |
1580 | + <field name="amount_select">percentage</field> |
1581 | + <field name="amount_percentage_base">EI</field> |
1582 | + <field name="quantity">1.0</field> |
1583 | + <field name="amount_percentage">140.0</field> |
1584 | + </record> |
1585 | + |
1586 | + <record id="hr_salary_rule_k" model="hr.salary.rule"> |
1587 | + <field name="name">Annual Federal Constant(K)</field> |
1588 | + <field eval="150" name="sequence"/> |
1589 | + <field name="code">K</field> |
1590 | + <field name="category_id" ref="FCALC"/> |
1591 | + <field eval="0" name="appears_on_payslip"/> |
1592 | + <field eval="1" name="active"/> |
1593 | + <field name="condition_select">none</field> |
1594 | + <field name="amount_select">code</field> |
1595 | + <field name="amount_python_compute">result = (A > 132406 and 10378) or (A > 85424 and 6406) or (A > 42707 and 2989) or 0.0</field> |
1596 | + </record> |
1597 | + |
1598 | + <record id="hr_salary_rule_k1" model="hr.salary.rule"> |
1599 | + <field name="name">Federal Personal Credit(K1)</field> |
1600 | + <field eval="150" name="sequence"/> |
1601 | + <field name="code">K1</field> |
1602 | + <field name="category_id" ref="FCALC"/> |
1603 | + <field eval="0" name="appears_on_payslip"/> |
1604 | + <field eval="1" name="active"/> |
1605 | + <field name="condition_select">none</field> |
1606 | + <field name="amount_select">code</field> |
1607 | + <field name="amount_python_compute">result = employee.td1f == 1 and 1623.30 or employee.td1f == 2 and 1778.40 or employee.td1f == 3 and 2088.60 or employee.td1f == 4 and 2398.80 or employee.td1f == 5 and 2709.00 or employee.td1f == 6 and 3019.20 or employee.td1f == 7 and 3329.40 or employee.td1f == 8 and 3639.60 or employee.td1f == 9 and 3949.80 or employee.td1f == 10 and 4260.00 or employee.td1f == 0 and 0.0</field> |
1608 | + <field name="notes">Federal non-refundable personal tax credit. |
1609 | +Appears on the Employee Form in Canadian Payroll.</field> |
1610 | + </record> |
1611 | + |
1612 | + <record id="hr_salary_rule_k2" model="hr.salary.rule"> |
1613 | + <field name="name">Annual Federal CPP/QPP(K2)</field> |
1614 | + <field eval="150" name="sequence"/> |
1615 | + <field name="code">K2</field> |
1616 | + <field name="category_id" ref="FCALC"/> |
1617 | + <field eval="0" name="appears_on_payslip"/> |
1618 | + <field eval="1" name="active"/> |
1619 | + <field name="condition_select">none</field> |
1620 | + <field name="amount_select">code</field> |
1621 | + <field name="amount_python_compute">result = (0.15 * min(CPPYTD + (PR * C), CPPMAX)) + (0.15 * min(EIYTD + (PR * EI), EIMAX))</field> |
1622 | + <field name="notes">Federal Canada (or Quebec) Pension Plan contributions and employment insurance premiums tax credits for the year. |
1623 | +Used for calculations only</field> |
1624 | + </record> |
1625 | + |
1626 | + <record id="hr_salary_rule_k3" model="hr.salary.rule"> |
1627 | + <field name="name">Other Federal Tax Credits(K3)</field> |
1628 | + <field eval="150" name="sequence"/> |
1629 | + <field name="code">K3</field> |
1630 | + <field name="category_id" ref="FCALC"/> |
1631 | + <field eval="0" name="appears_on_payslip"/> |
1632 | + <field eval="1" name="active"/> |
1633 | + <field name="condition_select">none</field> |
1634 | + <field name="amount_select">code</field> |
1635 | + <field name="amount_python_compute">result = employee.k3 or 0.0</field> |
1636 | + <field name="notes">Other federal tax credits (such as medical expenses and charitable donations authorized by a tax services office or tax centre) |
1637 | +Appears on the Employee Form in Canadian Payroll.</field> |
1638 | + </record> |
1639 | + |
1640 | + <record id="hr_salary_rule_k4" model="hr.salary.rule"> |
1641 | + <field name="name">Canada Employment Credit(K4)</field> |
1642 | + <field eval="150" name="sequence"/> |
1643 | + <field name="code">K4</field> |
1644 | + <field name="category_id" ref="FCALC"/> |
1645 | + <field eval="0" name="appears_on_payslip"/> |
1646 | + <field eval="1" name="active"/> |
1647 | + <field name="condition_select">none</field> |
1648 | + <field name="amount_select">code</field> |
1649 | + <field name="amount_python_compute">result = min(0.15 * A, 0.15 * 1095)</field> |
1650 | + <field name="notes">Canada employment credit. |
1651 | +Used for calculations only</field> |
1652 | + </record> |
1653 | + |
1654 | + <record id="hr_salary_rule_tcp" model="hr.salary.rule"> |
1655 | + <field name="name">Provincial Claim Amount(TCP)</field> |
1656 | + <field eval="150" name="sequence"/> |
1657 | + <field name="code">TCP</field> |
1658 | + <field name="category_id" ref="PCALC"/> |
1659 | + <field eval="0" name="appears_on_payslip"/> |
1660 | + <field eval="1" name="active"/> |
1661 | + <field name="condition_select">none</field> |
1662 | + <field name="amount_select">code</field> |
1663 | + <field name="amount_python_compute">result = employee.td1p == 1 and 9405.00 or employee.td1p == 2 and 10418.00 or employee.td1p == 3 and 12444.00 or employee.td1p == 4 and 14470.00 or employee.td1p == 5 and 16496.00 or employee.td1p == 6 and 18522.00 or employee.td1p == 7 and 20548.00 or employee.td1p == 8 and 22574.00 or employee.td1p == 9 and 24600.00 or employee.td1p == 10 and 26626.00 or employee.td1p == 0 and 0.0</field> |
1664 | + </record> |
1665 | + |
1666 | + <record id="hr_salary_rule_v" model="hr.salary.rule"> |
1667 | + <field name="name">Annual Provincial Tax Rate(V)</field> |
1668 | + <field eval="150" name="sequence"/> |
1669 | + <field name="code">V</field> |
1670 | + <field name="category_id" ref="PCALC"/> |
1671 | + <field eval="0" name="appears_on_payslip"/> |
1672 | + <field eval="1" name="active"/> |
1673 | + <field name="condition_select">none</field> |
1674 | + <field name="amount_select">code</field> |
1675 | + <field name="amount_python_compute">result = (A > 78043 and 0.1116) or (A > 39020 and A <= 78043 and 0.0915) or 0.0505</field> |
1676 | + </record> |
1677 | + |
1678 | + <record id="hr_salary_rule_kp" model="hr.salary.rule"> |
1679 | + <field name="name">Provincial Constant(KP)</field> |
1680 | + <field eval="150" name="sequence"/> |
1681 | + <field name="code">KP</field> |
1682 | + <field name="category_id" ref="PCALC"/> |
1683 | + <field eval="0" name="appears_on_payslip"/> |
1684 | + <field eval="1" name="active"/> |
1685 | + <field name="condition_select">none</field> |
1686 | + <field name="amount_select">code</field> |
1687 | + <field name="amount_python_compute">result = (A > 78043 and 3168) or (A > 39020 and A <= 78043 and 1600) or 0</field> |
1688 | + </record> |
1689 | + |
1690 | + <record id="hr_salary_rule_k1p" model="hr.salary.rule"> |
1691 | + <field name="name">Provincial Personal Tax Credit(K1P)</field> |
1692 | + <field eval="151" name="sequence"/> |
1693 | + <field name="code">K1P</field> |
1694 | + <field name="category_id" ref="PCALC"/> |
1695 | + <field eval="0" name="appears_on_payslip"/> |
1696 | + <field eval="1" name="active"/> |
1697 | + <field name="condition_select">none</field> |
1698 | + <field name="amount_select">code</field> |
1699 | + <field name="amount_python_compute">result = 0.0505 * TCP</field> |
1700 | + </record> |
1701 | + |
1702 | + <record id="hr_salary_rule_k2p" model="hr.salary.rule"> |
1703 | + <field name="name">Provincial CPP and EI Tax Credits(K2P)</field> |
1704 | + <field eval="151" name="sequence"/> |
1705 | + <field name="code">K2P</field> |
1706 | + <field name="category_id" ref="PCALC"/> |
1707 | + <field eval="0" name="appears_on_payslip"/> |
1708 | + <field eval="1" name="active"/> |
1709 | + <field name="condition_select">none</field> |
1710 | + <field name="amount_select">code</field> |
1711 | + <field name="amount_python_compute">result = (0.0505 * min(CPPYTD + (PR * C), CPPMAX)) + (0.0505 * min(EIYTD + (PR * EI), EIMAX))</field> |
1712 | + </record> |
1713 | + |
1714 | + <record id="hr_salary_rule_t4" model="hr.salary.rule"> |
1715 | + <field name="name">Annual Basic Provincial Tax(T4)</field> |
1716 | + <field eval="154" name="sequence"/> |
1717 | + <field name="code">T4</field> |
1718 | + <field name="category_id" ref="PCALC"/> |
1719 | + <field eval="0" name="appears_on_payslip"/> |
1720 | + <field eval="1" name="active"/> |
1721 | + <field name="condition_select">none</field> |
1722 | + <field name="amount_select">code</field> |
1723 | + <field name="amount_python_compute">result = max((V * A) - KP - K1P - K2P, 0.0)</field> |
1724 | + </record> |
1725 | + |
1726 | + <record id="hr_salary_rule_v1" model="hr.salary.rule"> |
1727 | + <field name="name">Surtax on Basic Provincial Tax(V1)</field> |
1728 | + <field eval="155" name="sequence"/> |
1729 | + <field name="code">V1</field> |
1730 | + <field name="category_id" ref="PCALC"/> |
1731 | + <field eval="0" name="appears_on_payslip"/> |
1732 | + <field eval="1" name="active"/> |
1733 | + <field name="condition_select">none</field> |
1734 | + <field name="amount_select">code</field> |
1735 | + <field name="amount_python_compute">result = (T4 > 5392 and (0.20 * (T4 - 4213)) + (0.36 * (T4 - 5392))) or (T4 > 4213 and T4 <= 5392 and (0.20 * (T4 - 4213))) or 0</field> |
1736 | + </record> |
1737 | + |
1738 | + <record id="hr_salary_rule_v2" model="hr.salary.rule"> |
1739 | + <field name="name">Extra Tax for Ontario Health Premium(V2)</field> |
1740 | + <field eval="155" name="sequence"/> |
1741 | + <field name="code">V2</field> |
1742 | + <field name="category_id" ref="PCALC"/> |
1743 | + <field eval="0" name="appears_on_payslip"/> |
1744 | + <field eval="1" name="active"/> |
1745 | + <field name="condition_select">none</field> |
1746 | + <field name="amount_select">code</field> |
1747 | + <field name="amount_python_compute">result = (A > 200000 and min(900, (750 + (0.25 * (A - 200000))))) or (A > 72000 and A <= 200000 and min(750, (600 + (0.25 * (A - 72000))))) or (A > 48000 and A <= 72000 and min(600, (450 + (0.25 * (A - 48000))))) or (A > 36000 and A <= 48000 and min(450, (300 + (0.06 * (A - 36000))))) or (A > 20000 and A <= 36000 and min(300, (0.06 * (A - 20000)))) or 0</field> |
1748 | + </record> |
1749 | + |
1750 | + <record id="hr_salary_rule_s" model="hr.salary.rule"> |
1751 | + <field name="name">Ontario or British Columbia Tax Reduction(S)</field> |
1752 | + <field eval="156" name="sequence"/> |
1753 | + <field name="code">S</field> |
1754 | + <field name="category_id" ref="PCALC"/> |
1755 | + <field eval="0" name="appears_on_payslip"/> |
1756 | + <field eval="1" name="active"/> |
1757 | + <field name="condition_select">none</field> |
1758 | + <field name="amount_select">code</field> |
1759 | + <field name="amount_python_compute">result = max(min((2 * (217 + employee.y) - (T4 + V1)), T4 + V1 ), 0.0)</field> |
1760 | + </record> |
1761 | + |
1762 | + <record id="hr_salary_rule_t3" model="hr.salary.rule"> |
1763 | + <field name="name">Annual Basic Federal Tax(T3)</field> |
1764 | + <field eval="170" name="sequence"/> |
1765 | + <field name="code">T3</field> |
1766 | + <field name="category_id" ref="FCALC"/> |
1767 | + <field eval="0" name="appears_on_payslip"/> |
1768 | + <field eval="1" name="active"/> |
1769 | + <field name="condition_select">none</field> |
1770 | + <field name="amount_select">code</field> |
1771 | + <field name="amount_python_compute">result = max((R * A) - K - K1 - K2 - K3 - K4, 0.0)</field> |
1772 | + </record> |
1773 | + |
1774 | + <record id="hr_salary_rule_t1" model="hr.salary.rule"> |
1775 | + <field name="name">Annual Federal Tax(T1)</field> |
1776 | + <field eval="170" name="sequence"/> |
1777 | + <field name="code">T1</field> |
1778 | + <field name="category_id" ref="FCALC"/> |
1779 | + <field eval="0" name="appears_on_payslip"/> |
1780 | + <field eval="1" name="active"/> |
1781 | + <field name="condition_select">none</field> |
1782 | + <field name="amount_select">code</field> |
1783 | + <field name="amount_python_compute">result = max(T3 - employee.lcf, 0.0)</field> |
1784 | + </record> |
1785 | + |
1786 | + <record id="hr_salary_rule_t2" model="hr.salary.rule"> |
1787 | + <field name="name">Annual Provincial Tax Deduction - Ontario(T2)</field> |
1788 | + <field eval="160" name="sequence"/> |
1789 | + <field name="code">T2</field> |
1790 | + <field name="category_id" ref="PCALC"/> |
1791 | + <field eval="0" name="appears_on_payslip"/> |
1792 | + <field eval="1" name="active"/> |
1793 | + <field name="condition_select">none</field> |
1794 | + <field name="amount_select">code</field> |
1795 | + <field name="amount_python_compute">result = max(T4 + V1 + V2 - S - employee.lcp, 0.0)</field> |
1796 | + </record> |
1797 | + |
1798 | + <record id="hr_salary_rule_t" model="hr.salary.rule"> |
1799 | + <field name="name">Tax Deductions(T)</field> |
1800 | + <field eval="190" name="sequence"/> |
1801 | + <field name="code">T</field> |
1802 | + <field name="category_id" ref="hr_payroll.DED"/> |
1803 | + <field eval="1" name="appears_on_payslip"/> |
1804 | + <field eval="1" name="active"/> |
1805 | + <field name="condition_select">none</field> |
1806 | + <field name="amount_select">code</field> |
1807 | + <field name="amount_python_compute">result = ((T1 + T2) / P) + L</field> |
1808 | + </record> |
1809 | + |
1810 | + <record id="hr_salary_rule_net" model="hr.salary.rule"> |
1811 | + <field name="name">Net Pay(N)</field> |
1812 | + <field eval="200" name="sequence"/> |
1813 | + <field name="code">N</field> |
1814 | + <field name="category_id" ref="hr_payroll.NET"/> |
1815 | + <field eval="1" name="appears_on_payslip"/> |
1816 | + <field eval="1" name="active"/> |
1817 | + <field name="condition_select">none</field> |
1818 | + <field name="amount_select">code</field> |
1819 | + <field name="amount_python_compute">result = categories.I + categories.ALW - categories.DED - categories.SDED</field> |
1820 | + </record> |
1821 | + |
1822 | + <!-- Inputs --> |
1823 | + |
1824 | + <record id="hr_input_l" model="hr.rule.input"> |
1825 | + <field name="name">Extra Tax Deductions(L)</field> |
1826 | + <field name="code">L</field> |
1827 | + <field name="input_id" ref="hr_salary_rule_l"/> |
1828 | + </record> |
1829 | + |
1830 | + <!-- Salary Structure --> |
1831 | + <record id="hr_structure_cabase" model="hr.payroll.structure"> |
1832 | + <field name="code">CABASE</field> |
1833 | + <field name="name">Ontario Base - Non-Commisioned</field> |
1834 | + <field eval="[(6, 0, [ref('hr_salary_rule_p'), ref('hr_salary_rule_pocc'), ref('hr_salary_rule_pr'), ref('hr_salary_rule_cppmax'), ref('hr_salary_rule_eimax'), ref('hr_salary_rule_ca_wage'), ref('hr_salary_rule_vpay'), ref('hr_salary_rule_u1'), ref('hr_salary_rule_l'), ref('hr_salary_rule_hd'), ref('hr_salary_rule_f'), ref('hr_salary_rule_f1'), ref('hr_salary_rule_f2'), ref('hr_salary_rule_i'), ref('hr_salary_rule_pi_ytd'), ref('hr_salary_rule_ie_ytd'), ref('hr_salary_rule_a'), ref('hr_salary_rule_r'), ref('hr_salary_rule_c'), ref('hr_salary_rule_ei'), ref('hr_salary_rule_c_ytd'), ref('hr_salary_rule_ei_ytd'), ref('hr_salary_rule_empc'), ref('hr_salary_rule_empei'), ref('hr_salary_rule_k'), ref('hr_salary_rule_k1'), ref('hr_salary_rule_k2'), ref('hr_salary_rule_k3'), ref('hr_salary_rule_k4'), ref('hr_salary_rule_tcp'), ref('hr_salary_rule_v'),ref('hr_salary_rule_kp'), ref('hr_salary_rule_k1p'), ref('hr_salary_rule_k2p'), ref('hr_salary_rule_t4'), ref('hr_salary_rule_v1'), ref('hr_salary_rule_v2'), ref('hr_salary_rule_s'), ref('hr_salary_rule_t2'), ref('hr_salary_rule_t1'), ref('hr_salary_rule_t3'), ref('hr_salary_rule_t'), ref('hr_salary_rule_net')])]" name="rule_ids"/> |
1835 | + </record> |
1836 | + |
1837 | + </data> |
1838 | +</openerp> |
1839 | |
1840 | === added file 'l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_view.xml' |
1841 | --- l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_view.xml 1970-01-01 00:00:00 +0000 |
1842 | +++ l10n_ca_on_hr_payroll/l10n_ca_on_hr_payroll_view.xml 2012-12-21 16:45:28 +0000 |
1843 | @@ -0,0 +1,149 @@ |
1844 | +<?xml version="1.0" encoding="utf-8"?> |
1845 | +<openerp> |
1846 | + <data> |
1847 | + <!-- |
1848 | + <record id="hr_payroll_tax_table_form" model="ir.ui.view"> |
1849 | + <field name="name">hr.payroll.tax.table.form</field> |
1850 | + <field name="model">hr.payroll.tax.table</field> |
1851 | + <field name="type">form</field> |
1852 | + <field name="arch" type="xml"> |
1853 | + <form string="Canadian Tax Table"> |
1854 | + <field name="name" select="1" readonly="1"/> |
1855 | + <field name="year" select="1" on_change="onchange_year(year,province)"/> |
1856 | + <field name="date_from"/> |
1857 | + <field name="date_to"/> |
1858 | + <field name="fed_prov"/> |
1859 | + <field name="province" attrs="{'readonly': [('fed_prov','!=','provincial')], 'required': [('fed_prov','=','provincial')]}" on_change="onchange_year(year,province)"/> |
1860 | + <field name="line_ids" nolabel="1" colspan="4" widget="one2many_list"/> |
1861 | + </form> |
1862 | + </field> |
1863 | + </record> |
1864 | + |
1865 | + <record id="hr_payroll_tax_table_tree" model="ir.ui.view"> |
1866 | + <field name="name">hr.payroll.tax.table.tree</field> |
1867 | + <field name="model">hr.payroll.tax.table</field> |
1868 | + <field name="type">tree</field> |
1869 | + <field name="arch" type="xml"> |
1870 | + <tree string="Canadian Tax Table"> |
1871 | + <field name="name" /> |
1872 | + <field name="year" /> |
1873 | + <field name="fed_prov"/> |
1874 | + <field name="province" /> |
1875 | + </tree> |
1876 | + </field> |
1877 | + </record> |
1878 | + |
1879 | + <record id="hr_payroll_tax_table_line_form" model="ir.ui.view"> |
1880 | + <field name="name">hr.payroll.tax.table.line.form</field> |
1881 | + <field name="model">hr.payroll.tax.table.line</field> |
1882 | + <field name="type">form</field> |
1883 | + <field name="arch" type="xml"> |
1884 | + <form string="Canadian Tax Table"> |
1885 | + <group col="6" colspan="4"> |
1886 | + <field name="name" readonly="1"/> |
1887 | + <field name="code" select="1" colspan="1"/> |
1888 | + <field name="inc_from"/> |
1889 | + <field name="inc_to" /> |
1890 | + <field name="rate" /> |
1891 | + </group> |
1892 | + </form> |
1893 | + </field> |
1894 | + </record> |
1895 | + |
1896 | + <record id="hr_payroll_tax_table_line_tree" model="ir.ui.view"> |
1897 | + <field name="name">hr.payroll.tax.table.line.tree</field> |
1898 | + <field name="model">hr.payroll.tax.table.line</field> |
1899 | + <field name="type">tree</field> |
1900 | + <field name="arch" type="xml"> |
1901 | + <tree string="Canadian Tax Table"> |
1902 | + <field name="name" readonly="1"/> |
1903 | + <field name="code" select="1" colspan="1"/> |
1904 | + <field name="inc_from"/> |
1905 | + <field name="inc_to" /> |
1906 | + <field name="rate" /> |
1907 | + </tree> |
1908 | + </field> |
1909 | + </record> |
1910 | + |
1911 | + <record id="action_hr_payroll_tax_table_tree" model="ir.actions.act_window"> |
1912 | + <field name="name">Canadian Tax Table</field> |
1913 | + <field name="res_model">hr.payroll.tax.table</field> |
1914 | + <field name="view_type">form</field> |
1915 | + <field name="view_mode">tree,form</field> |
1916 | + <field name="view_id" ref="hr_payroll_tax_table_tree"/> |
1917 | + </record> |
1918 | + |
1919 | + <menuitem id="menu_hr_payroll_tax_table_tree" action="action_hr_payroll_tax_table_tree" parent="hr_payroll.payroll_configure"/> |
1920 | + --> |
1921 | + |
1922 | + <record id="hr_employee_view_form_inherit" model="ir.ui.view"> |
1923 | + <field name="name">hr.employee.view.form.inherit</field> |
1924 | + <field name="model">hr.employee</field> |
1925 | + <field name="type">form</field> |
1926 | + <field name="inherit_id" ref="hr.view_employee_form"/> |
1927 | + <field name="arch" type="xml"> |
1928 | + <notebook position="inside"> |
1929 | + <page string="Canadian Payroll"> |
1930 | + <group colspan="1" col="2"> |
1931 | + <separator string="Claim Codes" colspan="2"/> |
1932 | + <field name="td1f" colspan="1"/> |
1933 | + <field name="td1p" colspan="1"/> |
1934 | + </group> |
1935 | + <group colspan="3" col="2"> |
1936 | + <separator string="Exemptions" colspan="2"/> |
1937 | + <group colspan="1" col="2"> |
1938 | + <field name="ei_ytd_adj"/> |
1939 | + <field name="cpp_ytd_adj"/> |
1940 | + </group> |
1941 | + <group colspan="1" col="2"> |
1942 | + <field name="ei_exempt"/> |
1943 | + <field name="cpp_exempt"/> |
1944 | + <field name="qpip_exempt"/> |
1945 | + </group> |
1946 | + </group> |
1947 | + <separator string="Deductions" colspan="4"/> |
1948 | + <field name="f1"/> |
1949 | + <field name="f2"/> |
1950 | + <field name="hd"/> |
1951 | + <field name="lcf"/> |
1952 | + <field name="lcp"/> |
1953 | + <field name="f"/> |
1954 | + <field name="k3"/> |
1955 | + <field name="u1"/> |
1956 | + <field name="y"/> |
1957 | + <field name="l"/> |
1958 | + </page> |
1959 | + </notebook> |
1960 | + </field> |
1961 | + </record> |
1962 | + |
1963 | + <!-- Contract View --> |
1964 | + <record id="hr_contract_form_inherit" model="ir.ui.view"> |
1965 | + <field name="name">hr.contract.view.form.inherit</field> |
1966 | + <field name="model">hr.contract</field> |
1967 | + <field name="type">form</field> |
1968 | + <field name="inherit_id" ref="hr_contract.hr_contract_view_form"/> |
1969 | + <field name="arch" type="xml"> |
1970 | + <xpath expr="/form/notebook/page/group/field[@name='working_hours']" position="after"> |
1971 | + <field name="pays_per_year"/> |
1972 | + </xpath> |
1973 | + </field> |
1974 | + </record> |
1975 | + |
1976 | + <!-- End Contract View--> |
1977 | + |
1978 | + <!-- Salary Rules - unhide the sequence, not sure why it's invisible --> |
1979 | + <record id="hr_salary_rule_list_inherit" model="ir.ui.view"> |
1980 | + <field name="name">hr.salary.rule.list.inherit</field> |
1981 | + <field name="model">hr.salary.rule</field> |
1982 | + <field name="type">tree</field> |
1983 | + <field name="inherit_id" ref="hr_payroll.hr_salary_rule_list"/> |
1984 | + <field name="arch" type="xml"> |
1985 | + <xpath expr="//field[@name='sequence']" position="replace"> |
1986 | + <field name="sequence" groups="base.group_extended"/> |
1987 | + </xpath> |
1988 | + </field> |
1989 | + </record> |
1990 | + |
1991 | + </data> |
1992 | +</openerp> |
1993 | |
1994 | === added directory 'l10n_ca_on_hr_payroll/static' |
1995 | === added directory 'l10n_ca_on_hr_payroll/static/src' |
1996 | === added directory 'l10n_ca_on_hr_payroll/static/src/img' |
1997 | === added file 'l10n_ca_on_hr_payroll/static/src/img/icon.png' |
1998 | Binary files l10n_ca_on_hr_payroll/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_on_hr_payroll/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |
1999 | === added directory 'l10n_ca_qc_hr_payroll' |
2000 | === added file 'l10n_ca_qc_hr_payroll/__init__.py' |
2001 | --- l10n_ca_qc_hr_payroll/__init__.py 1970-01-01 00:00:00 +0000 |
2002 | +++ l10n_ca_qc_hr_payroll/__init__.py 2012-12-21 16:45:28 +0000 |
2003 | @@ -0,0 +1,24 @@ |
2004 | +#-*- coding:utf-8 -*- |
2005 | +############################################################################## |
2006 | +# |
2007 | +# Copyright (C) 2012 OpenERP Canada. All Rights Reserved. |
2008 | +# |
2009 | +# This program is free software: you can redistribute it and/or modify |
2010 | +# it under the terms of the GNU Affero General Public License as published |
2011 | +# by |
2012 | +# the Free Software Foundation, either version 3 of the License, or |
2013 | +# (at your option) any later version. |
2014 | +# |
2015 | +# This program is distributed in the hope that it will be useful, |
2016 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2017 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2018 | +# GNU Affero General Public License for more details. |
2019 | +# |
2020 | +# You should have received a copy of the GNU Affero General Public License |
2021 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2022 | +# |
2023 | +############################################################################## |
2024 | + |
2025 | +import l10n_ca_qc_hr_payroll |
2026 | + |
2027 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2028 | |
2029 | === added file 'l10n_ca_qc_hr_payroll/__openerp__.py' |
2030 | --- l10n_ca_qc_hr_payroll/__openerp__.py 1970-01-01 00:00:00 +0000 |
2031 | +++ l10n_ca_qc_hr_payroll/__openerp__.py 2012-12-21 16:45:28 +0000 |
2032 | @@ -0,0 +1,46 @@ |
2033 | +#-*- coding:utf-8 -*- |
2034 | +############################################################################## |
2035 | +# |
2036 | +# Copyright (C) 2012 Savoir-faire Linux. All Rights Reserved. |
2037 | +# |
2038 | +# This program is free software: you can redistribute it and/or modify |
2039 | +# it under the terms of the GNU Affero General Public License as published by |
2040 | +# the Free Software Foundation, either version 3 of the License, or |
2041 | +# (at your option) any later version. |
2042 | +# |
2043 | +# This program is distributed in the hope that it will be useful, |
2044 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2045 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2046 | +# GNU Affero General Public License for more details. |
2047 | +# |
2048 | +# You should have received a copy of the GNU Affero General Public License |
2049 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2050 | +# |
2051 | +############################################################################## |
2052 | +{ |
2053 | + 'name': 'Canada - Quebec - Payroll', |
2054 | + 'category': 'Localization', |
2055 | + 'version': '0.1', |
2056 | + 'license': 'AGPL-3', |
2057 | + 'category': 'Generic Modules/Human Resources', |
2058 | + 'description': """ |
2059 | +Quebec Payroll Rules |
2060 | +============================== |
2061 | + * Adds all Quebec Salary Rules |
2062 | + """, |
2063 | + 'author':'Savoir-faire Linux', |
2064 | + 'website':'http://www.savoirfairelinux.com', |
2065 | + 'depends': [ |
2066 | + 'l10n_ca_hr_payroll', |
2067 | + ], |
2068 | + 'data': [ |
2069 | + 'l10n_ca_qc_hr_payroll_view.xml', |
2070 | + 'l10n_ca_qc_hr_payroll_data.xml', |
2071 | + ], |
2072 | + 'test': [], |
2073 | + 'demo': [], |
2074 | + 'installable': True, |
2075 | + 'active': False, |
2076 | +} |
2077 | + |
2078 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2079 | |
2080 | === added file 'l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll.py' |
2081 | --- l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll.py 1970-01-01 00:00:00 +0000 |
2082 | +++ l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll.py 2012-12-21 16:45:28 +0000 |
2083 | @@ -0,0 +1,38 @@ |
2084 | +#-*- coding:utf-8 -*- |
2085 | +############################################################################## |
2086 | +# |
2087 | +# Copyright (C) 2012 Savoir-faire Linux. All Rights Reserved. |
2088 | +# |
2089 | +# This program is free software: you can redistribute it and/or modify |
2090 | +# it under the terms of the GNU Affero General Public License as published |
2091 | +# by |
2092 | +# the Free Software Foundation, either version 3 of the License, or |
2093 | +# (at your option) any later version. |
2094 | +# |
2095 | +# This program is distributed in the hope that it will be useful, |
2096 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2097 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2098 | +# GNU Affero General Public License for more details. |
2099 | +# |
2100 | +# You should have received a copy of the GNU Affero General Public License |
2101 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2102 | +# |
2103 | +############################################################################## |
2104 | + |
2105 | +from osv import fields, osv |
2106 | + |
2107 | +class hr_employee(osv.osv): |
2108 | + _name = 'hr.employee' |
2109 | + _inherit = 'hr.employee' |
2110 | + |
2111 | + _columns = { |
2112 | + 'tp10153': fields.float('Source Deductions Return (TP-1015.3)', digits=(16,2), required=True, help="Source Deductions Return"), |
2113 | + } |
2114 | + |
2115 | + _defaults = { |
2116 | + 'tp10153': 10925.00, |
2117 | + } |
2118 | + |
2119 | +hr_employee() |
2120 | + |
2121 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2122 | |
2123 | === added file 'l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_data.xml' |
2124 | --- l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_data.xml 1970-01-01 00:00:00 +0000 |
2125 | +++ l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_data.xml 2012-12-21 16:45:28 +0000 |
2126 | @@ -0,0 +1,534 @@ |
2127 | +<?xml version="1.0" encoding="utf-8"?> |
2128 | +<openerp> |
2129 | + <data noupdate="1"> |
2130 | + |
2131 | + <!-- Quebec Parental Insurance Plan - 120 --> |
2132 | + |
2133 | + <record id="rule_qc_qpip_maxie" model="hr.salary.rule"> |
2134 | + <field name="name">QPIP - Employee and Employer Maximum Insurable Earnings (QPIPMAXIE)</field> |
2135 | + <field name="sequence" eval="120"/> |
2136 | + <field name="code">QPIPMAXIE</field> |
2137 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2138 | + <field name="appears_on_payslip" eval="0"/> |
2139 | + <field name="active" eval="1"/> |
2140 | + <field name="condition_select">none</field> |
2141 | + <field name="amount_select">code</field> |
2142 | + <field name="amount_python_compute">result = min(GROSS,66000)</field> |
2143 | + </record> |
2144 | + |
2145 | + <!-- Quebec Parental Insurance Plan - Employee - 121 --> |
2146 | + |
2147 | + <record id="rule_qc_qpip_ee_rate" model="hr.salary.rule"> |
2148 | + <field name="name">QPIP - Employee Rate - 0.559 % (QPIPRATE)</field> |
2149 | + <field name="sequence" eval="121"/> |
2150 | + <field name="code">QPIPEERATE</field> |
2151 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2152 | + <field name="appears_on_payslip" eval="0"/> |
2153 | + <field name="active" eval="1"/> |
2154 | + <field name="condition_select">none</field> |
2155 | + <field name="amount_select">fix</field> |
2156 | + <field name="quantity">1.0</field> |
2157 | + <field name="amount_fix">0.559</field> |
2158 | + </record> |
2159 | + |
2160 | + <record id="rule_qc_qpip_ee_maxc" model="hr.salary.rule"> |
2161 | + <field name="name">QPIP - Employee Maximum Contribution (QPIPEEMAXC)</field> |
2162 | + <field name="sequence" eval="122"/> |
2163 | + <field name="code">QPIPEEMAXC</field> |
2164 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2165 | + <field name="appears_on_payslip" eval="0"/> |
2166 | + <field name="active" eval="1"/> |
2167 | + <field name="condition_select">none</field> |
2168 | + <field name="amount_select">code</field> |
2169 | + <field name="amount_python_compute">result = QPIPMAXIE * QPIPEERATE * 0.01</field> |
2170 | + </record> |
2171 | + |
2172 | + <record id="rule_qc_qpip_ee_pytdc" model="hr.salary.rule"> |
2173 | + <field name="name">QPIP - Employee - Previous Year To Date Contribution (QPIPEEPYTDC)</field> |
2174 | + <field name="sequence" eval="122"/> |
2175 | + <field name="code">QPIPEEPYTDC</field> |
2176 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2177 | + <field name="appears_on_payslip" eval="0"/> |
2178 | + <field name="active" eval="1"/> |
2179 | + <field name="condition_select">none</field> |
2180 | + <field name="amount_select">code</field> |
2181 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2182 | +date_to = payslip.date_to |
2183 | +result = payslip.sum('QPIPEEYTDC',date_from,date_to) |
2184 | + </field> |
2185 | + </record> |
2186 | + |
2187 | + <record id="rule_qc_qpip_ee_c" model="hr.salary.rule"> |
2188 | + <field name="name">QPIP - Employee Contribution (QPIPEEC)</field> |
2189 | + <field name="sequence" eval="123"/> |
2190 | + <field name="code">QPIPEEC</field> |
2191 | + <field name="category_id" ref="hr_payroll.DED"/> |
2192 | + <field name="appears_on_payslip" eval="1"/> |
2193 | + <field name="active" eval="1"/> |
2194 | + <field name="condition_select">none</field> |
2195 | + <field name="amount_select">code</field> |
2196 | + <field name="amount_python_compute">if (QPIPEEPYTDC > QPIPEEMAXC): |
2197 | + result = 0 |
2198 | +else: |
2199 | + if (QPIPEEMAXC - QPIPEEPYTDC - (GROSS * QPIPEERATE * 0.01 / P) >= 0): |
2200 | + result = GROSS * QPIPEERATE * 0.01 / P |
2201 | + else: |
2202 | + result = QPIPEEMAXC - QPIPEEPYTDC |
2203 | + </field> |
2204 | + </record> |
2205 | + |
2206 | + <record id="rule_qc_qpip_ee_ytdc" model="hr.salary.rule"> |
2207 | + <field name="name">QPIP - Employee - Year To Date Contribution (QPIPEEYTDC)</field> |
2208 | + <field name="sequence" eval="124"/> |
2209 | + <field name="code">QPIPEEYTDC</field> |
2210 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2211 | + <field name="appears_on_payslip" eval="1"/> |
2212 | + <field name="active" eval="1"/> |
2213 | + <field name="condition_select">none</field> |
2214 | + <field name="amount_select">code</field> |
2215 | + <field name="amount_python_compute">result = QPIPEEPYTDC + QPIPEEC</field> |
2216 | + </record> |
2217 | + |
2218 | + <!-- Quebec Parental Insurance Plan - Employer - 125 --> |
2219 | + |
2220 | + <record id="rule_qc_qpip_er_rate" model="hr.salary.rule"> |
2221 | + <field name="name">QPIP - Employer Rate - 0.782 % (QPIPERRATE)</field> |
2222 | + <field name="sequence" eval="125"/> |
2223 | + <field name="code">QPIPERRATE</field> |
2224 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2225 | + <field name="appears_on_payslip" eval="0"/> |
2226 | + <field name="active" eval="1"/> |
2227 | + <field name="condition_select">none</field> |
2228 | + <field name="amount_select">fix</field> |
2229 | + <field name="quantity">1.0</field> |
2230 | + <field name="amount_fix">0.782</field> |
2231 | + </record> |
2232 | + |
2233 | + <record id="rule_qc_qpip_er_maxc" model="hr.salary.rule"> |
2234 | + <field name="name">QPIP - Employer Maximum Contribution (QPIPERMAXC)</field> |
2235 | + <field name="sequence" eval="126"/> |
2236 | + <field name="code">QPIPERMAXC</field> |
2237 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2238 | + <field name="appears_on_payslip" eval="0"/> |
2239 | + <field name="active" eval="1"/> |
2240 | + <field name="condition_select">none</field> |
2241 | + <field name="amount_select">code</field> |
2242 | + <field name="amount_python_compute">result = QPIPMAXIE * QPIPERRATE * 0.01</field> |
2243 | + </record> |
2244 | + |
2245 | + <record id="rule_qc_qpip_er_pytdc" model="hr.salary.rule"> |
2246 | + <field name="name">QPIP - Employer - Previous Year To Date Contribution (QPIPERPYTDC)</field> |
2247 | + <field name="sequence" eval="126"/> |
2248 | + <field name="code">QPIPERPYTDC</field> |
2249 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2250 | + <field name="appears_on_payslip" eval="0"/> |
2251 | + <field name="active" eval="1"/> |
2252 | + <field name="condition_select">none</field> |
2253 | + <field name="amount_select">code</field> |
2254 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2255 | +date_to = payslip.date_to |
2256 | +result = payslip.sum('QPIPERYTDC',date_from,date_to) |
2257 | + </field> |
2258 | + </record> |
2259 | + |
2260 | + <record id="rule_qc_qpip_er_c" model="hr.salary.rule"> |
2261 | + <field name="name">QPIP - Employer Contribution (QPIPERC)</field> |
2262 | + <field name="sequence" eval="127"/> |
2263 | + <field name="code">QPIPERC</field> |
2264 | + <field name="category_id" ref="l10n_ca_hr_payroll.EMP"/> |
2265 | + <field name="appears_on_payslip" eval="0"/> |
2266 | + <field name="active" eval="1"/> |
2267 | + <field name="condition_select">none</field> |
2268 | + <field name="amount_select">code</field> |
2269 | + <field name="amount_python_compute">if (QPIPERPYTDC > QPIPERMAXC): |
2270 | + result = 0 |
2271 | +else: |
2272 | + if (QPIPERMAXC - QPIPERPYTDC - (GROSS * QPIPERRATE * 0.01 / P) >= 0): |
2273 | + result = GROSS * QPIPERRATE * 0.01 / P |
2274 | + else: |
2275 | + result = QPIPERMAXC - QPIPERPYTDC |
2276 | + </field> |
2277 | + </record> |
2278 | + |
2279 | + <record id="rule_qc_qpip_er_ytdc" model="hr.salary.rule"> |
2280 | + <field name="name">QPIP - Employer - Year To Date Contribution (QPIPERYTDC)</field> |
2281 | + <field name="sequence" eval="128"/> |
2282 | + <field name="code">QPIPERYTDC</field> |
2283 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2284 | + <field name="appears_on_payslip" eval="0"/> |
2285 | + <field name="active" eval="1"/> |
2286 | + <field name="condition_select">none</field> |
2287 | + <field name="amount_select">code</field> |
2288 | + <field name="amount_python_compute">result = QPIPERPYTDC + QPIPERC</field> |
2289 | + </record> |
2290 | + |
2291 | + <!-- Quebec Pension Plan - 130 --> |
2292 | + |
2293 | + <record id="rule_qc_qpp_maxie" model="hr.salary.rule"> |
2294 | + <field name="name">QPP - Employee and Employer Maximum Insurable Earnings (QPPMAXIE)</field> |
2295 | + <field name="sequence" eval="130"/> |
2296 | + <field name="code">QPPMAXIE</field> |
2297 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2298 | + <field name="appears_on_payslip" eval="0"/> |
2299 | + <field name="active" eval="1"/> |
2300 | + <field name="condition_select">none</field> |
2301 | + <field name="amount_select">code</field> |
2302 | + <field name="amount_python_compute">result = min(GROSS,55100)</field> |
2303 | + </record> |
2304 | + |
2305 | + <!-- Quebec Pension Plan - Employee - 130 --> |
2306 | + |
2307 | + <record id="rule_qc_qpp_ee_rate" model="hr.salary.rule"> |
2308 | + <field name="name">QPP - Employee - Rate 5.025% (QPPEERATE)</field> |
2309 | + <field name="sequence" eval="130"/> |
2310 | + <field name="code">QPPEERATE</field> |
2311 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2312 | + <field name="appears_on_payslip" eval="0"/> |
2313 | + <field name="active" eval="1"/> |
2314 | + <field name="condition_select">none</field> |
2315 | + <field name="amount_select">fix</field> |
2316 | + <field name="quantity">1.0</field> |
2317 | + <field name="amount_fix">5.025</field> |
2318 | + </record> |
2319 | + |
2320 | + <record id="rule_qc_qpp_ee_maxc" model="hr.salary.rule"> |
2321 | + <field name="name">QPP - Employee - Maximum Contribution (QPPEEMAXC)</field> |
2322 | + <field name="sequence" eval="131"/> |
2323 | + <field name="code">QPPEEMAXC</field> |
2324 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2325 | + <field name="appears_on_payslip" eval="0"/> |
2326 | + <field name="active" eval="1"/> |
2327 | + <field name="condition_select">none</field> |
2328 | + <field name="amount_select">code</field> |
2329 | + <field name="amount_python_compute">result = QPPMAXIE * QPPEERATE * 0.01</field> |
2330 | + </record> |
2331 | + |
2332 | + <record id="rule_qc_qpp_ee_pytdc" model="hr.salary.rule"> |
2333 | + <field name="name">QPP - Employee - Previous Year To Date Contribution (QPPEEPYTDC)</field> |
2334 | + <field name="sequence" eval="132"/> |
2335 | + <field name="code">QPPEEPYTDC</field> |
2336 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2337 | + <field name="appears_on_payslip" eval="0"/> |
2338 | + <field name="active" eval="1"/> |
2339 | + <field name="condition_select">none</field> |
2340 | + <field name="amount_select">code</field> |
2341 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2342 | +date_to = payslip.date_to |
2343 | +result = payslip.sum('QPPEEYTDC',date_from,date_to) |
2344 | + </field> |
2345 | + </record> |
2346 | + |
2347 | + <record id="rule_qc_qpp_ee_c" model="hr.salary.rule"> |
2348 | + <field name="name">QPP - Employee Contribution (QPPEEC)</field> |
2349 | + <field name="sequence" eval="133"/> |
2350 | + <field name="code">QPPEEC</field> |
2351 | + <field name="category_id" ref="hr_payroll.DED"/> |
2352 | + <field name="appears_on_payslip" eval="1"/> |
2353 | + <field name="active" eval="1"/> |
2354 | + <field name="condition_select">none</field> |
2355 | + <field name="amount_select">code</field> |
2356 | + <field name="amount_python_compute">if (QPPEEPYTDC > QPPEEMAXC): |
2357 | + result = 0 |
2358 | +else: |
2359 | + if (QPPEEMAXC - QPPEEPYTDC - (GROSS * QPPEERATE * 0.01 / P) >= 0): |
2360 | + result = GROSS * QPPEERATE * 0.01 / P |
2361 | + else: |
2362 | + result = QPPEEMAXC - QPPEEPYTDC |
2363 | + </field> |
2364 | + </record> |
2365 | + |
2366 | + <record id="rule_qc_qpp_ee_ytdc" model="hr.salary.rule"> |
2367 | + <field name="name">QPP - Employee - Year To Date Contribution (QPPEEYTDC)</field> |
2368 | + <field name="sequence" eval="134"/> |
2369 | + <field name="code">QPPEEYTDC</field> |
2370 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2371 | + <field name="appears_on_payslip" eval="1"/> |
2372 | + <field name="active" eval="1"/> |
2373 | + <field name="condition_select">none</field> |
2374 | + <field name="amount_select">code</field> |
2375 | + <field name="amount_python_compute">result = QPPEEPYTDC + QPPEEC</field> |
2376 | + </record> |
2377 | + |
2378 | + <!-- Quebec Pension Plan - Employer - 135 --> |
2379 | + |
2380 | + <record id="rule_qc_qpp_er_rate" model="hr.salary.rule"> |
2381 | + <field name="name">QPP - Employer - Rate 5.025% (QPPERRATE)</field> |
2382 | + <field name="sequence" eval="135"/> |
2383 | + <field name="code">QPPERRATE</field> |
2384 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2385 | + <field name="appears_on_payslip" eval="0"/> |
2386 | + <field name="active" eval="1"/> |
2387 | + <field name="condition_select">none</field> |
2388 | + <field name="amount_select">fix</field> |
2389 | + <field name="quantity">1.0</field> |
2390 | + <field name="amount_fix">5.025</field> |
2391 | + </record> |
2392 | + |
2393 | + <record id="rule_qc_qpp_er_maxc" model="hr.salary.rule"> |
2394 | + <field name="name">QPP - Employer - Maximum Contribution (QPPERMAXC)</field> |
2395 | + <field name="sequence" eval="136"/> |
2396 | + <field name="code">QPPERMAXC</field> |
2397 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2398 | + <field name="appears_on_payslip" eval="0"/> |
2399 | + <field name="active" eval="1"/> |
2400 | + <field name="condition_select">none</field> |
2401 | + <field name="amount_select">code</field> |
2402 | + <field name="amount_python_compute">result = QPPMAXIE * QPPERRATE * 0.01</field> |
2403 | + </record> |
2404 | + |
2405 | + <record id="rule_qc_qpp_er_pytdc" model="hr.salary.rule"> |
2406 | + <field name="name">QPP - Employer - Previous Year To Date Contribution (QPPERPYTDC)</field> |
2407 | + <field name="sequence" eval="137"/> |
2408 | + <field name="code">QPPERPYTDC</field> |
2409 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2410 | + <field name="appears_on_payslip" eval="0"/> |
2411 | + <field name="active" eval="1"/> |
2412 | + <field name="condition_select">none</field> |
2413 | + <field name="amount_select">code</field> |
2414 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2415 | +date_to = payslip.date_to |
2416 | +result = payslip.sum('QPPERYTDC',date_from,date_to) |
2417 | + </field> |
2418 | + </record> |
2419 | + |
2420 | + <record id="rule_qc_qpp_er_c" model="hr.salary.rule"> |
2421 | + <field name="name">QPP - Employer Contribution (QPPERC)</field> |
2422 | + <field name="sequence" eval="138"/> |
2423 | + <field name="code">QPPERC</field> |
2424 | + <field name="category_id" ref="hr_payroll.DED"/> |
2425 | + <field name="appears_on_payslip" eval="0"/> |
2426 | + <field name="active" eval="1"/> |
2427 | + <field name="condition_select">none</field> |
2428 | + <field name="amount_select">code</field> |
2429 | + <field name="amount_python_compute">if (QPPERPYTDC > QPPERMAXC): |
2430 | + result = 0 |
2431 | +else: |
2432 | + if (QPPERMAXC - QPPERPYTDC - (GROSS * QPPERRATE * 0.01 / P) >= 0): |
2433 | + result = GROSS * QPPERRATE * 0.01 / P |
2434 | + else: |
2435 | + result = QPPERMAXC - QPPERPYTDC |
2436 | + </field> |
2437 | + </record> |
2438 | + |
2439 | + <record id="rule_qc_qpp_er_ytdc" model="hr.salary.rule"> |
2440 | + <field name="name">QPP - Employer - Year To Date Contribution (QPPERYTDC)</field> |
2441 | + <field name="sequence" eval="139"/> |
2442 | + <field name="code">QPPERYTDC</field> |
2443 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2444 | + <field name="appears_on_payslip" eval="0"/> |
2445 | + <field name="active" eval="1"/> |
2446 | + <field name="condition_select">none</field> |
2447 | + <field name="amount_select">code</field> |
2448 | + <field name="amount_python_compute">result = QPPERPYTDC + QPPERC</field> |
2449 | + </record> |
2450 | + |
2451 | + <!-- Employment insurance - Employee - 140 --> |
2452 | + |
2453 | + <record id="rule_qc_ei_ee_rate" model="hr.salary.rule"> |
2454 | + <field name="name">EI - Employee - Rate 1.47% (EIEERATE)</field> |
2455 | + <field name="sequence" eval="140"/> |
2456 | + <field name="code">EIEERATE</field> |
2457 | + <field name="category_id" ref="l10n_ca_hr_payroll.FCALC"/> |
2458 | + <field name="appears_on_payslip" eval="0"/> |
2459 | + <field name="active" eval="1"/> |
2460 | + <field name="condition_select">none</field> |
2461 | + <field name="amount_select">fix</field> |
2462 | + <field name="quantity">1.0</field> |
2463 | + <field name="amount_fix">1.47</field> |
2464 | + </record> |
2465 | + |
2466 | + <record id="rule_qc_ei_ee_maxc" model="hr.salary.rule"> |
2467 | + <field name="name">EI - Employee - Maximum Contribution (EIEEMAXC)</field> |
2468 | + <field name="sequence" eval="141"/> |
2469 | + <field name="code">EIEEMAXC</field> |
2470 | + <field name="category_id" ref="l10n_ca_hr_payroll.FCALC"/> |
2471 | + <field name="appears_on_payslip" eval="0"/> |
2472 | + <field name="active" eval="1"/> |
2473 | + <field name="condition_select">none</field> |
2474 | + <field name="amount_select">code</field> |
2475 | + <field name="amount_python_compute">result = EIMAXIE * EIEERATE * 0.01</field> |
2476 | + </record> |
2477 | + |
2478 | + <record id="rule_qc_ei_ee_pytdc" model="hr.salary.rule"> |
2479 | + <field name="name">EI - Employee - Previous Year To Date Contribution (EIEEPYTDC)</field> |
2480 | + <field name="sequence" eval="141"/> |
2481 | + <field name="code">EIEEPYTDC</field> |
2482 | + <field name="category_id" ref="l10n_ca_hr_payroll.FCALC"/> |
2483 | + <field name="appears_on_payslip" eval="0"/> |
2484 | + <field name="active" eval="1"/> |
2485 | + <field name="condition_select">none</field> |
2486 | + <field name="amount_select">code</field> |
2487 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2488 | +date_to = payslip.date_to |
2489 | +result = payslip.sum('EIEEYTDC',date_from,date_to) |
2490 | + </field> |
2491 | + </record> |
2492 | + |
2493 | + <record id="rule_qc_ei_ee_c" model="hr.salary.rule"> |
2494 | + <field name="name">EI - Employee Contribution (EIEEC)</field> |
2495 | + <field name="sequence" eval="142"/> |
2496 | + <field name="code">EIEEC</field> |
2497 | + <field name="category_id" ref="hr_payroll.DED"/> |
2498 | + <field name="appears_on_payslip" eval="1"/> |
2499 | + <field name="active" eval="1"/> |
2500 | + <field name="condition_select">none</field> |
2501 | + <field name="amount_select">code</field> |
2502 | + <field name="amount_python_compute">if (EIEEPYTDC > EIEEMAXC): |
2503 | + result = 0 |
2504 | +else: |
2505 | + if (EIEEMAXC - EIEEPYTDC - (GROSS * EIEERATE * 0.01 / P) >= 0): |
2506 | + result = GROSS * EIEERATE * 0.01 / P |
2507 | + else: |
2508 | + result = EIEEMAXC - EIEEPYTDC |
2509 | +</field> |
2510 | + </record> |
2511 | + |
2512 | + <record id="rule_qc_ei_ee_ytdc" model="hr.salary.rule"> |
2513 | + <field name="name">EI - Employee - Year To Date Contribution (EIEEYTDC)</field> |
2514 | + <field name="sequence" eval="143"/> |
2515 | + <field name="code">EIEEYTDC</field> |
2516 | + <field name="category_id" ref="l10n_ca_hr_payroll.FCALC"/> |
2517 | + <field name="appears_on_payslip" eval="1"/> |
2518 | + <field name="active" eval="1"/> |
2519 | + <field name="condition_select">none</field> |
2520 | + <field name="amount_select">code</field> |
2521 | + <field name="amount_python_compute">result = EIEEPYTDC + EIEEC</field> |
2522 | + </record> |
2523 | + |
2524 | + <!-- Insurance - Employee - 150 --> |
2525 | + |
2526 | + <record id="rule_qc_ins_eec" model="hr.salary.rule"> |
2527 | + <field name="name">Insurance - Employee Contribution (INSEEC)</field> |
2528 | + <field name="sequence" eval="150"/> |
2529 | + <field name="code">INSEEC</field> |
2530 | + <field name="category_id" ref="l10n_ca_hr_payroll.SDED"/> |
2531 | + <field name="appears_on_payslip" eval="1"/> |
2532 | + <field name="active" eval="1"/> |
2533 | + <field name="condition_select">none</field> |
2534 | + <field name="amount_select">code</field> |
2535 | + <field name="amount_python_compute">result = employee.eeins</field> |
2536 | + </record> |
2537 | + |
2538 | + <record id="rule_qc_ins_ee_ytdc" model="hr.salary.rule"> |
2539 | + <field name="name">Insurance - Employee - Year To Date Contribution (INSEEYTDC)</field> |
2540 | + <field name="sequence" eval="151"/> |
2541 | + <field name="code">INSEEYTDC</field> |
2542 | + <field name="category_id" ref="l10n_ca_hr_payroll.CALC"/> |
2543 | + <field name="appears_on_payslip" eval="1"/> |
2544 | + <field name="active" eval="1"/> |
2545 | + <field name="condition_select">none</field> |
2546 | + <field name="amount_select">code</field> |
2547 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2548 | +date_to = payslip.date_to |
2549 | +result = payslip.sum('INSEEYTDC',date_from,date_to) + INSEEC |
2550 | + </field> |
2551 | + </record> |
2552 | + |
2553 | + <!-- Insurance - Employer - 155 --> |
2554 | + |
2555 | + <record id="rule_qc_ins_erc" model="hr.salary.rule"> |
2556 | + <field name="name">Insurance - Employer Contribution (INSERC)</field> |
2557 | + <field name="sequence" eval="150"/> |
2558 | + <field name="code">INSERC</field> |
2559 | + <field name="category_id" ref="l10n_ca_hr_payroll.EMP"/> |
2560 | + <field name="appears_on_payslip" eval="0"/> |
2561 | + <field name="active" eval="1"/> |
2562 | + <field name="condition_select">none</field> |
2563 | + <field name="amount_select">code</field> |
2564 | + <field name="amount_python_compute">result = employee.erins</field> |
2565 | + </record> |
2566 | + |
2567 | + <!-- Quebec Income Tax - 180 --> |
2568 | + |
2569 | + <record id="rule_qc_qit_ti" model="hr.salary.rule"> |
2570 | + <field name="name">QIT - Taxable Income (QITTI)</field> |
2571 | + <field name="sequence" eval="181"/> |
2572 | + <field name="code">QITTI</field> |
2573 | + <field name="appears_on_payslip" eval="0"/> |
2574 | + <field name="active" eval="1"/> |
2575 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2576 | + <field name="condition_select">none</field> |
2577 | + <field name="amount_select">code</field> |
2578 | + <field name="amount_python_compute">result = GROSS - employee.tp10153</field> |
2579 | + </record> |
2580 | + |
2581 | + <record id="rule_qc_qit" model="hr.salary.rule"> |
2582 | + <field name="name">QIT - Quebec Income Tax (QIT)</field> |
2583 | + <field name="sequence" eval="182"/> |
2584 | + <field name="code">QIT</field> |
2585 | + <field name="appears_on_payslip" eval="1"/> |
2586 | + <field name="active" eval="1"/> |
2587 | + <field name="category_id" ref="hr_payroll.DED"/> |
2588 | + <field name="condition_select">none</field> |
2589 | + <field name="amount_select">code</field> |
2590 | + <field name="amount_python_compute"> |
2591 | +if QITTI >= 80200: |
2592 | + res = (QITTI - 80200) * 0.24 + 40100 * 0.24 + 40100 * 0.16 |
2593 | +if QITTI >= 40100 and QITTI < 80200: |
2594 | + res = (QITTI - 40100) * 0.2 + 40100 * 0.16 |
2595 | +if QITTI < 40100: |
2596 | + res = QITTI * 0.16 |
2597 | +result = res / P |
2598 | + </field> |
2599 | + </record> |
2600 | + |
2601 | + <record id="rule_qc_qit_ytd" model="hr.salary.rule"> |
2602 | + <field name="name">QIT - Year To Date (QITYTD)</field> |
2603 | + <field name="sequence" eval="183"/> |
2604 | + <field name="code">QITYTD</field> |
2605 | + <field name="category_id" ref="l10n_ca_hr_payroll.PCALC"/> |
2606 | + <field name="appears_on_payslip" eval="1"/> |
2607 | + <field name="active" eval="1"/> |
2608 | + <field name="condition_select">none</field> |
2609 | + <field name="amount_select">code</field> |
2610 | + <field name="amount_python_compute">date_from = payslip.date_to.split('-')[0] + '-01-01' |
2611 | +date_to = payslip.date_to |
2612 | +result = payslip.sum('QITYTD',date_from,date_to) + QIT |
2613 | + </field> |
2614 | + </record> |
2615 | + |
2616 | + <!-- Salary Structure --> |
2617 | + |
2618 | + <record id="hr_structure_qc" model="hr.payroll.structure"> |
2619 | + <field name="code">QC</field> |
2620 | + <field name="name">Quebec Base</field> |
2621 | + <field name="rule_ids" |
2622 | + eval="[(6, 0, [ |
2623 | + ref('rule_qc_qpip_maxie'), |
2624 | + ref('rule_qc_qpip_ee_rate'), |
2625 | + ref('rule_qc_qpip_ee_maxc'), |
2626 | + ref('rule_qc_qpip_ee_pytdc'), |
2627 | + ref('rule_qc_qpip_ee_c'), |
2628 | + ref('rule_qc_qpip_ee_ytdc'), |
2629 | + ref('rule_qc_qpip_er_rate'), |
2630 | + ref('rule_qc_qpip_er_maxc'), |
2631 | + ref('rule_qc_qpip_er_pytdc'), |
2632 | + ref('rule_qc_qpip_er_c'), |
2633 | + ref('rule_qc_qpip_er_ytdc'), |
2634 | + ref('rule_qc_qpp_maxie'), |
2635 | + ref('rule_qc_qpp_ee_rate'), |
2636 | + ref('rule_qc_qpp_ee_maxc'), |
2637 | + ref('rule_qc_qpp_ee_pytdc'), |
2638 | + ref('rule_qc_qpp_ee_c'), |
2639 | + ref('rule_qc_qpp_ee_ytdc'), |
2640 | + ref('rule_qc_qpp_er_rate'), |
2641 | + ref('rule_qc_qpp_er_maxc'), |
2642 | + ref('rule_qc_qpp_er_pytdc'), |
2643 | + ref('rule_qc_qpp_er_c'), |
2644 | + ref('rule_qc_qpp_er_ytdc'), |
2645 | + ref('rule_qc_ins_eec'), |
2646 | + ref('rule_qc_ins_erc'), |
2647 | + ref('rule_qc_ei_ee_rate'), |
2648 | + ref('rule_qc_ei_ee_maxc'), |
2649 | + ref('rule_qc_ei_ee_pytdc'), |
2650 | + ref('rule_qc_ei_ee_c'), |
2651 | + ref('rule_qc_ei_ee_ytdc'), |
2652 | + ref('rule_qc_qit_ti'), |
2653 | + ref('rule_qc_qit'), |
2654 | + ref('rule_qc_qit_ytd') |
2655 | + ])]"/> |
2656 | + <field name="parent_id" ref="l10n_ca_hr_payroll.hr_structure_ca_base"/> |
2657 | + </record> |
2658 | + |
2659 | + </data> |
2660 | +</openerp> |
2661 | |
2662 | === added file 'l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_view.xml' |
2663 | --- l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_view.xml 1970-01-01 00:00:00 +0000 |
2664 | +++ l10n_ca_qc_hr_payroll/l10n_ca_qc_hr_payroll_view.xml 2012-12-21 16:45:28 +0000 |
2665 | @@ -0,0 +1,18 @@ |
2666 | +<?xml version="1.0" encoding="utf-8"?> |
2667 | +<openerp> |
2668 | + <data> |
2669 | + |
2670 | + <record id="hr_employee_view_form_inherit" model="ir.ui.view"> |
2671 | + <field name="name">hr.employee.view.form.inherit</field> |
2672 | + <field name="model">hr.employee</field> |
2673 | + <field name="type">form</field> |
2674 | + <field name="inherit_id" ref="l10n_ca_hr_payroll.hr_employee_view_form_inherit"/> |
2675 | + <field name="arch" type="xml"> |
2676 | + <field name="td1" position="after"> |
2677 | + <field name="tp10153"/> |
2678 | + </field> |
2679 | + </field> |
2680 | + </record> |
2681 | + |
2682 | + </data> |
2683 | +</openerp> |
2684 | |
2685 | === added directory 'l10n_ca_qc_hr_payroll/static' |
2686 | === added directory 'l10n_ca_qc_hr_payroll/static/src' |
2687 | === added directory 'l10n_ca_qc_hr_payroll/static/src/img' |
2688 | === added file 'l10n_ca_qc_hr_payroll/static/src/img/icon.png' |
2689 | Binary files l10n_ca_qc_hr_payroll/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_qc_hr_payroll/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |
2690 | === added directory 'l10n_ca_qc_hr_payroll_account' |
2691 | === added file 'l10n_ca_qc_hr_payroll_account/__init__.py' |
2692 | --- l10n_ca_qc_hr_payroll_account/__init__.py 1970-01-01 00:00:00 +0000 |
2693 | +++ l10n_ca_qc_hr_payroll_account/__init__.py 2012-12-21 16:45:28 +0000 |
2694 | @@ -0,0 +1,22 @@ |
2695 | +#-*- coding:utf-8 -*- |
2696 | +############################################################################## |
2697 | +# |
2698 | +# Copyright (C) 2012 OpenERP Canada. All Rights Reserved. |
2699 | +# |
2700 | +# This program is free software: you can redistribute it and/or modify |
2701 | +# it under the terms of the GNU Affero General Public License as published |
2702 | +# by |
2703 | +# the Free Software Foundation, either version 3 of the License, or |
2704 | +# (at your option) any later version. |
2705 | +# |
2706 | +# This program is distributed in the hope that it will be useful, |
2707 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2708 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2709 | +# GNU Affero General Public License for more details. |
2710 | +# |
2711 | +# You should have received a copy of the GNU Affero General Public License |
2712 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2713 | +# |
2714 | +############################################################################## |
2715 | + |
2716 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2717 | |
2718 | === added file 'l10n_ca_qc_hr_payroll_account/__openerp__.py' |
2719 | --- l10n_ca_qc_hr_payroll_account/__openerp__.py 1970-01-01 00:00:00 +0000 |
2720 | +++ l10n_ca_qc_hr_payroll_account/__openerp__.py 2012-12-21 16:45:28 +0000 |
2721 | @@ -0,0 +1,56 @@ |
2722 | +#-*- coding:utf-8 -*- |
2723 | +############################################################################## |
2724 | +# |
2725 | +# Copyright (C) 2012 Savoir-faire Linux. All Rights Reserved. |
2726 | +# |
2727 | +# This program is free software: you can redistribute it and/or modify |
2728 | +# it under the terms of the GNU Affero General Public License as published by |
2729 | +# the Free Software Foundation, either version 3 of the License, or |
2730 | +# (at your option) any later version. |
2731 | +# |
2732 | +# This program is distributed in the hope that it will be useful, |
2733 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2734 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2735 | +# GNU Affero General Public License for more details. |
2736 | +# |
2737 | +# You should have received a copy of the GNU Affero General Public License |
2738 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2739 | +# |
2740 | +############################################################################## |
2741 | +{ |
2742 | + 'name': 'Canada - Quebec - Payroll Accounting', |
2743 | + 'category': 'Localization', |
2744 | + 'version': '0.1', |
2745 | + 'license': 'AGPL-3', |
2746 | + 'category': 'Generic Modules/Human Resources', |
2747 | + 'description': """ |
2748 | +Quebec Payroll Accounting |
2749 | +========================= |
2750 | + |
2751 | +This module: |
2752 | + * creates financial accounts for payroll |
2753 | + * updates salary rules with accounting information |
2754 | + |
2755 | + !!! Warning !!! |
2756 | + |
2757 | +Make sure to install AND CONFIGURE the canadian chart of accounts module (l10n_ca) |
2758 | +before installing this module. Chart template needs to be selected to populate |
2759 | +the account.account table and allow you to link salary rules with the financial |
2760 | +account. |
2761 | + """, |
2762 | + 'author':'Savoir-faire Linux', |
2763 | + 'website':'http:/www.savoirfairelinux.com', |
2764 | + 'depends': [ |
2765 | + 'l10n_ca_qc_hr_payroll', |
2766 | + 'l10n_ca_hr_payroll_account', |
2767 | + ], |
2768 | + 'data': [ |
2769 | + 'l10n_ca_qc_hr_payroll_account_data.xml', |
2770 | + ], |
2771 | + 'test': [], |
2772 | + 'demo': [], |
2773 | + 'installable': True, |
2774 | + 'active': False, |
2775 | +} |
2776 | + |
2777 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2778 | |
2779 | === added file 'l10n_ca_qc_hr_payroll_account/l10n_ca_qc_hr_payroll_account_data.xml' |
2780 | --- l10n_ca_qc_hr_payroll_account/l10n_ca_qc_hr_payroll_account_data.xml 1970-01-01 00:00:00 +0000 |
2781 | +++ l10n_ca_qc_hr_payroll_account/l10n_ca_qc_hr_payroll_account_data.xml 2012-12-21 16:45:28 +0000 |
2782 | @@ -0,0 +1,44 @@ |
2783 | +<?xml version="1.0" encoding="utf-8"?> |
2784 | +<openerp> |
2785 | + <data noupdate="1"> |
2786 | + |
2787 | + <!-- Quebec Parental Insurance Plan --> |
2788 | + |
2789 | + <record id="l10n_ca_qc_hr_payroll.rule_qc_qpip_ee_c" model="hr.salary.rule"> |
2790 | + <field name="account_debit" model='account.account' search="[('code','like','51206')]"/> |
2791 | + <field name="account_credit" model='account.account' search="[('code','like','214231')]"/> |
2792 | + </record> |
2793 | + |
2794 | + <record id="l10n_ca_qc_hr_payroll.rule_qc_qpip_er_c" model="hr.salary.rule"> |
2795 | + <field name="account_debit" model='account.account' search="[('code','like','51206')]"/> |
2796 | + <field name="account_credit" model='account.account' search="[('code','like','214232')]"/> |
2797 | + </record> |
2798 | + |
2799 | + <!-- Quebec Pension Plan --> |
2800 | + |
2801 | + <record id="l10n_ca_qc_hr_payroll.rule_qc_qpp_ee_c" model="hr.salary.rule"> |
2802 | + <field name="account_debit" model='account.account' search="[('code','like','51205')]"/> |
2803 | + <field name="account_credit" model='account.account' search="[('code','like','214221')]"/> |
2804 | + </record> |
2805 | + |
2806 | + <record id="l10n_ca_qc_hr_payroll.rule_qc_qpp_er_c" model="hr.salary.rule"> |
2807 | + <field name="account_debit" model='account.account' search="[('code','like','51205')]"/> |
2808 | + <field name="account_credit" model='account.account' search="[('code','like','214222')]"/> |
2809 | + </record> |
2810 | + |
2811 | + <!-- Employment Insurance --> |
2812 | + |
2813 | + <record id="l10n_ca_qc_hr_payroll.rule_qc_ei_ee_c" model="hr.salary.rule"> |
2814 | + <field name="account_debit" model='account.account' search="[('code','like','51203')]"/> |
2815 | + <field name="account_credit" model='account.account' search="[('code','like','214111')]"/> |
2816 | + </record> |
2817 | + |
2818 | + <!-- Quebec Tax Income --> |
2819 | + |
2820 | + <record id="l10n_ca_qc_hr_payroll.rule_qc_qit" model="hr.salary.rule"> |
2821 | + <field name="account_debit" model='account.account' search="[('code','like','51210')]"/> |
2822 | + <field name="account_credit" model='account.account' search="[('code','like','21426')]"/> |
2823 | + </record> |
2824 | + |
2825 | + </data> |
2826 | +</openerp> |
2827 | |
2828 | === added directory 'l10n_ca_qc_hr_payroll_account/static' |
2829 | === added directory 'l10n_ca_qc_hr_payroll_account/static/src' |
2830 | === added directory 'l10n_ca_qc_hr_payroll_account/static/src/img' |
2831 | === added file 'l10n_ca_qc_hr_payroll_account/static/src/img/icon.png' |
2832 | Binary files l10n_ca_qc_hr_payroll_account/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_qc_hr_payroll_account/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |
2833 | === added directory 'l10n_ca_toponyms/static' |
2834 | === added directory 'l10n_ca_toponyms/static/src' |
2835 | === added directory 'l10n_ca_toponyms/static/src/img' |
2836 | === added file 'l10n_ca_toponyms/static/src/img/icon.png' |
2837 | Binary files l10n_ca_toponyms/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and l10n_ca_toponyms/static/src/img/icon.png 2012-12-21 16:45:28 +0000 differ |