mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
Initial commit of hr_payroll_rate for 11.0
This commit is contained in:
1
hr_payroll_rate/__init__.py
Normal file
1
hr_payroll_rate/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
||||
16
hr_payroll_rate/__manifest__.py
Executable file
16
hr_payroll_rate/__manifest__.py
Executable file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
'name': 'Payroll Rates',
|
||||
'description': 'Payroll Rates',
|
||||
'version': '11.0.1.0.0',
|
||||
'website': 'https://hibou.io/',
|
||||
'author': 'Hibou Corp. <hello@hibou.io>',
|
||||
'license': 'AGPL-3',
|
||||
'category': 'Human Resources',
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'views/payroll_views.xml',
|
||||
],
|
||||
'depends': [
|
||||
'hr_payroll',
|
||||
],
|
||||
}
|
||||
1
hr_payroll_rate/models/__init__.py
Normal file
1
hr_payroll_rate/models/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import payroll
|
||||
27
hr_payroll_rate/models/payroll.py
Normal file
27
hr_payroll_rate/models/payroll.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class PayrollRate(models.Model):
|
||||
_name = 'hr.payroll.rate'
|
||||
_description = 'Payroll Rate'
|
||||
|
||||
active = fields.Boolean(string='Active', default=True)
|
||||
name = fields.Char(string='Name')
|
||||
date_from = fields.Date(string='Date From', required=True)
|
||||
date_to = fields.Date(string='Date To')
|
||||
company_id = fields.Many2one('res.company', string='Company', copy=False,
|
||||
default=lambda self: self.env['res.company']._company_default_get())
|
||||
rate = fields.Float(string='Rate', required=True)
|
||||
code = fields.Char(string='Code', required=True)
|
||||
|
||||
|
||||
class Payslip(models.Model):
|
||||
_inherit = 'hr.payslip'
|
||||
|
||||
def get_rate(self, code):
|
||||
self.ensure_one()
|
||||
return self.env['hr.payroll.rate'].search([
|
||||
'|', ('date_to', '=', False), ('date_to', '>=', self.date_to),
|
||||
('code', '=', code),
|
||||
('date_from', '<=', self.date_from),
|
||||
], limit=1)
|
||||
2
hr_payroll_rate/security/ir.model.access.csv
Normal file
2
hr_payroll_rate/security/ir.model.access.csv
Normal file
@@ -0,0 +1,2 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_hr_payroll_rate,access_hr_payroll_rate,model_hr_payroll_rate,hr_payroll.group_hr_payroll_manager,1,1,1,1
|
||||
|
1
hr_payroll_rate/tests/__init__.py
Executable file
1
hr_payroll_rate/tests/__init__.py
Executable file
@@ -0,0 +1 @@
|
||||
from . import test_payroll_rate
|
||||
42
hr_payroll_rate/tests/test_payroll_rate.py
Normal file
42
hr_payroll_rate/tests/test_payroll_rate.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from odoo.tests import common
|
||||
from odoo import fields
|
||||
|
||||
|
||||
class TestPayrollRate(common.TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestPayrollRate, self).setUp()
|
||||
self.employee = self.env['hr.employee'].create({
|
||||
'birthday': '1985-03-14',
|
||||
'country_id': self.ref('base.us'),
|
||||
'department_id': self.ref('hr.dep_rd'),
|
||||
'gender': 'male',
|
||||
'name': 'Jared'
|
||||
})
|
||||
self.contract = self.env['hr.contract'].create({
|
||||
'name': 'test',
|
||||
'employee_id': self.employee.id,
|
||||
'type_id': self.ref('hr_contract.hr_contract_type_emp'),
|
||||
'struct_id': self.ref('hr_payroll.structure_base'),
|
||||
'resource_calendar_id': self.ref('resource.resource_calendar_std'),
|
||||
'wage': 21.50,
|
||||
'date_start': '2018-01-01',
|
||||
'state': 'open',
|
||||
'schedule_pay': 'monthly',
|
||||
})
|
||||
self.payslip = self.env['hr.payslip'].create({
|
||||
'employee_id': self.employee.id,
|
||||
})
|
||||
|
||||
def test_payslip_timesheet(self):
|
||||
rate = self.payslip.get_rate('TEST')
|
||||
self.assertFalse(rate)
|
||||
test_rate = self.env['hr.payroll.rate'].create({
|
||||
'name': 'Test Rate',
|
||||
'code': 'TEST',
|
||||
'rate': 1.65,
|
||||
'date_from': '2018-01-01',
|
||||
})
|
||||
|
||||
rate = self.payslip.get_rate('TEST')
|
||||
self.assertEqual(rate, test_rate)
|
||||
68
hr_payroll_rate/views/payroll_views.xml
Normal file
68
hr_payroll_rate/views/payroll_views.xml
Normal file
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="payroll_rate_view_tree" model="ir.ui.view">
|
||||
<field name="name">hr.payroll.rate.tree</field>
|
||||
<field name="model">hr.payroll.rate</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Payroll Rates">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="rate"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="payroll_rate_view_form" model="ir.ui.view">
|
||||
<field name="name">hr.payroll.rate.form</field>
|
||||
<field name="model">hr.payroll.rate</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Payroll Rate">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="active"/>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="rate"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="payroll_rate_view_search" model="ir.ui.view">
|
||||
<field name="name">hr.payroll.rate.search</field>
|
||||
<field name="model">hr.payroll.rate</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Payroll Rates">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="payroll_rate_view_action_main" model="ir.actions.act_window">
|
||||
<field name="name">Payroll Rates</field>
|
||||
<field name="res_model">hr.payroll.rate</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
No rates
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="payroll_rate_menu_main" name="Payroll Rates"
|
||||
action="payroll_rate_view_action_main"
|
||||
sequence="13" parent="hr_payroll.menu_hr_payroll_configuration"/>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user