From df2013a6c1c7a99f29a7ffa4ef0df69afa290889 Mon Sep 17 00:00:00 2001 From: "kilian (dks-laptop)" Date: Wed, 15 Jan 2020 09:09:37 +0100 Subject: [PATCH] v20200114 --- backoffice/api/index.cgi | 16 +- backoffice/api/lib/dksconfig.pm | 2 +- backoffice/api/lib/pdfreport.pm | 112 +++++++++ backoffice/api/report.cgi | 118 ++++++++++ .../data/reports/invoices/dks-deutsch.conf | 12 + .../reports/invoices/dks-deutsch.footer.tt | 37 +++ .../reports/invoices/dks-deutsch.header.tt | 20 ++ .../data/reports/invoices/dks-deutsch.tt | 126 +++++++++++ .../reports/invoices/dks-deutsch/dks_500.png | Bin 0 -> 19377 bytes .../reports/invoices/dks-deutsch/sitc.png | Bin 0 -> 57392 bytes backoffice/data/reports/pot/pot_period.conf | 12 + .../data/reports/pot/pot_period.footer.tt | 37 +++ .../data/reports/pot/pot_period.header.tt | 20 ++ backoffice/data/reports/pot/pot_period.tt | 126 +++++++++++ .../data/reports/pot/staff_workplan.conf | 12 + .../data/reports/pot/staff_workplan.footer.tt | 37 +++ .../data/reports/pot/staff_workplan.header.tt | 20 ++ backoffice/data/reports/pot/staff_workplan.tt | 126 +++++++++++ backoffice/index.cgi | 4 +- backoffice/js/admin.js | 6 +- backoffice/js/formsave.js | 34 ++- backoffice/js/request.js | 2 +- backoffice/tmpl/block/dlgdeleterow.tt | 6 +- backoffice/tmpl/module/companies/companies.js | 6 +- backoffice/tmpl/module/companies/index.tt | 6 +- .../tmpl/module/companies/staffgroups.js | 14 +- backoffice/tmpl/module/dashboard/index.tt | 8 +- .../module/{planning => periods}/index.js | 0 .../module/{planning => periods}/index.tt | 15 +- .../{planning => periods}/reportperiod.js | 75 ++++-- .../{planning => periods}/staffworkplan.js | 14 +- backoffice/tmpl/module/staff/index.tt | 18 +- backoffice/tmpl/module/staff/staff.js | 49 ++-- backoffice/tmpl/module/staff/staffcontract.js | 40 ++-- backoffice/tmpl/module/users/index.tt | 16 +- backoffice/tmpl/module/users/users.js | 37 +-- backoffice/tmpl/module/workplans/index.js | 214 ++++++++---------- backoffice/tmpl/module/workplans/index.tt | 32 +-- backoffice/tmpl/module/workplans/workplans.js | 130 +++++++++++ backoffice/tmpl/skeleton/index.tt | 13 +- 40 files changed, 1312 insertions(+), 260 deletions(-) create mode 100644 backoffice/api/lib/pdfreport.pm create mode 100644 backoffice/api/report.cgi create mode 100644 backoffice/data/reports/invoices/dks-deutsch.conf create mode 100644 backoffice/data/reports/invoices/dks-deutsch.footer.tt create mode 100644 backoffice/data/reports/invoices/dks-deutsch.header.tt create mode 100644 backoffice/data/reports/invoices/dks-deutsch.tt create mode 100644 backoffice/data/reports/invoices/dks-deutsch/dks_500.png create mode 100644 backoffice/data/reports/invoices/dks-deutsch/sitc.png create mode 100644 backoffice/data/reports/pot/pot_period.conf create mode 100644 backoffice/data/reports/pot/pot_period.footer.tt create mode 100644 backoffice/data/reports/pot/pot_period.header.tt create mode 100644 backoffice/data/reports/pot/pot_period.tt create mode 100644 backoffice/data/reports/pot/staff_workplan.conf create mode 100644 backoffice/data/reports/pot/staff_workplan.footer.tt create mode 100644 backoffice/data/reports/pot/staff_workplan.header.tt create mode 100644 backoffice/data/reports/pot/staff_workplan.tt rename backoffice/tmpl/module/{planning => periods}/index.js (100%) rename backoffice/tmpl/module/{planning => periods}/index.tt (94%) rename backoffice/tmpl/module/{planning => periods}/reportperiod.js (59%) rename backoffice/tmpl/module/{planning => periods}/staffworkplan.js (96%) create mode 100644 backoffice/tmpl/module/workplans/workplans.js diff --git a/backoffice/api/index.cgi b/backoffice/api/index.cgi index 2d926f82..9edf8d5b 100755 --- a/backoffice/api/index.cgi +++ b/backoffice/api/index.cgi @@ -74,7 +74,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ # } if ($p->{fn} eq "saveform"){ - # $html->{p} = $p; + $html->{p} = $p; $html->{result}->{ident} = $p->{ident}; delete $p->{ident}; delete $p->{fn}; @@ -82,7 +82,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ my $retid=undef; my $type = "upd"; foreach my $px (keys(%{$p})){ - $html->{result}->{datafield} = $px; + #$html->{result}->{datafield} = $px; if (($px =~ /\_id$/) && ($p->{$px} eq "")){ $type = "ins"; delete $p->{$px}; @@ -95,7 +95,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ else { @sql = $db->create_ddl_update($p); } - #$html->{sql} = \@sql; + $html->{sql} = \@sql; foreach my $s (@sql){ #if ($type eq "ins"){ $retid= $db->dbquerysorted($s); @@ -104,7 +104,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ #} } - $html->{result}->{id} = $retid->{0}; + $html->{result} = $retid->{0}; #$p->{table},#$p->{field},$p->{value},$p->{id},$p->{type} } if($p->{fn} eq "deleterow"){ @@ -188,10 +188,10 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ } } if ($p->{fn} eq "getschemaaccess"){ - my $sql = "select schemata, company from companies where schemata in ( -select json_array_elements_text(schemaaccess) as schemaaccess from users where id=".$sess->{id}.") order by company;"; - if ($sess->{usergroups} =~ /admin/){ - $sql = "select schemata, company from companies order by company;"; + my $sql = "select schemata,company from companies where schemata in ( + select json_array_elements_text(schemaaccess) as schemaaccess from users where id=".$sess->{id}.") order by company;"; + if ($sess->{usergroup} eq "admin"){ + $sql = "select * from vw_schemata;"; } $html->{result} = $db->dbquerysorted($sql); } diff --git a/backoffice/api/lib/dksconfig.pm b/backoffice/api/lib/dksconfig.pm index e646d2b7..f79ba1c4 100644 --- a/backoffice/api/lib/dksconfig.pm +++ b/backoffice/api/lib/dksconfig.pm @@ -11,7 +11,7 @@ our @EXPORT_OK = qw($sitecfg); our $sitecfg ={ cookiename => 'potlu', dbtype => 'PgPP', - dsn => 'DBI:PgPP:dbname=potlu_db;host=DKS-LAPTOP.fritz.box', + dsn => 'DBI:PgPP:dbname=potlu_db;host=localhost', #dsn => 'DBI:PgPP:dbname=potlu_db;host=sql629.your-server.de', dbuser => 'potlu_user', dbpassword => 'r2btTTRfuJz4whez', diff --git a/backoffice/api/lib/pdfreport.pm b/backoffice/api/lib/pdfreport.pm new file mode 100644 index 00000000..7c1b7caf --- /dev/null +++ b/backoffice/api/lib/pdfreport.pm @@ -0,0 +1,112 @@ +package pdfreport; + +use strict; +use Template; +use File::Basename qw/dirname basename/; +use Data::Dumper; +use File::Copy::Recursive qw(dircopy); +sub new { + my $class = shift; + my $p = shift; + my $self = bless {}, $class; + $self->{tmplpath} =$p->{tmplpath}; + $self->{tmp} =$p->{tmp}; + $self->{pdf} = undef; + $self->{template} = undef; + #$self->{template} = $p->{template}; + $self->{pdf}->{app} = "/usr/local/bin/wkhtmltopdf"; + return $self; +} + +sub createpdf(){ + my $self = shift; + my $template = shift; + my $output = shift; + my $inputdata = shift; + my $r = -1; + print $self->{tmplpath}.'/'.$template.'.conf'."\n"; + if (-e $self->{tmplpath}.'/'.$template.'.conf'){ + $self->readpdfconfig($template,$inputdata); + print Dumper($self->{template}); + } + print Dumper($self->{pdf}); + print Dumper($self->{template}); + my $tmpreportpath=$self->{tmplpath}; + if (exists($self->{pdf}->{engine}) && ($self->{pdf}->{engine} eq "Template::Toolkit")){ + $template = $self->createTTReport($template); + $tmpreportpath = $self->{tmp}; + } + if ((keys(%{$self}) > 0) && (-e $tmpreportpath.'/'.$template.'.html')){ + my $cmd = '"'.$self->{pdf}->{app}.'"'; + if ($self->{pdf}->{bottom}){ $cmd .= " -B ".$self->{pdf}->{bottom}; } + if ($self->{pdf}->{left}){ $cmd .= " -L ".$self->{pdf}->{left}; } + if ($self->{pdf}->{right}){ $cmd .= " -R ".$self->{pdf}->{right}; } + if ($self->{pdf}->{top}){ $cmd .= " -T ".$self->{pdf}->{top}; } + if ($self->{pdf}->{orientation}){ $cmd .= " -O ".$self->{pdf}->{orientation}; } + if ($self->{pdf}->{size}){ $cmd .= " -s ".$self->{pdf}->{size}; } + if ($self->{pdf}->{encoding}){ $cmd .= " --encoding '".$self->{pdf}->{encoding}."'"; } + if (-e $tmpreportpath.'/'.$template.'.header.html'){ + $cmd .= ' --header-html "'.$tmpreportpath.'/'.$template.'.header.html"'; + } + if (-e $tmpreportpath.'/'.$template.'.footer.html'){ + $cmd .= ' --footer-html "'.$tmpreportpath.'/'.$template.'.footer.html"'; + } + $cmd .= ' "'.$tmpreportpath.'/'.$template.'.html"'; + $cmd .= ' "'.$output.'"'; + print $cmd."\n"; + $r = system($cmd); + } + if (-e $output){ + return ($r,$output); + } + return ($r,undef); +} + +sub createTTReport(){ + my $self = shift; + my $template = shift; + my $uniquekey = $$; + if (-e $self->{tmplpath}.'/'.$template.".tt"){ + $self->TTtoHTML($self->{tmplpath}.'/'.$template.".tt",$self->{tmp}.'/'.$template.$$.".html"); + } + if (-e $self->{tmplpath}.'/'.$template.".header.tt"){ + $self->TTtoHTML($self->{tmplpath}.'/'.$template.".header.tt",$self->{tmp}.'/'.$template.$$.".header.html"); + } + if (-e $self->{tmplpath}.'/'.$template.".footer.tt"){ + $self->TTtoHTML($self->{tmplpath}.'/'.$template.".footer.tt",$self->{tmp}.'/'.$template.$$.".footer.html"); + } + if (-d $self->{tmplpath}.'/'.$template){ + dircopy($self->{tmplpath}.'/'.$template,$self->{tmp}.'/'.$template); + } + return $template.$$; +} + +sub TTtoHTML(){ + my $self = shift; + my $ttfile = shift; + my $outfile = shift; + my $template = Template->new({INCLUDE_PATH => [dirname($ttfile)]});#,ENCODING => 'utf8' + $template->process(basename($ttfile),$self->{template},$outfile) || die "Template process failed: ", $template->error(), "\n";#,{binmode => ':utf8'} +} + +sub readpdfconfig(){ + my $self = shift; + my $template = shift; + my $inputdata = shift; + open(CFG,$self->{tmplpath}.'/'.$template.'.conf'); + while (my $l = ){ + chomp($l); + print $l."\n"; + $l =~ s/^\s+//; + if (($l =~ /^#/) || ($l eq "")) {next;} + if ($l =~ /\w+=.+/){ + my ($k1,$k2,$v) = $l =~ m/^(\w+)_(\w+)=\"(.+)\"$/; + $self->{lc($k1)}->{lc($k2)} = $v; + } + } + close(CFG); + foreach my $ik (keys(%{$inputdata})){ + $self->{template}->{lc($ik)} = $inputdata->{$ik}; + } +} +1; \ No newline at end of file diff --git a/backoffice/api/report.cgi b/backoffice/api/report.cgi new file mode 100644 index 00000000..d00a63d7 --- /dev/null +++ b/backoffice/api/report.cgi @@ -0,0 +1,118 @@ +#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl +use strict; +use FindBin qw($RealBin $Bin); +# use lib ('CGI/api/lib/perl5'); +# use lib ('CGI/api/lib'); +use lib ($Bin.'/CGI/api/lib/perl5'); +use lib ($Bin.'/CGI/api/lib'); +use lib ($RealBin.'/lib/perl5'); +use lib ($RealBin.'/lib'); +use CGI; +use CGI::Cookie; +# use CGI::Carp qw/fatalsToBrowser/; +use File::Basename; +use JSON::PP; +use MIME::Type::FileName; +use dksconfig qw/$sitecfg/; +use dksdb; + +# use session; +#use sendemail; +my $cgi = new CGI(); +my $scriptpath = $cgi->url(-absolute => 1); +my $p = (); +my @params = $cgi->param(); +foreach my $pe (@params){ + $p->{$pe} = $cgi->param($pe); +} +my $html->{result} = (); +# $p->{sid} = $cgi->cookie($sitecfg->{cookiename}); +# my $se = session->new(); +# my $sess = $se->getsession($p->{sid}); +print $cgi->header(-type=>"application/json", -charset => "utf-8"); +my $dbredirect = {}; +if ($sitecfg->{dbtype} eq "SQLite"){ + if (exists($p->{db})){ + $dbredirect->{dsn} = "DBI:SQLite:dbname=".$sitecfg->{datapath}.'/'.$p->{db}.'.sqlite'; + } +} +#$html->{conn} = $dbredirect; +# if ($sess == undef){ +# $html->{error} = "No Authorisation"; +# print JSON::PP::encode_json($html); +# exit(0); +# } +# $html->{p} = $p; +# $html->{sess} =$sess; +#my $datapath = $ENV{"DOCUMENT_ROOT"}.dirname(dirname($scriptpath)).'/data/'; +if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ + + # my @params = $cgi->param(); + # foreach my $pp (@params){ + # $p->{$pp} = $cgi->param($pp); + # } + + if (exists($p->{list})){ + #$html->{param} = $p; + my $reppath = $sitecfg->{datapath}.'/'.$p->{app}.'/templates/'.$p->{list}; + #$html->{path} = $reppath; + if (-d $reppath){ + #print "OK!"; + my @allreps = (); + opendir(REP,$reppath); + while (my $f = readdir(REP)){ + if ($f =~ /\.conf$/){ + my $rep->{name}= $f; + $rep->{name} =~ s/\.conf$//; + $rep->{label} = $rep->{name}; + + open(RTPL,$reppath.'/'.$f); + while (my $l = ){ + chomp($l); + if ($l =~ /^REPORT_NAME/){ + my ($k1,$k2,$v) = $l =~ m/^(\w+)_(\w+)=\"(.+)\"$/; + $rep->{label} = $v; + } + } + close(RTPL); + push(@allreps,$rep); + } + } + closedir(REP); + $html->{result}->{reports} = \@allreps; + } + } + elsif (exists($p->{generate})){ + # my $data = { + # id_invoice => "469", + # dsn => 'DBI:SQLite:dbname='.$dbpath.'/invoicejournal/dksbuchhaltung.sqlite' + # }; + # my $rep = pdfreport->new({tmplpath => $RealBin.'/report', tmp => $RealBin.'/tmp'}); + # my ($result,$file) = $rep->createpdf('ttinvoice',$RealBin.'/output/textinvoice.pdf',$data); + # print "$result: $file\n"; + } + elsif (exists($p->{open})){ + if (exists($p->{file}) && -e ){ + + my $mimetype = MIME::Type::FileName::guess ($sitecfg->{data}.'/'.$p->{file}); + my @stat = stat($sitecfg->{data}.'/'.$p->{file}); + print $cgi->header( + -type => $mimetype, + -target => basename($p->{file}), + -attachment => basename($p->{file}) + ); + open(DLD,$sitecfg->{data}.'/'.$p->{file}); + binmode(DLD); + local $/ = \1024; + while (){ + print $_; + } + close(DLD); + exit(0); + } + } +} +print JSON::PP::encode_json($html); +# for my $e ( keys %ENV ) { +# print "$e: $ENV{$e}
"; +# } \ No newline at end of file diff --git a/backoffice/data/reports/invoices/dks-deutsch.conf b/backoffice/data/reports/invoices/dks-deutsch.conf new file mode 100644 index 00000000..d5f503a9 --- /dev/null +++ b/backoffice/data/reports/invoices/dks-deutsch.conf @@ -0,0 +1,12 @@ +PDF_TOP="40mm" +PDF_BOTTOM="20mm" +PDF_LEFT="20mm" +PDF_RIGHT="10mm" +PDF_SIZE="A4" +PDF_ORIENTATION="Portrait" +PDF_ENGINE="Template::Toolkit" +PDF_ENCODING="UTF-8" +TEMPLATE_DSN="" +TEMPLATE_DBUSER="" +TEMPLATE_DBPASSWORD="" +REPORT_NAME="DKS - deutsch" \ No newline at end of file diff --git a/backoffice/data/reports/invoices/dks-deutsch.footer.tt b/backoffice/data/reports/invoices/dks-deutsch.footer.tt new file mode 100644 index 00000000..0f199531 --- /dev/null +++ b/backoffice/data/reports/invoices/dks-deutsch.footer.tt @@ -0,0 +1,37 @@ + + + + + + + + + + + + +
SAFFRAN IT Consulting s.à r.l. ist eine Handelsbezeichnung von
DKS, Société à responsabilité limitée, RC B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0
+ IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL
+ Seite / +
+ \ No newline at end of file diff --git a/backoffice/data/reports/invoices/dks-deutsch.header.tt b/backoffice/data/reports/invoices/dks-deutsch.header.tt new file mode 100644 index 00000000..8e403506 --- /dev/null +++ b/backoffice/data/reports/invoices/dks-deutsch.header.tt @@ -0,0 +1,20 @@ + + + + + + + + + + +
+
+ SAFFRAN IT Consulting S.à r.l.
+ 4, rue Principale
+ L-3770 Tétange

+ Tel: +352 691 504 574
+ info@saffran.lu / www.saffran.lu
+
+
+ diff --git a/backoffice/data/reports/invoices/dks-deutsch.tt b/backoffice/data/reports/invoices/dks-deutsch.tt new file mode 100644 index 00000000..93f96d04 --- /dev/null +++ b/backoffice/data/reports/invoices/dks-deutsch.tt @@ -0,0 +1,126 @@ +[% USE DBI %] +[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] + + + + Invoice + + + + [% qginv = dksdb.prepare("select * from vw_invoiceoutlist WHERE id= ?") %] + [% ginv = qginv.execute(id_invoice) %] + [% inv = ginv.get_all() %] + + + + + + + + + + +
Rechnung
+ [% inv.0.receipient %]
[% inv.0.address %]
[% inv.0.zip %] [% inv.0.city %]
[% inv.0.country %]
+
+ + + + + +
Rechnungs-Nr.[% inv.0.reference %]
Datum[% inv.0.invoicedate %]
Fälligkeit[% inv.0.deadlinedate %]
Kundennummer[% inv.0.ident %]
+
+ [% qbookings = dksdb.prepare("SELECT id, id_invoice, quantity, unit, description, unitamount, netamount, taxamount, taxpercent, totalamount FROM vw_bookingoutlist where id_invoice= ?;") %] + + + + + + + + + + + + [% FOREACH book = qbookings.execute(id_invoice) %] + + + + + + + + [% END %] + + + + + + + + + + + + + +
Produkt / DienstleistungAnz.Einzel-PreisNetto-Summe
[% book.description %][% book.quantity %][% book.unit %][% book.unitamount %] €[% book.netamount %] €
Total Netto + [% inv.0.totalnet %] €
MwSt. (17%) + [% inv.0.totalvat %] €
Gesamt zu bezahlen: + [% inv.0.totalgross %] €
+
Nous vous prions de virer le montant ci-dessus au compte
+ LU25 0020 1100 2783 8700 (BILLLULL)
+ + \ No newline at end of file diff --git a/backoffice/data/reports/invoices/dks-deutsch/dks_500.png b/backoffice/data/reports/invoices/dks-deutsch/dks_500.png new file mode 100644 index 0000000000000000000000000000000000000000..35c6adb0a2eea64d75374b48e82688655c657ec5 GIT binary patch literal 19377 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 Ef>|9d5dZ)H literal 0 HcmV?d00001 diff --git a/backoffice/data/reports/invoices/dks-deutsch/sitc.png b/backoffice/data/reports/invoices/dks-deutsch/sitc.png new file mode 100644 index 0000000000000000000000000000000000000000..853b36a677aa25be9881d8d78d87fbd0ab340ba0 GIT binary patch literal 57392 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 TD}i2yGyv#m>T8s$VFLdLxo02- literal 0 HcmV?d00001 diff --git a/backoffice/data/reports/pot/pot_period.conf b/backoffice/data/reports/pot/pot_period.conf new file mode 100644 index 00000000..9861e2b3 --- /dev/null +++ b/backoffice/data/reports/pot/pot_period.conf @@ -0,0 +1,12 @@ +PDF_TOP="40mm" +PDF_BOTTOM="20mm" +PDF_LEFT="20mm" +PDF_RIGHT="10mm" +PDF_SIZE="A4" +PDF_ORIENTATION="Landscape" +PDF_ENGINE="Template::Toolkit" +PDF_ENCODING="UTF-8" +TEMPLATE_DSN="" +TEMPLATE_DBUSER="" +TEMPLATE_DBPASSWORD="" +REPORT_NAME="POT - Periode" \ No newline at end of file diff --git a/backoffice/data/reports/pot/pot_period.footer.tt b/backoffice/data/reports/pot/pot_period.footer.tt new file mode 100644 index 00000000..0f199531 --- /dev/null +++ b/backoffice/data/reports/pot/pot_period.footer.tt @@ -0,0 +1,37 @@ + + + + + + + + + + + + +
SAFFRAN IT Consulting s.à r.l. ist eine Handelsbezeichnung von
DKS, Société à responsabilité limitée, RC B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0
+ IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL
+ Seite / +
+ \ No newline at end of file diff --git a/backoffice/data/reports/pot/pot_period.header.tt b/backoffice/data/reports/pot/pot_period.header.tt new file mode 100644 index 00000000..8e403506 --- /dev/null +++ b/backoffice/data/reports/pot/pot_period.header.tt @@ -0,0 +1,20 @@ + + + + + + + + + + +
+
+ SAFFRAN IT Consulting S.à r.l.
+ 4, rue Principale
+ L-3770 Tétange

+ Tel: +352 691 504 574
+ info@saffran.lu / www.saffran.lu
+
+
+ diff --git a/backoffice/data/reports/pot/pot_period.tt b/backoffice/data/reports/pot/pot_period.tt new file mode 100644 index 00000000..93f96d04 --- /dev/null +++ b/backoffice/data/reports/pot/pot_period.tt @@ -0,0 +1,126 @@ +[% USE DBI %] +[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] + + + + Invoice + + + + [% qginv = dksdb.prepare("select * from vw_invoiceoutlist WHERE id= ?") %] + [% ginv = qginv.execute(id_invoice) %] + [% inv = ginv.get_all() %] + + + + + + + + + + +
Rechnung
+ [% inv.0.receipient %]
[% inv.0.address %]
[% inv.0.zip %] [% inv.0.city %]
[% inv.0.country %]
+
+ + + + + +
Rechnungs-Nr.[% inv.0.reference %]
Datum[% inv.0.invoicedate %]
Fälligkeit[% inv.0.deadlinedate %]
Kundennummer[% inv.0.ident %]
+
+ [% qbookings = dksdb.prepare("SELECT id, id_invoice, quantity, unit, description, unitamount, netamount, taxamount, taxpercent, totalamount FROM vw_bookingoutlist where id_invoice= ?;") %] + + + + + + + + + + + + [% FOREACH book = qbookings.execute(id_invoice) %] + + + + + + + + [% END %] + + + + + + + + + + + + + +
Produkt / DienstleistungAnz.Einzel-PreisNetto-Summe
[% book.description %][% book.quantity %][% book.unit %][% book.unitamount %] €[% book.netamount %] €
Total Netto + [% inv.0.totalnet %] €
MwSt. (17%) + [% inv.0.totalvat %] €
Gesamt zu bezahlen: + [% inv.0.totalgross %] €
+
Nous vous prions de virer le montant ci-dessus au compte
+ LU25 0020 1100 2783 8700 (BILLLULL)
+ + \ No newline at end of file diff --git a/backoffice/data/reports/pot/staff_workplan.conf b/backoffice/data/reports/pot/staff_workplan.conf new file mode 100644 index 00000000..5de8ad88 --- /dev/null +++ b/backoffice/data/reports/pot/staff_workplan.conf @@ -0,0 +1,12 @@ +PDF_TOP="40mm" +PDF_BOTTOM="20mm" +PDF_LEFT="20mm" +PDF_RIGHT="10mm" +PDF_SIZE="A4" +PDF_ORIENTATION="Landscape" +PDF_ENGINE="Template::Toolkit" +PDF_ENCODING="UTF-8" +TEMPLATE_DSN="" +TEMPLATE_DBUSER="" +TEMPLATE_DBPASSWORD="" +REPORT_NAME="POT - Salarié" \ No newline at end of file diff --git a/backoffice/data/reports/pot/staff_workplan.footer.tt b/backoffice/data/reports/pot/staff_workplan.footer.tt new file mode 100644 index 00000000..0f199531 --- /dev/null +++ b/backoffice/data/reports/pot/staff_workplan.footer.tt @@ -0,0 +1,37 @@ + + + + + + + + + + + + +
SAFFRAN IT Consulting s.à r.l. ist eine Handelsbezeichnung von
DKS, Société à responsabilité limitée, RC B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0
+ IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL
+ Seite / +
+ \ No newline at end of file diff --git a/backoffice/data/reports/pot/staff_workplan.header.tt b/backoffice/data/reports/pot/staff_workplan.header.tt new file mode 100644 index 00000000..8e403506 --- /dev/null +++ b/backoffice/data/reports/pot/staff_workplan.header.tt @@ -0,0 +1,20 @@ + + + + + + + + + + +
+
+ SAFFRAN IT Consulting S.à r.l.
+ 4, rue Principale
+ L-3770 Tétange

+ Tel: +352 691 504 574
+ info@saffran.lu / www.saffran.lu
+
+
+ diff --git a/backoffice/data/reports/pot/staff_workplan.tt b/backoffice/data/reports/pot/staff_workplan.tt new file mode 100644 index 00000000..93f96d04 --- /dev/null +++ b/backoffice/data/reports/pot/staff_workplan.tt @@ -0,0 +1,126 @@ +[% USE DBI %] +[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] + + + + Invoice + + + + [% qginv = dksdb.prepare("select * from vw_invoiceoutlist WHERE id= ?") %] + [% ginv = qginv.execute(id_invoice) %] + [% inv = ginv.get_all() %] + + + + + + + + + + +
Rechnung
+ [% inv.0.receipient %]
[% inv.0.address %]
[% inv.0.zip %] [% inv.0.city %]
[% inv.0.country %]
+
+ + + + + +
Rechnungs-Nr.[% inv.0.reference %]
Datum[% inv.0.invoicedate %]
Fälligkeit[% inv.0.deadlinedate %]
Kundennummer[% inv.0.ident %]
+
+ [% qbookings = dksdb.prepare("SELECT id, id_invoice, quantity, unit, description, unitamount, netamount, taxamount, taxpercent, totalamount FROM vw_bookingoutlist where id_invoice= ?;") %] + + + + + + + + + + + + [% FOREACH book = qbookings.execute(id_invoice) %] + + + + + + + + [% END %] + + + + + + + + + + + + + +
Produkt / DienstleistungAnz.Einzel-PreisNetto-Summe
[% book.description %][% book.quantity %][% book.unit %][% book.unitamount %] €[% book.netamount %] €
Total Netto + [% inv.0.totalnet %] €
MwSt. (17%) + [% inv.0.totalvat %] €
Gesamt zu bezahlen: + [% inv.0.totalgross %] €
+
Nous vous prions de virer le montant ci-dessus au compte
+ LU25 0020 1100 2783 8700 (BILLLULL)
+ + \ No newline at end of file diff --git a/backoffice/index.cgi b/backoffice/index.cgi index 18ad2d47..020a59a5 100755 --- a/backoffice/index.cgi +++ b/backoffice/index.cgi @@ -191,9 +191,9 @@ $vars->{params}= $p; #END - iFrame - Modules $template->process($skl,$vars) || die "Template process failed: ", $template->error(), "\n"; -# print "/*".Dumper($vars)."*/"; +#print "/*".Dumper($vars)."*/"; # if ($vars->{page} =~ /\.tt/){ -# print '
'.Dumper($p)."
";
+#    print '
'.Dumper($vars)."
";
 # } 
 
 
diff --git a/backoffice/js/admin.js b/backoffice/js/admin.js
index e944507e..5fce5c97 100644
--- a/backoffice/js/admin.js
+++ b/backoffice/js/admin.js
@@ -78,7 +78,7 @@ document.addEventListener("DOMContentLoaded", function() {
   
   choice["company"]["schemata"] = new Choices('#schemata',{
     searchEnabled: false,
-    itemSelectText: 'x',
+    itemSelectText: '',
     removeItemButton: false,
     choices : []
   });
@@ -92,12 +92,14 @@ function getschemata(){
 
 function fillschematalist(data){
   console.log(data);
-  fillselectlist(choice["company"]["schemata"],data,'schemata','company');
+  fillselectlist(choice["company"]["schemata"],data,'schemaname','company');
   
   return false;
 }
 
 function fillselectlist(obj,data,vidcol,vvalcol){
+  console.log("fillselectlist");
+  console.log(data);
   var sellist = [];
   obj.clearStore();
   if (data){
diff --git a/backoffice/js/formsave.js b/backoffice/js/formsave.js
index 32c1f508..69efe9f6 100644
--- a/backoffice/js/formsave.js
+++ b/backoffice/js/formsave.js
@@ -1,7 +1,11 @@
-function saveform(frmid,aftercallback){
+function saveform(frmid,aftercallback,clientschema){
   var flds=getformcontent(frmid,null);
   flds["fn"] ="saveform";
-  flds["schemata"]=schemata;
+  flds["schemata"]=clientschema;
+  if (clientschema == null){
+    flds["schemata"]=schemata;
+  }
+  
   //console.log(flds);
   delete flds["null"]; 
   if (aftercallback){
@@ -14,6 +18,23 @@ function saveform(frmid,aftercallback){
   return false;
 }
 
+function saveformdata(flds,aftercallback,clientschema){
+  flds["fn"] ="saveform";
+  flds["schemata"]=clientschema;
+  if (clientschema == null){
+    flds["schemata"]=schemata;
+  }
+  delete flds["null"];
+  if (aftercallback){
+    req.reqdata("POST","index.cgi",flds,aftercallback);
+    formsaved({});
+  }
+  else {
+    req.reqdata("POST","index.cgi",flds,formsaved);
+  }
+  return false;
+}
+
 function formsaved(data){
   var sb = document.getElementById("snackbar");
   sb.className="show w3-green";
@@ -252,10 +273,15 @@ function fillformbydataclass2(dataclass,choices,data){
             frm[f]._flatpickr.setDate(data[frm[f].id]);
           } else if (frm[f].classList.contains("timefield")){ 
             frm[f]._flatpickr.setDate(data[frm[f].id]);
-          }else if (frm[f].classList.contains("choices__input")){  
+          }else if (frm[f].classList.contains("choices__input")){ 
             if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
               console.log(frm[f].id);
-              choices[frm[f].id].setValue(JSON.parse(data[frm[f].id])); 
+              if (data[frm[f].id].startsWith('["')){
+                choices[frm[f].id].setValue(JSON.parse(data[frm[f].id]));
+              }
+              else {
+                choices[frm[f].id].setChoiceByValue(data[frm[f].id]);
+              } 
             }
           } else {
             frm[f].value=data[frm[f].id];
diff --git a/backoffice/js/request.js b/backoffice/js/request.js
index 19f2a332..4e80e025 100644
--- a/backoffice/js/request.js
+++ b/backoffice/js/request.js
@@ -82,7 +82,7 @@ var req = {
          //console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
         if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
           if (request.responseText){
-            //console.log(request.responseText);
+            console.log(request.responseText);
             var xparse = JSON.parse(request.responseText);
             ret = xparse.result;
           } else {
diff --git a/backoffice/tmpl/block/dlgdeleterow.tt b/backoffice/tmpl/block/dlgdeleterow.tt
index b3d5fb79..21e4b323 100644
--- a/backoffice/tmpl/block/dlgdeleterow.tt
+++ b/backoffice/tmpl/block/dlgdeleterow.tt
@@ -9,6 +9,7 @@
     
     
êtes vous sûre de vouloir supprimer la rangé sélectionné? + [% fieldhidden("dlgdelschema","delete",'','') %] [% fieldhidden("dlgdeltable","delete",'','') %] [% fieldhidden("dlgdelrowid","delete",'','') %]
@@ -21,13 +22,14 @@ diff --git a/backoffice/tmpl/module/workplans/workplans.js b/backoffice/tmpl/module/workplans/workplans.js new file mode 100644 index 00000000..78ea434a --- /dev/null +++ b/backoffice/tmpl/module/workplans/workplans.js @@ -0,0 +1,130 @@ +var workplans ={ + name:"workplans", + choices:{}, + tbl: null, + initform: function(){ + flatpickr(".timefield",{ + dateFormat: "H:i", + enableTime: true, + noCalendar: true, + time_24hr: true, + defaultHour: "0", + defaultMinute: "0", + "locale": "fr", + }); + var tfields = document.getElementsByClassName("timefield"); + for (var i=0;iSemaine",field: "weektotal",formatter: "html" }, + { title: "Lundi",field: "dspmontimes",formatter: "html" }, + { title: "Mardi",field: "dsptuetimes",formatter: "html" }, + { title: "Mercredi",field: "dspwedtimes",formatter: "html" }, + { title: "Jeudi",field: "dspthutimes",formatter: "html" }, + { title: "Vendredi",field: "dspfritimes",formatter: "html" }, + { title: "Samedi",field: "dspsattimes",formatter: "html" }, + { title: "Dimanche",field: "dspsuntimes",formatter: "html" } + ] + }); + workplans.gettbldata(); + workplans.initform(); + }, + gettbldata: function(){ + req.reqdata("POST", "db.cgi", {"get": workplans.name ,"schemata":schemata}, workplans.loadtbldata); + }, + loadtbldata: function(data){ + if (data && data.sqldata) { + workplans.tbl.setData(data.sqldata); + } + }, + edit: function() { + cleanform(workplans.name); + var udata = workplans.tbl.getSelectedData(); + if (udata[0]) { + var uid = udata[0].id; + req.reqdata("POST", "db.cgi", { + "get": workplans.name +"data","filter":"id=" + uid,"schemata":schemata + }, workplans.fillform); + module.viewpanel("frm_" + workplans.name); + } + + }, + add: function() { + cleanform('workplans'); + module.viewpanel('frm_' + workplans.name); + }, + remove: function() { + var udata = workplans.tbl.getSelectedData(); + if (udata[0]) { + showdeletedlg(workplans.name,udata[0].id,null,gettbldata_workplan,schemata); + } + }, + fillform: function(data){ + if (data && data.sqldata) { + console.log("fill Data"); + console.log(data.sqldata[0]); + fillformbydataclass2(workplans.name,{},data.sqldata[0]); + } + }, + save: function(){ + var wpdata = getformcontent(workplans.name); + var wpdatanew = {}; + for (var w in wpdata){ + if ((!w.endsWith("total")) && (!w.endsWith("interruption"))){ + wpdatanew[w] = wpdata[w]; + } + } + saveformdata(wpdatanew,null,schemata); + return false; + }, + checktime: function(id){ + + var pp = id.split("_"); + + var wday=pp[0]; + var strappend=''; + if (pp.length > 2){ + strappend = "_" + pp[2]; + } + console.log("timefield: " + wday +"=>" + id + " changed " + strappend); + var mt1 = 0; + var mt2 = 0; + var mtp = 0; + var irupt = 0; + if ((document.getElementById(wday + "_timeend1" + strappend).value != "") && (document.getElementById(wday + "_timestart1" + strappend).value != "")){ + mt1 = timecalc.TimeToMinutes(document.getElementById(wday + "_timeend1" + strappend).value)-timecalc.TimeToMinutes(document.getElementById(wday + "_timestart1" + strappend).value); + } + if ((document.getElementById(wday + "_timeend2" + strappend).value != "") && (document.getElementById(wday + "_timestart2" + strappend).value != "")){ + mt2 = timecalc.TimeToMinutes(document.getElementById(wday + "_timeend2" + strappend).value)-timecalc.TimeToMinutes(document.getElementById(wday + "_timestart2" + strappend).value); + } + if (document.getElementById(wday + "_timepause" + strappend).value != ""){ + mtp = timecalc.TimeToMinutes(document.getElementById(wday + "_timepause" + strappend).value); + } + if ((document.getElementById(wday + "_timeend1" + strappend).value != "") && (document.getElementById(wday + "_timestart2" + strappend).value != "")){ + irupt = timecalc.TimeToMinutes(document.getElementById(wday + "_timestart2" + strappend).value)-timecalc.TimeToMinutes(document.getElementById(wday + "_timeend1" + strappend).value); + document.getElementById(wday + "_interruption" + strappend).value= timecalc.MinutesToTime(irupt); + }else { + document.getElementById(wday + "_interruption" + strappend).value=""; + } + document.getElementById(wday + "_total" + strappend).value= timecalc.MinutesToTime(mt1+mt2-mtp); + var totaltester = /\d+:\d\d/; + var valcheck= document.getElementById(wday + "_total" + strappend).value; + if (valcheck && valcheck != ''){ + if ((valcheck == '00:00') || (!totaltester.test(valcheck))) { + document.getElementById(wday + "_total" + strappend).value =""; + } + } + + + }, + +} \ No newline at end of file diff --git a/backoffice/tmpl/skeleton/index.tt b/backoffice/tmpl/skeleton/index.tt index b303c767..4de108e6 100644 --- a/backoffice/tmpl/skeleton/index.tt +++ b/backoffice/tmpl/skeleton/index.tt @@ -1,15 +1,12 @@ [% PROCESS macro/fields.tt %] [% USE dksdb = DBI(dsn, dbuser, dbpassword) %] -[% appgaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup +[% appgaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,string_agg(ug.usergroup,',') as usergroup from (SELECT users.id,json_array_elements_text(users.id_usergroups)::INT4 AS id_usergroup FROM users) uig -join apps ap on (uig.id_usergroup=ap.id_usergroup) -join usergroups ug on (uig.id_usergroup=ug.id) where uig.id=? -order by ap.sort;") %] -[% appsaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup -from (SELECT users.id,json_array_elements_text(users.id_usergroups)::INT4 AS id_usergroup FROM users) uig -join apps ap on (uig.id_usergroup=ap.id_usergroup) -join usergroups ug on (uig.id_usergroup=ug.id) where uig.id=? and ap.menutype = 'schema' +join (SELECT apps.id,apps.icon,apps.app,apps.name,apps.sort,json_array_elements_text(apps.id_usergroups)::INT4 as id_usergroup FROM apps) ap on (uig.id_usergroup=ap.id_usergroup) +join usergroups ug on (uig.id_usergroup=ug.id) where uig.id=? +group by ap.id,ap.icon,ap.name,ap.app,ap.sort order by ap.sort;") %] + -- 2.39.5