From 024e01883988419d7842e1dbd5cf4ec2baaab19d Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Tue, 17 Jul 2018 19:32:00 +0300 Subject: Fix: how the various numbers are caluclated --- lasku.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/lasku.py b/lasku.py index 8f9e185..dc56a25 100755 --- a/lasku.py +++ b/lasku.py @@ -6,6 +6,9 @@ import sys import yaml +def debug(*args): + sys.stderr.write('{}\n'.format(' '.join(str(x) for x in args))) + def euros(cents): return '%.02f' % (cents / 100.0) @@ -13,18 +16,35 @@ def euros(cents): class Item: def __init__(self, itemdict): - self.dict = itemdict + self.dict = dict(itemdict) count = itemdict['count'] - unit_cents = int(itemdict['unit'] * 100) + if count == "": + return + + unit_cents = int(itemdict['unit'] * 100.0) vatpc = float(itemdict['vatpc']) / 100.0 self.total_cents = count * unit_cents - self.vat_cents = int(unit_cents * vatpc) + + self.vat_cents = 0 + if vatpc > 0: + total_cents_with_vat = int(unit_cents / (1.0 - vatpc)) + self.vat_cents = total_cents_with_vat - unit_cents + debug('dict', self.dict) + debug('total_cents', self.total_cents) + debug('vatpc', vatpc) + debug('total_cents_with_vat', total_cents_with_vat) + debug('vat_cents', self.vat_cents) + debug('calc', int(vatpc * total_cents_with_vat)) + assert int(total_cents_with_vat * vatpc) == self.vat_cents + assert total_cents_with_vat == unit_cents + self.vat_cents self.dict.update({ + 'unit_euros': euros(unit_cents), 'total_cents': self.total_cents, 'total': euros(self.total_cents), + 'unitwithvat': euros(self.total_cents + self.vat_cents), 'vat_cents': self.vat_cents, 'vat': euros(self.vat_cents), 'vatsum': euros(self.vat_cents * count), @@ -36,8 +56,8 @@ item_template = ( r'\raggedbottom #number# & ' r'\parbox[t]{5.5cm}{#desc#\\#date#} & ' r'\raggedbottom #count# & ' - r'\raggedbottom #unit# & ' - r'\raggedbottom #vat# & ' + r'\raggedbottom #unit_euros# & ' + r'\raggedbottom #unitwithvat# & ' r'\raggedbottom #vatpc#\% & ' r'\raggedbottom #total# & ' r'\raggedbottom #vatsum# & ' -- cgit v1.2.1