Amélioration sauvegarde profil export:

* La sauvegarde est mise sur l'étape 3 afin de pouvoir sauvé aussi l'ordre.
* Meilleure gestion erreur.
* Traduction
This commit is contained in:
Laurent Destailleur 2007-03-24 16:46:02 +00:00
parent 31df94c7e8
commit 8393500dbd
6 changed files with 175 additions and 116 deletions

View File

@ -211,75 +211,75 @@ class Export
} }
} }
/** /**
* \brief Créé un modéle d'export * \brief Créé un modéle d'export
* \param user Objet utilisateur qui crée * \param user Objet utilisateur qui crée
*/ */
function create($user) function create($user)
{ {
global $conf; global $conf;
dolibarr_syslog("Export.class.php::create"); dolibarr_syslog("Export.class.php::create");
$this->db->begin(); $this->db->begin();
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'export_model ('; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'export_model (';
$sql.= 'label, type, field)'; $sql.= 'label, type, field)';
$sql.= " VALUES ('".$this->model_name."', '".$this->datatoexport."', '".$this->hexa."')"; $sql.= " VALUES ('".$this->model_name."', '".$this->datatoexport."', '".$this->hexa."')";
dolibarr_syslog("Export.class.php::create sql=".$sql); dolibarr_syslog("Export.class.php::create sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
else else
{ {
dolibarr_print_error($this->db); $this->error=$this->db->error()." sql=".$sql;
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
} }
/** /**
* \brief Recupère de la base les caractéristiques d'un modele d'export * \brief Recupère de la base les caractéristiques d'un modele d'export
* \param rowid id du modéle à récupérer * \param rowid id du modéle à récupérer
*/ */
function fetch($id) function fetch($id)
{ {
$sql = 'SELECT em.rowid, em.field, em.label, em.type'; $sql = 'SELECT em.rowid, em.field, em.label, em.type';
$sql.= ' FROM '.MAIN_DB_PREFIX.'export_model as em'; $sql.= ' FROM '.MAIN_DB_PREFIX.'export_model as em';
$sql.= ' WHERE em.rowid = '.$id; $sql.= ' WHERE em.rowid = '.$id;
dolibarr_syslog("Export::fetch sql=$sql");
$result = $this->db->query($sql) ;
if ($result)
{
$obj = $this->db->fetch_object($result);
if ($obj)
{
$this->id = $obj->rowid;
$this->hexa = $obj->field;
$this->model_name = $obj->label;
$this->datatoexport = $obj->type;
return 1; dolibarr_syslog("Export::fetch sql=$sql");
}
else $result = $this->db->query($sql) ;
{ if ($result)
$this->error="Model not found"; {
return -2; $obj = $this->db->fetch_object($result);
} if ($obj)
} {
else $this->id = $obj->rowid;
{ $this->hexa = $obj->field;
dolibarr_print_error($this->db); $this->model_name = $obj->label;
return -3; $this->datatoexport = $obj->type;
}
} return 1;
}
else
{
$this->error="Model not found";
return -2;
}
}
else
{
dolibarr_print_error($this->db);
return -3;
}
}
} }

View File

@ -135,13 +135,38 @@ if ($action == 'builddoc')
} }
} }
if ($step == 2 && $action == 'add') if ($action == 'add_export_model')
{ {
$objexport->model_name = $export_name; if ($export_name)
$objexport->datatoexport = $datatoexport; {
$objexport->hexa = $hexa; asort($array_selected);
$result = $objexport->create($user); // Set save string
$hexa='';
foreach($array_selected as $key=>$val)
{
if ($hexa) $hexa.=',';
$hexa.=$key;
}
$objexport->model_name = $export_name;
$objexport->datatoexport = $datatoexport;
$objexport->hexa = $hexa;
$result = $objexport->create($user);
if ($result >= 0)
{
$mesg='<div class="ok">'.$langs->trans("ExportModelSaved",$objexport->model_name).'</div>';
}
else
{
$mesg='<div class="error">'.$objexport->error.'</div>';
}
}
else
{
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("ExportModelName")).'</div>';
}
} }
if ($step == 2 && $action == 'select_model') if ($step == 2 && $action == 'select_model')
@ -151,7 +176,14 @@ if ($step == 2 && $action == 'select_model')
$result = $objexport->fetch($exportmodelid); $result = $objexport->fetch($exportmodelid);
if ($result > 0) if ($result > 0)
{ {
$binaire = hexbin($objexport->hexa); $fieldsarray=split(',',$objexport->hexa);
$i=1;
foreach($fieldsarray as $val)
{
$array_selected[$val]=$i;
$i++;
}
$_SESSION["export_selected_fields"]=$array_selected;
} }
} }
@ -219,6 +251,9 @@ if ($step == 1 || ! $datatoexport)
print '</table>'; print '</table>';
print '</div>'; print '</div>';
if ($mesg) print $mesg;
} }
if ($step == 2 && $datatoexport) if ($step == 2 && $datatoexport)
@ -254,23 +289,23 @@ if ($step == 2 && $datatoexport)
print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>';
print '<td>'.$objexport->array_export_label[0].'</td></tr>'; print '<td>'.$objexport->array_export_label[0].'</td></tr>';
print '</table>';
print '<br>';
// Liste déroulante des modéles d'export // Liste déroulante des modéles d'export
print '<tr><td width="25%">'.$langs->trans("ExportModel").'</td>';
print '<form action="export.php" method="post">'; print '<form action="export.php" method="post">';
print '<input type="hidden" name="action" value="select_model">'; print '<input type="hidden" name="action" value="select_model">';
print '<input type="hidden" name="step" value="2">'; print '<input type="hidden" name="step" value="2">';
print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">'; print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">';
print '<td>'; print '<table><tr><td>';
print $langs->trans("SelectExportFields");
print '</td><td>';
$html->select_export_model($exportmodelid,'exportmodelid',$datatoexport,1); $html->select_export_model($exportmodelid,'exportmodelid',$datatoexport,1);
print '<input type="submit" class="button" value="'.$langs->trans("Select").'">'; print '<input type="submit" class="button" value="'.$langs->trans("Select").'">';
print '</td></form></tr>'; print '</td></tr></table>';
print '</form>';
print '</table>';
print '<br>';
print $langs->trans("SelectExportFields").'<br>';
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Entities").'</td>'; print '<td>'.$langs->trans("Entities").'</td>';
@ -298,26 +333,19 @@ if ($step == 2 && $datatoexport)
$var=!$var; $var=!$var;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
$modelchoice = substr($binaire,$i,1);
$i++; $i++;
$entity=$objexport->array_export_entities[0][$code]; $entity=$objexport->array_export_entities[0][$code];
$entityicon=$entitytoicon[$entity]?$entitytoicon[$entity]:$entity; $entityicon=$entitytoicon[$entity]?$entitytoicon[$entity]:$entity;
$entitylang=$entitytolang[$entity]?$entitytolang[$entity]:$entity; $entitylang=$entitytolang[$entity]?$entitytolang[$entity]:$entity;
print '<td>'.img_object('',$entityicon).' '.$langs->trans($entitylang).'</td>'; print '<td>'.img_object('',$entityicon).' '.$langs->trans($entitylang).'</td>';
if (isset($array_selected[$code]) && $array_selected[$code] || $modelchoice == 1) if ((isset($array_selected[$code]) && $array_selected[$code]) || $modelchoice == 1)
{ {
// Champ sélectionné // Champ sélectionné
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=unselectfield&field='.$code.'">'.img_left().'</a></td>'; print '<td><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=unselectfield&field='.$code.'">'.img_left().'</a></td>';
print '<td>'.$langs->trans($label).' ('.$code.')</td>'; print '<td>'.$langs->trans($label).' ('.$code.')</td>';
if ($modelchoice == 1)
{
$array_selected[$code]=sizeof($array_selected)+1;
$_SESSION["export_selected_fields"]=$array_selected;
}
$bit=1; $bit=1;
} }
else else
@ -336,7 +364,9 @@ if ($step == 2 && $datatoexport)
print '</table>'; print '</table>';
print '</div>'; print '</div>';
if ($mesg) print $mesg;
/* /*
* Barre d'action * Barre d'action
* *
@ -344,22 +374,12 @@ if ($step == 2 && $datatoexport)
print '<div class="tabsAction">'; print '<div class="tabsAction">';
if (sizeof($array_selected)) if (sizeof($array_selected))
{ {
print '<form action="export.php" method="post">'; print '<a class="butAction" href="export.php?step=3&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
print '<input type="hidden" name="action" value="add">'; }
print '<input type="hidden" name="step" value="2">';
print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">';
print '<input type="hidden" name="hexa" value="'.$hexa.'">';
print '<table class="noborder" width="100%"><tr>';
print '<td><input name="export_name" size="20" value="">';
print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
print '</form>';
print '<a class="butAction" href="export.php?step=3&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
print '</td></tr>';
print '</table>';
}
print '</div>'; print '</div>';
} }
if ($step == 3 && $datatoexport) if ($step == 3 && $datatoexport)
@ -452,10 +472,39 @@ if ($step == 3 && $datatoexport)
print '</tr>'; print '</tr>';
} }
print '</table>';
print '</table>';
// Bouton exports profils
if (sizeof($array_selected))
{
print '<br>';
print $langs->trans("SaveExportModel");
print '<form class="nocellnopadd" action="export.php" method="post">';
print '<input type="hidden" name="action" value="add_export_model">';
print '<input type="hidden" name="step" value="'.$step.'">';
print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">';
print '<input type="hidden" name="hexa" value="'.$hexa.'">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("ExportModelName").'</td>';
print '<td>&nbsp;</td>';
print '</tr>';
$var=false;
print '<tr '.$bc[$var].'>';
print '<td><input name="export_name" size="32" value=""></td><td>';
print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
print '</td></tr>';
print '</table>';
print '</form>';
}
print '</div>'; print '</div>';
if ($mesg) print $mesg;
/* /*
* Barre d'action * Barre d'action
@ -469,6 +518,7 @@ if ($step == 3 && $datatoexport)
} }
print '</div>'; print '</div>';
} }
if ($step == 4 && $datatoexport) if ($step == 4 && $datatoexport)

View File

@ -3,7 +3,10 @@ ExportsArea=Exports area
NewExport=New export NewExport=New export
ExportableDatas=Exportable dataset ExportableDatas=Exportable dataset
SelectExportDataSet=Choose dataset you want to export... SelectExportDataSet=Choose dataset you want to export...
SelectExportFields=Choose fields you want to export... SelectExportFields=Choose fields you want to export, or select a predefined export profil
SaveExportModel=Save this export profile if you plan to reuse it later...
ExportModelName=Export profile name
ExportModelSaved=Export profile saved under name <b>%s</b>.
ExportableFields=Exportable fields ExportableFields=Exportable fields
ExportedFields=Exported fields ExportedFields=Exported fields
DatasetToExport=Dataset to export DatasetToExport=Dataset to export

View File

@ -3,7 +3,10 @@ ExportsArea=Espace exports
NewExport=Nouvel export NewExport=Nouvel export
ExportableDatas=Lot de données exportables ExportableDatas=Lot de données exportables
SelectExportDataSet=Choisissez un lot prédéfini de données que vous désirez exporter... SelectExportDataSet=Choisissez un lot prédéfini de données que vous désirez exporter...
SelectExportFields=Choisissez les champs à exporter... SelectExportFields=Choisissez les champs à exporter, ou choisissez un profil d'export prédéfini
SaveExportModel=Enregistrer ce profil d'export si vous désirez le réutiliser utlétieurement...
ExportModelName=Nom du profil d'export
ExportModelSaved=Profil d'export sauvé sous le nom <b>%s</b>.
ExportableFields=Champs exportables ExportableFields=Champs exportables
ExportedFields=Champs à exporter ExportedFields=Champs à exporter
DatasetToExport=Lot de données à exporter DatasetToExport=Lot de données à exporter

View File

@ -914,9 +914,11 @@ UPDATE llx_facture SET type=0 where type=3;
create table llx_export_model create table llx_export_model
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
label varchar(50) NOT NULL, label varchar(50) NOT NULL,
type varchar(20) NOT NULL, type varchar(20) NOT NULL,
field varchar(20) NOT NULL field text
)type=innodb; )type=innodb;
ALTER table llx_export_model add fk_user integer DEFAULT 0 NOT NULL after rowid;
ALTER TABLE llx_export_model ADD UNIQUE uk_export_model (label); ALTER TABLE llx_export_model ADD UNIQUE uk_export_model (label);

View File

@ -26,7 +26,8 @@
create table llx_export_model create table llx_export_model
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
label varchar(50) NOT NULL, fk_user integer DEFAULT 0 NOT NULL,
type varchar(20) NOT NULL, label varchar(50) NOT NULL,
field varchar(20) NOT NULL type varchar(20) NOT NULL,
field text NOT NULL
)type=innodb; )type=innodb;