admin/includes/application_top.php
im Bereich der FILENAME defines einfügen:
define('FILENAME_RECOVER_CART_SALES', 'recover_cart_sales.php');
define('FILENAME_STATS_RECOVER_CART_SALES', 'stats_recover_cart_sales.php');
define('FILENAME_CATALOG_PRODUCT_INFO', 'product_info.php');
define('FILENAME_CATALOG_LOGIN', 'login.php');
define('TABLE_SCART', 'scart');
admin/includes/column_left.php
einfügen:
im Bereich echo ('<div class="dataTableHeadingContent"><b>'.BOX_HEADING_STATISTICS.'</b></div>');
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['stats_recover_cart_sales'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_STATS_RECOVER_CART_SALES, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_REPORTS_RECOVER_CART_SALES . '</a><br>';
im Bereich echo ('<div class="dataTableHeadingContent"><b>'.BOX_HEADING_TOOLS.'</b></div>');
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['recover_cart_sales'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_RECOVER_CART_SALES) . '" class="menuBoxContentLink"> -' . BOX_TOOLS_RECOVER_CART . '</a><br>';
als letzte Zeile:
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['recover_cart_sales'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_CONFIGURATION, 'gID=33', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_CONFIGURATION_33 . '</a><br>';
admin/includes/classes/shopping_cart.php
ca. Zeile 21
function shoppingCart() { $this->reset(); }danach einfügen
function restoreCustomersCart($customers_id) { $this->reset(false); $products_query = xtc_db_query("select products_id, customers_basket_quantity from ".TABLE_CUSTOMERS_BASKET." where customers_id = '$customers_id'"); while ($products = xtc_db_fetch_array($products_query)) { $this->contents[$products['products_id']] = array ('qty' => $products['customers_basket_quantity']); // attributes $attributes_query = xtc_db_query("select products_options_id, products_options_value_id from ".TABLE_CUSTOMERS_BASKET_ATTRIBUTES." where customers_id = '$customers_id' and products_id = '".$products['products_id']."'"); while ($attributes = xtc_db_fetch_array($attributes_query)) { $this->contents[$products['products_id']]['attributes'][$attributes['products_options_id']] = $attributes['products_options_value_id']; } } $this->calculate(); } function get_content_type() { $this->content_type = false; if ((DOWNLOAD_ENABLED == 'true') && ($this->count_contents() > 0)) { reset($this->contents); while (list ($products_id,) = each($this->contents)) { if (isset ($this->contents[$products_id]['attributes'])) { reset($this->contents[$products_id]['attributes']); while (list (, $value) = each($this->contents[$products_id]['attributes'])) { $virtual_check_query = xtc_db_query("select count(*) as total from ".TABLE_PRODUCTS_ATTRIBUTES." pa, ".TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD." pad where pa.products_id = '".$products_id."' and pa.options_values_id = '".$value."' and pa.products_attributes_id = pad.products_attributes_id"); $virtual_check = xtc_db_fetch_array($virtual_check_query); if ($virtual_check['total'] > 0) { switch ($this->content_type) { case 'physical' : $this->content_type = 'mixed'; return $this->content_type; break; default : $this->content_type = 'virtual'; break; } } else { switch ($this->content_type) { case 'virtual' : $this->content_type = 'mixed'; return $this->content_type; break; default : $this->content_type = 'physical'; break; } } } } else { switch ($this->content_type) { case 'virtual' : $this->content_type = 'mixed'; return $this->content_type; break; default : $this->content_type = 'physical'; break; } } } } else { $this->content_type = 'physical'; } return $this->content_type; }
admin/includes/functions/general.php
suchen nach
function xtc_get_products_url($product_id, $language_id) {
$product_query = xtc_db_query("select products_url from ".TABLE_PRODUCTS_DESCRIPTION." where products_id = '".$product_id."' and language_id = '".$language_id."'");
$product = xtc_db_fetch_array($product_query);
return $product['products_url'];
}
danach einfügen:
function xtc_get_products_special_price($product_id, $customer_id, $qty = 1){ $customer_group_query = xtc_db_query("select customers_status from " . TABLE_CUSTOMERS . " where customers_id = '" . $customer_id . "'"); $customer_group = xtc_db_fetch_array($customer_group_query); $personal_query = xtc_db_query("SELECT personal_offer FROM " . TABLE_PERSONAL_OFFERS_BY . $customer_group['customers_status'] . " WHERE products_id=" . (int)$product_id . " AND quantity<=" . (int)$qty . " ORDER BY quantity DESC LIMIT 1"); if (xtc_db_num_rows($personal_query)) { $personal = xtc_db_fetch_array($personal_query); return $personal['personal_offer']; } $product_query = xtc_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$product_id . "' and status"); $product = xtc_db_fetch_array($product_query); return $product['specials_new_products_price']; }
includes/modules/order_total/ot_loworderfee.php
ca. Zeile 36
//include needed functions require_once(DIR_FS_INC . 'xtc_calculate_tax.inc.php');
Diesen Code löschen, er ist überflüssig und sorgt bei aktiviertem Mindermengenzuschlag für Fehler mit dieser Erweiterung.
lang/german/admin/buttons.php
anfügen (vor dem ?>)
define('BUTTON_COMPLETE', 'Bestellung abschließen');
lang/german/admin/german.php
anfügen (vor dem ?>)
define('BOX_CONFIGURATION_33', 'Offene Warenkörbe'); define('BOX_REPORTS_RECOVER_CART_SALES', 'Wiederhergestellte Warenkörbe'); define('BOX_TOOLS_RECOVER_CART', 'Offene Warenkörbe'); define('TAX_ADD_TAX','inkl. '); define('TAX_NO_TAX','zzgl. ');
lang/german/admin/configuration.php
anfügen (vor dem ?>)
// Recover Cart Sales define('RCS_BASE_DAYS_TITLE', 'Zeitraum'); define('RCS_BASE_DAYS_DESC', 'Anzahl der vergangenen Tage für nicht abgeschlossene Warenkörbe.'); define('RCS_REPORT_DAYS_TITLE', 'Verkaufsbericht Zeitraum'); define('RCS_REPORT_DAYS_DESC', 'Anzahl der Tage, die berücksichtigt werden sollen. Je mehr, desto länger dauert die Abfrage!'); define('RCS_EMAIL_TTL_TITLE', 'Lebensdauer Email'); define('RCS_EMAIL_TTL_DESC','Anzahl der Tage, die die E-Mail als gesendet markiert wird'); define('RCS_EMAIL_FRIENDLY_TITLE', 'Persönliche E-Mails'); define('RCS_EMAIL_FRIENDLY_DESC', 'Wenn <b>true</b> wird der Name des Kunden in der Anrede verwendet. Wenn <b>false</b> wird eine allgemeine Anrede verwendet.'); define('RCS_EMAIL_COPIES_TO_TITLE', 'E-Mail Kopien an'); define('RCS_EMAIL_COPIES_TO_DESC', 'Wenn Kopien der Emails an die Kunden versendet werden sollen, bitte Empfänger hier eintragen.'); define('RCS_SHOW_ATTRIBUTES_TITLE', 'Attribute anzeigen'); define('RCS_SHOW_ATTRIBUTES_DESC', 'Kontrolliert die Anzeige von Attributen.<br>Einige Shops nutzen Produktattribute.<br>Auf <b>true</b> setzen, wenn die Attribute angezeigt werden sollen, ansonsten auf <b>false</b>.'); define('RCS_CHECK_SESSIONS_TITLE', 'Ignoriere Kunden mit Sitzung'); define('RCS_CHECK_SESSIONS_DESC', 'Wenn Kunden mit aktiver Sitzung ignoriert werden sollen (z.B. weil sie noch einkaufen), wählen sie <b>true</b>.<br>Wenn auf <b>false</b> gesetzt, werden die Sitzungsdaten ignoriert (schneller).'); define('RCS_CURCUST_COLOR_TITLE', 'Farbe aktiver Kunde'); define('RCS_CURCUST_COLOR_DESC', 'Farbe, die aktive Kunden markiert<br>Ein "aktiver Kunde" hat bereits Artikel im Shop bestellt.'); define('RCS_UNCONTACTED_COLOR_TITLE', 'Farbe "noch nicht kontaktiert"'); define('RCS_UNCONTACTED_COLOR_DESC', 'Hintergrundfarbe für noch nicht kontaktierte Kunden.<br>Ein nicht kontaktierter Kunde wurde noch <i>nicht</i> mit diesem Tool angeschrieben.'); define('RCS_CONTACTED_COLOR_TITLE', 'Farbe kontaktiert'); define('RCS_CONTACTED_COLOR_DESC', 'Hintergrundfarbe für kontaktierte Kunden.<br>Ein kontaktierter Kunde wurde bereits mit diesem Tool <i>informiert</i>.'); define('RCS_MATCHED_ORDER_COLOR_TITLE', 'Farbe alternative Bestellung gefunden'); define('RCS_MATCHED_ORDER_COLOR_DESC', 'Hintergrundfarbe für gefundene alternative Bestellungen.<br>Diese wird verwendet, wenn sich ein oder mehrere Artikel im offenen Warenkorb befinden und die E-Mail-Adresse oder die Kundennummer mit einer anderen Bestellung übereinstimmt (siehe nächster Punkt).'); define('RCS_SKIP_MATCHED_CARTS_TITLE', 'Überspringe alternative Warenkörbe'); define('RCS_SKIP_MATCHED_CARTS_DESC', 'Prüfen, ob der Kunde den Warenkorb alternativ abgeschlossen hat (z.B. über Gastzugang statt per Anmeldung).'); define('RCS_AUTO_CHECK_TITLE', '"sichere" Warenkörbe automatisch markieren'); define('RCS_AUTO_CHECK_DESC', 'Um Einträge, die relativ sicher sind (z.B. noch nicht existierende Kunden, noch nicht angemailt, etc.) zu markieren, setzen Sie <b>true</b>.<br>Wenn auf <b>false</b> gesetzt, werden keine Einträge vorausgewählt.'); define('RCS_CARTS_MATCH_ALL_DATES_TITLE', 'Verwende Bestellungen jeden Datums'); define('RCS_CARTS_MATCH_ALL_DATES_DESC', 'Wenn <b>true</b> wird jede Bestellung des Kunden für die alternativen Abschlüsse herangezogen.<br>Wenn <b>false</b> werden nur Bestellungen im Zeitraum nach dem ablegen des letzten Artikels im Warenkorb gesucht.'); define('RCS_PENDING_SALE_STATUS_TITLE', 'Mindestbestellstatus'); define('RCS_PENDING_SALE_STATUS_DESC', 'Höchster Status, den eine Bestellung haben kann, um immer noch als offen zu gelten. Alle Werte darüber werden als Kauf gewertet'); define('RCS_REPORT_EVEN_STYLE_TITLE', 'Style ungerade Reihe'); define('RCS_REPORT_EVEN_STYLE_DESC', 'Style für die ungeraden Reihen im Bericht. Typische Optionen sind <i>dataTableRow</i> und <i>attributes-even</i>.'); define('RCS_REPORT_ODD_STYLE_TITLE', 'Style gerade Reihe'); define('RCS_REPORT_ODD_STYLE_DESC', 'Style für die geraden Reihen im Bericht. Typische Optionen sind NULL (bzw. kein Eintrag) und <i>attributes-odd</i>.'); define('RCS_SHOW_BRUTTO_PRICE_TITLE', 'Brutto-Anzeige'); define('RCS_SHOW_BRUTTO_PRICE_DESC', 'Sollen die Preise Brutto (true) oder Netto (false) angezeigt werden?'); define('DEFAULT_RCS_PAYMENT_TITLE', 'Standard-Zahlweise'); define('DEFAULT_RCS_PAYMENT_DESC', 'Modulname der Zahlweise für das abschließen der Bestellung (z.B. moneyorder).'); define('DEFAULT_RCS_SHIPPING_TITLE', 'Standard-Versandart'); define('DEFAULT_RCS_SHIPPING_DESC', 'Modulname der Versandart für das abschließen der Bestellung (z.B. dp_dp).'); define('RCS_DELETE_COMPLETED_ORDERS_TITLE', 'Bestellte Warenkörbe löschen'); define('RCS_DELETE_COMPLETED_ORDERS_DESC', 'Soll der Warenkorb im Zuge des Bestellabschlusses automatisch gelöscht werden?');
checkout_shipping.php
ca. Zeile 77
require (DIR_WS_CLASSES.'order.php');davor einfügen
xtc_checkout_site('shipping');
checkout_payment.php
ca. Zeile 66
if (isset ($_SESSION['credit_covers']))davor einfügen
xtc_checkout_site('payment');
checkout_confirmation.php
ca. Zeile 82
// load the selected payment module require (DIR_WS_CLASSES . 'payment.php');davor einfügen
xtc_checkout_site('confirm');
includes/application_top.php
ca. Zeile 104
require_once (DIR_FS_INC.'xtc_get_top_level_domain.inc.php');danach einfügen
require_once (DIR_FS_INC.'xtc_checkout_site.inc.php');
4. Dateien kopieren
Alle Dateien an ihren entsprechenden Ort kopieren
admin/recover_cart_sales.php
admin/stats_recover_cart_sales.php
admin/includes/classes/order_rcs.php
admin/includes/classes/order_total.php
admin/includes/classes/payment.php
admin/includes/classes/shipping.php
inc/xtc_checkout_site.inc.php
lang/german/admin/recover_cart_sales.php
lang/german/admin/stats_recover_cart_sales.php
templates/TEMPLATE/admin/mail/german/cart_mail.html
templates/TEMPLATE/admin/mail/german/cart_mail.txt