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 @@ +