Odoo 仓库打包作业 是允许可以 超出分拣单预计的数量。
在odoo 库存模块的代码里,修改 _create_extra_moves() 方法
def _create_extra_moves(self, cr, uid, picking, context=None):
'''This function creates move lines on a picking, at the time of do_transfer, based on
unexpected product transfers (or exceeding quantities) found in the pack operations.
'''
move_obj = self.pool.get('stock.move')
operation_obj = self.pool.get('stock.pack.operation')
moves = []
for op in picking.pack_operation_ids:
for product_id, remaining_qty in operation_obj._get_remaining_prod_quantities(cr, uid, op, context=context).items():
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
if float_compare(remaining_qty, 0, precision_rounding=product.uom_id.rounding) > 0:
vals = self._prepare_values_extra_move(cr, uid, op, product, remaining_qty, context=context)
moves.append(move_obj.create(cr, uid, vals, context=context))
if moves:
move_obj.action_confirm(cr, uid, moves, context=context)
return moves
在 move_obj.create 这个地方 增加一行代码 发送 alert.
或者使用 odoo automatic Server action rule, 这样 就可以 不用 写一行代码 实现 此需求。
原理;
当stock picking 更新的时候,如果它的 move lines 里面 stock move 名 包含了 Extra Move: 字样【如果使用的中文,注意使用汉化,未确认?】 , 就触发 一个Server Action,用来发送通知邮件
设置;
1. 设置一个 filter.
在 user- defined filters 里面定义
2. 设置 automatic Server Action rule.
Related document model 选择 stock move
Where to run 选择 on creation
Filter 选择 前面定义的 Extra_Move
切换到 Actions 页卡增加一个 服务器动作
选择已有的,或者创建一个新的 Server action
在弹窗,Action to DO 选择 send Email
在 Email Template 选择 建立模板
设置 Name
Applies to stock.picking
设置 mail from
参数 object 代表当前的对象
设置 subject 和 body
当数量超出时,会发送邮件
注意,这里没有 设置邮件 接收人