From 5f702296c9b5bb532da1367277aad7d995510050 Mon Sep 17 00:00:00 2001 From: mohammed-alkhazrji Date: Thu, 18 Sep 2025 17:54:59 +0300 Subject: [PATCH] committe v2 --- .../i18n/ar_001.po | 9 +++- .../models/purchase_order.py | 28 ++++++----- .../models/purchase_requisition_custom.py | 50 +++++++++++++++---- .../views/purchase_order.xml | 2 +- .../views/purchase_requisition_custom.xml | 5 +- 5 files changed, 66 insertions(+), 28 deletions(-) diff --git a/odex25_purchase/purchase_requisition_custom/i18n/ar_001.po b/odex25_purchase/purchase_requisition_custom/i18n/ar_001.po index 013f56139..485ee085f 100644 --- a/odex25_purchase/purchase_requisition_custom/i18n/ar_001.po +++ b/odex25_purchase/purchase_requisition_custom/i18n/ar_001.po @@ -2777,4 +2777,11 @@ msgstr "منصرف من العهدة" #. module: purchase_requisition_custom #: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_order__cash_advance_employee_id msgid "Employee Cash Spent" -msgstr "موظف العهد" \ No newline at end of file +msgstr "موظف العهد" + + +#. module: purchase_requisition_custom +#: model:ir.model.fields,field_description:purchase_requisition_custom.field_committe_member__refused +#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_order__refused +msgid "Refused " +msgstr "رفض" diff --git a/odex25_purchase/purchase_requisition_custom/models/purchase_order.py b/odex25_purchase/purchase_requisition_custom/models/purchase_order.py index b0cb3bd78..03caf05c4 100644 --- a/odex25_purchase/purchase_requisition_custom/models/purchase_order.py +++ b/odex25_purchase/purchase_requisition_custom/models/purchase_order.py @@ -49,6 +49,7 @@ class PurchaseOrderCustom(models.Model): string="Cash Spent", default=False, ) + refused = fields.Boolean("Refused ", default=False) cash_advance_employee_id = fields.Many2one( 'hr.employee', @@ -62,12 +63,13 @@ class PurchaseOrderCustom(models.Model): for po in self: requisition = po.requisition_id is_member = requisition and user in requisition.committe_members - po.can_committee_vote = bool( - from_committee and - requisition and - requisition.purchase_commitee and - is_member - ) + po.can_committee_vote = requisition.sent_to_commitee + # bool( + # from_committee and + # requisition and + # requisition.purchase_commitee and + # is_member + # ) @api.depends('requisition_id') def _compute_has_requisition(self): @@ -819,9 +821,9 @@ class PurchaseOrderCustom(models.Model): rec.already_voted = True def action_select(self): - for member in self.committe_members: - if member.user_id.id == self.env.user.id and member.select == True: - raise ValidationError(_('You have already select this Quotation')) + # for member in self.committe_members: + # if member.user_id.id == self.env.user.id and member.select == True: + # raise ValidationError(_('You have already select this Quotation')) self.requisition_id.actual_vote += 1 return { 'type': 'ir.actions.act_window', @@ -833,10 +835,10 @@ class PurchaseOrderCustom(models.Model): } def action_refuse(self): - for member in self.committe_members: - if member.user_id.id == self.env.user.id and member.select == True: - raise ValidationError(_('You have already refused this Quotation')) - self.requisition_id.actual_vote += 1 + # for member in self.committe_members: + # if member.user_id.id == self.env.user.id and member.select == True: + # raise ValidationError(_('You have already refused this Quotation')) + self.requisition_id.actual_vote += 1 return { 'type': 'ir.actions.act_window', 'name': 'Refuse Reason', diff --git a/odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py b/odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py index 2bc6785f8..a758c1d8d 100644 --- a/odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py +++ b/odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py @@ -656,6 +656,7 @@ class CommitteMembers(models.Model): user_id = fields.Many2one('res.users', "Member Name") selection_reason = fields.Char("Selection Reason") select = fields.Boolean(string="Select") + refused = fields.Boolean("Refused ", default=False) refusing_reason = fields.Char("Refusing Reason") @@ -667,12 +668,25 @@ class SelectReason(models.TransientModel): order_id = fields.Integer("order id") def action_select(self): - self.env['committe.member'].create({ - 'po_id': self.order_id, - 'user_id': self.env.user.id, - 'selection_reason': self.select_reason, - 'select': True}) order_id = self.env['purchase.order'].browse(self.order_id) + current_user_member = order_id.committe_members.filtered(lambda m: m.user_id.id == self.env.user.id) + + if current_user_member: + current_user_member.write({ + 'selection_reason': self.select_reason, + 'select': True, + 'refused': False, + 'refusing_reason': False + }) + else: + self.env['committe.member'].create({ + 'po_id': self.order_id, + 'user_id': self.env.user.id, + 'selection_reason': self.select_reason, + 'select': True, + 'refused': False + }) + order_id.select = True @@ -687,12 +701,26 @@ class RefuseReason(models.TransientModel): def action_refuse(self): if self.order_id: order_id = self.env['purchase.order'].browse(self.order_id) - order_id.select = True - self.env['committe.member'].create({ - 'po_id': self.order_id, - 'user_id': self.env.user.id, - 'refusing_reason': self.refuse_reason, - 'select': True}) + current_user_member = order_id.committe_members.filtered(lambda m: m.user_id.id == self.env.user.id) + + if current_user_member: + current_user_member.write({ + 'refusing_reason': self.refuse_reason, + 'refused': True, + 'select': False, + 'selection_reason': False + }) + else: + self.env['committe.member'].create({ + 'po_id': self.order_id, + 'user_id': self.env.user.id, + 'refusing_reason': self.refuse_reason, + 'refused': True, + 'select': False + }) + + order_id.refused = True + order_id._check_committee_rejection() elif self.request_id: request_id = self.env['purchase.request'].search([('id', '=', self.request_id)]) request_id.select = True diff --git a/odex25_purchase/purchase_requisition_custom/views/purchase_order.xml b/odex25_purchase/purchase_requisition_custom/views/purchase_order.xml index c41a15f18..ccd2943ba 100644 --- a/odex25_purchase/purchase_requisition_custom/views/purchase_order.xml +++ b/odex25_purchase/purchase_requisition_custom/views/purchase_order.xml @@ -8,7 +8,7 @@