From 40dcd11da85ad088b47eaa2ad9f9263cb4ee22eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Wed, 26 Mar 2025 08:42:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BE=9B=E8=B4=A7?= =?UTF-8?q?=E8=B7=AF=E7=BA=BF=E9=80=89=E6=8B=A9=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__init__.py | 3 ++ .../__manifest__.py | 28 +++++++++++++++++++ .../models/__init__.py | 3 ++ .../models/models.py | 24 ++++++++++++++++ .../static/src/js/ir_model_extend.js | 14 ++++++++++ sf_manufacturing/models/purchase_order.py | 5 ++-- 6 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 jikimo_purchase_request_tier_validation/__init__.py create mode 100644 jikimo_purchase_request_tier_validation/__manifest__.py create mode 100644 jikimo_purchase_request_tier_validation/models/__init__.py create mode 100644 jikimo_purchase_request_tier_validation/models/models.py create mode 100644 jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js diff --git a/jikimo_purchase_request_tier_validation/__init__.py b/jikimo_purchase_request_tier_validation/__init__.py new file mode 100644 index 00000000..cde864ba --- /dev/null +++ b/jikimo_purchase_request_tier_validation/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/jikimo_purchase_request_tier_validation/__manifest__.py b/jikimo_purchase_request_tier_validation/__manifest__.py new file mode 100644 index 00000000..403297ab --- /dev/null +++ b/jikimo_purchase_request_tier_validation/__manifest__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +{ + 'name': "机企猫 采购审批流程", + + 'summary': """ + Short (1 phrase/line) summary of the module's purpose, used as + subtitle on modules listing or apps.openerp.com""", + + 'description': """ + Long description of module's purpose + """, + + 'author': "My Company", + 'website': "https://www.yourcompany.com", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Uncategorized', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['purchase_request_tier_validation'], + + # always loaded + 'data': [ + ], +} diff --git a/jikimo_purchase_request_tier_validation/models/__init__.py b/jikimo_purchase_request_tier_validation/models/__init__.py new file mode 100644 index 00000000..5305644d --- /dev/null +++ b/jikimo_purchase_request_tier_validation/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models \ No newline at end of file diff --git a/jikimo_purchase_request_tier_validation/models/models.py b/jikimo_purchase_request_tier_validation/models/models.py new file mode 100644 index 00000000..4d8e9b3d --- /dev/null +++ b/jikimo_purchase_request_tier_validation/models/models.py @@ -0,0 +1,24 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +import logging + +_logger = logging.getLogger(__name__) + + +class PurchaseRequestTierValidation(models.Model): + _name = 'purchase.request.tier.validation' + + + def _validate_tier(self, tiers=False): + res = super(PurchaseRequestTierValidation, self)._validate_tier(tiers) + + # 检查是否所有审批都已通过 + all_approved = all( + tier_review.status == 'approved' + for tier_review in self.review_ids + ) + + if self.review_ids and all_approved: # 确保有审批记录 + self.state = 'approved' + + return res diff --git a/jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js b/jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js new file mode 100644 index 00000000..97d6f38c --- /dev/null +++ b/jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js @@ -0,0 +1,14 @@ +/** @odoo-module **/ + +import {registerPatch} from "@mail/model/model_core"; + +registerPatch({ + name: "ir.model.review", + fields: { + availableWebViews: { + compute() { + return ["list", "form", "activity"]; + }, + }, + }, +}); \ No newline at end of file diff --git a/sf_manufacturing/models/purchase_order.py b/sf_manufacturing/models/purchase_order.py index 5ee7d8f2..044b68e1 100644 --- a/sf_manufacturing/models/purchase_order.py +++ b/sf_manufacturing/models/purchase_order.py @@ -59,15 +59,14 @@ class PurchaseOrder(models.Model): production_id = self.env['mrp.production'].search([('origin', 'in', origins)]) purchase.production_count = len(production_id) - def write(self, vals): - res = super(PurchaseOrder, self).write(vals) + def button_confirm(self): for record in self: for line in record.order_line: if line.product_qty <= 0: raise UserError('请对【产品】中的【数量】进行输入') if line.price_unit <= 0: raise UserError('请对【产品】中的【单价】进行输入') - return res + return super(PurchaseOrder, self).button_confirm() origin_sale_id = fields.Many2one('sale.order', string='销售订单号', store=True, compute='_compute_origin_sale_id') From 2e74c76e079cc74e4d70bc35966c462bd71320cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Wed, 26 Mar 2025 08:43:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BE=9B=E8=B4=A7?= =?UTF-8?q?=E8=B7=AF=E7=BA=BF=E9=80=89=E6=8B=A9=E6=8A=A5=E9=94=99=EF=BC=8C?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7=E5=AE=A1=E6=89=B9=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=BC=96=E7=A8=8B=E5=B7=B2=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/src/js/ir_model_extend.js | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js diff --git a/jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js b/jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js deleted file mode 100644 index 97d6f38c..00000000 --- a/jikimo_purchase_request_tier_validation/static/src/js/ir_model_extend.js +++ /dev/null @@ -1,14 +0,0 @@ -/** @odoo-module **/ - -import {registerPatch} from "@mail/model/model_core"; - -registerPatch({ - name: "ir.model.review", - fields: { - availableWebViews: { - compute() { - return ["list", "form", "activity"]; - }, - }, - }, -}); \ No newline at end of file