From 030074cf8336704afc6b7994d154050fdc0bb336 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Mon, 26 Oct 2009 00:34:09 +0000 Subject: [PATCH] Fix: Data must be loaded in the correct order. --- htdocs/install/etape2.php | 840 +++++++++--------- .../{llx_c_pays.sql => llx_00_c_pays.sql} | 0 ...llx_c_regions.sql => llx_10_c_regions.sql} | 0 ...rtements.sql => llx_20_c_departements.sql} | 0 ...countingaccount.sql => llx_accounting.sql} | 0 htdocs/install/mysql/data/llx_c_ecotaxe.sql | 76 +- htdocs/theme/eldy/eldy.css.php | 13 +- 7 files changed, 484 insertions(+), 445 deletions(-) rename htdocs/install/mysql/data/{llx_c_pays.sql => llx_00_c_pays.sql} (100%) rename htdocs/install/mysql/data/{llx_c_regions.sql => llx_10_c_regions.sql} (100%) rename htdocs/install/mysql/data/{llx_c_departements.sql => llx_20_c_departements.sql} (100%) rename htdocs/install/mysql/data/{llx_accountingaccount.sql => llx_accounting.sql} (100%) diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index f3a9d9d7b57..3a966b0f565 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -58,424 +58,462 @@ dolibarr_install_syslog("etape2: Entering etape2.php page"); /* -* View -*/ + * View + */ pHeader($langs->trans("CreateDatabaseObjects"),"etape4"); if ($_POST["action"] == "set") { - print '<h3>'.$langs->trans("Database").'</h3>'; - - print '<table cellspacing="0" cellpadding="4" border="0" width="100%">'; - $error=0; - - $db = new DoliDb($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port); - if ($db->connected == 1) - { - print "<tr><td>"; - print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td>".$langs->trans("OK")."</td></tr>"; - $ok = 1 ; - } - else - { - print "<tr><td>Erreur lors de la creation de : $dolibarr_main_db_name</td><td>".$langs->trans("Error")."</td></tr>"; - } - - if ($ok) - { - if($db->database_selected == 1) - { - - dolibarr_install_syslog("etape2: Connexion reussie a la base : $dolibarr_main_db_name"); - } - else - { - $ok = 0 ; - } - } - - - // Affiche version - if ($ok) - { - $version=$db->getVersion(); - $versionarray=$db->getVersionArray(); - print '<tr><td>'.$langs->trans("DatabaseVersion").'</td>'; - print '<td>'.$version.'</td></tr>'; - //print '<td align="right">'.join('.',$versionarray).'</td></tr>'; - } + print '<h3>'.$langs->trans("Database").'</h3>'; + + print '<table cellspacing="0" cellpadding="4" border="0" width="100%">'; + $error=0; + + $db = new DoliDb($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port); + if ($db->connected == 1) + { + print "<tr><td>"; + print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td>".$langs->trans("OK")."</td></tr>"; + $ok = 1 ; + } + else + { + print "<tr><td>Erreur lors de la creation de : $dolibarr_main_db_name</td><td>".$langs->trans("Error")."</td></tr>"; + } + + if ($ok) + { + if($db->database_selected == 1) + { + + dolibarr_install_syslog("etape2: Connexion reussie a la base : $dolibarr_main_db_name"); + } + else + { + $ok = 0 ; + } + } + + + // Affiche version + if ($ok) + { + $version=$db->getVersion(); + $versionarray=$db->getVersionArray(); + print '<tr><td>'.$langs->trans("DatabaseVersion").'</td>'; + print '<td>'.$version.'</td></tr>'; + //print '<td align="right">'.join('.',$versionarray).'</td></tr>'; + } $requestnb=0; - /************************************************************************************** - * - * Chargement fichiers tables/*.sql (non *.key.sql) - * A faire avant les fichiers *.key.sql - * - ***************************************************************************************/ - if ($ok) - { - // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) - $dir = "mysql/tables/"; - - $ok = 0; - $handle=opendir($dir); - dolibarr_install_syslog("Open tables directory ".$dir." handle=".$handle,LOG_DEBUG); - $tablefound = 0; - while (($file = readdir($handle))!==false) - { - if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && ! preg_match('/\.key\.sql$/i',$file)) - { - $tablefound++; - - $name = substr($file, 0, strlen($file) - 4); - $buffer = ''; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buf = fgets($fp, 4096); - if (substr($buf, 0, 2) <> '--') - { - if ($choix != 1) // All databases except Mysql - { - $buf=$db->convertSQLFromMysql($buf); - } - - $buffer .= $buf; - } - } - fclose($fp); - - $buffer=trim($buffer); + // To disable some code + $createtables=1; + $createkeys=1; + $createfunctions=1; + $createdata=1; + + /************************************************************************************** + * + * Chargement fichiers tables/*.sql (non *.key.sql) + * A faire avant les fichiers *.key.sql + * + ***************************************************************************************/ + if ($ok && $createtables) + { + // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) + $dir = "mysql/tables/"; + + $ok = 0; + $handle=opendir($dir); + dolibarr_install_syslog("Open tables directory ".$dir." handle=".$handle,LOG_DEBUG); + $tablefound = 0; + $tabledata=array(); + while (($file = readdir($handle))!==false) + { + if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && ! preg_match('/\.key\.sql$/i',$file)) + { + $tablefound++; + $tabledata[]=$file; + } + } + closedir($handle); + + // Sort list of data files on alphabetical order (load order is important) + sort($tabledata); + foreach($tabledata as $file) + { + $name = substr($file, 0, strlen($file) - 4); + $buffer = ''; + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buf = fgets($fp, 4096); + if (substr($buf, 0, 2) <> '--') + { + if ($choix != 1) // All databases except Mysql + { + $buf=$db->convertSQLFromMysql($buf); + } - //print "<tr><td>Creation de la table $name/td>"; - $requestnb++; - if ($conf->file->character_set_client == "UTF-8") + $buffer .= $buf; + } + } + fclose($fp); + + $buffer=trim($buffer); + + //print "<tr><td>Creation de la table $name/td>"; + $requestnb++; + if ($conf->file->character_set_client == "UTF-8") + { + $buffer=utf8_encode($buffer); + } + + dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + if ($db->query($buffer)) + { + // print "<td>OK requete ==== $buffer</td></tr>"; + } + else + { + if ($db->errno() == 'DB_ERROR_TABLE_ALREADY_EXISTS' || + $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS') + { + //print "<td>Deja existante</td></tr>"; + } + else + { + print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name); + print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer; + print "\n</td>"; + print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; + $error++; + } + } + } + else + { + print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name); + print "</td>"; + print "<td>".$langs->trans("Error")." Failed to open file ".$dir.$file."</td></tr>"; + $error++; + dolibarr_install_syslog("Failed to open file ".$dir.$file,LOG_ERR); + } + } + + if ($tablefound) + { + if ($error == 0) + { + print '<tr><td>'; + print $langs->trans("TablesAndPrimaryKeysCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; + $ok = 1; + } + } + else + { + print "<tr><td>".$langs->trans("ErrorFailedToFindSomeFiles",$dir)."</td><td>".$langs->trans("Error")."</td></tr>"; + dolibarr_install_syslog("Failed to find files to create database in directory ".$dir,LOG_ERR); + } + } + + + /*************************************************************************************** + * + * Chargement fichiers tables/*.key.sql + * A faire apres les fichiers *.sql + * + ***************************************************************************************/ + if ($ok && $createkeys) + { + // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) + $dir = "mysql/tables/"; + + $okkeys = 0; + $handle=opendir($dir); + dolibarr_install_syslog("Open keys directory ".$dir." handle=".$handle,LOG_DEBUG); + $tablefound = 0; + $tabledata=array(); + while (($file = readdir($handle))!==false) + { + if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && preg_match('/\.key\.sql$/i',$file)) + { + $tablefound++; + $tabledata[]=$file; + } + } + closedir($handle); + + // Sort list of data files on alphabetical order (load order is important) + sort($tabledata); + foreach($tabledata as $file) + { + $name = substr($file, 0, strlen($file) - 4); + //print "<tr><td>Creation de la table $name</td>"; + $buffer = ''; + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buf = fgets($fp, 4096); + + // Cas special de lignes autorisees pour certaines versions uniquement + if ($choix == 1 && preg_match('/^--\sV([0-9\.]+)/i',$buf,$reg)) + { + $versioncommande=explode('.',$reg[1]); + //print var_dump($versioncommande); + //print var_dump($versionarray); + if (sizeof($versioncommande) && sizeof($versionarray) + && versioncompare($versioncommande,$versionarray) <= 0) + { + // Version qualified, delete SQL comments + $buf=preg_replace('/^--\sV([0-9\.]+)/i','',$buf); + //print "Ligne $i qualifiee par version: ".$buf.'<br>'; + } + } + if ($choix == 2 && preg_match('/^--\sPOSTGRESQL\sV([0-9\.]+)/i',$buf,$reg)) { - $buffer=utf8_encode($buffer); + $versioncommande=explode('.',$reg[1]); + //print var_dump($versioncommande); + //print var_dump($versionarray); + if (sizeof($versioncommande) && sizeof($versionarray) + && versioncompare($versioncommande,$versionarray) <= 0) + { + // Version qualified, delete SQL comments + $buf=preg_replace('/^--\sPOSTGRESQL\sV([0-9\.]+)/i','',$buf); + //print "Ligne $i qualifiee par version: ".$buf.'<br>'; + } } + // Ajout ligne si non commentaire + if (! preg_match('/^--/i',$buf)) $buffer .= $buf; + } + fclose($fp); + + // Si plusieurs requetes, on boucle sur chaque + $listesql=explode(';',$buffer); + foreach ($listesql as $req) + { + $buffer=trim($req); + if ($buffer) + { + //print "<tr><td>Creation des cles et index de la table $name: '$buffer'</td>"; + $requestnb++; + if ($conf->file->character_set_client == "UTF-8") + { + $buffer=utf8_encode($buffer); + } + + dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + if ($db->query($buffer)) + { + //print "<td>OK requete ==== $buffer</td></tr>"; + } + else + { + if ($db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS' || + $db->errno() == 'DB_ERROR_CANNOT_CREATE' || + $db->errno() == 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS' || + $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS' || + preg_match('/duplicate key name/i',$db->error())) + { + //print "<td>Deja existante</td></tr>"; + $key_exists = 1; + } + else + { + print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name); + print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); + print "\n</td>"; + print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; + $error++; + } + } + } + } + } + else + { + print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name); + print "</td>"; + print "<td>".$langs->trans("Error")." Failed to open file ".$dir.$file."</td></tr>"; + $error++; + dolibarr_install_syslog("Failed to open file ".$dir.$file,LOG_ERR); + } + } + + if ($tablefound && $error == 0) + { + print '<tr><td>'; + print $langs->trans("OtherKeysCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; + $okkeys = 1; + } + } + + + /*************************************************************************************** + * + * Chargement fichier functions.sql + * + ***************************************************************************************/ + if ($ok && $createfunctions) + { + // For this file, we use directory according to database type + if ($choix==1) $dir = "mysql/functions/"; + elseif ($choix==2) $dir = "pgsql/functions/"; + elseif ($choix==3) $dir = "mssql/functions/"; + + // Creation donnees + $file = "functions.sql"; + if (file_exists($dir.$file)) + { + $fp = fopen($dir.$file,"r"); + dolibarr_install_syslog("Open function file ".$dir.$file." handle=".$fp,LOG_DEBUG); + if ($fp) + { + $buffer=''; + while (!feof ($fp)) + { + $buf = fgets($fp, 4096); + if (substr($buf, 0, 2) <> '--') + { + $buffer .= $buf; + } + } + fclose($fp); + } + + // Si plusieurs requetes, on boucle sur chaque + $buffer=preg_replace('/;\';/',";'§",$buffer); + $listesql=explode('§',$buffer); + foreach ($listesql as $buffer) + { + $buffer=trim($buffer); + if ($buffer) + { dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); if ($db->query($buffer)) - { - // print "<td>OK requete ==== $buffer</td></tr>"; - } - else - { - if ($db->errno() == 'DB_ERROR_TABLE_ALREADY_EXISTS' || - $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS') - { - //print "<td>Deja existante</td></tr>"; - } - else - { - print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name); - print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer; - print "\n</td>"; - print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; - $error++; - } - } - } - else - { - print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name); - print "</td>"; - print "<td>".$langs->trans("Error")." Failed to open file ".$dir.$file."</td></tr>"; - $error++; - dolibarr_install_syslog("Failed to open file ".$dir.$file,LOG_ERR); - } - } - } - closedir($handle); - - if ($tablefound) - { - if ($error == 0) - { - print '<tr><td>'; - print $langs->trans("TablesAndPrimaryKeysCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; - $ok = 1; - } - } - else - { - print "<tr><td>".$langs->trans("ErrorFailedToFindSomeFiles",$dir)."</td><td>".$langs->trans("Error")."</td></tr>"; - dolibarr_install_syslog("Failed to find files to create database in directory ".$dir,LOG_ERR); - } - } - - - /*************************************************************************************** - * - * Chargement fichiers tables/*.key.sql - * A faire apres les fichiers *.sql - * - ***************************************************************************************/ - if ($ok) - { - // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) - $dir = "mysql/tables/"; - - $okkeys = 0; - $handle=opendir($dir); - dolibarr_install_syslog("Open keys directory ".$dir." handle=".$handle,LOG_DEBUG); - while (($file = readdir($handle))!==false) - { - if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && preg_match('/\.key\.sql$/i',$file)) - { - $name = substr($file, 0, strlen($file) - 4); - //print "<tr><td>Creation de la table $name</td>"; - $buffer = ''; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buf = fgets($fp, 4096); - - // Cas special de lignes autorisees pour certaines versions uniquement - if ($choix == 1 && preg_match('/^--\sV([0-9\.]+)/i',$buf,$reg)) - { - $versioncommande=explode('.',$reg[1]); - //print var_dump($versioncommande); - //print var_dump($versionarray); - if (sizeof($versioncommande) && sizeof($versionarray) - && versioncompare($versioncommande,$versionarray) <= 0) - { - // Version qualified, delete SQL comments - $buf=preg_replace('/^--\sV([0-9\.]+)/i','',$buf); - //print "Ligne $i qualifiee par version: ".$buf.'<br>'; - } - } - if ($choix == 2 && preg_match('/^--\sPOSTGRESQL\sV([0-9\.]+)/i',$buf,$reg)) - { - $versioncommande=explode('.',$reg[1]); - //print var_dump($versioncommande); - //print var_dump($versionarray); - if (sizeof($versioncommande) && sizeof($versionarray) - && versioncompare($versioncommande,$versionarray) <= 0) - { - // Version qualified, delete SQL comments - $buf=preg_replace('/^--\sPOSTGRESQL\sV([0-9\.]+)/i','',$buf); - //print "Ligne $i qualifiee par version: ".$buf.'<br>'; - } - } - - // Ajout ligne si non commentaire - if (! preg_match('/^--/i',$buf)) $buffer .= $buf; - } - fclose($fp); - - // Si plusieurs requetes, on boucle sur chaque - $listesql=explode(';',$buffer); - foreach ($listesql as $req) - { - $buffer=trim($req); - if ($buffer) - { - //print "<tr><td>Creation des cles et index de la table $name: '$buffer'</td>"; - $requestnb++; - if ($conf->file->character_set_client == "UTF-8") + { + $ok = 1; + } + else + { + if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + // print "<tr><td>Insertion ligne : $buffer</td><td> + } + else + { + $ok = 0; + print $langs->trans("ErrorSQL")." : ".$db->errno()." - '$buffer' - ".$db->lastqueryerror()."<br>"; + } + } + } + } + + print "<tr><td>".$langs->trans("FunctionsCreation")."</td>"; + if ($ok) + { + print "<td>".$langs->trans("OK")."</td></tr>"; + } + else + { + print "<td>".$langs->trans("Error")."</td></tr>"; + $ok = 1 ; + } + + } + } + + + /*************************************************************************************** + * + * Chargement fichier data.sql + * + ***************************************************************************************/ + if ($ok && $createdata) + { + // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) + $dir = "mysql/data/"; + + // Insert data + $handle=opendir($dir); + dolibarr_install_syslog("Open directory data ".$dir." handle=".$handle,LOG_DEBUG); + $tablefound = 0; + $tabledata=array(); + while (($file = readdir($handle))!==false) + { + if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file)) + { + $tablefound++; + $tabledata[]=$file; + } + } + closedir($handle); + + // Sort list of data files on alphabetical order (load order is important) + sort($tabledata); + foreach($tabledata as $file) + { + $name = substr($file, 0, strlen($file) - 4); + $fp = fopen($dir.$file,"r"); + dolibarr_install_syslog("Open data file ".$dir.$file." handle=".$fp,LOG_DEBUG); + if ($fp) + { + while (!feof ($fp)) + { + $buffer = fgets($fp, 4096); + $buffer = trim($buffer); + if ($buffer) + { + if (substr($buffer, 0, 2) == '--') + { + continue; + } + + //dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + if ($db->query($buffer)) + { + $ok = 1; + } + else + { + if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { - $buffer=utf8_encode($buffer); + //print "<tr><td>Insertion ligne : $buffer</td><td>"; } - - dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); - if ($db->query($buffer)) - { - //print "<td>OK requete ==== $buffer</td></tr>"; - } - else - { - if ($db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS' || - $db->errno() == 'DB_ERROR_CANNOT_CREATE' || - $db->errno() == 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS' || - $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS' || - preg_match('/duplicate key name/i',$db->error())) - { - //print "<td>Deja existante</td></tr>"; - $key_exists = 1; - } - else - { - print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name); - print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); - print "\n</td>"; - print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; - $error++; - } - } - } - } - } - else - { - print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name); - print "</td>"; - print "<td>".$langs->trans("Error")." Failed to open file ".$dir.$file."</td></tr>"; - $error++; - dolibarr_install_syslog("Failed to open file ".$dir.$file,LOG_ERR); - } - } - - } - closedir($handle); - - if ($error == 0) - { - print '<tr><td>'; - print $langs->trans("OtherKeysCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; - $okkeys = 1; - } - } - - - /*************************************************************************************** - * - * Chargement fichier functions.sql - * - ***************************************************************************************/ - if ($ok) - { - // For this file, we use directory according to database type - if ($choix==1) $dir = "mysql/functions/"; - elseif ($choix==2) $dir = "pgsql/functions/"; - elseif ($choix==3) $dir = "mssql/functions/"; - - // Creation donnees - $file = "functions.sql"; - if (file_exists($dir.$file)) - { - $fp = fopen($dir.$file,"r"); - dolibarr_install_syslog("Open function file ".$dir.$file." handle=".$fp,LOG_DEBUG); - if ($fp) - { - $buffer=''; - while (!feof ($fp)) - { - $buf = fgets($fp, 4096); - if (substr($buf, 0, 2) <> '--') - { - $buffer .= $buf; - } - } - fclose($fp); - } - - // Si plusieurs requetes, on boucle sur chaque - $buffer=preg_replace('/;\';/',";'§",$buffer); - $listesql=explode('§',$buffer); - foreach ($listesql as $buffer) - { - $buffer=trim($buffer); - if ($buffer) - { - dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); - if ($db->query($buffer)) - { - $ok = 1; - } - else - { - if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - // print "<tr><td>Insertion ligne : $buffer</td><td> - } - else - { - $ok = 0; - print $langs->trans("ErrorSQL")." : ".$db->errno()." - '$buffer' - ".$db->lastqueryerror()."<br>"; - } - } - } - } - - print "<tr><td>".$langs->trans("FunctionsCreation")."</td>"; - if ($ok) - { - print "<td>".$langs->trans("OK")."</td></tr>"; - } - else - { - print "<td>".$langs->trans("Error")."</td></tr>"; - $ok = 1 ; - } - - } - } - - - /*************************************************************************************** - * - * Chargement fichier data.sql - * - ***************************************************************************************/ - if ($ok) - { - // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) - $dir = "mysql/data/"; - - // Insert data - $handle=opendir($dir); - dolibarr_install_syslog("Open directory data ".$dir." handle=".$handle,LOG_DEBUG); - while (($file = readdir($handle))!==false) - { - if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file)) - { - $name = substr($file, 0, strlen($file) - 4); - $buffer = ''; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buffer = fgets($fp, 4096); - //print "<tr><td>Insertion ligne : $buffer</td><td>"; - if (strlen(trim(str_replace("--","",$buffer)))) - { - if ($db->query($buffer)) - { - $ok = 1; - } - else - { - if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - //print "<tr><td>Insertion ligne : $buffer</td><td>"; - } - else - { - $ok = 0; - print $langs->trans("ErrorSQL")." : ".$db->errno()." - '$buffer' - ".$db->error()."<br>"; - } - } - } - } - fclose($fp); - } - } - } - closedir($handle); - - print "<tr><td>".$langs->trans("ReferenceDataLoading")."</td>"; - if ($ok) - { - print "<td>".$langs->trans("OK")."</td></tr>"; - } - else - { - print "<td>".$langs->trans("Error")."</td></tr>"; - $ok = 1 ; - } - } - print '</table>'; - - $db->close(); + else + { + $ok = 0; + print $langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()."<br>"; + } + } + } + } + fclose($fp); + } + } + + print "<tr><td>".$langs->trans("ReferenceDataLoading")."</td>"; + if ($ok) + { + print "<td>".$langs->trans("OK")."</td></tr>"; + } + else + { + print "<td>".$langs->trans("Error")."</td></tr>"; + $ok = 1 ; + } + } + print '</table>'; + + $db->close(); } pFooter(!$ok,$setuplang); diff --git a/htdocs/install/mysql/data/llx_c_pays.sql b/htdocs/install/mysql/data/llx_00_c_pays.sql similarity index 100% rename from htdocs/install/mysql/data/llx_c_pays.sql rename to htdocs/install/mysql/data/llx_00_c_pays.sql diff --git a/htdocs/install/mysql/data/llx_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql similarity index 100% rename from htdocs/install/mysql/data/llx_c_regions.sql rename to htdocs/install/mysql/data/llx_10_c_regions.sql diff --git a/htdocs/install/mysql/data/llx_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql similarity index 100% rename from htdocs/install/mysql/data/llx_c_departements.sql rename to htdocs/install/mysql/data/llx_20_c_departements.sql diff --git a/htdocs/install/mysql/data/llx_accountingaccount.sql b/htdocs/install/mysql/data/llx_accounting.sql similarity index 100% rename from htdocs/install/mysql/data/llx_accountingaccount.sql rename to htdocs/install/mysql/data/llx_accounting.sql diff --git a/htdocs/install/mysql/data/llx_c_ecotaxe.sql b/htdocs/install/mysql/data/llx_c_ecotaxe.sql index 4944570f153..db630463dbf 100644 --- a/htdocs/install/mysql/data/llx_c_ecotaxe.sql +++ b/htdocs/install/mysql/data/llx_c_ecotaxe.sql @@ -33,45 +33,45 @@ -- -- France (Organisme ERP) -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 1, 'ER-A-A', 'Materiels electriques < 0,2kg', 0.01000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 2, 'ER-A-B', 'Materiels electriques >= 0,2 kg et < 0,5 kg', 0.03000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 3, 'ER-A-C', 'Materiels electriques >= 0,5 kg et < 1 kg', 0.04000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 4, 'ER-A-D', 'Materiels electriques >= 1 kg et < 2 kg', 0.13000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 5, 'ER-A-E', 'Materiels electriques >= 2 kg et < 4kg', 0.21000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 6, 'ER-A-F', 'Materiels electriques >= 4 kg et < 8 kg', 0.42000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 7, 'ER-A-G', 'Materiels electriques >= 8 kg et < 15 kg', 0.84000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 8, 'ER-A-H', 'Materiels electriques >= 15 kg et < 20 kg', 1.25000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES ( 9, 'ER-A-I', 'Materiels electriques >= 20 kg et < 30 kg', 1.88000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (10, 'ER-A-J', 'Materiels electriques >= 30 kg', 3.34000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (11, 'ER-M-1', 'TV, Moniteurs < 9kg', 0.84000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (12, 'ER-M-2', 'TV, Moniteurs >= 9kg et < 15kg', 1.67000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (13, 'ER-M-3', 'TV, Moniteurs >= 15kg et < 30kg', 3.34000000, 'ERP', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (14, 'ER-M-4', 'TV, Moniteurs >= 30 kg', 6.69000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 1, 'ER-A-A', 'Materiels electriques < 0,2kg', 0.01000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 2, 'ER-A-B', 'Materiels electriques >= 0,2 kg et < 0,5 kg', 0.03000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 3, 'ER-A-C', 'Materiels electriques >= 0,5 kg et < 1 kg', 0.04000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 4, 'ER-A-D', 'Materiels electriques >= 1 kg et < 2 kg', 0.13000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 5, 'ER-A-E', 'Materiels electriques >= 2 kg et < 4kg', 0.21000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 6, 'ER-A-F', 'Materiels electriques >= 4 kg et < 8 kg', 0.42000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 7, 'ER-A-G', 'Materiels electriques >= 8 kg et < 15 kg', 0.84000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 8, 'ER-A-H', 'Materiels electriques >= 15 kg et < 20 kg', 1.25000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES ( 9, 'ER-A-I', 'Materiels electriques >= 20 kg et < 30 kg', 1.88000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (10, 'ER-A-J', 'Materiels electriques >= 30 kg', 3.34000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (11, 'ER-M-1', 'TV, Moniteurs < 9kg', 0.84000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (12, 'ER-M-2', 'TV, Moniteurs >= 9kg et < 15kg', 1.67000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (13, 'ER-M-3', 'TV, Moniteurs >= 15kg et < 30kg', 3.34000000, 'ERP', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (14, 'ER-M-4', 'TV, Moniteurs >= 30 kg', 6.69000000, 'ERP', 1, 1); -- France (Organisme Ecologic) -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (15, 'EC-A-A', 'Materiels electriques 0,2 kg max', 0.00840000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (16, 'EC-A-B', 'Materiels electriques 0,21 kg min - 0,50 kg max', 0.02500000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (17, 'EC-A-C', 'Materiels electriques 0,51 kg min - 1 kg max', 0.04000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (18, 'EC-A-D', 'Materiels electriques 1,01 kg min - 2,5 kg max', 0.13000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (19, 'EC-A-E', 'Materiels electriques 2,51 kg min - 4 kg max', 0.21000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (20, 'EC-A-F', 'Materiels electriques 4,01 kg min - 8 kg max', 0.42000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (21, 'EC-A-G', 'Materiels electriques 8,01 kg min - 12 kg max', 0.63000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (22, 'EC-A-H', 'Materiels electriques 12,01 kg min - 20 kg max', 1.05000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (23, 'EC-A-I', 'Materiels electriques 20,01 kg min', 1.88000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (24, 'EC-M-1', 'TV, Moniteurs 9 kg max', 0.84000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (25, 'EC-M-2', 'TV, Moniteurs 9,01 kg min - 18 kg max', 1.67000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (26, 'EC-M-3', 'TV, Moniteurs 18,01 kg min - 36 kg max', 3.34000000, 'Ecologic', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (27, 'EC-M-4', 'TV, Moniteurs 36,01 kg min', 6.69000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (15, 'EC-A-A', 'Materiels electriques 0,2 kg max', 0.00840000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (16, 'EC-A-B', 'Materiels electriques 0,21 kg min - 0,50 kg max', 0.02500000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (17, 'EC-A-C', 'Materiels electriques 0,51 kg min - 1 kg max', 0.04000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (18, 'EC-A-D', 'Materiels electriques 1,01 kg min - 2,5 kg max', 0.13000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (19, 'EC-A-E', 'Materiels electriques 2,51 kg min - 4 kg max', 0.21000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (20, 'EC-A-F', 'Materiels electriques 4,01 kg min - 8 kg max', 0.42000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (21, 'EC-A-G', 'Materiels electriques 8,01 kg min - 12 kg max', 0.63000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (22, 'EC-A-H', 'Materiels electriques 12,01 kg min - 20 kg max', 1.05000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (23, 'EC-A-I', 'Materiels electriques 20,01 kg min', 1.88000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (24, 'EC-M-1', 'TV, Moniteurs 9 kg max', 0.84000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (25, 'EC-M-2', 'TV, Moniteurs 9,01 kg min - 18 kg max', 1.67000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (26, 'EC-M-3', 'TV, Moniteurs 18,01 kg min - 36 kg max', 3.34000000, 'Ecologic', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (27, 'EC-M-4', 'TV, Moniteurs 36,01 kg min', 6.69000000, 'Ecologic', 1, 1); -- France (Organisme Eco-systemes) -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (28, 'ES-M-1', 'TV, Moniteurs <= 20 pouces', 0.84000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (29, 'ES-M-2', 'TV, Moniteurs > 20 pouces et <= 32 pouces', 3.34000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (30, 'ES-M-3', 'TV, Moniteurs > 32 pouces et autres grands ecrans', 6.69000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (31, 'ES-A-A', 'Ordinateur fixe, Audio home systems (HIFI), elements hifi separes', 0.84000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (32, 'ES-A-B', 'Ordinateur portable, CD-RCR, VCR, lecteurs et enregistreurs DVD, instruments de musique et caisses de resonance, haut parleurs...', 0.25000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (33, 'ES-A-C', 'Imprimante, photocopieur, telecopieur', 0.42000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (34, 'ES-A-D', 'Accessoires, clavier, souris, PDA, imprimante photo, appareil photo, gps, telephone, repondeur, telephone sans fil, modem, telecommande, casque, camescope, baladeur mp3, radio portable, radio K7 et CD portable, radio reveil', 0.08400000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (35, 'ES-A-E', 'GSM', 0.00840000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (36, 'ES-A-F', 'Jouets et equipements de loisirs et de sports < 0,5 kg', 0.04200000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (37, 'ES-A-G', 'Jouets et equipements de loisirs et de sports > 0,5 kg', 0.17000000, 'Eco-systemes', 1, 1); -INSERT INTO `llx_c_ecotaxe` (`rowid`, `code`, `libelle`, `price`, `organization`, `fk_pays`, `active`) VALUES (38, 'ES-A-H', 'Jouets et equipements de loisirs et de sports > 10 kg', 1.25000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (28, 'ES-M-1', 'TV, Moniteurs <= 20 pouces', 0.84000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (29, 'ES-M-2', 'TV, Moniteurs > 20 pouces et <= 32 pouces', 3.34000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (30, 'ES-M-3', 'TV, Moniteurs > 32 pouces et autres grands ecrans', 6.69000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (31, 'ES-A-A', 'Ordinateur fixe, Audio home systems (HIFI), elements hifi separes', 0.84000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (32, 'ES-A-B', 'Ordinateur portable, CD-RCR, VCR, lecteurs et enregistreurs DVD, instruments de musique et caisses de resonance, haut parleurs...', 0.25000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (33, 'ES-A-C', 'Imprimante, photocopieur, telecopieur', 0.42000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (34, 'ES-A-D', 'Accessoires, clavier, souris, PDA, imprimante photo, appareil photo, gps, telephone, repondeur, telephone sans fil, modem, telecommande, casque, camescope, baladeur mp3, radio portable, radio K7 et CD portable, radio reveil', 0.08400000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (35, 'ES-A-E', 'GSM', 0.00840000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (36, 'ES-A-F', 'Jouets et equipements de loisirs et de sports < 0,5 kg', 0.04200000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (37, 'ES-A-G', 'Jouets et equipements de loisirs et de sports > 0,5 kg', 0.17000000, 'Eco-systemes', 1, 1); +INSERT INTO llx_c_ecotaxe (rowid, code, libelle, price, organization, fk_pays, active) VALUES (38, 'ES-A-H', 'Jouets et equipements de loisirs et de sports > 10 kg', 1.25000000, 'Eco-systemes', 1, 1); diff --git a/htdocs/theme/eldy/eldy.css.php b/htdocs/theme/eldy/eldy.css.php index c56d9d5731b..41c3de7e4cc 100644 --- a/htdocs/theme/eldy/eldy.css.php +++ b/htdocs/theme/eldy/eldy.css.php @@ -775,6 +775,13 @@ border: 1px solid #9CACBB; border-collapse: collapse; } +td.border { +border-top: 1px solid #000000; +border-right: 1px solid #000000; +border-bottom: 1px solid #000000; +border-left: 1px solid #000000; +} + table.noborder { border-collapse: collapse; @@ -886,12 +893,6 @@ border-bottom: 1px solid #FFFFFF; white-space: nowrap; } -td.border { -border-top: 1px solid #000000; -border-right: 1px solid #000000; -border-bottom: 1px solid #000000; -border-left: 1px solid #000000; -} .pair { background: #e6ebed; -- GitLab