1

在我的自定义销售报价报告中,我想显示一些数量为 0 的产品,因此为一些数量设置为 0 的产品创建了销售订单行。它工作正常并显示在销售报价报告中。

但是当我在销售订单中确认相同的销售报价时,OpenERP 会抛出以下消息:

“数据不足!请检查采购订单中的数量,不能为0或更少!”

如何确认一些数量设置为 0 的订单?

4

2 回答 2

1

首先,您必须继承采购,然后在您的自定义模块中覆盖action_confirm方法。

在purchase.py 中,在第 320 行找到“def action_confirm ()”。复制并粘贴整个方法并删除那些引发异常的行。

希望这能解决您的问题。

谢谢你。

于 2013-01-06T10:05:04.050 回答
1
class procurement_order(osv.osv):
    _inherit = 'procurement.order'
    def action_confirm(self, cr, uid, ids, context=None):
         move_obj = self.pool.get('stock.move')
        for procurement in self.browse(cr, uid, ids, context=context):
            #if procurement.product_qty <= 0.00:
                #raise osv.except_osv(_('Data Insufficient !'),_('Please check the quantity in procurement order(s), it should not be 0 or less!'))
            if procurement.product_id.type in ('product', 'consu'):
                if not procurement.move_id:
                    source = procurement.location_id.id
                if procurement.procure_method == 'make_to_order':
                    source = procurement.product_id.product_tmpl_id.property_stock_procurement.id
                id = move_obj.create(cr, uid, {
                    'name': procurement.name,
                    'location_id': source,
                    'location_dest_id': procurement.location_id.id,
                    'product_id': procurement.product_id.id,
                    'product_qty': procurement.product_qty,
                    'product_uom': procurement.product_uom.id,
                    'date_expected': procurement.date_planned,
                    'state': 'draft',
                    'company_id': procurement.company_id.id,
                    'auto_validate': True,
                })
                move_obj.action_confirm(cr, uid, [id], context=context)
                self.write(cr, uid, [procurement.id], {'move_id': id, 'close_move': 1})
    self.write(cr, uid, ids, {'state': 'confirmed', 'message': ''})
    return True
于 2013-01-07T05:02:59.377 回答