From 7220f80b666bf7c49af4255f0d6ccc880784888b Mon Sep 17 00:00:00 2001 From: Bakry Date: Tue, 25 Feb 2025 15:23:28 +0300 Subject: [PATCH 1/2] fix --- .../models/hr_advance_payslip.py | 109 +++++++++--------- .../templates/payroll_bank_text.xml | 6 +- 2 files changed, 60 insertions(+), 55 deletions(-) diff --git a/odex25_hr/exp_payroll_custom/models/hr_advance_payslip.py b/odex25_hr/exp_payroll_custom/models/hr_advance_payslip.py index 660bf6f60..41aadc36e 100644 --- a/odex25_hr/exp_payroll_custom/models/hr_advance_payslip.py +++ b/odex25_hr/exp_payroll_custom/models/hr_advance_payslip.py @@ -255,14 +255,15 @@ class SalaryRuleInput(models.Model): 'partner_id': self.employee_id.user_id.partner_id.id, 'credit': total, }) - move = self.env['account.move'].create({ - 'journal_id': journal.id, - # 'date': fields.Date.context_today(self), - 'date': self.date_to, - 'ref': self.name, - 'line_ids': [(0, 0, item) for item in total_list] - }) - self.move_id = move.id + if not self.move_id: + move = self.env['account.move'].create({ + 'journal_id': journal.id, + # 'date': fields.Date.context_today(self), + 'date': self.date_to, + 'ref': self.name, + 'line_ids': [(0, 0, item) for item in total_list] + }) + self.move_id = move.id self.write({'state': 'transfered'}) def compute_totals(self): @@ -3058,17 +3059,18 @@ class HrPayslipRun(models.Model): merged_list = self.merge_lists(new_record_list, 'name', 'account_id') record_final_item = merged_list + new_rec_loan_list - move = self.env['account.move'].create({ - 'state': 'draft', - 'journal_id': record.get('move'), - # 'date': fields.Date.context_today(self), - 'date': self.date_end, - 'ref': self.name, - 'line_ids': [(0, 0, item) for item in record_final_item], - 'res_model': 'hr.payslip.run', - 'res_id': self.id - }) - self.move_id = move.id + if not self.move_id: + move = self.env['account.move'].create({ + 'state': 'draft', + 'journal_id': record.get('move'), + # 'date': fields.Date.context_today(self), + 'date': self.date_end, + 'ref': self.name, + 'line_ids': [(0, 0, item) for item in record_final_item], + 'res_model': 'hr.payslip.run', + 'res_id': self.id + }) + self.move_id = move.id ########################## per_analytic_account ########### @@ -3184,17 +3186,18 @@ class HrPayslipRun(models.Model): new_rec_loan_list = record.get('loans') merged_list = self.new_merge_lists(new_record_list, 'name', 'account_id', 'analytic_account_id') record_final_item = merged_list + new_rec_loan_list - move = self.env['account.move'].create({ - 'state': 'draft', - 'journal_id': record.get('move'), - 'date': self.date_end, + if not self.move_id: + move = self.env['account.move'].create({ + 'state': 'draft', + 'journal_id': record.get('move'), + 'date': self.date_end, - 'ref': self.name, - 'line_ids': [(0, 0, item) for item in record_final_item], - 'res_model': 'hr.payslip.run', - 'res_id': self.id - }) - self.move_id = move.id + 'ref': self.name, + 'line_ids': [(0, 0, item) for item in record_final_item], + 'res_model': 'hr.payslip.run', + 'res_id': self.id + }) + self.move_id = move.id # import pdb # pdb.set_trace() @@ -3275,18 +3278,19 @@ class HrPayslipRun(models.Model): new_record_list = record.get('list_ids') # merged_list = self.merge_lists(new_record_list, 'name', 'account_id') # record_final_item = merged_list - move = self.env['account.move'].create({ - 'state': 'draft', - 'partner_id': line.employee_id.user_id.partner_id.id, - 'journal_id': line.contract_id.journal_id.id, - # 'date': fields.Date.context_today(self), - 'date': self.date_end, - 'ref': line.name, - 'line_ids': [(0, 0, item) for item in new_record_list], - 'res_model': 'hr.payslip.run', - 'res_id': self.id - }) - line.move_id = move.id + if not line.move_id: + move = self.env['account.move'].create({ + 'state': 'draft', + 'partner_id': line.employee_id.user_id.partner_id.id, + 'journal_id': line.contract_id.journal_id.id, + # 'date': fields.Date.context_today(self), + 'date': self.date_end, + 'ref': line.name, + 'line_ids': [(0, 0, item) for item in new_record_list], + 'res_model': 'hr.payslip.run', + 'res_id': self.id + }) + line.move_id = move.id else: bank_id = '' @@ -3448,17 +3452,18 @@ class HrPayslipRun(models.Model): new_rec_loan_list = record.get('loans') merged_list = self.merge_lists(new_record_list, 'name', 'account_id') record_final_item = merged_list + new_rec_loan_list - move = self.env['account.move'].create({ - 'state': 'draft', - 'journal_id': record.get('move'), - # 'date': fields.Date.context_today(self), - 'date': self.date_end, - 'ref': bank_id, - 'line_ids': [(0, 0, item) for item in record_final_item], - 'res_model': 'hr.payslip.run', - 'res_id': self.id - }) - line.move_id = move.id + if not line.move_id: + move = self.env['account.move'].create({ + 'state': 'draft', + 'journal_id': record.get('move'), + # 'date': fields.Date.context_today(self), + 'date': self.date_end, + 'ref': bank_id, + 'line_ids': [(0, 0, item) for item in record_final_item], + 'res_model': 'hr.payslip.run', + 'res_id': self.id + }) + line.move_id = move.id for line in self.slip_ids: payslip = self.env['hr.payslip'].search([('state', '=', line.state)]) diff --git a/odex25_hr/exp_payroll_custom/templates/payroll_bank_text.xml b/odex25_hr/exp_payroll_custom/templates/payroll_bank_text.xml index f9929995a..bcb5fc7ab 100644 --- a/odex25_hr/exp_payroll_custom/templates/payroll_bank_text.xml +++ b/odex25_hr/exp_payroll_custom/templates/payroll_bank_text.xml @@ -3,11 +3,11 @@ From 027cb95d856c014bee03c28339fa82c949e050bb Mon Sep 17 00:00:00 2001 From: Bakry Date: Tue, 25 Feb 2025 17:35:46 +0300 Subject: [PATCH 2/2] fix hr transfer to account with attactments --- .../models/employee_overtime_request.py | 19 ++++++++------ odex25_hr/exp_official_mission/i18n/ar_001.po | 1 + .../models/hr_official_mission.py | 25 +++++++++++-------- .../views/especially_hours.xml | 5 ++++ .../models/employee_reward.py | 19 ++++++++------ .../exp_ticket_request/models/hr_ticketing.py | 25 +++++++++++-------- .../models/exit_and_return.py | 19 ++++++++------ .../models/hr_loan_salary_advance.py | 4 ++- .../hr_termination/models/hr_termination.py | 4 ++- 9 files changed, 74 insertions(+), 47 deletions(-) diff --git a/odex25_hr/employee_requests/models/employee_overtime_request.py b/odex25_hr/employee_requests/models/employee_overtime_request.py index d149d32e6..b6c9070f2 100644 --- a/odex25_hr/employee_requests/models/employee_overtime_request.py +++ b/odex25_hr/employee_requests/models/employee_overtime_request.py @@ -219,15 +219,18 @@ class employee_overtime_request(models.Model): 'account_id': item.journal_id.default_account_id.id, 'partner_id': record.employee_id.user_id.partner_id.id } - move = record.env['account.move'].create({ - 'state': 'draft', - 'journal_id': item.journal_id.id, - 'date': item.request_date, - 'ref': record.employee_id.name, - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] - }) + if not record.move_id: + move = record.env['account.move'].create({ + 'state': 'draft', + 'journal_id': item.journal_id.id, + 'date': item.request_date, + 'ref': record.employee_id.name, + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], + 'res_model': 'employee.overtime.request', + 'res_id': self.id + }) - record.move_id = move.id + record.move_id = move.id self.state = "validated" if self.transfer_type == 'payroll': # last_day_of_current_month = date.today().replace(day=calendar.monthrange(date.today().year, date.today().month)[1]) diff --git a/odex25_hr/exp_official_mission/i18n/ar_001.po b/odex25_hr/exp_official_mission/i18n/ar_001.po index 3b2486f16..97f19fc9f 100644 --- a/odex25_hr/exp_official_mission/i18n/ar_001.po +++ b/odex25_hr/exp_official_mission/i18n/ar_001.po @@ -150,6 +150,7 @@ msgstr "بند الصرف" #. module: exp_official_mission #: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission_employee__account_move_id +#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_especially_line_form_view msgid "Account Move" msgstr "القيود المحاسبيه" diff --git a/odex25_hr/exp_official_mission/models/hr_official_mission.py b/odex25_hr/exp_official_mission/models/hr_official_mission.py index 514d89929..51550b62c 100644 --- a/odex25_hr/exp_official_mission/models/hr_official_mission.py +++ b/odex25_hr/exp_official_mission/models/hr_official_mission.py @@ -473,15 +473,18 @@ class HrOfficialMission(models.Model): 'account_id': self.mission_type.journal_id.default_account_id.id, 'partner_id': item.employee_id.user_id.partner_id.id } - move = self.env['account.move'].create({ - 'state': 'draft', - 'journal_id': self.mission_type.journal_id.id, - 'date': date.today(), - 'ref': 'Official mission for employee "%s" ' % item.employee_id.name, - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] - }) - # fill account move for each employee - item.write({'account_move_id': move.id}) + if not item.account_move_id: + move = self.env['account.move'].create({ + 'state': 'draft', + 'journal_id': self.mission_type.journal_id.id, + 'date': date.today(), + 'ref': 'Official mission for employee "%s" ' % item.employee_id.name, + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], + 'res_model': 'hr.official.mission', + 'res_id': self.id + }) + # fill account move for each employee + item.write({'account_move_id': move.id}) else: raise exceptions.Warning( _('You do not have account or journal in mission type "%s" ') % self.mission_type.name) @@ -544,7 +547,9 @@ class HrOfficialMission(models.Model): 'partner_id': item.partner_id.id, 'invoice_date': date.today(), 'ref': 'Training Cost for Course Name %s ' % item.course_name.name, - 'invoice_line_ids': [(0, 0, invoice_line_vals)] + 'invoice_line_ids': [(0, 0, invoice_line_vals)], + 'res_model': 'hr.official.mission', + 'res_id': self.id }) item.write({'Tra_cost_invo_id': invoice.id}) diff --git a/odex25_hr/exp_official_mission/views/especially_hours.xml b/odex25_hr/exp_official_mission/views/especially_hours.xml index 7bcb45a7b..6c39e7e19 100644 --- a/odex25_hr/exp_official_mission/views/especially_hours.xml +++ b/odex25_hr/exp_official_mission/views/especially_hours.xml @@ -208,6 +208,11 @@ + + diff --git a/odex25_hr/exp_payroll_custom/models/employee_reward.py b/odex25_hr/exp_payroll_custom/models/employee_reward.py index 059c20d7e..4483d0c75 100644 --- a/odex25_hr/exp_payroll_custom/models/employee_reward.py +++ b/odex25_hr/exp_payroll_custom/models/employee_reward.py @@ -130,15 +130,18 @@ class EmployeeReward(models.Model): 'account_id': record.journal_id.default_account_id.id, 'partner_id': record.employee_id.user_id.partner_id.id } - move = record.env['account.move'].create({ - 'state': 'draft', - 'journal_id': record.journal_id.id, - 'date': item.date, - 'ref': record.employee_id.name, - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] - }) + if not record.move_id: + move = record.env['account.move'].create({ + 'state': 'draft', + 'journal_id': record.journal_id.id, + 'date': item.date, + 'ref': record.employee_id.name, + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], + 'res_model': 'hr.employee.reward', + 'res_id': self.id + }) - record.move_id = move.id + record.move_id = move.id self.state = "done" for line in self.line_ids_reward: line.reward_state = "done" diff --git a/odex25_hr/exp_ticket_request/models/hr_ticketing.py b/odex25_hr/exp_ticket_request/models/hr_ticketing.py index f1bc8bfc8..4b3719bc6 100644 --- a/odex25_hr/exp_ticket_request/models/hr_ticketing.py +++ b/odex25_hr/exp_ticket_request/models/hr_ticketing.py @@ -114,18 +114,21 @@ class HrTicketing(models.Model): 'account_id': self.journal_id.default_account_id.id, 'partner_id': self.employee_id.user_id.partner_id.id } - move_id = self.env['account.move'].create({ - 'state': 'draft', - 'journal_id': self.journal_id.id, - 'date': self.request_date, - 'ref': 'Ticket Request for "%s" ' % self.employee_id.name, - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] - }) + if not self.move_id : + move_id = self.env['account.move'].create({ + 'state': 'draft', + 'journal_id': self.journal_id.id, + 'date': self.request_date, + 'ref': 'Ticket Request for "%s" ' % self.employee_id.name, + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], + 'res_model': 'hr.ticket.request', + 'res_id': self.id + }) - self.write({ - 'state': 'done', - 'move_id': move_id.id - }) + self.write({ + 'state': 'done', + 'move_id': move_id.id + }) else: self.write({'state': 'done'}) diff --git a/odex25_hr/hr_government_relations/models/exit_and_return.py b/odex25_hr/hr_government_relations/models/exit_and_return.py index b70c7a201..0f6b5dc3a 100644 --- a/odex25_hr/hr_government_relations/models/exit_and_return.py +++ b/odex25_hr/hr_government_relations/models/exit_and_return.py @@ -121,14 +121,17 @@ class hr_exit_return(models.Model): 'account_id': item.account_journal_id.default_account_id.id, 'partner_id': item.employee_id.user_id.partner_id.id } - move_id = self.env['account.move'].create({ - 'state': 'draft', - 'journal_id': item.account_journal_id.id, - 'date': date.today(), - 'ref': 'Exit and Return', - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] - }) - self.account_move_id = move_id.id + if not item.account_move_id: + move_id = self.env['account.move'].create({ + 'state': 'draft', + 'journal_id': item.account_journal_id.id, + 'date': date.today(), + 'ref': 'Exit and Return', + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], + 'res_model': 'hr.exit.return', + 'res_id': self.id + }) + self.account_move_id = move_id.id self.state = 'done' diff --git a/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py b/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py index 41abfc204..19c02fb2e 100644 --- a/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py +++ b/odex25_hr/hr_loans_salary_advance/models/hr_loan_salary_advance.py @@ -165,7 +165,9 @@ class HrSalaryAdvance(models.Model): 'journal_id': item.request_type.journal_id.id, 'date': item.date, 'ref': 'Loan', - 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)] + 'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)], + 'res_model': 'hr.loan.salary.advance', + 'res_id': self.id }) if not item.moves_ids: self.env['hr.account.moves'].create({ diff --git a/odex25_hr/hr_termination/models/hr_termination.py b/odex25_hr/hr_termination/models/hr_termination.py index f6ebef77b..f5d61c821 100644 --- a/odex25_hr/hr_termination/models/hr_termination.py +++ b/odex25_hr/hr_termination/models/hr_termination.py @@ -917,7 +917,9 @@ class HrTermination(models.Model): 'journal_id': self.journal.id, 'date': date.today(), 'ref': 'Termination of "%s" ' % self.employee_id.name, - 'line_ids': [(0, 0, value) for value in line_vals] + 'line_ids': [(0, 0, value) for value in line_vals], + 'res_model': 'hr.termination', + 'res_id': self.id }) for item in self.loans_ids: