diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index c6fe3094b68..d4d78ae3535 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -76,6 +76,7 @@ $import_name = GETPOST('import_name'); $hexa = GETPOST('hexa'); $importmodelid = GETPOST('importmodelid'); $excludefirstline = (GETPOST('excludefirstline') ? GETPOST('excludefirstline') : 0); +$endatlinenb = (GETPOST('endatlinenb') ? GETPOST('endatlinenb') : ''); $separator = (GETPOST('separator') ? GETPOST('separator') : (! empty($conf->global->IMPORT_CSV_SEPARATOR_TO_USE)?$conf->global->IMPORT_CSV_SEPARATOR_TO_USE:',')); $enclosure = (GETPOST('enclosure') ? GETPOST('enclosure') : '"'); @@ -221,8 +222,9 @@ if ($step == 3 && $datatoimport) $langs->load("other"); $param='&datatoimport='.$datatoimport.'&format='.$format; - if ($excludefirstline) $param.='&excludefirstline=1'; - + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; + $file = $conf->import->dir_temp . '/' . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); @@ -328,7 +330,8 @@ if ($step == 1 || ! $datatoimport) $_SESSION["dol_array_match_file_to_database"]=''; $param=''; - if ($excludefirstline) $param.='&excludefirstline=1'; + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; if ($separator) $param.='&separator='.urlencode($separator); if ($enclosure) $param.='&enclosure='.urlencode($enclosure); @@ -395,7 +398,8 @@ if ($step == 1 || ! $datatoimport) if ($step == 2 && $datatoimport) { $param='&datatoimport='.$datatoimport; - if ($excludefirstline) $param.='&excludefirstline=1'; + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; if ($separator) $param.='&separator='.urlencode($separator); if ($enclosure) $param.='&enclosure='.urlencode($enclosure); @@ -469,7 +473,8 @@ if ($step == 2 && $datatoimport) if ($step == 3 && $datatoimport) { $param='&datatoimport='.$datatoimport.'&format='.$format; - if ($excludefirstline) $param.='&excludefirstline=1'; + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; if ($separator) $param.='&separator='.urlencode($separator); if ($enclosure) $param.='&enclosure='.urlencode($enclosure); @@ -547,6 +552,7 @@ if ($step == 3 && $datatoimport) print ''; print ''; print ''; + print ''; print ''; print ''; print ''; @@ -684,7 +690,8 @@ if ($step == 4 && $datatoimport) // Now $array_match_file_to_database contains fieldnb(1,2,3...)=>fielddatabase(key in $array_match_file_to_database) $param='&format='.$format.'&datatoimport='.$datatoimport.'&filetoimport='.urlencode($filetoimport); - if ($excludefirstline) $param.='&excludefirstline=1'; + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; if ($separator) $param.='&separator='.urlencode($separator); if ($enclosure) $param.='&enclosure='.urlencode($enclosure); @@ -732,6 +739,7 @@ if ($step == 4 && $datatoimport) print ''; print ''; print ''; + print ''; print ''; print ''; print $langs->trans("Separator").' : '; @@ -767,7 +775,8 @@ if ($step == 4 && $datatoimport) print ''; print ''; print ''; - print ''; + print ''; + print ''; print ''; print ''; - // Checkbox do not import first line + // Do not import first lines print ''; + // Do not import end lines + print ''; + print '
'; print $langs->trans("SelectImportFields",img_picto('','uparrow','')).' '; @@ -1051,7 +1060,8 @@ if ($step == 4 && $datatoimport) print ''; print ''; print ''; - print ''; + print ''; + print ''; print ''; print ''; @@ -1138,15 +1148,19 @@ if ($step == 5 && $datatoimport) $nboflines=dol_count_nb_of_line($conf->import->dir_temp.'/'.$filetoimport); $param='&leftmenu=import&format='.$format.'&datatoimport='.$datatoimport.'&filetoimport='.urlencode($filetoimport).'&nboflines='.$nboflines.'&separator='.urlencode($separator).'&enclosure='.urlencode($enclosure); - $param2 = $param; - if ($excludefirstline) { - $param.='&excludefirstline=1'; - } - + $param2 = $param; // $param2 = $param without excludefirstline and endatlinenb + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; + llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:Módulo_Importaciones'); $head = import_prepare_head($param,5); + + print ''; + print ''; // step 5 + print ''; // step 5 + dol_fiche_head($head, 'step5', $langs->trans("NewImport")); @@ -1180,6 +1194,17 @@ if ($step == 5 && $datatoimport) print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format),$text); print ''; + // Separator and enclosure + if ($model == 'csv') { + print ''; + print ''; + } + // File to import print ''; print ''; - // Checkbox do not import first line + // Do not import first lines print ''; + // Do not import end lines + print ''; + print '
'.$langs->trans("CsvOptions").''; + print $langs->trans("Separator").' : '; + print htmlentities($separator); + print '    '.$langs->trans("Enclosure").' : '; + print htmlentities($enclosure); + print '
'.$langs->trans("FileToImport").''; @@ -1197,16 +1222,40 @@ if ($step == 5 && $datatoimport) print $nboflines; print '
'; - print $langs->trans("Option"); + print $langs->trans("ImportFromLine"); print ''; - print ''; - print ' '.$langs->trans("DoNotImportFirstLine"); + if ($action=='launchsimu') + { + print ''; + print ''; + print '   '.$langs->trans("Modify").''; + } + else + { + print ''; + print $form->textwithpicto("", $langs->trans("SetThisValueTo2ToExcludeFirstLine")); + } print '
'; + print $langs->trans("EndAtLineNb"); + print ''; + if ($action=='launchsimu') + { + print ''; + print ''; + print '   '.$langs->trans("Modify").''; + } + else + { + print ''; + print $form->textwithpicto("", $langs->trans("KeepEmptyToGoToEndOfFile")); + } + print '
'; print '
'; @@ -1280,7 +1329,7 @@ if ($step == 5 && $datatoimport) dol_fiche_end(); - if (GETPOST('action') != 'launchsimu') + if ($action != 'launchsimu') { // Show import id print $langs->trans("NowClickToTestTheImport",$langs->transnoentitiesnoconv("RunSimulateImportFile")).'
'; @@ -1290,7 +1339,7 @@ if ($step == 5 && $datatoimport) print '
'; if ($user->rights->import->run) { - print ''.$langs->trans("RunSimulateImportFile").''; + print ''; } else { @@ -1336,9 +1385,10 @@ if ($step == 5 && $datatoimport) $endoffile++; continue; } - if ($excludefirstline && $sourcelinenb == 1) continue; + if ($excludefirstline && ($sourcelinenb < $excludefirstline)) continue; + if ($endatlinenb && ($sourcelinenb > $endatlinenb)) continue; - // + // Run import $result=$obj->import_insert($arrayrecord,$array_match_file_to_database,$objimport,count($fieldssource),$importid); if (count($obj->errors)) $arrayoferrors[$sourcelinenb]=$obj->errors; @@ -1412,7 +1462,7 @@ if ($step == 5 && $datatoimport) print '
'; print $langs->trans("NowClickToRunTheImport",$langs->transnoentitiesnoconv("RunImportFile")).'
'; - print $langs->trans("DataLoadedWithId",$importid).'
'; + if (empty($nboferrors)) print $langs->trans("DataLoadedWithId",$importid).'
'; print '
'; print '
'; @@ -1427,7 +1477,7 @@ if ($step == 5 && $datatoimport) } else { - //print ''.$langs->trans("RunSimulateImportFile").''; + //print ''; print ''.$langs->trans("RunImportFile").''; } @@ -1439,7 +1489,10 @@ if ($step == 5 && $datatoimport) print ''.$langs->trans("RunImportFile").''; } print '
'; + } + + print ''; } @@ -1482,7 +1535,8 @@ if ($step == 6 && $datatoimport) $nboflines=(! empty($_GET["nboflines"])?$_GET["nboflines"]:dol_count_nb_of_line($conf->import->dir_temp.'/'.$filetoimport)); $param='&format='.$format.'&datatoimport='.$datatoimport.'&filetoimport='.urlencode($filetoimport).'&nboflines='.$nboflines; - if ($excludefirstline) $param.='&excludefirstline=1'; + if ($excludefirstline) $param.='&excludefirstline='.$excludefirstline; + if ($endatlinenb) $param.='&endatlinenb='.$endatlinenb; if ($separator) $param.='&separator='.urlencode($separator); if ($enclosure) $param.='&enclosure='.urlencode($enclosure); @@ -1540,16 +1594,20 @@ if ($step == 6 && $datatoimport) print $nboflines; print '
'; - print $langs->trans("Option"); + print $langs->trans("ImportFromLine"); print ''; - print ''; - print ' '.$langs->trans("DoNotImportFirstLine"); + print ''; print '
'; + print $langs->trans("EndAtLineNb"); + print ''; + print ''; + print '
'; print '
'; @@ -1651,9 +1709,12 @@ if ($step == 6 && $datatoimport) $endoffile++; continue; } - if ($excludefirstline && $sourcelinenb == 1) continue; + if ($excludefirstline && ($sourcelinenb < $excludefirstline)) continue; + if ($endatlinenb && ($sourcelinenb > $endatlinenb)) continue; + // Run import $result=$obj->import_insert($arrayrecord,$array_match_file_to_database,$objimport,count($fieldssource),$importid); + if (count($obj->errors)) $arrayoferrors[$sourcelinenb]=$obj->errors; if (count($obj->warnings)) $arrayofwarnings[$sourcelinenb]=$obj->warnings; if (! count($obj->errors) && ! count($obj->warnings)) $nbok++; diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index e9f44435750..d1a952eccf2 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -128,6 +128,10 @@ SpecialCode=Special code ExportStringFilter=%% allows replacing one or more characters in the text ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days ExportNumericFilter='NNNNN' filters by one value
'NNNNN+NNNNN' filters over a range of values
'>NNNNN' filters by lower values
'>NNNNN' filters by higher values +ImportFromLine=Import starting from line number +EndAtLineNb=End at line number +SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines +KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file ## filters SelectFilterFields=If you want to filter on some values, just input values here. FilterableFields=Filterable Fields