diff --git a/jikimo_purchase_tier_validation/__init__.py b/jikimo_purchase_tier_validation/__init__.py new file mode 100644 index 00000000..511a0ca3 --- /dev/null +++ b/jikimo_purchase_tier_validation/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models \ No newline at end of file diff --git a/jikimo_purchase_tier_validation/__manifest__.py b/jikimo_purchase_tier_validation/__manifest__.py new file mode 100644 index 00000000..99945b9e --- /dev/null +++ b/jikimo_purchase_tier_validation/__manifest__.py @@ -0,0 +1,35 @@ +# -*- 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', 'base_tier_validation'], + + # always loaded + 'data': [ + # 'security/ir.model.access.csv', + 'views/views.xml', + 'views/templates.xml', + ], + # only loaded in demonstration mode + 'demo': [ + 'demo/demo.xml', + ], +} diff --git a/jikimo_purchase_tier_validation/controllers/__init__.py b/jikimo_purchase_tier_validation/controllers/__init__.py new file mode 100644 index 00000000..457bae27 --- /dev/null +++ b/jikimo_purchase_tier_validation/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers \ No newline at end of file diff --git a/jikimo_purchase_tier_validation/controllers/controllers.py b/jikimo_purchase_tier_validation/controllers/controllers.py new file mode 100644 index 00000000..6bbe5e40 --- /dev/null +++ b/jikimo_purchase_tier_validation/controllers/controllers.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# from odoo import http + + +# class JikimoPurchaseTierValidation(http.Controller): +# @http.route('/jikimo_purchase_tier_validation/jikimo_purchase_tier_validation', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/jikimo_purchase_tier_validation/jikimo_purchase_tier_validation/objects', auth='public') +# def list(self, **kw): +# return http.request.render('jikimo_purchase_tier_validation.listing', { +# 'root': '/jikimo_purchase_tier_validation/jikimo_purchase_tier_validation', +# 'objects': http.request.env['jikimo_purchase_tier_validation.jikimo_purchase_tier_validation'].search([]), +# }) + +# @http.route('/jikimo_purchase_tier_validation/jikimo_purchase_tier_validation/objects/', auth='public') +# def object(self, obj, **kw): +# return http.request.render('jikimo_purchase_tier_validation.object', { +# 'object': obj +# }) diff --git a/jikimo_purchase_tier_validation/demo/demo.xml b/jikimo_purchase_tier_validation/demo/demo.xml new file mode 100644 index 00000000..cbba42ce --- /dev/null +++ b/jikimo_purchase_tier_validation/demo/demo.xml @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/jikimo_purchase_tier_validation/models/__init__.py b/jikimo_purchase_tier_validation/models/__init__.py new file mode 100644 index 00000000..5305644d --- /dev/null +++ b/jikimo_purchase_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_tier_validation/models/models.py b/jikimo_purchase_tier_validation/models/models.py new file mode 100644 index 00000000..bb61cd5b --- /dev/null +++ b/jikimo_purchase_tier_validation/models/models.py @@ -0,0 +1,19 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + +class jikimo_purchase_tier_validation(models.Model): + _name = 'purchase.order' + _inherit = ['purchase.order', 'tier.validation'] + + def request_validation(self): + for record in self: + missing_fields = [] + if not record.partner_ref: + missing_fields.append('合同名称') + if not record.contract_number: + missing_fields.append('合同编号') + + if missing_fields: + raise ValidationError(_('如下字段要求必须填写:%s') % '、'.join(missing_fields)) + + return super(jikimo_purchase_tier_validation, self).request_validation() diff --git a/jikimo_purchase_tier_validation/security/ir.model.access.csv b/jikimo_purchase_tier_validation/security/ir.model.access.csv new file mode 100644 index 00000000..ccd753fc --- /dev/null +++ b/jikimo_purchase_tier_validation/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_jikimo_purchase_tier_validation_jikimo_purchase_tier_validation,jikimo_purchase_tier_validation.jikimo_purchase_tier_validation,model_jikimo_purchase_tier_validation_jikimo_purchase_tier_validation,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/jikimo_purchase_tier_validation/views/templates.xml b/jikimo_purchase_tier_validation/views/templates.xml new file mode 100644 index 00000000..cea6b39a --- /dev/null +++ b/jikimo_purchase_tier_validation/views/templates.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/jikimo_purchase_tier_validation/views/views.xml b/jikimo_purchase_tier_validation/views/views.xml new file mode 100644 index 00000000..5c87a811 --- /dev/null +++ b/jikimo_purchase_tier_validation/views/views.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 8c2ffada..ed117589 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -363,15 +363,9 @@ class MrpProduction(models.Model): # if production.state == 'pending_cam': # if all(wo_state in 'done' for wo_state in production.workorder_ids.mapped('state')): # production.state = 'done' - if any( - ( - wo.test_results == '返工' and wo.state == 'done' and production.programming_state in [ - '已编程']) or ( - wo.state == 'rework' and production.programming_state == '编程中') or ( - wo.is_rework is True and wo.state == 'done' and production.programming_state in ['编程中', - '已编程']) - for wo in - production.workorder_ids): + if any((wo.test_results == '返工' and wo.state == 'done' and production.programming_state in ['已编程']) + or (wo.is_rework is True and wo.state == 'done' and production.programming_state in ['编程中', '已编程']) + for wo in production.workorder_ids): production.state = 'rework' if any(wo.test_results == '报废' and wo.state == 'done' for wo in production.workorder_ids): production.state = 'scrap' @@ -381,6 +375,10 @@ class MrpProduction(models.Model): # 如果制造订单的功能刀具为【无效刀】则制造订单状态改为返工 if production.tool_state == '2': production.state = 'rework' + if production.workorder_ids and all(wo_state in ('done', 'rework', 'cancel') for wo_state in production.workorder_ids.mapped('state')): + if production.state not in ['scrap', 'rework', 'cancel']: + production.state = 'done' + # 退回调整 def technology_back_adjust(self): diff --git a/sf_manufacturing/views/mrp_production_addional_change.xml b/sf_manufacturing/views/mrp_production_addional_change.xml index 567930dd..8a44b621 100644 --- a/sf_manufacturing/views/mrp_production_addional_change.xml +++ b/sf_manufacturing/views/mrp_production_addional_change.xml @@ -131,11 +131,6 @@ - -