diff --git a/jikimo_sale_multiple_supply_methods/__init__.py b/jikimo_sale_multiple_supply_methods/__init__.py index e7a30879..62b89387 100644 --- a/jikimo_sale_multiple_supply_methods/__init__.py +++ b/jikimo_sale_multiple_supply_methods/__init__.py @@ -7,11 +7,16 @@ from odoo import api, SUPERUSER_ID def _data_install(cr, registry): env = api.Environment(cr, SUPERUSER_ID, {}) # 获取所有需要设置的产品模板 - env.ref('jikimo_sale_multiple_supply_methods.product_product_purchase').product_tmpl_id.write({'active': False}) - env.ref('jikimo_sale_multiple_supply_methods.product_product_manual_processing').product_tmpl_id.write({'active': False, 'single_manufacturing': True}) - env.ref('jikimo_sale_multiple_supply_methods.product_product_default').product_tmpl_id.write({'active': False}) - env.ref('jikimo_sale_multiple_supply_methods.product_product_raw_material_customer_provided').product_tmpl_id.write({'active': False}) - env.ref('jikimo_sale_multiple_supply_methods.product_product_outsourcing').product_tmpl_id.write({'active': False}) + env.ref('jikimo_sale_multiple_supply_methods.product_template_purchase').product_variant_id.write({'active': False, 'is_bfm': True}) + env.ref('jikimo_sale_multiple_supply_methods.product_template_manual_processing').product_variant_id.write({'active': False, 'single_manufacturing': True, 'is_bfm': True}) + env.ref('jikimo_sale_multiple_supply_methods.product_template_default').product_variant_id.write({'active': False, 'is_bfm': True}) + env.ref('jikimo_sale_multiple_supply_methods.product_template_raw_material_customer_provided').product_variant_id.write({'active': False}) + env.ref('jikimo_sale_multiple_supply_methods.product_template_outsourcing').product_variant_id.write({'active': False, 'is_bfm': True}) + env.ref('sf_dlm.product_embryo_sf_self_machining').product_tmpl_id.write({'categ_type': '坯料'}) + env.ref('sf_dlm.product_template_sf').product_tmpl_id.write({'categ_type': '成品'}) + env.ref('sf_dlm.product_embryo_sf_outsource').product_tmpl_id.write({'categ_type': '坯料'}) + env.ref('sf_dlm.product_embryo_sf_purchase').product_tmpl_id.write({'categ_type': '坯料'}) + # 为三步制造增加规则 warehouse = env['stock.warehouse'].search([('company_id', '=', env.company.id)], limit=1) product_route_id = warehouse.pbm_route_id diff --git a/jikimo_sale_multiple_supply_methods/__manifest__.py b/jikimo_sale_multiple_supply_methods/__manifest__.py index b39d70a8..a7d39ac7 100644 --- a/jikimo_sale_multiple_supply_methods/__manifest__.py +++ b/jikimo_sale_multiple_supply_methods/__manifest__.py @@ -6,7 +6,7 @@ 'author': 'fox', 'website': '', 'category': '', - 'depends': ['product', 'sf_dlm', 'sale_stock', 'sf_sale'], + 'depends': ['sf_dlm', 'sale_stock', 'sf_sale'], "data": [ 'security/ir.model.access.csv', 'data/stock_routes.xml', diff --git a/jikimo_sale_multiple_supply_methods/controllers/main.py b/jikimo_sale_multiple_supply_methods/controllers/main.py index 17a8c9a4..9127f80e 100644 --- a/jikimo_sale_multiple_supply_methods/controllers/main.py +++ b/jikimo_sale_multiple_supply_methods/controllers/main.py @@ -19,7 +19,8 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect): res = {'status': 1, 'factory_order_no': ''} # _logger.info('get_bfm_process_order_list:%s' % kw['order_number']) try: - product_id = request.env.ref('jikimo_sale_multiple_supply_methods.product_product_default').sudo() + product_id = request.env.ref('jikimo_sale_multiple_supply_methods.product_template_default').with_context(active_test=False).sudo().product_variant_id + _logger.info('product_id:%s' % product_id) company_id = request.env.ref('base.main_company').sudo() bfm_process_order_list = json.loads(kw['bfm_process_order_list']) order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create( diff --git a/jikimo_sale_multiple_supply_methods/data/product_data.xml b/jikimo_sale_multiple_supply_methods/data/product_data.xml index 40c8ca63..dc9b70a7 100644 --- a/jikimo_sale_multiple_supply_methods/data/product_data.xml +++ b/jikimo_sale_multiple_supply_methods/data/product_data.xml @@ -1,7 +1,7 @@ - + 人工线下加工模板 @@ -15,11 +15,11 @@ true serial - true + true - + 成品外购模板 @@ -30,10 +30,10 @@ - true + - + 成品委外加工模板 @@ -44,10 +44,10 @@ - true + - + 成品初始化模板 @@ -57,7 +57,7 @@ - true + @@ -65,7 +65,7 @@ - + 坯料客供料模板 @@ -79,12 +79,20 @@ + - - 坯料加工模板(人工线下加工) + true + + + + + + + + \ No newline at end of file diff --git a/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py b/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py index d61d3a6f..89d3a6d8 100644 --- a/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py +++ b/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py @@ -56,7 +56,7 @@ class QuickEasyOrder(models.Model): 'part_name': '', }) company_id = self.env.ref('base.main_company').sudo() - product_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_default').sudo() + product_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_default').sudo().with_context(active_test=False).product_variant_id # user_id = request.env.ref('base.user_admin').sudo() order_id = self.env['sale.order'].sale_order_create(company_id, 'XXXXX', 'XXXXX', 'XXXXX', str(datetime.now()), '现结', '支付宝', state='draft') diff --git a/jikimo_sale_multiple_supply_methods/models/sale_order.py b/jikimo_sale_multiple_supply_methods/models/sale_order.py index 822958ec..27cecac6 100644 --- a/jikimo_sale_multiple_supply_methods/models/sale_order.py +++ b/jikimo_sale_multiple_supply_methods/models/sale_order.py @@ -21,25 +21,28 @@ class SaleOrder(models.Model): self.state = 'supply method' def action_confirm(self): + # 判断是否所有产品都选择了供货方式 + filter_line = self.order_line.filtered(lambda line: not line.supply_method) + if filter_line: + raise UserError('当前订单内(%s)产品未选择路线,请选择后重试' % ','.join(filter_line.mapped('product_id.name'))) + for line in self.order_line: - if not line.supply_method: - raise UserError('请先选择供货方式') bom_type = '' # 根据供货方式修改成品模板 if line.supply_method == 'automation': bom_type = 'normal' - product_template_id = self.env.ref('sf_dlm.product_template_sf').sudo() + product_template_id = self.env.ref('sf_dlm.product_template_sf').sudo().product_tmpl_id elif line.supply_method == 'outsourcing': bom_type = 'subcontract' - product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_outsourcing').sudo() + product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_outsourcing').sudo() elif line.supply_method == 'purchase': - product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_purchase').sudo() + product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_purchase').sudo() elif line.supply_method == 'manual': bom_type = 'normal' - product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_manual_processing').sudo() + product_template_id = self.env.ref('jikimo_sale_multiple_supply_methods.product_template_manual_processing').sudo() # 复制成品模板上的属性 - line.product_id.product_tmpl_id.copy_template(product_template_id.product_tmpl_id) + line.product_id.product_tmpl_id.copy_template(product_template_id) order_id = self product = line.product_id @@ -63,10 +66,10 @@ class SaleOrder(models.Model): # 当成品上带有客供料选项时,生成坯料时选择“客供料”路线 if line.is_incoming_material: # 将成品模板的内容复制到成品上 - customer_provided_embryo = self.env.ref('jikimo_sale_multiple_supply_methods.product_product_raw_material_customer_provided').sudo() + customer_provided_embryo = self.env.ref('jikimo_sale_multiple_supply_methods.product_tempalte_raw_material_customer_provided').sudo() # 创建坯料,客供料的批量不需要创建bom material_customer_provided_embryo = self.env['product.template'].sudo().no_bom_product_create( - customer_provided_embryo, + customer_provided_embryo.with_context(active_test=False).product_variant_id, item, order_id, 'material_customer_provided', 0, product) # 成品配置bom diff --git a/jikimo_sale_multiple_supply_methods/views/sale_order_views.xml b/jikimo_sale_multiple_supply_methods/views/sale_order_views.xml index c5a1766c..2ea9a835 100644 --- a/jikimo_sale_multiple_supply_methods/views/sale_order_views.xml +++ b/jikimo_sale_multiple_supply_methods/views/sale_order_views.xml @@ -22,7 +22,7 @@ confirm_to_supply_method -