Work on import module
This commit is contained in:
parent
492f26f04b
commit
ecd690e4d1
@ -1,100 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
|
|
||||||
* Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file htdocs/imports/ajaximport.php
|
|
||||||
* \brief File to return Ajax response on Fields move in import page
|
|
||||||
* \version $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Disables token renewal
|
|
||||||
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
|
|
||||||
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
|
|
||||||
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
|
|
||||||
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
|
|
||||||
|
|
||||||
// This is to make Dolibarr working with Plesk
|
|
||||||
set_include_path($_SERVER['DOCUMENT_ROOT'].'/htdocs');
|
|
||||||
|
|
||||||
// Retrieve the entity in the cookie
|
|
||||||
$entityCookieName = "DOLENTITYID_dolibarr";
|
|
||||||
if (isset($_COOKIE[$entityCookieName])) $_SESSION["dol_entity"] = $_COOKIE[$entityCookieName];
|
|
||||||
|
|
||||||
require('../main.inc.php');
|
|
||||||
require_once(DOL_DOCUMENT_ROOT."/imports/import.class.php");
|
|
||||||
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/import/modules_import.php');
|
|
||||||
|
|
||||||
// Enregistrement de la position des champs
|
|
||||||
dol_syslog("AjaxImport boxorder=".$_GET['boxorder']." userid=".$_GET['userid']." datatoimport=".$_GET["datatoimport"], LOG_DEBUG);
|
|
||||||
$part=split(':',$_GET['boxorder']);
|
|
||||||
$colonne=$part[0];
|
|
||||||
$list=$part[1];
|
|
||||||
dol_syslog('AjaxImport column='.$colonne.' list='.$list);
|
|
||||||
|
|
||||||
$fuser=new User($db);
|
|
||||||
$fuser->id=$_GET['userid'];
|
|
||||||
$fuser->fetch();
|
|
||||||
|
|
||||||
// Init object $objimport that describe the predefined import
|
|
||||||
$objimport=new Import($db);
|
|
||||||
$datatoimport=isset($_GET["datatoimport"])? $_GET["datatoimport"] : (isset($_POST["datatoimport"])?$_POST["datatoimport"]:'');
|
|
||||||
$objimport->load_arrays($fuser,$datatoimport);
|
|
||||||
|
|
||||||
|
|
||||||
// Init targets fields array
|
|
||||||
$fieldstarget=$objimport->array_import_fields[0];
|
|
||||||
|
|
||||||
// Reinit match arrays. We redefine array_match_file_to_database
|
|
||||||
$serialized_array_match_file_to_database='';
|
|
||||||
$array_match_file_to_database=array();
|
|
||||||
$fieldsarray=split(',',$list);
|
|
||||||
$pos=0;
|
|
||||||
foreach($fieldsarray as $fieldnb) // For each elem in list. fieldnb start from 1 to ...
|
|
||||||
{
|
|
||||||
// Get name of database fields at position $pos and put it into $namefield
|
|
||||||
$posbis=0;$namefield='';
|
|
||||||
foreach($fieldstarget as $key => $val) // key: val:
|
|
||||||
{
|
|
||||||
//dol_syslog('AjaxImport key='.$key.' val='.$val);
|
|
||||||
if ($posbis < $pos)
|
|
||||||
{
|
|
||||||
$posbis++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// We found the key of targets that is at position pos
|
|
||||||
$namefield=$key;
|
|
||||||
//dol_syslog('AjaxImport Field name found for file field nb '.$fieldnb.'='.$namefield);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($fieldnb && $namefield)
|
|
||||||
{
|
|
||||||
$array_match_file_to_database[$fieldnb]=$namefield;
|
|
||||||
if ($serialized_array_match_file_to_database) $serialized_array_match_file_to_database.=',';
|
|
||||||
$serialized_array_match_file_to_database.=($fieldnb.'='.$namefield);
|
|
||||||
}
|
|
||||||
|
|
||||||
$pos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We save new matching in session
|
|
||||||
$_SESSION["dol_array_match_file_to_database"]=$serialized_array_match_file_to_database;
|
|
||||||
dol_syslog('AjaxImport dol_array_match_file_to_database='.$serialized_array_match_file_to_database);
|
|
||||||
?>
|
|
||||||
@ -77,10 +77,10 @@ $objimport=new Import($db);
|
|||||||
$objimport->load_arrays($user,$datatoimport);
|
$objimport->load_arrays($user,$datatoimport);
|
||||||
|
|
||||||
$objmodelimport=new ModeleImports();
|
$objmodelimport=new ModeleImports();
|
||||||
|
|
||||||
$html = new Form($db);
|
$html = new Form($db);
|
||||||
$htmlother = new FormOther($db);
|
$htmlother = new FormOther($db);
|
||||||
$formfile = new FormFile($db);
|
$formfile = new FormFile($db);
|
||||||
$sqlusedforimport='';
|
|
||||||
|
|
||||||
// Init $array_match_file_to_database from _SESSION
|
// Init $array_match_file_to_database from _SESSION
|
||||||
$serialized_array_match_file_to_database=isset($_SESSION["dol_array_match_file_to_database"])?$_SESSION["dol_array_match_file_to_database"]:'';
|
$serialized_array_match_file_to_database=isset($_SESSION["dol_array_match_file_to_database"])?$_SESSION["dol_array_match_file_to_database"]:'';
|
||||||
@ -137,7 +137,6 @@ if ($action == 'builddoc')
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$mesg='<div class="ok">'.$langs->trans("FileSuccessfullyBuilt").'</div>';
|
$mesg='<div class="ok">'.$langs->trans("FileSuccessfullyBuilt").'</div>';
|
||||||
$sqlusedforimport=$objimport->sqlusedforimport;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,6 +489,8 @@ if ($step == 3 && $datatoimport)
|
|||||||
print $objimport->array_import_label[0];
|
print $objimport->array_import_label[0];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td colspan="2"><b>'.$langs->trans("InformationOnSourceFile").'</b></td></tr>';
|
||||||
|
|
||||||
// Source file format
|
// Source file format
|
||||||
print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
|
print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -574,7 +575,17 @@ if ($step == 3 && $datatoimport)
|
|||||||
// Page to make matching between source file and database fields
|
// Page to make matching between source file and database fields
|
||||||
if ($step == 4 && $datatoimport)
|
if ($step == 4 && $datatoimport)
|
||||||
{
|
{
|
||||||
|
$model=$format;
|
||||||
|
|
||||||
|
// Create classe to use for import
|
||||||
|
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/import/";
|
||||||
|
$file = "import_".$model.".modules.php";
|
||||||
|
$classname = "Import".ucfirst($model);
|
||||||
|
require_once($dir.$file);
|
||||||
|
$obj = new $classname($db);
|
||||||
|
|
||||||
// Load source fields in input file
|
// Load source fields in input file
|
||||||
|
$obj->import_open_file($dir.$file,$langs);
|
||||||
$fieldssource=array(
|
$fieldssource=array(
|
||||||
1=>array('name'=>'aa','example1'=>'val1','example2'=>'val2'),
|
1=>array('name'=>'aa','example1'=>'val1','example2'=>'val2'),
|
||||||
2=>array('name'=>'bb','example1'=>'valb1','example2'=>'valb2'),
|
2=>array('name'=>'bb','example1'=>'valb1','example2'=>'valb2'),
|
||||||
@ -586,6 +597,7 @@ if ($step == 4 && $datatoimport)
|
|||||||
8=>array('name'=>'hh','example1'=>'valc1','example2'=>'valc2'),
|
8=>array('name'=>'hh','example1'=>'valc1','example2'=>'valc2'),
|
||||||
9=>array('name'=>'ii','example1'=>'valc1','example2'=>'valc2'),
|
9=>array('name'=>'ii','example1'=>'valc1','example2'=>'valc2'),
|
||||||
*/ );
|
*/ );
|
||||||
|
$obj->import_close_file();
|
||||||
|
|
||||||
// Load targets fields in database
|
// Load targets fields in database
|
||||||
$fieldstarget=$objimport->array_import_fields[0];
|
$fieldstarget=$objimport->array_import_fields[0];
|
||||||
@ -672,6 +684,8 @@ if ($step == 4 && $datatoimport)
|
|||||||
print $objimport->array_import_label[0];
|
print $objimport->array_import_label[0];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td colspan="2"><b>'.$langs->trans("InformationOnSourceFile").'</b></td></tr>';
|
||||||
|
|
||||||
// Source file format
|
// Source file format
|
||||||
print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
|
print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -860,14 +874,14 @@ if ($step == 4 && $datatoimport)
|
|||||||
//alert( \'boxorder=\' + boxorder )."\n";
|
//alert( \'boxorder=\' + boxorder )."\n";
|
||||||
//print 'var userid = \''.$user->id.'\';'."\n";
|
//print 'var userid = \''.$user->id.'\';'."\n";
|
||||||
//print 'var url = "ajaximport.php";'."\n";
|
//print 'var url = "ajaximport.php";'."\n";
|
||||||
print 'var datatoimport = "'.$datatoimport.'";'."\n";
|
//print 'var datatoimport = "'.$datatoimport.'";'."\n";
|
||||||
print 'var newlocation= \''.$_SERVER["PHP_SELF"].'?step=4&action=saveorder&boxorder=\' + boxorder + \'&datatoimport=\' + datatoimport;'."\n";
|
print 'var newlocation= \''.$_SERVER["PHP_SELF"].'?step=4&format='.$format.'&datatoimport='.urlencode($datatoimport).'&filetoimport='.urlencode($filetoimport).'&action=saveorder&boxorder=\' + boxorder;'."\n";
|
||||||
//print 'alert(newlocation);';
|
//print 'alert(newlocation);';
|
||||||
//print 'o_options = new Object();'."\n";
|
//print 'o_options = new Object();'."\n";
|
||||||
//print 'o_options = {asynchronous:false,method: \'get\',parameters: \'step=4&boxorder=\' + boxorder + \'&userid=\' + userid + \'&datatoimport=\' + datatoimport};'."\n";
|
//print 'o_options = {asynchronous:false,method: \'get\',parameters: \'step=4&boxorder=\' + boxorder + \'&userid=\' + userid + \'&datatoimport=\' + datatoimport};'."\n";
|
||||||
//print 'var myAjax = new Ajax.Request(url, o_options);'."\n";
|
//print 'var myAjax = new Ajax.Request(url, o_options);'."\n";
|
||||||
// Now reload page
|
// Now reload page
|
||||||
print 'window.location.href=newlocation';
|
print 'window.location.href=newlocation;'."\n";
|
||||||
print '}'."\n";
|
print '}'."\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
|
|
||||||
@ -981,7 +995,17 @@ if ($step == 5 && $datatoimport)
|
|||||||
{
|
{
|
||||||
if (empty($dontimportfirstline)) $dontimportfirstline=0;
|
if (empty($dontimportfirstline)) $dontimportfirstline=0;
|
||||||
|
|
||||||
|
$model=$format;
|
||||||
|
|
||||||
|
// Create classe to use for import
|
||||||
|
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/import/";
|
||||||
|
$file = "import_".$model.".modules.php";
|
||||||
|
$classname = "Import".ucfirst($model);
|
||||||
|
require_once($dir.$file);
|
||||||
|
$obj = new $classname($db);
|
||||||
|
|
||||||
// Load source fields in input file
|
// Load source fields in input file
|
||||||
|
$obj->import_open_file($dir.$file,$langs);
|
||||||
$fieldssource=array(
|
$fieldssource=array(
|
||||||
1=>array('name'=>'aa','example1'=>'val1','example2'=>'val2'),
|
1=>array('name'=>'aa','example1'=>'val1','example2'=>'val2'),
|
||||||
2=>array('name'=>'bb','example1'=>'valb1','example2'=>'valb2'),
|
2=>array('name'=>'bb','example1'=>'valb1','example2'=>'valb2'),
|
||||||
@ -993,6 +1017,7 @@ if ($step == 5 && $datatoimport)
|
|||||||
8=>array('name'=>'hh','example1'=>'valc1','example2'=>'valc2'),
|
8=>array('name'=>'hh','example1'=>'valc1','example2'=>'valc2'),
|
||||||
9=>array('name'=>'ii','example1'=>'valc1','example2'=>'valc2'),
|
9=>array('name'=>'ii','example1'=>'valc1','example2'=>'valc2'),
|
||||||
*/ );
|
*/ );
|
||||||
|
$obj->import_close_file();
|
||||||
|
|
||||||
ksort($array_match_file_to_database);
|
ksort($array_match_file_to_database);
|
||||||
//var_dump($array_match_file_to_database);
|
//var_dump($array_match_file_to_database);
|
||||||
@ -1042,6 +1067,8 @@ if ($step == 5 && $datatoimport)
|
|||||||
print $objimport->array_import_label[0];
|
print $objimport->array_import_label[0];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td colspan="2"><b>'.$langs->trans("InformationOnSourceFile").'</b></td></tr>';
|
||||||
|
|
||||||
// Source file format
|
// Source file format
|
||||||
print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
|
print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -1077,6 +1104,8 @@ if ($step == 5 && $datatoimport)
|
|||||||
print '<input type="checkbox" name="nofirstline" value='.$dontimportfirstline.'>';
|
print '<input type="checkbox" name="nofirstline" value='.$dontimportfirstline.'>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td colspan="2"><b>'.$langs->trans("InformationOnTargetTables").'</b></td></tr>';
|
||||||
|
|
||||||
// Tables imported
|
// Tables imported
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print $langs->trans("TablesTarget");
|
print $langs->trans("TablesTarget");
|
||||||
@ -1090,7 +1119,7 @@ if ($step == 5 && $datatoimport)
|
|||||||
$alias=eregi_replace('\..*$','',$label);
|
$alias=eregi_replace('\..*$','',$label);
|
||||||
$listtables[$alias]=$objimport->array_import_tables[0][$alias];
|
$listtables[$alias]=$objimport->array_import_tables[0][$alias];
|
||||||
}
|
}
|
||||||
print sizeof($listtables)?(join(',',$listtables)):$langs->trans("Error");
|
print sizeof($listtables)?(join(', ',$listtables)):$langs->trans("Error");
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Fields imported
|
// Fields imported
|
||||||
@ -1107,7 +1136,7 @@ if ($step == 5 && $datatoimport)
|
|||||||
$alias=eregi_replace('\..*$','',$label);
|
$alias=eregi_replace('\..*$','',$label);
|
||||||
$listfields[$i]=$label;
|
$listfields[$i]=$label;
|
||||||
}
|
}
|
||||||
print sizeof($listfields)?(join(',',$listfields)):$langs->trans("Error");
|
print sizeof($listfields)?(join(', ',$listfields)):$langs->trans("Error");
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -153,11 +153,11 @@ class ImportCsv extends ModeleImports
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Open output file
|
* \brief Open input file
|
||||||
* \param file Path of filename
|
* \param file Path of filename
|
||||||
* \return int <0 if KO, >=0 if OK
|
* \return int <0 if KO, >=0 if OK
|
||||||
*/
|
*/
|
||||||
function open_file($file,$outputlangs)
|
function import_open_file($file)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
@ -165,8 +165,7 @@ class ImportCsv extends ModeleImports
|
|||||||
|
|
||||||
$ret=1;
|
$ret=1;
|
||||||
|
|
||||||
$outputlangs->load("exports");
|
$this->handle = fopen($file, "r");
|
||||||
$this->handle = fread($file, "wt");
|
|
||||||
if (! $this->handle)
|
if (! $this->handle)
|
||||||
{
|
{
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
@ -178,19 +177,18 @@ class ImportCsv extends ModeleImports
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Output header into file
|
* \brief Input header line from file
|
||||||
* \param langs Output language
|
|
||||||
*/
|
*/
|
||||||
function read_header($outputlangs)
|
function import_read_header()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Output record line into file
|
* \brief Input record line from file
|
||||||
*/
|
*/
|
||||||
function read_record($array_alias,$array_selected_sorted,$objp,$outputlangs)
|
function import_read_record($array_alias,$array_selected_sorted,$objp)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
if (! empty($conf->global->EXPORT_CSV_FORCE_CHARSET)) $outputlangs->charset_output=$conf->global->EXPORT_CSV_FORCE_CHARSET;
|
if (! empty($conf->global->EXPORT_CSV_FORCE_CHARSET)) $outputlangs->charset_output=$conf->global->EXPORT_CSV_FORCE_CHARSET;
|
||||||
@ -220,12 +218,13 @@ class ImportCsv extends ModeleImports
|
|||||||
/**
|
/**
|
||||||
* \brief Close file handle
|
* \brief Close file handle
|
||||||
*/
|
*/
|
||||||
function close_file()
|
function import_close_file()
|
||||||
{
|
{
|
||||||
fclose($this->handle);
|
fclose($this->handle);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clean a cell to respect rules of CSV file cells
|
* Clean a cell to respect rules of CSV file cells
|
||||||
* @param newvalue String to clean
|
* @param newvalue String to clean
|
||||||
|
|||||||
@ -142,40 +142,6 @@ class ModeleImports
|
|||||||
return $this->libversion[$key];
|
return $this->libversion[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Lance lecture fichier
|
|
||||||
* \remarks Les tableaux array_import_xxx sont deja chargees pour le bon datatoexport
|
|
||||||
*/
|
|
||||||
function load_file($model, $array_selected)
|
|
||||||
{
|
|
||||||
global $langs;
|
|
||||||
|
|
||||||
dol_syslog("Import::load_file $model, $array_selected");
|
|
||||||
|
|
||||||
// Creation de la classe d'export du model ImportXXX
|
|
||||||
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/import/";
|
|
||||||
$file = "import_".$model.".modules.php";
|
|
||||||
$classname = "Import".$model;
|
|
||||||
require_once($dir.$file);
|
|
||||||
$obj = new $classname($db);
|
|
||||||
|
|
||||||
// Execute requete import
|
|
||||||
$sql=$this->array_export_sql[0];
|
|
||||||
$resql = $this->db->query($sql);
|
|
||||||
if ($resql)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->error=$this->db->error();
|
|
||||||
dol_syslog("Error: sql=$sql ".$this->error, LOG_ERR);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -77,4 +77,6 @@ NbOfSourceLines=Number of lines in source file
|
|||||||
NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "<b>%s</b>" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)...
|
NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "<b>%s</b>" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)...
|
||||||
RunSimulateImportFile=Launch the import simulation
|
RunSimulateImportFile=Launch the import simulation
|
||||||
FieldNeedSource=This fiels in database require a data from source file
|
FieldNeedSource=This fiels in database require a data from source file
|
||||||
SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file
|
SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file
|
||||||
|
InformationOnSourceFile=Informations on source file
|
||||||
|
InformationOnTargetTables=Informations on target fields
|
||||||
|
|||||||
@ -77,4 +77,6 @@ NbOfSourceLines=Nombre de lignes du fichier source
|
|||||||
NowClickToTestTheImport=Vérifiez les paramètres d'import que vous avez défini. S'ils vous conviennent, cliquez sur le bouton "<b>%s</b>" pour lancer une simulation d'import (aucune donnée ne sera modifié, il s'agit dans un premier temps d'une simple simulation)...
|
NowClickToTestTheImport=Vérifiez les paramètres d'import que vous avez défini. S'ils vous conviennent, cliquez sur le bouton "<b>%s</b>" pour lancer une simulation d'import (aucune donnée ne sera modifié, il s'agit dans un premier temps d'une simple simulation)...
|
||||||
RunSimulateImportFile=Lancer la simulation d'import
|
RunSimulateImportFile=Lancer la simulation d'import
|
||||||
FieldNeedSource=Ce champ en base requiert obligatoirement une donnée source
|
FieldNeedSource=Ce champ en base requiert obligatoirement une donnée source
|
||||||
SomeMandatoryFieldHaveNoSource=Certains champs obligatoires n'ont pas de champ source issus du fichier
|
SomeMandatoryFieldHaveNoSource=Certains champs obligatoires n'ont pas de champ source issus du fichier
|
||||||
|
InformationOnSourceFile=Informations sur le fichier source
|
||||||
|
InformationOnTargetTables=Informations sur les champs cibles
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user