') AS nname, '' AS vname,GROUP_CONCAT(CONCAT(vname2,' ',nname2) SEPARATOR '
') AS nname2,'' AS vname2,'' AS ort,GROUP_CONCAT(CONCAT(plz,' ',ort) SEPARATOR '
') AS plz,GROUP_CONCAT(CONCAT(str,' ',hnr) SEPARATOR '
') AS str,'' AS hnr, GROUP_CONCAT(tel.nr SEPARATOR '
') AS tel FROM partner LEFT JOIN adresse ON adresse.partner_id = partner.id LEFT JOIN strasse ON strasse.id = str_id LEFT JOIN ort ON ort.id = ort_id LEFT JOIN tel ON tel.partner_id = partner.id LEFT JOIN kontakt ON kontakt.partner_id = partner.id WHERE partner.typ_id = $typ"; } switch($fields) { case "all": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag' OR ort LIKE '$tag' OR str LIKE '$tag' OR plz LIKE '$tag' OR partner.id LIKE '$tag')"; } break; case "kdnr": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (partner.id LIKE '$tag')"; } break; case "name": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag')"; } break; case "str": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (str LIKE '$tag')"; } break; case "plz": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (plz LIKE '$tag')"; } break; case "ort": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (ort LIKE '$tag')"; } break; case "tel": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (tel.nr LIKE '$tag')"; } break; case "kont": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (kontakt LIKE '$tag')"; } break; } $query .= " GROUP BY partner.id"; $ret["all"] = $query; $query .= " LIMIT ".(intval($page)*$pagesize).", $pagesize"; $ret["limited"] = $query; return $ret; } function createAdressQry($page,$pagesize,$src,$combiner,$fields,$full=0,$typ=1) { if(!$full) { $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr,adresse.id AS adrid, tel.nr AS tel FROM partner LEFT JOIN adresse ON adresse.partner_id = partner.id LEFT JOIN strasse ON strasse.id = str_id LEFT JOIN ort ON ort.id = ort_id LEFT JOIN tel ON tel.partner_id = partner.id LEFT JOIN kontakt ON kontakt.partner_id = partner.id WHERE updated_by = 0 AND partner.typ_id = $typ"; } else { $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr,adresse.id AS adrid, tel.nr AS tel FROM partner LEFT JOIN adresse ON adresse.partner_id = partner.id LEFT JOIN strasse ON strasse.id = str_id LEFT JOIN ort ON ort.id = ort_id LEFT JOIN tel ON tel.partner_id = partner.id LEFT JOIN kontakt ON kontakt.partner_id = partner.id WHERE partner.typ_id = $typ"; } switch($fields) { case "all": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag' OR ort LIKE '$tag' OR str LIKE '$tag' OR plz LIKE '$tag' OR partner.id LIKE '$tag')"; } break; case "kdnr": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (partner.id LIKE '$tag')"; } break; case "name": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag')"; } break; case "str": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (str LIKE '$tag')"; } break; case "plz": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (plz LIKE '$tag')"; } break; case "ort": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (ort LIKE '$tag')"; } break; case "tel": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (tel.nr LIKE '$tag')"; } break; case "kont": foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (kontakt LIKE '$tag')"; } break; } $query .= " GROUP BY adresse.id"; $ret["all"] = $query; $query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query; return $ret; } /* * Suche in den Dokumenten eines Kunden. Liefert array("all" => sql, * "limited" => sql mit LIMIT, "params" => Platzhalterwerte für beide). * $combiner muss "AND" oder "OR" sein. */ function createKdnRechQry($page,$pagesize,$src,$combiner,$id,$typ,$sks=0) { $docnr = "rechnr"; $combiner = $combiner == "OR" ? "OR" : "AND"; $params = array($id, $typ); if(!$sks) { $query = "SELECT rechnung.$docnr AS rechnr, rechnung.id, DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date, GROUP_CONCAT(CONCAT(artikel.bezeichn, ' (', artikel_rechn.wanr, ')') SEPARATOR '\n') AS artikel, adresse_id, storno, rechnung.typ_id FROM rechnung LEFT JOIN rechtyp ON rechnung.typ_id = rechtyp.id LEFT JOIN artikel_rechn ON rechnung.id = artikel_rechn.rech_id LEFT JOIN artikel ON artikel_rechn.art_id = artikel.id WHERE partner_id = ? AND rechtyp.id = ? AND rechnung.sks = 0 "; foreach($src AS $tag) { $tag .= "%"; $query .= " $combiner (artikel.bezeichn LIKE ? OR rechnung.rechnr LIKE ? OR DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') LIKE ?)"; array_push($params, $tag, $tag, $tag); } } else { $query = "SELECT rechnung.$docnr AS rechnr, rechnung.id, DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date, GROUP_CONCAT(CONCAT(artikelsks.bezeichn1, ' ', artikelsks.bezeichn2) SEPARATOR '\n') AS artikel, adresse_id, rechnung.typ_id FROM rechnung LEFT JOIN rechtyp ON rechnung.typ_id = rechtyp.id RIGHT JOIN artikelsks ON rechnung.rechnr = artikelsks.rechnr WHERE partner_id = ? AND rechtyp.id = ? AND rechnung.sks = 1 "; foreach($src AS $tag) { $tag .= "%"; $query .= " $combiner (artikelsks.bezeichn1 LIKE ? OR artikelsks.bezeichn2 LIKE ? OR rechnung.rechnr LIKE ? OR DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') LIKE ?)"; array_push($params, $tag, $tag, $tag, $tag); } } $query .= " GROUP BY rechnung.rechnr ORDER BY rechnung.datetime DESC "; $ret["all"] = $query; $query .= " LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize; $ret["limited"] = $query; $ret["params"] = $params; return $ret; } function createKdnProjectQry($page,$pagesize,$src,$combiner,$id) { $query = "SELECT project.id, project.name, DATE_FORMAT(project.datetime, '%d.%m.%Y') AS date, SUM(CASE WHEN rechn = 0 THEN work.std ELSE 0 END) AS work FROM project JOIN work ON project.id = work.project_id AND partner_id='".$id."'"; foreach($src AS $tag) { $tag .= "%"; $query .= " $combiner (work.bezeichn LIKE '$tag' OR project.name LIKE '$tag' OR DATE_FORMAT(project.datetime, '%d.%m.%Y') LIKE '$tag')"; } $query .= " GROUP BY project.id ORDER BY project.datetime DESC "; $ret["all"] = $query; $query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query; return $ret; } function createKommQry($page,$pagesize,$src,$combiner,$id) { $query = "SELECT adresse.id, adresse.partner_id, firma, vname, nname, vname2, nname2, titel_id, titel2_id, anrede_id, anrede2_id, str, hnr, ort, ortsteil,plz,ort,nr AS tel,vwahl FROM adresse LEFT JOIN strasse ON adresse.str_id = strasse.id LEFT JOIN ort ON ort_id = ort.id LEFT JOIN tel ON adresse.id = tel.adresse_id WHERE adresse.partner_id='".$id."' AND adresse.typ_id = '5' "; foreach($src AS $tag) { $tag .= "%"; $query .= " $combiner (ort LIKE '$tag' OR str LIKE '$tag' OR nr LIKE '$tag' OR vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag')"; } $query .= " GROUP BY adresse.id ORDER BY adresse.id DESC "; $ret["all"] = $query; $query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query; return $ret; } /* * Suche über alle Dokumente, Rückgabe wie createKdnRechQry(). */ function createRechQry($page,$pagesize,$src,$combiner,$sks=0) { $docnr = "rechnr"; $combiner = $combiner == "OR" ? "OR" : "AND"; $params = array(); if(!$sks) { $query = "SELECT CONCAT(ELT(rechnung.typ_id,'R','G','A','B','L','M'),MID(rechnung.$docnr,1,4),'-',MID(rechnung.$docnr,5,2),'-',MID(rechnung.$docnr,7,2),'.',MID(rechnung.$docnr,9,2)) AS drechnr, rechnung.$docnr AS rechnr, rechnung.id, DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date, GROUP_CONCAT(CONCAT(artikel.bezeichn, ' (', artikel_rechn.wanr, ')') SEPARATOR '\n') AS artikel, adresse_id, storno, rechnung.typ_id FROM rechnung LEFT JOIN rechtyp ON rechnung.typ_id = rechtyp.id LEFT JOIN artikel_rechn ON rechnung.id = artikel_rechn.rech_id LEFT JOIN artikel ON artikel_rechn.art_id = artikel.id WHERE rechnung.sks = 0"; foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (artikel.bezeichn LIKE ? OR CONCAT(ELT(rechnung.typ_id,'R','G','A','B','L','M'),MID(rechnung.$docnr,1,4),'-',MID(rechnung.$docnr,5,2),'-',MID(rechnung.$docnr,7,2),'.',MID(rechnung.$docnr,9,2)) LIKE ? OR DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') LIKE ?)"; array_push($params, $tag, $tag, $tag); } } else { $query = "SELECT rechnung.$docnr AS drechnr, rechnung.$docnr AS rechnr, rechnung.id, DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date, GROUP_CONCAT(CONCAT(artikelsks.bezeichn1, ' ', artikelsks.bezeichn2) SEPARATOR '\n') AS artikel, adresse_id, storno = 0, rechnung.typ_id FROM rechnung LEFT JOIN rechtyp ON rechnung.typ_id = rechtyp.id RIGHT JOIN artikelsks ON rechnung.rechnr = artikelsks.rechnr WHERE rechnung.sks = 1 "; foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (artikelsks.bezeichn1 LIKE ? OR artikelsks.bezeichn2 LIKE ? OR rechnung.rechnr LIKE ? OR DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') LIKE ?)"; array_push($params, $tag, $tag, $tag, $tag); } } $query .= " GROUP BY rechnung.rechnr ORDER BY rechnung.datetime DESC "; $ret["all"] = $query; $query .= " LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize; $ret["limited"] = $query; $ret["params"] = $params; return $ret; } function createTermQry($page,$pagesize,$src,$combiner,$termtyp) { $query = "SELECT termin.id,termtyp.typ, termin.head, MIN(termtime) AS termtime, SEC_TO_TIME(SUM(TIME_TO_SEC(termdauer))) AS termdauer, user, user2, user3, user4, done, partner_id, adresse_id, termin.id, str, ort, ortsteil, plz, hnr, adresse.vname as vname, adresse.nname as nname, adresse.firma as firma, user.vname as uservname, user.nname as usernname, user.color as color, user2.vname as uservname2, user2.nname as usernname2, user3.vname as uservname3, user3.nname as usernname3, user4.vname as uservname4, user4.nname as usernname4, firma, vname2, nname2 FROM termin LEFT JOIN termtyp ON termin.typ = termtyp.id LEFT JOIN adresse ON termin.adresse_id = adresse.id LEFT JOIN partner ON adresse.partner_id = partner.id LEFT JOIN strasse ON adresse.str_id = strasse.id LEFT JOIN ort ON strasse.ort_id = ort.id LEFT JOIN user ON termin.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 "; if($termtyp == 1) $query .= "termdauer != '24:00:00' AND termtime != '0000-00-00 00:00:00' AND done = 0 AND act_date < NOW()"; elseif($termtyp == 2) $query .= "termdauer != '24:00:00' AND termtime = '0000-00-00 00:00:00' AND done = 0 AND act_date < NOW()"; elseif($termtyp == 3) $query .= "termdauer != '24:00:00' AND done = 1 AND act_date < NOW()"; elseif($termtyp == 4) $query .= "termdauer != '24:00:00' AND act_date > NOW()"; elseif($termtyp == 5) $query .= "termdauer = '24:00:00'"; foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (termin.head LIKE '$tag' OR termin.text LIKE '$tag' OR adresse.firma LIKE '$tag' OR adresse.vname LIKE '$tag' OR adresse.nname LIKE '$tag' OR ort LIKE '$tag' OR plz LIKE '$tag' OR str LIKE '$tag' OR DATE_FORMAT(termtime, '%d.%m.%Y %H:%i') LIKE '$tag')"; } if($termtyp == 2) $query .= " GROUP BY main_id ORDER BY ort ASC, termtime DESC"; elseif($termtyp != 5 && $termtyp != 3) $query .= " GROUP BY main_id ORDER BY termtime ASC"; else $query .= " GROUP BY main_id ORDER BY termtime DESC"; $ret["all"] = $query; $query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query; return $ret; } function createZeitQry($page,$pagesize,$src,$combiner,$user) { $query = "SELECT zeiten.id,DATE_FORMAT(zeiten.kommen,'%d.%m.%y %H:%i') AS kommen, DATE_FORMAT(zeiten.gehen,'%d.%m.%y %H:%i') AS gehen, zeiten.pause_mins, floor(TIME_TO_SEC(SUBTIME(TIMEDIFF(gehen,kommen),MAKETIME(FLOOR(pause_mins/60), pause_mins % 60, 0)))/60) AS dauer_mins, floor(TIME_TO_SEC(TIMEDIFF(kommen,STR_TO_DATE(CONCAT(DATE(kommen), ' ', MAKETIME(7,30,0)), '%Y-%m-%d %H:%i:%s')))/60) AS early_mins, user.weekhours*60/5 as sollDayMins FROM zeiten LEFT JOIN user ON zeiten.ma_id = user.id WHERE user.id = '".$user."'"; foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (DATE_FORMAT(zeiten.gehen,'%d.%m.%Y') LIKE '$tag' OR DATE_FORMAT(zeiten.kommen,'%d.%m.%Y') LIKE '$tag')"; } $query .= " ORDER BY zeiten.kommen DESC"; $ret["all"] = $query; $query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query; //echo $query; return $ret; } function createMsgQry($page,$pagesize,$src,$combiner,$user) { $query = "SELECT msg, rd, DATE_FORMAT(datetime,'%d.%m.%Y - %H:%i Uhr') AS datetime, send_id, send.vname AS sendvname, send.nname AS sendnname, rec_id, rec.vname AS recvname, rec.nname AS recnname FROM message LEFT JOIN user AS rec ON message.rec_id = rec.id LEFT JOIN user AS send ON message.send_id = send.id WHERE "; $query .= "(rec_id = '".$_SESSION["user"]."' AND send_id = '".$user."') OR (rec_id = '".$user."' AND send_id = '".$_SESSION["user"]."')"; foreach($src AS $tag) { $tag = "%".$tag."%"; $query .= " $combiner (message.msg LIKE '$tag' OR DATE_FORMAT(datetime, '%d.%m.%Y %H:%i') LIKE '$tag')"; } $query .= " ORDER BY message.id ASC"; $ret["all"] = $query; $query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query; return $ret; } /* Artikelliste aus createRechQry()/createKdnRechQry() als escaptes HTML, eine Zeile je Artikel */ function artikelListeHtml($artikel) { return implode("
", array_map("htmlspecialchars", explode("\n", (string)$artikel))); } function displayPages($pagesize,$currpage,$numentries,$refreshfunc,$ad_params = "") { echo "Seite: "; if($currpage == 0) echo " 1 "; else echo " 1 "; $i = 1; while($numentries > $i*$pagesize) { $i++; if($i<9 || $currpage == $i-1 || $currpage == $i-2 || $currpage == $i || $i*$pagesize > $numentries-$pagesize*2) { $gap=0; if($currpage == $i-1) echo " ".$i." "; else echo " $i "; } else { if(!$gap) echo " ..... "; $gap = 1; } } } function displaySplitPages($pagesize,$firstcurrpage,$secondcurrpage,$pagesplitNr,$numentries,$refreshfunc,$ad_params = "") { if($pagesplitNr == 0) $currpage=$firstcurrpage; else $currpage=$secondcurrpage; echo "Seite: "; if($currpage == 0) echo " 1 "; else if($pagesplitNr == 0) echo " 1 "; else echo " 1 "; $i = 1; while($numentries > $i*$pagesize) { $i++; if($i<9 || $currpage == $i-1 || $currpage == $i-2 || $currpage == $i || $i*$pagesize > $numentries-$pagesize*2) { $gap=0; if($currpage == $i-1) echo " ".$i." "; else if($pagesplitNr == 0) echo " $i "; else echo " $i "; } else { if(!$gap) echo " ..... "; $gap = 1; } } } function displayList($header,$entries,$speciallines=array(),$colors=array()) { echo ""; if($colors) echo ""; foreach($header AS $head) { echo ""; } echo ""; $i = 0; foreach($entries AS $entry) { if($i%2) echo ""; else echo ""; if(isset($colors[$i])) echo ""; foreach($entry AS $element) { echo ""; } echo ""; $i++; } if($speciallines) { foreach($speciallines AS $entry) { $i++; if($i%2) echo ""; else echo ""; foreach($entry AS $element) { echo ""; } echo ""; } } echo "
$head
$element
$element
"; } function makenameline($adresse) { $ret = $adresse["vname"]." ".$adresse["nname"]; if($adresse["firma"]) $ret .= "
".$adresse["firma"].""; return $ret; } function makeadressline($adresse) { $ret["ort"] = $adresse["plz"]." ".$adresse["ort"]; $ret["str"] = $adresse["str"]." ".$adresse["hnr"]; return $ret; } function maketelline($tel) { $ret=""; if(isset($tel["vwahl"]) && !stristr($tel["tel"], "-") && !stristr($tel["tel"], "/")) $ret = $tel["vwahl"]."-"; $ret .= $tel["tel"]; return $ret; } ?>