From 80e9085e292e4aa65b41092ce2772c429855fed0 Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Fri, 21 Mar 2025 15:05:42 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7=E5=AD=97?=
=?UTF-8?q?=E6=AE=B5=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jikimo_purchase_request/models/__init__.py | 1 +
.../models/purchase_order.py | 16 ++++++
.../models/purchase_request.py | 34 +++++++++++++
.../views/purchase_request_view.xml | 49 +++++++++++++++++++
4 files changed, 100 insertions(+)
create mode 100644 jikimo_purchase_request/models/purchase_order.py
diff --git a/jikimo_purchase_request/models/__init__.py b/jikimo_purchase_request/models/__init__.py
index 6942c727..d27a3cd0 100644
--- a/jikimo_purchase_request/models/__init__.py
+++ b/jikimo_purchase_request/models/__init__.py
@@ -2,4 +2,5 @@
from . import product_template
from . import purchase_request
from . import sale_order
+from . import purchase_order
from . import stock_rule
diff --git a/jikimo_purchase_request/models/purchase_order.py b/jikimo_purchase_request/models/purchase_order.py
new file mode 100644
index 00000000..f22027fb
--- /dev/null
+++ b/jikimo_purchase_request/models/purchase_order.py
@@ -0,0 +1,16 @@
+from odoo import api, fields, models, _
+
+
+class PurchaseOrder(models.Model):
+ _inherit = 'purchase.order'
+
+ state = fields.Selection([
+ ('draft', '询价'),
+ ('sent', '发送询价'),
+ ('to approve', '待批准'),
+ ("approved", "已批准"),
+ ('purchase', '采购订单'),
+ ('done', '完成'),
+ ('cancel', '取消'),
+ ('rejected', '已驳回')
+ ], string='Status', readonly=True, index=True, copy=False, default='draft', tracking=True)
\ No newline at end of file
diff --git a/jikimo_purchase_request/models/purchase_request.py b/jikimo_purchase_request/models/purchase_request.py
index f2a78bda..52310269 100644
--- a/jikimo_purchase_request/models/purchase_request.py
+++ b/jikimo_purchase_request/models/purchase_request.py
@@ -1,3 +1,4 @@
+import re
from odoo import models, fields, api
@@ -25,6 +26,12 @@ class PurchaseRequestLine(models.Model):
_description = '采购申请明细'
origin = fields.Char(string="Source Document")
+
+ part_number = fields.Char('零件图号', store=True, compute='_compute_part_number')
+ part_name = fields.Char('零件名称', store=True, compute='_compute_part_name')
+ related_product = fields.Many2one('product.product', string='关联产品',
+ help='经此产品工艺加工成的成品')
+
supply_method = fields.Selection([
('automation', "自动化产线加工"),
('manual', "人工线下加工"),
@@ -56,3 +63,30 @@ class PurchaseRequestLine(models.Model):
prl.supply_method = order_line[0].supply_method
else:
prl.supply_method = None
+
+ @api.depends('product_id')
+ def _compute_part_number(self):
+ for record in self:
+ if record.part_number and record.part_name:
+ continue
+ if record.product_id.categ_id.name == '坯料':
+ product_name = ''
+ match = re.search(r'(S\d{5}-\d)', record.product_id.name)
+ # 如果匹配成功,提取结果
+ if match:
+ product_name = match.group(0)
+ sale_order_name = ''
+ match_sale = re.search(r'S(\d+)', record.product_id.name)
+ if match_sale:
+ sale_order_name = match_sale.group(0)
+ sale_order = self.env['sale.order'].sudo().search(
+ [('name', '=', sale_order_name)])
+ if sale_order:
+ filtered_order_line = sale_order.order_line.filtered(
+ lambda order_line: re.search(f'{product_name}$', order_line.product_id.name)
+ )
+ record.part_number = filtered_order_line.product_id.part_number
+ record.part_name = filtered_order_line.product_id.part_name
+ else:
+ record.part_number = record.product_id.part_number
+ record.part_name = record.product_id.part_name
diff --git a/jikimo_purchase_request/views/purchase_request_view.xml b/jikimo_purchase_request/views/purchase_request_view.xml
index 66a62bbf..385db699 100644
--- a/jikimo_purchase_request/views/purchase_request_view.xml
+++ b/jikimo_purchase_request/views/purchase_request_view.xml
@@ -10,6 +10,55 @@
+
+
+
+
+
+
+
+
+
+ purchase.request.line.sf.tree
+ purchase.request.line
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+ 采购数量
+
+
+ 订单状态
+
+
+
+
+
+
+
+
+
+
+ purchase.request.line.sf.search
+ purchase.request.line
+
+
+
+
+
+
+
\ No newline at end of file