72 lines
3.5 KiB
Python
72 lines
3.5 KiB
Python
from datetime import datetime
|
|
from odoo import models
|
|
|
|
import logging
|
|
import base64
|
|
import hashlib
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class QuickEasyOrder(models.Model):
|
|
_inherit = 'quick.easy.order'
|
|
|
|
def distribute_to_factory(self, obj):
|
|
"""
|
|
多供货方式,重写派单到工厂
|
|
:return:
|
|
"""
|
|
try:
|
|
_logger.info('---------派单到工厂-------')
|
|
res = {'bfm_process_order_list': []}
|
|
for item in obj:
|
|
attachment = item.upload_model_file[0]
|
|
base64_data = base64.b64encode(attachment.datas)
|
|
base64_datas = base64_data.decode('utf-8')
|
|
barcode = hashlib.sha1(base64_datas.encode('utf-8')).hexdigest()
|
|
# logging.info('model_file-size: %s' % len(item.model_file))
|
|
res['bfm_process_order_list'].append({
|
|
'model_long': item.model_length,
|
|
'model_width': item.model_width,
|
|
'model_height': item.model_height,
|
|
'model_volume': item.model_volume,
|
|
'model_machining_precision': item.machining_precision,
|
|
'model_name': attachment.name,
|
|
'model_data': base64_datas,
|
|
'model_file': base64.b64encode(item.model_file).decode('utf-8'),
|
|
'texture_code': item.material_id.materials_no,
|
|
'texture_type_code': item.material_model_id.materials_no,
|
|
# 'surface_process_code': self.env['jikimo.surface.process']._json_surface_process_code(item),
|
|
'process_parameters_code': self.env[
|
|
'sf.production.process.parameter']._json_production_process_item_code(
|
|
item),
|
|
'price': item.price,
|
|
'number': item.quantity,
|
|
'total_amount': item.price,
|
|
'remark': '',
|
|
'manual_quotation': True,
|
|
'barcode': barcode,
|
|
'part_number': item.part_drawing_number,
|
|
'machining_drawings_name': '',
|
|
'quality_standard_name': '',
|
|
'machining_drawings_mimetype': '',
|
|
'quality_standard_mimetype': '',
|
|
'machining_drawings': item.machining_drawings,
|
|
'quality_standard': '',
|
|
'part_name': '',
|
|
})
|
|
company_id = self.env.ref('base.main_company').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', model_display_version='v2')
|
|
order_id.default_code = obj.name
|
|
i = 1
|
|
for item in res['bfm_process_order_list']:
|
|
product = self.env['product.template'].sudo().product_create(product_id, item, order_id,
|
|
obj.name, i)
|
|
order_id.with_user(self.env.ref("base.user_admin")).sale_order_create_line(product, item)
|
|
return order_id
|
|
except Exception as e:
|
|
return UserError('工厂创建销售订单和产品失败,请联系管理员')
|