Initial commit of hr_payroll_rate for 11.0

This commit is contained in:
Jared Kipe
2019-01-06 13:19:50 -08:00
parent 31bc8f2391
commit 509eba1c7a
8 changed files with 158 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import models

16
hr_payroll_rate/__manifest__.py Executable file
View 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',
],
}

View File

@@ -0,0 +1 @@
from . import payroll

View 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)

View 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 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_payroll_rate access_hr_payroll_rate model_hr_payroll_rate hr_payroll.group_hr_payroll_manager 1 1 1 1

View File

@@ -0,0 +1 @@
from . import test_payroll_rate

View 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)

View 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>