Compare commits

..

7 Commits

Author SHA1 Message Date
tibo
fcd073c82a correction sur les comptyeurs de tailel de tableaux 2020-03-05 10:11:01 +00:00
tibo
6110bb4cad ajout import fonctions step 2 2020-03-04 13:09:17 +00:00
tibo
44bccfc692 ajout import focnitons step 1 2020-03-04 11:32:46 +00:00
tibo
5fc5065b6e nb_shipments dans import collectivités 2020-03-03 12:00:51 +00:00
tibo
24c3342ec1 correction gestion correcte progressBar 2020-03-03 11:58:42 +00:00
tibo
b0aaec1c91 ajout import des chapitres 2020-03-03 11:52:52 +00:00
tibo
61b873ae4f correction code marché 2020-03-03 07:41:27 +00:00
8 changed files with 459 additions and 4 deletions

View File

@@ -32,8 +32,15 @@ SMETI_db::$parent = SMETI_db::$item;
echo 'OK'.PHP_EOL; echo 'OK'.PHP_EOL;
$shipments = json_decode(file_get_contents("../data/json/BMO/01_COLLECTIVITES.json"), true); $shipments = json_decode(file_get_contents("../data/json/BMO/01_COLLECTIVITES.json"), true);
$counter = 0;
$nb_shipments = count($shipments);
foreach($shipments as $element) foreach($shipments as $element)
{ {
// Gestion d'une barre de progression
progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression
// Ajouter un item // Ajouter un item
SMETI_db::$code = $element['collcod']; SMETI_db::$code = $element['collcod'];
SMETI_db::$libelle = $element['collnom']; SMETI_db::$libelle = $element['collnom'];
@@ -49,5 +56,9 @@ foreach($shipments as $element)
SMETI_db::$child = SMETI_db::$item; SMETI_db::$child = SMETI_db::$item;
SMETI_db::$req3->execute(); SMETI_db::$req3->execute();
} }
// Enlever la barre de progression
clearLine();
echo 'OK'.PHP_EOL;
// Enlever la barre de progression
?> ?>

View File

@@ -54,7 +54,7 @@ foreach($shipments as $element)
{ {
// Gestion d'une barre de progression // Gestion d'une barre de progression
progressBar($counter, $nb_shipments); progressBar($counter, $nb_shipments);
if (5000 == $counter++) break; $counter += 1;
// Gestion d'une barre de progression // Gestion d'une barre de progression
// A-t-on changé de collectivité ? // A-t-on changé de collectivité ?

View File

@@ -54,7 +54,7 @@ foreach($shipments as $element)
{ {
// Gestion d'une barre de progression // Gestion d'une barre de progression
progressBar($counter, $nb_shipments); progressBar($counter, $nb_shipments);
if (5000 == $counter++) break; $counter += 1;
// Gestion d'une barre de progression // Gestion d'une barre de progression
// A-t-on changé de collectivité ? // A-t-on changé de collectivité ?

View File

@@ -54,7 +54,7 @@ foreach($shipments as $element)
{ {
// Gestion d'une barre de progression // Gestion d'une barre de progression
progressBar($counter, $nb_shipments); progressBar($counter, $nb_shipments);
if (5000 == $counter++) break; $counter += 1;
// Gestion d'une barre de progression // Gestion d'une barre de progression
// A-t-on changé de collectivité ? // A-t-on changé de collectivité ?

View File

@@ -58,6 +58,7 @@ foreach($shipments as $element)
{ {
// Gestion d'une barre de progression // Gestion d'une barre de progression
progressBar($counter, $nb_shipments); progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression // Gestion d'une barre de progression
// A-t-on changé de collectivité ? // A-t-on changé de collectivité ?

View File

@@ -58,6 +58,7 @@ foreach($shipments as $element)
{ {
// Gestion d'une barre de progression // Gestion d'une barre de progression
progressBar($counter, $nb_shipments); progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression // Gestion d'une barre de progression
// On ne reprend pas les vieux marchés // On ne reprend pas les vieux marchés
@@ -101,7 +102,7 @@ foreach($shipments as $element)
// Dépiler // Dépiler
$pile_index -= 1; $pile_index -= 1;
// Rajouter un item // Rajouter un item
SMETI_db::$code = 'MARC'.$pile_code[$pile_index].$element['mpcacod']; SMETI_db::$code = 'MARC'.$pile_code[$pile_index].$element['marcann'];
SMETI_db::$libelle = 'Marchés '.$element['marcann']; SMETI_db::$libelle = 'Marchés '.$element['marcann'];
SMETI_db::$req1->execute(); SMETI_db::$req1->execute();
// Rajouter un lien // Rajouter un lien

240
bin/import_11_chapitres.php Normal file
View File

@@ -0,0 +1,240 @@
<?php
function tri_chap_1($a , $b)
{
if ('S'.$a['code'] < 'S'.$b['code']) return -1;
if ('S'.$a['code'] > 'S'.$b['code']) return 1;
return 0;
}
function tri_chap_2($a , $b)
{
if ('S'.$a['instruction'] < 'S'.$b['instruction']) return -1;
if ('S'.$a['instruction'] > 'S'.$b['instruction']) return 1;
if ('S'.$a['code'] < 'S'.$b['code']) return -1;
if ('S'.$a['code'] > 'S'.$b['code']) return 1;
return 0;
}
require_once('smeti_db.inc.php');
SMETI_db::init();
echo 'Chargement collectivités ';
$sql = SMETI_db::$pdo->prepare("SELECT code, item, libelle FROM v_items WHERE plugin = ( SELECT id FROM plugins WHERE libelle = 'Collectivités' )");
$sql->execute();
$coll = $sql->fetchAll(PDO::FETCH_NUM);
echo 'OK'.PHP_EOL;
$libelle = 'Instructions Comptables';
echo 'VACUUM ';
SMETI_db::removePlugin($libelle);
echo 'OK'.PHP_EOL;
echo "Ajout du plugin '$libelle' ";
SMETI_db::addPlugin($libelle);
echo 'OK'.PHP_EOL;
echo "Plugin courant : '$libelle' ";
SMETI_db::setCurPlugin($libelle);
echo 'OK'.PHP_EOL;
echo "Ajout d'une racine: '$libelle' ";
// Ajouter un item
SMETI_db::$libelle = $libelle;
SMETI_db::$code = 'INSC';
SMETI_db::$req1->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Ajouter un lien sur cet item
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Positionner ce lien comme parent
SMETI_db::$parent = SMETI_db::$item;
echo 'OK'.PHP_EOL;
$pile_index = 0;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$item;
$libelle = 'Toutes Instructions';
echo "Ajout d'une racine: '$libelle' ";
// Ajouter un item
SMETI_db::$libelle = $libelle;
SMETI_db::$code = 'INSCGLOB';
SMETI_db::$req1->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Ajouter un lien sur cet item
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$item;
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$pile_index += 1;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$item;
echo 'OK'.PHP_EOL;
$libelle = 'Chapitres';
echo "Ajout d'une racine: '$libelle' ";
// Ajouter un item
SMETI_db::$libelle = $libelle;
SMETI_db::$code = 'INSCGLOBCHAP';
SMETI_db::$req1->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Ajouter un lien sur cet item
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$item;
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$pile_index += 1;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$item;
echo 'OK'.PHP_EOL;
echo 'Chargement des données (première passe)'.PHP_EOL;
$counter = 0;
$shipments = json_decode(file_get_contents("../data/json/BMO/04_CHAPITRES.json"), true);
$nb_shipments = count($shipments);
usort($shipments,'tri_chap_1');
// On conserve les chapitres dans un tableau
// Ils seront réutilisés plus tard
$chapitres = [];
$chapitres[] = ['BIDON','BIDON'];
foreach($shipments as $element)
{
// Gestion d'une barre de progression
progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression
// On ne tient pas compte des données incorrectes
if (!isset($element['code'])) continue;
if (!isset($element['libelle'])) continue;
$n = count($chapitres);
for($i=0;$i<$n;$i++)
if ($chapitres[$i][0] == $element['code'])
break;
if ($i == $n)
{
// Rajouter un item
SMETI_db::$code = $element['code'];
SMETI_db::$libelle = $element['libelle'];
SMETI_db::$req1->execute();
// Rajouter un lien
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$chapitres[] = [SMETI_db::$code, SMETI_db::$libelle, SMETI_db::$item];
}
}
// Enlever la barre de progression
clearLine();
echo 'OK'.PHP_EOL;
// Enlever la barre de progression
echo 'Chargement des données (deuxième passe)'.PHP_EOL;
$counter = 0;
// Décliner par instruction
// Commencer par empiler deux valeurs vides
$pile_index = 1;
$pile_code[$pile_index] = '';
$pile_item[$pile_index] = 0;
$pile_index += 1;
$pile_code[$pile_index] = '';
$pile_item[$pile_index] = 0;
usort($shipments,'tri_chap_2');
$n = count($chapitres);
foreach($shipments as $element)
{
// Gestion d'une barre de progression
progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression
if (!isset($element['code'])) continue;
if (!isset($element['libelle'])) continue;
if ($element['instruction'] != $pile_code[$pile_index-1])
{
$pile_index = 0;
// Rajouter un item pour l'instruction
SMETI_db::$code = $element['instruction'];
SMETI_db::$libelle = 'Instruction '. $element['instruction'];
SMETI_db::$req1->execute();
// Rajouter un lien
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$pile_index += 1;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$child;
// Conserver l'instruction dans un tableau
$instructions[] = [SMETI_db::$code, SMETI_db::$item];
// Rajouter un item pour les chapitres
SMETI_db::$code = 'CHAP'.$element['instruction'];
SMETI_db::$libelle = 'Chapitres '. $element['instruction'];
SMETI_db::$req1->execute();
// Rajouter un lien
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$pile_index += 1;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$child;
$last ='';
}
if ($element['code'] == $last) continue;
for($i=0;$i<$n;$i++)
if ($chapitres[$i][0] == $element['code'])
break;
if ($i == $n) continue;
// Rajouter un lien vers le chapitre
SMETI_db::$item = $chapitres[$i][2];
SMETI_db::$link = 1;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
// NB : on pourrait s'en passer en plaçant le chapitre dans la pile
$last = $element['code'];
}
// Enlever la barre de progression
clearLine();
echo 'OK'.PHP_EOL;
// Enlever la barre de progression
?>

202
bin/import_12_fonctions.php Normal file
View File

@@ -0,0 +1,202 @@
<?php
function tri_chap_1($a , $b)
{
if ('S'.$a['code'] < 'S'.$b['code']) return -1;
if ('S'.$a['code'] > 'S'.$b['code']) return 1;
return 0;
}
function tri_chap_2($a , $b)
{
if ('S'.$a['instruction'] < 'S'.$b['instruction']) return -1;
if ('S'.$a['instruction'] > 'S'.$b['instruction']) return 1;
return tri_chap_1($a , $b);
}
require_once('smeti_db.inc.php');
SMETI_db::init();
// Activer le plugin
$libelle = 'Instructions Comptables';
echo "Plugin courant : '$libelle' ";
SMETI_db::setCurPlugin($libelle);
echo 'OK'.PHP_EOL;
echo 'Chargement collectivités ';
$sql = SMETI_db::$pdo->prepare("SELECT code, item, libelle FROM v_items WHERE plugin = ( SELECT id FROM plugins WHERE libelle = 'Collectivités' )");
$sql->execute();
$coll = $sql->fetchAll(PDO::FETCH_NUM);
$nb_coll = count($coll);
echo 'OK'.PHP_EOL;
echo 'Chargement instructions comptables ';
$sql = SMETI_db::$pdo->prepare("SELECT code, id, libelle FROM v_items_tree WHERE parent in ( SELECT id FROM v_items WHERE code = 'INSC' )");
$sql->execute();
$instructions = $sql->fetchAll(PDO::FETCH_NUM);
$nb_instructions = count($instructions);
echo 'OK'.PHP_EOL;
// Se positonner sur l'instruction globale
for($i=0;$i<$nb_instructions;$i++)
if ($instructions[$i][0] == 'INSCGLOB')
break;
if ($i == $nb_instructions) die;
$pile_index = 0;
$pile_code[$pile_index] = $instructions[$i][0];
$pile_item[$pile_index] = $instructions[$i][1];
$libelle = 'Fonctions';
echo "Ajout d'une racine: '$libelle' ";
// Ajouter un item
SMETI_db::$libelle = $libelle;
SMETI_db::$code = 'INSCGLOBFONC';
SMETI_db::$req1->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Ajouter un lien sur cet item
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$item;
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$pile_index += 1;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$item;
echo 'OK'.PHP_EOL;
echo 'Chargement des données (première passe)'.PHP_EOL;
$counter = 0;
$shipments = json_decode(file_get_contents("../data/json/BMO/05_FONCTIONS.json"), true);
$nb_shipments = count($shipments);
usort($shipments,'tri_chap_1');
// On conserve les chapitres dans un tableau
// Ils seront réutilisés plus tard
$fonctions = [];
$fonctions[] = ['BIDON','BIDON'];
$record = 0;
foreach($shipments as $element)
{
// Gestion d'une barre de progression
progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression
// On ne tient pas compte des données incorrectes
if (!isset($element['code'])) continue;
if (!isset($element['libelle'])) continue;
$n = count($fonctions);
for($i=0;$i<$n;$i++)
if ($fonctions[$i][0] == $element['code'])
break;
if ($i == $n)
{
// Rajouter un item
SMETI_db::$code = $element['code'];
SMETI_db::$libelle = $element['libelle'];
SMETI_db::$req1->execute();
// Rajouter un lien
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$fonctions[] = [$element['code'], SMETI_db::$libelle, SMETI_db::$item];
$record += 1;
}
}
// Enlever la barre de progression
clearLine();
echo 'OK'.PHP_EOL;
// Enlever la barre de progression
echo 'Chargement des données (deuxième passe)'.PHP_EOL;
// Décliner par instruction
// Commencer par empiler deux valeurs vides
$pile_index += 1;
$pile_code[$pile_index] = '';
$pile_item[$pile_index] = 0;
$nb_fonctions = count($fonctions);
usort($shipments,'tri_chap_2');
$counter = 0;
$record = 0;
foreach($shipments as $element)
{
// Gestion d'une barre de progression
progressBar($counter, $nb_shipments);
$counter += 1;
// Gestion d'une barre de progression
if (!isset($element['code'])) continue;
if (!isset($element['libelle'])) continue;
if ($element['instruction'] != $pile_code[$pile_index-1])
{
// Se positonner sur l'instruction
for($i=0;$i<$nb_instructions;$i++)
if ($instructions[$i][0] == $element['instruction'])
break;
if ($i == $nb_instructions) continue;
$pile_index = 0;
$pile_code[$pile_index] = $instructions[$i][0];
$pile_item[$pile_index] = $instructions[$i][1];
// Rajouter un item pour les fonctions dans cette instruction
SMETI_db::$code = 'FONC'.$element['instruction'];
SMETI_db::$libelle = 'Fonctions '. $element['instruction'];
SMETI_db::$req1->execute();
// Rajouter un lien
SMETI_db::$item = SMETI_db::$pdo->lastInsertId();
SMETI_db::$link = 0;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
$pile_index += 1;
$pile_code[$pile_index] = SMETI_db::$code;
$pile_item[$pile_index] = SMETI_db::$child;
$last ='';
}
if ($element['code'] == $last) continue;
for($i=0;$i<$nb_fonctions;$i++)
if ($fonctions[$i][0] == 'C'.$element['code'])
break;
if ($i == $nb_fonctions) continue;
// Rajouter un lien vers la fonction
SMETI_db::$item = $fonctions[$i][2];
SMETI_db::$link = 1;
SMETI_db::$req2->execute();
// Rajouter un noeud
SMETI_db::$child = SMETI_db::$pdo->lastInsertId();
SMETI_db::$parent = $pile_item[$pile_index];
SMETI_db::$req3->execute();
// NB : on pourrait s'en passer en plaçant le chapitre dans la pile
$last = $element['code'];
$record += 1;
}
// Enlever la barre de progression
clearLine();
echo 'OK'.PHP_EOL;
// Enlever la barre de progression
?>