Zu ändern ist *nur* die Datei cao_osc_functions.php v1.53.
Falls ihr die Datei bereits selbst modifiziert habt, verwendet die folgenden Hinweise für die Integration der Aktionspreise. Wer noch das *originale* Script verwendet, kann sich die Arbeit sparen und lädt sich die Datei aus dem Anhang.
Der folgende Code gehört ans Ende der Funktion ProductsUpdate(). Bitte
über die Zeile "if (file_exists('cao_produpd_2.php'))..." einfügen:
Code: Alles auswählen
// 20140930 m3dfmc begin - Aktionspreise CAO -> osC
// Getestet mit osCommerce 2.2 MS2
// Fragen, Probleme, Anregungen bitte an axelf.acp [at] gmail.com
//
// Gegeben: Der Artikel exisitiert im Shop, keine weitere Prüfung nötig
//
// Achtung_1: CAO hat bis mind. v1.4.4.145 für Aktionen keine Plausibilitätsabfrage, d.h.:
// Man kann in CAO eine Aktion ohne Ablaufdatum und|oder ohne|gleichen|teureren Aktionspreis anlegen,
// dann kommen hier entweder keine "products_ac_*" POST-Variablen an oder "komische" Werte, die
// in den Shop übernommen werden, z.B. eine Aktion mit gleichem oder höherem Preis.
//
// Achtung_2: Bitte beachten, dass CAO den Import von Sonderaktionen aus dem Shop nicht (mehr) unterstützt.
// Der entsprechende (Aktions-) Code in "SendProducts" ist obsolet.
// Ebenfalls obsolet sind die Funktionen "ProductsSpecialPriceUpdate" und "ProductsSpecialPriceErase"
//
// Achtung_3: Wenn in CAO eine Aktion gelöscht wird, kommt hier - trotz Artikel-Update - keine Information darüber an.
// Deshalb wird hier jeder Artikel geprüft, um im Shop eine vorhandene Aktion inaktiv zu setzen (status=0)
// Dazu dient der folgende Code-Block (if (!isset...). Diesen deaktivieren, wenn das nicht gewollt ist.
// Bitte auch darauf achten, dass im Shop keine gegensätzlichen Aktionen durchgeführt werden.
$ac_sql = "select specials_id, specials_new_products_price, expires_date from " . TABLE_SPECIALS . " " . "where products_id='" . (int)$products_id . "'";
if (!isset($_POST['products_ac_date_to'])) {
$ac_query = tep_db_query($ac_sql);
if ($ac = tep_db_fetch_array($ac_query)) {
// wenn im Shop eine Aktion zum Artikel existiert wird die jetzt deaktiviert
$specials_id = $ac['specials_id'];
tep_db_query("update " . TABLE_SPECIALS .
" set date_status_change = now()," .
" status = '0'" .
" where specials_id = '" . (int)$specials_id. "' and status <> '0'");
}
}
if (isset($_POST['products_ac_date_to']) && isset($_POST['products_ac_price'])) {
// CAO Artikel hat eine Aktion mit Preis u. Ablaufdatum
$products_ac_price = tep_db_prepare_input($_POST['products_ac_price']);
$products_ac_date_to = tep_db_prepare_input($_POST['products_ac_date_to']);
$d = explode(".", $products_ac_date_to); // "05.10.2014"
$s = sprintf("%04d-%02d-%02d", $d[2], $d[1], $d[0]); // "2014-10-05"
if (strtotime($s) >= strtotime(date("Y-m-d"))) {
// Datum OK (heute oder in der Zukunft)
$ac_query = tep_db_query($ac_sql);
if ($ac = tep_db_fetch_array($ac_query)) {
// Aktion existiert bereits im osC
$specials_id = $ac['specials_id'];
if ( (strtotime($s) <> strtotime($ac['expires_date'])) || ($products_ac_price <> $ac['specials_new_products_price']) ) {
// UPDATE, weil Datums- oder Preisänderung
tep_db_query("update " . TABLE_SPECIALS .
" set specials_new_products_price = '" . $products_ac_price . "'," .
" specials_last_modified = now()," .
" expires_date = '" . $s . "'," .
" status = '1'" .
" where specials_id = '" . (int)$specials_id. "'");
}
} else {
// INSERT, denn Aktion existiert nicht im osC
tep_db_query("insert into " . TABLE_SPECIALS .
" (products_id, specials_new_products_price, specials_date_added, expires_date, status) " .
" values ('" . (int)$products_id . "', '" . $products_ac_price . "', now(), '" . $s . "', '1')");
}
} else {
// Datum liegt in der Vergangenheit, Aktion parken
$ac_query = tep_db_query($ac_sql);
if ($ac = tep_db_fetch_array($ac_query)) {
$specials_id = $ac['specials_id'];
tep_db_query("update " . TABLE_SPECIALS .
" set specials_new_products_price = '" . $products_ac_price . "'," .
" specials_last_modified = now()," .
" expires_date = '" . $s . "'," .
" date_status_change = now()," .
" status = '0'" .
" where specials_id = '" . (int)$specials_id. "' and status <> '0'");
}
}
}
// m3dfmc end
Der folgende Codeschnipsel gehört in die Funktion ProductsErase(). Bitte
unter die Zeile "tep_remove_product($ProdID);" einfügen:
Code: Alles auswählen
// 20140930 m3dfmc begin - Aktionspreise CAO -> osC
tep_db_query("delete from " . TABLE_SPECIALS . " where products_id = '" . (int)$ProdID . "'");
// m3dfmc end
Ich hoffe, ich konnte helfen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.