From c738cfbae1fd99b4c062c041da547f3554593527 Mon Sep 17 00:00:00 2001 From: mohammed-alkhazrji Date: Thu, 30 Oct 2025 10:54:14 +0300 Subject: [PATCH] v3-annual --- .../odex25_annual_purchase/__init__.py | 1 + .../odex25_annual_purchase/__manifest__.py | 1 + .../odex25_annual_purchase/i18n/ar_001.po | 15 +++++++++ .../models/annual_request.py | 33 ++++++++++++++----- .../security/ir.model.access.csv | 1 + .../security/odex25_security.xml | 4 +++ .../views/annual_request_views.xml | 3 +- .../odex25_annual_purchase/wizard/__init__.py | 1 + .../wizard/annual_cancel_wizard.py | 27 +++++++++++++++ .../wizard/annual_cancel_wizard_view.xml | 27 +++++++++++++++ 10 files changed, 103 insertions(+), 10 deletions(-) create mode 100644 odex25_purchase/odex25_annual_purchase/wizard/__init__.py create mode 100644 odex25_purchase/odex25_annual_purchase/wizard/annual_cancel_wizard.py create mode 100644 odex25_purchase/odex25_annual_purchase/wizard/annual_cancel_wizard_view.xml diff --git a/odex25_purchase/odex25_annual_purchase/__init__.py b/odex25_purchase/odex25_annual_purchase/__init__.py index 0650744f6..9b4296142 100644 --- a/odex25_purchase/odex25_annual_purchase/__init__.py +++ b/odex25_purchase/odex25_annual_purchase/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizard diff --git a/odex25_purchase/odex25_annual_purchase/__manifest__.py b/odex25_purchase/odex25_annual_purchase/__manifest__.py index 46cd3d021..d35494e7e 100644 --- a/odex25_purchase/odex25_annual_purchase/__manifest__.py +++ b/odex25_purchase/odex25_annual_purchase/__manifest__.py @@ -17,6 +17,7 @@ "views/purchase_requisition.xml", "data/mail_activity.xml", "views/menu.xml", + "wizard/annual_cancel_wizard_view.xml" ], "application": True, "installable": True diff --git a/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po b/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po index eb7485e2d..9114e42f8 100644 --- a/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po +++ b/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po @@ -140,6 +140,11 @@ msgstr "الطلبات السنوية" msgid "Approve" msgstr "موافقة" +#. module: odex25_annual_purchase +#: model_terms:ir.ui.view,arch_db:odex25_annual_purchase.view_odx_annual_request_form +msgid "Back To Draft" +msgstr "إعادة الى مسودة" + #. module: odex25_annual_purchase #: code:addons/odex25_annual_purchase/models/annual_request.py:0 #, python-format @@ -195,6 +200,16 @@ msgstr "أعضاء لجنة المشتريات" msgid "Committee / Technical" msgstr "اللجنة / الفنية" +#. module: odex25_annual_purchase +#: model:res.groups,name:odex25_annual_purchase.group_annual_committee +msgid "Committee" +msgstr "اللجنة / المالية" + +#. module: odex25_annual_purchase +#: model:res.groups,name:odex25_annual_purchase.group_annual_to_draft +msgid "To Draft" +msgstr "إعادة الى مسودة" + #. module: odex25_annual_purchase #: model:ir.model.fields,field_description:odex25_annual_purchase.field_odx_annual_request__committe_head msgid "Committee Head" diff --git a/odex25_purchase/odex25_annual_purchase/models/annual_request.py b/odex25_purchase/odex25_annual_purchase/models/annual_request.py index 4059311f6..1e94e4b60 100644 --- a/odex25_purchase/odex25_annual_purchase/models/annual_request.py +++ b/odex25_purchase/odex25_annual_purchase/models/annual_request.py @@ -24,7 +24,7 @@ class AnnualPurchaseRequest(models.Model): _inherit = ['mail.thread', 'mail.activity.mixin'] _order = "create_date desc" - name = fields.Char(string="Reference", default=lambda self: self.env['ir.sequence'].next_by_code('odx.annual.request'), readonly=True, copy=False) + name = fields.Char(string="Reference", default="New", readonly=True, copy=False) employee_id = fields.Many2one('hr.employee', string="Employee", tracking=True, default=lambda self: self.env['hr.employee'].search([('user_id', '=', self.env.user.id)], limit=1)) user_id = fields.Many2one('res.users', string="Requested By", default=lambda self: self.env.user, tracking=True) department_id = fields.Many2one('hr.department', string="Department", tracking=True, related='employee_id.department_id', store=True) @@ -101,6 +101,13 @@ class AnnualPurchaseRequest(models.Model): }, 'target': 'current', } + + @api.model + def create(self, vals): + if vals.get('name', 'New') in (False, '/', 'New'): + vals['name'] = self.env['ir.sequence'].next_by_code('odx.annual.request') or 'New' + return super(AnnualPurchaseRequest, self).create(vals) + def _compute_attach_no(self): Attachment = self.env['ir.attachment'] for rec in self: @@ -147,6 +154,7 @@ class AnnualPurchaseRequest(models.Model): default = dict(default or {}) default.update({ + 'name': 'New', 'committee_recommended_vendor_id': False, 'committee_enabled': False, 'committee_type_id': False, @@ -326,6 +334,10 @@ class AnnualPurchaseRequest(models.Model): for rec in self: rec.write({'state': 'to_manager'}) + def action_to_draft(self): + for rec in self: + rec.write({'state': 'draft'}) + def action_manager_approve(self): for rec in self: manager = rec.sudo().employee_id.parent_id @@ -384,14 +396,17 @@ class AnnualPurchaseRequest(models.Model): self.write({'state':'rejected'}) def action_cancel(self): - for request in self: - related_orders = self.env['purchase.order'].search([('annual_request_id', '=', request.id)]) - - for order in related_orders: - if order.state: - order.button_cancel() - - request.write({'state': 'cancel'}) + self.ensure_one() + return { + 'name': _('Cancel Request'), + 'type': 'ir.actions.act_window', + 'res_model': 'odx.annual.request.cancel.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_request_id': self.id, + }, + } def action_create_agreement(self): for rec in self: diff --git a/odex25_purchase/odex25_annual_purchase/security/ir.model.access.csv b/odex25_purchase/odex25_annual_purchase/security/ir.model.access.csv index 927084232..9a01ee5b2 100644 --- a/odex25_purchase/odex25_annual_purchase/security/ir.model.access.csv +++ b/odex25_purchase/odex25_annual_purchase/security/ir.model.access.csv @@ -7,3 +7,4 @@ access_request_gm,access_request_gm,model_odx_annual_request,hr_base.group_gener access_request_line_staff,access_request_line_staff,model_odx_annual_request_line,purchase.group_purchase_user,1,1,1,0 access_addendum_staff,access_addendum_staff,model_odx_annual_addendum,purchase.group_purchase_user,1,1,1,0 access_addendum_line_staff,access_addendum_line_staff,model_odx_annual_addendum_line,purchase.group_purchase_user,1,1,1,0 +access_odx_annual_request_cancel_wizard_user,odx_annual_request_cancel_wizard_user,model_odx_annual_request_cancel_wizard,base.group_user,1,1,1,1 diff --git a/odex25_purchase/odex25_annual_purchase/security/odex25_security.xml b/odex25_purchase/odex25_annual_purchase/security/odex25_security.xml index e61414f3f..5b44e7b79 100644 --- a/odex25_purchase/odex25_annual_purchase/security/odex25_security.xml +++ b/odex25_purchase/odex25_annual_purchase/security/odex25_security.xml @@ -15,4 +15,8 @@ Committee + + To Draft + + diff --git a/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml b/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml index 18c1d4a28..d700ac8d1 100644 --- a/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml +++ b/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml @@ -33,7 +33,8 @@