From 8b3b800d84efd71b8c5a0a933aa033e60a42f464 Mon Sep 17 00:00:00 2001 From: Kilian Saffran Date: Mon, 11 Jan 2021 07:45:14 +0100 Subject: [PATCH] v20200110 --- desktopapp/css/fonts/appicons.svg | 27 +- desktopapp/css/fonts/appicons.ttf | Bin 31264 -> 31940 bytes desktopapp/css/fonts/appicons.woff | Bin 31340 -> 32016 bytes desktopapp/css/icons.css | 133 +- desktopapp/dialogs/AddFiles.html | 16 +- desktopapp/dialogs/Email.html | 32 +- desktopapp/dialogs/InvoiceBooking.html | 0 desktopapp/dialogs/SelectAddress.html | 8 +- desktopapp/dialogs/SelectProduct.html | 8 +- desktopapp/dialogs/confirm.html | 4 +- desktopapp/dialogs/dataload.html | 2 +- desktopapp/dialogs/message.html | 2 +- desktopapp/index.html | 3 + desktopapp/js/email.js | 185 ++- desktopapp/js/lang/de.js | 132 ++ desktopapp/modules/addresses/addresses.html | 56 +- desktopapp/modules/addresses/addresses.js | 30 +- desktopapp/modules/bookings/bookings.html | 6 +- desktopapp/modules/datasets/datasets.html | 9 +- desktopapp/modules/datasets/datasets.js | 16 +- desktopapp/modules/invoices/invoice.html | 127 +- desktopapp/modules/invoices/invoice.js | 47 +- desktopapp/modules/invoices/invoices.html | 6 +- desktopapp/modules/invoices/invoices.js | 20 +- .../modules/mailtemplates/mailtempates.html | 41 + .../modules/mailtemplates/mailtemplates.js | 46 + desktopapp/modules/modules.json | 25 +- desktopapp/modules/offers/offer.html | 8 +- desktopapp/modules/offers/offers.html | 8 +- desktopapp/modules/products/products.html | 50 +- desktopapp/modules/products/products.js | 16 +- desktopapp/modules/settings/settings.html | 117 +- desktopapp/modules/settings/settings.js | 20 +- desktopapp/modules/templates/templates.html | 38 +- .../modules/transactions/transactions.html | 8 +- desktopapp/package-lock.json | 1125 +---------------- desktopapp/package.json | 3 +- dev/mail.bat | 3 +- 38 files changed, 862 insertions(+), 1515 deletions(-) delete mode 100644 desktopapp/dialogs/InvoiceBooking.html diff --git a/desktopapp/css/fonts/appicons.svg b/desktopapp/css/fonts/appicons.svg index 8458cab..98b28c8 100644 --- a/desktopapp/css/fonts/appicons.svg +++ b/desktopapp/css/fonts/appicons.svg @@ -101,22 +101,22 @@ - - - - - - - - - - - + + + + + + + + + + + - + @@ -124,4 +124,7 @@ + + + \ No newline at end of file diff --git a/desktopapp/css/fonts/appicons.ttf b/desktopapp/css/fonts/appicons.ttf index 3a2859867740533ce01d7122949744ca221b96d1..6f5c46865be0cf328bb1ae72a3281034126e8636 100644 GIT binary patch delta 646 zcmX|8QAkr^6h7zw@9uRux0Em;q2`+6Cfl5w%Qh9Fa*+_ro!Qpdb%RYeZLkP> zDG2gfM4(U*#Xpq_e&9>Rwx35yK5c5YJV=Wx#Vo%5aZ!-X175$aPMjg;8Trt#BIouFzSRM+k#IaI=W`Ty6EN-2~+L)|ril0cgEOm?_SK5OYF@x%r-{8r>r z4rXu(U~--Cfl*l*S!m1-0bDkgPUW)s0)3RMeE-(dJ}ge*Ni1sp_-;UzV~c9=*bB{Z z=95L+OcVswl$g_2FU6}XCK6ob-`F-ZfESL#35d}&fBk-}-y=1N4oPfo@nA0oIzv6! z5!xx((29O^iYdA`@6; zZHIqO`A)Wo0=sUm6(coh?c-HkLB=pD)|$5z-lnJZG~S`7&+BeMKo`qYn;|7=NTH$1dK{jetTPgBw_5PKF?4~C(kkUK_c!jZccu0 zR$V=Bi~N9UItSSYySepWR3l>{ENg|a8)%xO@~pZw?pD3U)+(dda5Y|h84kGax?Z_0 zZI9c2dX9K>?|a`$`>ysU{!!~g&Q delta 367 zcmX@|lX1Zp#(D-u1_lOhh6V;^1_S?KeItG$wpl=tJwTk0oSRr69(L(B0|TQBkROts zSX=<41%P}I&5@o{nfC0U`9UDRf`OrUK}Kp~inK?gBLhRJ1W?{A11P|Lh{X!X4*>F2 zGIC2QZZQbv0{JCCJx_A-lPwcpUSa#jz)&6mRPZG?v7&%s79-HW3LhX}AulmEb+t@> z0+62r)G( z*GGWhbG?RC@i@6kK#dk`Q|>***@PS)B?MCFW1M}1@AYJSjJxMp8~;+1%v`&IZk3R$ zt(^MYkHyq*{4ycRCiZl4_Qwa`rBD)*cVm5sBdrMCDLI!%cN*t6IA6%_TbXPE`@)5z z*tEqtXYS6+@jPBU5yJZ54zsX45|@Y3UBJNyoW=U=rP1tI4!>h#YI^__wI5D_qRqgE zGwPFQNxjkgO3R-8Y}R@cIYEsM&1<#kSXI%03vaS-v`p%Vm-La7B#P^NwgX_>D>=jl zNpv=Opa=Y&fiScODhF1uK!d~S1*g9U{%g?+qQeUw=J*cX<(SFp`<3Z%m+s>DN!hhQn0$w5@9TZ>!|<{Ng6Ac^`{a<@97H^w58;E zs(v4eHSm7|c|51Syl4&mBvk?mLO$6|&Hti$dprP>T50?)7z%hir$&?(bwX)2@?MTQ zue=WWT{EsXEoS#K_b<;ekM8~0y4tp@ZONDR{cbt`kBCKfO-FlGRSLO@tN?9%V_#A1-x z9w46siUrbhD${^sM;I827l81ygXRY_QWH}c7)pVd!3>0@JsKS|fPz4=IY7P&2(uqz zvC7CTsQ`){0P24N!nYU%b93^Of$HqamjD%g0pXWd*uLc^Rsb!om;vM~fblHGgL#R$ zsX(zEK#h|?c(qJ^LP36U3D74#6aV-#mQ40x^kyvCJcIFS@aC^!Pk1K#W-OSzusme* z&Eyi6&7P$ZOq<_kgm5c^d=JF`)>&MQ=ePOFz|8^_U|_f-GA{{6PnM`KXRO>DP|?je z`EjKNBg15tDuc-mRmY7vv^=!m=osnN=~?Lu888^Q8B8-cV3=d1V6@KYmx-Fm0@EXA Wb>@f6?^*n_yZ{d9%FRyI=NJK&T5(GN diff --git a/desktopapp/css/icons.css b/desktopapp/css/icons.css index 03357f7..c6a7d2c 100644 --- a/desktopapp/css/icons.css +++ b/desktopapp/css/icons.css @@ -1,9 +1,9 @@ @font-face { font-family: 'appicons'; src: - url('fonts/appicons.ttf?o9n2mq') format('truetype'), - url('fonts/appicons.woff?o9n2mq') format('woff'), - url('fonts/appicons.svg?o9n2mq#appicons') format('svg'); + url('fonts/appicons.ttf?doc1wu') format('truetype'), + url('fonts/appicons.woff?doc1wu') format('woff'), + url('fonts/appicons.svg?doc1wu#appicons') format('svg'); font-weight: normal; font-style: normal; font-display: block; @@ -24,54 +24,6 @@ -moz-osx-font-smoothing: grayscale; } -.icon-menu:before { - content: "\e972"; -} -.icon-rendezvous:before { - content: "\e973"; -} -.icon-events:before { - content: "\e974"; -} -.icon-mailserver:before { - content: "\e971"; -} -.icon-private-cloud:before { - content: "\e96e"; -} -.icon-shield:before { - content: "\e96f"; -} -.icon-cloud-data:before { - content: "\e970"; -} -.icon-mobile:before { - content: "\e96c"; -} -.icon-website2:before { - content: "\e96d"; -} -.icon-stopwatches:before { - content: "\e969"; -} -.icon-paragraph:before { - content: "\e96a"; -} -.icon-support:before { - content: "\e96b"; -} -.icon-helpdesk:before { - content: "\e935"; -} -.icon-printer:before { - content: "\e936"; -} -.icon-user:before { - content: "\e937"; -} -.icon-open:before { - content: "\e938"; -} .icon-add:before { content: "\e930"; } @@ -123,6 +75,9 @@ .icon-close:before { content: "\e907"; } +.icon-cloud-data:before { + content: "\e970"; +} .icon-code:before { content: "\e943"; } @@ -183,6 +138,9 @@ .icon-email:before { content: "\e911"; } +.icon-events:before { + content: "\e974"; +} .icon-exit:before { content: "\e912"; } @@ -216,6 +174,9 @@ .icon-help-important:before { content: "\e950"; } +.icon-helpdesk:before { + content: "\e935"; +} .icon-home:before { content: "\e951"; } @@ -252,6 +213,18 @@ .icon-mailsend:before { content: "\e957"; } +.icon-mailserver:before { + content: "\e971"; +} +.icon-mailtemplate:before { + content: "\e975"; +} +.icon-menu:before { + content: "\e972"; +} +.icon-mobile:before { + content: "\e96c"; +} .icon-msstore:before { content: "\e958"; } @@ -261,9 +234,15 @@ .icon-ok:before { content: "\e959"; } +.icon-open:before { + content: "\e938"; +} .icon-out:before { content: "\e900"; } +.icon-paragraph:before { + content: "\e96a"; +} .icon-pc:before { content: "\e95a"; } @@ -276,6 +255,9 @@ .icon-pc-windows:before { content: "\e95d"; } +.icon-pc1:before { + content: "\e95e"; +} .icon-pdf:before { content: "\e91e"; } @@ -291,6 +273,12 @@ .icon-print:before { content: "\e922"; } +.icon-printer:before { + content: "\e936"; +} +.icon-private-cloud:before { + content: "\e96e"; +} .icon-product:before { content: "\e923"; } @@ -300,14 +288,20 @@ .icon-reload:before { content: "\e925"; } +.icon-rendezvous:before { + content: "\e973"; +} +.icon-reporttemplate:before { + content: "\e95f"; +} .icon-rndcheck-not:before { - content: "\e95e"; + content: "\e960"; } .icon-rndcheck-ok:before { - content: "\e95f"; + content: "\e961"; } .icon-sale:before { - content: "\e960"; + content: "\e962"; } .icon-save:before { content: "\e934"; @@ -316,16 +310,19 @@ content: "\e926"; } .icon-settings-bars:before { - content: "\e961"; + content: "\e963"; +} +.icon-shield:before { + content: "\e96f"; } .icon-shop:before { - content: "\e962"; + content: "\e964"; } .icon-shop3:before { - content: "\e963"; + content: "\e965"; } .icon-shoppingcard:before { - content: "\e964"; + content: "\e966"; } .icon-sortasc:before { content: "\e932"; @@ -336,11 +333,17 @@ .icon-star:before { content: "\e927"; } +.icon-stopwatches:before { + content: "\e969"; +} .icon-stripe:before { - content: "\e965"; + content: "\e967"; +} +.icon-support:before { + content: "\e96b"; } .icon-tag:before { - content: "\e966"; + content: "\e968"; } .icon-template:before { content: "\e928"; @@ -357,6 +360,9 @@ .icon-upload:before { content: "\e92a"; } +.icon-user:before { + content: "\e937"; +} .icon-userconfig:before { content: "\e92c"; } @@ -364,7 +370,7 @@ content: "\e92b"; } .icon-video:before { - content: "\e967"; + content: "\e96d"; } .icon-viewpdf:before { content: "\e92d"; @@ -372,6 +378,9 @@ .icon-website:before { content: "\e92e"; } +.icon-website2:before { + content: "\e976"; +} .icon-win10:before { - content: "\e968"; + content: "\e977"; } diff --git a/desktopapp/dialogs/AddFiles.html b/desktopapp/dialogs/AddFiles.html index de0baed..37bc60b 100644 --- a/desktopapp/dialogs/AddFiles.html +++ b/desktopapp/dialogs/AddFiles.html @@ -3,28 +3,28 @@
-

Datei(en) hinzufügen

+

{{addfiles}}

-
- - -
+
+ + +
- +
- - + +
\ No newline at end of file diff --git a/desktopapp/dialogs/Email.html b/desktopapp/dialogs/Email.html index d338d42..6913cd0 100644 --- a/desktopapp/dialogs/Email.html +++ b/desktopapp/dialogs/Email.html @@ -1,43 +1,53 @@ \ No newline at end of file diff --git a/desktopapp/dialogs/InvoiceBooking.html b/desktopapp/dialogs/InvoiceBooking.html deleted file mode 100644 index e69de29..0000000 diff --git a/desktopapp/dialogs/SelectAddress.html b/desktopapp/dialogs/SelectAddress.html index eb22793..8768674 100644 --- a/desktopapp/dialogs/SelectAddress.html +++ b/desktopapp/dialogs/SelectAddress.html @@ -2,16 +2,14 @@ \ No newline at end of file diff --git a/desktopapp/dialogs/SelectProduct.html b/desktopapp/dialogs/SelectProduct.html index b38ec1e..dae1391 100644 --- a/desktopapp/dialogs/SelectProduct.html +++ b/desktopapp/dialogs/SelectProduct.html @@ -2,16 +2,14 @@ \ No newline at end of file diff --git a/desktopapp/dialogs/confirm.html b/desktopapp/dialogs/confirm.html index 9e4abb2..3e308a4 100644 --- a/desktopapp/dialogs/confirm.html +++ b/desktopapp/dialogs/confirm.html @@ -8,8 +8,8 @@
- +
\ No newline at end of file diff --git a/desktopapp/dialogs/dataload.html b/desktopapp/dialogs/dataload.html index 6d0e7d4..00dac28 100644 --- a/desktopapp/dialogs/dataload.html +++ b/desktopapp/dialogs/dataload.html @@ -5,7 +5,7 @@
- Attentez s.v.p.! + {{pleasewait}}
diff --git a/desktopapp/dialogs/message.html b/desktopapp/dialogs/message.html index 7931c02..88b5c40 100644 --- a/desktopapp/dialogs/message.html +++ b/desktopapp/dialogs/message.html @@ -8,7 +8,7 @@
- +
\ No newline at end of file diff --git a/desktopapp/index.html b/desktopapp/index.html index f690748..1a15526 100644 --- a/desktopapp/index.html +++ b/desktopapp/index.html @@ -37,6 +37,9 @@ +
+ +
diff --git a/desktopapp/js/email.js b/desktopapp/js/email.js index 4560180..c7ecb52 100644 --- a/desktopapp/js/email.js +++ b/desktopapp/js/email.js @@ -1,4 +1,5 @@ - +var emlformat= require('eml-format'); +const nodemailer = require("nodemailer"); let email = { tmpfolder: usersystem.profilepath() + 'tmp/', @@ -15,65 +16,137 @@ let email = { }).then(data => resolve(data)).catch(err => reject(err)); }); }, - sendSMTP: function (email,attach = [],callback = null){ + sendSMTP: function (maildata,attach = [],callback = null){ email.callback = callback; - email.tmpbodyfile = report.tmpfolder + email.tmptemplate + ".mail.html"; - //repdata = db.query("select * from public.mailtemplates WHERE id='".$tmpl."'"); - result = fs.writeFileSync(email.tmpbodyfile, email.tmpbody); - var args= []; - args.push("-f",'"' + preferences.defaultdata.smtpfrom + '"'); - args.push('-s','"'+preferences.defaultdata.smtpserver + ':' + preferences.defaultdata.smtpport+ '"'); - args.push('-xu','"'+preferences.defaultdata.smtpuser+'"'); - args.push('-xp',"'" + preferences.defaultdata.smtppassword + "'"); - args.push('-q'); - args.push('-o','tls=auto'); - args.push('-t','"'+ email+ '"'); - args.push('-u','"'+ email.tmpsubject+ '"'); - args.push('-o','message-content-type=html'); - args.push('-o','message-charset=ISO-8859-1'); - args.push('-o','message-file='+ email.tmpbodyfile); - if ((attach) && (attach.length > 0)){ - for (var a in attach){ - args.push("-a",'"'+a + '"'); - } - - } - const mailout = spawn(usersystem.getApplicationPath()+ '/tools/sendEmail.exe', args); - mailout.stdout.on('data', (data) => { - console.log(`emailout stdout: ${data}`); + let transporter = nodemailer.createTransport({ + host: preferences.defaultdata.smtpserve, + port: parseInt(preferences.defaultdata.smtpport), + secure: ((parseInt(preferences.defaultdata.smtpport) == 465)?true:false), // true for 465, false for other ports + auth: { + user: preferences.defaultdata.smtpuser, // generated ethereal user + pass: preferences.defaultdata.smtppassword, // generated ethereal password + }, }); - mailout.stderr.on('data', (data) => { - console.error(`emailout stderr: ${data}`); - }); - mailout.on('close', (code) => { - console.log(`emailout: child process exited with code ${code}`); - if (code == 0){ - //console.log("Copy",report.tmpoutput,"to",report.output); - email.tmpbodyfile = null; - email.tmpbody= null; - email.tmpsubject= null; - email.tmptemplate= null; - if (fs.existsSync(email.tmpbodyfile)){ - fs.unlinkSync(email.tmpbodyfile); - } - - email.callback({"mail":" Mail wurde erfolgreich verschickt an " + email}); + let mattach = []; + for (var a in attach){ + mattach.push({file: attach[a]}); + } + let mailobj = { + from: preferences.defaultdata.smtpfrom, // sender address + to: maildata.to, // list of receivers + subject: maildata.subject, // Subject line + //text: "Hello world?", // plain text body + html: maildata.body, // html body + attachments: mattach + } + if (maildata.cc){ + mailobj["cc"] = maildata.cc; // (comma separated) + } + if (maildata.bcc){ + mailobj["bcc"] = maildata.bcc; // (comma separated) } + // send mail with defined transport object + let msg = await transporter.sendMail(); + + console.log("Message sent: %s", msg.messageId); + // Message sent: + + // Preview only available when sending through an Ethereal account + console.log("Preview URL: %s", nodemailer.getTestMessageUrl(msg)); + email.callback({"mail":lbl[preferences.global.language].mailsent + " " + email}); + // email.tmpbodyfile = report.tmpfolder + email.tmptemplate + ".mail.html"; + // //repdata = db.query("select * from public.mailtemplates WHERE id='".$tmpl."'"); + // result = fs.writeFileSync(email.tmpbodyfile, email.tmpbody); + // var args= []; + // args.push("-f",'"' + preferences.defaultdata.smtpfrom + '"'); + // args.push('-s','"'+preferences.defaultdata.smtpserver + ':' + preferences.defaultdata.smtpport+ '"'); + // args.push('-xu','"'+preferences.defaultdata.smtpuser+'"'); + // args.push('-xp',"'" + preferences.defaultdata.smtppassword + "'"); + // args.push('-q'); + // args.push('-o','tls=auto'); + // args.push('-t','"'+ email+ '"'); + // args.push('-u','"'+ email.tmpsubject+ '"'); + // args.push('-o','message-content-type=html'); + // args.push('-o','message-charset=ISO-8859-1'); + // args.push('-o','message-file='+ email.tmpbodyfile); + // if ((attach) && (attach.length > 0)){ + // for (var a in attach){ + // args.push("-a",'"'+a + '"'); + // } + + // } + // const mailout = spawn(usersystem.getApplicationPath()+ '/tools/sendEmail.exe', args); + // mailout.stdout.on('data', (data) => { + // console.log(`emailout stdout: ${data}`); + // }); + // mailout.stderr.on('data', (data) => { + // console.error(`emailout stderr: ${data}`); + // }); + // mailout.on('close', (code) => { + // console.log(`emailout: child process exited with code ${code}`); + // if (code == 0){ + // //console.log("Copy",report.tmpoutput,"to",report.output); + // email.tmpbodyfile = null; + // email.tmpbody= null; + // email.tmpsubject= null; + // email.tmptemplate= null; + // if (fs.existsSync(email.tmpbodyfile)){ + // fs.unlinkSync(email.tmpbodyfile); + // } + + // email.callback({"mail":" Mail wurde erfolgreich verschickt an " + email}); + // } - }); + // }); }, - openthunderbird: function(maildata){ + + open: function(maildata,attach){ let args =[]; let mailcfg =[]; - mailcfg.push("to='"+ maildata.to+"'"); - mailcfg.push("from='"+ maildata.from +"'"); - mailcfg.push("subject='"+ maildata.subject +"'"); - mailcfg.push("format=1"); // format => 1=HTML, 2=text - mailcfg.push("body='"+ maildata.body+"'"); - mailcfg.push("attachment='"+ maildata.attachments.join(',').replace(/\//g,"\\")+"'"); - args.push("-compose",mailcfg.join(",")) - + if (preferences.global.mailapp == "thunderbird"){ + mailcfg.push("to='"+ maildata.to+"'"); + mailcfg.push("from='"+ maildata.from +"'"); + mailcfg.push("subject='"+ maildata.subject +"'"); + mailcfg.push("format=1"); // format => 1=HTML, 2=text + mailcfg.push("body='"+ maildata.body+"'"); + mailcfg.push("attachment='"+ maildata.attachments.join(',').replace(/\//g,"\\")+"'"); + args.push("-compose",mailcfg.join(",")) + } else if (preferences.global.mailapp == "outlook"){ + let mailobj = { + from: maildata.from, + to: maildata.to, + subject: maildata.subject, + html: maildata.body, + } + if (maildata.cc){ + mailobj["cc"] = maildata.cc; + } + if (maildata.bcc){ + mailobj["bcc"] = maildata.bcc; + } + if ((attach) && (attach.length > 0)){ + mailobj.attachments =[]; + for (var a in attach){ + let tmpf = + mailobj.attachments.push({ + name: path.basename, + contentType: "application/pdf", + data: fs.readfileSync(attach[a]), + inline: true, + }); + } + + } + //var eml = fs.readFileSync("sample.eml", "utf-8"); + emlformat.build(data, function(error, eml) { + if (error) return console.log(error); + fs.writeFileSync(email.tmpfolder + "/build.eml", eml); + console.log("Done!"); + }); + //outlook.exe /c ipm.note /m "someone@microsoft.com&subject=test%20subject&body=test%20body" /a test.txt + args = ["/c","ipm.note","/f",email.tmpfolder + "/build.eml"] + } const mailappout = spawn(preferences.global.mailapp, args); mailappout.stdout.on('data', (data) => { @@ -88,10 +161,10 @@ let email = { // console.log(`mailappout: child process exited with code ${code}`); }); }, - openOutlook: function(){ - const mailappout = spawn(preferences.global.mailapp, args); - //outlook.exe /c ipm.note /m "someone@microsoft.com&subject=test%20subject&body=test%20body" /a test.txt - }, + // openOutlook: function(){ + // const mailappout = spawn(preferences.global.mailapp, args); + + // }, // create: function(mailtemplate,repdata,accdata){ // if (mailtemplate == 'msg'){ // email.templatetype ='msg'; diff --git a/desktopapp/js/lang/de.js b/desktopapp/js/lang/de.js index 58c4497..dcce79f 100644 --- a/desktopapp/js/lang/de.js +++ b/desktopapp/js/lang/de.js @@ -1,4 +1,136 @@ lbl["de"] = { + back:"zurück", invoices:"Rechnungen", + addresses:"Addressen", + address_new:"Neue Adresse", + address_delete:"Adresse löschen?", + address_delete_question:"Sind Sie Sicher dass Sie die Adresse löschen möchten?", + invoice:"Rechnung", + new:"neu", + edit:"bearbeiten", + duplicate:"duplizieren", + delete:"löschen", + address:"Adresse", + companyname: "Firma / Name", + clientnumber:"Kunden Nr.", + clientnumber_short:"Nr.", + title:"Titel", + prename:"Vorname", + surname:"Nachname", + country:"Land", + zip:"PLZ", + city:"Ort", + email:"E-Mail", + phone:"Telefon", + bankaccount:"Bank-Konto", + bic:"BIC", + vatid:"Ust-Id", + language:"Sprache", + cancel:"Abbrechen", + save:"Speichern", + + pdf_open:"PDF öffnen", + pdf_create:"PDF erstellen", + pdf_import:"importieren", + send:"verschicken", + email_send:"senden", + email_open:"öffnen", + invoice_type:"Typ", + status:"Status", + report_template:"Druck-Vorlage", + invoice_date:"Datum", + deadline_days:"Tage", + deadline_date:"Fälligkeit", + businessyear:"G.Jahr", + payedamount:"Bezahlt", + reference:"Referenz", + addressee:"Addressat", + invoice_item:"Rechnungs Posten", + invoice_items:"Rechnungs Posten", + preface:"Vorwort", + annotiation:"Annmerkung", + sku:"SKU", + item_name:"Name", + quantity:"Anzahl", + unit:"Einheit", + unitamount:"Preis", + tax:"Mehrwertsteuer", + netamount:"Netto", + grossamount:"Brutto", + description:"Beschreibung", + + files: "Dateien", + invoice_item_delete: "Posten löschen?", + invoice_item_delete_question:"Sind Sie sicher dass sie die/den ausgewählten Posten löschen möchten?", + invoice_delete:"Rechnung löschen", + invoice_delete_question: "Sind Sie Sicher dass Sie die Rechnung(en) löschen möchten?", + + products:"Produkte", + product:"Produkt", + service:"Dienstleistung", + product_heading:"Produkt / Dienstleitung", + product_name:"Name", + product_type:"Typ", + product_group:"Produkt-Gruppe", + group:"Gruppe", + product_delete:"Produkt löschen", + product_delete_question: "Sind Sie Sicher dass Sie das Produkt löschen möchten?", + settings:"Einstellungen", + document_types:"Dokument-Typen", + general:"Allgemein", + + company_data:"Unternehmens-Daten", + company:"Unternehmen", + website:"Webseite", + rcs:"Handelsregister", + default_values:"Standard-Werte", + language:"Sprache", + deadline:"Fälligkeit", + days:"Tage", + default_invoice_template:"Rechnungs-Vorlage", + default_creditnote_template:"Gutschrift-Vorlage", + default_offer_template:"Angebots-Vorlage", + default_delivery_template:"Lieferschein-Vorlage", + mail_settings:"Mail-Einstellungen", + mail_from:"Absender", + mail_server:"Mailserver", + mail_port:"Port", + mail_user:"Benutzer", + mail_password:"Passwort", + mail_app:"Mail-Anwendung", + offers:"Angebote", + reporttemplates:"Druck-Vorlagen", + mailtemplates:"Mail-Vorlagen", + datasets:"Datensätze", + backup:"Backup", + category:"Kategorie", + name:"Name", + top:"Oben", + bottom:"Unten", + left:"Links", + right:"Rechts", + header:"Kopfzeile", + footer:"Fußzeile", + template_pagecontent:"Seiteninhalt", + template_layout_definition:"Layout Definition", + template:"Vorlage", + mail_to:"An:", + mail_cc:"Kopie An:", + mail_bcc:"Blindkopie An:", + mail_subject:"Betreff", + mail_body:"Nachricht", + mail_attachments:"Anhänge", + add:"hinzufügen", + mailsent: "E-Mail wurde erfolgreich verschickt an: ", + pleasewait:"Bitter warten...!", + addfiles:"Datei(en) hinzufügen", + files:"Dateien", + import:"Importiern", + filesize:"Datei-Größe", + ok:"OK", + mail_send:"senden", + id:"Id", + color:"Farbe", + position:"Position" } \ No newline at end of file diff --git a/desktopapp/modules/addresses/addresses.html b/desktopapp/modules/addresses/addresses.html index 29d67be..e385c17 100644 --- a/desktopapp/modules/addresses/addresses.html +++ b/desktopapp/modules/addresses/addresses.html @@ -1,19 +1,19 @@
- -
Adressen
+ +
{{addresses}}
- - - - + + + +
@@ -21,92 +21,92 @@ diff --git a/desktopapp/modules/addresses/addresses.js b/desktopapp/modules/addresses/addresses.js index a4d752a..5bbbd8e 100644 --- a/desktopapp/modules/addresses/addresses.js +++ b/desktopapp/modules/addresses/addresses.js @@ -29,14 +29,14 @@ let addresses = { // }, rowContext:function(e, row){ e.preventDefault(); }, columns: [ - {title: "Nr.", field: "clientnumber",headerFilter:"input" }, - {title: "Name", field: "receipient",headerFilter:"input" }, - {title: "Adresse",field: "address" }, - {title: "PLZ", field: "zip" }, - {title: "Ort",field: "city"}, - {title: "Land",field: "country"}, - {title: "E-mail",field: "email",formatter:formatters.ArrayToString}, - {title: "Tel.",field: "phone"}, + {title: lbl[preferences.global.language].clientnumber_short, field: "clientnumber",headerFilter:"input" }, + {title: lbl[preferences.global.language].companyname, field: "receipient",headerFilter:"input" }, + {title: lbl[preferences.global.language].address,field: "address" }, + {title: lbl[preferences.global.language].zip, field: "zip" }, + {title: lbl[preferences.global.language].city,field: "city"}, + {title: lbl[preferences.global.language].country,field: "country"}, + {title: lbl[preferences.global.language].email,field: "email",formatter:formatters.ArrayToString}, + {title: lbl[preferences.global.language].phone,field: "phone"}, ] }); if (addresses.tblselector == null){ @@ -62,10 +62,10 @@ let addresses = { selectable: 1, rowContext:function(e, row){ e.preventDefault(); }, columns: [ - {title:"Name", field:"receipient",headerFilter:"input"}, - {title: "Adresse",field: "address" }, - {title: "PLZ", field: "zip" }, - {title: "Ort",field: "city"}, + {title:lbl[preferences.global.language].comanyname, field:"receipient",headerFilter:"input"}, + {title: lbl[preferences.global.language].address,field: "address" }, + {title: lbl[preferences.global.language].zip, field: "zip" }, + {title: lbl[preferences.global.language].city,field: "city"}, //,bottomCalcFormatter:"money", bottomCalcFormatterParams:{ decimal:",", thousand:".", symbol:"€", symbolAfter:"p", precision:2} ] }); @@ -105,7 +105,7 @@ let addresses = { db.query("select count(*) as cnt from addresses").then(adrcnt => { let clnum=moment().format('YYMM') + timecalc.lpad(adrcnt.cnt,4,'0'); console.log("New addresse ID",newid.id); - db.execAsync("INSERT INTO addresses (id,clientnumber,receipient) VALUES ('"+newid.id+"','"+ clnum+"','Neue Addresse');").then( res =>{ + db.execAsync("INSERT INTO addresses (id,clientnumber,receipient) VALUES ('"+newid.id+"','"+ clnum+"',"+ lbl[preferences.global.language].address_new+");").then( res =>{ addresses.gettbldata(newid.id); //addresses.current_id = fsel[0].id; addresses.edit(); @@ -117,9 +117,9 @@ let addresses = { var sel = addresses.tbl.getSelectedData(); //delcallback = ; if (sel[0]) { - myapp.confirm("Addresse löschen","Sind Sie Sicher dass Sie die Adresse löschen möchten?","Löschen","Abbrechen","addresses.remove();"); + myapp.confirm(lbl[preferences.global.language].address_delete,lbl[preferences.global.language].address_delete_question,lbl[preferences.global.language].delete,lbl[preferences.global.language].cancel,"addresses.remove();"); // document.getElementById("btndlgdeleterowok").setAttribute("onclick","invoices.remove();"); - // document.getElementById("dlgdeleterow").style.display = 'block'; + // document.getElementById("dlgdeleterow").address_deletetyle.display = 'block'; } }, remove: function(data){ diff --git a/desktopapp/modules/bookings/bookings.html b/desktopapp/modules/bookings/bookings.html index 01c84d9..fb6b280 100644 --- a/desktopapp/modules/bookings/bookings.html +++ b/desktopapp/modules/bookings/bookings.html @@ -1,9 +1,9 @@
- +
Buchungen -
+ "bookings.add();"> {{new}}
\ No newline at end of file diff --git a/desktopapp/modules/datasets/datasets.html b/desktopapp/modules/datasets/datasets.html index 82ad570..a23acf0 100644 --- a/desktopapp/modules/datasets/datasets.html +++ b/desktopapp/modules/datasets/datasets.html @@ -1,8 +1,9 @@
-
- +
+
- Datensätze + {{datasets}}
-
\ No newline at end of file +
+
\ No newline at end of file diff --git a/desktopapp/modules/datasets/datasets.js b/desktopapp/modules/datasets/datasets.js index 7f8afc5..0d709c7 100644 --- a/desktopapp/modules/datasets/datasets.js +++ b/desktopapp/modules/datasets/datasets.js @@ -1,5 +1,19 @@ let datasets = { viewmodule: function(){ - myapp.viewmodule('datasets'); + myapp.loadmodule('datasets','datasets').then(result => { + myapp.viewmodule('datasets'); + }); + }, + init: function(){ + + }, + clone: function(){ + + }, + confirmRemove: function(){ + + }, + remove: function(){ + } } \ No newline at end of file diff --git a/desktopapp/modules/invoices/invoice.html b/desktopapp/modules/invoices/invoice.html index f57c523..84703fa 100644 --- a/desktopapp/modules/invoices/invoice.html +++ b/desktopapp/modules/invoices/invoice.html @@ -1,127 +1,128 @@
- -
Rechnung
- - - - - - - - - + +
{{invoice}}
+ + + + + + +
- +
- +
- +
- +
-
- +
- +
- +
- +
- +
- + +
+
+
+
+ +
+
+ +
-
-
- +
- +
-
- -
-
-
-
- +
+
- - -
-
+
+
{{invoice_items}}
+ + + + +
-
- +
+ + +
+
+
@@ -132,7 +133,7 @@