diff --git a/www/pages/shopimporter_mirakl.php b/www/pages/shopimporter_mirakl.php
index 608ab1a2..cd955249 100644
--- a/www/pages/shopimporter_mirakl.php
+++ b/www/pages/shopimporter_mirakl.php
@@ -24,7 +24,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
private $taxationByDestinationCountry;
private $orderSearchLimit;
- private $category_identifier;
+ private $configuration_identifier;
private $create_products;
private $mirakl_error_text_product_missing;
@@ -71,17 +71,17 @@ class Shopimporter_Mirakl extends ShopimporterBase {
'size' => 40,
'info' => 'optional, int64'
],
- 'category_identifier_source' => [
+ 'configuration_identifier_source' => [
'typ' => 'select',
- 'bezeichnung' => '{|Katalogkategorie-Typ|}:',
+ 'bezeichnung' => '{|Konfigurationsidentifizierer-Typ|}:',
'size' => 40,
- 'info' => 'Woher soll die Katalogkategorie des jeweiligen Artikels bezogen werden?',
+ 'info' => 'Woher soll die Konfiguration des jeweiligen Artikels bezogen werden?',
'default' => 'feld',
'optionen' => ['feld' => '{|Feld|}', 'freifeld' => '{|Freifeld|}', 'eigenschaft' => '{|Eigenschaft|}', 'wert' => '{|Fester Wert|}']
],
- 'category_identifier_source_value' => [
+ 'configuration_identifier_source_value' => [
'typ' => 'text',
- 'bezeichnung' => '{|Katalogkategorie-Wert|}:',
+ 'bezeichnung' => '{|Konfigurationsidentifizierer-Wert|}:',
'size' => 40,
'info' => '',
'default' => 'kategoriename'
@@ -111,13 +111,13 @@ class Shopimporter_Mirakl extends ShopimporterBase {
],
'product_field_map' => [
'typ' => 'textarea',
- 'bezeichnung' => '{|Zuordnung Produkt-Felder je Kategorie (JSON)|}:',
+ 'bezeichnung' => '{|Zuordnung Produkt-Felder je Konfiguration (JSON)|}:',
'cols' => 80,
'rows' => 20,
- 'info' => 'Die Felder werden vom Mirakl-Betreiber vorgegeben. Ist keine Kategorie definiert, gilt der Eintrag für alle Artikel. Jedes Feld kann wie folgt zugeordnet werden:
Artikelfeld: "Mirakel-Feldname": {"feld": "xyz"} oder kurz "Mirakel-Feldname": "xyz",
Freifeld: "Mirakel-Feldname": {"freifeld": "Bezeichnung in Shop"} (Siehe Reiter "Freifelder"),
Eigenschaft: "Mirakel-Feldname": {"eigenschaft": "Eigenschaftenname xyz"},
Fester Wert: "Mirakel-Feldname": {"wert": "xyz"}
Zusatzfelder zusätzlich mit der Eigenschaft "zusatzfeld": true versehen: z.B. "Mirakel-Feldname": {"feld": "name_de", "zusatzfeld": true}',
+ 'info' => 'Die Felder werden vom Mirakl-Betreiber vorgegeben. Ist keine Konfiguration definiert, gilt der Eintrag für alle Artikel. Jedes Feld kann wie folgt zugeordnet werden:
Artikelfeld: "Mirakel-Feldname": {"feld": "xyz"} oder kurz "Mirakel-Feldname": "xyz",
Freifeld: "Mirakel-Feldname": {"freifeld": "Bezeichnung in Shop"} (Siehe Reiter "Freifelder"),
Eigenschaft: "Mirakel-Feldname": {"eigenschaft": "Eigenschaftenname xyz"},
Fester Wert: "Mirakel-Feldname": {"wert": "xyz"}
Optionen:
Text voranstellen: "praefix: "Dieser Text vorne",
Text hinten anstellen: "postfix: "Dieser Text hinten",
Standardwert: "standardwert: "Dieser Wert wenn nichts gefunden wurde",
Als Zusatzfeld senden: "zusatzfeld": true',
'placeholder' => '[
{
- "kategorien": [
+ "konfigurationen": [
"Schuhe", "Hosen"
],
"felder": {
@@ -126,7 +126,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
"SHOP.PRODUCT.TITLE": {"feld": "nummer"},
"ATT.GLOBAL.Brandname": {"feld": "preis"},
"Product.BaseUnit": {"freifeld": "Kategorie"},
- "ATT.GLOBAL.NoCUperOU": {"eigenschaft": "Mirakl Steuertext"},
+ "ATT.GLOBAL.NoCUperOU": {"eigenschaft": "Mirakl Steuertext", "praefix": "ST-"},
"ATT.GLOBAL.NoCUperOU__UNIT": {"wert": "false","zusatzfeld": true},
"Product.TaxIndicator": {"wert": "1","zusatzfeld": true}
}
@@ -136,13 +136,13 @@ class Shopimporter_Mirakl extends ShopimporterBase {
'offer_field_map' => [
'typ' => 'textarea',
- 'bezeichnung' => '{|Zuordnung Angebots-Felder je Kategorie (JSON)|}:',
+ 'bezeichnung' => '{|Zuordnung Angebots-Felder je Konfiguration (JSON)|}:',
'cols' => 80,
'rows' => 20,
- 'info' => 'Die Felder werden vom Mirakl-Betreiber vorgegeben. Ist keine Kategorie definiert, gilt der Eintrag für alle Artikel. Jedes Feld kann wie folgt zugeordnet werden:
Artikelfeld: "Mirakel-Feldname": {"feld": "xyz"} oder kurz "Mirakel-Feldname": "xyz",
Freifeld: "Mirakel-Feldname": {"freifeld": "Bezeichnung in Shop"} (Siehe Reiter "Freifelder"),
Eigenschaft: "Mirakel-Feldname": {"eigenschaft": "Eigenschaftenname xyz"},
Fester Wert: "Mirakel-Feldname": {"wert": "xyz"}
Zusatzfelder zusätzlich mit der Eigenschaft "zusatzfeld": true versehen: z.B. "Mirakel-Feldname": {"feld": "name_de", "zusatzfeld": true}',
+ 'info' => '',
'placeholder' => '[
{
- "kategorien": [
+ "konfigurationen": [
"Schuhe", "Hosen"
],
"felder": {
@@ -187,7 +187,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
$this->shopUrl = rtrim($einstellungen['felder']['shopurl'], '/') . '/';
$this->mirakl_shopid = $einstellungen['felder']['mirakl_shopid'];
- $this->category_identifier = array($einstellungen['felder']['category_identifier_source'] => $einstellungen['felder']['category_identifier_source_value']);
+ $this->configuration_identifier = array($einstellungen['felder']['configuration_identifier_source'] => $einstellungen['felder']['configuration_identifier_source_value']);
$this->create_products = $einstellungen['felder']['create_products'];
$this->mirakl_error_text_product_missing = $einstellungen['felder']['mirakl_error_text_product_missing'];
@@ -308,32 +308,51 @@ class Shopimporter_Mirakl extends ShopimporterBase {
* Gets a flexible mapped fieldvalue from feld, wert or eigenschaft
*/
public function GetFieldValue($article, $field_map_entry) {
+
+ $prefix = null;
+ $postfix = null;
+ $returnval = null;
+
foreach ($field_map_entry as $key => $value) {
switch ($key) {
case 'feld':
if (isset($article[$value])) {
- return($article[$value]);
+ $returnval = $article[$value];
} else {
throw new Exception("Artikelfeld existiert nicht: \"".$value."\"");
}
break;
case 'freifeld':
if (isset($article['freifelder']['DE'][$value])) {
- return($article['freifelder']['DE'][$value]);
+ $returnval = $article['freifelder']['DE'][$value];
} else {
throw new Exception("Freifeld existiert nicht: \"".$value."\"");
}
break;
case 'eigenschaft':
$sql = "SELECT wert FROM artikeleigenschaften ae INNER JOIN artikeleigenschaftenwerte aew ON aew.artikeleigenschaften = ae.id WHERE aew.artikel = '".$article['artikelid']."' AND ae.name = '".$value."' LIMIT 1";
- return($this->app->DB->Select($sql));
+ $result = $this->app->DB->SelectRow($sql);
+ if (!empty($result)) {
+ $returnval = $result['wert'];
+ }
break;
case 'wert':
- return($value);
- break;
- }
- }
- return(null);
+ return($prefix.$value.$postfix);
+ break;
+ case 'praefix':
+ $prefix = $value;
+ break;
+ case 'postfix':
+ $postfix = $value;
+ break;
+ case 'standardwert':
+ if(empty($returnval)) {
+ $returnval = $value;
+ }
+ break;
+ }
+ }
+ return($prefix.$returnval.$postfix);
}
public function ImportSendListLager() {
@@ -586,11 +605,11 @@ class Shopimporter_Mirakl extends ShopimporterBase {
'update_delete' => null // Update delete flag. Could be empty (means "update"), "update" or "delete".
);
- $kategorie = $this->GetFieldValue($article, $this->category_identifier);
+ $konfiguration = $this->GetFieldValue($article, $this->configuration_identifier);
foreach ($this->offer_field_map as $offer_field_entry) {
- if ($offer_field_entry['kategorien'] != null) {
- if (!in_array($kategorie,$offer_field_entry['kategorien'])) {
+ if ($offer_field_entry['konfigurationen'] != null) {
+ if (!in_array($konfiguration,$offer_field_entry['konfigurationen'])) {
continue;
}
}
@@ -612,7 +631,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
}
if ($missing) {
$mirakl_export_offers_return_value['returncode'] = 1;
- $article['mirakl_export_offers_result'] = array('returncode' => 10, 'message' => "Pflichtfelder fehlen in Angebotskonfiguration von Kategorie \"".$offer_field_entry['kategorie']."\": ".implode(', ',$missing));
+ $article['mirakl_export_offers_result'] = array('returncode' => 10, 'message' => "Pflichtfelder fehlen in Angebotskonfiguration \"".$offer_field_entry['konfiguration']."\": ".implode(', ',$missing));
$mirakl_export_offers_return_value['articleList'][] = $article;
$skip_article = true;
}
@@ -636,7 +655,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
$additional_fields[] = $additional_field;
} else {
$offer_for_mirakl[$offer_field] = $offer_field_value;
- }
+ }
}
}
@@ -646,7 +665,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
if (!$category_found) {
$mirakl_export_offers_return_value['returncode'] = 1;
- $article['mirakl_export_offers_result'] = array('returncode' => 11, 'message' => "Angebotskonfiguration für Artikel ".$article['nummer'].", Kategorie \"".$kategorie."\" nicht gefunden");
+ $article['mirakl_export_offers_result'] = array('returncode' => 11, 'message' => "Angebotskonfiguration für Artikel ".$article['nummer'].", Konfiguration \"".$konfiguration."\" nicht gefunden");
$mirakl_export_offers_return_value['articleList'][] = $article;
continue;
}