diff --git a/htdocs/exports/export.class.php b/htdocs/exports/export.class.php index f3c692c314f..85c36d54d14 100644 --- a/htdocs/exports/export.class.php +++ b/htdocs/exports/export.class.php @@ -211,75 +211,75 @@ class Export } } - /** - * \brief Créé un modéle d'export - * \param user Objet utilisateur qui crée - */ - function create($user) - { - global $conf; - - dolibarr_syslog("Export.class.php::create"); - - $this->db->begin(); - - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'export_model ('; - $sql.= 'label, type, field)'; - $sql.= " VALUES ('".$this->model_name."', '".$this->datatoexport."', '".$this->hexa."')"; - - dolibarr_syslog("Export.class.php::create sql=".$sql); - - $resql=$this->db->query($sql); - if ($resql) - { - $this->db->commit(); - return 1; - } - else - { - dolibarr_print_error($this->db); - $this->db->rollback(); - return -1; + /** + * \brief Créé un modéle d'export + * \param user Objet utilisateur qui crée + */ + function create($user) + { + global $conf; + + dolibarr_syslog("Export.class.php::create"); + + $this->db->begin(); + + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'export_model ('; + $sql.= 'label, type, field)'; + $sql.= " VALUES ('".$this->model_name."', '".$this->datatoexport."', '".$this->hexa."')"; + + dolibarr_syslog("Export.class.php::create sql=".$sql); + + $resql=$this->db->query($sql); + if ($resql) + { + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error()." sql=".$sql; + $this->db->rollback(); + return -1; } } - + /** - * \brief Recupère de la base les caractéristiques d'un modele d'export - * \param rowid id du modéle à récupérer - */ - function fetch($id) - { - $sql = 'SELECT em.rowid, em.field, em.label, em.type'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'export_model as em'; - $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; + * \brief Recupère de la base les caractéristiques d'un modele d'export + * \param rowid id du modéle à récupérer + */ + function fetch($id) + { + $sql = 'SELECT em.rowid, em.field, em.label, em.type'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'export_model as em'; + $sql.= ' WHERE em.rowid = '.$id; - return 1; - } - else - { - $this->error="Model not found"; - return -2; - } - } - else - { - dolibarr_print_error($this->db); - return -3; - } - } + 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; + } + else + { + $this->error="Model not found"; + return -2; + } + } + else + { + dolibarr_print_error($this->db); + return -3; + } + } } diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index 49653d53ae6..4c11202afd4 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -135,13 +135,38 @@ if ($action == 'builddoc') } } -if ($step == 2 && $action == 'add') +if ($action == 'add_export_model') { - $objexport->model_name = $export_name; - $objexport->datatoexport = $datatoexport; - $objexport->hexa = $hexa; - - $result = $objexport->create($user); + if ($export_name) + { + asort($array_selected); + + // 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='
'.$langs->trans("ExportModelSaved",$objexport->model_name).'
'; + } + else + { + $mesg='
'.$objexport->error.'
'; + } + } + else + { + $mesg='
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("ExportModelName")).'
'; + } } if ($step == 2 && $action == 'select_model') @@ -151,7 +176,14 @@ if ($step == 2 && $action == 'select_model') $result = $objexport->fetch($exportmodelid); 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 ''; print ''; + + if ($mesg) print $mesg; + } if ($step == 2 && $datatoexport) @@ -254,23 +289,23 @@ if ($step == 2 && $datatoexport) print ''.$langs->trans("DatasetToExport").''; print ''.$objexport->array_export_label[0].''; + print ''; + print '
'; + // Liste déroulante des modéles d'export - print ''.$langs->trans("ExportModel").''; print '
'; print ''; print ''; print ''; - print ''; + print ''; - + print '
'; + print $langs->trans("SelectExportFields"); + print ''; $html->select_export_model($exportmodelid,'exportmodelid',$datatoexport,1); print ''; - print '
'; + print ''; + - print ''; - print '
'; - - print $langs->trans("SelectExportFields").'
'; - print ''; print ''; print ''; @@ -298,26 +333,19 @@ if ($step == 2 && $datatoexport) $var=!$var; print ""; - $modelchoice = substr($binaire,$i,1); $i++; - + $entity=$objexport->array_export_entities[0][$code]; $entityicon=$entitytoicon[$entity]?$entitytoicon[$entity]:$entity; $entitylang=$entitytolang[$entity]?$entitytolang[$entity]:$entity; print ''; - if (isset($array_selected[$code]) && $array_selected[$code] || $modelchoice == 1) + if ((isset($array_selected[$code]) && $array_selected[$code]) || $modelchoice == 1) { // Champ sélectionné print ''; print ''; print ''; - if ($modelchoice == 1) - { - $array_selected[$code]=sizeof($array_selected)+1; - $_SESSION["export_selected_fields"]=$array_selected; - } - $bit=1; } else @@ -336,7 +364,9 @@ if ($step == 2 && $datatoexport) print '
'.$langs->trans("Entities").'
'.img_object('',$entityicon).' '.$langs->trans($entitylang).' '.img_left().''.$langs->trans($label).' ('.$code.')
'; print ''; - + + if ($mesg) print $mesg; + /* * Barre d'action * @@ -344,22 +374,12 @@ if ($step == 2 && $datatoexport) print '
'; if (sizeof($array_selected)) - { - print '
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print '
'; - print ''; - print ''; - print ''.$langs->trans("NextStep").''; - print '
'; - } - + { + print ''.$langs->trans("NextStep").''; + } + print '
'; + } if ($step == 3 && $datatoexport) @@ -452,10 +472,39 @@ if ($step == 3 && $datatoexport) print ''; } - - print ''; + print ''; + + // Bouton exports profils + if (sizeof($array_selected)) + { + print '
'; + print $langs->trans("SaveExportModel"); + + print '
'; + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + print ''; + print ''; + $var=false; + print ''; + print ''; + print '
'.$langs->trans("ExportModelName").' 
'; + print ''; + print '
'; + print '
'; + } + + print ''; + + if ($mesg) print $mesg; /* * Barre d'action @@ -469,6 +518,7 @@ if ($step == 3 && $datatoexport) } print ''; + } if ($step == 4 && $datatoexport) diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index 3bf5950b2b0..8d8aac55a77 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -3,7 +3,10 @@ ExportsArea=Exports area NewExport=New export ExportableDatas=Exportable dataset 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 %s. ExportableFields=Exportable fields ExportedFields=Exported fields DatasetToExport=Dataset to export diff --git a/htdocs/langs/fr_FR/exports.lang b/htdocs/langs/fr_FR/exports.lang index 4b4d9e9c2c2..9678dee6d02 100644 --- a/htdocs/langs/fr_FR/exports.lang +++ b/htdocs/langs/fr_FR/exports.lang @@ -3,7 +3,10 @@ ExportsArea=Espace exports NewExport=Nouvel export ExportableDatas=Lot de données exportables 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 %s. ExportableFields=Champs exportables ExportedFields=Champs à exporter DatasetToExport=Lot de données à exporter diff --git a/mysql/migration/2.0.0-2.1.0.sql b/mysql/migration/2.0.0-2.1.0.sql index d823b83e4cb..7f0272093cc 100644 --- a/mysql/migration/2.0.0-2.1.0.sql +++ b/mysql/migration/2.0.0-2.1.0.sql @@ -914,9 +914,11 @@ UPDATE llx_facture SET type=0 where type=3; create table llx_export_model ( rowid integer AUTO_INCREMENT PRIMARY KEY, - label varchar(50) NOT NULL, - type varchar(20) NOT NULL, - field varchar(20) NOT NULL + label varchar(50) NOT NULL, + type varchar(20) NOT NULL, + field text )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); \ No newline at end of file diff --git a/mysql/tables/llx_export_model.sql b/mysql/tables/llx_export_model.sql index 46f23c47324..c34ccd3b776 100644 --- a/mysql/tables/llx_export_model.sql +++ b/mysql/tables/llx_export_model.sql @@ -26,7 +26,8 @@ create table llx_export_model ( rowid integer AUTO_INCREMENT PRIMARY KEY, - label varchar(50) NOT NULL, - type varchar(20) NOT NULL, - field varchar(20) NOT NULL + fk_user integer DEFAULT 0 NOT NULL, + label varchar(50) NOT NULL, + type varchar(20) NOT NULL, + field text NOT NULL )type=innodb; \ No newline at end of file