|
@@ -0,0 +1,74 @@
|
|
|
|
+# -*- coding : utf-8 -*-
|
|
|
|
+from openerp import fields, models, api, _
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class sale_order_line(models.Model):
|
|
|
|
+ _inherit = "sale.order.line"
|
|
|
|
+
|
|
|
|
+ @api.one
|
|
|
|
+ @api.depends(
|
|
|
|
+ 'product_uom_qty',
|
|
|
|
+ 'product_id')
|
|
|
|
+ def _fnct_line_stock(self):
|
|
|
|
+ available = False
|
|
|
|
+ if self.order_id.state == 'draft':
|
|
|
|
+ available = self.with_context(
|
|
|
|
+ warehouse=self.order_id.warehouse_id.id
|
|
|
|
+ ).product_id.virtual_available - self.product_uom_qty
|
|
|
|
+ self.virtual_available = available
|
|
|
|
+ if available >= 0.0:
|
|
|
|
+ available = True
|
|
|
|
+ else:
|
|
|
|
+ available = False
|
|
|
|
+ self.virtual_available_boolean = available
|
|
|
|
+
|
|
|
|
+ virtual_available = fields.Float(
|
|
|
|
+ compute="_fnct_line_stock", string='Saldo Stock')
|
|
|
|
+ virtual_available_boolean = fields.Boolean(
|
|
|
|
+ compute="_fnct_line_stock", string='Saldo Stock')
|
|
|
|
+
|
|
|
|
+ def product_id_change_with_wh(
|
|
|
|
+ self, cr, uid, ids, pricelist, product, qty=0,
|
|
|
|
+ uom=False, qty_uos=0, uos=False, name='', partner_id=False,
|
|
|
|
+ lang=False, update_tax=True, date_order=False, packaging=False,
|
|
|
|
+ fiscal_position=False, flag=False, warehouse_id=False,
|
|
|
|
+ context=None):
|
|
|
|
+ res = super(sale_order_line, self).product_id_change_with_wh(
|
|
|
|
+ cr, uid, ids, pricelist, product, qty,
|
|
|
|
+ uom, qty_uos, uos, name, partner_id,
|
|
|
|
+ lang, update_tax, date_order, packaging, fiscal_position, flag,
|
|
|
|
+ warehouse_id=warehouse_id, context=context)
|
|
|
|
+
|
|
|
|
+ disable_warning = warehouse_id and self.pool['stock.warehouse'].browse(
|
|
|
|
+ cr, uid, warehouse_id, context).disable_sale_stock_warning or False
|
|
|
|
+
|
|
|
|
+ # if not stock warning set in company and warning in res...
|
|
|
|
+ if res.get('warning', False) and disable_warning:
|
|
|
|
+ # clean warning
|
|
|
|
+ warning = {}
|
|
|
|
+ # call sale_stock module other warning
|
|
|
|
+ res_packing = self.product_packaging_change(
|
|
|
|
+ cr, uid, ids, pricelist, product, qty, uom, partner_id,
|
|
|
|
+ packaging, context=context)
|
|
|
|
+ res['value'].update(res_packing.get('value', {}))
|
|
|
|
+ warning_msgs = res_packing.get(
|
|
|
|
+ 'warning') and res_packing['warning']['message'] or ''
|
|
|
|
+
|
|
|
|
+ if warning_msgs:
|
|
|
|
+ warning = {
|
|
|
|
+ 'title': _('Configuration Error!'),
|
|
|
|
+ 'message': warning_msgs
|
|
|
|
+ }
|
|
|
|
+ else:
|
|
|
|
+ # if not sale stock warning_try sale warnings
|
|
|
|
+ product_change_res = self.product_id_change(
|
|
|
|
+ cr, uid, ids, pricelist, product, qty=qty, uom=False,
|
|
|
|
+ qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id,
|
|
|
|
+ lang=lang, update_tax=update_tax, date_order=date_order,
|
|
|
|
+ packaging=packaging, fiscal_position=fiscal_position,
|
|
|
|
+ flag=flag, context=context)
|
|
|
|
+ warning = product_change_res.get('warning')
|
|
|
|
+ res.update({'warning': warning})
|
|
|
|
+ return res
|
|
|
|
+
|
|
|
|
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|