Accept Merge Request #797: (feature/修复工件配送及权限 -> develop)

Merge Request: 修复工件配送及权限

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/797?initial=true
This commit is contained in:
杨金灵
2024-02-02 15:58:45 +08:00
committed by Coding
9 changed files with 146 additions and 123 deletions

View File

@@ -61,6 +61,7 @@ access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,
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,1,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,1,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,1,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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
61 access_sf_cutting_speed_admin sf_cutting_speed_admin model_sf_cutting_speed base.group_system 1 1 1 0
62 access_sf_cutting_speed_group_purchase_director sf_cutting_speed_group_purchase_director model_sf_cutting_speed sf_base.group_purchase_director 1 1 1 0
63 access_sf_cutting_speed_group_sale_director sf_cutting_speed_group_sale_director model_sf_cutting_speed sf_base.group_sale_director 1 1 1 0
64 access_sf_cutting_speed_group_plan_director sf_cutting_speed_group_plan_director model_sf_cutting_speed sf_base.group_plan_director 1 1 1 0
65 access_sf_feed_per_tooth sf_feed_per_tooth model_sf_feed_per_tooth base.group_user 1 1 1 0
66 access_sf_feed_per_tooth_admin sf_feed_per_tooth_admin model_sf_feed_per_tooth base.group_system 1 1 1 0
67 access_sf_ramping_angle sf_ramping_angle model_sf_ramping_angle base.group_user 1 1 1 1

View File

@@ -132,7 +132,7 @@ class ResMrpWorkOrder(models.Model):
production_line = fields.Char(string="生产线")
preset_program_information = fields.Char(string="预调程序信息")
workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送')
is_delivery = fields.Boolean('是否配送完成',default=False)
is_delivery = fields.Boolean('是否配送完成', default=False)
@api.onchange('is_ok')
def _onchange_inspection_user_id(self):
@@ -197,25 +197,19 @@ class ResMrpWorkOrder(models.Model):
work = workorder.production_id.workorder_ids
work.compensation_value_x = eval(self.material_center_point)[0]
work.compensation_value_y = eval(self.material_center_point)[1]
workorder.workpiece_delivery_ids[0].write({
'status': '待下发'
})
workorder.button_finish()
except:
raise UserError("参数计算有误")
def button_workpiece_delivery(self):
if self.routing_type == '装夹预调':
if not self.workpiece_delivery_ids:
raise UserError('请添加【工件配送】信息')
else:
for item in self.workpiece_delivery_ids:
if not item.feeder_station_start:
raise UserError('【工件配送】明细中请输入起点接驳站')
if not item.workpiece_code:
raise UserError('请对【同运工件】进行扫描')
else:
item.write({'task_delivery_time': fields.Datetime.now(), 'status': '待配送'})
for item in self.workpiece_delivery_ids:
if not item.feeder_station_start:
raise UserError('【工件配送】明细中请输入起点接驳站')
# if not item.workpiece_code:
# raise UserError('请对【同运工件】进行扫描')
else:
item.write({'task_delivery_time': fields.Datetime.now(), 'status': '待配送'})
# 拼接工单对象属性值
def json_workorder_str(self, k, production, route):
@@ -760,6 +754,13 @@ class SfWorkOrderBarcodes(models.Model):
'tray_model_id': stock_move_line.product_id.fixture_model_id.id
})
workorder.button_start()
# return {
# 'type': 'ir.actions.act_window',
# 'res_model': 'mrp.workorder',
# 'view_mode': 'form',
# 'domain': [('id', 'in', workorder.id)],
# 'target': 'current'
# }
else:
embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)])
if embryo_stock_lot:
@@ -769,16 +770,20 @@ class SfWorkOrderBarcodes(models.Model):
('lot_id', '=', embryo_stock_lot.id),
('product_category_name', '=', '坯料')])
if embryo_stock_move_line:
bom_production = self.env['mrp.production'].search(
[('product_id', '=', embryo_stock_lot.product_id.id),
('origin', '=', workorder.production_id.name)], limit=1, order='id asc')
workpiece_delivery = self.env['sf.workpiece.delivery'].search(
[('workorder_id', '=', workorder.id)], limit=1, order='id asc')
if workpiece_delivery:
embryo_workpiece_code = workpiece_delivery.workpiece_code
if workpiece_delivery.workpiece_code and embryo_stock_lot.name not in \
workpiece_delivery.workpiece_code:
embryo_workpiece_code = workpiece_delivery.workpiece_code + ',' + \
embryo_stock_lot.name
if not workpiece_delivery.workpiece_code:
embryo_workpiece_code = embryo_stock_lot.name
if bom_production:
if workpiece_delivery.workpiece_code and bom_production.name not in \
workpiece_delivery.workpiece_code:
embryo_workpiece_code = workpiece_delivery.workpiece_code + ',' + \
bom_production.name
if not workpiece_delivery.workpiece_code:
embryo_workpiece_code = bom_production.name
workpiece_delivery.write({'workpiece_code': embryo_workpiece_code})
else:
raise UserError('工件生产线不一致,请重新确认')
@@ -799,7 +804,7 @@ class WorkPieceDelivery(models.Model):
feeder_station_destination = fields.Char('目的接驳站')
task_delivery_time = fields.Datetime('任务下发时间')
task_completion_time = fields.Datetime('任务完成时间')
delivery_time = fields.Char('配送时长', compute='_compute_delivery_time')
delivery_duration = fields.Float('配送时长', compute='_compute_delivery_duration')
status = fields.Selection(
[('待下发', '待下发'), ('待配送', '待配送'), ('已配送', '已配送')], string='状态',
default='待下发')
@@ -830,14 +835,10 @@ class WorkPieceDelivery(models.Model):
self.plan_start_processing_time = self.production_id.plan_start_processing_time
@api.depends('task_delivery_time', 'task_completion_time')
def _compute_delivery_time(self):
def _compute_delivery_duration(self):
for obj in self:
if obj.task_delivery_time and obj.task_completion_time:
delivery_duration = obj.task_completion_time - obj.task_delivery_time
hours, seconds = divmod(delivery_duration.total_seconds(), 3600)
minutes, _ = divmod(seconds, 60)
delivery_time_str = "{:.0f}{:.0f}".format(hours, minutes)
obj.delivery_time = delivery_time_str
obj.delivery_duration = round(
(obj.task_completion_time - obj.task_delivery_time).total_seconds() / 60.0, 2)
else:
obj.delivery_time = ''
obj.delivery_duration = 0.0

View File

@@ -22,10 +22,10 @@ access_mrp_workcenter,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_u
access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_workcenter_productivity,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workcenter_productivity_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_workpiece_delivery,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_workpiece_delivery_group_sf_order_user,sf_workpiece_delivery_group_sf_order_user,model_sf_workpiece_delivery,sf_base.group_sf_order_user,1,1,0,0
access_sf_workpiece_delivery_manager,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_manager,1,1,0,0
access_sf_workpiece_delivery_admin,sf_workpiece_delivery_admin,model_sf_workpiece_delivery,base.group_system,1,1,1,0
access_sf_workpiece_delivery_wizard,sf_workpiece_delivery_wizard,model_sf_workpiece_delivery_wizard,sf_base.group_sf_order_user,1,1,1,0
access_sf_workpiece_delivery_wizard_group_sf_order_user,sf_workpiece_delivery_wizard_group_sf_order_user,model_sf_workpiece_delivery_wizard,sf_base.group_sf_order_user,1,1,1,0
access_mrp_workcenter_productivity_loss_manager,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_productivity_loss,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workcenter_productivity_loss_type,mrp.workcenter.productivity.loss.type,mrp.model_mrp_workcenter_productivity_loss_type,sf_base.group_sf_mrp_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
22 access_mrp_workcenter_manager mrp_workcenter model_mrp_workcenter sf_base.group_sf_mrp_manager 1 1 1 0
23 access_mrp_workcenter_productivity mrp_workcenter_productivity model_mrp_workcenter_productivity sf_base.group_sf_mrp_user 1 0 0 0
24 access_mrp_workcenter_productivity_manager mrp_workcenter_productivity model_mrp_workcenter_productivity sf_base.group_sf_mrp_manager 1 1 1 0
25 access_sf_workpiece_delivery access_sf_workpiece_delivery_group_sf_order_user sf_workpiece_delivery sf_workpiece_delivery_group_sf_order_user model_sf_workpiece_delivery sf_base.group_sf_mrp_user sf_base.group_sf_order_user 1 0 1 0 0
26 access_sf_workpiece_delivery_manager sf_workpiece_delivery model_sf_workpiece_delivery sf_base.group_sf_mrp_manager 1 1 0 0
27 access_sf_workpiece_delivery_admin sf_workpiece_delivery_admin model_sf_workpiece_delivery base.group_system 1 1 1 0
28 access_sf_workpiece_delivery_wizard access_sf_workpiece_delivery_wizard_group_sf_order_user sf_workpiece_delivery_wizard sf_workpiece_delivery_wizard_group_sf_order_user model_sf_workpiece_delivery_wizard sf_base.group_sf_order_user 1 1 1 0
29 access_mrp_workcenter_productivity_loss_manager mrp.workcenter.productivity.loss mrp.model_mrp_workcenter_productivity_loss sf_base.group_sf_mrp_user 1 1 1 0
30 access_mrp_workcenter_productivity_loss mrp.workcenter.productivity.loss mrp.model_mrp_workcenter_productivity_loss sf_base.group_sf_mrp_user 1 0 0 0
31 access_mrp_workcenter_productivity_loss_type mrp.workcenter.productivity.loss.type mrp.model_mrp_workcenter_productivity_loss_type sf_base.group_sf_mrp_user 1 0 0 0

View File

@@ -124,8 +124,8 @@
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
groups="sf_base.group_sf_mrp_user"
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked'),('state','=','done')]}"/>
<button name="button_workpiece_delivery" type="object" string="工件配送"
attrs="{'invisible': ['|',('routing_type','!=','装夹预调'),('is_delivery','=',true)]}"/>
<button name="button_workpiece_delivery" type="object" string="工件配送" class="btn-primary"
attrs="{'invisible': ['|',('routing_type','!=','装夹预调'),('is_delivery','=',True)]}"/>
</xpath>
<xpath expr="//page[1]" position="before">
@@ -412,8 +412,8 @@
<field name="feeder_station_start" force_save="1"/>
<field name="feeder_station_destination"/>
<field name="production_line_id"/>
<field name="task_delivery_time"/>
<field name="task_completion_time"/>
<field name="task_delivery_time" readonly="1"/>
<field name="task_completion_time" readonly="1"/>
</tree>
</field>
</page>
@@ -525,14 +525,14 @@
decoration-success="status == '已配送'"
decoration-warning="status == '待下发'"
decoration-danger="status == '待配送'"/>
<field name="production_id"/>
<field name="production_id" string="工件编码"/>
<field name="workpiece_code"/>
<field name="production_line_id"/>
<field name="feeder_station_start"/>
<field name="feeder_station_destination"/>
<field name="task_delivery_time"/>
<field name="task_completion_time"/>
<field name="delivery_time"/>
<field name="delivery_duration" widget="float_time"/>
</tree>
</field>
</record>
@@ -549,7 +549,7 @@
<field name="task_delivery_time"/>
<field name="feeder_station_destination"/>
<field name="task_completion_time"/>
<field name="delivery_time"/>
<field name="delivery_duration"/>
<field name="status"/>
<searchpanel>
<field name="production_line_id" icon="fa-building" enable_counters="1"/>

View File

@@ -34,8 +34,8 @@ class ResConfigSettings(models.TransientModel):
_logger.info("同步资源库表面工艺类别完成")
self.env['sf.production.process'].sync_all_production_process()
_logger.info("同步资源库表面工艺完成")
# self.env['sf.processing.technology'].sync_all_processing_technology()
# _logger.info("同步资源库加工工艺")
self.env['sf.processing.technology'].sync_all_processing_technology()
_logger.info("同步资源库加工工艺")
self.env['sf.machine.brand.tags'].sync_all_machine_brand_tags()
_logger.info("同步资源库品牌类别完成")
self.env['sf.machine.brand'].sync_all_machine_brand()
@@ -45,23 +45,23 @@ class ResConfigSettings(models.TransientModel):
self.env['sf.machine_tool.category'].sync_all_machine_tool_category()
_logger.info("同步资源库机床类型完成")
self.env['sf.production.process.parameter'].sync_all_production_process_parameter()
_logger.info("同步刀具物料完成")
_logger.info("同步材料型号可选参数完成")
self.env['sf.cutting.tool.material'].sync_all_cutting_tool_material()
_logger.info("同步刀具类型完成")
_logger.info("同步刀具物料完成")
self.env['sf.cutting.tool.type'].sync_all_tool_type()
_logger.info("同步功能刀具类型完成")
_logger.info("同步刀具类型完成")
self.env['sf.functional.cutting.tool.model'].sync_all_functional_cutting_tool_model()
_logger.info("同步夹具物料完成")
_logger.info("同步功能刀具类型完成")
self.env['sf.fixture.material'].sync_all_fixture_material()
_logger.info("同步联装类型完成")
_logger.info("同步夹具物料完成")
self.env['sf.multi_mounting.type'].sync_all_multi_mounting_type()
_logger.info("同步夹具型号完成")
_logger.info("同步联装类型完成")
self.env['sf.fixture.model'].sync_all_fixture_model()
_logger.info("同步夹具型号类型完成")
_logger.info("同步夹具型号完成")
self.env['sf.functional.fixture.type'].sync_all_functional_fixture_type()
_logger.info("同步功能夹具类型完成")
_logger.info("同步夹具型号类型完成")
self.env['sf.machine_tool.type'].sync_all_machine_tool_type()
_logger.info("同步资源库机床型号完成")
_logger.info("同步功能夹具类型完成")
self.env['maintenance.equipment.image'].sync_all_maintenance_equipment_image()
_logger.info("同步能力特征库完成")
self.env['sf.cutting_tool.standard.library'].sync_all_cutting_tool_standard_library()

View File

@@ -92,7 +92,8 @@ class sfProductionMaterials(models.Model):
if result['status'] == 1:
for item in result['production_materials_yesterday_list']:
if item:
materials = self.search([("materials_no", '=', item['materials_no'])])
materials = self.search(
[("materials_no", '=', item['materials_no'], ('active', 'in', [True, False]))])
if materials:
materials.name = item['name']
materials.remark = item['remark']
@@ -118,7 +119,8 @@ class sfProductionMaterials(models.Model):
if result['status'] == 1:
for item in result['production_materials_all_list']:
if item:
materials = self.search([("materials_no", '=', item['materials_no'])])
materials = self.search(
[("materials_no", '=', item['materials_no']), ('active', 'in', [True, False])])
if not materials:
self.create({
"name": item['name'],
@@ -150,7 +152,8 @@ class sfMaterialModel(models.Model):
if result['status'] == 1:
for item in result['materials_model_yesterday_list']:
if item:
materials_model = self.search([("materials_no", '=', item['materials_no'])])
materials_model = self.search(
[("materials_no", '=', item['materials_no']), ('active', 'in', [True, False])])
materials = self.env['sf.production.materials'].search(
[("materials_no", '=', item['materials_id.materials_no'])])
if materials_model:
@@ -196,7 +199,8 @@ class sfMaterialModel(models.Model):
if result['status'] == 1:
for item in result['materials_model_all_list']:
if item:
materials_model = self.search([("materials_no", '=', item['materials_no'])])
materials_model = self.search(
[("materials_no", '=', item['materials_no']), ('active', 'in', [True, False])])
materials = self.env['sf.production.materials'].search(
[("materials_no", '=', item['materials_id.materials_no'])])
if not materials_model:
@@ -256,7 +260,8 @@ class sfProductionProcessCategory(models.Model):
if result['status'] == 1:
for item in result['production_process_category_yesterday_list']:
if item:
production_process_category = self.search([("code", '=', item['code'])])
production_process_category = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if production_process_category:
production_process_category.name = item['name']
production_process_category.code = item['code']
@@ -281,7 +286,7 @@ class sfProductionProcessCategory(models.Model):
if result['status'] == 1:
for item in result['production_process_category_all_list']:
if item:
category = self.search([("code", '=', item['code'])])
category = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if not category:
self.create({
"name": item['name'],
@@ -311,17 +316,7 @@ class sfProductionProcess(models.Model):
if result['status'] == 1:
for item in result['production_process_yesterday_list']:
if item:
brand = self.env['sf.production.process'].search(
[("code", '=', item['code'])])
if brand:
brand.name = item['name']
brand.category_id = self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])]).id
brand.code = item['code']
brand.remark = item['remark']
brand.active = item['active']
brand.remark = item['remark']
production_process = self.search([("code", '=', item['code'])])
production_process = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
category = self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])])
if production_process:
@@ -332,8 +327,7 @@ class sfProductionProcess(models.Model):
else:
self.create({
"name": item['name'],
"category_id": self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])]).id,
"category_id": category.id,
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
@@ -352,7 +346,7 @@ class sfProductionProcess(models.Model):
if result['status'] == 1:
for item in result['production_process_all_list']:
if item:
production_process = self.search([("code", '=', item['code'])])
production_process = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
category = self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])])
if not production_process:
@@ -388,7 +382,7 @@ class sfProcessingTechnology(models.Model):
if result['status'] == 1:
for item in result['processing_technology_yesterday_list']:
if item:
processing_technology = self.search([("code", '=', item['code'])])
processing_technology = self.search([("code", '=', item['process_encode']), ('active', 'in', [True, False])])
if processing_technology:
processing_technology.name = item['name']
processing_technology.remark = item['remark']
@@ -396,7 +390,7 @@ class sfProcessingTechnology(models.Model):
else:
self.create({
"name": item['name'],
"code": item['code'],
"code": item['process_encode'],
"remark": item['remark'],
"active": item['active'],
})
@@ -414,11 +408,11 @@ class sfProcessingTechnology(models.Model):
if result['status'] == 1:
for item in result['processing_technology_all_list']:
if item:
processing_technology = self.search([("code", '=', item['code'])])
processing_technology = self.search([("code", '=', item['process_encode']), ('active', 'in', [True, False])])
if not processing_technology:
self.create({
"name": item['name'],
"code": item['code'],
"code": item['process_encode'],
"remark": item['remark'],
"active": item['active'],
})
@@ -496,7 +490,7 @@ class MachineControlSystem(models.Model):
if result['status'] == 1:
for item in result['machine_control_system_yesterday_list']:
if item:
control_system = self.search([("code", '=', item['code'])])
control_system = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])])
if control_system:
control_system.name = item['name']
@@ -525,7 +519,7 @@ class MachineControlSystem(models.Model):
if result['status'] == 1:
for item in result['machine_control_system_all_list']:
if item:
control_system = self.search([("code", '=', item['code'])])
control_system = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])])
if not control_system:
self.create({
@@ -559,7 +553,7 @@ class MachineBrand(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['machine_brand_yesterday_list']:
brand = self.search([("code", '=', item['code'])])
brand = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if brand:
brand.name = item['name']
brand.image_brand = '' if not item['image_brand'] else base64.b64decode(item['image_brand'])
@@ -588,7 +582,7 @@ class MachineBrand(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['machine_brand_all_list']:
brand = self.search([("code", '=', item['code'])])
brand = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if not brand:
self.create({
"name": item['name'],
@@ -628,7 +622,7 @@ class MachineToolType(models.Model):
else:
image = ''
taper_type_id = self.env['spindle.taper.type'].search([('name', '=', item['taper_type_id'])])
machine_tool_type = self.search([("code", '=', item['code'])])
machine_tool_type = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
control_system = self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])])
jg_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['jg_image_id'])])
@@ -822,7 +816,7 @@ class MachineToolType(models.Model):
'name': item['taper_type_id']
})
machine_tool_type = self.search([("code", '=', item['code'])])
machine_tool_type = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
control_system = self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])])
brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])])
@@ -1013,7 +1007,7 @@ class sfProcessingOrder(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['processing_order_yesterday_list']:
processing_order = self.search([("id", '=', item['id'])])
processing_order = self.search([("id", '=', item['id']), ('active', 'in', [True, False])])
if processing_order:
processing_order.sequence = item['sequence']
else:
@@ -1033,7 +1027,7 @@ class sfProcessingOrder(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['processing_order_all_list']:
processing_order = self.search([("id", '=', item['id'])])
processing_order = self.search([("id", '=', item['id']), ('active', 'in', [True, False])])
if not processing_order:
self.create({
"sequence": item['sequence'],
@@ -1060,7 +1054,8 @@ class sfProductionProcessParameter(models.Model):
if result['status'] == 1:
for item in result['mrs_production_process_parameter_yesterday_list']:
if item:
production_process_parameter = self.search([("code", '=', item['code'])])
production_process_parameter = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
process = self.env['sf.production.process'].search(
[('code', '=', item['process_id_code'])])
if production_process_parameter:
@@ -1093,7 +1088,7 @@ class sfProductionProcessParameter(models.Model):
for item in result['mrs_production_process_parameter_all_list']:
if item:
production_process_parameter = self.search(
[("code", '=', item['code'])])
[("code", '=', item['code']), ('active', 'in', [True, False])])
process = self.env['sf.production.process'].search(
[('code', '=', item['process_id_code'])], limit=1)
if not production_process_parameter:
@@ -1130,7 +1125,7 @@ class MachineToolCategory(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['machine_tool_category_yesterday_list']:
machine_tool_category = self.search([("code", '=', item['code'])])
machine_tool_category = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if machine_tool_category:
machine_tool_category.name = item['name']
machine_tool_category.category = item['category']
@@ -1157,7 +1152,7 @@ class MachineToolCategory(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['machine_tool_category_all_list']:
machine_tool_category = self.search([("code", '=', item['code'])])
machine_tool_category = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if not machine_tool_category:
self.create({
"name": item['name'],
@@ -1195,7 +1190,8 @@ class sfSyncCutting_tool_Material(models.Model):
if result.get('mrs_cutting_tool_material_yesterday_list'):
for item in result['mrs_cutting_tool_material_yesterday_list']:
if item:
cutting_tool_material = self.search([("code", '=', item['code'])])
cutting_tool_material = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not cutting_tool_material:
self.create({
"name": item['name'],
@@ -1225,7 +1221,8 @@ class sfSyncCutting_tool_Material(models.Model):
if result.get('mrs_cutting_tool_material_all_list'):
for item in result['mrs_cutting_tool_material_all_list']:
if item:
cutting_tool_material = self.search([("code", '=', item['code'])])
cutting_tool_material = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not cutting_tool_material:
self.create({
"name": item['name'],
@@ -1262,7 +1259,8 @@ class SyncFunctionalCuttingToolModel(models.Model):
if result.get('mrs_functional_cutting_tool_model_yesterday_list'):
for item in result['mrs_functional_cutting_tool_model_yesterday_list']:
if item:
functional_cutting_tool_model = self.search([("code", '=', item['code'])])
functional_cutting_tool_model = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not functional_cutting_tool_model:
self.create({
"name": item['name'],
@@ -1292,7 +1290,8 @@ class SyncFunctionalCuttingToolModel(models.Model):
if result.get('mrs_functional_cutting_tool_model_all_list'):
for item in result['mrs_functional_cutting_tool_model_all_list']:
if item:
functional_cutting_tool_model = self.search([("code", '=', item['code'])])
functional_cutting_tool_model = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not functional_cutting_tool_model:
self.create({
"name": item['name'],
@@ -1329,7 +1328,7 @@ class SyncFixtureMaterial(models.Model):
if result.get('fixture_material_yesterday_list'):
for item in result['fixture_material_yesterday_list']:
if item:
fixture_material = self.search([("code", '=', item['code'])])
fixture_material = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if not fixture_material:
self.create({
"name": item['name'],
@@ -1361,7 +1360,7 @@ class SyncFixtureMaterial(models.Model):
if result.get('fixture_material_all_list'):
for item in result['fixture_material_all_list']:
if item:
fixture_material = self.search([("code", '=', item['code'])])
fixture_material = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
if not fixture_material:
self.create({
"name": item['name'],
@@ -1399,7 +1398,8 @@ class SyncMulti_Mounting_Type(models.Model):
if result.get('multi_mounting_type_yesterday_list'):
for item in result['multi_mounting_type_yesterday_list']:
if item:
multi_mounting_type = self.search([("code", '=', item['code'])])
multi_mounting_type = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not multi_mounting_type:
self.create({
"name": item['name'],
@@ -1429,7 +1429,8 @@ class SyncMulti_Mounting_Type(models.Model):
if result.get('multi_mounting_type_all_list'):
for item in result['multi_mounting_type_all_list']:
if item:
multi_mounting_type = self.search([("code", '=', item['code'])])
multi_mounting_type = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not multi_mounting_type:
self.create({
"name": item['name'],
@@ -1674,7 +1675,8 @@ class SyncFunctionalFixtureType(models.Model):
if result.get('functional_fixture_type_yesterday_list'):
for item in result['functional_fixture_type_yesterday_list']:
if item:
functional_fixture_type = self.search([("code", '=', item['code'])])
functional_fixture_type = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not functional_fixture_type:
self.create({
"name": item['name'],
@@ -1703,7 +1705,8 @@ class SyncFunctionalFixtureType(models.Model):
if result.get('functional_fixture_type_all_list'):
for item in result['functional_fixture_type_all_list']:
if item:
functional_fixture_type = self.search([("code", '=', item['code'])])
functional_fixture_type = self.search(
[("code", '=', item['code']), ('active', 'in', [True, False])])
if not functional_fixture_type:
self.create({
"name": item['name'],
@@ -1739,7 +1742,7 @@ class SfToolType(models.Model):
if result['status'] == 1:
for item in result['mrs_cutting_tool_type_yesterday_list']:
if item:
cutting_tool_type = self.search([("code", '=', item['code'])])
cutting_tool_type = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
cutting_tool_material = self.env['sf.cutting.tool.material'].search(
[("code", '=', item['cutting_tool_material_code'])])
if not cutting_tool_type:
@@ -1771,7 +1774,7 @@ class SfToolType(models.Model):
if result['status'] == 1:
for item in result['mrs_cutting_tool_type_all_list']:
if item:
cutting_tool_type = self.search([("code", '=', item['code'])])
cutting_tool_type = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
cutting_tool_material = self.env['sf.cutting.tool.material'].search(
[("code", '=', item['cutting_tool_material_code'])])
if not cutting_tool_type:
@@ -1811,7 +1814,8 @@ class SfMaintenanceEquipmentImage(models.Model):
if result['status'] == 1:
for item in result['ability_feature_library_yesterday_list']:
if item:
ability_feature_library = self.search([("name", '=', item['name'])])
ability_feature_library = self.search(
[("name", '=', item['name']), ('active', 'in', [True, False])])
if not ability_feature_library:
self.create({
"name": item['name'],
@@ -1839,7 +1843,8 @@ class SfMaintenanceEquipmentImage(models.Model):
if result['status'] == 1:
for item in result['ability_feature_library_all_list']:
if item:
ability_feature_library = self.search([("name", '=', item['name'])])
ability_feature_library = self.search(
[("name", '=', item['name']), ('active', 'in', [True, False])])
if not ability_feature_library:
self.create({
"name": item['name'],
@@ -1872,7 +1877,7 @@ class MaterialApply(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['material_apply_yesterday_list']:
material_apply = self.search([("name", '=', item['name'])])
material_apply = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if material_apply:
material_apply.name = item['name']
material_apply.active = item['active']
@@ -1894,7 +1899,7 @@ class MaterialApply(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['material_apply_all_list']:
material_apply = self.search([("name", '=', item['name'])])
material_apply = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not material_apply:
self.create({
"name": item['name'],
@@ -1922,7 +1927,7 @@ class ModelInternationalStandards(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['mrs_international_standards_yesterday_list']:
international_standards = self.search([("name", '=', item['name'])])
international_standards = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if international_standards:
international_standards.name = item['name']
international_standards.active = item['active']
@@ -1945,7 +1950,7 @@ class ModelInternationalStandards(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['mrs_international_standards_all_list']:
international_standards = self.search([("name", '=', item['name'])])
international_standards = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not international_standards:
self.create({
"name": item['name'],
@@ -1973,7 +1978,7 @@ class CuttingSpeed(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['cutting_speed_yesterday_list']:
cutting_speed = self.search([("name", '=', item['name'])])
cutting_speed = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not cutting_speed:
self.create({
'name': item['name'],
@@ -2027,7 +2032,7 @@ class CuttingSpeed(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['cutting_speed_all_list']:
cutting_speed = self.search([("name", '=', item['name'])])
cutting_speed = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not cutting_speed:
self.create({
'name': item['name'],
@@ -2087,7 +2092,7 @@ class CuttingWidthDepth(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['cutting_width_depth_yesterday_list']:
cutting_width_depth = self.search([("name", '=', item['name'])])
cutting_width_depth = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not cutting_width_depth:
self.create({
'name': item['name'],
@@ -2104,7 +2109,7 @@ class CuttingWidthDepth(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['cutting_width_depth_all_list']:
cutting_width_depth = self.search([("name", '=', item['name'])])
cutting_width_depth = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not cutting_width_depth:
self.create({
'name': item['name'],
@@ -2127,7 +2132,7 @@ class CuttingSpeed(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['feed_per_tooth_yesterday_list']:
feed_per_tooth = self.search([("name", '=', item['name'])])
feed_per_tooth = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not feed_per_tooth:
self.create({
'name': item['name'],
@@ -2165,7 +2170,7 @@ class CuttingSpeed(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['feed_per_tooth_all_list']:
feed_per_tooth = self.search([("name", '=', item['name'])])
feed_per_tooth = self.search([("name", '=', item['name']), ('active', 'in', [True, False])])
if not feed_per_tooth:
self.create({
'name': item['name'],
@@ -2211,7 +2216,8 @@ class Cutting_tool_standard_library(models.Model):
if result['status'] == 1:
for item in result['cutting_tool_standard_library_yesterday_list']:
cutting_tool_standard_library = self.search(
[("code", '=', item['code'].replace("JKM", result['factory_short_name']))])
[("code", '=', item['code'].replace("JKM", result['factory_short_name']),
('active', 'in', [True, False]))])
cutting_tool_type = self.env['sf.cutting.tool.type'].search(
[("code", '=', item['cutting_tool_type_code'])])
cutting_tool_material = self.env['sf.cutting.tool.material'].search(
@@ -2317,7 +2323,8 @@ class Cutting_tool_standard_library(models.Model):
if result['status'] == 1:
for item in result['cutting_tool_standard_library_all_list']:
cutting_tool_standard_library = self.search(
[("code", '=', item['code'].replace("JKM", result['factory_short_name']))])
[("code", '=', item['code'].replace("JKM", result['factory_short_name']),
('active', 'in', [True, False]))])
cutting_tool_type = self.env['sf.cutting.tool.type'].search(
[("code", '=', item['cutting_tool_type_code'])])
cutting_tool_material = self.env['sf.cutting.tool.material'].search(
@@ -2431,7 +2438,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_integral_tool'])
if basic_parameters_integral_tool_list:
for integral_tool_item in basic_parameters_integral_tool_list:
integral_tool = self.search([('code', '=', integral_tool_item['code'])])
integral_tool = self.search(
[('code', '=', integral_tool_item['code']), ('active', 'in', [True, False])])
if not integral_tool:
self.create({
'name': integral_tool_item['name'],
@@ -2483,7 +2491,7 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_blade'])
if basic_parameters_blade_list:
for blade_item in basic_parameters_blade_list:
blade = self.search([('code', '=', blade_item['code'])])
blade = self.search([('code', '=', blade_item['code']), ('active', 'in', [True, False])])
if not blade:
self.create({
'name': blade_item['name'],
@@ -2547,7 +2555,7 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_chuck'])
if basic_parameters_chuck_list:
for chuck_item in basic_parameters_chuck_list:
chuck = self.search([('code', '=', chuck_item['code'])])
chuck = self.search([('code', '=', chuck_item['code']), ('active', 'in', [True, False])])
if not chuck:
self.create({
'name': chuck_item['name'],
@@ -2591,7 +2599,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_cutter_arbor'])
if basic_parameters_cutter_arbor_list:
for cutter_arbor_item in basic_parameters_cutter_arbor_list:
cutter_arbor = self.search([('code', '=', cutter_arbor_item['code'])])
cutter_arbor = self.search(
[('code', '=', cutter_arbor_item['code']), ('active', 'in', [True, False])])
if not cutter_arbor:
self.create({
'name': cutter_arbor_item['name'],
@@ -2659,7 +2668,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_cutter_head'])
if basic_parameters_cutter_head_list:
for cutter_head_item in basic_parameters_cutter_head_list:
cutter_head = self.search([('code', '=', cutter_head_item['code'])])
cutter_head = self.search(
[('code', '=', cutter_head_item['code']), ('active', 'in', [True, False])])
if not cutter_head:
self.create({
'name': cutter_head_item['name'],
@@ -2713,7 +2723,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_knife_handle'])
if basic_parameters_knife_handle_list:
for knife_handle_item in basic_parameters_knife_handle_list:
knife_handle = self.search([('code', '=', knife_handle_item['code'])])
knife_handle = self.search(
[('code', '=', knife_handle_item['code']), ('active', 'in', [True, False])])
if not knife_handle:
self.create({
'name': knife_handle_item['name'],
@@ -2780,7 +2791,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_integral_tool'])
if basic_parameters_integral_tool_list:
for integral_tool_item in basic_parameters_integral_tool_list:
integral_tool = self.search([('code', '=', integral_tool_item['code'])])
integral_tool = self.search(
[('code', '=', integral_tool_item['code']), ('active', 'in', [True, False])])
if not integral_tool:
self.create({
'name': integral_tool_item['name'],
@@ -2835,7 +2847,7 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_blade'])
if basic_parameters_blade_list:
for blade_item in basic_parameters_blade_list:
blade = self.search([('code', '=', blade_item['code'])])
blade = self.search([('code', '=', blade_item['code']), ('active', 'in', [True, False])])
if not blade:
self.create({
'name': blade_item['name'],
@@ -2901,7 +2913,7 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_chuck'])
if basic_parameters_chuck_list:
for chuck_item in basic_parameters_chuck_list:
chuck = self.search([('code', '=', chuck_item['code'])])
chuck = self.search([('code', '=', chuck_item['code']), ('active', 'in', [True, False])])
if not chuck:
self.create({
'name': chuck_item['name'],
@@ -2947,7 +2959,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_cutter_arbor'])
if basic_parameters_cutter_arbor_list:
for cutter_arbor_item in basic_parameters_cutter_arbor_list:
cutter_arbor = self.search([('code', '=', cutter_arbor_item['code'])])
cutter_arbor = self.search(
[('code', '=', cutter_arbor_item['code']), ('active', 'in', [True, False])])
if not cutter_arbor:
self.create({
'name': cutter_arbor_item['name'],
@@ -3017,7 +3030,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_cutter_head'])
if basic_parameters_cutter_head_list:
for cutter_head_item in basic_parameters_cutter_head_list:
cutter_head = self.search([('code', '=', cutter_head_item['code'])])
cutter_head = self.search(
[('code', '=', cutter_head_item['code']), ('active', 'in', [True, False])])
if not cutter_head:
self.create({
'name': cutter_head_item['name'],
@@ -3073,7 +3087,8 @@ class CuttingToolBasicParameters(models.Model):
result['cutting_tool_basic_parameters_all_list']['basic_parameters_knife_handle'])
if basic_parameters_knife_handle_list:
for knife_handle_item in basic_parameters_knife_handle_list:
knife_handle = self.search([('code', '=', knife_handle_item['code'])])
knife_handle = self.search(
[('code', '=', knife_handle_item['code']), ('active', 'in', [True, False])])
if not knife_handle:
self.create({
'name': knife_handle_item['name'],

View File

@@ -8,6 +8,7 @@ __author__ = 'jinling.yang'
_logger = logging.getLogger(__name__)
class AutoQuatotion(models.Model):
_name = 'sf.auto_quatotion.common'
_description = u'自动报价公用类'

View File

@@ -141,6 +141,8 @@ class RePurchaseOrder(models.Model):
if not self.user_id:
if self.partner_id:
self.user_id = self.partner_id.purchase_user_id.id
self.check_status = 'pending'
self.state = 'purchase'
else:
self.user_id = self.env.user.id

View File

@@ -126,6 +126,9 @@ access_stock_lot_group_purchase_director,stock_lot_group_purchase_director,stock
access_mrp_workcenter_productivity_group_purchase,mrp_workcenter_productivity_group_purchase,mrp.model_mrp_workcenter_productivity,sf_base.group_purchase,1,0,0,0
access_mrp_workcenter_productivity_group_purchase_director,mrp_workcenter_productivity_group_purchase_director,mrp.model_mrp_workcenter_productivity,sf_base.group_purchase_director,1,0,0,0
access_sf_cutting_speed_group_sf_stock_manager,sf_cutting_speed_group_sf_stock_manager,sf_base.model_sf_cutting_speed,sf_warehouse.group_sf_stock_manager,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
126
127
128
129
130
131
132
133
134