diff --git a/sf_bpm_api/controllers/controllers.py b/sf_bpm_api/controllers/controllers.py index 483a04d4..11126715 100644 --- a/sf_bpm_api/controllers/controllers.py +++ b/sf_bpm_api/controllers/controllers.py @@ -16,17 +16,24 @@ class Sf_Bf_Connect(http.Controller): :param kw: :return: """ - res = {'status': 1} - datas = request.httprequest.data - ret = json.loads(datas) - ret = json.loads(ret['result']) - product_id = request.env.ref('sf_bpm_api.product_template_sf').sudo() - company_id = request.env.ref('base.main_company').sudo() - order_id = request.env['sale.order'].sudo().sale_order_create(ret['delivery_end_date'], company_id) - i = 1 - for item in ret['bfm_process_order_list']: - product = request.env['product.template'].sudo().product_create(product_id, item, order_id, ret['order_number'], i) - order_id.sale_order_create_line(product, item) - i += 1 - res['factory_order_no'] = order_id.name + res = {'status': 1, 'factory_order_no': ''} + logging.info('get_bfm_process_order_list:%s' % kw) + try: + datas = request.httprequest.data + ret = json.loads(datas) + ret = json.loads(ret['result']) + product_id = request.env.ref('sf_bpm_api.product_template_sf').sudo() + company_id = request.env.ref('base.main_company').sudo() + order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create(ret['delivery_end_date'], company_id) + i = 1 + for item in ret['bfm_process_order_list']: + product = request.env['product.template'].sudo().product_create(product_id, item, order_id, + ret['order_number'], i) + order_id.with_user(request.env.ref("base.user_admin")).sale_order_create_line(product, item) + i += 1 + res['factory_order_no'] = order_id.name + return json.JSONEncoder().encode(res) + except Exception as e: + logging.info('get_bfm_process_order_list error:%s' % e) + res['status'] = -1 return json.JSONEncoder().encode(res) diff --git a/sf_bpm_api/data/product_data.xml b/sf_bpm_api/data/product_data.xml index 908f8ba8..b76cc00c 100644 --- a/sf_bpm_api/data/product_data.xml +++ b/sf_bpm_api/data/product_data.xml @@ -9,7 +9,6 @@ false - false diff --git a/sf_bpm_api/models/product_template.py b/sf_bpm_api/models/product_template.py index a798e294..0cf42bac 100644 --- a/sf_bpm_api/models/product_template.py +++ b/sf_bpm_api/models/product_template.py @@ -4,7 +4,6 @@ from odoo.exceptions import ValidationError class ResProductTemplate(models.Model): _inherit = 'product.template' - # sale_order_id = fields.Many2one('sale.order') model_long = fields.Float('长[mm]', digits=(16, 3)) model_width = fields.Float('宽[mm]', digits=(16, 3)) @@ -13,6 +12,7 @@ class ResProductTemplate(models.Model): model_precision = fields.Float('精度要求', digits=(16, 3)) materials_id = fields.Many2one('mrs.production.materials', string='材料') + # 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品 def product_create(self, product_id, item, order_id, order_number, i): copy_product_id = product_id.with_user(self.env.ref("base.user_admin")).copy() copy_product_id.product_tmpl_id.active = True @@ -23,9 +23,10 @@ class ResProductTemplate(models.Model): 'model_height': item['model_height'], 'model_volume': item['model_volume'], 'list_price': item['price'], + 'materials_id': self.env['mrs.production.materials'].sudo().search( + [('materials_no', '=', item['texture_code'])]).id, 'default_code': '%s-%s' % (order_number, i), - 'barcode': 'cf0bbe2fdad6339d138cdee732750e3e502140c2', - # 'barcode': item['barcode'], + 'barcode': item['barcode'], 'active': True } return copy_product_id.sudo().create(vals) diff --git a/sf_bpm_api/models/sale_order.py b/sf_bpm_api/models/sale_order.py index c2d5598d..6f0cdb6f 100644 --- a/sf_bpm_api/models/sale_order.py +++ b/sf_bpm_api/models/sale_order.py @@ -7,9 +7,10 @@ class ReSaleOrder(models.Model): _inherit = 'sale.order' deadline_of_delivery = fields.Date('交货截止日期') + # product_line_ids = fields.One2many('product.template', 'sale_order_id') - # 业务平台分配工厂时调用该方法先创建销售订单 + # 业务平台分配工厂后在智能工厂先创建销售订单 def sale_order_create(self, deadline_of_delivery, company_id): now_time = datetime.datetime.now() order_id = self.env['sale.order'].sudo().create({ @@ -23,23 +24,14 @@ class ReSaleOrder(models.Model): }) return order_id + # 业务平台分配工厂时在创建完产品后再创建销售明细信息 def sale_order_create_line(self, product, item): vals = { 'order_id': self.id, 'product_id': product.id, - 'name': product.name, + 'name': '%s/%s/%s/%s/%s' % ( + item['model_long'], item['model_width'], item['model_height'], item['model_volume'], product.materials_id.name), 'price_unit': item['price'], 'product_uom_qty': item['number'] } return self.env['sale.order.line'].create(vals) - - -class ReSaleOrderLine(models.Model): - _inherit = 'sale.order.line' - - - # 重设name,且只针对于在页面上显示 - def name_get(self): - return [(record.id, '%s/%s/%s/%s/%s' % ( - record.order_id.model_long, record.order_id.model_width, record.order_id.model_height, - record.order_id.model_volume, record.order_id.materials_id.name)) for record in self]