Kunden und Adressen auf Prepared Statements umgebaut

incs/saveNchange.php neu geschrieben: Adressen, Telefonnummern, Kontakte,
Notizen und Konten laufen ueber db_abfrage() mit Platzhaltern, mehrschrittiges
Speichern in einer Transaktion. Weil sich die Speicherfunktionen gegenseitig
aufrufen, klammern beginneSpeichern()/beendeSpeichern() die Verschachtelung;
incs/rechnung.php nutzt sie ebenfalls.

Kunden- und Lieferantenseiten waren zwei fast gleiche Kopien und teilen sich
jetzt partnerAddSeite(), partnerChangeSeite() und partnerShowDaten().

Dabei behoben:
- SQL-Injektion ueber die Suchbegriffe der Kunden-, Lieferanten-, Adress-,
  Kommissions- und Projektsuche sowie ueber die Artikel-Autovervollstaendigung
- gespeichertes XSS: Notizen (nl2br escapt nicht), Bankname, Dokumenttyp,
  Namen und Adressen in allen Trefferlisten
- sites/liefershow.php war unter PHP 8 ein Fatal ($kdnres.id)
- "Telefonnummer loeschen" im Kundenbereich lief in einen Fatal, die Nummern
  einer geloeschten Adresse blieben stehen (Spalte hiess adress_id statt
  adresse_id, mysql_fetch_assoc gibt es nicht mehr)
- Geburtstag ohne Jahr wurde im Formular verschluckt, die IBAN kam beim
  Bearbeiten aus $_GET statt aus dem Konto
- die Versionskette eines Kunden brach nach einem Schritt ab
- Kommissionsadressen speicherten die Ortsangabe der Adresse statt der des
  Telefonformulars und einen Adresstyp als Telefontyp
- Blaettern in den Trefferlisten: ohne ORDER BY konnte dieselbe Zeile zweimal
  oder gar nicht erscheinen; ajax_searchadress() bekam die Seite nicht
- Hauptadresse laesst sich nicht mehr loeschen, Kundendaten nicht mehr ueber
  die Lieferantenseite (und umgekehrt)
- ajax/auto/* baute JSON von Hand zusammen, ein Anfuehrungszeichen im Ort
  machte die Liste unbrauchbar

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 19:47:01 +02:00
co-authored by Claude Opus 5
parent 3f7d070d7f
commit 3dfbf1c9c7
40 changed files with 1706 additions and 2194 deletions
+5 -3
View File
@@ -91,12 +91,14 @@ Eine Schemaänderung besteht also aus: neuer Eintrag **vorn** in `update/version
Regeln für den Umbau: Regeln für den Umbau:
- **Ergebnisse sind Strings** wie früher bei `mysqli_query()`: `db_zeilen()`, `db_zeile()`, `db_wert()` und `db_zuordnung()` wandeln die nativen int/float-Werte der Prepared Statements um. Wer `db_abfrage()` selbst ausliest, bekommt native Typen. - **Ergebnisse sind Strings** wie früher bei `mysqli_query()`: `db_zeilen()`, `db_zeile()`, `db_wert()` und `db_zuordnung()` wandeln die nativen int/float-Werte der Prepared Statements um. Wer `db_abfrage()` selbst ausliest, bekommt native Typen.
- **Formularwerte** über `formularText()`, `formularZahl()` (Komma als Dezimaltrenner, leer wird 0) und `formularGanzzahl()` aus `incs/rechnung.php` holen der strikte Modus lehnt `''` in Zahlenspalten ab. - **Formularwerte** über `formularText()`, `formularZahl()` (Komma als Dezimaltrenner, leer wird 0) und `formularGanzzahl()` aus `incs/saveNchange.php` holen der strikte Modus lehnt `''` in Zahlenspalten ab.
- **Änderungsprotokoll:** `saveLog()` bekommt den Text aus `db_sql_text()`. Die Tabelle `log` ist reine Dokumentation, nichts daraus wird ausgeführt. - **Änderungsprotokoll:** `saveLog()` bekommt den Text aus `db_sql_text()`. Die Tabelle `log` ist reine Dokumentation, nichts daraus wird ausgeführt.
- **Mehrschrittiges Speichern** in eine Transaktion (`mysqli_begin_transaction` / `commit` / `rollback`), damit bei Fehlern keine halben Datensätze bleiben. - **Mehrschrittiges Speichern** in eine Transaktion, damit bei Fehlern keine halben Datensätze bleiben — aber über `beginneSpeichern()` / `beendeSpeichern()` aus `incs/saveNchange.php`, nicht über `mysqli_begin_transaction()` direkt. Die Speicherfunktionen rufen sich gegenseitig auf (`savePart()` `saveAdress()``updateKunde()``saveAdress()`, `loeschePartner()``delRechnung()`), MariaDB kennt aber keine geschachtelten Transaktionen; ein Zähler sorgt dafür, dass nur der äußerste Aufruf öffnet und schließt.
- **Tabellen- und Spaltennamen** lassen sich nicht binden; nur feste Werte aus dem Code einsetzen, `LIMIT` als `(int)`. - **Tabellen- und Spaltennamen** lassen sich nicht binden; nur feste Werte aus dem Code einsetzen, `LIMIT` als `(int)`.
- **Suchabfragen** (`create*Qry()` in `incs/listfuncs.php`) liefern `array("all", "limited", "params")`. Aufrufer nutzen `db_abfrage($dbconn, $q["limited"], $q["params"])` und `zaehleTreffer()`. Die Suchbegriffe sind Platzhalterwerte, `%` und `_` darin bleiben absichtlich Jokerzeichen — so ist die Suche dokumentiert. In der Autovervollständigung (`ajax/auto/`) werden sie dagegen über `db_like_praefix()` entwertet.
- **Werte aus der Datenbank sind kein HTML.** `GROUP_CONCAT` trennt mit einem Zeilenumbruch; zusammengebaut und escaped wird erst in `zeilenHtml()` bzw. `makenameline()`/`makeadressline()`/`maketelline()`.
Umgebaut: Login/Passkeys, Benutzereinstellungen, Änderungsprotokoll, Rechnungsmodul (`incs/rechnung.php`, `sites/rechnungadd.php`, `sites/umschlagshow.php`, `ajax/autosave.php`, `ajax/preview.php`, Rechnungssuche). Offen: Kunden/Adressen (`incs/saveNchange.php`), Termine, Projekte, Zeiten, Benutzerverwaltung, übrige Suchen, `incs/makepdf.php`, `update/`. Umgebaut: Login/Passkeys, Benutzereinstellungen, Änderungsprotokoll, Rechnungsmodul (`incs/rechnung.php`, `sites/rechnungadd.php`, `sites/umschlagshow.php`, `ajax/autosave.php`, `ajax/preview.php`, Rechnungssuche), Kunden und Lieferanten (`incs/saveNchange.php` samt `sites/kunden*.php`, `sites/liefer*.php`, Kunden-, Lieferanten-, Adress- und Kommissionssuche, `ajax/auto/`). Offen: Termine, Projekte, Zeiten, Benutzerverwaltung, `incs/makepdf.php`, `update/`.
Prozedurales `mysqli`. `$dbconn` wird zusätzlich in `$_SESSION["dbconn"]` abgelegt, damit `incs/mysql_ecape_wrapper.php` eine globale Funktion `mysql_escape_string()` als Shim über diese Verbindung bereitstellen kann — ein Überbleibsel der `mysql_*`-Ära, das in altem Code noch aufgerufen wird. Prozedurales `mysqli`. `$dbconn` wird zusätzlich in `$_SESSION["dbconn"]` abgelegt, damit `incs/mysql_ecape_wrapper.php` eine globale Funktion `mysql_escape_string()` als Shim über diese Verbindung bereitstellen kann — ein Überbleibsel der `mysql_*`-Ära, das in altem Code noch aufgerufen wird.
+40 -44
View File
@@ -1,50 +1,46 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) /*
* Artikel-Autovervollständigung für das Rechnungsformular: je Bezeichnung
* der zuletzt angelegte Artikel, dazu Preis und Eigenschaften aus seiner
* letzten Verwendung.
*/
if(!$err && autoBegriff() !== "")
{ {
if($_GET["term"]) $treffer = db_zeilen($dbconn, "SELECT MAX(artikel.id) AS id FROM artikel
{
$qry = mysqli_query($dbconn,"SELECT MAX(artikel.id) AS id FROM artikel
JOIN artikeltyp ON typ_id = artikeltyp.id
WHERE artikel.bezeichn LIKE '".$_GET["term"]."%' AND dropdown = 1 AND YEAR(artikel.datetime) >= YEAR(NOW())-1 GROUP BY artikel.bezeichn") or die(mysqli_error($dbconn));
if($tmpres=mysqli_fetch_array($qry))
{
$innerqry = mysqli_query($dbconn,"SELECT artikel.bezeichn, artikel.typ_id, artikel.einheit_id, artikel.id, artikel_rechn.preis, artikel_rechn.rech_id, artikel_rechn.posnr FROM artikel
JOIN artikeltyp ON typ_id = artikeltyp.id
JOIN artikel_rechn ON artikel.id = art_id
WHERE artikel.id = ".$tmpres["id"]." ORDER BY artikel_rechn.art_id DESC LIMIT 1") or die(mysqli_error($dbconn));
$res = mysqli_fetch_array($innerqry);
echo "[ ";
echo '{"value": "'.$res[0].'","typ": "'.$res[1].'","einh": "'.$res[2].'","preis": "'.number_format($res[4],2,",","").'","eig":[';
$qry2 = mysqli_query($dbconn,"SELECT bezeichn, wert, einheit_id FROM eigensch
JOIN artikel_eigensch ON eig_id = eigensch.id
WHERE art_id='".$res[3]."' AND rech_id='".$res[5]."' AND artposnr = '".$res[6]."' ORDER BY posnr ASC");
if($res2 = mysqli_fetch_array($qry2))
echo '{"des":"'.$res2[0].'","val":"'.$res2[1].'", "einh":"'.$res2[2].'"}';
while($res2=mysqli_fetch_array($qry2))
echo ',{"des":"'.$res2[0].'","val":"'.$res2[1].'", "einh":"'.$res2[2].'"}';
echo ']}';
while($tmpres=mysqli_fetch_array($qry))
{
$innerqry = mysqli_query($dbconn,"SELECT artikel.bezeichn, artikel.typ_id, artikel.einheit_id, artikel.id, artikel_rechn.preis, artikel_rechn.rech_id, artikel_rechn.posnr FROM artikel
JOIN artikeltyp ON typ_id = artikeltyp.id JOIN artikeltyp ON typ_id = artikeltyp.id
JOIN artikel_rechn ON artikel.id = art_id WHERE artikel.bezeichn LIKE ? AND dropdown = 1
WHERE artikel.id = ".$tmpres["id"]." ORDER BY artikel_rechn.art_id DESC LIMIT 1") or die(mysqli_error($dbconn)); AND YEAR(artikel.datetime) >= YEAR(NOW())-1
$res = mysqli_fetch_array($innerqry); GROUP BY artikel.bezeichn LIMIT 25",
echo ',{"value": "'.$res[0].'","typ": "'.$res[1].'","einh": "'.$res[2].'","preis": "'.number_format($res[4],2,",","").'","eig":['; array(db_like_praefix(autoBegriff())));
$qry2 = mysqli_query($dbconn,"SELECT bezeichn, wert, einheit_id FROM eigensch
JOIN artikel_eigensch ON eig_id = eigensch.id $liste = array();
WHERE art_id='".$res[0]."' AND rech_id='".$res[5]."' AND artposnr = '".$res[6]."' ORDER BY posnr ASC"); foreach((array)$treffer as $t)
if($res2 = mysqli_fetch_array($qry2)) {
echo '{"des":"'.$res2[0].'","val":"'.$res2[1].'", "einh":"'.$res2[2].'"}'; $art = db_zeile($dbconn, "SELECT artikel.bezeichn, artikel.typ_id, artikel.einheit_id, artikel.id,
while($res2=mysqli_fetch_array($qry2)) artikel_rechn.preis, artikel_rechn.rech_id, artikel_rechn.posnr
echo ',{"des":"'.$res2[0].'","val":"'.$res2[1].'", "einh":"'.$res2[2].'"}'; FROM artikel
echo ']}'; JOIN artikeltyp ON artikel.typ_id = artikeltyp.id
} JOIN artikel_rechn ON artikel.id = art_id
echo "]"; WHERE artikel.id = ? ORDER BY artikel_rechn.art_id DESC LIMIT 1",
} array($t["id"]));
if(!$art)
continue;
$eigensch = db_zeilen($dbconn, "SELECT bezeichn AS des, wert AS val, einheit_id AS einh
FROM eigensch
JOIN artikel_eigensch ON eig_id = eigensch.id
WHERE art_id = ? AND rech_id = ? AND artposnr = ? ORDER BY posnr ASC",
array($art["id"], $art["rech_id"], $art["posnr"]));
$liste[] = array(
"value" => $art["bezeichn"],
"typ" => $art["typ_id"],
"einh" => $art["einheit_id"],
"preis" => number_format((float)$art["preis"], 2, ",", ""),
"eig" => $eigensch ? $eigensch : array(),
);
} }
header("Content-Type: application/json; charset=utf-8");
echo json_encode($liste, JSON_UNESCAPED_UNICODE);
} }
?>
+28
View File
@@ -0,0 +1,28 @@
<?php
/*
* Gemeinsames für die Autovervollständigung der Formulare.
*
* Die Endpunkte liefern eine JSON-Liste, die jQuery UI direkt als
* Vorschlagsliste verwendet: "value" ist der Vorschlag selbst, die übrigen
* Schlüssel füllen weitere Felder desselben Formulars (siehe die
* focus-Handler in den Templates).
*/
/* Suchbegriff aus der Anfrage, "" wenn keiner da ist */
function autoBegriff()
{
return isset($_GET["term"]) && is_string($_GET["term"]) ? trim($_GET["term"]) : "";
}
/*
* Führt die Abfrage aus und gibt das Ergebnis als JSON aus. Die Spalten
* heißen bereits so, wie das Formular sie erwartet. json_encode() kümmert
* sich ums Maskieren - früher war die Liste von Hand zusammengesetzt und
* ein Anführungszeichen im Ortsnamen machte sie unbrauchbar.
*/
function autoAusgabe($dbconn, $sql, $params)
{
$zeilen = db_zeilen($dbconn, $sql, $params);
header("Content-Type: application/json; charset=utf-8");
echo json_encode($zeilen ? $zeilen : array(), JSON_UNESCAPED_UNICODE);
}
+6 -20
View File
@@ -1,22 +1,8 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
if(!$err) require_once("./autofuncs.php");
{
if($_GET["term"]) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT bank AS value, blz FROM bank
$qry = mysqli_query($dbconn,"SELECT bank,blz FROM bank WHERE bank LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY bank ORDER BY bank ASC") or die(mysqli_error($dbconn)); WHERE bank LIKE ? GROUP BY bank ORDER BY bank ASC LIMIT 25",
if($res=mysqli_fetch_array($qry)) array(db_like_praefix(autoBegriff())));
{
echo "[ ";
echo '{"value": "'.$res[0].'","blz":"'.$res[1].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value":"'.$res[0].'","blz":"'.$res[1].'"}';
}
echo "]";
}
}
}
?>
+7 -19
View File
@@ -1,20 +1,8 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
if(!$err) require_once("./autofuncs.php");
{
if($_GET["term"]) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT blz AS value, bank FROM bank
$qry = mysqli_query($dbconn,"SELECT blz,bank FROM bank WHERE blz LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY blz ORDER BY blz ASC") or die(mysqli_error($dbconn)); WHERE blz LIKE ? GROUP BY blz ORDER BY blz ASC LIMIT 25",
if($res=mysqli_fetch_array($qry)) array(db_like_praefix(autoBegriff())));
{
echo "[ ";
echo '{"value": "'.$res[0].'","bank":"'.$res[1].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value":"'.$res[0].'","bank":"'.$res[1].'"}';
}
echo "]";
}
}
}
?>
+6 -20
View File
@@ -1,22 +1,8 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT land AS value FROM land
WHERE land LIKE ? ORDER BY land ASC LIMIT 25",
if($_GET["term"]) array(db_like_praefix(autoBegriff())));
{
$qry = mysqli_query($dbconn,"SELECT land FROM land WHERE land LIKE '".mysql_escape_string($_GET["term"])."%' ORDER BY land ASC") or die(mysqli_error($dbconn));
if($res=mysqli_fetch_array($qry))
{
echo "[ ";
echo '{"value": "'.$res[0].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value":"'.$res[0].'"}';
}
echo "]";
}
}
}
?>
+7 -20
View File
@@ -1,22 +1,9 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT ort AS value, plz, land AS lnd, vwahl AS vwl
FROM ort JOIN land ON land.id = ort.land_id
if($_GET["term"]) WHERE ort LIKE ? GROUP BY ort ORDER BY ort ASC LIMIT 25",
{ array(db_like_praefix(autoBegriff())));
$qry = mysqli_query($dbconn,"SELECT ort, plz, land, vwahl FROM ort JOIN land ON land.id = ort.land_id WHERE ort LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY ort ORDER BY ort ASC") or die(mysqli_error($dbconn));
if($res=mysqli_fetch_array($qry))
{
echo "[ ";
echo '{"value": "'.$res[0].'","plz":"'.$res[1].'","lnd":"'.$res[2].'","vwl":"'.$res[3].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value":"'.$res[0].'","plz":"'.$res[1].'","lnd":"'.$res[2].'","vwl":"'.$res[3].'"}';
}
echo "]";
}
}
}
?>
+7 -21
View File
@@ -1,23 +1,9 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT ortsteil AS value, plz, ort, land AS lnd, vwahl AS vwl
FROM ort JOIN land ON land.id = ort.land_id
if($_GET["term"]) WHERE ortsteil LIKE ? GROUP BY ortsteil ORDER BY ort ASC LIMIT 25",
{ array(db_like_praefix(autoBegriff())));
$qry = mysqli_query($dbconn,"SELECT ortsteil, plz, ort, land, vwahl FROM ort JOIN land ON land.id = ort.land_id WHERE ortsteil LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY ortsteil ORDER BY ort ASC") or die(mysqli_error($dbconn));
if($res=mysqli_fetch_array($qry))
{
echo "[ ";
echo '{"value": "'.$res[0].'","plz":"'.$res[1].'","ort":"'.$res[2].',"lnd":"'.$res[3].'","vwl":"'.$res[3].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value":"'.$res[0].'","plz":"'.$res[1].'","ort":"'.$res[2].',"lnd":"'.$res[3].'","vwl":"'.$res[3].'"}';
}
echo "]";
}
}
}
?>
+7 -21
View File
@@ -1,23 +1,9 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT plz AS value, ort, land AS lnd, vwahl AS vwl
FROM ort JOIN land ON land.id = ort.land_id
if($_GET["term"]) WHERE plz LIKE ? GROUP BY plz ORDER BY plz ASC LIMIT 25",
{ array(db_like_praefix(autoBegriff())));
$qry = mysqli_query($dbconn,"SELECT plz, ort, land FROM ort JOIN land ON land.id = ort.land_id WHERE plz LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY plz ORDER BY plz ASC") or die(mysqli_error($dbconn));
if($res=mysqli_fetch_array($qry))
{
echo "[ ";
echo '{"value": "'.$res[0].'","ort":"'.$res[1].'","lnd":"'.$res[2].'","vwl":"'.$res[3].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value":"'.$res[0].'","ort":"'.$res[1].'","lnd":"'.$res[2].'","vwl":"'.$res[3].'"}';
}
echo "]";
}
}
}
?>
+9 -21
View File
@@ -1,23 +1,11 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT str AS value, plz, ort, ortsteil AS otl, land AS lnd
FROM strasse
if($_GET["term"]) JOIN ort ON ort.id = strasse.ort_id
{ JOIN land ON land.id = ort.land_id
$qry = mysqli_query($dbconn,"SELECT str, plz, ort, land FROM strasse JOIN ort ON ort.id = strasse.ort_id JOIN land ON land.id = ort.land_id WHERE str LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY str ORDER BY str ASC") or die(mysqli_error($dbconn)); WHERE str LIKE ? GROUP BY str ORDER BY str ASC LIMIT 25",
if($res=mysqli_fetch_array($qry)) array(db_like_praefix(autoBegriff())));
{
echo "[ ";
echo '{"value": "'.$res[0].'","plz":"'.$res[1].'","ort":"'.$res[2].'","lnd":"'.$res[3].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value": "'.$res[0].'","plz":"'.$res[1].'","ort":"'.$res[2].'","lnd":"'.$res[3].'"}';
}
echo "]";
}
}
}
?>
+7 -20
View File
@@ -1,22 +1,9 @@
<?php <?php
require_once("./connectmysql.php"); require_once("./connectmysql.php");
require_once("./autofuncs.php");
if(!$err) if(!$err && autoBegriff() !== "")
{ autoAusgabe($dbconn, "SELECT vwahl AS value, plz, ort, ortsteil AS otl, land AS lnd
FROM ort JOIN land ON land.id = ort.land_id
if($_GET["term"]) WHERE vwahl LIKE ? GROUP BY vwahl ORDER BY vwahl ASC LIMIT 25",
{ array(db_like_praefix(autoBegriff())));
$qry = mysqli_query($dbconn,"SELECT vwahl, plz, ort, ortsteil, land FROM ort JOIN land ON land.id = ort.land_id WHERE vwahl LIKE '".mysql_escape_string($_GET["term"])."%' GROUP BY vwahl ORDER BY vwahl ASC") or die(mysqli_error($dbconn));
if($res=mysqli_fetch_array($qry))
{
echo "[ ";
echo '{"value": "'.$res[0].'","plz":"'.$res[1].'","ort":"'.$res[2].'","otl":"'.$res[3].'","lnd":"'.$res[4].'"}';
while($res=mysqli_fetch_array($qry))
{
echo ',{"value": "'.$res[0].'","plz":"'.$res[1].'","ort":"'.$res[2].'","otl":"'.$res[3].'","lnd":"'.$res[4].'"}';
}
echo "]";
}
}
}
?>
+34 -38
View File
@@ -1,56 +1,52 @@
<?php <?php
require_once("../incs/connectmysql.php"); require_once("../incs/connectmysql.php");
require_once("../incs/funcs.php"); require_once("../incs/funcs.php");
require_once("../incs/listfuncs.php"); require_once("../incs/listfuncs.php");
require('../smarty/libs/Smarty.class.php'); require('../smarty/libs/Smarty.class.php');
$smarty = new Smarty; $smarty = new Smarty;
$pagesize = 50; $pagesize = 50;
if(!isset($err))
$err = "";
if(!$err) if(!$err)
{ {
$speciallines=array(); // kommt per encodeURIComponent bereits als UTF-8
$fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
$fulltag = utf8_encode($_GET["search"]); $link = isset($_GET["link"]) && is_string($_GET["link"]) ? $_GET["link"] : "";
$src = explode(" ",$fulltag); $field = isset($_GET["field"]) && is_string($_GET["field"]) ? $_GET["field"] : "";
$combiner = mysql_escape_string($_GET["link"]); $page = isset($_GET["page"]) ? (int)$_GET["page"] : 0;
if($combiner != "AND" && $combiner != "OR") $rechid = isset($_GET["rechid"]) ? (int)$_GET["rechid"] : 0;
{ // steuert, wofür die gewählte Adresse verwendet wird
$combiner = "AND"; $subact = (isset($_GET["subact"]) && $_GET["subact"] == "copy") ? "copy" : "changeadr";
}
$page = $_GET["page"]; $speciallines = array();
$listlines = array();
$queries = createAdressQry($page,$pagesize,$src,$combiner,$_GET["field"],0,1); $src = explode(" ", $fulltag);
$qry = mysqli_query($dbconn,$queries["all"]) $combiner = $link == "OR" ? "OR" : "AND";
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry); $queries = createAdressQry($page,$pagesize,$src,$combiner,$field,0,1);
$numres = zaehleTreffer($dbconn, $queries);
if(!$numres) if(!$numres)
{ {
$queries = createAdressQry($page,$pagesize,$src,$combiner,$_GET["field"],1,1); $queries = createAdressQry($page,$pagesize,$src,$combiner,$field,1,1);
$qry = mysqli_query($dbconn,$queries["all"]) $numres = zaehleTreffer($dbconn, $queries);
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
message("veraltete Datensätze wurden in die Suche einbezogen"); message("veraltete Datensätze wurden in die Suche einbezogen");
} }
if($numres) if($numres)
{ {
$qry = mysqli_query($dbconn,$queries["limited"]) $qry = db_abfrage($dbconn,$queries["limited"],$queries["params"])
or die("Datenbank fehler: ".mysqli_error($dbconn)); or die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
while($res=mysqli_fetch_assoc($qry)) while($res=mysqli_fetch_assoc($qry))
{ {
$name = $res["vname"]." ".$res["nname"]; $adresse = makeadressline($res);
if($res["firma"]) $waehlen = "<a href='?action=rechnungadd&id=".$rechid."&".$subact."=1&adrid=".(int)$res["adrid"]."'><span class='check' title='Diese Adresse verwenden'></span></a>";
$name .= " <i><u>".$res["firma"]."</u></i>"; $zeile = array($waehlen." &nbsp;&nbsp;".(int)$res["kdnr"], makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res));
if($res["vwahl"]) if(empty($res["updated_by"]))
$res["tel"] = $res["vwahl"]."/".$res["tel"]; $listlines[] = $zeile;
if(!$res["updated_by"])
$listlines[] = array("<a href='?action=rechnungadd&id=".$_GET["rechid"]."&".$_GET["subact"]."=1&adrid=".$res["adrid"]."'><span class='check' title='Diese Adresse verwenden'></span></a> &nbsp;&nbsp;".$res["kdnr"]."",$name,$res["plz"]." ".$res["ort"], $res["str"]." ".$res["hnr"], $res["tel"]);
else else
$speciallines[] = array("<a href='?action=rechnungadd&id=".$_GET["rechid"]."&".$_GET["subact"]."=1&adrid=".$res["adrid"]."'><span class='check' title='Diese Adresse verwenden'></span></a> &nbsp;&nbsp;".$res["kdnr"]."",$name,$res["plz"]." ".$res["ort"], $res["str"]." ".$res["hnr"], $res["tel"]); $speciallines[] = $zeile;
} }
$headings = array("Kd.Nr.","Name/<i><u>Firma</u></i>","Ort","Straße","Telefon"); $headings = array("Kd.Nr.","Name/<i><u>Firma</u></i>","Ort","Straße","Telefon");
$lastdisplay = ($page+1)*$pagesize; $lastdisplay = ($page+1)*$pagesize;
@@ -60,12 +56,12 @@ if(!$err)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else else
ok($numres." Adressen sind insgesamt gespeichert."); ok($numres." Adressen sind insgesamt gespeichert.");
displayPages($pagesize,$page,$numres,"ajax_searchadress"); displayPages($pagesize,$page,$numres,"ajax_searchadress",",".$rechid.",'".$subact."'");
displayList($headings,$listlines,$speciallines); displayList($headings,$listlines,$speciallines);
displayPages($pagesize,$page,$numres,"ajax_searchadress"); displayPages($pagesize,$page,$numres,"ajax_searchadress",",".$rechid.",'".$subact."'");
} }
else else
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse."); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
} }
?> ?>
+31 -76
View File
@@ -1,89 +1,45 @@
<?php <?php
require_once("../incs/connectmysql.php"); require_once("../incs/connectmysql.php");
require_once("../incs/funcs.php"); require_once("../incs/funcs.php");
require_once("../incs/listfuncs.php"); require_once("../incs/listfuncs.php");
require('../smarty/libs/Smarty.class.php'); require('../smarty/libs/Smarty.class.php');
$smarty = new Smarty; $smarty = new Smarty;
$pagesize = 20; $pagesize = 20;
if(!isset($err))
$err = "";
if(!$err) if(!$err)
{ {
// kommt per encodeURIComponent bereits als UTF-8
$fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
$link = isset($_GET["link"]) && is_string($_GET["link"]) ? $_GET["link"] : "";
$page = isset($_GET["page"]) ? (int)$_GET["page"] : 0;
$id = isset($_GET["kdnid"]) ? (int)$_GET["kdnid"] : 0;
$src = explode(" ", $fulltag);
$combiner = $link == "OR" ? "OR" : "AND";
$listlines = array();
$fulltag = utf8_encode($_GET["search"]);
$src = explode(" ",$fulltag);
$combiner = mysql_escape_string($_GET["link"]);
if($combiner != "AND" && $combiner != "OR")
{
$combiner = "AND";
}
$page = $_GET["page"];
$skspage = $_GET["skspage"];
$typ = $_GET["typ"];
$id = $_GET["kdnid"];
$queries = createKdnProjectQry($page,$pagesize,$src,$combiner,$id); $queries = createKdnProjectQry($page,$pagesize,$src,$combiner,$id);
$qry = mysqli_query($dbconn,$queries["all"]) $numres = zaehleTreffer($dbconn, $queries);
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
/*
if(!$numres)
{
$queries = createKdnRechQry($page,$pagesize,$src,$combiner,1);
$qry = mysqli_query($dbconn,$queries["all"])
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
message("veraltete Datensätze wurden in die Suche einbezogen");
}
*/
if($numres) if($numres)
{ {
$listlines=array(); $qry = db_abfrage($dbconn,$queries["limited"],$queries["params"])
$qry = mysqli_query($dbconn,$queries["limited"]) or die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
or die("Datenbank fehler: ".mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry)) while($res=mysqli_fetch_assoc($qry))
{ {
$actions = "<span class='del' title='löschen' onClick='askdel(\"Möchten Sie das Projekt ".$res["name"]."<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=projectadd&id=".$res["id"]."&del=1\")'></span>"; $projektid = (int)$res["id"];
$actions .= "<a href='?action=projectadd&id=".$res["id"]."'><span class='edit' title='Projekt ändern'></span></a>"; $name = htmlspecialchars((string)$res["name"]);
//$actions .= "<a href='?action=projectadd&id=".$res["id"]."&copy=1'><span class='copy' title='Projekt kopieren'></span></a>"; $actions = "<span class='del' title='löschen' onClick='askdel(\"Möchten Sie das Projekt ".$name."<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=projectadd&id=".$projektid."&del=1\")'></span>";
//$tmpqry = mysqli_query($dbconn,"SELECT id FROM kontakt WHERE partner_id = '$id' AND typ_id = 1"); $actions .= "<a href='?action=projectadd&id=".$projektid."'><span class='edit' title='Projekt ändern'></span></a>";
//if(mysqli_fetch_array($tmpqry)) $listlines[] = array("<a href='?action=projectshow&id=".$projektid."'>".$name."</a>",
// $actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&mail=1'><span class='mail' title='Dokument per E-Mail versenden'></span></a>"; htmlspecialchars((string)$res["date"]),
/* htmlspecialchars((string)$res["work"]),
$res["drechnr"] = substr($res["rechnr"],0,4)."-".substr($res["rechnr"],4,2)."-".substr($res["rechnr"],6,2).".".substr($res["rechnr"],8,2); $actions);
switch($res["typ_id"])
{
case 1:
$res["drechnr"] = "R".$res["drechnr"];
$actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&newtype=2'><span class='gutschradd' title='Gutschrift aus dieser Rechnung erstellen'></span></a>";
$actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&newtype=6'><span class='mahnadd' title='Mahnung aus dieser Rechnung erstellen'></span></a>";
break;
case 2:
$res["drechnr"] = "G".$res["drechnr"];
break;
case 3:
$actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&newtype=1'><span class='rechnadd' title='Rechnung aus diesem Angebot erstellen'></span></a>";
$actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&newtype=4'><span class='bestadd' title='Auftragsbestätigung aus diesem Angebot erstellen'></span></a>";
$res["drechnr"] = "A".$res["drechnr"];
break;
case 4:
$actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&newtype=1'><span class='rechnadd' title='Rechnung aus dieser Auftragsbestätigung erstellen'></span></a>";
$res["drechnr"] = "B".$res["drechnr"];
break;
}
if(!$res["drechnr"])
$res["drechnr"] = $res["drechnr"];
*/
$listlines[] = array("<a href='?action=projectshow&id=".$res["id"]."'>".$res["name"]."</a>",
$res["date"],
$res["work"],
$actions
);
} }
$headings = array("Name","Datum","Unberechnete<br />Stunden","Aktionen"); $headings = array("Name","Datum","Unberechnete<br />Stunden","Aktionen");
$lastdisplay = ($page+1)*$pagesize; $lastdisplay = ($page+1)*$pagesize;
if($numres < $lastdisplay) if($numres < $lastdisplay)
@@ -92,18 +48,17 @@ if(!$err)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else else
ok($numres." Projekte sind insgesamt gespeichert."); ok($numres." Projekte sind insgesamt gespeichert.");
displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkdnprojects",",$typ,$id"); displayPages($pagesize,$page,$numres,"ajax_searchkdnprojects",",".$id);
displayList($headings,$listlines,$speciallines); displayList($headings,$listlines,array());
displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkdnprojects",",$typ,$id"); displayPages($pagesize,$page,$numres,"ajax_searchkdnprojects",",".$id);
} }
else else
{ {
if($fulltag) if($fulltag)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse."); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
else else
ok("Keine Einträge."); ok("Keine Einträge.");
} }
} }
?> ?>
+3 -3
View File
@@ -88,14 +88,14 @@ if(!isset($err))
if($res["storno"] == 1){ if($res["storno"] == 1){
$listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'><font color='#FF0000'>".$res["drechnr"]."</font></a>", $listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'><font color='#FF0000'>".$res["drechnr"]."</font></a>",
$res["date"], $res["date"],
artikelListeHtml($res["artikel"]), zeilenHtml($res["artikel"]),
$actions $actions
); );
} }
else{ else{
$listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["drechnr"]."</a>", $listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["drechnr"]."</a>",
$res["date"], $res["date"],
artikelListeHtml($res["artikel"]), zeilenHtml($res["artikel"]),
$actions $actions
); );
} }
@@ -152,7 +152,7 @@ if(!isset($err))
{ {
$speciallines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["rechnr"]."</a>", $speciallines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["rechnr"]."</a>",
$res["date"], $res["date"],
artikelListeHtml($res["artikel"]), zeilenHtml($res["artikel"]),
"<span class='del' title='löschen' onClick='askdel(\"Möchten Sie das Dokument ".$res["rechnr"]."<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=rechadd&rechid=".$res["id"]."&del=1\")'></span>"); "<span class='del' title='löschen' onClick='askdel(\"Möchten Sie das Dokument ".$res["rechnr"]."<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=rechadd&rechid=".$res["id"]."&del=1\")'></span>");
} }
$headings = array("Nummer","Datum","Artikel","Aktion"); $headings = array("Nummer","Datum","Artikel","Aktion");
+36 -55
View File
@@ -1,66 +1,47 @@
<?php <?php
require_once("../incs/connectmysql.php"); require_once("../incs/connectmysql.php");
require_once("../incs/funcs.php"); require_once("../incs/funcs.php");
require_once("../incs/listfuncs.php"); require_once("../incs/listfuncs.php");
require('../smarty/libs/Smarty.class.php'); require('../smarty/libs/Smarty.class.php');
$smarty = new Smarty; $smarty = new Smarty;
$pagesize = 50; $pagesize = 50;
if(!isset($err))
$err = "";
if(!$err) if(!$err)
{ {
$fulltag = utf8_encode($_GET["search"]); // kommt per encodeURIComponent bereits als UTF-8
$src = explode(" ",$fulltag); $fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
$combiner = mysql_escape_string($_GET["link"]); $link = isset($_GET["link"]) && is_string($_GET["link"]) ? $_GET["link"] : "";
if($combiner != "AND" && $combiner != "OR") $page = isset($_GET["page"]) ? (int)$_GET["page"] : 0;
{ $id = isset($_GET["kdnid"]) ? (int)$_GET["kdnid"] : 0;
$combiner = "AND";
} $src = explode(" ", $fulltag);
$page = $_GET["page"]; $combiner = $link == "OR" ? "OR" : "AND";
$id = $_GET["kdnid"]; $listlines = array();
$queries = createKommQry($page,$pagesize,$src,$combiner,$id,$typ,0);
$qry = mysqli_query($dbconn,$queries["all"]) $queries = createKommQry($page,$pagesize,$src,$combiner,$id);
or die("Datenbank fehler: ".mysqli_error($dbconn)); $numres = zaehleTreffer($dbconn, $queries);
$numres = mysqli_num_rows($qry);
/*
if(!$numres)
{
$queries = createKdnRechQry($page,$pagesize,$src,$combiner,1);
$qry = mysqli_query($dbconn,$queries["all"])
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
message("veraltete Datensätze wurden in die Suche einbezogen");
}
*/
if($numres) if($numres)
{ {
$listlines=array(); $qry = db_abfrage($dbconn,$queries["limited"],$queries["params"])
$qry = mysqli_query($dbconn,$queries["limited"]) or die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
or die("Datenbank fehler: ".mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry)) while($res=mysqli_fetch_assoc($qry))
{ {
$actions = " <a href='?action=kundenchange&do=adress&adressid=".$res["id"]."&kunde=$id'><span class='edit' title='Adresse ändern'></span></a>"; $adrid = (int)$res["id"];
$actions .= " <span class='del' title='Adresse löschen' onClick='askdel(\"Möchten Sie diese Adresse<br /><b>UND ALLE ZUGEHÖRIGEN RECHNUNGEN</b><br />wirklich unwiederruflich löschen?\",\"?action=kundenchange&do=adress&adressid=".$res["id"]."&del=1\")'></span>"; $karte = rawurlencode($res["plz"]." ".$res["ort"]." ".$res["str"]." ".$res["hnr"]);
$actions .= " <a href='http://maps.google.com?q=".$res["plz"]."+".$res["ort"]."+".$res["str"]."+".$res["hnr"]."' class='noloading' target='_blank'><span class='map' title='Auf Karte zeigen'></span></a>"; $actions = " <a href='?action=kundenchange&do=adress&adressid=".$adrid."&kunde=".$id."'><span class='edit' title='Adresse ändern'></span></a>";
$actions .= " <a href='?action=terminadd&adressid=".$res["id"]."'><span class='termadd' title='Termin anlegen'></span></a><br />"; $actions .= " <span class='del' title='Adresse löschen' onClick='askdel(\"Möchten Sie diese Adresse<br /><b>UND ALLE ZUGEHÖRIGEN RECHNUNGEN</b><br />wirklich unwiederruflich löschen?\",\"?action=kundenchange&do=adress&adressid=".$adrid."&del=1\")'></span>";
$actions .= " <a href='?action=rechnungadd&type=1&adressid=".$res["id"]."'><span class='rechnadd' title='Rechnung anlegen'></span></a>"; $actions .= " <a href='https://maps.google.com/?q=".$karte."' class='noloading' target='_blank' rel='noopener'><span class='map' title='Auf Karte zeigen'></span></a>";
$actions .= " <a href='?action=rechnungadd&type=1&adressid=".$res["id"]."'><span class='gutschradd' title='Gutschrift anlegen'></span></a>"; $actions .= " <a href='?action=terminadd&adressid=".$adrid."'><span class='termadd' title='Termin anlegen'></span></a><br />";
$actions .= " <a href='?action=rechnungadd&type=3&adressid=".$res["id"]."'><span class='angadd' title='Angebot anlegen'></span></a>"; $actions .= " <a href='?action=rechnungadd&type=1&adressid=".$adrid."'><span class='rechnadd' title='Rechnung anlegen'></span></a>";
$actions .= " <a href='?action=rechnungadd&type=5&adressid=".$res["id"]."'><span class='letteradd' title='Brief anlegen'></span></a><br />"; $actions .= " <a href='?action=rechnungadd&type=2&adressid=".$adrid."'><span class='gutschradd' title='Gutschrift anlegen'></span></a>";
$tmpqry = mysqli_query($dbconn,"SELECT id FROM kontakt WHERE partner_id = '$id' AND typ_id = 1"); $actions .= " <a href='?action=rechnungadd&type=3&adressid=".$adrid."'><span class='angadd' title='Angebot anlegen'></span></a>";
if(mysqli_fetch_array($tmpqry)) $actions .= " <a href='?action=rechnungadd&type=5&adressid=".$adrid."'><span class='letteradd' title='Brief anlegen'></span></a><br />";
$actions .= "<a href='?action=rechnungadd&id=".$res["id"]."&adressid=".$res["adresse_id"]."&mail=1'><span class='mail' title='Dokument per E-Mail versenden'></span></a>"; $adresse = makeadressline($res);
$name=makenameline($res); $listlines[] = array(makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res), $actions);
$adresse=makeadressline($res);
$listlines[] = array($name,
$adresse["ort"], $adresse["str"],
maketelline($res),
$actions
);
} }
$headings = array("Name","Ort","Straße","Tel","Aktionen"); $headings = array("Name","Ort","Straße","Tel","Aktionen");
$lastdisplay = ($page+1)*$pagesize; $lastdisplay = ($page+1)*$pagesize;
@@ -70,17 +51,17 @@ if(!$err)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else else
ok($numres." Kommissionen sind insgesamt gespeichert."); ok($numres." Kommissionen sind insgesamt gespeichert.");
displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkomm",",$id"); displayPages($pagesize,$page,$numres,"ajax_searchkomm",",".$id);
displayList($headings,$listlines,$speciallines); displayList($headings,$listlines,array());
displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkomm",",$id"); displayPages($pagesize,$page,$numres,"ajax_searchkomm",",".$id);
} }
else else
{ {
if($fulltag) if($fulltag)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse."); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
else else
ok("Keine Einträge."); ok("Keine Einträge.");
} }
} }
?> ?>
+36 -50
View File
@@ -1,85 +1,71 @@
<?php <?php
require_once("../incs/connectmysql.php"); require_once("../incs/connectmysql.php");
require_once("../incs/funcs.php"); require_once("../incs/funcs.php");
require_once("../incs/listfuncs.php"); require_once("../incs/listfuncs.php");
require('../smarty/libs/Smarty.class.php'); require('../smarty/libs/Smarty.class.php');
$smarty = new Smarty; $smarty = new Smarty;
$pagesize = 50; $pagesize = 50;
if(!isset($err)){ if(!isset($err))
$err=""; $err = "";
}
if(!$err) if(!$err)
{ {
if(!isset($_GET["link"])){ // kommt per encodeURIComponent bereits als UTF-8
$_GET["link"] = ""; $fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
} $link = isset($_GET["link"]) && is_string($_GET["link"]) ? $_GET["link"] : "";
if(!isset($_GET["field"])){ $field = isset($_GET["field"]) && is_string($_GET["field"]) ? $_GET["field"] : "";
$_GET["field"] = ""; $page = isset($_GET["page"]) ? (int)$_GET["page"] : 0;
}
$_SESSION["search"] = $_GET["search"]; $_SESSION["search"] = $fulltag;
$_SESSION["link"] = $_GET["link"]; $_SESSION["link"] = $link;
$_SESSION["field"] = $_GET["field"]; $_SESSION["field"] = $field;
$_SESSION["page"] = $_GET["page"]; $_SESSION["page"] = $page;
$speciallines=array();
$speciallines = array();
$fulltag = utf8_encode($_GET["search"]); $listlines = array();
$src = explode(" ",$fulltag); $src = explode(" ", $fulltag);
$combiner = mysql_escape_string($_GET["link"]); $combiner = $link == "OR" ? "OR" : "AND";
if($combiner != "AND" && $combiner != "OR")
{ $queries = createPartQry($page,$pagesize,$src,$combiner,$field,0,1);
$combiner = "AND"; $numres = zaehleTreffer($dbconn, $queries);
}
$page = $_GET["page"];
$queries = createPartQry($page,$pagesize,$src,$combiner,$_GET["field"],0,1);
$qry = mysqli_query($dbconn,$queries["all"])
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
if(!$numres) if(!$numres)
{ {
$queries = createPartQry($page,$pagesize,$src,$combiner,$_GET["field"],1,1); $queries = createPartQry($page,$pagesize,$src,$combiner,$field,1,1);
$qry = mysqli_query($dbconn,$queries["all"]) $numres = zaehleTreffer($dbconn, $queries);
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
message("veraltete Datensätze wurden in die Suche einbezogen"); message("veraltete Datensätze wurden in die Suche einbezogen");
} }
if($numres) if($numres)
{ {
$qry = mysqli_query($dbconn,$queries["limited"]) $qry = db_abfrage($dbconn,$queries["limited"],$queries["params"])
or die("Datenbank fehler: ".mysqli_error($dbconn)); or die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
while($res=mysqli_fetch_assoc($qry)) while($res=mysqli_fetch_assoc($qry))
{ {
$name = $res["vname"]." ".$res["nname"]; $adresse = makeadressline($res);
if(isset($res["firma"])) $kdnr = (int)$res["kdnr"];
$name .= " <i><u>".$res["firma"]."</u></i>"; $aktionen = "<span class='del' title='Kunde löschen' onClick='askdel(\"Möchten Sie den Kunden ".$kdnr." und<br />ALLE ZUGEHÖRIGEN DATEN<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=kundenadd&kundeid=".$kdnr."&del=1\")'></span>"
if(isset($res["vwahl"])) ."<a href='?action=projectlist&kundeid=".$kdnr."'><span class='projects' title='Projekte dieses Kunden auflisten'></span></a>";
$res["tel"] = $res["vwahl"]."/".$res["tel"]; $zeile = array("<a href='?action=kundenshow&id=".$kdnr."'>".$kdnr."</a>", makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res), $aktionen);
$adresse=makeadressline($res); if(empty($res["updated_by"]))
if(!isset($res["updated_by"])) $listlines[] = $zeile;
$listlines[] = array("<a href='?action=kundenshow&id=".$res["kdnr"]."'>".$res["kdnr"]."</a>",makenameline($res),$adresse["ort"], $adresse["str"], maketelline($res),"<span class='del' title='Kunde löschen' onClick='askdel(\"Möchten Sie den Kunden ".$res["kdnr"]." und<br />ALLE ZUGEHÖRIGEN DATEN<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=kundenadd&kundeid=".$res["kdnr"]."&del=1\")'></span><a href='?action=projectlist&kundeid=".$res["kdnr"]."'><span class='projects' title='Projekte dieses Kunden auflisten'></span></a>");
else else
$speciallines[] = array("<a href='?action=kundenshow&id=".$res["kdnr"]."'>".$res["kdnr"]."</a>",makenameline($res),$adresse["ort"], $adresse["str"], maketelline($res),"<span class='del' title='Kunde löschen' onClick='askdel(\"Möchten Sie den Kunden ".$res["kdnr"]." und<br />ALLE ZUGEHÖRIGEN DATEN<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=kundenadd&kundeid=".$res["kdnr"]."&del=1\")'></span><a href='?action=projectlist&kundeid=".$res["kdnr"]."'><span class='projects' title='Projekte dieses Kunden auflisten'></span></a>"); $speciallines[] = $zeile;
} }
$headings = array("Kd.Nr.","Name/<i><u>Firma</u></i>","Ort","Straße","Telefon","Löschen"); $headings = array("Kd.Nr.","Name/<i><u>Firma</u></i>","Ort","Straße","Telefon","Löschen");
$lastdisplay = (intval($page)+1)*$pagesize; $lastdisplay = ($page+1)*$pagesize;
if($numres < $lastdisplay) if($numres < $lastdisplay)
$lastdisplay = $numres; $lastdisplay = $numres;
if($fulltag) if($fulltag)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else else
ok($numres." Kunden sind insgesamt gespeichert."); ok($numres." Kunden sind insgesamt gespeichert.");
displayPages($pagesize,$page,$numres,"ajax_searchkunden"); displayPages($pagesize,$page,$numres,"ajax_searchkunden");
displayList($headings,$listlines,$speciallines); displayList($headings,$listlines,$speciallines);
displayPages($pagesize,$page,$numres,"ajax_searchkunden"); displayPages($pagesize,$page,$numres,"ajax_searchkunden");
} }
else else
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse."); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
} }
?> ?>
+29 -44
View File
@@ -1,61 +1,47 @@
<?php <?php
require_once("../incs/connectmysql.php"); require_once("../incs/connectmysql.php");
require_once("../incs/funcs.php"); require_once("../incs/funcs.php");
require_once("../incs/listfuncs.php"); require_once("../incs/listfuncs.php");
require('../smarty/libs/Smarty.class.php'); require('../smarty/libs/Smarty.class.php');
$smarty = new Smarty; $smarty = new Smarty;
$pagesize = 50; $pagesize = 50;
if(!isset($err)) if(!isset($err))
$err = "";
if(!$err)
{ {
// kommt per encodeURIComponent bereits als UTF-8
$fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
$link = isset($_GET["link"]) && is_string($_GET["link"]) ? $_GET["link"] : "";
$field = isset($_GET["field"]) && is_string($_GET["field"]) ? $_GET["field"] : "";
$page = isset($_GET["page"]) ? (int)$_GET["page"] : 0;
if(!isset($_GET["link"])){ $listlines = array();
$_GET["link"]=""; $src = explode(" ", $fulltag);
} $combiner = $link == "OR" ? "OR" : "AND";
$fulltag = utf8_encode($_GET["search"]); $queries = createPartQry($page,$pagesize,$src,$combiner,$field,0,2);
$src = explode(" ",$fulltag); $numres = zaehleTreffer($dbconn, $queries);
$combiner = mysql_escape_string($_GET["link"]);
if($combiner != "AND" && $combiner != "OR")
{
$combiner = "AND";
}
$page = $_GET["page"];
$queries = createPartQry($page,$pagesize,$src,$combiner,$_GET["field"],0,2);
$qry = mysqli_query($dbconn,$queries["all"])
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
if(!$numres) if(!$numres)
{ {
$queries = createPartQry($page,$pagesize,$src,$combiner,$_GET["field"],1,2); $queries = createPartQry($page,$pagesize,$src,$combiner,$field,1,2);
$qry = mysqli_query($dbconn,$queries["all"]) $numres = zaehleTreffer($dbconn, $queries);
or die("Datenbank fehler: ".mysqli_error($dbconn));
$numres = mysqli_num_rows($qry);
message("veraltete Datensätze wurden in die Suche einbezogen"); message("veraltete Datensätze wurden in die Suche einbezogen");
} }
if($numres) if($numres)
{ {
$qry = mysqli_query($dbconn,$queries["limited"]) $qry = db_abfrage($dbconn,$queries["limited"],$queries["params"])
or die("Datenbank fehler: ".mysqli_error($dbconn)); or die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
while($res=mysqli_fetch_assoc($qry)) while($res=mysqli_fetch_assoc($qry))
{ {
if(!isset($res["nname"])) $adresse = makeadressline($res);
$name = $res["firma"]; $kdnr = (int)$res["kdnr"];
else $aktionen = "<span class='del' title='Lieferant löschen' onClick='askdel(\"Möchten Sie den Lieferanten ".$kdnr." und<br />ALLE ZUGEHÖRIGEN DATEN<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=lieferadd&kundeid=".$kdnr."&del=1\")'></span>";
$name = $res["vname"]." ".$res["nname"]; $listlines[] = array("<a href='?action=liefershow&id=".$kdnr."'>".$kdnr."</a>", makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res), $aktionen);
if(isset($res["vwahl"]))
$res["tel"] = $res["vwahl"]."/".$res["tel"];
if(!isset($res["updated_by"]))
$listlines[] = array("<a href='?action=liefershow&id=".$res["kdnr"]."'>".$res["kdnr"]."</a>",$name,$res["plz"]." ".$res["ort"], $res["str"]." ".$res["hnr"], $res["tel"],"<span class='del' title='Kunde löschen' onClick='askdel(\"Möchten Sie den Kunden ".$res["kdnr"]." und<br />ALLE ZUGEHÖRIGEN DATEN<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=kundenadd&kundeid=".$res["kdnr"]."&del=1\")'></span>");
else
$speciallines[] = array("<a href='?action=liefershow&id=".$res["kdnr"]."'>".$res["kdnr"]."</a>",$name,$res["plz"]." ".$res["ort"], $res["str"]." ".$res["hnr"], $res["tel"],"<span class='del' title='Kunde löschen' onClick='askdel(\"Möchten Sie den Kunden ".$res["kdnr"]." und<br />ALLE ZUGEHÖRIGEN DATEN<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=kundenadd&kundeid=".$res["kdnr"]."&del=1\")'></span>");
} }
$headings = array("Kd.Nr.","Name/Firma","Ort","Straße","Telefon","Löschen"); $headings = array("Kd.Nr.","Name/<i><u>Firma</u></i>","Ort","Straße","Telefon","Löschen");
$lastdisplay = ($page+1)*$pagesize; $lastdisplay = ($page+1)*$pagesize;
if($numres < $lastdisplay) if($numres < $lastdisplay)
$lastdisplay = $numres; $lastdisplay = $numres;
@@ -63,13 +49,12 @@ if(!isset($err))
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.<br /> Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else else
ok($numres." Lieferanten sind insgesamt gespeichert."); ok($numres." Lieferanten sind insgesamt gespeichert.");
$speciallines = Array(); displayPages($pagesize,$page,$numres,"ajax_searchliefer");
displayPages($pagesize,$page,$numres,"ajax_searchkunden"); displayList($headings,$listlines,array());
displayList($headings,$listlines,$speciallines); displayPages($pagesize,$page,$numres,"ajax_searchliefer");
displayPages($pagesize,$page,$numres,"ajax_searchkunden");
} }
else else
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse."); ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
} }
?> ?>
+3 -3
View File
@@ -83,14 +83,14 @@ if(!isset($err))
if($res["storno"] == 1){ if($res["storno"] == 1){
$listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'><font color='#FF0000'>".$res["drechnr"]."</font></a>", $listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'><font color='#FF0000'>".$res["drechnr"]."</font></a>",
$res["date"], $res["date"],
artikelListeHtml($res["artikel"]), zeilenHtml($res["artikel"]),
$actions $actions
); );
} }
else{ else{
$listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["drechnr"]."</a>", $listlines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["drechnr"]."</a>",
$res["date"], $res["date"],
artikelListeHtml($res["artikel"]), zeilenHtml($res["artikel"]),
$actions $actions
); );
} }
@@ -143,7 +143,7 @@ if(!isset($err))
{ {
$speciallines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["rechnr"]."</a>", $speciallines[] = array("<a href='?action=rechshow&id=".$res["id"]."'>".$res["rechnr"]."</a>",
$res["date"], $res["date"],
artikelListeHtml($res["artikel"]), zeilenHtml($res["artikel"]),
"<span class='del' title='löschen' onClick='askdel(\"Möchten Sie das Dokument ".$res["rechnr"]."<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=rechadd&rechid=".$res["id"]."&del=1\")'></span>"); "<span class='del' title='löschen' onClick='askdel(\"Möchten Sie das Dokument ".$res["rechnr"]."<br />wirklich <b>unwiederruflich</b> löschen?\",\"?action=rechadd&rechid=".$res["id"]."&del=1\")'></span>");
} }
$headings = array("Nummer","Datum","Artikel","Aktion"); $headings = array("Nummer","Datum","Artikel","Aktion");
+9
View File
@@ -119,6 +119,15 @@ function db_sql_text($dbconn, $sql, $params = array())
return $text; return $text;
} }
/*
* Text als Praefix-Suchmuster fuer LIKE. % und _ waeren darin sonst
* Platzhalter; das Fluchtzeichen ist der Backslash.
*/
function db_like_praefix($text)
{
return str_replace(array("\\", "%", "_"), array("\\\\", "\%", "\_"), (string)$text)."%";
}
/* Erste Spalte der ersten Zeile, null ohne Treffer, bei Fehlern false. */ /* Erste Spalte der ersten Zeile, null ohne Treffer, bei Fehlern false. */
function db_wert($dbconn, $sql, $params = array()) function db_wert($dbconn, $sql, $params = array())
{ {
+7
View File
@@ -36,6 +36,9 @@ function rrmdir($dir) {
function del_files($path, $pattern) { function del_files($path, $pattern) {
$matches = Array(); $matches = Array();
$entries = Array(); $entries = Array();
// Fehlt das Verzeichnis, gibt es auch nichts zu loeschen
if(!is_dir($path))
return;
$dir = dir($path); $dir = dir($path);
while ($entry = $dir->read()) while ($entry = $dir->read())
{ {
@@ -51,6 +54,10 @@ function del_files($path, $pattern) {
function search_file($path, $pattern) { function search_file($path, $pattern) {
$matches = Array(); $matches = Array();
$entries = Array(); $entries = Array();
$ret = "";
// Fehlt das Verzeichnis, gibt es auch nichts zu finden
if(!is_dir($path))
return $ret;
$dir = dir($path); $dir = dir($path);
while ($entry = $dir->read()) while ($entry = $dir->read())
{ {
+151 -200
View File
@@ -1,182 +1,100 @@
<?php <?php
/*
* Die Suchbedingung der Kunden-, Lieferanten- und Adresssuche. $fields
* waehlt aus, worin gesucht wird, $src sind die einzelnen Suchbegriffe.
* Die Werte kommen als Platzhalter dazu, die Spaltennamen stehen fest.
*/
function partnerSuchbedingung($src, $combiner, $fields, &$params)
{
$spalten = array(
"all" => array("vname", "nname", "vname2", "nname2", "firma", "ort", "str", "plz", "partner.id"),
"kdnr" => array("partner.id"),
"name" => array("vname", "nname", "vname2", "nname2", "firma"),
"str" => array("str"),
"plz" => array("plz"),
"ort" => array("ort"),
"tel" => array("tel.nr"),
"kont" => array("kontakt"),
);
if(!isset($spalten[$fields]))
return "";
$combiner = $combiner == "OR" ? "OR" : "AND";
$bedingung = "";
foreach($src AS $tag)
{
$teile = array();
foreach($spalten[$fields] as $spalte)
{
$teile[] = "$spalte LIKE ?";
$params[] = "%".$tag."%";
}
$bedingung .= " $combiner (".implode(" OR ", $teile).")";
}
return $bedingung;
}
/*
* Kunden- bzw. Lieferantensuche, eine Zeile je Partner. $typ ist 1 fuer
* Kunden, 2 fuer Lieferanten. Mit $full kommen auch veraltete Versionen
* dazu; ihre Namen, Adressen und Telefonnummern stehen dann untereinander
* in einer Zelle (siehe zeilenHtml()).
* Rueckgabe: array("all" => sql, "limited" => sql mit LIMIT, "params" => Werte).
*/
function createPartQry($page,$pagesize,$src,$combiner,$fields,$full=0,$typ=1) function createPartQry($page,$pagesize,$src,$combiner,$fields,$full=0,$typ=1)
{ {
$joins = "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";
if(!$full) if(!$full)
{ $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr, tel.nr AS tel
$query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr, tel.nr AS tel FROM partner $joins
LEFT JOIN adresse ON adresse.partner_id = partner.id WHERE updated_by = 0 AND adresse.typ_id = 1 AND partner.typ_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 adresse.typ_id = 1 AND partner.typ_id = $typ";
}
else else
{ $query = "SELECT partner.id AS kdnr,firma,
$query = "SELECT partner.id AS kdnr,firma,GROUP_CONCAT(CONCAT(vname,' ',nname) SEPARATOR '<br />') AS nname, '' AS vname,GROUP_CONCAT(CONCAT(vname2,' ',nname2) SEPARATOR '<br />') AS nname2,'' AS vname2,'' AS ort,GROUP_CONCAT(CONCAT(plz,' ',ort) SEPARATOR '<br />') AS plz,GROUP_CONCAT(CONCAT(str,' ',hnr) SEPARATOR '<br />') AS str,'' AS hnr, GROUP_CONCAT(tel.nr SEPARATOR '<br />') AS tel FROM partner GROUP_CONCAT(CONCAT(vname,' ',nname) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS nname, '' AS vname,
LEFT JOIN adresse ON adresse.partner_id = partner.id GROUP_CONCAT(CONCAT(vname2,' ',nname2) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS nname2,'' AS vname2,'' AS ort,
LEFT JOIN strasse ON strasse.id = str_id GROUP_CONCAT(CONCAT(plz,' ',ort) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS plz,
LEFT JOIN ort ON ort.id = ort_id GROUP_CONCAT(CONCAT(str,' ',hnr) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS str,'' AS hnr,
LEFT JOIN tel ON tel.partner_id = partner.id GROUP_CONCAT(tel.nr ORDER BY adresse.id, tel.id SEPARATOR '\n') AS tel
LEFT JOIN kontakt ON kontakt.partner_id = partner.id $joins
WHERE partner.typ_id = $typ"; WHERE partner.typ_id = ?";
} $params = array((int)$typ);
$query .= partnerSuchbedingung($src, $combiner, $fields, $params);
switch($fields) // Ohne feste Reihenfolge kann dieselbe Zeile beim Blaettern zweimal
{ // oder gar nicht auftauchen
case "all": $query .= " GROUP BY partner.id ORDER BY partner.id";
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; $ret["all"] = $query;
$query .= " LIMIT ".(intval($page)*$pagesize).", $pagesize"; $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
$ret["limited"] = $query; $ret["params"] = $params;
return $ret; return $ret;
} }
/*
* Adresssuche: wie createPartQry(), aber eine Zeile je Adresse statt je
* Partner. Damit laesst sich fuer ein Dokument eine Nebenadresse auswaehlen.
*/
function createAdressQry($page,$pagesize,$src,$combiner,$fields,$full=0,$typ=1) 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
$query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr,adresse.id AS adrid, tel.nr AS tel LEFT JOIN adresse ON adresse.partner_id = partner.id
FROM partner LEFT JOIN strasse ON strasse.id = str_id
LEFT JOIN adresse ON adresse.partner_id = partner.id LEFT JOIN ort ON ort.id = ort_id
LEFT JOIN strasse ON strasse.id = str_id LEFT JOIN tel ON tel.partner_id = partner.id
LEFT JOIN ort ON ort.id = ort_id LEFT JOIN kontakt ON kontakt.partner_id = partner.id
LEFT JOIN tel ON tel.partner_id = partner.id WHERE ".($full ? "" : "updated_by = 0 AND ")."partner.typ_id = ?";
LEFT JOIN kontakt ON kontakt.partner_id = partner.id $params = array((int)$typ);
WHERE updated_by = 0 AND partner.typ_id = $typ"; $query .= partnerSuchbedingung($src, $combiner, $fields, $params);
} $query .= " GROUP BY adresse.id ORDER BY adresse.id";
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; $ret["all"] = $query;
$query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
$ret["limited"] = $query; $ret["params"] = $params;
return $ret; return $ret;
} }
@@ -240,53 +158,62 @@ function createKdnRechQry($page,$pagesize,$src,$combiner,$id,$typ,$sks=0)
return $ret; return $ret;
} }
/* Projekte eines Kunden, Rueckgabe wie createKdnRechQry(). */
function createKdnProjectQry($page,$pagesize,$src,$combiner,$id) function createKdnProjectQry($page,$pagesize,$src,$combiner,$id)
{ {
$query = "SELECT project.id, project.name, $combiner = $combiner == "OR" ? "OR" : "AND";
$params = array($id);
$query = "SELECT project.id, project.name,
DATE_FORMAT(project.datetime, '%d.%m.%Y') AS date, DATE_FORMAT(project.datetime, '%d.%m.%Y') AS date,
SUM(CASE WHEN rechn = 0 THEN work.std ELSE 0 END) AS work SUM(CASE WHEN rechn = 0 THEN work.std ELSE 0 END) AS work
FROM project FROM project
JOIN work ON project.id = work.project_id JOIN work ON project.id = work.project_id
AND partner_id='".$id."'"; AND partner_id = ?";
foreach($src AS $tag) foreach($src AS $tag)
{ {
$tag .= "%"; $tag .= "%";
$query .= " $combiner (work.bezeichn LIKE '$tag' OR project.name LIKE '$tag' OR DATE_FORMAT(project.datetime, '%d.%m.%Y') LIKE '$tag')"; $query .= " $combiner (work.bezeichn LIKE ? OR project.name LIKE ? OR DATE_FORMAT(project.datetime, '%d.%m.%Y') LIKE ?)";
array_push($params, $tag, $tag, $tag);
} }
$query .= " GROUP BY project.id ORDER BY project.datetime DESC "; $query .= " GROUP BY project.id ORDER BY project.datetime DESC ";
$ret["all"] = $query; $ret["all"] = $query;
$query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
$ret["limited"] = $query; $ret["params"] = $params;
return $ret; return $ret;
} }
/* Kommissionsadressen (adresstyp 5) eines Kunden, Rueckgabe wie createKdnRechQry(). */
function createKommQry($page,$pagesize,$src,$combiner,$id) 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 $combiner = $combiner == "OR" ? "OR" : "AND";
$params = array($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 FROM adresse
LEFT JOIN strasse ON adresse.str_id = strasse.id LEFT JOIN strasse ON adresse.str_id = strasse.id
LEFT JOIN ort ON ort_id = ort.id LEFT JOIN ort ON ort_id = ort.id
LEFT JOIN tel ON adresse.id = tel.adresse_id LEFT JOIN tel ON adresse.id = tel.adresse_id
WHERE adresse.partner_id='".$id."' AND adresse.typ_id = '5' "; WHERE adresse.partner_id = ? AND adresse.typ_id = 5 ";
foreach($src AS $tag) foreach($src AS $tag)
{ {
$tag .= "%"; $tag .= "%";
$query .= " $combiner (ort LIKE '$tag' $query .= " $combiner (ort LIKE ?
OR str LIKE '$tag' OR str LIKE ?
OR nr LIKE '$tag' OR nr LIKE ?
OR vname LIKE '$tag' OR vname LIKE ?
OR nname LIKE '$tag' OR nname LIKE ?
OR vname2 LIKE '$tag' OR vname2 LIKE ?
OR nname2 LIKE '$tag' OR nname2 LIKE ?
OR firma LIKE '$tag')"; OR firma LIKE ?)";
for($i = 0; $i < 8; $i++)
$params[] = $tag;
} }
$query .= " GROUP BY adresse.id ORDER BY adresse.id DESC "; $query .= " GROUP BY adresse.id ORDER BY adresse.id DESC ";
$ret["all"] = $query; $ret["all"] = $query;
$query .= " LIMIT ".$page*$pagesize.", $pagesize"; $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
$ret["limited"] = $query; $ret["params"] = $params;
return $ret; return $ret;
} }
@@ -461,10 +388,29 @@ function createMsgQry($page,$pagesize,$src,$combiner,$user)
return $ret; return $ret;
} }
/* Artikelliste aus createRechQry()/createKdnRechQry() als escaptes HTML, eine Zeile je Artikel */ /*
function artikelListeHtml($artikel) * Zahl der Treffer einer Suche. Die Abfragen aus create*Qry() gruppieren,
* deshalb wird die ungekuerzte Abfrage ausgefuehrt und gezaehlt, statt mit
* COUNT(*) zu arbeiten.
*/
function zaehleTreffer($dbconn, $queries)
{ {
return implode("<br />", array_map("htmlspecialchars", explode("\n", (string)$artikel))); $res = isset($queries["params"])
? db_abfrage($dbconn, $queries["all"], $queries["params"])
: mysqli_query($dbconn, $queries["all"]);
if(!$res)
die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
return mysqli_num_rows($res);
}
/*
* Mit \n verbundene Werte aus GROUP_CONCAT als escaptes HTML, eine Zeile
* je Wert. Zusammengebaut wird erst hier, damit Daten aus der Datenbank
* nicht als HTML durchschlagen.
*/
function zeilenHtml($text)
{
return implode("<br />", array_map("htmlspecialchars", explode("\n", (string)$text)));
} }
function displayPages($pagesize,$currpage,$numentries,$refreshfunc,$ad_params = "") function displayPages($pagesize,$currpage,$numentries,$refreshfunc,$ad_params = "")
@@ -585,25 +531,30 @@ function displayList($header,$entries,$speciallines=array(),$colors=array())
echo "</table>"; echo "</table>";
} }
/*
* Bausteine fuer die Trefferlisten. Sie liefern fertiges HTML und escapen
* die Werte aus der Datenbank deshalb selbst.
*/
function makenameline($adresse) function makenameline($adresse)
{ {
$ret = $adresse["vname"]." ".$adresse["nname"]; $ret = zeilenHtml(trim($adresse["vname"]." ".$adresse["nname"]));
if($adresse["firma"]) if(!empty($adresse["firma"]))
$ret .= "<br /><i><u>".$adresse["firma"]."</u></i>"; $ret .= "<br /><i><u>".zeilenHtml($adresse["firma"])."</u></i>";
return $ret; return $ret;
} }
function makeadressline($adresse) function makeadressline($adresse)
{ {
$ret["ort"] = $adresse["plz"]." ".$adresse["ort"]; $ret["ort"] = zeilenHtml(trim($adresse["plz"]." ".$adresse["ort"]));
$ret["str"] = $adresse["str"]." ".$adresse["hnr"]; $ret["str"] = zeilenHtml(trim($adresse["str"]." ".$adresse["hnr"]));
return $ret; return $ret;
} }
function maketelline($tel) function maketelline($tel)
{ {
$ret=""; $nr = isset($tel["tel"]) ? (string)$tel["tel"] : "";
if(isset($tel["vwahl"]) && !stristr($tel["tel"], "-") && !stristr($tel["tel"], "/")) $ret = "";
$ret = $tel["vwahl"]."-"; if(!empty($tel["vwahl"]) && !str_contains($nr, "-") && !str_contains($nr, "/"))
$ret .= $tel["tel"]; $ret = zeilenHtml($tel["vwahl"])."-";
$ret .= zeilenHtml($nr);
return $ret; return $ret;
} }
+13 -48
View File
@@ -1,36 +1,10 @@
<?php <?php
require_once("saveNchange.php");
/* ---------------------------------------------------------------------
* Hilfsfunktionen für Formularwerte
* ------------------------------------------------------------------ */
/* Getrimmter Text aus $_POST, fehlend oder kein Text ergibt "" */
function formularText($name)
{
return isset($_POST[$name]) && is_string($_POST[$name]) ? trim($_POST[$name]) : "";
}
/* /*
* Zahl aus $_POST in deutscher Schreibweise. Steht ein Komma darin, ist es * Rechnungen, Angebote, Lieferscheine und Briefe. Die Hilfsfunktionen für
* der Dezimaltrenner und Punkte sind Tausendertrenner ("1.234,50"). Ohne * Formularwerte (formularText(), formularZahl(), formularGanzzahl()) stehen
* Komma gilt ein Punkt als Dezimaltrenner ("12.50", so liefert ihn die * in saveNchange.php, weil beide Module sie brauchen.
* Artikel-Autovervollständigung). Leere oder ungültige Eingaben werden 0 -
* so hat sie der frühere, nicht strikte Modus gespeichert.
*/ */
function formularZahl($name) require_once("saveNchange.php");
{
$wert = str_replace(" ", "", formularText($name));
if(str_contains($wert, ","))
$wert = str_replace(array(".", ","), array("", "."), $wert);
return is_numeric($wert) ? $wert : "0";
}
/* Ganzzahl aus $_POST, gerundet wie MariaDB beim Speichern */
function formularGanzzahl($name)
{
return (int)round((float)formularZahl($name));
}
/* Die zwölf Ankreuzfelder für den Adressblock als 0/1-Zeichenkette */ /* Die zwölf Ankreuzfelder für den Adressblock als 0/1-Zeichenkette */
function formularAdressfelder() function formularAdressfelder()
@@ -423,7 +397,7 @@ function saveRechnung($dbconn,$update)
// Alles oder nichts: bricht ein Schritt ab, bleibt keine halbe Rechnung // Alles oder nichts: bricht ein Schritt ab, bleibt keine halbe Rechnung
// zurück. Der Entwurf in tmp_rechnung bleibt dann erhalten. // zurück. Der Entwurf in tmp_rechnung bleibt dann erhalten.
mysqli_begin_transaction($dbconn); beginneSpeichern($dbconn);
$err = 0; $err = 0;
if($update) if($update)
@@ -536,13 +510,9 @@ function saveRechnung($dbconn,$update)
if(!$err) if(!$err)
$err = loescheEntwurf($dbconn, $type); $err = loescheEntwurf($dbconn, $type);
if(!$err) beendeSpeichern($dbconn, $err);
if($err)
{ {
mysqli_commit($dbconn);
}
else
{
mysqli_rollback($dbconn);
$err = error("Es ist ein Fehler beim Speichern aufgetreten, <br /> $err = error("Es ist ein Fehler beim Speichern aufgetreten, <br />
Ihre Rechnung ist aber noch vorhanden, <br /> Ihre Rechnung ist aber noch vorhanden, <br />
Bitte gehen Sie <a href='?action=rechnungadd&type=$type'>zurück zum Rechnungsformular</a> <br /> Bitte gehen Sie <a href='?action=rechnungadd&type=$type'>zurück zum Rechnungsformular</a> <br />
@@ -598,7 +568,7 @@ function saveTmpRechnung($dbconn, $nurAktive)
); );
$set = implode(", ", array_map(function($spalte) { return "`$spalte` = ?"; }, array_keys($felder))); $set = implode(", ", array_map(function($spalte) { return "`$spalte` = ?"; }, array_keys($felder)));
mysqli_begin_transaction($dbconn); beginneSpeichern($dbconn);
$err = 0; $err = 0;
$progressid = db_wert($dbconn, "SELECT id FROM tmp_rechnung WHERE user_id = ? AND typ_id = ? ORDER BY id LIMIT 1", array($_SESSION["user"], $type)); $progressid = db_wert($dbconn, "SELECT id FROM tmp_rechnung WHERE user_id = ? AND typ_id = ? ORDER BY id LIMIT 1", array($_SESSION["user"], $type));
if($progressid === false) if($progressid === false)
@@ -649,17 +619,14 @@ function saveTmpRechnung($dbconn, $nurAktive)
$i++; $i++;
} }
if($err) beendeSpeichern($dbconn, $err);
mysqli_rollback($dbconn);
else
mysqli_commit($dbconn);
return array($progressid, $err); return array($progressid, $err);
} }
function delRechnung($dbconn,$id) function delRechnung($dbconn,$id)
{ {
$err = 0; $err = 0;
mysqli_begin_transaction($dbconn); beginneSpeichern($dbconn);
db_abfrage($dbconn, "DELETE FROM artikel_rechn WHERE rech_id = ?", array($id)) or $err = error("Fehler beim löschen der Artikel-Rechnung Beziehung <br />".mysqli_error($dbconn)); db_abfrage($dbconn, "DELETE FROM artikel_rechn WHERE rech_id = ?", array($id)) or $err = error("Fehler beim löschen der Artikel-Rechnung Beziehung <br />".mysqli_error($dbconn));
if(!$err) if(!$err)
db_abfrage($dbconn, "DELETE FROM artikel_eigensch WHERE rech_id = ?", array($id)) or $err = error("Fehler beim löschen der Artikel-Eigenschaften Beziehung <br />".mysqli_error($dbconn)); db_abfrage($dbconn, "DELETE FROM artikel_eigensch WHERE rech_id = ?", array($id)) or $err = error("Fehler beim löschen der Artikel-Eigenschaften Beziehung <br />".mysqli_error($dbconn));
@@ -667,8 +634,7 @@ function delRechnung($dbconn,$id)
db_abfrage($dbconn, "DELETE FROM rechnung WHERE id = ? LIMIT 1", array($id)) or $err = error("Fehler beim löschen der Rechnung <br />".mysqli_error($dbconn)); db_abfrage($dbconn, "DELETE FROM rechnung WHERE id = ? LIMIT 1", array($id)) or $err = error("Fehler beim löschen der Rechnung <br />".mysqli_error($dbconn));
if(!$err) if(!$err)
$err = saveLog($dbconn, db_sql_text($dbconn, "DELETE FROM rechnung WHERE id = ? LIMIT 1", array($id))." [rechnung DEL]", "", "löschen"); $err = saveLog($dbconn, db_sql_text($dbconn, "DELETE FROM rechnung WHERE id = ? LIMIT 1", array($id))." [rechnung DEL]", "", "löschen");
$err ? mysqli_rollback($dbconn) : mysqli_commit($dbconn); return beendeSpeichern($dbconn, $err);
return $err;
} }
/* Storno setzen (1) oder zurücknehmen (0) */ /* Storno setzen (1) oder zurücknehmen (0) */
@@ -717,7 +683,7 @@ function copyRech($dbconn,$id,$adrid)
if($partnerid === false) if($partnerid === false)
return error("Fehler beim ermitteln der Adressdaten <br />".mysqli_error($dbconn)); return error("Fehler beim ermitteln der Adressdaten <br />".mysqli_error($dbconn));
mysqli_begin_transaction($dbconn); beginneSpeichern($dbconn);
list($rechnr, $err) = neueRechnungsnummer($dbconn, $res["typ_id"]); list($rechnr, $err) = neueRechnungsnummer($dbconn, $res["typ_id"]);
if(!$err) if(!$err)
{ {
@@ -746,8 +712,7 @@ function copyRech($dbconn,$id,$adrid)
if(!$err) if(!$err)
$err = saveLog($dbconn, db_sql_text($dbconn, $sql, array($rechid, $id))." [rechnung copy]", "DELETE FROM artikel_eigensch WHERE rech_id = $rechid", "anlegen"); $err = saveLog($dbconn, db_sql_text($dbconn, $sql, array($rechid, $id))." [rechnung copy]", "DELETE FROM artikel_eigensch WHERE rech_id = $rechid", "anlegen");
} }
$err ? mysqli_rollback($dbconn) : mysqli_commit($dbconn); return beendeSpeichern($dbconn, $err);
return $err;
} }
function calculateRechnungsSum($dbconn, $rechid, $inclmwst) function calculateRechnungsSum($dbconn, $rechid, $inclmwst)
+1141 -679
View File
File diff suppressed because it is too large Load Diff
+15 -13
View File
@@ -7,8 +7,8 @@ function ajax_searchkunden(page)
search_in_progress = 1; search_in_progress = 1;
document.getElementById("kdnsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("kdnsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
//document.getElementById("kdnsrc_src").disabled = true; //document.getElementById("kdnsrc_src").disabled = true;
field = escape(document.getElementById("kdnsrc_field").value); field = encodeURIComponent(document.getElementById("kdnsrc_field").value);
search = escape(document.getElementById("kdnsrc_src").value); search = encodeURIComponent(document.getElementById("kdnsrc_src").value);
var url = "ajax/searchkunden.php?field=" + field + "&page=" + page + "&search=" + search; var url = "ajax/searchkunden.php?field=" + field + "&page=" + page + "&search=" + search;
reqkdnsrc = new XMLHttpRequest(); reqkdnsrc = new XMLHttpRequest();
@@ -35,7 +35,7 @@ function ajax_searchzeit(page,user)
search_in_progress = 1; search_in_progress = 1;
document.getElementById("termcontainer-"+user).innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("termcontainer-"+user).innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
//document.getElementById("kdnsrc_src").disabled = true; //document.getElementById("kdnsrc_src").disabled = true;
search = escape(document.getElementById("zeit_src-"+user).value); search = encodeURIComponent(document.getElementById("zeit_src-"+user).value);
var url = "ajax/searchzeit.php?page=" + page + "&user=" + user + "&search=" + search; var url = "ajax/searchzeit.php?page=" + page + "&user=" + user + "&search=" + search;
reqkdnsrc = new XMLHttpRequest(); reqkdnsrc = new XMLHttpRequest();
@@ -55,15 +55,17 @@ function ajax_searchzeit(page,user)
} }
} }
function ajax_searchadress(rechid,subact,page) // page zuerst, damit die Seitenschaltung (displayPages) die Nummer
// als erstes Argument uebergeben kann - wie bei den anderen Suchen
function ajax_searchadress(page,rechid,subact)
{ {
if(!search_in_progress) if(!search_in_progress)
{ {
search_in_progress = 1; search_in_progress = 1;
document.getElementById("adrsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("adrsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
//document.getElementById("kdnsrc_src").disabled = true; //document.getElementById("kdnsrc_src").disabled = true;
field = escape(document.getElementById("adrsrc_field").value); field = encodeURIComponent(document.getElementById("adrsrc_field").value);
search = escape(document.getElementById("adrsrc_src").value); search = encodeURIComponent(document.getElementById("adrsrc_src").value);
var url = "ajax/searchadress.php?field=" + field + "&page=" + page + "&search=" + search + "&rechid=" + rechid + "&subact=" + subact; var url = "ajax/searchadress.php?field=" + field + "&page=" + page + "&search=" + search + "&rechid=" + rechid + "&subact=" + subact;
reqadrsrc = new XMLHttpRequest(); reqadrsrc = new XMLHttpRequest();
@@ -90,8 +92,8 @@ function ajax_searchliefer(page)
search_in_progress = 1; search_in_progress = 1;
document.getElementById("kdnsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("kdnsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
//document.getElementById("kdnsrc_src").disabled = true; //document.getElementById("kdnsrc_src").disabled = true;
field = escape(document.getElementById("kdnsrc_field").value); field = encodeURIComponent(document.getElementById("kdnsrc_field").value);
search = escape(document.getElementById("kdnsrc_src").value); search = encodeURIComponent(document.getElementById("kdnsrc_src").value);
var url = "ajax/searchliefer.php?field=" + field + "&page=" + page + "&search=" + search; var url = "ajax/searchliefer.php?field=" + field + "&page=" + page + "&search=" + search;
reqkdnsrc = new XMLHttpRequest(); reqkdnsrc = new XMLHttpRequest();
@@ -118,7 +120,7 @@ function ajax_searchkdnprojects(page,kdnid)
search_in_progress = 1; search_in_progress = 1;
document.getElementById("projectlist").innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("projectlist").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
//document.getElementById("kdnsrc_src").disabled = true; //document.getElementById("kdnsrc_src").disabled = true;
search = escape(document.getElementById("src_project").value); search = encodeURIComponent(document.getElementById("src_project").value);
var url = "ajax/searchkdnprojects.php?page=" + page + "&search=" + search+"&kdnid=" + kdnid; var url = "ajax/searchkdnprojects.php?page=" + page + "&search=" + search+"&kdnid=" + kdnid;
@@ -173,7 +175,7 @@ function ajax_searchkomm(page,kdnid)
search_in_progress = 1; search_in_progress = 1;
document.getElementById("kommsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("kommsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
//document.getElementById("kdnsrc_src").disabled = true; //document.getElementById("kdnsrc_src").disabled = true;
search = escape(document.getElementById("kommsrc_src").value); search = encodeURIComponent(document.getElementById("kommsrc_src").value);
var url = "ajax/searchkomm.php?page=" + page + "&search=" + search+"&kdnid=" + kdnid; var url = "ajax/searchkomm.php?page=" + page + "&search=" + search+"&kdnid=" + kdnid;
@@ -181,7 +183,7 @@ function ajax_searchkomm(page,kdnid)
reqkommsrc.open("GET", url, true); reqkommsrc.open("GET", url, true);
reqkommsrc.onreadystatechange = function() reqkommsrc.onreadystatechange = function()
{ {
if(reqkdnsrc.readyState == 4) if(reqkommsrc.readyState == 4)
{ {
// Get the data from the server's response // Get the data from the server's response
document.getElementById("kommsrc_list").innerHTML = reqkommsrc.responseText; document.getElementById("kommsrc_list").innerHTML = reqkommsrc.responseText;
@@ -226,7 +228,7 @@ function ajax_searchterm(page, termtyp)
{ {
search_in_progress = 1; search_in_progress = 1;
document.getElementById("termcontainer-"+termtyp).innerHTML = "<p><img src='pics/progress_white.gif' /></p>"; document.getElementById("termcontainer-"+termtyp).innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
search = escape(document.getElementById("term_src-"+termtyp).value); search = encodeURIComponent(document.getElementById("term_src-"+termtyp).value);
var url = "ajax/searchterm.php?page=" + page + "&search=" + search + "&termtyp=" + termtyp; var url = "ajax/searchterm.php?page=" + page + "&search=" + search + "&termtyp=" + termtyp;
@@ -276,7 +278,7 @@ function ajax_displaymsgs(page,user)
} }
function sendmsg(touser) function sendmsg(touser)
{ {
msg = escape(document.getElementById("message-"+touser).value); msg = encodeURIComponent(document.getElementById("message-"+touser).value);
var url = "ajax/sendmsg.php?touser="+touser+"&msg="+msg; var url = "ajax/sendmsg.php?touser="+touser+"&msg="+msg;
reqsndmsgs = new XMLHttpRequest(); reqsndmsgs = new XMLHttpRequest();
reqsndmsgs.open("GET", url, true); reqsndmsgs.open("GET", url, true);
+4 -56
View File
@@ -1,59 +1,7 @@
<?php <?php
require_once "incs/saveNchange.php"; require_once "incs/saveNchange.php";
// loeschePartner() räumt die Dokumente des Kunden über delRechnung() mit ab
require_once "incs/rechnung.php"; require_once "incs/rechnung.php";
if($_GET["del"] == 1) $err = partnerAddSeite($dbconn, $smarty, 1);
{ ?>
$kundeid=mysql_escape_string($_GET["kundeid"]);
$qry=mysqli_query($dbconn,"SELECT partner.id, vname, nname, firma FROM partner JOIN adresse ON adresse.partner_id = partner.id WHERE partner_id = '$kundeid' AND adresse.typ_id = 1 AND partner.typ_id = 1") or $err=error("Fehler beim ermitteln der Kundendaten für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$kundeid=$res[0];
$vname=$res[1];
$nname=$res[2];
$firma=$res[3];
$qry=mysqli_query($dbconn,"SELECT id, rechnr FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim ermitteln verknüpfter Rechnungen:<br />".mysqli_error($dbconn));
while($res = mysqli_fetch_array($qry))
{
$qry2=mysqli_query($dbconn,"DELETE FROM artikel_rechn WHERE rech_id = '$res[0]'") or $err=error("Fehler beim löschen verknüpfter Artikel:<br />".mysqli_error($dbconn));
$qry2=mysqli_query($dbconn,"DELETE FROM artikelsks WHERE rechnr = '$res[1]'") or $err=error("Fehler beim löschen verknüpfter SKS Artikel:<br />".mysqli_error($dbconn));
}
$qry=mysqli_query($dbconn,"SELECT id FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim ermitteln verknüpfter Rechnungen:<br />".mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$err = delRechnung($dbconn,$res["id"]);
}
$qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Adressen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM tel WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Telefonnummern:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Kontaktadressen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Notizen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM konto WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Konten:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM partner WHERE id = '$kundeid'") or $err=error("Fehler beim löschen des Kunden:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM partner WHERE id = $kundeid [$vname $nname - $firma]",
"",
"löschen");
if(!$err)
{
$qry=mysqli_query($dbconn,"UPDATE partner SET updated_by = 0 WHERE updated_by = '$kundeid'") or $err=error("Fehler beim unlinken einer eventuellen aktualisierung:<br />".mysqli_error($dbconn));
}
if(!$err)
{
doneNreturn("Erfolgreich gelöscht!");
}
}
}
elseif($_GET["formsent"] == 1)
{
$ret = savePart($dbconn,1);
$_SESSION["camefrom"] = "kundenshow&id=".$ret[1];
if(!$ret[0])
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispPartForm($dbconn,$smarty);
}
?>
+6 -206
View File
@@ -1,207 +1,7 @@
<?php <?php
require_once "incs/saveNchange.php"; require_once "incs/saveNchange.php";
if($_GET["do"] == "adress") // Beim Löschen einer Adresse verschwinden auch ihre Dokumente (delRechnung)
{ require_once "incs/rechnung.php";
if($_GET["del"] == 1)
{ $err = partnerChangeSeite($dbconn, $smarty, 1);
$adressid=mysql_escape_string($_GET["adressid"]); ?>
$qry=mysqli_query($dbconn,"SELECT vname, nname, firma, typ, partner.id FROM adresse
JOIN adresstyp ON adresstyp.id = adresse.typ_id
JOIN partner ON partner.id = adresse.partner_id
WHERE adresse.id = '$adressid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$vname = $res[0];
$nname = $res[1];
$firma = $res[2];
$typ = $res[3];
$kdnr = $res[4];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE id = '$adressid'") or $err=error("Fehler beim löschen der Adresse:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM adresse WHERE id = $adressid [$typ von Kunde $kdnr ($vname $nname - $firma)]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
if(!$err)
{
$qry=mysqli_query($dbconn,"SELECT * FROM tel WHERE adresse_id = '$adressid'");
while($res = mysqli_fetch_assoc($dbconn,$qry))
{
mysqli_query($dbconn,"DELETE FROM tel WHERE id='".$res["id"]."'") or $err = error("Fehler beim löschen der zugehörigen Telefonnummern<br />".mysqli_error($dbconn));#
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM tel WHERE id = ".$res["$id"]." [$typ von Kunde $kdnr ($vname $nname - $firma)]","","löschen");
}
}
}
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
else
{
$err = error("Ungültiger Kunde!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveAdress($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispAdressForm($dbconn,$smarty,1);
}
}
elseif($_GET["do"] == "tel")
{
if($_GET["del"] == 1)
{
$telid=mysql_escape_string($_GET["telid"]);
$qry=mysqli_query($dbconn,"SELECT typ, partner.id FROM tel
JOIN teltyp ON teltyp.id = tel.typ_id
JOIN partner ON partner.id = tel.partner_id
WHERE adresse.id = '$adressid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($dbconn,$qry);
$typ = $res[0];
$kdnr = $res[1];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM tel WHERE id = '$telid'") or $err=error("Fehler beim löschen der Telefonnummer:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM tel WHERE id = $telid [$typ von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Kunde!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveTel($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispTelForm($dbconn,$smarty,1);
}
}
elseif($_GET["do"] == "kontakt")
{
if($_GET["del"] == 1)
{
$kontaktid=mysql_escape_string($_GET["kontaktid"]);
$qry=mysqli_query($dbconn,"SELECT typ, partner.id FROM kontakt
JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
JOIN partner ON partner.id = kontakt.partner_id
WHERE kontakt.id = '$kontaktid'") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$typ = $res[0];
$kdnr = $res[1];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE id = '$kontaktid'") or $err=error("Fehler beim löschen der Kontaktinformation:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM kontakt WHERE id = $kontaktid [$typ von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Kunde!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveKontakt($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispKontaktForm($dbconn,$smarty,1);
}
}
elseif($_GET["do"] == "notiz")
{
if($_GET["del"] == 1)
{
$notizid=mysql_escape_string($_GET["notizid"]);
$qry=mysqli_query($dbconn,"SELECT partner_id FROM notiz
JOIN partner ON partner.id = notiz.partner_id
WHERE notiz.id = '$notizid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$kdnr = $res[0];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE id = '$notizid'") or $err=error("Fehler beim löschen der Notiz:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM notiz WHERE id = $notizid [von Kunde $kdnr]","","löschen");
del_files("./".UPLOADS_PATH."notes/","!^".$notizid."\.(.)+$!");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Kunde!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveNotiz($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispNotizForm($dbconn,$smarty,1);
}
}
elseif($_GET["do"] == "konto")
{
if($_GET["del"] == 1)
{
$kontoid = mysql_escape_string($_GET["kontoid"]);
$qry = mysqli_query($dbconn,"SELECT konto.partner_id FROM konto
JOIN partner ON partner.id = konto.partner_id
WHERE konto.id = '$kontoid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res = mysqli_fetch_array($qry);
$kdnr = $res[0];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM konto WHERE id = '$kontoid'") or $err=error("Fehler beim löschen des Kontos:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM konto WHERE id = $kontoid [von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Kunde!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveKonto($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispKontoForm($dbconn,$smarty,2);
}
}
?>
+6 -120
View File
@@ -1,121 +1,7 @@
<?php <?php
if($_GET["id"]) require_once "incs/saveNchange.php";
{
$qry = mysqli_query($dbconn,"SELECT * FROM partner WHERE id='".mysql_escape_string($_GET["id"])."' AND typ_id = 1"); partnerShowDaten($dbconn, $smarty, parameterGanzzahl("id"), 1);
$kdnres=mysqli_fetch_assoc($qry); $_SESSION["camefrom"] = "kundenshow&id=".parameterGanzzahl("id");
$smarty->assign("kunde",$kdnres);
if($kdnres["id"])
{
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$kdnres["id"]."'");
while($res=mysqli_fetch_assoc($qry))
{
$oldrecords[] = $res;
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$res["id"]."'");
}
$smarty->assign("oldrecords",$oldrecords);
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$kdnres["updated_by"]."'");
while($res=mysqli_fetch_assoc($qry))
{
$newrecords[] = $res;
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$res["updated_by"]."'");
}
$smarty->assign("newrecords",$newrecords);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT * FROM anrede");
while($res=mysqli_fetch_assoc($qry))
{
$tmp[$res["id"]] = $res["anrede"];
}
$smarty->assign("anr",$tmp);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT * FROM titel");
while($res=mysqli_fetch_assoc($qry))
{
$tmp[$res["id"]] = $res["titel"];
}
$smarty->assign("titel",$tmp);
$qry = mysqli_query($dbconn,"SELECT name,typ,tel.id,nr,ort,ortsteil,plz,vwahl, ort.id AS ort_id FROM tel LEFT JOIN teltyp ON typ_id = teltyp.id LEFT JOIN ort ON ort_id = ort.id WHERE partner_id='".mysql_escape_string($_GET["id"])."' AND tel.adresse_id = 0 ORDER BY typ_id ASC");
while($res=mysqli_fetch_assoc($qry))
{
$tels[] = $res;
}
$smarty->assign("telnrn",$tels);
$qry = mysqli_query($dbconn,"SELECT kontakt.id, kontakt, partner_id, typ FROM kontakt LEFT JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC");
while($res=mysqli_fetch_assoc($qry))
{
$contacts[] = $res;
}
$smarty->assign("contacts",$contacts);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT ktonr,iban,swift,blz,bank,partner_id,konto.id,inhaber
FROM konto JOIN bank ON konto.bank_id = bank.id WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
or $err=error("Fehler beim auslesen der Konten:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("kontos",$tmp);
$qry = mysqli_query($dbconn,"SELECT * FROM notiz WHERE partner_id='".mysql_escape_string($_GET["id"])."'");
while($res=mysqli_fetch_assoc($qry))
{
$res["file"] = search_file("./".UPLOADS_PATH."notes/","!^".$res["id"]."\.(.)+$!");
$notes[] = $res;
}
$qry = mysqli_query($dbconn,"SELECT COUNT(rechnr) AS nr_mahn, NOW() AS datetime FROM rechnung WHERE typ_id = 6 AND partner_id = '".mysql_escape_string($_GET["id"])."'") or $err=error("Fehler beim Auslesen der Daten:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_assoc($qry);
if($res["nr_mahn"] > 0)
{
$mahn["notiz"] = "ACHTUNG! Es sind bereits ".$res["nr_mahn"]." Mahnungen für diesen Kunden vorhanden!!";
$mahn["color"] = "#f76";
$mahn["datetime"] = $res["datetime"];
$notes[] = $mahn;
}
$smarty->assign("notes",$notes);
$qry = mysqli_query($dbconn,"SELECT plz, ortsteil, tel.nr, ort.vwahl, ort, str, DATE_FORMAT(gebdat,'%d.%m.%Y') AS gebdat, DATE_FORMAT(gebdat2,'%d.%m.%Y') AS gebdat2, hnr, vname, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_id, anrede2_id, titel2_id, adresstyp.typ, adresse.typ_id
FROM adresse JOIN
adresstyp ON adresstyp.id = adresse.typ_id
LEFT JOIN strasse ON str_id = strasse.id
LEFT JOIN ort ON ort_id = ort.id
LEFT JOIN land ON land_id = land.id
LEFT JOIN tel ON tel.adresse_id = adresse.id
WHERE adresse.partner_id='".mysql_escape_string($_GET["id"])."' AND adresse.typ_id != 5
ORDER BY typ_id ASC")or $err=error("Mysql-Fehler:<br />".mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$adressen[] = $res;
}
$smarty->assign("adressen",$adressen);
$qry = mysqli_query($dbconn,"SELECT id
FROM adresse WHERE adresse.partner_id='".mysql_escape_string($_GET["id"])."' AND adresse.typ_id = 5
ORDER BY typ_id ASC")or $err=error("Mysql-Fehler:<br />".mysqli_error($dbconn));
if(mysqli_fetch_array($qry))
$smarty->assign("kommadressen",1);
$tmp=array();
$qry = mysqli_query($dbconn,"SELECT typ, id FROM rechtyp");
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("rechtypen",$tmp);
}
}
$_SESSION["camefrom"] ="kundenshow&id=".$_GET["id"];
$smarty->display("kundenshow.tpl"); $smarty->display("kundenshow.tpl");
?> ?>
+5 -55
View File
@@ -1,57 +1,7 @@
<?php <?php
require_once "incs/saveNchange.php"; require_once "incs/saveNchange.php";
// loeschePartner() räumt die Dokumente des Lieferanten über delRechnung() mit ab
require_once "incs/rechnung.php";
if($_GET["del"] == 1) $err = partnerAddSeite($dbconn, $smarty, 2);
{ ?>
$kundeid=mysql_escape_string($_GET["kundeid"]);
$qry=mysqli_query($dbconn,"SELECT partner.id, vname, nname, firma FROM partner JOIN adresse ON adresse.partner_id = partner.id WHERE partner_id = '$kundeid' AND adresse.typ_id = 1 AND partner.typ_id = 2") or $err=error("Fehler beim ermitteln der Kundendaten für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$kundeid=$res[0];
$vname=$res[1];
$nname=$res[2];
$firma=$res[3];
if($kundeid)
{
$qry=mysqli_query($dbconn,"SELECT id, rechnr FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim ermitteln verknüpfter Rechnungen:<br />".mysqli_error($dbconn));
while($res = mysqli_fetch_array($qry))
{
$qry2=mysqli_query($dbconn,"DELETE FROM artikel_rechn WHERE rech_id = '$res[0]'") or $err=error("Fehler beim löschen verknüpfter Artikel:<br />".mysqli_error($dbconn));
$qry2=mysqli_query($dbconn,"DELETE FROM artikelsks WHERE rechnr = '$res[1]'") or $err=error("Fehler beim löschen verknüpfter SKS Artikel:<br />".mysqli_error($dbconn));
}
$qry=mysqli_query($dbconn,"DELETE FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Rechnungen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Adressen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM tel WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Telefonnummern:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Kontaktadressen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Notizen:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM konto WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Konten:<br />".mysqli_error($dbconn));
$qry=mysqli_query($dbconn,"DELETE FROM partner WHERE id = '$kundeid'") or $err=error("Fehler beim löschen des Kunden:<br />".mysqli_error($dbconn));
}
else
{
$err = error("Ungültiger Lieferant!");
}
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM partner WHERE id = $kundeid [$vname $nname - $firma]",
"",
"löschen");
echo "sadlk";
if(!$err)
{
doneNreturn("Erfolgreich gelöscht!");
}
}
}
elseif($_GET["formsent"] == 1)
{
$ret = savePart($dbconn,2);
$_SESSION["camefrom"] = "liefershow&id=".$ret[1];
if(!$ret[0])
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispPartForm($dbconn,$smarty,2);
}
?>
+6 -190
View File
@@ -1,191 +1,7 @@
<?php <?php
require_once "incs/saveNchange.php"; require_once "incs/saveNchange.php";
if($_GET["do"] == "adress") // Beim Löschen einer Adresse verschwinden auch ihre Dokumente (delRechnung)
{ require_once "incs/rechnung.php";
if($_GET["del"] == 1)
{ $err = partnerChangeSeite($dbconn, $smarty, 2);
$adressid=mysql_escape_string($_GET["adressid"]); ?>
$qry=mysqli_query($dbconn,"SELECT vname, nname, firma, typ, partner.id FROM adresse
JOIN adresstyp ON adresstyp.id = adresse.typ_id
JOIN partner ON partner.id = adresse.partner_id
WHERE adresse.id = '$adressid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$vname = $res[0];
$nname = $res[1];
$firma = $res[2];
$typ = $res[3];
$kdnr = $res[4];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE id = '$adressid'") or $err=error("Fehler beim löschen der Adresse:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM adresse WHERE id = $adressid [$typ von Kunde $kdnr ($vname $nname - $firma)]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Lieferant!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveAdress($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispAdressForm($dbconn,$smarty,2);
}
}
elseif($_GET["do"] == "tel")
{
if($_GET["del"] == 1)
{
$telid=mysql_escape_string($_GET["telid"]);
$qry=mysqli_query($dbconn,"SELECT typ, partner.id FROM tel
JOIN teltyp ON teltyp.id = tel.typ_id
JOIN partner ON partner.id = tel.partner_id
WHERE adresse.id = '$adressid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$typ = $res[0];
$kdnr = $res[1];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM tel WHERE id = '$telid'") or $err=error("Fehler beim löschen der Telefonnummer:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM tel WHERE id = $telid [$typ von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Lieferant!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveTel($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispTelForm($dbconn,$smarty,2);
}
}
elseif($_GET["do"] == "kontakt")
{
if($_GET["del"] == 1)
{
$kontaktid=mysql_escape_string($_GET["kontaktid"]);
$qry=mysqli_query($dbconn,"SELECT konatkttyp.typ, partner.id FROM kontakt
JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
JOIN partner ON partner.id = kontakt.partner_id WHERE kontakt.id = '$kontaktid' partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$typ = $res[0];
$kdnr = $res[1];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE id = '$kontaktid'") or $err=error("Fehler beim löschen der Kontaktinformation:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM kontakt WHERE id = $kontaktid [$typ von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Lieferant!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveKontakt($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispKontaktForm($dbconn,$smarty,2);
}
}
elseif($_GET["do"] == "notiz")
{
if($_GET["del"] == 1)
{
$notizid=mysql_escape_string($_GET["notizid"]);
$qry=mysqli_query($dbconn,"SELECT partner_id FROM notiz
JOIN partner ON partner.id = notiz.partner_id
WHERE notiz.id = '$notizid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_array($qry);
$kdnr = $res[0];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE id = '$notizid'") or $err=error("Fehler beim löschen der Notiz:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM notiz WHERE id = $notizid [von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Lieferant!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveNotiz($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispNotizForm($dbconn,$smarty,2);
}
}
elseif($_GET["do"] == "konto")
{
if($_GET["del"] == 1)
{
$kontoid = mysql_escape_string($_GET["kontoid"]);
$qry = mysqli_query($dbconn,"SELECT konto.partner_id FROM konto
JOIN partner ON partner.id = konto.partner_id
WHERE konto.id = '$kontoid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:<br />".mysqli_error($dbconn));
$res = mysqli_fetch_array($qry);
$kdnr = $res[0];
if($kdnr)
{
$qry=mysqli_query($dbconn,"DELETE FROM konto WHERE id = '$kontoid'") or $err=error("Fehler beim löschen des Kontos:<br />".mysqli_error($dbconn));
if(!$err)
{
$err = saveLog($dbconn,"DELETE FROM konto WHERE id = $kontoid [von Kunde $kdnr]","","löschen");
if(!$err)
doneNreturn("Erfolgreich gelöscht!");
}
}
else
{
$err = error("Ungültiger Lieferant!");
}
}
elseif($_GET["formsent"] == 1)
{
$err = saveKonto($dbconn);
if(!$err)
doneNreturn("Erfolgreich erledigt!");
}
else
{
dispKontoForm($dbconn,$smarty,2);
}
}
?>
+5 -118
View File
@@ -1,120 +1,7 @@
<?php <?php
if($_GET["id"]) require_once "incs/saveNchange.php";
{
$qry = mysqli_query($dbconn,"SELECT * FROM partner WHERE id='".mysql_escape_string($_GET["id"])."' AND typ_id = 2")
or $err=error("Fehler beim auslesen des Zulieferers:<br />". mysqli_error($dbconn));
$kdnres=mysqli_fetch_assoc($qry);
$smarty->assign("kunde",$kdnres);
if($kdnres.id)
{
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$kdnres["id"]."'")
or $err=error("Fehler beim auslesen der neueren Versionen:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$oldrecords[] = $res;
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$res["id"]."'")
or $err=error("Fehler beim auslesen der neueren Versionen:<br />". mysqli_error($dbconn));
}
$smarty->assign("oldrecords",$oldrecords);
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$kdnres["updated_by"]."'")
or $err=error("Fehler beim auslesen der älteren Versionen:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$newrecords[] = $res;
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$res["updated_by"]."'")
or $err=error("Fehler beim auslesen der älteren Versionen:<br />". mysqli_error($dbconn));
}
$smarty->assign("newrecords",$newrecords);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT * FROM anrede")
or $err=error("Fehler beim auslesen der Anreden:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[$res["id"]] = $res["anrede"];
}
$smarty->assign("anr",$tmp);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT * FROM titel")
or $err=error("Fehler beim auslesen der Titel:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[$res["id"]] = $res["titel"];
}
$smarty->assign("titel",$tmp);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT name,typ,tel.id,nr,ort,ortsteil,plz,vwahl
FROM tel LEFT JOIN teltyp ON typ_id = teltyp.id LEFT JOIN ort ON ort_id = ort.id
WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC")
or $err=error("Fehler beim auslesen der Telefonnummern:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("telnrn",$tmp);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT kontakt.id, kontakt, partner_id, typ
FROM kontakt LEFT JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC")
or $err=error("Fehler beim auslesen der Kontakte:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("contacts",$tmp);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT * FROM notiz WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
or $err=error("Fehler beim auslesen der Notizen:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("notes",$tmp);
$tmp = array();
$qry = mysqli_query($dbconn,"SELECT ktonr,iban,swift,blz,bank,partner_id,konto.id,inhaber
FROM konto JOIN bank ON konto.bank_id = bank.id WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
or $err=error("Fehler beim auslesen der Konten:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("kontos",$tmp);
$qry = mysqli_query($dbconn,"SELECT plz, ortsteil, ort, str, hnr, vname, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_id, adresstyp.typ, adresse.typ_id
FROM adresse JOIN
adresstyp ON adresstyp.id = adresse.typ_id
LEFT JOIN strasse ON str_id = strasse.id
LEFT JOIN ort ON ort_id = ort.id
LEFT JOIN land ON land_id = land.id
WHERE partner_id='".mysql_escape_string($_GET["id"])."'
ORDER BY typ_id ASC") or $err=error("Fehler beim auslesen der Adressen:<br />". mysqli_error($dbconn));
while($res=mysqli_fetch_assoc($qry))
{
$adressen[] = $res;
}
$smarty->assign("adressen",$adressen);
$tmp=array();
$qry = mysqli_query($dbconn,"SELECT typ, id FROM rechtyp");
while($res=mysqli_fetch_assoc($qry))
{
$tmp[] = $res;
}
$smarty->assign("rechtypen",$tmp);
$_SESSION["camefrom"] ="liefershow&id=".$_GET["id"];
}
}
partnerShowDaten($dbconn, $smarty, parameterGanzzahl("id"), 2);
$_SESSION["camefrom"] = "liefershow&id=".parameterGanzzahl("id");
$smarty->display("liefershow.tpl"); $smarty->display("liefershow.tpl");
?> ?>
+3 -3
View File
@@ -3,8 +3,8 @@
<fieldset class="big"> <fieldset class="big">
<legend>Neue Adresse:</legend> <legend>Neue Adresse:</legend>
<div class='centersrc'> <div class='centersrc'>
{html_options name=adrsrc_field onChange="ajax_searchadress({$rechid|escape},'changeadr',0)" id=adrsrc_field options=$felder selected=$selfeld class='searchform' title='Bitte wählen Sie die Spalte, die durchsucht werden soll.' onchange='#'} {html_options name=adrsrc_field onChange="ajax_searchadress(0,{$rechid|intval},'changeadr')" id=adrsrc_field options=$felder selected=$selfeld class='searchform' title='Bitte wählen Sie die Spalte, die durchsucht werden soll.' onchange='#'}
<input name='adrsrc_src' id='adrsrc_src' value='' class='searchform' onKeyUp="ajax_searchadress({$rechid|escape},'changeadr',0)" title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' /> <input name='adrsrc_src' id='adrsrc_src' value='' class='searchform' onKeyUp="ajax_searchadress(0,{$rechid|intval},'changeadr')" title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' />
<br /> <br />
</div> </div>
@@ -14,4 +14,4 @@
</fieldset> </fieldset>
</form> </form>
<script language='javascript'>ajax_searchadress({$rechid|escape},'changeadr',0);</script> <script language='javascript'>ajax_searchadress(0,{$rechid|intval},'changeadr');</script>
+3 -3
View File
@@ -3,8 +3,8 @@
<fieldset class="big"> <fieldset class="big">
<legend>Neue Adresse:</legend> <legend>Neue Adresse:</legend>
<div class='centersrc'> <div class='centersrc'>
{html_options name=adrsrc_field onChange='ajax_searchadress({$rechid|escape},\'copy\',0)' id=adrsrc_field options=$felder selected=$selfeld class='searchform' title='Bitte wählen Sie die Spalte, die durchsucht werden soll.' onchange='#'} {html_options name=adrsrc_field onChange="ajax_searchadress(0,{$rechid|intval},'copy')" id=adrsrc_field options=$felder selected=$selfeld class='searchform' title='Bitte wählen Sie die Spalte, die durchsucht werden soll.' onchange='#'}
<input name='adrsrc_src' id='adrsrc_src' value='' class='searchform' onKeyUp='ajax_searchadress({$rechid|escape},'copy',0)' title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' /> <input name='adrsrc_src' id='adrsrc_src' value='' class='searchform' onKeyUp="ajax_searchadress(0,{$rechid|intval},'copy')" title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' />
<br /> <br />
</div> </div>
@@ -14,4 +14,4 @@
</fieldset> </fieldset>
</form> </form>
<script language='javascript'>ajax_searchadress({$rechid|escape},'copy',0);</script> <script language='javascript'>ajax_searchadress(0,{$rechid|intval},'copy');</script>
+2 -2
View File
@@ -5,7 +5,7 @@
<a href='?action=kundenadd'><span class='addcenter' title="Neuer Kunde"></span></a><br /> <a href='?action=kundenadd'><span class='addcenter' title="Neuer Kunde"></span></a><br />
<div class='centersrc'> <div class='centersrc'>
{html_options name=kdnsrc_field onChange='ajax_searchkunden(0)' id=kdnsrc_field options=$felder selected=$selfeld class='searchform' title='Bitte wählen Sie die Spalte, die durchsucht werden soll.' onchange='#'} {html_options name=kdnsrc_field onChange='ajax_searchkunden(0)' id=kdnsrc_field options=$felder selected=$selfeld class='searchform' title='Bitte wählen Sie die Spalte, die durchsucht werden soll.' onchange='#'}
<input name='kdnsrc_src' id='kdnsrc_src' value='{$search}' class='searchform' onKeyUp='ajax_searchkunden(0)' autofocus='autofocus' title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' /> <input name='kdnsrc_src' id='kdnsrc_src' value='{$search|escape}' class='searchform' onKeyUp='ajax_searchkunden(0)' autofocus='autofocus' title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' />
<br /> <br />
</div> </div>
@@ -15,7 +15,7 @@
</fieldset> </fieldset>
</form> </form>
<script language='javascript'>ajax_searchkunden({$page});</script> <script language='javascript'>ajax_searchkunden({$page|intval});</script>
<div id="question"> <div id="question">
</div> </div>
+13 -10
View File
@@ -42,9 +42,9 @@
{/if} {/if}
{if $adresse.gebdat != "01.01.2100" && $adresse.gebdat != "00.00.0000"} {if $adresse.gebdat != "01.01.2100" && $adresse.gebdat != "00.00.0000"}
{if $adresse.gebdat|substr:6:4 != "2099"} {if $adresse.gebdat|substr:6:4 != "2099"}
(Geburtstag: {$adresse.gebdat})<br /> (Geburtstag: {$adresse.gebdat|escape})<br />
{else} {else}
(Geburtstag: {$adresse.gebdat|substr:0:5})<br /> (Geburtstag: {$adresse.gebdat|escape|substr:0:5})<br />
{/if} {/if}
{/if} {/if}
{/if} {/if}
@@ -56,9 +56,9 @@
{/if} {/if}
{if $adresse.gebdat2 != "01.01.2100" && $adresse.gebdat2 != "00.00.0000"} {if $adresse.gebdat2 != "01.01.2100" && $adresse.gebdat2 != "00.00.0000"}
{if $adresse.gebdat2|substr:6:4 != "2099"} {if $adresse.gebdat2|substr:6:4 != "2099"}
(Geburtstag: {$adresse.gebdat2})<br /> (Geburtstag: {$adresse.gebdat2|escape})<br />
{else} {else}
(Geburtstag: {$adresse.gebdat2|substr:0:5})<br /> (Geburtstag: {$adresse.gebdat2|escape|substr:0:5})<br />
{/if} {/if}
{/if} {/if}
{/if} {/if}
@@ -71,6 +71,9 @@
{$adresse.plz|escape|default:""} {$adresse.ort|escape|default:""} {$adresse.ortsteil|escape|default:""}<br /> {$adresse.plz|escape|default:""} {$adresse.ort|escape|default:""} {$adresse.ortsteil|escape|default:""}<br />
<span>{$adresse.land|escape|default:""}</span> <span>{$adresse.land|escape|default:""}</span>
{if $adresse.nr}
Telefon: {if $adresse.vwahl}{$adresse.vwahl|escape} / {/if}{$adresse.nr|escape}<br />
{/if}
</p> </p>
<p> <p>
@@ -78,7 +81,7 @@
{if $adresse.typ_id != 1} {if $adresse.typ_id != 1}
<span class='del' title="Adresse löschen" onClick='askdel("Möchten Sie diese Adresse<br /><b>UND ALLE ZUGEHÖRIGEN RECHNUNGEN</b><br />wirklich unwiederruflich löschen?","?action=kundenchange&do=adress&adressid={$adresse.id}&del=1")'></span> <span class='del' title="Adresse löschen" onClick='askdel("Möchten Sie diese Adresse<br /><b>UND ALLE ZUGEHÖRIGEN RECHNUNGEN</b><br />wirklich unwiederruflich löschen?","?action=kundenchange&do=adress&adressid={$adresse.id}&del=1")'></span>
{/if} {/if}
<a href="http://maps.google.com?q={$adresse.plz}+{$adresse.ort}+{$adresse.str}+{$adresse.hnr}" class="noloading" target="_blank"><span class='map' title="Auf Karte zeigen"></span></a> <a href="http://maps.google.com?q={$adresse.plz|escape:'url'}+{$adresse.ort|escape:'url'}+{$adresse.str|escape:'url'}+{$adresse.hnr|escape:'url'}" rel="noopener" class="noloading" target="_blank"><span class='map' title="Auf Karte zeigen"></span></a>
<a href='?action=terminadd&adressid={$adresse.id}'><span class='termadd' title="Termin anlegen"></span></a><br /> <a href='?action=terminadd&adressid={$adresse.id}'><span class='termadd' title="Termin anlegen"></span></a><br />
<a href='?action=rechnungadd&type=1&adressid={$adresse.id}'><span class='rechnadd' title="Rechnung anlegen"></span></a> <a href='?action=rechnungadd&type=1&adressid={$adresse.id}'><span class='rechnadd' title="Rechnung anlegen"></span></a>
@@ -177,13 +180,13 @@
{/if} {/if}
{$i=$i+1} {$i=$i+1}
{strip} {strip}
<fieldset class='note' style="background-color: {$note.color|default:'#fff'};"> <fieldset class='note' style="background-color: {$note.color|default:'#fff'|escape};">
<legend>{$note.datetime|date_format:"%a, %d.%m.%Y <br /> %R Uhr"}</legend> <legend>{$note.datetime|date_format:"%a, %d.%m.%Y <br /> %R Uhr"}</legend>
{$note.notiz|nl2br|default:""}<br /> {$note.notiz|default:""|escape|nl2br}<br />
<p> <p>
{if $note.id} {if $note.id}
{if $note.file} {if $note.file}
<a href='{$note.file}' target="_Blank" class='noloading'><span class='file' title="Angehängte Datei anzeigen"></span></a> <a href='{$note.file|escape}' target="_Blank" class='noloading'><span class='file' title="Angehängte Datei anzeigen"></span></a>
{/if} {/if}
<a href='?action=kundenchange&do=notiz&notizid={$note.id}'><span class='edit' title="Notiz ändern"></span></a> <a href='?action=kundenchange&do=notiz&notizid={$note.id}'><span class='edit' title="Notiz ändern"></span></a>
<span class='del' id='del' title="Notiz löschen" onClick='askdel("Möchten Sie diese Notiz wirklich unwiederruflich löschen?","?action=kundenchange&do=notiz&notizid={$note.id}&del=1")'></span> <span class='del' id='del' title="Notiz löschen" onClick='askdel("Möchten Sie diese Notiz wirklich unwiederruflich löschen?","?action=kundenchange&do=notiz&notizid={$note.id}&del=1")'></span>
@@ -211,7 +214,7 @@
{$i=$i+1} {$i=$i+1}
{strip} {strip}
<fieldset class='small'> <fieldset class='small'>
<legend>{$kto.bank} <br />{$kto.blz|chunk_split:3:" "}</legend> <legend>{$kto.bank|escape} <br />{$kto.blz|escape|chunk_split:3:" "}</legend>
Konto Nr.: {$kto.ktonr|escape|chunk_split:3:" "}<br /> Konto Nr.: {$kto.ktonr|escape|chunk_split:3:" "}<br />
Inhaber: {$kto.inhaber|escape}<br /> Inhaber: {$kto.inhaber|escape}<br />
{if $kto.iban} {if $kto.iban}
@@ -234,7 +237,7 @@
<div id="tabs"> <div id="tabs">
<ul> <ul>
{foreach $rechtypen as $rechtyp} {foreach $rechtypen as $rechtyp}
<li><a href="#tabs-{$rechtyp.id}" class='noloading' onClick='ajax_searchkdnrech(0,0,{$rechtyp.id},{$kunde.id})'>{$rechtyp.typ}</a></li> <li><a href="#tabs-{$rechtyp.id}" class='noloading' onClick='ajax_searchkdnrech(0,0,{$rechtyp.id},{$kunde.id})'>{$rechtyp.typ|escape}</a></li>
{/foreach} {/foreach}
</ul> </ul>
{foreach $rechtypen as $rechtyp} {foreach $rechtypen as $rechtyp}
+9 -6
View File
@@ -43,13 +43,16 @@
{$adresse.plz|escape|default:""} {$adresse.ort|escape|default:""} {$adresse.ortsteil|escape|default:""}<br /> {$adresse.plz|escape|default:""} {$adresse.ort|escape|default:""} {$adresse.ortsteil|escape|default:""}<br />
<span>{$adresse.land|escape|default:""}</span> <span>{$adresse.land|escape|default:""}</span>
{if $adresse.nr}
Telefon: {if $adresse.vwahl}{$adresse.vwahl|escape} / {/if}{$adresse.nr|escape}<br />
{/if}
</p> </p>
<p> <p>
<a href='?action=lieferchange&do=adress&adressid={$adresse.id}&kunde={$kunde.id}'><span class='edit' title="Adresse ändern"></span></a> <a href='?action=lieferchange&do=adress&adressid={$adresse.id}&kunde={$kunde.id}'><span class='edit' title="Adresse ändern"></span></a>
{if $adresse.typ_id != 1} {if $adresse.typ_id != 1}
<span class='del' id='del' title="Adresse löschen" onClick='askdel("Möchten Sie diese Adresse wirklich unwiederruflich löschen?","?action=lieferchange&do=adress&adressid={$adresse.id}&del=1")'></span> <span class='del' id='del' title="Adresse löschen" onClick='askdel("Möchten Sie diese Adresse wirklich unwiederruflich löschen?","?action=lieferchange&do=adress&adressid={$adresse.id}&del=1")'></span>
{/if} {/if}
<a href="http://maps.google.com?q={$adresse.plz}+{$adresse.ort}+{$adresse.str}+{$adresse.hnr}" class="noloading" target="_blank"><span class='map' title="Auf Karte zeigen"></span></a> <a href="http://maps.google.com?q={$adresse.plz|escape:'url'}+{$adresse.ort|escape:'url'}+{$adresse.str|escape:'url'}+{$adresse.hnr|escape:'url'}" rel="noopener" class="noloading" target="_blank"><span class='map' title="Auf Karte zeigen"></span></a>
</p> </p>
</fieldset> </fieldset>
{/strip} {/strip}
@@ -116,7 +119,7 @@
<a href='?action=lieferchange&kunde={$kunde.id}&do=notiz'><span class='add' title="Neue Notiz"></span></a> <a href='?action=lieferchange&kunde={$kunde.id}&do=notiz'><span class='add' title="Neue Notiz"></span></a>
{foreach $notes as $note} {foreach $notes as $note}
{strip} {strip}
<fieldset class='note' style="background-color: {$note.color|default:'#fff'};"> <fieldset class='note' style="background-color: {$note.color|default:'#fff'|escape};">
<legend>{$note.datetime|date_format:"%a, %d.%m.%Y <br /> %R Uhr"}</legend> <legend>{$note.datetime|date_format:"%a, %d.%m.%Y <br /> %R Uhr"}</legend>
{$note.notiz|escape|default:""}<br /> {$note.notiz|escape|default:""}<br />
<p> <p>
@@ -134,7 +137,7 @@
{foreach $kontos as $kto} {foreach $kontos as $kto}
{strip} {strip}
<fieldset class='small'> <fieldset class='small'>
<legend>{$kto.bank} <br />{$kto.blz|chunk_split:3:" "}</legend> <legend>{$kto.bank|escape} <br />{$kto.blz|escape|chunk_split:3:" "}</legend>
Konto Nr.: {$kto.ktonr|escape|chunk_split:3:" "}<br /> Konto Nr.: {$kto.ktonr|escape|chunk_split:3:" "}<br />
Inhaber: {$kto.inhaber|escape}<br /> Inhaber: {$kto.inhaber|escape}<br />
{if $kto.iban} {if $kto.iban}
@@ -158,14 +161,14 @@
<div id="tabs"> <div id="tabs">
<ul> <ul>
{foreach $rechtypen as $rechtyp} {foreach $rechtypen as $rechtyp}
<li><a href="#tabs-{$rechtyp.id}" class='noloading' onClick='ajax_searchkdnrech(0,{$rechtyp.id},{$kunde.id})'>{$rechtyp.typ}</a></li> <li><a href="#tabs-{$rechtyp.id}" class='noloading' onClick='ajax_searchkdnrech(0,0,{$rechtyp.id},{$kunde.id})'>{$rechtyp.typ|escape}</a></li>
{/foreach} {/foreach}
</ul> </ul>
{foreach $rechtypen as $rechtyp} {foreach $rechtypen as $rechtyp}
<div id="tabs-{$rechtyp.id}"> <div id="tabs-{$rechtyp.id}">
<div class='centersrc'> <div class='centersrc'>
<input name='kdnsrc_src' id='src_rech-{$rechtyp.id}' value='' class='searchform' onKeyUp='ajax_searchkdnrech(0,{$rechtyp.id},{$kunde.id})' title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' /> <input name='kdnsrc_src' id='src_rech-{$rechtyp.id}' value='' class='searchform' onKeyUp='ajax_searchkdnrech(0,0,{$rechtyp.id},{$kunde.id})' title='Geben Sie hier das Suchmuster ein <br />% ist ein Platzhalter für eine beliebige Anzahl Zeichen<br />_ ist der Platzhalter für ein einziges Zeichen.' />
<br /> <br />
</div> </div>
<div id='rechlist-{$rechtyp.id}'> <div id='rechlist-{$rechtyp.id}'>
@@ -181,7 +184,7 @@
$(function() { $(function() {
$( "#tabs" ).tabs(); $( "#tabs" ).tabs();
}); });
ajax_searchkdnrech(0,1,{$kunde.id}); ajax_searchkdnrech(0,0,1,{$kunde.id});
</script> </script>
<div id="question"> <div id="question">
+1 -1
View File
@@ -2,7 +2,7 @@
{include file="heading.tpl" heading=$head} {include file="heading.tpl" heading=$head}
<div class="widthlimiter"> <div class="widthlimiter">
<form action="?action={$frmact}&do=adress&kunde={$kunde|escape}&formsent=1&adressid={$adressid}" name="mainform" method='POST'> <form action="?action={$frmact}&do=adress&kunde={$kunde|escape}&formsent=1&adressid={$adressid|intval}" name="mainform" method='POST'>
<fieldset> <fieldset>
<label>Adresstyp:</label><select name="typ" id="typ" > <label>Adresstyp:</label><select name="typ" id="typ" >
+1 -1
View File
@@ -2,7 +2,7 @@
{include file="heading.tpl" heading=$head} {include file="heading.tpl" heading=$head}
<div class="widthlimiter"> <div class="widthlimiter">
<form action="?action={$frmact}&do=kontakt&kunde={$kunde|escape}&formsent=1&kontaktid={$kontaktid}" method='POST'> <form action="?action={$frmact}&do=kontakt&kunde={$kunde|escape}&formsent=1&kontaktid={$kontaktid|intval}" method='POST'>
<fieldset> <fieldset>
<label>Typ:</label><select name="typ" id="typ" > <label>Typ:</label><select name="typ" id="typ" >
{html_options values=$typids output=$typs selected="{$typ}"} {html_options values=$typids output=$typs selected="{$typ}"}
+1 -1
View File
@@ -2,7 +2,7 @@
{include file="heading.tpl" heading=$head} {include file="heading.tpl" heading=$head}
<div class="widthlimiter"> <div class="widthlimiter">
<form action="?action={$frmact}&do=konto&kunde={$kunde|escape}&formsent=1&kontoid={$kontoid}" method='POST'> <form action="?action={$frmact}&do=konto&kunde={$kunde|escape}&formsent=1&kontoid={$kontoid|intval}" method='POST'>
<fieldset> <fieldset>
<label>Bank:</label><input name='bank' id='bank' value="{$bank|escape}" pattern="[^0-9]*" /><br /> <label>Bank:</label><input name='bank' id='bank' value="{$bank|escape}" pattern="[^0-9]*" /><br />
+3 -3
View File
@@ -2,16 +2,16 @@
{include file="heading.tpl" heading=$head} {include file="heading.tpl" heading=$head}
<div class="widthlimiter"> <div class="widthlimiter">
<form action="?action={$frmact}&do=notiz&kunde={$kunde|escape}&formsent=1&notizid={$notizid}" method='POST' enctype="multipart/form-data"> <form action="?action={$frmact}&do=notiz&kunde={$kunde|escape}&formsent=1&notizid={$notizid|intval}" method='POST' enctype="multipart/form-data">
<fieldset class='colorchooser'> <fieldset class='colorchooser'>
<legend>Farbe:</legend> <legend>Farbe:</legend>
{html_radios name='color' options=$colors selected={$color|default:'#fff'} separator='&nbsp;' escape=0 labels=1} {html_radios name='color' options=$colors selected={$color|default:'#fff'|escape} separator='&nbsp;' escape=0 labels=1}
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>Notiz:</legend> <legend>Notiz:</legend>
<textarea name='notiz' id='notiz' class='bigtextarea'>{$notiz}</textarea><br /> <textarea name='notiz' id='notiz' class='bigtextarea'>{$notiz|escape}</textarea><br />
<label>Dateianhang zu dieser Notiz: </label><input type="file" id='notefile' name='notefile' /><br /> <label>Dateianhang zu dieser Notiz: </label><input type="file" id='notefile' name='notefile' /><br />
<button type="button" class='spell' onclick="$('textarea:not(#personalnotes,#globalnotes),input:not([type=radio])').spellCheckInDialog()">Rechtschreibung prüfen</button><br /> <button type="button" class='spell' onclick="$('textarea:not(#personalnotes,#globalnotes),input:not([type=radio])').spellCheckInDialog()">Rechtschreibung prüfen</button><br />
</fieldset> </fieldset>
+1 -1
View File
@@ -2,7 +2,7 @@
{include file="heading.tpl" heading=$head} {include file="heading.tpl" heading=$head}
<div class="widthlimiter"> <div class="widthlimiter">
<form action="?action={$frmact}&do=tel&kunde={$kunde|escape}&formsent=1&telid={$telid}" method='POST'> <form action="?action={$frmact}&do=tel&kunde={$kunde|escape}&formsent=1&telid={$telid|intval}" method='POST'>
<fieldset> <fieldset>
<label>Typ:</label><select name="typ" id="typ" > <label>Typ:</label><select name="typ" id="typ" >
{html_options values=$typids output=$typs selected="{$typ}"} {html_options values=$typids output=$typs selected="{$typ}"}