diff --git a/sf_base/commons/common.py b/sf_base/commons/common.py index 05a2143f..6bf597cc 100644 --- a/sf_base/commons/common.py +++ b/sf_base/commons/common.py @@ -19,3 +19,13 @@ class Common(models.Model): 'TIMESTAMP': str(timestamp), 'checkstr': check_sf_str} return headers + + def get_add_time(self, parse_time): + """ + 把时间增加8小时 + :return: + """ + dt = datetime.datetime.strptime(parse_time, "%Y-%m-%d %H:%M:%S") + d = dt + datetime.timedelta(hours=8) + nTime = d.strftime("%Y-%m-%d %H:%M:%S") + return nTime diff --git a/sf_base/models/common.py b/sf_base/models/common.py index 7450fff9..6cddafd7 100644 --- a/sf_base/models/common.py +++ b/sf_base/models/common.py @@ -61,7 +61,7 @@ class MrsMaterialModel(models.Model): supplier_ids = fields.One2many('sf.supplier.sort', 'materials_model_id', string='供应商') active = fields.Boolean('有效', default=True) - @api.constrains('gain_way', 'supplier_ids') + @api.constrains('supplier_ids') def _check_gain_way(self): if not self.gain_way: raise UserError("请输入获取方式") diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index 474c46f3..8f3eb86f 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -1,5 +1,9 @@ # -*- coding: utf-8 -*- +import json +import requests from odoo import fields, models, api +from odoo.exceptions import ValidationError +from odoo.addons.sf_base.commons.common import Common class CuttingToolMaterial(models.Model): @@ -249,3 +253,37 @@ class ToolGroups(models.Model): name = fields.Char('名称') equipment_ids = fields.Many2many('maintenance.equipment', 'ref_maintenance_equipment', string='机台号') remark = fields.Char('备注', size=50) + + # ==========机床刀具组接口========== + def _register_tool_groups(self, obj): + create_url = '/AutoDeviceApi/FeedBackOut' + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(obj, token, sf_secret_key) + strurl = sf_sync_config['sf_url'] + create_url + device_id = '' + for equipment_id in obj.equipment_ids: + device_id = '%s,%s' % (device_id, equipment_id.name) + val = { + 'DeviceId': device_id, + 'GroupName': obj.name, + } + kw = json.dumps(val, ensure_ascii=False) + r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers) + ret = r.json() + if r == 200: + return "机床刀具组发送成功" + else: + raise ValidationError("机床刀具组发送失败") + + # def write(self, vals): + # obj = super().write(vals) + # self._register_tool_groups(obj) + # return obj + # + # @api.model_create_multi + # def create(self, vals_list): + # records = super(ToolGroups, self).create(vals_list) + # self._register_tool_groups(records) + # return records diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index cfb765a2..a6c5d78f 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -1,40 +1,76 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,base.group_user,1,1,1,1 -access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,base.group_user,1,1,1,1 -access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,base.group_user,1,1,1,1 -access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,base.group_user,1,1,1,1 -access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,base.group_user,1,1,1,1 -access_sf_processing_order,sf_processing_order,model_sf_processing_order,base.group_user,1,1,1,1 -access_sf_production_process,sf_production_process,model_sf_production_process,base.group_user,1,1,1,1 -access_sf_production_materials,sf_production_materials,model_sf_production_materials,base.group_user,1,1,1,1 -access_sf_materials_model,sf_materials_model,model_sf_materials_model,base.group_user,1,1,1,1 -access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,base.group_user,1,1,1,1 -access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user,1,1,1,1 -access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,1 -access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,1 -access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,base.group_user,1,1,1,1 -access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,base.group_user,1,1,1,1 -access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,base.group_user,1,1,1,1 -access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,1 -access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,1 -access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,1 -access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,base.group_user,1,1,1,1 - -access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_type,base.group_user,1,1,1,1 -access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,1,1,1,1 +access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,base.group_user,1,1,1,0 +access_sf_machine_tool_admin,sf_machine_tool_admin,model_sf_machine_tool,base.group_system,1,1,1,0 +access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,base.group_user,1,1,1,0 +access_sf_machine_tool_type_admin,sf_machine_tool_type_admin,model_sf_machine_tool_type,base.group_system,1,1,1,0 +access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,base.group_user,1,1,1,0 +access_sf_machine_brand_admin,sf_machine_brand_admin,model_sf_machine_brand,base.group_system,1,1,1,0 +access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,base.group_user,1,1,1,0 +access_sf_machine_brand_tags_admin,sf_machine_brand_tags_admin,model_sf_machine_brand_tags,base.group_system,1,1,1,0 +access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,base.group_user,1,1,1,0 +access_sf_machine_control_system_admin,sf_machine_control_system_admin,model_sf_machine_control_system,base.group_system,1,1,1,0 +access_sf_processing_order,sf_processing_order,model_sf_processing_order,base.group_user,1,1,1,0 +access_sf_processing_order_admin,sf_processing_order_admin,model_sf_processing_order,base.group_system,1,1,1,0 +access_sf_production_process,sf_production_process,model_sf_production_process,base.group_user,1,1,1,0 +access_sf_production_process_admin,sf_production_process_admin,model_sf_production_process,base.group_system,1,1,1,0 +access_sf_production_materials,sf_production_materials,model_sf_production_materials,base.group_user,1,1,1,0 +access_sf_production_materials_admin,sf_production_materials_admin,model_sf_production_materials,base.group_system,1,1,1,0 +access_sf_materials_model,sf_materials_model,model_sf_materials_model,base.group_user,1,1,1,0 +access_sf_materials_model_admin,sf_materials_model_admin,model_sf_materials_model,base.group_system,1,1,1,0 +access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,base.group_user,1,1,1,0 +access_sf_processing_technology_admin,sf_processing_technology_admin,model_sf_processing_technology,base.group_system,1,1,1,0 +access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user,1,1,1,0 +access_sf_supplier_sort_admin,sf_supplier_sort_admin,model_sf_supplier_sort,base.group_system,1,1,1,0 +access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,0 +access_sf_production_process_parameter_admin,sf_production_process_parameter_admin,model_sf_production_process_parameter,base.group_system,1,1,1,0 +access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,0 +access_sf_production_process_category_admin,sf_production_process_category_admin,model_sf_production_process_category,base.group_system,1,1,1,0 +access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,base.group_user,1,1,1,0 +access_sf_machine_tool_category_admin,sf_machine_tool_category_admin,model_sf_machine_tool_category,base.group_system,1,1,1,0 +access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,base.group_user,1,1,1,0 +access_sf_cutting_tool_material_admin,sf_cutting_tool_material_admin,model_sf_cutting_tool_material,base.group_system,1,1,1,0 +access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,base.group_user,1,1,1,0 +access_sf_cutting_tool_type_admin,sf_cutting_tool_type_admin,model_sf_cutting_tool_type,base.group_system,1,1,1,0 +access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,0 +access_sf_functional_cutting_tool_admin,sf_functional_cutting_tool_admin,model_sf_functional_cutting_tool,base.group_system,1,1,1,0 +access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,0 +access_sf_functional_cutting_tool_model_admin,sf_functional_cutting_tool_model_admin,model_sf_functional_cutting_tool_model,base.group_system,1,1,1,0 +access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,0 +access_sf_fixture_material_admin,sf_fixture_material_admin,model_sf_fixture_material,base.group_system,1,1,1,0 +access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,base.group_user,1,1,1,0 +access_sf_fixture_materials_basic_parameters_admin,sf_fixture_materials_basic_parameters_admin,model_sf_fixture_materials_basic_parameters,base.group_system,1,1,1,0 +access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_type,base.group_user,1,1,1,0 +access_sf_multi_mounting_type_admin,sf_multi_mounting_type_admin,model_sf_multi_mounting_type,base.group_system,1,1,1,0 +access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,1,1,1,0 +access_sf_fixture_model_admin,sf_fixture_model_admin,model_sf_fixture_model,base.group_system,1,1,1,0 access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional_fixture_type,base.group_user,1,1,1,1 -access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,1 -access_sf_sync_common,sf_sync_common,model_sf_sync_common,base.group_user,1,1,1,1 -access_sf_international_standards,sf_international_standards,model_sf_international_standards,base.group_user,1,1,1,1 -access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,1 -access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,1 -access_sf_tool_groups,sf_tool_groups,model_sf_tool_groups,base.group_user,1,1,1,1 -access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,base.group_user,1,1,1,1 -access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,1,1,1,1 -access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,1 +access_sf_functional_fixture_type_admin,sf_functional_fixture_type_admin,model_sf_functional_fixture_type,base.group_system,1,1,1,0 +access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,0 +access_sf_functional_fixture_admin,sf_functional_fixture_admin,model_sf_functional_fixture,base.group_system,1,1,1,0 +access_sf_sync_common,sf_sync_common,model_sf_sync_common,base.group_user,1,1,1,0 +access_sf_sync_common,sf_sync_common_admin,model_sf_sync_common,base.group_system,1,1,1,0 +access_sf_international_standards,sf_international_standards,model_sf_international_standards,base.group_user,1,1,1,0 +access_sf_international_standards_admin,sf_international_standards_admin,model_sf_international_standards,base.group_system,1,1,1,0 +access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,0 +access_material_apply_admin,material_apply_admin,model_material_apply,base.group_system,1,1,1,0 +access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,0 +access_sf_cutting_tool_standard_library_admin,sf_cutting_tool_standard_library_admin,model_sf_cutting_tool_standard_library,base.group_system,1,1,1,0 +access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,base.group_user,1,1,1,0 +access_sf_tool_materials_basic_parameters_admin,sf_tool_materials_basic_parameters_admin,model_sf_tool_materials_basic_parameters,base.group_system,1,1,1,0 +access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,1,1,1,0 +access_sf_cutting_speed_admin,sf_cutting_speed_admin,model_sf_cutting_speed,base.group_system,1,1,1,0 +access_sf_cutting_speed_group_purchase_director,sf_cutting_speed_group_purchase_director,model_sf_cutting_speed,sf_base.group_purchase_director,1,0,1,0 +access_sf_cutting_speed_group_sale_director,sf_cutting_speed_group_sale_director,model_sf_cutting_speed,sf_base.group_sale_director,1,0,1,0 +access_sf_cutting_speed_group_plan_director,sf_cutting_speed_group_plan_director,model_sf_cutting_speed,sf_base.group_plan_director,1,0,1,0 +access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,0,1,0 +access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,0,1,0 +access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,0,1,0 +access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,0 +access_sf_feed_per_tooth_admin,sf_feed_per_tooth_admin,model_sf_feed_per_tooth,base.group_system,1,1,1,0 access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,base.group_user,1,1,1,1 +access_sf_ramping_angle_admin,sf_ramping_angle_admin,model_sf_ramping_angle,base.group_system,1,1,1,1 access_sf_cutting_width_depth,sf_cutting_width_depth,model_sf_cutting_width_depth,base.group_user,1,1,1,1 - +access_sf_cutting_width_depth_admin,sf_cutting_width_depth_admin,model_sf_cutting_width_depth,base.group_system,1,1,1,1 access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,0,0,0 @@ -49,7 +85,9 @@ access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,sf_base.group_sf access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,sf_base.group_sf_mrp_user,1,0,0,0 +access_sf_cutting_tool_material_group_purchase_director,sf_cutting_tool_material_group_purchase_director,model_sf_cutting_tool_material,sf_base.group_purchase_director,1,0,1,0 +access_sf_cutting_tool_material_group_sale_director,sf_cutting_tool_material_group_sale_director,model_sf_cutting_tool_material,sf_base.group_sale_director,1,0,1,0 +access_sf_cutting_tool_material_group_plan_director,sf_cutting_tool_material_group_plan_director,model_sf_cutting_tool_material,sf_base.group_plan_director,1,0,1,0 access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,sf_base.group_sf_mrp_user,1,0,0,0 @@ -62,9 +100,17 @@ access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,s access_sf_sync_common,sf_sync_common,model_sf_sync_common,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_international_standards,sf_international_standards,model_sf_international_standards,sf_base.group_sf_mrp_user,1,0,0,0 access_material_apply,material_apply,model_material_apply,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,sf_base.group_sf_mrp_user,1,0,0,0 + +access_sf_cutting_tool_standard_library_group_sf_mrp_user,sf_cutting_tool_standard_library_group_sf_mrp_user,model_sf_cutting_tool_standard_library,sf_base.group_sf_mrp_user,1,0,0,0 +access_sf_cutting_tool_standard_library_group_purchase_director,sf_cutting_tool_standard_library_group_purchase_director,model_sf_cutting_tool_standard_library,sf_base.group_purchase_director,1,0,1,0 +access_sf_cutting_tool_standard_library_group_plan_director,sf_cutting_tool_standard_library_group_plan_director,model_sf_cutting_tool_standard_library,sf_base.group_plan_director,1,0,1,0 +access_sf_cutting_tool_standard_library_group_sale_director,sf_cutting_tool_standard_library_group_sale_director,model_sf_cutting_tool_standard_library,sf_base.group_sale_director,1,0,1,0 + access_sf_tool_groups,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,sf_base.group_sf_mrp_user,1,0,0,0 +access_sf_tool_materials_basic_parameters_group_sale_director,sf_tool_materials_basic_parameters_group_sale_director,model_sf_tool_materials_basic_parameters,sf_base.group_sale_director,1,0,1,0 +access_sf_tool_materials_basic_parameters_group_plan_director,sf_tool_materials_basic_parameters_group_plan_director,model_sf_tool_materials_basic_parameters,sf_base.group_plan_director,1,0,1,0 +access_sf_tool_materials_basic_parameters_group_purchase_director,sf_tool_materials_basic_parameters_group_purchase_director,model_sf_tool_materials_basic_parameters,sf_base.group_purchase_director,1,0,1,0 + access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,sf_base.group_sf_mrp_user,1,0,0,0 @@ -77,6 +123,9 @@ access_purchase_order_line_group_purchase,access_purchase_order_line_group_purch access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0 access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1 +access_sf_tool_groups_group_plan_dispatch,sf_tool_groups,model_sf_tool_groups,sf_base.group_plan_dispatch,1,0,0,0 +access_sf_tool_groups_group_sf_tool_user,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_tool_user,1,1,1,1 + access_purchase_order,purchase.order,purchase.model_purchase_order,sf_base.group_plan_dispatch,1,0,0,0 diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index 77b5d1d8..5763b3a0 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -495,7 +495,7 @@ 刀具组 sf.tool.groups - + diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py index 1a5f3fa5..b90a1645 100644 --- a/sf_bf_connect/controllers/controllers.py +++ b/sf_bf_connect/controllers/controllers.py @@ -33,6 +33,7 @@ class Sf_Bf_Connect(http.Controller): aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)]) logging.info('get_bfm_process_or===================================:%s' % order_id.name) aa.default_code = kw['order_number'] + aa.logistics_way = kw['logistics_way'] logging.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/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py index 85092b57..49337083 100644 --- a/sf_bf_connect/models/jd_eclp.py +++ b/sf_bf_connect/models/jd_eclp.py @@ -42,6 +42,25 @@ class JdEclp(models.Model): # bill_show = fields.Binary(string='物流面单展示', readonly=True, related='self.bill.datas') bill_show = fields.Binary(string='物流面单展示', readonly=True) check_out = fields.Char(string='查询是否为出库单', compute='_check_is_out') + # 是否下了快递单 + is_bill = fields.Boolean(string='是否下了快递单', default=False) + # 物流状态 + logistics_status = fields.Selection([('0', '未下单'), ('1', '已下单'), ('2', '已获取物流面单'), ('3', '已打印物流单')], + string='物流状态', default='0', readonly=True) + + logistics_way = fields.Selection([('自提', '自提'), ('到付', '到付'), ('在线支付', '在线支付')], string='物流方式', readonly=True) + + def button_validate(self): + """ + 重写出库方法,获取物流面单 + """ + res = super(JdEclp, self).button_validate() + if self.check_out == 'OUT': + if self.logistics_way != '自提': + if self.logistics_status != '3': + raise ValidationError('非自提订单,必须先下物流单,并获取物流面单后才可出库!') + return res + @api.depends('name') def _check_is_out(self): @@ -68,6 +87,7 @@ class JdEclp(models.Model): # if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and # self.receiverCountyName and self.receiverTownName: sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)]) + self.logistics_way = sale_order_id.logistics_way # stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')]) # if sale_order_id.address_of_delivery != False: # if not sale_order_id: @@ -141,6 +161,8 @@ class JdEclp(models.Model): response = requests.post(url2, json=json2, data=None) # _logger.info('调用成功2', response.json()['result']['wbNo']) self.carrier_tracking_ref = response.json()['result']['wbNo'] + self.is_bill = True + self.logistics_status = '1' # else: # raise UserError("选择京东物流才能下单呦") @@ -180,3 +202,4 @@ class JdEclp(models.Model): # 'model_name': 'stock.picking', }) _logger.info(attachment) + self.logistics_status = '2' diff --git a/sf_bf_connect/views/res_partner_view.xml b/sf_bf_connect/views/res_partner_view.xml index 70609554..d88d14aa 100644 --- a/sf_bf_connect/views/res_partner_view.xml +++ b/sf_bf_connect/views/res_partner_view.xml @@ -9,8 +9,8 @@ - - + + diff --git a/sf_bf_connect/views/view.xml b/sf_bf_connect/views/view.xml index c4f0e446..6db5cb1d 100644 --- a/sf_bf_connect/views/view.xml +++ b/sf_bf_connect/views/view.xml @@ -12,16 +12,30 @@ + + + + + + + + + + + 物流 stock.picking + + + - - + -
- -
- - -
-
+ +
+ - - stock.barcode.quant.kanban - stock.quant - 1000 - - - - - - -
- -
-
- - - + + stock.barcode.quant.kanban + stock.quant + 1000 + + + + + + +
+ + + +
+
+ + + +
-
- - - - - + + + + + - - stock.quant.kanban.barcode - stock.quant - 1000 - - - - -
-
- + + stock.quant.kanban.barcode + stock.quant + 1000 + + + + +
+
+ + + +
+
+ + + + + +
+
+ + +
+
+ + +
-
- - - - -
-
- -
-
- -
-
- - - - - + + + + + - - stock_barcode.quant.tree.inherit - stock.quant - - primary - - - UoM - show - - - hide - - - hide - - - + + stock_barcode.quant.tree.inherit + stock.quant + + primary + + + UoM + show + + + hide + + + hide + + + diff --git a/stock_barcode/views/stock_picking_views.xml b/stock_barcode/views/stock_picking_views.xml index d61de200..d516844c 100644 --- a/stock_barcode/views/stock_picking_views.xml +++ b/stock_barcode/views/stock_picking_views.xml @@ -1,181 +1,174 @@ - - - stock.move.line.operations.tree.inherit - stock.move.line - - - - - - - - {'barcode_events': True} - field_float_scannable - - - + + + + stock.move.line.kanban.inherited + stock.move.line + + + + + + + + + + - - stock.move.line.kanban.inherited - stock.move.line - - - - - - - - - - - - - stock.picking.form.view.barcode - stock.picking - 1000 - -
- - - -
- -
-
+ + + + + + +
+
+ +
+ - - Open picking form - stock.picking - form - { - 'res_id': active_id, - } - - + + Open picking form + stock.picking + form + { + 'res_id': active_id, + } + + - - stock.picking.view.kanban.barcode - stock.picking - - + + stock.picking.view.kanban.barcode + stock.picking + + - - - - - - + + + + + + - - Operation Types - stock.picking.type - - - - - - - + + Operation Types + stock.picking.type + + + + + + + - - Operation Types - stock.picking.type - - - - - - - - - - - - - - - - - - - - + Operation Types + stock.picking.type + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + +