file:///home/developper/svn/phpcompta/branches/rel500 ........ r2869 | danydb | 2010-01-14 14:41:25 +0100 (Thu, 14 Jan 2010) | 1 line Bug : fiche_attribut_synchro is really low, solution is to create 2 indexes ........ r2874 | danydb | 2010-01-15 15:52:38 +0100 (Fri, 15 Jan 2010) | 3 lines The extra info are now available for ledger purchase, opportunity to clean code ........ r2875 | danydb | 2010-01-15 19:51:33 +0100 (Fri, 15 Jan 2010) | 2 lines Fix bug : in rapport, the from doesn't work, the result is always 0 ........ r2876 | danydb | 2010-01-16 17:17:50 +0100 (Sat, 16 Jan 2010) | 1 line For Comptabilité->ACH and Comptabilité->VEN add shortcut to printing and customer/supplier ........ r2877 | danydb | 2010-01-16 17:30:56 +0100 (Sat, 16 Jan 2010) | 2 lines Action : add search by type of documents ........ r2878 | danydb | 2010-01-17 00:31:03 +0100 (Sun, 17 Jan 2010) | 1 line Fix bug : cannot choose a tva rate ........ r2879 | danydb | 2010-01-20 22:37:11 +0100 (Wed, 20 Jan 2010) | 6 lines Action ====== add a button for adding a card there is no filter on the category You can add whatever you want ........ r2880 | danydb | 2010-01-21 16:10:57 +0100 (Thu, 21 Jan 2010) | 1 line Correct stylesheet : todo list ........
104 lines
3.5 KiB
PHP
Executable file
104 lines
3.5 KiB
PHP
Executable file
<?php
|
|
require_once ('class_icard.php');
|
|
require_once('class_ifile.php');
|
|
require_once('class_database.php');
|
|
require_once('class_iselect.php');
|
|
require_once('class_dossier.php');
|
|
require_once('class_fiche.php');
|
|
|
|
/*
|
|
Ma première extension, intégrer un fichier de client dans une catégorie
|
|
de fiche, ce fichier est en CSV. Le code est simple et compréhensible, normalement on
|
|
devrait avoir une meilleure gestion des erreurs, vérifier les attaques SQL Inject,...
|
|
Ce code n'est là QUE pour expliquer le concept
|
|
*/
|
|
|
|
|
|
// se connecter au dossier courant
|
|
$cn=new Database(dossier::id());
|
|
|
|
// dans extension.php on vérifie la sécurité, en ajoutez une ici n'est en général
|
|
// pas nécessaire
|
|
|
|
|
|
// Ce form permet de choisir dans quel cat de fiche je veux intégrer les
|
|
// enregistrements.
|
|
|
|
echo '<form METHOD="get" action="extension.php">';
|
|
echo dossier::hidden();
|
|
// Ceci vous permet de revenir ici (voir extension.php)
|
|
echo HtmlInput::extension();
|
|
|
|
echo "Choix de la catégorie de fiche";
|
|
$select_cat=new ISelect('fd_id');
|
|
$select_cat->value=$cn->make_array('select fd_id,fd_label from fiche_def where frd_id='.
|
|
FICHE_TYPE_CLIENT);
|
|
echo $select_cat->input();
|
|
echo HtmlInput::submit('display_prop','Afficher les propriétés');
|
|
|
|
echo '</FORM>';
|
|
|
|
// on choisit d'afficher les propriétés avant de confirmer l'import
|
|
// get parce qu'on interroge
|
|
if ( isset($_GET['display_prop'])){
|
|
$a=new Fiche($cn);
|
|
$prop=$a->toArray($_GET['fd_id']);
|
|
foreach ($prop as $key=>$value) echo "Index : $key valeur $value <br/>";
|
|
|
|
echo '<form method="POST" action="extension.php" enctype="multipart/form-data">';
|
|
echo dossier::hidden();
|
|
echo HtmlInput::extension();
|
|
echo HtmlInput::hidden('fd_id',$_GET['fd_id']);
|
|
$file=new IFile('fichier_csv');
|
|
echo $file->input();
|
|
echo HtmlInput::submit('start_import','Démarrez importation');
|
|
echo '</form>';
|
|
exit;
|
|
}
|
|
// Il est demandé de démarrer l'importation
|
|
// Post parce qu'on sauve
|
|
// On image que le fichier CSV n'a que 4 champs
|
|
// "nom client","prenom client", "numero client","adresse client"
|
|
//
|
|
if ( isset($_POST['start_import'])){
|
|
$fd_id=$_POST['fd_id'];
|
|
$tmp_file=$_FILES['fichier_csv']['tmp_name'];
|
|
if ( ! is_uploaded_file($tmp_file))
|
|
die ('Je ne peux charger ce fichier');
|
|
// on ouvre le fichier
|
|
$f=fopen($tmp_file,'r');
|
|
// On récupère les propriétés de cette catégorie de fiche
|
|
$client=new Fiche($cn);
|
|
// $array contient toutes les valeurs nécessaires à Fiche::insert,
|
|
$array=$client->toArray($_POST['fd_id']);
|
|
|
|
while ( ($data=fgetcsv($f))==true) {
|
|
// remarque : on a éliminé les traitements d'erreur
|
|
|
|
// On remet tous les attributs (propriétés) à vide
|
|
foreach(array_keys($array) as $key) $array[$key]="";
|
|
|
|
// Nom et prénom
|
|
$array['av_text1']=$data[0].' '.$data[1];
|
|
// Numéro de client
|
|
$array['av_text30']=$data[2];
|
|
// Adresse
|
|
$array['av_text14']=$data[3];
|
|
// Quickcode
|
|
$array['av_text23']="CLI".$data[2];
|
|
$client->insert($fd_id,$array);
|
|
}
|
|
exit;
|
|
}
|
|
|
|
?>
|
|
|
|
Voici le fichier plugin_client.txt (dans le répertoire dev)
|
|
"Nom client1","Prénom","C1","Rue de la boite,55"
|
|
"Nom client2","Prénom","C2","Rue du couvercle,55"
|
|
"Nom client3","Prénom","C3","Rue de la chaussure,55"
|
|
"Nom client4","Prénom","C4","Rue de la couleur,55"
|
|
|
|
Si vous vérifiez dans VW_CLIENT, vous verrez que toutes vos fiches ont été ajoutées. Dans l'exemple, il faudra rajouter un traitement d'erreur plus élaborée, le fait que si une fiche echoue , l'opération est annulée (Database::rollback) ou alors création d'un fichier avec les enregistrements "ratés"...
|
|
|
|
|