diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index cb6dd79a632..d841c7cb37a 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -29,90 +29,67 @@ class stock_invoice_onshipping(osv.osv_memory):
_columns = {
'journal_id': fields.many2one('account.journal', 'Destination Journal', required=True),
'group': fields.boolean("Group by partner"),
- 'type': fields.selection([('out_invoice', 'Customer Invoice'),
- ('in_invoice', 'Supplier Invoice'),
- ('out_refund', 'Customer Refund'),
- ('in_refund', 'Supplier Refund')] , 'Type', required=True),
'invoice_date': fields.date('Invoiced date'),
}
-
+
def view_init(self, cr, uid, fields_list, context=None):
if context is None:
context = {}
- res= super(stock_invoice_onshipping, self).view_init(cr, uid, fields_list, context=context)
- pick_obj=self.pool.get('stock.picking')
- count=0
- for pick in pick_obj.browse(cr, uid,context.get('active_ids', False)):
+ res = super(stock_invoice_onshipping, self).view_init(cr, uid, fields_list, context=context)
+ pick_obj = self.pool.get('stock.picking')
+ count = 0
+ active_ids = context.get('active_ids',[])
+ for pick in pick_obj.browse(cr, uid, active_ids):
if pick.invoice_state != '2binvoiced':
- count=count+1
- if len(context.get('active_ids'))==1 and count==1:
- raise osv.except_osv(_('Warning !'),'This picking list does not require invoicing.')
- if len(context.get('active_ids'))==count:
- raise osv.except_osv(_('Warning !'),'None of these picking lists require invoicing.')
+ count += 1
+ if len(active_ids) == 1 and count:
+ raise osv.except_osv(_('Warning !'), _('This picking list does not require invoicing.'))
+ if len(active_ids) == count:
+ raise osv.except_osv(_('Warning !'), _('None of these picking lists require invoicing.'))
return res
-
- def _get_type(self, cr, uid, context=None):
- """ To get invoice type.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: The ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return: Invoice type
- """
+
+ def _get_type(self, pick):
+ src_usage = dest_usage = None
+ pick_type = None
+ if pick.invoice_state=='2binvoiced':
+ if pick.move_lines:
+ src_usage = pick.move_lines[0].location_id.usage
+ dest_usage = pick.move_lines[0].location_dest_id.usage
+ if pick.type == 'out' and dest_usage == 'supplier':
+ pick_type = 'in_refund'
+ elif pick.type == 'out' and dest_usage == 'customer':
+ pick_type = 'out_invoice'
+ elif pick.type == 'in' and src_usage == 'supplier':
+ pick_type = 'in_invoice'
+ elif pick.type == 'in' and src_usage == 'customer':
+ pick_type = 'out_refund'
+ else:
+ pick_type = 'out_invoice'
+ return pick_type
+
+ def create_invoice(self, cr, uid, ids, context=None):
if context is None:
context = {}
- picking_obj = self.pool.get('stock.picking')
- src_usage = dest_usage = None
- for pick in picking_obj.browse(cr, uid, context['active_ids'], context=context):
- if pick.invoice_state=='2binvoiced':
- if pick.move_lines:
- src_usage = pick.move_lines[0].location_id.usage
- dest_usage = pick.move_lines[0].location_dest_id.usage
- if pick.type == 'out' and dest_usage == 'supplier':
- type = 'in_refund'
- elif pick.type == 'out' and dest_usage == 'customer':
- type = 'out_invoice'
- elif pick.type == 'in' and src_usage == 'supplier':
- type = 'in_invoice'
- elif pick.type == 'in' and src_usage == 'customer':
- type = 'out_refund'
- else:
- type = 'out_invoice'
- return type
-
- _defaults = {
- 'type': _get_type,
- }
-
- def create_invoice(self, cr, uid, ids, context):
- """ To create invoice
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return: Invoice ids
- """
result = []
picking_obj = self.pool.get('stock.picking')
- mod_obj = self.pool.get('ir.model.data')
- act_obj = self.pool.get('ir.actions.act_window')
- for onshipdata_obj in self.read(cr, uid, ids, ['journal_id', 'group', 'type', 'invoice_date']):
- if context.get('new_picking', False):
- onshipdata_obj[id] = onshipdata_obj.new_picking
- onshipdata_obj[ids] = onshipdata_obj.new_picking
+ onshipdata_obj = self.read(cr, uid, ids[0], ['journal_id', 'group', 'invoice_date'])
+ if context.get('new_picking', False):
+ onshipdata_obj['id'] = onshipdata_obj.new_picking
+ onshipdata_obj[ids] = onshipdata_obj.new_picking
- type = onshipdata_obj['type']
- context['date_inv'] = onshipdata_obj['invoice_date']
- res = picking_obj.action_invoice_create(cr, uid,context['active_ids'],
- journal_id = onshipdata_obj['journal_id'],
- group=onshipdata_obj['group'],
- type=type,
- context=context)
- invoice_ids = res.values()
- if not invoice_ids:
- raise osv.except_osv(_('Error'), _('Invoice is not created'))
+ context['date_inv'] = onshipdata_obj['invoice_date']
+ invoice_ids = []
+ for picking in picking_obj.browse(cr, uid, context.get('active_ids', []), context=context):
+ if picking.invoice_state == '2binvoiced':
+ res = picking_obj.action_invoice_create(cr, uid, [picking.id],
+ journal_id = onshipdata_obj['journal_id'],
+ group=onshipdata_obj['group'],
+ type=self._get_type(picking),
+ context=context)
+ invoice_ids.extend(res.values())
+
+ if not invoice_ids:
+ raise osv.except_osv(_('Error'), _('No invoice were created'))
return {
'domain': "[('id','in', ["+','.join(map(str,invoice_ids))+"])]",
@@ -120,7 +97,6 @@ class stock_invoice_onshipping(osv.osv_memory):
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'account.invoice',
- 'views': False,
'context': context,
'type': 'ir.actions.act_window',
}
diff --git a/addons/stock/wizard/stock_invoice_onshipping_view.xml b/addons/stock/wizard/stock_invoice_onshipping_view.xml
index 2a660905c8c..6a4cfec5fca 100644
--- a/addons/stock/wizard/stock_invoice_onshipping_view.xml
+++ b/addons/stock/wizard/stock_invoice_onshipping_view.xml
@@ -6,18 +6,16 @@
stock.invoice.onshipping
form
-