@@ -109,13 +109,13 @@ class InheritHrPayslip(models.Model):
|
||||
def action_refresh_from_work_entries(self):
|
||||
if any(p.state not in ['draft', 'verify'] for p in self):
|
||||
raise UserError(_('The payslips should be in Draft or Waiting state.'))
|
||||
payslip_records = self.browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for pay in payslip_records:
|
||||
# payslips = self.filtered(lambda p: not p.edited)
|
||||
pay.mapped('worked_days_line_ids').unlink()
|
||||
pay.mapped('line_ids').unlink()
|
||||
pay._compute_worked_days_line_ids()
|
||||
pay.compute_sheet()
|
||||
payslip_records = self.browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for pay in payslip_records:
|
||||
# payslips = self.filtered(lambda p: not p.edited)
|
||||
pay.mapped('worked_days_line_ids').unlink()
|
||||
pay.mapped('line_ids').unlink()
|
||||
pay._compute_worked_days_line_ids()
|
||||
pay.compute_sheet()
|
||||
|
||||
@api.depends('line_ids')
|
||||
def _compute_salary(self):
|
||||
@@ -317,7 +317,7 @@ class InheritHrPayslip(models.Model):
|
||||
"target": "new",
|
||||
}
|
||||
|
||||
def compute_sheet(self):
|
||||
def compute_sheet_new(self):
|
||||
payslips = self.filtered(lambda slip: slip.state in ['draft', 'verify'])
|
||||
# delete old payslip lines
|
||||
payslips.line_ids.unlink()
|
||||
|
||||
@@ -61,10 +61,10 @@ class YuthonSalaryYear(models.Model):
|
||||
for record in self:
|
||||
rule = self.env['yuthon.personal.rule'].search([
|
||||
('start_number', '<', record.sum_salary),
|
||||
('end_number', '>', record.sum_salary),
|
||||
('end_number', '>=', record.sum_salary),
|
||||
], limit=1)
|
||||
if rule:
|
||||
record.buckle_salary = record.sum_salary * rule.tax_rate
|
||||
record.buckle_salary = record.sum_salary * rule.tax_rate - rule.compute_number
|
||||
else:
|
||||
record.buckle_salary = 0
|
||||
|
||||
|
||||
@@ -91,10 +91,23 @@ class SalaryComputeWizard(models.Model):
|
||||
'payslip_run_id': payslip_run_id.id,
|
||||
'state': 'draft',
|
||||
})
|
||||
payslip.mapped('worked_days_line_ids').unlink()
|
||||
payslip.mapped('line_ids').unlink()
|
||||
payslip._compute_worked_days_line_ids()
|
||||
payslip.compute_sheet()
|
||||
payslip.compute_sheet_new()
|
||||
month = int(self.select_time)
|
||||
month_mapping = {
|
||||
1: '一月', 2: '二月', 3: '三月', 4: '四月',
|
||||
5: '五月', 6: '六月', 7: '七月', 8: '八月',
|
||||
9: '九月', 10: '十月', 11: '十一月', 12: '十二月'
|
||||
}
|
||||
month_name = month_mapping.get(month, '一月')
|
||||
payslip_records = self.env['hr.payslip'].search([
|
||||
('is_push', '=', False),
|
||||
('payslip_run_id.name', 'like', f'%年-{month_name}') # 匹配格式:"2025年-一月"
|
||||
])
|
||||
for pay in payslip_records:
|
||||
pay.mapped('worked_days_line_ids').unlink()
|
||||
pay.mapped('line_ids').unlink()
|
||||
pay._compute_worked_days_line_ids()
|
||||
pay.compute_sheet()
|
||||
|
||||
internship_ids = self.env['hr.payslip'].search([
|
||||
('employee_id.contract_id.is_probation', '=', True),
|
||||
|
||||
Reference in New Issue
Block a user