invoices
authorkilian <ksaffran@dks.lu>
Wed, 1 Apr 2020 16:12:59 +0000 (18:12 +0200)
committerkilian <ksaffran@dks.lu>
Wed, 1 Apr 2020 16:12:59 +0000 (18:12 +0200)
27 files changed:
dev/importfm.pl
dev/sqlite.pm
server/CGI/tmpl/app/license.tt [deleted file]
server/CGI/tmpl/lang/de.tt
server/CGI/tmpl/lists/invoicedirection.tt [new file with mode: 0644]
server/CGI/tmpl/lists/invoicetypes.tt [new file with mode: 0644]
server/CGI/tmpl/lists/status.tt [new file with mode: 0644]
server/CGI/tmpl/module/addresses.tt
server/CGI/tmpl/module/addresses/address.tt
server/CGI/tmpl/module/invoices.tt
server/CGI/tmpl/module/invoices/invoice.tt
server/CGI/tmpl/skeleton/index.tt
server/htdocs/css/dkstheme.css
server/htdocs/css/w3pro.css
server/htdocs/img/icons/Email.svg [moved from server/htdocs/img/icons/E-mail.svg with 98% similarity]
server/htdocs/img/icons/Email_white.svg [new file with mode: 0644]
server/htdocs/img/icons/Folder.svg [new file with mode: 0644]
server/htdocs/img/icons/Folder_white.svg [new file with mode: 0644]
server/htdocs/img/icons/In_red.svg [new file with mode: 0644]
server/htdocs/img/icons/Out_green.svg [new file with mode: 0644]
server/htdocs/img/icons/PDF_white.svg [new file with mode: 0644]
server/htdocs/img/icons/Preview.svg [new file with mode: 0644]
server/htdocs/img/icons/Preview_white.svg [new file with mode: 0644]
server/htdocs/img/icons/Print_white.svg [new file with mode: 0644]
server/htdocs/img/icons/ViewPDF.svg [new file with mode: 0644]
server/htdocs/img/icons/ViewPDF_white.svg [new file with mode: 0644]
server/htdocs/img/icons/download_white.svg [new file with mode: 0644]

index 52fbba4..c78fccd 100644 (file)
@@ -29,7 +29,7 @@ foreach my $pd (sort {$a <=> $b} keys(%{$defschema})){
   }
   my $dbobj= &getcoldef($defschema->{$pd}->{sql});
   print "Table:".$defschema->{$pd}->{tbl_name}."\n";
-  #print Dumper($dbobj);
+  print Dumper($dbobj);
   print "-------------------\n";
   my $jsondata = "";
   open(JSN,$jsonexportpath.'/'.$importfiles->{$defschema->{$pd}->{tbl_name}});
@@ -57,8 +57,8 @@ foreach my $pd (sort {$a <=> $b} keys(%{$defschema})){
           $r->{$c} =~ s/^,/0./g;
           $r->{$c} =~ s/,/./g;
         } elsif ($dbobj->{$c} eq 'DATE'){
-          my ($d,$m,$y) =~ $dbobj->{$c} =~ /^(\d\d)\.(\d\d).(\d\d\d\d)/;
-          $dbobj->{$c} = $y.'-'.$m.'-'.$d;
+          my ($d,$m,$y) = $r->{$c} =~ m/^(\d\d).(\d\d).(\d\d\d\d)$/;
+          $r->{$c} = "date('".$y.'-'.$m.'-'.$d."')";
         }
         $rdata->{$kn} = $r->{$c};
       }
@@ -80,73 +80,21 @@ foreach my $pd (sort {$a <=> $b} keys(%{$defschema})){
     $db->dbexec($sql[0]);
   }
   close(XDL);
-  # foreach my $pc (keys(%{$tcurcfg})){
-  #    if (($tcurcfg->{$pc}->{tbl_name} eq $defdbschemacfg->{$pd}->{tbl_name}) && ($tcurcfg->{$pc}->{type} eq $defdbschemacfg->{$pd}->{type})){
-  #      print $defdbschemacfg->{$pd}->{type}.": ".$defdbschemacfg->{$pd}->{tbl_name}. "\n";
-  #      if ($tcurcfg->{$pc}->{sql} ne $defdbschemacfg->{$pd}->{sql}){
-  #       $bupdate = 1;
-          
-  #      }
-  #      $bexists = 1;
-  #      last;
-  #    }
-  # }
-  # if (($bexists==1) && ($bupdate== 1)){
-  #  my $sql_installnew = $defdbschemacfg->{$pd}->{sql}; 
-  #  my $newobj = getcoldef($defdbschemacfg->{$pd}->{sql});
-  #  my @copycols = ();
-  #  for my $x (keys(%{$newobj})){
-       #   if (exists($oldobj->{$x})) {
-  #    push @copycols,$x;
-  #   }
-       #  }   
+}
+
+$db->dbexec("UPDATE invoices set direction ='in' WHERE direction='Eingang';");
+$db->dbexec("UPDATE invoices set direction ='out' WHERE direction='Ausgang';");
+$db->dbexec("update invoices set status='payed' WHERE status='bezahlt';");
+$db->dbexec("update invoices set status='planned' WHERE status='geplant';");
+$db->dbexec("update invoices set status='sended' WHERE status='verschickt';");
+$db->dbexec("update invoices set status='preparation' WHERE status='Vorbereitung';");
+$db->dbexec("update invoices set invoicetype='invoice' where invoicetype='Rechnung';");
+$db->dbexec("update invoices set invoicetype='creditnote' where invoicetype='Gutschrift';");
+$db->dbexec("update invoices set invoicetype='salary' where invoicetype='Gehalt';");
+$db->dbexec("update invoices set invoicetype='taxes' where invoicetype='Steuern';");
+$db->dbexec("update invoices set invoicetype='payroll' where invoicetype='Sozialabgaben';");
 
-  #  my @ainssql = ();
-  #  push(@ainssql,"DROP TABLE IF EXISTS new_".$defdbschemacfg->{$pd}->{tbl_name}. ";");
-  #  my $sql_tmptbl = $sql_installnew;
-  #  $sql_tmptbl =~ s/CREATE\ TABLE\ /CREATE TABLE new_/;
-  #  $sql_tmptbl =~ s/"//g;
-  #  push(@ainssql,$sql_tmptbl);
 
-  #  if ($defdbschemacfg->{$pd}->{tbl_name} ne "accounting"){
-  #    push(@ainssql,"INSERT INTO new_".$defdbschemacfg->{$pd}->{tbl_name}." (".join(',',@copycols).") SELECT ".join(',',@copycols)." FROM ".$defdbschemacfg->{$pd}->{tbl_name}.";");  
-  #  }elsif ((index($sql_tmptbl,"PRIMARY KEY (uuid)") > 0) && ($defdbschemacfg->{$pd}->{tbl_name} eq "accounting")) {
-  #     # adding primary keys
-  #     my $data = $db->dbquerysorted("select * from ".$defdbschemacfg->{$pd}->{tbl_name}.";");
-  #     push (@copycols,'uuid');
-  #     foreach my $da ( keys(%{$data})){
-  #       my @ndata = ();
-  #       foreach my $x (@copycols){
-  #        if ($x eq "uuid"){
-  #          push(@ndata,create_uuid_as_string());
-  #        } else {
-  #          push(@ndata,$data->{$da}->{$x});
-  #        }
-  #       }
-  #      push(@ainssql,"INSERT INTO new_".$defdbschemacfg->{$pd}->{tbl_name}." (".join(',',@copycols).") VALUES ('".join("','",@ndata)."');");
-  #    }
-  #  }
-  #  else {
-  #     push(@ainssql,"INSERT INTO new_".$defdbschemacfg->{$pd}->{tbl_name}." (".join(',',@copycols).") SELECT ".join(',',@copycols)." FROM ".$defdbschemacfg->{$pd}->{tbl_name}.";");
-  #  }
-  #  push(@ainssql,"DROP TABLE ".$defdbschemacfg->{$pd}->{tbl_name}.";");
-  #  push(@ainssql,"ALTER TABLE new_".$defdbschemacfg->{$pd}->{tbl_name}. " RENAME TO ".$defdbschemacfg->{$pd}->{tbl_name}.";");
-  #  $bvaccum = 1;
-  #  print Dumper(@ainssql);
-  #  my $stexec = 0;
-  #  for(my $s=0;$s<scalar(@ainssql);$s++){
-  #   if (defined($stexec)) {
-  #    print $ainssql[$s]."\n";  
-  #    $stexec = $db->dbexec($ainssql[$s]);
-  #   }
-  #  }
-  #  #print "tbl done\n";
-  # }
-  # elsif ($bexists == 0){
-  #   my $sql_installnew = $defdbschemacfg->{$pd}->{sql};
-  #   $db->dbexec($sql_installnew);
-  # }
-}
 
 
 sub    getcoldef($){
index 0257add..ed9ce25 100644 (file)
@@ -174,11 +174,15 @@ sub create_ddl_insert(){
                my @sqlval = ();\r
                foreach my $c (keys(%{$fields->{$tb}})){\r
                        my $v = $fields->{$tb}->{$c};\r
-                       $v =~ s/'/''/g;\r
                        push (@sqlcol,$c);\r
                        if ($v eq ''){\r
                                $v = 'null';\r
-                       } else {\r
+                       }\r
+                       elsif ($v =~ /^date\(/ ){\r
+                               $v = $v;\r
+                       } \r
+                       else {\r
+                               $v =~ s/'/''/g;\r
                                $v = "'".$v."'";\r
                        }\r
                        push (@sqlval,$v);\r
diff --git a/server/CGI/tmpl/app/license.tt b/server/CGI/tmpl/app/license.tt
deleted file mode 100644 (file)
index e69de29..0000000
index 39b9ce8..b6cc858 100644 (file)
     settings => "Einstellungen",
     reports => "Vorlagen",
     reload => "neu Laden",
+    product => "Produkt",
     displayname => "Name / Firma",
     title => "Titel",
     prename => "Vorname",
     surname => "Nachname",
+    import => "importieren",
+    open => "öffnen",
+    preview => "Vorschau",
+    print => "drucken",
+    send => "senden",
+    create => "erstellen",
 address => "Adresse",
 zip => "PLZ",
 city => "Ort",
diff --git a/server/CGI/tmpl/lists/invoicedirection.tt b/server/CGI/tmpl/lists/invoicedirection.tt
new file mode 100644 (file)
index 0000000..53e84a2
--- /dev/null
@@ -0,0 +1,4 @@
+[% invoicedirection = { 
+  "out" => {value => "out", text => "Eingang",class => ""},
+  "in" => {value => "in", text => "Ausgang",class=>""}
+} %]
\ No newline at end of file
diff --git a/server/CGI/tmpl/lists/invoicetypes.tt b/server/CGI/tmpl/lists/invoicetypes.tt
new file mode 100644 (file)
index 0000000..ed5e413
--- /dev/null
@@ -0,0 +1,7 @@
+[% invoicetypes = {
+  "invoice" => {value => "invoice", text => "Rechnung",class => ""},
+  "creditnote" => {value => "creditnote", text => "Gutschrift",class => ""},
+  "salary" = {value => "salary", text => "Gehalt",class => ""},
+  "taxes" => {value => "taxes", text => "Steuern",class => ""},
+  "payroll" => {value => "payroll", text => "Lohnkosten",class => ""}
+} %]
\ No newline at end of file
diff --git a/server/CGI/tmpl/lists/status.tt b/server/CGI/tmpl/lists/status.tt
new file mode 100644 (file)
index 0000000..f7a0789
--- /dev/null
@@ -0,0 +1,9 @@
+[% status = {
+  "preparation" => {value => "preparation", "text"=> "Vorbereitung", class=> "w3-text-black"},
+  "planned" => {value => "planned","text" => "geplant", class=> "w3-text-blue"},
+  "received" => {value => "received","text" => "erhalten", class=> "w3-text-purple"},
+  "sended" => {value => "sended","text" => "verschickt", class=> "w3-text-orange"},
+  "overdue" => {value => "overdue","text" => "überfällig", class=> "w3-text-red"},
+  "payed" => {value => "payed","text" => 'bezahlt', class=> "w3-text-green"},
+  "canceled" => {value => "canceled","text" => "storniert", class=> "w3-text-grey"}
+    } %]
\ No newline at end of file
index 889fc0b..2f729a8 100644 (file)
@@ -4,9 +4,9 @@
 [% cols = { clientnumber => 100 , displayname=> 350, address => 200, email => 200, phone => 200, action=> 120 }%]
 <div class="w3-display-container w3-animate-right">
   <div class="w3-container w3-bar TopNavigation" id="addresses_toolbar">
-    <!-- <button class="w3-bar-item Button_Navigation" onclick="parent.app.loadapppage('index');"/><img src="[% abspath %][% staticpath %]img/icons/back_white.svg" style="color: #fff; height: 24px;"/><br/>[% lbl.back %]</button> -->
+    
     <div class="w3-bar-item PageHeadTitle">[% lbl.addresses %]</div>
-    <!-- <button class="w3-bar-item Button_Navigation w3-right" onclick="parent.app.loadmodulepage('addresses/index.html',null);"/><img src="[% abspath %][% staticpath %]img/icons/Reload_white.svg" style="color: #fff; height: 24px;"/><br/>[% lbl.reload %]</button> -->
+    
       <button class="w3-bar-item Button_Navigation w3-right" onclick="record.remove('addresses');"><img src="[% abspath %][% staticpath %]img/icons/Trash_red.svg" style="color: #fff; height: 16px;"><br>
       [% lbl.remove %]</button>
       <button class="w3-bar-item Button_Navigation w3-right" onclick="record.duplicate('addresses/address');"><img src="[% abspath %][% staticpath %]img/icons/Duplicate_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.duplicate %]</button>
index 71fc1a7..bec47c6 100644 (file)
@@ -6,10 +6,8 @@
 [% adr = qadr.get_all() %]
 <div class="w3-display-container w3-animate-left">
   <div class="w3-container w3-bar TopNavigation">
-    <button class="w3-bar-item Button_Navigation" onclick="app.getpage('addresses');"><img src="[% abspath %][% staticpath %]img/icons/back_white.svg" style="color: #fff; height: 24px;"><br>[% lbl.back %]</button>
+    <button class="w3-bar-item Button_Navigation" onclick="app.getpage('addresses');"><img src="[% abspath %][% staticpath %]img/icons/back_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.back %]</button>
     <div class="w3-bar-item PageHeadTitle">[% lbl.address %]</div>
-    
-    <!-- <button class="w3-bar-item Button_Navigation w3-right" onclick="parent.app.reloadpage();"><img src="[% abspath %][% staticpath %]img/icons/Reload_white.svg" style="color: #fff; height: 24px;"><br>[% lbl.reload %]</button> -->
   </div>
   <div class="w3-container">
     <!-- [% Dumper.dump(params) %] -->
index a3c22f3..50d9936 100644 (file)
@@ -1,42 +1,53 @@
-[% PROCESS macro/fields.tt %]
+[% USE dksdb = DBI(dsn,dbuser,dbpassword) %]
+[% #PROCESS macro/fields.tt %]
+[% PROCESS lists/status.tt %]
 [% PROCESS "lang/${lang}.tt" %]
 <div class="w3-display-container">
   <div class="w3-container w3-bar TopNavigation">
-
-    <!-- <button class="w3-bar-item Button_Navigation w3-right" onclick="app.loadpage('index');"/><img src="[% abspath %][% staticpath %]img/icons/back_white.svg" style="color: #fff; height: 24px;"/><br/>[% lbl.back %]</button> -->
     <div class="w3-bar-item PageHeadTitle">[% lbl.invoices %]</div>
-    <!-- <button class="w3-bar-item Button_Navigation w3-right" onclick="parent.app.reloadpage();"/><img src="[% abspath %][% staticpath %]img/icons/Reload_white.svg" style="color: #fff; height: 24px;"/><br/>[% lbl.reload %]</button> -->
-    <button class="w3-bar-item Button_Navigation w3-right" onclick="form.deleteRecord();"><img src="[% abspath %][% staticpath %]img/icons/remove_white.svg" style="width: 16px;"><br/>[% lbl.remove %]</button>
-    <button class="w3-bar-item Button_Navigation w3-right" onclick="form.edit('webpages/webpage');"><img src="[% abspath %][% staticpath %]img/icons/edit_white.svg" style="width: 16px;"><br/>[% lbl.edit %]</button>
-    <button class="w3-bar-item Button_Navigation w3-right" onclick="form.edit('webpages/webpage');"><img src="[% abspath %][% staticpath %]img/icons/plus_white.svg" style="width: 16px;"><br/>[% lbl.add %]</button>  
+    <button class="w3-bar-item Button_Navigation w3-right" onclick="record.remove('invoices');"><img src="[% abspath %][% staticpath %]img/icons/Trash_red.svg" style="color: #fff; height: 16px;"><br>
+      [% lbl.remove %]</button>
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.duplicate('invoices/invoice');"><img src="[% abspath %][% staticpath %]img/icons/Duplicate_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.duplicate %]</button>
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.edit('invoices/invoice');"><img src="[% abspath %][% staticpath %]img/icons/Edit_white.svg" style="color: #fff; height: 16px;"><br>
+        [% lbl.edit %]</button> 
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.add('invoices/invoice');"><img src="[% abspath %][% staticpath %]img/icons/Add_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.add %]</button>
   </div>
 <div class="portalpanel">
   [% cols = { date => 100 , inout=> 80, receipient => 350, reference => 350, status => 110, amount => 110 , action=> 120 }%]
+
 <table class="portal">
   <thead>
     <tr>
-      <th style="min-width: [% cols.date %]px;width: [% cols.date %]px;max-width: [% cols.date %]px;">[% selectbox('preferences','preferences',pagename,'','','','','','test','Zeitraum','') %]</th>
-      <th style="min-width: [% cols.inout %]px;width: [% cols.inout %]px;max-width: [% cols.inout %]px;"><div class="portaltextheader">IN/OUT</div></th>
+      <th style="min-width: [% cols.date %]px;width: [% cols.date %]px;max-width: [% cols.date %]px;">Datum</th>
+      <th style="min-width: [% cols.inout %]px;width: [% cols.inout %]px;max-width: [% cols.inout %]px;">IN/OUT</th>
       <th style="min-width: [% cols.receipient %]px;width: [% cols.receipient %]px;max-width: [% cols.receipient %]px;"><div class="portalheader">Sender/Empfänger</div></th>
       <th style="min-width: [% cols.reference %]px;width: [% cols.reference %]px;max-width: [% cols.reference %]px;"><div class="portalheader">Referenz</div></th>
       <th style="min-width: [% cols.status %]px;width: [% cols.status %]px;max-width: [% cols.status %]px;"><div class="portalheader">Status</div></th>
       <th style="min-width: [% cols.amount %]px;width: [% cols.date %]px;max-width: [% cols.amount %]px;"><div class="portalheader">Betrag</div></th>
-      <th style="min-width: [% cols.action %]px;width: [% cols.action %]px;max-width: [% cols.action %]px;">&nbsp;</th>
+      <th></th>
     </tr>
   </thead>
   
-  <tbody style="height: calc(100vh - 180px);">
-    [% WHILE i < 100 %]  
-    <tr>
-      <td style="min-width: [% cols.date %]px;width: [% cols.date %]px;max-width: [% cols.date %]px;">DD.MM.YYYY</td>
-      <td style="min-width: [% cols.inout %]px;width: [% cols.inout %]px;max-width: [% cols.inout %]px;">OUT</td>
-      <td style="min-width: [% cols.receipient %]px;width: [% cols.receipient %]px;max-width: [% cols.receipient %]px;">Sender   Empfänger</td>
-      <td style="min-width: [% cols.reference %]px;width: [% cols.reference %]px;max-width: [% cols.reference %]px;">referenz</td>
-      <td style="min-width: [% cols.status %]px;width: [% cols.status %]px;max-width: [% cols.status %]px;">in Vorbereitung</div></td>
-      <td style="min-width: [% cols.amount %]px;width: [% cols.amount %]px;max-width: [% cols.amount %]px;">00000,00 €</td>
-      <td><button class="w3-button w3-grey" onclick="parent.app.loadmodulepage('invoices/invoice.html',{id:0});">bearb.</button></td>
+  <tbody style="height: calc(100vh - 180px);" id="ds_invoices">
+    [% qinv =  dksdb.prepare("select strftime('%d.%m.%Y',inv.invoicedate) as invoicedate,inv.id, inv.direction,case when inv.direction= 'out' then inv.receipientname else inv.sendername end as receipient,inv.reference,inv.status
+,replace(printf('%.2f',sum(round(bk.quantity * bk.unitamount,2))),'.',',') as netamount
+,replace(printf('%.2f',sum(round(bk.quantity * bk.unitamount * bk.taxpercent,2))),'.',',') as vatamount
+,replace(printf('%.2f',sum(round(bk.quantity * bk.unitamount,2)) + sum(round(bk.quantity * bk.unitamount * bk.taxpercent,2))),'.',',') as grossamount
+from invoices inv left join bookings bk on (inv.id=bk.id_invoice)
+group by inv.id order by inv.invoicedate desc")%]
+    [% FOREACH inv = qinv.execute() %]  
+    <tr  class="" id="ds_[% inv.id %]" data-id="[% inv.id %]" onclick="table.setselection('[% inv.id %]');">
+      <td style="min-width: [% cols.date %]px;width: [% cols.date %]px;max-width: [% cols.date %]px;">[% inv.invoicedate %]</td>
+      <td style="min-width: [% cols.inout %]px;width: [% cols.inout %]px;max-width: [% cols.inout %]px;">
+        [% IF inv.direction == 'out' %]<img src="[% abspath %][% staticpath %]img/icons/Out_green.svg" style="height: 20px;">[% ELSE %]<img src="[% abspath %][% staticpath %]img/icons/In_red.svg" style="height: 20px;">[% END %]
+      </td>
+      <td style="min-width: [% cols.receipient %]px;width: [% cols.receipient %]px;max-width: [% cols.receipient %]px;">[% inv.receipient %]</td>
+      <td style="min-width: [% cols.reference %]px;width: [% cols.reference %]px;max-width: [% cols.reference %]px;">[% inv.reference %]</td>
+      <td class="[% status.item(inv.status).item('class') %]" style="min-width: [% cols.status %]px;width: [% cols.status %]px;max-width: [% cols.status %]px;">[% status.item(inv.status).item('text') %] </div></td>
+      <td class="w3-right-align [% IF inv.grossamount.substr(0,1) == '-' %]w3-text-red[% END %]" style="min-width: [% cols.amount %]px;width: [% cols.amount %]px;max-width: [% cols.amount %]px;">[% inv.grossamount %] €</td>
+      <td></td>
     </tr>
-    [% i = i + 1 %]
+    
     [% END %]
     
   </tbody>
index c3b8b00..1c6755f 100644 (file)
@@ -1,44 +1,35 @@
 [% PROCESS macro/fields.tt %]
-<div class="w3-display-container">
+[% USE dksdb = DBI(dsn,dbuser,dbpassword) %]
+[% PROCESS "lang/${lang}.tt" %]
+[% PROCESS lists/status.tt %]
+[% PROCESS lists/invoicetypes.tt %]
+[% PROCESS lists/invoicedirection.tt %]
+[% qinv =dksdb.query("select * from invoices where id='${params.id}';") %]
+[% inv = qadr.get_all() %]
+<div class="w3-display-container w3-animate-left">
   <div class="w3-container w3-bar TopNavigation">
-    <button class="w3-bar-item Button_Navigation" onclick="parent.app.loadmodulepage('invoices/index.html',null);"><img src="[% abspath %][% staticpath %]img/icons/back_white.svg" style="color: #fff; height: 24px;"><br>
-    [% lbl.back %]</button>
-    <div class="w3-bar-item PageHeadTitle">
-      [% lbl.invoice %]
-    </div>
-    <div class="w3-bar-item">
-      [% invtypes = [
-      {value => "preparation","text"=> "in Vorbereitung", class=> "w3-text-black"},
-      {value => "planned","text" => "geplant", class=> "w3-text-blue"},
-      {value => "received","text" => "erhalten", class=> "w3-text-purple"},
-      {value => "sended","text" => "verschickt", class=> "w3-text-orange"},
-      {value => "overdue","text" => "überfällig", class=> "w3-text-red"},
-      {value => "payed","text" => 'bezahlt', class=> "w3-text-green"},
-      {value => "canceled","text" => "storniert", class=> "w3-text-grey"}
-    ] %]
-    <span class="w3-text-white">Status:</span>[% selectbox('status','invoices','','','','','','','','',invtypes) %]
+    <button class="w3-bar-item Button_Navigation" onclick="app.getpage('invoices');"><img src="[% abspath %][% staticpath %]img/icons/back_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.back %]</button>
+    <div class="w3-bar-item PageHeadTitle">[% lbl.invoice %]</div>
+    <div class="w3-bar-item" style="width: 150px;">[% selectbox('status','invoices','','','','','','','','','Status') %]</div>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/PDF_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.create %]</button>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/Print_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.print %]</button>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/Preview_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.preview %]</button>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/ViewPDF_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.open %]</button>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/download_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.import %]</button>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/folder_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.open %]</button>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick=""><img src="[% abspath %][% staticpath %]img/icons/Email_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.send %]</button>
   </div>
-    <button class="w3-bar-item Button_Navigation w3-right" onclick="parent.app.reloadpage();"><img src="[% abspath %][% staticpath %]img/icons/Reload_white.svg" style="color: #fff; height: 24px;"><br>
-    [% lbl.reload %]</button>
-    </div>
   
   <div class="w3-container">
     <div class="w3-row">
-      <div class="w3-cell w3-container" style="width: 420px;">
+      <div class="w3-cell w3-container">
         <div class="w3-row">
-          <div class="w3-cell" style="width: 100px;">
-            [% invdirection = [
-              {value => "out", text => "Eingang",class => ""},
-              {value => "in", text => "Ausgang",class=""}
-            ] %]
-            [% selectbox('invoicetype','invoices','','Typ','','','','','','',invdirection) %]
+          <div class="w3-cell" style="width: 100px;"> 
+            [% selectbox('direction','invoices','','Richtung','','','','','','','') %]
           </div>
           <div class="w3-cell" style="width: 100px;">
-            [% invtypes = [
-              {value => "invoice", text => "Rechnung",class => ""},
-              {value => "creditnote", text => "Gutschrift",class => ""},
-            ] %]
-            [% selectbox('invoicetype','invoices','','Typ','','','','','','',invtypes) %]
+            
+            [% selectbox('invoicetype','invoices','','Typ','','','','','','','') %]
           </div>
           <div class="w3-cell" style="width: 200px;">
             [% reports = [
             
           </div> -->
         </div>
-        <div class="w3-row">
-          <div class="w3-cell" style="width: 400px;">
-            [% selectbox('id_receipient','invoices','','Empfänger','','','','','','','status') %]
-          </div>
-        </div>
-        <div class="w3-row">
-          <div class="w3-cell" style="width: 400px;">
-            [% selectbox('id_sender','invoices','','Sender','','','','','','','status') %]
-          </div>
-        </div>
         <div class="w3-row">
           <div class="w3-cell"  style="width: 300px;">
           [% inputbox('reminderdates','invoices','','Mahnungsdaten','text','','','','','') %]
             [% inputbox('byear','invoices','','G.Jahr','text','','')%]
           </div>
         </div>
+        
+      </div>
+      <div class="w3-cell">
+        <div class="w3-row" >
+          <div class="w3-cell">
+            [% inputbox('receipientname','invoices','','Empfänger','','','','','','','') %]
+          </div>
+        </div>
         <div class="w3-row">
           <div class="w3-cell">
-            [% inputbox('netamount','invoices','','Netto','currency','w3-large','','readonly','00000.00','') %] 
+            [% inputbox('receipientaddress','invoices','','Adresse','','','','','','','') %]
           </div>
+        </div>
+        <div class="w3-row">
           <div class="w3-cell">
-            [% inputbox('vatamount','invoices','','MwSt','currency','','','readonly','0000.00','') %]
+            [% inputbox('receipientcountry','invoices','','Land','','','','','','','') %]
           </div>
           <div class="w3-cell">
-            [% inputbox('grossamount','invoices','','Brutto','currency','','','readonly','000000.00','') %] 
+            [% inputbox('receipientzip','invoices','','PLZ','','','','','','','') %]
           </div>
           <div class="w3-cell">
-            [% inputbox('payedamount','invoices','','Bezahlt','currency','','','','000000.00','') %]
+            [% inputbox('receipientcity','invoices','','Ort','','','','','','','') %]
           </div>
         </div>
       </div>
       <div class="w3-cell">
-        <div class="portalpanel">
-          [% cols = { sku => 80 , quantity =>90,description => 390, vat => 80, netamount => 100 , action=> 50 }%]
-        <table class="portal" sytle="height: calc(100vh - 60px);">
+            [% inputbox('netamount','invoices','','Netto','currency','w3-large','','readonly','00000.00','') %] 
+            [% inputbox('vatamount','invoices','','MwSt','currency','','','readonly','0000.00','') %]
+            [% inputbox('grossamount','invoices','','Brutto','currency','','','readonly','000000.00','') %] 
+            [% inputbox('payedamount','invoices','','Bezahlt','currency','','','','000000.00','') %]
+          </div>
+    </div>
+  </div>
+  <div class="w3-container w3-bar TopNavigation">
+    <div class="w3-bar-item PageHeadTitle">[% lbl.bookings %]</div>
+    <button class="w3-bar-item Button_Navigation w3-right" onclick="record.remove('bookings');"><img src="[% abspath %][% staticpath %]img/icons/Trash_red.svg" style="color: #fff; height: 16px;"><br>
+      [% lbl.remove %]</button>
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.duplicate('bookings/booking');"><img src="[% abspath %][% staticpath %]img/icons/Duplicate_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.duplicate %]</button>
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.edit('bookings/booking');"><img src="[% abspath %][% staticpath %]img/icons/Edit_white.svg" style="color: #fff; height: 16px;"><br>
+        [% lbl.edit %]</button> 
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.add('bookings/booking');"><img src="[% abspath %][% staticpath %]img/icons/Add_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.add %]</button>
+      <button class="w3-bar-item Button_Navigation w3-right" onclick="record.add('products/priduct');"><img src="[% abspath %][% staticpath %]img/icons/Add_white.svg" style="color: #fff; height: 16px;"><br>[% lbl.product %]</button>
+  </div>
+  <div class="portalpanel">
+          [% cols = { sku => 80 , quantity =>40,unit=>100,description => 500, vat => 80, netamount => 100 }%]
+        <table class="portal" sytle="height: calc(50vh - 60px);">
           <thead>
             <tr>
-              <th style="min-width: [% cols.sku %]px;width: [% cols.sku %]px;max-width: [% cols.sku %]px;"><div class="portaltextheader">SKU</div></th>
-              <th style="min-width: [% cols.quantity %]px;width: [% cols.quantity %]px;max-width: [% cols.quantity %]px;"><div class="portaltextheader">Qu / Unit</div></th>
-              <th style="min-width: [% cols.description %]px;width: [% cols.description %]px;max-width: [% cols.description %]px;"><div class="portaltextheader">Product/Dienstleistung</div></th>
-              <th style="min-width: [% cols.vat %]px;width: [% cols.vat %]px;max-width: [% cols.vat %]px;"><div class="portaltextheader">MwSt.</div></th>
-              <th style="min-width: [% cols.netamount %]px;width: [% cols.netamount %]px;max-width: [% cols.netamount %]px;"><div class="portaltextheader">Netto</div></th>
-              <th style="min-width: [% cols.action %]px;width: [% cols.action %]px;max-width: [% cols.action %]px;">&nbsp;</th>
+              <th style="min-width: [% cols.sku %]px;width: [% cols.sku %]px;max-width: [% cols.sku %]px;">SKU</th>
+              <th style="min-width: [% cols.quantity %]px;width: [% cols.quantity %]px;max-width: [% cols.quantity %]px;">Qu</th>
+              <th style="min-width: [% cols.description %]px;width: [% cols.description %]px;max-width: [% cols.description %]px;">Product/Dienstleistung</th>
+              <th style="min-width: [% cols.vat %]px;width: [% cols.vat %]px;max-width: [% cols.vat %]px;">MwSt.</th>
+              <th style="min-width: [% cols.netamount %]px;width: [% cols.netamount %]px;max-width: [% cols.netamount %]px;">Netto</th>
+              <th></th>
             </tr>
           </thead>
           
-          <tbody style="height: 85vh;">
+          <tbody style="height: calc(100vh - 440px);">
             [% WHILE i < 10 %]
             <tr>
               <td style="min-width: [% cols.sku %]px;width: [% cols.sku %]px;max-width: [% cols.sku %]px;"><div class="portaltextdeader">SKU-001</div></td>
               <td style="min-width: [% cols.description %]px;width: [% cols.description %]px;max-width: [% cols.description %]px;"><div class="portalheader">Product/Dienstleistung</div></td>
               <td style="min-width: [% cols.vat %]px;width: [% cols.vat %]px;max-width: [% cols.vat %]px;"><div class="portalheader">000,00€</div></td>
               <td style="min-width: [% cols.netamount %]px;width: [% cols.netamount %]px;max-width: [% cols.netamount %]px;"><div class="portalheader">00000,00€</div></td>
-              <td><button class="w3-button w3-grey" onclick="booking.remove();">X</button></td>
+              <td></td>
             </tr>
             [% i = i + 1 %]
             [% END %]
           
         </table>
         </div>
-      </div>
-    </div>
-  </div>
 </div>
index 4f54a18..f3e3235 100644 (file)
@@ -19,9 +19,6 @@
     <div class="w3-bar DKS" id="toolbar">
         <button onclick="app.refesh();" class="Button_Navigation w3-bar-item"><img  src="[% abspath %][% staticpath %]img/invoicejournal.png" style="height: 28px;"/><br/></button>
        <div class="w3-bar-item PageHeadTitle">Invoice Journal</div>
-      <!--<button class="w3-bar-item Button_Navigation" onclick="app.getpage('profile');"><img src="[% abspath %]img/icons/user_white.svg" style="width: 28px;"><br/>Profile</button>
-      <button class="w3-bar-item Button_Navigation" onclick="app.getpage('users');"><img src="[% abspath %]img/icons/group_white.svg" style="width: 28px;"><br/>Benutzer</button>-->
-      
       <button class="w3-bar-item Button_Navigation" onclick="app.getpage('invoices',null);"><img src="[% abspath %][% staticpath %]img/icons/Bill2_white.svg" style="width: 28px;"><br/>[% lbl.invoices %]</button>
       <button class="w3-bar-item Button_Navigation" onclick="app.getpage('addresses',null);"><img src="[% abspath %][% staticpath %]img/icons/Contacts_white.svg" style="width: 28px;"><br/>[% lbl.addresses %]</button>
       <button class="w3-bar-item Button_Navigation" onclick="app.getpage('products',null);"><img src="[% abspath %][% staticpath %]img/icons/Product2_white.svg" style="width: 28px;"><br/>[% lbl.products %]</button>
@@ -39,7 +36,6 @@
 <script src="[% abspath %][% staticpath %]js/app.js?v=[% vstamp %]"></script>
 <script src="[% abspath %][% staticpath %]js/table.js?v=[% vstamp %]"></script>
 <script src="[% abspath %][% staticpath %]js/record.js?v=[% vstamp %]"></script>
-<!-- <script src="[% abspath %][% staticpath %]js/admin.js?v=[% vstamp %]"></script> -->
 
 </body>
 </html>
\ No newline at end of file
index 427029f..af910b1 100644 (file)
@@ -1866,3 +1866,39 @@ span.currency::after {
        content: "€";         
        padding: 3px 4px 3px 3px;
 }
+
+select
+{
+       background-image: none;
+       background-color: rgba(100%,100%,100%,1);
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+       border-top-style: solid;
+       border-right-style: solid;
+       border-bottom-style: solid;
+       border-left-style: solid;
+       border-top-width: 1pt;
+       border-right-width: 1pt;
+       border-bottom-width: 1pt;
+       border-left-width: 1pt;
+       border-image-source: none;
+       font-family: -fm-font-family(Arial,ArialMT); 
+       font-weight: normal;
+       font-size: 12pt;
+       color: rgba(0%,0%,0%,1);
+       line-height: 1line;
+       text-align: left;
+}
+select:focus
+{
+       border-top-color: rgba(0%,43.9216%,81.1765%,1);
+       border-right-color: rgba(0%,43.9216%,81.1765%,1);
+       border-bottom-color: rgba(0%,43.9216%,81.1765%,1);
+       border-left-color: rgba(0%,43.9216%,81.1765%,1);
+}
+::-webkit-select-placeholder
+{
+       color: rgba(60.3922%,60.3922%,60.3922%,1);
+}
\ No newline at end of file
index 98d2442..46eff30 100644 (file)
@@ -263,12 +263,8 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 
 .w3-select {
   display: block;
-  font-size: 9pt;
-  font-family: sans-serif;
-  font-weight: normal;
   color: #000;
-  line-height: 1.3;
-  padding: .6em 1.4em .5em .8em;
+  padding: 4px;
   width: 100%;
   max-width: 100%; 
   box-sizing: border-box;
@@ -289,12 +285,8 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 
 .w3-currency {
   display: block;
-  font-size: 9pt;
-  font-family: sans-serif;
-  font-weight: normal;
   color: #000;
-  line-height: 1.3;
-  padding: .6em 1.4em .5em .8em;
+  padding: 4px;
   width: 100%;
   max-width: 100%; 
   box-sizing: border-box;
@@ -407,6 +399,11 @@ input[type=number]::-webkit-outer-spin-button {
   margin: 0; 
 }
 
+input[type=date]::-webkit-inner-spin-button, 
+input[type=dater]::-webkit-outer-spin-button { 
+  -webkit-appearance: none; 
+  margin: 0; 
+}
 
   
 /* .mceContentBody { 
similarity index 98%
rename from server/htdocs/img/icons/E-mail.svg
rename to server/htdocs/img/icons/Email.svg
index 0aa4133..d7cbfaf 100644 (file)
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"\r
-        x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24">\r
-<polygon points="24,19.194 15.565,12.661 24,4.39       "/>\r
-<polygon points="0,4.031 8.794,12.542 0,19.782         "/>\r
-<path d="M13.6,14.844c-0.5,0.493-1.62,0.493-2.311-0.164l-1.664-1.307L0.75,20.441L24,20.416l-8.91-6.806\r
-               L13.6,14.844z"/>\r
-<path d="M23.56,3.451l-9.896,9.685c-0.658,0.566-1.729,0.566-2.393,0L0.75,3.469L23.56,3.451z"/>\r
-</svg>\r
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+        x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24">
+<polygon points="24,19.194 15.565,12.661 24,4.39       "/>
+<polygon points="0,4.031 8.794,12.542 0,19.782         "/>
+<path d="M13.6,14.844c-0.5,0.493-1.62,0.493-2.311-0.164l-1.664-1.307L0.75,20.441L24,20.416l-8.91-6.806
+               L13.6,14.844z"/>
+<path d="M23.56,3.451l-9.896,9.685c-0.658,0.566-1.729,0.566-2.393,0L0.75,3.469L23.56,3.451z"/>
+</svg>
diff --git a/server/htdocs/img/icons/Email_white.svg b/server/htdocs/img/icons/Email_white.svg
new file mode 100644 (file)
index 0000000..e25faca
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+        x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24">
+<polygon fill="#fff" points="24,19.194 15.565,12.661 24,4.39   "/>
+<polygon fill="#fff" points="0,4.031 8.794,12.542 0,19.782     "/>
+<path fill="#fff" d="M13.6,14.844c-0.5,0.493-1.62,0.493-2.311-0.164l-1.664-1.307L0.75,20.441L24,20.416l-8.91-6.806
+               L13.6,14.844z"/>
+<path fill="#fff" d="M23.56,3.451l-9.896,9.685c-0.658,0.566-1.729,0.566-2.393,0L0.75,3.469L23.56,3.451z"/>
+</svg>
diff --git a/server/htdocs/img/icons/Folder.svg b/server/htdocs/img/icons/Folder.svg
new file mode 100644 (file)
index 0000000..66c9c4a
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r      x="0px" y="0px" width="50px" height="50px" viewBox="0 0 22.94 15.26"> \r<path d="M5.388822,5.0339882L22.943006,5.0339882 18.721215,15.256989 1.6100047,15.256989z M0,0L6.6660105,0 8.0000125,2.9348083 18.70703,2.9348083 18.70403,3.8337495 4.5530072,3.8337495 0.33200061,15.257004 0,15.257004z"/> \r</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/Folder_white.svg b/server/htdocs/img/icons/Folder_white.svg
new file mode 100644 (file)
index 0000000..bf24904
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+        x="0px" y="0px" width="50px" height="50px" viewBox="0 0 22.94 15.26"> 
+<path  fill="#fff" d="M5.388822,5.0339882L22.943006,5.0339882 18.721215,15.256989 1.6100047,15.256989z M0,0L6.6660105,0 8.0000125,2.9348083 18.70703,2.9348083 18.70403,3.8337495 4.5530072,3.8337495 0.33200061,15.257004 0,15.257004z"/> 
+</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/In_red.svg b/server/htdocs/img/icons/In_red.svg
new file mode 100644 (file)
index 0000000..2719d6e
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+        x="0px" y="0px" width="50px" height="50px" viewBox="0 0 337.75 309"> 
+<path fill="#f00" d="M168.877288818359,0L337.753997802734,125.378739102553 232.19889831543,125.378739102553 232.19889831543,309.000000699232 105.555671691895,309.000000699232 105.555671691895,125.378739102553 0,125.378739102553z"/> 
+</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/Out_green.svg b/server/htdocs/img/icons/Out_green.svg
new file mode 100644 (file)
index 0000000..e03e87a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+        x="0px" y="0px" width="50px" height="50px" viewBox="0 0 301.9 319"> 
+<path fill="#0f0" d="M94.3515322208405,0L207.552948236465,0 207.552948236465,189.563659667969 301.904999017715,189.563659667969 150.952224969864,319 0,189.563659667969 94.3515322208405,189.563659667969z"/> 
+</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/PDF_white.svg b/server/htdocs/img/icons/PDF_white.svg
new file mode 100644 (file)
index 0000000..816c7c2
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+        x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24">
+<polygon fill="#fff" points="22.042,8.168 13.957,8.168 13.957,0.084 "/>
+<path fill="#fff" d="M11.638,15.152c-0.328,0-0.539,0.029-0.664,0.057v4.24c0.125,0.03,0.327,0.03,0.509,0.03
+               c1.328,0.009,2.192-0.722,2.192-2.27C13.687,15.863,12.898,15.152,11.638,15.152z"/>
+<path fill="#fff" d="M5.972,15.133c-0.298,0-0.501,0.028-0.607,0.057v1.915c0.125,0.027,0.279,0.038,0.491,0.038
+               c0.779,0,1.259-0.395,1.259-1.059C7.114,15.488,6.701,15.133,5.972,15.133z"/>
+<path fill="#fff" d="M11.874,9.979V0H1.833v24h20.209l0.033-14.021H11.874z M7.971,17.584c-0.5,0.472-1.24,0.683-2.105,0.683
+               c-0.192,0-0.366-0.009-0.501-0.029v2.317H3.914v-6.394c0.453-0.077,1.086-0.135,1.98-0.135c0.903,0,1.549,0.174,1.98,0.521
+               c0.415,0.326,0.692,0.864,0.692,1.499S8.356,17.219,7.971,17.584z M14.158,19.786c-0.685,0.567-1.723,0.837-2.992,0.837
+               c-0.759,0-1.298-0.048-1.663-0.097v-6.365c0.537-0.087,1.239-0.135,1.979-0.135c1.23,0,2.031,0.222,2.655,0.693
+               c0.673,0.499,1.096,1.297,1.096,2.442C15.233,18.402,14.78,19.257,14.158,19.786z M20.162,15.275h-2.49v1.481h2.326v1.193h-2.326
+               v2.604h-1.471v-6.48h3.961V15.275z"/>
+</svg>
diff --git a/server/htdocs/img/icons/Preview.svg b/server/htdocs/img/icons/Preview.svg
new file mode 100644 (file)
index 0000000..3aca80b
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r      x="0px" y="0px" width="50px" height="50px" viewBox="0 0 49.01 64"> \r<path d="M26.039215,27.629606C24.107988,27.5842 22.149706,28.184616 20.511932,29.472662 16.77305,32.416664 16.125353,37.835873 19.06934,41.576878 22.011927,45.318378 27.430601,45.964779 31.172083,43.021477 34.913666,40.078873 35.559963,34.660168 32.615376,30.918665 30.960508,28.813955 28.522223,27.687988 26.039215,27.629606z M26.175369,21.674006C30.374353,21.772219 34.498257,23.675474 37.298256,27.23436 41.403736,32.454266 41.370037,39.598373 37.681053,44.73708L49.014999,59.141796 42.839928,64 31.546482,49.648384C25.63571,52.165989 18.550442,50.550785 14.386461,45.260479 9.4086151,38.932873 10.50158,29.769463 16.82905,24.790958 19.598192,22.613169 22.909492,21.597618 26.175369,21.674006z M17.5919,3.8808338E-30L35.9291,3.8808338E-30C38.934898,-3.5527137E-15,41.373001,2.4387343,41.373001,5.4433918L41.373001,24.876833 41.308846,24.805635C40.161221,23.562506,38.841671,22.462914,37.384888,21.539429L37.016998,21.312212 37.016998,5.4433918C37.016998,4.8445082,36.527302,4.3547654,35.9291,4.3547649L17.877001,4.3547649 17.584,13.852381C17.584,13.852381,17.205099,20.131718,10.2845,19.373112L4.3529701,19.213013 4.3529701,46.19437C4.3529696,46.795174,4.8424096,47.281574,5.4440298,47.281574L9.5967226,47.281574 9.7358932,47.479958C10.809489,48.970966,12.10646,50.308796,13.581778,51.45116L13.827712,51.637001 5.4440298,51.637001C2.4367697,51.637001,-2.9663937E-07,49.200287,2.7083472E-14,46.19437L2.7083472E-14,18.560608 2.156249,16.286495 2.15833,16.225395 13.4551,4.3547649 13.4238,4.3547649 10.4036,7.5417938 13.5677,4.1882553 13.6134,4.1882553 13.7129,4.0832739 13.7227,4.0832739z"/> \r</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/Preview_white.svg b/server/htdocs/img/icons/Preview_white.svg
new file mode 100644 (file)
index 0000000..082713a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+        x="0px" y="0px" width="50px" height="50px" viewBox="0 0 49.01 64"> 
+<path fill="#fff" d="M26.039215,27.629606C24.107988,27.5842 22.149706,28.184616 20.511932,29.472662 16.77305,32.416664 16.125353,37.835873 19.06934,41.576878 22.011927,45.318378 27.430601,45.964779 31.172083,43.021477 34.913666,40.078873 35.559963,34.660168 32.615376,30.918665 30.960508,28.813955 28.522223,27.687988 26.039215,27.629606z M26.175369,21.674006C30.374353,21.772219 34.498257,23.675474 37.298256,27.23436 41.403736,32.454266 41.370037,39.598373 37.681053,44.73708L49.014999,59.141796 42.839928,64 31.546482,49.648384C25.63571,52.165989 18.550442,50.550785 14.386461,45.260479 9.4086151,38.932873 10.50158,29.769463 16.82905,24.790958 19.598192,22.613169 22.909492,21.597618 26.175369,21.674006z M17.5919,3.8808338E-30L35.9291,3.8808338E-30C38.934898,-3.5527137E-15,41.373001,2.4387343,41.373001,5.4433918L41.373001,24.876833 41.308846,24.805635C40.161221,23.562506,38.841671,22.462914,37.384888,21.539429L37.016998,21.312212 37.016998,5.4433918C37.016998,4.8445082,36.527302,4.3547654,35.9291,4.3547649L17.877001,4.3547649 17.584,13.852381C17.584,13.852381,17.205099,20.131718,10.2845,19.373112L4.3529701,19.213013 4.3529701,46.19437C4.3529696,46.795174,4.8424096,47.281574,5.4440298,47.281574L9.5967226,47.281574 9.7358932,47.479958C10.809489,48.970966,12.10646,50.308796,13.581778,51.45116L13.827712,51.637001 5.4440298,51.637001C2.4367697,51.637001,-2.9663937E-07,49.200287,2.7083472E-14,46.19437L2.7083472E-14,18.560608 2.156249,16.286495 2.15833,16.225395 13.4551,4.3547649 13.4238,4.3547649 10.4036,7.5417938 13.5677,4.1882553 13.6134,4.1882553 13.7129,4.0832739 13.7227,4.0832739z"/> 
+</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/Print_white.svg b/server/htdocs/img/icons/Print_white.svg
new file mode 100644 (file)
index 0000000..44366b8
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+        x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24">
+<path fill="#fff" d="M22.814,3.814H1.185C0.53,3.814,0,4.346,0,5v10.666c0,0.654,0.53,1.186,1.185,1.186h2.552v5.758h16.407
+               v-5.758h2.671c0.653,0,1.185-0.531,1.185-1.186V5C23.999,4.346,23.468,3.814,22.814,3.814z M19.144,21.609H4.737V10.642h14.407
+               V21.609z"/>
+<rect fill="#fff" x="6.167" width="11.664" height="2.476"/>
+</svg>
diff --git a/server/htdocs/img/icons/ViewPDF.svg b/server/htdocs/img/icons/ViewPDF.svg
new file mode 100644 (file)
index 0000000..49169f9
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r      x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.89 36.72"> \r<path d="M7.6448536,28.572465C5.1143398,29.321172 3.2635136,31.219585 2.6202049,31.95009 2.6280251,31.808189 2.356535,32.261993 2.356535,32.261993 2.356535,32.261993 2.4607849,32.133092 2.6202049,31.95009 2.6175251,32.005491 2.5765038,32.142791 2.4554157,32.441694 2.0205956,33.515901 3.3663025,33.488502 3.3663025,33.488502 7.1807442,32.910997 7.6448536,28.572465 7.6448536,28.572465z M29.497485,24.916215C28.788642,24.916154 28.351388,24.958539 28.351388,24.958539 32.41118,28.265863 36.186571,27.494958 36.186571,27.494958 37.732168,27.302356 35.374073,25.970947 35.374073,25.970947 33.193819,25.071157 30.85073,24.916334 29.497485,24.916215z M15.625316,15.985075C15.625316,15.985075,14.15922,23.086126,12.327924,25.192241L22.486601,23.68123C22.486601,23.68123,17.424112,19.144097,15.625316,15.985075z M34.571964,7.8262539C34.769434,7.8133474,34.994606,7.8998456,35.23263,8.0976054L36.79708,9.4043382C37.556257,10.040459,38.799718,11.079494,39.559395,11.712915L41.125042,13.021558C41.886219,13.65698,41.874519,14.685113,41.104244,15.304233L39.515696,16.582876C38.74422,17.206696,37.483257,18.22163,36.711882,18.842151L35.123232,20.120092C34.353255,20.743913,33.731476,20.222995,33.742476,18.966455L33.763976,16.552374 24.553265,16.552374C23.904886,16.552374,23.379,16.025556,23.379,15.377135L23.379,12.830751C23.379,12.18303,23.904886,11.656913,24.553265,11.656913L33.808373,11.656913 33.829072,9.2285321C33.837186,8.3641583,34.137532,7.8546474,34.571964,7.8262539z M15.822783,2.8691583C15.709185,2.8831162 15.592195,3.0075927 15.478817,3.3033819 15.478817,3.3033819 14.930717,5.9252309 16.302514,10.281932 16.302515,10.281933 17.469812,6.8248974 16.590914,4.1791182 16.590914,4.1791182 16.228488,2.8193059 15.822783,2.8691583z M14.581626,0.00061225891C15.662847,-0.04088068 16.637714,2.0410428 16.637714,2.0410433 19.668307,8.5202198 16.802514,12.66025 16.802514,12.66025 19.803807,19.737801 25.818194,23.517129 25.818194,23.517129 31.661881,23.203327 35.925572,24.679838 35.925572,24.679838 39.279064,26.44415 38.156467,28.093362 38.156467,28.093362 34.641575,32.015291 24.318197,25.899246 24.318197,25.899246L11.011526,28.142162C9.0889406,34.722911 2.6631737,36.269222 2.6631737,36.269222 -0.40004921,36.715724 0.019384384,33.519802 0.019384384,33.519802 2.4100056,28.258064 8.4217119,27.047655 8.4217119,27.047655 10.789427,24.516437 14.660018,12.62055 14.660018,12.62055 10.749126,3.8301156 13.497121,0.90566444 13.497121,0.90566492 13.848995,0.26420975 14.221219,0.014443398 14.581626,0.00061225891z"/> \r</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/ViewPDF_white.svg b/server/htdocs/img/icons/ViewPDF_white.svg
new file mode 100644 (file)
index 0000000..b3e047a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+        x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.89 36.72"> 
+<path fill="#fff" d="M7.6448536,28.572465C5.1143398,29.321172 3.2635136,31.219585 2.6202049,31.95009 2.6280251,31.808189 2.356535,32.261993 2.356535,32.261993 2.356535,32.261993 2.4607849,32.133092 2.6202049,31.95009 2.6175251,32.005491 2.5765038,32.142791 2.4554157,32.441694 2.0205956,33.515901 3.3663025,33.488502 3.3663025,33.488502 7.1807442,32.910997 7.6448536,28.572465 7.6448536,28.572465z M29.497485,24.916215C28.788642,24.916154 28.351388,24.958539 28.351388,24.958539 32.41118,28.265863 36.186571,27.494958 36.186571,27.494958 37.732168,27.302356 35.374073,25.970947 35.374073,25.970947 33.193819,25.071157 30.85073,24.916334 29.497485,24.916215z M15.625316,15.985075C15.625316,15.985075,14.15922,23.086126,12.327924,25.192241L22.486601,23.68123C22.486601,23.68123,17.424112,19.144097,15.625316,15.985075z M34.571964,7.8262539C34.769434,7.8133474,34.994606,7.8998456,35.23263,8.0976054L36.79708,9.4043382C37.556257,10.040459,38.799718,11.079494,39.559395,11.712915L41.125042,13.021558C41.886219,13.65698,41.874519,14.685113,41.104244,15.304233L39.515696,16.582876C38.74422,17.206696,37.483257,18.22163,36.711882,18.842151L35.123232,20.120092C34.353255,20.743913,33.731476,20.222995,33.742476,18.966455L33.763976,16.552374 24.553265,16.552374C23.904886,16.552374,23.379,16.025556,23.379,15.377135L23.379,12.830751C23.379,12.18303,23.904886,11.656913,24.553265,11.656913L33.808373,11.656913 33.829072,9.2285321C33.837186,8.3641583,34.137532,7.8546474,34.571964,7.8262539z M15.822783,2.8691583C15.709185,2.8831162 15.592195,3.0075927 15.478817,3.3033819 15.478817,3.3033819 14.930717,5.9252309 16.302514,10.281932 16.302515,10.281933 17.469812,6.8248974 16.590914,4.1791182 16.590914,4.1791182 16.228488,2.8193059 15.822783,2.8691583z M14.581626,0.00061225891C15.662847,-0.04088068 16.637714,2.0410428 16.637714,2.0410433 19.668307,8.5202198 16.802514,12.66025 16.802514,12.66025 19.803807,19.737801 25.818194,23.517129 25.818194,23.517129 31.661881,23.203327 35.925572,24.679838 35.925572,24.679838 39.279064,26.44415 38.156467,28.093362 38.156467,28.093362 34.641575,32.015291 24.318197,25.899246 24.318197,25.899246L11.011526,28.142162C9.0889406,34.722911 2.6631737,36.269222 2.6631737,36.269222 -0.40004921,36.715724 0.019384384,33.519802 0.019384384,33.519802 2.4100056,28.258064 8.4217119,27.047655 8.4217119,27.047655 10.789427,24.516437 14.660018,12.62055 14.660018,12.62055 10.749126,3.8301156 13.497121,0.90566444 13.497121,0.90566492 13.848995,0.26420975 14.221219,0.014443398 14.581626,0.00061225891z"/> 
+</svg>
\ No newline at end of file
diff --git a/server/htdocs/img/icons/download_white.svg b/server/htdocs/img/icons/download_white.svg
new file mode 100644 (file)
index 0000000..a7f9734
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+        x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24">
+<polygon fill="#fff" points="24,23.998 0,24 0,13.953 3.6,13.949 3.6,20.4 20.438,20.418 20.438,13.953 24,13.951 "/>
+<polygon  fill="#fff" points="9.656,6.551 9.656,0 14.168,0 14.168,6.551 19.124,6.551 12,15.576 4.877,6.551 "/>
+</svg>