Jump to content
it-gration

Produktanzahl mit Varianten soll nur für das Produkt aber nicht für alle Varianten bestimmt werden

Recommended Posts

Hallo liebes Forum,

 

für folgendes Problem suche ich eine Lösung.

 

Ich habe ein Produkt X, das insg. 3 "Gruppen" besitzt, die jeweils wieder 3 "Attribute" besitzen. Diese Gruppen und deren Attribute habe ich definiert. Über "Varianten" in der Konfiguration des Produktes X kann ich nun meine 3³ Produktvarianten definieren die auch unterschiedliche Preise haben. Soweit so gut, der Kunde kann im Frontend über dropdown die jeweilige Produktvariante anwählen und bekommt dann seinen so konfigurierten Preis angezeigt.

 

Nun zur Frage, bzw. zu meinem Problem: Ich habe vom Produkt X sagen wir 6 Stück und alle Gruppen und deren Varianten stellen lediglich Modifikationen in Form einer Dienstleistung oder Veredelung des Produktes dar, die durchgeführt wird, wenn der Kunde bestellt hat - d.h. ich habe nur 6 Stück meines Produktes auf Lager, auch wenn der Kunde insgesamt 162 versch. Varianten bestellen kann.

 

Ich habe noch keine Möglichkeit gefunden, allen definierten Varianten eine Anzahl zuzuordnen, die quasi auf die Mutterklasse, das unveredelte Produkt zeigt und nicht jeder Variante eine Produktanzahl zuordnet.

 

Danke für eure Hilfe

 

Verwendeter Prestashop v1.6.1.6

 

Stefan

Share this post


Link to post
Share on other sites

Hallo hat niemand eine Idee bzw. einen Tipp, wie man es schafft die Produktanzahl mit dem eigentlichen Produkt und nicht mit den Varianten zu verknüpfen?

 

anbei der webshop noch, webshop.it-gration.com

 

Thx a lot

 

Stefan

Share this post


Link to post
Share on other sites

Hallo Stefan,

 

mit Bordmitteln schaffst du das leider nicht.

 

Aber wenn du etwas coden kannst .,. mein erster Gedanke wäre bei allen Varianten die gleiche Stückzahl einzugeben, wird eine Variante verkauft ziehst du die Stückzahl bei allen Varianten ab.

 

Grüsse

Whiley

Share this post


Link to post
Share on other sites

Hi Whiley,

 

danke für deine Antwort.

 

Klingt gut, hast du mir zufällig einen Ansatz, an welchen Dateien, Funktionen und Variablen ich ansetzen kann?

 

Danke

Share this post


Link to post
Share on other sites

Naja, letztendlich müssen die Werte in der db geändert werden also entweder in der ps_product_attibute oder in der ps_stock_available (quantity).

 

Such mal nach der class StockMvt. Wenn du die veränderst aber unbeding ins Override.

 

Grüsse

Whiley

Share this post


Link to post
Share on other sites

Danke Whiley,

 

ich habe mir die db angeschaut und die quantity gefunden, auch die von dir genannte Klasse, die mir zumindest bei der Recherche geholfen hat...

 

und zu folgenden Forenbeiträgen jenseits des Tümpels geführt:

 

  1. https://www.prestashop.com/forums/topic/43828-combination-quantity/?p=746326
  2. https://www.prestashop.com/forums/topic/271137-attributes-no-impact-on-stock-how/?do=findComment&comment=1389018 (kommerielle Lösung = 150Y$ die in V1.4 das Problem gefixed hat)
  3. http://stackoverflow.com/questions/12531723/combinations-in-prestashop-change-stock-to-main-stock-via-php

Code Ausschnitt zu 1) der in V1.4 wohl das Problem gelöst hat...

<?php
class StockMvt extends StockMvtCore {
    public function add($autodate = true, $nullValues = false, $update_quantity = true) {
	    if (!$update_quantity)
		    return true;
	    if ($this->id_product_attribute) {
		    $product = new Product((int) $this->id_product, false, Configuration::get('PS_LANG_DEFAULT'));
		    return (Db::getInstance()->Execute(
			    'UPDATE `' . _DB_PREFIX_ . 'product_attribute`
			    SET `quantity` = quantity+' . $this->quantity . ' WHERE `id_product` = ' . (int) $this->id_product) &&
		    $product->updateQuantityProductWithAttributeQuantity());
	    }
	    else
		    return Db::getInstance()->Execute('
    UPDATE `' . _DB_PREFIX_ . 'product`
    SET `quantity` = quantity+' . (int) $this->quantity . '
    WHERE `id_product` = ' . (int) $this->id_product);
    }
}
?>

Jetzt kann ich ja mal probieren ;-)

 

Besteht aus deiner Sicht Anlass zur Hoffnung, dass dieser Code auch in der 1.6.1.6 tut, oder geht auch hier probieren über studieren?

 

Thx Stefan

Share this post


Link to post
Share on other sites

Hallo zusammen, leider scheint prestashop in Bezug auf diese Fkt leider nichts zu bieten, auch wenn es durchaus und schon seit geraumer Zeit Anfragen für solche Fkt gibt. So wie es scheint haben diejenigen, die diese Fkt wünschen aber wohl resigniert und/oder setzen nun kommerzielle Module ein, die diese features bietet, was ich nicht so ganz als open-source-spirit verstehen kann...

anbei der link https://www.prestashop.com/forums/topic/271137-attributes-no-impact-on-stock-how/

und hier nochmal: https://www.prestashop.com/forums/topic/540527-how-to-link-product-number-not-to-variants-but-to-underlying-product/, um das ganze Dilemma mal zusammen darzulegen.

 

Gibt es im Forum eine Sektion, die konkret beim Coding, bzw. anpassen von Codes hilft? Weil ich will ja eigentlich lediglich folgende Fkt:

 

Sobald x Produkt-Varianten gekauft wurden, sollen sich alle Produktvarianten auch um x erniedrigen und die Gesamtanzahl des Produktes soll durch die neu errechnete Produktanzahl/Anzahl der Produktvarianten dargestellt werden. Dafür 40 Y$ auszugeben finde ich zuviel!


Danke im Voraus Grüße Stefan

Share this post


Link to post
Share on other sites

 

setzen nun kommerzielle Module ein, die diese features bietet, was ich nicht so ganz als open-source-spirit verstehen kann...

 

Versteh ich nicht, Opensource hat ja per se nichts mit Freeware zu tun <_<

 

Aber davon abgesehen sieht doch der Codeschnipsel ganz vernünftig aus, hast du mal debuged? Voraussetzung das das so laufen kann ist, daß du Overrides im BO freigegeben hast, Cache muß geleert sein, die class_index.php muß gelöscht sein und natürlich muß die erweiterte Lagerverwaltung eingeschaltet sein (auch beim Artikel aktiviert)

 

Falls du nicht mit der erweiterten Lagerverwaltung arbeitest kannst dir alternativ mal die

/classes/order/OrderDetail.php

anschauen.

 

$update_quantity = StockAvailable::updateQuantity($product['id_product'], $product['id_product_attribute'], -(int)$product['cart_quantity']);

Hier wird beim Bestellabschluß die Lagerbestandsänderung ausgelöst, an der Stelle könntest du dich einhängen.

 

Möglich wäre auch, daß du deine Änderungen in der

/classes/stock/StockAvailable.php

einbaust, Die Funktion

public static function setQuantity

führt die  Änderungen des Lagerbestandes in der ps_stock_available durch.

 

Grüsse

Whiley

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More