Compare commits

...

9 Commits

Author SHA1 Message Date
胡尧
e0559e9887 Merge branch 'develop' into release/release_2.14 2025-06-10 16:33:57 +08:00
管欢
39a25bb6c8 Accept Merge Request #2180: (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/2180
2025-06-10 16:33:37 +08:00
禹翔辉
e129c08426 Accept Merge Request #2179: (feature/bfm下单接口优化 -> 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/2179
2025-06-10 15:28:17 +08:00
yuxianghui
c6b47bd68d 销售订单新增合同日期字段 2025-06-10 15:26:32 +08:00
guanhuan
126d60f8d7 Merge branch 'refs/heads/feature/搜索优化' into release/release_2.14 2025-06-10 10:45:52 +08:00
guanhuan
4225a8fe1b 采购申请单完成操作提示调整 2025-06-10 10:45:06 +08:00
guanhuan
a13a79f41f Merge branch 'refs/heads/feature/搜索优化' into release/release_2.14 2025-06-09 17:56:50 +08:00
guanhuan
a828c823dd 采购申请单完成操作修改 2025-06-09 17:55:34 +08:00
guanhuan
9cf2bac9c6 修复返工问题 2025-06-09 17:39:55 +08:00
4 changed files with 35 additions and 25 deletions

View File

@@ -41,13 +41,14 @@ class PurchaseRequest(models.Model):
if lines:
for line in lines:
for line_item in line.order_line:
product_id = line_item.product_id.id
qty = line_item.product_qty
product_rounding[product_id] = line_item.product_id.uom_id.rounding
if product_id in product_summary:
product_summary[product_id] += qty
else:
product_summary[product_id] = qty
if line_item.state == 'purchase':
product_id = line_item.product_id.id
qty = line_item.product_qty
product_rounding[product_id] = line_item.product_id.uom_id.rounding
if product_id in product_summary:
product_summary[product_id] += qty
else:
product_summary[product_id] = qty
# 校验产品数量
discrepancies = []
@@ -60,10 +61,10 @@ class PurchaseRequest(models.Model):
if discrepancies:
# 弹出提示框
message = "产品数量不一致:\n"
message = "产品与采购数量不一致:\n"
for product_id, required_qty, order_qty in discrepancies:
product_name = self.env['product.product'].browse(product_id).display_name # 获取产品名称
message += f"产品 {product_name},需求数量 {required_qty},关联采购订单数量 {order_qty}(含询价状态)\n"
message += f"产品 {product_name},需求数量 {required_qty},关联采购订单确认的数量 {order_qty}\n"
# 添加确认框
message += "确认关闭?"
return {

View File

@@ -47,7 +47,7 @@ class JikimoSaleRoutePicking(Sf_Bf_Connect):
i += 1
if kw.get('contract_file_name') and kw.get('contract_file') and kw.get('contract_code'):
order_id.create_sale_documents(kw.get('contract_file_name'), kw.get('contract_file'))
order_id.write({'contract_code': kw.get('contract_code')})
order_id.write({'contract_code': kw.get('contract_code'), 'contract_date': kw.get('contract_date')})
res['factory_order_no'] = order_id.name
order_id.confirm_to_supply_method()
except Exception as e:

View File

@@ -227,22 +227,30 @@ class ResMrpWorkOrder(models.Model):
# finish_move.move_dest_ids.move_line_ids.reserved_uom_qty = 0
else:
next_workorder = sorted_workorders[position + 1]
next_state = next_workorder.state
if next_state not in ['pending', 'waiting', 'ready']:
raise UserError('下工序已经开始,无法回退')
if next_workorder.is_subcontract:
next_workorder.picking_ids.write({'state': 'waiting'})
next_workorder.state = 'pending'
self.time_ids.date_end = None
cur_workorder.state = 'progress'
cur_workorder.production_id.state = 'progress'
quality_check = self.env['quality.check'].search(
[('workorder_id', '=', self.id)])
for check_order in quality_check:
if check_order.point_id.is_inspect:
check_order.quality_state = 'waiting'
# 持续获取下一个工单,直到找到一个不是返工的工单
while next_workorder and next_workorder.state == 'rework':
position += 1
if position + 1 < len(sorted_workorders):
next_workorder = sorted_workorders[position + 1]
else:
check_order.quality_state = 'none'
next_workorder = None
if next_workorder:
next_state = next_workorder.state
if next_state not in ['pending', 'waiting', 'ready']:
raise UserError('下工序已经开始,无法回退')
if next_workorder.is_subcontract:
next_workorder.picking_ids.write({'state': 'waiting'})
next_workorder.state = 'pending'
self.time_ids.date_end = None
cur_workorder.state = 'progress'
cur_workorder.production_id.state = 'progress'
quality_check = self.env['quality.check'].search(
[('workorder_id', '=', self.id)])
for check_order in quality_check:
if check_order.point_id.is_inspect:
check_order.quality_state = 'waiting'
else:
check_order.quality_state = 'none'
def _compute_working_users(self):
super()._compute_working_users()

View File

@@ -64,6 +64,7 @@ class ReSaleOrder(models.Model):
model_display_version = fields.Char('模型展示版本', default="v1")
contract_code = fields.Char('合同编号')
contract_date = fields.Date('合同日期')
contract_document_id = fields.Many2one('documents.document', string='合同文件')
contract_file = fields.Binary(related='contract_document_id.datas', string='合同文件内容')
contract_file_name = fields.Char(related='contract_document_id.attachment_id.name', string='文件名')