add new module

This commit is contained in:
sonal arora
2020-07-21 10:09:46 +00:00
parent 800e7fdceb
commit c0d10e3fbe
1063 changed files with 243750 additions and 5 deletions

View File

@@ -0,0 +1,4 @@
#-*- coding:utf-8 -*-
from . import hr_payroll_payslips_by_employees
from . import hr_payroll_contribution_register_report

View File

@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from dateutil import relativedelta
from odoo import api, fields, models
class PayslipLinesContributionRegister(models.TransientModel):
_name = 'payslip.lines.contribution.register'
_description = 'Payslip Lines by Contribution Registers'
date_from = fields.Date(string='Date From', required=True,
default=datetime.now().strftime('%Y-%m-01'))
date_to = fields.Date(string='Date To', required=True,
default=str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10])
def print_report(self):
active_ids = self.env.context.get('active_ids', [])
datas = {
'ids': active_ids,
'model': 'hr.contribution.register',
'form': self.read()[0]
}
return self.env.ref('hr_payroll_community.action_contribution_register').report_action([], data=datas)

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_payslip_lines_contribution_register" model="ir.ui.view">
<field name="name">payslip.lines.contribution.register</field>
<field name="model">payslip.lines.contribution.register</field>
<field name="arch" type="xml">
<form string="Contribution Register's Payslip Lines">
<group col="4" colspan="6">
<field name="date_from"/>
<newline/>
<field name="date_to"/>
</group>
<footer>
<button name="print_report" string="Print" type="object" class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_payslip_lines_contribution_register" model="ir.actions.act_window">
<field name="name">PaySlip Lines</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">payslip.lines.contribution.register</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="binding_model_id" ref="model_hr_contribution_register" />
<field name="binding_type">report</field>
</record>
</odoo>

View File

@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.exceptions import UserError
class HrPayslipEmployees(models.TransientModel):
_name = 'hr.payslip.employees'
_description = 'Generate payslips for all selected employees'
employee_ids = fields.Many2many('hr.employee', 'hr_employee_group_rel', 'payslip_id', 'employee_id', 'Employees')
def compute_sheet(self):
payslips = self.env['hr.payslip']
[data] = self.read()
active_id = self.env.context.get('active_id')
if active_id:
[run_data] = self.env['hr.payslip.run'].browse(active_id).read(['date_start', 'date_end', 'credit_note'])
from_date = run_data.get('date_start')
to_date = run_data.get('date_end')
if not data['employee_ids']:
raise UserError(_("You must select employee(s) to generate payslip(s)."))
for employee in self.env['hr.employee'].browse(data['employee_ids']):
slip_data = self.env['hr.payslip'].onchange_employee_id(from_date, to_date, employee.id, contract_id=False)
res = {
'employee_id': employee.id,
'name': slip_data['value'].get('name'),
'struct_id': slip_data['value'].get('struct_id'),
'contract_id': slip_data['value'].get('contract_id'),
'payslip_run_id': active_id,
'input_line_ids': [(0, 0, x) for x in slip_data['value'].get('input_line_ids')],
'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids')],
'date_from': from_date,
'date_to': to_date,
'credit_note': run_data.get('credit_note'),
'company_id': employee.company_id.id,
}
payslips += self.env['hr.payslip'].create(res)
payslips.compute_sheet()
return {'type': 'ir.actions.act_window_close'}

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_hr_payslip_by_employees" model="ir.ui.view">
<field name="name">hr_payroll_payslip_employees</field>
<field name="model">hr.payslip.employees</field>
<field name="arch" type="xml">
<form string="Payslips by Employees">
<header>
<button icon="fa-cogs" string="Generate" name="compute_sheet" type="object" class="oe_highlight" />
</header>
<group>
<span colspan="4" nolabel="1">This wizard will generate payslips for all selected employee(s) based on the dates and credit note specified on Payslips Run.</span>
</group>
<group colspan="4" >
<separator string="Employees" colspan="4"/>
<newline/>
<field name="employee_ids" nolabel="1"/>
</group>
</form>
</field>
</record>
<record id="action_hr_payslip_by_employees" model="ir.actions.act_window">
<field name="name">Generate Payslips</field>
<field name="res_model">hr.payslip.employees</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_hr_payslip_by_employees"/>
<field name="target">new</field>
</record>
</odoo>