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 1/4] =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7?=
=?UTF-8?q?=E5=AD=97=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
From e1fd4c465e1090ff31f1e28bc23472d10dc4a760 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?=
Date: Fri, 21 Mar 2025 15:27:11 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=A1=AE=E8=AE=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/controllers/main.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/sf_manufacturing/controllers/main.py b/sf_manufacturing/controllers/main.py
index 839b87fe..9223b765 100644
--- a/sf_manufacturing/controllers/main.py
+++ b/sf_manufacturing/controllers/main.py
@@ -45,6 +45,7 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect):
order_id.with_user(request.env.ref("base.user_admin")).sale_order_create_line(product, item)
i += 1
res['factory_order_no'] = order_id.name
+ order_id.confirm_to_supply_method()
except Exception as e:
traceback_error = traceback.format_exc()
logging.error('get_bfm_process_order_list error: %s' % traceback_error)
From d202e7ee93ad7c084dda14b4c4c0e1856ff32c08 Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Fri, 21 Mar 2025 15:37:10 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E5=90=8D=E7=A7=B0?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=AE=A1=E7=AE=97=E6=96=B9=E6=B3=95=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jikimo_purchase_request/models/purchase_request.py | 2 +-
sf_manufacturing/models/purchase_order.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/jikimo_purchase_request/models/purchase_request.py b/jikimo_purchase_request/models/purchase_request.py
index 52310269..4b5f86ba 100644
--- a/jikimo_purchase_request/models/purchase_request.py
+++ b/jikimo_purchase_request/models/purchase_request.py
@@ -28,7 +28,7 @@ class PurchaseRequestLine(models.Model):
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')
+ part_name = fields.Char('零件名称', store=True, compute='_compute_part_number')
related_product = fields.Many2one('product.product', string='关联产品',
help='经此产品工艺加工成的成品')
diff --git a/sf_manufacturing/models/purchase_order.py b/sf_manufacturing/models/purchase_order.py
index 039dfee5..3d71b6c7 100644
--- a/sf_manufacturing/models/purchase_order.py
+++ b/sf_manufacturing/models/purchase_order.py
@@ -110,7 +110,7 @@ class PurchaseOrderLine(models.Model):
_inherit = 'purchase.order.line'
part_number = fields.Char('零件图号', store=True, compute='_compute_part_number')
- part_name = fields.Char('零件名称', store=True, compute='_compute_part_name')
+ part_name = fields.Char('零件名称', store=True, compute='_compute_part_number')
related_product = fields.Many2one('product.product', string='关联产品',
help='经此产品工艺加工成的成品')
manual_part_number = fields.Char()
From ad8f63570dd25c9132e21516fa11aa7721c5f1f3 Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Fri, 21 Mar 2025 16:10:30 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E8=AF=B7=E8=B4=AD=E6=98=8E=E7=BB=86?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BE=9B=E8=B4=A7=E6=96=B9=E5=BC=8F=E6=90=9C?=
=?UTF-8?q?=E7=B4=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jikimo_purchase_request/views/purchase_request_view.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/jikimo_purchase_request/views/purchase_request_view.xml b/jikimo_purchase_request/views/purchase_request_view.xml
index 385db699..db88a4e2 100644
--- a/jikimo_purchase_request/views/purchase_request_view.xml
+++ b/jikimo_purchase_request/views/purchase_request_view.xml
@@ -55,6 +55,7 @@
+