commit 480743966548d1fef4c233cefe97b498def90685
parent 2765dcfc4bed43160b894513c53fc1f452f11126
Author: rob <rob@tarina.org>
Date: Thu, 16 Mar 2023 06:51:51 +0200
mlinvoice integrerat
Diffstat:
2 files changed, 51 insertions(+), 21 deletions(-)
diff --git a/public_html/html/fakturor.html b/public_html/html/fakturor.html
@@ -4,7 +4,6 @@ $def with (alla_fakturor,getkund,getmaksuja,round,getprodukt)
<h1>Bygdis.fi</h1>
<a href="/admin"><<-----tibaks</a>
<h2>Fakturor</h2>
-<a href="/fakturor?add=faktura">Lägg till</a>
<br>
<br>
<br>
@@ -13,7 +12,8 @@ $for i in alla_fakturor:
<br>
$if i.company_id:
$getkund(i.company_id)<br>
- nummer: $i.invoice_no<br>
+ nr: $i.invoice_no<br>
+ ref: $i.ref_number<br>
datum: $i.invoice_date<br>
sista betalningsdag: $i.due_date<br>
$ tot = 0
diff --git a/server.py b/server.py
@@ -264,10 +264,13 @@ def getDorrkoder():
dorrkoder=db.query("SELECT * FROM dorrkoder ORDER BY datum DESC")
return dorrkoder
-def sendmail(email, subject, msg):
+def sendmail(email, subject, msg, bilaga):
#Send mail
echomsg = subprocess.Popen(('echo', msg+'\n'+postadmin_signature), stdout=subprocess.PIPE)
- sendmsg = subprocess.check_output(('mail', '-r', postadmin, '-s', subject, email), stdin=echomsg.stdout)
+ if bilaga != '':
+ sendmsg = subprocess.check_output(('mail.mailutils', '-A', bilaga, '-a', 'From:'+postadmin, '-r', postadmin, '-s', subject, email),stdin=echomsg.stdout)
+ else:
+ sendmsg = subprocess.check_output(('mail', '-r', postadmin, '-s', subject, email), stdin=echomsg.stdout)
echomsg.wait()
#subprocess.call(['echo', msg, '|', 'mail', '-r', 'rob@tarina.org','-s', subject, email])
@@ -334,10 +337,10 @@ class admin():
#Send mail to admin
bokning = db.select('bokningar', where='id="'+i.approve+'"')[0]
msg = "Bokning godkänd av " + bokning.namn + ' epost: ' + bokning.epost
- sendmail(postadmin, 'Bokning godkänd!', msg)
+ sendmail(postadmin, 'Bokning godkänd!', msg, '')
#Send mail to user
msg = "Hej " + bokning.namn + " tack din bokning godkändes, du får fakturan inom kort och en dörrkod när fakturan är betald. Tack!"
- sendmail(bokning.epost, 'Bokning av Bygdegården lyckades och är godkänd', msg)
+ sendmail(bokning.epost, 'Bokning av Bygdegården lyckades och är godkänd', msg, '')
#update booking
db.update('bokningar', where='id="'+i.approve+'"', approved=datetime.datetime.now())
#add to kalender events as privat bokning
@@ -348,10 +351,10 @@ class admin():
#Send mail to admin
bokning = db.select('bokningar', where='id="'+i.sendrules+'"')[0]
msg = "Skickar regler och villkor till " + bokning.namn + ' epost: ' + bokning.epost
- sendmail(postadmin, 'Skickar villkor och regler', msg)
+ sendmail(postadmin, 'Skickar villkor och regler', msg,'')
#Send mail to user
msg = "Hej " + bokning.namn + "! Gå in här https://bygdis.fi/boka?id="+bokning.bokningshash+" och godkänn regler och villkor för din bokning, du får fakturan inom kort och en dörrkod när fakturan är betald. Tack!"
- sendmail(bokning.epost, 'Regler och villkor för Bygdegården', msg)
+ sendmail(bokning.epost, 'Regler och villkor för Bygdegården', msg,'')
#update booking
db.update('bokningar', where='id="'+i.sendrules+'"', approved="")
raise web.seeother('/admin')
@@ -437,11 +440,11 @@ class boka():
if i.villkor=='Ja':
#Send mail to admin
msg = "Ny bokning! " + i.namn + ' epost: ' + i.epost
- sendmail(postadmin, 'Ny bokning!', msg)
+ sendmail(postadmin, 'Ny bokning!', msg,'')
#Send mail to user
rules_and_regulations = md_to_text('protokoll/dokument/hyreskontrakt_regler_och_villkor.md')
msg = "Hej " + i.namn + "! Tack för att du valde Bygdegården. Vi kontaktar dej som snarast om din boknings förfrågan och du får faktura per epost och en dörrkod när fakturan är betald. Tack! Här under är regler och villkor vilka du har läst och godkänner då du hyr hos oss. \n\n" + rules_and_regulations
- sendmail(i.epost, 'Regler och villkor för Bygdegården', msg)
+ sendmail(i.epost, 'Regler och villkor för Bygdegården', msg,'')
raise web.seeother('/tack')
class tack():
@@ -452,9 +455,9 @@ class fakturor():
def GET(self):
if session.login == 5:
viewfile = ''
- i = web.input(radera=None,uppdatera=None,fakturera=None,add=None,faktura=None,yes=None)
+ i = web.input(radera=None,uppdatera=None,fakturera=None,add=None,faktura=None,yes=None,epost=None, kund=None, produkt=None)
#
- # MLINVOICE Hack COpy Faktura och Lägg till kund och vara i fakturan
+ # MLINVOICE COpy Faktura och Lägg till kund och vara i fakturan
#
#curl -b -X https://bygdis.fi/static/mlinvoice/login.php -i -b ~/cookies.txt -c ~/cookies.txt -d 'backlink=0&csrf=pcCFor0ic9KfoQ4jWQ3s&login=???&passwd=????&logon=Kirjaudu'
#
@@ -469,13 +472,13 @@ class fakturor():
subprocess.check_output(login_mlinvoice)
#yes
#
- if i.add == 'faktura':
+ if i.add == 'faktura' and i.epost != '' and i.kund != '' and i.produkt != None:
url='https://bygdis.fi/static/mlinvoice/copy_invoice.php'
copy_mlinvoice = ['curl','-b','X', url , '-i', '-b', basedir+'/sessions/cookies.txt', '-c',basedir+'/sessions/cookies.txt', '-d', 'id=40']
viewfile = subprocess.check_output(copy_mlinvoice)
print(viewfile)
#
- # HACK TO GET LATEST INVOICE NR
+ # GET LATEST INVOICE NR and ref
#
senaste = db2.query("SELECT * FROM mlinvoice_invoice ORDER BY id DESC LIMIT 1;")[0]
print(senaste)
@@ -486,14 +489,41 @@ class fakturor():
invoice = json.loads(next_invoice.decode())
#print(invoice)
#print(invoice['invoice_no'])
- db2.update('mlinvoice_invoice',where='id="'+str(senaste.id)+'"', invoice_no=invoice['invoice_no'], ref_number=invoice['ref_no'])
+ #
+ #KOLLA OM KUNDUPPGIFTER FINNS (lägg till annors)
+ try:
+ payer = db2.select('mlinvoice_company', where='email="'+str(i.epost)+'"')[0]
+ except:
+ db.insert('mlinvoice_company', email=i.epost, company_name=i.kund)
+ #LÄGG TILL VAROR
+ #
+ pris=getprodukt(i.produkt)
+ pris=pris.unit_price
+ db2.insert('mlinvoice_invoice_row', invoice_id=senaste.id, product_id=i.produkt, pcs=1.00, price=float(pris))
+ #
+ print(payer.id)
+ print(payer.company_name)
+ db2.update('mlinvoice_invoice',where='id="'+str(senaste.id)+'"', invoice_no=invoice['invoice_no'], ref_number=invoice['ref_no'], company_id=payer.id, state_id=2)
+ #
+ #Skicka epost
+ #
+ url='https://bygdis.fi/static/mlinvoice/invoice.php'
+ open_mlinvoice = ['curl','-b','X', url , '-i', '-b', basedir+'/sessions/cookies.txt', '-c',basedir+'/sessions/cookies.txt', '-d', 'id='+str(senaste.id)+'&template=15']
+ pdf_file = subprocess.check_output(open_mlinvoice)
+ pdfhash = hashlib.md5(str(random.getrandbits(256)).encode('utf-8')).hexdigest()
+ bilaga=basedir+'/public_html/static/pdf/'+pdfhash+'.pdf'
+ with open(bilaga,'wb') as binary_file:
+ binary_file.write(pdf_file)
+ msg = 'faktura'
+ sendmail(i.epost, 'Faktura', msg, bilaga)
raise web.seeother('/fakturor?yes=lyckades')
if i.faktura != None:
url='https://bygdis.fi/static/mlinvoice/invoice.php'
open_mlinvoice = ['curl','-b','X', url , '-i', '-b', basedir+'/sessions/cookies.txt', '-c',basedir+'/sessions/cookies.txt', '-d', 'id='+i.faktura+'&template=15']
pdf_file = subprocess.check_output(open_mlinvoice)
pdfhash = hashlib.md5(str(random.getrandbits(256)).encode('utf-8')).hexdigest()
- with open(basedir+'/public_html/static/pdf/'+pdfhash+'.pdf','wb') as binary_file:
+ bilaga=basedir+'/public_html/static/pdf/'+pdfhash+'.pdf'
+ with open(bilaga,'wb') as binary_file:
binary_file.write(pdf_file)
raise web.seeother('/static/pdf/'+pdfhash+'.pdf')
alla_fakturor = db2.query("SELECT * FROM mlinvoice_invoice ORDER BY id DESC;")
@@ -713,7 +743,7 @@ class forgotpass():
db.update('bildadmin', where='name="'+p.name+'"', password=password_hashed)
print("lösenordet uppdaterat!")
msg = "Ditt nya lösenord till bygdis.fi e: " + unencrypted_password + ' , om du vill ändra lösenordet ti någå ana som du minns så tryck på namne ditt högst op på ruutån efter du loggat in.'
- sendmail(p.mail, 'Nytt lösenord till byyns fotoalbum', msg)
+ sendmail(p.mail, 'Nytt lösenord till byyns fotoalbum', msg,'')
raise web.seeother('/forgotpass?error=done')
raise web.seeother('/forgotpass?error=fejl')
@@ -778,10 +808,10 @@ class register():
adduser(i.user, i.password, i.mail.lower())
#Send mail to Madbaker
msg = "Wowowowoweeewaaa! Ny användare på bygdis.fi! " + i.user + ' ' + i.mail
- sendmail(postadmin, 'Wowowoweewaaa!', msg)
+ sendmail(postadmin, 'Wowowoweewaaa!', msg,'')
#Send mail to new user
msg = "Gratulis " + i.user + ", du har nu ett konto opa bygdis.fi! Logga in med användarnamn å lösenord på sidan https://bygdis.fi/login"
- sendmail(i.mail, 'Byyns eji fotoalbum', msg)
+ sendmail(i.mail, 'Byyns eji fotoalbum', msg,'')
session.login = 3
session.user = i.user
return web.seeother('/ny')
@@ -828,10 +858,10 @@ class nydorrkod():
addDorrkod(dorrkod, i.namn, i.mail.lower())
#Send mail to Madbaker
msg = "Wowowowoweeewaaa! Ny dörrkod! " + i.namn + ' ' + i.mail + ' ' + str(dorrkod)
- sendmail(postadmin, 'Wowowoweewaaa!', msg)
+ sendmail(postadmin, 'Wowowoweewaaa!', msg,'')
#Send mail to new user
msg = "Gratulis " + i.namn + ", du har en dörrkod till Bygdegården: " + str(dorrkod)
- sendmail(i.mail, 'Dörrkod till Bygdegården', msg)
+ sendmail(i.mail, 'Dörrkod till Bygdegården', msg,'')
return web.seeother('/dorrkoder')
class dorrkoder():