+ # XXX: copied from openerp/addons/point_of_sale/point_of_sale.py
+ def action_invoice(self, cr, uid, ids, context=None):
+ print ("DEV: [pos_membership] [pos_order] [action_invoice]");
+ wf_service = netsvc.LocalService("workflow")
+ inv_ref = self.pool.get('account.invoice')
+ inv_line_ref = self.pool.get('account.invoice.line')
+ product_obj = self.pool.get('product.product')
+ inv_ids = []
+
+ for order in self.pool.get('pos.order').browse(cr, uid, ids, context=context):
+ if order.invoice_id:
+ inv_ids.append(order.invoice_id.id)
+ continue
+
+ if not order.partner_id:
+ raise osv.except_osv(_('Error!'), _('Please provide a partner for the sale.'))
+
+ acc = order.partner_id.property_account_receivable.id
+ # XXX: copied from openerp/addons/point_of_sale/point_of_sale.py to fix account.invoice.line creation
+ inv = {
+ 'name': order.name,
+ 'origin': order.name,
+ 'account_id': acc,
+ 'journal_id': order.sale_journal.id or None,
+ 'type': 'out_invoice',
+ 'reference': order.name,
+ 'partner_id': order.partner_id.id,
+ 'comment': order.note or '',
+ 'currency_id': order.pricelist_id.currency_id.id, # considering partner's sale pricelist's currency
+ 'invoice_line': []
+ }
+ inv.update(inv_ref.onchange_partner_id(cr, uid, [], 'out_invoice', order.partner_id.id)['value'])
+ if not inv.get('account_id', None):
+ inv['account_id'] = acc
+ for line in order.lines:
+ inv_line = {
+ #'invoice_id': inv_id,
+ 'product_id': line.product_id.id,
+ 'quantity': line.qty,
+ }
+ inv_name = product_obj.name_get(cr, uid, [line.product_id.id], context=context)[0][1]
+ inv_line.update(inv_line_ref.product_id_change(cr, uid, [],
+ line.product_id.id,
+ line.product_id.uom_id.id,
+ line.qty, partner_id = order.partner_id.id,
+ fposition_id=order.partner_id.property_account_position.id)['value'])
+ if line.product_id.description_sale:
+ inv_line['note'] = line.product_id.description_sale
+ inv_line['price_unit'] = line.price_unit
+ inv_line['discount'] = line.discount
+ inv_line['name'] = inv_name
+ inv_line['invoice_line_tax_id'] = ('invoice_line_tax_id' in inv_line)\
+ and [(6, 0, inv_line['invoice_line_tax_id'])] or []
+ #inv_line_ref.create(cr, uid, inv_line, context=context)
+ inv['invoice_line'].append((0, 0, inv_line))
+ inv_id = inv_ref.create(cr, uid, inv, context=context)