修复智能工厂接收业务平台订单接口bug
This commit is contained in:
@@ -16,17 +16,24 @@ class Sf_Bf_Connect(http.Controller):
|
|||||||
:param kw:
|
:param kw:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
res = {'status': 1}
|
res = {'status': 1, 'factory_order_no': ''}
|
||||||
datas = request.httprequest.data
|
logging.info('get_bfm_process_order_list:%s' % kw)
|
||||||
ret = json.loads(datas)
|
try:
|
||||||
ret = json.loads(ret['result'])
|
datas = request.httprequest.data
|
||||||
product_id = request.env.ref('sf_bpm_api.product_template_sf').sudo()
|
ret = json.loads(datas)
|
||||||
company_id = request.env.ref('base.main_company').sudo()
|
ret = json.loads(ret['result'])
|
||||||
order_id = request.env['sale.order'].sudo().sale_order_create(ret['delivery_end_date'], company_id)
|
product_id = request.env.ref('sf_bpm_api.product_template_sf').sudo()
|
||||||
i = 1
|
company_id = request.env.ref('base.main_company').sudo()
|
||||||
for item in ret['bfm_process_order_list']:
|
order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create(ret['delivery_end_date'], company_id)
|
||||||
product = request.env['product.template'].sudo().product_create(product_id, item, order_id, ret['order_number'], i)
|
i = 1
|
||||||
order_id.sale_order_create_line(product, item)
|
for item in ret['bfm_process_order_list']:
|
||||||
i += 1
|
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
|
||||||
res['factory_order_no'] = order_id.name
|
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)
|
return json.JSONEncoder().encode(res)
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
<field name="purchase_ok">false</field>
|
<field name="purchase_ok">false</field>
|
||||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||||
<field name="image_1920" type="base64" file="product/static/img/product_product_5-image.png"/>
|
|
||||||
<field name="company_id" ref="base.main_company"/>
|
<field name="company_id" ref="base.main_company"/>
|
||||||
<field name="active">false</field>
|
<field name="active">false</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ from odoo.exceptions import ValidationError
|
|||||||
|
|
||||||
class ResProductTemplate(models.Model):
|
class ResProductTemplate(models.Model):
|
||||||
_inherit = 'product.template'
|
_inherit = 'product.template'
|
||||||
# sale_order_id = fields.Many2one('sale.order')
|
|
||||||
|
|
||||||
model_long = fields.Float('长[mm]', digits=(16, 3))
|
model_long = fields.Float('长[mm]', digits=(16, 3))
|
||||||
model_width = 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))
|
model_precision = fields.Float('精度要求', digits=(16, 3))
|
||||||
materials_id = fields.Many2one('mrs.production.materials', string='材料')
|
materials_id = fields.Many2one('mrs.production.materials', string='材料')
|
||||||
|
|
||||||
|
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品
|
||||||
def product_create(self, product_id, item, order_id, order_number, i):
|
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_id.with_user(self.env.ref("base.user_admin")).copy()
|
||||||
copy_product_id.product_tmpl_id.active = True
|
copy_product_id.product_tmpl_id.active = True
|
||||||
@@ -23,9 +23,10 @@ class ResProductTemplate(models.Model):
|
|||||||
'model_height': item['model_height'],
|
'model_height': item['model_height'],
|
||||||
'model_volume': item['model_volume'],
|
'model_volume': item['model_volume'],
|
||||||
'list_price': item['price'],
|
'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),
|
'default_code': '%s-%s' % (order_number, i),
|
||||||
'barcode': 'cf0bbe2fdad6339d138cdee732750e3e502140c2',
|
'barcode': item['barcode'],
|
||||||
# 'barcode': item['barcode'],
|
|
||||||
'active': True
|
'active': True
|
||||||
}
|
}
|
||||||
return copy_product_id.sudo().create(vals)
|
return copy_product_id.sudo().create(vals)
|
||||||
|
|||||||
@@ -7,9 +7,10 @@ class ReSaleOrder(models.Model):
|
|||||||
_inherit = 'sale.order'
|
_inherit = 'sale.order'
|
||||||
|
|
||||||
deadline_of_delivery = fields.Date('交货截止日期')
|
deadline_of_delivery = fields.Date('交货截止日期')
|
||||||
|
|
||||||
# product_line_ids = fields.One2many('product.template', 'sale_order_id')
|
# product_line_ids = fields.One2many('product.template', 'sale_order_id')
|
||||||
|
|
||||||
# 业务平台分配工厂时调用该方法先创建销售订单
|
# 业务平台分配工厂后在智能工厂先创建销售订单
|
||||||
def sale_order_create(self, deadline_of_delivery, company_id):
|
def sale_order_create(self, deadline_of_delivery, company_id):
|
||||||
now_time = datetime.datetime.now()
|
now_time = datetime.datetime.now()
|
||||||
order_id = self.env['sale.order'].sudo().create({
|
order_id = self.env['sale.order'].sudo().create({
|
||||||
@@ -23,23 +24,14 @@ class ReSaleOrder(models.Model):
|
|||||||
})
|
})
|
||||||
return order_id
|
return order_id
|
||||||
|
|
||||||
|
# 业务平台分配工厂时在创建完产品后再创建销售明细信息
|
||||||
def sale_order_create_line(self, product, item):
|
def sale_order_create_line(self, product, item):
|
||||||
vals = {
|
vals = {
|
||||||
'order_id': self.id,
|
'order_id': self.id,
|
||||||
'product_id': product.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'],
|
'price_unit': item['price'],
|
||||||
'product_uom_qty': item['number']
|
'product_uom_qty': item['number']
|
||||||
}
|
}
|
||||||
return self.env['sale.order.line'].create(vals)
|
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]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user