56 lines
2.4 KiB
Python
56 lines
2.4 KiB
Python
from odoo import models, fields, api
|
|
|
|
class sf_programming_reason(models.TransientModel):
|
|
_name = 'sf.programming.reason'
|
|
_description = '重新编程原因'
|
|
|
|
production_id = fields.Many2one('mrp.production')
|
|
reason = fields.Text('重新编程原因')
|
|
reprogramming_count = fields.Integer(string='重新编程次数')
|
|
programming_state = fields.Char(string='编程状态')
|
|
|
|
@api.model
|
|
def default_get(self, fields):
|
|
res = super(sf_programming_reason, self).default_get(fields)
|
|
if self._context.get('active_id'):
|
|
production = self.env['mrp.production'].browse(self._context.get('active_id'))
|
|
res.update({
|
|
'reprogramming_count': production._cron_get_programming_state()['reprogramming_num'] if
|
|
production._cron_get_programming_state().get('reprogramming_num') else 0,
|
|
'programming_state': production.programming_state, # 假设制造订单模型中有这个字段
|
|
})
|
|
return res
|
|
|
|
def action_confirm(self):
|
|
print('self.production_id.programming_state:', self.production_id.programming_state)
|
|
self.production_id.re_programming_update_programming_state()
|
|
self.production_id.write(
|
|
{'programming_state': '编程中', 'work_state': '编程中'})
|
|
|
|
cloud_programming = self.production_id._cron_get_programming_state()
|
|
self.production_id.programming_record_ids.create({
|
|
'number': len(self.production_id.programming_record_ids) + 1,
|
|
'production_id': self.production_id.id,
|
|
'reason': self.reason,
|
|
'programming_method': cloud_programming['programme_way'],
|
|
'current_programming_count': cloud_programming['reprogramming_num'],
|
|
'target_production_id': self.production_id.name,
|
|
'apply_time': self._context.get('default_apply_time'),
|
|
'send_time': False,
|
|
})
|
|
|
|
# 返回弹窗提示“已下达编程任务和消息,请等待编程单下发”
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'sf.programming.reason',
|
|
'view_mode': 'form',
|
|
'target': 'new',
|
|
'context': {
|
|
'default_production_id': self.production_id.id,
|
|
'active_id': self.production_id.id,
|
|
},
|
|
'view_id': self.env.ref('sf_manufacturing.sf_programming_reason_message_view').id,
|
|
}
|
|
|
|
|