Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造功能优化

# Conflicts:
#	quality_control/security/ir.model.access.csv
#	quality_control/wizard/quality_check_wizard.py
#	sf_quality/__manifest__.py
#	sf_quality/models/__init__.py
#	sf_quality/models/stock.py
This commit is contained in:
mgw
2025-03-17 13:46:40 +08:00
28 changed files with 322 additions and 109 deletions

View File

@@ -5,23 +5,46 @@ class StockPicking(models.Model):
_inherit = 'stock.picking'
def button_validate(self):
# """
# 调拨单若关联了质量检查单,验证调拨单时,应校验是否有不合格品,若存在,应弹窗提示:
# “警告存在不合格产品XXXX n 件、YYYYY m件继续调拨请点“确认”否则请取消
# """
# if self.quality_check_ids.filtered(lambda qc: qc.quality_state == 'fail'):
# return {
# 'type': 'ir.actions.act_window',
# 'res_model': 'sf.functional.tool.assembly.order',
# 'name': ' ',
# 'view_mode': 'form',
# 'target': 'new',
# 'context': {'': True}
# }
out_quality_check = self.env['quality.check'].search([('picking_id', '=', self.id), ('test_type_id.name', '=', '出厂检验报告')])
"""
出厂检验报告上传
"""
out_quality_check = self.env['quality.check'].search(
[('picking_id', '=', self.id), ('test_type_id.name', '=', '出厂检验报告')])
if not out_quality_check.is_factory_report_uploaded:
if out_quality_check and self.state == 'assigned':
out_quality_check.upload_factory_report()
"""
调拨单若关联了质量检查单,验证调拨单时,应校验是否有不合格品,若存在,应弹窗提示:
“警告存在不合格产品XXXX n 件、YYYYY m件继续调拨请点“确认”否则请取消
"""
context = self.env.context
if not context.get('again_validate') and self.quality_check_ids.filtered(lambda qc: qc.quality_state == 'fail'):
# 回滚事务,为二次确认/取消做准备
self.env.cr.rollback()
quality_check_ids = self.quality_check_ids.filtered(lambda qc: qc.quality_state == 'fail')
product_list = list(set([quality_check_id.product_id for quality_check_id in quality_check_ids]))
fail_check_text = ''
for product_id in product_list:
check_ids = quality_check_ids.filtered(lambda qc: qc.product_id == product_id)
if all(check_id.measure_on == 'move_line' for check_id in check_ids):
number = sum(check_ids.mapped('qty_line'))
else:
number = sum(self.move_ids_without_package.filtered(
lambda ml: ml.product_id == product_id).mapped('quantity_done'))
fail_check_text = (f'{fail_check_text}{product_id.name} {number}'
if fail_check_text != '' else f'{product_id.name} {number}')
return {
'type': 'ir.actions.act_window',
'res_model': 'picking.validate.check.wizard',
'name': '质检不合格提示',
'view_mode': 'form',
'target': 'new',
'context': {
'default_picking_id': self.id,
'default_fail_check_text': f'警告:存在不合格产品{fail_check_text},继续调拨请点“确认”,否则请取消?',
'again_validate': True}
}
return super(StockPicking, self).button_validate()