mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-14 20:17:14 +01:00
mirakl required fields
This commit is contained in:
parent
f479a12c84
commit
365b87f734
@ -76,7 +76,7 @@ class Shopimporter_Mirakl extends ShopimporterBase {
|
||||
'size' => 40,
|
||||
'info' => 'optional, int64'
|
||||
],
|
||||
'category_identifier_source' => [
|
||||
/* 'category_identifier_source' => [
|
||||
'typ' => 'select',
|
||||
'bezeichnung' => '{|Kategorie-Identifizierer|}:',
|
||||
'size' => 40,
|
||||
@ -89,34 +89,15 @@ class Shopimporter_Mirakl extends ShopimporterBase {
|
||||
'size' => 40,
|
||||
'info' => 'Wenn oben Freifeld oder Eigenschaft gewählt wurde'
|
||||
],
|
||||
'product_identifier_type' => [
|
||||
'typ' => 'text',
|
||||
'bezeichnung' => '{|Produkt-Identifizierertyp in Mirakl|}:',
|
||||
'size' => 40,
|
||||
'info' => 'Z.B. EAN'
|
||||
],
|
||||
'product_identifier_source' => [
|
||||
'typ' => 'select',
|
||||
'bezeichnung' => '{|Produkt-Identifizierer|}:',
|
||||
'size' => 40,
|
||||
'optionen' => ['Artikelnummer' => '{|Artikelnummer|}', 'Herstellernummer' => '{|Herstellernummer|}', 'EAN' => '{|EAN|}', 'Freifeld' => 'Freifeld', 'Eigenschaft' => 'Eigenschaft'],
|
||||
'info' => 'Feld in OpenXE für die Zuordnung der Artikel zu den Katalogprodukten in Mirakl'
|
||||
],
|
||||
'product_identifier_source_field' => [
|
||||
'typ' => 'text',
|
||||
'bezeichnung' => '{|Produkt-Identifizierer Freifeld oder Eigenschaft|}:',
|
||||
'size' => 40,
|
||||
'info' => 'Wenn oben Freifeld oder Eigenschaft gewählt wurde'
|
||||
],
|
||||
'product_field_map' => [
|
||||
'typ' => 'textarea',
|
||||
'bezeichnung' => '{|Zuordnung Produkt-Felder je Kategorie (JSON)|}:',
|
||||
'info' => 'Die Felder werden vom Mirakl-Betreiber vorgegeben. Mögliche Zuordnungen aus OpenXE sind: Artikelnummer, Artikelname, Einheit, Hersteller, Herstellernummer, EAN oder eine konkrete Artikeleigenschaft'
|
||||
],
|
||||
],*/
|
||||
'offer_field_map' => [
|
||||
'typ' => 'textarea',
|
||||
'bezeichnung' => '{|Zuordnung Angebots-Felder je Kategorie (JSON)|}:',
|
||||
'info' => 'Die Felder werden vom Mirakl-Betreiber vorgegeben. Mögliche Zuordnungen aus OpenXE sind: nummer, name_de, einheit, hersteller, herstellernummer, ean u.v.m. Freifelder: {"freifeld": "Freifeld1-40"}, Eigenschaften: {"eigenschaft": "Eigenschaftenname xyz"}, Fester Wert: {"wert": "xyz"}, Zusatzfelder zusätzlich mit der Eigenschaft "zusatzfeld": true versehen: z.B. {"freifeld": "Freifeld1", "zusatzfeld": true}'
|
||||
'info' => 'Die Felder werden vom Mirakl-Betreiber vorgegeben. Zuordnung über "Mirakl-xyz": {"feld": "xyz"} oder kurz "Mirakl-xyz": "xyz" Mögliche Zuordnungen aus OpenXE sind: nummer, name_de, einheit, hersteller, herstellernummer, ean u.v.m. Freifelder wie im Reiter Freifelder mit Präfix \'freifeld_\', Eigenschaften: {"eigenschaft": "Eigenschaftenname xyz"}, Fester Wert: {"wert": "xyz"}, Zusatzfelder zusätzlich mit der Eigenschaft "zusatzfeld": true versehen: z.B. {"feld": "name_de", "zusatzfeld": true}'
|
||||
],
|
||||
/*
|
||||
'steuergruppen' => [
|
||||
@ -310,37 +291,50 @@ class Shopimporter_Mirakl extends ShopimporterBase {
|
||||
$additional_fields = array();
|
||||
|
||||
// Required attributes
|
||||
|
||||
$required = [
|
||||
'product_id_type',
|
||||
'product_id',
|
||||
'shop_sku',
|
||||
'price'
|
||||
];
|
||||
|
||||
$missing = null;
|
||||
|
||||
foreach ($required as $key) {
|
||||
if (!isset($this->offer_field_map[$key])) {
|
||||
$missing[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
if ($missing) {
|
||||
return(array('status' => false, 'message' => "Missing required field: ".implode(', ',$missing)));
|
||||
}
|
||||
|
||||
$offer_for_mirakl = array(
|
||||
'product_id_type' => $this->product_identifier_type,
|
||||
'product_id' => $article['nummer'], // TBD
|
||||
'shop_sku' => $article['nummer'], // TBD
|
||||
'price' => $article['preis'],
|
||||
'state_code' => '11', // ?!?!
|
||||
'update_delete' => null // Update delete flag. Could be empty (means "update"), "update" or "delete".
|
||||
);
|
||||
|
||||
// print_r($this->offer_field_map);
|
||||
|
||||
foreach ($this->offer_field_map as $offer_field => $offer_field_source) {
|
||||
|
||||
$offer_field_value = null;
|
||||
|
||||
print_r($this->offer_field_map);
|
||||
|
||||
if (!is_array($offer_field_source)) {
|
||||
if (!isset($article[$offer_field_source])) {
|
||||
throw new Exception("Artikelfeld \"".$offer_field_source."\" nicht vorhanden.");
|
||||
$offer_field_source = array('feld' => $offer_field_source);
|
||||
}
|
||||
$offer_field_value = $article[$offer_field_source];
|
||||
} else {
|
||||
|
||||
$offer_field_value = null;
|
||||
$is_additional_field = false;
|
||||
|
||||
foreach ($offer_field_source as $key => $value) {
|
||||
switch ($key) {
|
||||
case 'freifeld':
|
||||
// TBD
|
||||
case 'feld':
|
||||
$offer_field_value = $article[$value];
|
||||
break;
|
||||
case 'eigenschaft':
|
||||
// TBD
|
||||
$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";
|
||||
$offer_field_value = $this->app->DB->Select($sql);
|
||||
break;
|
||||
case 'wert':
|
||||
$offer_field_value = $value;
|
||||
@ -350,7 +344,6 @@ class Shopimporter_Mirakl extends ShopimporterBase {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($is_additional_field) {
|
||||
$additional_field = array (
|
||||
|
Loading…
Reference in New Issue
Block a user