mirror of
https://github.com/Findus23/invoices.git
synced 2024-09-19 15:13:47 +02:00
improve generation and support signing
This commit is contained in:
parent
087f8b1aab
commit
11acf299ec
2 changed files with 46 additions and 6 deletions
46
main.py
46
main.py
|
@ -86,7 +86,18 @@ def compile_invoice(id):
|
||||||
string = string.replace(".", ",")
|
string = string.replace(".", ",")
|
||||||
return string
|
return string
|
||||||
|
|
||||||
|
def format_date(date):
|
||||||
|
"""
|
||||||
|
|
||||||
|
:type date: datetime.datetime
|
||||||
|
"""
|
||||||
|
if invoice["locale"] == "de":
|
||||||
|
return date.strftime("%d. %m. %Y")
|
||||||
|
else:
|
||||||
|
return date.strftime("%Y-%m-%d")
|
||||||
|
|
||||||
env.filters['formatdigit'] = format_digit
|
env.filters['formatdigit'] = format_digit
|
||||||
|
env.filters['formatdate'] = format_date
|
||||||
env.filters['t'] = translate
|
env.filters['t'] = translate
|
||||||
with open(directory + "/{name}.tex".format(name=translate("invoice")), "w") as fh:
|
with open(directory + "/{name}.tex".format(name=translate("invoice")), "w") as fh:
|
||||||
template = env.get_template('template.tex')
|
template = env.get_template('template.tex')
|
||||||
|
@ -98,16 +109,42 @@ def compile_invoice(id):
|
||||||
remove_tmp_files(translate("invoice"))
|
remove_tmp_files(translate("invoice"))
|
||||||
|
|
||||||
|
|
||||||
|
def sign_invoice(id):
|
||||||
|
directory = invoice_dir + "/" + str(id)
|
||||||
|
if os.path.exists(directory + "/locked"):
|
||||||
|
print("The invoice has already been locked")
|
||||||
|
exit()
|
||||||
|
if os.path.exists(directory + "/Rechnung.pdf"):
|
||||||
|
name = "Rechnung"
|
||||||
|
elif os.path.exists(directory + "/Invoice.pdf"):
|
||||||
|
name = "Invoice"
|
||||||
|
else:
|
||||||
|
print("Invoice not found")
|
||||||
|
name = ""
|
||||||
|
exit()
|
||||||
|
subprocess.check_call([
|
||||||
|
"/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java", # force java8
|
||||||
|
"-jar", "/usr/local/PDF-Over/lib/pdf-over-gui-4.1.16.jar",
|
||||||
|
"-i", "{dir}/{name}.pdf".format(dir=directory, name=name),
|
||||||
|
"-o", "{dir}/{name}_{signed}.pdf".format(
|
||||||
|
dir=directory, name=name, signed=("signiert" if name == "Rechnung" else "signed")
|
||||||
|
),
|
||||||
|
"-b", "LOCAL", # use local Bürgerkarte
|
||||||
|
"-a", # automatically position signature
|
||||||
|
"-s" # save without asking
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if len(sys.argv) == 1 or len(sys.argv) > 3 or sys.argv[1] not in ["create", "compile"]:
|
if len(sys.argv) == 1 or len(sys.argv) > 3 or sys.argv[1] not in ["create", "compile", "sign"]:
|
||||||
print("please use 'create' or 'compile'")
|
print("please use 'create', 'compile' or 'sign'")
|
||||||
exit()
|
exit()
|
||||||
config = load_yaml("config.yaml")
|
config = load_yaml("config.yaml")
|
||||||
invoice_dir = config["invoice_dir"]
|
invoice_dir = config["invoice_dir"]
|
||||||
|
|
||||||
if sys.argv[1] == "create":
|
if sys.argv[1] == "create":
|
||||||
create_invoice()
|
create_invoice()
|
||||||
if sys.argv[1] == "compile":
|
if sys.argv[1] == "compile" or sys.argv[1] == "sign":
|
||||||
if len(sys.argv) == 3:
|
if len(sys.argv) == 3:
|
||||||
try:
|
try:
|
||||||
invoice_id = int(sys.argv[2])
|
invoice_id = int(sys.argv[2])
|
||||||
|
@ -117,4 +154,7 @@ if __name__ == "__main__":
|
||||||
exit()
|
exit()
|
||||||
else:
|
else:
|
||||||
invoice_id = config["last_id"]
|
invoice_id = config["last_id"]
|
||||||
|
if sys.argv[1] == "compile":
|
||||||
compile_invoice(invoice_id)
|
compile_invoice(invoice_id)
|
||||||
|
else:
|
||||||
|
sign_invoice(invoice_id)
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
\usekomavar{fromphone}\separ\usekomavar{fromemail}\separ\usekomavar{fromurl}\\\usekomavar{frombank}}
|
\usekomavar{fromphone}\separ\usekomavar{fromemail}\separ\usekomavar{fromurl}\\\usekomavar{frombank}}
|
||||||
|
|
||||||
\setkomavar{invoice}{\VAR{invoice.id}}
|
\setkomavar{invoice}{\VAR{invoice.id}}
|
||||||
\setkomavar{date}{\VAR{invoice.date}}
|
\setkomavar{date}{\VAR{invoice.date|formatdate}}
|
||||||
\newkomavar*[\VAR{"range"|t}]{range}
|
\newkomavar*[\VAR{"range"|t}]{range}
|
||||||
\setkomavar{range}{\VAR{invoice.range}}
|
\setkomavar{range}{\VAR{invoice.range}}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@
|
||||||
\BLOCK{if invoice.mode=="single"}
|
\BLOCK{if invoice.mode=="single"}
|
||||||
\begin{tabular}{ll}
|
\begin{tabular}{ll}
|
||||||
\VAR{"descr"|t}:& \VAR{invoice.description} \\
|
\VAR{"descr"|t}:& \VAR{invoice.description} \\
|
||||||
\VAR{"period"|t}: & \VAR{invoice.timerange} \\
|
\VAR{"period"|t}: & \VAR{invoice.range} \\
|
||||||
\VAR{"total"|t}: & \EUR{\VAR{invoice.price | formatdigit }} \\
|
\VAR{"total"|t}: & \EUR{\VAR{invoice.price | formatdigit }} \\
|
||||||
|
|
||||||
\vspace{0.5cm}
|
\vspace{0.5cm}
|
||||||
|
|
Loading…
Reference in a new issue