Location: PHPKode > projects > TelDaBase > teldabase-1.4/teldabase/ezvformular.php
<?
/***************************************************************/
/*                                                             */
/* TelDaBase                                                   */
/* =========                                                   */
/*                                                             */
/* Copyright (C) 2004 Wolfgang Barthel                         */
/*                                                             */
/*                    http://www.teldabase.de                  */
/*                    hide@address.com */
/*                                                             */
/* see index.php and LICENSE                                   */
/*                                                             */
/***************************************************************/

/***************************************************************/
/* ezvformular.php                                             */
/* ===============                                             */
/* Anzeige des Formulars für die Einzelverbindungen und        */
/* Schreiben der zugeordneten Gespräche in die DB              */
/***************************************************************/


function ezv_anteil($link, $regexp, $rechnungsid, $bew_query)
{
    $query = "select sum(ezv_nettogesamtbetrag) as kosten from EZV
	       left join Telefonbuch using(telefonbuch_id)
		 where rechnung_id = $rechnungsid 
	       $bew_query
	       and tel_nummer regexp '$regexp'";
    $res = my_mysql_query($query, $link);
    $row = mysql_fetch_assoc($res);
    
    return($row["kosten"]);
}


/************************************************/
/* showresults                                  */
/* ===========                                  */
/* Anzeige der ausgewählten Einzelverbindungen  */
/* als Formular                                 */
/*                                              */
/*    results: Einzelverbindungen als array     */
/*    schritt: Nr. des Ankreuzschrittes         */
/*   bewohner: Liste (id->Name) der aktiven     */
/*             Bewohner                         */
/************************************************/

function showresults($link, $rechnungsid, $result, $schritt, 
		     $bewohner, $farbe = true, $bew_query = "")
{
   require('conf.php');

   /* Sind überhaupt Daten zur aktuellen Auswahl vorhanden */

   $numrows = mysql_num_rows($result);
   
   if($numrows == 0)
   {
       echo("<p>\nKeine entsprechenden Verbindungen gefunden\n</p>\n");
       if($schritt != "ezv")
       {
?>
	   <p>
     <a href="<?= $_SERVER['PHP_SELF'] ."?aktmenu=Ankreuzen&amp;schritt=". ($schritt + 1)
              ?>&amp;rechnungsid=<?= $rechnungsid
                                  ?>">weiter zum nächsten Schritt</a>
 </p>
   <?
       }
   }
   else /* Daten vorhanden */
   {
       if(($schritt > 1) or ($schritt == "ezv"))
       echo("<p>Bitte beachten Sie vor Benutzung der Inverssuche die Datenschutzbestimmungen und die Nutzungsbedingungen von \"Das Örtliche\", einzusehen unter <a href=\"http://www.dasoertliche.de\">http://www.dasoertliche.de</a></p>");
       
       if($schritt != "ezv")
       {
	   echo("<form action=\"". $_SERVER['PHP_SELF'] ."?aktmenu=Ankreuzen&amp;schritt="
		. ($schritt + 1) ."&amp;rechnungsid="
		. $rechnungsid."\" method=\"post\">\n");	
	   echo "<p>\n<input type=\"submit\" name=\"submit\" tabindex=\"1\" value = \"Speichern und zum nächsten Schritt\" />\n</p>\n";
       }
       else
       {
	   /* Kostenaufteilung auf Gesprächsziele */

	   $kosten["ort"] = ezv_anteil($link, "^[^01]", $rechnungsid, $bew_query);
	   $kosten["fern"] = ezv_anteil($link, "^0[^01]", $rechnungsid, $bew_query);
	   $kosten_sex = ezv_anteil($link, "^090", $rechnungsid, $bew_query); 

	   $kosten["fern"] =  $kosten["fern"] - $kosten_sex;
	   
	   $kosten["ausland"] = ezv_anteil($link, "^00", $rechnungsid, $bew_query);    
	   $kosten["mobil"] = ezv_anteil($link, "^01[567]", $rechnungsid, $bew_query); 
	   
	   $kosten["gesamt"] = ezv_anteil($link, "[0-9]", $rechnungsid, $bew_query);   

  ?>
 <table>
 <tr>
 <th>Zielregion</th>
 <th>Kosten</th>
 </tr>
  <?
	   $regionen = array("ort" => "Ortsverbindungen",
			     "fern" => "Fernverbindungen", 
			     "ausland" => "Auslandsverbindungen",
			     "mobil" => "Mobilfunk");
	   
	   $summe = 0;

	   foreach($regionen as $region => $regionsname)
	   {
	       if($kosten["$region"] > 0)
	       {
		   echo("<tr><td>$regionsname</td>\n");
		   echo "<td>". 
		     number_format($kosten["$region"] / 10000,4,",","")."</td></tr>\n";
		   $summe += $kosten["$region"];
	       }
	   }
	   
	   if($kosten["gesamt"] - $summe > 0)
	   {
	       echo("<tr><td>sonstige Verbindungen</td>\n");
	       echo "<td>". 
		 number_format(($kosten["gesamt"] - $summe) / 10000,4,",","")."</td></tr>\n";
	   }
	   
	   echo("</table>\n<hr />");
	   
       }
  ?>
 <table class="sortable" id="ezv">
 <tr>
 <th>Zielnummer</th>
 <th>Ortsnetz</th>
 <th>Kosten</th>
 <th>Datum</th>
 <th>Uhrzeit</th>
 <th>Dauer</th>
 <th>Wer</th>
      <?
      if($schritt == 3)  /* früher angekreuzte Gespräche */
	 echo("<th>früher von</th>\n");
       if($schritt != "ezv") 
	 echo("<th>Immer</th>\n");
       ?>
 </tr>
      <?
      $i=2;
      $kosten = 0;
      while($row = mysql_fetch_assoc($result))
      {
	 $kosten += $row["ezv_nettogesamtbetrag"];
	 /* Zeile in Farbe des Anschlusses anzeigen, von dem aus das Gespräch geführt wurde */ 

	 echo "<tr";
	 if(($row["ans_farbe"] != "0") && $farbe)
	    echo(" style=\"background-color:#".$row["ans_farbe"]."\"");
	 echo ">\n";
	 
	 
	 /* Gesprächsdaten anzeigen */
	 
	 echo "<td align = \"left\">";
	  if(($schritt > 1) or ($schritt == "ezv"))
	  {
	      if($row["tel_nummer"][0] != "0")
		$invnr = $conf["vorwahl"] . $row["tel_nummer"];
	      else
		$invnr = $row["tel_nummer"];
	    echo "<a target=\"_top\" href=\"http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers="
	      . $invnr . "&main=Antwort&AKTION=START_INVERS_SUCHE&SEITE=INVERSSUCHE_V&s=2&\">";
	  }
	  echo $row["tel_nummer"];
	  if(($schritt > 1) or ($schritt == "ezv"))
	    echo "</a>";
	  echo "</td>";
	 echo "<td>".$row["tel_ortsnetz"]."</td>\n";
	 echo "<td>".number_format($row["ezv_nettogesamtbetrag"] / 10000,4,",","")."</td>";
	 echo "<td>".$row["ezv_tag"]."</td>";
	 echo "<td>".$row["ezv_uhrzeit"]."</td>";
	 echo "<td>".$row["ezv_dauer"]."</td>\n";
	 
	 if($schritt != "ezv")
	  {
	      /* Drop-down-menu der Personen */
	      
	      echo "<td><select name=\"".$row["ezv_id"]
		. "\" size=\"1\" tabindex=\"$i\">\n";
	      echo "<option value=\"0\">&nbsp;</option>\n";
	      
	      $found = false;
	      
	      foreach ($bewohner as $k => $v )
	      {
		  echo "<option value=\"$k\"";
		  if($row["bewohner_id"] == $k)
		  {
		      echo(" selected=\"selected\"");
		      $found = true;
		  }
		  echo ">$v</option>\n";
	      }
	      
	      /* Anrufer ist (inzwischen) nicht mehr aktiv */
	  
	      if(isset($row["bewohner_id"]) && ($found === false))
	      {
		  echo "<option value=\"". $row["bewohner_id"] . "\" selected=\"selected\">"
		    . $row["bew_name"] . "</option>\n";
	      }
	      
	      echo "</select></td>\n";
	  }
	  else  /* Schritt == "ezv" */
	    echo "<td>" . $row["bew_name"] . "</td>\n";
	  
	 if($schritt == 3) 
	 {
	    /* Personen, die früher die Nummer gewählt hatten */
	    $query = "select DISTINCT bew_name from EZV left join Bewohner 
using(bewohner_id) where EZV.telefonbuch_id = '".$row["telefonbuch_id"]."'";
	    $resultan = mysql_query($query, $link) 
	       or die ("Query |$query| failed:" . mysql_error());
	    
	    echo("<td>");
	    while($rowan = mysql_fetch_assoc($resultan))
	       echo($rowan["bew_name"]." ");			
	    echo("</td>");
	 }
	
	 if($schritt != "ezv")
	  {
	      echo "<td><input type=\"checkbox\" name=\"im"
		.$row["ezv_id"]."\" value=\"1\" tabindex=\""
		.($i+$numrows+1)."\"";

		  if($row["telbuch_bewohner_id"] == $row["bewohner_id"])
		  {
		      echo(" checked=\"checked\"");
		  }
	  }
	 echo("</tr>\n");
	 $i++;
      }

      if($schritt == "ezv")
       {
	   $query = "select rech_mwst from Rechnungen where rechnung_id='$rechnungsid'";
	   $result = mysql_query($query, $link) 
	     or die ("Query |$query| failed:" . mysql_error());
	   $row = mysql_fetch_assoc($result);
	   $geskosten = intval(round($kosten * $row["rech_mwst"]
				     / 100));
	   $mwstkosten = $geskosten - $kosten;
	   echo "<tr><td colspan = \"2\">Summe</td><td>"
	     . number_format($kosten / 10000, 4,",","") . "</td><td colspan
		  = \"4\">&nbsp;</td></tr>\n";
	   echo "<tr><td colspan = \"2\">dazu Mwst</td><td>" 
	     . number_format($mwstkosten / 10000, 4,",","")
	     . "</td><td colspan = \"4\">&nbsp;</td></tr>\n";
	   echo "<tr><td colspan = \"2\">Gespr&auml;chskosten</td><td>" 
	     . number_format($geskosten / 10000, 4,",","")
	     . "</td><td colspan = \"4\">&nbsp;</td></tr>\n";
       }
       
      echo("</table>\n");
       
      if($schritt != "ezv")
       {
	   echo "<p>\n<input type=\"submit\" name=\"submit\" tabindex=\""
	     .($numrows+2)."\" value = \"Speichern und zum nächsten Schritt\" />\n</p>\n";	
	   echo("</form>\n");
       }
   }  
}


/************************************************/
/* updaterows                                   */
/* ==========                                   */
/* Auswerten des Formulars und Schreiben in die */
/* die DB                                       */
/*                                              */
/*        rows: $_POST-Daten                    */
/* rechnungsid: aktuelle Rechnung               */
/************************************************/

function updaterows($link, $rows,$rechnungsid)
{
   foreach ($rows as $k => $v )
   {
      if(is_numeric($k)) /* input-id gehört zu Namens-Feld */
      {
	 if($v > 0)
	 {
	    $query = "update EZV set bewohner_id='$v' where ezv_id = '$k'";
	 }
	 else /* Name wurde wieder gelöscht */
         {
	    $query = "update EZV set bewohner_id=NULL where ezv_id = $k";
	 }
      
         $result = mysql_query($query, $link) 
	    or die ("Query |$query| failed:" . mysql_error());
		
	 /* zugehörige Checkbox angekreuzt? */
	
	 if(isset($_POST["im$k"]))
	 {     
	    if($v > 0) /* Im Telefonbuch dieser Nummer die Person zuordnen */
	    {
	       $query = "update Telefonbuch join EZV using(telefonbuch_id) set Telefonbuch.bewohner_id = '$v' where ezv_id = '$k'";
	    }
	    else       /* bzw. löschen */
	    {
	       $query = "update Telefonbuch join EZV  using(telefonbuch_id) set Telefonbuch.bewohner_id = NULL where ezv_id = '$k'";
	    }
	    $result = mysql_query($query, $link) 
	       or die ("Query |$query| failed:" . mysql_error());
	 }
      }
   }
}
?>
Return current item: TelDaBase