Commit inicial. Només hi ha dues diferències de l'original:
- Fitxer README afegit
- db renombrat a db.sql, per claredat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,4 @@
+El fitxer db-config.inc no hauria de ser llegible per a tothom, ja que
+conté els passwords d'accés a la base de dades.
+
+El fitxer db.sql conté les ordres per inicialitzar la base de dades necessà ria.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/calc-deutes.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Deutes finals</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<H1 ALIGN=center>Ètxelon</H1>
+
+
+<?php
+ include("getdb.inc");
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+ $gent = obtenir_gent($connexio);
+
+ // Iniciem els deutes de cadascun
+ foreach($gent as $id => $persona)
+ {
+ $deutes[$id]["pagat"] = 0;
+ $deutes[$id]["toca_pagar"] = 0;
+ $deutes[$id]["pagaments"] = 0;
+ }
+ $total_a_pagar = 0;
+
+ // Obtenim totes les compres i pagaments
+ $compres = obtenir_compres($connexio);
+ $pagaments = obtenir_pagaments($connexio);
+ // Per cada compra...
+ foreach($compres as $data => $compra)
+ {
+ $compradors = obtenir_compradors($data, $connexio);
+
+ // Calcul dels compradors globals
+ foreach($compradors as $persona => $dades)
+ {
+ $deutes[$persona]["pagat"] += $dades["pagat"];
+ $deutes[$persona]["toca_pagar"] += $dades["toca_pagar"];
+ $total_a_pagar += $dades["toca_pagar"];
+ }
+
+ $excepcions = obtenir_excepcions($data, $connexio);
+
+ $max_compradors_ex = 0;
+ if ($excepcions != 0)
+ foreach($excepcions as $key => $value)
+ {
+ $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio);
+ foreach($compradors_excepcions[$key] as $persona => $dades)
+ {
+ $deutes[$persona]["toca_pagar"] += $dades["toca_pagar"];
+ $total_a_pagar += $dades["toca_pagar"];
+ }
+ }
+ }
+ if ($pagaments != 0)
+ foreach($pagaments as $data => $pagament)
+ {
+ $pagadors = obtenir_pagadors($data,$connexio);
+ // Els cobraments seran 'pagaments' negatius.
+ foreach($pagadors as $persona => $dades)
+ $deutes[$persona]["pagaments"] += $dades["pagat"] - $dades["cobrat"];
+ }
+?>
+
+<H2>Deutes finals</H2>
+
+<!-- Taula de compradors globals -->
+<TABLE BORDER=1>
+<CAPTION>Deutes finals</CAPTION>
+<TR>
+ <TH>Persona
+ <TH>Pagat
+ <TH>Toca pagar
+ <TH>Percentatge a pagar
+ <TH>Balanç
+ <TH>Pagaments
+ <TH>Balanç amb pagaments
+<?php
+ $suma_pagat = 0;
+ $suma_toca_pagar = 0;
+ $suma_percentatge = 0;
+ $suma_balans = 0;
+ $suma_pagaments = 0;
+ $suma_balans_pagaments = 0;
+ foreach($gent as $key => $value)
+ {
+ if ($deutes[$key]["pagat"] != 0 || $deutes[$key]["toca_pagar"] != 0 ||
+ $deutes[$key]["pagaments"] != 0)
+ {
+ // Serveix per calcular el preu que toca pagar a cada un realment
+ echo "<TR>\n\t<TD>";
+ echo "<A HREF=\"list-persona.php?user_id=$key\">";
+ echo strtohtml($gent[$key]["nom"]) . "</A>\n";
+
+ printf("\t<TD align=right>%s\n", pricetohtml($deutes[$key]["pagat"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($deutes[$key]["toca_pagar"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($deutes[$key]["toca_pagar"]
+ / $total_a_pagar * 100));
+ printf("\t<TD align=right>%s\n", pricetohtml($deutes[$key]["pagat"]
+ - $deutes[$key]["toca_pagar"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($deutes[$key]["pagaments"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($deutes[$key]["pagat"]
+ - $deutes[$key]["toca_pagar"] + $deutes[$key]["pagaments"]));
+
+ //echo "\t<TD>" . $deutes[$key]["pagat"] . "\n";
+ //echo "\t<TD>" . $deutes[$key]["toca_pagar"] . "\n";
+ //echo "\t<TD>" . ($deutes[$key]["toca_pagar"] / $total_a_pagar * 100) . "\n";
+
+ //echo "\t<TD>" . ($deutes[$key]["pagat"] - $deutes[$key]["toca_pagar"]) . "\n";
+ //echo "\t<TD>" . $deutes[$key]["pagaments"] . "\n";
+ //echo "\t<TD>" . ($deutes[$key]["pagat"] - $deutes[$key]["toca_pagar"] + $deutes[$key]["pagaments"]) . "\n";
+
+ $suma_pagat += $deutes[$key]["pagat"];
+ $suma_toca_pagar += $deutes[$key]["toca_pagar"];
+ $suma_percentatge += ($deutes[$key]["toca_pagar"] / $total_a_pagar * 100);
+ $suma_balans += $deutes[$key]["pagat"] - $deutes[$key]["toca_pagar"];
+ $suma_pagaments += $deutes[$key]["pagaments"];
+ $suma_balans_pagaments += $deutes[$key]["pagat"] - $deutes[$key]["toca_pagar"] + $deutes[$key]["pagaments"];
+ }
+ }
+
+ printf("<TR>\n\t<TH>Total\n");
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_pagat));
+ // La suma ha de ser lo mateix que total_a_pagar
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_toca_pagar));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_percentatge));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_balans));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_pagaments));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_balans_pagaments));
+ /*
+ echo "<TR>\n\t<TH>Total\n" .
+ "\t<TD>" . $suma_pagat . "\n" .
+ // La suma ha de ser lo mateix que total_a_pagar
+ "\t<TD>" . $suma_toca_pagar ."\n" .
+ "\t<TD>" . $suma_percentatge . "\n" .
+ "\t<TD>" . $suma_balans . "\n" .
+ "\t<TD>" . $suma_pagaments . "\n" .
+ "\t<TD>" . $suma_balans_pagaments . "\n";
+ */
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+
+<H2>Llegenda</H2>
+
+<ul>
+<li>El percentatge es calcula segons el que <em>toca pagar</em> respecte al
+ <em>total a pagar</em>.
+<li>Els pagaments negatius són cobraments del grup. Els positius són pagaments
+ al grup.
+<li>La suma del <em>percentatge</em> ha de ser <strong>100</strong>.
+<li>El <em>total pagat</em> ha de ser igual al <em>total a pagar</em>.
+<li>La suma dels pagaments ha de ser <strong>0</strong>
+ (pagaments = cobraments).
+<li>El <em>balanç positiu</em> indica diners que s'han de cobrar en un futur,
+ i el <em>negatiu</em> diners que s'han de pagar.
+<LI>És important <strong>no confondre</strong> el que s'ha <em>pagat</em> (que
+ fa referència a les <em>compres</em>), i els <em>pagaments</em>, que fan
+ referència als préstecs o saldades de deutes.
+</ul>
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db-config.inc Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,6 @@
+<?php
+$mysql_server = "localhost";
+$mysql_user = "prova_pis";
+$mysql_password = "patata";
+$mysql_db = "prova_pis";
+?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db.sql Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,110 @@
+-- use pis;
+drop table compres if exists;
+drop table excepcions if exists;
+drop table gent if exists;
+drop table compradors if exists;
+drop table compradors_excepcions if exists;
+
+CREATE TABLE compres (
+ data TIMESTAMP NOT NULL,
+ botiga CHAR(30) NOT NULL,
+ motiu TEXT,
+ preu DECIMAL(18,10) UNSIGNED NOT NULL,
+ comentari TEXT,
+
+ PRIMARY KEY (data)
+ ) TYPE = InnoDB;
+
+CREATE TABLE excepcions (
+ id MEDIUMINT NOT NULL AUTO_INCREMENT,
+ data TIMESTAMP NOT NULL,
+ article TINYTEXT,
+ preu DECIMAL(18,10) UNSIGNED NOT NULL,
+
+ KEY data (data),
+ PRIMARY KEY (id),
+ FOREIGN KEY (data) REFERENCES compres (data)
+ ) TYPE = InnoDB;
+
+CREATE TABLE gent (
+ id MEDIUMINT NOT NULL AUTO_INCREMENT,
+ nom VARCHAR(50) NOT NULL,
+ habitant BOOL,
+
+ PRIMARY KEY (id)
+ ) TYPE = InnoDB;
+
+CREATE TABLE compradors (
+ id MEDIUMINT NOT NULL AUTO_INCREMENT,
+ data TIMESTAMP NOT NULL,
+ persona MEDIUMINT NOT NULL,
+ pagat DECIMAL(18,10) UNSIGNED NOT NULL,
+ toca_pagar DECIMAL(18,10) UNSIGNED NOT NULL,
+
+ KEY data (data),
+ KEY persona (persona),
+ FOREIGN KEY (data) REFERENCES compres(data),
+ FOREIGN KEY (persona) REFERENCES gent(id),
+ PRIMARY KEY (id)
+ ) TYPE = InnoDB;
+
+CREATE TABLE compradors_excepcions (
+ id MEDIUMINT NOT NULL AUTO_INCREMENT,
+ ex_id MEDIUMINT NOT NULL,
+ persona MEDIUMINT NOT NULL,
+ toca_pagar DECIMAL(18,10) UNSIGNED NOT NULL,
+
+ KEY ex_id (ex_id),
+ KEY persona (persona),
+ FOREIGN KEY (ex_id) REFERENCES excepcions (id),
+ FOREIGN KEY (persona) REFERENCES gent (id),
+ PRIMARY KEY (id)
+ ) TYPE = InnoDB;
+
+CREATE TABLE pagaments (
+ data TIMESTAMP NOT NULL,
+ comentari TEXT,
+
+ PRIMARY KEY (data)
+ ) TYPE = InnoDB;
+
+CREATE TABLE pagadors (
+ id MEDIUMINT NOT NULL AUTO_INCREMENT,
+ data TIMESTAMP NOT NULL,
+ persona MEDIUMINT NOT NULL,
+ pagat DECIMAL(18,10) UNSIGNED NOT NULL,
+ cobrat DECIMAL(18,10) UNSIGNED NOT NULL,
+
+ KEY data (data),
+ KEY persona (persona),
+ FOREIGN KEY (data) REFERENCES pagaments(data),
+ FOREIGN KEY (persona) REFERENCES gent(id),
+ PRIMARY KEY (id)
+ ) TYPE = InnoDB;
+
+-- INSERT INTO gent (nom,habitant) VALUES('Lluis', 1);
+-- INSERT INTO gent (nom,habitant) VALUES('Marc', 1);
+-- INSERT INTO gent (nom,habitant) VALUES('Natxo', 1);
+-- INSERT INTO gent (nom,habitant) VALUES('Borja', 1);
+-- INSERT INTO gent (nom,habitant) VALUES('Xumi', 0);
+-- INSERT INTO gent (nom,habitant) VALUES('Boira', 0);
+
+-- SET @date := NOW();
+-- INSERT INTO compres (data,botiga,motiu,preu) VALUES(@date,'Esclat',
+-- 'Compra setmanal',2203);
+-- INSERT INTO excepcions (data,article,preu) VALUES(@date,'Bicicleta', 200);
+-- INSERT INTO excepcions (data,article,preu) VALUES(@date,'Patates', 3);
+
+-- INSERT INTO compradors (data,persona,pagat,toca_pagar)
+-- VALUES(@date,1,1203,500);
+-- INSERT INTO compradors (data,persona,pagat,toca_pagar)
+-- VALUES(@date,2,0,500);
+-- INSERT INTO compradors (data,persona,pagat,toca_pagar)
+-- VALUES(@date,3,500,500);
+-- INSERT INTO compradors (data,persona,pagat,toca_pagar)
+-- VALUES(@date,4,500,500);
+
+-- INSERT INTO compradors_excepcions (ex_id, persona, toca_pagar)
+ -- VALUES(1,1,200);
+-- INSERT INTO compradors_excepcions (ex_id, persona, toca_pagar)
+ -- VALUES(2,5,3);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/delete-compra.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,261 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Eliminar compra</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+<?php
+
+ include("getdb.inc");
+ // Variables globals
+ $touchdb = 1; // Si val 0, no es modificarà la base de dades
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+ $data = $_GET["id"];
+
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+ $gent = obtenir_gent($connexio);
+
+ $compra = obtenir_compra($data, $connexio);
+ $compradors = obtenir_compradors($data, $connexio);
+ $excepcions = obtenir_excepcions($data, $connexio);
+
+ $preu_per_compradors = $compra["preu"];
+ $max_compradors_ex = 0;
+ if ($excepcions != 0)
+ foreach($excepcions as $key => $value)
+ {
+ $preu_per_compradors -= $excepcions[$key]["preu"];
+ $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio);
+ $max_compradors_ex = max(count($compradors_excepcions[$key]),$max_compradors_ex);
+ }
+
+
+if(!isset($_GET["sure"]) && isset($_GET["id"]))
+{
+?>
+
+<H1 ALIGN=center>Eliminar compra</H1>
+
+<H2>Dades generals</H2>
+
+<p> Dades de la compra: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Hora i Data:
+ <TD> <?php
+ echo date("d/m/Y H:i",$data); ?>
+
+<TR>
+ <TH> Botiga:
+ <TD> <?php
+ echo strtohtml($compra["botiga"]); ?>
+
+<TR>
+ <TH> Motiu:
+ <TD> <?php
+ echo strtohtml($compra["motiu"]); ?>
+
+<TR>
+ <TH> Comentari:
+ <TD> <?php
+ echo strtohtml($compra["comentari"]); ?>
+
+<TR>
+ <TH> Preu:
+ <TD> <?php
+ echo pricetohtml($compra["preu"]); ?>
+
+<TR>
+ <TH> Preu (a repartir)
+ <TD> <?php
+ echo pricetohtml($preu_per_compradors); ?>
+
+</TABLE>
+
+
+<!-- Taula de compradors globals -->
+<TABLE BORDER=1>
+<CAPTION>Compradors globals</CAPTION>
+<TR>
+ <TH>Persona
+ <TH>Pagat
+ <TH>Toca pagar
+ <TH>Percentatge
+ <TH>Toca pagar + excepcions
+ <TH>Balanç
+<?php
+ $suma_pagat = 0;
+ $suma_toca_pagar = 0;
+ $suma_percentatge = 0;
+ $suma_toca_pagar_ex = 0;
+ $suma_balans = 0;
+ foreach($gent as $key => $value)
+ {
+ // Serveix per calcular el preu que toca pagar a cada un realment
+ $modificador = 0;
+ if ($excepcions != 0)
+ foreach($excepcions as $key_ex => $value_ex)
+ {
+ if(isset($compradors_excepcions[$key_ex][$key]["toca_pagar"]))
+ $modificador += $compradors_excepcions[$key_ex][$key]["toca_pagar"];
+ }
+
+
+ if (isset($compradors[$key]))
+ {
+ /*
+ if (!isset($compradors[$key]["pagat"]))
+ $compradors[$key]["pagat"] = 0;
+ if (!isset($compradors[$key]["toca_pagar"]))
+ $compradors[$key]["toca_pagar"] = 0;
+ */
+
+ echo "<TR>\n\t<TD>". strtohtml($gent[$key]["nom"]) . "\n";
+
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["pagat"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["toca_pagar"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["toca_pagar"]
+ * 100 / $preu_per_compradors));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["toca_pagar"]
+ + $modificador));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["pagat"]
+ - ($compradors[$key]["toca_pagar"] + $modificador)));
+ //echo "\t<TD>" . $compradors[$key]["pagat"] . "\n";
+ //echo "\t<TD>" . $compradors[$key]["toca_pagar"] . "\n";
+ //echo "\t<TD>" . ($compradors[$key]["toca_pagar"] * 100 / $preu_per_compradors) . "\n";
+
+ //echo "\t<TD>" . ($compradors[$key]["toca_pagar"] + $modificador) . "\n";
+ //echo "\t<TD>" . ($compradors[$key]["pagat"] - ($compradors[$key]["toca_pagar"] + $modificador)) . "\n";
+
+ $suma_pagat += $compradors[$key]["pagat"];
+ $suma_toca_pagar += $compradors[$key]["toca_pagar"];
+ $suma_percentatge += ($compradors[$key]["toca_pagar"] / $preu_per_compradors*100);
+ $suma_toca_pagar_ex += $compradors[$key]["toca_pagar"] + $modificador;
+ $suma_balans += $compradors[$key]["pagat"] - ($compradors[$key]["toca_pagar"] + $modificador);
+ }
+ }
+ echo "<TR>\n\t<TH>Total\n";
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_pagat));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_toca_pagar));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_percentatge));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_toca_pagar_ex));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_balans));
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+<H2>Excepcions</H2>
+
+<TABLE BORDER=1>
+<TR>
+ <TH>Id
+ <TH>Article
+ <TH>Preu
+ <TH COLSPAN=<?php echo $max_compradors_ex ?>>Toca Pagar
+
+<?php
+ if ($excepcions != 0)
+ foreach($excepcions as $key => $value)
+ {
+ $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio);
+ // Poso els noms dels compradors
+ echo "<TR>\n\t<TD>\n\t<TD>\n\t<TD>\n";
+ foreach($compradors_excepcions[$key] as $key_c => $value_c)
+ {
+ echo "\t<TH>" . $gent[$key_c]["nom"] . "\n";
+ }
+ // Poso l'excepcio en si
+ printf("<TR>\n\t<TH>%d\n", $key);
+ echo "\t<TD>" . strtohtml($excepcions[$key]["article"]) . "\n";
+ printf("\t<TD align=right>%s\n", pricetohtml($excepcions[$key]["preu"]));
+ foreach($compradors_excepcions[$key] as $key_c => $value_c)
+ {
+ printf("\t<TD align=right>%.2f\n", pricetohtml($value_c["toca_pagar"]));
+ }
+ }
+?>
+
+</TABLE>
+
+<HR WIDTH="70%">
+<BR>
+<CENTER>
+<TABLE BORDER=2>
+<TR>
+ <TD><A HREF="delete-compra?id=<?php echo $_GET["id"]; ?>&sure=yes"><STRONG>ELIMINAR SEGUR!</STRONG></A>
+</TR>
+</TABLE>
+</CENTER>
+
+<?php
+}
+elseif (isset($_GET["id"]) && $_GET["sure"] == "yes")
+{
+ if ($excepcions != 0)
+ foreach($excepcions as $key_ex => $value_ex)
+ {
+ // Borrem excepcions
+ $query = "DELETE FROM compradors_excepcions WHERE ex_id=$key_ex;";
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ if (!$resultat)
+ warn_mysql("compradors_excepcions");
+ }
+ else
+ echo $query . "<BR>\n";
+ }
+ // Borrem compradors
+ $query = "DELETE FROM compradors WHERE data=FROM_UNIXTIME($data);";
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ if (!$resultat)
+ warn_mysql("compradors");
+ }
+ else
+ echo $query . "<BR>\n";
+
+ // Borrem excepcions
+ $query = "DELETE FROM excepcions WHERE data=FROM_UNIXTIME($data);";
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ if (!$resultat)
+ warn_mysql("excepcions");
+ }
+ else
+ echo $query . "<BR>\n";
+
+ // Borrem compres
+ $query = "DELETE FROM compres WHERE data=FROM_UNIXTIME($data);";
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ if (!$resultat)
+ warn_mysql("compres");
+ }
+ else
+ echo $query . "<BR>\n";
+
+ echo "<p>Si no hi ha cap error en línies anteriors, la compra ha estat eliminada.</p>\n";
+
+}
+?>
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/delete-pagament.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Eliminar pagament</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+<?php
+
+ include("getdb.inc");
+ // Variables globals
+ $touchdb = 1; // Si val 0, no es modificarà la base de dades
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+ $data = $_GET["id"];
+
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+ $gent = obtenir_gent($connexio);
+
+ $pagament = obtenir_pagament($data, $connexio);
+ $pagadors = obtenir_pagadors($data, $connexio);
+
+if(!isset($_GET["sure"]) && isset($_GET["id"]))
+{
+?>
+
+<H1 ALIGN=center>Eliminar pagament</H1>
+
+<H2>Dades generals</H2>
+
+<p> Dades del pagament: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Data i Hora:
+ <TD> <?php
+ echo date("d/m/Y H:i",$data); ?>
+
+<TR>
+ <TH> Comentari:
+ <TD> <?php
+ echo strtohtml($pagament["comentari"]); ?>
+
+</TABLE>
+
+
+<H2>Pagadors i cobradors</H2>
+<!-- Taula de compradors globals -->
+<TABLE BORDER=1>
+<CAPTION>Pagadors</CAPTION>
+<TR>
+ <TH>Persona
+ <TH>Pagat
+ <TH>Cobrat
+ <TH>Balanç
+<?php
+ $suma_pagat = 0;
+ $suma_cobrat = 0;
+ $suma_balans = 0;
+ foreach($gent as $key => $value)
+ {
+ if (isset($pagadors[$key]))
+ {
+ echo "<TR>\n\t<TD>". strtohtml($gent[$key]["nom"]) . "\n";
+
+ printf("\t<TD align=right>%.2f\n", $pagadors[$key]["pagat"]);
+ printf("\t<TD align=right>%.2f\n", $pagadors[$key]["cobrat"]);
+ printf("\t<TD align=right>%.2f\n", $pagadors[$key]["pagat"] - $pagadors[$key]["cobrat"]);
+
+ $suma_pagat += $pagadors[$key]["pagat"];
+ $suma_cobrat += $pagadors[$key]["cobrat"];
+ $suma_balans += $pagadors[$key]["pagat"] - $pagadors[$key]["cobrat"];
+ }
+ }
+ echo "<TR>\n\t<TH>Total\n";
+ printf("\t<TD align=right>%.2f\n", $suma_pagat);
+ printf("\t<TD align=right>%.2f\n", $suma_cobrat);
+ printf("\t<TD align=right>%.2f\n", $suma_balans);
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+<BR>
+<CENTER>
+<TABLE BORDER=2>
+<TR>
+ <TD><A HREF="delete-pagament?id=<?php echo $_GET["id"]; ?>&sure=yes"><STRONG>ELIMINAR SEGUR!</STRONG></A>
+</TR>
+</TABLE>
+</CENTER>
+
+<?php
+}
+elseif (isset($_GET["id"]) && $_GET["sure"] == "yes")
+{
+ // Borrem pagadors
+ $query = "DELETE FROM pagadors WHERE data=FROM_UNIXTIME($data);";
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ if (!$resultat)
+ warn_mysql("pagadors");
+ }
+ else
+ echo $query . "<BR>\n";
+
+ // Borrem pagament
+ $query = "DELETE FROM pagaments WHERE data=FROM_UNIXTIME($data);";
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ if (!$resultat)
+ warn_mysql("pagaments");
+ }
+ else
+ echo $query . "<BR>\n";
+
+ echo "<p>Si no hi ha cap error en línies anteriors, el pagament ha estat eliminat.</p>\n";
+
+}
+?>
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/faq.html Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Frequently Asked Questions</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<h1 align=center>Ètxelon - Frequently Asked Questions</h1>
+
+<A HREF="#faq1">1. Què és l'Ètxelon?</A> <BR>
+<A HREF="#faq2">2. Què són les <em>compres</em>?</A> <BR>
+<A HREF="#faq3">3. Què són els <em>pagaments</em>?</A> <BR>
+<A HREF="#faq4">4. Què és el preu d'una compra?</A> <BR>
+<A HREF="#faq5">5. Com funcionen les <em>excepcions</em>?</A> <BR>
+<A HREF="#faq6">6. Nosaltres fem servir <em>pot comú</em>.
+Com el fem participar al programa? </A> <BR>
+<A HREF="#faq7">7. Tenim un servei que s'ha de pagar a través del banc. Podem
+contar-lo amb el
+programa?</A> <BR>
+<A HREF="#faq8">8. Per anar més ràpid, podem crear una persona que representi
+a un
+conjunt?</A> <BR>
+<A HREF="#faq9">9. Quina diferència hi ha entre els habitants i els no
+habitants?</A> <BR>
+<A HREF="#faq10">10. Perquè haig de tenir fitxada a la gent, encara que només
+hi
+tingui un sol deute?</A> <BR>
+<A HREF="#faq11">11. Puc borrar a una persona?</A> <BR>
+<A HREF="#faq12">12. Si dec diners, com sé a qui els dec?</A> <BR>
+<A HREF="#faq13">13. Com sé que el programa compta bé?</A> <BR>
+<A HREF="#faq14">14. En quina moneda funciona el programa?</A> <BR>
+<A HREF="#faq15">15. Què volen dir els números en vermell?</A> <BR>
+<A HREF="#faq16">16. Puc estafar o ser estafat amb l'Ètxelon?</A> <BR>
+<A HREF="#faq17">17. Fa l'Ètxelon que no em tornin mai més els diners que
+em deuen?</A> <BR>
+<A HREF="#faq18">18. Al afegir una compra, què significa <em>a parts
+iguals</em>?</A> <BR>
+<A HREF="#faq19">19. Al afegir una compra, no em quadra al utilitzar
+repartiment <em>"cal pagar"</em></A>
+
+<HR WIDTH="70%">
+
+<h2><A NAME="faq1">1. Què és l'Ètxelon?</A></h2>
+
+<p>L'Ètxelon és un programa pensat per portar les comptes entre un grup de
+persones. Va ser inicialment creat per fer-ho entre companys de pis, però el seu
+ús es pot extendre a grups d'amics, o de fet, a qualsevol grup de persones que
+moguin diners entre ells. </p>
+<p>El programa controla tots els moviments diferenciant-los en dos tipus:
+<em>compres</em> i <em>pagaments</em>.
+Altres preguntes en aquesta FAQ fan referència als dubtes
+que hi puguin haver.</p>
+
+<h2><A NAME="faq2">2. Què són les <em>compres</em>?</A></h2>
+
+<p>Les <em>compres</em>
+ofereixen el control de diners quan es pagen diners a una tercera
+persona (normalment una empresa, una botiga), sense que aquesta els hagi
+de tornar mai. El
+cas més típíc és quan es compra alguna cosa a alguna botiga (d'aquí el nom de
+<em>compres</em>). </p>
+<p>En una compra hi ha dos moviments a destacar: pagar i haver de pagar. Hi ha
+persones que paguen la compra, i n'hi ha que són les que els tocaria pagar-la.
+Això depen de cada compra, i el programa ha de saber quina és la quantitat que
+ha pagat cadascú, i la que li tocaria pagar en realitat.</p>
+<p>El camp <em>pagat</em> determina com s'han pagat els diners a la botiga, i en
+total ha de sumar el <em>preu</em> de la compra. </p>
+
+<p>Els diners que paguen en una compra es consideren perduts (justificadament,
+clar). No es controla quants diners es dóna a una botiga). </p>
+
+<h2><A NAME="faq3">3. Què són els <em>pagaments</em>?</A></h2>
+
+<p>Els <em>pagaments </em>
+controlen els diners que es dónen d'una persona a una altra.
+Al contrari de les compres, estan pensats per moure diners <strong>entre les
+persones</strong>. S'entenen casos així els préstecs de diners, o bé quan volen
+saldar deutes (ja sigui parcial o totalment). De fet, no hi ha cap diferència
+entre aquests dos casos, ja que sempre és que unes persones paguen a unes
+altres. D'aquí el nom de <em>pagaments</em>.</p>
+
+<h2><A NAME="faq4">4. Què és el preu d'una compra?</A></h2>
+
+<p>El preu d'una compra és la quantitat de diners total que s'ha donat a la
+botiga. El programa es cuida de repartir les coses quan hi ha excepcions. </p>
+
+<h2><A NAME="faq5">5. Com funcionen les <em>excepcions</em>?</A></h2>
+
+<p>Les <em>excepcions </em>
+són parts d'una compra que s'han de repartir entre els
+compradors de diferent manera a la especificada de manera general. De moment (i
+per comoditat), només es poden repartir les
+<em>excepcions </em> a parts iguals.</p>
+
+<p>A les <em>excepcions </em>
+hi pot participar gent diferent que a la especificada de
+manera general a la compra, o bé els mateixos que han participat.
+El programa es
+cuidarà de controlar quant ha de deure o pagar cadascú als resultats finals.</p>
+
+<h2><A NAME="faq6">6. Nosaltres fem servir <em>pot comú</em>.
+Com el fem participar al programa?</A></h2>
+
+<p>El programa serveix per evitar els problemes que comporta utilitzar un pot
+comú. El que pretén és saber en qualsevol moment els deutes que es tenen amb la
+gent; aquests es poden saldar regularment, o anant-los equilibrant amb el temps.
+Això es pot fer fent que el que deu més diners pagui les compres, o bé que el
+que deu doni diners al que li deuen. O fins i tot, el que deu pot pagar a un
+altre que també deu. El programa s'encarrega de controlar-ho tot, perquè en
+qualsevol moment es vegi com van els deutes.</p>
+
+<p>És important <strong>no intentar barrejar</strong> l'ús d'un pot comú i
+l'Ètxelon.</p>
+
+<h2><A NAME="faq7">7. Tenim un servei que s'ha de pagar a través del banc. Podem
+contar-lo amb el
+programa?</A></h2>
+
+<p>Sí, i a més és un dels casos on el programa és més útil. S'ha de crear una
+persona "virtual" que serà el banc en qüestió. Llavors, ingressar diners al banc
+s'ha d'apuntar com si la gent donés diners a la persona <em>banc</em>. Quan
+l'empresa a qui hem de pagar ens cobra diners pel banc, ho apuntem com una
+compra que ha pagat la persona <em>banc</em> per nosaltres (nosaltres som els
+compradors, i ell és el que paga).</p>
+
+<p>A més, així sempre es veu reflexat a les comptes finals quants diners hi ha
+al banc. S'ha de mirar de que el banc sempre degui diners a la gent (perquè li
+n'hem deixat perquè ens pagui el servei), i no que li deguin, indicador de que
+no hi ha prous diners a la compta.</p>
+
+<h2><A NAME="faq8">8. Per anar més ràpid, podem crear una persona que representi
+a un
+conjunt?</A></h2>
+
+<p>Es pretén poder fer grups de persones, però encara no està fet. Es pot crear
+una persona que representi a un conjunt, però llavors no quedarà clara la
+relació entre aquesta persona i les que representa.</p>
+
+<h2><A NAME="faq9">9. Quina diferència hi ha entre els habitants i els no
+habitants?</A></h2>
+
+<p>En realitat no hi ha cap diferència. Simplement, els habitants són els únics
+que surten en alguns llistats poc detallats. També venen colocats per defecte a
+les compres, i a les comptes finals surten a devant de la resta de gent.</p>
+
+<p>Convertir en habitant a una persona (o cosa) que no sol itervenir a les
+compres només farà que haguem de retocar sovint els paràmetres que venen per
+defecte al afegir una nova compra. </p>
+
+<p>Aquí també es veu que el programa està molt enfocat a un pis d'estudiants. En
+el cas de grups d'amics, es podrien considerar habitants els que més tenen a
+veure en compres (els que compren les coses més sovint). Sempre hi ha d'haver
+com a mínim <strong>un</strong> habitant.</p>
+
+<h2><A NAME="faq10">10. Perquè haig de tenir fitxada a la gent, encara que només
+hi
+tingui un sol deute?</A></h2>
+
+<p>El programa controla deutes entre "entitats", que s'enten com a persones, o
+bé com a altres coses (com l'exemple del banc, vist més amunt). No es referencia
+pel nom de la gent, ja que podria portar problemes si alguns noms s'apunten de
+manera diferent.</p>
+
+<p>És possible que per qüestions d'escriptura diferent del nom, a algú se li
+acudeixi afegir una persona que ja existeix, però utilitzant un nom diferent per
+referenciar-lo. És fàcil preveure els problemes que això comportarà.</p>
+
+<h2><A NAME="faq11">11. Puc borrar a una persona?</A></h2>
+
+<p>Encara no està implementat, però és evident que no es pot borrar una persona
+que hagi tingut a veure en alguna compta. Quan hi hagi la opció, només es podrà
+fer si aquesta persona està lliure de qualsevol moviment (ja siguin compres o
+pagaments), perquè sinó faria desquadrar per sempre les comptes. </p>
+
+<h2><A NAME="faq12">12. Si dec diners, com sé a qui els dec?</A></h2>
+
+<p>El programa funciona d'una manera global; tothom ha tingut a veure en compres
+i pagaments amb moltes persones diferents (si més no, és possible que sigui
+així). Per tant, els diners es deuen a qui es deuen diners. </p>
+
+<p>En realitat no és important a qui es dónen els diners. Si algú vol quedar sense deutes, que els
+pagui a qualsevol altre, i els deutes passaran a ser de l'altre. De tota manera
+segurament és més còmode per a tothom que els diners es paguin a qui es deuen.
+</p>
+
+<h2><A NAME="faq13">13. Com sé que el programa compta bé?</A></h2>
+
+<p>Jo (l'autor) no garanteixo que funcioni bé. Només puc dir que l'utilitzo per
+les meves compres, i pel que he provat, no té cap error. Diria que
+només hi poden haver errades en el seu ús, bé sigui perquè no s'entenen bé els
+conceptes de funcionament, o bé perquè s'han entrat les dades malament. </p>
+
+<p>Cada cop que s'afegeix una compra o un pagament val la pena anar a
+visualitzar com ha quedat, ja que el programa ens oferirà un balanç total de la
+compra. Aquest ha de ser sempre de zero, ja que és la resta del que s'ha pagat
+amb el que s'ha de pagar en total. Si no és així, és que els valors s'han entrat
+malament. </p>
+
+<p>Les errades en entrar comptes o pagaments haurien de ser controlades pel
+programa, i avisar abans d'insertar els moviments a la base de dades. Ho sento,
+encara no està fet! He assumit que la gent l'utilitzarà correctament. </p>
+
+<h2><A NAME="faq14">14. En quina moneda funciona el programa?</A></h2>
+
+<p>Funciona per a qualsevol, sempre que totes les quantitats de diners
+estiguin en la mateixa moneda! En principi està pensat per a Euros, i per això
+s'ofereixen els resultats en dos decimals.</p>
+
+<h2><A NAME="faq15">15. Què volen dir els números en vermell?</A></h2>
+
+<p>Als balanços finals, són quantitats de diners que es deuen. En realitat,
+qualsevol número negatiu es mostra en vermell, per fer més còmode la lectura.
+</p>
+
+<h2><A NAME="faq16">16. Puc estafar o ser estafat amb l'Ètxelon?</A></h2>
+
+<p>Evidentment, tothom ha de fer servir el programa bé. Si algú canvia compres
+per altres, o les apunta intencionadament malament al seu favor, l'Ètxelon no
+hi pot fer res. Per tant, el bon càlcul dels deutes també està relacionat amb si
+la gent que utilitza l'Ètxelon és de confiança o no. </p>
+
+<h2><A NAME="faq17">17. Fa l'Ètxelon que no em tornin mai més els diners que
+em deuen?</A></h2>
+
+<p>Això queda a l'elecció de la gent que utilitza el programa. Evidentment, si
+no es paguen els deutes, quedaran tots reflexats als comptes finals.</p>
+
+<p>La manera normal d'utilitzar el programa és anar equilibrant els deutes
+fent pagar més en les compres a qui deu més diners, o bé que el més deutor
+dóni directament diners a l'altra gent una vegada superada una quantitat
+límit de diners. L'Ètxelon, evidentment, no controla res d'això; simplement
+ofereix xifres.</p>
+
+<h2><A NAME="faq18">18. Al afegir una compra, què significa <em>a parts
+iguals</em>?</A></h2>
+
+<p>Significa que els diners s'haurien d'haver pagat entre tots, repartits a
+parts iguals. Per exemple, si es fa una compra de 100 Euros, i es sel·leccionen
+quatre persones, a cadascuna li tocarà pagar-ne 25. </p>
+
+<p>Aquesta és l'opció que vé per defecte al afegir una nova compra. També es pot
+escollir repartir-ho amb percentatges, o bé directament indicant el que ha de
+pagar cadascú. L'opció de triar com repartir la compra està a l'esquerra de la
+forma de repartiment.</p>
+
+<h2><A NAME="faq19">19. Al afegir una compra, no em quadra al utilitzar
+repartiment <em>"cal pagar"</em></A></h2>
+
+<p>Això passa perquè hi ha excepcions. La suma del que es paga amb <em>"cal
+pagar"</em>
+no ha d'incloure les excepcions, tot i que aquestes estan incloses en el preu
+total. </p>
+
+<p>Per tant, la suma del que es paga d'aquesta manera ha de ser el total del
+preu de la compra <strong>menys</strong> el total de les excepcions segons cada
+persona. De fet, la suma del que es paga amb <em>"cal pagar"</em> és el que
+s'anomena <em>preu a repartir</em> quan es visualitza una compra.</p>
+
+<HR WIDTH="70%">
+
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</BODY>
+</HTML>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/getdb.inc Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,217 @@
+
+<?php
+ include("db-config.inc");
+
+ function obtenir_habitants($connection)
+ {
+ $resultat_habitants = mysql_query("SELECT id,nom FROM gent WHERE habitant=1 ORDER BY nom;", $connection);
+ if (!$resultat_habitants)
+ {
+?>
+ <p> <STRONG>ERROR:</STRONG> Error al obtenir
+ <STRONG>habitants</STRONG>! </p>
+<?php
+ echo "Error MYSQL:" . mysql_errno() . ": " . mysql_error() . "<BR>";
+ }
+
+ // Processem el resultat
+ while ($fila = mysql_fetch_row($resultat_habitants))
+ $habitant[] = array( "id" => $fila[0],
+ "nom" => $fila[1]);
+ mysql_free_result($resultat_habitants);
+ return $habitant;
+ }
+
+ function obtenir_altres($connection)
+ {
+ $resultat_altres = mysql_query("SELECT id,nom FROM gent WHERE habitant=0 ORDER BY nom;", $connection);
+
+ if (!$resultat_altres)
+ {
+?>
+ <p> <STRONG>ERROR:</STRONG> Error al obtenir
+ <STRONG>altres</STRONG>! </p>
+<?php
+ echo "Error MYSQL:" . mysql_errno().": ".mysql_error()."<BR>";
+ }
+
+ while ($fila = mysql_fetch_row($resultat_altres))
+ $altres[] = array( "id" => $fila[0],
+ "nom" => $fila[1]);
+ return $altres;
+ }
+
+ function obtenir_gent($connection)
+ {
+ $resultat = mysql_query("SELECT id,nom,habitant FROM gent ORDER BY habitant DESC ,nom ASC", $connection);
+
+ if (!$resultat)
+ {
+?>
+ <p> <STRONG>ERROR:</STRONG> Error al obtenir
+ <STRONG>gent</STRONG>! </p>
+<?php
+ echo "Error MYSQL:" . mysql_errno().": ".mysql_error()."<BR>";
+ }
+
+ while ($fila = mysql_fetch_row($resultat))
+ $gent[$fila[0]] = array( "nom" => $fila[1],
+ "habitant" => $fila[2]);
+ return $gent;
+ }
+
+ function obtenir_compra($date,$connection)
+ {
+ $resultat = mysql_query("SELECT UNIX_TIMESTAMP(data),botiga,motiu,preu,comentari FROM compres WHERE data=FROM_UNIXTIME(" . $date . ")", $connection);
+
+ // Només hi haurà una fila
+ $fila = mysql_fetch_row($resultat);
+ $compra["data"] = $fila[0];
+ $compra["botiga"] = $fila[1];
+ $compra["motiu"] = $fila[2];
+ settype($fila[3],"float");
+ $compra["preu"] = $fila[3];
+ $compra["comentari"] = $fila[4];
+
+ return $compra;
+ }
+
+ function obtenir_pagament($date,$connection)
+ {
+ $resultat = mysql_query("SELECT UNIX_TIMESTAMP(data),comentari FROM pagaments WHERE data=FROM_UNIXTIME(" . $date . ")", $connection);
+
+ // Només hi haurà una fila
+ $fila = mysql_fetch_row($resultat);
+ $pagament["data"] = $fila[0];
+ $pagament["comentari"] = $fila[1];
+
+ return $pagament;
+ }
+
+ function obtenir_excepcions($date,$connection)
+ {
+ $query = "SELECT id,article,preu FROM excepcions WHERE data=FROM_UNIXTIME($date) ORDER BY article";
+ $resultat = mysql_query($query, $connection);
+
+ while ($fila = mysql_fetch_row($resultat))
+ $excepcio[$fila[0]] = array("article" => $fila[1], "preu" => $fila[2]);
+
+ if (!isset($excepcio))
+ $excepcio=0;
+ return $excepcio;
+ }
+
+ function obtenir_compradors($date,$connection)
+ {
+ $query = "SELECT compradors.persona,compradors.pagat,compradors.toca_pagar FROM compradors,gent WHERE compradors.data=FROM_UNIXTIME($date) AND compradors.persona=gent.id ORDER BY gent.nom;";
+ $resultat = mysql_query($query, $connection);
+
+ // Puc fer lo de sota perquè per una sola compra no hi poden haver compradors repetits.
+ while ($fila = mysql_fetch_row($resultat))
+ $compradors[$fila[0]] = array( "pagat" => $fila[1],
+ "toca_pagar" => $fila[2]);
+ return $compradors;
+ }
+
+ function obtenir_compradors_excepcions($ex_id,$connection)
+ {
+ $query = "SELECT compradors_excepcions.persona,compradors_excepcions.toca_pagar FROM compradors_excepcions,gent WHERE compradors_excepcions.ex_id=$ex_id AND compradors_excepcions.persona = gent.id ORDER BY gent.nom;";
+ $resultat = mysql_query($query, $connection);
+
+ // Puc fer lo de sota perquè per una sola compra no hi poden haver compradors repetits.
+ while ($fila = mysql_fetch_row($resultat))
+ $compradors[$fila[0]] = array("toca_pagar" => $fila[1]);
+ return $compradors;
+ }
+
+ function obtenir_pagadors($date,$connection)
+ {
+ $query = "SELECT pagadors.persona,pagadors.pagat,pagadors.cobrat FROM pagadors,gent WHERE pagadors.data=FROM_UNIXTIME($date) AND pagadors.persona=gent.id ORDER BY gent.nom;";
+ $resultat = mysql_query($query, $connection);
+
+ // Puc fer lo de sota perquè per en un sol pagament no hi poden haver pagadors repetits
+ while ($fila = mysql_fetch_row($resultat))
+ $pagadors[$fila[0]] = array( "pagat" => $fila[1],
+ "cobrat" => $fila[2]);
+ return $pagadors;
+ }
+
+ function obtenir_compres($connection)
+ {
+ $resultat = mysql_query("SELECT UNIX_TIMESTAMP(data),botiga,motiu,preu,comentari FROM compres ORDER BY data DESC;", $connection);
+
+
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ settype($fila[3],"double");
+ $compres[$fila[0]] = array(
+ "botiga" => $fila[1],
+ "motiu" => $fila[2],
+ "preu" => $fila[3],
+ "comentari" => $fila[4]);
+ }
+
+ if (!isset($compres))
+ $compres=0;
+
+ return $compres;
+ }
+
+ function obtenir_pagaments($connection)
+ {
+ $resultat = mysql_query("SELECT UNIX_TIMESTAMP(data),comentari FROM pagaments ORDER BY data DESC;", $connection);
+
+
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $pagaments[$fila[0]] = array("comentari" => $fila[1]);
+ }
+
+ if (!isset($pagaments))
+ $pagaments=0;
+
+ return $pagaments;
+ }
+
+ // FUNCIONS PER GENERAR CODI HTML
+
+ function select_altres($variable, $default=-1)
+ {
+ $num_altres = count($GLOBALS["altres"]);
+
+ echo "<SELECT name=\"$variable\">\n";
+
+ foreach($GLOBALS["altres"] as $i)
+ {
+ echo "<OPTION value=\"" .$i["id"] . "\"";
+ if ($default == $i["id"])
+ echo " selected";
+ echo ">" . strtohtml($i["nom"]) . "\n";
+ }
+
+ echo "</SELECT>";
+ }
+
+ function strtosql($cadena)
+ {
+ return ereg_replace("\'", "\'", $cadena);
+ }
+
+ function strtohtml($cadena)
+ {
+ $new= ereg_replace("[<]", "<", $cadena);
+ $new= ereg_replace("[>]", ">'", $cadena);
+ $new= ereg_replace("[&]", "&'", $cadena);
+
+ return $new;
+ }
+
+ function pricetohtml($price)
+ {
+ if ($price < 0)
+ return sprintf("<FONT COLOR=\"FF0000\">%.2f</FONT>", $price);
+ else
+ return sprintf("%.2f", $price);
+
+ }
+?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/index.html Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Menú principal</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<h1 align=center>Ètxelon</h1>
+
+<CENTER>
+
+<h2>Menú</h2>
+
+<TABLE BORDER=1>
+<TR>
+ <TH>Compres
+ <TH>Pagaments
+ <TH>Gent
+<TR>
+ <TD ALIGN=center> <A HREF="list-compres">Llistat</A>
+ <TD ALIGN=center> <A HREF="list-pagaments">Llistat</A>
+ <TD ALIGN=center> <A HREF="list-gent">Llistat</A>
+<TR>
+ <TD ALIGN=center> <A HREF="update-compra">Afegir nova</A>
+ <TD ALIGN=center> <A HREF="update-pagament">Afegir nou</A>
+ <TD ALIGN=center> <A HREF="update-gent">Afegir nova</A>
+<TR>
+ <TD COLSPAN=3 ALIGN=center> <A HREF="calc-deutes">Calcular deutes</A>
+</TABLE>
+
+<BR>
+
+<TABLE BORDER=1>
+<TR>
+ <TH COLSPAN=3>Documentació
+<TR>
+ <TD COLSPAN=3 ALIGN=center> <A HREF="faq">F.A.Q.</A>
+</TABLE>
+</CENTER>
+
+<HR WIDTH="70%">
+
+<H2>Descripció</H2>
+
+<P>Aquest és un sistema de control de les compres i préstecs que es fan entre
+els habitants d'un pis i els seus amics.
+Se suposa que s'ha de fer servir quan
+es vulguin controlar detalladament els deutes que hi ha entre els habitants, i
+entre els habitants i els amics. </P>
+
+<HR WIDTH="70%">
+
+<H2>Utilització</H2>
+
+<!--
+<TABLE ALIGN=center BORDER=2>
+<TR>
+<TD><STRONG>IMPORTANT!!!!!</STRONG> No utilitzeu el caràcter
+<em>apòstrof</em> (') en cap camp dels formularis!
+</TABLE>
+-->
+
+
+<UL>
+<LI><strong>Compres</strong>
+ <UL>
+ <LI>Les compres indiquen la manera en què perden controladament diners els
+ habitants del pis (i amics). Normalment això passa quan es compren coses.
+ <LI>L'opció <em>"afegir nova compra"</em> permet que qualsevol persona
+ (de la <em>gent</em>) participi en la compra, ja sigui perquè
+ s'ha de repartir entre ell, o bé perquè alguna cosa era per ell.
+ </UL>
+<LI><STRONG>Pagaments</STRONG>
+ <UL>
+ <LI>Els pagaments són la manera en què s'intercanvien diners entre ells els
+ habitants del pis i els amics. Pot ser tan per préstecs com per passar
+ comptes d'antics deutes.
+ <LI>Si es vol fer un control minuciós dels diners, s'haurien de guardar tots
+ els préstecs i retorns de diners que es fan.
+ </UL>
+<LI><STRONG>Gent</STRONG>
+ <UL>
+ <LI>Fa referència a la gent que té a veure amb les compres. N'hi ha dos
+ tipus: els <em>habitants del pis</em> i els <em>altres</em> (amics).
+ <LI>Només es poden portar els comptes de la gent controlada per la base de
+ dades. Tothom que vulgui ser tingut en compte en els deutes, ha d'estar
+ fitxat.
+ <LI>Normalment s'afegira gent que no és del pis (<em>no habitant</em>), o
+ sigui, amics amb qui s'han de passar comptes.
+ </UL>
+<LI>Calcular deutes
+ <UL>
+ <LI>Aquesta última opció serveix per veure l'estat actual de les comptes de
+ la gent. Es tenen en compte tant les compres com els pagaments.
+ </UL>
+</UL>
+
+<HR WIDTH="70%">
+
+<p> The whole engine validates HTML 3.2
+ <a href="http://validator.w3.org/check/referer"><img border="0"
+ src="/valid-html32.png"
+ alt="Valid HTML 3.2!" height="31" width="88"></a>
+</p>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/list-compres.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Consulta de compres</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<h1 align=center>Ètxelon</h1>
+<h2>Total de compres</h2>
+
+<?php
+ include("getdb.inc");
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+?>
+
+<TABLE BORDER=1>
+<TR>
+ <TH ROWSPAN=2>Data
+ <TH ROWSPAN=2>Botiga
+ <TH ROWSPAN=2>Motiu
+ <TH ROWSPAN=2>Preu
+ <TH COLSPAN=<?php echo $num_habitants?>>Pagat
+ <TH ROWSPAN=2>Excepcions
+ <TH ROWSPAN=2>Eliminiar
+<TR>
+<?php
+ foreach($habitants as $i)
+ echo "\t<TH>" . strtohtml($i["nom"]). "\n";
+?>
+
+<?php
+ $query = "SELECT UNIX_TIMESTAMP(data),botiga,motiu,preu FROM compres ORDER BY data DESC";
+ $resultat = mysql_query($query, $connexio);
+
+ // Per cada compra ...
+ $num_compres = 0;
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $data = $fila[0];
+ $date_shown = date("d/m/Y H:i",$data);
+ printf("<tr>\n\t<td><A HREF=\"view-compra?id=%s\">%s</A>\n", $data,
+ $date_shown);
+ printf("\t<td>%s\n", strtohtml($fila[1]));
+ printf("\t<td>%s\n", strtohtml($fila[2]));
+ printf("\t<td align=right>%s\n", pricetohtml($fila[3]));
+
+ // Obtenim lo que toca pagar a cadascú
+ $query = "SELECT compradors.persona,compradors.pagat,compradors.toca_pagar FROM compradors,gent WHERE compradors.data = FROM_UNIXTIME($data) AND compradors.persona = gent.id AND gent.habitant = 1 ORDER BY gent.nom;";
+ $resultat2 = mysql_query($query, $connexio);
+
+ unset($compradors);
+ while ($fila2 = mysql_fetch_row($resultat2))
+ {
+ $compradors[$fila2[0]] = array( "pagat" => $fila2[1],
+ "toca_pagar" => $fila2[2]);
+ }
+ foreach($habitants as $i)
+ {
+ if (isset($compradors[$i["id"]]))
+ printf("\t<td align=right>%s\n", pricetohtml($compradors[$i["id"]]["pagat"]));
+ else
+ printf("\t<td align=right>%s\n", pricetohtml(0));
+ }
+ $excepcions = obtenir_excepcions($data,$connexio);
+ if ($excepcions != 0)
+ printf("\t<td align=right>%d\n", count($excepcions));
+ else
+ printf("\t<td align=right>0\n");
+ printf("\t<td><A HREF=\"delete-compra?id=%s\">Eliminar</A>\n", $data);
+
+ $num_compres++;
+ }
+
+?>
+</TABLE>
+
+<P>Hi ha un total de <?php echo $num_compres ?> compres. </P>
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/list-gent.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Llistat de gent</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<h1 align=center>Ètxelon</h1>
+<h2>Llistat de gent</h2>
+
+<?php
+ include("getdb.inc");
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+
+ mysql_select_db($mysql_db, $connexio);
+
+
+ // Crides a funcions per obtenir parametres
+ $altres = obtenir_altres($connexio);
+ $habitants = obtenir_habitants($connexio);
+?>
+
+<TABLE BORDER=0>
+<TR>
+<TD VALIGN=top>
+
+ <TABLE BORDER=1>
+ <CAPTION>Habitants</CAPTION>
+ <TR>
+ <TH>Id
+ <TH>Nom
+<?php
+ foreach($habitants as $i)
+ {
+ echo "<TR>\n";
+ echo "\t<TD>" . $i["id"] . "\n";
+ echo "\t<TD>" . strtohtml($i["nom"]) . "\n";
+ }
+?>
+ </TABLE>
+<TD VALIGN=top>
+
+ <TABLE BORDER=1>
+ <CAPTION>Altres</CAPTION>
+ <TR>
+ <TH>Id
+ <TH>Nom
+<?php
+ foreach($altres as $i)
+ {
+ echo "<TR>\n";
+ echo "\t<TD>" . $i["id"] . "\n";
+ echo "\t<TD>" . strtohtml($i["nom"]) . "\n";
+ }
+?>
+ </TABLE>
+<TD VALIGN=top>
+ <UL>
+ <LI>Els noms estan ordenats alfabèticament
+ <LI>El camp <em>"Id"</em> és l'identificador que té la persona dins la
+ base de dades.
+ </UL>
+
+</TABLE>
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/list-pagaments.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Consulta de pagaments</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<h1 align=center>Ètxelon</h1>
+<h2>Total de pagaments</h2>
+
+<?php
+ include("getdb.inc");
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+?>
+
+<TABLE BORDER=1>
+<TR>
+ <TH ROWSPAN=2>Data
+ <TH COLSPAN=<?php echo $num_habitants?>>Pagat
+ <TH COLSPAN=<?php echo $num_habitants?>>Cobrat
+ <TH ROWSPAN=2>Comentari
+ <TH ROWSPAN=2>Eliminar
+<TR>
+<?php
+ foreach($habitants as $i)
+ echo "\t<TH>" . strtohtml($i["nom"]) . "\n";
+ foreach($habitants as $i)
+ echo "\t<TH>" . strtohtml($i["nom"]) . "\n";
+?>
+
+<?php
+ $query = "SELECT UNIX_TIMESTAMP(data),comentari FROM pagaments ORDER BY data DESC";
+ $resultat = mysql_query($query, $connexio);
+
+ // Per cada pagament ...
+ $num_pagaments = 0;
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $data = $fila[0];
+ $date_shown = date("d/m/Y H:i",$data);
+ printf("<tr>\n\t<td><A HREF=\"view-pagament?id=%s\">%s</A>\n",
+ $data, $date_shown);
+
+ /*
+ // Obtenim lo que toca pagar a cadascú
+ $query = "SELECT pagadors.persona,pagadors.pagat,pagadors.cobrat FROM pagadors,gent WHERE pagadors.data = FROM_UNIXTIME($data) AND pagadors.persona = gent.id AND gent.habitant = 1 ORDER BY gent.nom;";
+ $resultat2 = mysql_query($query, $connexio);
+
+ while ($fila2 = mysql_fetch_row($resultat2))
+ {
+ $pagadors[$fila2[0]] = array( "pagat" => $fila2[1]);
+ }
+ */
+ $pagadors = obtenir_pagadors($data, $connexio);
+ foreach($habitants as $i)
+ {
+ if (isset($pagadors[$i["id"]]))
+ printf("\t<td align=right>%s\n", pricetohtml($pagadors[$i["id"]]["pagat"]));
+ else
+ printf("\t<td align=right>%s\n", pricetohtml(0));
+ }
+ foreach($habitants as $i)
+ {
+ if (isset($pagadors[$i["id"]]))
+ printf("\t<td align=right>%s\n", pricetohtml($pagadors[$i["id"]]["cobrat"]));
+ else
+ printf("\t<td align=right>%s\n", pricetohtml(0));
+ }
+ // Comentari
+ printf("\t<td>%s\n", strtohtml($fila[1]));
+ // Eliminar
+ printf("\t<td align=center><A HREF=\"delete-pagament?id=%s\">Eliminar</A>\n", $data);
+ $num_pagaments++;
+ }
+
+?>
+</TABLE>
+
+<P>Hi ha un total de <?php echo $num_pagaments ?> pagaments. </P>
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/list-persona.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,215 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Consulta de compres</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<?php
+ include("getdb.inc");
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+
+ $gent = obtenir_gent($connexio);
+
+ $persona = $_GET["user_id"];
+
+
+ // Necessitem $GET_["user_id"]
+?>
+
+<h1 align=center>Ètxelon</h1>
+<h1 align=center>Moviments de
+"<EM><?php echo strtohtml($gent[$persona]["nom"]) ?></EM>"</h1>
+
+<h2>Compres on ha tingut a veure</h2>
+
+
+<TABLE BORDER=1>
+<TR>
+ <TH>Data
+ <TH>Botiga
+ <TH>Motiu
+ <TH>Preu
+ <TH>Pagat
+ <TH>Excepcions
+ <TH>Eliminiar
+<?php
+ $query = "SELECT UNIX_TIMESTAMP(compres.data),compres.botiga,compres.motiu,compres.preu FROM compres,compradors WHERE compradors.data=compres.data AND compradors.persona=$persona GROUP BY compres.data ORDER BY compres.data DESC;";
+ $resultat = mysql_query($query, $connexio);
+
+ // Per cada compra ...
+ $num_compres = 0;
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $data = $fila[0];
+ $date_shown = date("d/m/Y H:i",$data);
+ printf("<tr>\n\t<td><A HREF=\"view-compra?id=%s\">%s</A>\n", $data,
+ $date_shown);
+ printf("\t<td>%s\n", strtohtml($fila[1]));
+ printf("\t<td>%s\n", strtohtml($fila[2]));
+ printf("\t<td align=right>%s\n", pricetohtml($fila[3]));
+
+ // Obtenim lo que toca pagar a cadascú
+ $query = "SELECT compradors.persona,compradors.pagat,compradors.toca_pagar FROM compradors WHERE compradors.data = FROM_UNIXTIME($data) AND compradors.persona = $persona;";
+ $resultat2 = mysql_query($query, $connexio);
+
+ unset($compradors);
+ // Hauria de sortir només 1 fila! 1 per la persona que hem escollit.
+ while ($fila2 = mysql_fetch_row($resultat2))
+ {
+ $compradors[$fila2[0]] = array( "pagat" => $fila2[1],
+ "toca_pagar" => $fila2[2]);
+ }
+
+ if (isset($compradors[$persona]))
+ printf("\t<td align=right>%s\n", pricetohtml($compradors[$persona]["pagat"]));
+ else
+ printf("\t<td align=right>%s\n", pricetohtml(0));
+
+ $excepcions = obtenir_excepcions($data,$connexio);
+ if ($excepcions != 0)
+ printf("\t<td align=right>%d\n", count($excepcions));
+ else
+ printf("\t<td align=right>0\n");
+ printf("\t<td><A HREF=\"delete-compra?id=%s\">Eliminar</A>\n", $data);
+
+ $num_compres++;
+ }
+
+?>
+</TABLE>
+
+<P>En/La <?php echo $gent[$persona]["nom"] ?> té a veure en <?php echo $num_compres ?> compres. </P>
+
+<HR WIDTH="70%">
+
+
+<h2>Compres on ha tingut a veure <EM>amb excepcions</EM></h2>
+
+<TABLE BORDER=1>
+<TR>
+ <TH>Data
+ <TH>Botiga
+ <TH>Motiu
+ <TH>Preu
+ <TH>Pagat
+ <TH>Excepcions
+ <TH>Eliminiar
+<?php
+ $query = "SELECT UNIX_TIMESTAMP(compres.data),compres.botiga,compres.motiu,compres.preu FROM compres,compradors_excepcions,excepcions WHERE excepcions.data=compres.data AND compradors_excepcions.ex_id=excepcions.id AND compradors_excepcions.persona=$persona GROUP BY compres.data ORDER BY compres.data DESC;";
+ $resultat = mysql_query($query, $connexio);
+
+ // Per cada compra ...
+ $num_compres = 0;
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $data = $fila[0];
+ $date_shown = date("d/m/Y H:i",$data);
+ printf("<tr>\n\t<td><A HREF=\"view-compra?id=%s\">%s</A>\n", $data,
+ $date_shown);
+ printf("\t<td>%s\n", strtohtml($fila[1]));
+ printf("\t<td>%s\n", strtohtml($fila[2]));
+ printf("\t<td align=right>%s\n", pricetohtml($fila[3]));
+
+ // Obtenim lo que toca pagar a cadascú
+ $query = "SELECT compradors.persona,compradors.pagat,compradors.toca_pagar FROM compradors WHERE compradors.data = FROM_UNIXTIME($data) AND compradors.persona = $persona;";
+ $resultat2 = mysql_query($query, $connexio);
+
+ unset($compradors);
+ // Hauria de sortir només 1 fila! 1 per la persona que hem escollit.
+ while ($fila2 = mysql_fetch_row($resultat2))
+ {
+ $compradors[$fila2[0]] = array( "pagat" => $fila2[1],
+ "toca_pagar" => $fila2[2]);
+ }
+
+ if (isset($compradors[$persona]))
+ printf("\t<td align=right>%s\n", pricetohtml($compradors[$persona]["pagat"]));
+ else
+ printf("\t<td align=right>%s\n", pricetohtml(0));
+
+ $excepcions = obtenir_excepcions($data,$connexio);
+ if ($excepcions != 0)
+ printf("\t<td align=right>%d\n", count($excepcions));
+ else
+ printf("\t<td align=right>0\n");
+ printf("\t<td><A HREF=\"delete-compra?id=%s\">Eliminar</A>\n", $data);
+
+ $num_compres++;
+ }
+
+?>
+</TABLE>
+
+<P>En/La <?php echo $gent[$persona]["nom"] ?> té a veure <em>amb excepcions</em> en <?php echo $num_compres ?> compres. </P>
+
+<HR WIDTH="70%">
+
+<!-- ************* PAGAMENTS ************** -->
+
+<h2>Pagaments</h2>
+
+
+<TABLE BORDER=1>
+<TR>
+ <TH ROWSPAN=1>Data
+ <TH COLSPAN=1>Balanç
+ <TH ROWSPAN=1>Comentari
+ <TH ROWSPAN=1>Eliminar
+<?php
+ $query = "SELECT UNIX_TIMESTAMP(pagaments.data),pagaments.comentari FROM pagaments,pagadors WHERE pagaments.data=pagadors.data AND pagadors.persona=$persona ORDER BY pagaments.data DESC";
+ $resultat = mysql_query($query, $connexio);
+
+ // Per cada pagament ...
+ $num_pagaments=0;
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $data = $fila[0];
+ $date_shown = date("d/m/Y H:i",$data);
+ printf("<tr>\n\t<td><A HREF=\"view-pagament?id=%s\">%s</A>\n",
+ $data, $date_shown);
+
+ /*
+ // Obtenim lo que toca pagar a cadascú
+ $query = "SELECT pagadors.persona,pagadors.pagat,pagadors.cobrat FROM pagadors,gent WHERE pagadors.data = FROM_UNIXTIME($data) AND pagadors.persona = gent.id AND gent.habitant = 1 ORDER BY gent.nom;";
+ $resultat2 = mysql_query($query, $connexio);
+
+ while ($fila2 = mysql_fetch_row($resultat2))
+ {
+ $pagadors[$fila2[0]] = array( "pagat" => $fila2[1]);
+ }
+ */
+ $pagadors = obtenir_pagadors($data, $connexio);
+ if (isset($pagadors[$persona]))
+ printf("\t<td align=right>%s\n", pricetohtml($pagadors[$persona]["cobrat"] - $pagadors[$persona]["pagat"]));
+ else
+ printf("\t<td align=right>%s\n", pricetohtml(0));
+ // Comentari
+ printf("\t<td>%s\n", strtohtml($fila[1]));
+ // Eliminar
+ printf("\t<td align=center><A HREF=\"delete-pagament?id=%s\">Eliminar</A>\n", $data);
+
+ $num_pagaments++;
+ }
+
+?>
+</TABLE>
+
+
+<P>En/La <?php echo $gent[$persona]["nom"] ?> té a veure en <?php echo $num_pagaments ?> pagaments. </P>
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,16 @@
+<?
+ function test($num)
+ {
+ for ($i=0; $i < $num; $i++)
+ $array[$i+10] = chr(32+$i);
+ return $array;
+ }
+
+ $a = test(50);
+ reset($a);
+
+ while(list($key,$val) = each($a))
+ {
+ echo "Element ". $key ." és \"" . $val . "\". <br>";
+ }
+?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/update-compra.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,606 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Edició de les compres</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<H1 ALIGN=center>Ètxelon</H1>
+
+<?php
+
+ include("getdb.inc");
+
+ // Variables globals
+ $touchdb = 1; // Tocar la base de dades
+
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+
+if(!isset($_POST["afegir"]) && !isset($_GET["id"]))
+{
+?>
+
+<!-- DEMANAR PER AFEGIR COSES -->
+
+<?php
+ // VARIALBES
+ if(isset($_GET["num_excepcions"]))
+ $num_excepcions= $_GET["num_excepcions"];
+ elseif(isset($_POST["num_excepcions"]))
+ $num_excepcions= $_POST["num_excepcions"];
+ else
+ $num_excepcions=3;
+
+ if(isset($_GET["num_altres"]))
+ $num_altres= $_GET["num_altres"];
+ elseif(isset($_POST["num_altres"]))
+ $num_altres= $_POST["num_altres"];
+ else
+ $num_altres=1;
+
+ if(isset($_GET["num_altres_excepcions"]))
+ $num_altres_excepcions = $_GET["num_altres_excepcions"];
+ elseif(isset($_POST["num_altres_excepcions"]))
+ $num_altres_excepcions = $_POST["num_altres_excepcions"];
+ else
+ $num_altres_excepcions=1;
+
+ // Considerem que estem retocant una compra que volem afegir, si hi ha botiga definit.
+ // Això es fa servir per les checkboxes que per default estan ON, i es vol saber si s'havien desactivat.
+ if(isset($_POST["botiga"]))
+ $retocant=1;
+ else
+ $retocant=0;
+?>
+
+<H2>Afegir nova compra</H2>
+
+<form action="update-compra" method="post">
+
+<input type=hidden name=num_excepcions value=<?php
+ echo $num_excepcions;
+ ?>>
+<input type=hidden name=num_altres value=<?php
+ echo $num_altres;
+ ?>>
+<input type=hidden name=num_altres_excepcions value=<?php
+ echo $num_altres_excepcions;
+ ?>>
+
+<p> Dades de la compra: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Data:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="dia"
+ size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["dia"];
+ else
+ echo date('d');
+ ?>">
+ <input type="text" name="mes" size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["mes"];
+ else
+ echo date('m');
+ ?>">
+ <input type="text" name="any" size=4 maxlength=4
+ value="<?php
+ if ($retocant)
+ echo $_POST["any"];
+ else
+ echo date('Y');
+ ?>">
+
+<TR>
+ <TH>Hora:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="hora"
+ size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["hora"];
+ else
+ echo date('H');
+ ?>">
+ <input type="text" name="minut" size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["minut"];
+ else
+ echo date('i');
+ ?>">
+
+<TR>
+ <TH>Botiga:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="botiga" size=30 maxlength=30 value="<?php
+ if(isset($_POST["botiga"]))
+ echo strtohtml($_POST["botiga"]);
+ ?>">
+<TR>
+ <TH>Motiu:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="motiu" size=30 maxlength=250 value="<?php
+ if(isset($_POST["motiu"]))
+ echo strtohtml($_POST["motiu"]);
+ ?>">
+<TR>
+ <TH>Comentari:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="comentari" size=40 maxlength=250 value="<?php
+ if(isset($_POST["comentari"]))
+ echo strtohtml($_POST["comentari"]);
+ ?>">
+<TR>
+ <TH>Preu:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="preu" size=6 maxlength=8 value="<?php
+ if(isset($_POST["preu"]))
+ echo $_POST["preu"];
+ ?>">
+<TR>
+ <TH>
+<?php
+ // Imprimim el nom dels habitants
+ foreach($habitants as $i)
+ echo "\t<TH>" . strtohtml($i["nom"]). "\n";
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TH>";
+ if(isset($_POST["altres"][$i]))
+ select_altres("altres[$i]", $_POST["altres"][$i]);
+ else
+ select_altres("altres[$i]");
+ echo "\n";
+ }
+?>
+<TR>
+ <TH>Pagat:
+<?php
+ foreach($habitants as $i)
+ {
+ echo "\t<TD><input type=\"text\" name=\"pagat[" . $i["id"] . "]\" size=6 maxlength=8 value=";
+ if (isset($_POST["pagat"][$i["id"]]))
+ echo $_POST["pagat"][$i["id"]];
+ else
+ echo "0";
+ echo ">\n";
+ }
+?>
+<?php
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TD><input type=\"text\" name=\"pagat_altres[$i]\" size=6 maxlength=8 value=";
+ if (isset($_POST["pagat_altres"][$i]))
+ echo $_POST["pagat_altres"][$i];
+ else
+ echo "0";
+ echo ">\n";
+ }
+?>
+<TR>
+ <TH><input type="radio" name="percentatges" value=checkboxes checked>Parts iguals:
+<?php
+ foreach($habitants as $i)
+ {
+ echo "\t<TD><input type=\"checkbox\" name=\"checkbox[" . $i["id"] . "]\" value=checked ";
+ // Codi raro?
+ if (isset($_POST["checkbox"][$i["id"]]))
+ echo "checked";
+ else
+ if (!$retocant)
+ echo "checked";
+ echo ">\n";
+ }
+?>
+<?php
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TD><input type=\"checkbox\" name=\"checkbox_altres[" . $i. "]\" value=checked ";
+ // Codi raro?
+ if (isset($_POST["checkbox_altres"][$i]))
+ echo "checked";
+ echo ">\n";
+ }
+?>
+<TR>
+ <TH><input type="radio" name="percentatges" value=si>Percentatges:
+<?php
+ foreach($habitants as $i)
+ {
+ echo "\t<TD><input type=\"text\" name=\"percent[" . $i["id"] . "]\" size=3 maxlength=6 value=\"";
+ if (isset($_POST["percent"][$i["id"]]))
+ echo $_POST["percent"][$i["id"]];
+ else
+ echo 100/$num_habitants;
+ echo "\">\n";
+ }
+?>
+<?php
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TD><input type=\"text\" name=\"percent_altres[$i]\" size=3 maxlength=6 value=\"\n";
+ if (isset($_POST["percent_altres"][$i]))
+ echo $_POST["percent_altres"][$i];
+ else
+ echo "0";
+ echo "\">\n";
+ }
+?>
+<TR>
+ <TH><input type="radio" name="percentatges" value=no>Cal pagar:
+<?php
+ foreach($habitants as $i)
+ {
+ echo "\t<TD><input type=\"text\" name=\"tocapagar[" . $i["id"] . "]\" size=6 maxlength=8 value=\"";
+ if (isset($_POST["tocapagar"][$i["id"]]))
+ echo $_POST["tocapagar"][$i["id"]];
+ else
+ echo "0";
+ echo "\">\n";
+ }
+?>
+<?php for($i=0; $i<$num_altres;$i++)
+ {
+ echo "<TD><input type=\"text\" name=\"tocapagar_altres[$i]\" size=6 maxlength=8 value=\"";
+ if (isset($_POST["tocapagar_altres"][$i]))
+ echo $_POST["tocapagar_altres"][$i];
+ else
+ echo "0";
+ echo "\">\n";
+ }
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+
+<H2>Excepcions</H2>
+<p>Empleneu les necessàries. S'agafaran si hi ha algo a
+ <STRONG>Article</STRONG>):</p>
+
+<TABLE BORDER=0>
+<TR>
+ <TH>Excepció
+ <TH>Article
+ <TH>Preu
+ <TH COLSPAN=<?php echo $num_habitants+$num_excepcions;?>>Compradors
+
+<?php
+ // Imprimim les excepcions amb altra gent
+ for ($i=1;$i<=$num_excepcions;$i++)
+ {
+?>
+<TR>
+ <TD COLSPAN=3>
+<?php
+ foreach($habitants as $j)
+ echo "\t<TH>" . strtohtml($j["nom"]) . "\n";
+?>
+<?php
+ for($j=0; $j<$num_altres_excepcions;$j++)
+ {
+ echo "\t<TH>";
+ if(isset($_POST["ealtres"][$i][$j]))
+ select_altres("ealtres[$i][$j]", $_POST["ealtres"][$i][$j]);
+ else
+ select_altres("ealtres[$i][$j]");
+ echo "\n";
+ }
+?>
+<TR>
+ <TH><?php echo $i; ?>
+
+ <TD><input type="text" name="earticle[<?php echo $i;?>]" size=30 maxlength=30 <?php
+ if (isset($_POST["earticle"][$i]))
+ echo "value=\"" . strtohtml($_POST["earticle"][$i]) . "\"";
+ ?>>
+ <TD><input type="text" name="epreu[<?php echo $i;?>]" size=6 maxlength=8 <?php
+ if (isset($_POST["epreu"][$i]))
+ echo "value=\"" . $_POST["epreu"][$i] . "\"";
+ ?>>
+<?php
+ foreach($habitants as $j)
+ {
+ echo "\t<TD><input type=\"checkbox\" name=\"eparticipat[$i][". $j["id"] . "]\" value=si";
+ if(isset($_POST["eparticipat"][$i][$j["id"]]))
+ if($_POST["eparticipat"][$i][$j["id"]] == "si")
+ echo " checked";
+ echo ">\n";
+ }
+ for ($j=0;$j<$num_altres_excepcions;$j++)
+ {
+ echo "\t<TD><input type=\"checkbox\" name=\"eparticipat_altres[$i][$j]\" value=si";
+ if(isset($_POST["eparticipat_altres"][$i][$j]))
+ if($_POST["eparticipat_altres"][$i][$j] == "si")
+ echo " checked";
+ echo ">\n";
+ }
+}
+?>
+
+</TABLE>
+
+<HR WIDTH="70%">
+<center>
+<input type=submit value="Afegir compra" name=afegir>
+<input type=reset value="Ressetejar formulari">
+</center>
+
+
+<H2>Alterar el formulari</H2>
+
+<p>Seleccionar el número d'excepcions:
+ <input type=text name=num_excepcions size=2 maxlength=2 value=<?php echo $num_excepcions ?>>
+</p>
+
+<p>Seleccionar el número d'altra gent (general) a la compra:
+ <input type=text name=num_altres size=2 maxlength=2 value=<?php echo $num_altres ?>>
+</p>
+
+<p>Seleccionar el número d'altra gent (a les excepcions) a la compra:
+ <input type=text name=num_altres_excepcions size=2 maxlength=2 value=<?php echo $num_altres_excepcions ?>>
+</p>
+
+<p align=center><input type=submit value="Canviar" name=canviar> </p>
+</form>
+
+<HR WIDTH="70%">
+
+<H2>Utilització</H2>
+
+<ul>
+<li>Per evitar que una compra s'inserti dues vegades, és important que aquesta
+tingui la <em>data</em> i la <em>hora</em> del rebut de compra.
+<li>El comentari és totalment opcional. És normal no escriure-hi res.
+<!-- De fet, la opció del comentari va ser afegida més tard -->
+<li>El <em>preu</em> ha de ser la suma del que s'ha <em>pagat</em>.
+<li>Els <em>percentatges</em> han de sumar <strong>100</strong>.
+<li>En cas de <em>no utilitzar percentatges</em>, cal sel·leccionar la opció
+ <em>"Cal pagar"</em>. El contingut d'aquests camps (per raons lògiques) ha
+ de ser el preu que toca pagar a cadascú finalment. Això significa que s'han
+ de tenir en compte les excepcions (i els que les paguen) a l'hora d'utilitzar
+ la opció <em>"Cal pagar"</em>. La suma dels camps <em>"Cal pagar"</em> ha
+ de sumar igualment el <em>preu</em> de la compra.
+<li>S'ha d'anar en compte en no deixar un preu buit en un article (s'assumirà
+ <strong>0</strong>), o en no sel·leccionar cap comprador. Això és típic quan
+ sense voler s'emplena el camp <em>"article"</em> d'una excepció que no volem
+ que es tingui en compte.
+<li>És important saber el número d'excepcions i de gent no-habitant del pis que
+ intervindrà en la compra abans de teclejar-la, ja que alterar qualsevol de
+ les variables que <em>alteren el formulari</em> suposa perdre totes les dades
+ dels camps ja emplenats.
+</ul>
+
+<!-- FI DE DEMANAR PER AFEGIR COSES -->
+
+<?php
+} // Fi del if del 'submit'
+else if(isset($_POST["afegir"]))
+{
+ // Afegir les coses a la base de dades
+
+ // Falta xequejar si les dades estan bé
+
+ if (mysql_select_db($mysql_db,$connexio))
+ {
+ settype($_POST["hora"], "integer");
+ settype($_POST["minut"], "integer");
+ settype($_POST["dia"], "integer");
+ settype($_POST["mes"], "integer");
+ settype($_POST["any"], "integer");
+
+ settype($_POST["preu"], "double"); // Preu=0 ERROR TO HANDLE ***
+
+ // ** El preu ha de ser la suma de lo que ha pagat tothom. O inferior!
+ $data = mktime($_POST["hora"], $_POST["minut"], 0, $_POST["mes"], $_POST["dia"], $_POST["any"]);
+
+ // Inserto la fila a 'compres'
+ $query = "INSERT INTO compres VALUES(FROM_UNIXTIME($data),'" . strtosql($_POST["botiga"]) . "','". strtosql($_POST["motiu"]) . "', ". $_POST["preu"] . ", '" . strtosql($_POST["comentari"]) ."');";
+ $resultat = 1; // Per si no es fa la query, assumim que no hi ha errors
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+
+
+ // Comprovem el resultat de l'inserció a "compres"
+ if (!$resultat)
+ {
+?>
+ <p> <STRONG>ERROR:</STRONG> Error al actualitzar les dades a
+ <STRONG>compres</STRONG>! </p>
+<?php
+ echo mysql_errno().": ".mysql_error()."<BR>";
+ }
+ else
+ {
+ $preu_per_compradors = $_POST["preu"];
+
+ // Afegim les excepcions
+ for ($i = 1; $i <= $_POST["num_excepcions"]; $i++)
+ {
+ if($_POST["earticle"][$i] != "")
+ {
+ settype($_POST["epreu"][$i], "double"); // Preu=0 ERROR TO HANDLE ***
+
+ $preu_per_compradors -= $_POST["epreu"][$i];
+
+ // ** El preu de l'article ha de ser inferior al preu de la compra!
+
+ // Inserto la fila a 'excepcions'
+ $query = "INSERT INTO excepcions (data,article,preu) VALUES(FROM_UNIXTIME($data),'" . strtosql($_POST["earticle"][$i]) .
+ "',". $_POST["epreu"][$i] . ");";
+ $resultat = 1; // Per si no es fa la query, assumim que no hi ha errors
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+
+ // Obtenim l'ID de la excepció
+ $query = "SELECT id FROM excepcions WHERE data = FROM_UNIXTIME($data) AND article = '" . strtosql($_POST["earticle"][$i]) .
+ "' AND preu = ". $_POST["epreu"][$i] . ";";
+ $resultat = 1; // Per si no es fa la query, assumim que no hi ha errors
+ if ($touchdb)
+ {
+ $resultat = mysql_query($query, $connexio);
+ $ex_id = mysql_result($resultat, 0, "id");
+ }
+ else
+ {
+ echo $query . "<BR>";
+ $ex_id = 255;
+ }
+
+ // Comptem quants participen
+ $participants = 0;
+ foreach($habitants as $j)
+ if (isset($_POST["eparticipat"][$i][$j["id"]]))
+ $participants++;
+ for ($j=0;$j<$_POST["num_altres_excepcions"];$j++)
+ if (isset($_POST["eparticipat_altres"][$i][$j]))
+ $participants++;
+ $preu_per_cap = $_POST["epreu"][$i] / $participants;
+
+ // Els habitants que compren l'article
+ foreach($habitants as $j)
+ {
+ if (isset($_POST["eparticipat"][$i][$j["id"]]))
+ {
+ $query = "INSERT INTO compradors_excepcions (ex_id,persona,toca_pagar) VALUES($ex_id," . $j["id"] . ",". $preu_per_cap.");";
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+ }
+ }
+
+ for ($j=0;$j<$_POST["num_altres_excepcions"];$j++)
+ {
+ if (isset($_POST["eparticipat_altres"][$i][$j]))
+ {
+ $persona = $_POST["ealtres"][$i][$j];
+ $query = "INSERT INTO compradors_excepcions (ex_id,persona,toca_pagar) VALUES($ex_id," . $persona . ",". $preu_per_cap.");";
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+ }
+ }
+ }
+ } // Fi del for
+ // Afegim el que han pagat i el que els toca pagar a cada habitant
+ // Participen els habitants + $num_altres
+
+ // Comptem quans participen si hi ha checkboxes
+ if ($_POST["percentatges"] == "checkboxes")
+ {
+ $participants = 0;
+ foreach($habitants as $j)
+ if (isset($_POST["checkbox"][$j["id"]]))
+ $participants++;
+ for ($j=0;$j<$_POST["num_altres"];$j++)
+ if (isset($_POST["checkbox_altres"][$j]))
+ $participants++;
+ }
+
+ // Els habitants que compren
+ foreach($habitants as $i)
+ {
+ $total_a_pagar = 0;
+ settype($_POST["pagat"][$i["id"]], "double");
+ if ($_POST["percentatges"] == "checkboxes")
+ {
+ if(isset($_POST["checkbox"][$i["id"]]))
+ $total_a_pagar = $preu_per_compradors / $participants;
+ }
+ elseif ($_POST["percentatges"] == "si")
+ {
+ settype($_POST["percent"][$i["id"]], "double");
+ $total_a_pagar = $preu_per_compradors * $_POST["percent"][$i["id"]] / 100;
+ }
+ else
+ {
+ settype($_POST["tocapagar"][$i["id"]], "double");
+ $total_a_pagar = $_POST["tocapagar"][$i["id"]];
+ }
+
+ if ($_POST["pagat"][$i["id"]] != 0 || $total_a_pagar != 0)
+ {
+ $query = "INSERT INTO compradors (data,persona,pagat,toca_pagar) VALUES(FROM_UNIXTIME($data)," . $i["id"] . ",".
+ $_POST["pagat"][$i["id"]] . ", $total_a_pagar);";
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>\n";
+ }
+ }
+
+ // Els altres que compren
+ for($i=0; $i < $_POST["num_altres"]; $i++)
+ {
+ $total_a_pagar = 0;
+ settype($_POST["pagat_altres"][$i], "double");
+ if ($_POST["percentatges"] == "checkboxes")
+ {
+ if(isset($_POST["checkbox_altres"][$i]))
+ $total_a_pagar = $preu_per_compradors / $participants;
+ }
+ elseif ($_POST["percentatges"] == "si")
+ {
+ settype($_POST["percent_altres"][$i], "double");
+ $total_a_pagar = $preu_per_compradors * $_POST["percent_altres"][$i] / 100;
+ }
+ else
+ {
+ settype($_POST["tocapagar_altres"][$i], "double");
+ $total_a_pagar = $_POST["tocapagar_altres"][$i];
+ }
+
+ if ($_POST["pagat_altres"][$i] != 0 || $total_a_pagar != 0)
+ {
+ $persona = $_POST["altres"][$i];
+ $query = "INSERT INTO compradors (data,persona,pagat,toca_pagar) VALUES(FROM_UNIXTIME($data)," . $persona . ",".
+ $_POST["pagat_altres"][$i] . ", $total_a_pagar);";
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+ }
+ }
+
+
+ // *** No s'hauria de deixar continuar si peta la compra!!!! (de fet és el que fa. O NO?)
+ } // Fi de si la inserció de compres va bé.
+
+ // Què cutre que és això. **
+ echo "Si no hi ha cap missatge d'error, tot ha anat bé! La compra ha estat afegida.<BR>";
+
+ }
+ else
+ {
+ ?>
+ <p> <STRONG>ERROR:</STRONG> No s'ha pogut connectar a la base de dades!
+ Segurament degut a una contrassenya incorrecta. </p>
+ <?php
+ echo mysql_errno().": ".mysql_error()."<BR>";
+ }
+
+}
+?>
+
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/update-gent.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Edició dels pagaments</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<H1 ALIGN=center>Ètxelon</H1>
+
+<?php
+ include("getdb.inc");
+ // Variables globals
+ $touchdb = 1; // Tocar la base de dades
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+ // Crides a funcions per obtenir parametres
+
+if(!isset($_POST["afegir"]) && !isset($_GET["id"]))
+{
+?>
+
+<!-- DEMANAR PER AFEGIR COSES -->
+
+<H2>Afegir nova persona</H2>
+
+<form action="update-gent" method="post">
+
+<p> Dades de la persona: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Nom:
+ <TD><input type="text" name="nom" size=20 maxlength=50>
+<TR>
+ <TH>Habitant:
+ <TD><SELECT name=habitant>
+ <OPTION value=no>No
+ <OPTION value=si>Sí
+ </SELECT>
+</TABLE>
+
+<HR WIDTH="70%">
+<center>
+<input type=submit value="Afegir persona" name=afegir>
+<input type=reset value="Ressetejar formulari">
+</center>
+
+</form>
+
+<H2>Utilització</H2>
+
+<UL>
+<LI>Es permet afegir només una persona a la vegada.
+<LI>Normalment es voldrà que <strong>no sigui habitant</strong>, a part de que
+ algú més comenci a viure al pis. De tota manera, la opció interessa en el
+ cas de <em>crear</em> una nova base de dades.
+</UL>
+
+<!-- FI DE DEMANAR PER AFEGIR COSES -->
+
+<?php
+} // Fi del if del 'submit'
+else if(isset($_POST["afegir"]))
+{
+ // Afegir les coses a la base de dades
+
+ // Falta xequejar si les dades estan bé
+
+ if($_POST["habitant"] == "si")
+ $habitant = 1;
+ else
+ $habitant = 0;
+ // Inserto la fila a 'gent'
+
+ $query = "INSERT INTO gent (nom,habitant) VALUES('" . strtosql($_POST["nom"]) .
+ "'," .strtosql($habitant) . ");";
+ $resultat = 1; // Per si no es fa la query, assumim que no hi ha errors
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+
+ // Comprovem el resultat de l'inserció a "pagaments"
+ if (!$resultat)
+ {
+?>
+ <p> <STRONG>ERROR:</STRONG> Error al actualitzar les dades a
+ <STRONG>gent</STRONG>! </p>
+<?php
+ echo mysql_errno().": ".mysql_error()."<BR>";
+ }
+
+ // Què cutre que és això. **
+ echo "Si no hi ha cap missatge d'error, tot ha anat bé! La persona ha estat afegida.<BR>";
+
+}
+?>
+
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/update-pagament.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,295 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Edició dels pagaments</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<H1 ALIGN=center>Ètxelon</H1>
+
+<?php
+ include("getdb.inc");
+ // Variables globals
+ $touchdb = 1; // Tocar la base de dades
+
+ // Considerem que estem retocant un pagament que volem afegir, si hi ha comentari definit.
+ // És per poder donar la data bé.
+ if(isset($_POST["botiga"]))
+ $retocant=1;
+ else
+ $retocant=0;
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+
+if(!isset($_POST["afegir"]) && !isset($_GET["id"]))
+{
+?>
+
+<!-- DEMANAR PER AFEGIR COSES -->
+
+<?php
+ // VARIALBES
+ if(isset($_GET["num_altres"]))
+ $num_altres = $_GET["num_altres"];
+ elseif(isset($_POST["num_altres"]))
+ $num_altres = $_POST["num_altres"];
+ else
+ $num_altres=1;
+?>
+
+<H2>Afegir nou pagament</H2>
+
+<form action="update-pagament" method="post">
+
+<input type=hidden name=num_altres value=<?php
+ echo $num_altres;
+ ?>>
+
+<p> Dades del pagament: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Data:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="dia"
+ size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["dia"];
+ else
+ echo date('d');
+ ?>">
+ <input type="text" name="mes" size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["mes"];
+ else
+ echo date('m');
+ ?>">
+ <input type="text" name="any" size=4 maxlength=4
+ value="<?php
+ if ($retocant)
+ echo $_POST["any"];
+ else
+ echo date('Y');
+ ?>">
+
+<TR>
+ <TH>Hora:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="hora"
+ size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["hora"];
+ else
+ echo date('H');
+ ?>">
+ <input type="text" name="minut" size=2 maxlength=2
+ value="<?php
+ if ($retocant)
+ echo $_POST["minut"];
+ else
+ echo date('i');
+ ?>">
+
+<TR>
+ <TH>Comentari:
+ <TD COLSPAN=<?php echo $num_habitants+$num_altres?> ><input type="text" name="comentari" size=40 maxlength=250 <?php
+ if (isset($_POST["comentari"]))
+ echo "value=\"" . strtohtml($_POST["comentari"]) . "\"";
+ ?>>
+<TR>
+ <TH>
+<?php
+ // Imprimim el nom dels habitants
+ foreach($habitants as $i)
+ echo "\t<TH>" . strtohtml($i["nom"]) . "\n";
+?>
+<?php
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TH>";
+ if(isset($_POST["altres"][$i]))
+ select_altres("altres[$i]", $_POST["altres"][$i]);
+ else
+ select_altres("altres[$i]");
+ echo "\n";
+ }
+?>
+<TR>
+ <TH>Pagat:
+<?php
+ foreach($habitants as $i)
+ {
+ echo "\t<TD><input type=\"text\" name=\"pagat[" . $i["id"] . "]\" size=6 maxlength=8 value=";
+ if (isset($_POST["pagat"][$i["id"]]))
+ echo $_POST["pagat"][$i["id"]];
+ else
+ echo "0";
+ echo ">\n";
+ }
+?>
+<?php
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TD><input type=\"text\" name=\"pagat_altres[$i]\" size=6 maxlength=8 value=";
+ if (isset($_POST["pagat_altres"][$i]))
+ echo $_POST["pagat_altres"][$i];
+ else
+ echo "0";
+ echo ">\n";
+ }
+?>
+<TR>
+ <TH>Cobrat:
+<?php
+ foreach($habitants as $i)
+ {
+ echo "\t<TD><input type=\"text\" name=\"cobrat[" . $i["id"] . "]\" size=6 maxlength=8 value=";
+ if (isset($_POST["cobrat"][$i["id"]]))
+ echo $_POST["cobrat"][$i["id"]];
+ else
+ echo "0";
+ echo ">\n";
+ }
+?>
+<?php
+ for($i=0; $i<$num_altres;$i++)
+ {
+ echo "\t<TD><input type=\"text\" name=\"cobrat_altres[" . $i["id"] . "]\" size=6 maxlength=8 value=";
+ if (isset($_POST["cobrat_altres"][$i]))
+ echo $_POST["cobrat_altres"][$i];
+ else
+ echo "0";
+ echo ">\n";
+ }
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+<center>
+<input type=submit value="Afegir pagament" name=afegir>
+<input type=reset value="Ressetejar formulari">
+</center>
+
+
+<H2>Alterar formulari</H2>
+<p>Seleccionar el número d'altra gent al pagament:
+ <input type=text name=num_altres size=2 maxlength=2 value=<?php echo $num_altres ?>>
+</p>
+
+<p align=center><input type=submit value="Canviar" name=canviar> </p>
+</form>
+
+<HR WIDTH="70%">
+
+<H2>Utilització</H2>
+
+<UL>
+<LI>És important escriure el <em>comentari</em> ja que serà amb el que els
+ habitants identifiquin el pagament.
+<LI>La suma del que s'ha <em>pagat</em> ha de ser igual a la suma del que s'ha
+ <em>cobrat</em>.
+<LI><em>Alterar el formulari</em> per afegir altres persones borrarà els
+ camps que ja s'havien emplenat.
+</UL>
+
+<!-- FI DE DEMANAR PER AFEGIR COSES -->
+
+<?php
+} // Fi del if del 'submit'
+else if(isset($_POST["afegir"]))
+{
+ // Afegir les coses a la base de dades
+
+ // Falta xequejar si les dades estan bé
+
+ settype($_POST["hora"], "integer");
+ settype($_POST["minut"], "integer");
+ settype($_POST["dia"], "integer");
+ settype($_POST["mes"], "integer");
+ settype($_POST["any"], "integer");
+
+ // ** El preu ha de ser la suma de lo que ha pagat tothom. O inferior!
+ $data = mktime($_POST["hora"], $_POST["minut"], 0, $_POST["mes"], $_POST["dia"], $_POST["any"]);
+
+ // Inserto la fila a 'pagaments'
+ $query = "INSERT INTO pagaments VALUES(FROM_UNIXTIME($data),'" . strtosql($_POST["comentari"]) ."');";
+ $resultat = 1; // Per si no es fa la query, assumim que no hi ha errors
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+
+
+ // Comprovem el resultat de l'inserció a "pagaments"
+ if (!$resultat)
+ {
+?>
+ <p> <STRONG>ERROR:</STRONG> Error al actualitzar les dades a
+ <STRONG>pagaments</STRONG>! </p>
+<?php
+ echo mysql_errno().": ".mysql_error()."<BR>";
+ }
+ else
+ {
+ // Afegim el que han pagat i el que els toca pagar a cada habitant
+ // Participen els habitants + $num_altres
+
+ // Els habitants que paguen
+ foreach($habitants as $i)
+ {
+ settype($_POST["pagat"][$i["id"]], "double");
+ settype($_POST["cobrat"][$i["id"]], "double");
+
+ if ($_POST["pagat"][$i["id"]] != 0 || $_POST["cobrat"][$i["id"]] != 0 )
+ {
+ $query = "INSERT INTO pagadors (data,persona,pagat,cobrat) VALUES(FROM_UNIXTIME($data)," . $i["id"] . ",". $_POST["pagat"][$i["id"]] . ", ". $_POST["cobrat"][$i["id"]] . ");";
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>\n";
+ }
+ }
+
+ // Els altres que paguen
+ for($i=0; $i < $_POST["num_altres"]; $i++)
+ {
+ settype($_POST["pagat_altres"][$i], "double");
+ settype($_POST["cobrat_altres"][$i], "double");
+
+ if ($_POST["pagat_altres"][$i] != 0 || $_POST["cobrat_altres"][$i] != 0)
+ {
+ $persona = $_POST["altres"][$i];
+ $query = "INSERT INTO pagadors (data,persona,pagat,cobrat) VALUES(FROM_UNIXTIME($data)," . $persona . ",". $_POST["pagat_altres"][$i] . ", " . $_POST["cobrat_altres"][$i] . ");";
+ if ($touchdb)
+ $resultat = mysql_query($query, $connexio);
+ else
+ echo $query . "<BR>";
+ }
+ }
+
+
+ // *** No s'hauria de deixar continuar si peta el pagament!!!! (de fet és el que fa. O NO?)
+ } // Fi de si la inserció de pagaments va bé.
+
+ // Què cutre que és això. **
+ echo "Si no hi ha cap missatge d'error, tot ha anat bé! El pagament ha estat afegit.<BR>";
+
+}
+?>
+
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/view-compra.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,218 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Veure compra</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<H1 ALIGN=center>Ètxelon</H1>
+<H2>Veure compra</H2>
+
+<?php
+ include("getdb.inc");
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+
+ $data = $_GET["id"];
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+ $gent = obtenir_gent($connexio);
+
+ $compra = obtenir_compra($data, $connexio);
+ $compradors = obtenir_compradors($data, $connexio);
+ $excepcions = obtenir_excepcions($data, $connexio);
+
+ $preu_per_compradors = $compra["preu"];
+ $max_compradors_ex = 0;
+
+ // La variable $comprador_excepcions_existeix servirà per saber si algú de
+ // gent tindrà a veure amb la compra. Indica que la persona (índex de
+ // l'array) existeix com a comprador d'alguna excepció.
+
+ if ($excepcions != 0)
+ foreach($excepcions as $key => $value)
+ {
+ $preu_per_compradors -= $excepcions[$key]["preu"];
+ $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio);
+ $max_compradors_ex = max(count($compradors_excepcions[$key]),$max_compradors_ex);
+ foreach($compradors_excepcions[$key] as $persona => $dades)
+ {
+ $comprador_excepcions_existeix[$persona] = 1; // Existeix
+ }
+ }
+?>
+
+<H2>Dades generals</H2>
+
+<p> Dades de la compra: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Data i Hora:
+ <TD> <?php
+ echo date("d/m/Y H:i",$data); ?>
+
+<TR>
+ <TH> Botiga:
+ <TD> <?php
+ echo strtohtml($compra["botiga"]); ?>
+
+<TR>
+ <TH> Motiu:
+ <TD> <?php
+ echo strtohtml($compra["motiu"]); ?>
+
+<TR>
+ <TH> Comentari:
+ <TD> <?php
+ echo strtohtml($compra["comentari"]); ?>
+
+<TR>
+ <TH> Preu:
+ <TD> <?php
+ echo pricetohtml($compra["preu"]); ?>
+
+<TR>
+ <TH> Preu (a repartir)
+ <TD> <?php
+ echo pricetohtml($preu_per_compradors); ?>
+
+</TABLE>
+
+
+<!-- Taula de compradors globals -->
+<TABLE BORDER=1>
+<CAPTION>Compradors globals</CAPTION>
+<TR>
+ <TH>Persona
+ <TH>Pagat
+ <TH>Toca pagar
+ <TH>Percentatge
+ <TH>Toca pagar + excepcions
+ <TH>Balanç
+<?php
+ $suma_pagat = 0;
+ $suma_toca_pagar = 0;
+ $suma_percentatge = 0;
+ $suma_toca_pagar_ex = 0;
+ $suma_balans = 0;
+ foreach($gent as $key => $value)
+ {
+ // Serveix per calcular el preu que toca pagar a cada un realment
+ $modificador = 0;
+ if ($excepcions != 0)
+ foreach($excepcions as $key_ex => $value_ex)
+ {
+ if(isset($compradors_excepcions[$key_ex][$key]["toca_pagar"]))
+ $modificador += $compradors_excepcions[$key_ex][$key]["toca_pagar"];
+ }
+
+ if (isset($compradors[$key]) ||
+ isset($comprador_excepcions_existeix[$key]))
+ {
+
+ if (!isset($compradors[$key]["pagat"]))
+ $compradors[$key]["pagat"] = 0;
+ if (!isset($compradors[$key]["toca_pagar"]))
+ $compradors[$key]["toca_pagar"] = 0;
+
+
+ echo "<TR>\n\t<TD>". strtohtml($gent[$key]["nom"]) . "\n";
+
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["pagat"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["toca_pagar"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["toca_pagar"]
+ * 100 / $preu_per_compradors));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["toca_pagar"]
+ + $modificador));
+ printf("\t<TD align=right>%s\n", pricetohtml($compradors[$key]["pagat"]
+ - ($compradors[$key]["toca_pagar"] + $modificador)));
+ /*
+ echo "\t<TD>" . $compradors[$key]["pagat"] . "\n";
+ echo "\t<TD>" . $compradors[$key]["toca_pagar"] . "\n";
+ echo "\t<TD>" . ($compradors[$key]["toca_pagar"] * 100 / $preu_per_compradors) . "\n";
+ echo "\t<TD>" . ($compradors[$key]["toca_pagar"] + $modificador) . "\n";
+ echo "\t<TD>" . ($compradors[$key]["pagat"] - ($compradors[$key]["toca_pagar"] + $modificador)) . "\n";
+ */
+
+ $suma_pagat += $compradors[$key]["pagat"];
+ $suma_toca_pagar += $compradors[$key]["toca_pagar"];
+ $suma_percentatge += ($compradors[$key]["toca_pagar"] / $preu_per_compradors*100);
+ $suma_toca_pagar_ex += $compradors[$key]["toca_pagar"] + $modificador;
+ $suma_balans += $compradors[$key]["pagat"] - ($compradors[$key]["toca_pagar"] + $modificador);
+ }
+ }
+ echo "<TR>\n\t<TH>Total\n";
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_pagat));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_toca_pagar));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_percentatge));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_toca_pagar_ex));
+ printf("\t<TD align=right>%s\n", pricetohtml($suma_balans));
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+<H2>Excepcions:</H2>
+
+<TABLE BORDER=1>
+<TR>
+ <TH>Id
+ <TH>Article
+ <TH>Preu
+ <TH COLSPAN=<?php echo $max_compradors_ex ?>>Toca Pagar
+
+<?php
+ if ($excepcions != 0)
+ foreach($excepcions as $key => $value)
+ {
+ $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio);
+ // Poso els noms dels compradors
+ echo "<TR>\n\t<TD>\n\t<TD>\n\t<TD>\n";
+ foreach($compradors_excepcions[$key] as $key_c => $value_c)
+ {
+ echo "\t<TH>" . $gent[$key_c]["nom"] . "\n";
+ }
+ // Poso l'excepcio en si
+ echo "<TR>\n\t<TH>" . $key . "\n";
+ echo "\t<TD>" . strtohtml($excepcions[$key]["article"]) . "\n";
+ printf("\t<TD align=right>%s\n", pricetohtml($excepcions[$key]["preu"]));
+ foreach($compradors_excepcions[$key] as $key_c => $value_c)
+ {
+ printf("\t<TD align=right>%.2f\n", pricetohtml($value_c["toca_pagar"]));
+ }
+ }
+?>
+
+</TABLE>
+
+<HR WIDTH="70%">
+
+<H2>Llegenda</H2>
+
+<ul>
+<li>El percentatge es calcula segons el que <em>toca pagar</em> respecte al
+ <em>total a pagar</em>.
+<li>La suma del <em>percentatge</em> ha de ser <strong>100</strong>.
+<li>El <em>total pagat</em> ha de ser igual al
+ <em>total a pagar amb excepcions</em>.
+<li>El <em>total a pagar</em> ha de ser igual al <em>preu (a repartir)</em>.
+<li>El <em>balanç positiu</em> indica diners que s'han de cobrar en un futur,
+ i el <em>negatiu</em> diners que s'han de pagar.
+<li>El camp <em>"Id"</em> de les <em>excepcions</em> és l'identificador que té
+ l'excepció dins la base de dades.
+</ul>
+
+<HR WIDTH="70%">
+
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/view-pagament.php Sat May 06 00:50:37 2006 +0200
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Ètxelon - Veure pagament</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+</head>
+
+<body>
+
+<H1 ALIGN=center>Ètxelon</H1>
+<H2>Veure pagament</H1>
+
+<?php
+ include("getdb.inc");
+
+ // Fem la connexió
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+
+
+ $data = $_GET["id"];
+
+ // Crides a funcions per obtenir parametres
+ $habitants = obtenir_habitants($connexio);
+ $num_habitants = count($habitants);
+ $altres = obtenir_altres($connexio);
+ $gent = obtenir_gent($connexio);
+
+ $pagament = obtenir_pagament($data, $connexio);
+ $pagadors = obtenir_pagadors($data, $connexio);
+?>
+
+<H2>Dades generals</H2>
+
+<p> Dades del pagament: </p>
+<TABLE BORDER=0>
+<TR>
+ <TH>Data i Hora:
+ <TD> <?php
+ echo date("d/m/Y H:i",$data); ?>
+
+<TR>
+ <TH> Comentari:
+ <TD> <?php
+ echo strtohtml($pagament["comentari"]); ?>
+
+</TABLE>
+
+
+<H2>Pagadors i cobradors</H2>
+<!-- Taula de compradors globals -->
+<TABLE BORDER=1>
+<CAPTION>Pagadors</CAPTION>
+<TR>
+ <TH>Persona
+ <TH>Pagat
+ <TH>Cobrat
+ <TH>Balanç
+<?php
+ $suma_pagat = 0;
+ $suma_cobrat = 0;
+ $suma_balans = 0;
+ foreach($gent as $key => $value)
+ {
+ if (isset($pagadors[$key]))
+ {
+ echo "<TR>\n\t<TD>". strtohtml($gent[$key]["nom"]) . "\n";
+
+ printf("\t<TD align=right>%s\n", pricetohtml($pagadors[$key]["pagat"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($pagadors[$key]["cobrat"]));
+ printf("\t<TD align=right>%s\n", pricetohtml($pagadors[$key]["pagat"] - $pagadors[$key]["cobrat"]));
+
+ $suma_pagat += $pagadors[$key]["pagat"];
+ $suma_cobrat += $pagadors[$key]["cobrat"];
+ $suma_balans += $pagadors[$key]["pagat"] - $pagadors[$key]["cobrat"];
+ }
+ }
+ echo "<TR>\n\t<TH>Total\n";
+ printf("\t<TD align=right>%.2f\n", pricetohtml($suma_pagat));
+ printf("\t<TD align=right>%.2f\n", pricetohtml($suma_cobrat));
+ printf("\t<TD align=right>%.2f\n", pricetohtml($suma_balans));
+?>
+</TABLE>
+
+<HR WIDTH="70%">
+
+<H2>Llegenda</H2>
+
+<UL>
+<LI>La suma del que s'ha <em>pagat</em> ha de ser igual a la suma del que s'ha
+ <em>cobrat</em>. O sigui, que el <em>balanç total</em> ha de ser
+ <strong>0</strong>.
+</UL>
+
+<HR WIDTH="70%">
+<BR>
+<A HREF="index">Tornar al menú d'inici</A>
+
+</body>
+</html>