mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 04:27:14 +01:00
mirakle configuration improvements
This commit is contained in:
parent
f1bd502044
commit
29f76aa9d9
@ -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:<br>Artikelfeld: "Mirakel-Feldname": {"feld": "xyz"} oder kurz "Mirakel-Feldname": "xyz",<br>Freifeld: "Mirakel-Feldname": {"freifeld": "Bezeichnung in Shop"} (Siehe Reiter "Freifelder"),<br>Eigenschaft: "Mirakel-Feldname": {"eigenschaft": "Eigenschaftenname xyz"},<br>Fester Wert: "Mirakel-Feldname": {"wert": "xyz"}<br><br>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:<br>Artikelfeld: "Mirakel-Feldname": {"feld": "xyz"} oder kurz "Mirakel-Feldname": "xyz",<br>Freifeld: "Mirakel-Feldname": {"freifeld": "Bezeichnung in Shop"} (Siehe Reiter "Freifelder"),<br>Eigenschaft: "Mirakel-Feldname": {"eigenschaft": "Eigenschaftenname xyz"},<br>Fester Wert: "Mirakel-Feldname": {"wert": "xyz"}<br><br>Optionen:<br>Text voranstellen: "praefix: "Dieser Text vorne",<br>Text hinten anstellen: "postfix: "Dieser Text hinten",<br>Standardwert: "standardwert: "Dieser Wert wenn nichts gefunden wurde",<br>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:<br>Artikelfeld: "Mirakel-Feldname": {"feld": "xyz"} oder kurz "Mirakel-Feldname": "xyz",<br>Freifeld: "Mirakel-Feldname": {"freifeld": "Bezeichnung in Shop"} (Siehe Reiter "Freifelder"),<br>Eigenschaft: "Mirakel-Feldname": {"eigenschaft": "Eigenschaftenname xyz"},<br>Fester Wert: "Mirakel-Feldname": {"wert": "xyz"}<br><br>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);
|
||||
return($prefix.$value.$postfix);
|
||||
break;
|
||||
case 'praefix':
|
||||
$prefix = $value;
|
||||
break;
|
||||
case 'postfix':
|
||||
$postfix = $value;
|
||||
break;
|
||||
case 'standardwert':
|
||||
if(empty($returnval)) {
|
||||
$returnval = $value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return(null);
|
||||
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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user