59 lines
3.3 KiB
Python
59 lines
3.3 KiB
Python
import logging
|
|
import json
|
|
import traceback
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
from odoo.addons.sf_bf_connect.controllers.controllers import Sf_Bf_Connect
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
class JikimoSaleRoutePicking(Sf_Bf_Connect):
|
|
|
|
@http.route('/api/bfm_process_order/list', type='http', auth='sf_token', methods=['GET', 'POST'], csrf=False,
|
|
cors="*")
|
|
def get_bfm_process_order_list(self, **kw):
|
|
"""
|
|
接收业务平台加工订单分配工厂时传送来的订单数据并生成销售订单和产品及坯料
|
|
:param kw:
|
|
:return:
|
|
"""
|
|
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_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(
|
|
company_id, kw['delivery_name'], kw['delivery_telephone'], kw['delivery_address'],
|
|
kw['delivery_end_date'], kw['payments_way'], kw['pay_way'], kw['order_number'], state='draft',
|
|
model_display_version=kw.get('model_display_version'))
|
|
i = 1
|
|
# 给sale_order的default_code字段赋值
|
|
# aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
|
|
# _logger.info('get_bfm_process_or===================================:%s' % order_id.name)
|
|
order_id.default_code = kw['order_number']
|
|
if kw.get('logistics_way'):
|
|
order_id.logistics_way = kw['logistics_way']
|
|
for item in bfm_process_order_list:
|
|
if item.get('embryo_redundancy_id'):
|
|
item['embryo_redundancy'] = request.env['sf.embryo.redundancy'].sudo().search([('code', '=', item['embryo_redundancy_id'])], limit=1)
|
|
item['embryo_redundancy_id'] = item['embryo_redundancy'].id
|
|
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
|
|
kw['order_number'], i)
|
|
product.product_tmpl_id.is_customer_provided = True if item['embryo_redundancy_id'] else False
|
|
order_id.with_user(request.env.ref("base.user_admin")).sale_order_create_line(product, item)
|
|
i += 1
|
|
if kw.get('contract_file_name') and kw.get('contract_file'):
|
|
order_id.create_sale_documents(kw.get('contract_file_name'), kw.get('contract_file'))
|
|
res['factory_order_no'] = order_id.name
|
|
order_id.confirm_to_supply_method()
|
|
except Exception as e:
|
|
traceback_error = traceback.format_exc()
|
|
logging.error('get_bfm_process_order_list error: %s' % traceback_error)
|
|
res['status'] = -1
|
|
res['message'] = '工厂创建销售订单和产品失败,请联系管理员'
|
|
request.cr.rollback()
|
|
return json.JSONEncoder().encode(res)
|