diff --git a/src/invoice_generator/html_generator.py b/src/invoice_generator/html_generator.py index b9f37c5..aaaeb42 100644 --- a/src/invoice_generator/html_generator.py +++ b/src/invoice_generator/html_generator.py @@ -32,8 +32,7 @@ class HtmlTemplate: @staticmethod def calculate_total(invoice_data): - return sum( - (pos['Quantity'] * (pos['PricePerUnit'] or invoice_data.PricePerUnit)) for pos in invoice_data.Positions) + return sum((pos['Quantity'] * pos['PricePerUnit']) for pos in invoice_data.Positions) @staticmethod def named_replace(value, **replacements): diff --git a/src/main.py b/src/main.py index b43adf8..3b985a1 100644 --- a/src/main.py +++ b/src/main.py @@ -86,13 +86,16 @@ def main(): print('Envelope data:') envelope_data = DataObject(**envelope) - print(envelope_data.__dict__) + print('<--->') + print(yaml.dump(envelope_data)) + print('--->') print('Invoice data:') invoice_data = DataObject(**invoice) merge_envelope_data_into_invoice_data(invoice_data, envelope_data.Invoice) - selected_customer = next((x for x in envelope_data.Customers if x['CustomerId'] == invoice_data.CustomerId), None) + selected_customer = next((x for x in envelope_data.Customers if x['CustomerId'] == invoice_data.CustomerId), + None) merge_envelope_data_into_invoice_data(invoice_data, selected_customer) if not hasattr(invoice_data, 'InvoiceDate'): @@ -103,8 +106,17 @@ def main(): if not hasattr(invoice_data, 'Id'): invoice_data.Id = None + if not hasattr(invoice_data, 'Positions'): + invoice_data.Positions = [] + + for position in invoice_data.Positions: + if 'PricePerUnit' not in position or position['PricePerUnit'] is None: + position['PricePerUnit'] = invoice_data.PricePerUnit + invoice_data.Id = invoice_data.Id or invoice_file.stem - print(invoice_data.__dict__) + print('<--->') + print(yaml.dump(invoice_data)) + print('--->') except FileNotFoundError as e: print(f'Error: {e}') @@ -119,8 +131,6 @@ def main(): generator = html_generator.HtmlTemplate(args.template) template = generator.prepare_template(invoice_data, envelope_data) - print(template) - try: print('Generating invoice...') invoice_pdf = Path(invoice_data.Id).with_suffix('.pdf') diff --git a/test_data/RG004711.yaml b/test_data/RG004711.yaml index ef54ad0..8e4b1f4 100644 --- a/test_data/RG004711.yaml +++ b/test_data/RG004711.yaml @@ -15,7 +15,6 @@ Positions: - Title: "Aschkriechen" SubTitle: "Leistungszeitraum: 10/2022" - PricePerUnit: 77.88 Quantity: 3 diff --git a/test_data/templates/invoice.html b/test_data/templates/invoice.html index 25053cf..284bb41 100644 --- a/test_data/templates/invoice.html +++ b/test_data/templates/invoice.html @@ -112,6 +112,10 @@ border-top: .1pt solid black; } + .center { + text-align: center; + } + .head_data { width: 100%; border-collapse: collapse; @@ -136,7 +140,7 @@
{{ envelope.AddressContent.AddressBoxSender }}
+{{ envelope.AddressContent.AddressBoxSender }}
{{ invoice.AddressField | markdown_to_html }} @@ -188,20 +192,17 @@ {% endfor %}