total_net_amount = sum(l['net_amount'] for l in data['lines']) total_vat = sum(l['vat'] for l in data['lines']) composite = Transaction(party=data['party'], title=data['title'], date=data['date'], category=data['lines'][0]['category'], is_meal=False, net_amount=total_net_amount.eurocents, vat=total_vat.eurocents, mean=data['mean'], invoice=data['invoice'], composite=True, part_of=None) session = DBSession() session.add(composite) session.flush() # set transaction.id for line in data['lines']: t = Transaction(party=data['party'], title=line['title'], date=data['date'], category=line['category'], is_meal=line['is_meal'], net_amount=line['net_amount'].eurocents, vat=line['vat'].eurocents, mean=data['mean'], invoice=data['invoice'], composite=False, part_of=composite.id) session.add(t) request.session.flash(_('The transaction has been added.'), 'success') return HTTPSeeOther(request.route_url('home'))