diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php
index 79541c10105..5f44b843e1f 100644
--- a/htdocs/core/modules/modProduct.class.php
+++ b/htdocs/core/modules/modProduct.class.php
@@ -308,7 +308,6 @@ class modProduct extends DolibarrModules
if (is_object($mysoc) && $mysoc->useNPR()) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r],array('sp.recuperableonly'=>'NPR'));
if (is_object($mysoc) && $mysoc->useLocalTax(1)) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r],array('sp.localtax1_tx'=>'LT1', 'sp.localtax1_type'=>'LT1Type'));
if (is_object($mysoc) && $mysoc->useLocalTax(2)) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r],array('sp.localtax2_tx'=>'LT2', 'sp.localtax2_type'=>'LT2Type'));
-
$this->import_convertvalue_array[$r]=array(
'sp.fk_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty'),
'sp.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'Product')
@@ -352,30 +351,19 @@ class modProduct extends DolibarrModules
if (! empty($conf->global->MAIN_MULTILANGS))
{
$r++;
- /* FIXME Must be a dedicated import profil. Not working yet
- $this->import_code[$r]=$this->rights_class.'_multiprice';
- $this->import_label[$r]="ProductTranslations";
+ $this->import_code[$r]=$this->rights_class.'_languages';
+ $this->import_label[$r]="ProductsOrServicesTranslations";
$this->import_icon[$r]=$this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
- $this->import_tables_array[$r]['l']=MAIN_DB_PREFIX.'product_lang';
+ $this->import_tables_array[$r]=array('l'=>MAIN_DB_PREFIX.'product_lang');
// multiline translation, one line per translation
- $this->import_fields_array[$r]['l.lang']='Language';
- $this->import_fields_array[$r]['l.label']='TranslatedLabel';
- $this->import_fields_array[$r]['l.description']='TranslatedDescription';
- $this->import_fields_array[$r]['l.note']='TranslatedNote';
- $this->import_examplevalues_array[$r]['l.lang']='en_US';
- */
- // single line translation, one column per translation
- /*
- foreach($langs as $l) {
- $this->import_tables_array[$r][$l] = MAIN_DB_PREFIX.'product_lang';
- $this->import_fields_array[$r][$l.'.label']=$l.'_label';
- $this->import_fields_array[$r][$l.'.description']=$l.'_description';
- $this->import_fields_array[$r][$l.'.note']=$l.'_note';
- $this->import_fieldshidden_array[$r][$l.'.lang']="'$l'";
- $this->import_fieldshidden_array[$r][$l.'.fk_product']='lastrowid-'.MAIN_DB_PREFIX.'product';
- }
- */
+ $this->import_fields_array[$r]=array('l.fk_product'=>'Ref', 'l.lang'=>'Language', 'l.label'=>'TranslatedLabel', 'l.description'=>'TranslatedDescription');
+ //$this->import_fields_array[$r]['l.note']='TranslatedNote';
+ $this->import_convertvalue_array[$r]=array(
+ 'l.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'Product')
+ );
+ $this->import_examplevalues_array[$r]=array('l.fk_product'=>'MyProductRef','l.lang'=>'en_US','l.label'=>'Label in en_US','l.description'=>'Desc in en_US');
+ $this->import_updatekeys_array[$r]=array('l.fk_product'=>'Ref','l.lang'=>'Language');
}
}
diff --git a/htdocs/core/modules/modService.class.php b/htdocs/core/modules/modService.class.php
index 961b031e232..eed1008ca34 100644
--- a/htdocs/core/modules/modService.class.php
+++ b/htdocs/core/modules/modService.class.php
@@ -133,8 +133,8 @@ class modService extends DolibarrModules
// Menus
//-------
$this->menu = 1; // This module add menu entries. They are coded into menu manager.
-
-
+
+
// Exports
//--------
$r=0;
@@ -315,6 +315,24 @@ class modService extends DolibarrModules
'pr.tva_tx'=>'19.6',
'pr.date_price'=>'2013-04-10');
}
+
+ if (! empty($conf->global->MAIN_MULTILANGS))
+ {
+ $r++;
+ $this->import_code[$r]=$this->rights_class.'_languages';
+ $this->import_label[$r]="ProductsOrServicesTranslations";
+ $this->import_icon[$r]=$this->picto;
+ $this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
+ $this->import_tables_array[$r]=array('l'=>MAIN_DB_PREFIX.'product_lang');
+ // multiline translation, one line per translation
+ $this->import_fields_array[$r]=array('l.fk_product'=>'Ref', 'l.lang'=>'Language', 'l.label'=>'TranslatedLabel', 'l.description'=>'TranslatedDescription');
+ //$this->import_fields_array[$r]['l.note']='TranslatedNote';
+ $this->import_convertvalue_array[$r]=array(
+ 'l.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'Product')
+ );
+ $this->import_examplevalues_array[$r]=array('l.fk_product'=>'MyProductRef','l.lang'=>'en_US','l.label'=>'Label in en_US','l.description'=>'Desc in en_US');
+ $this->import_updatekeys_array[$r]=array('l.fk_product'=>'Ref','l.lang'=>'Language');
+ }
}
}
diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php
index 0847f1c4262..1549e7124e0 100644
--- a/htdocs/imports/import.php
+++ b/htdocs/imports/import.php
@@ -225,7 +225,7 @@ if ($step == 3 && $datatoimport)
$param='&datatoimport='.$datatoimport.'&format='.$format;
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');
@@ -362,7 +362,7 @@ if ($step == 1 || ! $datatoimport)
print '
| ';
$titleofmodule=$objimport->array_import_module[$key]->getName();
// Special cas for import common to module/services
- if (in_array($objimport->array_import_code[$key], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
+ if (in_array($objimport->array_import_code[$key], array('produit_supplierprices','produit_multiprice','produit_languages'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print ' | ';
//print $value;
@@ -415,7 +415,7 @@ if ($step == 2 && $datatoimport)
print ' | ';
$titleofmodule=$objimport->array_import_module[0]->getName();
// Special cas for import common to module/services
- if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
+ if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice','produit_languages'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print ' |
';
@@ -429,9 +429,9 @@ if ($step == 2 && $datatoimport)
print '';
print '
';
-
+
dol_fiche_end();
-
+
print '';
@@ -1668,8 +1668,10 @@ if ($step == 6 && $datatoimport)
$head = import_prepare_head($param,6);
- dol_fiche_head($head, 'step6', $langs->trans("NewImport"));
+ dol_fiche_head($head, 'step6', $langs->trans("NewImport"), -1);
+ print '';
+ print '';
print '
';
@@ -1678,7 +1680,7 @@ if ($step == 6 && $datatoimport)
print '| ';
$titleofmodule=$objimport->array_import_module[0]->getName();
// Special cas for import common to module/services
- if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
+ if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice','produit_languages'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print ' | ';
@@ -1690,10 +1692,13 @@ if ($step == 6 && $datatoimport)
print '';
print '
';
-
+ print '
';
+
print '
';
-
- print ''.$langs->trans("InformationOnSourceFile").'
';
+
+ print ''.$langs->trans("InformationOnSourceFile").'';
+ print '';
+ print '';
print '
';
- print ''.$langs->trans("InformationOnTargetTables").'
';
+ print ''.$langs->trans("InformationOnTargetTables").'';
+ print '';
+ print '';
print '
';
//print '| '.$langs->trans("InformationOnTargetTables").' |
';
@@ -1812,6 +1820,7 @@ if ($step == 6 && $datatoimport)
print '';
print '
';
+ print '
';
// Launch import
$arrayoferrors=array();
@@ -1852,7 +1861,7 @@ if ($step == 6 && $datatoimport)
// Run import
$result=$obj->import_insert($arrayrecord,$array_match_file_to_database,$objimport,count($fieldssource),$importid,$updatekeys);
-
+
if (count($obj->errors)) $arrayoferrors[$sourcelinenb]=$obj->errors;
if (count($obj->warnings)) $arrayofwarnings[$sourcelinenb]=$obj->warnings;
if (! count($obj->errors) && ! count($obj->warnings)) $nbok++;
@@ -1866,10 +1875,10 @@ if ($step == 6 && $datatoimport)
}
if (count($arrayoferrors) > 0) $db->rollback(); // We force rollback because this was errors.
- else
+ else
{
$error=0;
-
+
// Run the sql after import if defined
//var_dump($objimport->array_import_run_sql_after[0]);
if (! empty($objimport->array_import_run_sql_after[0]) && is_array($objimport->array_import_run_sql_after[0]))
@@ -1879,18 +1888,18 @@ if ($step == 6 && $datatoimport)
{
$i++;
$resqlafterimport=$db->query($sqlafterimport);
- if (! $resqlafterimport)
+ if (! $resqlafterimport)
{
$arrayoferrors['none'][]=array('lib'=>$langs->trans("Error running final request: ".$sqlafterimport));
$error++;
}
}
}
-
+
if (! $error) $db->commit(); // We can commit if no errors.
else $db->rollback();
}
-
+
dol_fiche_end();
@@ -1930,7 +1939,7 @@ function show_elem($fieldssource,$pos,$key,$var,$nostyle='')
global $langs,$bc;
$height='24';
-
+
print "\n\n\n";
print ''."\n";
diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang
index 294611612b2..67c7fa81da0 100644
--- a/htdocs/langs/en_US/products.lang
+++ b/htdocs/langs/en_US/products.lang
@@ -271,6 +271,7 @@ WarningSelectOneDocument=Please select at least one document
DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals
ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view...
+ProductsOrServicesTranslations=Products or services translation
TranslatedLabel=Translated label
TranslatedDescription=Translated description
TranslatedNote=Translated notes