altocompta/include/ext/dummy/dummy.php
Dany De Bontridder 82a1bf9bb8 Merged revisions 2868-2880 via svnmerge from
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 
........
2010-01-21 15:13:17 +00:00

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