'currency_id': order.pricelist_id.currency_id.id,
'comment': order.note,
'payment_term': pay_term,
- 'fiscal_position': order.partner_id.property_account_position.id
+ 'fiscal_position': order.partner_id.property_account_position.id,
+ 'date_invoice' : context.get('date_invoice',False)
}
inv_obj = self.pool.get('account.invoice')
inv.update(self._inv_get(cr, uid, order))
inv_obj.button_compute(cr, uid, [inv_id])
return inv_id
- def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception']):
+ def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False):
res = False
invoices = {}
invoice_ids = []
- for o in self.browse(cr, uid, ids):
+ context = {}
+ # If date was specified, use it as date invoiced, usefull when invoices are generated this month and put the
+ # last day of the last month as invoice date
+ if date_inv:
+ context['date_inv'] = date_inv
+ for o in self.browse(cr,uid,ids):
lines = []
for line in o.order_line:
if (line.state in states) and not line.invoiced:
picking_obj = self.pool.get('stock.picking')
for val in invoices.values():
if grouped:
- res = self._make_invoice(cr, uid, val[0][0], reduce(lambda x, y: x + y, [l for o, l in val], []))
- for o, l in val:
- self.write(cr, uid, [o.id], {'state': 'progress'})
- if o.order_policy == 'picking':
- picking_obj.write(cr, uid, map(lambda x: x.id, o.picking_ids), {'invoice_state': 'invoiced'})
+ res = self._make_invoice(cr, uid, val[0][0], reduce(lambda x,y: x + y, [l for o,l in val], []), context=context)
+ for o,l in val:
+ self.write(cr, uid, [o.id], {'state' : 'progress'})
+ if o.order_policy=='picking':
+ picking_obj.write(cr,uid,map(lambda x:x.id,o.picking_ids),{'invoice_state':'invoiced'})
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%s,%s)', (o.id, res))
else:
for order, il in val:
- res = self._make_invoice(cr, uid, order, il)
+ res = self._make_invoice(cr, uid, order, il, context=context)
invoice_ids.append(res)
self.write(cr, uid, [order.id], {'state': 'progress'})
if order.order_policy == 'picking':
partner = partner_obj.browse(cr, uid, partner_id)
result['tax_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, product_obj.taxes_id)
if not flag:
- result['name'] = product_obj.partner_ref
+ result['name'] = self.pool.get('product.product').name_get(cr, uid, [product_obj.id])[0][1]
domain = {}
if (not uom) and (not uos):
result['product_uom'] = product_obj.uom_id.id