diff --git a/jikimo_purchase_request/models/purchase_order.py b/jikimo_purchase_request/models/purchase_order.py index 59a7959c..95f81e9f 100644 --- a/jikimo_purchase_request/models/purchase_order.py +++ b/jikimo_purchase_request/models/purchase_order.py @@ -1,4 +1,5 @@ from odoo import api, fields, models, _ +from odoo.tools import float_compare class PurchaseOrder(models.Model): @@ -38,3 +39,18 @@ class PurchaseOrder(models.Model): move_ids.write({'state': 'waiting', 'is_done': False}) return res + def write(self, vals): + res = super(PurchaseOrder, self).write(vals) + if 'state' in vals and vals['state'] == 'purchase': + purchase_request = self.order_line.purchase_request_lines.request_id + if purchase_request: + finished = True + # 判断该采购申请所有明细行是否都完成 + for purchase_request_line in purchase_request.line_ids: + finished_qty = sum(purchase_request_line.purchase_lines.filtered(lambda line: line.state == 'purchase').mapped('product_qty')) + if float_compare(finished_qty ,purchase_request_line.product_qty, precision_rounding=purchase_request_line.product_id.uom_id.rounding) < 0: + finished = False + break + if finished: + purchase_request.button_done() + return res diff --git a/jikimo_purchase_request/views/purchase_request_view.xml b/jikimo_purchase_request/views/purchase_request_view.xml index 9976b52a..d8357fac 100644 --- a/jikimo_purchase_request/views/purchase_request_view.xml +++ b/jikimo_purchase_request/views/purchase_request_view.xml @@ -15,6 +15,26 @@ + + + + + 1 + + + oe_highlight + + + + + + purchase.request.sf.tree + purchase.request + + + + hide +