Subversion Repositories public

Compare Revisions

Ignore whitespace Rev 3 → Rev 4

/pm/trunk/kunden.php
0,0 → 1,1361
<?
require_once('version.inc');
require_once('dbaccess.inc');
require_once('language.inc');
require_once('header.inc');
require_once('settings.inc');
require_once('crypt.inc');
require_once('helper.inc');
 
if (isset($_REQUEST['kunde'])) { $knopf = 43; $headline = 34; }
if (isset($_REQUEST['kgroup'])) { $knopf = 48; $headline = 39; }
/*
0: Verwalter
1: Administrator
2: Projektleiter
3: Mitarbeiter
4: Kontroller
5: Kein Zugang!
6: Ressourcenmanager
7: Revisor
*/
$drm = array(true, false, true, true, false, true, true, true);
 
require_once('menu.inc');
 
# Erzeugt eine Liste aller Kunden in der Datenbank. Der Anwender kann mittels
# einiger Buttons neue Eintraege hinzufuegen, bestehende aendern, oder
# loeschen.
function ListKunde() {
global $headline;
global $menu;
global $rstufe;
global $fixkunde;
 
# Zunaechst pruefen wir, ob der Anwender ueberhaupt dazu berechtigt
# ist.
if ($rstufe != 1 && $rstufe != 4) {
Error("Berechtigungsfehler!\n");
return;
}
 
$nav = "menu=$menu&headline=$headline";
echo "<form name=\"ekunde\" action=\"kunden.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"headline\" value=\"$headline\">\n";
echo "<input type=\"hidden\" name=\"menu\" value=\"$menu\">\n";
echo "<input type=\"hidden\" name=\"func\" value=\"new\">\n";
echo "<table class=\"indent\"><tr><td>\n";
Button("Neuer Kunde", "ekunde");
echo "</td></tr></table>\n";
 
$db = OpenDB();
$query = "select count(*) from kunde";
$result = QueryDB($db, $query);
$data = fetchDB($result, 0);
 
if ($data[0] > 0) {
echo "<table class=\"sel\">\n";
echo "<tr><th class=\"sel\">Aktion</th><th class=\"sel\">Firma</th>";
echo "<th class=\"sel\">Name</th><th class=\"sel\">Kostenstelle</th>";
 
if ($fixkunde)
echo "<th class=\"sel\">Anteil</th><th class=\"sel\">G&uuml;ltig ab</th>";
 
echo "</tr>\n";
 
$query = "select ku_num, ku_firma, ku_nname, ku_vname, ku_costloc,";
$query .= "kc_costloc from kunde left join key_costloc on kc_num = ku_costloc ";
$query .= "order by ku_firma, ku_nname, ku_vname";
$result = QueryDB($db, $query);
$numrows = numrowsDB($result);
$row = 0;
$anz = 0;
 
while ($row < $numrows) {
$data = fetchDB($result, $row);
$ku_num = $data[0];
$ku_firma = $data[1];
$ku_nname = $data[2];
$ku_vname = $data[3];
$ku_costloc = $data[4];
$kc_costloc = $data[5];
 
# Pruefen, ob der Kunde bereits einer Gruppe zugeordnet
# wurde.
$query = "select count(*) from kgsammel where ks_kunum = $ku_num";
 
if (!($reskg = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$data = fetchDB($reskg, 0);
$anz = $data[0];
 
if ($fixkunde) {
$dtdb = GetDBDateFormat();
$query = "select fx_proz, to_char(fx_valid_from, '$dtdb') ";
$query .= "from fixanteil where fx_valid_to is NULL ";
$query .= "and fx_kunum = $ku_num";
 
if (!($resfx = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
if (numrowsDB($resfx) > 0) {
$data = fetchDB($resfx, 0);
$fx_proz = $data[0];
$fx_valid_from = $data[1];
} else {
$fx_proz = 0.0;
$fx_valid_from = "&nbsp;";
}
}
 
echo "<tr><td class=\"selakt\"><a href=\"#\" onClick=\"javascript:MoveTo('kunden.php','func=edit&ku_num=$ku_num&$nav')\"><img src=\"image/edit.png\" border=0 alt=\"Edit\"></a>";
 
if ($anz <= 0)
echo "<a href=\"#\" onClick=\"javascript:MoveTo('kunden.php','func=del&ku_num=$ku_num&$nav')\"><img src=\"image/editdelete.png\" border=0 alt=\"Loeschen\"></a>";
 
echo "</td>\n";
echo "<td class=\"sel\">$ku_firma</td>\n";
echo "<td class=\"sel\">$ku_nname $ku_vname</td>\n";
 
if (isset($ku_costloc) || isset($kc_costloc))
echo "<td class=\"sel\">$ku_costloc: $kc_costloc</td>\n";
else
echo "<td class=\"sel\">&nbsp;</td>\n";
 
if ($fixkunde) {
echo "<td class=\"selnum\">" . FormatNum($fx_proz, 3) . "</td>\n";
echo "<td class=\"sel\">$fx_valid_from</td>\n";
}
 
echo "</tr>\n";
$row++;
}
 
echo "</table>\n";
echo "<table class=\"indent\"><tr><td>\n";
Button("Neuer Kunde", "ekunde");
echo "</td></tr></table>\n";
}
 
echo "</form>\n";
closeDB($db);
}
 
# Die folgende Funktion stellt eine Maske zum Editieren eines einzelnen
# Kunden bereit. Die Funktion kann mit neuen Eintraegen als auch mit
# bestehenden Eintraegen umgehen.
#
function EditKunde() {
global $headline;
global $menu;
global $fixkunde;
global $VisualDate;
global $dtformatshort;
 
$ku_num = $_REQUEST['ku_num'];
$db = OpenDB();
$art = 0; // 0 = neu, 1 = edit, 2 = ausbessern
 
if (isset($ku_num) && $ku_num > 0) {
$art = 1;
$query = "select ku_firma, ku_anrede, ka_anrede, ku_nname, ku_vname, ";
$query .= "ku_strasse, ku_hnum, ku_ort, ku_plz, ku_costloc, ";
$query .= "kc_costloc from kunde ";
$query .= "left join key_anrede on ka_num = ku_anrede ";
$query .= "left join key_costloc on kc_num = ku_costloc ";
$query .= "where ku_num = $ku_num";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$ku_firma = $data[0];
$ku_anrede = $data[1];
$ka_anrede = $data[2];
$ku_nname = $data[3];
$ku_vname = $data[4];
$ku_strasse = $data[5];
$ku_hnum = $data[6];
$ku_ort = $data[7];
$ku_plz = $data[8];
$ku_costloc = $data[9];
$kc_costloc = $data[10];
 
# Aktuellen Prozentsatz der Beteiligung ermitteln.
if ($fixkunde) {
$dtdb = GetDBDateFormat();
$query = "select fx_num, fx_proz, to_char(fx_valid_from, '$dtdb') from fixanteil where ";
$query .= "fx_valid_to is NULL and fx_kunum = $ku_num order by fx_valid_from desc";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
if (numrowsDB($result) > 0) {
$data = fetchDB($result, 0);
$fx_num = $data[0];
$fx_proz = $data[1];
$fx_valid_from = $data[2];
} else {
$fx_num = 0;
$fx_proz = 0.0;
$fx_valid_from = date($dtformatshort);
}
}
} else {
$ku_num = $_REQUEST['ku_num'];
 
if (isset($ku_num) && $ku_num > 0)
$art = 2;
else
$art = 0;
 
$ku_firma = $_REQUEST['ku_firma'];
$ku_anrede = $_REQUEST['ku_anrede'];
$ku_nname = $_REQUEST['ku_nname'];
$ku_vname = $_REQUEST['ku_vname'];
$ku_strasse = $_REQUEST['ku_strasse'];
$ku_hnum = $_REQUEST['ku_hnum'];
$ku_ort = $_REQUEST['ku_ort'];
$ku_plz = $_REQUEST['ku_plz'];
$ku_costloc = $_REQUEST['ku_costloc'];
 
if ($fixkunde) {
$fx_num = $_REQUEST['fx_num'];
$fx_proz = $_REQUEST['fx_proz'];
$fx_valid_from = $_REQUEST['fx_valid_from'];
}
}
 
$nav = "menu=$menu&headline=$headline";
?>
<form name="kedit" action="kunden.php" method="post">
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
<input type="hidden" name="headline" value="<? echo "$headline"; ?>">
<input type="hidden" name="ku_num" value="<? echo "$ku_num"; ?>">
<input type="hidden" name="fx_num" value="<? echo "$fx_num"; ?>">
<input type="hidden" name="func" value="SaveKunde">
<table class="input">
<tr>
<th class="sel" colspan=2>
<?
switch($art) {
case 0: echo "Neuerfassung eines Kunden"; break;
case 1: echo "Editieren eines Kunden"; break;
case 2: echo "Korrektur eines Kunden"; break;
}
?>
</th>
</tr>
<tr>
<td>Firmenname:</td>
<td><input type="text" name="ku_firma" value="<? echo "$ku_firma"; ?>" size=40 maxlength=80></td>
</tr>
<tr>
<td>Anrede:</td>
<td><select name="ku_anrede">
<option value=""></option>
<?
$query = "select ka_num, ka_anrede from key_anrede order by ka_anrede";
 
if (!($reska = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$rows = numrowsDB($reska);
$j = 0;
 
while ($j < $rows) {
$data = fetchDB($reska, $j);
$ka_num = $data[0];
$ka_anrede = $data[1];
 
if (isset($ku_anrede) && $ku_anrede == $ka_num)
echo "<option value=\"$ka_num\" selected>$ka_anrede</option>\n";
else
echo "<option value=\"$ka_num\">$ka_anrede</option>\n";
 
$j++;
}
?>
</select>
</td>
</tr>
<tr>
<td>Nachname:</td>
<td><input type="text" name="ku_nname" value="<? echo "$ku_nname"; ?>" size=40 maxlength=60></td>
</tr>
<tr>
<td>Vorname:</td>
<td><input type="text" name="ku_vname" value="<? echo "$ku_vname"; ?>" size=40 maxlength=60></td>
</tr>
<tr>
<td>Stra&szlig;e</td>
<td><input type="text" name="ku_strasse" value="<? echo "$ku_strasse"; ?>" size=40 maxlength=60></td>
</tr>
<tr>
<td>Hausnummer:</td>
<td><input type="text" name="ku_hnum" value="<? echo "$ku_hnum"; ?>" size=10 maxlength=10></td>
</tr>
<tr>
<td>Postleitzahl / Ort:</td>
<td><table border=0 cellspacing=0 cellpadding=0>
<tr>
<td><input type="text" name="ku_plz" value="<? echo "$ku_plz"; ?>" size=16 maxlength=16></td>
<td><input type="text" name="ku_ort" value="<? echo "$ku_ort"; ?>" size=40 maxlength=60></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Kostenstelle:</td>
<td><select name="ku_costloc">
<option value=""></option>
<?
$query = "select kc_num, kc_costloc from key_costloc order by kc_costloc";
 
if (!($reskc = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$rows = numrowsDB($reskc);
$j = 0;
 
while ($j < $rows) {
$data = fetchDB($reskc, $j);
$kc_num = $data[0];
$kc_costloc = $data[1];
 
if (isset($ku_costloc) && $kc_num == $ku_costloc)
echo "<option value=\"$kc_num\" selected>$kc_num: $kc_costloc</option>\n";
else
echo "<option value=\"$kc_num\">$kc_num: $kc_costloc</option>\n";
 
$j++;
}
?>
</select>
</td>
</tr>
<?
if ($fixkunde) {
?>
<tr>
<td>Anteil in Prozent:</td>
<td><input type="text" class="inputmust" name="fx_proz" value="<? echo FormatNum($fx_proz, 2); ?>" size=6 maxlength=6 onChange="javascript:NumRange(this, 0.0, 100.0)">%</td>
</tr>
<tr>
<td>Anteil g&uuml;ltig ab (<? echo "$VisualDate"; ?>):</td>
<td><input type="text" class="inputmust" name="fx_valid_from" value="<? echo "$fx_valid_from"; ?>" size=10 maxlength=10 onChange="javascript:CheckDate(this, false)"></td>
</tr>
<?
}
?>
</table>
<table class="indent">
<tr><td>
<?
ButtonSubmit("Speichern", "kedit");
echo "</td></tr></table>\n";
return true;
}
 
# Folgende Funktion speichert einen zuvor neu erfassten, oder editierten
# Kunden in die Datenbank.
#
function SaveKunde() {
global $fixkunde;
 
$ku_num = $_REQUEST['ku_num'];
$ku_firma = $_REQUEST['ku_firma'];
$ku_anrede = $_REQUEST['ku_anrede'];
$ku_nname = $_REQUEST['ku_nname'];
$ku_vname = $_REQUEST['ku_vname'];
$ku_strasse = $_REQUEST['ku_strasse'];
$ku_hnum = $_REQUEST['ku_hnum'];
$ku_ort = $_REQUEST['ku_ort'];
$ku_plz = $_REQUEST['ku_plz'];
$ku_costloc = $_REQUEST['ku_costloc'];
 
if ($fixkunde) {
$fx_num = $_REQUEST['fx_num'];
$fx_proz = $_REQUEST['fx_proz'];
$fx_valid_from = $_REQUEST['fx_valid_from'];
 
if (strlen($fx_proz) > 0)
$fx_proz = str_replace(",", ".", $fx_proz);
}
 
$err = 0;
 
if (isset($ku_num) && $ku_num > 0)
$update = true;
else
$update = false;
 
if ((!isset($ku_nname) || !isset($ku_vname)) && !isset($ku_firma)) {
Error("Es muss ein Nachname und ein Vorname, oder ein Firmenname eingegeben werden!");
$err = 1;
}
 
if ((!strlen($ku_nname) || !strlen($ku_vname)) && !strlen($ku_firma)) {
Error("Es muss ein Nachname und ein Vorname, oder ein Firmenname eingegeben werden!");
$err = 1;
}
 
if ($err)
return false;
 
if (!isset($ku_anrede) || strlen($ku_anrede) == 0)
$ku_anrede = "NULL";
 
if (!isset($ku_costloc) || strlen($ku_costloc) == 0)
$ku_costloc = "NULL";
 
$db = OpenDB();
 
if ($update) {
if (!QueryDB($db, "begin")) {
closeDB($db);
return false;
}
 
$query = "update kunde set ku_firma = '$ku_firma', ";
$query .= "ku_anrede = $ku_anrede";
$query .= ", ku_vname = '$ku_vname', ";
$query .= "ku_nname = '$ku_nname', ku_strasse = '$ku_strasse', ";
$query .= "ku_hnum = '$ku_hnum', ku_ort = '$ku_ort', ";
$query .= "ku_plz = '$ku_plz' ";
$query .= ", ku_costloc = $ku_costloc ";
$query .= "where ku_num = $ku_num";
 
if (!QueryDB($db, $query)) {
closeDB($db);
return false;
}
 
if ($fixkunde && isset($fx_num) && $fx_num > 0) {
$query = "select fx_proz, to_char(fx_valid_from, 'YYYY-MM-DD') ";
$query .= "from fixanteil where fx_num = $fx_num";
 
if (!($result = QueryDB($db, $query))) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$fx_proz_old = $data[0];
$fx_valid_from_old = $data[1];
} else if ($fixkunde) {
$fx_proz_old = -1;
$fx_valid_from_old = "";
}
 
if ($fixkunde && ($fx_proz_old != $fx_proz || $fx_valid_from_old != DateToDBDate($fx_valid_from))) {
if ($fx_valid_from_old != DateToDBDate($fx_valid_from)) {
$query = "select co_fixanteil from counter";
 
if (!($result = QueryDB($db, $query))) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$co_fixanteil = $data[0] + 1;
 
$query = "insert into fixanteil (fx_num, fx_valid_from, fx_kunum,";
$query .= "fx_proz) values ($co_fixanteil, '". DateToDBDate($fx_valid_from) . "',";
$query .= "$ku_num, $fx_proz)";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
if (isset($fx_num) && $fx_num > 0) {
$query = "update fixanteil set fx_valid_to = '" . DateToDBDate($fx_valid_from) . "' ";
$query .= "where fx_num = $fx_num";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
}
 
$query = "update counter set co_fixanteil = $co_fixanteil";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
} else {
$query = "update fixanteil set fx_proz = $fx_proz where ";
$query .= "fx_num = $fx_num";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
}
}
 
QueryDB($db, "commit");
} else {
$query = "select co_kunde from counter";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$co_kunde = $data[0] + 1;
 
if (!QueryDB($db, "begin")) {
closeDB($db);
return false;
}
 
$query = "insert into kunde (ku_num, ku_firma";
 
if (isset($ku_anrede) && $ku_anrede > 0)
$query .= ", ku_anrede";
 
$query .= ", ku_vname, ku_nname, ku_strasse, ku_hnum, ku_ort, ku_plz ";
 
if (isset($ku_costloc) && $ku_costloc > 0)
$query .= ", ku_costloc";
 
$query .= ") values ($co_kunde, '$ku_firma'";
 
if (isset($ku_anrede) && $ku_anrede > 0)
$query .= ", $ku_anrede ";
 
$query .= ", '$ku_vname', '$ku_nname', '$ku_strasse', '$ku_hnum', ";
$query .= "'$ku_ort', '$ku_plz'";
 
if (isset($ku_costloc) && $ku_costloc > 0)
$query .= ", $ku_costloc";
 
$query .= ")";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$query = "update counter set co_kunde = $co_kunde";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
if ($fixkunde) {
$query = "select co_fixanteil from counter";
 
if (!($result = QueryDB($db, $query))) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$co_fixanteil = $data[0] + 1;
 
$query = "insert into fixanteil (fx_num, fx_valid_from, fx_kunum,";
$query .= "fx_proz) values ($co_fixanteil, '". DateToDBDate($fx_valid_from) . "',";
$query .= "$co_kunde, $fx_proz)";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$query = "update counter set co_fixanteil = $co_fixanteil";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
}
 
QueryDB($db, "commit");
}
 
closeDB($db);
return true;
}
 
# Wenn der Anwender auf den Loeschknopf gedrueckt hat, wird die folgende
# Funktion aufgerufen, welche den Anwender um die Verifizierung der Loeschung
# fragt. Bereits die Funktion ListKunde() stellt sicher, dass nur jene Kunden
# geloescht werden koennen, welche noch in keiner Kundengruppe sind.
#
function AskDelKunde() {
global $menu;
global $headline;
 
$ku_num = $_REQUEST['ku_num'];
 
if (!isset($ku_num) || $ku_num <= 0) {
Error("AskDelKunde: Interner Fehler: Kundennummer wurde nicht &uuml;bergeben!");
return;
}
 
$nav = "func=SaveKundeReal&ku_num=$ku_num&menu=$menu&headline=$headline";
$db = OpenDB();
$query = "select ku_firma, ku_nname, ku_vname from kunde where ku_num = $ku_num";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$data = fetchDB($result, 0);
$ku_firma = $data[0];
$ku_nname = $data[1];
$ku_vname = $data[2];
?>
<br>
<form action="kunden.php" method="post">
<table border=2 class="alarm">
<tr><td colspan=2><big>Warnung!</big><br><br>
Wollen Sie den Kunden
<font color="white"><? echo "$ku_firma / $ku_nname $ku_vname"; ?></font>
wirklich unwiederbringlich l&ouml;schen?
</td>
</tr>
<tr>
<td><center><input type="button" name="yes" value="Kunden Löschen" onClick="javascript:MoveTo('kunden.php','yes=yes&<? echo "$nav"; ?>')"></center></td>
<td><center><input type="button" name="no" value="Abbruch" onClick="javascript:MoveTo('kunden.php','no=no&<? echo "$nav"; ?>')"></center></td>
</tr>
</table>
</form>
<?php
}
 
# Folgende Funktion loescht einen Kunden aus der Datenbank. Eine Loeschung
# ist nur dann moeglich, wenn selbige zuvor durch den Anwender ausdruecklich
# gewuenscht wurde.
#
function DelKunde() {
global $fixkunde;
 
$ku_num = $_REQUEST['ku_num'];
 
if (!isset($ku_num) || $ku_num <= 0) {
Error("DelKunde: Interner Fehler: Kundennummer wurde nicht &uuml;bergeben!");
return;
}
 
$db = OpenDB();
 
if (!QueryDB($db, "begin")) {
closeDB($db);
return;
}
if ($fixkunde) {
$query = "delete from fixanteil where fx_kunum = $ku_num";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return;
}
}
 
$query = "delete from kunde where ku_num = $ku_num";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return;
}
 
QueryDB($db, "commit");
closeDB($db);
}
 
/*----------------------------------------------------------------------------*/
# Folgende Funktion erzeugt eine Liste aller Kundengruppen, und stellt die
# Moeglichkeit zur Anlage neuer Kundengruppen, sowie deren Editierung zur
# Verfuegung.
#
function ListKGroups() {
global $rstufe;
global $menu;
global $headline;
if ($rstufe != 1 && $rstufe != 4) {
Error("Berechtigungsfehler!");
return;
}
 
$nav = "menu=$menu&headline=$headline";
$db = OpenDB();
$query = "select kg_num, kg_name, kg_prnum from kgroup ";
$query .= "order by kg_name";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$rows = numrowsDB($result);
$j = 0;
echo "<table class=\"indent\"><tr><td>\n";
ButtonLink("Neue Kundengruppe", "kunden.php", "func=NewKGroup&$nav");
echo "</td></tr></table>\n";
?>
<table class="sel">
<tr>
<th class="sel">Aktion</th>
<th class="sel">Kundengruppe</th>
<th class="sel">Projekt</th>
</tr>
<?
while ($j < $rows) {
$data = fetchDB($result, $j);
$kg_num = $data[0];
$kg_name = $data[1];
$kg_prnum = $data[2];
 
$query = "select count(*) from kgsammel where ";
$query .= "ks_kgnum = $kg_num";
 
if (!($resks = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$data = fetchDB($resks, 0);
$anz = $data[0];
 
echo "<tr><td class=\"selakt\">";
ButtonImageMove("edit.png", "Editieren", "kunden.php",
"func=EditKGroup&kg_num=$kg_num&kg_name=$kg_name&kg_prnum=$kg_prnum&$nav");
 
if ($anz <= 0)
ButtonImageMove("editdelete.png", "Loeschen", "kunden.php", "func=DelKGroup&kg_num=$kg_num&$nav");
 
echo "</td>\n";
echo "<td class=\"sel\">$kg_name</td>\n";
 
if (isset($kg_prnum) && $kg_prnum > 0) {
$query = "select pr_name from project where pr_num = $kg_prnum";
 
if (!($respr = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$data = fetchDB($respr, 0);
$pr_name = $data[0];
echo "<td class=\"sel\">$kg_prnum $pr_name</td></tr>\n";
} else
echo "<td class=\"sel\">&nbsp;</td></tr>\n";
 
$j++;
}
 
echo "</table>\n";
echo "<table class=\"indent\"><tr><td>\n";
ButtonLink("Neue Kundengruppe", "kunden.php", "func=NewKGroup&$nav");
echo "</td></tr></table>\n";
closeDB($db);
}
 
# Folgende Funktion fuegt einer Kundengruppe einen neuen Kunden hinzu. Die
# Funktion listet alle kunden auf, welche noch nicht der Gruppe zugeordnet
# wurden und erlaubt eine Auswahl aus der Liste.
#
# Der Aufruf der Funktion erfolgt aus EditKGroup()
#
function AddKunde($db=-1) {
global $fixkunde;
global $menu;
global $headline;
 
$kg_num = $_REQUEST['kg_num'];
$kg_name = $_REQUEST['kg_name'];
$kg_prnum = $_REQUEST['kg_prnum'];
 
if (!isset($kg_num) || $kg_num <= 0) {
Error("AddKunde: Interner Fehler: Gruppennummer wurde nicht &uuml;bergeben!");
return;
}
 
if ($db == -1)
$db = OpenDB();
 
$query = "select ku_num, ku_firma, ku_vname, ku_nname from kunde ";
$query .= "where ku_num not in (select ks_kunum from kgsammel where ";
$query .= "ks_kgnum = $kg_num) order by ku_firma, ku_nname, ku_vname";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$rows = numrowsDB($result);
$j = 0;
 
if ($rows > 0) {
?>
<tr>
<td class="input_ltb">Neuer Kunde:</td>
<td class="input_rtb">
<table border=0 cellspacing=0 cellpadding=0><tr><td>
<select name="ku_num">
<?
while ($j < $rows) {
$data = fetchDB($result, $j);
$ku_num = $data[0];
$ku_firma = $data[1];
$ku_vname = $data[2];
$ku_nname = $data[3];
echo "<option value=\"$ku_num\">$ku_firma";
 
if (isset($ku_nname) && strlen($ku_nname) > 0)
echo " / $ku_nname $ku_vname";
 
echo "</option>\n";
$j++;
}
?>
</select></td>
<td>
<?
Button("Kunde hinzuf&uuml;gen", "kgroup", "func", "AddGroupKunde");
?>
</td></tr></table>
</td>
</tr>
<tr>
<th class="sel" colspan=2>Kundenliste</td>
</tr>
<tr>
<td colspan = 2>
<table class="sel">
<tr>
<th class="sel">Akt.</th>
<th class="sel">Firma</th>
<th class="sel">Name</th>
<?
if ($fixkunde) {
?>
<th class="sel">Anteil Schl.</th>
<th class="sel">Anteil Proj.</th>
<?
}
?>
</tr>
<?
$query = "select ks_num, ks_kunum, ku_firma, ku_vname, ku_nname from ";
$query .= "kgsammel, kunde where ku_num = ks_kunum and ";
$query .= "ks_kgnum = $kg_num order by ku_firma, ku_nname, ku_vname";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$rows = numrowsDB($result);
$j = 0;
 
if ($fixkunde) {
$query = "select sum(fx_proz) from fixanteil where ";
$query .= "fx_valid_to is NULL and fx_kunum in ";
$query .= "(select ks_kunum from kgsammel where ks_kgnum = $kg_num)";
 
if (!($resks = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$data = fetchDB($resks, 0);
$sum_proz = $data[0];
$sum_ant1 = 0.0;
$sum_ant2 = 0.0;
}
 
while ($j < $rows) {
$data = fetchDB($result, $j);
$ks_num = $data[0];
$ks_kunum = $data[1];
$ku_firma = $data[2];
$ku_vname = $data[3];
$ku_nname = $data[4];
 
echo "<tr><td class=\"selakt\">";
ButtonImageMove("editdelete.png", "Loeschen", "kunden.php",
"ks_num=$ks_num&kg_num=$kg_num&kg_name=" . urlencode($kg_name) .
"&kg_prnum=$kg_prnum&menu=$menu&headline=$headline&func=DelSammel");
echo "</td>\n";
echo "<td class=\"sel\">$ku_firma</td>\n";
echo "<td class=\"sel\">$ku_nname $ku_vname</td>\n";
 
if ($fixkunde) {
$query = "select fx_proz from fixanteil where fx_valid_to is NULL ";
$query .= "and fx_kunum = $ks_kunum order by fx_valid_from desc";
 
if (!($resfx = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
if (numrowsDB($resfx) > 0) {
$data = fetchDB($resfx, 0);
$fx_proz = $data[0];
 
if (!isset($fx_proz))
$fx_proz = 0.0;
} else
$fx_proz = 0.0;
 
if ($sum_proz > 0.0)
$real_proz = $fx_proz / $sum_proz * 100.0;
else
$real_proz = 0.0;
 
echo "<td class=\"selnum\">" . FormatNum($fx_proz, 3) . "</td>\n";
echo "<td class=\"selnum\">" . FormatNum($real_proz, 3) . "</td>\n";
$sum_ant1 += $fx_proz;
$sum_ant2 += $real_proz;
}
 
echo "</tr>\n";
$j++;
}
 
if ($fixkunde) {
echo "<tr><td class=\"selnum\" colspan=3><b>Summen:</b></td>\n";
echo "<td class=\"selnum\"><b>" . FormatNum($sum_ant1, 3) . "</b></td>\n";
echo "<td class=\"selnum\"><b>" . FormatNum($sum_ant2, 3) . "</b></td></tr>\n";
}
 
echo "</table>\n</td></tr>\n";
} else {
echo "<tr><td class=\"selakt\" colspan=2>Derzeit existieren noch keine Kunden!<br>";
echo "Bitte tragen Sie zuerst unter dem Men&uuml;punkt \"";
echo "Verwaltung&minus;&gt;Kunden\" einen oder mehrere Kunden ein.</td></tr>\n";
return;
}
}
 
# Folgende Funktion gibt eine Maske aus, um den Namen einer Kundengruppe zu
# erfassen, oder zu editieren.
#
function EditKGroup() {
global $menu;
global $headline;
 
$nav = "menu=$menu&headline=$headline";
$kg_num = $_REQUEST['kg_num'];
$kg_name = $_REQUEST['kg_name'];
$kg_prnum = $_REQUEST['kg_prnum'];
 
if (isset($kg_num) && $kg_num > 0)
$update = true;
else
$update = false;
?>
<form name="kgroup" action="kunden.php" method="post">
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
<input type="hidden" name="headline" value="<? echo "$headline"; ?>">
<input type="hidden" name="func" value="SaveKGroup">
<input type="hidden" name="update" value="<? echo "$update"; ?>">
<?
if ($update)
echo " <input type=\"hidden\" name=\"kg_num\" value=\"$kg_num\">\n";
?>
<table class="input">
<tr>
<th class="sel" colspan=2>
<?
if ($update)
echo "Editieren der Kundengruppe";
else
echo "Neue Kundengruppe";
?>
</th>
</tr>
<tr>
<td>Gruppenname:</td>
<td><input type="text" class="inputmust" name="kg_name" value="<? echo "$kg_name"; ?>" size=40 maxlength=60></td>
</tr>
<tr>
<td>Projekt:</td>
<td><select name="kg_prnum">
<option value=""></option>
<?
$db = OpenDB();
$query = "select distinct pr_num, pr_name from project, plan where ";
$query .= "pl_prnum = pr_num and pr_status = 0 and pl_status in (2,3,4)";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return;
}
 
$rows = numrowsDB($result);
$j = 0;
 
while ($j < $rows) {
$data = fetchDB($result, $j);
$pr_num = $data[0];
$pr_name = $data[1];
 
if ($update && $kg_prnum == $pr_num)
echo "<option value=\"$pr_num\" selected>$pr_num $pr_name</option>\n";
else
echo "<option value=\"$pr_num\">$pr_num $pr_name</option>\n";
 
$j++;
}
?>
</select>
</td>
</tr>
<?
if ($update)
AddKunde($db);
?>
</table>
<table class="indent"><tr><td>
<?
ButtonSubmit("Speichern", "kgroup");
echo "</td></tr></table>\n</form>\n";
closeDB($db);
}
 
# Folgende Funktion speichert den Namen einer neuen Kundengruppe. Anschliessend
# koennen der Gruppe Kunden hinzugefuegt werden.
#
function SaveKGroup() {
$kg_num = $_REQUEST['kg_num'];
$kg_name = $_REQUEST['kg_name'];
$kg_prnum = $_REQUEST['kg_prnum'];
$update = $_REQUEST['update'];
 
if (!isset($kg_name) || strlen($kg_name) <= 0) {
Error("Sie m&uuml;ssen unbegingt einen Kundengruppennamen eigeben!");
return false;
}
 
if ($update && (!isset($kg_num) || strlen($kg_num) <= 0)) {
Error("SaveKGroup: Interner Fehler: Kundengruppennummer fehlt!");
return false;
}
 
if (!isset($kg_prnum) || strlen($kg_prnum) <= 0)
$kg_prnum = "NULL";
 
$db = OpenDB();
 
if ($update) {
$query = "update kgroup set kg_name = '$kg_name', ";
$query .= "kg_prnum = $kg_prnum where kg_num = $kg_num";
 
if (!QueryDB($db, $query)) {
closeDB($db);
return false;
}
} else {
$query = "select co_kgroup from counter";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$co_kgroup = $data[0] + 1;
 
if (!QueryDB($db, "begin")) {
closeDB($db);
return false;
}
 
$query = "insert into kgroup (kg_num, kg_name, kg_prnum) values ";
$query .= "($co_kgroup, '$kg_name', $kg_prnum)";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$query = "update counter set co_kgroup = $co_kgroup";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
QueryDB($db, "commit");
}
 
closeDB($db);
return true;
}
 
function AddGroupKunde() {
global $fixkunde;
 
$kg_num = $_REQUEST['kg_num'];
$ku_num = $_REQUEST['ku_num'];
 
if (!isset($kg_num) || $kg_num <= 0) {
Error("AddGroupKunde: Interner Fehler: Gruppennummer fehlt!");
return false;
}
 
if (!isset($ku_num) || $ku_num <= 0) {
Error("AddGroupKunde: Interner Fehler: Kundennummer fehlt!");
return false;
}
 
$db = OpenDB();
# Sicherstellen, dass der gewuenschte Kunde nicht bereits in der
# aktuellen Gruppe vorhanden ist.
$query = "select count(*) from kgsammel where ks_kgnum = $kg_num and ks_kunum = $ku_num";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
 
if ($data[0] > 0) {
Error("Error: Der Kunde ist bereits in der Gruppe enthalten!");
closeDB($db);
return false;
}
 
# Da der Kunde noch nicht in der Gruppe enthalten ist, fuegen wir
# ihn nun tatsaechlich in den Kontainer ein.
$query = "select co_kgsammel from counter";
 
if (!($result = QueryDB($db, $query))) {
closeDB($db);
return false;
}
 
$data = fetchDB($result, 0);
$co_kgsammel = $data[0] + 1;
 
if (!QueryDB($db, "begin")) {
closeDB($db);
return false;
}
 
$query = "insert into kgsammel (ks_num, ks_kgnum, ks_kunum) values ";
$query .= "($co_kgsammel, $kg_num, $ku_num)";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
$query = "update counter set co_kgsammel = $co_kgsammel";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return false;
}
 
QueryDB($db, "commit");
closeDB($db);
return true;
}
 
function DelSammel() {
$kg_num = $_REQUEST['kg_num'];
$ks_num = $_REQUEST['ks_num'];
 
if (!isset($kg_num) || $kg_num <= 0) {
Error("DelSammel: Interner Fehler: Kundengruppennummer wurde nicht &uuml;bergeben!");
return;
}
 
if (!isset($ks_num) || $ks_num <= 0) {
Error("DelSammel: Interner Fehler: Kontainernummer wurde nicht &uuml;bergeben!");
return;
}
 
$db = OpenDB();
$query = "delete from kgsammel where ks_num = $ks_num";
 
QueryDB($db, $query);
}
 
function AskDelKGroup() {
global $menu;
global $headline;
 
$kg_num = $_REQUEST['kg_num'];
 
if (!isset($kg_num) || $kg_num <= 0) {
Error("AskDelKunde: Interner Fehler: Kundengruppennummer wurde nicht &uuml;bergeben!");
return;
}
 
$nav = "func=DelKGroupReal&kg_num=$kg_num&menu=$menu&headline=$headline";
?>
<br>
<form action="kunden.php" method="post">
<table border=2 class="alarm">
<tr><td colspan=2><big>Warnung!</big><br><br>
Wollen Sie diese Kundengruppe wirklich unwiederbringlich
l&ouml;schen?
</td>
</tr>
<tr>
<td><center><input type="button" name="yes" value="Kundengruppe Löschen" onClick="javascript:MoveTo('kunden.php','yes=yes&<? echo "$nav"; ?>')"></center></td>
<td><center><input type="button" name="no" value="Abbruch" onClick="javascript:MoveTo('kunden.php','no=no&<? echo "$nav"; ?>')"></center></td>
</tr>
</table>
</form>
<?php
}
 
function DelKGroup() {
$kg_num = $_REQUEST['kg_num'];
 
if (!isset($kg_num) || $kg_num <= 0) {
Error("DelKGroup: Interner Fehler: Kundengruppennummer wurde nicht &uuml;bergeben!");
return;
}
 
$db = OpenDB();
 
if (!QueryDB($db, "begin")) {
closeDB($db);
return;
}
# Loeschen der Sammler
$query = "delete from kgsammel where ks_kgnum = $kg_num";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return;
}
 
# Loeschen der Kundengruppe selbst
$query = "delete from kgroup where kg_num = $kg_num";
 
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return;
}
 
QueryDB($db, "commit");
closeDB($db);
}
 
/*----------------------------------------------------------------------------*/
# Ab hier steht die Steuerung fuer die einzelnen Funktionen.
#
if (isset($knopf) && $knopf == 43) // Einfache Kundenliste
ListKunde();
 
if (isset($knopf) && $knopf == 48)
ListKGroups();
 
$func = $_REQUEST['func'];
 
if (isset($func) && strlen($func) > 0) {
# Steuerung fuer Einzelkunden
if ($func == "new")
EditKunde();
 
if ($func == "SaveKunde") {
if (!SaveKunde())
EditKunde();
else
ListKunde();
}
 
if ($func == "edit")
EditKunde();
 
if ($func == "del")
AskDelKunde();
 
if ($func == "SaveKundeReal") {
$yes = $_REQUEST['yes'];
 
if ($yes == "yes")
DelKunde();
 
ListKunde();
}
 
# Steuerung fuer Kundengruppen
if ($func == "NewKGroup" || $func == "EditKGroup")
EditKGroup();
 
if ($func == "SaveKGroup") {
if (!SaveKGroup())
ListKGroups();
 
ListKGroups();
}
 
if ($func == "AddGroupKunde") {
AddGroupKunde();
EditKGroup();
}
 
if ($func == "DelSammel") {
DelSammel();
EditKGroup();
}
 
if ($func == "DelKGroup")
AskDelKGroup();
 
if ($func == "DelKGroupReal") {
$yes = $_REQUEST['yes'];
 
if ($yes == "yes")
DelKGroup();
 
ListKGroups();
}
}
 
 
require_once('footer.inc');
?>