修复报废

This commit is contained in:
jinling.yang
2024-08-27 11:24:04 +08:00
parent 9b957848c2
commit b40a87df88
10 changed files with 75 additions and 78 deletions

View File

@@ -620,12 +620,12 @@ class Manufacturing_Connect(http.Controller):
# if is_free is True:
# delivery_workpiece._delivery_avg()
# logging.info('agv下发下产线任务下发完成')
# if ret['IsComplete'] is True:
# # 向AGV任务调度下发下产线任务
# workorders = request.env['mrp.workorder'].browse(workorder_ids)
# request.env['sf.agv.scheduling'].add_scheduling(ret['DeviceId'], '下产线', workorders)
# else:
# res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
if ret['IsComplete'] is True:
# 向AGV任务调度下发下产线任务
workorders = request.env['mrp.workorder'].browse(workorder_ids)
request.env['sf.agv.scheduling'].add_scheduling(ret['DeviceId'], '下产线', workorders)
else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
except RepeatTaskException as e:
logging.info('AGVToProduct error:%s' % e)
except Exception as e:

View File

@@ -142,13 +142,13 @@ class MrpProduction(models.Model):
def action_view_remanufacture_productions(self):
self.ensure_one()
mrp_production_ids = self.env['mrp.production'].search(
mrp_production = self.env['mrp.production'].search(
[('id', '=', self.remanufacture_production_id.id)])
action = {
'res_model': 'mrp.production',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_id': mrp_production_ids[0],
'res_id': mrp_production.id,
}
return action

View File

@@ -1154,8 +1154,8 @@ class ResMrpWorkOrder(models.Model):
def button_finish(self):
for record in self:
if record.routing_type == '装夹预调':
if not record.material_center_point or record.X_deviation_angle <= 0:
raise UserError("请对前置三元检测定位参数进行计算定位")
# if not record.material_center_point or record.X_deviation_angle <= 0:
# raise UserError("请对前置三元检测定位参数进行计算定位")
if not record.rfid_code and record.is_rework is False:
raise UserError("请扫RFID码进行绑定")
record.process_state = '待加工'

View File

@@ -9,8 +9,8 @@ from odoo.exceptions import ValidationError, UserError
from odoo.modules import get_resource_path
# from OCC.Extend.DataExchange import read_step_file
# from OCC.Extend.DataExchange import write_stl_file
from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import write_stl_file
class ResProductMo(models.Model):

View File

@@ -151,8 +151,6 @@ class StockRule(models.Model):
list2.append(item)
for procurement, rule in list2:
logging.info(rule)
logging.info(rule.procure_method)
procure_method = rule.procure_method
if rule.procure_method == 'mts_else_mto':
qty_needed = procurement.product_uom._compute_quantity(procurement.product_qty,
@@ -178,10 +176,8 @@ class StockRule(models.Model):
for company_id, moves_values in moves_values_by_company.items():
# create the move as SUPERUSER because the current user may not have the rights to do it (mto product
# launched by a sale for example)
logging.info(moves_values)
moves = self.env['stock.move'].with_user(SUPERUSER_ID).sudo().with_company(company_id).create(
moves_values)
logging.info(moves)
# Since action_confirm launch following procurement_group we should activate it.
moves._action_confirm()
return True

View File

@@ -127,7 +127,7 @@
confirm="是否确认更新程序"
attrs="{'invisible': ['|',('state', '!=', 'rework'),('programming_state', '!=', '已编程未下发')]}"/>
<button name="button_rework" string="返工" type="object" groups="sf_base.group_sf_mrp_user"
attrs="{'invisible': ['|',('state', '!=', 'rework') ,('programming_state', '!=', '已编程')]}"/>
attrs="{'invisible': ['|','|',('state', '!=', 'rework') ,('programming_state', '!=', '已编程'),('is_rework', '=', True)]}"/>
<button name="button_scrap_new" string="报废" type="object"
groups="sf_base.group_sf_mrp_user"
attrs="{'invisible': ['|',('is_scrap', '=', False),('state','=','cancel')]}"/>
@@ -201,18 +201,18 @@
data-hotkey="l"/>
</xpath>
<!-- <xpath expr="//header//button[@name='action_view_mo_delivery']" position="after">-->
<!-- <button class="oe_stat_button" name="action_view_remanufacture_productions" type="object"-->
<!-- icon="fa-wrench" attrs="{'invisible': [('remanufacture_count', '=', 0)]}"-->
<!-- groups="mrp.group_mrp_user">-->
<!-- <div class="o_field_widget o_stat_info">-->
<!-- <span class="o_stat_value">-->
<!-- <field name="remanufacture_count"/>-->
<!-- </span>-->
<!-- <span class="o_stat_text">新的制造</span>-->
<!-- </div>-->
<!-- </button>-->
<!-- </xpath>-->
<xpath expr="//button[@name='action_view_mo_delivery']" position="before">
<button class="oe_stat_button" name="action_view_remanufacture_productions" type="object"
icon="fa-wrench" attrs="{'invisible': [('remanufacture_count', '=', 0)]}"
groups="mrp.group_mrp_user">
<div class="o_field_widget o_stat_info">
<span class="o_stat_value">
<field name="remanufacture_count"/>
</span>
<span class="o_stat_text">新的制造</span>
</div>
</button>
</xpath>
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
<button name="action_toggle_is_locked"

View File

@@ -27,20 +27,21 @@ class ProductionWizard(models.TransientModel):
self.is_reprogramming = False
def confirm(self):
if self.programming_state != '已下发':
self.programming_state = '编程中'
self.production_id.action_cancel()
self.production_id.detection_result_ids.write({'handle_result': '已处理'})
self.production_id.write({'state': 'cancel', 'scrap_ids': [(0, 0, {
'name': self.env['ir.sequence'].next_by_code('stock.scrap') or _('New'),
'product_id': self.production_id.product_id.id,
'scrap_qty': 1,
'lot_id': self.production_id.move_line_raw_ids.lot_id.id,
'origin': self.production_id.origin,
'date_done': fields.datetime.now(),
'lot_id': self.env['stock.move.line'].search(
[('move_id', '=', self.production_id.move_raw_ids[0].id)]).lot_id.id,
'location_id': self.production_id.move_raw_ids.filtered(lambda x: x.state not in (
'done',
'cancel')) and self.production_id.location_src_id.id or self.production_id.location_dest_id.id,
'scrap_location_id': self.env['stock.scrap']._get_default_scrap_location_id(),
'state': 'done'})]})
self.production_id.action_cancel()
if self.is_remanufacture is True:
ret = {'programming_list': [], 'is_reprogramming': self.is_reprogramming}
if self.is_reprogramming is True: