diff --git a/html/admin/setup.php b/html/admin/setup.php
index 0e85fa3d8..ed89afbf2 100644
--- a/html/admin/setup.php
+++ b/html/admin/setup.php
@@ -41,7 +41,47 @@ include_once('postgres.php');
include_once('debug.php');
include_once('ac_common.php');
include_once('variable.php');
+/* function ExecuteScript
+ **************************************************
+ * Purpose : Execute a sql script
+ *
+ * parm :
+ * - $p_cn database connection
+ * - $script script name
+ * gen :
+ * - none
+ * return:
+ * none
+ */
+function ExecuteScript($p_cn,$script) {
+ $hf=fopen($script,'r');
+ $sql="";
+ while (!feof($hf)) {
+ $buffer=fgets($hf);
+ // comment are not execute
+ if ( strrpos($buffer,"--") == true) {
+ continue;
+ }
+ // Blank Lines Are Skipped
+ If ( Strlen($buffer)==0) {
+ Echo "Blank";
+ Continue;
+ }
+ // No semi colon -> multiline command
+ if ( strpos($buffer,';') == false ) {
+ $sql.=$buffer;
+ continue;
+ }
+ // cut the semi colon
+ $buffer=str_replace (';','',$buffer);
+ $sql.=$buffer;
+ print "Execute $sql
";
+ ExecSql($p_cn,$sql);
+ $sql="";
+ } // while (feof)
+ fclose($hf);
+}
// Verify some PHP parameters
// magic_quotes_gpc = Off
@@ -67,7 +107,7 @@ if ( ereg("\.\.\/include",ini_get('include_path')) == false )
$cn=DbConnect(-2,'phpcompta');
if ($cn == false ) {
- print " Vous devez absolument taper dans une console la commande 'createuser -d phpcompta'
+ print "
Vous devez absolument taper dans une console la commande 'createuser -d phpcompta -P dany'
puis la commande 'createdb -O phpcompta phpcompta'.
Ces commandes créeront l'utilisateur phpcompta
puis la base de données par défaut de phpcompta.
";
@@ -87,12 +127,20 @@ if ($account == 0 ) {
$r=system("$psql -U phpcompta account_repository -f sql/account_repository/data.sql",$r);
echo "Creation of Démo";
ExecSql($cn,"create database dossier1 encoding='latin1'");
- $r=system("$psql -U phpcompta dossier1 -f sql/dossier1/schema.sql",$r);
- $r=system("$psql -U phpcompta dossier1 -f sql/dossier1/data.sql",$r);
+// $r=system("$psql -U phpcompta dossier1 -f sql/dossier1/schema.sql",$r);
+// $r=system("$psql -U phpcompta dossier1 -f sql/dossier1/data.sql",$r);
+ $cn=DbConnect(1,'dossier');
+ ExecuteScript($cn,'sql/dossier1/schema.sql');
+ ExecuteScript($cn,'sql/dossier1/data.sql');
+
echo "Creation of Modele1";
ExecSql($cn,"create database mod1 encoding='latin1'");
- $r=system("$psql -U phpcompta mod1 -f sql/mod1/schema.sql",$r);
- $r=system("$psql -U phpcompta mod1 -f sql/mod1/data.sql",$r);
+ $cn=DbConnect(1,'mod');
+ ExecuteScript($cn,'sql/mod1/schema.sql');
+ ExecuteScript($cn,'sql/mod1/data.sql');
+
+// $r=system("$psql -U phpcompta mod1 -f sql/mod1/schema.sql",$r);
+// $r=system("$psql -U phpcompta mod1 -f sql/mod1/data.sql",$r);
ob_end_clean();
}
@@ -107,4 +155,28 @@ if ( ($Res=ExecSql($a,"select * from ac_users") ) == false ) {
exit ("".__LINE__." test has failed !!!
");
} else
print "Connect to database success
";
-echo " Congratulation : Test successfull
";
\ No newline at end of file
+echo " Congratulation : Test successfull
";
+
+echo " Patching databases
";
+
+$cn=DbConnect();
+$Res=ExecSql($cn,"select dos_id, dos_name from ac_dossier");
+$MaxDossier=pg_NumRows($Res);
+
+for ($e=0;$e < $MaxDossier;$e++) {
+ $db_row=pg_fetch_array($Res,$e);
+ echo "Patching ".$db_row['dos_name'];
+ if ( GetVersion($db_row['dos_id']) == 3 ) {
+ $db=DbConnect($db_row['dos_id'],'dossier');
+ ExecuteScript($db,'sql/patch/upgrade4.sql');
+
+ $sql="select jrn_def_id from jrn_def ";
+ $Res=ExecSql($db,$sql);
+ $Max=pg_NumRows($Res);
+ for ($seq=0;$seq<$Max;$seq++) {
+ $row=pg_fetch_array($Res,$seq);
+ $sql=sprintf ("create sequence s_jrn_%d",$row['jrn_def_id']);
+ ExecSql($db,$sql);
+ }
+ } // version == 3
+ }
diff --git a/html/admin/sql/patch/upgrade4.sql b/html/admin/sql/patch/upgrade4.sql
new file mode 100644
index 000000000..24e7efbb5
--- /dev/null
+++ b/html/admin/sql/patch/upgrade4.sql
@@ -0,0 +1,31 @@
+-- upgrade
+comment on table action is 'The different privileges';
+comment on table attr_def is 'The available attributs for the cards';
+comment on table attr_min is 'The minimum attributs for the cards';
+comment on table attr_min is 'The value of attributs for the cards';
+comment on table centralized is 'The centralized journal';
+comment on table fiche is 'Cards';
+comment on table fiche_def is 'Cards definition';
+comment on table fiche_def_ref is 'Family Cards definition';
+comment on table form is 'Forms';
+comment on table form is 'Forms content';
+comment on table jnt_fic_att_value is 'join between the card and the attribut definition';
+comment on table jnt_fic_attr is 'join between the family card and the attribut definition';
+comment on table jrn is 'Journal: content one line for a group of accountancy writing';
+comment on table jrnx is 'Journal: content one line for each accountancy writing';
+comment on table jrn_action is 'Possible action when we are in journal (menu)';
+comment on table jrn_def is 'Definition of a journal, his properties';
+comment on table jrn_rapt is 'Rapprochement between operation';
+comment on table jrn_type is 'Type of journal (Sell, Buy, Financial...)';
+comment on table parm_money is 'Currency conversion';
+comment on table parm_periode is 'Periode definition';
+comment on table stock_goods is 'About the goods';
+comment on table tmp_pcmn is 'Plan comptable minimum normalisé';
+comment on table tva_rate is 'Rate of vat';
+create index x_jr_grpt_id on jrn (jr_grpt_id);
+create index x_j_grpt on jrnx(j_grpt);
+create index x_poste on jrnx(j_poste );delete from jrn_action where ja_name='Impression';
+delete from fiche where f_id not in (select f_id from jnt_fic_att_value);
+alter table jrn add j_pj int4;
+alter table jrn add jr_opid int4;
+upgrade version set val=4;