New: Ca y est. L'export est complètement opérationnel.

This commit is contained in:
Laurent Destailleur 2006-01-22 16:14:33 +00:00
parent 597e2a5d98
commit 879f882a77
13 changed files with 342 additions and 170 deletions

View File

@ -21,7 +21,7 @@
/** /**
\file htdocs/exports/export.class.php \file htdocs/exports/export.class.php
\ingroup core \ingroup export
\brief Fichier de la classe des exports \brief Fichier de la classe des exports
\version $Revision$ \version $Revision$
*/ */
@ -37,9 +37,9 @@ class Export
var $array_export_code=array(); // Tableau de "idmodule_numlot" var $array_export_code=array(); // Tableau de "idmodule_numlot"
var $array_export_module=array(); // Tableau de "nom de modules" var $array_export_module=array(); // Tableau de "nom de modules"
var $array_export_label=array(); // Tableau de "libellé de lots" var $array_export_label=array(); // Tableau de "libellé de lots"
var $array_export_fields_code=array(); var $array_export_sql=array(); // Tableau des "requetes sql"
var $array_export_fields_label=array(); var $array_export_fields=array(); // Tableau des liste de champ+libellé à exporter
var $array_export_sql=array(); var $array_export_alias=array(); // Tableau des liste de champ+alias à exporter
/** /**
@ -59,6 +59,8 @@ class Export
*/ */
function load_arrays($user,$filter='') function load_arrays($user,$filter='')
{ {
global $langs;
dolibarr_syslog("Export::load_arrays user=$user filter=$filter"); dolibarr_syslog("Export::load_arrays user=$user filter=$filter");
$dir=DOL_DOCUMENT_ROOT."/includes/modules"; $dir=DOL_DOCUMENT_ROOT."/includes/modules";
@ -108,11 +110,19 @@ class Export
$this->array_export_code[$i]=$module->export_code[$r]; $this->array_export_code[$i]=$module->export_code[$r];
// Libellé du dataset export // Libellé du dataset export
$this->array_export_label[$i]=$module->export_label[$r]; $this->array_export_label[$i]=$module->export_label[$r];
// Tableau des champ à exporter (clé=champ, valeur=libellé)
$this->array_export_fields[$i]=$module->export_fields_array[$r];
// Requete sql du dataset // Requete sql du dataset
$this->array_export_sql[$i]=$module->export_sql[$r]; $this->array_export_sql[$i]=$module->export_sql[$r];
// Tableau des champ à exporter (clé=champ, valeur=libellé)
$this->array_export_fields[$i]=$module->export_fields_array[$r];
// Tableau des alias à exporter (clé=champ, valeur=alias)
$this->array_export_alias[$i]=$module->export_alias_array[$r];
// Charge fichier lang en rapport
foreach($module->getLangFilesArray() as $key)
{
$langs->load($key);
}
dolibarr_syslog("Export chargé pour le module ".$modulename." en index ".$i.", dataset=".$module->export_code[$r].", nbre de champs=".sizeof($module->export_fields_code[$r])); dolibarr_syslog("Export chargé pour le module ".$modulename." en index ".$i.", dataset=".$module->export_code[$r].", nbre de champs=".sizeof($module->export_fields_code[$r]));
$i++; $i++;
} }
@ -137,6 +147,7 @@ class Export
global $conf,$langs; global $conf,$langs;
$indice=0; $indice=0;
asort($array_selected);
dolibarr_syslog("Export::build_file $model, $datatoexport, $array_selected"); dolibarr_syslog("Export::build_file $model, $datatoexport, $array_selected");
@ -145,7 +156,7 @@ class Export
$file = "export_".$model.".modules.php"; $file = "export_".$model.".modules.php";
$classname = "Export".$model; $classname = "Export".$model;
require_once($dir.$file); require_once($dir.$file);
$obj = new $classname($db); $objmodel = new $classname($db);
// Execute requete export // Execute requete export
$sql=$this->array_export_sql[$indice]; $sql=$this->array_export_sql[$indice];
@ -153,37 +164,37 @@ class Export
if ($resql) if ($resql)
{ {
//$this->array_export_label[$indice] //$this->array_export_label[$indice]
$filename="export_user".$user->id."_set".$datatoexport; $filename="export_set".$datatoexport;
$filename.='.'.$obj->get_extension(); $filename.='.'.$objmodel->getDriverExtension();
$dirname=$conf->export->dir_ouput; $dirname=$conf->export->dir_ouput.'/'.$user->id;
// Open file // Open file
create_exdir($dirname); create_exdir($dirname);
$obj->open_file($dirname."/".$filename); $objmodel->open_file($dirname."/".$filename);
// Genere en-tete // Genere en-tete
$obj->write_header(); $objmodel->write_header($langs);
// Genere ligne de titre // Genere ligne de titre
$obj->write_title(); $objmodel->write_title($this->array_export_fields[$indice],$array_selected,$langs);
while ($objp = $this->db->fetch_object($resql)) while ($objp = $this->db->fetch_object($resql))
{ {
$var=!$var; $var=!$var;
$obj->write_record($objp,$array_selected); $objmodel->write_record($this->array_export_alias[$indice],$array_selected,$objp);
} }
// Genere en-tete // Genere en-tete
$obj->write_footer(); $objmodel->write_footer($langs);
// Close file // Close file
$obj->close_file(); $objmodel->close_file();
} }
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error()." - sql=".$sql;
dolibarr_syslog("Error: sql=$sql ".$this->error); dolibarr_syslog("Error: ".$this->error);
return -1; return -1;
} }
} }

View File

@ -21,13 +21,15 @@
/** /**
\file htdocs/exports/export.php \file htdocs/exports/export.php
\ingroup core \ingroup export
\brief Page d'edition d'un export \brief Page d'edition d'un export
\version $Revision$ \version $Revision$
*/ */
require_once("./pre.inc.php"); require_once("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/exports/export.class.php"); require_once(DOL_DOCUMENT_ROOT."/exports/export.class.php");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/export/modules_export.php');
$langs->load("exports"); $langs->load("exports");
@ -38,11 +40,13 @@ if (! $user->societe_id == 0)
$array_selected=isset($_SESSION["export_selected_fields"])?$_SESSION["export_selected_fields"]:array(); $array_selected=isset($_SESSION["export_selected_fields"])?$_SESSION["export_selected_fields"]:array();
$datatoexport=isset($_GET["datatoexport"])?$_GET["datatoexport"]:''; $datatoexport=isset($_GET["datatoexport"])?$_GET["datatoexport"]:'';
$export=new Export($db);
$export->load_arrays($user,$datatoexport);
$action=isset($_GET["action"]) ? $_GET["action"] : (isset($_POST["action"])?$_POST["action"]:''); $action=isset($_GET["action"]) ? $_GET["action"] : (isset($_POST["action"])?$_POST["action"]:'');
$step=isset($_GET["step"])?$_GET["step"]:'1'; $step=isset($_GET["step"])?$_GET["step"]:'1';
$objexport=new Export($db);
$objexport->load_arrays($user,$datatoexport);
$objmodel=new ModeleExports();
/* /*
@ -100,14 +104,16 @@ if ($step == 1 || $action == 'cleanselect')
if ($action == 'builddoc') if ($action == 'builddoc')
{ {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/export/modules_export.php');
$model=new ModeleExports();
$liste=$model->liste_modeles($db);
$model=$liste[$_POST["model"]];
// Genère le fichier // Genère le fichier
$export->build_file($user, $model, $datatoexport, $array_selected); $result=$objexport->build_file($user, $_POST["model"], $datatoexport, $array_selected);
if ($result < 0)
{
$mesg='<div class="error">'.$objexport->error.'</div>';
}
else
{
// $mesg='<div class="ok">'.$langs->trans("FileSuccessfulyBuilt").'</div>';
}
} }
@ -151,18 +157,18 @@ if ($step == 1 || ! $datatoexport)
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '</tr>'; print '</tr>';
$val=true; $val=true;
if (sizeof($export->array_export_code)) if (sizeof($objexport->array_export_code))
{ {
foreach ($export->array_export_code as $key => $value) foreach ($objexport->array_export_code as $key => $value)
{ {
$val=!$val; $val=!$val;
print '<tr '.$bc[$val].'><td>'; print '<tr '.$bc[$val].'><td>';
print img_object($export->array_export_module[$key]->getName(),$export->array_export_module[$key]->picto).' '; print img_object($objexport->array_export_module[$key]->getName(),$objexport->array_export_module[$key]->picto).' ';
print $export->array_export_module[$key]->getName(); print $objexport->array_export_module[$key]->getName();
print '</td><td>'; print '</td><td>';
print $export->array_export_label[$key]; print $objexport->array_export_label[$key];
print '</td><td align="right">'; print '</td><td align="right">';
print '<a href="'.DOL_URL_ROOT.'/exports/export.php?step=2&amp;datatoexport='.$export->array_export_code[$key].'">'.img_picto($langs->trans("NewExport"),'filenew').'</a>'; print '<a href="'.DOL_URL_ROOT.'/exports/export.php?step=2&amp;datatoexport='.$objexport->array_export_code[$key].'">'.img_picto($langs->trans("NewExport"),'filenew').'</a>';
print '</td></tr>'; print '</td></tr>';
} }
} }
@ -200,13 +206,13 @@ if ($step == 2 && $datatoexport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
print img_object($export->array_export_module[0]->getName(),$export->array_export_module[0]->picto).' '; print img_object($objexport->array_export_module[0]->getName(),$objexport->array_export_module[0]->picto).' ';
print $export->array_export_module[0]->getName(); print $objexport->array_export_module[0]->getName();
print '</td></tr>'; print '</td></tr>';
// Lot de données à exporter // Lot de données à exporter
print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>';
print '<td>'.$export->array_export_label[0].'</td></tr>'; print '<td>'.$objexport->array_export_label[0].'</td></tr>';
print '</table>'; print '</table>';
print '<br>'; print '<br>';
@ -220,7 +226,7 @@ if ($step == 2 && $datatoexport)
print '</tr>'; print '</tr>';
// Champs exportables // Champs exportables
$fieldsarray=$export->array_export_fields[0]; $fieldsarray=$objexport->array_export_fields[0];
# $this->array_export_module[$i]=$module; # $this->array_export_module[$i]=$module;
# $this->array_export_code[$i]=$module->export_code[$r]; # $this->array_export_code[$i]=$module->export_code[$r];
@ -301,13 +307,13 @@ if ($step == 3 && $datatoexport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
print img_object($export->array_export_module[0]->getName(),$export->array_export_module[0]->picto).' '; print img_object($objexport->array_export_module[0]->getName(),$objexport->array_export_module[0]->picto).' ';
print $export->array_export_module[0]->getName(); print $objexport->array_export_module[0]->getName();
print '</td></tr>'; print '</td></tr>';
// Lot de données à exporter // Lot de données à exporter
print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>';
print '<td>'.$export->array_export_label[0].'</td></tr>'; print '<td>'.$objexport->array_export_label[0].'</td></tr>';
// Nbre champs exportés // Nbre champs exportés
print '<tr><td width="25%">'.$langs->trans("ExportedFields").'</td>'; print '<tr><td width="25%">'.$langs->trans("ExportedFields").'</td>';
@ -315,7 +321,7 @@ if ($step == 3 && $datatoexport)
foreach($array_selected as $code=>$value) foreach($array_selected as $code=>$value)
{ {
$list.=($list?',':''); $list.=($list?',':'');
$list.=$langs->trans($export->array_export_fields[0][$code]); $list.=$langs->trans($objexport->array_export_fields[0][$code]);
} }
print '<td>'.$list.'</td></tr>'; print '<td>'.$list.'</td></tr>';
@ -337,7 +343,7 @@ if ($step == 3 && $datatoexport)
$var=!$var; $var=!$var;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td>'.$langs->trans($export->array_export_fields[0][$code]).' ('.$code.')</td>'; print '<td>'.$langs->trans($objexport->array_export_fields[0][$code]).' ('.$code.')</td>';
print '<td align="right" width="100">'; print '<td align="right" width="100">';
print $value.' '; print $value.' ';
@ -348,7 +354,7 @@ if ($step == 3 && $datatoexport)
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td>'.$langs->trans($export->array_export_fields[0][$code]).'</td>'; print '<td>'.$langs->trans($objexport->array_export_fields[0][$code]).'</td>';
print '</tr>'; print '</tr>';
} }
@ -371,7 +377,6 @@ if ($step == 3 && $datatoexport)
print '</div>'; print '</div>';
} }
if ($step == 4 && $datatoexport) if ($step == 4 && $datatoexport)
{ {
asort($array_selected); asort($array_selected);
@ -407,13 +412,13 @@ if ($step == 4 && $datatoexport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
print img_object($export->array_export_module[0]->getName(),$export->array_export_module[0]->picto).' '; print img_object($objexport->array_export_module[0]->getName(),$objexport->array_export_module[0]->picto).' ';
print $export->array_export_module[0]->getName(); print $objexport->array_export_module[0]->getName();
print '</td></tr>'; print '</td></tr>';
// Lot de données à exporter // Lot de données à exporter
print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>';
print '<td>'.$export->array_export_label[0].'</td></tr>'; print '<td>'.$objexport->array_export_label[0].'</td></tr>';
// Nbre champs exportés // Nbre champs exportés
print '<tr><td width="25%">'.$langs->trans("ExportedFields").'</td>'; print '<tr><td width="25%">'.$langs->trans("ExportedFields").'</td>';
@ -421,7 +426,7 @@ if ($step == 4 && $datatoexport)
foreach($array_selected as $code=>$label) foreach($array_selected as $code=>$label)
{ {
$list.=($list?',':''); $list.=($list?',':'');
$list.=$langs->trans($export->array_export_fields[0][$code]); $list.=$langs->trans($objexport->array_export_fields[0][$code]);
} }
print '<td>'.$list.'</td></tr>'; print '<td>'.$list.'</td></tr>';
@ -429,7 +434,6 @@ if ($step == 4 && $datatoexport)
print '<br>'; print '<br>';
print $langs->trans("NowClickToGenerateToBuildExportFile").'<br>'; print $langs->trans("NowClickToGenerateToBuildExportFile").'<br>';
print '<br>';
// Liste des formats d'exports disponibles // Liste des formats d'exports disponibles
$var=true; $var=true;
@ -440,26 +444,27 @@ if ($step == 4 && $datatoexport)
print '<td>'.$langs->trans("LibraryVersion").'</td>'; print '<td>'.$langs->trans("LibraryVersion").'</td>';
print '</tr>'; print '</tr>';
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/export/modules_export.php'); $liste=$objmodel->liste_modeles($db);
$model=new ModeleExports();
$liste=$model->liste_modeles($db);
foreach($liste as $key) foreach($liste as $key)
{ {
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td>'.$model->getModelName($key).'</td><td>'.$model->getDriverName($key).'</td><td>'.$model->getDriverVersion($key).'</td></tr>'; print '<tr '.$bc[$var].'><td>'.$objmodel->getDriverLabel($key).'</td><td>'.$objmodel->getLibLabel($key).'</td><td>'.$objmodel->getLibVersion($key).'</td></tr>';
} }
print '</table>'; print '</table>';
print '</div>'; print '</div>';
if ($mesg) print $mesg;
$htmlform=new Form($db); $htmlform=new Form($db);
print '<table width="100%"><tr><td width="50%">'; print '<table width="100%"><tr><td width="50%">';
if (! is_dir($conf->export->dir_ouput)) create_exdir($conf->export->dir_ouput); if (! is_dir($conf->export->dir_ouput)) create_exdir($conf->export->dir_ouput);
// Affiche liste des documents
// NB: La fonction show_documents rescanne les modules qd genallowed=1
$filename=$datatoexport; $filename=$datatoexport;
$htmlform->show_documents('export',$filename,$conf->export->dir_ouput,$_SERVER["PHP_SELF"].'?step=4&amp;datatoexport='.$datatoexport,1,1,'csv'); $htmlform->show_documents('export',$filename,$conf->export->dir_ouput.'/'.$user->id,$_SERVER["PHP_SELF"].'?step=4&amp;datatoexport='.$datatoexport,$liste,1,'csv');
print '</td><td width="50%">&nbsp;</td></tr>'; print '</td><td width="50%">&nbsp;</td></tr>';
print '</table>'; print '</table>';

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2006 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -67,7 +67,7 @@ $liste=$model->liste_modeles($db);
foreach($liste as $key) foreach($liste as $key)
{ {
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td>'.$model->getModelName($key).'</td><td>'.$model->getDriverName($key).'</td><td>'.$model->getDriverVersion($key).'</td></tr>'; print '<tr '.$bc[$var].'><td>'.$model->getDriverLabel($key).'</td><td>'.$model->getLibLabel($key).'</td><td>'.$model->getLibVersion($key).'</td></tr>';
} }
print '</table>'; print '</table>';

View File

@ -1606,62 +1606,65 @@ class Form
} }
} }
/** /**
\brief Affiche un select à partir d'un tableau \brief Affiche un select à partir d'un tableau
\param name nom de la zone select \param htmlname Nom de la zone select
\param array tableau de key+valeur \param array Tableau de key+valeur
\param id key présélectionnée \param id Key pré-sélectionnée
\param empty 1 si il faut un valeur " " dans la liste, 0 sinon \param show_empty 1 si il faut un valeur " " dans la liste, 0 sinon
\param key_libelle 1 pour afficher la key dans la valeur "[key] value" \param key_in_label 1 pour afficher la key dans la valeur "[key] value"
*/ \param value_as_key 1 pour utiliser la valeur comme clé
*/
function select_array($name, $array, $id='', $empty=0, $key_libelle=0) function select_array($htmlname, $array, $id='', $show_empty=0, $key_in_label=0, $value_as_key=0)
{ {
print '<select class="flat" name="'.$name.'">'; print '<select class="flat" name="'.$htmlname.'">';
$i = 0; $i = 0;
if (strlen($id)) { if (strlen($id))
if ($empty == 1) {
{ if ($show_empty == 1)
$array[0] = "&nbsp;"; {
} $array[0] = "&nbsp;";
reset($array); }
reset($array);
}
while (list($key, $value) = each ($array))
{
print '<option value="';
if ($value_as_key) print $value;
else print $key;
print '" ';
// Si il faut présélectionner une valeur
if ($id && $id == $key)
{
print 'selected="true"';
}
if ($key_in_label)
{
print '>['.$key.'] '.$value."</option>\n";
}
else
{
if ($value == '-') { $value='&nbsp;'; }
print ">".$value."</option>\n";
}
}
print "</select>\n";
} }
while (list($key, $value) = each ($array))
{
print "<option value=\"$key\" ";
// Si il faut présélectionner une valeur
if ($id && $id == $key)
{
print 'selected="true"';
}
if ($key_libelle) /**
{ * \brief Renvoie la chaîne de caractère décrivant l'erreur
print ">[$key] $value</option>\n"; */
} function error()
else {
{ return $this->errorstr;
if ($value=="-") { $value="&nbsp;"; } }
print ">$value</option>\n";
}
}
print "</select>";
}
/**
* \brief Renvoie la chaîne de caractère décrivant l'erreur
*
*/
function error()
{
return $this->errorstr;
}
/** /**
@ -1789,13 +1792,13 @@ class Form
* \param filename Nom fichier sans extension * \param filename Nom fichier sans extension
* \param filedir Repertoire à scanner * \param filedir Repertoire à scanner
* \param urlsource Url page origine * \param urlsource Url page origine
* \param genallowed Génération autorisée * \param genallowed Génération autorisée (1/0 ou array des formats)
* \param delallowed Suppression autorisée * \param delallowed Suppression autorisée (1/0)
* \param modelselected Modele à présélectionner par défaut * \param modelselected Modele à présélectionner par défaut
* \remarks Le fichier de facture détaillée est de la forme * \remarks Le fichier de facture détaillée est de la forme
* REFFACTURE-XXXXXX-detail.pdf ou XXXXX est une forme diverse * REFFACTURE-XXXXXX-detail.pdf ou XXXXX est une forme diverse
*/ */
function show_documents($modulepart,$filename,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='') function show_documents($modulepart,$filename,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$modelliste=array())
{ {
// filedir = conf->...dir_ouput."/".get_exdir(id) // filedir = conf->...dir_ouput."/".get_exdir(id)
@ -1808,24 +1811,36 @@ class Form
// Affiche en-tete tableau // Affiche en-tete tableau
if ($genallowed) if ($genallowed)
{ {
$liste=array(); $modellist=array();
if ($modulepart == 'propal') if ($modulepart == 'propal')
{ {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/propale/modules_propale.php'); if (is_array($genallowed)) $modellist=$genallowed;
$model=new ModelePDFPropales(); else
$liste=$model->liste_modeles($this->db); {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/propale/modules_propale.php');
$model=new ModelePDFPropales();
$modellist=$model->liste_modeles($this->db);
}
} }
elseif ($modulepart == 'facture') elseif ($modulepart == 'facture')
{ {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/facture/modules_facture.php'); if (is_array($genallowed)) $modellist=$genallowed;
$model=new ModelePDFFactures(); else
$liste=$model->liste_modeles($this->db); {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/facture/modules_facture.php');
$model=new ModelePDFFactures();
$modellist=$model->liste_modeles($this->db);
}
} }
elseif ($modulepart == 'export') elseif ($modulepart == 'export')
{ {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/export/modules_export.php'); if (is_array($genallowed)) $modellist=$genallowed;
$model=new ModeleExports(); else
$liste=$model->liste_modeles($this->db); {
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/export/modules_export.php');
$model=new ModeleExports();
$modellist=$model->liste_modeles($this->db);
}
} }
else else
{ {
@ -1842,7 +1857,7 @@ class Form
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
print '<tr '.$bc[$var].'><td>'.$langs->trans('Model').'</td><td align="center">'; print '<tr '.$bc[$var].'><td>'.$langs->trans('Model').'</td><td align="center">';
$this->select_array('model',$liste,$modelselected); $this->select_array('model',$modellist,$modelselected,0,0,1);
$texte=$langs->trans('Generate'); $texte=$langs->trans('Generate');
print '</td><td align="center" colspan="2"><input class="button" type="submit" value="'.$texte.'">'; print '</td><td align="center" colspan="2"><input class="button" type="submit" value="'.$texte.'">';
print '</td></tr>'; print '</td></tr>';

View File

@ -253,9 +253,19 @@ class DolibarrModules
} }
/**
\brief Retourne la liste des fichiers lang en rapport avec le module
\return array Tableau des fichier lang
*/
function getLangFilesArray()
{
return $this->langfiles;
}
/** /**
\brief Insère ligne module \brief Insère ligne module
\return int Nombre d'erreurs (0 si ok) \return int Nombre d'erreurs (0 si ok)
*/ */
function _dbactive() function _dbactive()
{ {

View File

@ -38,9 +38,16 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/export/modules_export.php");
class ExportCsv extends ModeleExports class ExportCsv extends ModeleExports
{ {
var $id;
var $label;
var $extension; var $extension;
var $version;
var $label_lib;
var $version_lib;
var $handle; // Handle fichier var $handle; // Handle fichier
/** /**
\brief Constructeur \brief Constructeur
@ -51,50 +58,96 @@ class ExportCsv extends ModeleExports
global $conf,$langs; global $conf,$langs;
$this->db = $db; $this->db = $db;
$this->extension='csv'; $this->id='csv'; // Same value then xxx in file name export_xxx.modules.php
$this->label='Csv'; // Label of driver
$this->extension='csv'; // Extension for generated file by this driver
$ver=split(' ','$Revision$');
$this->version=$ver[2]; // Driver version
// If driver use an external library, put its name here
$this->label_lib='Dolibarr';
$this->version_lib=DOL_VERSION;
} }
function getDriverId()
{
return $this->id;
}
function get_extension() function getDriverLabel()
{
return $this->label;
}
function getDriverExtension()
{ {
return $this->extension; return $this->extension;
} }
function getDriverVersion()
{
return $this->version;
}
function getLibLabel()
{
return $this->label_lib;
}
function getLibVersion()
{
return $this->version_lib;
}
function open_file($file) function open_file($file)
{ {
dolibarr_syslog("ExportCsv::open_file file=$file"); dolibarr_syslog("ExportCsv::open_file file=$file");
$this->handle = fopen($file, "wt"); $this->handle = fopen($file, "wt");
return 0;
} }
function write_header() function write_header($langs)
{ {
return 0;
} }
function write_title() function write_title($array_export_fields_label,$array_selected_sorted,$langs)
{ {
foreach($array_selected_sorted as $code => $value)
{
fwrite($this->handle,$langs->trans($array_export_fields_label[$code]).";");
}
fwrite($this->handle,"\n");
return 0;
} }
function write_record() function write_record($array_alias,$array_selected_sorted,$objp)
{ {
foreach($array_selected_sorted as $code => $value)
{
$alias=$array_alias[$code];
//print "dd".$alias;
fwrite($this->handle,ereg_replace(';',',',$objp->$alias).";");
}
fwrite($this->handle,"\n");
return 0;
} }
function write_footer() function write_footer($langs)
{ {
return 0;
} }
function close_file() function close_file()
{ {
fclose($this->handle); fclose($this->handle);
return 0;
} }
} }

View File

@ -37,47 +37,68 @@ class ModeleExports
{ {
var $error=''; var $error='';
var $modelname; var $driverlabel;
var $drivername;
var $driverversion; var $driverversion;
var $libabel;
var $libversion;
/** /**
* \brief Constructeur * \brief Constructeur
*/ */
function ModeleExports() function ModeleExports()
{ {
$this->modelname=array('csv'=>'Csv','excel'=>'Excel');
$this->drivername=array('csv'=>'Dolibarr','excel'=>'Php_WriteExcel');
$this->driverversion=array('csv'=>DOL_VERSION,'excel'=>'?');
} }
/** /**
* \brief Renvoi la liste des modèles actifs * \brief Charge en memoire et renvoie la liste des modèles actifs
* \param db Handler de base * \param db Handler de base
*/ */
function liste_modeles($db) function liste_modeles($db)
{ {
//$liste=array('csv','excel'); dolibarr_syslog("ModeleExport::loadFormat");
$liste=array('csv');
$dir=DOL_DOCUMENT_ROOT."/includes/modules/export/";
$handle=opendir($dir);
// Recherche des fichiers drivers exports disponibles
$var=True;
$i=0;
while (($file = readdir($handle))!==false)
{
if (eregi("^export_(.*)\.modules\.php",$file,$reg))
{
$moduleid=$reg[1];
return $liste; // Chargement de la classe
} $file = $dir."/export_".$moduleid.".modules.php";
$classname = "Export".ucfirst($moduleid);
require_once($file);
$module = new $classname($db);
// Driver properties
$this->driverlabel[$module->id]=$module->getDriverLabel();
$this->driverversion[$module->id]=$module->getDriverVersion();
// If use an external lib
$this->liblabel[$module->id]=$module->getLibLabel();
$this->libversion[$module->id]=$module->getLibVersion();
$i++;
}
}
/** return array_keys($this->driverlabel);
* \brief Renvoi nom d'un format export
*/
function getModelName($key)
{
return $this->modelname[$key];
} }
/** /**
* \brief Renvoi libelle d'un driver export * \brief Renvoi libelle d'un driver export
*/ */
function getDriverName($key) function getDriverLabel($key)
{ {
return $this->drivername[$key]; return $this->driverlabel[$key];
} }
/** /**
@ -88,6 +109,22 @@ class ModeleExports
return $this->driverversion[$key]; return $this->driverversion[$key];
} }
/**
* \brief Renvoi libelle de librairie externe du driver
*/
function getLibLabel($key)
{
return $this->liblabel[$key];
}
/**
* \brief Renvoi version de librairie externe du driver
*/
function getLibVersion($key)
{
return $this->libversion[$key];
}
/** /**

View File

@ -73,6 +73,7 @@ class modAdherent extends DolibarrModules
//------------ //------------
$this->depends = array(); $this->depends = array();
$this->requiredby = array(); $this->requiredby = array();
$this->langfiles = array("members","companies");
// Constantes // Constantes
//----------- //-----------
@ -195,8 +196,17 @@ class modAdherent extends DolibarrModules
$r++; $r++;
$this->export_code[$r]=$this->numero.'_'.$r; $this->export_code[$r]=$this->numero.'_'.$r;
$this->export_label[$r]='Adhérents et attributs'; $this->export_label[$r]='Adhérents et attributs';
$this->export_fields_array[$r]=array('a.nom'=>"Lastname",'a.prenom'=>"Firstname",'a.address'=>"Address",'a.cp'=>"Zip",'a.ville'=>"Town",'a.pays'=>"Country",'a.email'=>"Email",'a.login'=>"Login",'a.naiss'=>"Birthday"); $this->export_fields_array[$r]=array('a.nom'=>"Lastname",'a.prenom'=>"Firstname",'a.adresse'=>"Address",'a.cp'=>"Zip",'a.ville'=>"Town",'a.pays'=>"Country",'a.email'=>"Email",'a.login'=>"Login",'a.naiss'=>"Birthday");
$this->export_sql[$r]="select ".join(',',array_keys($this->export_fields_array[$r])).' from '.MAIN_DB_PREFIX.'adherent as a'; $this->export_alias_array[$r]=array('a.nom'=>"lastname",'a.prenom'=>"firstname",'a.adresse'=>"address",'a.cp'=>"zip",'a.ville'=>"town",'a.pays'=>"country",'a.email'=>"email",'a.login'=>"login",'a.naiss'=>"birthday");
$this->export_sql[$r]="select ";
$i=0;
foreach ($this->export_alias_array[$r] as $key => $value)
{
if ($i > 0) $this->export_sql[$r].=', ';
else $i++;
$this->export_sql[$r].=$key.' as '.$value;
}
$this->export_sql[$r].=' from '.MAIN_DB_PREFIX.'adherent as a';
$this->export_permission[$r]=array(array("adherent","export")); $this->export_permission[$r]=array(array("adherent","export"));
} }

View File

@ -72,7 +72,8 @@ class modSociete extends DolibarrModules
// Dépendances // Dépendances
$this->depends = array(); $this->depends = array();
$this->requiredby = array("modCommercial","modFacture","modFournisseur","modFicheinter","modPropale","modContrat","modCommande"); $this->requiredby = array("modCommercial","modFacture","modFournisseur","modFicheinter","modPropale","modContrat","modCommande");
$this->langfiles = array("companies");
// Constantes // Constantes
$this->const = array(); $this->const = array();
@ -148,18 +149,38 @@ class modSociete extends DolibarrModules
//-------- //--------
$r=0; $r=0;
// Export des liste des societes et attributs
$r++; $r++;
$this->export_code[$r]=$this->numero.'_'.$r; $this->export_code[$r]=$this->numero.'_'.$r;
$this->export_label[$r]='Liste des societes et attributs'; $this->export_label[$r]='Liste des societes et attributs';
$this->export_fields_array[$r]=array('s.idp'=>"Id",'s.nom'=>"Name",'s.prefix'=>"Prefix",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.address'=>"Address",'s.cp'=>"Zip",'s.ville'=>"Town",'p.libelle'=>"Country",'p.code'=>"CountryCode",'s.tel'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.siret'=>"IdProf1",'s.siren'=>"IdProf2",'s.ape'=>"IdProf3",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note'=>"Note"); $this->export_fields_array[$r]=array('s.idp'=>"Id",'s.nom'=>"Name",'s.prefix_comm'=>"Prefix",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.address'=>"Address",'s.cp'=>"Zip",'s.ville'=>"Town",'p.libelle'=>"Country",'p.code'=>"CountryCode",'s.tel'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.siret'=>"IdProf1",'s.siren'=>"IdProf2",'s.ape'=>"IdProf3",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note'=>"Note");
$this->export_sql[$r]="select ".join(',',array_keys($this->export_fields_array[$r])).' from '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'c_pays as p where s.fk_pays = p.rowid'; $this->export_alias_array[$r]=array('s.idp'=>"idsoc",'s.nom'=>"name",'s.prefix_comm'=>"prefix",'s.client'=>"iscustomer",'s.fournisseur'=>"issupplier",'s.datec'=>"datecreation",'s.tms'=>"datelastmodification",'s.code_client'=>"customercode",'s.code_fournisseur'=>"suppliercode",'s.address'=>"address",'s.cp'=>"zip",'s.ville'=>"town",'p.libelle'=>"country",'p.code'=>"countrycode",'s.tel'=>"phone",'s.fax'=>"fax",'s.url'=>"url",'s.siret'=>"idprof1",'s.siren'=>"idprof2",'s.ape'=>"idprof3",'s.tva_intra'=>"vatintra",'s.capital'=>"capital",'s.note'=>"note");
$this->export_sql[$r]="select ";
$i=0;
foreach ($this->export_alias_array[$r] as $key => $value)
{
if ($i > 0) $this->export_sql[$r].=', ';
else $i++;
$this->export_sql[$r].=$key.' as '.$value;
}
$this->export_sql[$r].=' from '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'c_pays as p where s.fk_pays = p.rowid';
$this->export_permission[$r]=array(array("societe","export")); $this->export_permission[$r]=array(array("societe","export"));
// Export des liste des contacts et attributs
$r++; $r++;
$this->export_code[$r]=$this->numero.'_'.$r; $this->export_code[$r]=$this->numero.'_'.$r;
$this->export_label[$r]='Liste des contacts et attributs'; $this->export_label[$r]='Liste des contacts et attributs';
$this->export_fields_array[$r]=array('s.civilite'=>"CivilityCode",'c.name'=>'Lastname','c.firstname'=>'Firstname','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.address'=>"Address",'c.cp'=>"Zip",'c.ville'=>"Town",'c.tel'=>"Phone",'s.fax'=>"Fax",'s.email'=>"EMail",'s.note'=>"Note",'p.libelle'=>"Country",'p.code'=>"CountryCode",'s.idp'=>"IdCompany",'s.nom'=>"CompanyName"); $this->export_fields_array[$r]=array('c.civilite'=>"CivilityCode",'c.name'=>'Lastname','c.firstname'=>'Firstname','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.address'=>"Address",'c.cp'=>"Zip",'c.ville'=>"Town",'c.phone'=>"Phone",'c.fax'=>"Fax",'c.email'=>"EMail",'p.libelle'=>"Country",'p.code'=>"CountryCode",'s.idp'=>"IdCompany",'s.nom'=>"CompanyName");
$this->export_sql[$r]="select ".join(',',array_keys($this->export_fields_array[$r])).' from '.MAIN_DB_PREFIX.'contact as c, '.MAIN_DB_PREFIX.'c_pays as p where c.fk_pays = p.rowid LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON c.fk_soc = s.idp'; $this->export_alias_array[$r]=array('c.civilite'=>"civilitycode",'c.name'=>'lastname','c.firstname'=>'firstname','c.datec'=>"datecreation",'c.tms'=>"datelastmodification",'c.address'=>"address",'c.cp'=>"zip",'c.ville'=>"town",'c.phone'=>"phone",'c.fax'=>"fax",'c.email'=>"email",'p.libelle'=>"country",'p.code'=>"countrycode",'s.idp'=>"idcompany",'s.nom'=>"companyname");
$this->export_sql[$r]="select ";
$i=0;
foreach ($this->export_alias_array[$r] as $key => $value)
{
if ($i > 0) $this->export_sql[$r].=', ';
else $i++;
$this->export_sql[$r].=$key.' as '.$value;
}
$this->export_sql[$r].=' from '.MAIN_DB_PREFIX.'c_pays as p, '.MAIN_DB_PREFIX.'socpeople as c LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON c.fk_soc = s.idp WHERE c.fk_pays = p.rowid';
$this->export_permission[$r]=array(array("societe","contact","export")); $this->export_permission[$r]=array(array("societe","contact","export"));
} }

View File

@ -69,6 +69,7 @@ class modUser extends DolibarrModules
// Dépendances // Dépendances
$this->depends = array(); $this->depends = array();
$this->requiredby = array(); $this->requiredby = array();
$this->langfiles = array("users","companies");
// Constantes // Constantes
$this->const = array(); $this->const = array();
@ -145,7 +146,16 @@ class modUser extends DolibarrModules
$this->export_code[$r]=$this->numero.'_'.$r; $this->export_code[$r]=$this->numero.'_'.$r;
$this->export_label[$r]='Liste des utilisateurs Dolibarr et attributs'; $this->export_label[$r]='Liste des utilisateurs Dolibarr et attributs';
$this->export_fields_array[$r]=array('u.rowid'=>"Id",'u.name'=>"Lastname",'u.firstname'=>"Firstname",'u.code'=>"Code",'u.login'=>"Login",'u.datec'=>"DateCreation",'u.tms'=>"DateLastModification",'u.admin'=>"Admin",'u.fk_socpeople'=>"IdContact",'u.note'=>"Note",'u.datelastaccess'=>'DateLastAccess'); $this->export_fields_array[$r]=array('u.rowid'=>"Id",'u.name'=>"Lastname",'u.firstname'=>"Firstname",'u.code'=>"Code",'u.login'=>"Login",'u.datec'=>"DateCreation",'u.tms'=>"DateLastModification",'u.admin'=>"Admin",'u.fk_socpeople'=>"IdContact",'u.note'=>"Note",'u.datelastaccess'=>'DateLastAccess');
$this->export_sql[$r]="select ".join(',',array_keys($this->export_fields_array[$r])).' from '.MAIN_DB_PREFIX.'user as u'; $this->export_alias_array[$r]=array('u.rowid'=>"rowid",'u.name'=>"name",'u.firstname'=>"firstname",'u.code'=>"code",'u.login'=>"login",'u.datec'=>"datecreation",'u.tms'=>"datelastmodification",'u.admin'=>"admin",'u.fk_socpeople'=>"idcontact",'u.note'=>"note",'u.datelastaccess'=>'datelastaccess');
$this->export_sql[$r]="select ";
$i=0;
foreach ($this->export_alias_array[$r] as $key => $value)
{
if ($i > 0) $this->export_sql[$r].=', ';
else $i++;
$this->export_sql[$r].=$key.' as '.$value;
}
$this->export_sql[$r].=' from '.MAIN_DB_PREFIX.'user as u';
$this->export_permission[$r]=array(array("user","user","export")); $this->export_permission[$r]=array(array("user","user","export"));
} }

View File

@ -8,11 +8,11 @@ ExportableFields=Exportable fields
ExportedFields=Exported fields ExportedFields=Exported fields
DatasetToExport=Dataset to export DatasetToExport=Dataset to export
Dataset=Dataset Dataset=Dataset
ChooseFieldsOrdersAndTitle=Choose fields order and title ChooseFieldsOrdersAndTitle=Choose fields order...
FieldsOrder=Fields order FieldsOrder=Fields order
FieldsTitle=Fields title FieldsTitle=Fields title
ChooseExportFormat=Choose export format ChooseExportFormat=Choose export format
NowClickToGenerateToBuildExportFile=Now, click on "Generate" to build export file NowClickToGenerateToBuildExportFile=Now, click on "Generate" to build export file...
AvailableFormats=Formats disponibles AvailableFormats=Formats disponibles
LibraryUsed=Librairie LibraryUsed=Librairie
LibraryVersion=Version LibraryVersion=Version

View File

@ -15,7 +15,7 @@ ProspectionArea=Espace prospection
SocGroup=Groupement de sociétés SocGroup=Groupement de sociétés
IdCompany=Id société IdCompany=Id société
Company=Société Company=Société
CompanyName=Nom société CompanyName=Raison sociale
Companies=Sociétés Companies=Sociétés
ParentCompany=Maison mère ParentCompany=Maison mère
CivilityCode=Code civilité CivilityCode=Code civilité

View File

@ -8,11 +8,11 @@ ExportableFields=Champs exportables
ExportedFields=Champs à exporter ExportedFields=Champs à exporter
DatasetToExport=Lot de données à exporter DatasetToExport=Lot de données à exporter
Dataset=Lot de données Dataset=Lot de données
ChooseFieldsOrdersAndTitle=Choisissez l'ordre et titre des champs ChooseFieldsOrdersAndTitle=Choisissez l'ordre des champs...
FieldsOrder=Ordre des champs FieldsOrder=Ordre des champs
FieldsTitle=Titre champs FieldsTitle=Titre champs
ChooseExportFormat=Choisissez le format d'export ChooseExportFormat=Choisissez le format d'export
NowClickToGenerateToBuildExportFile=Maintenant, cliquez sur "Générer" pour générer le fichier export NowClickToGenerateToBuildExportFile=Maintenant, cliquez sur "Générer" pour générer le fichier export...
AvailableFormats=Available formats AvailableFormats=Available formats
LibraryUsed=Library used LibraryUsed=Library used
LibraryVersion=Version LibraryVersion=Version