diff --git a/jikimo_sale_multiple_supply_methods/__init__.py b/jikimo_sale_multiple_supply_methods/__init__.py index 9cb6cca1..e7a30879 100644 --- a/jikimo_sale_multiple_supply_methods/__init__.py +++ b/jikimo_sale_multiple_supply_methods/__init__.py @@ -121,3 +121,18 @@ def _create_or_update_stock_rule(env, rule_data): # 如果不存在,创建新记录 env['stock.rule'].create(rule_data) +def _data_uninstall(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + warehouse = env['stock.warehouse'].search([('company_id', '=', env.company.id)], limit=1) + product_route_id = warehouse.pbm_route_id + resupply_route_id = warehouse.subcontracting_route_id + mto_route_id = env.ref('stock.route_warehouse0_mto') + # Fail unlink means that the route is used somewhere (e.g. route_id on stock.rule). In this case + # we don't try to do anything. + try: + with env.cr.savepoint(): + env['stock.rule'].search([('name', 'in', ('WH: 原料存货区 → 制造前', 'WH: 坯料存货区 → 制造前', 'WH: 制造后 → 坯料存货区', 'WH: 制造后 → 成品存货区')), ('route_id', '=', product_route_id.id)]).unlink() + env['stock.rule'].search([('name', 'in', ('WH: 原料存货区 → 外包位置 (MTO)', 'WH: 坯料存货区 → 外包位置 (MTO)')), ('route_id', '=', mto_route_id.id)]).unlink() + env['stock.rule'].search([('name', '=', 'WH: 坯料存货区 → 外包位置'), ('route_id', '=', resupply_route_id.id)]).unlink() + except: + pass \ No newline at end of file diff --git a/jikimo_sale_multiple_supply_methods/__manifest__.py b/jikimo_sale_multiple_supply_methods/__manifest__.py index 78507e37..b39d70a8 100644 --- a/jikimo_sale_multiple_supply_methods/__manifest__.py +++ b/jikimo_sale_multiple_supply_methods/__manifest__.py @@ -19,6 +19,7 @@ # ], }, 'post_init_hook': '_data_install', + 'uninstall_hook': '_data_uninstall', 'application': True, 'installable': True, 'auto_install': False, diff --git a/jikimo_sale_multiple_supply_methods/controllers/main.py b/jikimo_sale_multiple_supply_methods/controllers/main.py index 13113ac0..389c0c3c 100644 --- a/jikimo_sale_multiple_supply_methods/controllers/main.py +++ b/jikimo_sale_multiple_supply_methods/controllers/main.py @@ -27,11 +27,11 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect): kw['delivery_end_date'], kw['payments_way'], kw['pay_way'], state='draft') 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) - aa.default_code = kw['order_number'] + # 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'): - aa.logistics_way = kw['logistics_way'] + order_id.logistics_way = kw['logistics_way'] _logger.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code) for item in bfm_process_order_list: product = request.env['product.template'].sudo().product_create(product_id, item, order_id, diff --git a/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py b/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py new file mode 100644 index 00000000..d61d3a6f --- /dev/null +++ b/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py @@ -0,0 +1,71 @@ +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_product_default').sudo() + # 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') + 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('工厂创建销售订单和产品失败,请联系管理员') 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 3021f301..58e8f8ae 100644 --- a/jikimo_sale_multiple_supply_methods/views/sale_order_views.xml +++ b/jikimo_sale_multiple_supply_methods/views/sale_order_views.xml @@ -34,13 +34,9 @@ - jikimo.sale.order.search.inherit.quotation - sale.order - primary - - - + + [('state', 'in', ('draft', 'sent')), ('user_id', '=', uid)] @@ -51,8 +47,8 @@ primary - - + + [('state', 'in', ('draft', 'sent')), ('user_id', '=', uid)] @@ -60,7 +56,7 @@ - + @@ -69,6 +65,7 @@ ir.actions.act_window sale.order tree,kanban,form,calendar,pivot,graph,activity + {'search_default_supply_method': 1} @@ -93,7 +90,7 @@