#include <infocon.style>
#include <phptools.inc>
#include "account.inc"

<future>
<page func=InfoCon title="Kontoführung">

<?
  if ($_POST['formtype'] == "admin" || $_POST['formtype'] == "newaccount")
    $ktoname = "Administration";
?>

<account_heading>

<sql_prepare>

<?
  if ($_POST['formtype'] == "admin") {
    $query = "SELECT blz_kto,name,display FROM account_names ORDER BY name";
    foreach ($db->fetchAssocList($query) as $row) {
      if ($_POST['name_' . $row['blz_kto']] != $row['name'] ||
	  ($_POST['display_' . $row['blz_kto']] ? 1 : 0) != $row['display']) {
	$query = sprintf ("UPDATE account_names SET name='%s',display=%d,sys_user='%s',sys_edit=now() WHERE blz_kto = '%s'",
			  $_POST['name_' . $row['blz_kto']],
			  $_POST['display_' . $row['blz_kto']] ? 1 : 0,
			  $_SERVER['REMOTE_USER'],
			  $row['blz_kto']);

	$db->execute($query);
	$output = "Kontoinformationen aktualisiert.";      
      }
    }
  } elseif ($_POST['formtype'] == "newaccount") {
    if (isset($_POST['blz']) && isset($_POST['kto']) && isset($_POST['name'])) {
      $query = sprintf ("INSERT INTO account_names (blz_kto,name,display,sys_user,sys_edit) ".
		        "VALUES ('%s:%s','%s',1,'%s',now())",
			$_POST['blz'],
			$_POST['kto'],
			$_POST['name'],
			$_SERVER['REMOTE_USER']);
	$db->execute($query);

      $query = sprintf ("INSERT INTO account (blz_kto,statement,datum,from_to,descr,category,value_eur,sys_user,sys_edit) ".
		        "VALUES ('%s:%s','%s','%s','Account Administration','Initial Zero Statement','Miscellaneous',0.0,'%s',now())",
			$_POST['blz'],
			$_POST['kto'],
			date("Y") . "/00",
			date("Y-m-j"),
			$_SERVER['REMOTE_USER']);
	$db->execute($query);

      $output = "Neues Konto erstellt.";
    } else {
      $output = "Nicht ausreichend Informationen gegeben.";
    }
    exit (0);
  } else {
    $table = "account";
    $field = "value_eur";
    if ((strlen ($_POST['currency']) > 0) && ($_POST['currency'] == "dm")) {
      $table = "account_dm";
      $field = "value_dm";
    }

    if (strlen ($_POST['category']) == 0 && strlen ($_POST['newcategory']) > 0) {
      $category = $_POST['newcategory'];
    } else {
      $category = $_POST['category'];
    }
    if (strlen ($_POST['from_to']) == 0 && strlen ($_POST['newfrom_to']) > 0) {
      $from_to = $_POST['newfrom_to'];
    } else {
      $from_to = $_POST['from_to'];
    }
    $value = str_replace (",",".", $_POST['value']);

    if (isset($_POST['id']) && $_POST['id'] > 0 && strlen ($_POST['delete'])) {
      $query = sprintf("DELETE FROM %s WHERE id = %d", $table, $_POST['id']);
      $output = "Posten gelöscht.";
      $db->execute($query) or die("Datenbank-Abfrage!");
    } elseif (isset($_POST['id']) && $_POST['id'] > 0) {
      $query = sprintf("UPDATE %s SET datum='%s',statement=%s,from_to=%s,descr=%s,category=%s,%s=%s,sys_user='%s',sys_edit=now() " .
		       "WHERE id = %d",
		       $table,
		       Functions::date_german_to_iso($_POST['datum']),
		       $db->quote($_POST['statement']),
		       $db->quote($from_to),
		       $db->quote(trim($_POST['descr'])),
		       $db->quote($category),
		       $field,$value,
		       $_SERVER['REMOTE_USER'],
		       $_POST['id']);
	$output = "Posten aktualisiert.";
	$db->execute($query) or die("Datenbank-Abfrage!");
    } else {
	if ($table == "account_dm")
	    $account = new AccountingDM();
	else
	    $account = new Accounting();

	$ok = $account->insert(['blz_kto' => $_POST['blzkto'],
				'datum' => Functions::date_german_to_iso($_POST['datum']),
				'statement' => $_POST['statement'],
				'from_to' => $from_to,
				'descr' => $_POST['descr'],
				'category' => $category,
				'value' => $value]);

	if ($ok) {
	    $output = "Neuen Posten aufgenommen.";
	} else {
	    $output = "Problem beim Speichern des neuen Postens.";
	}
	$output .= sprintf('</p><p><a href="edit.php?blzkto=%s">Weiteren Posten aufnehmen</a>', $_POST['blzkto']);
    }
  }

  echo ("<p>".$output."</p>");
?>

</page>

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