Jump to content
xt:Commerce Community Forum

Sonderangebote bei CSV Import


seneca

Recommended Posts

Hallo!

Ich m?chte Artikel mit einer CSV Datei importieren.

Das klappt auch soweit.

Nur wie kann ich einzelne Produkte in der CSV Datei als Sonderangebot kennzeichnen? Mir fehlt der passende Feldname daf?r.

Kann mir da jemand weiterhelfen?

1000 Dank!

Link to comment
Share on other sites

  • 1 year later...
  • 9 months later...
  • 1 month later...

ich habe das ganze folgendermaßen integriert:

da ich das Feld 'p_disc' nicht nutze habe ich darin den Prozentwert eingetragen um wieviel der Produktpreis verringert werden soll. Man kann natürlich auch die CSV-Datei um ein eigenes Feld erweitern. Dazu muss man allerdings in der Funktion generate_map() das Array $file_layout um dieses Feld erweitern und in den nachfolgenden PHP-Codes 'p_disc' mit dem neuen Feldnamen ersetzen.

einfach in die admin/includes/classes/import.php folgende Funktionen integrieren:

  
function checkSpecial($prod_id) {
$extra_query = xtc_db_query("SELECT specials_id FROM ".TABLE_SPECIALS." WHERE products_id='".$prod_id."'");
if (!xtc_db_num_rows($extra_query))
return false;
return true;
}

function insertSpecial(& $dataArray, $products_id, $mode = 'insert') {
$special_array = array ('products_id' => $products_id, 'specials_last_modified' => date("Y-m-d H:i:s"));
if ($this->FileSheme['p_disc'] == 'Y' && $this->FileSheme['p_priceNoTax'] == 'Y') {
$new_price = ((100 - $dataArray['p_disc']) / 100) * $dataArray['p_priceNoTax'];
$special_array = array_merge($special_array, array ('specials_new_products_price' => $new_price));
}

if ($mode == 'insert') {
xtc_db_perform(TABLE_SPECIALS, $special_array);
} else {
xtc_db_perform(TABLE_SPECIALS, $special_array, 'update', 'products_id = \''.$products_id.'\'');
}
}[/php]

und innerhalb der Funktion insertProduct() nach der Zeile:

[php]if ($touchCat) $this->insertCategory($dataArray, $mode, $products_id);

folgende Zeilen einfügen:

        if ($this->FileSheme['p_disc'] == 'Y' && $dataArray['p_disc'] > 0) {
if ($this->checkSpecial($products_id)) $this->insertSpecial($dataArray, $products_id, 'update');
else $this->insertSpecial($dataArray, $products_id);
}
[/php]

sollte funktionieren in der Version: [font=Verdana, Arial, Helvetica, sans-serif][size=2][color=#d68000][b]v3.0.4 SP2[/b][/color][/size][/font]

Link to comment
Share on other sites

  • 3 weeks later...

Da müssten Sie dann eine Delete-Funktion einbauen und die folgende Anweisung innerhalb der insertProduct() modifizieren:

if ($this->FileSheme['p_disc'] == 'Y' && $dataArray['p_disc'] > 0) {
if ($this->checkSpecial($products_id)) $this->insertSpecial($dataArray, $products_id, 'update');
else $this->insertSpecial($dataArray, $products_id);
} elseif ($this->FileSheme['p_disc'] == 'Y' && $dataArray['p_disc'] == 0 && $this->checkSpecial($products_id)) $this->deleteSpecial($products_id); [/php]

Im vorliegenden Fall wird, wenn der Wert von p_disc = 0 ist und es zu dem Produkt einen Sonderpreis-Eintrag gibt, dieser Eintrag gelöscht. Diese Funktion zum Löschen des Datensatzes müssten Sie ebenso noch integrieren:

[php]function deleteSpecial($prod_id) {
$extra_query = xtc_db_query("DELETE FROM ".TABLE_SPECIALS." WHERE products_id='".$prod_id."'");
if (!xtc_db_num_rows($extra_query))
return false;
return true;
}

Ich hab allerdings diese Version nicht getestet. Sollte aber funktionieren, solang sich keine Syntaxfehler eingeschlichen haben.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...