Moinsen.
In meinem Shop ist es grundsätzlich möglich auch nicht vorrätige Ware zu kaufen. Gleichzeitig werden auch Unikate angeboten, die sich nach dem Verkauf selbstständig deaktivieren sollen. Dabei sollen sie im Shop zwar weiterhin sichtbar bleiben, nur nicht mehr in den Warenkorb gelegt werden können.
Hierzu hatte ich für modified 1.05 schonmal eine kleine Anpassung gebastelt, die ich jetzt nochmal für 1.06 überarbeitet habe (incl. der Zeilennummern). Im Admin bekommt hiermit jeder Artikel einen neuen Parameter zugewiesen, der folgende Bedeutung hat:
0 = Normaler Artikel
1 = Artikel ist ein Unikat (wird beim Verkauf automatisch auf 2 gesetzt)
2 = Artikel ist ein verkauftes Unikat (kann nicht mehr gekauft werden)
Wird im Admin entsprechend eine Bestellung oder ein Artikel aus einer Bestellung gelöscht und dem Bestand wieder zugebucht, wird auch ein verkauftes Unikat von 2 wieder auf 1 (verfügbar) zurückgesetzt.
Vielleicht kann außer mir noch jemand etwas damit anfangen. Das ganze ist immernoch nicht ganz fertig, was noch fehlt wäre beim Aufrufen des Warenkorbs noch eine Überprüfung, ob Artikel im Warenkorb (mittlerweile) verkaufte Unikate sind. Diese sollten - mit entsprechendem Hinweis - dann automatisch gleich aus dem Warenkorb entfernt werden.
---------------
Grafiken:
Datei /templates/mytemplate/buttons/german/button_soldout.gif installieren
Datenbank:
ALTER TABLE `products` ADD COLUMN `products_ooak` INT(4) NOT NULL ;
Datei: lang/german/admin/categories.php ganz am Ende ergänzen
// BOF Zaldoran - 2012-06-19 - OOAK Items define('TEXT_PRODUCTS_OOAK','Unikat (0=Nein, 1=Ja, 2=Ja verkauft)'); // EOF Zaldoran - 2012-06-19 - OOAK Items Datei: lang/lang_german.conf
Finde Abschnitt [product_info] (ca. Z. 467) und füge dahinter ein:
#BOF Zaldoran - 2012-06-19 - OOAK Items
text_soldout = 'AUSVERKAUFT!'
#EOF Zaldoran - 2012-06-19 - OOAK Items
Finde Abschnitt [index] (ca. Z. 422) und füge dahinter ein:
#BOF Zaldoran - 2012-06-19 - OOAK Items
text_soldout = 'VERKAUFT'
#EOF Zaldoran - 2012-06-19 - OOAK Items
Finde Abschnitt [new_products] (ca. Z. 440) und füge dahinter ein:
#BOF Zaldoran - 2012-06-19 - OOAK Items
text_soldout = 'VERKAUFT'
#EOF Zaldoran - 2012-06-19 - OOAK Items
Datei: admin/includes/modules/new_product.php
Finde (ca. Z. 173):
<tr>
<td><span class="main"><?php echo TEXT_PRODUCTS_EAN; ?></span></td>
<td><span class="main"><?php echo xtc_draw_input_field('products_ean', $pInfo->products_ean); ?></span></td>
</tr>
Füge dahinter ein:
<!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
<tr>
<td><span class="main"><?php echo TEXT_PRODUCTS_OOAK; ?></span></td>
<td><span class="main"><?php echo xtc_draw_input_field('products_ooak', $pInfo->products_ooak); ?></span></td>
</tr>
<!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->
Datei: admin/includes/classes/categories.php
Finde (ca. Z. 38):
define('ADD_PRODUCTS_FIELDS','products_manufacturers_model'); Modifiziere wie folgt:
define('ADD_PRODUCTS_FIELDS','products_manufacturers_model, products_ooak'); Datei: includes/modules/product_info.php
Finde (ca. Z. 164):
$info_smarty->assign('PRODUCTS_EAN', $product->data['products_ean']);
Füge dahinter ein:
// BOF Zaldoran - 2012-06-19 - OOAK Items
$info_smarty->assign('PRODUCTS_OOAK', $product->data['products_ooak']);
// EOF Zaldoran - 2012-06-19 - OOAK Items
Datei: includes/classes/product.php
Finde (ca. Z. 424):
$productData = array ( 'PRODUCTS_NAME' => $array['products_name'], 'COUNT' => isset($array['ID']) ?
$array['ID'] : 0, 'PRODUCTS_ID'=> $array['products_id'], 'PRODUCTS_MODEL'=> isset($array['products_model']) ?
$array['products_model'] : '', 'PRODUCTS_VPE' => $this->getVPEtext($array, $products_price['plain']), 'PRODUCTS_IMAGE' => $this->productImage($array['products_image'], $image), 'PRODUCTS_LINK' => xtc_href_link
(FILENAME_PRODUCT_INFO
, xtc_product_link
($array['products_id'], $array['products_name'])), 'PRODUCTS_PRICE' => $products_price['formated'], 'PRODUCTS_TAX_INFO' => $main->getTaxInfo($tax_rate), 'PRODUCTS_SHIPPING_LINK' => $main->getShippingLink(), 'PRODUCTS_BUTTON_BUY_NOW' => $buy_now, 'PRODUCTS_SHIPPING_NAME'=>$shipping_status_name, 'PRODUCTS_SHIPPING_IMAGE'=>$shipping_status_image, 'PRODUCTS_DESCRIPTION' => isset($array['products_description']) ?
$array['products_description'] : '', //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_EXPIRES' => isset($array['expires_date']) ?
$array['expires_date'] : 0, //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_CATEGORY_URL' => isset($array['cat_url']) ?
$array['cat_url'] : '', //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_SHORT_DESCRIPTION' => isset($array['products_short_description']) ?
$array['products_short_description'] : '', //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_FSK18' => isset($array['products_fsk18']) ?
$array['products_fsk18'] : 0, //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_BUTTON_DETAILS' => '<a href="'.xtc_href_link
(FILENAME_PRODUCT_INFO
, xtc_product_link
($array['products_id'], $array['products_name'])).'">'.xtc_image_button
('button_product_more.gif', $array['products_name'].TEXT_NOW
).'</a>', //GTB - 2010-08-27 make Button Details global 'PRODUCTS_QUANTITY' => isset($array['products_quantity']) ?
$array['products_quantity'] : '' //Tomcraft - 2010-07-15 - Added PRODUCTS_QUANTITY for further use in template ); Modifiziere wie folgt:
$productData = array ( 'PRODUCTS_NAME' => $array['products_name'], 'COUNT' => isset($array['ID']) ?
$array['ID'] : 0, 'PRODUCTS_ID'=> $array['products_id'], 'PRODUCTS_MODEL'=> isset($array['products_model']) ?
$array['products_model'] : '', 'PRODUCTS_VPE' => $this->getVPEtext($array, $products_price['plain']), 'PRODUCTS_IMAGE' => $this->productImage($array['products_image'], $image), 'PRODUCTS_LINK' => xtc_href_link
(FILENAME_PRODUCT_INFO
, xtc_product_link
($array['products_id'], $array['products_name'])), 'PRODUCTS_PRICE' => $products_price['formated'], 'PRODUCTS_TAX_INFO' => $main->getTaxInfo($tax_rate), 'PRODUCTS_SHIPPING_LINK' => $main->getShippingLink(), 'PRODUCTS_BUTTON_BUY_NOW' => $buy_now, // BOF Zaldoran - 2012-06-19 - OOAK Items 'PRODUCTS_OOAK' => $array['products_ooak'], // EOF Zaldoran - 2012-06-19 - OOAK Items 'PRODUCTS_SHIPPING_NAME'=>$shipping_status_name, 'PRODUCTS_SHIPPING_IMAGE'=>$shipping_status_image, 'PRODUCTS_DESCRIPTION' => isset($array['products_description']) ?
$array['products_description'] : '', //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_EXPIRES' => isset($array['expires_date']) ?
$array['expires_date'] : 0, //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_CATEGORY_URL' => isset($array['cat_url']) ?
$array['cat_url'] : '', //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_SHORT_DESCRIPTION' => isset($array['products_short_description']) ?
$array['products_short_description'] : '', //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_FSK18' => isset($array['products_fsk18']) ?
$array['products_fsk18'] : 0, //DokuMan - 2010-02-26 - set Undefined index 'PRODUCTS_BUTTON_DETAILS' => '<a href="'.xtc_href_link
(FILENAME_PRODUCT_INFO
, xtc_product_link
($array['products_id'], $array['products_name'])).'">'.xtc_image_button
('button_product_more.gif', $array['products_name'].TEXT_NOW
).'</a>', //GTB - 2010-08-27 make Button Details global 'PRODUCTS_QUANTITY' => isset($array['products_quantity']) ?
$array['products_quantity'] : '' //Tomcraft - 2010-07-15 - Added PRODUCTS_QUANTITY for further use in template ); Datei: includes/modules/default.php
Finde (ca. Z. 209):
$listing_sql = "-- /includes/modules/default.php
SELECT ".$select."
p.products_id,
p.products_ean,
p.products_quantity,
p.products_shippingtime,
p.products_model,
p.products_image,
p.products_price,
p.products_discount_allowed,
p.products_weight,
p.products_tax_class_id,
p.manufacturers_id,
p.products_fsk18,
p.products_vpe,
p.products_vpe_status,
p.products_vpe_value,
pd.products_name,
pd.products_description,
pd.products_short_description
Modifiziere wie folgt:
$listing_sql = "-- /includes/modules/default.php
SELECT ".$select."
p.products_id,
p.products_ean,
p.products_ooak,
p.products_quantity,
p.products_shippingtime,
p.products_model,
p.products_image,
p.products_price,
p.products_discount_allowed,
p.products_weight,
p.products_tax_class_id,
p.manufacturers_id,
p.products_fsk18,
p.products_vpe,
p.products_vpe_status,
p.products_vpe_value,
pd.products_name,
pd.products_description,
pd.products_short_description
Datei /checkout_process.php:
Finde (ca. Z. 246):
$stock_query = xtc_db_query("
select products_quantity
from ".TABLE_PRODUCTS."
where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
Modifiziere wie folgt:
// BOF Zaldoran - 2012-06-19 - OOAK Items
$stock_query = xtc_db_query("
select products_quantity, products_ooak
from ".TABLE_PRODUCTS."
where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
// EOF Zaldoran - 2012-06-19 - OOAK Items
Kurz danach finde:
// do not decrement quantities if products_attributes_filename exists
if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
$stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
} else {
$stock_left = $stock_values['products_quantity'];
}
Füge dahinter ein:
// BOF Zaldoran - 2012-06-19 - OOAK Items
$products_ooak = $stock_values['products_ooak'];
if ($products_ooak == 1) {
xtc_db_query("update ".TABLE_PRODUCTS." set products_ooak = '2' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
}
// EOF Zaldoran - 2012-06-19 - OOAK Items
Datei /admin/orders_edit.php
Finde (ca. Z. 743):
//BOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders
xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_quantity = products_quantity + ".xtc_db_input($_POST['del_qty'])." WHERE products_id = " . (int)$_POST['del_pID']);
//EOF - Dokuman - 2010-03-17 - calculate stock correctly when editing orders
Füge dahinter ein:
// BOF Zaldoran - 2012-06-19 - OOAK Items
$products_query = xtc_db_query("
select products_ooak
from ".TABLE_PRODUCTS."
WHERE products_id = " . (int)$_POST['del_pID']);
$products_values = xtc_db_fetch_array($products_query);
if ($products_values['products_ooak'] == 2) {
xtc_db_query("UPDATE ".TABLE_PRODUCTS." SET products_ooak = '1' WHERE products_id = " . (int)$_POST['del_pID']);
}
// EOF Zaldoran - 2012-06-19 - OOAK Items
Datei /admin/includes/functions/general.php
Finde (ca. Z. 1551):
function xtc_remove_order($order_id, $restock = false) {
if ($restock == 'on') {
xtc_db_query("update ".TABLE_PRODUCTS." p
join ".TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
set p.products_quantity = p.products_quantity + o.products_quantity,
p.products_ordered = p.products_ordered - o.products_quantity
where o.orders_id = '".xtc_db_input($order_id)."'");
Füge dahinter ein:
// BOF Zaldoran - 2012-06-19 - OOAK Items
xtc_db_query("update ".TABLE_PRODUCTS." p
join ".TABLE_ORDERS_PRODUCTS." o on o.products_id = p.products_id
set p.products_ooak = 1
where o.orders_id = '".xtc_db_input($order_id)."' AND p.products_ooak = 2");
// BOF Zaldoran - 2012-06-19 - OOAK Items
Die Anpassungen im Template sind bereits auf mein Template zurechtgemünzt, und müssen unter Umständen angepasst werden!
Datei: templates/mytemplate/module/product_info/product_info_tabs_v1.html
Finde:
{if $SHIPPING_NAME}<p class="shippingtime"><strong>{#text_shippingtime#}</strong>{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} {$SHIPPING_NAME}</p>
{/if}
Ersetze durch:
<!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
{if $PRODUCTS_OOAK != 2}
{if $SHIPPING_NAME}<p class="shippingtime"><strong>{#text_shippingtime#}</strong>{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} {$SHIPPING_NAME}</p>
{/if}
{else}
<p class="shippingtime"><strong>{#text_shippingtime#} {#text_soldout#}</strong><p>
{/if}
<!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->
Finde:
<div class="addtobasket-tabs"><div class="add-Qty-tabs">{$ADD_QTY}</div><span>{$ADD_CART_BUTTON}</span></div>
Ersetze durch:
<!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
{if $PRODUCTS_OOAK != 2}
<div class="addtobasket-tabs"><div class="add-Qty-tabs">{$ADD_QTY}</div><span>{$ADD_CART_BUTTON}</span></div>
{else}
<div class="addtobasket-tabs"><span style="left:33px;"><img src="{$tpl_path}buttons/{$language}/button_soldout.gif" alt="{#text_soldout#}" /></span></div>
{/if}
<!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->
Folgende Änderung in diesen Dateien vornehmen:
Datei: templates/mytemplate/module/product_listing/product_listing_v1.html
Datei: templates/mytemplate/module/new_products.html
Datei: templates/mytemplate/module/new_products_overview.html
Datei: templates/mytemplate/module/new_products_default.html
Bei Bedarf auch noch in templates/mytemplate/module/cross_selling.html und specials.html
Finde:
<p class="price">{$module_data.PRODUCTS_PRICE}</p><div class="clear"></div></div>
Ersetze durch:
<!-- BOF Zaldoran - 2012-06-19 - OOAK Items -->
{if $module_data.PRODUCTS_OOAK !=2}
<p class="price">{$module_data.PRODUCTS_PRICE}</p><div class="clear"></div></div>
{else}
<p class="price">{#text_soldout#}</p><div class="clear"></div></div>
{/if}
<!-- EOF Zaldoran - 2012-06-19 - OOAK Items -->
Linkback: https://www.modified-shop.org/forum/index.php?topic=24230.0