Files
adminandClaude Opus 5 490c4f12a4 Termine auf Prepared Statements umgebaut
Kalender, Terminliste, Terminformular und Terminzettel laufen ueber
db_abfrage() mit Platzhaltern; das Anlegen einer mehrtaegigen Terminreihe
liegt in einer Transaktion. Die Logik steckt jetzt in incs/termin.php,
sites/termin*.php rufen sie nur noch auf.

Dabei behoben:
- SQL-Injektion ueber die Suchbegriffe der Terminliste, ueber die
  Mehrfachauswahl (Ankreuzfelder del<N>/erl<N> gingen roh in DELETE bzw.
  UPDATE), ueber die Wiedervorlage-Tage (INTERVAL $folgedays DAY) und ueber
  ?action=terminshow&id=... in maketerminarray(), maketerminadresse(),
  maketelnrn() und makegooglestring()
- gespeichertes XSS: Beschreibung, Notiz, Termintyp, Ort, Kundenname und
  Mitarbeiterfarbe im Kalender, in der Terminliste und im Formular
- "or $err=error(...)" stand innerhalb des Abfrage-Strings, dadurch wurden
  die Nebenzeilen einer Terminreihe beim Loeschen nie entfernt
- die Abfrage zum Folgetermin las eine Spalte typ_id, die es in termin nicht
  gibt; Typ und Wiedervorlage fehlten deshalb beim Bearbeiten
- ein Folgetermin wurde mit termtime='' und termdauer='' angelegt, ein
  Termin ohne Folgetermin mit followed_by='' - im strikten Modus Fehler
- ein Termin ohne Datum landete auf dem 01.01.1970 und gab dabei
  "NICHTTERMINIERT!!" mitten in die Seite aus
- die Ueberschneidungspruefung verglich ab dem zweiten Tag gegen das Ende
  des ersten Tages
- eine unbekannte Registerkarte der Terminliste ergab ein leeres WHERE und
  damit einen SQL-Fehler; jetzt gilt die Standardansicht
- terminshow.php pruefte den Typ mit = statt ==
- der Kalender haengt nicht mehr an der Locale de_DE (strftime)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 00:04:38 +02:00

2056 lines
60 KiB
PHP

<?php
require_once(__DIR__."/db.php");
require_once('tcpdf/tcpdf.php');
// Unicode-Schriften statt der eingebauten PDF-Schriften Times/Helvetica: Die kennen
// nur westeuropäische Zeichen, aus ř, ł, č usw. würde ein "?". FreeSerif und
// FreeSans (bei TCPDF dabei) sind im Schriftbild und in der Breite nahezu gleich.
define("PDF_SCHRIFT_SERIF", "freeserif");
define("PDF_SCHRIFT_SANS", "freesans");
// Temporäre PDFs und Vorschaubilder in temp/ werden beim Erzeugen neuer Dateien
// aufgeräumt, wenn sie älter sind als dies (Sekunden). Früher stand hier 20 -
// gemeint waren Minuten: Bei 20 Sekunden konnte ein PDF verschwinden, bevor der
// Browser es geladen hatte, sobald jemand anderes eins erzeugte.
define("PDF_TEMP_MAX_ALTER", 20 * 60);
function makerawPDF($ajax)
{
if($ajax)
define("PICPATH", "../pics/");
else
define("PICPATH", "./pics/");
//$pdf=new TCPDF();
//$fontname = $pdf->addTTFfont('../incs/font/arialuni.ttf', 'TrueTypeUnicode', '', 32);
//echo "newfont->".$fontname."<-newfont";
switch($_SESSION["firma"])
{
case "LSG Oberallgäu":
class PDF extends TCPDF
{
//Kopfzeile
public function Header()
{
global $picpath;
$this->SetDrawColor(150,150,150);
$this->line(0,93,5,93);
$this->line(0,205,5,205);
//Logo
$this->Image(PICPATH.'logolsg.png',0,0,210);
//Arial fett 15
$this->SetDrawColor(0,0,0);
//nach rechts gehen
//Zeilenumbruch
$this->Ln(50);
}
//Fusszeile
public function Footer()
{
global $picpath;
//Logo
//$this->Image(PICPATH."logo2.png",15,273,17);
//Position 1,5 cm von unten
$this->SetY(-16.5);
$linepos=$this->GetY();
$this->setX(30);
$this->SetFont(PDF_SCHRIFT_SERIF,'',9);
$this->SetTextColor(20,47,119);
$this->Cell(180,5,'Seite '.$this->getAliasNumPage().' von '.$this->getAliasNbPages(),0,0,'R');
$this->SetY(-16.3);
$this->setX(15);
//Arial fett 6
$this->SetFont(PDF_SCHRIFT_SANS,'B',7);
//Seitenzahl
$this->SetDrawColor(20,47,119);
$this->line(15,$linepos,195,$linepos);
$this->Cell(180,7,'Luftsportgemeinschaft Oberallgäu am Alpensegelflugplatz Agathazell e.V.',0,0,'C');
$this->Ln(3);
$this->setX(15);
$this->Cell(180,7,'Bankverbindung: Sparkasse Allgäu (BLZ 733 500 00) Konto-Nr. 320007032',0,0,'C');
$this->Ln(3);
$this->setX(15);
$this->Cell(180,7,'Steuernummer: 127/109/70511',0,0,'C');
$this->Ln(5.2);
$this->setX(15);
$this->Cell(180,7,'Vorstandschaft: 1.Vorstand Bernhard Göhl • 2.Vorstand Christian Schneider • Kassier Philipp Wagner',0,0,'C');
}
}
break;
case "Wagner Markisen":
class PDF extends TCPDF
{
//Kopfzeile
public function Header()
{
global $picpath;
$this->SetDrawColor(150,150,150);
$this->line(0,93,5,93);
$this->line(0,205,5,205);
//Logo
$this->Image(PICPATH.'logo1.png',0,0,210);
//Arial fett 15
$this->SetDrawColor(0,0,0);
//nach rechts gehen
//Zeilenumbruch
$this->Ln(50);
}
//Fusszeile
public function Footer()
{
global $picpath;
//Logo
$this->Image(PICPATH."logo2.png",15,268,17);
//Position 1,5 cm von unten
$this->SetY(-23);
$this->setX(30);
$this->SetFont(PDF_SCHRIFT_SERIF,'',9);
$this->SetTextColor(0,0,0);
$this->Cell(180,5,'Seite '.$this->getAliasNumPage().' von '.$this->getAliasNbPages(),0,0,'R');
$this->SetY(-19);
//Arial fett 6
$this->SetFont(PDF_SCHRIFT_SANS,'B',8);
$this->SetTextColor(124,124,138);
//Seitenzahl
$this->setX(15);
$this->Cell(200,7,'DIE GELIEFERTE WARE BLEIBT BIS ZUR VOLLSTÄNDIGEN BEZAHLUNG EIGENTUM DES HAUSES',0,0,'C');
$this->Ln(3.5);
$this->setX(5);
$this->Cell(80,7,'WAGNER MARKISEN GMBH · TEL. 08323-6863 · FAX: 08323-3755',0,0,'L');
$this->setX(97);
$this->Cell(120,7,'SPARKASSE ALLGÄU IBAN: DE63 7335 0000 0000 1065 26 · BIC: BYLADEM1ALG',0,0,'L');
$this->Ln(3);
$this->setX(5);
$this->Cell(80,7,'UST-ID. NR. DE811623391 · ST.-NR. 127/142/00117',0,0,'L');
$this->setX(97);
$this->Cell(120,7,'VR BANK KE-OA EG IBAN: DE16 7336 9920 0007 2328 29· BIC: GENODEF1SFO',0,0,'L');
$this->Ln(3);
$this->setX(5);
$this->Cell(80,7,'GESCHÄFTSFÜHRER: PHILIPP WAGNER',0,0,'L');
$this->setX(97);
$this->Cell(120,7,'VOBA IMMENSTADT IBAN: DE93 7339 2000 0000 4142 04 · BIC: GENODEF1IMV',0,0,'L');
$this->Ln(3);
$this->setX(5);
$this->Cell(80,7,'HRB-NR. 5098 KEMPTEN',0,0,'L');
}
}
break;
case "Ingenieurbüro Wagner":
class PDF extends TCPDF
{
//Kopfzeile
public function Header()
{
global $picpath;
$this->SetDrawColor(150,150,150);
$this->line(0,93,5,93);
$this->line(0,205,5,205);
//Logo
$this->Image(PICPATH.'logoingwa1.png',0,0,210);
//Arial fett 15
$this->SetDrawColor(0,0,0);
//nach rechts gehen
//Zeilenumbruch
$this->Ln(50);
}
//Fusszeile
public function Footer()
{
global $picpath;
//Logo
$this->Image(PICPATH."logoingwa2.png",15,273,17);
//Position 1,5 cm von unten
$this->SetY(-17);
$this->setX(30);
$this->SetFont(PDF_SCHRIFT_SERIF,'',9);
$this->SetTextColor(0,0,0);
$this->Cell(180,5,'Seite '.$this->getAliasNumPage().' von '.$this->getAliasNbPages(),0,0,'R');
$this->SetY(-10);
$this->setX(15);
//Arial fett 6
$this->SetFont(PDF_SCHRIFT_SANS,'B',6);
$this->SetTextColor(124,124,138);
//Seitenzahl
$this->Cell(0,7,'INGENIEURBÜRO WAGNER MORITZ · IM ENGELFELD 13 · 87509 IMMENSTADT · TEL. 08323 4735 · MOBIL: 0176 22522937',0,0,'L');
$this->Ln(2.3);
$this->setX(15);
$this->Cell(0,7,'ST.-NR. 123/746/00174 · UST-ID. Nr. DE286840927 · BANK: RAIBA KEMPTEN-OA IBAN: DE61 7336 9920 0000 7214 76 · BIC: GENODEF1SFO',0,0,'L');
$this->Ln(2.3);
$this->setX(15);
//$this->Cell(0,7,'DIE GELIEFERTE WARE BLEIBT BIS ZUR VOLLSTÄNDIGEN BEZAHLUNG EIGENTUM DES HAUSES',0,0,'L');
}
}
break;
default:
error("Für diese Firma ist kein Briefkopf definiert, die Anzeige kann nicht generiert werden.");
break;
}
//Instanciation of inherited class
$pdf=new PDF();
$pdf->SetMargins(PDF_MARGIN_LEFT, 52, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(true,25);
$pdf->AddPage("P");
return $pdf;
}
function makeumschlagAddress($ajax, $address){
if($ajax)
define("PICPATH", "../pics/");
else
define("PICPATH", "./pics/");
//Instanciation of inherited class
$pagelayout = array(220, 110); // or array($height, $width)
$pdf=new TCPDF('l', 'mm', $pageLayout, true, 'UTF-8', false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(true,5);
$pdf->AddPage("L",$pagelayout);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->setY(55);
$pdf->setX(140);
$pdf->MultiCell(75,50,str_replace("<br />","\n",$address["adresse"]),0,"L",0);
/*$pdf->cell(15,5,"Firma");
$pdf->ln(4);
$pdf->setX(135);
$pdf->cell(15,5,"Fifi hosenscheißer");
$pdf->ln(4);
$pdf->setX(135);
$pdf->cell(15,5,"Am arsch der Welt 25");
$pdf->ln(4);
$pdf->setX(135);
$pdf->cell(15,5,"12345 Hintertupfingen");
$pdf->ln(4);
$pdf->setX(135);
$pdf->cell(15,5,"schbätzlehobl");*/
return $pdf;
}
function makerawPDFcopy($ajax)
{
if($ajax)
define("PICPATH", "../pics/");
else
define("PICPATH", "./pics/");
//$pdf=new TCPDF();
//$fontname = $pdf->addTTFfont('../incs/font/arialuni.ttf', 'TrueTypeUnicode', '', 32);
//echo "newfont->".$fontname."<-newfont";
class PDF2 extends TCPDF
{
//Kopfzhttps://192.168.147.2/kunden/temp/pdfpreview/0_52324000_1432118691/0_52324000_1432118691-0.pngeile
public function Header()
{
$this->SetDrawColor(150,150,150);
$this->line(0,93,5,93);
$this->line(0,205,5,205);
}
//Fusszeile
public function Footer()
{
$this->SetY(-17);
$this->setX(30);
$this->SetFont(PDF_SCHRIFT_SERIF,'',9);
$this->SetTextColor(0,0,0);
$this->Cell(180,5,'Seite '.$this->getAliasNumPage().' von '.$this->getAliasNbPages(),0,0,'R');
$this->SetY(-10);
$this->setX(15);
}
}
//Instanciation of inherited class
$pdf=new PDF2();
$pdf->SetMargins(PDF_MARGIN_LEFT, 52, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(true,25);
$pdf->AddPage("P");
return $pdf;
}
function makerawPDFanfahrt($ajax)
{
if($ajax)
define("PICPATH", "../pics/");
else
define("PICPATH", "./pics/");
//$pdf=new TCPDF();
//$fontname = $pdf->addTTFfont('../incs/font/arialuni.ttf', 'TrueTypeUnicode', '', 32);
//echo "newfont->".$fontname."<-newfont";
class PDF3 extends TCPDF
{
//Kopfzeile
public function Header()
{
$this->SetDrawColor(150,150,150);
$this->line(0,93,5,93);
$this->line(0,205,5,205);
}
//Fusszeile
public function Footer()
{
$this->SetY(-17);
$this->setX(30);
$this->SetFont(PDF_SCHRIFT_SERIF,'',9);
$this->SetTextColor(0,0,0);
$this->Cell(180,5,'Seite '.$this->getAliasNumPage().' von '.$this->getAliasNbPages(),0,0,'R');
$this->SetY(-10);
$this->setX(15);
}
}
//Instanciation of inherited class
$pdf=new PDF3();
$pdf->SetMargins(PDF_MARGIN_LEFT, 52, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(true,25);
$pdf->AddPage("P");
return $pdf;
}
function makefirstpage($pdf,$adresse,$rechnung,$ajax)
{
if($ajax)
$picpath = "../pics/";
else
$picpath = "./pics/";
//$pdf->SetDrawColor(150,150,150);
//$pdf->roundedRect(169, 54, 41, 25,1.5,'1111', 'DF', array(), array(245, 245, 245));
//$pdf->SetDrawColor(0,0,0);
if($_SESSION["firma"] == "Wagner Markisen")
{
$pdf->SetFont(PDF_SCHRIFT_SANS,'B',10);
$pdf->setY(52);
$pdf->setX(165);
$pdf->cell(40,5,"Öffnungszeiten:",0,0);
$pdf->ln(5);
$pdf->setX(165);
$pdf->SetFont(PDF_SCHRIFT_SANS,'',9);
$pdf->cell(12,4,"Mo.:");
$pdf->cell(20,4," 8:00 bis 12:00",0,0);
$pdf->ln(3.8);
$pdf->setX(165);
$pdf->cell(12,4,"Di.:");
$pdf->cell(20,4," 8:00 bis 12:00",0,0);
$pdf->ln(3.2);
$pdf->setX(165);
$pdf->cell(12,4,"");
$pdf->cell(20,4," 13:00 bis 17:00",0,0);
$pdf->ln(3.8);
$pdf->setX(165);
$pdf->cell(12,4,"Mi. Do.:");
$pdf->cell(20,4," Nach Absprache",0,0);
$pdf->ln(3.8);
$pdf->setX(165);
$pdf->cell(12,4,"Fr.:");
$pdf->cell(20,4," 8:00 bis 12:00",0,0);
$pdf->ln(3.8);
$pdf->setX(165);
$pdf->cell(12,4,"Sa.:");
$pdf->cell(20,4," Nach Absprache",0,1);
}
//STORNO!!!
if($rechnung["storno"] == 1){
$pdf->SetFont(PDF_SCHRIFT_SANS,'B',75);
$pdf->setY(135);
$pdf->setX(70);
$pdf->SetTextColor(200,0,0);
$pdf->StartTransform();
$pdf->Rotate(50);
$pdf->Cell(0,3,'STORNO',0,0,'L');
$pdf->StopTransform();
}
//ADRESSE!!!!
$pdf->SetFont(PDF_SCHRIFT_SANS,'B',6);
$pdf->setY(35);
$pdf->setX(25);
if($_SESSION["firma"] == "Wagner Markisen")
{
$pdf->SetTextColor(124,124,138);
$pdf->Cell(0,3,'WAGNER MARKISEN GMBH · IM ENGELFELD 13 · 87509 IMMENSTADT',0,0,'L');
}
elseif($_SESSION["firma"] == "Ingenieurbüro Wagner")
{
$pdf->SetTextColor(124,124,138);
$pdf->Cell(0,3,'INGENIEURBÜRO WAGNER · IM ENGELFELD 13 · 87509 IMMENSTADT',0,0,'L');
}
else
{
$pdf->SetTextColor(20,47,119);
$pdf->Cell(0,3,'LSG OBERALLGÄU e.V. PHILIPP WAGNER IM ENGELFELD 13 87509 IMMENSTADT TEL.: 0176/21938558',0,0,'L');
}
$pdf->SetTextColor(0,0,0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->setY(40);
$pdf->setX(25);
$pdf->MultiCell(75,45,str_replace("<br />","\n",$adresse),0,"L",0);
//DATUM
$pdf->sety(80);
$pdf->setX(170);
$datum=strftime("%d.%m.%Y",strtotime($rechnung["datetime"]));
$pdf->Cell(0,5,$datum,0,0,'L');
//typ
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',18);
$pdf->sety(80);
$pdf->setX(20);
if($rechnung["typ"] != "Brief")
$pdf->Cell(0,5,$rechnung["typ"],0,'C',0);
//rechnr kdnr
$currY = 94;
if($rechnung["typ"] != "Brief")
{
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',12);
$pdf->sety(95);
$pdf->setX(20);
$pdf->Cell(0,5,$rechnung["typ"].": ",0,0,'L');
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->sety(95);
$pdf->setX(60);
$pdf->Cell(0,5,$rechnung["drechnr"],0,0,'L');
if($_SESSION["firma"] == "LSG Oberallgäu")
{
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',12);
$pdf->Cell(0,5,"Bitte bei der Überweisung angeben!!",0,0,'L');
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
}
$currY = 100;
}
else
{
$currY = 95;
}
if($_SESSION["firma"] == "Wagner Markisen")
{
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',12);
$pdf->sety(100);
$pdf->setX(20);
$pdf->Cell(0,5,"Kundennummer: ",0,0,'L');
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->sety(100);
$pdf->setX(60);
$pdf->Cell(0,5,$rechnung["partner_id"],0,0,'L');
$currY = 110;
}
else
{
$currY = 110;
}
//Begrüßung
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',12);
$pdf->setY($currY);
$pdf->setX(20);
$pdf->Cell(0,5,$rechnung["anrede1"],0,0,'L');
$currY += 5;
if ($rechnung["anrede2"] != "")
{
$pdf->sety($currY);
$pdf->setX(30);
$pdf->Cell(0,5,$rechnung["anrede2"],0,0,'L');
$currY += 5;
}
//Vielen Dank,gerne bierten wir an...
if ($rechnung["typ"] == "Rechnung")
{
// $currY += 5;
// $pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
// $pdf->sety($currY);
// $pdf->setX(20);
// $pdf->Cell(0,5,"Wir bedanken uns für Ihr Vertrauen.",0,0,'L');
}
elseif ($rechnung["typ"] == "Auftragsbestätigung")
{
$currY += 5;
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->sety($currY);
$pdf->setX(20);
if($_SESSION["firma"] == "Ingenieurbüro Wagner")
$pdf->Cell(0,5,"Hiermit bestätige ich Ihren Auftrag.",0,0,'L');
else
$pdf->Cell(0,5,"Hiermit bestätigen wir Ihren Auftrag.",0,0,'L');
}
elseif ($rechnung["typ"] == "Angebot")
{
$currY += 5;
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->sety($currY);
$pdf->setX(20);
if($rechnung["anrede1"] || $rechnung["anrede2"])
if($_SESSION["firma"] == "Ingenieurbüro Wagner")
$pdf->Cell(0,5,"ich freue mich über Ihr Interesse an meinen Leistungen und unterbreite gerne folgendes Angebot:",0,1,'L');
else
$pdf->Cell(0,5,"wir freuen uns über Ihr Interesse an unseren Produkten und unterbreiten gerne folgendes Angebot:",0,1,'L');
else
if($_SESSION["firma"] == "Ingenieurbüro Wagner")
$pdf->Cell(0,5,"Ich freue mich über Ihr Interesse an meinen Leistungen und unterbreite gerne folgendes Angebot:",0,1,'L');
else
$pdf->Cell(0,5,"Wir freuen uns über Ihr Interesse an unseren Produkten und unterbreiten gerne folgendes Angebot:",0,1,'L');
$currY += 5;
}
//intro
if (rtrim($rechnung["intro"])!="" )
{
$currY += 5;
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->sety($currY);
$pdf->setX(20);
if($rechnung["typ"] == "Brief")
{
$pdf->writeHTMLCell(0,0,20,$pdf->GetY(),$rechnung["intro"]);
$pdf->Ln();
$pdf->SetY($pdf->GetY()+10);
}
else
$pdf->MultiCell(0,5,$rechnung["intro"],0,'L',0,1);
}
else
{
$pdf->Ln();
}
}
function maketable($pdf,$artikel,$rechnung,$ajax)
{
if($ajax)
$picpath = "../pics/";
else
$picpath = "./pics/";
$mixedmwst = 0;
foreach($artikel as $art)
{
if($art["art"]["artmwst"] > 0 && $art["art"]["artmwst"] != 999 && $art["art"]["artmwst"] != $rechnung["mwst"])
{
$mixedmwst = 1;
break;
}
}
$wahrung = $rechnung["wahrung"];
$currY = $pdf->GetY();
$newpdf = new PDF();
$newpdf->SetAutoPageBreak(true,40);
$newpdf->AddPage("P");
$calculatedHeight = 0;
$newpdf->setX(20);
$newcurrY=3;
$newpdf->setY($newcurrY);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$newpdf->setX(20);
$newpdf->MultiCell(100-$mixedmwst*15,5,$artikel[0]["art"]["bezeichn"],0,'L',0,1);
$newpdf->setX(120-$mixedmwst*15);
$newpdf->Cell(15,5,number_format($artikel[0]["art"]["menge"],2,",","")." ".$artikel[0]["art"]["einheit"],0,0,'C');
$newpdf->setX(135-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($artikel[0]["art"]["preis"],2,",",".")." ".$wahrung,0,0,'R');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($artikel[0]["art"]["preis"]*$artikel[0]["art"]["menge"],2,",",".")." ".$wahrung,0,0,'R');
if($mixedmwst)
{
$newpdf->setX(180);
$newpdf->Cell(15,5,$artikel[0]["art"]["artmwst"]."%",0,0,'R');
}
$newpdf->setY($newcurrY+2);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
foreach($artikel[0]["eig"] as $eig)
{
$newpdf->Cell(100, 3, $eig["bezeichn"], 0, 1, "L", 0);
}
$artheight = $newpdf->GetY();
unset($newpdf);
if (($artheight+$currY > 210 && $artheight < 219) || $artikel[0]["art"]["pagebreak"])
{
$pdf->AddPage("P");
$wholetablebreak = 1;
}
//Table-HEAD
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->sety($pdf->GetY()+5);
$pdf->setX(20);
$pdf->Cell(100-$mixedmwst*15,5,'Bezeichnung',0,0,'L');
$pdf->setX(120-$mixedmwst*15);
$pdf->Cell(15,5,'Menge',0,0,'C');
$pdf->setX(135-$mixedmwst*15);
$pdf->Cell(30,5,'Einzelpreis',0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$pdf->Cell(30,5,'Gesamtpreis',0,0,'R');
if($mixedmwst)
{
$pdf->setX(180);
$pdf->Cell(20,5,'USt.',0,0,'R');
}
$pdf->Ln();
$pdf->Line(18 , $pdf->GetY(), 200, $pdf->GetY());
$currY = $pdf->GetY();
$ubertr = array();
foreach($artikel as $art)
{
for($i=0;$i<2;$i++)
{
if(!$i)
{
$newpdf = new PDF();
$currY = 0;
$newpdf->SetAutoPageBreak(true,40);
$newpdf->AddPage("P");
}
else
{
unset($newpdf);
$newpdf = $pdf;
$currY = $newpdf->GetY();
if (($currY+$artheight > 255 && $artheight < 219) || ($art["art"]["pagebreak"] && !$wholetablebreak))
{
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$newpdf->Line(18 , $currY+4.3, 200, $currY+4.3);
$newpdf->setY($currY+7);
$newpdf->setX(130-$mixedmwst*15);
$newpdf->Cell(30,5,'Übertrag:',0,0,'R');
$newpdf->setX(165-$mixedmwst*15);
$ubertr_all = 0;
foreach($ubertr as $ubertr_mwst)
$ubertr_all += $ubertr_mwst;
$newpdf->Cell(30,5,number_format($ubertr_all,2,",",".")." ".$wahrung,0,0,'R');
$newpdf->AddPage("P");
//Table-re-HEAD
$currY = $pdf->GetY();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(100-$mixedmwst*15,5,'Bezeichnung',0,0,'L');
$pdf->setX(120-$mixedmwst*15);
$pdf->Cell(15,5,'Menge',0,0,'C');
$pdf->setX(135-$mixedmwst*15);
$pdf->Cell(30,5,'Einzelpreis',0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$pdf->Cell(30,5,'Gesamtpreis',0,0,'R');
if($mixedmwst)
{
$pdf->setX(180);
$pdf->Cell(20,5,'USt.',0,0,'R');
}
$pdf->Ln();
$pdf->Line(18 , $pdf->GetY(), 200, $pdf->GetY());
$currY = $pdf->GetY();
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
}
$currY = $newpdf->GetY();
}
$newpdf->setY($currY);
$newpdf->setX(20);
if($art["art"]["artmwst"] == 999 || !$art["art"]["artmwst"])
$art["art"]["artmwst"] = $rechnung["mwst"];
$artmwst=$art["art"]["artmwst"];
if($i && $rechnung["sub_mwst"])
$art["art"]["preis"] = round(100*$art["art"]["preis"]/(100+$artmwst),2);
if ($art["art"]["angtyp"] < 2){ //STD ARTIKEL
if($art["art"]["einheit"] == "keine")
$art["art"]["einheit"] = "";
$currY= $newpdf->GetY()+5;
$newpdf->setY($currY);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$newpdf->setX(120-$mixedmwst*15);
$newpdf->Cell(15,5,number_significant($art["art"]["menge"], 3)." ".$art["art"]["einheit"],0,0,'C');
$newpdf->setX(135-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($art["art"]["preis"],2,",",".")." ".$wahrung,0,0,'R');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($art["art"]["preis"]*$art["art"]["menge"],2,",",".")." ".$wahrung,0,0,'R');
if($mixedmwst)
{
$newpdf->setX(180);
$newpdf->Cell(20,5,$art["art"]["artmwst"]."%",0,0,'R');
}
$newpdf->Ln();
if(!isset($ubertr[$artmwst])){
$ubertr[$artmwst]=0;
}
if($art["art"]["rabatt"])
{
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'I',14);
$newpdf->setX(110-$mixedmwst*15);
if(!$art["art"]["rabatttyp"])
$newpdf->Cell(100,5,"Abzüglich ".$art["art"]["rabatt"]."% Rabatt",0,0,'L');
else
$newpdf->Cell(100,5,"Abzüglich ".$art["art"]["rabatt"]."% Winterrabatt",0,0,'L');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format(-1*$art["art"]["preis"]*$art["art"]["menge"]*($art["art"]["rabatt"]/100),2,",",".")." ".$wahrung,0,1,'R');
if($i)
$ubertr[$artmwst] += round(-1*$art["art"]["preis"]*$art["art"]["menge"]*($art["art"]["rabatt"]/100),2);
//$newpdf->setY($nextY);
}
if($i)
$ubertr[$artmwst] += $art["art"]["preis"]*$art["art"]["menge"];
$newpdf->setY($currY);
$newpdf->setX(20);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$newpdf->MultiCell(90-$mixedmwst*15,5,$art["art"]["bezeichn"],0,'L',0,1);
$currY = $newpdf->GetY();
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
foreach($art["eig"] as $eig)
{
if($eig["einheit"] == "keine")
$eig["einheit"] = "";
$newpdf->setX(20);
$newpdf->Cell(100-$mixedmwst*15, 4, $eig["bezeichn"]." ".$eig["wert"]." ".$eig["einheit"], 0, 1, "L", 0,0,0,1);
$nextY = $newpdf->GetY();
}
}
elseif ($art["art"]["angtyp"]==2){ //OPTIONAL
if($art["art"]["einheit"] == "keine")
$art["art"]["einheit"] = "";
$currY= $newpdf->GetY()+3;
$newpdf->setY($currY);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$newpdf->setX(120-$mixedmwst*15);
$newpdf->Cell(15,5,number_significant($art["art"]["menge"], 3)." ".$art["art"]["einheit"],0,0,'C');
$newpdf->setX(135-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($art["art"]["preis"],2,",",".")." ".$wahrung,0,0,'R');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($art["art"]["preis"]*$art["art"]["menge"],2,",",".")." ".$wahrung,0,0,'R');
if($mixedmwst)
{
$newpdf->setX(180);
$newpdf->Cell(20,5,$art["art"]["artmwst"]."%",0,0,'R');
}
$newpdf->Ln();
if($art["art"]["rabatt"])
{
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'I',14);
$newpdf->setX(110-$mixedmwst*15);
if(!$art["art"]["rabatttyp"])
$newpdf->Cell(100,5,"Abzüglich ".$art["art"]["rabatt"]."% Rabatt",0,0,'L');
else
$newpdf->Cell(100,5,"Abzüglich ".$art["art"]["rabatt"]."% Winterrabatt",0,0,'L');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format(-1*$art["art"]["preis"]*$art["art"]["menge"]*($art["art"]["rabatt"]/100),2,",",".")." ".$wahrung,0,1,'R');
//if($i)
// $ubertr[$artmwst] += round(-1*$art["art"]["preis"]*$art["art"]["menge"]*($art["art"]["rabatt"]/100),2);
$newpdf->setY($nextY);
}
//if($i)
// $ubertr[$artmwst] += $art["art"]["preis"]*$art["art"]["menge"];
$newpdf->setY($currY);
$newpdf->setX(25);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$newpdf->MultiCell(85-$mixedmwst*15,5,"(Optional: " .$art["art"]["bezeichn"].")",0,'L',0,1);
$currY = $newpdf->GetY();
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
foreach($art["eig"] as $eig)
{
if($eig["einheit"] == "keine")
$eig["einheit"] = "";
$newpdf->setX(25);
$newpdf->Cell(85-$mixedmwst*15, 4,$eig["bezeichn"]." ".$eig["wert"]." ".$eig["einheit"], 0, 1, "L", 0,0,0,1);
$nextY = $newpdf->GetY();
}
}
elseif ($art["art"]["angtyp"]==3){ //ALTERNATIV
if($art["art"]["einheit"] == "keine")
$art["art"]["einheit"] = "";
$currY= $newpdf->GetY()+3;
$newpdf->setY($currY);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$newpdf->setX(120-$mixedmwst*15);
$newpdf->Cell(15,5,number_significant($art["art"]["menge"], 3)." ".$art["art"]["einheit"],0,0,'C');
$newpdf->setX(135-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($art["art"]["preis"],2,",",".")." ".$wahrung,0,0,'R');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format($art["art"]["preis"]*$art["art"]["menge"],2,",",".")." ".$wahrung,0,0,'R');
if($mixedmwst)
{
$newpdf->setX(180);
$newpdf->Cell(20,5,$art["art"]["artmwst"]."%",0,0,'R');
}
$newpdf->Ln();
if($art["art"]["rabatt"])
{
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'I',14);
$newpdf->setX(110-$mixedmwst*15);
if(!$art["art"]["rabatttyp"])
$newpdf->Cell(100,5,"Abzüglich ".$art["art"]["rabatt"]."% Rabatt",0,0,'L');
else
$newpdf->Cell(100,5,"Abzüglich ".$art["art"]["rabatt"]."% Winterrabatt",0,0,'L');
$newpdf->setX(165-$mixedmwst*15);
$newpdf->Cell(30,5,number_format(-1*$art["art"]["preis"]*$art["art"]["menge"]*($art["art"]["rabatt"]/100),2,",",".")." ".$wahrung,0,1,'R');
// if($i)
// $ubertr[$artmwst] += round(-1*$art["art"]["preis"]*$art["art"]["menge"]*($art["art"]["rabatt"]/100),2);
$newpdf->setY($nextY);
}
//if($i)
// $ubertr[$artmwst] += $art["art"]["preis"]*$art["art"]["menge"];
$newpdf->setY($currY);
$newpdf->setX(25);
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$newpdf->MultiCell(85-$mixedmwst*15,5,"(Alternativ: " .$art["art"]["bezeichn"].")",0,'L',0,1);
$currY = $newpdf->GetY();
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
foreach($art["eig"] as $eig)
{
if($eig["einheit"] == "keine")
$eig["einheit"] = "";
$newpdf->setX(25);
$newpdf->Cell(85-$mixedmwst*15, 4,$eig["bezeichn"]." ".$eig["wert"]." ".$eig["einheit"], 0, 1, "L", 0,0,0,1);
$nextY = $newpdf->GetY();
}
}
if($art["art"]["rabatt"] && count($art["eig"]) == 0)
$newpdf->Ln(5);
$artheight = $newpdf->GetY();
}
$wholetablebreak = 0;
}
if($mixedmwst == 0 && $rechnung["mwst"] == 0)
{
$currY = $pdf->GetY();
//Endbetrag
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->Line(18 , $currY+2, 200, $currY+2);
$pdf->setY($currY+2);
//RABATT
if ($rechnung["rabatt"] == "0") {
$currY=$currY+7;
}
else {
$currY=$currY+7;
$pdf->setY($currY);
$pdf->setX(130-$mixedmwst*15);
$pdf->Cell(30,6,$rechnung["rabattdesc"]." (".$rechnung["rabatt"]."%):",0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$multi=$rechnung["rabatt"]/100;
$pdf->Cell(30,6,"-".number_format(round($ubertr_all*$multi,2),2,",",".")." ".$wahrung,0,0,'R');
foreach($ubertr AS $mwst => $ubertr_mwst)
{
$ubertr[$mwst]=$ubertr[$mwst]-$ubertr[$mwst]*$multi;
}
$currY=$currY+5;
}
//Mwst ausweisen
$pdf->setY($currY);
$ubertr_all = 0;
foreach($ubertr as $ubertr_mwst)
$ubertr_all += $ubertr_mwst;
//komplettpreis ausgeben
$pdf->setX(130-$mixedmwst*15);
$pdf->Cell(30,6,'Gesamtbetrag:',0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$pdf->Cell(30,6,number_format($ubertr_all,2,",",".")." ".$wahrung,0,1,'R');
$currY=$pdf->GetY()+10;
$pdf->setY($currY);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->setX(20);
$currY=$currY;
}
else
{
$currY = $pdf->GetY();
//Endbetrag
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->Line(18 , $currY+2, 200, $currY+2);
$pdf->setY($currY+2);
$pdf->setX(130-$mixedmwst*15);
$pdf->Cell(30,6,'Gesamtbetrag Netto:',0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$ubertr_all = 0;
foreach($ubertr AS $ubertr_mwst)
$ubertr_all += $ubertr_mwst;
$pdf->Cell(30,6,number_format($ubertr_all,2,",",".")." ".$wahrung,0,0,'R');
//RABATT
if ($rechnung["rabatt"] == "0") {
$currY=$currY+7;
}
else {
$currY=$currY+7;
$pdf->setY($currY);
$pdf->setX(130-$mixedmwst*15);
$pdf->Cell(30,6,$rechnung["rabattdesc"]." (".$rechnung["rabatt"]."%):",0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$multi=$rechnung["rabatt"]/100;
$pdf->Cell(30,6,"-".number_format(round($ubertr_all*$multi,2),2,",",".")." ".$wahrung,0,0,'R');
foreach($ubertr AS $mwst => $ubertr_mwst)
{
$ubertr[$mwst]=$ubertr[$mwst]-$ubertr[$mwst]*$multi;
}
$currY=$currY+5;
}
//Mwst ausweisen
$pdf->setY($currY);
foreach($ubertr AS $mwst => $ubertr_mwst)
{
$pdf->setX(130-$mixedmwst*15);
$pdf->Cell(30,6,'Zuzüglich '.$mwst.'% USt.:',0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$multi=$mwst/100;
$pdf->Cell(30,6,number_format(round($ubertr[$mwst]*$multi,2),2,",",".")." ".$wahrung,0,1,'R');
$ubertr[$mwst] = $ubertr[$mwst]+round($ubertr[$mwst]*$multi,2);
}
$ubertr_all = 0;
foreach($ubertr as $ubertr_mwst)
$ubertr_all += $ubertr_mwst;
//komplettpreis ausgeben
$pdf->setX(130-$mixedmwst*15);
$pdf->Cell(30,6,'Gesamtbetrag Brutto:',0,0,'R');
$pdf->setX(165-$mixedmwst*15);
$pdf->Cell(30,6,number_format($ubertr_all,2,",",".")." ".$wahrung,0,1,'R');
$currY=$pdf->GetY()+10;
$pdf->setY($currY);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->setX(20);
$currY=$currY;
}
return $ubertr_all;
}
function makeEndPage($pdf,$rechnung,$gesamtpreis,$ajax)
{
if($ajax)
$signpath = "../".UPLOADS_PATH;
else
$signpath = "./".UPLOADS_PATH;
if($pdf->getY() > 270)
{
$pdf->AddPage("P");
}
for($i=0;$i<2;$i++)
{
if(!$i)
{
//outro höhe berechnen!!
$newpdf=new PDF();
$newpdf->SetAutoPageBreak(true,40);
$newpdf->AddPage("P");
$newpdf->setY(0);
$newpdf->setX(20);
}
else
{
$outroheight = $newpdf->getY();
unset($newpdf);
/*
if ($currY+$txt2height > 420 and $txt2height < 239)
{
$pdf->AddPage("P");
}*/
$newpdf = $pdf;
}
if (rtrim($rechnung["outro"]) != "")
{
$newpdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$newpdf->setX(20);
$newpdf->MultiCell(0,5,rtrim($rechnung["outro"]),0,'L',0);
//ENDE!!
$currY=$newpdf->getY();
$newpdf->setY($currY+5);
}
if($rechnung["typ"] != "Rechnung" && $rechnung["typ"] != "Gutschrift")
{
$newpdf->setX(20);
if($_SESSION["firma"] == "Wagner Markisen")
$newpdf->Cell(0,5,"Mit freundlichen Grüßen",0,0,'L',0);
elseif($_SESSION["firma"] == "LSG Oberallgäu")
$newpdf->Cell(0,5,"Mit freundlichen Grüßen",0,0,'L',0);
elseif($_SESSION["firma"] == "Ingenieurbüro Wagner")
$newpdf->Cell(0,5,"Mit freundlichen Grüßen",0,0,'L',0);
//unterschrift
if(is_file($signpath."signs/".$rechnung["user_id"].".png"))
$newpdf->Image($signpath."signs/".$rechnung["user_id"].".png",20,$newpdf->getY()+5,0,20);
else
$newpdf->Image($signpath."signs/default.png",20,$newpdf->getY()+5,0,20);
$newpdf->sety($newpdf->getY()+25);
$newpdf->setX(20);
if($_SESSION["firma"] == "Wagner Markisen")
$newpdf->Cell(0,5,"WAGNER MARKISEN",0,1,'L',0);
$newpdf->setX(20);
$newpdf->Cell(0,5,$rechnung["uvname"]." ".$rechnung["unname"],0,0,'L',0);
if($_SESSION["firma"] == "LSG Oberallgäu" && $rechnung["uvname"]." ".$rechnung["unname"] == "Philipp Wagner")
{
$newpdf->ln();
$newpdf->setX(20);
$newpdf->Cell(0,5,"(Kassier)",0,0,'L',0);
}
}
else
{
if(!isset($rechnung["sks"])){
$rechnung["sks"] = 0;
}
if(!$rechnung["sks"] && $rechnung["typ"] != "Gutschrift")
{
if(!isset($rechnung["ktonr"])){
$rechnung["ktonr"] = "";
}
$newpdf->ln();
$newpdf->setX(20);
$newpdf->MultiCell(0,5,writeZahlziel($rechnung["ktonr"],$rechnung["zahlziel"],$gesamtpreis,$rechnung["wahrung"],strtotime($rechnung["datetime"]),$rechnung["partner_id"]),0,'L',0,1);
}
$newpdf->setX(20);
$newpdf->Cell(0,5,$rechnung["lieferdatum"],0,1,'L',0);
$newpdf->ln();
$newpdf->setX(20);
if(!$rechnung["sks"] && $rechnung["typ"] != "Gutschrift")
{
if($_SESSION["firma"] == "Ingenieurbüro Wagner")
$newpdf->Cell(0,5,"Ich bedanke mich für die gute Zusammenarbeit!",0,1,'L',0);
else
$newpdf->Cell(0,5,"Wir bedanken uns für die gute Zusammenarbeit!",0,1,'L',0);
}
}
}
}
function writeZahlziel($ktonr,$zahlziel,$gespreis,$wahrung,$rechdate,$kundeid)
{
$ret = "Zahlbar";
$skontodate = "";
$date = "";
if(stristr($zahlziel,"sofort ohne Abzug"))
{
$date = "sofort";
}
else if(preg_match("!([0-9]+)\sTage\sohne\sAbzug!",$zahlziel,$match))
{
$date .= date("d.m.Y",strtotime("+".$match[1]." days",$rechdate));
}
if(stristr($zahlziel,"Skonto sofort"))
{
$skontodate = "sofort";
}
if(preg_match("!Skonto\s([0-9]+)\sTage!",$zahlziel,$match) )
{
$skontodate .= date("d.m.Y",strtotime("+".$match[1]." days",$rechdate));
}
if(preg_match("!([0-9]+)\%!",$zahlziel,$match))
{
$skonto = $match[1];
}else{
$skonto ="";
}
if($date != $skontodate)
{
$ret = "Zahlbar";
if($date == "sofort")
$ret .= " sofort";
else
$ret .= " bis zum ".$date;
$ret .= " ohne Abzug";
if($skonto && $skontodate)
{
$ret .= "\noder";
if($skontodate == "sofort")
$ret .= " sofort";
else
$ret .= " bis zum ".$skontodate;
$ret .= " abzüglich ".$skonto."% Skonto (abziehbarer Betrag ".number_format(($gespreis/100)*$skonto,2,",",".")." ".$wahrung.")";
}
}
else
{
$ret = "Zahlbar";
if($skontodate == "sofort")
$ret .= " sofort";
else
$ret .= " bis zum ".$date;
$ret .= " abzüglich ".$skonto."% Skonto (abziehbarer Betrag ".number_format(($gespreis/100)*$skonto,2,",",".")." ".$wahrung.")";
}
if(stristr($zahlziel,"Betrag wird von Konto abgebucht"))
{
$ret = "Der Betrag von ".number_format($gespreis,2,",",".")." ".$wahrung." wird von Ihren Konto (Nr.: ".$ktonr.") abgebucht.";
}
return $ret;
}
function savePDF($pdf,$PDFpath)
{
// TCPDF stellt beim Schreiben file:// voran und braucht deshalb einen
// absoluten Pfad. Aufgelöst wird relativ zum Arbeitsverzeichnis, also in
// der Installation, aus der der Aufruf kommt - früher stand hier fest
// DOCUMENT_ROOT."kunden".
$PDFpathpart = realpath(dirname($PDFpath));
if($PDFpathpart === false || !is_dir($PDFpathpart))
die("PDF-Verzeichnis nicht gefunden: ".dirname($PDFpath));
$PDFpathpart = str_replace("\\", "/", $PDFpathpart)."/";
$handle=opendir($PDFpathpart);
while ($file = readdir($handle))
{
if (preg_match("=^\.=", $file))
continue; # ., .. und versteckte Dateien (.gitkeep) ignorieren
elseif(is_file($PDFpathpart.$file))
{ #Dateien löschen, wenn älter als PDF_TEMP_MAX_ALTER
$lastTime = ceil((time() - filemtime($PDFpathpart.$file)));
if($lastTime > PDF_TEMP_MAX_ALTER){
unlink($PDFpathpart.$file);
}
}
}
closedir($handle);
$pdf->Output($PDFpathpart.basename($PDFpath),"F");
}
function outputPDF($pdf)
{
$pdf->Output($path,"I");
}
function makeImageFromPDF($PDFpath)
{
$PDFpathpart = dirname($PDFpath)."/";
$PDFfilepart = basename($PDFpath,".pdf");
$handle=opendir($PDFpathpart);
while ($file = readdir($handle))
{
if (preg_match("=^\.=", $file))
continue; # ., .. und versteckte Dateien (.gitkeep) ignorieren
if (is_dir($PDFpathpart.$file))
{
$lastTime = ceil((time() - filemtime($PDFpathpart.$file)));
if($lastTime > PDF_TEMP_MAX_ALTER){
rrmdir($PDFpathpart.$file."/");
}
}
else
{ #Dateien löschen, wenn älter als PDF_TEMP_MAX_ALTER
$lastTime = ceil((time() - filemtime($PDFpathpart.$file)));
if($lastTime > PDF_TEMP_MAX_ALTER){
unlink($PDFpathpart.$file);
}
}
}
mkdir(dirname($PDFpath)."/".basename($PDFpath,".pdf")."/");
//exec('');
exec("export PATH=\"/opt/bin\";/opt/bin/convert ".escapeshellarg($PDFpath)." ".escapeshellarg(dirname($PDFpath)."/".basename($PDFpath,".pdf")."/".basename($PDFpath,".pdf").".png"));
$i="0";
$ret = "";
if(is_file(dirname($PDFpath)."/".basename($PDFpath,".pdf")."/".basename($PDFpath,".pdf").".png"))
$ret .= "<img src='".str_replace("..",".",dirname($PDFpath))."/".basename($PDFpath,".pdf")."/".basename($PDFpath,".pdf").".png' alt='Seite 1' class='pdfpreviewimg' />";
while(is_file(dirname($PDFpath)."/".basename($PDFpath,".pdf")."/".basename($PDFpath,".pdf")."-$i.png"))
{
$ret .= "<img src='".str_replace("..",".",dirname($PDFpath))."/".basename($PDFpath,".pdf")."/".basename($PDFpath,".pdf")."-$i.png' alt='Seite ".($i+1)."' class='pdfpreviewimg' />";
$i++;
}
return $ret;
}
function makezettel($pdf,$termine,$anfahrt,$googleadressen='')
{
if($ajax)
$picpath = "../pics/";
else
$picpath = "./pics/";
$mixedmwst = 0;
foreach($termine as $termin=>$key)
{
$googleadresse=$googleadressen[$key];
$dauersplit = explode(":",$termin["termdauer"]);
if($dauersplit[0] > 0)
{
$dauer = ltrim($dauersplit[0],"0")." Std";
if($dauersplit[1] > 0)
{
$dauer .= ", ";
}
}
if($dauersplit[1] > 0)
{
$dauer .= ltrim($dauersplit[1],"0")." Min";
}
$pdf->SetTextColor(0,0,0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$pdf->setY(20);
$pdf->setX(25);
$pdf->MultiCell(85,0,str_replace("<br />","\n",$adresse["adresse"]),0,"L",0);
$pdf->Ln(10);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'BU',14);
$pdf->Cell(0,5,strtoupper($termin["typ"])." - ".$termin["head"],0,1,"C",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
//$pdf->Line(35,$pdf->GetY(),180,$pdf->GetY());
$notespos = $pdf->GetY();
$pdf->setY(20);
$pdf->Cell(0,5,date("d.m.Y, H:i",strtotime($termin["termtime"]))." Uhr",0,1,"R",0);
$pdf->Cell(0,5,"(".$dauer." geplant)",0,1,"R",0);
$pdf->SetY($notespos);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->MultiCell(0,0,$termin["text"],0,"C",0);
$pdf->Ln();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',16);
$pdf->Cell(0,5,"Notizen:",0,1,"C",0);
$pdf->Ln(12);
$pdf->SetDrawColor(100,100,100);
while($pdf->GetY() < 260)
{
$pdf->line(10,$pdf->GetY(),200,$pdf->GetY());
$pdf->Ln(12);
}
}
}
function makesingleterminpage($pdf,$termin,$adresse,$telnrn,$anfahrt,$googleadresse='')
{
if($ajax)
$picpath = "../pics/";
else
$picpath = "./pics/";
$dauersplit = explode(":",$termin["termdauer"]);
if($dauersplit[0] > 0)
{
$dauer = $dauersplit[0]." Std";
if($dauersplit[1] > 0)
{
$dauer .= ", ";
}
}
if($dauersplit[1] > 0)
{
$dauer .= $dauersplit[1]." Min";
}
$mitarbeiter = $termin["uservname"]." ".$termin["usernname"];
if($termin["uservname2"] || $termin["usernname2"])
$mitarbeiter .= ", ".$termin["uservname2"]." ".$termin["usernname2"];
if($termin["uservname3"] || $termin["usernname3"])
$mitarbeiter .= ",\n".$termin["uservname3"]." ".$termin["usernname3"];
if($termin["uservname4"] || $termin["usernname4"])
$mitarbeiter .= ", ".$termin["uservname4"]." ".$termin["usernname4"];
$pdf->SetTextColor(0,0,0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',14);
$pdf->setY(20);
$pdf->setX(25);
$pdf->MultiCell(85,0,str_replace("<br />","\n",$adresse["adresse"]),0,"L",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',12);
$pdf->ln(5);
$pdf->MultiCell(0,0,$telnrn,0,"L",0);
$pdf->Ln(10);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'BU',16);
$pdf->Cell(0,5,strtoupper($termin["typ"])." - ".$termin["head"],0,1,"C",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',16);
//$pdf->Line(35,$pdf->GetY(),180,$pdf->GetY());
$notespos = $pdf->GetY();
$pdf->setY(10);
$pdf->Cell(0,5,date("d.m.Y, H:i",strtotime($termin["termtime"]))." Uhr",0,1,"R",0);
$pdf->Cell(0,5,"(".$dauer." geplant)",0,1,"R",0);
$pdf->MultiCell(0,0,"(".$mitarbeiter.")",0,"R",0);
$pdf->SetY($notespos);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->MultiCell(0,0,$termin["text"],0,"C",0);
$pdf->Ln();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',16);
$pdf->Cell(0,5,"Notizen:",0,1,"C",0);
$pdf->Ln(12);
$pdf->SetDrawColor(100,100,100);
if(!$googleadresse)
{
while($pdf->GetY() < 230)
{
$pdf->line(10,$pdf->GetY(),200,$pdf->GetY());
$pdf->Ln(12);
}
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',16);
$pdf->Cell(0,5,"Ankunft:______________________ Abfahrt:_____________________",0,1,"L",0);
$pdf->Ln(12);
$pdf->Cell(0,5,"Unterschrift Kunde:_____________________",0,1,"C",0);
}
else
{
while($pdf->GetY() < 135)
{
$pdf->line(10,$pdf->GetY(),200,$pdf->GetY());
$pdf->Ln(12);
}
//$pdf->Image("@".file_get_contents($googleadresse),0,128,0,110,'PNG');
while($pdf->GetY() < 230)
{
$pdf->line(120,$pdf->GetY(),200,$pdf->GetY());
$pdf->Ln(12);
}
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',16);
$pdf->Cell(0,5,"Ankunft:______________________ Abfahrt:_____________________",0,1,"L",0);
$pdf->Ln(10);
$pdf->Cell(0,5,"Unterschrift Kunde:_____________________",0,1,"C",0);
//$pdf->Image("./pics/icons/weather/fog.png",100,200,60,60,'PNG');
}
}
/* Die Daten eines Termins fuer den Terminzettel */
function maketerminarray($dbconn,$id)
{
$res = db_zeile($dbconn,"SELECT head, user, text, termin.id, termtime, termtyp.typ AS typ, termdauer, str, ort, hnr, plz, partner_id, land,
adresse.vname AS vname, adresse.nname AS nname, titel_id, titel2_id, anrede_id, anrede2_id, vname2, nname2, zusatz,
user.vname as uservname, user.nname as usernname,
user2.vname as uservname2, user2.nname as usernname2,
user3.vname as uservname3, user3.nname as usernname3,
user4.vname as uservname4, user4.nname as usernname4
FROM termin
LEFT JOIN adresse ON adresse_id = adresse.id
LEFT JOIN strasse ON str_id = strasse.id
LEFT JOIN termtyp ON termin.typ = termtyp.id
LEFT JOIN ort ON ort_id = ort.id
LEFT JOIN land ON land_id = land.id
LEFT JOIN user ON user = user.id
LEFT JOIN user AS user2 ON termin.user2 = user2.id
LEFT JOIN user AS user3 ON termin.user3 = user3.id
LEFT JOIN user AS user4 ON termin.user4 = user4.id
WHERE termin.id = ?", array($id));
if(!$res)
{
error("Fehler beim ermitteln der Termindaten<br />".mysqli_error($dbconn));
return array();
}
$anrs = db_zuordnung($dbconn, "SELECT id, anrede FROM anrede") ?: array();
$titels = db_zuordnung($dbconn, "SELECT id, titel FROM titel") ?: array();
$res["anrede"] = $anrs[$res["anrede_id"]] ?? "";
$res["anrede2"] = $anrs[$res["anrede2_id"]] ?? "";
$res["titel"] = $titels[$res["titel_id"]] ?? "";
$res["titel2"] = $titels[$res["titel2_id"]] ?? "";
return $res;
}
function maketerminadresse($dbconn,$termid)
{
$adresse = db_zeile($dbconn,"SELECT nname, titel_id, titel2_id, vname, nname2, vname2, str, ort, plz, hnr, land, firma, anrede_id, anrede2_id, partner_id, adresse_id
FROM termin
JOIN adresse ON termin.adresse_id = adresse.id
JOIN strasse ON strasse.id = str_id
JOIN ort ON ort.id = ort_id JOIN land ON land.id = land_id
WHERE termin.id = ?", array($termid));
if(!$adresse)
{
error("Fehler beim ermitteln der Adressdaten<br />".mysqli_error($dbconn));
$adresse = array();
}
// ADRFIELD_* stehen in incs/constants.php
$anrs = db_zuordnung($dbconn, "SELECT id, anrede FROM anrede") ?: array();
$titels = db_zuordnung($dbconn, "SELECT id, titel FROM titel") ?: array();
$adressfields = "";
if($adresse["firma"])
$adressfields .= "11";
else
$adressfields .= "00";
if($anrs[$adresse["anrede_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($titels[$adresse["titel_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($adresse["vname"] || $adresse["nname"])
$adressfields .= "1";
else
$adressfields .= "0";
if($anrs[$adresse["anrede2_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($titels[$adresse["titel2_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($adresse["vname2"] || $adresse["nname2"])
$adressfields .= "1";
else
$adressfields .= "0";
$adressfields .= "110";
$firmaanr = substr($adressfields,ADRFIELD_FIRMAANR,1);
$firma = substr($adressfields,ADRFIELD_FIRMA,1);
$anr1 = substr($adressfields,ADRFIELD_ANR1,1);
$titel1 = substr($adressfields,ADRFIELD_TITEL1,1);
$name1 = substr($adressfields,ADRFIELD_NAME1,1);
$anr2 = substr($adressfields,ADRFIELD_ANR2,1);
$titel2 = substr($adressfields,ADRFIELD_TITEL2,1);
$name2 = substr($adressfields,ADRFIELD_NAME2,1);
$str = substr($adressfields,ADRFIELD_STR,1);
$ort = substr($adressfields,ADRFIELD_ORT,1);
$land = substr($adressfields,ADRFIELD_LAND,1);
if($firmaanr)
{
$adrstr .= "Firma";
}
if($firma)
{
$adrstr .= "<br />".trim($adresse["firma"]);
}
if($anr1 && $anr2 && $name1 && !$name2)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede_id"]];
if($titel1)
$adrstr .= " ".$titels[$adresse["titel_id"]];
$adrstr .= " und ";
$adrstr .= $anrs[$adresse["anrede2_id"]];
if($titel2)
$adrstr .= " ".$titels[$adresse["titel2_id"]];
$adrstr .= "<br />";
if($adresse["vname"])
$adrstr .= trim($adresse["vname"])." ".trim($adresse["nname"]);
else
$adrstr .= trim($adresse["nname"]);
}
elseif($anr1 && $anr2 && $name2 && !$name1)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede_id"]];
if($titel1)
$adrstr .= " ".$titels[$adresse["titel_id"]];
$adrstr .= " und ";
$adrstr .= $anrs[$adresse["anrede2_id"]];
if($titel2)
$adrstr .= " ".$titels[$adresse["titel2_id"]];
$adrstr .= "<br />";
if($adresse["vname2"])
$adrstr .= trim($adresse["vname2"])." ".trim($adresse["nname2"]);
else
$adrstr .= trim($adresse["nname2"]);
}
else
{
if($anr1)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede_id"]]." ";
}
if($titel1)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $titels[$adresse["titel_id"]]." ";
}
if($name1)
{
if(!$titel1 && !$firma && !$firmaanr && !$name2 && $adrstr)
$adrstr .= "<br />";
if(!$anr1 && !$titel1 && $adrstr)
$adrstr .= "<br />";
if($adresse["vname"])
$adrstr .= trim($adresse["vname"])." ".trim($adresse["nname"]);
else
$adrstr .= trim($adresse["nname"]);
}
if($anr2)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede2_id"]]." ";
}
if($titel2)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $titels[$adresse["titel2_id"]]." ";
}
if($name2)
{
if(!$titel2 && !$firma && !$firmaanr && !$name1 && !$anr1 && $adrstr)
$adrstr .= "<br />";
if(!$anr2 && !$titel2 && $adrstr)
$adrstr .= "<br />";
if($adresse["vname2"])
$adrstr .= trim($adresse["vname2"])." ".trim($adresse["nname2"]);
else
$adrstr .= trim($adresse["nname2"]);
}
}
if($str)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= trim($adresse["str"])." ".trim($adresse["hnr"]);
}
if($ort)
{
if($adrstr)
$adrstr .= "<br />";
if($land)
$adresse["ort"] = strtoupper($adresse["ort"]);
$adrstr .= trim($adresse["plz"])." ".trim($adresse["ort"]);
}
if($land)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= trim(strtoupper($adresse["land"]));
}
$lines=explode("<br />",$adrstr);
$lines = count($lines);
return array("lines"=>$lines,"adresse"=>$adrstr);
}
function makeadradresse($dbconn,$partnerid)
{
$qry=mysqli_query($dbconn,"SELECT nname, titel_id, titel2_id, vname, nname2, vname2, str, ort, plz, hnr, land, firma, anrede_id, anrede2_id, partner_id, adresse.id AS adresse_id
FROM adresse
JOIN strasse ON strasse.id = str_id
JOIN ort ON ort.id = ort_id JOIN land ON land.id = land_id
JOIN partner ON partner.id = partner_id
WHERE adresse.typ_id = 1 AND partner_id= $partnerid") or $err= error("Fehler beim ermitteln der Adressdaten<br />".mysqli_error($dbconn));
$adresse = mysqli_fetch_assoc($qry);
$qry = mysqli_query($dbconn,"SELECT * FROM anrede");
while($res=mysqli_fetch_assoc($qry))
{
$anrs[$res["id"]] = $res["anrede"];
}
$qry = mysqli_query($dbconn,"SELECT * FROM titel");
while($res=mysqli_fetch_assoc($qry))
{
$titels[$res["id"]] = $res["titel"];
}
define("ADRFIELD_FIRMAANR", 0);
define("ADRFIELD_FIRMA", 1);
define("ADRFIELD_ANR1", 2);
define("ADRFIELD_TITEL1", 3);
define("ADRFIELD_NAME1", 4);
define("ADRFIELD_ANR2", 5);
define("ADRFIELD_TITEL2", 6);
define("ADRFIELD_NAME2", 7);
define("ADRFIELD_STR", 8);
define("ADRFIELD_ORT", 9);
define("ADRFIELD_LAND", 10);
$adressfields = "";
if($adresse["firma"])
$adressfields .= "11";
else
$adressfields .= "00";
if($anrs[$adresse["anrede_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($titels[$adresse["titel_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($adresse["vname"] || $adresse["nname"])
$adressfields .= "1";
else
$adressfields .= "0";
if($anrs[$adresse["anrede2_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($titels[$adresse["titel2_id"]])
$adressfields .= "1";
else
$adressfields .= "0";
if($adresse["vname2"] || $adresse["nname2"])
$adressfields .= "1";
else
$adressfields .= "0";
$adressfields .= "110";
$firmaanr = substr($adressfields,ADRFIELD_FIRMAANR,1);
$firma = substr($adressfields,ADRFIELD_FIRMA,1);
$anr1 = substr($adressfields,ADRFIELD_ANR1,1);
$titel1 = substr($adressfields,ADRFIELD_TITEL1,1);
$name1 = substr($adressfields,ADRFIELD_NAME1,1);
$anr2 = substr($adressfields,ADRFIELD_ANR2,1);
$titel2 = substr($adressfields,ADRFIELD_TITEL2,1);
$name2 = substr($adressfields,ADRFIELD_NAME2,1);
$str = substr($adressfields,ADRFIELD_STR,1);
$ort = substr($adressfields,ADRFIELD_ORT,1);
$land = substr($adressfields,ADRFIELD_LAND,1);
if($firmaanr)
{
$adrstr .= "Firma";
}
if($firma)
{
$adrstr .= "<br />".trim($adresse["firma"]);
}
if($anr1 && $anr2 && $name1 && !$name2)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede_id"]];
if($titel1)
$adrstr .= " ".$titels[$adresse["titel_id"]];
$adrstr .= " und ";
$adrstr .= $anrs[$adresse["anrede2_id"]];
if($titel2)
$adrstr .= " ".$titels[$adresse["titel2_id"]];
$adrstr .= "<br />";
if($adresse["vname"])
$adrstr .= trim($adresse["vname"])." ".trim($adresse["nname"]);
else
$adrstr .= trim($adresse["nname"]);
}
elseif($anr1 && $anr2 && $name2 && !$name1)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede_id"]];
if($titel1)
$adrstr .= " ".$titels[$adresse["titel_id"]];
$adrstr .= " und ";
$adrstr .= $anrs[$adresse["anrede2_id"]];
if($titel2)
$adrstr .= " ".$titels[$adresse["titel2_id"]];
$adrstr .= "<br />";
if($adresse["vname2"])
$adrstr .= trim($adresse["vname2"])." ".trim($adresse["nname2"]);
else
$adrstr .= trim($adresse["nname2"]);
}
else
{
if($anr1)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede_id"]]." ";
}
if($titel1)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $titels[$adresse["titel_id"]]." ";
}
if($name1)
{
if(!$titel1 && !$firma && !$firmaanr && !$name2 && $adrstr)
$adrstr .= "<br />";
if(!$anr1 && !$titel1 && $adrstr)
$adrstr .= "<br />";
if($adresse["vname"])
$adrstr .= trim($adresse["vname"])." ".trim($adresse["nname"]);
else
$adrstr .= trim($adresse["nname"]);
}
if($anr2)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $anrs[$adresse["anrede2_id"]]." ";
}
if($titel2)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= $titels[$adresse["titel2_id"]]." ";
}
if($name2)
{
if(!$titel2 && !$firma && !$firmaanr && !$name1 && !$anr1 && $adrstr)
$adrstr .= "<br />";
if(!$anr2 && !$titel2 && $adrstr)
$adrstr .= "<br />";
if($adresse["vname2"])
$adrstr .= trim($adresse["vname2"])." ".trim($adresse["nname2"]);
else
$adrstr .= trim($adresse["nname2"]);
}
}
if($str)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= trim($adresse["str"])." ".trim($adresse["hnr"]);
}
if($ort)
{
if($adrstr)
$adrstr .= "<br />";
if($land)
$adresse["ort"] = strtoupper($adresse["ort"]);
$adrstr .= trim($adresse["plz"])." ".trim($adresse["ort"]);
}
if($land)
{
if($adrstr)
$adrstr .= "<br />";
$adrstr .= trim(strtoupper($adresse["land"]));
}
$lines=explode("<br />",$adrstr);
$lines = count($lines);
return array("lines"=>$lines,"adresse"=>$adrstr);
}
function maketelnrn($dbconn,$termid)
{
$telstr = "";
$adresse = db_zeile($dbconn,"SELECT partner_id, adresse_id
FROM termin
JOIN adresse ON termin.adresse_id = adresse.id
WHERE termin.id = ?", array($termid));
if($adresse)
{
$zeilen = db_zeilen($dbconn,"SELECT name, typ, tel.id, nr, ort, ortsteil, plz, vwahl FROM tel
LEFT JOIN teltyp ON tel.typ_id = teltyp.id
LEFT JOIN ort ON tel.ort_id = ort.id
WHERE partner_id = ? AND (tel.adresse_id = 0 OR tel.adresse_id = ?)
ORDER BY tel.typ_id ASC", array($adresse["partner_id"], $adresse["adresse_id"]));
foreach((array)$zeilen as $res)
$telstr .= trim($res["typ"]).": "." (".$res["vwahl"].") ".$res["nr"]." in ".$res["ort"]."(".$res["name"].")\\n";
$zeilen = db_zeilen($dbconn,"SELECT kontakt, typ FROM kontakt
LEFT JOIN kontakttyp ON kontakt.typ_id = kontakttyp.id
WHERE partner_id = ? ORDER BY kontakt.typ_id ASC", array($adresse["partner_id"]));
foreach((array)$zeilen as $res)
$telstr .= trim($res["typ"]).": ".$res["kontakt"]."\\n";
}
return $telstr;
}
function makeadrtelnrn($dbconn,$partnerid)
{
$telstr = "";
$zeilen = db_zeilen($dbconn,"SELECT name, typ, tel.id, nr, ort, ortsteil, plz, vwahl FROM tel
LEFT JOIN teltyp ON tel.typ_id = teltyp.id
LEFT JOIN ort ON tel.ort_id = ort.id
WHERE partner_id = ? ORDER BY tel.typ_id ASC", array($partnerid));
foreach((array)$zeilen as $res)
$telstr .= trim($res["typ"]).": "."(".$res["vwahl"].")".$res["nr"].",".$res["ort"]."(".$res["name"].")\\n";
return $telstr;
}
function makegooglestring($dbconn,$termid)
{
$googlestr = "";
$adresse = db_zeile($dbconn,"SELECT nname, titel_id, titel2_id, vname, nname2, vname2, str, ort, plz, hnr, land, firma, anrede_id, anrede2_id
FROM termin
JOIN adresse ON termin.adresse_id = adresse.id
JOIN strasse ON strasse.id = str_id
JOIN ort ON ort.id = ort_id JOIN land ON land.id = land_id
WHERE termin.id = ?", array($termid));
if($adresse)
{
$googlestr = "http://maps.googleapis.com/maps/api/staticmap";
$googlestr .= "?markers=color:blue|label:A|";
$googlestr .= str_replace(" ","+",trim($adresse["plz"])." ".trim($adresse["ort"])." ".trim($adresse["str"])." ".trim($adresse["hnr"]));
$googlestr .= "&zoom=15&size=400x400&scale=2&sensor=false&maptype=roadmap";
//maptype: roadmap, hybrid, terrain, satellite
}
else
message("Adresse nicht gefunden");
return $googlestr;
}
function makeprojectpage($pdf,$adresse,$telnrn,$project,$work)
{
if($ajax)
$picpath = "../pics/";
else
$picpath = "./pics/";
$pdf->SetFont(PDF_SCHRIFT_SANS,'B',6);
$pdf->setY(35);
$pdf->setX(25);
if($_SESSION["firma"] == "Wagner Markisen")
{
$pdf->SetTextColor(124,124,138);
$pdf->Cell(0,3,'WAGNER MARKISEN GMBH · IM ENGELFELD 13 · 87509 IMMENSTADT',0,0,'L');
}
elseif($_SESSION["firma"] == "Ingenieurbüro Wagner")
{
$pdf->SetTextColor(20,47,119);
$pdf->Cell(0,3,'INGENIEURBÜRO MORITZ WAGNER IM ENGELFELD 13 87509 IMMENSTADT TEL.: 0176 22522937',0,0,'L');
}
else
{
$pdf->SetTextColor(124,124,138);
$pdf->Cell(0,3,'LSG OBERALLGÄU e.V. PHILIPP WAGNER IM ENGELFELD 13 87509 IMMENSTADT TEL.: 0176/21938558',0,0,'L');
}
$pdf->SetTextColor(0,0,0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->setY(40);
$pdf->setX(25);
$pdf->MultiCell(85,0,str_replace("<br />","\n",$adresse["adresse"]),0,"L",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',10);
$tmpY = $pdf->getY();
$pdf->setY(40);
$pdf->setX(110);
$pdf->MultiCell(0,0,"Telefon:\n".$telnrn,0,"L",0);
if($pdf->getY() > $tmpY)
$tmpY = $pdf->getY();
$pdf->setY($tmpY);
$pdf->Ln(5);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'BU',16);
$pdf->Cell(0,5,$project["name"],0,1,"C",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',16);
$pdf->Ln(12);
//Table-re-HEAD
$currY = $pdf->GetY();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(135,5,'Arbeit',0,0,'C');
$pdf->setX(155);
$pdf->Cell(25,5,'Datum',0,0,'C');
$pdf->setX(180);
$pdf->Cell(20,5,'Zeit',0,0,'C');
$pdf->Ln();
$pdf->Line(18 , $pdf->GetY(), 200, $pdf->GetY());
$pdf->Line(180 , $pdf->GetY()-5, 180, 270);
$pdf->Line(155 , $pdf->GetY()-5, 155, 270);
$currY = $pdf->GetY();
$pdf->SetDrawColor(100,100,100);
//while($pdf->GetY() < 260)
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$gesstd = 0;
foreach($work as $workline)
{
$i++;
if($i%2)
{
$pdf->rect(20,$pdf->GetY(),176,5,'F',Array("all"=>0),array(230,230,230));
}
$pdf->setX(20);
$pdf->Cell(135,5,$workline["bezeichn"],0,0,'L');
$pdf->setX(155);
$pdf->Cell(25,5,$workline["datetime"],0,0,'C');
$pdf->setX(180);
$pdf->Cell(20,5,number_format($workline["std"],1,",",".")." Std.",0,0,'C');
$pdf->Ln();
$gesstd += $workline["std"];
if($pdf->GetY()>255)
{
$pdf->AddPage("P");
//Table-re-HEAD
$currY = $pdf->GetY();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(135,5,'Arbeit',0,0,'C');
$pdf->setX(155);
$pdf->Cell(25,5,'Datum',0,0,'C');
$pdf->setX(180);
$pdf->Cell(20,5,'Zeit',0,0,'C');
$pdf->Ln();
$pdf->Line(18 , $pdf->GetY(), 200, $pdf->GetY());
$pdf->Line(180 , $pdf->GetY()-5, 180, 270);
$pdf->Line(155 , $pdf->GetY()-5, 155, 270);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
}
}
$pdf->Line(18 , $pdf->GetY()+1, 200, $pdf->GetY());
$pdf->Line(18 , $pdf->GetY()+2, 200, $pdf->GetY()+1);
$pdf->SetY($pdf->GetY()+3);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(135,5,'Arbeitsstunden Summe:',0,0,'C');
$pdf->setX(155);
$pdf->Cell(25,5,'',0,0,'C');
$pdf->setX(180);
$pdf->Cell(20,5,number_format($gesstd,1,",",".")." Std.",0,0,'C');
}
function makezeitpage($pdf,$name,$daymins,$zeiten)
{
if($ajax)
$picpath = "../pics/";
else
$picpath = "./pics/";
$pdf->SetFont(PDF_SCHRIFT_SANS,'B',6);
$pdf->setY(35);
$pdf->setX(25);
if($_SESSION["firma"] == "Wagner Markisen")
{
$pdf->SetTextColor(124,124,138);
$pdf->Cell(0,3,'WAGNER MARKISEN GMBH · IM ENGELFELD 13 · 87509 IMMENSTADT',0,0,'L');
}
elseif($_SESSION["firma"] == "Ingenieurbüro Wagner")
{
$pdf->SetTextColor(20,47,119);
$pdf->Cell(0,3,'INGENIEURBÜRO MORITZ WAGNER IM ENGELFELD 13 87509 IMMENSTADT TEL.: 0176 22522937',0,0,'L');
}
else
{
$pdf->SetTextColor(124,124,138);
$pdf->Cell(0,3,'LSG OBERALLGÄU e.V. PHILIPP WAGNER IM ENGELFELD 13 87509 IMMENSTADT TEL.: 0176/21938558',0,0,'L');
}
$pdf->SetTextColor(0,0,0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$pdf->setY(40);
$pdf->setX(25);
$pdf->MultiCell(85,0,str_replace("<br />","\n",$name),0,"L",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',10);
$tmpY = $pdf->getY();
$pdf->setY(40);
$pdf->setX(110);
$pdf->MultiCell(0,0,"Arbeitsstunden pro Tag:\n".$daymins/60,0,"L",0);
if($pdf->getY() > $tmpY)
$tmpY = $pdf->getY();
$pdf->setY($tmpY);
$pdf->Ln(5);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'BU',16);
$pdf->Cell(0,5,$project["name"],0,1,"C",0);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',16);
$pdf->Ln(12);
//Table-re-HEAD
$currY = $pdf->GetY();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(35,5,'Kommen',0,0,'C');
$pdf->setX(55);
$pdf->Cell(35,5,'Gehen',0,0,'C');
$pdf->setX(90);
$pdf->Cell(20,5,'Pause',0,0,'C');
$pdf->setX(110);
$pdf->Cell(20,5,'Zeit',0,0,'C');
$pdf->Ln();
$pdf->Line(18 , $pdf->GetY(), 200, $pdf->GetY());
$pdf->Line(53 , $pdf->GetY()-5, 53, 270);
$pdf->Line(88 , $pdf->GetY()-5, 88, 270);
$currY = $pdf->GetY();
$pdf->SetDrawColor(100,100,100);
//while($pdf->GetY() < 260)
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
$gesstd = 0;
foreach($zeiten as $zeit)
{
$i++;
if($i%2)
{
$pdf->rect(20,$pdf->GetY(),176,5,'F',Array("all"=>0),array(230,230,230));
}
$pdf->setX(20);
$pdf->Cell(35,5,$zeit["kommen"],0,0,'L');
$pdf->setX(55);
$pdf->Cell(35,5,$zeit["gehen"],0,0,'C');
$pdf->setX(90);
$pdf->Cell(20,5,$zeit["pause_mins"]." Min.",0,0,'C');
$pdf->setX(110);
$pdf->Cell(20,5,floor($zeit["dauer_mins"]/60)." h ".round($zeit["dauer_mins"]-floor($zeit["dauer_mins"]/60)*60,0)."min",0,0,'C');
$pdf->Ln();
if($pdf->GetY()>255)
{
$pdf->AddPage("P");
//Table-re-HEAD
$currY = $pdf->GetY();
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(35,5,'Kommen',0,0,'C');
$pdf->setX(55);
$pdf->Cell(35,5,'Gehen',0,0,'C');
$pdf->setX(90);
$pdf->Cell(20,5,'Pause',0,0,'C');
$pdf->setX(110);
$pdf->Cell(20,5,'Zeit',0,0,'C');
$pdf->Ln();
$pdf->Line(18 , $pdf->GetY(), 200, $pdf->GetY());
$pdf->Line(180 , $pdf->GetY()-5, 180, 270);
$pdf->Line(155 , $pdf->GetY()-5, 155, 270);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'',12);
}
}
$pdf->Line(18 , $pdf->GetY()+1, 200, $pdf->GetY());
$pdf->Line(18 , $pdf->GetY()+2, 200, $pdf->GetY()+1);
$pdf->SetY($pdf->GetY()+3);
$pdf->SetFont(PDF_SCHRIFT_SERIF,'B',14);
$pdf->setX(20);
$pdf->Cell(35,5,'Arbeitsstunden Summe:',0,0,'C');
$pdf->setX(55);
$pdf->Cell(35,5,'',0,0,'C');
$pdf->setX(90);
$pdf->Cell(20,5,number_format($gesstd,1,",",".")." Min.",0,0,'C');
$pdf->setX(110);
$pdf->Cell(20,5,number_format($gesstd,1,",",".")." Min.",0,0,'C');
}
?>