Jump to content
xt:Commerce Community Forum

Artikel Status automatisch inaktiv ab Lagerbestand <1


error_in_line

Recommended Posts

Hallo Forenmitglieder,

wir möchten in unserem Shop (3.04 SP 2.1) den Artikel Status automatisch auf inaktiv setzen ab einem Lagerbestand <1, da viele Einzelstücke verkauft werden.

Dazu habe ich mir die checkout_process.php angesehen, wo der Artikelbestand bei der Bestellung reduziert wird.

Wie ich mit mysql den status inaktiv setze, weiß ich :

update products set products_quantity =1, products_status = 0 where products_id =1;

select products_id, products_quantity,products_status from products where products_id =1;

Aber wie muß das in diesen Loop eingebaut werden????

Bitte gebt mal einen Tipp, Danke!

checkout_process.php


for ($i = 0, $n = sizeof($order->products); $i < $n; $i ++) {
// Stock Update - Joao Correia
if (STOCK_LIMITED == 'true') {
if (DOWNLOAD_ENABLED == 'true') {
$stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
FROM ".TABLE_PRODUCTS." p
LEFT JOIN ".TABLE_PRODUCTS_ATTRIBUTES." pa
ON p.products_id=pa.products_id
LEFT JOIN ".TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD." pad
ON pa.products_attributes_id=pad.products_attributes_id
WHERE p.products_id = '".xtc_get_prid($order->products[$i]['id'])."'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
$products_attributes = $order->products[$i]['attributes'];
if (is_array($products_attributes)) {
$stock_query_raw .= " AND pa.options_id = '".$products_attributes[0]['option_id']."' AND pa.options_values_id = '".$products_attributes[0]['value_id']."'";
}
$stock_query = xtc_db_query($stock_query_raw);
} else {
$stock_query = xtc_db_query("select products_quantity from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
}
if (xtc_db_num_rows($stock_query) > 0) {
$stock_values = xtc_db_fetch_array($stock_query);
// 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'];
}

xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = '".$stock_left."' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
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'])."'");
}
}
}
[/php]

Link to comment
Share on other sites

  • 2 months later...
  • 3 months later...

kurz & knapp:

Die Artikel sollen bei Warenbestand = 0 angezeigt werden, mit oder ohne Preis einstellbar mittels Smarty im Template, aber der Einkauf soll erst bei weider aufgefüllten Lager möglich sein.

die Idee der Lagerbestandsampel aufgreifen:

z.B. hier:

Warenbestands-Ampel mit xt:Commerce (gunnART - Grafik, Layout, Konzeption)

sehr elegant der Smarty-Modifier, der ins Template kommt:

Also:

0)

Shop-Administrationsoberfläche > Konfiguration > Lagerverwaltungsoptionen > Einkaufen nicht vorrätiger Ware erlauben

1)

neuer Ordner & neue Datei

template/smarty/modifier.ProductsQuantity.php


<?php

// -------------------------------------------------------------------------------
//
// SmartyModifier "StockImage_by_ProductsID" für xt:Commerce
// Funktion: Anzeige einer Lagerbestands-Ampel
// Version 1.0 (21. August 2007)
// (c) Gunnar Tillmann
// Weitere Infos: http://www.gunnart.de/?p=334
-------------------------------------------------------------------------------
// Getestet mit xt:Commerce 3.04, SP2.1
-------------------------------------------------------------------------------
// reduziert zu modifier.ProductsQuantity.php
------------------------------------------------------------------------------
// Code-Beispiele zum Einsatz im Template
// {$PRODUCTS_ID|ProductsQuantity}
// Für den Einsatz auf Produkt-Detail-Seiten
// {$module_data.PRODUCTS_ID|ProductsQuantity}
// Für den Einsatz in Auflistungen
-------------------------------------------------------------------------------
function smarty_modifier_ProductsQuantity($ProdID) {

if($ProdID) {
$aufLagerQuery = xtDBquery("
SELECT products_quantity
FROM ".TABLE_PRODUCTS."
WHERE products_id = '".$ProdID."'
");
$aufLagerQuery = xtc_db_fetch_array($aufLagerQuery,true);
$Anzahl = $aufLagerQuery['products_quantity'];
//return '<p>('.$Anzahl.')</p>';
return $Anzahl;
} else {
return false;
}
}

?>
[/PHP]

2)

Ergänzung in der Datei

shop/includes/classes/Smarty_2.6.14/Smarty.class.php

[PHP]
//NEU: Pfad zum PlugIn-Ordner, wo sich der smarty-modifier befindet, im aktiven Template!
define('MY_TEMPLATE_PLUGINS', DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/smarty');
[/PHP]

3)

mittels SQL prüfen, ob überall dieselbe Templatevorlage genutzt wird:

[HTML]
#SQL
select categories_id, categories_status, categories_template, listing_template from categories
order by categories_template asc;
[/HTML]

ggf. template-vorlage einstellen:

[HTML]
#SQL
UPDATE categories SET listing_template = 'product_listing_v1.html' WHERE listing_template = 'default';
[/HTML]

4)

# in den sprachdateien ergänzen:

lang/german/lang_german.conf

lang/german/lang_english.conf

[HTML]
[product_info]
ausverkauft = 'at present not available'
ausverkauft = 'derzeit nicht verfügbar'
[/HTML]

###

box_whatsnew.html

[HTML]
{if ($PRODUCTS_ID|ProductsQuantity>0) }{$PRICE}{/if}
[/HTML]

###

print_product_info.html

neu:

[HTML]
{if ($PRODUCTS_ID|ProductsQuantity>0) }{$PRODUCTS_PRICE}{/if}
[/HTML]

###

product_listing_v1.html

[HTML]
{if $module_data.PRODUCTS_ID|ProductsQuantity>0}
<span class="product_listing_product_price"> {$module_data.PRODUCTS_PRICE}</span>
<span class="product_listing_tax_info">{$module_data.PRODUCTS_TAX_INFO}</span>
<span class="product_listing_shipping">{$module_data.PRODUCTS_SHIPPING_LINK|NoPopUp}</span>
{else}
<span class="product_listing_product_price">{#ausverkauft#}</span>
{/if}
[/HTML]

###

product_info_v1.html

[HTML]
{if ($PRODUCTS_ID|ProductsQuantity>0)}
<table width="100%">
<tr>
<td width="100%" style="padding-left:10px;">

<span class="product_info_product_price">{$PRODUCTS_PRICE}</span>
<br>
{if FALSE}<span class="product_info_tax_info">{$PRODUCTS_TAX_INFO}</span>{/if}
{if $PRODUCTS_SHIPPING_LINK}
<span class="product_info_shipping_link">{$PRODUCTS_SHIPPING_LINK}</span>
{/if}
</td>
<td style="padding-left:10px;" align="right">
<table width="100%" border="0">
<tr>
<td>
{$ADD_QTY}
</td>
<td>
{$ADD_CART_BUTTON}
</td>
</tr>
</table>
</td>
</tr>
</table>
{else}
<table width="100%">
<tr>
<td width="100%" style="padding-left:10px;">
<span class="product_info_product_price">{#ausverkauft#} </span><br>
<span class="product_info_tax_info"> </span>
<span class="product_info_shipping_link"> </span>
</td>
<td style="padding-left:10px;" align="right">
<table width="100%" border="0">
<tr>
<td>
 
</td>
<td>
 
</td>
</tr>
</table>
</td>
</tr>
</table>
{/if}
[/HTML]

Link to comment
Share on other sites

Archived

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

×
  • Create New...