diff --git a/lib/ProductOpener/Import.pm b/lib/ProductOpener/Import.pm
index c8e266a2457ab..ce63c178b9075 100644
--- a/lib/ProductOpener/Import.pm
+++ b/lib/ProductOpener/Import.pm
@@ -1084,6 +1084,8 @@ sub import_csv_file($) {
# Skip data that we have already imported before (even if it has been changed)
# But do import the field "obsolete"
elsif (($field ne "obsolete") and (defined $product_ref->{$field . "_imported"}) and ($product_ref->{$field . "_imported"} eq $imported_product_ref->{$field})) {
+ # we had a bug that caused serving_size to be set to "serving", this value should be overridden
+ next if (($field eq "serving_size") and ($product_ref->{"serving_size"} eq "serving"));
$log->debug("skipping field that was already imported", { field => $field, imported_value => $imported_product_ref->{$field}, current_value => $product_ref->{$field} }) if $log->is_debug();
next;
}
@@ -1771,7 +1773,7 @@ sub import_csv_file($) {
$log->debug("storing product", { code => $code, product_id => $product_id, org_id => $org_id, Owner_id => $Owner_id }) if $log->is_debug();
- store_product($user_id, $product_ref, "Editing product (import) - " . $product_comment );
+ store_product($user_id, $product_ref, "Editing product (import) - " . ($product_comment || "") );
push @edited, $code;
$edited{$code}++;
diff --git a/lib/ProductOpener/ImportConvert.pm b/lib/ProductOpener/ImportConvert.pm
index 99dca01402734..99ac6e1436236 100644
--- a/lib/ProductOpener/ImportConvert.pm
+++ b/lib/ProductOpener/ImportConvert.pm
@@ -114,6 +114,7 @@ use Time::Local;
use Data::Dumper;
use Text::CSV;
use HTML::Entities qw(decode_entities);
+use XML::Rules;
%fields = ();
@fields = ();
@@ -291,14 +292,14 @@ sub assign_countries_for_product($$$) {
my $lcs_ref = shift;
my $default_country = shift;
- foreach my $possible_lc (keys %{$lcs_ref}) {
+ foreach my $possible_lc (sort keys %{$lcs_ref}) {
if (defined $product_ref->{"product_name_" . $possible_lc}) {
assign_value($product_ref,"countries", $lcs_ref->{$possible_lc});
$log->info("assign_countries_for_product: found lc - assigning value", { lc => $possible_lc, countries => $lcs_ref->{$possible_lc}}) if $log->is_info();
}
}
- if (not defined $product_ref->{countries}) {
+ if ((not defined $product_ref->{countries}) or ($product_ref->{countries} eq "")) {
assign_value($product_ref,"countries", $default_country);
$log->info("assign_countries_for_product: assigning default value", { countries => $default_country}) if $log->is_info();
}
@@ -536,14 +537,15 @@ sub remove_quantity_from_field($$) {
my $quantity = $product_ref->{quantity};
my $quantity_value = $product_ref->{quantity_value};
my $quantity_unit = $product_ref->{quantity_unit};
-
- $quantity =~ s/\(/\\\(/g;
- $quantity =~ s/\)/\\\)/g;
- $quantity =~ s/\[/\\\[/g;
- $quantity =~ s/\]/\\\]/g;
- if ((defined $quantity) and ($product_ref->{$field} =~ /\s*(\b|\s+)($quantity|(\(|\[)$quantity(\)|\]))\s*$/i)) {
- $product_ref->{$field} = $`;
+ if (defined $quantity) {
+ $quantity =~ s/\(/\\\(/g;
+ $quantity =~ s/\)/\\\)/g;
+ $quantity =~ s/\[/\\\[/g;
+ $quantity =~ s/\]/\\\]/g;
+ if ($product_ref->{$field} =~ /\s*(\b|\s+)($quantity|(\(|\[)$quantity(\)|\]))\s*$/i) {
+ $product_ref->{$field} = $`;
+ }
}
elsif ((defined $quantity_value) and (defined $quantity_unit) and ($product_ref->{$field} =~ /\s*\b\(?$quantity_value $quantity_unit\)?\s*$/i)) {
$product_ref->{$field} = $`;
@@ -870,6 +872,11 @@ sub clean_fields($) {
$log->debug("clean_fields", { field=>$field, value=>$product_ref->{$field} }) if $log->is_debug();
+ if (not defined $product_ref->{$field}) {
+ print STDERR "undefined value for field $field\n";
+ next;
+ }
+
# HTML entities
# e.g. Pâtes alimentaires cuites aromatisées au curcuma
if ($product_ref->{$field} =~ /\&/) {
@@ -1384,7 +1391,7 @@ sub load_xml_file($$$$) {
# multiple values in different languages
elsif ($source_tag eq '*') {
- foreach my $tag ( keys %{$current_tag}) {
+ foreach my $tag ( sort keys %{$current_tag}) {
my $tag_target = $target;
# special case where we have something like allergens.nuts = traces
@@ -1776,12 +1783,14 @@ sub get_list_of_files(@) {
-sub print_csv_file() {
+sub print_csv_file($) {
+
+ my $file_handle = shift;
- my $csv_out = Text::CSV->new ( { binary => 1 , sep_char => "\t" } ) # should set binary attribute.
+ my $csv_out = Text::CSV->new ( { binary => 1 , sep_char => "\t", eol => "\n", quote_space => 0 } ) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();
- print join("\t", @fields) . "\n";
+ $csv_out->print ($file_handle, \@fields) ;
foreach my $code (sort keys %products) {
@@ -1797,8 +1806,7 @@ sub print_csv_file() {
}
}
- $csv_out->print (*STDOUT, \@values) ;
- print "\n";
+ $csv_out->print ($file_handle, \@values) ;
print STDERR "code: $code\n";
}
diff --git a/lib/ProductOpener/ImportConvertCarrefourFrance.pm b/lib/ProductOpener/ImportConvertCarrefourFrance.pm
new file mode 100644
index 0000000000000..8a3509e32ea7b
--- /dev/null
+++ b/lib/ProductOpener/ImportConvertCarrefourFrance.pm
@@ -0,0 +1,584 @@
+# This file is part of Product Opener.
+#
+# Product Opener
+# Copyright (C) 2011-2020 Association Open Food Facts
+# Contact: contact@openfoodfacts.org
+# Address: 21 rue des Iles, 94100 Saint-Maur des Fossés, France
+#
+# Product Opener is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+# This package is used to convert CSV or XML file sent by producers to
+# an Open Food Facts CSV file that can be loaded with import_csv_file.pl / Import.pm
+
+=head1 NAME
+
+ProductOpener::ImportConvertCarrefourFrance - convert product data files from Carrefour France to the Open Food Facts format.
+
+=head1 SYNOPSIS
+
+C is called by convert_carrefour_data.pl
+
+It is a separate module so that it can be easily tested in t/import_convert_carrefour_france.t
+
+=head1 DESCRIPTION
+
+..
+
+=cut
+
+package ProductOpener::ImportConvertCarrefourFrance;
+
+use utf8;
+use Modern::Perl '2017';
+use Exporter qw< import >;
+
+use Log::Any qw($log);
+
+use Storable qw(dclone);
+use Text::Fuzzy;
+
+BEGIN
+{
+ use vars qw(@ISA @EXPORT_OK %EXPORT_TAGS);
+ @EXPORT_OK = qw(
+
+ &convert_carrefour_france_files
+
+ ); # symbols to export on request
+ %EXPORT_TAGS = (all => [@EXPORT_OK]);
+}
+
+use vars @EXPORT_OK ;
+
+use ProductOpener::ImportConvert qw/:all/;
+
+
+=head1 FUNCTIONS
+
+=head2 convert_carrefour_france_files ($file_handle, $files_ref)
+
+Convert a set of files provided by Carrefour France in OFF CSV format.
+
+=head3 Arguments
+
+=head4 file handle $file_handle
+
+=head4 reference to list of files $files_ref
+
+=cut
+
+sub convert_carrefour_france_files($$) {
+
+ my $file_handle = shift;
+ my $files_ref = shift;
+
+ # Warning some Carrefour XML files are broken with 2 .*
+
+ # command to fix them by removing the second one:
+
+ # find . -name "*.xml" -type f -exec sed -i 's/<\/TabNutXMLPF>.*/<\/TabNutXMLPF>/g' {} \;
+
+
+ %global_params = (
+ lc => 'fr',
+ # countries => "France", # -> will be assigned based on which language fields are present
+ brands => "Carrefour",
+ stores => "Carrefour",
+ );
+
+ my $xml_errors = 0;
+
+ # to count the different nutrients
+ my %nutrients = ();
+
+ foreach my $file (@$files_ref) {
+
+ my $code = undef;
+
+ # CSV file with categories, to be loaded after the XML files
+
+ if ($file =~ /nomenclature(.*).csv/i) {
+
+ my @csv_fields_mapping = (
+
+ ["[produit] ean", "code"],
+ ["[produit] nomenclature", "nomenclature_fr"],
+
+ );
+
+ load_csv_file({ file => $file, encoding => "UTF-8", separator => "\t", skip_non_existing_products => 1, csv_fields_mapping => \@csv_fields_mapping});
+ }
+
+ # Product data XML files
+
+ elsif ($file =~ /(\d+)_(\d+)_(\w+).xml/) {
+
+ $code = $2;
+ print STDERR "File $file - Code: $code\n";
+ }
+ else {
+ # print STDERR "Skipping file $file: unrecognized file name format\n";
+ next;
+ }
+
+ print STDERR "Reading file $file\n";
+
+ if ($file =~ /_text/) {
+ # General info about the product, ingredients
+
+ my @xml_rules = (
+
+ _default => sub {$_[0] => $_[1]->{_content}},
+ TextFramesXMLPF => "pass no content",
+ TextFrameXMLPF => "pass no content",
+ TextFrameLinesPF => "pass no content",
+ # TextFrameLinePF => sub { '%fields' => [$_[1]->{code_champs} => \%{$_[1]} ]},
+ TextFrameLinePF => sub { '%fields' => [$_[1]->{code_champs} => $_[1]->{languages} ]},
+ Languages => "pass no content",
+ LanguagePF => sub { '%languages' => [$_[1]->{language_name} => $_[1]->{Content}]},
+
+ #"b" => sub { $_[0] => "" . $_[1]->{_content} . ""},
+ #"u" => sub { $_[0] => "" . $_[1]->{_content} . ""},
+ #"em" => sub { $_[0] => "" . $_[1]->{_content} . ""},
+
+ #"b" => "pass",
+ #"strong" => "pass",
+ "b" => sub { return '' . $_[1]->{_content} . '' },
+ "strong" => sub { return '' . $_[1]->{_content} . '' },
+ "u" => sub { return '' . $_[1]->{_content} . '' },
+ "em" => "pass",
+
+ "br" => "== ",
+
+
+ lOrder => undef,
+ SetOrder => undef,
+ SetCode => undef,
+ SetName => undef,
+ Comments => undef,
+ ModifiedBy => undef,
+ TextFrameLineId => undef,
+ F=>undef,
+
+ );
+
+
+
+ my @xml_fields_mapping = (
+
+ # get the code first
+
+ # don't trust the EAN from the XML file, use the one from the file name instead
+ # -> sometimes different
+ #["fields.AL_CODE_EAN.*", "code"],
+
+ # we can have multiple files for the same code
+ # e.g. butter from Bretagne and from Normandie
+ # delete some fields from previously loaded versions
+
+ ["[delete_except]", "producer|emb_codes|origin|_value|_unit|brands|stores"],
+
+ ["fields.AL_CODE_EAN.*", "code_in_xml"],
+
+ ["ProductCode", "producer_product_id"],
+ ["fields.AL_DENOCOM.*", "product_name_*"],
+ #["fields.AL_BENEF_CONS.*", "_*"],
+ #["fields.AL_TXT_LIB_FACE.*", "_*"],
+ #["fields.AL_SPE_BIO.*", "_*"],
+ #["fields.AL_ALCO_VOL.*", "_*"],
+ #["fields.AL_PRESENTATION.*", "_*"],
+ ["fields.AL_DENOLEGAL.*", "generic_name_*"],
+ ["fields.AL_INGREDIENT.*", "ingredients_text_*"],
+ #["fields.AL_RUB_ORIGINE.*", "_*"],
+ #["fields.AL_NUTRI_N_AR.*", "_*"],
+ #["fields.AL_PREPA.*", "_*"],
+ ["fields.AL_CONSERV.*", "conservation_conditions_*"],
+ #["fields.AL_PRECAUTION.*", "_*"],
+ #["fields.AL_IDEE_RECET.*", "_*"],
+ #["fields.AL_LOGO_ECO.*", "_*"],
+ #["fields.AL_POIDS_NET.*", "_*"],
+ #["fields.AL_POIDS_EGOUTTE.*", "_*"],
+ #["fields.AL_CONTENANCE.*", "_*"],
+ #["fields.AL_POIDS_TOTAL.*", "_*"],
+ #["fields.AL_INFO_EMB.*", "_*"],
+ #["fields.AL_PAVE_SC.*", "_*"],
+ #["fields.AL_ADRESSFRN.*", "_*"],
+ #["fields.AL_EST_SANITAIRE.*", "_*"],
+ #["fields.AL_TXT_LIB_DOS.*", "_*"],
+ #["fields.AL_TXT_LIB_REG.*", "other_information_*"],
+ #["fields.AL_INFO_CONSERV.*", "_*"],
+
+ # We may have values in multiple languages, use FR
+ ["fields.AL_POIDS_NET.FR", "net_weight"],
+ ["fields.AL_POIDS_EGOUTTE.FR", "drained_weight"],
+ ["fields.AL_POIDS_TOTAL.FR", "total_weight"],
+ ["fields.AL_CONTENANCE.FR", "volume"],
+
+ ["fields.AL_RUB_ORIGINE.*", "origin_*"],
+
+ ["fields.AL_ADRESSFRN.*", "producer_*"],
+
+ ["fields.AL_EST_SANITAIRE.FR", "emb_codes"],
+
+ ["fields.AL_PAVE_SC.*", "customer_service_*"],
+
+ ["fields.AL_PREPA.*", "preparation_*"],
+ ["fields.AL_PRECAUTION.*", "warning_*"],
+ ["fields.AL_IDEE_RECET.*", "recipe_idea_*"],
+
+ ["fields.AL_TXT_LIB_REG.*", "other_information_*"],
+ ["fields.AL_TXT_LIB_FACE.*", "other_information_*"],
+ ["fields.AL_TXT_LIB_DOS.*", "other_information_*"],
+ ["fields.AL_BENEF_CONS.*", "other_information_*"],
+ ["fields.AL_OTHER_INFORMATION.*", "other_information_*"],
+
+ ["fields.AL_SPE_BIO.*", "spe_bio_*"],
+
+ ["fields.AL_BENEF_CONS.*", "benef_cons_*"],
+ ["fields.AL_TXT_LIB_FACE.*", "txt_lib_face_*"],
+ ["fields.AL_ALCO_VOL.*", "alco_vol_*"],
+ ["fields.AL_PRESENTATION.*", "presentation_*"],
+
+ ["fields.AL_NUTRI_N_AR.*", "nutri_n_ar_*"],
+
+ ["fields.AL_LOGO_ECO.*", "logo_eco_*"],
+
+
+
+ ["fields.AL_INFO_EMB.*", "info_emb_*"],
+
+
+ ["fields.AL_TXT_LIB_DOS.*", "txt_lib_dos_*"],
+ ["fields.AL_INFO_CONSERV.*", "info_conserv_*"],
+
+
+
+ );
+
+ $xml_errors += load_xml_file($file, \@xml_rules, \@xml_fields_mapping, undef);
+ }
+
+
+ elsif ($file =~ /_valNut/) {
+ # Nutrition facts
+
+ my @xml_rules = (
+
+ _default => sub {$_[0] => $_[1]->{_content}},
+ TabNutXMLPF => "pass no content",
+ TabNutColElements => "pass no content",
+ #TextFrameLinesPF => "pass no content",
+ #TextFrameLinePF => sub { '%fields' => [$_[1]->{code_champs} => $_[1]->{languages} ]},
+ TabNutColElement => sub { '%nutrients' => [$_[1]->{Type_Code} => $_[1]->{Units} ]},
+ Units => "pass no content",
+ Unit => sub { '@Units' => $_[1]},
+
+ "ARPercent,Description,Id,Label,Language,ModifiedBy,Name,ProductCode,RoundValue,TabNutCadrans,TabNutId,TabNutName,TabNutTemplateCode,TypeCode,Unit_value,lOrder,name" => "content",
+ #"LanguageTB,TabNutColElements,TabNutPhrases,TabNutXMLPF,Units,languages" => "no content",
+ #"TabNutColElement,TabNutPhrase,Unit" => "as array no content",
+
+
+ lOrder => undef,
+ SetOrder => undef,
+ SetCode => undef,
+ SetName => undef,
+ Comments => undef,
+ ModifiedBy => undef,
+ TextFrameLineId => undef,
+ F=>undef,
+
+ );
+
+
+
+ my @xml_fields_mapping = (
+
+ # get the code first
+
+ # don't trust the EAN from the XML file, use the one from the file name instead
+ # -> sometimes different
+ #["fields.AL_CODE_EAN.*", "code"],
+
+ ["ProductCode", "producer_product_id"],
+
+ ["nutrients.ENERKJ.[0].RoundValue", "nutriments.energy-kj_kJ"],
+ ["nutrients.ENERKC.[0].RoundValue", "nutriments.energy-kcal_kcal"],
+ ["nutrients.FAT.[0].RoundValue", "nutriments.fat_g"],
+ ["nutrients.FASAT.[0].RoundValue", "nutriments.saturated-fat_g"],
+ ["nutrients.CHOAVL.[0].RoundValue", "nutriments.carbohydrates_g"],
+ ["nutrients.SUGAR.[0].RoundValue", "nutriments.sugars_g"],
+ ["nutrients.FIBTG.[0].RoundValue", "nutriments.fiber_g"],
+ ["nutrients.PRO.[0].RoundValue", "nutriments.proteins_g"],
+ ["nutrients.SALTEQ.[0].RoundValue", "nutriments.salt_g"],
+
+
+ # unsure about units / values (lots of 0s)
+ # disabling:
+
+ ["nutrients.FAMSCIS.[0].RoundValue", "nutriments.monounsaturated-fat-disabled_g"],
+ ["nutrients.FAPUCIS.[0].RoundValue", "nutriments.polyunsaturated-fat-disabled_g"],
+ ["nutrients.POLYL.[0].RoundValue", "nutriments.polyols-disabled_g"],
+ ["nutrients.STARCH.[0].RoundValue", "nutriments.starch-disabled_g"],
+ ["nutrients.ACL.[0].RoundValue", "nutriments.alcohol-disabled_g"],
+ ["nutrients.CHO.[0].RoundValue", "nutriments.cholesterol-disabled_g"],
+ ["nutrients.AGO.[0].RoundValue", "nutriments.omega-3-fat-disabled_g"],
+ ["nutrients.LACS.[0].RoundValue", "nutriments.lactose-disabled_g"],
+
+ # vitamin C:
+ #
+ #ml
+ #ML
+ #100,00
+ #millilitre
+ #12
+ #15
+ #
+
+ ["nutrients.VITA.[0].RoundValue", "nutriments.vitamin-a-disabled_g"],
+ ["nutrients.VITC.[0].RoundValue", "nutriments.vitamin-c-disabled_g"],
+ ["nutrients.VITD.[0].RoundValue", "nutriments.vitamin-d-disabled_g"],
+ ["nutrients.VITE.[0].RoundValue", "nutriments.vitamin-e-disabled_g"],
+ ["nutrients.K.[0].RoundValue", "nutriments.potassium-disabled_g"],
+ ["nutrients.ZN.[0].RoundValue", "nutriments.zinc-disabled_g"],
+ ["nutrients.BIOT.[0].RoundValue", "nutriments.biotin-disabled_g"],
+ ["nutrients.MO.[0].RoundValue", "nutriments.molybdenum-disabled_g"],
+ ["nutrients.MN.[0].RoundValue", "nutriments.manganese-disabled_g"],
+ ["nutrients.FE.[0].RoundValue", "nutriments.iron-disabled_g"],
+ ["nutrients.MG.[0].RoundValue", "nutriments.magnesium-disabled_g"],
+ ["nutrients.P.[0].RoundValue", "nutriments.phosphorus-disabled_g"],
+ ["nutrients.NIA.[0].RoundValue", "nutriments.vitamin-pp-disabled_g"],
+ ["nutrients.CU.[0].RoundValue", "nutriments.copper-disabled_g"],
+ ["nutrients.CR.[0].RoundValue", "nutriments.chromium-disabled_g"],
+ ["nutrients.VITK.[0].RoundValue", "nutriments.vitamin-k-disabled_g"],
+ ["nutrients.SE.[0].RoundValue", "nutriments.selenium-disabled_g"],
+ ["nutrients.ID.[0].RoundValue", "nutriments.iodine-disabled_g"],
+ ["nutrients.FOLDFE.[0].RoundValue", "nutriments.folates-disabled_g"],
+ ["nutrients.VITB12.[0].RoundValue", "nutriments.vitamin-b12-disabled_g"],
+ ["nutrients.PANTAC.[0].RoundValue", "nutriments.pantothenic-acid-disabled_g"],
+ ["nutrients.VITB6.[0].RoundValue", "nutriments.vitamin-b6-disabled_g"],
+ ["nutrients.RIBF.[0].RoundValue", "nutriments.vitamin-b2-disabled_g"],
+ ["nutrients.THIA.[0].RoundValue", "nutriments.vitamin-b1-disabled_g"],
+ ["nutrients.FD.[0].RoundValue", "nutriments.fluoride-disabled_g"],
+ ["nutrients.CA.[0].RoundValue", "nutriments.calcium-disabled_g"],
+ ["nutrients.CLD.[0].RoundValue", "nutriments.chloride-disabled_g"],
+
+ # for waters? but present for other products . by L ?
+
+ #
+ #mg/L
+ #MCL
+ #1,00
+ #milligramme par litre
+ #7,000
+ #
+
+ ["nutrients.CAL.[0].RoundValue", "nutriments.calcium-disabled_mgl"],
+ ["nutrients.FDL.[0].RoundValue", "nutriments.fluoride-disabled_mgl"],
+ ["nutrients.FR.[0].RoundValue", "nutriments.fluoride-disabled_mgl"],
+ ["nutrients.CLDE.[0].RoundValue", "nutriments.chloride-disabled_mgl"],
+ ["nutrients.BCO.[0].RoundValue", "nutriments.bicarbonates-disabled_mgl"],
+ ["nutrients.NH.[0].RoundValue", "nutriments.ammonium-disabled_mgl"],
+ ["nutrients.NAL.[0].RoundValue", "nutriments.sodium-disabled_mgl"],
+ ["nutrients.SO.[0].RoundValue", "nutriments.sulfates-disabled_mgl"],
+ ["nutrients.NO.[0].RoundValue", "nutriments.nitrates-disabled_mgl"],
+ ["nutrients.KL.[0].RoundValue", "nutriments.potassium-disabled_mgl"],
+ ["nutrients.SIO.[0].RoundValue", "nutriments.silica-disabled_mgl"],
+ ["nutrients.MGL.[0].RoundValue", "nutriments.magnesium-disabled_mgl"],
+
+ # same thing as bicarbonates ?
+ ["nutrients.HCO.[0].RoundValue", "nutriments.hydrogenocarbonates-disabled_mgl"],
+
+ );
+
+ # To get the rules:
+
+ #use XML::Rules;
+ #use Data::Dump;
+ #print Data::Dump::dump(XML::Rules::inferRulesFromExample($file));
+
+
+ $xml_errors += load_xml_file($file, \@xml_rules, \@xml_fields_mapping, undef);
+
+ open(my $IN, "<:encoding(UTF-8)", $file);
+ my $xml = join('', (<$IN>));
+ close ($IN);
+
+ while ($xml =~ /Type_Code="(\w+)"/) {
+ $nutrients{$1}++;
+ $xml = $';
+ }
+ }
+ }
+
+
+
+
+
+ # Special processing for Carrefour data (before clean_fields_for_all_products)
+
+ foreach my $code (sort keys %products) {
+
+ my $product_ref = $products{$code};
+
+ if (defined $product_ref->{total_weight}) {
+
+ $product_ref->{total_weight} =~ s/(\[emetro\])|(\[zemetro\])/e/ig;
+
+ # + e métrologique
+ # (métrologique)
+ $product_ref->{total_weight} =~ s/(\+ )?e( ?([\[\(])?(métrologique|metrologique|metro|métro)([\]\)])?)?/e/ig;
+ $product_ref->{total_weight} =~ s/(\+ )?( ?([\[\(])?(métrologique|metrologique|metro|métro)([\]\)])?)/e/ig;
+
+ # poids net = poids égoutté = 450 g [zemetro]
+ # poids net : 240g (3x80ge) 2
+ # poids net égoutté : 150g[zemetro] 2
+ # poids net : 320g [zemetro] poids net égoutté : 190g contenance : 370ml 2
+ # poids net total : 200g [zemetro] poids net égoutté : 140g contenance 212ml
+
+ }
+
+ if ((defined $product_ref->{emb_codes}) and ($product_ref->{emb_codes} =~ /fabriqu|elabor|conditionn/i)) {
+
+ $product_ref->{producer_fr} = $product_ref->{emb_codes};
+ delete $product_ref->{emb_codes};
+ }
+ }
+
+
+ # Clean and normalize fields
+
+ clean_fields_for_all_products();
+
+
+ # Special processing for Carrefour data (after clean_fields_for_all_products)
+
+ foreach my $code (sort keys %products) {
+
+ my $product_ref = $products{$code};
+
+ assign_main_language_of_product($product_ref, ['fr','es','it','nl','de','en','ro','pl'], "fr");
+
+ clean_weights($product_ref); # needs the language code
+
+ assign_countries_for_product($product_ref,
+ {
+ fr => "en:france",
+ es => "en:spain",
+ it => "en:italy",
+ de => "en:germany",
+ ro => "en:romania",
+ pl => "en:poland",
+ }
+ , "en:france");
+
+ # categories from the [Produit] Nomenclature field of the Nomenclature .csv file
+
+ # Conserves de mais -> Mais en conserve
+ if (defined $product_ref->{nomenclature_fr}) {
+ $product_ref->{nomenclature_fr} =~ s/^conserve(s)?( de| d')?(.*)$/$3 en conserve/i;
+ $product_ref->{nomenclature_fr} =~ s/^autre(s) //i;
+ }
+
+ # Make sure we only have emb codes and not some other text
+ if (defined $product_ref->{emb_codes}) {
+ # too many letters -> word instead of code
+ if ( $product_ref->{emb_codes} =~ /[a-zA-Z]{8}/ ) {
+ delete $product_ref->{emb_codes};
+ }
+ }
+
+ match_taxonomy_tags($product_ref, "nomenclature_fr", "categories",
+ {
+ # split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
+ # stopwords =>
+ }
+ );
+
+ # also try the product name
+ match_taxonomy_tags($product_ref, "product_name_fr", "categories",
+ {
+ # split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
+ # stopwords =>
+ }
+ );
+
+ # logo ab
+ # logo bio européen : nl-bio-01 agriculture pays bas 1
+
+ # try to parse some fields to find tags
+ match_taxonomy_tags($product_ref, "spe_bio_fr", "labels",
+ {
+ split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
+ # stopwords =>
+ }
+ );
+
+ match_taxonomy_tags($product_ref, "other_information_fr", "labels",
+ {
+ split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
+ # stopwords =>
+ }
+ );
+
+ # certifié fsc
+ match_taxonomy_tags($product_ref, "info_emb_fr", "labels",
+ {
+ split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
+ # stopwords =>
+ }
+ );
+
+
+ # Fabriqué en France par EMB 29181 pour Interdis.
+ # Fabriqué en France pour EMB 24381 pour Interdis.
+ # Elaboré par EMB 14167A pour INTERDIS
+ # Fabriqué en France par EMB 29181 (F) ou EMB 86092A (G) pour Interdis.
+ # Fabriqué par A = EMB 38080A ou / C = EMB 49058 ou / V = EMB 80120A ou / S = EMB 26124 (voir lettre figurant sur l'étiquette à l'avant du sachet) pour Interdis.
+
+ match_taxonomy_tags($product_ref, "producer_fr", "emb_codes",
+ {
+ split => ',|( \/ )|\r|\n|\+|:|;|=|\(|\)|\b(et|par|pour|ou)\b',
+ # stopwords =>
+ }
+ );
+
+ #
+ #
+ #
+ #pH 7,2. Résidu sec à 180°C : 1280 mg/L.
+ #
+ #Eau soumise à une technique d’adsorption autorisée.
+ #Autorisation ministérielle du 25 août 2003.
+
+ }
+
+ print_csv_file($file_handle);
+
+ print_stats();
+
+ print STDERR "$xml_errors xml errors\n";
+
+ foreach my $file (@xml_errors) {
+ #print STDERR $file . "\n";
+ }
+
+ foreach my $nutrient (sort { $nutrients{$b} <=> $nutrients{$a} } keys %nutrients) {
+ #print STDERR $nutrient . "\t" . $nutrients{$nutrient} . "\n";
+ }
+}
+
+
+
+1;
+
diff --git a/lib/ProductOpener/Products.pm b/lib/ProductOpener/Products.pm
index 8991dfbb55e37..3f3bf7dfaa85c 100644
--- a/lib/ProductOpener/Products.pm
+++ b/lib/ProductOpener/Products.pm
@@ -635,7 +635,7 @@ sub init_product($$$$) {
require ProductOpener::GeoIP;
$country = ProductOpener::GeoIP::get_country_for_ip(remote_addr());
}
- else {
+ elsif (defined $countryid) {
$country = $countryid;
$country =~ s/^en://;
}
diff --git a/scripts/convert_carrefour_data.pl b/scripts/convert_carrefour_data.pl
index bfb83c666a7ee..1db88517dd302 100755
--- a/scripts/convert_carrefour_data.pl
+++ b/scripts/convert_carrefour_data.pl
@@ -25,10 +25,8 @@
use CGI::Carp qw(fatalsToBrowser);
-binmode(STDOUT, ":encoding(UTF-8)");
-binmode(STDERR, ":encoding(UTF-8)");
-
use ProductOpener::ImportConvert qw/:all/;
+use ProductOpener::ImportConvertCarrefourFrance qw/:all/;
use CGI qw/:cgi :form escapeHTML/;
use URI::Escape::XS;
@@ -40,504 +38,10 @@
use Log::Any::Adapter ('Stderr');
-# Warning some Carrefour XML files are broken with 2 .*
-
-# command to fix them by removing the second one:
-
-# find . -name "*.xml" -type f -exec sed -i 's/<\/TabNutXMLPF>.*/<\/TabNutXMLPF>/g' {} \;
-
-
-%global_params = (
- lc => 'fr',
-# countries => "France", # -> will be assigned based on which language fields are present
- brands => "Carrefour",
- stores => "Carrefour",
-);
+binmode(STDOUT, ":encoding(UTF-8)");
+binmode(STDERR, ":encoding(UTF-8)");
+my $file_handle = *STDOUT;
my @files = get_list_of_files(@ARGV);
-my $xml_errors = 0;
-
-# to count the different nutrients
-my %nutrients = ();
-
-foreach my $file (@files) {
-
- my $code = undef;
-
- # CSV file with categories, to be loaded after the XML files
-
- if ($file =~ /nomenclature(.*).csv/i) {
-
- my @csv_fields_mapping = (
-
-["[produit] ean", "code"],
-["[produit] nomenclature", "nomenclature_fr"],
-
-);
-
- load_csv_file({ file => $file, encoding => "UTF-8", separator => "\t", skip_non_existing_products => 1, csv_fields_mapping => \@csv_fields_mapping});
- }
-
- # Product data XML files
-
- elsif ($file =~ /(\d+)_(\d+)_(\w+).xml/) {
-
- $code = $2;
- print STDERR "File $file - Code: $code\n";
- }
- else {
- # print STDERR "Skipping file $file: unrecognized file name format\n";
- next;
- }
-
- print STDERR "Reading file $file\n";
-
- if ($file =~ /_text/) {
- # General info about the product, ingredients
-
- my @xml_rules = (
-
-_default => sub {$_[0] => $_[1]->{_content}},
-TextFramesXMLPF => "pass no content",
-TextFrameXMLPF => "pass no content",
-TextFrameLinesPF => "pass no content",
-# TextFrameLinePF => sub { '%fields' => [$_[1]->{code_champs} => \%{$_[1]} ]},
-TextFrameLinePF => sub { '%fields' => [$_[1]->{code_champs} => $_[1]->{languages} ]},
-Languages => "pass no content",
-LanguagePF => sub { '%languages' => [$_[1]->{language_name} => $_[1]->{Content}]},
-
-#"b" => sub { $_[0] => "" . $_[1]->{_content} . ""},
-#"u" => sub { $_[0] => "" . $_[1]->{_content} . ""},
-#"em" => sub { $_[0] => "" . $_[1]->{_content} . ""},
-
-#"b" => "pass",
-#"strong" => "pass",
-"b" => sub { return '' . $_[1]->{_content} . '' },
-"strong" => sub { return '' . $_[1]->{_content} . '' },
-"u" => sub { return '' . $_[1]->{_content} . '' },
-"em" => "pass",
-
-"br" => "== ",
-
-
-lOrder => undef,
-SetOrder => undef,
-SetCode => undef,
-SetName => undef,
-Comments => undef,
-ModifiedBy => undef,
-TextFrameLineId => undef,
-F=>undef,
-
-);
-
-
-
- my @xml_fields_mapping = (
-
- # get the code first
-
- # don't trust the EAN from the XML file, use the one from the file name instead
- # -> sometimes different
- #["fields.AL_CODE_EAN.*", "code"],
-
- # we can have multiple files for the same code
- # e.g. butter from Bretagne and from Normandie
- # delete some fields from previously loaded versions
-
- ["[delete_except]", "producer|emb_codes|origin|_value|_unit|brands|stores"],
-
- ["fields.AL_CODE_EAN.*", "code_in_xml"],
-
- ["ProductCode", "producer_product_id"],
- ["fields.AL_DENOCOM.*", "product_name_*"],
- #["fields.AL_BENEF_CONS.*", "_*"],
- #["fields.AL_TXT_LIB_FACE.*", "_*"],
- #["fields.AL_SPE_BIO.*", "_*"],
- #["fields.AL_ALCO_VOL.*", "_*"],
- #["fields.AL_PRESENTATION.*", "_*"],
- ["fields.AL_DENOLEGAL.*", "generic_name_*"],
- ["fields.AL_INGREDIENT.*", "ingredients_text_*"],
- #["fields.AL_RUB_ORIGINE.*", "_*"],
- #["fields.AL_NUTRI_N_AR.*", "_*"],
- #["fields.AL_PREPA.*", "_*"],
- ["fields.AL_CONSERV.*", "conservation_conditions_*"],
- #["fields.AL_PRECAUTION.*", "_*"],
- #["fields.AL_IDEE_RECET.*", "_*"],
- #["fields.AL_LOGO_ECO.*", "_*"],
- #["fields.AL_POIDS_NET.*", "_*"],
- #["fields.AL_POIDS_EGOUTTE.*", "_*"],
- #["fields.AL_CONTENANCE.*", "_*"],
- #["fields.AL_POIDS_TOTAL.*", "_*"],
- #["fields.AL_INFO_EMB.*", "_*"],
- #["fields.AL_PAVE_SC.*", "_*"],
- #["fields.AL_ADRESSFRN.*", "_*"],
- #["fields.AL_EST_SANITAIRE.*", "_*"],
- #["fields.AL_TXT_LIB_DOS.*", "_*"],
- #["fields.AL_TXT_LIB_REG.*", "other_information_*"],
- #["fields.AL_INFO_CONSERV.*", "_*"],
-
- ["fields.AL_POIDS_NET.*", "net_weight"],
- ["fields.AL_POIDS_EGOUTTE.*", "drained_weight"],
- ["fields.AL_POIDS_TOTAL.*", "total_weight"],
- ["fields.AL_CONTENANCE.*", "volume"],
-
- ["fields.AL_RUB_ORIGINE.*", "origin_*"],
-
- ["fields.AL_ADRESSFRN.*", "producer_*"],
-
- ["fields.AL_EST_SANITAIRE.*", "emb_codes"],
-
- ["fields.AL_PAVE_SC.*", "customer_service_*"],
-
- ["fields.AL_PREPA.*", "preparation_*"],
- ["fields.AL_PRECAUTION.*", "warning_*"],
- ["fields.AL_IDEE_RECET.*", "recipe_idea_*"],
-
- ["fields.AL_TXT_LIB_REG.*", "other_information_*"],
- ["fields.AL_TXT_LIB_FACE.*", "other_information_*"],
- ["fields.AL_TXT_LIB_DOS.*", "other_information_*"],
- ["fields.AL_BENEF_CONS.*", "other_information_*"],
- ["fields.AL_OTHER_INFORMATION.*", "other_information_*"],
-
- ["fields.AL_SPE_BIO.*", "spe_bio_*"],
-
- ["fields.AL_BENEF_CONS.*", "benef_cons_*"],
- ["fields.AL_TXT_LIB_FACE.*", "txt_lib_face_*"],
- ["fields.AL_ALCO_VOL.*", "alco_vol_*"],
- ["fields.AL_PRESENTATION.*", "presentation_*"],
-
- ["fields.AL_NUTRI_N_AR.*", "nutri_n_ar_*"],
-
- ["fields.AL_LOGO_ECO.*", "logo_eco_*"],
-
-
-
- ["fields.AL_INFO_EMB.*", "info_emb_*"],
-
-
- ["fields.AL_TXT_LIB_DOS.*", "txt_lib_dos_*"],
- ["fields.AL_INFO_CONSERV.*", "info_conserv_*"],
-
-
-
- );
-
- $xml_errors += load_xml_file($file, \@xml_rules, \@xml_fields_mapping, undef);
- }
-
-
- elsif ($file =~ /_valNut/) {
- # Nutrition facts
-
- my @xml_rules = (
-
-_default => sub {$_[0] => $_[1]->{_content}},
-TabNutXMLPF => "pass no content",
-TabNutColElements => "pass no content",
-#TextFrameLinesPF => "pass no content",
-#TextFrameLinePF => sub { '%fields' => [$_[1]->{code_champs} => $_[1]->{languages} ]},
-TabNutColElement => sub { '%nutrients' => [$_[1]->{Type_Code} => $_[1]->{Units} ]},
-Units => "pass no content",
-Unit => sub { '@Units' => $_[1]},
-
-"ARPercent,Description,Id,Label,Language,ModifiedBy,Name,ProductCode,RoundValue,TabNutCadrans,TabNutId,TabNutName,TabNutTemplateCode,TypeCode,Unit_value,lOrder,name" => "content",
-#"LanguageTB,TabNutColElements,TabNutPhrases,TabNutXMLPF,Units,languages" => "no content",
- #"TabNutColElement,TabNutPhrase,Unit" => "as array no content",
-
-
-lOrder => undef,
-SetOrder => undef,
-SetCode => undef,
-SetName => undef,
-Comments => undef,
-ModifiedBy => undef,
-TextFrameLineId => undef,
-F=>undef,
-
-);
-
-
-
- my @xml_fields_mapping = (
-
- # get the code first
-
- # don't trust the EAN from the XML file, use the one from the file name instead
- # -> sometimes different
- #["fields.AL_CODE_EAN.*", "code"],
-
- ["ProductCode", "producer_product_id"],
-
- ["nutrients.ENERKJ.[0].RoundValue", "nutriments.energy-kj_kJ"],
- ["nutrients.ENERKC.[0].RoundValue", "nutriments.energy-kcal_kcal"],
- ["nutrients.FAT.[0].RoundValue", "nutriments.fat_g"],
- ["nutrients.FASAT.[0].RoundValue", "nutriments.saturated-fat_g"],
- ["nutrients.CHOAVL.[0].RoundValue", "nutriments.carbohydrates_g"],
- ["nutrients.SUGAR.[0].RoundValue", "nutriments.sugars_g"],
- ["nutrients.FIBTG.[0].RoundValue", "nutriments.fiber_g"],
- ["nutrients.PRO.[0].RoundValue", "nutriments.proteins_g"],
- ["nutrients.SALTEQ.[0].RoundValue", "nutriments.salt_g"],
-
-
-# unsure about units / values (lots of 0s)
-# disabling:
-
- ["nutrients.FAMSCIS.[0].RoundValue", "nutriments.monounsaturated-fat-disabled_g"],
- ["nutrients.FAPUCIS.[0].RoundValue", "nutriments.polyunsaturated-fat-disabled_g"],
- ["nutrients.POLYL.[0].RoundValue", "nutriments.polyols-disabled_g"],
- ["nutrients.STARCH.[0].RoundValue", "nutriments.starch-disabled_g"],
- ["nutrients.ACL.[0].RoundValue", "nutriments.alcohol-disabled_g"],
- ["nutrients.CHO.[0].RoundValue", "nutriments.cholesterol-disabled_g"],
- ["nutrients.AGO.[0].RoundValue", "nutriments.omega-3-fat-disabled_g"],
- ["nutrients.LACS.[0].RoundValue", "nutriments.lactose-disabled_g"],
-
-# vitamin C:
-#
-#ml
-#ML
-#100,00
-#millilitre
-#12
-#15
-#
-
- ["nutrients.VITA.[0].RoundValue", "nutriments.vitamin-a-disabled_g"],
- ["nutrients.VITC.[0].RoundValue", "nutriments.vitamin-c-disabled_g"],
- ["nutrients.VITD.[0].RoundValue", "nutriments.vitamin-d-disabled_g"],
- ["nutrients.VITE.[0].RoundValue", "nutriments.vitamin-e-disabled_g"],
- ["nutrients.K.[0].RoundValue", "nutriments.potassium-disabled_g"],
- ["nutrients.ZN.[0].RoundValue", "nutriments.zinc-disabled_g"],
- ["nutrients.BIOT.[0].RoundValue", "nutriments.biotin-disabled_g"],
- ["nutrients.MO.[0].RoundValue", "nutriments.molybdenum-disabled_g"],
- ["nutrients.MN.[0].RoundValue", "nutriments.manganese-disabled_g"],
- ["nutrients.FE.[0].RoundValue", "nutriments.iron-disabled_g"],
- ["nutrients.MG.[0].RoundValue", "nutriments.magnesium-disabled_g"],
- ["nutrients.P.[0].RoundValue", "nutriments.phosphorus-disabled_g"],
- ["nutrients.NIA.[0].RoundValue", "nutriments.vitamin-pp-disabled_g"],
- ["nutrients.CU.[0].RoundValue", "nutriments.copper-disabled_g"],
- ["nutrients.CR.[0].RoundValue", "nutriments.chromium-disabled_g"],
- ["nutrients.VITK.[0].RoundValue", "nutriments.vitamin-k-disabled_g"],
- ["nutrients.SE.[0].RoundValue", "nutriments.selenium-disabled_g"],
- ["nutrients.ID.[0].RoundValue", "nutriments.iodine-disabled_g"],
- ["nutrients.FOLDFE.[0].RoundValue", "nutriments.folates-disabled_g"],
- ["nutrients.VITB12.[0].RoundValue", "nutriments.vitamin-b12-disabled_g"],
- ["nutrients.PANTAC.[0].RoundValue", "nutriments.pantothenic-acid-disabled_g"],
- ["nutrients.VITB6.[0].RoundValue", "nutriments.vitamin-b6-disabled_g"],
- ["nutrients.RIBF.[0].RoundValue", "nutriments.vitamin-b2-disabled_g"],
- ["nutrients.THIA.[0].RoundValue", "nutriments.vitamin-b1-disabled_g"],
- ["nutrients.FD.[0].RoundValue", "nutriments.fluoride-disabled_g"],
- ["nutrients.CA.[0].RoundValue", "nutriments.calcium-disabled_g"],
- ["nutrients.CLD.[0].RoundValue", "nutriments.chloride-disabled_g"],
-
- # for waters? but present for other products . by L ?
-
-#
-#mg/L
-#MCL
-#1,00
-#milligramme par litre
-#7,000
-#
-
- ["nutrients.CAL.[0].RoundValue", "nutriments.calcium-disabled_mgl"],
- ["nutrients.FDL.[0].RoundValue", "nutriments.fluoride-disabled_mgl"],
- ["nutrients.FR.[0].RoundValue", "nutriments.fluoride-disabled_mgl"],
- ["nutrients.CLDE.[0].RoundValue", "nutriments.chloride-disabled_mgl"],
- ["nutrients.BCO.[0].RoundValue", "nutriments.bicarbonates-disabled_mgl"],
- ["nutrients.NH.[0].RoundValue", "nutriments.ammonium-disabled_mgl"],
- ["nutrients.NAL.[0].RoundValue", "nutriments.sodium-disabled_mgl"],
- ["nutrients.SO.[0].RoundValue", "nutriments.sulfates-disabled_mgl"],
- ["nutrients.NO.[0].RoundValue", "nutriments.nitrates-disabled_mgl"],
- ["nutrients.KL.[0].RoundValue", "nutriments.potassium-disabled_mgl"],
- ["nutrients.SIO.[0].RoundValue", "nutriments.silica-disabled_mgl"],
- ["nutrients.MGL.[0].RoundValue", "nutriments.magnesium-disabled_mgl"],
-
- # same thing as bicarbonates ?
- ["nutrients.HCO.[0].RoundValue", "nutriments.hydrogenocarbonates-disabled_mgl"],
-
- );
-
- # To get the rules:
-
- #use XML::Rules;
- #use Data::Dump;
- #print Data::Dump::dump(XML::Rules::inferRulesFromExample($file));
-
-
- $xml_errors += load_xml_file($file, \@xml_rules, \@xml_fields_mapping, undef);
-
- open(my $IN, "<:encoding(UTF-8)", $file);
- my $xml = join('', (<$IN>));
- close ($IN);
-
- while ($xml =~ /Type_Code="(\w+)"/) {
- $nutrients{$1}++;
- $xml = $';
- }
- }
-}
-
-
-
-
-
-# Special processing for Carrefour data (before clean_fields_for_all_products)
-
-foreach my $code (sort keys %products) {
-
- if (defined $products{$code}{total_weight}) {
-
- $products{$code}{total_weight} =~ s/(\[emetro\])|(\[zemetro\])/e/ig;
-
- # + e métrologique
- # (métrologique)
- $products{$code}{total_weight} =~ s/(\+ )?e( ?([\[\(])?(métrologique|metrologique|metro|métro)([\]\)])?)?/e/ig;
- $products{$code}{total_weight} =~ s/(\+ )?( ?([\[\(])?(métrologique|metrologique|metro|métro)([\]\)])?)/e/ig;
-
- # poids net = poids égoutté = 450 g [zemetro]
- # poids net : 240g (3x80ge) 2
- # poids net égoutté : 150g[zemetro] 2
- # poids net : 320g [zemetro] poids net égoutté : 190g contenance : 370ml 2
- # poids net total : 200g [zemetro] poids net égoutté : 140g contenance 212ml
-
- }
-
- if ((defined $products{$code}{emb_codes}) and ($products{$code}{emb_codes} =~ /fabriqu|elabor|conditionn/i)) {
-
- $products{$code}{producer_fr} = $products{$code}{emb_codes};
- delete $products{$code}{emb_codes};
- }
-}
-
-
-# Clean and normalize fields
-
-clean_fields_for_all_products();
-
-
-# Special processing for Carrefour data (after clean_fields_for_all_products)
-
-foreach my $code (sort keys %products) {
-
- my $product_ref = $products{$code};
-
- print STDERR "emb_codes : " . $product_ref->{emb_codes} . "\n";
-
- assign_main_language_of_product($product_ref, ['fr','es','it','nl','de','en','ro','pl'], "fr");
-
- clean_weights($product_ref); # needs the language code
-
- assign_countries_for_product($product_ref,
- {
- fr => "en:france",
- es => "en:spain",
- it => "en:italy",
- de => "en:germany",
- ro => "en:romania",
- pl => "en:poland",
- }
- , "en:france");
-
-
- # categories from the [Produit] Nomenclature field of the Nomenclature .csv file
-
- # Conserves de mais -> Mais en conserve
- if (defined $product_ref->{nomenclature_fr}) {
- $product_ref->{nomenclature_fr} =~ s/^conserve(s)?( de| d')?(.*)$/$3 en conserve/i;
- $product_ref->{nomenclature_fr} =~ s/^autre(s) //i;
- }
-
- print STDERR "emb_codes : " . $product_ref->{emb_codes} . "\n";
-
- # Make sure we only have emb codes and not some other text
- if (defined $product_ref->{emb_codes}) {
- # too many letters -> word instead of code
- if ( $product_ref->{emb_codes} =~ /[a-zA-Z]{8}/ ) {
- delete $product_ref->{emb_codes};
- }
- }
-
- print STDERR "emb_codes : " . $product_ref->{emb_codes} . "\n";
-
- match_taxonomy_tags($product_ref, "nomenclature_fr", "categories",
- {
- # split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
- # stopwords =>
- }
- );
-
- # also try the product name
- match_taxonomy_tags($product_ref, "product_name_fr", "categories",
- {
- # split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
- # stopwords =>
- }
- );
-
- # logo ab
- # logo bio européen : nl-bio-01 agriculture pays bas 1
-
- # try to parse some fields to find tags
- match_taxonomy_tags($product_ref, "spe_bio_fr", "labels",
- {
- split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
- # stopwords =>
- }
- );
-
- match_taxonomy_tags($product_ref, "other_information_fr", "labels",
- {
- split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
- # stopwords =>
- }
- );
-
- # certifié fsc
- match_taxonomy_tags($product_ref, "info_emb_fr", "labels",
- {
- split => ',|\/|\r|\n|\+|:|;|\b(logo|picto)\b',
- # stopwords =>
- }
- );
-
-
- # Fabriqué en France par EMB 29181 pour Interdis.
- # Fabriqué en France pour EMB 24381 pour Interdis.
- # Elaboré par EMB 14167A pour INTERDIS
- # Fabriqué en France par EMB 29181 (F) ou EMB 86092A (G) pour Interdis.
- # Fabriqué par A = EMB 38080A ou / C = EMB 49058 ou / V = EMB 80120A ou / S = EMB 26124 (voir lettre figurant sur l'étiquette à l'avant du sachet) pour Interdis.
-
- match_taxonomy_tags($product_ref, "producer_fr", "emb_codes",
- {
- split => ',|( \/ )|\r|\n|\+|:|;|=|\(|\)|\b(et|par|pour|ou)\b',
- # stopwords =>
- }
- );
-
- print STDERR "emb_codes : " . $product_ref->{emb_codes} . "\n";
-
-#
-#
-#
-#pH 7,2. Résidu sec à 180°C : 1280 mg/L.
-#
-#Eau soumise à une technique d’adsorption autorisée.
-#Autorisation ministérielle du 25 août 2003.
-
-}
-
-print_csv_file();
-
-print_stats();
-
-print STDERR "$xml_errors xml errors\n";
-
-foreach my $file (@xml_errors) {
- #print STDERR $file . "\n";
-}
-
-foreach my $nutrient (sort { $nutrients{$b} <=> $nutrients{$a} } keys %nutrients) {
- #print STDERR $nutrient . "\t" . $nutrients{$nutrient} . "\n";
-}
+convert_carrefour_france_files($file_handle, \@files);
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3245390028754.json b/t/expected_test_results/import_convert_carrefour_france_export/3245390028754.json
new file mode 100644
index 0000000000000..c2d89503d434e
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3245390028754.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Œufs, Gluten, Lait",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "58",
+ "categories" : "",
+ "code" : "3245390028754",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "Conservation : A consommer de préférence avant la date figurant sur l'emballage. A conserver à l'abri de la chaleur et de l'humidité.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "399",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "1676",
+ "energy_unit" : "kJ",
+ "energy_value" : "1676",
+ "fat_unit" : "g",
+ "fat_value" : "16",
+ "fiber_unit" : "g",
+ "fiber_value" : "2.4",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "Gâteau breton fourré à la crème de pruneaux.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "Farine de _blé_*,crème de pruneaux 26% (purée de pruneaux* 17%, sucre*), sucre*, _beurre_* 18%, _oeufs_ frais*, jaunes d'_oeufs_ frais*, poudres à lever: diphosphates et carbonates de sodium (contient _blé_), sel*. *Tous ces ingrédients sont d'origine française.\nPeut contenir des traces de soja, sésame et fruits à coque.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "Fabriqué par Biscuiterie Le Goff - 29600 Saint Martin des Champs pour Interdis",
+ "producer_nl" : "",
+ "producer_product_id" : "12334",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "Gâteau breton à la crème de pruneaux",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "4.6",
+ "quantity" : "400 g",
+ "salt_unit" : "g",
+ "salt_value" : "0.62",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "10",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.248",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "35",
+ "traces" : "Fruits à coque, Graines de sésame, Soja",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3245414671133.json b/t/expected_test_results/import_convert_carrefour_france_export/3245414671133.json
new file mode 100644
index 0000000000000..7600785f47374
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3245414671133.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Gluten, Lait, Moutarde, Graines de sésame, Soja, Anhydride sulfureux et sulfites",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "22",
+ "categories" : "Sandwichs, Cheeseburgers",
+ "code" : "3245414671133",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Conservar en un congelador*** (o ****) a -18 ºC. Atención, no volver a congelar una vez descongelado.\nConsumir preferentemente antes de la fecha indicada en el lateral del envase.",
+ "conservation_conditions_fr" : "À conserver dans un congélateur *** (ou ****) à -18°C. Attention, ne pas recongeler après décongélation. \nPour une dégustation optimale, à consommer de préférence avant la date indiquée sur le côté de la boîte.",
+ "conservation_conditions_it" : "Conservare in congelatore *** (o ****) a -18°C.\nAttenzione, non ricongelare dopo lo scongelamento.\nDa consumarsi preferibilmente entro la data indicata sul lato della confezione.",
+ "conservation_conditions_nl" : "Te bewaren in een diepvriezer*** (of ****) op -18°C. Na ontdooiing niet opnieuw invriezen.\nTen minste houdbaar tot de datum vermeld op de zijkant van de doos.",
+ "conservation_conditions_pl" : "Przechowywać w zamrażalniku *** (lub ****) w temperaturze -18°C. Uwaga, nie zamrażać ponownie po rozmrożeniu. Najlepiej spożyć przed datą wskazaną na boku pudełka.",
+ "conservation_conditions_ro" : "A se păstra la congelator *** (sau ****) la max. -18 °C. Atenție, a nu se recongela după decongelare.\nA se consuma de preferință înainte de data indicată pe partea laterală a cutiei.",
+ "countries" : "France, Italie, Pologne, Roumanie, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_nl" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_pl" : "Interdis – TSA 91431 – 91343 MASSY Cedex – France",
+ "customer_service_ro" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "data_sources" : "",
+ "emb_codes" : "FR 03.315.001 EC",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "258",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "1080",
+ "energy_unit" : "kJ",
+ "energy_value" : "1080",
+ "fat_unit" : "g",
+ "fat_value" : "13",
+ "fiber_unit" : "g",
+ "fiber_value" : "2",
+ "generic_name_en" : "",
+ "generic_name_es" : "Preparación compuesta de pan especial, preparado de carne picada cocida sazonada que contiene proteínas de soja, de salsa y queso fundido - Ultracongelado",
+ "generic_name_fr" : "Préparations composées de pain spécial, de préparation de viande de bœuf hachée cuite assaisonnée contenant des protéines de soja, de sauce et de fromage fondu - Surgelé",
+ "generic_name_it" : "Preparazione a base di pane, preparazione alimentare di carne macinata di manzo cotta condita, contenente proteine di soia, salsa e formaggio fuso - Surgelato",
+ "generic_name_nl" : "Bereidingen samengesteld uit speciaal brood, gekruide en gegaarde vleesbereiding van gehakt rundvlees met soja-eiwitten, saus en smeltkaas - Diepvries",
+ "generic_name_pl" : "Przetwory składające się ze specjalnego chleba, mielonego, gotowanego i przyprawionego wyrobu z mięsa wołowego zawierającego białko sojowe, sos i ser topiony – Mrożone",
+ "generic_name_ro" : "Preparate compuse din pâine specială, preparat din carne de vită tocată gătită, condimentată, cu adaos de proteine din soia, sos și brânză topită - Congelate rapid.",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "Pan especial 44% (harina de _trigo_, agua, aceite de colza, dextrosa, levadura, _gluten de trigo_, semillas de _sésamo_ 0,5%, sal, emulgente: monoglicéridos y diglicéridos de ácidos grasos, harina de habas, agente de tratamiento de la harina: ácido ascórbico), carne de vacuno 19%, salsa 14% (agua, _mostaza_ [agua, vinagre de alcohol, semillas de _mostaza_, sal, acidulante: ácido cítrico, azúcar, cúrcuma, antioxidante: metabisulfito potásico, aromas naturales], concentrado de tomate, azúcar, aceite de colza, cebollas, pepinillos [pepinillos, sulfitos, endurecedor: E509], almidón modificado de maíz, vinagre de alcohol, sal), _queso_ fundido 10% (_queso_, agua, _mantequilla_, almidón modificado de patata, proteínas de la _leche_, sales de fundido: citratos de sodio, sal, colorantes: carotenos y extracto de pimentón), proteínas de _soja_ rehidratadas 7,7%, agua, proteínas de _soja_ 0,6%, fibras de patata, sal, aromas. Carne de vacuno origen Francia.\n\nEste cheeseburger contiene 32% de preparación de carne molida cocida sazonada que contiene proteínas de soja.",
+ "ingredients_text_fr" : "Pain spécial 44% (farine de _blé_, eau, huile de colza, dextrose, levure, _gluten de blé_, graines de _sésame_ 0,5%, sel, émulsifiant : mono et diglycérides d'acides gras, farine de fève, agent de traitement de la farine : acide ascorbique), viande de boeuf 19%, sauce 14% (eau, _moutarde_ [eau, vinaigre d'alcool, graines de _moutarde_, sel, acidifiant : acide citrique, sucre, curcuma, antioxydant : disulfite de potassium, arômes naturels], concentré de tomates, sucre, huile de colza, oignons, cornichons [cornichons, sulfites, affermissant : E509], amidon modifié de maïs, vinaigre d'alcool, sel), _fromage_ fondu 10% (_fromage_, eau, _beurre_, amidon modifié de pomme de terre, protéines de _lait_, sels de fonte : citrates de sodium, sel, colorants : caroténoïdes et extrait de paprika), protéines de _soja_ réhydratées 7.7%, eau, protéines de _soja_ 0.6%, fibres de pomme de terre, sel, arômes. Viande bovine origine France.\n\nCe cheeseburger contient 32% de préparation de viande de boeuf hachée cuite assaisonnée contenant des protéines de soja.",
+ "ingredients_text_it" : "Pane 44% (farina di _frumento_, acqua, olio di colza, destrosio, lievito, glutine di _frumento_, semi di _sesamo_ 0,5%, sale, emulsionante: mono - e digliceridi degli acidi grassi, farina di fave, agente di trattamento della farina: acido ascorbico), carne di manzo 19%, salsa 14% (acqua, _senape_ [acqua, aceto di alcool, semi di _senape_, sale, acidificante: acido citrico, zucchero, curcuma, antiossidante: disolfito di potassio, aromi naturali], concentrato di pomodoro, zucchero, olio di colza, cipolle, cetriolini [cetriolini, _solfiti_, agente di resistenza: E509], amido modificato di mais, aceto di alcool, sale), _formaggio_ fuso 10% (_formaggio_, acqua, _burro_, amido modificato di patata, proteine del _latte_, sali di fusione: citrati di sodio, sale, coloranti: caroteni ed estratto di paprica), proteine di _soia_ reidratate 7,7%, acqua, proteine di _soia_ 0,6%, fibre di patata, sale, aromi. Carne bovina origine Francia.\n\nQuesti cheeseburgers contengono il 32% di preparazione di carne macinata di manzo cotta condita, contenente proteine di soia.",
+ "ingredients_text_nl" : "Speciaal brood 44% (_tarwe_boem, water, koolzaadolie, dextrose, gist, _tarwe_gluten, _sesamzaad_ 0,5%, zout, emulgator: mono - en diglyceriden van vetzuren, bonenmeel, meelverbeteraar: ascorbinezuur), rundvlees 19%, saus 14% (water, _mosterd_ [water, alcoholazijn, _mosterd_zaad, zout, voedingszuur: citroenzuur, suiker, kurkuma, antioxidant: kaliumdisulfiet, natuurlijke aroma's], tomatenconcentraat, suiker, koolzaadolie, uien, augurken [augurken, verstevigingsmiddel: calciumchloride], gemodificeerd maïszetmeel, alcoholazijn, zout), _smeltkaas_ 10% (_kaas_, water, _boter_, gemodificeerd aardappelzetmeel, _melk_eiwitten, smeltzouten: natriumcitraten, zout, kleurstoffen: carotenen en paprika-extract), gerehydrateerde _soja_-eiwitten 7,7%, water, _soja_-eiwitten 0,6%, aardappelvezels, zout, aroma's. \nRundvlees van Franse oorsprong. \n\nDeze cheesburger bevat 32% gekruide en gegaarde vleesbereiding van gehakt rundvlees met soja-eiwitten.",
+ "ingredients_text_pl" : "Specjalny chleb 44% (mąka _pszenna_, woda, olej rzepakowy, dekstroza, drożdże, _gluten pszenny_, nasiona sezamu 0,5%, sól, emulgator: mono - i diglicerydy kwasów tłuszczowych, mąka fasolowa, środek do przetwarzania mąki: kwas askorbinowy), mięso wołowe 19%, sos 14% (woda, _musztarda_ [woda, ocet spirytusowy, nasiona _gorczycy_, sól, substancja zakwaszająca: kwas cytrynowy, cukier, kurkuma, przeciwutleniacz: disiarczyn potasu, aromaty naturalne], koncentrat pomidorowy, cukier, olej rzepakowy, cebula, korniszony [korniszony, siarczyny, substancja wiążąca: E509], modyfikowana skrobia kukurydziana, ocet spirytusowy, sól), _ser_ topiony 10% (_ser_, woda, _masło_, modyfikowana skrobia ziemniaczana, białko _mleka_, sole emulgujące: cytryniany sodu, sól, barwniki: karotenoidy i wyciąg z papryki), uwodnione białko _sojowe_ 7,7%, woda, białko _sojowe_ 0,6%, błonnik ziemniaczany, sól, aromaty. Mięso wołowe pochodzące z Francji.\n\nCheeseburger zawiera 32% mielonego, gotowanego i przyprawionego wyrobu z mięsa wołowego zawierającego białko sojowe.",
+ "ingredients_text_ro" : "Pâine specială 44% (făină de _grâu_, apă, ulei de rapiță, dextroză, drojdie, gluten din _grâu_, _semințe de susan_ 0,5%, sare, emulsifiant: mono - și digliceride ale acizilor grași, făină de fasole, agent de tratare a făinii: acid ascorbic), carne de vită 19%, sos 14% (apă, muștar [apă, oțet de alcool, semințe de _muștar_, sare, acidifiant: acid citric, zahăr, curcuma, antioxidant: metabisulfit de potasiu, arome naturale], pastă de tomate, zahăr, ulei de rapiță, ceapă, castraveți cornișon [castraveți cornișon, agent de întărire: clorură de calciu], amidon modificat din porumb, oțet de alcool, sare), _brânză_ topită 10% (_brânză_, apă, _unt_, amidon modificat din cartofi, proteine din _lapte_, săruri de topire: citrați de sodiu, sare, coloranți: caroteni și extract de ardei roșu), proteine din _soia_ rehidratată 7,7%, apă, proteine din _soia_ 0,6%, fibre din cartofi, sare, arome. Carnea de vită are origine Franța.\nAcești cheeseburger-i conțin 32% preparat din carne de vită tocată gătită, condimentată, cu adaos de proteine din soia.",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "En el microondas: Después de sacar el cheeseburger de su bolsa, colocarlo aún ultracongelado en un plato. Calentarlo durante 1 minuto 30 a 1 minuto 40 dependiendo de la potencia del microondas. Dejar reposar 1 minuto y disfrutar.",
+ "preparation_fr" : "Au four à micro-ondes : Après avoir retiré le cheeseburger de son sachet, placez-le encore surgelé sur une assiette. Faites-le chauffer 1min.30 à 1min. 40 selon la puissance de votre four à micro-ondes. Laissez reposer 1 min. et dégustez.",
+ "preparation_it" : "Al microonde: Dopo aver estratto il cheeseburger dal suo sacchetto, posizionatelo ancora congelato su un piatto. Fatelo scaldare 1 min.30-1 min.40 a seconda della potenza del vostro forno a microonde. Lasciate riposare 1 min. e gustate.",
+ "preparation_nl" : "In de microgolfoven: Haal de cheeseburger uit het zakje en leg hem nog diepgevroren op een bord. Verwarm 1min30 à 1min40, naargelang het vermogen van uw microgolfoven. Laat 1 min rusten en eet smakelijk.",
+ "preparation_pl" : "Kuchenka mikrofalowa: po wyjęciu cheeseburgera z opakowania położyć go na talerzu. Podgrzewać przez 1 min 30 sek. – 1 min 40 sek. w zależności od mocy kuchenki mikrofalowej. Odczekać minutę.",
+ "preparation_ro" : "În cuptorul cu microunde: După ce scoateți cheeseburger-ul din ambalaj, așezați-l congelat pe o farfurie. Încălziți-l timp de 1 min. 30 până la 1 min. 40 în funcție de puterea cuptorului cu microunde. Lăsați-l să se răcească timp de 1 min. și degustați-l.",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "17049",
+ "product_name_en" : "",
+ "product_name_es" : "Cheeseburgers",
+ "product_name_fr" : "Cheeseburgers",
+ "product_name_it" : "Cheeseburgers",
+ "product_name_nl" : "Cheeseburgers",
+ "product_name_pl" : "Cheeseburgery",
+ "product_name_ro" : "Cheeseburger-i",
+ "proteins_unit" : "g",
+ "proteins_value" : "12",
+ "quantity" : "750 g",
+ "salt_unit" : "g",
+ "salt_value" : "1.3",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "5.2",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.52",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "3.2",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3270190006787.json b/t/expected_test_results/import_convert_carrefour_france_export/3270190006787.json
new file mode 100644
index 0000000000000..3d4ed06183d84
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3270190006787.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "",
+ "carbohydrates_value" : "",
+ "categories" : "",
+ "code" : "3270190006787",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "Ce vinaigre n'est pas pasteurisé. Il se conserve sans limite de temps à l'abri de la lumière, dans un endroit frais, sec et sans variation de température. Le dépôt qui peut se former correspond à une légère reprise de la fermentation, la qualité du produit n'en n'est pas dégradée. N° de lot : voir sur le bouchon.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "Deze azijn is niet gepasteuriseerd en is onbeperkt houdbaar op een donkere, frisse en droge plaats zonder temperatuurschommelingen. Het bezinksel dat zich kan vormen komt overeen met een lichte hervatting van de fermentatie, wat de kwaliteit van het product niet aantast. Lotnr.: zie dop.",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "",
+ "energy-kcal_value" : "",
+ "energy-kj_unit" : "",
+ "energy-kj_value" : "",
+ "energy_unit" : "",
+ "energy_value" : "",
+ "fat_unit" : "",
+ "fat_value" : "",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "Vinaigre de vin rouge aromatisé saveur échalote.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "Gearomatiseerde rodewijnazijn met sjalotsmaak.",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "Vinaigre de vin rouge, arôme naturel échalote avec autres arômes naturels, conservateur : disulfite de potassium.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "Rodewijnazijn, natuurlijk sjalotaroma met andere natuurlijke aroma's, conserveermiddel: kaliumdi_sulfiet_.",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "13003",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "Vinaigre de vin saveur",
+ "product_name_it" : "",
+ "product_name_nl" : "Wijnazijn smaak",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "6% d'acidité\n75 cl",
+ "salt_unit" : "",
+ "salt_value" : "",
+ "saturated-fat_unit" : "",
+ "saturated-fat_value" : "",
+ "sodium_unit" : "",
+ "sodium_value" : "",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3270190020165.json b/t/expected_test_results/import_convert_carrefour_france_export/3270190020165.json
new file mode 100644
index 0000000000000..478ad3b2c9908
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3270190020165.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Lait",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "1",
+ "categories" : "Produits laitiers, Produits fermentés, Produits laitiers fermentés, Fromages, Fromages de vache, Fromages à pâte molle à croûte fleurie, Camemberts",
+ "code" : "3270190020165",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Consumir preferentemente antes del: ver la fecha en el lateral del envase. Conservar entre +4ºC y +8ºC.\nEl Camembert Carrefour se conservará idealmente en su envoltorio.",
+ "conservation_conditions_fr" : "À consommer de préférence avant le :voir la date sur le côté de l'emballage. À conserver entre +4°C et +8°C\nVotre Camembert Carrefour se conservera idéalement dans son papier d'emballage.",
+ "conservation_conditions_it" : "Da consumarsi preferibilmente entro il: vedere la data sul lato della confezione. Conservare tra +4°C e +8°C.\nIl tuo Camembert Carrefour si conserverà perfettamente nella sua carta da imballaggio.",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Italie, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "FR 50.168.001 EC, A FR 61.145.001 CE, C FR 50.453.001 CE",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "265",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "1100",
+ "energy_unit" : "kJ",
+ "energy_value" : "1100",
+ "fat_unit" : "g",
+ "fat_value" : "21",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "Camembert. Queso de pasta blanda elaborado con leche pasteurizada de vaca.",
+ "generic_name_fr" : "Camembert. Fromage à pâte molle au lait pasteurisé de vache.",
+ "generic_name_it" : "Camembert. Formaggio a pasta molle di latte vaccino pastorizzato.",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "_Leche_ de vaca pasteurizada, sal, _fermentos lácticos_ y de maduración, cuajo animal o coagulante de leche microbiano. Origen de la leche: Francia.",
+ "ingredients_text_fr" : "_Lait_ de vache pasteurisé, sel, _ferments lactiques_ et d'affinage, présule animale ou coagulant microbien. Lait origine France.",
+ "ingredients_text_it" : "_Latte_ vaccino pastorizzato, sale, _fermenti lattici_ e di affinamento, caglio animale o caglio microbico. Origine del latte Francia",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "Lait Français",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "FR 50.168.001 CE, A FR 61.145.001 CE \nC FR 50.453.001 CE\nLa lettre située à côté de la DLUO indique le lieu de conditionnement sur le fond de boîte",
+ "producer_nl" : "",
+ "producer_product_id" : "20300",
+ "product_name_en" : "",
+ "product_name_es" : "Camembert",
+ "product_name_fr" : "Camembert",
+ "product_name_it" : "Camembert",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "19",
+ "quantity" : "",
+ "salt_unit" : "g",
+ "salt_value" : "1.3",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "15",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.52",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3270190023814.json b/t/expected_test_results/import_convert_carrefour_france_export/3270190023814.json
new file mode 100644
index 0000000000000..6625160bb7728
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3270190023814.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Lait",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "6.3",
+ "categories" : "",
+ "code" : "3270190023814",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "A consommer jusqu'au : voir la date indiquée sur le dessus de l'emballage.\nA conserver entre 0°C et +7°C.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "Te gebruiken tot: zie datum op bovenzijde verpakking.\nTe bewaren tussen 0°C en +6°C.",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "Carrefour Product info\n PB 2000 Evere 3 - 1140 BRUSSELS\n Tél: 0800/9.10.11",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "FR 31.555.001 EC, EMB 31555",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "72",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "300",
+ "energy_unit" : "kJ",
+ "energy_value" : "300",
+ "fat_unit" : "g",
+ "fat_value" : "3.4",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "Yaourt brassé nature au lait entier, source de calcium.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "Roeryoghurt natuur van volle melk, bron van calcium.",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "_Lait_ entier 96%, _lactose_ et protéines de _lait_, ferments _lactiques_.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "Volle _melk_ 96%, _lactose_ en _melk_eiwitten, _melk_fermenten.",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "Nutriscore, Nutriscore B, Origine France",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "Fabriqué en France par EMB 31555 pour Interdis.",
+ "producer_nl" : "Geproduceerd in Frankrijk door EMB 31555 voor Interdis.",
+ "producer_product_id" : "11734",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "Brassé Nature",
+ "product_name_it" : "",
+ "product_name_nl" : "Roeryoghurt Natuur",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "4",
+ "quantity" : "1 kg 2x(4 x 125 g)e",
+ "salt_unit" : "g",
+ "salt_value" : "0.11",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "2.1",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.044",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "4.5",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3270190124924.json b/t/expected_test_results/import_convert_carrefour_france_export/3270190124924.json
new file mode 100644
index 0000000000000..c1a6aead2fa04
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3270190124924.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Moutarde, Anhydride sulfureux et sulfites",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "3.2",
+ "categories" : "Condiments, Sauces, Moutardes, Moutardes de Dijon",
+ "code" : "3270190124924",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Conservación: Antes de abrir, conservar a temperatura ambiente. Consumir preferentemente antes del / Nº de lote: ver fecha indicada en el envase. Una vez abierto, conservar en el frigorífico y consumir en 6 meses.",
+ "conservation_conditions_fr" : "Conservation : Avant ouverture, à conserver à température ambiante. Pour une dégustation optimale, à consommer de préférence avant le / N° de lot : voir la date indiquée sur le bocal. Après ouverture, à conserver au réfrigérateur et à consommer dans les 6 mois.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "149",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "619",
+ "energy_unit" : "kJ",
+ "energy_value" : "619",
+ "fat_unit" : "g",
+ "fat_value" : "12",
+ "fiber_unit" : "g",
+ "fiber_value" : "2.1",
+ "generic_name_en" : "",
+ "generic_name_es" : "Mostaza de Dijon.",
+ "generic_name_fr" : "Moutarde de Dijon.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "Agua, semillas de _mostaza_, vinagre de alcohol, sal, antioxidante: _metabisulfito_ potásico, acidulante: ácido cítrico.",
+ "ingredients_text_fr" : "Eau, graines de _moutarde_, vinaigre d'alcool, sel, antioxydant : di_sulfite_ de potassium, acidifiant : acide citrique.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "producer_nl" : "",
+ "producer_product_id" : "20671",
+ "product_name_en" : "",
+ "product_name_es" : "Mostaza de dijon",
+ "product_name_fr" : "Moutarde de dijon",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "7.2",
+ "quantity" : "370 g",
+ "salt_unit" : "g",
+ "salt_value" : "6.5",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "0.8",
+ "sodium_unit" : "g",
+ "sodium_value" : "2.6",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "2.7",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3270190153085.json b/t/expected_test_results/import_convert_carrefour_france_export/3270190153085.json
new file mode 100644
index 0000000000000..1e2967a4567d5
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3270190153085.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "",
+ "carbohydrates_value" : "",
+ "categories" : "",
+ "code" : "3270190153085",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Conservar en un lugar limpio, seco y fresco, protegido de la luz. Consumir preferentemente antes del / Nº de lote: ver en la parte inferior del envase.",
+ "conservation_conditions_fr" : "À conserver dans un endroit propre, sec et frais à l'abri de la lumière. Pour une dégustation optimale, à consommer de préférence avant le / N° de lot : voir sur le dessous de la boîte.",
+ "conservation_conditions_it" : "Conservare in luogo pulito, asciutto e fresco al riparo dalla luce. Da consumarsi preferibilmente entro il / N° di lotto: vedere sotto la confezione.",
+ "conservation_conditions_nl" : "Op een schone, droge, frisse en donkere plaats bewaren. Ten minste houdbaar tot / Lotnr.: zie onderzijde doosje.",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Italie, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_it" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_nl" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "",
+ "energy-kcal_value" : "",
+ "energy-kj_unit" : "",
+ "energy-kj_value" : "",
+ "energy_unit" : "",
+ "energy_value" : "",
+ "fat_unit" : "",
+ "fat_value" : "",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "Mezcla para infusionar aromatizada regaliz y menta.",
+ "generic_name_fr" : "Infusion aromatisée réglisse et menthe.",
+ "generic_name_it" : "Infuso aromatizzato liquirizia e menta.",
+ "generic_name_nl" : "Gearomatiseerde infusie zoethout en munt.",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "Regaliz 70,5%, menta 27,5%, aromas.",
+ "ingredients_text_fr" : "Réglisse 70,5%, menthe 27,5%, arômes.",
+ "ingredients_text_it" : "Liquirizia 70,5%, menta 27,5%, aromi.",
+ "ingredients_text_nl" : "Zoethout 70,5%, munt 27,5%, aroma's.",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "Meter la bolsita en la taza, verter agua hirviendo, dejar infusionar 3-4 minutos.",
+ "preparation_fr" : "Mettre le sachet dans la tasse, verser de l'eau frémissante, puis laisser infuser 3 à 4 minutes.",
+ "preparation_it" : "Mettere la bustina nella tazza, versare dell'acqua bollente, quindi lasciare in infusione 3-4 minuti.",
+ "preparation_nl" : "Plaats het theebuiltje in een kop, voeg kokend water toe, laat vervolgens 3 à 4 minuten trekken.",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "13837",
+ "product_name_en" : "",
+ "product_name_es" : "Mezcla para infusionar regaliz menta",
+ "product_name_fr" : "Infusion réglisse menthe",
+ "product_name_it" : "Infuso liquirizia menta",
+ "product_name_nl" : "Infusie zoethout munt",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "37,5 g",
+ "salt_unit" : "",
+ "salt_value" : "",
+ "saturated-fat_unit" : "",
+ "saturated-fat_value" : "",
+ "sodium_unit" : "",
+ "sodium_value" : "",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "Contiene regaliz, las personas que sufren hipertensión deben evitar un consumo excesivo.",
+ "warning_fr" : "Contient de la réglisse, les personnes souffrant d'hypertension doivent éviter toute consommation excessive.",
+ "warning_it" : "Contiene liquirizia, evitare il consumo eccessivo in caso di ipertensione.",
+ "warning_nl" : "Bevat zoethout, mensen met hoge bloeddruk dienen overmatig gebruik te vermijden."
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3270190174387.json b/t/expected_test_results/import_convert_carrefour_france_export/3270190174387.json
new file mode 100644
index 0000000000000..0441569db08c2
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3270190174387.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "",
+ "carbohydrates_value" : "",
+ "categories" : "",
+ "code" : "3270190174387",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "",
+ "energy-kcal_value" : "",
+ "energy-kj_unit" : "",
+ "energy-kj_value" : "",
+ "energy_unit" : "",
+ "energy_value" : "",
+ "fat_unit" : "",
+ "fat_value" : "",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "1913",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "",
+ "salt_unit" : "",
+ "salt_value" : "",
+ "saturated-fat_unit" : "",
+ "saturated-fat_value" : "",
+ "sodium_unit" : "",
+ "sodium_value" : "",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3560070687145.json b/t/expected_test_results/import_convert_carrefour_france_export/3560070687145.json
new file mode 100644
index 0000000000000..3fbe8ab394355
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3560070687145.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "23",
+ "categories" : "",
+ "code" : "3560070687145",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Consumir preferentemente antes de la fecha indicada más abajo. Conservar 24 horas en el frigorífico, 3 días en el congelador del frigorífico y hasta la fecha de durabilidad mínima en un congelador *** a -18ºC.",
+ "conservation_conditions_fr" : "À consommer de préférence avant la date indiquée ci-dessous. À conserver 24 heures dans un réfrigérateur, 3 jours dans le compartiment à glace du réfrigérateur et jusqu'à la date de durabilité minimale dans un congélateur*** à -18°C.",
+ "conservation_conditions_it" : "Da consumarsi preferibilmente entro la data indicata sotto. Conservare 24 ore nel frigorifero, 3 giorni nello scomparto del ghiaccio del frigorifero e fino al termine minimo di conservazione in un congelatore*** a -18°C.",
+ "conservation_conditions_nl" : "Ten minste houdbaar tot de hieronder vermelde datum. Bewaart 24 uur in de koelkast, 3 dagen in het vriesvak van de koelkast en tot aan de datum van minimale houdbaarheid in een diepvriezer*** op -18°C.",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Italie, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_it" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_nl" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "133",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "560",
+ "energy_unit" : "kJ",
+ "energy_value" : "560",
+ "fat_unit" : "g",
+ "fat_value" : "3.2",
+ "fiber_unit" : "g",
+ "fiber_value" : "1.7",
+ "generic_name_en" : "",
+ "generic_name_es" : "Patatas finas prefritas ultracongeladas.",
+ "generic_name_fr" : "Pommes de terre allumettes préfrites surgelées.",
+ "generic_name_it" : "Patate a fiammifero prefritte surgelate.",
+ "generic_name_nl" : "Voorgebakken allumettes aardappelen, diepvries.",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "Patatas 96%, aceite de girasol 4%, dextrosa.",
+ "ingredients_text_fr" : "Pommes de terre 96%, huile de tournesol 4%, dextrose.",
+ "ingredients_text_it" : "Patate 96%, olio di semi girasole 4%, destrosio.",
+ "ingredients_text_nl" : "Aardappelen 96%, zonnebloemolie 4%, dextrose.",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "À l'huile de tournesol",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "En la freidora: Sumergir las patatas aún ultracongeladas en pequeñas cantidades en aceite caliente a 175ºC y dejar dorar durante 4-6 minutos. Para eliminar el exceso de grasa, reposar las patatas fritas sobre un papel absorbente. Renovar el aceite de la freidora después de 10-12 frituras.",
+ "preparation_fr" : "À la friteuse : Plongez les frites encore surgelées par petites quantités dans de l'huile préchauffée à 175°C et laissez dorer pendant 4 à 6 minutes. Pour limiter le surplus de matière grasse, laissez reposer les frites sur du papier absorbant. Pensez à renouveler le bain d'huile après 10 à 12 fritures.",
+ "preparation_it" : "Nella friggitrice: Versate piccole quantità per volta di patatine ancora surgelate nell'olio preriscaldato a 175°C e lasciate dorare per 4 - 6 minuti. Per limitare l'eccesso di olio, lasciate riposare le patate fritte su della carta assorbente per fritti. Ricordate di rinnovare l'olio dopo 10 - 12 fritture.",
+ "preparation_nl" : "In de friteuse: Doe de nog diepgevroren frieten, in kleine hoeveelheden, in voorverwarmde olie op 175°C en laat ze 4 à 6 minuten goudgeel bakken. Leg ze op een vel keukenpapier om het overtollige vet te absorberen. Vervang de olie na 10 à 12 bakbeurten.",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "23652",
+ "product_name_en" : "",
+ "product_name_es" : "Patatas Finas",
+ "product_name_fr" : "Allumettes",
+ "product_name_it" : "Patate fritte a fiammifero",
+ "product_name_nl" : "Allumettes",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "2.2",
+ "quantity" : "1 kg",
+ "salt_unit" : "g",
+ "salt_value" : "0.2",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "0.4",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.08",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "ATENCIÓN, NO VOLVER A CONGELAR UNA VEZ DESCONGELADO.",
+ "warning_fr" : "ATTENTION, NE PAS RECONGELER APRÈS DÉCONGÉLATION.",
+ "warning_it" : "ATTENZIONE, NON RICONGELARE DOPO LO SCONGELAMENTO.",
+ "warning_nl" : "NA ONTDOOIING NIET OPNIEUW INVRIEZEN."
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3560071193102.json b/t/expected_test_results/import_convert_carrefour_france_export/3560071193102.json
new file mode 100644
index 0000000000000..a8d5f3d8e7191
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3560071193102.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "6.3",
+ "categories" : "",
+ "code" : "3560071193102",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "27",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "114",
+ "energy_unit" : "kJ",
+ "energy_value" : "114",
+ "fat_unit" : "g",
+ "fat_value" : "0.5",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "7934",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "Yours",
+ "product_name_it" : "",
+ "product_name_nl" : "Yours",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "",
+ "salt_unit" : "",
+ "salt_value" : "",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "0.1",
+ "sodium_unit" : "",
+ "sodium_value" : "",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "5.8",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3560071198954.json b/t/expected_test_results/import_convert_carrefour_france_export/3560071198954.json
new file mode 100644
index 0000000000000..c010888714d2b
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3560071198954.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "",
+ "carbohydrates_value" : "",
+ "categories" : "",
+ "code" : "3560071198954",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "",
+ "energy-kcal_value" : "",
+ "energy-kj_unit" : "",
+ "energy-kj_value" : "",
+ "energy_unit" : "",
+ "energy_value" : "",
+ "fat_unit" : "",
+ "fat_value" : "",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "8643",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "",
+ "salt_unit" : "",
+ "salt_value" : "",
+ "saturated-fat_unit" : "",
+ "saturated-fat_value" : "",
+ "sodium_unit" : "",
+ "sodium_value" : "",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/3560071228491.json b/t/expected_test_results/import_convert_carrefour_france_export/3560071228491.json
new file mode 100644
index 0000000000000..88069c18c7e76
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/3560071228491.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "",
+ "carbohydrates_value" : "",
+ "categories" : "",
+ "code" : "3560071228491",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "",
+ "conservation_conditions_fr" : "",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France",
+ "customer_service_en" : "",
+ "customer_service_es" : "",
+ "customer_service_fr" : "",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "",
+ "energy-kcal_value" : "",
+ "energy-kj_unit" : "",
+ "energy-kj_value" : "",
+ "energy_unit" : "",
+ "energy_value" : "",
+ "fat_unit" : "",
+ "fat_value" : "",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "",
+ "generic_name_fr" : "",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "",
+ "ingredients_text_fr" : "",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "19683",
+ "product_name_en" : "",
+ "product_name_es" : "",
+ "product_name_fr" : "",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "",
+ "salt_unit" : "",
+ "salt_value" : "",
+ "saturated-fat_unit" : "",
+ "saturated-fat_value" : "",
+ "sodium_unit" : "",
+ "sodium_value" : "",
+ "stores" : "Carrefour",
+ "sugars_unit" : "",
+ "sugars_value" : "",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/8431876180701.json b/t/expected_test_results/import_convert_carrefour_france_export/8431876180701.json
new file mode 100644
index 0000000000000..58aed5252af35
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/8431876180701.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Lait",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "17",
+ "categories" : "",
+ "code" : "8431876180701",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Conservar entre +1°C y +8°C.\nFecha de caducidad: ver la fecha indicada en la parte superior del envase.",
+ "conservation_conditions_fr" : "À conserver entre +1°C et +8°C. \nÀ consommer jusqu'au : voir la date figurant sur le dessus de l'emballage.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "FR 62.853.030 EC",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "140",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "587",
+ "energy_unit" : "kJ",
+ "energy_value" : "587",
+ "fat_unit" : "g",
+ "fat_value" : "6.5",
+ "fiber_unit" : "g",
+ "fiber_value" : "0.5",
+ "generic_name_en" : "",
+ "generic_name_es" : "Postre lácteo con nata y cacao. Sabor chocolate.",
+ "generic_name_fr" : "Dessert lacté à la crème et au cacao. Saveur chocolat.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "_Leche_ desnatada 64,1%, _nata_ pasteurizada 20,5%, azúcar, _lactosa_, almidón modificado de maíz, cacao en polvo 0,7%, espesantes: carragenanos y goma guar, gelatina de vacuno, proteínas de la _leche_, cacao magro en polvo 0,1%, emulgentes: ésteres lácticos de monoglicéridos y diglicéridos de ácidos grasos, aroma, aroma natural de vainilla, _lactosa_ y minerales de la _leche_.\nPuede contener trazas de soja.",
+ "ingredients_text_fr" : "_Lait_ écrémé 64,1%, _crème_ pasteurisée 20,5%, sucre, _lactose_, amidon modifié de maïs, cacao en poudre 0,7%, épaississants: carraghénanes et gomme guar; gélatine bovine, protéines de _lait_, cacao maigre en poudre 0,1%, émulsifiants: esters lactiques des mono - et diglycérides d'acides gras, arôme, arôme naturel de vanille, _lactose_ et minéraux du _lait_.\nPeut contenir des traces de soja.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "17290",
+ "product_name_en" : "",
+ "product_name_es" : "Copa con Nata y Cacao",
+ "product_name_fr" : "Copa con Nata y Cacao",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "3",
+ "quantity" : "460 g\n2 x (2 x 115 g)",
+ "salt_unit" : "g",
+ "salt_value" : "0.13",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "4.2",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.052",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "15",
+ "traces" : "Soja",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/8431876196009.json b/t/expected_test_results/import_convert_carrefour_france_export/8431876196009.json
new file mode 100644
index 0000000000000..c927751812cea
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/8431876196009.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Lait",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "14",
+ "categories" : "",
+ "code" : "8431876196009",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Fecha de caducidad: ver la fecha en la tapa.\nConservar entre +1º C y +8º C.",
+ "conservation_conditions_fr" : "À consommer jusqu'au : voir la date sur l'opercule.\nÀ conserver entre +1º C et +8º C.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "AT 30751 EC",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "85",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "358",
+ "energy_unit" : "kJ",
+ "energy_value" : "358",
+ "fat_unit" : "g",
+ "fat_value" : "1.5",
+ "fiber_unit" : "",
+ "fiber_value" : "",
+ "generic_name_en" : "",
+ "generic_name_es" : "Leche fermentada semidesnatada azucarada con piña y aromatizada.",
+ "generic_name_fr" : "Lait fermenté demi écrémé sucré à l'ananas et aromatisé.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "_Leche_ desnatada 76,2%, preparado de piña 15% (piña 7%, azúcar 5,2%, jarabe de glucosa-fructosa, zumo concentrado de piña 0,2%, almidón modificado de maíz, aroma natural, estabilizante: pectinas, concentrados vegetales (limón y cártamo), correctores de acidez: citratos de sodio - ácido cítrico - citratos de calcio), _nata_, azúcar 2,6%, proteínas de la _leche_ en polvo, _leche_ desnatada en polvo, fermentos _lácticos_.",
+ "ingredients_text_fr" : "_Lait_ écrémé 76,2%, préparation d'ananas 15% (ananas 7%, sucre 5,2%, sirop de glucose-fructose, jus concentré d'ananas 0,2%, amidon modifié de maïs, arôme naturel, stabilisant : pectine, extraits végétaux (citron, carthame), correcteurs d'acidité : citrate de sodium - acide citrique - citrate de calcium), _crème_, sucre 2,6%, protéines de _lait_ en poudre, _lait_ écrémé en poudre, ferments _lactiques_.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "Sans arômes artificiels, Sans colorants, Sans conservateurs",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "",
+ "preparation_fr" : "",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "13766",
+ "product_name_en" : "",
+ "product_name_es" : "PIÑA con trozos",
+ "product_name_fr" : "ANANAS avec morceaux",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "3.8",
+ "quantity" : "125 g",
+ "salt_unit" : "g",
+ "salt_value" : "0.1",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "1",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.04",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "13",
+ "traces" : "",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/8431876331110.json b/t/expected_test_results/import_convert_carrefour_france_export/8431876331110.json
new file mode 100644
index 0000000000000..d46e3484f0bd3
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/8431876331110.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "Lait, Rge",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "86",
+ "categories" : "",
+ "code" : "8431876331110",
+ "conservation_conditions_en" : "Store in a cool, dry place. Close inner bag well after each use.\nBest before: see date on top of pack.",
+ "conservation_conditions_es" : "Conservar protegido del calor y de la humedad. Cerrar bien la bolsa interior después de cada uso. Consumir preferentemente antes del: ver fecha indicada en la parte superior del paquete.",
+ "conservation_conditions_fr" : "À conserver à l'abri de la chaleur et de l'humidité. Bien refermer le sachet intérieur après chaque utilisation. À consommer de préférence avant le : voir la date indiquée sur le dessus du paquet.",
+ "conservation_conditions_it" : "Conservare lontano da fonti di calore e umidità. Chiudere bene il sacchetto interno dopo ogni utilizzo. Da consumarsi preferibilmente entro il: vedere la data indicata sopra la confezione.",
+ "conservation_conditions_nl" : "Fris en droog bewaren. De binnenzak na elk gebruik goed sluiten. Ten minste houdbaar tot: zie datum bovenzijde pak.",
+ "conservation_conditions_pl" : "Przechowywać w suchym i chłodnym miejscu. Po każdym użyciu należy szczelnie zamknąć wewnętrzną torebkę. Najlepiej spożyć przed: patrz data na górze opakowania.",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Italie, Pologne, Espagne",
+ "customer_service_en" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_it" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_nl" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France.",
+ "customer_service_pl" : "Interdis – TSA 91431 – 91343 MASSY Cedex – France.",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "381",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "1619",
+ "energy_unit" : "kJ",
+ "energy_value" : "1619",
+ "fat_unit" : "g",
+ "fat_value" : "0.8",
+ "fiber_unit" : "g",
+ "fiber_value" : "2.5",
+ "generic_name_en" : "Toasted corn flakes coated with sugar, source of 8 vitamins (niacin, B5, B2, B6, B1, B9, D, B12) and iron.",
+ "generic_name_es" : "Copos de maíz tostados, recubiertos de azúcar, fuente de 8 vitaminas (niacina, B5, B2, B6, B1, B9, D, B12) y de hierro.",
+ "generic_name_fr" : "Pétales de maïs grillés, enrobés au sucre source de 8 vitamines (niacine, B5, B2, B6, B1, B9, D, B12) et de fer.",
+ "generic_name_it" : "Fiocchi di mais tostati, ricoperti con zucchero fonte di 8 vitamine (Niacina, B5, B2, B6, B1, B9, D, B12) e ferro.",
+ "generic_name_nl" : "Geroosterde maïsvlokken, omhuld met suiker bron van 8 vitaminen (niacine, B5, B2, B6, B1, B9, D, B12) en van ijzer.",
+ "generic_name_pl" : "Prażone płatki kukurydziane pokryte cukrem, źródło 8 witamin (niacyna, B5, B2, B6, B1, B9, D, B12) i żelaza.",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "Maize 70%, sugar 28%, salt, _barley_ malt extract, vitamins: niacin - pantothenic acid (B5) - riboflavin (B2) - vitamin B6 - thiamin (B1) - folic acid (B9) - vitamin D - vitamin B12, ferric diphosphate.\nMay contain traces of peanuts, nuts, milk products, soya-based products and sesame seeds.",
+ "ingredients_text_es" : "Maíz 70%, azúcar 28%, sal, extracto de malta de _cebada_, vitaminas: niacina - ácido pantoténico (B5) - riboflavina (B2) - vitamina B6 - tiamina (B1) - ácido fólico (B9) - vitamina D - vitamina B12, difosfato férrico.\nPuede contener trazas de cacahuetes, frutos de cáscara, productos lácteos, productos a base de soja y semillas de sésamo.",
+ "ingredients_text_fr" : "Maïs 70%, sucre 28%, sel, extrait de malt do'_rge_, vitamines : niacine - acide pantothénique (B5) - riboflavine (B2) - vitamine B6 - thiamine (B1) - acide folique (B9) - vitamine D - vitamine B12, diphosphate ferrique. \nPeut contenir des traces d'arachides, de fruits à coque, de produit laitiers, de produits à base de soja et de graines de sésame.",
+ "ingredients_text_it" : "Mais 70%, zucchero 28%, sale, estratto di malto d'_orzo_, vitamine: niacina - acido pantotenico (B5) - riboflavina (B2) - vitamina B6 - tiamina (B1) - acido folico (B9) - vitamina D - vitamina B12, difosfato ferrico.\nPuò contenere arachidi, frutta a guscio, prodotti a base di latte, prodotti a base di soia e semi di sesamo.",
+ "ingredients_text_nl" : "Maïs 70%, suiker 28%, zout, _gerst_emoutextract, vitaminen: niacine - pantotheenzuur (B5) - riboflavine (B2) - vitamine B6 - thiamine (B1) - foliumzuur (B9) - vitamine D - vitamine B12, ijzer(III)difosfaat.\nKan sporen bevatten van aardnoten, noten, melkproducten, producten op basis van soja en sesamzaad.",
+ "ingredients_text_pl" : "Kukurydza 70%, cukier 28%, sól, ekstrakt słodu _jęczmiennego_, witaminy: niacyna - kwas pantotenowy (B5) - ryboflawina (B2) - witamina B6 - tiamina (B1) - kwas foliowy (B9) - witamina D - witamina B12, difosforan żelaza.\nMoże zawierać orzeszki ziemne, orzechy, produkty mleczne, produkty sojowe i nasiona sezamu.",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "Pour your cereal into a bowl. We recommend you use cold milk to keep your cereal crunchy.",
+ "preparation_es" : "Verter los cereales en un bol. Para disfrutar del crujiente de los cereales, se recomienda usar leche fría.",
+ "preparation_fr" : "Verse tes céréales dans un bol. Pour apprécier le croustillant de tes céréales, nous te conseillons d'utiliser du lait froid.",
+ "preparation_it" : "Versa i tuoi cereali in una ciotola. Per apprezzare la croccantezza dei tuoi cereali, ti consigliamo di utilizzare del latte freddo.",
+ "preparation_nl" : "Giet de ontbijtgranen in een kom. Om de ontbijtgranen lekker knapperig te houden, raden wij u aan om koude melk toe te voegen.",
+ "preparation_pl" : "Wsyp płatki do miski. Aby cieszyć się kruchością płatków, zalecamy stosowanie zimnego mleka.",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "14505",
+ "product_name_en" : "Snow Flakes",
+ "product_name_es" : "Snow Flakes",
+ "product_name_fr" : "Snow Flakes",
+ "product_name_it" : "Snow Flakes",
+ "product_name_nl" : "Snow Flakes",
+ "product_name_pl" : "Snow Flakes",
+ "product_name_ro" : "",
+ "proteins_unit" : "g",
+ "proteins_value" : "6.1",
+ "quantity" : "375 g",
+ "salt_unit" : "g",
+ "salt_value" : "0.63",
+ "saturated-fat_unit" : "g",
+ "saturated-fat_value" : "0.3",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.252",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "30",
+ "traces" : "Lait, Fruits à coque, Arachides, Graines de sésame, Soja",
+ "warning_es" : "",
+ "warning_fr" : "",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/expected_test_results/import_convert_carrefour_france_export/8714800018920.json b/t/expected_test_results/import_convert_carrefour_france_export/8714800018920.json
new file mode 100644
index 0000000000000..1b37a0b664771
--- /dev/null
+++ b/t/expected_test_results/import_convert_carrefour_france_export/8714800018920.json
@@ -0,0 +1,88 @@
+{
+ "allergens" : "",
+ "brands" : "Carrefour",
+ "carbohydrates_unit" : "g",
+ "carbohydrates_value" : "1",
+ "categories" : "",
+ "code" : "8714800018920",
+ "conservation_conditions_en" : "",
+ "conservation_conditions_es" : "Antes de abrir, conservar el envase en un lugar limpio, fresco y seco, resguardado de la luz. Consumir preferentemente antes del fin de: ver en la base de la lata.",
+ "conservation_conditions_fr" : "Avant ouverture, conservez votre canette dans un endroit propre, frais et sec à l'abri de la lumière. A consommer de préférence avant fin : voir au bas de la canette.",
+ "conservation_conditions_it" : "",
+ "conservation_conditions_nl" : "",
+ "conservation_conditions_pl" : "",
+ "conservation_conditions_ro" : "",
+ "countries" : "France, Espagne",
+ "customer_service_en" : "",
+ "customer_service_es" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France\nCentros Comerciales Carrefour, S.A.\nC/ Campezo, 16 - 28022 MADRID - España\nTel.: 914 908 900",
+ "customer_service_fr" : "Interdis - TSA 91431 - 91343 MASSY Cedex - France",
+ "customer_service_it" : "",
+ "customer_service_nl" : "",
+ "customer_service_pl" : "",
+ "customer_service_ro" : "",
+ "data_sources" : "",
+ "emb_codes" : "",
+ "energy-kcal_unit" : "kcal",
+ "energy-kcal_value" : "6",
+ "energy-kj_unit" : "kJ",
+ "energy-kj_value" : "27",
+ "energy_unit" : "kJ",
+ "energy_value" : "27",
+ "fat_unit" : "",
+ "fat_value" : "",
+ "fiber_unit" : "g",
+ "fiber_value" : "0",
+ "generic_name_en" : "",
+ "generic_name_es" : "Bebida energética con gas, con edulcorantes, taurina, cafeína y vitaminas.",
+ "generic_name_fr" : "Boisson énergisante gazéifiée avec édulcorants, taurine, caféine et vitamines.",
+ "generic_name_it" : "",
+ "generic_name_nl" : "",
+ "generic_name_pl" : "",
+ "generic_name_ro" : "",
+ "ingredients_text_en" : "",
+ "ingredients_text_es" : "Agua carbonatada, acidulante: ácido cítrico, corrector de acidez: citratos de sodio, glucuronolactona, aroma, taurina 0,025%, edulcorantes: acesulfamo K y sucralosa, inositol, cafeína 0,017%, colorantes: caramelo de sulfito cáustico y riboflavina, vitaminas: niacina - B6 - B12.",
+ "ingredients_text_fr" : "Eau gazéifiée, acidifiant : acide citrique, correcteur d'acidité : citrates de sodium, glucuronolactone, arôme, taurine 0,025%, édulcorants : acésulfame-K et sucralose, inositol, caféine 0,017%, colorants : caramel de sulfite caustique et riboflavines, vitamines : niacine - B6 - B12.",
+ "ingredients_text_it" : "",
+ "ingredients_text_nl" : "",
+ "ingredients_text_pl" : "",
+ "ingredients_text_ro" : "",
+ "labels" : "",
+ "lc" : "fr",
+ "nutrition_data_per" : "100g",
+ "nutrition_data_prepared_per" : "100g",
+ "obsolete" : "0",
+ "preparation_en" : "",
+ "preparation_es" : "Servir frío.",
+ "preparation_fr" : "Servir frais.",
+ "preparation_it" : "",
+ "preparation_nl" : "",
+ "preparation_pl" : "",
+ "preparation_ro" : "",
+ "producer_fr" : "",
+ "producer_nl" : "",
+ "producer_product_id" : "9572",
+ "product_name_en" : "",
+ "product_name_es" : "Energy DRINK* Light**",
+ "product_name_fr" : "Energy DRINK* Light**",
+ "product_name_it" : "",
+ "product_name_nl" : "",
+ "product_name_pl" : "",
+ "product_name_ro" : "",
+ "proteins_unit" : "",
+ "proteins_value" : "",
+ "quantity" : "25 cl",
+ "salt_unit" : "g",
+ "salt_value" : "0.15",
+ "saturated-fat_unit" : "",
+ "saturated-fat_value" : "",
+ "sodium_unit" : "g",
+ "sodium_value" : "0.06",
+ "stores" : "Carrefour",
+ "sugars_unit" : "g",
+ "sugars_value" : "0",
+ "traces" : "",
+ "warning_es" : "Contenido elevado de cafeína (17 mg/ 100 ml). Bebida no recomendada para niños, personas diabéticas, personas sensibles a la cafeína y mujeres embarazadas. Consumir con moderación, máximo una lata al día. No se recomienda el consumo de esta bebida con alcohol. No se recomienda el consumo de esta bebida en el marco de una actividad deportiva.",
+ "warning_fr" : "Teneur élevée en caféine (17 mg/ 100ml). Boisson non recommandée aux enfants, aux personnes diabétiques ou sensibles à la caféine et aux femmes enceintes. A consommer avec modération, maximum une canette par jour. Il est déconseillé de consommer cette boisson avec de l'alcool. Il est déconseillé de consommer cette boisson dans la cadre d'une pratique sportive.",
+ "warning_it" : "",
+ "warning_nl" : ""
+}
diff --git a/t/import_convert_carrefour_france.t b/t/import_convert_carrefour_france.t
new file mode 100644
index 0000000000000..890a777384bd0
--- /dev/null
+++ b/t/import_convert_carrefour_france.t
@@ -0,0 +1,113 @@
+#!/usr/bin/perl -w
+
+# This test scripts:
+# 1. import some products from files in a XML format from Carrefour France
+# 2. exports the products, and checks that we get the expected exports
+
+use Modern::Perl '2017';
+use utf8;
+
+use Test::More;
+use Log::Any::Adapter 'TAP', filter => "info";
+
+use ProductOpener::Products qw/:all/;
+use ProductOpener::Tags qw/:all/;
+use ProductOpener::PackagerCodes qw/:all/;
+use ProductOpener::Import qw/:all/;
+use ProductOpener::Export qw/:all/;
+use ProductOpener::Config qw/:all/;
+use ProductOpener::Packaging qw/:all/;
+use ProductOpener::Ecoscore qw/:all/;
+use ProductOpener::ForestFootprint qw/:all/;
+use ProductOpener::Test qw/:all/;
+use ProductOpener::ImportConvertCarrefourFrance qw/:all/;
+
+use File::Basename "dirname";
+
+use Getopt::Long;
+use JSON;
+
+
+my $test_id = "import_convert_carrefour_france";
+my $test_dir = dirname(__FILE__);
+
+my $usage = < \$update_expected_results)
+ or die("Error in command line arguments.\n\n" . $usage);
+
+# Remove all products
+
+ProductOpener::Test::remove_all_products();
+
+# Import test products
+
+init_emb_codes();
+init_packager_codes();
+init_geocode_addresses();
+init_packaging_taxonomies_regexps();
+
+if ((defined $options{product_type}) and ($options{product_type} eq "food")) {
+ load_agribalyse_data();
+ load_ecoscore_data();
+ load_forest_footprint_data();
+}
+
+my $converted_csv_file = "/tmp/import_convert_carrefour_france.csv";
+
+open (my $converted_csv, ">:encoding(UTF-8)", $converted_csv_file) or die("Could not create $converted_csv_file: $!\n");
+
+my @files = ();
+opendir(my $dh, $test_dir . "/inputs/import_convert_carrefour_france") or die("Cannot read $test_dir" . "/inputs/import_convert_carrefour_france");
+foreach my $file (sort { $a cmp $b } readdir($dh)) {
+
+ if ($file =~ /\.xml$/) {
+ push @files, $test_dir . "/inputs/import_convert_carrefour_france/" . $file;
+ }
+}
+
+convert_carrefour_france_files($converted_csv, \@files);
+
+close($converted_csv);
+
+
+my $import_args_ref = {
+ user_id => "carrefour-france",
+ csv_file => "/tmp/import_convert_carrefour_france.csv",
+ no_source => 1,
+};
+
+my $stats_ref = import_csv_file( $import_args_ref );
+
+# Export products
+
+my $query_ref = {};
+my $separator = "\t";
+
+# CSV export
+
+my $exported_csv_file = "/tmp/import_convert_carrefour_france_export.csv";
+open (my $exported_csv, ">:encoding(UTF-8)", $exported_csv_file) or die("Could not create $exported_csv_file: $!\n");
+
+my $export_args_ref = {filehandle=>$exported_csv, separator=>$separator, query=>$query_ref, cc => "fr" };
+
+export_csv($export_args_ref);
+
+close($exported_csv);
+
+ProductOpener::Test::compare_csv_file_to_expected_results($exported_csv_file, $test_dir . "/expected_test_results/import_convert_carrefour_france_export", $update_expected_results);
+
+
+done_testing();
diff --git a/t/inputs/import_convert_carrefour_france/10412_3270190124924_text.xml b/t/inputs/import_convert_carrefour_france/10412_3270190124924_text.xml
new file mode 100644
index 0000000000000..10783b683bf2f
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/10412_3270190124924_text.xml
@@ -0,0 +1 @@
+FR3879995 11AL_DENOCOM0101FACINGSECTION FACINGFR387999611AL_BENEF_CONS0202FACINGSECTION FACINGFR387999711AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR387999811AL_SPE_BIO0404FACINGSECTION FACINGFR387999911AL_ALCO_VOL0505FACINGSECTION FACINGFR388000011AL_PRESENTATION0606FACINGSECTION FACINGFR3880001Moutarde de Dijon.11AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR3880002Ingrédients : Eau, graines de moutarde, vinaigre d'alcool, sel, antioxydant : disulfite de potassium, acidifiant : acide citrique.PF 11AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR388000311AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR3880004Nutrition - Valeurs moyennes pour 100 g : Energie 619 kJ (149 kcal) - Matières grasses 12 g (dont saturés 0,8 g) - Glucides 3,2 g (dont sucres 2,7 g) - Fibres alimentaires 2,1 g - Protéines 7,2 g - Sel 6,5 g.AR TT 15/10/2019 : Valeurs dans le tableau non complétées par le CP, pas de modification.01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR388000511AL_PREPA1111UTILISATIONSECTION UTILISATIONFR3880006Conservation : À consommer de préférence avant le : voir la date indiquée sur le verre. Avant ouverture, à conserver à température ambiante. Après ouverture, à conserver au réfrigérateur et à consommer dans les 6 mois.PF 11AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR388000711AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR388000811AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR3880009écoemballage + triman11AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR388001010AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR388001110AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR388001210AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR3880013195 g ePF 11AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR388001411AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR3880015N° Cristal 09 69 39 7000 APPEL NON SURTAXE11AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3880016Interdis - TSA 91431 - 91343 MASSY Cedex - France.PF 11AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR388001711AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3880018327019012492401AL_CODE_EAN2424CODE_EANSECTION CODE EANFR388001911AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR388002011AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR388002111AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE10527MOUTARDE DIJON VERRE DECOR 195GALISTD10412
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/10412_3270190124924_valNut.xml b/t/inputs/import_convert_carrefour_france/10412_3270190124924_valNut.xml
new file mode 100644
index 0000000000000..40c61ce06253b
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/10412_3270190124924_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRPREPAREDFRgGR0,00grammeVALENERLABELFRPREPAREDFRPORTIONFRPORTIONSOITFR˜ ARCOLFRFR4491139ENERKJ1EnergieENER kJKJO100,00Kilojoule00kJKJO0,00Kilojoule00FR4491140ENERKC2EnergieENER kcalE14100,00kilocalorie00kcalE140,00kilocalorie00FR368651FR368651AR013368651FR368652FR368652VARIEZ015368652FR377564PHRASETOPFR377565FR377566PHRASEBOTTOM00 07363Valeurs Nutritionnelles Moutarde de DijonTABNUTSTD 10412
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/11734_3270190023814_text.xml b/t/inputs/import_convert_carrefour_france/11734_3270190023814_text.xml
new file mode 100644
index 0000000000000..c9c715162daea
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/11734_3270190023814_text.xml
@@ -0,0 +1 @@
+FR4046453Brassé Nature11NL3971946Roeryoghurt Natuur
01AL_DENOCOM0101FACINGSECTION FACINGFR4046454 Picto Origine France
11NL3971947Picto Oorsprong FrankrijkTRADNL 01AL_BENEF_CONS0202FACINGSECTION FACINGFR4046455Nutriscore B x811NL3971948Nutriscore B x801AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR404645611NL397194901AL_SPE_BIO0404FACINGSECTION FACINGFR404645711NL397195001AL_ALCO_VOL0505FACINGSECTION FACINGFR4046458Suggestion de présentation
11NL3971951Serveertip01AL_PRESENTATION0606FACINGSECTION FACINGFR4046459Yaourt brassé nature au lait entier, source de calcium.En absence de picto "source de calcium", ces précisions peuvent être supprimé de la dénomination légale.11NL3971952Roeryoghurt natuur van volle melk, bron van calcium.TRADNL 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR4046460Lait entier 96%, lactose et protéines de lait, ferments lactiques.11NL3971953Volle melk 96%, lactose en melkeiwitten, melkfermenten.TRADNL 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR4046461 11NL3971954 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR4046462Nutriscore B01NL3971955Nutriscore BSMO 16/10: PI: dans tab nut il est mis 18% pour CalciumTRADNL 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR404646311NL397195601AL_PREPA1111UTILISATIONSECTION UTILISATIONFR4046464A consommer jusqu'au : voir la date indiquée sur le dessus de l'emballage. A conserver entre 0°C et +7°C.11NL3971957Te gebruiken tot: zie datum op bovenzijde verpakking. Te bewaren tussen 0°C en +6°C.
RDW 04/11: "+7°C" était remplacé par "+6°C" comme demandé par le CPPTRADNL 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR404646511NL397195801AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR404646611NL397195901AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR4046467Ecoemballage Triman11NL3971960Ecoemballage Triman01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR404646810NL397196100AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR404646910NL397196200AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR404647010NL397196300AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR40464711Kg 2x(4x125g)[ZEMETRO]11NL39719641Kg 2x(4x125g) 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR404647211NL397196501AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR4046473Interdis - TSA 91431 - 91343 MASSY Cedex - France11NL3971966Carrefour Product info PB 2000 Evere 3 - 1140 BRUSSELS Tél: 0800/9.10.11TRADNL 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR4046474Fabriqué en France par EMB 31555 pour Interdis.11NL3971967Geproduceerd in Frankrijk door EMB 31555 voor Interdis.01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR4046475FR 31.555.001 CE11NL3971968FR 31.555.001 CE01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR4046476327019002381401NL3971969327019002381401AL_CODE_EAN2424CODE_EANSECTION CODE EANFR404647711NL397197001AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR4046478Ces 8 pots ne peuvent être vendus séparément.11NL3971971Deze 8 potjes mogen niet apart worden verkocht.01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR4046479A consommer jusqu'au : A conserver entre 0°C et +7°C.En facing11NL3971972Te gebruiken tot: Te bewaren tussen 0°C en +6°C.rdw 04/11: Recommendation: remplacé " +7°C " par " +6°C " comme en F12TRADNL 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE104543A - Brassé natureALISTD11734
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/11734_3270190023814_valNut.xml b/t/inputs/import_convert_carrefour_france/11734_3270190023814_valNut.xml
new file mode 100644
index 0000000000000..65082181d42db
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/11734_3270190023814_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRVALENERLABELNLgGR125,00grammeVALENERLABELFRPORTIONFRPORTIONSOITFRVALENERLABELNLPORTIONNLPORTIONSOITNL˜ 1yaourtARCOLFRARCOLNLFR4580644NL4580644ENERKJ1EnergieENER kJKJO100,00Kilojoule3004kJKJO125,00Kilojoule3754FR4580645NL4580645ENERKC2EnergieENER kcalE14100,00kilocalorie724kcalE14125,00kilocalorie894FR4580646NL4580646FAT3NutrimentsNUT gGR100,00gramme3,45gGR125,00gramme4,36FR4580647NL4580647FASAT4NutrimentsNUT gGR100,00gramme2,111gGR125,00gramme2,613FR4580650NL4580650CHOAVL7NutrimentsNUT gGR100,00gramme6,32gGR125,00gramme7,83FR4580651NL4580651SUGAR8NutrimentsNUT gGR100,00gramme4,55gGR125,00gramme5,66FR4580655NL4580655PRO12NutrimentsNUT gGR100,00gramme4,08gGR125,00gramme5,010FR4580657NL4580657SALTEQ14NutrimentsNUT gGR100,00gramme0,112gGR125,00gramme0,142FR4580677NL4580677CA34MinérauxMIN mgME100,00milligramme14018mgME125,00milligramme17522FR374797FR374797FR374797NL374797NL374797NL374797AR013374797FR374798FR374798FR374798NL374798NL374798NL374798VARIEZ015374798FR384977NL384441PHRASETOPFR384978FR384979NL384442NL384443PHRASEBOTTOM37589 473103A - Brassé natureTABNUTSTDVITMIN 11734
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/12334_3245390028754_text.xml b/t/inputs/import_convert_carrefour_france/12334_3245390028754_text.xml
new file mode 100644
index 0000000000000..3512fffb97a4d
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/12334_3245390028754_text.xml
@@ -0,0 +1 @@
+FR4908446Gâteau breton à la crème de pruneaux11AL_DENOCOM0101FACINGSECTION FACINGFR4908447Crème de pruneaux origine FranceCPP : Ne pas mettre en gras (doit être à 75% de la type de F01 mais pas en gras). Ne pas modifier F0111AL_BENEF_CONS0202FACINGSECTION FACINGFR4908448 11AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR4908449 11AL_SPE_BIO0404FACINGSECTION FACINGFR4908450 11AL_ALCO_VOL0505FACINGSECTION FACINGFR4908451 11AL_PRESENTATION0606FACINGSECTION FACINGFR4908452Gâteau breton fourré à la crème de pruneaux.11AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR4908453Ingrédients : Farine de blé*,crème de pruneaux 26% (purée de pruneaux* 17%, sucre*), sucre*, beurre* 18%, oeufs frais*, jaunes d'oeufs frais*, poudres à lever: diphosphates et carbonates de sodium (contient blé), sel*. *Tous ces ingrédients sont d'origine française. Peut contenir des traces de soja, sésame et fruits à coque.CPP: Mettre à jour ce champ avec les corrections apportées11AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR4908454 11AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR4908455 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR4908456 11AL_PREPA1111UTILISATIONSECTION UTILISATIONFR4908457Conservation : A consommer de préférence avant la date figurant sur l'emballage. A conserver à l'abri de la chaleur et de l'humidité.11AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR4908458 11AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR4908459 11AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR4908460 11AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR4908461 10AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR4908462 10AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR4908463 10AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR4908464400 g 11AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR4908465 11AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR4908466Interdis - TSA 91431 - 91343 MASSY Cedex - France11AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR4908467Fabriqué par Biscuiterie Le Goff - 29600 Saint Martin des Champs pour Interdis11AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR4908468 11AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR4908469324539002875401AL_CODE_EAN2424CODE_EANSECTION CODE EANFR4908470"La recette du gâteau breton remonterait au 19ème siècle et se transmettrait de génération en génération. Nous avons revisité cette recette en l'agrémentant d'une crème de pruneaux. Cela fait plus de 30 ans, que nous fabriquons ce produit dans le Finistère en sélectionnant uniquement des ingrédients d'origine française." Biscuiterie Le Goff, à Saint Martin des Champs.MT RQ TT 22/01/20: Ajouter carte de France avec point légendé du mot "FINISTÈRE"11AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR4908471 11AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR4908472 11AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE11022GAT BRETON AUX PRUNEAUXALISTD12334
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/12334_3245390028754_valNut.xml b/t/inputs/import_convert_carrefour_france/12334_3245390028754_valNut.xml
new file mode 100644
index 0000000000000..6e860336dfc22
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/12334_3245390028754_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRgGR0,00grammeVALENERLABELFRPORTIONFRPORTIONSOITFR˜ ARCOLFRFR5270966ENERKJ1EnergieENER kJKJO100,00Kilojoule167620kJKJO0,00Kilojoule00FR5270967ENERKC2EnergieENER kcalE14100,00kilocalorie39920kcalE140,00kilocalorie00FR5270968FAT3NutrimentsNUT Chef ProduitgGR100,00gramme1623FR5270969FASAT4NutrimentsNUT Chef ProduitgGR100,00gramme1051FR5270972CHOAVL7NutrimentsNUT Chef ProduitgGR100,00gramme5822FR5270973SUGAR8NutrimentsNUT Chef ProduitgGR100,00gramme3538FR5270976FIBTG11NutrimentsNUT Chef ProduitgGR100,00gramme2,4FR5270977PRO12NutrimentsNUT Chef ProduitgGR100,00gramme4,69FR5270979SALTEQ14NutrimentsNUT Chef ProduitgGR100,00gramme0,62107633GAT BRETON AUX PRUNEAUXTABNUTSTD 12334
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/13003_3270190006787_text.xml b/t/inputs/import_convert_carrefour_france/13003_3270190006787_text.xml
new file mode 100644
index 0000000000000..c4e7df97306b3
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/13003_3270190006787_text.xml
@@ -0,0 +1 @@
+FR6749368Vinaigre de vin saveur 11NL6119251Wijnazijn smaakTRADNL 01AL_DENOCOM0101FACINGSECTION FACINGFR6749369Échalote 11NL6119252SjalotTRADNL 01AL_BENEF_CONS0202FACINGSECTION FACINGFR6749370 11NL611925301AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR6749371 PF 11NL611925401AL_SPE_BIO0404FACINGSECTION FACINGFR6749372 11NL611925501AL_ALCO_VOL0505FACINGSECTION FACINGFR6749373 PF 11NL611925601AL_PRESENTATION0606FACINGSECTION FACINGFR6749374Vinaigre de vin rouge aromatisé saveur échalote.11NL6119257Gearomatiseerde rodewijnazijn met sjalotsmaak.TRADNL 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR6749375Vinaigre de vin rouge, arôme naturel échalote avec autres arômes naturels, conservateur : disulfite de potassium.11NL6119258Rodewijnazijn, natuurlijk sjalotaroma met andere natuurlijke aroma's, conserveermiddel: kaliumdisulfiet.TRADNL 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR6749376 11NL611925901AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR6749377 Pas de nutriscore01NL6119260 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR6749378 PF 11NL611926101AL_PREPA1111UTILISATIONSECTION UTILISATIONFR6749379Ce vinaigre n'est pas pasteurisé. Il se conserve sans limite de temps à l'abri de la lumière, dans un endroit frais, sec et sans variation de température. Le dépôt qui peut se former correspond à une légère reprise de la fermentation, la qualité du produit n'en n'est pas dégradée. N° de lot : voir sur le bouchon.11NL6119262Deze azijn is niet gepasteuriseerd en is onbeperkt houdbaar op een donkere, frisse en droge plaats zonder temperatuurschommelingen. Het bezinksel dat zich kan vormen komt overeen met een lichte hervatting van de fermentatie, wat de kwaliteit van het product niet aantast. Lotnr.: zie dop.
30/10 KVA Sur le pdf: Merci de mettre un espace entre "donkere," et "frisse" comme dans le TT TRADNL 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR6749380 PF 11NL611926301AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR6749381 PF 11NL611926401AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR6749382Triman11NL6119265Triman01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR6749383 PF 10NL611926600AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR6749384 PF 10NL611926700AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR6749385 PF 10NL611926800AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR67493866% d'acidité 75 cl e11NL61192696% zuurgraad 75 cl eTRADNL 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR6749387 PF 11NL611927001AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR6749388Interdis - TSA 91431 - 91343 MASSY Cedex - France11NL6119271Interdis - TSA 91431 - 91343 MASSY Cedex - France01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR6749389 11NL611927201AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR6749390 PF 11NL611927301AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR6749391327019000678701NL6119274327019000678701AL_CODE_EAN2424CODE_EANSECTION CODE EANFR6749392 PF 11NL611927501AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR6749393 11NL611927601AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR6749394 PF 11NL611927701AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE14873Vinaigre de Vin rouge saveur EchaloteALISTD13003
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/13003_3270190006787_valNut.xml b/t/inputs/import_convert_carrefour_france/13003_3270190006787_valNut.xml
new file mode 100644
index 0000000000000..dddfb324a9bf3
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/13003_3270190006787_valNut.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/13766_8431876196009_text.xml b/t/inputs/import_convert_carrefour_france/13766_8431876196009_text.xml
new file mode 100644
index 0000000000000..6f6946089f424
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/13766_8431876196009_text.xml
@@ -0,0 +1 @@
+FR5597301ANANAS avec morceaux10ES5395186PIÑA con trozosTRADES 01AL_DENOCOM0101FACINGSECTION FACINGFR5597302SANS CONSERVATEURS SANS AROMES ARTIFICIELS SANS COLORANTS* * La couleur est apportée par des jus concentrés de fruits et de légumes.Traduction à adapter selon la réglementation espagnole Mentions sur opercules + banderoles10ES5395187SIN CONSERVANTES SIN AROMAS ARTIFICIALES SIN COLORANTES* *Color aportado de forma natural por sus ingredientes de origen vegetalTRADES 01AL_BENEF_CONS0202FACINGSECTION FACINGFR5597303500ge (4x125g) Lait fermenté demi écrémé sucré à l'ananas et aromatisé. x4-Reprendre la déno légale dans le même champs visuel que le poids net (sur les opercules) -Traduction à appliquer = "Leche fermentada semidesnatada azucarada con pina y aromatizada.10ES5395188500ge (4x125g) Leche fermentada semidesnatada azucarada con piña y aromatizada. x4TRADES 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR5597304 10ES539518901AL_SPE_BIO0404FACINGSECTION FACINGFR5597305 10ES539519001AL_ALCO_VOL0505FACINGSECTION FACINGFR5597306 10ES539519101AL_PRESENTATION0606FACINGSECTION FACINGFR5597307Lait fermenté demi écrémé sucré à l'ananas et aromatisé.
-Traduction à appliquer = "Leche fermentada semidesnatada azucarada con pina y aromatizada.10ES5395192Leche fermentada semidesnatada azucarada con piña y aromatizada.TRADES 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR5597308Lait écrémé 76,2%, préparation d'ananas 15% (ananas 7%, sucre 5,2%, sirop de glucose-fructose, jus concentré d'ananas 0,2%, amidon modifié de maïs, arôme naturel, stabilisant : pectine, extraits végétaux (citron, carthame), correcteurs d'acidité : citrate de sodium - acide citrique - citrate de calcium), crème, sucre 2,6%, protéines de lait en poudre, lait écrémé en poudre, ferments lactiques.
CPP : - Changer "zumo concentrado de limón, zumo concentrado de cártamo" par "concentrados vegetales (limón y cártamo)" - Ingrédient manquant : "arôme naturel" après "amidon modifié de maïs".10ES5395193Leche desnatada 76,2%, preparado de piña 15% (piña 7%, azúcar 5,2%, jarabe de glucosa-fructosa, zumo concentrado de piña 0,2%, almidón modificado de maíz, aroma natural, estabilizante: pectinas, concentrados vegetales (limón y cártamo), correctores de acidez: citratos de sodio - ácido cítrico - citratos de calcio), nata, azúcar 2,6%, proteínas de la leche en polvo, leche desnatada en polvo, fermentos lácticos.
02/07/20-NSF MR Remplacé "zumo concentrado de limón, zumo concentrado de cártamo" par "concentrados vegetales (limón y cártamo)", "pectina" par "pectinas" et ajouté "aroma natural" après "almidón modificado de maíz"TRADES 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR5597309 10ES539519401AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR5597310Nutriscore B00ES5395195Nutriscore B01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR5597311 10ES539519601AL_PREPA1111UTILISATIONSECTION UTILISATIONFR5597312À consommer jusqu'au : voir la date sur l'opercule. À conserver entre +1º C et +8º C.
CPP : Suivre TT10ES5395197Fecha de caducidad: ver la fecha en la tapa. Conservar entre +1º C y +8º C.TRADES 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR5597313 10ES539519801AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR5597314 10ES539519901AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR5597315Ecoemballage10ES5395200Ecoemballage
TRADES 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR5597322 10ES539520701AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR5597323AT 30751 CE10ES5395208AT 30751 CE
TRADES 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR5597324843187619600900ES5395209843187619600901AL_CODE_EAN2424CODE_EANSECTION CODE EANFR5597325 10ES539521001AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR5597326Ces 4 pots ne peuvent être vendus séparément.10ES5395211Estos 4 envases no pueden venderse por separado.TRADES 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR5597327 CPP : A supprimer > pas dans la TT10ES539521201AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE12258TT YAOURT ANANAS ESPAGNE PLNALISTD13766
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/13766_8431876196009_valNut.xml b/t/inputs/import_convert_carrefour_france/13766_8431876196009_valNut.xml
new file mode 100644
index 0000000000000..496c177081932
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/13766_8431876196009_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELESgGRgrammeVALENERLABELESPORTIONESPORTIONSOITESARCOLESES5847908ENERKJ1EnergieENER FournisseurkJKJO100,00Kilojoule3584kJKJOKilojoule00ES5847909ENERKC2EnergieENER FournisseurkcalE14100,00kilocalorie854kcalE14kilocalorie00ES5847910FAT3NutrimentsNUT FournisseurgGR100,00gramme1,52ES5847911FASAT4NutrimentsNUT FournisseurgGR100,00gramme1,05ES5847914CHOAVL7NutrimentsNUT FournisseurgGR100,00gramme145ES5847915SUGAR8NutrimentsNUT FournisseurgGR100,00gramme1314ES5847919PRO12NutrimentsNUT FournisseurgGR100,00gramme3,88ES5847921SALTEQ14NutrimentsNUT FournisseurgGR100,00gramme0,102FR505908PHRASETOPFR505909FR505910PHRASEBOTTOM8598TVN YAOURT ANANAS ESPAGNE PLNTABNUTSTD 13766
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/13837_3270190153085_text.xml b/t/inputs/import_convert_carrefour_france/13837_3270190153085_text.xml
new file mode 100644
index 0000000000000..bc7ea906eb2a2
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/13837_3270190153085_text.xml
@@ -0,0 +1 @@
+FR8330010INFUSION RÉGLISSE MENTHE11NL8164646INFUSIE ZOETHOUT MUNTTRADNL 01ES8111486MEZCLA PARA INFUSIONAR REGALIZ MENTA14/04/21-NSFMR Selon la normative espagnole sur Infusions (RD 3176/1983),un produit ne se peut pas appeler "Infusión" sil es plantes n'apparaissent pas à l'article 3. C'est le cas du réglisse, alors ce produit se peut appeler "Mezcla para infusionar".TRADES 01IT8105541INFUSO LIQUIRIZIA MENTAVDS 14/06: il n'y a pas de TT en Italien sur le PDFTRADIT 01AL_DENOCOM0101FACINGSECTION FACINGFR8330011 11NL8164647 TRADNL 01ES8111487 TRADES 01IT8105542 TRADIT 01AL_BENEF_CONS0202FACINGSECTION FACINGFR8330012x25 Infusion réglisse et menthe aromatisée.Associer x25 au picto sachet Coord : Déno légale en FOP mis à jour à la demande du CPP dans le drive11NL8164648x25 Gearomatiseerde infusie zoethout en munt.TRADNL 01ES8111488x25 Mezcla para infusionar de regaliz y menta aromatizada15/06/21-NSF PP Ajouté "Mezcla para infusionar de regaliz y menta aromatizada" selon TT FR. TRADES 01IT8105543x25 Infuso liquirizia e menta aromatizzata.VDS 14/06: il n'y a pas de TT en Italien sur le PDF. "Infuso liquirizia e menta aromatizzata." a été ajouté. Merci de màj le PDF.TRADIT 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR8330013 11NL8164649 01ES8111489 01IT8105544 01AL_SPE_BIO0404FACINGSECTION FACINGFR8330014 11NL8164650 01ES8111490 01IT8105545 01AL_ALCO_VOL0505FACINGSECTION FACINGFR8330015 11NL8164651 01ES8111491 01IT8105546 01AL_PRESENTATION0606FACINGSECTION FACINGFR8330016Infusion aromatisée réglisse et menthe.11NL8164652Gearomatiseerde infusie zoethout en munt.TRADNL 01ES8111492Mezcla para infusionar aromatizada regaliz y menta.14/04/21-NSFMR Selon la normative espagnole sur Infusions (RD 3176/1983),un produit ne se peut pas appeler "Infusión" sil es plantes n'apparaissent pas à l'article 3. C'est le cas du réglisse, alors ce produit se peut appeler "Mezcla para infusionar".TRADES 01IT8105547Infuso aromatizzato liquirizia e menta.TRADIT 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR8330017Réglisse 70,5%, menthe 27,5%, arômes.
TRADES 01IT8105548Liquirizia 70,5%, menta 27,5%, aromi.TRADIT 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR8330018 11NL8164654 01ES8111494 01IT8105549 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR8330019 01NL8164655 01ES8111495 01IT8105550 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR8330020Mettre le sachet dans la tasse, verser de l'eau frémissante, puis laisser infuser 3 à 4 minutes.
Exprimer la phrase ci-dessous en utilisant les pictos de l'ancien bat "Mettre le sachet dans la tasse, verser de l'eau frémissante, puis laisser infuser 3 à 4 minutes". Picto préparation de thé 95°C 200ml 3-4min"
11NL8164656Plaats het theebuiltje in een kop, voeg kokend water toe, laat vervolgens 3 à 4 minuten trekken. TRADNL 01ES8111496Meter la bolsita en la taza, verter agua hirviendo, dejar infusionar 3-4 minutos.TRADES 01IT8105551Mettere la bustina nella tazza, versare dell'acqua bollente, quindi lasciare in infusione 3-4 minuti.
TRADIT 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR8330021À conserver dans un endroit propre, sec et frais à l'abri de la lumière. Pour une dégustation optimale, à consommer de préférence avant le / N° de lot : voir sur le dessous de la boîte."Pour une dégustation optimale" uniquement en français.11NL8164657Op een schone, droge, frisse en donkere plaats bewaren. Ten minste houdbaar tot / Lotnr.: zie onderzijde doosje.TRADNL 01ES8111497Conservar en un lugar limpio, seco y fresco, protegido de la luz. Consumir preferentemente antes del / Nº de lote: ver en la parte inferior del envase.
TRADES 01IT8105552Conservare in luogo pulito, asciutto e fresco al riparo dalla luce. Da consumarsi preferibilmente entro il / N° di lotto: vedere sotto la confezione.TRADIT 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR8330022Contient de la réglisse, les personnes souffrant d'hypertension doivent éviter toute consommation excessive.11NL8164658Bevat zoethout, mensen met hoge bloeddruk dienen overmatig gebruik te vermijden.CDS 22/07: remplacer le tiret "Bevat zoethout -" par une virgule: "Bevat zoethout," en cohérence avec le FR et les autres langues -> suivre la TT (déjà demandé dans R1) 29/06 KVA Merci d'ajouter cette mention sur le pdf CDS 14/06: remplacer le tiret "Bevat zoethout -" par une virgule: "Bevat zoethout," en cohérence avec le FRTRADNL 01ES8111498Contiene regaliz, las personas que sufren hipertensión deben evitar un consumo excesivo.15/07/21-NSF MR SUR LE PDF: Remplacer "Contiene regaliz, las personas con hipertensión deben evitar un consumo excesivo." par "Contiene regaliz, las personas que sufren hipertensión deben evitar un consumo excesivo." suivre TT ES
29/06/21-NSF MR SUR LE PDF: Remplacer "Contiene regaliz, las personas con hipertensión deben evitar un consumo excesivo." par "Contiene regaliz, las personas que sufren hipertensión deben evitar un consumo excesivo." suivre TT ES
15/06/21-NSF PP Ajouté "Contiene regaliz, las personas que sufren hipertensión deben evitar un consumo excesivo." selon TT FR. Merci de mettre à jour sur le PDF.TRADES 01IT8105553Contiene liquirizia, evitare il consumo eccessivo in caso di ipertensione. TRADIT 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR8330023 11NL8164659 01ES8111499 01IT8105554 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR8330024Triman EcoemballagePictos de tri Italie : - Merci d'ajouter en-dessous du picto "A-014" le code d'identification : PAP21 Nom de la poubelle associé : CARTA
-Merci d'ajouter en-dessous du picto "A-181" le code d'identification : PAP22 Nom de la poubelle associé : CARTA
-Merci d'ajouter en-dessous du picto "A-064" le code d'identification : PAP22 Nom de la poubelle associé : ORGANICO
Per conferma, consulta il regolamento comunaleVDS 25/06: Corriger la consigne de tri IT. Il faut une poubelle verte pour ORGANICO VDS 14/06: "A-014: PAP21: CARTA A-181: PAP22: CARTA A-064: PAP22: ORGANICO
Per conferma, consulta il regolamento comunale" a été ajouté.TRADIT 01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR8330025 10NL8164661 00ES8111501 00IT8105556 00AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR833002637,5[GR]10NL8164662 TRADNL 00ES8111502 TRADES 00IT8105557 TRADIT 00AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR8330027 10NL8164663 00ES8111503 00IT8105558 00AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR833002837,5 g e (25 x 1,5 g) 25 SACHETS 11NL816466437,5 g e (25 x 1,5 g) 25 ZAKJESTRADNL 01ES811150437,5 g e (25 x 1,5 g) 25 BOLSITASTRADES 01IT810555937,5 g e (25 x 1,5 g) 25 BUSTINETRADIT 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR8330029 11NL8164665 01ES8111505 01IT8105560 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR8330030Interdis - TSA 91431 - 91343 MASSY Cedex - France.11NL8164666Interdis - TSA 91431 - 91343 MASSY Cedex - France.01ES8111506Interdis - TSA 91431 - 91343 MASSY Cedex - France.
TRADES 01IT8105561Interdis - TSA 91431 - 91343 MASSY Cedex - France.01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8330031 11NL8164667 01ES8111507 01IT8105562 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8330032 11NL8164668 01ES8111508 01IT8105563 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8330033327019015308501NL8164669327019015308501ES8111509327019015308501IT8105564327019015308501AL_CODE_EAN2424CODE_EANSECTION CODE EANFR8330034 11NL8164670 01ES8111510 01IT8105565 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR8330035 11NL8164671 01ES8111511 01IT8105566 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR8330036À consommer de préférence avant le / N° de lot : 11NL8164672Ten minste houdbaar tot / Lotnr.:TRADNL 01ES8111512Consumir preferentemente antes del / Nº de lote:TRADES 01IT8105567Da consumarsi preferibilmente entro il / N° di lotto :TRADIT 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE12423BoiteALISTD13837
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/13837_3270190153085_valNut.xml b/t/inputs/import_convert_carrefour_france/13837_3270190153085_valNut.xml
new file mode 100644
index 0000000000000..a05a23b958770
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/13837_3270190153085_valNut.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/14505_8431876331110_text.xml b/t/inputs/import_convert_carrefour_france/14505_8431876331110_text.xml
new file mode 100644
index 0000000000000..515d4d4fff4a3
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/14505_8431876331110_text.xml
@@ -0,0 +1 @@
+FR7839031Snow Flakes11NL7654988Snow Flakes01ES7658142Snow Flakes01IT7650097Snow Flakes01PL7648911Snow Flakes01EN7649476Snow Flakes01AL_DENOCOM0101FACINGSECTION FACINGFR7839032 11NL7654989 01ES7658143 01IT7650098 01PL7648912 01EN7649477 01AL_BENEF_CONS0202FACINGSECTION FACINGFR7839033 11NL7654990 01ES7658144 01IT7650099 01PL7648913 01EN7649478 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR7839034 11NL7654991 01ES7658145 01IT7650100 01PL7648914 01EN7649479 01AL_SPE_BIO0404FACINGSECTION FACINGFR7839035 11NL7654992 01ES7658146 01IT7650101 01PL7648915 01EN7649480 01AL_ALCO_VOL0505FACINGSECTION FACINGFR7839036 11NL7654993 01ES7658147 01IT7650102 01PL7648916 01EN7649481 01AL_PRESENTATION0606FACINGSECTION FACINGFR7839037Pétales de maïs grillés, enrobés au sucre source de 8 vitamines (niacine, B5, B2, B6, B1, B9, D, B12) et de fer.11NL7654994Geroosterde maïsvlokken, omhuld met suiker bron van 8 vitaminen (niacine, B5, B2, B6, B1, B9, D, B12) en van ijzer.
TRADNL 01ES7658148Copos de maíz tostados, recubiertos de azúcar, fuente de 8 vitaminas (niacina, B5, B2, B6, B1, B9, D, B12) y de hierro.
TRADES 01IT7650103Fiocchi di mais tostati, ricoperti con zucchero fonte di 8 vitamine (Niacina, B5, B2, B6, B1, B9, D, B12) e ferro.VDS 14/05: un espace entre B1 et B9 a été ajouté selon le commentaire du CPP. Merci de màj le PDFTRADIT 01PL7648917Prażone płatki kukurydziane pokryte cukrem, źródło 8 witamin (niacyna, B5, B2, B6, B1, B9, D, B12) i żelaza.TRADPL 01EN7649482Toasted corn flakes coated with sugar, source of 8 vitamins (niacin, B5, B2, B6, B1, B9, D, B12) and iron.(13/05) F07: ''coated in sugar'' remplacé par ''coated with sugar'' selon commentaire du coordinateur PF, merci de màj sur pdf (08/04) F07: ''Toasted flakes of corn, coated in sugar source of 8 vitamins (niacin, B5, B2, B6, B1, B9, D, B12) and iron.'' remplacé par ''Toasted corn flakes coated in sugar, source of 8 vitamins (niacin, B5, B2, B6, B1, B9, D, B12) and iron.''TRADEN 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR7839038Maïs 70%, sucre 28%, sel, extrait de malt d'orge, vitamines : niacine - acide pantothénique (B5) - riboflavine (B2) - vitamine B6 - thiamine (B1) - acide folique (B9) - vitamine D - vitamine B12, diphosphate ferrique. Peut contenir des traces d'arachides, de fruits à coque, de produit laitiers, de produits à base de soja et de graines de sésame.11NL7654995Maïs 70%, suiker 28%, zout, gerstemoutextract, vitaminen: niacine - pantotheenzuur (B5) - riboflavine (B2) - vitamine B6 - thiamine (B1) - foliumzuur (B9) - vitamine D - vitamine B12, ijzer(III)difosfaat. Kan sporen bevatten van aardnoten, noten, melkproducten, producten op basis van soja en sesamzaad.
12/01 KVA Attention, avant de pouvoir mettre les denrées enrichies dans le commerce en Belgique, il faut introduire un dossier de notification auprès des pouvoirs publics.TRADNL 01ES7658149Maíz 70%, azúcar 28%, sal, extracto de malta de cebada, vitaminas: niacina - ácido pantoténico (B5) - riboflavina (B2) - vitamina B6 - tiamina (B1) - ácido fólico (B9) - vitamina D - vitamina B12, difosfato férrico. Puede contener trazas de cacahuetes, frutos de cáscara, productos lácteos, productos a base de soja y semillas de sésamo.
TRADES 01IT7650104Mais 70%, zucchero 28%, sale, estratto di malto d'orzo, vitamine: niacina - acido pantotenico (B5) - riboflavina (B2) - vitamina B6 - tiamina (B1) - acido folico (B9) - vitamina D - vitamina B12, difosfato ferrico. Può contenere arachidi, frutta a guscio, prodotti a base di latte, prodotti a base di soia e semi di sesamo.MD 12/01: Les sources de vitamines n’ont pas été mentionnées sur la liste des ingrédients (Reg.1925/2006).TRADIT 01PL7648918Kukurydza 70%, cukier 28%, sól, ekstrakt słodu jęczmiennego, witaminy: niacyna - kwas pantotenowy (B5) - ryboflawina (B2) - witamina B6 - tiamina (B1) - kwas foliowy (B9) - witamina D - witamina B12, difosforan żelaza. Może zawierać orzeszki ziemne, orzechy, produkty mleczne, produkty sojowe i nasiona sezamu.R2 : "inne" suppriméTRADPL 01EN7649483Maize 70%, sugar 28%, salt, barley malt extract, vitamins: niacin - pantothenic acid (B5) - riboflavin (B2) - vitamin B6 - thiamin (B1) - folic acid (B9) - vitamin D - vitamin B12, ferric diphosphate. May contain traces of peanuts, nuts, milk products, soya-based products and sesame seeds. (13/05)F08: ''thiamine (B1) ''remplacé par ''thiamin (B1)'' selon commentaire du coordinateur PF (08/07) F08: ''thiamin (B1)'' remplacé par ''thiamine (B1)'' pour harmoniser avec autres références @ les deux orthographes sont ok. TRADEN 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR7839039 11NL7654996 01ES7658150 01IT7650105 01PL7648919 01EN7649484 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR7839040Nutriscore C01NL7654997Nutriscore C01ES7658151Es importante tener una alimentación variada y equilibrada y un estilo de vida saludable. El efecto beneficioso se obtiene consumiendo la porción de 30 g. La vitamina D contribuye a la absorción y utilización normal del calcio y el fósforo.09/04/21-NSF MR SUR LE PDF, TVN: 1. Mettre "/" entre "de los cuales azúcares" et "di cui zuccheri" 2. Verifier le bon ordre des langues sur le lignes "Vitamine / Vitamina / Witamina / Vitamina / vitamin B6" et "Vitamine / Vitamina / Witamina / Vitamina / vitamin 12", en ES (Vitamina)TRADES 01IT7650106Nutriscore CMD 08/04: Remplacer "Tiammina" par "Tiamina" sur le tableau. Sur le PDF rmplacer ''azúcares di'' par ''azúcares / di''TRADIT 01PL7648920Nutriscore C01EN7649485Nutriscore C01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR7839041Verse tes céréales dans un bol. Pour apprécier le croustillant de tes céréales, nous te conseillons d'utiliser du lait froid.11NL7654998Giet de ontbijtgranen in een kom. Om de ontbijtgranen lekker knapperig te houden, raden wij u aan om koude melk toe te voegen.TRADNL 01ES7658152Verter los cereales en un bol. Para disfrutar del crujiente de los cereales, se recomienda usar leche fría.TRADES 01IT7650107Versa i tuoi cereali in una ciotola. Per apprezzare la croccantezza dei tuoi cereali, ti consigliamo di utilizzare del latte freddo.TRADIT 01PL7648921Wsyp płatki do miski. Aby cieszyć się kruchością płatków, zalecamy stosowanie zimnego mleka.TRADPL 01EN7649486Pour your cereal into a bowl. We recommend you use cold milk to keep your cereal crunchy. TRADEN 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR7839042À conserver à l'abri de la chaleur et de l'humidité. Bien refermer le sachet intérieur après chaque utilisation. À consommer de préférence avant le : voir la date indiquée sur le dessus du paquet.11NL7654999Fris en droog bewaren. De binnenzak na elk gebruik goed sluiten. Ten minste houdbaar tot: zie datum bovenzijde pak.TRADNL 01ES7658153Conservar protegido del calor y de la humedad. Cerrar bien la bolsa interior después de cada uso. Consumir preferentemente antes del: ver fecha indicada en la parte superior del paquete.TRADES 01IT7650108Conservare lontano da fonti di calore e umidità. Chiudere bene il sacchetto interno dopo ogni utilizzo. Da consumarsi preferibilmente entro il: vedere la data indicata sopra la confezione.TRADIT 01PL7648922Przechowywać w suchym i chłodnym miejscu. Po każdym użyciu należy szczelnie zamknąć wewnętrzną torebkę. Najlepiej spożyć przed: patrz data na górze opakowania.TRADPL 01EN7649487Store in a cool, dry place. Close inner bag well after each use. Best before: see date on top of pack.TRADEN 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR7839043 11NL7655000 01ES7658154 01IT7650109 01PL7648923 01EN7649488 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR7839044 11NL7655001 01ES7658155 01IT7650110 01PL7648924 01EN7649489 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR7839045Ecoemballage11NL7655002Ecoemballage
TRADNL 01ES7658160500g e01IT7650115500g e01PL7648929500 g eTRADPL 01EN7649494500g e01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR7839050 11NL7655007 01ES7658161 01IT7650116 01PL7648930 01EN7649495 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR7839051Interdis - TSA 91431 - 91343 MASSY Cedex - France.11NL7655008Interdis - TSA 91431 - 91343 MASSY Cedex - France.
TRADNL 01ES7658162Interdis - TSA 91431 - 91343 MASSY Cedex - France.01IT7650117Interdis - TSA 91431 - 91343 MASSY Cedex - France.01PL7648931Interdis – TSA 91431 – 91343 MASSY Cedex – France.TRADPL 01EN7649496Interdis - TSA 91431 - 91343 MASSY Cedex - France.01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR7839052 11NL7655009 01ES7658163 01IT7650118 01PL7648932 01EN7649497 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR7839053 11NL7655010 01ES7658164 01IT7650119 01PL7648933 01EN7649498 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR7839054843187633111001NL7655011843187633111001ES7658165843187633111001IT7650120843187633111001PL7648934843187633111001EN7649499843187633111001AL_CODE_EAN2424CODE_EANSECTION CODE EANFR7839055TROUVE LE CHEMIN POUR QUE LE YÉTI FASSE UN TOTAL DE 16 POINTS11NL7655012VIND DE WEG VOOR DE YETI ZODAT HIJ IN TOTAAL 16 PUNTEN VERZAMELTLRE 09/04: Sur le pdf R1: merci de suivre la TT et remplacer "VERZAMELD" par "VERZAMELT" TRADNL 01ES7658166ENCUENTRA EL CAMINO PARA QUE EL YETI HAGA UN TOTAL DE 16 PUNTOS09/04/21-NSF MR SUR LE PDF: Traduction ES d' "ARRIVÉE" est "META"TRADES 01IT7650121TROVA LA STRADA AFFINCHE' LO YETI POSSA FARE UN TOTALE DI 16 PUNTIMD 08/04: La traduction de "Arrivée" est "Arrivo"TRADIT 01PL7648935ZNAJDŹ DROGĘ, ABY YETI MÓGŁ ZDOBYĆ WSZYSTKIE 16 PUNKTÓWTRADPL 01EN7649500FIND A PATH FOR THE YETI SO THAT HE MAKES A TOTAL OF 16 POINTSTRADEN 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR7839056 11NL7655013 01ES7658167 01IT7650122 01PL7648936 01EN7649501 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR7839057À consommer de préférence avant le / N° de lot :11NL7655014Ten minste houdbaar tot:23/04 KVA Sur le pdf: merci de remplacer "to" par "tot"(ok sur le pdf R1) LRE 09/04: TT NL màj à la demande de cpp: supprimé "/ Lotnr." (TT FR pas màj)TRADNL 01ES7658168Consumir preferentemente antes del / Nº de lote:TRADES 01IT7650123Da consumarsi preferibilmente entro il :MD 08/04: "N° di lotto" a été supprimé. Merci de màj le PDFTRADIT 01PL7648937Najlepiej spożyć przed:R1: "Nr partii" supprimé comme demandéTRADPL 01EN7649502Best before: (8/04) F27: ''/ Batch no.'' à la demande de CPPTRADEN 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE12874TT 500G PETALE MAIS SUCRE ESPALISTD14505
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/14505_8431876331110_valNut.xml b/t/inputs/import_convert_carrefour_france/14505_8431876331110_valNut.xml
new file mode 100644
index 0000000000000..d772fc1f61baf
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/14505_8431876331110_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRVALENERLABELNLVALENERLABELESVALENERLABELITVALENERLABELPLVALENERLABELENgGR0,00grammeVALENERLABELFRPORTIONFRPORTIONSOITFRVALENERLABELNLPORTIONNLPORTIONSOITNLVALENERLABELESPORTIONESPORTIONSOITESVALENERLABELITPORTIONITPORTIONSOITITVALENERLABELPLPORTIONPLPORTIONSOITPLVALENERLABELENPORTIONENPORTIONSOITENARCOLFRARCOLNLARCOLESARCOLITARCOLPLARCOLENFR7182700NL7182700ES7182700IT7182700PL7182700EN7182700ENERKJ1EnergieENER kJKJO100,00Kilojoule161919kJKJO0,00Kilojoule00FR7182701NL7182701ES7182701IT7182701PL7182701EN7182701ENERKC2EnergieENER kcalE14100,00kilocalorie38119kcalE140,00kilocalorie00FR7182702NL7182702ES7182702IT7182702PL7182702EN7182702FAT3NutrimentsNUT gGR100,00gramme0,81FR7182703NL7182703ES7182703IT7182703PL7182703EN7182703FASAT4NutrimentsNUT gGR100,00gramme0,32FR7182706NL7182706ES7182706IT7182706PL7182706EN7182706CHOAVL7NutrimentsNUT gGR100,00gramme8633FR7182707NL7182707ES7182707IT7182707PL7182707EN7182707SUGAR8NutrimentsNUT gGR100,00gramme3033FR7182710NL7182710ES7182710IT7182710PL7182710EN7182710FIBTG11NutrimentsNUT gGR100,00gramme2,50FR7182711NL7182711ES7182711IT7182711PL7182711EN7182711PRO12NutrimentsNUT gGR100,00gramme6,112FR7182713NL7182713ES7182713IT7182713PL7182713EN7182713SALTEQ14NutrimentsNUT gGR100,00gramme0,6311FR7182721NL7182721ES7182721IT7182721PL7182721EN7182721VITD22VitaminesVIT µgMC100,00microgramme5,0100FR7182725NL7182725ES7182725IT7182725PL7182725EN7182725THIA26VitaminesVIT mgME100,00milligramme1,1100FR7182726NL7182726ES7182726IT7182726PL7182726EN7182726RIBF27VitaminesVIT mgME100,00milligramme1,4100FR7182727NL7182727ES7182727IT7182727PL7182727EN7182727NIA28VitaminesVIT mgME100,00milligramme16100FR7182728NL7182728ES7182728IT7182728PL7182728EN7182728VITB629VitaminesVIT mgME100,00milligramme1,4100FR7182729NL7182729ES7182729IT7182729PL7182729EN7182729FOLDFE30VitaminesVIT µgMC100,00microgramme10050FR7182730NL7182730ES7182730IT7182730PL7182730EN7182730VITB1231VitaminesVIT µgMC100,00microgramme2,5100FR7182732NL7182732ES7182732IT7182732PL7182732EN7182732PANTAC33VitaminesVIT mgME100,00milligramme6,0100FR7182735NL7182735ES7182735IT7182735PL7182735EN7182735FE36MinérauxMIN mgME100,00milligramme7,050FR616067NL646681PHRASETOPNL646682NL646683PHRASEBOTTOM9059TVN 500G PETALE MAIS SUCRE ESPTABNUTSTDVITMIN 14505
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/17049_3245414671133_text.xml b/t/inputs/import_convert_carrefour_france/17049_3245414671133_text.xml
new file mode 100644
index 0000000000000..40fa227bf7c79
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/17049_3245414671133_text.xml
@@ -0,0 +1 @@
+FR6399515Cheeseburgers11NL5930290Cheeseburgers01ES5918482Cheeseburgers
TRADES 01IT5925181Cheeseburgers01PL5923540CheeseburgeryTRADPL 01RO5923235Cheeseburger-iTRADRO 01AL_DENOCOM0101FACINGSECTION FACINGFR6399516Préparation de viande de boeuf hachée cuite assaisonnée contenant des protéines de soja11NL5930291Gekruide en gegaarde vleesbereiding van gehakt rundvlees met soja-eiwitten
AVA 07/10: TT NL màj selon TT FR: Ajouté 'Gekruide en gegaarde vleesbereiding van gehakt rundvlees met soja-eiwitten' TRADNL 01ES5918483Preparado de carne de vacuno picada cocida sazonada que contiene proteínas de soja06/10/20_NSF_FD Ajouté "Preparado de carne de vacuno picada cocida sazonada que contiene proteínas de soja" selon TT FRTRADES 01IT5925182Preparazione alimentare di carne macinata di manzo cotta, condita, contenente proteine di soiaMD 07/10: Mise a jour selon le TT FR. Merci de màj le pdf.TRADIT 01PL5923541Przygotowane z mielonego, gotowanego i przyprawionego wyrobu z mięsa wołowego zawierającego białko sojowe. TRADPL 01RO5923236Preparat pe bază de carne de vită tocată gătită, condimentată, cu adaos de proteine din soiaF02 NSF RO -MAJ TT - rajouté le traduction.TRADRO 01AL_BENEF_CONS0202FACINGSECTION FACINGFR6399517x6 -PictoVBF - surgelé -Pictomicro ondes 1min 4011NL5930292x6 -PictoVBF - diepvries -Pictomicro ondes 1min 40
TRADNL 01ES5918484x6 -PictoVBF - surgelé -Pictomicro ondes 1min 4001IT5925183x6 -PictoVBF - surgelato -Pictomicro ondes 1min 40TRADIT 01PL5923542x6 -Piktogram VBF -mrożony -Piktogram kuchenka mikrofalowa 1 min 40 sek.TRADPL 01RO5923237x6 - PictoVBF - congelat rapid - Pictomicro ondes 1 min 40TRADRO 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR639951811NL593029301ES591848501IT592518401PL592354301RO592323801AL_SPE_BIO0404FACINGSECTION FACINGFR639951911NL593029401ES591848601IT592518501PL592354401RO592323901AL_ALCO_VOL0505FACINGSECTION FACINGFR6399520Suggestion de présentation11NL5930295ServeertipTRADNL 01ES5918487Sugerencia de presentaciónTRADES 01IT5925186L'immagine ha il solo scopo di presentare il prodotto TRADIT 01PL5923545Propozycja podaniaTRADPL 01RO5923240Sugestie de prezentareF06 NSF RO, le 20/10/2020 - R1 PDF - Rajoutez svp "Sugestie de prezentare" sur le PDF à côté des autres languesTRADRO 01AL_PRESENTATION0606FACINGSECTION FACINGFR6399521Préparations composées de pain spécial, de préparation de viande de bœuf hachée cuite assaisonnée contenant des protéines de soja, de sauce et de fromage fondu - Surgelé11NL5930296Bereidingen samengesteld uit speciaal brood, gekruide en gegaarde vleesbereiding van gehakt rundvlees met soja-eiwitten, saus en smeltkaas - Diepvries TRADNL 01ES5918488Preparación compuesta de pan especial, preparado de carne picada cocida sazonada que contiene proteínas de soja, de salsa y queso fundido - UltracongeladoTRADES 01IT5925187Preparazione a base di pane, preparazione alimentare di carne macinata di manzo cotta condita, contenente proteine di soia, salsa e formaggio fuso - SurgelatoYD 07/10: Le TT IT a ètè mise à jour. Merci de maj le pdf.TRADIT 01PL5923546Przetwory składające się ze specjalnego chleba, mielonego, gotowanego i przyprawionego wyrobu z mięsa wołowego zawierającego białko sojowe, sos i ser topiony – MrożoneTRADPL 01RO5923241Preparate compuse din pâine specială, preparat din carne de vită tocată gătită, condimentată, cu adaos de proteine din soia, sos și brânză topită - Congelate rapid.TRADRO 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR6399522Pain spécial 44% (farine de blé, eau, huile de colza, dextrose, levure, gluten de blé, graines de sésame 0,5%, sel, émulsifiant : mono et diglycérides d'acides gras, farine de fève, agent de traitement de la farine : acide ascorbique), viande de boeuf 19%, sauce 14% (eau, moutarde [eau, vinaigre d'alcool, graines de moutarde, sel, acidifiant : acide citrique, sucre, curcuma, antioxydant : disulfite de potassium, arômes naturels], concentré de tomates, sucre, huile de colza, oignons, cornichons [cornichons, sulfites, affermissant : E509], amidon modifié de maïs, vinaigre d'alcool, sel), fromage fondu 10% (fromage, eau, beurre, amidon modifié de pomme de terre, protéines de lait, sels de fonte : citrates de sodium, sel, colorants : caroténoïdes et extrait de paprika), protéines de soja réhydratées 7.7%, eau, protéines de soja 0.6%, fibres de pomme de terre, sel, arômes. Viande bovine origine France.
Ce cheeseburger contient 32% de préparation de viande de boeuf hachée cuite assaisonnée contenant des protéines de soja.11ES5918489Pan especial 44% (harina de trigo, agua, aceite de colza, dextrosa, levadura, gluten de trigo, semillas de sésamo 0,5%, sal, emulgente: monoglicéridos y diglicéridos de ácidos grasos, harina de habas, agente de tratamiento de la harina: ácido ascórbico), carne de vacuno 19%, salsa 14% (agua, mostaza [agua, vinagre de alcohol, semillas de mostaza, sal, acidulante: ácido cítrico, azúcar, cúrcuma, antioxidante: metabisulfito potásico, aromas naturales], concentrado de tomate, azúcar, aceite de colza, cebollas, pepinillos [pepinillos, sulfitos, endurecedor: E509], almidón modificado de maíz, vinagre de alcohol, sal), queso fundido 10% (queso, agua, mantequilla, almidón modificado de patata, proteínas de la leche, sales de fundido: citratos de sodio, sal, colorantes: carotenos y extracto de pimentón), proteínas de soja rehidratadas 7,7%, agua, proteínas de soja 0,6%, fibras de patata, sal, aromas. Carne de vacuno origen Francia.
Este cheeseburger contiene 32% de preparación de carne molida cocida sazonada que contiene proteínas de soja.06/10/20_NSF_FD Remplacé "carne de ternera" par "carne de vacuno" et "Esta hamburguesa con queso" par "Este cheeseburger" TRADES 01NL5930297Speciaal brood 44% (tarweboem, water, koolzaadolie, dextrose, gist, tarwegluten, sesamzaad 0,5%, zout, emulgator: mono- en diglyceriden van vetzuren, bonenmeel, meelverbeteraar: ascorbinezuur), rundvlees 19%, saus 14% (water, mosterd [water, alcoholazijn, mosterdzaad, zout, voedingszuur: citroenzuur, suiker, kurkuma, antioxidant: kaliumdisulfiet, natuurlijke aroma's], tomatenconcentraat, suiker, koolzaadolie, uien, augurken [augurken, verstevigingsmiddel: calciumchloride], gemodificeerd maïszetmeel, alcoholazijn, zout), smeltkaas 10% (kaas, water, boter, gemodificeerd aardappelzetmeel, melkeiwitten, smeltzouten: natriumcitraten, zout, kleurstoffen: carotenen en paprika-extract), gerehydrateerde soja-eiwitten 7,7%, water, soja-eiwitten 0,6%, aardappelvezels, zout, aroma's. Rundvlees van Franse oorsprong.
Deze cheesburger bevat 32% gekruide en gegaarde vleesbereiding van gehakt rundvlees met soja-eiwitten.
CDS 19/10: Echange e-mail RQ Céline Coroado le 19/10/2020: La liste d'ingrédients sur ce produit est donc : Pain spécial 44% (farine de blé, eau, huile de colza, dextrose, levure, gluten de blé, graines de sésame 0,5%, sel, émulsifiant : mono et diglycérides d'acides gras, farine de fève, agent de traitement de la farine : acide ascorbique), viande de boeuf 19%, sauce 14% (eau, moutarde [eau, vinaigre d'alcool, graines de moutarde, sel, acidifiant : acide citrique, sucre, curcuma, antioxydant : disulfite de potassium, arômes naturels], concentré de tomates, sucre, huile de colza, oignons, cornichons (cornichons, affermissant : chlorure de calcium), amidon modifié de maïs, vinaigre d'alcool, sel), fromage fondu 10% (fromage, eau, beurre, amidon modifié de pomme de terre, protéines de lait, sels de fonte : citrates de sodium, sel, colorants : caroténoïdes et extrait de paprika), protéines de soja réhydratées 7.7%, eau, protéines de soja 0.6%, fibres de pomme de terre, sel, arômes.
LRE 19/08: 1/ Suggestion: E509 = Calciumchloride / Chlorure de calcium. Remplacer "E509" par "chlorure de calcium" comme pour tous les autres additifs. 2/ Il suffit de souligner uniquement "blé" dans "gluten de blé" (TT NL màj). 3/ Merci de vérifier si "sulfites" ne doit pas être souligné et donc le produit contient moins de 10 ppm de sulfite?TRADNL 01IT5925188Pane 44% (farina di frumento, acqua, olio di colza, destrosio, lievito, glutine di frumento, semi di sesamo 0,5%, sale, emulsionante: mono- e digliceridi degli acidi grassi, farina di fave, agente di trattamento della farina: acido ascorbico), carne di manzo 19%, salsa 14% (acqua, senape [acqua, aceto di alcool, semi di senape, sale, acidificante: acido citrico, zucchero, curcuma, antiossidante: disolfito di potassio, aromi naturali], concentrato di pomodoro, zucchero, olio di colza, cipolle, cetriolini [cetriolini, solfiti, agente di resistenza: E509], amido modificato di mais, aceto di alcool, sale), formaggio fuso 10% (formaggio, acqua, burro, amido modificato di patata, proteine del latte, sali di fusione: citrati di sodio, sale, coloranti: caroteni ed estratto di paprica), proteine di soia reidratate 7,7%, acqua, proteine di soia 0,6%, fibre di patata, sale, aromi. Carne bovina origine Francia.
Questi cheeseburgers contengono il 32% di preparazione di carne macinata di manzo cotta condita, contenente proteine di soia.YD 07/10: "Pane speciale" a été remplacé par "Pane" et "Questi cheeseburgers contengono il 32% di preparato di carne m macinata cotta condita contenente proteine di soia." par "Questi cheeseburgers contengono il 32% di preparazione di carne macinata di manzo cotta condita, con proteine di soia". Merci de màj le pdf.TRADIT 01PL5923547Specjalny chleb 44% (mąka pszenna, woda, olej rzepakowy, dekstroza, drożdże, gluten pszenny, nasiona sezamu 0,5%, sól, emulgator: mono- i diglicerydy kwasów tłuszczowych, mąka fasolowa, środek do przetwarzania mąki: kwas askorbinowy), mięso wołowe 19%, sos 14% (woda, musztarda [woda, ocet spirytusowy, nasiona gorczycy, sól, substancja zakwaszająca: kwas cytrynowy, cukier, kurkuma, przeciwutleniacz: disiarczyn potasu, aromaty naturalne], koncentrat pomidorowy, cukier, olej rzepakowy, cebula, korniszony [korniszony, siarczyny, substancja wiążąca: E509], modyfikowana skrobia kukurydziana, ocet spirytusowy, sól), ser topiony 10% (ser, woda, masło, modyfikowana skrobia ziemniaczana, białko mleka, sole emulgujące: cytryniany sodu, sól, barwniki: karotenoidy i wyciąg z papryki), uwodnione białko sojowe 7,7%, woda, białko sojowe 0,6%, błonnik ziemniaczany, sól, aromaty. Mięso wołowe pochodzące z Francji.
Cheeseburger zawiera 32% mielonego, gotowanego i przyprawionego wyrobu z mięsa wołowego zawierającego białko sojowe.TRADPL 01RO5923242Pâine specială 44% (făină de grâu, apă, ulei de rapiță, dextroză, drojdie, gluten din grâu, semințe de susan 0,5%, sare, emulsifiant: mono- și digliceride ale acizilor grași, făină de fasole, agent de tratare a făinii: acid ascorbic), carne de vită 19%, sos 14% (apă, muștar [apă, oțet de alcool, semințe de muștar, sare, acidifiant: acid citric, zahăr, curcuma, antioxidant: metabisulfit de potasiu, arome naturale], pastă de tomate, zahăr, ulei de rapiță, ceapă, castraveți cornișon [castraveți cornișon, agent de întărire: clorură de calciu], amidon modificat din porumb, oțet de alcool, sare), brânză topită 10% (brânză, apă, unt, amidon modificat din cartofi, proteine din lapte, săruri de topire: citrați de sodiu, sare, coloranți: caroteni și extract de ardei roșu), proteine din soia rehidratată 7,7%, apă, proteine din soia 0,6%, fibre din cartofi, sare, arome. Carnea de vită are origine Franța. Acești cheeseburger-i conțin 32% preparat din carne de vită tocată gătită, condimentată, cu adaos de proteine din soia.
F08 NSF RO 20/10/2020 - MAJ TT - Mettre à jour aussi le PDF. - Changez svp sur pdf ``;` avec ``,`` - ``...acizilor grași, făină de fasole,...„ - Changez svp „ (apă, muștar [apă,...„ par „(apă, muștar [apă,...„ - Changez svp „turmeric„ par „curcuma„ - Correction traduction : castraveți cornișon [castraveți cornișon, agent de întărire: clorură de calciu], ...- Mettre à jour aussi sur le PDF. - MAJ ponctuation: Remplacé "," avec traduction pour "et" "și": coloranți: caroteni și extract de ardei roșu), ...TRADRO 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR639952311NL593029801ES591849001IT592518901PL592354801RO592324301AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR6399524Nutriscore D 01NL5930299Nutriscore D01ES5918491Nutriscore D01IT5925190Nutriscore D01PL5923549Nutriscore D01RO5923244Nutriscore D01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR6399525Au four à micro-ondes : Après avoir retiré le cheeseburger de son sachet, placez-le encore surgelé sur une assiette. Faites-le chauffer 1min.30 à 1min. 40 selon la puissance de votre four à micro-ondes. Laissez reposer 1 min. et dégustez.11NL5930300In de microgolfoven: Haal de cheeseburger uit het zakje en leg hem nog diepgevroren op een bord. Verwarm 1min30 à 1min40, naargelang het vermogen van uw microgolfoven. Laat 1 min rusten en eet smakelijk.
TRADNL 01ES5918492En el microondas: Después de sacar el cheeseburger de su bolsa, colocarlo aún ultracongelado en un plato. Calentarlo durante 1 minuto 30 a 1 minuto 40 dependiendo de la potencia del microondas. Dejar reposar 1 minuto y disfrutar.06/10/20_NSF_FD Remplacé "Una vez el cheeseburger retirado de su bolsa," par "Después de sacar el cheeseburger de su bolsa"TRADES 01IT5925191Al microonde: Dopo aver estratto il cheeseburger dal suo sacchetto, posizionatelo ancora congelato su un piatto. Fatelo scaldare 1 min.30-1 min.40 a seconda della potenza del vostro forno a microonde. Lasciate riposare 1 min. e gustate.TRADIT 01PL5923550Kuchenka mikrofalowa: po wyjęciu cheeseburgera z opakowania położyć go na talerzu. Podgrzewać przez 1 min 30 sek. – 1 min 40 sek. w zależności od mocy kuchenki mikrofalowej. Odczekać minutę.TRADPL 01RO5923245În cuptorul cu microunde: După ce scoateți cheeseburger-ul din ambalaj, așezați-l congelat pe o farfurie. Încălziți-l timp de 1 min. 30 până la 1 min. 40 în funcție de puterea cuptorului cu microunde. Lăsați-l să se răcească timp de 1 min. și degustați-l.TRADRO 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR6399526À conserver dans un congélateur *** (ou ****) à -18°C. Attention, ne pas recongeler après décongélation. Pour une dégustation optimale, à consommer de préférence avant la date indiquée sur le côté de la boîte.ne pas traduire la mention 'pour une dégustation optimale' dans les langues autres que FR11NL5930301Te bewaren in een diepvriezer*** (of ****) op -18°C. Na ontdooiing niet opnieuw invriezen. Ten minste houdbaar tot de datum vermeld op de zijkant van de doos.
CDS 19/10: Suggestion: mettre la mention "Attention, ne pas recongeler après décongélation." en évidence dans toutes les languesTRADNL 01ES5918493Conservar en un congelador*** (o ****) a -18 ºC. Atención, no volver a congelar una vez descongelado. Consumir preferentemente antes de la fecha indicada en el lateral del envase.TRADES 01IT5925192Conservare in congelatore *** (o ****) a -18°C. Attenzione, non ricongelare dopo lo scongelamento. Da consumarsi preferibilmente entro la data indicata sul lato della confezione.TRADIT 01PL5923551Przechowywać w zamrażalniku *** (lub ****) w temperaturze -18°C. Uwaga, nie zamrażać ponownie po rozmrożeniu. Najlepiej spożyć przed datą wskazaną na boku pudełka.TRADPL 01RO5923246A se păstra la congelator *** (sau ****) la max. -18 °C. Atenție, a nu se recongela după decongelare. A se consuma de preferință înainte de data indicată pe partea laterală a cutiei.F12 NSF RO 20/10/2020 - MAJ TT - Mettre à jour aussi le PDF. - Rajouté la lettre "n": Atenție, a nu se recongela ... - Supprimé "Pour une dégustation optimale"TRADRO 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR639952711NL593030201ES591849401IT592519301PL592355201RO592324701AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR639952811NL593030301ES591849501IT592519401PL592355301RO592324801AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR6399529Triman Ecoemballage11NL5930304Triman Ecoemballage01ES5918496Triman Ecoemballage
TRADES 01IT5925199Peso netto 750g (6x125g)YD 07/10: Mise à jour selon le TT FR. Merci de màj le pdf.TRADIT 01PL5923558750g (6x125g)01RO5923253Cantitate netă 750 g (6x125 g)F19 NSF RO 20/10/2020 - MAJ TT - rajouté la traduction pour "Poids net" = Cantitate netăTRADRO 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR639953411NL593030901ES591850101IT592520001PL592355901RO592325401AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR6399535Interdis - TSA 91431 - 91343 MASSY Cedex - France11NL5930310Interdis - TSA 91431 - 91343 MASSY Cedex - France01ES5918502Interdis - TSA 91431 - 91343 MASSY Cedex - France
TRADES 01IT5925201Interdis - TSA 91431 - 91343 MASSY Cedex - France01PL5923560Interdis – TSA 91431 – 91343 MASSY Cedex – FranceTRADPL 01RO5923255Interdis - TSA 91431 - 91343 MASSY Cedex - FranceF21, NSF, le 20.10.2020, MAJ TT Franța = FranceTRADRO 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR639953611NL593031101ES591850301IT592520201PL592356101RO592325601AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR6399537FR 03.315.001 CE11NL5930312FR 03.315.001 CE01ES5918504FR 03.315.001 CE
TRADES 01IT5925203FR 03.315.001 CE01PL5923562FR 03.315.001 CE01RO5923257FR 03.315.001 CE
TRADRO 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR6399538324541467113301NL5930313324541467113301ES5918505324541467113301IT5925204324541467113301PL5923563324541467113301RO5923258324541467113301AL_CODE_EAN2424CODE_EANSECTION CODE EANFR639953911NL593031401ES591850601IT592520501PL592356401RO592325901AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR639954011NL593031501ES591850701IT592520601PL592356501RO592326001AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR6399541À consommer de préférence avant le : / Produit congelé le : / N° de lot :11NL5930316Ingevroren op: / Lotnr.: / Ten minste houdbaar tot:AVA 07/10: TT NL màj, comme demandé par le CPP: remplacé 'Ten minste houdbaar tot: / Ingevroren op: / Lotnr.: ' par 'Ingevroren op: / Lotnr.: / Ten minste houdbaar tot:' (TT FR pas màj) TRADNL 01ES5918508Consumir preferentemente antes del: / Fecha de congelación: / Nº de lote:
06/10/20_NSF_FD Remplacé "Consumir preferentemente antes del: / Nº de lote:" par "Consumir preferentemente antes del: / Fecha de congelación: / Nº de lote:" selon TT FRTRADES 01IT5925207Da consumarsi preferibilmente entro il : / Prodotto congelato il : / N° di lotto:TRADIT 01PL5923566Najlepiej spożyć przed końcem:/ Produkt zamrożony dnia:/ Nr partii: TRADPL 01RO5923261A se consuma de preferință înainte de : / Congelat la : / Nr. lot:F27 NSF RO 20/10/2020 - MAJ TT - Remplacé Produs congelat la : par Congelat la: Mettre à jour aussi le PDF. TRADRO 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE15811cheeseburger x6 surg SimplALISTD17049
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/17049_3245414671133_valNut.xml b/t/inputs/import_convert_carrefour_france/17049_3245414671133_valNut.xml
new file mode 100644
index 0000000000000..fdbcfb4afd123
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/17049_3245414671133_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRVALENERLABELNLVALENERLABELESVALENERLABELITVALENERLABELPLVALENERLABELROgGR0,00grammeVALENERLABELFRPORTIONFRPORTIONSOITFRVALENERLABELNLPORTIONNLPORTIONSOITNLVALENERLABELESPORTIONESPORTIONSOITESVALENERLABELITPORTIONITPORTIONSOITITVALENERLABELPLPORTIONPLPORTIONSOITPLVALENERLABELROPORTIONROPORTIONSOITRO˜ ARCOLFRARCOLNLARCOLESARCOLITARCOLPLARCOLROFR6075150NL6075150ES6075150IT6075150PL6075150RO6075150ENERKJ1EnergieENER Chef ProduitkJKJO100,00Kilojoule108013kJKJO0,00Kilojoule00FR6075151NL6075151ES6075151IT6075151PL6075151RO6075151ENERKC2EnergieENER Chef ProduitkcalE14100,00kilocalorie25813kcalE140,00kilocalorie00FR6075152NL6075152ES6075152IT6075152PL6075152RO6075152FAT3NutrimentsNUT Chef ProduitgGR100,00gramme1318FR6075153NL6075153ES6075153IT6075153PL6075153RO6075153FASAT4NutrimentsNUT Chef ProduitgGR100,00gramme5,226FR6075156NL6075156ES6075156IT6075156PL6075156RO6075156CHOAVL7NutrimentsNUT Chef ProduitgGR100,00gramme229FR6075157NL6075157ES6075157IT6075157PL6075157RO6075157SUGAR8NutrimentsNUT Chef ProduitgGR100,00gramme3,24FR6075160NL6075160ES6075160IT6075160PL6075160RO6075160FIBTG11NutrimentsNUT Chef ProduitgGR100,00gramme2,0FR6075161NL6075161ES6075161IT6075161PL6075161RO6075161PRO12NutrimentsNUT Chef ProduitgGR100,00gramme1225FR6075163NL6075163ES6075163IT6075163PL6075163RO6075163SALTEQ14NutrimentsNUT Chef ProduitgGR100,00gramme1,322FR526075PHRASETOPFR526076FR526077PHRASEBOTTOM10887cheeseburger x6 surg SimplTABNUTSTD 17049
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/17290_8431876180701_text.xml b/t/inputs/import_convert_carrefour_france/17290_8431876180701_text.xml
new file mode 100644
index 0000000000000..16053c73fee8a
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/17290_8431876180701_text.xml
@@ -0,0 +1 @@
+FR8361063Copa con Nata y Cacao10ES7999754Copa con Nata y Cacao01AL_DENOCOM0101FACINGSECTION FACINGFR8361064Saveur chocolat10ES7999755Sabor chocolateTRADES 01AL_BENEF_CONS0202FACINGSECTION FACINGFR8361065Picto X4 yaourt10ES7999756Picto X4 yaourt01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR8361066 10ES7999757 01AL_SPE_BIO0404FACINGSECTION FACINGFR8361067 10ES7999758 01AL_ALCO_VOL0505FACINGSECTION FACINGFR8361068 10ES7999759 01AL_PRESENTATION0606FACINGSECTION FACINGFR8361069Dessert lacté à la crème et au cacao. Saveur chocolat.10ES7999760Postre lácteo con nata y cacao. Sabor chocolate.29/03/21_NSF_FD Comme déjà demandé, remplacer "Postre lácteo con nata y al cacao" par "Postre lácteo con nata y cacao"
05/02/21_NSF_FD Remplacé "Postre lácteo con nata y al cacao" par "Postre lácteo con nata y cacao"TRADES 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR8361070Lait écrémé 64,1%, crème pasteurisée 20,5%, sucre, lactose, amidon modifié de maïs, cacao en poudre 0,7%, épaississants: carraghénanes et gomme guar; gélatine bovine, protéines de lait, cacao maigre en poudre 0,1%, émulsifiants: esters lactiques des mono- et diglycérides d'acides gras, arôme, arôme naturel de vanille, lactose et minéraux du lait. Peut contenir des traces de soja.10ES7999761Leche desnatada 64,1%, nata pasteurizada 20,5%, azúcar, lactosa, almidón modificado de maíz, cacao en polvo 0,7%, espesantes: carragenanos y goma guar, gelatina de vacuno, proteínas de la leche, cacao magro en polvo 0,1%, emulgentes: ésteres lácticos de monoglicéridos y diglicéridos de ácidos grasos, aroma, aroma natural de vainilla, lactosa y minerales de la leche. Puede contener trazas de soja.
TRADES 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR8361071 10ES7999762 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR8361072Nutriscore C00ES7999763Nutriscore C01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR8361073 10ES7999764 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR8361074À conserver entre +1°C et +8°C. À consommer jusqu'au : voir la date figurant sur le dessus de l'emballage.10ES7999765Conservar entre +1°C y +8°C. Fecha de caducidad: ver la fecha indicada en la parte superior del envase.01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR8361075 10ES7999766 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR8361076 10ES7999767 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR8361077ecoemballage10ES7999768ecoemballage01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR8361078 10ES7999769 00AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR8361079 10ES7999770 00AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR8361080 10ES7999771 00AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR8361081460g 2 x (2 x 115g) e10ES7999772460g 2 x (2 x 115g) e01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR8361082 10ES7999773 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR8361083Interdis - TSA 91431 - 91343 MASSY Cedex - France10ES7999774Interdis - TSA 91431 - 91343 MASSY Cedex - France01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8361084 10ES7999775 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8361085FR 62.853.030 CE10ES7999776FR 62.853.030 CE01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8361086843187618070100ES7999777843187618070101AL_CODE_EAN2424CODE_EANSECTION CODE EANFR8361087 10ES7999778 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR8361088Ces 4 pots ne peuvent être vendus séparément.10ES7999779Estos 4 envases no pueden venderse por separado.01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR8361089A conserver entre 1°C et +8°C A consommer jusqu'au : 10ES7999780Conservar entre +1°C y +8°C. Fecha de caducidad:01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE17711copa sabor chocolate y nataALISTD17290
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/17290_8431876180701_valNut.xml b/t/inputs/import_convert_carrefour_france/17290_8431876180701_valNut.xml
new file mode 100644
index 0000000000000..d91b2357be37a
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/17290_8431876180701_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELESgGR0,00grammeVALENERLABELESPORTIONESPORTIONSOITESARCOLESES7998980ENERKJ1EnergieENER Chef ProduitkJKJO100,00Kilojoule5877kJKJO0,00Kilojoule00ES7998981ENERKC2EnergieENER Chef ProduitkcalE14100,00kilocalorie1407kcalE140,00kilocalorie00ES7998982FAT3NutrimentsNUT Chef ProduitgGR100,00gramme6,59ES7998983FASAT4NutrimentsNUT Chef ProduitgGR100,00gramme4,221ES7998986CHOAVL7NutrimentsNUT Chef ProduitgGR100,00gramme177ES7998987SUGAR8NutrimentsNUT Chef ProduitgGR100,00gramme1517ES7998990FIBTG11NutrimentsNUT gGR100,00gramme< 0,50ES7998991PRO12NutrimentsNUT gGR100,00gramme3,06ES7998993SALTEQ14NutrimentsNUT gGR100,00gramme0,132FR676992PHRASETOPFR676993FR676994PHRASEBOTTOM12579copa sabor chocolate y nataTABNUTSTD 17290
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/17984_3560071198954_text.xml b/t/inputs/import_convert_carrefour_france/17984_3560071198954_text.xml
new file mode 100644
index 0000000000000..e130319ca1ba9
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/17984_3560071198954_text.xml
@@ -0,0 +1 @@
+FR8433397Liquide Vaisselle10ES9135732LavavajillasTRADES 01IT9135756Detersivo per stoviglieTRADIT 01DD_DENOCOM0101FACINGSECTION FACINGFR84333980% perfume / colorants 100% actives of vegetal origin Sensitive Skin / Tolerance tested* Ecolabel
FRN (20/05) F02: 1) IT TT màj selon FR TT. Merci de màj le PDF. La phrase "50% recycled plastic" a été supprimée. 2) Il n'y a pas la IT TT sur le PDF.TRADIT 01DD_BENEF_CONS0202FACINGSECTION FACINGFR8433399500mL[ZEMETRO]
518746110ES9135734500mL
5187461
27/04/21_NSF_FD Ajouté "5187461" selon modifs TT FR et commentaires CoordTRADES 01IT9135758500mL
5187461FRN (26/04) F03: IT TT màj selon FR TT. Merci de màj le PDF.TRADIT 01DD_TXT_LIB_FACE0303FACINGSECTION FACINGFR8433400 00ES9135735 01IT9135759 01DD_PARF_SYNT0404FACINGSECTION FACINGFR8433401Liquide vaisselle ECOplanet sans parfum10ES9135736Lavavajillas ECOplanet sin perfume TRADES 01IT9135760Detersivo per stoviglie ECOplanet senza profumoTRADIT 01DD_DENOLEGAL0505DENOMINATIONSECTION DENOMINATIONFR8433402Liquide vaisselle aux actifs d'origine végétale, sans parfum et sans colorant, idéal pour les peaux sensibles. "*Tolérance testée sous contrôle dermatologique"JLT 01/09 TT Si pas de place pour texte marketing, écrire "*Tolérance testée sous contrôle dermatologique" à la suite du champ F0510ES9135737Lavavajillas con activos de origen vegetal, sin perfume y sin colorante, ideal para pieles sensibles. "*Tolerancia testada bajo control dermatológico"TRADES 01IT9135761Detersivo per stoviglie con ingredienti attivi di origine vegetale, senza profumo e senza coloranti, ideale per le pelli sensibili. "*Tollerabilità testata sotto controllo dermatologico"TRADIT 01DD_INFOPROD0606AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR8433403518746210ES9135738518746227/04/21_NSF_FD Remplacé "Recto = 5180964 Verso = 5180965" par "5187462" selon commentaires CoordTRADES 01IT91357625187462FRN (26/04) F07: IT TT màj selon FR TT. Merci de màj le PDF.TRADIT 01DD_TXT_LIB_DOS0707AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR8433404Contient entre autres composants : 5% ou plus mais moins de 15%:agents de surface anioniques, moins de 5%:agents de surface amphotères, agents de surface non ioniques Également:conservateur (lactic acid)10ES9135739Contiene entre otros componentes: igual o superior al 5% pero inferior al 15%: tensioactivos aniónicos inferior al 5%: tensioactivos anfotéricos, tensioactivos no iónicos También: agente conservante (lactic acid)
27/04/21_NSF_FD Rajouter une virgule après "aniónicos et anionici" selon commentaires CoordTRADES 01IT9135763Contiene tra altri componenti: uguale o superiore al 5% ma inferiore al 15%:tensioattivi anionici inferiore al 5%:tensioattivi anfoteri, tensioattivi non ionici Anche:conservante (lactic acid)FRN (26/04) F08: 1/Merci de ajouter une virgul entre "anionici" et "inferiore". "...tensioattivi anionici, inferiore al 5%...". 2/ merci de remplacer ", tensioattivi non onici" par "tensioattivi non ionici" sur le PDFTRADIT 01DD_COMPO0808COMPOSITIONSECTION COMPOSITIONFR8433405INGREDIENTS: www.info-detergent.com00ES9135740INGREDIENTS: www.info-detergent.com01IT9135764INGREDIENTS: www.info-detergent.com01DD_INFODETERG0909COMPOSITIONSECTION COMPOSITIONFR8433406Immergez la vaisselle dans l'eau tiède au lieu de la laver au jet du robinet, et respectez les doses recommandées. Un lavage efficace ne nécessite pas une quantité de mousse importante. Laver et rincer à l’eau potable.Dosage recommandé pour 5L d’eau :Vaisselle peu sale : 2,5 ml (1/2 cuillère à café)Vaisselle sale : 5 ml (1 cuillère à café)10ES9135741Sumergir la vajilla en agua tibia en lugar de lavarla dejando correr el agua, y respetar las dosis recomendadas. No se necesita mucha espuma para lograr un resultado óptimo. Lavar y aclarar con agua potable. Dosis recomendada para 5L de agua: Vajilla poco sucia: 2,5 ml (1/2 cucharilla). Vajilla sucia: 5 ml (1 cucharilla).
19/05/21-NSF MR Remplacé "cucharadita de café" par "cucharilla" SUR LE PDF: Remplacer "Consejos de uso" par "Modo de empleo"TRADES 01IT9135765Si consiglia di non utilizzare acqua corrente ma di immergere le stoviglie nell'acqua tiepida e di utilizzare il prodotto secondo la dose raccomandata. Per un lavaggio ottimale delle stoviglie non occorre una quantità eccessiva di schiuma. Lavare e risciacquare con acqua potabile. Dosaggio raccomandato per 5L d'acqua: Stoviglie poco sporche: 2,5 ml(1/2cucchiaino). Stoviglie sporche:5ml (1cucchiaino).TRADIT 01DD_CONS_UTILI1010UTILISATIONSECTION UTILISATIONFR8433407 10ES9135742 01IT9135766 01DD_CONS_CONSERV1111CONSERVATIONSECTION CONSERVATIONFR8433408ATTENTION Provoque une sévère irritation des yeux. Tenir hors de portée des enfants. EN CAS DE CONTACT AVEC LES YEUX : Rincer avec précaution à l’eau pendant plusieurs minutes. Enlever les lentilles de contact si la victime en porte et si elles peuvent être facilement enlevées. Continuer à rincer. Si l’irritation oculaire persiste : consulter un médecin. En cas de consultation d’un médecin, garder à disposition le récipient ou l’étiquette. Centre antipoison Paris : 01.40.05.48.48. / Belgique : 070/245 245.10ES9135743ATENCIÓN Provoca irritación ocular grave. Mantener fuera del alcance de los niños. EN CASO DE CONTACTO CON LOS OJOS: Enjuagar con agua cuidadosamente durante varios minutos. Quitar las lentes de contacto cuando estén presentes y pueda hacerse con facilidad. Proseguir con el lavado. Si persiste la irritación ocular: Consultar a un médico. Si se necesita consejo médico, tener a mano el envase o la etiqueta. No ingerir. En caso de accidente, consultar al Servicio Médico de Información Toxicológica, teléfono 91 562 04 20.
TRADES 01IT9135767ATTENZIONE Provoca grave irritazione oculare. Tenere fuori dalla portata dei bambini. IN CASO DI CONTATTO CON GLI OCCHI: sciacquare accuratamente per parecchi minuti. Togliere le eventuali lenti a contatto se è agevole farlo. Continuare a sciacquare. Se l’irritazione degli occhi persiste, consultare un medico. In caso di consultazione di un medico, tenere a disposizione il contenitore o l’etichetta del prodotto. NULL01DD_PRECAUTION1212PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8433409[DSGH07]00ES913574401IT913576801DD_PICTO_DANG1313PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8433410 00ES9135745 01IT9135769 01DD_PICTO_DIV1414PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8433411 00ES9135746 01IT9135770 01DD_PICTO_AISE1515PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8433412[ZPOINTVERT]00ES913574701IT913577101DD_LOGO_RECY1616EMBALLAGESECTION EMBALLAGEFR8433413 00ES9135748 01IT9135772 01DD_LOGO_DIV1717EMBALLAGESECTION EMBALLAGEFR8433414500mL[ZEMETRO]10ES9135749500mL
27/04/21_NSF_FD Ajouté le code "UFI:UFI: 5UT1-F6UY-5N0Q-44JW" selon commentaires CoordTRADES 01IT9135776NIF:A58060179
UFI: 5UT1-F6UY-5N0Q-44JWFRN (26/04) F21: IT TT màj selon FR TT. Merci de màj le PDF.TRADIT 01DD_CODE_EMB2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8433418Fabriqué en Belgique par NIF: A58060179 pour Interdis10ES9135753Fabricado en Bélgica por NIF: A58060179 para Interdis
TRADES 01IT9135777Prodotto in Belgio da NIF: A58060179 per Interdis.01DD_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8433419356007119933300ES9135754356007119933301IT9135778356007119933301DD_CODE_EAN2323CODE_EANSECTION CODE EANFR8433420 00ES9135755 01IT9135779 01DD_MARQ_CE2424AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMEN17489LIQUIDE VAISSELLE ECOPLANET SANS PARFUM SUD 500MLDPHDET17984
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/17984_3560071198954_valNut.xml b/t/inputs/import_convert_carrefour_france/17984_3560071198954_valNut.xml
new file mode 100644
index 0000000000000..8a3f33d09f2f5
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/17984_3560071198954_valNut.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/1913_3270190174387_text.xml b/t/inputs/import_convert_carrefour_france/1913_3270190174387_text.xml
new file mode 100644
index 0000000000000..7ac26aa5a4415
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/1913_3270190174387_text.xml
@@ -0,0 +1 @@
+FR691364CLASSIC11NL693849CLASSIC01ES693802CLASSIC01IT693825CLASSIC01DH_DENOCOM0101FACINGSECTION FACINGFR69136511NL693861TRADNL 01ES693796TRADES 01IT693838TRADIT 01DH_BENEF_CONS0202FACINGSECTION FACINGFR691366X16011NL693863TRADNL 01ES693809X16001IT693829X16001DH_TXT_LIB_FACE0303FACINGSECTION FACINGFR69136701NL69385901ES69380701IT69383201DH_PARF_SYNT0404FACINGSECTION FACINGFR69136801NL69384701ES69381101IT69382301DH_ILLUSTRATION0505FACINGSECTION FACINGFR691369Bâtonnets ouatés11NL693842WattenstaafjesTRADNL 01ES693813Bastoncillos de algodónTRADES 01IT693821Bastoncini cotonatiTRADIT 01DH_DENOLEGAL0606DENOMINATIONSECTION DENOMINATIONFR69137011NL69385501ES69381501IT69382701DH_INFOPROD0707AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR69137111NL69384401ES69380001IT69384001DH_TXT_LIB_DOS0808AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR691372Embouts 100% coton. Tiges en polypropylène.CB le 17/07/2017: Réduire la police du texte "Embouts 100% coton. Tiges en polypropylène." à la même typologie que celle utilisée dans les précautions d'emploi. La taille de la déno légale de vente ne doit pas être diminuée.11NL693853Embouts 100% coton. Tiges en polypropylène.TRADNL 01ES693817Embouts 100% coton. Tiges en polypropylène.TRADES 01IT693836Embouts 100% coton. Tiges en polypropylène.TRADIT 01DH_COMPO0909COMPOSITIONSECTION COMPOSITIONFR69137311NL69385101ES69380401IT69381901DH_CONS_UTILI1010UTILISATIONSECTION UTILISATIONFR69137411NL69385701ES69379801IT69383401DH_CONS_CONSERV1111CONSERVATIONSECTION CONSERVATIONFR691375Ne pas introduire dans le conduit auditif ou nasal. Ne pas laisser à la portée des enfants. Ne pas jeter dans les toilettes.CB le 17/07/2017 :Supprimer "précautions d'emploi" dans les 4 langues. Ceci permettra d'ajouter la phrase "Ne pas jeter dans les toilettes. / Niet in het toilet gooien. / No tirar al inodoro. / Non gettare nel WC." dans les 4 langues. 01NL693846Niet in de gehoorgang of neusgang brengen. Buiten het bereik van kinderen houden. Niet in het toilet gooien.TRADNL 01ES693806No introducir en el conducto auditivo o nasal. Mantener fuera del alcance de los niños. No tirar al WC.TRADES 01IT693831Non introdurre nel condotto uditivo o nelle cavità nasali. Non lasciare alla portata dei bambini. Non gettare nel WC.OK "Non gettare nel WC:"TRADIT 01DH_PRECAUTION1212PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR691376.11NL693850TRADNL 01ES693803TRADES 01IT693826TRADIT 01DH_PREC1313PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR691377[ZNOWC2]CB le 17/07/2017 Supprimer le Tydiman (celui qui jette dans la poubelle et le remplacer par le logo "ne pas jeter dans les toilettes)01NL69386201ES69379701IT69383901DH_PICTO_DIV1414PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR691378[ZRECYCLE1] [ZPOINTVERT]01NL69386401ES69381001IT69383001DH_LOGO_RECY1515EMBALLAGESECTION EMBALLAGEFR69137901NL69386001ES69380801IT69383301DH_LOGO_DIV1616EMBALLAGESECTION EMBALLAGEFR69138011NL69384801ES69381201IT69382401DH_POIDS_VOL1717POIDS_CONTENANCESECTION CONTENANCEFR69138111NL69384301ES69381401IT69382201DH_INFO_EMB1818POUR_LA_PLANETESECTION POUR LA PLANETEFR691382Interdis - TSA 91431 - 91343 MASSY Cedex - FranceCB le 17/07/2017 : Réduire la police du texte du pavé consommateur à la même typologie que celle utilisée dans les précautions d'emploi.01NL693856Interdis - TSA 91431 - 91343 MASSY Cedex - France01ES693816Interdis - TSA 91431 - 91343 MASSY Cedex - France01IT693828Interdis - TSA 91431 - 91343 MASSY Cedex - France01DH_PAVE_SC1919AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR69138361070D01NL69384561070D01ES69380161070D01IT69384161070D01DH_CODE_EMB2020AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR691384Fabriqué en UE pour Interdis11NL693854Geproduceerd in UE voor InterdisTRADNL 01ES693818Fabricado en UE para Interdis01IT693837Prodotto in UE per Interdis01DH_ADRESSFRN2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR691385327019017438701NL693852327019017438701ES693805327019017438701IT693820327019017438701DH_CODE_EAN2222CODE_EANSECTION CODE EANFR69138601NL69385801ES69379901IT69383501DH_MARQ_CE2323AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMEN760BATONNET BOITE 160 CRF LEMOINEDPHHYG1913
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/1913_3270190174387_valNut.xml b/t/inputs/import_convert_carrefour_france/1913_3270190174387_valNut.xml
new file mode 100644
index 0000000000000..e1de50b64c337
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/1913_3270190174387_valNut.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/19683_3560071228491_text.xml b/t/inputs/import_convert_carrefour_france/19683_3560071228491_text.xml
new file mode 100644
index 0000000000000..0923f77941a04
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/19683_3560071228491_text.xml
@@ -0,0 +1 @@
+FR8587227Liquide Vaisselle Bali11NL9141984Afwasmiddel BaliTRADNL 01ALL9142008Geschirrspülmittel BaliTRADALL 01DD_DENOCOM0101FACINGSECTION FACINGFR8587228Exotique* Dégraissant11NL9141985Exotisch Ontvettend23/06 KVA TT màj, supprimé l'astérisque après "Exotisch"TRADNL 01ALL9142009Exotisch* EntfettetTRADALL 01DD_BENEF_CONS0202FACINGSECTION FACINGFR8587229 11NL9141986 01ALL9142010 01DD_TXT_LIB_FACE0303FACINGSECTION FACINGFR8587230Parfum de synthèse01NL9141987Synthetische geur01ALL9142011Synthetischer Duftstoff01DD_PARF_SYNT0404FACINGSECTION FACINGFR8587231Liquide Vaisselle Bali11NL9141988Afwasmiddel BaliTRADNL 01ALL9142012Geschirrspülmittel BaliTRADALL 01DD_DENOLEGAL0505DENOMINATIONSECTION DENOMINATIONFR8587232 11NL9141989 01ALL9142013 01DD_INFOPROD0606AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR8587233code sleeve: 5188932 UFI: X3K9-A6XN-8N0Y-V7QX
11NL9141990code sleeve: 5188932 UFI: X3K9-A6XN-8N0Y-V7QX23/06 KVA TT màj à la demande de CPP, modifié codesTRADNL 01ALL9142014code sleeve: 5188932 UFI: X3K9-A6XN-8N0Y-V7QX24/06 CMÖ: TT DE adapté selon TT FRTRADALL 01DD_TXT_LIB_DOS0707AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR8587234Contient entre autres composants : 5% ou plus mais moins de 15%:agents de surface anioniques moins de 5%:agents de surface amphotères, agents de surface non ioniques Également:conservateur (lactic acid), parfums11NL9141991Bevat onder andere componenten: 5% of meer, maar minder dan 15%:anionogene oppervlakteactieve stoffen minder dan 5%:amfotere oppervlakteactieve stoffen, niet-ionogene oppervlakteactieve stoffen Ook:conserveermiddel (lactic acid), parfums23/06 KVA Sur le pdf: merci de remplacer "minder an" par "minder dan"TRADNL 01ALL9142015Enthält neben anderen Inhaltsstoffen: 5% und darüber, jedoch weniger als 15%:anionische Tenside unter 5%:amphotere Tenside, nichtionische Tenside Ebenfalls:Konservierungsmittel (Lactic acid), Duftstoffe01DD_COMPO0808COMPOSITIONSECTION COMPOSITIONFR8587235INGREDIENTS:www.info-detergent.com01NL9141992INGREDIENTS:www.info-detergent.com01ALL9142016INGREDIENTS:www.info-detergent.com01DD_INFODETERG0909COMPOSITIONSECTION COMPOSITIONFR85872361 à 2 pressions suffisent pour une vaisselle normalement sale. Laver et rincer à l’eau potable.11NL91419931 à 2 keer drukken is voldoende voor een normaal bevuilde vaat. Afwassen en spoelen met drinkwater.01ALL91420171 bis 2 Sprühstöße reichen aus für normal verschmutztes Geschirr. Mit Leitungswasser waschen und abspülen.TRADALL 01DD_CONS_UTILI1010UTILISATIONSECTION UTILISATIONFR8587237 11NL9141994 01ALL9142018 01DD_CONS_CONSERV1111CONSERVATIONSECTION CONSERVATIONFR8587238DANGER. Contient SODIUM LAURETH SULFATE, COCAMIDOPROPYLAMINE OXIDE, COCAMIDOPROPYL BETAINE. Provoque de graves lésions des yeux. Tenir hors de portée des enfants. Porter un équipement de protection des yeux. Appeler immédiatement un CENTRE ANTIPOISON ou un médecin. En cas de consultation d’un médecin, garder à disposition le récipient ou l’étiquette.EN CAS DE CONTACT AVEC LES YEUX : Rincer avec précaution à l’eau pendant plusieurs minutes. Enlever les lentilles de contact si la victime en porte et si elles peuvent être facilement enlevées. Continuer à rincer. Centre antipoison Paris : 01.40.05.48.48. / Belgique : 070/245 245.11NL9141995GEVAAR. Bevat SODIUM LAURETH SULFATE, COCAMIDOPROPYLAMINE OXIDE, COCAMIDOPROPYL BETAINE. Veroorzaakt ernstig oogletsel. Buiten het bereik van kinderen houden. Oogbescherming dragen. Onmiddellijk een ANTIGIFCENTRUM of een arts raadplegen. Bij het inwinnen van medisch advies, de verpakking of het etiket ter beschikking houden.BIJ CONTACT MET DE OGEN: voorzichtig afspoelen met water gedurende een aantal minuten; contactlenzen verwijderen, indien mogelijk; blijven spoelen. Antigifcentrum: 070/245 245.TRADNL 01ALL9142019GEFAHR. Enthält SODIUM LAURETH SULFATE, COCAMIDOPROPYLAMINE OXIDE, COCAMIDOPROPYL BETAINE. Verursacht schwere Augenschäden. Darf nicht in die Hände von Kindern gelangen. Augenschutz tragen. Sofort GIFTINFORMATIONSZENTRUM oder Arzt anrufen. Ist ärztlicher Rat erforderlich, Verpackung oder Kennzeichnungsetikett bereithalten.BEI KONTAKT MIT DEN AUGEN: Einige Minuten lang behutsam mit Wasser spülen. Eventuell vorhandene Kontaktlinsen nach Möglichkeit entfernen. Weiter spülen. Giftinformationszentrum: 070/245 245.01DD_PRECAUTION1212PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8587239 [DSGH05]01NL9141996 01ALL9142020 01DD_PICTO_DANG1313PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8587240 01NL9141997 01ALL9142021 01DD_PICTO_DIV1414PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8587241 [ZSECU5] [ZSECU1] [ZSECU2]01NL9141998 01ALL9142022 01DD_PICTO_AISE1515PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR8587242Triman + picto de tri01NL9141999Triman + picto de tri01ALL9142023Triman + picto de tri01DD_LOGO_RECY1616EMBALLAGESECTION EMBALLAGEFR8587243 01NL9142000 01ALL9142024 01DD_LOGO_DIV1717EMBALLAGESECTION EMBALLAGEFR8587244750ml[ZEMETRO]11NL9142001750ml 01ALL9142025750ml 01DD_POIDS_VOL1818POIDS_CONTENANCESECTION CONTENANCEFR8587245 11NL9142002 01ALL9142026 01DD_INFO_EMB1919POUR_LA_PLANETESECTION POUR LA PLANETEFR8587246Interdis - TSA 91431 - 91343 MASSY Cedex - France01NL9142003Interdis - TSA 91431 - 91343 MASSY Cedex - France01ALL9142027Interdis - TSA 91431 - 91343 MASSY Cedex - France01DD_PAVE_SC2020AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8587247EMB B 0043201NL9142004EMB B 0043201ALL9142028EMB B 0043201DD_CODE_EMB2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8587248Fabriqué en Belgique par EMB B-00432 pour Interdis11NL9142005Geproduceerd in België door EMB B-00432 voor Interdis01ALL9142029Hergestellt in Belgien von EMB B-00432 für InterdisTRADALL 01DD_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8587249356007122849101NL9142006356007122849101ALL9142030356007122849101DD_CODE_EAN2323CODE_EANSECTION CODE EANFR8587250 01NL9142007 01ALL9142031 01DD_MARQ_CE2424AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMEN18796Liquide vaisselle BaliDPHDET19683
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/19683_3560071228491_valNut.xml b/t/inputs/import_convert_carrefour_france/19683_3560071228491_valNut.xml
new file mode 100644
index 0000000000000..9c2485e27c13c
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/19683_3560071228491_valNut.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/20297_3270190020165_text.xml b/t/inputs/import_convert_carrefour_france/20297_3270190020165_text.xml
new file mode 100644
index 0000000000000..57eeb6403ba72
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/20297_3270190020165_text.xml
@@ -0,0 +1 @@
+FR8157573CAMEMBERT11NL8448233CAMEMBERT
TRADNL 01AL_DENOCOM0101FACINGSECTION FACINGFR8157574Onctueux 11NL8448234SmeuïgTRADNL 01AL_BENEF_CONS0202FACINGSECTION FACINGFR8157575Picto lait français 11NL8448235Picto Franse melkTRADNL 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR8157576 11NL8448236 01AL_SPE_BIO0404FACINGSECTION FACINGFR8157577 11NL8448237 01AL_ALCO_VOL0505FACINGSECTION FACINGFR8157578 11NL8448238 01AL_PRESENTATION0606FACINGSECTION FACINGFR8157579Camembert - Fromage à pâte molle au lait pasteurisé de vache.11NL8448239Camembert - Zachte kaas van gepasteuriseerde koemelk.TRADNL 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR8157580Lait pasteurisé de vache, sel, ferments lactiques et d'affinage (contiennent lait), coagulant microbien. Lait origine France.11NL8448240Gepasteuriseerde koemelk, zout, melk- en rijpingsfermenten (bevatten melk), microbieel stremmiddel. Melk oorsprong Frankrijk.TRADNL 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR8157581 11NL8448241 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR8157582OUI Nutriscore D01NL8448242 TRADNL 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR8157583Vous aimez votre Camembert : Jeune, délicat avec une texture légèrement ferme à cœur : consommez-le au moins 25 jours avant la date indiquée sur la boîte. Moelleux avec un goût franc : consommez-le entre le 15ème et le 25ème jour avant la date indiquée sur la boîte. Affiné à cœur, avec une pâte souple et fondante et une saveur plus typée : consommez-le dans les 15 derniers jours précédant la date indiquée sur la boîte. Afin d'apprécier au mieux votre Camembert Carrefour, nous vous conseillons de le sortir du réfrigérateur dès le début du repas.11NL8448243U houdt van uw Camembert: Jong, delicaat met een licht stevige textuur tot in de kern: consumeer minstens 25 dagen voor de datum vermeld op de doos. Zacht met een verfijnde smaak: consumeer tussen de 15de en 25ste dag voor de datum vermeld op de doos. Verfijnd tot in de kern, met een zachte en smeuïge textuur en een meer uitgesproken smaak: consumeer in de laatste 15 dagen voorafgaand de datum vermeld op de doos. Om ten volle van uw Camembert van Carrefour te kunnen genieten, raden wij u aan de kaas bij aanvang van de maaltijd uit de koelkast te halen.
TRADNL 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR8157584À consommer de préférence avant le / N° de lot : voir la date indiquée sur le côté de la boîte. À conserver entre +4°C et +6°C. Votre Camembert Carrefour se conservera idéalement dans son papier d'emballage.11NL8448244Ten minste houdbaar tot / Lotnr.: zie datum op zijkant doos. Te bewaren tussen +4°C en +6°C. Uw Camembert van Carrefour bewaart het best in het verpakkingspapier.TRADNL 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR8157585 11NL8448245 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR8157586 11NL8448246 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR8157587Triman11NL8448247Triman
TRADNL 01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR8157588Poids net à l'emballage 250[GR]10NL8448248 TRADNL 00AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR8157589 10NL8448249 00AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR8157590 10NL8448250 00AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR8157591Poids net à l'emballage : 250 g e Produit soumis à dessiccation.11NL8448251Nettogewicht bij verpakking: 250 g e Product onderhevig aan uitdroging.TRADNL 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR8157592 11NL8448252 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR8157593Interdis - TSA 91431 - 91343 MASSY Cedex - France11NL8448253Interdis - TSA 91431 - 91343 MASSY Cedex - France
TRADNL 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8157594 11NL8448254 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8157595FR 50.168.001 CE11NL8448255FR 50.168.001 CE
TRADNL 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8157596327019002016501NL8448256327019002016501AL_CODE_EAN2424CODE_EANSECTION CODE EANFR8157597 11NL8448257 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR8157598 11NL8448258 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR8157599 11NL8448259 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE21431Trame 1ALISTD20297
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/20297_3270190020165_valNut.xml b/t/inputs/import_convert_carrefour_france/20297_3270190020165_valNut.xml
new file mode 100644
index 0000000000000..f174b581c1cf3
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/20297_3270190020165_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRVALENERLABELNLgGRgrammeVALENERLABELFRPORTIONFRPORTIONSOITFRVALENERLABELNLPORTIONNLPORTIONSOITNLARCOLFRARCOLNLFR8308038NL8308038ENERKJ1EnergieENER kJKJO100,00Kilojoule113414kJKJOKilojoule00FR8308039NL8308039ENERKC2EnergieENER kcalE14100,00kilocalorie27314kcalE14kilocalorie00FR8308040NL8308040FAT3NutrimentsNUT gGR100,00gramme2130FR8308041NL8308041FASAT4NutrimentsNUT gGR100,00gramme1574FR8308044NL8308044CHOAVL7NutrimentsNUT gGR100,00gramme1,0< 1FR8308049NL8308049PRO12NutrimentsNUT gGR100,00gramme2040FR8308051NL8308051SALTEQ14NutrimentsNUT Chef ProduitgGR100,00gramme1,423FR506874FR506874FR506874NL506874NL506874NL506874QTENEG1506874FR701772PHRASETOPFR701773FR701774PHRASEBOTTOM14894Tableau de ValNut 1TABNUTSTDVITMIN 20297
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/20300_3270190020165_text.xml b/t/inputs/import_convert_carrefour_france/20300_3270190020165_text.xml
new file mode 100644
index 0000000000000..ab26997bc7d2d
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/20300_3270190020165_text.xml
@@ -0,0 +1 @@
+FR8708428CAMEMBERT10ES8690713CAMEMBERT01IT8677246CAMEMBERT01AL_DENOCOM0101FACINGSECTION FACINGFR8708429Onctueux 10ES8690714UntuosoTRADES 01IT8677247Cremoso TRADIT 01AL_BENEF_CONS0202FACINGSECTION FACINGFR8708430Picto lait français 10ES8690715Picto lait français 20/08/21-NSF PP Si besoin, la traduction de "lait français" est "leche francesa"TRADES 01IT8677248Picto lait français VDS 6/10: il n'y a pas la mention sur le PDF.TRADIT 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR8708431 10ES8690716 01IT8677249 01AL_SPE_BIO0404FACINGSECTION FACINGFR8708432 10ES8690717 01IT8677250 01AL_ALCO_VOL0505FACINGSECTION FACINGFR8708433 10ES8690718 01IT8677251 01AL_PRESENTATION0606FACINGSECTION FACINGFR8708434Camembert. Fromage à pâte molle au lait pasteurisé de vache.10ES8690719Camembert. Queso de pasta blanda elaborado con leche pasteurizada de vaca.
23/09/21-NSF PP Cette mention n'est pas sur les PDFs.TRADES 01IT8677252Camembert. Formaggio a pasta molle di latte vaccino pastorizzato.VDS 22/09: la mention n'est pas sur les PDFs.TRADIT 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR8708435Lait de vache pasteurisé, sel, ferments lactiques et d'affinage, présule animale ou coagulant microbien. Lait origine France.10ES8690720Leche de vaca pasteurizada, sal, fermentos lácticos y de maduración, cuajo animal o coagulante de leche microbiano. Origen de la leche: Francia.23/09/21-NSF PP Cette mention n'est pas sur les PDFs.TRADES 01IT8677253Latte vaccino pastorizzato, sale, fermenti lattici e di affinamento, caglio animale o caglio microbico. Origine del latte FranciaVDS 22/09: la mention n'est pas sur les PDFs. FN 14/07: Selon l'Annexe VII.7 du Reg. UE 1169/2011, "Ingrédients similaires et substituables entre eux, susceptibles d’être utilisés dans la fabrication ou la préparationd’une denrée alimentaire sans en altérer la composition,la nature ou la valeur perçue, et pour autant qu’ils interviennent pour moins de 2 % dans le produit fini, peuvent être désignés dans la liste des ingrédientsà l'aide de l'affirmation «contient … et/ou …», dans lecas où l'un au moins, parmi deux ingrédients au plus, est présent dans le produit fini." Merci de confirmer que c'est le cas.TRADIT 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR8708436 10ES8690721 01IT8677254 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR8708437OUI Nutriscore D00ES8690722/TRADES 01IT8677255OUITRADIT 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR8708438 10ES8690723 01IT8677256 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR8708439À consommer de préférence avant le :voir la date sur le côté de l'emballage. À conserver entre +4°C et +8°C Votre Camembert Carrefour se conservera idéalement dans son papier d'emballage. 10ES8690724Consumir preferentemente antes del: ver la fecha en el lateral del envase. Conservar entre +4ºC y +8ºC. El Camembert Carrefour se conservará idealmente en su envoltorio.
23/09/21-NSF PP Cette mention n'est pas sur les PDFs.TRADES 01IT8677257Da consumarsi preferibilmente entro il: vedere la data sul lato della confezione. Conservare tra +4°C e +8°C. Il tuo Camembert Carrefour si conserverà perfettamente nella sua carta da imballaggio. VDS 22/09: la mention n'est pas sur les PDFs.TRADIT 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR8708440 10ES8690725 01IT8677258 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR8708441 10ES8690726 01IT8677259 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR8708442Ecoemballage 10ES8690727EcoemballageTRADES 01IT8677260Ecoemballage TrimanVDS 22/09: la mention n'est pas sur les PDFs.TRADIT 01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR8708443 10ES8690728 00IT8677261 00AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR8708444 10ES8690729 00IT8677262 00AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR8708445 10ES8690730 00IT8677263 00AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR8708446Poids net à l'emballage : 250g e Produit soumis à dessiccation.10ES8690731Peso neto del envase: 250g e Producto sujeto a desecación.23/09/21-NSF PP Cette mention n'est pas sur les PDFs.TRADES 01IT8677264Peso netto all'imballaggio: 250g e Prodotto soggetto a calo di peso.FN 22/10: Pour la traduction de ce champ voir e-mail du 22/10 s'il vous plaît (sujet : 20300 - CAMEMBERT).
VDS 22/09: la mention n'est pas sur les PDFs.TRADIT 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR8708447 10ES8690732 01IT8677265 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR8708448Interdis - TSA 91431 - 91343 MASSY Cedex - France10ES8690733Interdis - TSA 91431 - 91343 MASSY Cedex - France23/09/21-NSF PP Cette mention n'est pas sur les PDFs.TRADES 01IT8677266Interdis - TSA 91431 - 91343 MASSY Cedex - FranceVDS 22/09: la mention n'est pas sur les PDFs.TRADIT 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8708449 10ES8690734 01IT8677267 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8708450A FR 61.145.001 CE C FR 50.453.001 CE La lettre située à côté de la DLUO indique le lieu de conditionnement sur le fond de boîte10ES8690735A FR 61.145.001 CE C FR 50.453.001 CE La letra situada al lado del DLUO indica el lugar de envasado en el fondo del envase.
23/09/21-NSF PP Cette mention n'est pas sur les PDFs.TRADES 01IT8677268A FR 61.145.001 CE C FR 50.453.001 CE La lettera accanto al termine minimo di conservazione indica il luogo di confezionamento sul fondo della confezione. VDS 22/09: la mention n'est pas sur les PDFs. FN 14/07: Nous suggerons de placer "sur le fond de boîte" aprés "de la DLUO". TRADIT 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8708451356007111359900ES8690736356007111359901IT86772693560071113599VDS 22/09: la mention n'est pas sur les PDFs.TRADIT 01AL_CODE_EAN2424CODE_EANSECTION CODE EANFR8708452 10ES8690737 01IT8677270 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR8708453 10ES8690738 01IT8677271 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR8708454 10ES8690739 01IT8677272 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE21812Trame 1ALISTD20300
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/20300_3270190020165_valNut.xml b/t/inputs/import_convert_carrefour_france/20300_3270190020165_valNut.xml
new file mode 100644
index 0000000000000..5209ceeaddf1a
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/20300_3270190020165_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELESVALENERLABELITgGR0,00grammeVALENERLABELESPORTIONESPORTIONSOITESVALENERLABELITPORTIONITPORTIONSOITITARCOLESARCOLITES8243350IT8243350ENERKJ1EnergieENER kJKJO100,00Kilojoule110013kJKJO0,00Kilojoule00ES8243351IT8243351ENERKC2EnergieENER kcalE14100,00kilocalorie26513kcalE140,00kilocalorie00ES8243352IT8243352FAT3NutrimentsNUT gGR100,00gramme2130ES8243353IT8243353FASAT4NutrimentsNUT gGR100,00gramme1575ES8243361IT8243361PRO12NutrimentsNUT gGR100,00gramme1938ES8243363IT8243363SALTEQ14NutrimentsNUT gGR100,00gramme1,322ES505426ES505426ES505426ES505426IT505426IT505426IT505426IT505426QTENEG150542615165Tableau de ValNut 1TABNUTSTDVITMIN 20300
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/20671_3270190124924_text.xml b/t/inputs/import_convert_carrefour_france/20671_3270190124924_text.xml
new file mode 100644
index 0000000000000..bf3fb2f569350
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/20671_3270190124924_text.xml
@@ -0,0 +1 @@
+FR8433289MOUTARDE DE DIJON10ES8202006MOSTAZA DE DIJONTRADES 01AL_DENOCOM0101FACINGSECTION FACINGFR8433290FINE & FORTE10ES8202007FINA & FUERTE
TRADES 01AL_BENEF_CONS0202FACINGSECTION FACINGFR8433291 10ES8202008 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR8433292 10ES8202009 01AL_SPE_BIO0404FACINGSECTION FACINGFR8433293 10ES8202010 01AL_ALCO_VOL0505FACINGSECTION FACINGFR8433294 10ES8202011 01AL_PRESENTATION0606FACINGSECTION FACINGFR8433295Moutarde de Dijon.10ES8202012 Mostaza de Dijon.TRADES 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR8433296Ingrédients : Eau, graines de moutarde, vinaigre d'alcool, sel, antioxydant : disulfite de potassium, acidifiant : acide citrique.10ES8202013Ingredientes: Agua, semillas de mostaza, vinagre de alcohol, sal, antioxidante: metabisulfito potásico, acidulante: ácido cítrico.TRADES 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR8433297 10ES8202014 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR8433298Nutrition : Nutriscore C00ES8202015Nutrition : Nutriscore C07/07/21-NSF MR SUR LE PDF: Remplacer "Valeurs moyennes pour :" par "Valores medios por:"TRADES 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR8433299 10ES8202016 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR8433300Conservation : Avant ouverture, à conserver à température ambiante. Pour une dégustation optimale, à consommer de préférence avant le / N° de lot : voir la date indiquée sur le bocal. Après ouverture, à conserver au réfrigérateur et à consommer dans les 6 mois.10ES8202017Conservación: Antes de abrir, conservar a temperatura ambiente. Consumir preferentemente antes del / Nº de lote: ver fecha indicada en el envase. Una vez abierto, conservar en el frigorífico y consumir en 6 meses.TRADES 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR8433301 10ES8202018 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR8433302 10ES8202019 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR8433303Ecoemballage10ES8202020Ecoemballage
07/07/21-NSF MR Remplacé "Triman" par "Ecoemballage" selon TT FRTRADES 01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR8433304370[GR]10ES8202021 TRADES 00AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR8433305 10ES8202022 00AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR8433306 10ES8202023 00AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR8433307200 g e 10ES8202024200 g e
TRADES 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR8433308 10ES8202025 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR8433309Interdis - TSA 91431 - 91343 MASSY Cedex - France10ES8202026Interdis - TSA 91431 - 91343 MASSY Cedex - France
TRADES 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8433310 10ES8202027 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8433311 10ES8202028 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR8433312356007142207300ES8202029356007142207301AL_CODE_EAN2424CODE_EANSECTION CODE EANFR8433313 10ES8202030 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR8433314 10ES8202031 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR8433315 10ES8202032 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE19947MOUTARDE DIJON BOCAL VERRE 370G_2020ALISTD20671
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/20671_3270190124924_valNut.xml b/t/inputs/import_convert_carrefour_france/20671_3270190124924_valNut.xml
new file mode 100644
index 0000000000000..daef1d87fdd76
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/20671_3270190124924_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELESgGR0,00grammeVALENERLABELESPORTIONESPORTIONSOITES˜ ARCOLESES7985532ENERKJ1EnergieENER FournisseurkJKJO100,00Kilojoule6197kJKJO0,00Kilojoule00ES7985533ENERKC2EnergieENER FournisseurkcalE14100,00kilocalorie1497kcalE140,00kilocalorie00ES7985534FAT3NutrimentsNUT FournisseurgGR100,00gramme1216ES7985535FASAT4NutrimentsNUT FournisseurgGR100,00gramme0,84ES7985538CHOAVL7NutrimentsNUT FournisseurgGR100,00gramme3,21ES7985539SUGAR8NutrimentsNUT FournisseurgGR100,00gramme2,73ES7985542FIBTG11NutrimentsNUT FournisseurgGR100,00gramme2,1ES7985543PRO12NutrimentsNUT FournisseurgGR100,00gramme7,214ES7985545SALTEQ14NutrimentsNUT FournisseurgGR100,00gramme6,5108FR676068PHRASETOPFR676069FR676070PHRASEBOTTOM13907MOUTARDE DE DIJONTABNUTSTD 20671
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/23652_3560070687145_text.xml b/t/inputs/import_convert_carrefour_france/23652_3560070687145_text.xml
new file mode 100644
index 0000000000000..83ec1682f1717
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/23652_3560070687145_text.xml
@@ -0,0 +1 @@
+FR9172971Allumettes11NL9202884Allumettes01ES9204883Patatas FinasTRADES 01IT9202526Patate fritte a fiammifero01AL_DENOCOM0101FACINGSECTION FACINGFR9172972À l'huile de tournesol11NL9202885Met zonnebloemolieTRADNL 01ES9204884Con aceite de girasol01IT9202527Con olio di semi di girasole01AL_BENEF_CONS0202FACINGSECTION FACINGFR9172973Picto friteuse 4-6 min SURGELÉ 1kg e 11NL9202886Picto friteuse 4-6 min DIEPVRIES 1kg e TRADNL 01ES9204885Picto friteuse 4-6 min ULTRACONGELADO 1kg e
TRADES 01IT9202528Picto friteuse 4-6 min SURGELATO 1kg e01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR9172974 11NL9202887 01ES9204886 01IT9202529 01AL_SPE_BIO0404FACINGSECTION FACINGFR9172975 11NL9202888 01ES9204887 01IT9202530 01AL_ALCO_VOL0505FACINGSECTION FACINGFR9172976 11NL9202889 01ES9204888 01IT9202531 01AL_PRESENTATION0606FACINGSECTION FACINGFR9172977Pommes de terre allumettes préfrites surgelées.11NL9202890Voorgebakken allumettes aardappelen, diepvries.27/01 CDW: TT NL màj: ajouté une virgule après aardappelen. Merci de modifier le pdf R1. TRADNL 01ES9204889Patatas finas prefritas ultracongeladas.01IT9202532Patate a fiammifero prefritte surgelate. TRADIT 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR9172978Pommes de terre 96%, huile de tournesol 4%, dextrose.11NL9202891Aardappelen 96%, zonnebloemolie 4%, dextrose.TRADNL 01ES9204890Patatas 96%, aceite de girasol 4%, dextrosa.01IT9202533Patate 96%, olio di semi girasole 4%, destrosio.01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR9172979 11NL9202892 01ES9204891 01IT9202534 01AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR9172980Nutriscore A01NL9202893Nutriscore A01ES9204892Porción 125 g27/01/22-NSF PP Sur le PDF, on recommende remplacer "Contiene cantidad insignificante de azúcares" par "Contiene cantidades insignificantes de azúcares". Selon commentaire du Coord, Dans le tableau des vnut, corriger les Valeur énergétique : 564 kJ/134kcal..TRADES 01IT9202535Porzione 125 gVDS 27/01: Dans le tableau des vnut, corriger les Valeur énergétique: 564 kJ/ 134 kcal.TRADIT 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR9172981À la friteuse : Plongez les frites encore surgelées par petites quantités dans de l'huile préchauffée à 175°C et laissez dorer pendant 4 à 6 minutes. Pour limiter le surplus de matière grasse, laissez reposer les frites sur du papier absorbant. Pensez à renouveler le bain d'huile après 10 à 12 fritures.11NL9202894In de friteuse: Doe de nog diepgevroren frieten, in kleine hoeveelheden, in voorverwarmde olie op 175°C en laat ze 4 à 6 minuten goudgeel bakken. Leg ze op een vel keukenpapier om het overtollige vet te absorberen. Vervang de olie na 10 à 12 bakbeurten.TRADNL 01ES9204893En la freidora: Sumergir las patatas aún ultracongeladas en pequeñas cantidades en aceite caliente a 175ºC y dejar dorar durante 4-6 minutos. Para eliminar el exceso de grasa, reposar las patatas fritas sobre un papel absorbente. Renovar el aceite de la freidora después de 10-12 frituras.
TRADES 01IT9202536Nella friggitrice: Versate piccole quantità per volta di patatine ancora surgelate nell'olio preriscaldato a 175°C e lasciate dorare per 4 - 6 minuti. Per limitare l'eccesso di olio, lasciate riposare le patate fritte su della carta assorbente per fritti. Ricordate di rinnovare l'olio dopo 10 - 12 fritture.TRADIT 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR9172982À consommer de préférence avant la date indiquée ci-dessous. À conserver 24 heures dans un réfrigérateur, 3 jours dans le compartiment à glace du réfrigérateur et jusqu'à la date de durabilité minimale dans un congélateur*** à -18°C.11NL9202895Ten minste houdbaar tot de hieronder vermelde datum. Bewaart 24 uur in de koelkast, 3 dagen in het vriesvak van de koelkast en tot aan de datum van minimale houdbaarheid in een diepvriezer*** op -18°C.TRADNL 01ES9204894Consumir preferentemente antes de la fecha indicada más abajo. Conservar 24 horas en el frigorífico, 3 días en el congelador del frigorífico y hasta la fecha de durabilidad mínima en un congelador *** a -18ºC.
TRADES 01IT9202537Da consumarsi preferibilmente entro la data indicata sotto. Conservare 24 ore nel frigorifero, 3 giorni nello scomparto del ghiaccio del frigorifero e fino al termine minimo di conservazione in un congelatore*** a -18°C.
01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR9172983ATTENTION, NE PAS RECONGELER APRÈS DÉCONGÉLATION.11NL9202896NA ONTDOOIING NIET OPNIEUW INVRIEZEN.TRADNL 01ES9204895ATENCIÓN, NO VOLVER A CONGELAR UNA VEZ DESCONGELADO.01IT9202538ATTENZIONE, NON RICONGELARE DOPO LO SCONGELAMENTO.01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR9172984 11NL9202897 01ES9204896 01IT9202539 01AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR9172985Écoemballage 39A11NL9202898Écoemballage 39A27/01 CDW: Decision Crf FR, pour le moment pas de changement au niveau picto TRI pour la Belgique. Le sujet est en cours de mise au point entre CRF Belgique et CRF France.TRADNL 01ES9204897Écoemballage 39A01IT9202540Ecoemballage 39ATRADIT 01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR91729861[KG]10NL9202899 TRADNL 00ES9204898 TRADES 00IT9202541 TRADIT 00AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR9172987 10NL9202900 00ES9204899 00IT9202542 00AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR9172988 10NL9202901 00ES9204900 00IT9202543 00AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR91729891kg e11NL92029021kg e01ES92049011kg e01IT92025441kg e01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR9172990 11NL9202903 01ES9204902 01IT9202545 01AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR9172991Interdis - TSA 91431 - 91343 MASSY Cedex - France.11NL9202904Interdis - TSA 91431 - 91343 MASSY Cedex - France.01ES9204903Interdis - TSA 91431 - 91343 MASSY Cedex - France.01IT9202546Interdis - TSA 91431 - 91343 MASSY Cedex - France01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR9172992 11NL9202905 01ES9204904 01IT9202547 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR9172993 11NL9202906 01ES9204905 01IT9202548 01AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR9172994356007068714501NL9202907356007068714501ES9204906356007068714501IT9202549356007068714501AL_CODE_EAN2424CODE_EANSECTION CODE EANFR9172995 11NL9202908 01ES9204907 01IT9202550 01AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR9172996 11NL9202909 01ES9204908 01IT9202551 01AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR9172997Meilleur avant - À consommer de préférence avant le / N° de lot :11NL9202910Ten minste houdbaar tot / Lotnr.:TRADNL 01ES9204909Consumir preferentemente antes del / Nº de lote:01IT9202552Da consumarsi preferibilmente entro il / N° di lotto:TRADIT 01AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE23373FRITE ALLUMETTE 1KG CRFALISTD23652
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/23652_3560070687145_valNut.xml b/t/inputs/import_convert_carrefour_france/23652_3560070687145_valNut.xml
new file mode 100644
index 0000000000000..0dee6b3bcd391
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/23652_3560070687145_valNut.xml
@@ -0,0 +1 @@
+gGR100,00grammeVALENERLABELFRVALENERLABELNLVALENERLABELESVALENERLABELITgGR0,00grammeVALENERLABELFRPORTIONFRPORTIONSOITFRVALENERLABELNLPORTIONNLPORTIONSOITNLVALENERLABELESPORTIONESPORTIONSOITESVALENERLABELITPORTIONITPORTIONSOITITNon PréparéARCOLFRARCOLNLARCOLESARCOLITFR8874917NL8874917ES8874917IT8874917ENERKJ1EnergieENER FournisseurkJKJO100,00Kilojoule5607kJKJO0,00Kilojoule00FR8874918NL8874918ES8874918IT8874918ENERKC2EnergieENER FournisseurkcalE14100,00kilocalorie1337kcalE140,00kilocalorie00FR8874919NL8874919ES8874919IT8874919FAT3NutrimentsNUT FournisseurgGR100,00gramme3,25FR8874920NL8874920ES8874920IT8874920FASAT4NutrimentsNUT FournisseurgGR100,00gramme0,42FR8874923NL8874923ES8874923IT8874923CHOAVL7NutrimentsNUT FournisseurgGR100,00gramme239FR8874927NL8874927ES8874927IT8874927FIBTG11NutrimentsNUT FournisseurgGR100,00gramme1,7FR8874928NL8874928ES8874928IT8874928PRO12NutrimentsNUT gGR100,00gramme2,24FR8874930NL8874930ES8874930IT8874930SALTEQ14NutrimentsNUT FournisseurgGR100,00gramme0,203FR518236FR518236FR518236FR518236FR518236NL518236NL518236NL518236NL518236NL518236ES518236ES518236ES518236ES518236ES518236IT518236IT518236IT518236IT518236IT518236QTENEG1518236FR518237FR518237FR518237FR518237FR518237NL518237NL518237NL518237NL518237NL518237ES518237ES518237ES518237ES518237ES518237IT518237IT518237IT518237IT518237IT518237SEL012518237FR734427NL730585PHRASETOPFR734428FR734429NL730586NL730587PHRASEBOTTOM16234Frites allumettesTABNUTSTD 23652
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/7934_3560071193102_text.xml b/t/inputs/import_convert_carrefour_france/7934_3560071193102_text.xml
new file mode 100644
index 0000000000000..a9e75cd9ea44b
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/7934_3560071193102_text.xml
@@ -0,0 +1 @@
+FR2845701YOURS Avec Bière sans alcool Saveur Agrumes11NL2829842YOURS Met alcoholvrij Bier CitrusvruchtensmaakTRADNL 01AL_DENOCOM0101FACINGSECTION FACINGFR284570211NL282984301AL_BENEF_CONS0202FACINGSECTION FACINGFR284570333cl [ZEMETRO]CV 20/09/18: Pour rappel, hauteur min de 4mm pour le "33" et 3mm pour le "e"11NL282984433cl TRADNL 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR284570411NL282984501AL_SPE_BIO0404FACINGSECTION FACINGFR2845705alc. 0,0% vol.11NL2829846alc. 0,0% vol.01AL_ALCO_VOL0505FACINGSECTION FACINGFR284570611NL282984701AL_PRESENTATION0606FACINGSECTION FACINGFR284570711NL282984801AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR284570811NL282984901AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR284570911NL282985001AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR284571001NL282985101AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR284571111NL282985201AL_PREPA1111UTILISATIONSECTION UTILISATIONFR284571211NL282985301AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR284571311NL282985401AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR284571411NL282985501AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR284571511NL282985601AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR284571610NL282985700AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR284571710NL282985800AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR284571810NL282985900AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR284571911NL282986001AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR284572011NL282986101AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR284572111NL282986201AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR284572211NL282986301AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR284572311NL282986401AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR2845724356007119310201NL2829865356007119310201AL_CODE_EAN2424CODE_EANSECTION CODE EANFR284572511NL282986601AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR284572611NL282986701AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR284572711NL282986801AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE6836Bière 0,0% Agrume Bouteille 33cl EtiquetteALISTD7934FR284572811NL283047901AL_DENOCOM0101FACINGSECTION FACINGFR2845729YOURS Saveur Agrumes11NL2830480YOURS CitrusvruchtensmaakTRADNL 01AL_BENEF_CONS0202FACINGSECTION FACINGFR284573011NL283048101AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR284573111NL283048201AL_SPE_BIO0404FACINGSECTION FACINGFR284573211NL283048301AL_ALCO_VOL0505FACINGSECTION FACINGFR284573311NL283048401AL_PRESENTATION0606FACINGSECTION FACINGFR2845734Boisson rafraîchissante aromatisée saveur pamplemousse rose, avec bière sans alcool.CV: Déno légale de vente, volume et volume d'alcool dans le même champ visuel.11NL2830485Gearomatiseerde frisdrank rozepompelmoessmaak, met alcoholvrij bier.TRADNL 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR2845735Eau, bière sans alcool 11,88% (eau, malt d'orge, extrait de houblon, dioxyde de carbone), sucre, jus de pamplemousse rose à base de concentré 1%, extrait de malt d'orge houblonné, dioxyde de carbone, jus de baies de sureau à base de concentré, acidifiant: acide citrique, stabilisants: gomme arabique et esters glycériques de résine de bois, arôme naturel de pamplemousse rose avec autres arômes naturels. CV 22/10/18 (R1): Merci de mettre à jour la liste des ingrédients sur le pdf (français + traduction NL) --> Dioxyde de carbone à placer devant jus de baies de sureau .. + Sur le pdf pour la traduction NL merci de respecter le "11,88%" dans la liste des ingrédients.11NL2830486Water, alcoholvrij bier 11,88% (water, gerstemout, hopextract, koolstofdioxide), suiker, rozepompelmoessap uit sapconcentraat 1%, gehopt gerstemoutextract, koolstofdioxide, vlierbessensap uit sapconcentraat, voedingszuur: citroenzuur, stabilisatoren: arabische gom en glycerolesters van houthars, natuurlijk rozepompelmoesaroma met andere natuurlijke aroma's.
TRADNL 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR284573611NL283048701AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR284573701NL283048801AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR2845738Servir frais.11NL2830489Koel schenken.CDS 03/10: remplacer "Bereiding" par "Gebruik"TRADNL 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR2845739A conserver dans un endroit propre, sec et frais à l'abri de la lumière. A consommer de préférence avant le / N° de lot : voir sur le col de bouteille.11NL2830490Op een schone, droge, frisse en donkere plaats bewaren. Ten minste houdbaar tot / Lotnr.: zie flessenhalsTRADNL 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR2845740Dépôt de particules possible n'affectant pas la qualité. En cas de dépôt, remuer doucement la bouteille avant de consommer.CV 22/10/18 (R1): Merci de rajouter un "s" à particules sur le pdf.11NL2830491Er kan bezinksel voorkomen maar dit heeft geen invloed op de kwaliteit. In geval van bezinksel, de fles voorzichtig omroeren alvorens te consumeren.CDS 03/10: remplacer "Het voorkomen van depot is mogelijk en heeft geen invloed op de kwaliteit. In geval van depot, de fles voorzichtig omroeren alvorens te consumeren." par "Er kan bezinksel voorkomen maar dit heeft geen invloed op de kwaliteit. In geval van bezinksel, de fles voorzichtig omroeren alvorens te consumeren."TRADNL 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR284574111NL283049201AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR2845742Triman Ecoemballage Picto de tri11NL2830493Triman Ecoemballage Picto de tri TRADNL 01AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR284574310NL283049400AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR284574410NL283049500AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR284574510NL283049600AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR284574633cl [ZEMETRO]Minimum 4mm pour le 33cl et 3mm pour le "e".11NL283049733cl TRADNL 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR284574711NL283049801AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR2845748Interdis - TSA 91431 - 91343 MASSY Cedex - France11NL2830499Carrefour Product info PB 2000 Evere 3 - 1140 BRUSSELS Tél: 0800/9.10.11
TRADNL 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR2845749Fabriqué en France par EMB 67437 pour Interdis.11NL2830500Geproduceerd in Frankrijk door EMB67437 voor Interdis.TRADNL 01AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR284575011NL283050101AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR2845751356007119310201NL2830502356007119310201AL_CODE_EAN2424CODE_EANSECTION CODE EANFR284575211NL283050301AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR284575311NL283050401AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR284575411NL283050501AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE6837Bière 0,0% Agrume Bouteille 33cl Contre EtiquetteALISTD7934FR2845755YOURS11NL2830506YOURSTRADNL 01AL_DENOCOM0101FACINGSECTION FACINGFR284575611NL283050701AL_BENEF_CONS0202FACINGSECTION FACINGFR2845757Saveur Agrumes11NL2830508CitrusvruchtensmaakTRADNL 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR284575811NL283050901AL_SPE_BIO0404FACINGSECTION FACINGFR284575911NL283051001AL_ALCO_VOL0505FACINGSECTION FACINGFR284576011NL283051101AL_PRESENTATION0606FACINGSECTION FACINGFR284576111NL283051201AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR284576211NL283051301AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR284576311NL283051401AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR284576401NL283051501AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR284576511NL283051601AL_PREPA1111UTILISATIONSECTION UTILISATIONFR284576611NL283051701AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR284576711NL283051801AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR284576811NL283051901AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR284576911NL283052001AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR284577010NL283052100AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR284577110NL283052200AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR284577210NL283052300AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR284577311NL283052401AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR284577411NL283052501AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR284577511NL283052601AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR284577611NL283052701AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR284577711NL283052801AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR2845778356007119310201NL2830529356007119310201AL_CODE_EAN2424CODE_EANSECTION CODE EANFR284577911NL283053001AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR284578011NL283053101AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR284578111NL283053201AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE6838Bière 0,0% Agrume Bouteille 33cl ColleretteALISTD7934
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/7934_3560071193102_valNut.xml b/t/inputs/import_convert_carrefour_france/7934_3560071193102_valNut.xml
new file mode 100644
index 0000000000000..2199bfcdb00c5
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/7934_3560071193102_valNut.xml
@@ -0,0 +1 @@
+mlML100,00millilitreVALENERLABELFRVALENERLABELNLmlML330,00millilitreVALENERLABELFRPORTIONFRPORTIONSOITFRVALENERLABELNLPORTIONNLPORTIONSOITNL1bouteilleARCOLFRARCOLNLFR3570025NL3570025ENERKJ1EnergieENER FournisseurkJKJO100,00Kilojoule1141kJKJO330,00Kilojoule3754FR3570026NL3570026ENERKC2EnergieENER FournisseurkcalE14100,00kilocalorie271kcalE14330,00kilocalorie884FR3570027NL3570027FAT3NutrimentsNUT FournisseurgGR100,00gramme< 0,50< 1gGR330,00gramme< 0,50< 1FR3570028NL3570028FASAT4NutrimentsNUT FournisseurgGR100,00gramme< 0,10< 1gGR330,00gramme0,21FR3570031NL3570031CHOAVL7NutrimentsNUT FournisseurgGR100,00gramme6,32gGR330,00gramme218FR3570032NL3570032SUGAR8NutrimentsNUT FournisseurgGR100,00gramme5,86gGR330,00gramme1921FR3570040NL3570040ACL16NutrimentsNUT FournisseurgGR100,00gramme0gGR330,00gramme0FR285673FR285673FR285673NL285673NL285673NL285673QTENEG1285673FR285676FR285676FR285676NL285676NL285676NL285676SEL012285676FR285674FR285674FR285674NL285674NL285674NL285674AR013285674FR285675FR285675FR285675NL285675NL285675NL285675VARIEZ015285675FR290775PHRASETOPFR290776FR290777PHRASEBOTTOM4854Tableau VN 0,0% AgrumeTABNUTSTD 7934
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/8643_3560071198954_text.xml b/t/inputs/import_convert_carrefour_france/8643_3560071198954_text.xml
new file mode 100644
index 0000000000000..e7ef4840a997c
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/8643_3560071198954_text.xml
@@ -0,0 +1 @@
+FR3118730Liquide Vaisselle11NL2860621AfwasmiddelTRADNL 01ALL2860645GeschirrspülmittelTRADALL 01DD_DENOCOM0101FACINGSECTION FACINGFR31187310% parfum Peaux sensibles Aux actifs d'origine végétale Tolerance tested* Ecolabel
LOGO Ecolabel + bandeau "EU Ecolabel : BE/019/002"11NL28606220% parfum Gevoelige huid Met plantaardige werkzame stoffen Tolerance tested* Ecolabel
TRADNL 01ALL28606460% Duftstoffe Sensible Haut Mit pflanzlichen Wirkstoffen Tolerance tested* EcolabelTRADALL 01DD_BENEF_CONS0202FACINGSECTION FACINGFR3118732500mL + e-metrologique11NL2860623500mL + e-metrologique01ALL2860647500mL01DD_TXT_LIB_FACE0303FACINGSECTION FACINGFR311873301NL286062401ALL286064801DD_PARF_SYNT0404FACINGSECTION FACINGFR3118734Liquide vaisselle ECOplanet sans parfum11NL2860625Afwasmiddel ECOplanet zonder parfumTRADNL 01ALL2860649Geschirrspülmittel ECOplanet ohne DuftstoffeTRADALL 01DD_DENOLEGAL0505DENOMINATIONSECTION DENOMINATIONFR3118735Liquide vaisselle aux actifs d'origine végétale, sans parfum et sans colorant, idéal pour les peaux sensibles. *Tolérance testée sous contrôle dermatologique.Si pas de place pour texte marketing, écrire "*Tolérance testée sous contrôle dermatologique" à la suite du champ F0511NL2860626Afwasmiddel met plantaardige werkzame stoffen, zonder parfum en zonder kleurstof, ideaal voor de gevoelige huid. *Tolerantie getest onder dermatologisch toezicht.TRADNL 01ALL2860650Geschirrspülmittel mit pflanzlichen Wirkstoffen ohne Duft- und Farbstoffe, ideal für die sensible Haut. *Verträglichkeit unter dermatologischer Aufsicht getestet.TRADALL 01DD_INFOPROD0606AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR3118736Recto = 5180921 Verso = 518092211NL2860627Recto = 5180921 Verso = 518092201ALL2860651Recto = 5180921 Verso = 518092201DD_TXT_LIB_DOS0707AUT_MENT_MARKTSECTION AUTRES MENTIONS MARKETINFR3118737Contient entre autres composants : 5% ou plus mais moins de 15%:agents de surface anioniques moins de 5%:agents de surface amphotères, agents de surface non ioniques Également:conservateur (lactic acid);CPP 16/10 : En ALL : Mettre une majuscule à Acid => "Lactic Acid"11NL2860628Bevat onder andere componenten: 5% of meer, maar minder dan 15%:anionogene oppervlakteactieve stoffen minder dan 5%:amfotere oppervlakteactieve stoffen, niet-ionogene oppervlakteactieve stoffen Ook:conserveermiddel (lactic acid);CDS 09/10: remplacer "amfotere oppervlakteactie stoffen" par "amfotere oppervlakteactieve stoffen"TRADNL 01ALL2860652Enthält neben anderen Inhaltsstoffen: 5% und darüber, jedoch weniger als 15%:anionische Tenside unter 5%:amphotere Tenside, nichtionische Tenside Ebenfalls:Konservierungsmittel (Lactic acid);TRAD ALL : on devrait avoir : Lactic Acid au lieu de Lactic acidTRADALL 01DD_COMPO0808COMPOSITIONSECTION COMPOSITIONFR3118738www.info-detergent.comAjouter "INGREDIENTS :" devant "www.info-detergent.com"01NL2860629www.info-detergent.com01ALL2860653www.info-detergent.com01DD_INFODETERG0909COMPOSITIONSECTION COMPOSITIONFR3118739Immerger la vaisselle dans l'eau au lieu de la laver au jet du robinet. Rincer à l'eau potable. Respecter le dosage recommandé. Dosage recommandé pour 5L d’eau tiède, quelle que soit la dureté de l'eau: Vaisselle peu sale : 2,5 ml (1/2 cuillère à café) Vaisselle sale : 5 ml (1 cuillère à café) CPP 16/10 : >En ALL : remplacer - "5 L Wasser tiède, quelle que soit la dureté de l’eau " par "5L lauwarmes Wasser egal die Wasserhärten" - "Utilisation" par "Anwendung" >En NL, remplacer - "5 L water tiède, quelle que soit la dureté de l’eau" par "5L lauw water, ongeacht welke waterhardheid" - "licht bevuilde vaat: 5 ml" par "normaal bevuilde vaat: 5 ml"11NL2860630In plaats van onder stromend water af te wassen, de vaat in lauw water onderdompelen. Afspoelen met drinkwater. De aanbevolen hoeveelheid respecteren. Aanbevolen dosering voor 5 L lauw water, ongeacht welke waterhardheid: Licht bevuilde vaat : 2,5 ml (1/2 koffielepel) Normaal bevuilde vaat : 5 ml (1 koffielepel)
CDS 09/10: 1/ "Dosage recommandé pour 5 L d’eau tiède, quelle que soit la dureté de l'eau" = "Aanbevolen dosering voor 5 L lauw water, ongeacht de waterhardheid" 2/ sur le pdf: remplacer "licht bevuilde vaat: 5 ml (1 koffielepel)." par "normaal bevuilde vaat: 5 ml (1 koffielepel)."TRADNL 01ALL2860654Anwendung: Reinigen und mit Leitungswasser abspülen.
Empfohlene Dosierung für 5L lauwarmes Wasser, unabhängig von der Wasserhärte:
wenig verschmutztes Geschirr: 2,5 ml (1/2 TL), schmutziges Geschirr: 5 ml (1 TL)Remplacer : "5 L Wasser tiède, quelle que soit la dureté de l’eau " par "5L lauwarmes Wasser, unabhängig von der Wasserhärte"TRADALL 01DD_CONS_UTILI1010UTILISATIONSECTION UTILISATIONFR311874011NL286063101ALL286065501DD_CONS_CONSERV1111CONSERVATIONSECTION CONSERVATIONFR3118741ATTENTION Provoque une sévère irritation des yeux. Tenir hors de portée des enfants. EN CAS DE CONTACT AVEC LES YEUX : Rincer avec précaution à l’eau pendant plusieurs minutes. Enlever les lentilles de contact si la victime en porte et si elles peuvent être facilement enlevées. Continuer à rincer. Si l’irritation oculaire persiste : consulter un médecin. En cas de consultation d’un médecin, garder à disposition le récipient ou l’étiquette. Centre antipoison Paris : 01.40.05.48.48. / Belgique : 070/245 245.CPP 16/10 : - Supprimer la phrase P264 : "Se laver les mains soigneusement après manipulation." / Na het werken met dit product de handen grondig wassen." / "Nach Gebrauch die Hände gründlich waschen." - En D, ajouter "aus" dans les phrases "...mit Wasser ausspülen." et "Weiter ausspülen."11NL2860632WAARSCHUWING Veroorzaakt ernstige oogirritatie. Buiten het bereik van kinderen houden. BIJ CONTACT MET DE OGEN: voorzichtig afspoelen met water gedurende een aantal minuten; contactlenzen verwijderen, indien mogelijk; blijven spoelen. Bij aanhoudende oogirritatie: een arts raadplegen. Bij het inwinnen van medisch advies, de verpakking of het etiket ter beschikking houden. Antigifcentrum: 070/245 245.CDS 10/09: "les mains" = "de handen"TRADNL 01ALL2860656ACHTUNG Verursacht schwere Augenreizung. Darf nicht in die Hände von Kindern gelangen. Nach Gebrauch … gründlich waschen. BEI KONTAKT MIT DEN AUGEN: Einige Minuten lang behutsam mit Wasser spülen. Eventuell vorhandene Kontaktlinsen nach Möglichkeit entfernen. Weiter spülen. Bei anhaltender Augenreizung: Ärztlichen Rat einholen/ärztliche Hilfe hinzuziehen. Ist ärztlicher Rat erforderlich, Verpackung oder Kennzeichnungsetikett bereithalten. Giftinformationszentrum: 070/245 245.TRADALL 01DD_PRECAUTION1212PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR3118742[DSGH07]01NL286063301ALL286065701DD_PICTO_DANG1313PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR311874301NL286063401ALL286065801DD_PICTO_DIV1414PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR3118744[ZSECU1] [ZSECU2] [ZSECU5]Pas de place pour les pictos AISE. Nous ne les avons pas sur les réf. Ecolabel actuelles.01NL286063501ALL286065901DD_PICTO_AISE1515PREC_D_EMPLOISECTION PRECAUCTIONS D'EMPLOIFR3118745[ZPOINTVERT]+TRIMAN et consigne de tri (obligatoire pour l'Ecolabel)01NL286063601ALL286066001DD_LOGO_RECY1616EMBALLAGESECTION EMBALLAGEFR311874601NL286063701ALL286066101DD_LOGO_DIV1717EMBALLAGESECTION EMBALLAGEFR3118747500mL[ZEMETRO]CPP 16/10 : >Ajouter le e metrologique après 500mL. 11NL2860638500mL TRADNL 01ALL2860662500mL01DD_POIDS_VOL1818POIDS_CONTENANCESECTION CONTENANCEFR311874811NL286063901ALL286066301DD_INFO_EMB1919POUR_LA_PLANETESECTION POUR LA PLANETEFR3118749Interdis - TSA 91431 - 91343 MASSY Cedex - France01NL2860640Interdis - TSA 91431 - 91343 MASSY Cedex - France01ALL2860664Interdis - TSA 91431 - 91343 MASSY Cedex - France01DD_PAVE_SC2020AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3118750EMB B 0043201NL2860641EMB B 0043201ALL2860665EMB B 0043201DD_CODE_EMB2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3118751Fabriqué en Belgique par EMB B0432 pour Interdis11NL2860642Geproduceerd in België door EMB B00432 voor InterdisTRADNL 01ALL2860666Hergestellt in Belgien von EMB B0432 für InterdisTRADALL 01DD_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3118752356007119895401NL2860643356007119895401ALL2860667356007119895401DD_CODE_EAN2323CODE_EANSECTION CODE EANFR311875301NL286064401ALL286066801DD_MARQ_CE2424AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMEN7549LIQUIDE VAISSELLE ECOPLANET SANS PARFUM NORD 500MLDPHDET8643
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/8643_3560071198954_valNut.xml b/t/inputs/import_convert_carrefour_france/8643_3560071198954_valNut.xml
new file mode 100644
index 0000000000000..f34c9c8b7f423
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/8643_3560071198954_valNut.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/9572_8714800018920_text.xml b/t/inputs/import_convert_carrefour_france/9572_8714800018920_text.xml
new file mode 100644
index 0000000000000..88b6dde768dcf
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/9572_8714800018920_text.xml
@@ -0,0 +1 @@
+FR3734197Energy DRINK* Light**10ES3707880Energy DRINK* Light**01AL_DENOCOM0101FACINGSECTION FACINGFR3734198Taurine, vitamines, caféine *Boisson énergisante ML 03/09/19 R1 : ordre des 3 ingrédients modifié afin de respecter l'ordre décroissant pondéral de mise en oeuvre10ES3707881Taurina, vitaminas, cafeína *Bebida energética09.09.19_SLK: Texte mis à jour.TRADES 01AL_BENEF_CONS0202FACINGSECTION FACINGFR3734199**Réduction d'au moins 30% de la teneur en glucides par rapport à un produit similaire à base de sucres
25 cl eML 03/09/19 R1 : Merci d'écrire "cl" en minuscules10ES3707882**Reducción de al menos 30% del contenido de hidratos de carbono en comparación con un producto similar a base de azúcares.
25 cl e
TRADES 01AL_TXT_LIB_FACE0303FACINGSECTION FACINGFR3734200 10ES370788301AL_SPE_BIO0404FACINGSECTION FACINGFR3734201 10ES370788401AL_ALCO_VOL0505FACINGSECTION FACINGFR3734202 10ES370788501AL_PRESENTATION0606FACINGSECTION FACINGFR3734203Boisson énergisante gazéifiée avec édulcorants, taurine, caféine et vitamines. 10ES3707886Bebida energética con gas, con edulcorantes, taurina, cafeína y vitaminas.TRADES 01AL_DENOLEGAL0707COMPOSITIONSECTION COMPOSITIONFR3734204Eau gazéifiée, acidifiant : acide citrique, correcteur d'acidité : citrates de sodium, glucuronolactone, arôme, taurine 0,025%, édulcorants : acésulfame-K et sucralose, inositol, caféine 0,017%, colorants : caramel de sulfite caustique et riboflavines, vitamines : niacine - B6 - B12.ML 03/09/19 R1 : - Retirer le pourcentage après glucuronolactone - Merci de respecter la formulation de la trame texte "colorants : caramel de sulfite caustique et riboflavines, vitamines : niacine - B6 - B12". (dans la relecture, la riboflavines se trouve dans les vitamines, ce n'est pas correct). - Merci de respecter la formulation en mettant des tirets entre les vitamines - Ne pas tenir compte du commentaire du fournisseur pour la teneur en caféine : 0,017% est bien l'arrondi validé dans le CDC
10ES3707887Agua carbonatada, acidulante: ácido cítrico, corrector de acidez: citratos de sodio, glucuronolactona, aroma, taurina 0,025%, edulcorantes: acesulfamo K y sucralosa, inositol, cafeína 0,017%, colorantes: caramelo de sulfito cáustico y riboflavina, vitaminas: niacina - B6 - B12.
09.09.19_SLK: Texte mis à jour. 23/08/19_SLK: 1) supprimer les parenthèse pour le %de "glucuronolactona" pour cohérence avec le reste des ingrédients avec %. 2) remplacer "colorantes: caramelo de sulfito cáustico, vitaminas: riboflavina" par colorantes: caramelo de sulfito cáustico, riboflavina, vitaminas:...". Texte mis à jour.TRADES 01AL_INGREDIENT0808COMPOSITIONSECTION COMPOSITIONFR3734205 10ES370788801AL_RUB_ORIGINE0909ORIGINESECTION ORIGINEFR3734206 niacina (%IR) 8,7 mg / 100 ml (54%) 22 mg / 250 ml (136%) vitamina B6 (%IR) 2 mg / 100 ml (143%) 5 mg / 250 ml (357%) vitamina B12 (%IR) 2 µg / 100 ml (80%) 5 µg / 250 ml (200%)
ML 03/09/19 R1 : - Ne pas prendre en compte les commentaires du fournisseur. - Merci de faire apparaître la ligne "dont sucres" dans le tableau des VN conformément à l'onglet nutrition - Merci de modifier la phrase sous le tableau des VN pour "Quantités négligeables de matières grasses, d'acides gras saturés et de protéines" conformément à l'onglet nutrition.00ES370788909.09.19_SLK: Texte mis à jour. 23/08/19_SLK: 1) remplacer "%AR" par "%IR" (x3) après le nom de chaque vitamine. 2) ajouter les valeurs pour les %AR des vitamines par 100 g.TRADES 01AL_NUTRI_N_AR1010NUTRITIONSECTION NUTRITIONFR3734207Servir frais.10ES3707890Servir frío.TRADES 01AL_PREPA1111UTILISATIONSECTION UTILISATIONFR3734208Avant ouverture, conservez votre canette dans un endroit propre, frais et sec à l'abri de la lumière. A consommer de préférence avant fin : voir au bas de la canette.10ES3707891Antes de abrir, conservar el envase en un lugar limpio, fresco y seco, resguardado de la luz. Consumir preferentemente antes del fin de: ver en la base de la lata.12/08/19: Texte mis à jour (remplacer "ver en la base del envase" par "ver en la base de la lata.")TRADES 01AL_CONSERV1212UTILISATIONSECTION UTILISATIONFR3734209Teneur élevée en caféine (17 mg/ 100ml). Boisson non recommandée aux enfants, aux personnes diabétiques ou sensibles à la caféine et aux femmes enceintes. A consommer avec modération, maximum une canette par jour. Il est déconseillé de consommer cette boisson avec de l'alcool. Il est déconseillé de consommer cette boisson dans la cadre d'une pratique sportive.
10ES3707892Contenido elevado de cafeína (17 mg/ 100 ml). Bebida no recomendada para niños, personas diabéticas, personas sensibles a la cafeína y mujeres embarazadas. Consumir con moderación, máximo una lata al día. No se recomienda el consumo de esta bebida con alcohol. No se recomienda el consumo de esta bebida en el marco de una actividad deportiva.
12/08/19_SLK: Texte mis à jour 01/08/19_SLK: Nous vous rappelons que la mention «Contenido elevado de cafeína: No recomendado para niños ni mujeres embarazadas o en período de lactancia» doit figurer dans le même champ visuel que la dénomination de la boisson, suivie, entre parenthèses et conformément aux dispositions de l’article 13, paragraphe 1, du présent règlement, d’une référence à la teneur en caféine exprimée en mg pour 100 ml.TRADES 01AL_PRECAUTION1313UTILISATIONSECTION UTILISATIONFR3734210 10ES370789301AL_IDEE_RECET1414UTILISATIONSECTION UTILISATIONFR3734211logo ecoemballage + picto de tri 10ES370789401AL_LOGO_ECO1515EMBALLAGESECTION EMBALLAGEFR3734212 10ES370789500AL_POIDS_NET1616POIDS_CONTENANCESECTION CONTENANCEFR3734213 10ES370789600AL_POIDS_EGOUTTE1717POIDS_CONTENANCESECTION CONTENANCEFR3734214 10ES370789700AL_CONTENANCE1818POIDS_CONTENANCESECTION CONTENANCEFR373421525 cl eML 03/09/19 R1 : Merci d'écrire "cl" en minuscules10ES370789825 cl eTRADES 01AL_POIDS_TOTAL1919POIDS_CONTENANCESECTION CONTENANCEFR3734216 10ES370789901AL_INFO_EMB2020POUR_LA_PLANETESECTION POUR LA PLANETEFR3734217Interdis - TSA 91431 - 91343 MASSY Cedex - France10ES3707900Interdis - TSA 91431 - 91343 MASSY Cedex - France Centros Comerciales Carrefour, S.A. C/ Campezo, 16 - 28022 MADRID - España Tel.: 914 908 900TRADES 01AL_PAVE_SC2121AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3734218 10ES370790101AL_ADRESSFRN2222AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3734219 10ES370790201AL_EST_SANITAIRE2323AUTRE_INFO_CONSOSECTION AUTRES INFOS CONSOSFR3734220871480001892000ES3707903871480001892001AL_CODE_EAN2424CODE_EANSECTION CODE EANFR3734221 10ES370790401AL_TXT_LIB_DOS2525AUT_MENT_MARKT_ASECTION AUTRES MENTIONS MARKETINFR3734222 10ES370790501AL_TXT_LIB_REG2626AUTRE_MENT_REGSECTION AUTRES MENTIONS REGLEMENFR3734223 10ES370790601AL_INFO_CONSERV2727PAVE_DATAGESECTION DATAGE8421BOISSON ENERGISANTE LIGHT 25CLALISTD9572
\ No newline at end of file
diff --git a/t/inputs/import_convert_carrefour_france/9572_8714800018920_valNut.xml b/t/inputs/import_convert_carrefour_france/9572_8714800018920_valNut.xml
new file mode 100644
index 0000000000000..25fff5560bbc6
--- /dev/null
+++ b/t/inputs/import_convert_carrefour_france/9572_8714800018920_valNut.xml
@@ -0,0 +1 @@
+mlML100,00millilitreVALENERLABELESPREPAREDESmlML250,00millilitreVALENERLABELESPREPAREDESPORTIONESPORTIONSOITES1cannetteARCOLESES4355875ENERKJ1EnergieENER kJKJO100,00Kilojoule27< 1kJKJO250,00Kilojoule68< 1ES4355876ENERKC2EnergieENER kcalE14100,00kilocalorie6< 1kcalE14250,00kilocalorie16< 1ES4355879FAMSCIS5NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355880FAPUCIS6NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355881CHOAVL7NutrimentsNUT Chef ProduitgGR100,00gramme1,0< 1gGR250,00gramme2,5< 1ES4355882SUGAR8NutrimentsNUT Chef ProduitgGR100,00gramme00gGR250,00gramme00ES4355883POLYL9NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355884STARCH10NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355885FIBTG11NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355888SALTEQ14NutrimentsNUT Responsable QualitégGR100,00gramme0,153gGR250,00gramme0,386ES4355890ACL16NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355892CHO18NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355893AGO19NutrimentsNUT Chef ProduitgGR100,00gramme0gGR250,00gramme0ES4355894LACS20NutrimentsNUT Chef ProduitgGR100,00gramme0,00gGR250,00gramme0,00ES4355895VITA21VitaminesVIT Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355896VITD22VitaminesVIT Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355897VITE23VitaminesVIT Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355898VITK24VitaminesVIT Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355899VITC25VitaminesVIT Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355900THIA26VitaminesVIT Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355901RIBF27VitaminesVIT Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355902NIA28VitaminesVIT Chef ProduitmgME100,00milligramme8,754mgME250,00milligramme22136ES4355903VITB629VitaminesVIT Chef ProduitmgME100,00milligramme2,0143mgME250,00milligramme5,0357ES4355904FOLDFE30VitaminesVIT Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355905VITB1231VitaminesVIT Chef ProduitµgMC100,00microgramme2,080µgMC250,00microgramme5,0200ES4355906BIOT32VitaminesVIT Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355907PANTAC33VitaminesVIT Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355908CA34MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355909P35MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355910FE36MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355911MG37MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355912ZN38MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355913ID39MinérauxMIN Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355914K40MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355915CLD41MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355916CU42MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355917MN43MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355918FD44MinérauxMIN Chef ProduitmgME100,00milligramme00mgME250,00milligramme00ES4355919SE45MinérauxMIN Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355920CR46MinérauxMIN Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES4355921MO47MinérauxMIN Chef ProduitµgMC100,00microgramme00µgMC250,00microgramme00ES358903ES358903ES358903QTENEG1358903ES358904ES358904ES358904AR013358904COMPO4358905ES358906ES358906ES358906VARIEZ015358906FR366041PHRASETOPFR366042FR366043PHRASEBOTTOM7018BOISSON ENERGISANTE LIGHT 25CLTABNUTSTDVITMIN 9572
\ No newline at end of file