#include <infocon.style>

<page func=InfoCon title="Buchhaltung">

<?
  function assert_date($date)
  {
    if (strpos($date, '.') !== false) {
      $d = explode('.', $date);
      $date = sprintf('%04d-%02d-%02d', $d[2] ? $d[2] : date('Y'), $d[1], $d[0]);
    }
    return $date;
  }

  function dig ($dbh, $table, $id)
  {
    $query = sprintf ("SELECT date,description,price FROM %s WHERE nr = %d",
		      $table, $id);
    $sth = pg_exec ($dbh, $query);

    if (pg_NumRows ($sth) > 0) {
      $row = pg_fetch_array ($sth, 0);

      $cur = "&euro;";
      if ($table == "sales_dm") {
        $cur = "DM";
      }
      $date = substr ($row['date'],6,2) . "." . substr ($row['date'],4,2) . "." . substr ($row['date'],0,4);
      return sprintf ("<br>#%d: %s %s (%.2f&nbsp;%s)",
		     $id, $date, $row['description'], $row['price'], $cur);
    }
    return '';
  }

  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
	 or die("Unable to connect to SQL server");

  $query = "SELECT nr FROM sales_dm WHERE paid = 0 ORDER BY date";
  $sth = pg_exec ($dbh, $query);

  # Collect all to be paid entries
  #
  <protect>for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {</protect>
    $row = pg_fetch_array ($sth, $nr);

    $v = sprintf ("date_%d", $row['nr']);
    if (strlen($_POST[$v])) {
      $paydm[] = $row['nr'];
    }
  }

  $query = "SELECT nr FROM sales WHERE paid = 0 ORDER BY date";
  $sth = pg_exec ($dbh, $query);

  # Collect all to be paid entries
  #
  <protect>for ($nr=0; $nr <pg_NumRows ($sth); $nr++) {</protect>
    $row = pg_fetch_array ($sth, $nr);

    $v = sprintf ("date_%d", $row['nr']);
    if (strlen($_POST[$v])) {
      $pay[] = $row['nr'];
    }
  }

  # Now pay them
  if (count($paydm) > 0) {
    echo ("Folgende Buchungen werden bezahlt:<p>");
    for ($i=0; $i < count ($paydm); $i++) {
      $date = assert_date($_POST[sprintf("date_%d", $paydm[$i])]);
      $query = sprintf ("UPDATE sales_dm SET paid=1, billing_date='%s' WHERE nr = %d",
			$date, $paydm[$i]);
  
      echo (dig ($dbh, "sales_dm", $paydm[$i]));
      $sth = pg_exec ($dbh, $query);
    }
  }

  if (count($pay) > 0) {
    if (count($paydm) == 0) {
      echo ("Folgende Buchungen werden bezahlt:<p>");
    }
    for ($i=0; $i < count ($pay); $i++) {
      $date = assert_date($_POST[sprintf("date_%d", $pay[$i])]);
      $query = sprintf ("UPDATE sales SET paid=1, billing_date='%s' WHERE nr = %d",
			$date, $pay[$i]);
  
      echo (dig ($dbh, "sales", $pay[$i]));
      $sth = pg_exec ($dbh, $query);
    }
  }

?>
</page>

# Local variables:
# mode: text
# mode: auto-fill
# end:
