diff --git a/odex25_purchase/purchase_requisition_custom/models/purchase_order.py b/odex25_purchase/purchase_requisition_custom/models/purchase_order.py index 32ff84297..d90c2e142 100644 --- a/odex25_purchase/purchase_requisition_custom/models/purchase_order.py +++ b/odex25_purchase/purchase_requisition_custom/models/purchase_order.py @@ -37,7 +37,15 @@ class PurchaseOrderCustom(models.Model): billed_amount = fields.Float(store=True, compute='_compute_amount') remaining_amount = fields.Float(store=True, compute='_compute_amount') + has_requisition = fields.Boolean(compute="_compute_has_requisition", readonly=True) + requisition_state = fields.Selection(related="requisition_id.state") + + @api.depends('requisition_id') + def _compute_has_requisition(self): + for record in self: + record.has_requisition = bool(record.requisition_id) + def read(self, records): return super(PurchaseOrderCustom, self.sudo()).read(records) @@ -446,8 +454,8 @@ class PurchaseOrderCustom(models.Model): def action_approve_po(self): for rec in self: - if rec.requisition_id and rec.requisition_id.state != 'approve': - rec.requisition_id.write({'state': 'approve'}) + # if rec.requisition_id and rec.requisition_id.state != 'approve': + # rec.requisition_id.write({'state': 'approve'}) rec.write({'state': 'draft'}) @api.constrains('state') @@ -465,7 +473,7 @@ class PurchaseOrderCustom(models.Model): def action_skip_budget(self): """ Skip purchase budget""" for po_id in self: - if po_id.state in ('wait_for_send', 'wait') or po_id.request_id: + if po_id.state in ('wait_for_send', 'wait', 'sign') or po_id.request_id: # Deal with double validation process valid_amount = self.env.user.company_id.currency_id.compute( po_id.company_id.po_double_validation_amount, po_id.currency_id) @@ -592,7 +600,8 @@ class PurchaseOrderCustom(models.Model): if self.amount_total == 0: raise ValidationError(_("Total Amount Can't be Zero")) self.write({'state': 'sign', 'is_signed': True}) - self.requisition_id.state = 'purchase_manager' + if self.requisition_id.type_id.exclusive == 'exclusive': + self.requisition_id.state = 'purchase_manager' def button_confirm(self): for order in self: @@ -618,8 +627,8 @@ class PurchaseOrderCustom(models.Model): budget_lines.write({'purchase_remain': amount}) budget_lines.write({'reserve': abs(line.price_subtotal - budget_lines.reserve)}) - if order.requisition_id.id: - order.requisition_id.state = 'done' + # if order.requisition_id.id: + # order.requisition_id.state = 'done' if order.request_id: order.request_id.write({'state': 'done'}) return True 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 ddbd10e1b..e765932a7 100644 --- a/odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py +++ b/odex25_purchase/purchase_requisition_custom/models/purchase_requisition_custom.py @@ -45,6 +45,7 @@ class PurchaseRequisitionCustom(models.Model): ]) state = fields.Selection([ ('draft', 'Draft'), + ('ongoing', 'Ongoing'), ('in_progress', 'Confirmed'), ('committee', 'Committee'), ('purchase_manager', 'Purchase manager'), diff --git a/odex25_purchase/purchase_requisition_custom/views/purchase_requisition_custom.xml b/odex25_purchase/purchase_requisition_custom/views/purchase_requisition_custom.xml index 4fd8d40e4..f6c097cbb 100644 --- a/odex25_purchase/purchase_requisition_custom/views/purchase_requisition_custom.xml +++ b/odex25_purchase/purchase_requisition_custom/views/purchase_requisition_custom.xml @@ -115,11 +115,11 @@ icon="fa-file-text-o"> - - - - - + + + + +