# HG changeset patch # User viric@llimona # Date 1146869437 -7200 # Node ID e269d7e3f581de7bb8271c5c2843f9de82c95d07 Commit inicial. Només hi ha dues diferències de l'original: - Fitxer README afegit - db renombrat a db.sql, per claredat diff -r 000000000000 -r e269d7e3f581 README --- /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. diff -r 000000000000 -r e269d7e3f581 calc-deutes.php --- /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 @@ + + + + Ètxelon - Deutes finals + + + + + +

Ètxelon

+ + + $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"]; + } +?> + +

Deutes finals

+ + + + + + \n\t\n\t\n\t
Deutes finals
Persona + Pagat + Toca pagar + Percentatge a pagar + Balanç + Pagaments + Balanç amb pagaments + $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 "
"; + echo ""; + echo strtohtml($gent[$key]["nom"]) . "\n"; + + printf("\t%s\n", pricetohtml($deutes[$key]["pagat"])); + printf("\t%s\n", pricetohtml($deutes[$key]["toca_pagar"])); + printf("\t%s\n", pricetohtml($deutes[$key]["toca_pagar"] + / $total_a_pagar * 100)); + printf("\t%s\n", pricetohtml($deutes[$key]["pagat"] + - $deutes[$key]["toca_pagar"])); + printf("\t%s\n", pricetohtml($deutes[$key]["pagaments"])); + printf("\t%s\n", pricetohtml($deutes[$key]["pagat"] + - $deutes[$key]["toca_pagar"] + $deutes[$key]["pagaments"])); + + //echo "\t" . $deutes[$key]["pagat"] . "\n"; + //echo "\t" . $deutes[$key]["toca_pagar"] . "\n"; + //echo "\t" . ($deutes[$key]["toca_pagar"] / $total_a_pagar * 100) . "\n"; + + //echo "\t" . ($deutes[$key]["pagat"] - $deutes[$key]["toca_pagar"]) . "\n"; + //echo "\t" . $deutes[$key]["pagaments"] . "\n"; + //echo "\t" . ($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("
Total\n"); + printf("\t%s\n", pricetohtml($suma_pagat)); + // La suma ha de ser lo mateix que total_a_pagar + printf("\t%s\n", pricetohtml($suma_toca_pagar)); + printf("\t%s\n", pricetohtml($suma_percentatge)); + printf("\t%s\n", pricetohtml($suma_balans)); + printf("\t%s\n", pricetohtml($suma_pagaments)); + printf("\t%s\n", pricetohtml($suma_balans_pagaments)); + /* + echo "
Total\n" . + "\t" . $suma_pagat . "\n" . + // La suma ha de ser lo mateix que total_a_pagar + "\t" . $suma_toca_pagar ."\n" . + "\t" . $suma_percentatge . "\n" . + "\t" . $suma_balans . "\n" . + "\t" . $suma_pagaments . "\n" . + "\t" . $suma_balans_pagaments . "\n"; + */ +?> +
+ +
+ +

Llegenda

+ + + +
+
+Tornar al menú d'inici + + + diff -r 000000000000 -r e269d7e3f581 db-config.inc --- /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 @@ + diff -r 000000000000 -r e269d7e3f581 db.sql --- /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); diff -r 000000000000 -r e269d7e3f581 delete-compra.php --- /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 @@ + + + + Ètxelon - Eliminar compra + + + + + $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"])) +{ +?> + +

Eliminar compra

+ +

Dades generals

+ +

Dades de la compra:

+ + + + + + + +
Hora i Data: + + +
Botiga: + + +
Motiu: + + +
Comentari: + + +
Preu: + + +
Preu (a repartir) + + +
+ + + + + + + \n\t\n\t
Compradors globals
Persona + Pagat + Toca pagar + Percentatge + Toca pagar + excepcions + Balanç + $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 "
". strtohtml($gent[$key]["nom"]) . "\n"; + + printf("\t%s\n", pricetohtml($compradors[$key]["pagat"])); + printf("\t%s\n", pricetohtml($compradors[$key]["toca_pagar"])); + printf("\t%s\n", pricetohtml($compradors[$key]["toca_pagar"] + * 100 / $preu_per_compradors)); + printf("\t%s\n", pricetohtml($compradors[$key]["toca_pagar"] + + $modificador)); + printf("\t%s\n", pricetohtml($compradors[$key]["pagat"] + - ($compradors[$key]["toca_pagar"] + $modificador))); + //echo "\t" . $compradors[$key]["pagat"] . "\n"; + //echo "\t" . $compradors[$key]["toca_pagar"] . "\n"; + //echo "\t" . ($compradors[$key]["toca_pagar"] * 100 / $preu_per_compradors) . "\n"; + + //echo "\t" . ($compradors[$key]["toca_pagar"] + $modificador) . "\n"; + //echo "\t" . ($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 "
Total\n"; + printf("\t%s\n", pricetohtml($suma_pagat)); + printf("\t%s\n", pricetohtml($suma_toca_pagar)); + printf("\t%s\n", pricetohtml($suma_percentatge)); + printf("\t%s\n", pricetohtml($suma_toca_pagar_ex)); + printf("\t%s\n", pricetohtml($suma_balans)); +?> +
+ +
+

Excepcions

+ + + + \n\t\n\t
Id + Article + Preu + >Toca Pagar + + $value) + { + $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio); + // Poso els noms dels compradors + echo "
\n\t\n\t\n"; + foreach($compradors_excepcions[$key] as $key_c => $value_c) + { + echo "\t" . $gent[$key_c]["nom"] . "\n"; + } + // Poso l'excepcio en si + printf("
%d\n", $key); + echo "\t" . strtohtml($excepcions[$key]["article"]) . "\n"; + printf("\t%s\n", pricetohtml($excepcions[$key]["preu"])); + foreach($compradors_excepcions[$key] as $key_c => $value_c) + { + printf("\t%.2f\n", pricetohtml($value_c["toca_pagar"])); + } + } +?> + +
+ +
+
+
+ + + +
&sure=yes">ELIMINAR SEGUR! +
+
+ + $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 . "
\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 . "
\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 . "
\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 . "
\n"; + + echo "

Si no hi ha cap error en línies anteriors, la compra ha estat eliminada.

\n"; + +} +?> +
+Tornar al menú d'inici + + + + + diff -r 000000000000 -r e269d7e3f581 delete-pagament.php --- /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 @@ + + + + Ètxelon - Eliminar pagament + + + + + + +

Eliminar pagament

+ +

Dades generals

+ +

Dades del pagament:

+ + + +
Data i Hora: + + +
Comentari: + + +
+ + +

Pagadors i cobradors

+ + + + + \n\t\n\t
Pagadors
Persona + Pagat + Cobrat + Balanç + $value) + { + if (isset($pagadors[$key])) + { + echo "
". strtohtml($gent[$key]["nom"]) . "\n"; + + printf("\t%.2f\n", $pagadors[$key]["pagat"]); + printf("\t%.2f\n", $pagadors[$key]["cobrat"]); + printf("\t%.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 "
Total\n"; + printf("\t%.2f\n", $suma_pagat); + printf("\t%.2f\n", $suma_cobrat); + printf("\t%.2f\n", $suma_balans); +?> +
+ +
+
+
+ + + +
&sure=yes">ELIMINAR SEGUR! +
+
+ +\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 . "
\n"; + + echo "

Si no hi ha cap error en línies anteriors, el pagament ha estat eliminat.

\n"; + +} +?> +
+Tornar al menú d'inici + + + + + diff -r 000000000000 -r e269d7e3f581 faq.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 @@ + + + + Ètxelon - Frequently Asked Questions + + + + + +

Ètxelon - Frequently Asked Questions

+ +1. Què és l'Ètxelon?
+2. Què són les compres?
+3. Què són els pagaments?
+4. Què és el preu d'una compra?
+5. Com funcionen les excepcions?
+6. Nosaltres fem servir pot comú. +Com el fem participar al programa?
+7. Tenim un servei que s'ha de pagar a través del banc. Podem +contar-lo amb el +programa?
+8. Per anar més ràpid, podem crear una persona que representi +a un +conjunt?
+9. Quina diferència hi ha entre els habitants i els no +habitants?
+10. Perquè haig de tenir fitxada a la gent, encara que només +hi +tingui un sol deute?
+11. Puc borrar a una persona?
+12. Si dec diners, com sé a qui els dec?
+13. Com sé que el programa compta bé?
+14. En quina moneda funciona el programa?
+15. Què volen dir els números en vermell?
+16. Puc estafar o ser estafat amb l'Ètxelon?
+17. Fa l'Ètxelon que no em tornin mai més els diners que +em deuen?
+18. Al afegir una compra, què significa a parts +iguals?
+19. Al afegir una compra, no em quadra al utilitzar +repartiment "cal pagar" + +
+ +

1. Què és l'Ètxelon?

+ +

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.

+

El programa controla tots els moviments diferenciant-los en dos tipus: +compres i pagaments. +Altres preguntes en aquesta FAQ fan referència als dubtes +que hi puguin haver.

+ +

2. Què són les compres?

+ +

Les compres +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 +compres).

+

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.

+

El camp pagat determina com s'han pagat els diners a la botiga, i en +total ha de sumar el preu de la compra.

+ +

Els diners que paguen en una compra es consideren perduts (justificadament, +clar). No es controla quants diners es dóna a una botiga).

+ +

3. Què són els pagaments?

+ +

Els pagaments +controlen els diners que es dónen d'una persona a una altra. +Al contrari de les compres, estan pensats per moure diners entre les +persones. 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 pagaments.

+ +

4. Què és el preu d'una compra?

+ +

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.

+ +

5. Com funcionen les excepcions?

+ +

Les excepcions +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 +excepcions a parts iguals.

+ +

A les excepcions +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.

+ +

6. Nosaltres fem servir pot comú. +Com el fem participar al programa?

+ +

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.

+ +

És important no intentar barrejar l'ús d'un pot comú i +l'Ètxelon.

+ +

7. Tenim un servei que s'ha de pagar a través del banc. Podem +contar-lo amb el +programa?

+ +

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 banc. Quan +l'empresa a qui hem de pagar ens cobra diners pel banc, ho apuntem com una +compra que ha pagat la persona banc per nosaltres (nosaltres som els +compradors, i ell és el que paga).

+ +

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.

+ +

8. Per anar més ràpid, podem crear una persona que representi +a un +conjunt?

+ +

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.

+ +

9. Quina diferència hi ha entre els habitants i els no +habitants?

+ +

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.

+ +

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.

+ +

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 un habitant.

+ +

10. Perquè haig de tenir fitxada a la gent, encara que només +hi +tingui un sol deute?

+ +

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.

+ +

É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à.

+ +

11. Puc borrar a una persona?

+ +

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.

+ +

12. Si dec diners, com sé a qui els dec?

+ +

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.

+ +

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. +

+ +

13. Com sé que el programa compta bé?

+ +

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.

+ +

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.

+ +

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.

+ +

14. En quina moneda funciona el programa?

+ +

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.

+ +

15. Què volen dir els números en vermell?

+ +

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. +

+ +

16. Puc estafar o ser estafat amb l'Ètxelon?

+ +

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.

+ +

17. Fa l'Ètxelon que no em tornin mai més els diners que +em deuen?

+ +

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.

+ +

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.

+ +

18. Al afegir una compra, què significa a parts +iguals?

+ +

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.

+ +

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.

+ +

19. Al afegir una compra, no em quadra al utilitzar +repartiment "cal pagar"

+ +

Això passa perquè hi ha excepcions. La suma del que es paga amb "cal +pagar" +no ha d'incloure les excepcions, tot i que aquestes estan incloses en el preu +total.

+ +

Per tant, la suma del que es paga d'aquesta manera ha de ser el total del +preu de la compra menys el total de les excepcions segons cada +persona. De fet, la suma del que es paga amb "cal pagar" és el que +s'anomena preu a repartir quan es visualitza una compra.

+ +
+ +
+Tornar al menú d'inici + + + + diff -r 000000000000 -r e269d7e3f581 getdb.inc --- /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 @@ + + +

ERROR: Error al obtenir + habitants!

+"; + } + + // 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) + { +?> +

ERROR: Error al obtenir + altres!

+"; + } + + 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) + { +?> +

ERROR: Error al obtenir + gent!

+"; + } + + 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 ""; + } + + 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("%.2f", $price); + else + return sprintf("%.2f", $price); + + } +?> diff -r 000000000000 -r e269d7e3f581 index.html --- /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 @@ + + + + Ètxelon - Menú principal + + + + + +

Ètxelon

+ +
+ +

Menú

+ + + + + + +
Compres + Pagaments + Gent +
Llistat + Llistat + Llistat +
Afegir nova + Afegir nou + Afegir nova +
Calcular deutes +
+ +
+ + + + +
Documentació +
F.A.Q. +
+
+ +
+ +

Descripció

+ +

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.

+ +
+ +

Utilització

+ + + + + + +
+ +

The whole engine validates HTML 3.2 + Valid HTML 3.2! +

+ + + diff -r 000000000000 -r e269d7e3f581 list-compres.php --- /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 @@ + + + + Ètxelon - Consulta de compres + + + + + +

Ètxelon

+

Total de compres

+ + + + + + +" . strtohtml($i["nom"]). "\n"; +?> + +\n\t
Data + Botiga + Motiu + Preu + >Pagat + Excepcions + Eliminiar +
%s\n", $data, + $date_shown); + printf("\t%s\n", strtohtml($fila[1])); + printf("\t%s\n", strtohtml($fila[2])); + printf("\t%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%s\n", pricetohtml($compradors[$i["id"]]["pagat"])); + else + printf("\t%s\n", pricetohtml(0)); + } + $excepcions = obtenir_excepcions($data,$connexio); + if ($excepcions != 0) + printf("\t%d\n", count($excepcions)); + else + printf("\t0\n"); + printf("\tEliminar\n", $data); + + $num_compres++; + } + +?> +
+ +

Hi ha un total de compres.

+ +
+
+Tornar al menú d'inici + + + + diff -r 000000000000 -r e269d7e3f581 list-gent.php --- /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 @@ + + + + Ètxelon - Llistat de gent + + + + + +

Ètxelon

+

Llistat de gent

+ + + + + +
+ + + + +
Habitants
Id + Nom +\n"; + echo "\t" . $i["id"] . "\n"; + echo "\t" . strtohtml($i["nom"]) . "\n"; + } +?> +
+
+ + + + +
Altres
Id + Nom +\n"; + echo "\t" . $i["id"] . "\n"; + echo "\t" . strtohtml($i["nom"]) . "\n"; + } +?> +
+
+
    +
  • Els noms estan ordenats alfabèticament +
  • El camp "Id" és l'identificador que té la persona dins la + base de dades. +
+ +
+ +
+
+Tornar al menú d'inici + + + + diff -r 000000000000 -r e269d7e3f581 list-pagaments.php --- /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 @@ + + + + Ètxelon - Consulta de pagaments + + + + + +

Ètxelon

+

Total de pagaments

+ + + + + + +" . strtohtml($i["nom"]) . "\n"; + foreach($habitants as $i) + echo "\t
Data + >Pagat + >Cobrat + Comentari + Eliminar +
" . strtohtml($i["nom"]) . "\n"; +?> + +\n\t%s\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%s\n", pricetohtml($pagadors[$i["id"]]["pagat"])); + else + printf("\t%s\n", pricetohtml(0)); + } + foreach($habitants as $i) + { + if (isset($pagadors[$i["id"]])) + printf("\t%s\n", pricetohtml($pagadors[$i["id"]]["cobrat"])); + else + printf("\t%s\n", pricetohtml(0)); + } + // Comentari + printf("\t%s\n", strtohtml($fila[1])); + // Eliminar + printf("\tEliminar\n", $data); + $num_pagaments++; + } + +?> +
+ +

Hi ha un total de pagaments.

+ +
+
+Tornar al menú d'inici + + + + diff -r 000000000000 -r e269d7e3f581 list-persona.php --- /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 @@ + + + + Ètxelon - Consulta de compres + + + + + + + +

Ètxelon

+

Moviments de +""

+ +

Compres on ha tingut a veure

+ + + + +
Data + Botiga + Motiu + Preu + Pagat + Excepcions + Eliminiar +\n\t%s\n", $data, + $date_shown); + printf("\t%s\n", strtohtml($fila[1])); + printf("\t%s\n", strtohtml($fila[2])); + printf("\t%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%s\n", pricetohtml($compradors[$persona]["pagat"])); + else + printf("\t%s\n", pricetohtml(0)); + + $excepcions = obtenir_excepcions($data,$connexio); + if ($excepcions != 0) + printf("\t%d\n", count($excepcions)); + else + printf("\t0\n"); + printf("\tEliminar\n", $data); + + $num_compres++; + } + +?> +
+ +

En/La té a veure en compres.

+ +
+ + +

Compres on ha tingut a veure amb excepcions

+ + + +
Data + Botiga + Motiu + Preu + Pagat + Excepcions + Eliminiar +\n\t%s\n", $data, + $date_shown); + printf("\t%s\n", strtohtml($fila[1])); + printf("\t%s\n", strtohtml($fila[2])); + printf("\t%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%s\n", pricetohtml($compradors[$persona]["pagat"])); + else + printf("\t%s\n", pricetohtml(0)); + + $excepcions = obtenir_excepcions($data,$connexio); + if ($excepcions != 0) + printf("\t%d\n", count($excepcions)); + else + printf("\t0\n"); + printf("\tEliminar\n", $data); + + $num_compres++; + } + +?> +
+ +

En/La té a veure amb excepcions en compres.

+ +
+ + + +

Pagaments

+ + + + +
Data + Balanç + Comentari + Eliminar +\n\t%s\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%s\n", pricetohtml($pagadors[$persona]["cobrat"] - $pagadors[$persona]["pagat"])); + else + printf("\t%s\n", pricetohtml(0)); + // Comentari + printf("\t%s\n", strtohtml($fila[1])); + // Eliminar + printf("\tEliminar\n", $data); + + $num_pagaments++; + } + +?> +
+ + +

En/La té a veure en pagaments.

+ +
+
+Tornar al menú d'inici + + + + diff -r 000000000000 -r e269d7e3f581 test.php --- /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 @@ +"; + } +?> diff -r 000000000000 -r e269d7e3f581 update-compra.php --- /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 @@ + + + + Edició de les compres + + + + + +

Ètxelon

+ + + + + + + +

Afegir nova compra

+ +
+ +> +> +> + +

Dades de la compra:

+ + + + + + + + + + + + +
Data: + >"> + "> + "> + +
Hora: + >"> + "> + +
Botiga: + >"> +
Motiu: + >"> +
Comentari: + >"> +
Preu: + >"> +
+" . strtohtml($i["nom"]). "\n"; + for($i=0; $i<$num_altres;$i++) + { + echo "\t"; + if(isset($_POST["altres"][$i])) + select_altres("altres[$i]", $_POST["altres"][$i]); + else + select_altres("altres[$i]"); + echo "\n"; + } +?> +
Pagat: +\n"; + } +?> +\n"; + } +?> +
Parts iguals: +\n"; + } +?> +\n"; + } +?> +
Percentatges: +\n"; + } +?> +\n"; + } +?> +
Cal pagar: +\n"; + } +?> +\n"; + } +?> +
+ +
+ +

Excepcions

+

Empleneu les necessàries. S'agafaran si hi ha algo a + Article):

+ + + + + +
Excepció + Article + Preu + >Compradors + + +
+" . strtohtml($j["nom"]) . "\n"; +?> +"; + if(isset($_POST["ealtres"][$i][$j])) + select_altres("ealtres[$i][$j]", $_POST["ealtres"][$i][$j]); + else + select_altres("ealtres[$i][$j]"); + echo "\n"; + } +?> +
+ + > + > +\n"; + } + for ($j=0;$j<$num_altres_excepcions;$j++) + { + echo "\t\n"; + } +} +?> + +
+ +
+
+ + +
+ + +

Alterar el formulari

+ +

Seleccionar el número d'excepcions: + > +

+ +

Seleccionar el número d'altra gent (general) a la compra: + > +

+ +

Seleccionar el número d'altra gent (a les excepcions) a la compra: + > +

+ +

+
+ +
+ +

Utilització

+ + + + + +"; + + + // Comprovem el resultat de l'inserció a "compres" + if (!$resultat) + { +?> +

ERROR: Error al actualitzar les dades a + compres!

+"; + } + 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 . "
"; + + // 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 . "
"; + $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 . "
"; + } + } + + 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 . "
"; + } + } + } + } // 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 . "
\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 . "
"; + } + } + + + // *** 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.
"; + + } + else + { + ?> +

ERROR: No s'ha pogut connectar a la base de dades! + Segurament degut a una contrassenya incorrecta.

+ "; + } + +} +?> + + +
+
+Tornar al menú d'inici + + + diff -r 000000000000 -r e269d7e3f581 update-gent.php --- /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 @@ + + + + Edició dels pagaments + + + + + +

Ètxelon

+ + + + + +

Afegir nova persona

+ +
+ +

Dades de la persona:

+ + + +
Nom: + +
Habitant: + +
+ +
+
+ + +
+ +
+ +

Utilització

+ + + + + +"; + + // Comprovem el resultat de l'inserció a "pagaments" + if (!$resultat) + { +?> +

ERROR: Error al actualitzar les dades a + gent!

+"; + } + + // Què cutre que és això. ** + echo "Si no hi ha cap missatge d'error, tot ha anat bé! La persona ha estat afegida.
"; + +} +?> + + +
+
+Tornar al menú d'inici + + + diff -r 000000000000 -r e269d7e3f581 update-pagament.php --- /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 @@ + + + + Edició dels pagaments + + + + + +

Ètxelon

+ + + + + + + +

Afegir nou pagament

+ +
+ +> + +

Dades del pagament:

+ + + + + + + +
Data: + >"> + "> + "> + +
Hora: + >"> + "> + +
Comentari: + >> +
+" . strtohtml($i["nom"]) . "\n"; +?> +"; + if(isset($_POST["altres"][$i])) + select_altres("altres[$i]", $_POST["altres"][$i]); + else + select_altres("altres[$i]"); + echo "\n"; + } +?> +
Pagat: +\n"; + } +?> +\n"; + } +?> +
Cobrat: +\n"; + } +?> +\n"; + } +?> +
+ +
+
+ + +
+ + +

Alterar formulari

+

Seleccionar el número d'altra gent al pagament: + > +

+ +

+
+ +
+ +

Utilització

+ + + + + +"; + + + // Comprovem el resultat de l'inserció a "pagaments" + if (!$resultat) + { +?> +

ERROR: Error al actualitzar les dades a + pagaments!

+"; + } + 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 . "
\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 . "
"; + } + } + + + // *** 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.
"; + +} +?> + + +
+
+Tornar al menú d'inici + + + diff -r 000000000000 -r e269d7e3f581 view-compra.php --- /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 @@ + + + + Ètxelon - Veure compra + + + + + +

Ètxelon

+

Veure compra

+ + $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 + } + } +?> + +

Dades generals

+ +

Dades de la compra:

+ + + + + + + +
Data i Hora: + + +
Botiga: + + +
Motiu: + + +
Comentari: + + +
Preu: + + +
Preu (a repartir) + + +
+ + + + + + + \n\t\n\t
Compradors globals
Persona + Pagat + Toca pagar + Percentatge + Toca pagar + excepcions + Balanç + $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 "
". strtohtml($gent[$key]["nom"]) . "\n"; + + printf("\t%s\n", pricetohtml($compradors[$key]["pagat"])); + printf("\t%s\n", pricetohtml($compradors[$key]["toca_pagar"])); + printf("\t%s\n", pricetohtml($compradors[$key]["toca_pagar"] + * 100 / $preu_per_compradors)); + printf("\t%s\n", pricetohtml($compradors[$key]["toca_pagar"] + + $modificador)); + printf("\t%s\n", pricetohtml($compradors[$key]["pagat"] + - ($compradors[$key]["toca_pagar"] + $modificador))); + /* + echo "\t" . $compradors[$key]["pagat"] . "\n"; + echo "\t" . $compradors[$key]["toca_pagar"] . "\n"; + echo "\t" . ($compradors[$key]["toca_pagar"] * 100 / $preu_per_compradors) . "\n"; + echo "\t" . ($compradors[$key]["toca_pagar"] + $modificador) . "\n"; + echo "\t" . ($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 "
Total\n"; + printf("\t%s\n", pricetohtml($suma_pagat)); + printf("\t%s\n", pricetohtml($suma_toca_pagar)); + printf("\t%s\n", pricetohtml($suma_percentatge)); + printf("\t%s\n", pricetohtml($suma_toca_pagar_ex)); + printf("\t%s\n", pricetohtml($suma_balans)); +?> +
+ +
+

Excepcions:

+ + + + \n\t\n\t
Id + Article + Preu + >Toca Pagar + + $value) + { + $compradors_excepcions[$key] = obtenir_compradors_excepcions($key, $connexio); + // Poso els noms dels compradors + echo "
\n\t\n\t\n"; + foreach($compradors_excepcions[$key] as $key_c => $value_c) + { + echo "\t" . $gent[$key_c]["nom"] . "\n"; + } + // Poso l'excepcio en si + echo "
" . $key . "\n"; + echo "\t" . strtohtml($excepcions[$key]["article"]) . "\n"; + printf("\t%s\n", pricetohtml($excepcions[$key]["preu"])); + foreach($compradors_excepcions[$key] as $key_c => $value_c) + { + printf("\t%.2f\n", pricetohtml($value_c["toca_pagar"])); + } + } +?> + +
+ +
+ +

Llegenda

+ + + +
+ +
+Tornar al menú d'inici + + + diff -r 000000000000 -r e269d7e3f581 view-pagament.php --- /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 @@ + + + + Ètxelon - Veure pagament + + + + + +

Ètxelon

+

Veure pagament

+ + + +

Dades generals

+ +

Dades del pagament:

+ + + +
Data i Hora: + + +
Comentari: + + +
+ + +

Pagadors i cobradors

+ + + + + \n\t\n\t
Pagadors
Persona + Pagat + Cobrat + Balanç + $value) + { + if (isset($pagadors[$key])) + { + echo "
". strtohtml($gent[$key]["nom"]) . "\n"; + + printf("\t%s\n", pricetohtml($pagadors[$key]["pagat"])); + printf("\t%s\n", pricetohtml($pagadors[$key]["cobrat"])); + printf("\t%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 "
Total\n"; + printf("\t%.2f\n", pricetohtml($suma_pagat)); + printf("\t%.2f\n", pricetohtml($suma_cobrat)); + printf("\t%.2f\n", pricetohtml($suma_balans)); +?> +
+ +
+ +

Llegenda

+ + + +
+
+Tornar al menú d'inici + + +