Ich habe die Anleitung aus diesem Beitrag hier:
ANLEITUNG: Artikel automatisch bei Anzahl 0 auf inaktiv setzen (von Schreibwarendiele) mal getestet, zusammengefasst und von kleinen 2 "Fehlern" bereinigt.
Hiermit können Artikel sowohl mit, wie auch ohne Attribute, einzeln deaktiviert werden, sobald der Bestand 0 erreicht.
Screenshot: [ Für Gäste sind keine Dateianhänge sichtbar ]
Ich hätte da auch noch eine Anleitung anzubieten inkl. Attributerweiterung und Einstellmöglichkeit für jeden einzelnen Artikel.
Müsste nur noch an modified eCommerce Shopsoftware angepasst werden.
Quelle:
ANLEITUNG: Artikel automatisch bei Anzahl 0 auf inaktiv setzenIst mehr was für Abverkäufe von Restposten die nicht mehr nach geordert werden können oder für Unikatshops wo jeder Artikel meistens nur einmal vorhanden ist.
Wer es braucht, hier die Anleitung:
Datensicherung von Shop/Dateien und Datenbank machen!Falls bereits Modifikationen an den einzelnen Dateien vorgenommen wurden bitte Dateivergleich machen!
Änderung der Datenbank (Befehl mit PHP MyAdmin o.ä. ausführen:
ALTER TABLE `products` ADD `switch_status` TINYINT( 1 ) DEFAULT '0';
Datei: /lang/german/admin/categories.php
Am Ende einfügen:
define('TEXT_PRODUCTS_SWITCH_STATUS','Artikel automatisch deaktivieren, wenn nicht mehr auf Lager?'); Datei: /admin/includes/modules/new_product.php
Hinter (ca. Zeile 49):
$pInfo->products_startpage = $_POST['products_startpage'];
Einfügen:
$pInfo->switch_status = $_POST['switch_status'];
Hinter (ca. Zeile 88):
if ($pInfo->products_startpage == '1') { $startpage_checked = true; } else { $startpage_checked = false; }
Einfügen:
if ($pInfo->switch_status == '1') { $switch_status_checked = true; } else { $switch_status_checked = false; }
Hinter (ca. Zeile 200):
echo '<td><span class="main">'.xtc_draw_pull_down_menu('options_template', $files, $default_value);
?>
</span></td>
</tr>
Einfügen:
<tr>
<td><span class="main"><?php echo TEXT_PRODUCTS_SWITCH_STATUS; ?></span></td><td><span class="main"> <?php echo TEXT_PRODUCTS_STARTPAGE_YES . xtc_draw_radio_field('switch_status', '1',$switch_status_checked) . ' ' . TEXT_PRODUCTS_STARTPAGE_NO . xtc_draw_radio_field('switch_status', '0', !$switch_status_checked) ?></span></td>
</tr>
Datei: /checkout_process.php
Suchen nach(ca. Zeile 151):
$stock_query = xtc_db_query("select products_quantity from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
Ändern in:
$stock_query = xtc_db_query("select products_quantity, switch_status from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
Suchen nach:
if (($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false')) {
xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
}
Danach einfügen:
if (( $stock_values['switch_status'] == 1 ) && ($stock_left < 1)) {
xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
}
Datei: /admin/includes/classes/categories.php
Suchen (ca. Zeile 504):
'products_vpe' => xtc_db_prepare_input($products_data['products_vpe'])
Dahinter einfügen:
, 'switch_status' => xtc_db_prepare_input($products_data['switch_status'])
Sollte dann so aussehen:
$sql_data_array = array ('products_quantity' => xtc_db_prepare_input
($products_data['products_quantity']), 'products_model' => xtc_db_prepare_input
($products_data['products_model']), 'products_ean' => xtc_db_prepare_input
($products_data['products_ean']), 'products_price' => xtc_db_prepare_input
($products_data['products_price']), 'products_sort' => xtc_db_prepare_input
($products_data['products_sort']), 'products_shippingtime' => xtc_db_prepare_input
($products_data['shipping_status']), 'products_discount_allowed' => xtc_db_prepare_input
($products_data['products_discount_allowed']), 'products_date_available' => $products_date_available, 'products_weight' => xtc_db_prepare_input
($products_data['products_weight']), 'products_status' => $products_status, 'products_startpage' => xtc_db_prepare_input
($products_data['products_startpage']), 'products_startpage_sort' => xtc_db_prepare_input
($products_data['products_startpage_sort']), 'products_tax_class_id' => xtc_db_prepare_input
($products_data['products_tax_class_id']), 'product_template' => xtc_db_prepare_input
($products_data['info_template']), 'options_template' => xtc_db_prepare_input
($products_data['options_template']), 'manufacturers_id' => xtc_db_prepare_input
($products_data['manufacturers_id']), 'products_fsk18' => xtc_db_prepare_input
($products_data['fsk18']), 'products_vpe_value' => xtc_db_prepare_input
($products_data['products_vpe_value']), 'products_vpe_status' => xtc_db_prepare_input
($products_data['products_vpe_status']), 'products_vpe' => xtc_db_prepare_input
($products_data['products_vpe']), 'switch_status' => xtc_db_prepare_input
($products_data['switch_status'])); Suchen (ca. Zeile 764):
'options_template'=>$product['options_template'],
Dahinter einfügen:
'switch_status'=>$product['switch_status'],
Sollte dann so aussehen:
$sql_data_array=array('products_quantity'=>$product['products_quantity'], 'products_model'=>$product['products_model'], 'products_ean'=>$product['products_ean'], 'products_shippingtime'=>$product['products_shippingtime'], 'products_sort'=>$product['products_sort'], 'products_startpage'=>$startpage, 'products_sort'=>$product['products_sort'], 'products_price'=>$product['products_price'], 'products_discount_allowed'=>$product['products_discount_allowed'], 'products_date_added'=>'NOW()', 'products_date_available'=>$product['products_date_available'], 'products_weight'=>$product['products_weight'], 'products_status'=>$products_status, 'products_tax_class_id'=>$product['products_tax_class_id'], 'manufacturers_id'=>$product['manufacturers_id'], 'product_template'=>$product['product_template'], 'options_template'=>$product['options_template'], 'switch_status'=>$product['switch_status'], 'products_fsk18'=>$product['products_fsk18'], ); ******************************************************************
Wenn auch ausverkaufte Artikeloptionen ausgeblendet werden sollen
******************************************************************
Datei: /includes/modules/product_attributes.php [
EDIT web28 21.09.2011: Pfad korrigiert]
Folgende Abfrage suchen (ca. Zeile 43):
$products_options_query = xtDBquery("select pov.products_options_values_id,
pov.products_options_values_name,
pa.attributes_model,
pa.options_values_price,
pa.price_prefix,
pa.attributes_stock,
pa.attributes_model
from ".TABLE_PRODUCTS_ATTRIBUTES." pa,
".TABLE_PRODUCTS_OPTIONS_VALUES." pov
where pa.products_id = '".$product->data['products_id']."'
and pa.options_id = '".$products_options_name['products_options_id']."'
and pa.options_values_id = pov.products_options_values_id
and pov.language_id = '".(int) $_SESSION['languages_id']."'
order by pa.sortorder");
Ersetzen durch:
$products_options_query = xtDBquery("select pov.products_options_values_id,
pov.products_options_values_name,
pa.attributes_model,
pa.options_values_price,
pa.price_prefix,
pa.attributes_stock,
pa.attributes_model,
p.switch_status
from ".TABLE_PRODUCTS_ATTRIBUTES." pa,
".TABLE_PRODUCTS_OPTIONS_VALUES." pov,
".TABLE_PRODUCTS." p
where pa.products_id = '".$product->data['products_id']."'
and p.products_id = '".$product->data['products_id']."'
and pa.options_id = '".$products_options_name['products_options_id']."'
and pa.options_values_id = pov.products_options_values_id
and pov.language_id = '".(int) $_SESSION['languages_id']."'
order by pa.sortorder");
Suchen:
if ($_SESSION['customers_status']['customers_status_show_price'] == '0') {
DAVOR (!) einfügen:
if (($products_options['switch_status'] == '0') || ($products_options['switch_status'] == '1' && $products_options['attributes_stock'] >0)) {
Weiter unten suchen:
$col ++;
Dahinter einfügen:
}
(Geschweifte Klammer zu)
Datei: /checkout_process.php
Suchen:
//------insert customer choosen option eof ----
Davor einfügen:
// Disable product if no attributes left if (( $stock_values['switch_status'] == 1 ) && (isset ($order->products[$i]['attributes']))){ $attrib_stock_query_SQL = "SELECT count(pa.attributes_stock) as in_stock
FROM ".TABLE_PRODUCTS_ATTRIBUTES
." pa
WHERE pa.products_id = '".xtc_get_prid
($order->products[$i]['id'])."' AND pa.attributes_stock >0"; $attrib_stock_query = xtc_db_query
($attrib_stock_query_SQL); $attrib_stock_values = xtc_db_fetch_array
($attrib_stock_query); if ( $attrib_stock_values['in_stock'] == 0) xtc_db_query
("update ".TABLE_PRODUCTS
." set products_status = '0' where products_id = '".xtc_get_prid
($order->products[$i]['id'])."'"); } Getestet auf modified eCommerce Shopsoftware 1.05
Gruß
Michael
Author:
Anleitung "Verkaufte Artikel ausblenden"
Roland Reichardt 29.11.2005
[
EDIT web28 21.09.2011: Fehlerhaften Pfad korrigiert, Danke an Benny aka A. für den
Hinweis.]
Linkback: https://www.modified-shop.org/forum/index.php?topic=15500.0