diff --git a/ajax/searchkdnrech.php b/ajax/searchkdnrech.php
index d976098..64b5897 100644
--- a/ajax/searchkdnrech.php
+++ b/ajax/searchkdnrech.php
@@ -16,7 +16,8 @@ if(!isset($err))
if(!isset($_GET["link"])){
$_GET["link"] ="";
}
- $fulltag = utf8_encode($_GET["search"]);
+ // kommt per encodeURIComponent bereits als UTF-8
+ $fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
$src = explode(" ",$fulltag);
$combiner = $_GET["link"];
if($combiner != "AND" && $combiner != "OR")
@@ -87,14 +88,14 @@ if(!isset($err))
if($res["storno"] == 1){
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- $res["artikel"],
+ artikelListeHtml($res["artikel"]),
$actions
);
}
else{
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- $res["artikel"],
+ artikelListeHtml($res["artikel"]),
$actions
);
}
@@ -151,7 +152,7 @@ if(!isset($err))
{
$speciallines[] = array("".$res["rechnr"]."",
$res["date"],
- $res["artikel"],
+ artikelListeHtml($res["artikel"]),
"");
}
$headings = array("Nummer","Datum","Artikel","Aktion");
diff --git a/ajax/searchrech.php b/ajax/searchrech.php
index 91abca1..5b8b938 100644
--- a/ajax/searchrech.php
+++ b/ajax/searchrech.php
@@ -22,7 +22,8 @@ if(!isset($err))
if(!isset($_GET["kdnid"])){
$_GET["kdnid"]="";
}
- $fulltag = utf8_encode($_GET["search"]);
+ // kommt per encodeURIComponent bereits als UTF-8
+ $fulltag = isset($_GET["search"]) && is_string($_GET["search"]) ? $_GET["search"] : "";
$src = explode(" ",$fulltag);
$combiner = $_GET["link"];
if($combiner != "AND" && $combiner != "OR")
@@ -82,14 +83,14 @@ if(!isset($err))
if($res["storno"] == 1){
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- $res["artikel"],
+ artikelListeHtml($res["artikel"]),
$actions
);
}
else{
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- $res["artikel"],
+ artikelListeHtml($res["artikel"]),
$actions
);
}
@@ -142,7 +143,7 @@ if(!isset($err))
{
$speciallines[] = array("".$res["rechnr"]."",
$res["date"],
- $res["artikel"],
+ artikelListeHtml($res["artikel"]),
"");
}
$headings = array("Nummer","Datum","Artikel","Aktion");
diff --git a/incs/listfuncs.php b/incs/listfuncs.php
index 7cc7ce5..30d2fe7 100644
--- a/incs/listfuncs.php
+++ b/incs/listfuncs.php
@@ -195,7 +195,7 @@ function createKdnRechQry($page,$pagesize,$src,$combiner,$id,$typ,$sks=0)
$query = "SELECT rechnung.$docnr AS rechnr,
rechnung.id,
DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date,
- GROUP_CONCAT(CONCAT(artikel.bezeichn, ' (', artikel_rechn.wanr, ')') SEPARATOR '
') AS artikel,
+ GROUP_CONCAT(CONCAT(artikel.bezeichn, ' (', artikel_rechn.wanr, ')') SEPARATOR '\n') AS artikel,
adresse_id,
storno,
rechnung.typ_id
@@ -216,7 +216,7 @@ function createKdnRechQry($page,$pagesize,$src,$combiner,$id,$typ,$sks=0)
$query = "SELECT rechnung.$docnr AS rechnr,
rechnung.id,
DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date,
- GROUP_CONCAT(CONCAT(artikelsks.bezeichn1, ' ', artikelsks.bezeichn2) SEPARATOR '
') AS artikel,
+ GROUP_CONCAT(CONCAT(artikelsks.bezeichn1, ' ', artikelsks.bezeichn2) SEPARATOR '\n') AS artikel,
adresse_id,
rechnung.typ_id
FROM rechnung
@@ -304,7 +304,7 @@ function createRechQry($page,$pagesize,$src,$combiner,$sks=0)
rechnung.$docnr AS rechnr,
rechnung.id,
DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date,
- GROUP_CONCAT(CONCAT(artikel.bezeichn, ' (', artikel_rechn.wanr, ')') SEPARATOR '
') AS artikel,
+ GROUP_CONCAT(CONCAT(artikel.bezeichn, ' (', artikel_rechn.wanr, ')') SEPARATOR '\n') AS artikel,
adresse_id,
storno,
rechnung.typ_id
@@ -328,7 +328,7 @@ function createRechQry($page,$pagesize,$src,$combiner,$sks=0)
rechnung.$docnr AS rechnr,
rechnung.id,
DATE_FORMAT(rechnung.datetime, '%d.%m.%Y') AS date,
- GROUP_CONCAT(CONCAT(artikelsks.bezeichn1, ' ', artikelsks.bezeichn2) SEPARATOR '
') AS artikel,
+ GROUP_CONCAT(CONCAT(artikelsks.bezeichn1, ' ', artikelsks.bezeichn2) SEPARATOR '\n') AS artikel,
adresse_id,
storno = 0,
rechnung.typ_id
@@ -461,6 +461,12 @@ function createMsgQry($page,$pagesize,$src,$combiner,$user)
return $ret;
}
+/* Artikelliste aus createRechQry()/createKdnRechQry() als escaptes HTML, eine Zeile je Artikel */
+function artikelListeHtml($artikel)
+{
+ return implode("
", array_map("htmlspecialchars", explode("\n", (string)$artikel)));
+}
+
function displayPages($pagesize,$currpage,$numentries,$refreshfunc,$ad_params = "")
{
echo "Seite: ";
diff --git a/incs/rechnung.php b/incs/rechnung.php
index 4a32ea9..9dcebc8 100644
--- a/incs/rechnung.php
+++ b/incs/rechnung.php
@@ -12,12 +12,17 @@ function formularText($name)
}
/*
- * Zahl aus $_POST, Komma als Dezimaltrenner. Leere oder ungültige Eingaben
- * werden 0 - so hat sie der frühere, nicht strikte Modus gespeichert.
+ * Zahl aus $_POST in deutscher Schreibweise. Steht ein Komma darin, ist es
+ * der Dezimaltrenner und Punkte sind Tausendertrenner ("1.234,50"). Ohne
+ * Komma gilt ein Punkt als Dezimaltrenner ("12.50", so liefert ihn die
+ * Artikel-Autovervollständigung). Leere oder ungültige Eingaben werden 0 -
+ * so hat sie der frühere, nicht strikte Modus gespeichert.
*/
function formularZahl($name)
{
- $wert = str_replace(",", ".", formularText($name));
+ $wert = str_replace(" ", "", formularText($name));
+ if(str_contains($wert, ","))
+ $wert = str_replace(array(".", ","), array("", "."), $wert);
return is_numeric($wert) ? $wert : "0";
}
diff --git a/js/ajaxlists.js b/js/ajaxlists.js
index c6bef86..cc5826a 100644
--- a/js/ajaxlists.js
+++ b/js/ajaxlists.js
@@ -146,7 +146,7 @@ function ajax_searchkdnrech(page,skspage,typ,kdnid)
search_in_progress = 1;
document.getElementById("rechlist-"+typ).innerHTML = "

