mirror of
https://bitbucket.org/presik/trytonpsk-staff_payroll_co.git
synced 2023-12-14 06:42:56 +01:00
add field last salary to liquidation
This commit is contained in:
parent
c16abc498e
commit
a4a65fb49f
|
@ -10,7 +10,7 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<field name="name">assistant_update_employee_start_view_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wizard_assistant_update_employee">
|
||||
<field name="name">Asssitant Update Employee Wizard</field>
|
||||
<field name="name">Assistant Update Employee Wizard</field>
|
||||
<field name="wiz_name">staff.employee.update_employee</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -100,6 +100,8 @@ class Liquidation(Workflow, ModelSQL, ModelView):
|
|||
start = fields.Function(fields.Date('Start Date'), 'get_dates')
|
||||
end = fields.Function(fields.Date('End Date'), 'get_dates')
|
||||
party_to_pay = fields.Many2One('party.party', 'Party to Pay', states=STATES)
|
||||
last_salary = fields.Numeric('Last Salary', states=STATES,
|
||||
digits=(16, 2))
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -277,6 +279,23 @@ class Liquidation(Workflow, ModelSQL, ModelView):
|
|||
payrolls_ids = [payroll.id for payroll in payrolls]
|
||||
return payrolls_ids
|
||||
|
||||
def get_salary(self, name):
|
||||
res = 0
|
||||
if self.contract:
|
||||
if name == 'last_salary':
|
||||
res = self.contract.salary
|
||||
elif name == 'salary_average':
|
||||
Payroll = Pool().get('staff.payroll')
|
||||
Wage = Pool().get('staff.wage_type')
|
||||
wage, = Wage.search([('type_concept', '=', 'unemployment')])
|
||||
res = Payroll.get_salary_average(self.end, self.employee, self.contract, wage)
|
||||
values = [self.end_period.end]
|
||||
if self.employee.contract.end_date:
|
||||
values.append(self.employee.contract.end_date)
|
||||
res = min(values)
|
||||
|
||||
return res
|
||||
|
||||
def create_move(self):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
|
@ -510,6 +529,10 @@ class Liquidation(Workflow, ModelSQL, ModelView):
|
|||
delta = 0
|
||||
return delta
|
||||
|
||||
def on_change_contract(self):
|
||||
if self.contract:
|
||||
self.last_salary = self.contract.salary
|
||||
|
||||
def countLeapYears(self, d):
|
||||
|
||||
years = d.year
|
||||
|
@ -598,6 +621,8 @@ class LiquidationLine(ModelSQL, ModelView):
|
|||
adjustments = fields.One2Many('staff.liquidation.line_adjustment',
|
||||
'staff_liquidation_line', 'Adjustments')
|
||||
party_to_pay = fields.Many2One('party.party', 'Party to Pay')
|
||||
salary_average = fields.Function(fields.Numeric('Salary Average',
|
||||
digits=(16, 2)), 'get_average_payroll')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -637,6 +662,14 @@ class LiquidationLine(ModelSQL, ModelView):
|
|||
amount_ += sum([(ml.credit - ml.debit) for ml in self.move_lines])
|
||||
return amount_
|
||||
|
||||
def get_average_payroll(self, name):
|
||||
contract = self.liquidation.contract
|
||||
employee = self.liquidation.employee
|
||||
end = self.liquidation.end
|
||||
Payroll = Pool().get('staff.payroll')
|
||||
res = Payroll.get_salary_average(end, employee, contract, self.wage) * 30
|
||||
return res
|
||||
|
||||
|
||||
class LiquidationLineAdjustment(ModelSQL, ModelView):
|
||||
'Liquidation Adjustment'
|
||||
|
|
26
payroll.py
26
payroll.py
|
@ -356,15 +356,16 @@ class Payroll(metaclass=PoolMeta):
|
|||
])
|
||||
return payrolls
|
||||
|
||||
def _get_payrolls_period(self, start_date, end_date):
|
||||
@classmethod
|
||||
def _get_payrolls_period(cls, employee, contract, start_date, end_date):
|
||||
_, end_day = calendar.monthrange(end_date.year, end_date.month)
|
||||
start = date(start_date.year, start_date.month, 1)
|
||||
end = date(end_date.year, end_date.month, end_day)
|
||||
payrolls = self.search([
|
||||
('employee', '=', self.employee.id),
|
||||
payrolls = cls.search([
|
||||
('employee', '=', employee.id),
|
||||
('start', '>=', start),
|
||||
('start', '<=', end),
|
||||
('contract', '=', self.contract.id)
|
||||
('contract', '=', contract.id)
|
||||
])
|
||||
return payrolls
|
||||
|
||||
|
@ -469,7 +470,7 @@ class Payroll(metaclass=PoolMeta):
|
|||
unit_value = Decimal(event.amount_to_pay)
|
||||
else:
|
||||
if event.is_vacations:
|
||||
unit_value = self.get_salary_average(wage)
|
||||
unit_value = self.get_salary_average(self.start, self.employee, self.contract, wage)
|
||||
else:
|
||||
unit_value = wage.compute_unit_price(salary_args)
|
||||
res = self.get_line(wage, qty_pay, unit_value)
|
||||
|
@ -486,9 +487,10 @@ class Payroll(metaclass=PoolMeta):
|
|||
self.save()
|
||||
return discounts
|
||||
|
||||
def get_salary_average(self, wage):
|
||||
end_date = self.start
|
||||
start_date_contract = self.contract.start_date
|
||||
@classmethod
|
||||
def get_salary_average(cls, end_date, employee, contract, wage):
|
||||
# end_date = self.start
|
||||
start_date_contract = contract.start_date
|
||||
start_date = end_date + relativedelta(months=-4)
|
||||
|
||||
if start_date <= start_date_contract:
|
||||
|
@ -498,7 +500,7 @@ class Payroll(metaclass=PoolMeta):
|
|||
average_days_monthly = []
|
||||
while next_date < end_date:
|
||||
_, end_day = calendar.monthrange(next_date.year, next_date.month)
|
||||
payrolls = self._get_payrolls_period(next_date, next_date)
|
||||
payrolls = cls._get_payrolls_period(employee, contract, next_date, next_date)
|
||||
salary_base = 0
|
||||
worked_days = 0
|
||||
if payrolls:
|
||||
|
@ -510,13 +512,9 @@ class Payroll(metaclass=PoolMeta):
|
|||
worked_days = 30
|
||||
average_day = salary_base / worked_days
|
||||
average_days_monthly.append(average_day)
|
||||
|
||||
next_date += relativedelta(months=1)
|
||||
|
||||
res = sum(average_days_monthly)/len(average_days_monthly)
|
||||
# if len(average_days_monthly) != len(set(average_days_monthly)):
|
||||
# res = sum(average_days_monthly)/len(average_days_monthly) * 30
|
||||
# else:
|
||||
# res = sum(average_days_monthly)/len(average_days_monthly) * 30
|
||||
return res
|
||||
|
||||
def update_wage_no_salary(self):
|
||||
|
|
|
@ -16,6 +16,8 @@ this repository contains the full copyright notices and license terms.-->
|
|||
<field name="account"/>
|
||||
<label name="party_to_pay"/>
|
||||
<field name="party_to_pay"/>
|
||||
<label name="salary_average"/>
|
||||
<field name="salary_average"/>
|
||||
<notebook colspan="6">
|
||||
<page string="General" id="general">
|
||||
<field name="move_lines" colspan="4"/>
|
||||
|
|
Loading…
Reference in a new issue