SALE: Fix cancel invoice and recreate invoice, now cancel also the order lines

bzr revid: ced-e09fb4592600b11962596b17ad97ecebc0f1a514
This commit is contained in:
ced 2007-02-15 12:41:43 +00:00
parent 84a75ad1e0
commit a2c7489ebc
2 changed files with 16 additions and 2 deletions

View File

@ -264,6 +264,20 @@ class sale_order(osv.osv):
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%d,%d)', (o.id, res))
return res
def action_invoice_cancel(self, cr, uid, ids, context={}):
for sale in self.browse(cr, uid, ids):
for line in sale.order_line:
invoiced=False
for iline in line.invoice_lines:
if iline.invoice_id and iline.invoice_id.state == 'cancel':
continue
else:
invoiced=True
self.pool.get('sale.order.line').write(cr, uid, [line.id], {'invoiced': invoiced})
self.write(cr, uid, ids, {'state':'invoice_except', 'invoice_id':False})
return True
def action_cancel(self, cr, uid, ids, context={}):
ok = True
for sale in self.browse(cr, uid, ids):
@ -508,7 +522,7 @@ class sale_order_line(osv.osv):
'delay': fields.float('Delivery Delay', required=True),
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok','=',True)], change_default=True, relate=True),
'invoice_lines': fields.many2many('account.invoice.line', 'sale_order_line_invoice_rel', 'order_line_id','invoice_id', 'Invoice Lines', readonly=True),
'invoiced': fields.boolean('Paid', readonly=True, select=True),
'invoiced': fields.boolean('Invoiced', readonly=True, select=True),
'procurement_id': fields.many2one('mrp.procurement', 'Procurement'),
'price_unit': fields.float('Unit Price', required=True, digits=(16, int(config['price_accuracy']))),
'price_net': fields.function(_amount_line_net, method=True, string='Net Price', digits=(16, int(config['price_accuracy']))),

View File

@ -72,7 +72,7 @@
<field name="wkf_id" ref="wkf_sale"/>
<field name="name">invoice_except</field>
<field name="kind">function</field>
<field name="action">write({'state':'invoice_except', 'invoice_id':False})</field>
<field name="action">action_invoice_cancel()</field>
</record>
<record model="workflow.activity" id="act_invoice_end">
<field name="wkf_id" ref="wkf_sale"/>