diff --git a/jikimo_purchase_request/__manifest__.py b/jikimo_purchase_request/__manifest__.py index f2054556..683c4311 100644 --- a/jikimo_purchase_request/__manifest__.py +++ b/jikimo_purchase_request/__manifest__.py @@ -8,7 +8,7 @@ 'category': 'purchase', 'depends': ['sf_manufacturing', 'purchase_request'], 'data': [ - + 'views/sale_order_view.xml', ], # 'assets': { # 'web.assets_backend': [ diff --git a/jikimo_purchase_request/models/__init__.py b/jikimo_purchase_request/models/__init__.py index ce8d8227..284002d0 100644 --- a/jikimo_purchase_request/models/__init__.py +++ b/jikimo_purchase_request/models/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- from . import product_template -from . import purchase_request \ No newline at end of file +from . import purchase_request +from . import sale_order diff --git a/jikimo_purchase_request/models/sale_order.py b/jikimo_purchase_request/models/sale_order.py new file mode 100644 index 00000000..8755c2c9 --- /dev/null +++ b/jikimo_purchase_request/models/sale_order.py @@ -0,0 +1,50 @@ +from odoo import fields, models, api, _ + + +class StatusChange(models.Model): + _inherit = 'sale.order' + + def action_confirm(self): + res = super(StatusChange, self).action_confirm() + # 采购申请自动确认 + pr_ids = self.env["purchase.request"].sudo().search( + [('origin', 'like', self.name), ('rule_new_add', '=', True)]) + if pr_ids: + pr_ids.write({'need_validation': False}) + pr_ids.write({"state": "approved"}) + return res + + purchase_request_purchase_order_count = fields.Integer('采购申请单数量', compute='_compute_purchase_request_count', + store=True) + + @api.depends('state') + def _compute_purchase_request_count(self): + for so in self: + pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', so.name)]) + if pr_ids: + so.purchase_request_purchase_order_count = len(pr_ids) + else: + so.purchase_request_purchase_order_count = 0 + + def action_view_purchase_request_purchase_orders(self): + """ + 采购请求 + """ + self.ensure_one() + pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', self.name)]) + action = { + 'res_model': 'purchase.request', + 'type': 'ir.actions.act_window', + } + if len(pr_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': pr_ids[0].id, + }) + else: + action.update({ + 'name': _("从 %s生成采购请求单", self.name), + 'domain': [('id', 'in', pr_ids)], + 'view_mode': 'tree,form', + }) + return action diff --git a/jikimo_purchase_request/views/sale_order_view.xml b/jikimo_purchase_request/views/sale_order_view.xml new file mode 100644 index 00000000..625fcc56 --- /dev/null +++ b/jikimo_purchase_request/views/sale_order_view.xml @@ -0,0 +1,19 @@ + + + sale.order.inherited.form.purchase.request + sale.order + + + + + + + + \ No newline at end of file diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index b3c058ae..b4aca0dc 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -313,10 +313,11 @@ class RePurchaseOrder(models.Model): @api.depends('origin') def _compute_purchase_type(self): for purchase in self: - order_id = self.env['sale.order'].sudo().search([('name', '=', purchase.origin)]) - if order_id: + origin = [origin.replace(' ', '') for origin in purchase.origin.split(',')] + order_ids = self.env['sale.order'].sudo().search([('name', 'in', origin)]) + if order_ids: product_list = [line.product_id.id for line in purchase.order_line] - for order_line in order_id.order_line: + for order_line in order_ids[0].order_line: if order_line.supply_method == 'purchase': if order_line.product_id.id in product_list: purchase.purchase_type = 'outside'