确认销售订单中的销售报价,其中一些数量设置为0

时间:2013-01-05 07:43:25

标签: openerp

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

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

“数据不足! 请检查采购订单中的数量,不应该是0或更少!“

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

2 个答案:

答案 0 :(得分:1)

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

procurement.py中,在行上找到“def action_confirm()”:320。复制并遍历整个方法,并删除那些引发异常的行。

希望这能解决您的问题。

谢谢。

答案 1 :(得分: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