from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP, float_compare
from dateutil.relativedelta import relativedelta
from openerp.osv import fields, osv
-from openerp import netsvc
from openerp.tools.translate import _
import pytz
from openerp import SUPERUSER_ID
-class sale_shop(osv.osv):
- _inherit = "sale.shop"
- _columns = {
- 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),
- }
-
-sale_shop()
-
class sale_order(osv.osv):
_inherit = "sale.order"
vals.update({'invoice_quantity': 'order'})
if vals['order_policy'] == 'picking':
vals.update({'invoice_quantity': 'procurement'})
- order = super(sale_order, self).create(cr, uid, vals, context=context)
+ order = super(sale_order, self).create(cr, uid, vals, context=context)
return order
+ def _get_default_warehouse(self, cr, uid, context=None):
+ company_id = self.pool.get('res.users')._get_company(cr, uid, context=context)
+ warehouse_ids = self.pool.get('stock.warehouse').search(cr, uid, [('company_id', '=', company_id)], context=context)
+ if not warehouse_ids:
+ return False
+ return warehouse_ids[0]
+
# This is False
def _picked_rate(self, cr, uid, ids, name, arg, context=None):
if not ids:
'picking_ids': fields.one2many('stock.picking.out', 'sale_id', 'Related Picking', readonly=True, help="This is a list of delivery orders that has been generated for this sales order."),
'shipped': fields.boolean('Delivered', readonly=True, help="It indicates that the sales order has been delivered. This field is updated only after the scheduler(s) have been launched."),
'picked_rate': fields.function(_picked_rate, string='Picked', type='float'),
+ 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True),
'invoice_quantity': fields.selection([('order', 'Ordered Quantities'), ('procurement', 'Shipped Quantities')], 'Invoice on',
help="The sales order will automatically create the invoice proposition (draft invoice).\
You have to choose if you want your invoice based on ordered ", required=True, readonly=True, states={'draft': [('readonly', False)]}),
}
_defaults = {
+ 'warehouse_id': _get_default_warehouse,
'picking_policy': 'direct',
'order_policy': 'manual',
'invoice_quantity': 'order',
return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
+ def onchange_warehouse_id(self, cr, uid, ids, warehouse_id, context=None):
+ val = {}
+ if warehouse_id:
+ warehouse = self.pool.get('stock.warehouse').browse(cr, uid, warehouse_id, context=context)
+ if warehouse.company_id:
+ val['company_id'] = warehouse.company_id.id
+ return {'value': val}
+
def action_view_delivery(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
return res
def action_cancel(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
if context is None:
context = {}
sale_order_line_obj = self.pool.get('sale.order.line')
proc_obj = self.pool.get('procurement.order')
+ stock_obj = self.pool.get('stock.picking')
for sale in self.browse(cr, uid, ids, context=context):
for pick in sale.picking_ids:
if pick.state not in ('draft', 'cancel'):
for mov in pick.move_lines:
proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)])
if proc_ids:
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order', proc, 'button_check', cr)
+ proc_obj.signal_button_check(cr, uid, proc_ids)
for r in self.read(cr, uid, ids, ['picking_ids']):
- for pick in r['picking_ids']:
- wf_service.trg_validate(uid, 'stock.picking', pick, 'button_cancel', cr)
+ stock_obj.signal_button_cancel(cr, uid, r['picking_ids'])
return super(sale_order, self).action_cancel(cr, uid, ids, context=context)
def action_wait(self, cr, uid, ids, context=None):
or line.product_uom_qty,
'product_uos': (line.product_uos and line.product_uos.id)\
or line.product_uom.id,
- 'location_id': order.shop_id.warehouse_id.lot_stock_id.id,
+ 'location_id': order.warehouse_id.lot_stock_id.id,
'procure_method': line.type,
'move_id': move_id,
'company_id': order.company_id.id,
}
def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, context=None):
- location_id = order.shop_id.warehouse_id.lot_stock_id.id
- output_id = order.shop_id.warehouse_id.lot_output_id.id
+ location_id = order.warehouse_id.lot_stock_id.id
+ output_id = order.warehouse_id.lot_output_id.id
return {
'name': line.name,
'picking_id': picking_id,
line.write({'procurement_id': proc_id})
self.ship_recreate(cr, uid, order, line, move_id, proc_id)
- wf_service = netsvc.LocalService("workflow")
if picking_id:
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
- for proc_id in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
+ picking_obj.signal_button_confirm(cr, uid, [picking_id])
+ procurement_obj.signal_button_confirm(cr, uid, proc_ids)
val = {}
if order.state == 'shipping_except':