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
+