开发
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import product_template
|
||||
from . import sale_order
|
||||
from . import mrp_bom
|
||||
|
||||
13
jikimo_sale_multiple_supply_methods/models/mrp_bom.py
Normal file
13
jikimo_sale_multiple_supply_methods/models/mrp_bom.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from odoo import models, fields
|
||||
|
||||
class MrpBom(models.Model):
|
||||
_inherit = 'mrp.bom'
|
||||
|
||||
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品后再次进行创建bom
|
||||
def bom_create(self, product, bom_type, product_type):
|
||||
bom_id = super(MrpBom, self).bom_create(product, bom_type, product_type)
|
||||
|
||||
# 成品的供应商从模板中获取
|
||||
if product_type == 'product':
|
||||
bom_id.subcontractor_id = product.product_tmpl_id.seller_ids.partner_id.id
|
||||
return bom_id
|
||||
@@ -28,4 +28,5 @@ class ProductTemplate(models.Model):
|
||||
self.tracking = product_template_id.tracking
|
||||
self.is_bfm = product_template_id.is_bfm
|
||||
self.is_manual_processing = product_template_id.is_manual_processing
|
||||
self.seller_ids = product_template_id.seller_ids
|
||||
# 复制 seller_ids
|
||||
self.seller_ids = [(0, 0, {'partner_id': seller.partner_id.id, 'delay': 1.0}) for seller in product_template_id.seller_ids]
|
||||
|
||||
@@ -28,18 +28,18 @@ class SaleOrder(models.Model):
|
||||
# 根据供货方式修改成品模板
|
||||
if line.supply_method == 'automation':
|
||||
bom_type = 'normal'
|
||||
product_template_id = self.env.ref('sf_dlm.product_template_sf').sudo().product_tmpl_id
|
||||
product_template_id = self.env.ref('sf_dlm.product_template_sf').sudo()
|
||||
elif line.supply_method == 'outsourcing':
|
||||
bom_type = 'subcontract'
|
||||
product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_outsourcing').sudo()
|
||||
product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_outsourcing').sudo()
|
||||
elif line.supply_method == 'purchase':
|
||||
product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_purchase').sudo()
|
||||
product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_purchase').sudo()
|
||||
elif line.supply_method == 'manual':
|
||||
bom_type = 'normal'
|
||||
product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_manual_processing').sudo()
|
||||
product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_manual_processing').sudo()
|
||||
|
||||
# 复制成品模板上的属性
|
||||
line.product_id.product_tmpl_id.copy_template(product_template_id)
|
||||
line.product_id.product_tmpl_id.copy_template(product_template_id.product_tmpl_id)
|
||||
|
||||
order_id = self
|
||||
product = line.product_id
|
||||
@@ -63,21 +63,16 @@ class SaleOrder(models.Model):
|
||||
# 当成品上带有客供料选项时,生成坯料时选择“客供料”路线
|
||||
if line.is_incoming_material:
|
||||
# 将成品模板的内容复制到成品上
|
||||
embryo_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_raw_material_customer_provided').sudo()
|
||||
embryo_id = self.env['product.product'].search(
|
||||
[('product_tmpl_id', '=', embryo_template_id.id), ('active', '=', False)],
|
||||
limit=1,
|
||||
order='id asc'
|
||||
)
|
||||
customer_provided_embryo = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_raw_material_customer_provided').sudo()
|
||||
# 创建坯料,客供料的批量不需要创建bom
|
||||
material_customer_provided_embryo = self.env['product.template'].sudo().no_bom_product_create(
|
||||
embryo_id,
|
||||
customer_provided_embryo,
|
||||
item,
|
||||
order_id, 'material_customer_provided', 0, product)
|
||||
# 成品配置bom
|
||||
product_bom_material_customer_provided = self.env['mrp.bom'].with_user(
|
||||
self.env.ref("base.user_admin")).bom_create(
|
||||
product, bom_type, True)
|
||||
product, bom_type, 'product')
|
||||
product_bom_material_customer_provided.with_user(self.env.ref("base.user_admin")).bom_create_line_has(
|
||||
material_customer_provided_embryo)
|
||||
elif line.product_id.materials_type_id.gain_way == '自加工':
|
||||
@@ -100,7 +95,7 @@ class SaleOrder(models.Model):
|
||||
# 产品配置bom
|
||||
product_bom_self_machining = self.env['mrp.bom'].with_user(
|
||||
self.env.ref("base.user_admin")).bom_create(
|
||||
product, bom_type, True)
|
||||
product, bom_type, 'product')
|
||||
product_bom_self_machining.with_user(self.env.ref("base.user_admin")).bom_create_line_has(
|
||||
self_machining_embryo)
|
||||
elif line.product_id.materials_type_id.gain_way == '外协':
|
||||
@@ -124,7 +119,7 @@ class SaleOrder(models.Model):
|
||||
raise UserError('该订单模型的材料型号暂未有原材料,请先配置再进行分配')
|
||||
# 产品配置bom
|
||||
product_bom_outsource = self.env['mrp.bom'].with_user(
|
||||
self.env.ref("base.user_admin")).bom_create(product, bom_type, True)
|
||||
self.env.ref("base.user_admin")).bom_create(product, bom_type, 'product')
|
||||
product_bom_outsource.with_user(self.env.ref("base.user_admin")).bom_create_line_has(
|
||||
outsource_embryo)
|
||||
elif line.product_id.materials_type_id.gain_way == '采购':
|
||||
@@ -132,14 +127,14 @@ class SaleOrder(models.Model):
|
||||
purchase_embryo = self.env['product.template'].sudo().no_bom_product_create(purchase_id,
|
||||
item,
|
||||
order_id,
|
||||
'purchase', i,
|
||||
'purchase', 0,
|
||||
product)
|
||||
if purchase_embryo == -3:
|
||||
raise UserError('该订单模型的材料型号暂未设置获取方式和供应商,请先配置再进行分配')
|
||||
else:
|
||||
# 产品配置bom
|
||||
product_bom_purchase = self.env['mrp.bom'].with_user(
|
||||
self.env.ref("base.user_admin")).bom_create(product, bom_type, True)
|
||||
self.env.ref("base.user_admin")).bom_create(product, bom_type, 'product')
|
||||
product_bom_purchase.with_user(self.env.ref("base.user_admin")).bom_create_line_has(
|
||||
purchase_embryo)
|
||||
return super(SaleOrder, self).action_confirm()
|
||||
|
||||
Reference in New Issue
Block a user