Bernd Wurst
incomplete: implement rounding
Bernd Wurst commited 8de24d1 at 2025-03-12 11:43:24
generate_invoice.py
#!/usr/bin/python
import datetime
import json
import os
import subprocess
import sys
import tempfile
import qrcode
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from Invoice.InvoiceObjects import Invoice, RECHNUNG, InvoiceText, InvoiceTable, KORREKTUR, PAYMENT_LASTSCHRIFT, \
InvoiceImage
from Invoice.InvoiceToPDF import InvoiceToPDF, find_font_file
from Invoice.InvoiceToText import InvoiceToText
from Invoice.InvoiceToZUGFeRD import InvoiceToXML, attach_xml
if __name__ == '__main__':
import rechnungsdaten
data = rechnungsdaten.data['data']
rechnung = rechnungsdaten.data['rechnung']
mandat = rechnungsdaten.data['mandat']
adresse = rechnungsdaten.data['adresse']
daten = rechnungsdaten.data['daten']
rechnungsnummer = rechnung['id']
filename = 'pdf/rechnung_%05i.pdf' % rechnungsnummer
referenzen = json.loads(rechnung['referenzen'])
from io import StringIO
file = StringIO()
invoice = Invoice()
if 'leitwegid' in referenzen:
# Behörden-Rechnung, als XRECHNUNG ausgeben!
invoice.leitweg_id = referenzen['leitwegid']
if 'kundenreferenz' in referenzen:
invoice.buyer_reference = referenzen['kundenreferenz']
if 'bestellnummer' in referenzen:
invoice.order_number = referenzen['bestellnummer']
if 'vertragsnummer' in referenzen:
invoice.contract_number = referenzen['vertragsnummer']
invoice.seller['name'] = 'Bernd Wurst / Johannes Böck'
invoice.seller['contactPerson'] = 'Bernd Wurst / Johannes Böck'
invoice.seller['trade_name'] = 'schokokeks.org GbR'
invoice.seller['email'] = 'xxx@example.com'
invoice.seller['website'] = 'www.schokokeks.org'
invoice.seller['phone'] = '+49 123456789'
invoice.seller['address']['country_id'] = 'DE'
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX