v4-po
This commit is contained in:
parent
c738cfbae1
commit
cfdd71ecf6
|
|
@ -384,29 +384,31 @@ class AnnualPurchaseRequest(models.Model):
|
|||
else:
|
||||
self.write({'state': 'purchase'})
|
||||
|
||||
def _open_reason_wizard(self, action_type):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'name': _('Provide Reason'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'odx.annual.request.reason.wizard',
|
||||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
'context': {
|
||||
'default_request_id': self.id,
|
||||
'default_action_type': action_type,
|
||||
},
|
||||
}
|
||||
|
||||
def action_ssd_reject(self, reason=False):
|
||||
self.message_post(body=_("Rejected by SSD: %s") % (reason or ''))
|
||||
self.write({'state':'rejected'})
|
||||
return self._open_reason_wizard('ssd_reject')
|
||||
|
||||
def action_ceo_approve(self):
|
||||
self.write({'state':'purchase'})
|
||||
|
||||
def action_ceo_reject(self, reason=False):
|
||||
self.message_post(body=_("Rejected by GM: %s") % (reason or ''))
|
||||
self.write({'state':'rejected'})
|
||||
return self._open_reason_wizard('ssd_reject')
|
||||
|
||||
def action_cancel(self):
|
||||
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,
|
||||
},
|
||||
}
|
||||
return self._open_reason_wizard('cancel')
|
||||
|
||||
def action_create_agreement(self):
|
||||
for rec in self:
|
||||
|
|
|
|||
|
|
@ -7,4 +7,8 @@ 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
|
||||
access_odx_annual_request_reason_wizard_user,odx_annual_request_reason_wizard_user,model_odx_annual_request_reason_wizard,base.group_user,1,1,1,1
|
||||
access_purchase_order_group_technical_committee,purchase_order_group_technical_committee,model_purchase_order,odex25_annual_purchase.group_technical_committee,1,1,0,0
|
||||
access_purchase_order_group_annual_committee,purchase_order_group_annual_committee,model_purchase_order,odex25_annual_purchase.group_annual_committee,1,1,0,0
|
||||
access_annual_request_group_technical_committee,annual_request_group_technical_committee,model_odx_annual_request,odex25_annual_purchase.group_technical_committee,1,1,0,0
|
||||
access_annual_request_group_annual_committee,annual_request_group_annual_committee,model_odx_annual_request,odex25_annual_purchase.group_annual_committee,1,1,0,0
|
||||
|
|
|
@ -1,27 +1,40 @@
|
|||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
class AnnualRequestCancelWizard(models.TransientModel):
|
||||
_name = 'odx.annual.request.cancel.wizard'
|
||||
_description = 'Cancel Annual Request Wizard'
|
||||
class AnnualRequestReasonWizard(models.TransientModel):
|
||||
_name = 'odx.annual.request.reason.wizard'
|
||||
_description = 'Annual Request Reason Wizard'
|
||||
|
||||
action_type = fields.Selection([
|
||||
('cancel', 'Cancel'),
|
||||
('ssd_reject', 'SSD Reject'),
|
||||
('ceo_reject', 'CEO Reject'),
|
||||
], required=True)
|
||||
request_id = fields.Many2one('odx.annual.request', string='Request', required=True)
|
||||
reason = fields.Text(string='Cancellation Reason', required=True)
|
||||
reason = fields.Text(string='Reason', required=True)
|
||||
|
||||
def action_confirm(self):
|
||||
self.ensure_one()
|
||||
request = self.request_id
|
||||
req = self.request_id
|
||||
|
||||
related_orders = self.env['purchase.order'].search([('annual_request_id', '=', request.id)])
|
||||
if self.action_type == 'cancel':
|
||||
# نفس منطقك الحالي لإلغاء أوامر الشراء المرتبطة
|
||||
related_orders = self.env['purchase.order'].search([('annual_request_id', '=', req.id)])
|
||||
for order in related_orders:
|
||||
if order.state:
|
||||
order.button_cancel()
|
||||
|
||||
request.message_post(body=_("Cancelled: %s") % (self.reason or ''))
|
||||
|
||||
req.message_post(body=_("Reason: %s") % self.reason)
|
||||
vals = {'state': 'cancel'}
|
||||
if 'cancel_reason' in request._fields:
|
||||
if 'cancel_reason' in req._fields:
|
||||
vals['cancel_reason'] = self.reason
|
||||
request.write(vals)
|
||||
req.write(vals)
|
||||
|
||||
elif self.action_type == 'ssd_reject':
|
||||
req.message_post(body=_("Reason: %s") % self.reason)
|
||||
req.write({'state': 'rejected'})
|
||||
|
||||
elif self.action_type == 'ceo_reject':
|
||||
req.message_post(body=_("Reason: %s") % self.reason)
|
||||
req.write({'state': 'rejected'})
|
||||
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
<odoo>
|
||||
<!-- Wizard Form View -->
|
||||
<record id="view_odx_annual_request_cancel_wizard_form" model="ir.ui.view">
|
||||
<field name="name">odx.annual.request.cancel.wizard.form</field>
|
||||
<field name="model">odx.annual.request.cancel.wizard</field>
|
||||
<record id="view_odx_annual_request_reason_wizard_form" model="ir.ui.view">
|
||||
<field name="name">odx.annual.request.reason.wizard.form</field>
|
||||
<field name="model">odx.annual.request.reason.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Cancel Request">
|
||||
<form string="Provide Reason">
|
||||
<group>
|
||||
<field name="action_type" invisible="1"/>
|
||||
<field name="request_id" invisible="1"/>
|
||||
<field name="reason" placeholder="اكتب سبب الإلغاء..." required="1"/>
|
||||
<field name="reason" placeholder="اكتب السبب هنا..." required="1"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="action_confirm" type="object" string="Confirm" class="btn-primary"/>
|
||||
|
|
@ -17,9 +18,10 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_odx_annual_request_cancel_wizard" model="ir.actions.act_window">
|
||||
<field name="name">Cancel Request</field>
|
||||
<field name="res_model">odx.annual.request.cancel.wizard</field>
|
||||
<field name="res_model">odx.annual.request.reason.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
|
|
|||
Loading…
Reference in New Issue