修复采购类型根据供货方式来赋值
This commit is contained in:
@@ -6,50 +6,50 @@ from odoo import models, fields, api, _
|
|||||||
class StockRuleInherit(models.Model):
|
class StockRuleInherit(models.Model):
|
||||||
_inherit = 'stock.rule'
|
_inherit = 'stock.rule'
|
||||||
|
|
||||||
@api.model
|
# @api.model
|
||||||
def _run_buy(self, procurements):
|
# def _run_buy(self, procurements):
|
||||||
# 判断补货组的采购类型
|
# # 判断补货组的采购类型
|
||||||
procurements_group = {'standard': [], 'outsourcing': []}
|
# procurements_group = {'standard': [], 'outsourcing': []}
|
||||||
for procurement, rule in procurements:
|
# for procurement, rule in procurements:
|
||||||
is_outsourcing = False
|
# is_outsourcing = False
|
||||||
product = procurement.product_id
|
# product = procurement.product_id
|
||||||
# 获取主 BOM
|
# # 获取主 BOM
|
||||||
bom = self.env['mrp.bom'].search([('product_tmpl_id', '=', product.product_tmpl_id.id)], limit=1)
|
# bom = self.env['mrp.bom'].search([('product_tmpl_id', '=', product.product_tmpl_id.id)], limit=1)
|
||||||
|
#
|
||||||
if bom:
|
# if bom:
|
||||||
# 遍历 BOM 中的组件(即坯料等)
|
# # 遍历 BOM 中的组件(即坯料等)
|
||||||
for line in bom.bom_line_ids:
|
# for line in bom.bom_line_ids:
|
||||||
raw_material = line.product_id
|
# raw_material = line.product_id
|
||||||
# 检查路线
|
# # 检查路线
|
||||||
for route in raw_material.route_ids:
|
# for route in raw_material.route_ids:
|
||||||
# print('route.name:', route.name)
|
# # print('route.name:', route.name)
|
||||||
if route.name == '按订单补给外包商':
|
# if route.name == '按订单补给外包商':
|
||||||
is_outsourcing = True
|
# is_outsourcing = True
|
||||||
|
#
|
||||||
if is_outsourcing:
|
# if is_outsourcing:
|
||||||
procurements_group['outsourcing'].append((procurement, rule))
|
# procurements_group['outsourcing'].append((procurement, rule))
|
||||||
else:
|
# else:
|
||||||
procurements_group['standard'].append((procurement, rule))
|
# procurements_group['standard'].append((procurement, rule))
|
||||||
|
#
|
||||||
for key, value in procurements_group.items():
|
# for key, value in procurements_group.items():
|
||||||
super(StockRuleInherit, self)._run_buy(value)
|
# super(StockRuleInherit, self)._run_buy(value)
|
||||||
|
#
|
||||||
if key == 'outsourcing':
|
# if key == 'outsourcing':
|
||||||
for procurement, rule in value:
|
# for procurement, rule in value:
|
||||||
supplier = procurement.values.get('supplier')
|
# supplier = procurement.values.get('supplier')
|
||||||
if supplier:
|
# if supplier:
|
||||||
domain = rule._make_po_get_domain(procurement.company_id, procurement.values,
|
# domain = rule._make_po_get_domain(procurement.company_id, procurement.values,
|
||||||
supplier.partner_id)
|
# supplier.partner_id)
|
||||||
logging.info("domain=============: %s", domain)
|
# logging.info("domain=============: %s", domain)
|
||||||
po = self.env['purchase.order'].sudo().search([
|
# po = self.env['purchase.order'].sudo().search([
|
||||||
('partner_id', '=', supplier.partner_id.id),
|
# ('partner_id', '=', supplier.partner_id.id),
|
||||||
('company_id', '=', procurement.company_id.id), # 保证公司一致
|
# ('company_id', '=', procurement.company_id.id), # 保证公司一致
|
||||||
('origin', 'like', procurement.origin), # 根据来源匹配
|
# ('origin', 'like', procurement.origin), # 根据来源匹配
|
||||||
('state', '=', 'draft') # 状态为草稿
|
# ('state', '=', 'draft') # 状态为草稿
|
||||||
], limit=1)
|
# ], limit=1)
|
||||||
logging.info("po=: %s", po)
|
# logging.info("po=: %s", po)
|
||||||
if po:
|
# if po:
|
||||||
po.write({'purchase_type': 'outsourcing'})
|
# po.write({'purchase_type': 'outsourcing'})
|
||||||
|
|
||||||
# # 首先调用父类的 _run_buy 方法,以保留原有逻辑
|
# # 首先调用父类的 _run_buy 方法,以保留原有逻辑
|
||||||
# super(StockRuleInherit, self)._run_buy(procurements)
|
# super(StockRuleInherit, self)._run_buy(procurements)
|
||||||
|
|||||||
Reference in New Issue
Block a user