Jump to content

Bestimmte Produkte von Standard Gruppenrabatt ausschließen?


Recommended Posts

Hallo zusammen,

 

ich stoze gerade wieder auf ein problem:

 

Und zwar der Rabatt der Gruppe des Kunden soll nicht auf alle Artikel greifen, bei manchen sollen es nur 5 % oder so sein.

 

Ich dachte ich machs ganz schlau und lege eien Gruppe Sonderrabatt an und weise nur diese und default Gruppe der Kategorie zu, jedoch ohne Erfolg, da er für die Preise nur die Standardgruppe nimmt.

 

Dreh ich das um und mache Sonderrabatt als standard Gruppe, habe ich keine Rabatte mehr.

 

Jetzt stellt sich mir die Frage wie kann ich das lösen?

 

Ein eher hässlichen Workaround habe ich bereits rausgefunden udn zwar für jeden Artikel wo dies zutrifft, manuell einen Rabatt hinterlegen welcher erst den Gruppenrabatt des Kunden drauf haut und den rabatt wo er erhalten soll und dann sein rabatt abzieht.

 

Bsp.: Gerät kostet 100 € normal er bekommt 10 % Rabatt soll aber nur 5 % bekommen

 

100*0.95 = 95 //Preis wo er erhalten soll

 

95/0.9 => 105.55555 //Den Preis muss man nun eintragen damit es klappt und seiner 10 % Gruppe zuweisen

 

Denn 105.5555 * 0.9 resultiert in 95€ und somit würde es gehen.

 

Jedoch wenn man das für jedes Prodfukt und Staffelpreise machen muss wird man irre.

 

 

Hat jemand eine Idee?

 

Grüße

BluTiGeS

Link to comment
Share on other sites

Ich weiss, dass das ein wenig blöd gelöst ist :o , aber du musst die Prioritäten zunächst festlegen. Anstatt, dass das in einem eigenen Feature angelegt ist, wurde das im Produkt -> Rabatte ganz unten in dem Block angelegt. Wenn du hier die Prio auswählst, dann kannst du das auch mit den Gruppen lösen (für alle Produkte auswählen) wie du im Vorschlag 1 angegeben hast.

Link to comment
Share on other sites

Hi,

 

ich binm ir jetzt nicht sicher ob ich das richtige versucht habe, siehe Bilder.

 

Ich kann dort leider keien Gruppen auswählen nur den Name Gruppe:.

Wäre es hier nicht Sinnvoll die Gruppen auswählen zu können?

 

So funktioniert, es leider nämlcih nicht mit den Gruppen und dem Rabatt.

 

http://www.xup.in/dl,48034460/Unbenannt-1.jpg/

http://www.xup.in/dl,69432929/Unbenannt-2.jpg/

 

 

Grüße

BluTiGeS

Link to comment
Share on other sites

Ja Bild ist korrekt. Du kannst dort die Prios setzen. Möchtest du dass die Rabatte zuerst für die Gruppen gezogen werden, dann werden alle anderen Rabatte die du als Mengenrabatt, oder für eine bestimmte Währung, usw. priorisiert. Es wird zunächst der Rabatt Prio gezogen und dann wenn andere Vorhanden sind diese, damit es nicht zur Kollision kommt und Rabatt auf Rabatt gerechnet wird.

 

Ah sorry, ich habe es ein wenig falsch verstanden... Du hast ja noch keine Rabatte in den Produkten eingepflegt... Nein dann geht es so nicht... Um diese kommst du leider nicht herum.

Der Gruppenrabatt greift auf alle Artikel, die du der zugewiesenen Kategorie gegeben hast. Du musst die Produkte in eine eigene Kategorie schieben und dort ansetzen. Du darfst dies Produkte aber dann auch nicht mehrfach verlinken.

Nur so funktioniert es, wie du es dir vorstellst.

Link to comment
Share on other sites

HI ,

 

ich komme ledier immer noch nicht klar, du schreibst wenn ich die artikel in eine eigen kategorie mache und dort dann die Rabattgruppe zuweise sollte es gehen?

 

Ich habe nun probiert, Gruppe auf Kategorie --> geht nicht ausser wenn dies die Standardgrupope des USers ist, dann greift aber der normale Gruppenrabatt nicht mehr von seiner nomralen Gruppe.

 

Selbes spiel wenn ich Rabatte auf den Artikel anlege/anwede, dort greift dann auch zuerst die Standardgruppe des Kunden und wenn er mehr als einer angehört geht es schief.

 

Sprich man müsste hier eine Prio legen können, welche Gruppe am höchsten bewertet wird, damit diese zuerst greift.

 

Oder bin ich nur wieder zu doof, das zu verstehen?^^

Link to comment
Share on other sites

Greift schon, wenn der Kunde angemeldet ist. Sonst werden natürlich die Standardpreise angezeigt. Du legst eine Kategorie an wo Artikel enthalten sind die niemals oder keine Rabatte bekommen sollen.

Bei der Kundengruppe nimmst du diese Kategorie dann aus. Du kannst in der Kundengruppe mehrere Rabatte und unterschiedliche Rabatte pro Kategorie anlegen. Einfach diese Kategorie aussparen.

Link to comment
Share on other sites

Hi,

 

Ich habe es nun mal versucht und bin wieder gescheitert.

 

Also zur Kundengruppen Struktur, jeder Kunde ist bei der Default und seiner jeweilgen Rabattgruppe zugeordnet.

 

Jetzt sollen alle Kundengruppen bis auf die Default Gruppe einen Rabatt bekommen, aber nicht ihren Standard Gruppen Rabatt.

 

Wenn ich es nun aber so löse, dass ich die (FixRabatt Gruppe) zuweise und die Default (weil normale Kunden sollen ja auch bestellen nru halt ohne Rabatt) bekomme ich dennoch immer den Rabatt der Standardgruppe zum Beispiel 30% anstatt der gewollten 10%.

 

 

Gibt es da iwo ein How to mit Bildern? Ich bin eher der visuelle ,)

Link to comment
Share on other sites

Default, bzw. Standard ist ein Muss-Zuweisung, sonst sieht der Kunde wenn er surft ohne sich einzuloggen den Katalog nicht, oder zumindest keine Preise. Ich weiss nich wie es jetzt ist. Mit der 1.3. hat der Kunde den Katalog nicht gesehen.

 

Der Sinn in Kundengruppen ist ja darin, dass wenn der Kunde sich anmeldet, wer seine eigenen Preise sieht. Was du machen kannst, ist aber, dass du eine Kategorie anlegst, die nur die Produkte enthält die niemals reduziert werden sollen und diese Kategorie dann zur anzeige bei der Gruppe X ausnimmst. Presta ist da sehr flexibel... Das funzt aber eben nur, wenn der Kunde eingeloggt ist. Ein Zwangseinloggen gibt es nicht. Außer der Shop ist komplett Privat...

Link to comment
Share on other sites

Naja so wie du das schreibst, dass ich die Gruppe aus der Kategorie entfernen soll zur Anzeige geht schief.

 

z.B. weise ich der Kategorie (FixPreis) nur default zu und habe einen Kunden der in Default und Verkäufer Gruppe ist und Verkäufer seine Standardgruppe ist.

 

 

Dann zieht Presta nicht die Default Werte sondern dennoch seine Rabatte aus der Verkäufergruppe.

Obwohl diese dort eigentlich kein Zugriff hat.

 

Ist das ein Bug?

Link to comment
Share on other sites

Sorry, ich verstehe nicht was du meinst. Bei mir funktioniert das ohne Problem. Natürlich darf der Kunde, wenn er KEINEN Rabatt bekommt auch nicht der Gruppe zugewiesen werden, die einen Rabatt bekommt....

 

Default ist nicht korrekt, es muss umgekehrt sein. Du willst ja die Rabatte nicht jeden zukommen lassen, richtig ? Default ist in dem Fall die Standardregel und nicht die Ausnahme.

 

Du kannst aber in der Kategorie einhaken... Nicht in den Rabatten.

 

Die Kategorie, ist dann nicht für Default sichtbar. Die Kategorie ist nur für die Kundengruppe xy sichtbar und kaufbar...

 

Kategorie, nicht Kundengruppe...

Link to comment
Share on other sites

So ich habe jetzt mal eine Kategorie gemacht der nur die Spezialgruppe zugewisen, aber dennoch wird mir bei dem Artikel der falsche Gruppenrabatt abgezogen, das hängt mit:

 

Auszug Presta BO:

 

Standard-Gruppe

Die Gruppe, welche die nicht kumulativen Regeln bestimmt (z. B. die Anzeigeart von Preisen und Ermäßigungen)

 

zusammen vermute ich.

 

Erst wenn ich dort auf die Spezialgruppe stelle greift es.

Das ist dann aber wiederum falsch, da wieder alles andere zu den Konditionen dann berechnet wird.

 

Ich dreh echt noch durch.

 

Kategorie 1x Gruppe user 3x Gruppen nur Standardgruppe greift......

 

Grüße

BluTiGeS

Link to comment
Share on other sites

Schäm.... was habe die da wohl geändert. Bis zur Version 1.4.4.0 hat noch alles super funktioniert. Du hast Recht da ist jetzt ein Bug enthalten... Habe diesen HIER gemeldet. Wir können leider nur abwarten... Vermutlich wurde hier auf Grund des voucher Bugs mächtig geändert, so dass man diese Möglichkeit nicht mehr berücksichtigt hat. Jetzt greifen die Gutscheine, aber dafür der Kategorie-Ausschluss nicht mehr :-(( Was komisch ist... Bei meiner upgedateten Version funktioniert es noch. Bei der reinen 1.4.7 Version nicht mehr...

Oder ist das Zufall ??? Ich habe mal die Kategorie vorsichtshalber off gestellt, bis ich genauer testen kann. Bin im Mom. etwas im Stress...

Link to comment
Share on other sites

Dann bin ich ja mal "froh" das du das nachstellen konntest, das ist aber schon ein heftiger Bug und ich frage mich wie sowas ein Release erlaubt ... genau wie der Gast Checkout. Das sind essentielle Dinge wo einfach klappen müssen.

 

 

Ich hoffe der Fix ist mittels einem File Patch möglich, da ich gerade nicht die Zeit habe nochmal allles anzupassen, da es doch aufwändig ist.

 

Nächstes Update wird denke ich erst 1.5 werden...

 

Grüße

BluTiGeS

Link to comment
Share on other sites

Tja... Ich habe da selbst auch blind vertraut... Es war ein Bug mit den Vouchers enthalten, der scheint trotzdem nicht gefixt worden zu sein, nachdem was ein anderen User gleich zu meinem Bug oben geschrieben hat und die Kategorien-Einschränkung geht auch nicht mehr. :-(( Blöd gelaufen. Aber da ich den Shop von der Architektur Modular so aufgebaut habe, dass bei grobe Probleme mir für jeden Plan A auch ein Plan B noch bleibt, ist dieser damit gestern vollzogen worden... Habe die Kategorie deaktiviert und fertig... Nichts passiert.

Link to comment
Share on other sites

hehe der USer war ich ;).

 

Ich habe gerade bei de recherche folgendes entdeckt:

http://forge.prestas...owse/PSCFI-3309

 

und auch den Screenshot:

http://www.pieces-au...ry_discount.jpg

 

Sprich ich werde das mal ausprobieren, ist mir ehrlich gesagt noch nie aufgefallen dass die Gruppe auf einmal Kategorie rabatte hat ^^. Also müsste ich meiner SonderKategorie, einen 0% Rabatt hinzufügen und dann mittels Rabatte für die jeweilgen Gruppen Arbeiten.

 

Jedoch dies für jede einzelen Gruppe, ufff

 

 

EDIT:

 

Ich glaube das hast du gemeint ;), aber geht nicht wie bereits schon erkannt....

 

 

EDIT2:

 

Es scheint möglich zu sein einen Gruppenrabatt auf eine Kategorie zuzuweisen, wenn man wie folgt vorgeht:

 

Gruppe anlege mit global Disocunt --> Save

Danach unten die rabtte per ADD hinzufügen dann aber niemals mehr oben Save drücken, sonst geht das alles nicht mehr.

 

Ist eigentlich wie in dem Bug oben beschrieben, nur Presta sagt sie sehen den Fehler nicht und man soll sich ein ticket kaufen ?Oo verarsche oder.....

 

Okay sagen wir mal jetzt würde der Rabatt pro Kategorie klappen, aber wie bekomme ich es hin dass einem Speziellen Produkt dies zukommen lassen kann?, denn auf Kategorie ebene ist das mir ein wenig zu großzugüg.

 

Achja und man kann nicht sagen, diese Kategorie hat 00.00 % Rabatt das funktioniert auch nicht, kleinster Rabatt wo funktioniert ist 00.10.

Jedoch sollte die 00.00 auch möglich sein um eine Kategorie vom Globalen Rabatt auszuschließen....

 

 

Da ich z.B. ein Zubehör teil habe welches in der Zubehör Kategorie liegt mit den ganzen anderen Produkten.

 

Jetzt extra für dieses Produkt eine Kategorie anlegen wo der Rabatt passt?, das ist ein wenig umständlich.

Ich würde es eigentlich Sinnvoller finden, das ganze über die Rabatte im Produkt Steuern zu können.

 

Dort kann man ja auch die jeweiligen Gruippen auswählen, da sagt man halt dann ab 1 Stück z.B. 20 %.

 

Nur wie es momentan implementiert ist kommt das dann zu einem MegaRabatt Globaler Rabatt+ 20 % --> ohjeee

 

Naja vll bin ich auch einfach nur zu penibel ^^

Link to comment
Share on other sites

Bin mal ein Stückchen weiter gekommen, so dass ich jetzt auch einen 0% Rabatt setzen kann ;).

Musste leider wieder am Code ändern da die Logik keine 0% vorgesehen hat.

 

In der Product.php: Zeile 1902:

// Group reduction
 if ($use_groupReduction)
 {
  if ($reductionFromCategory = (float)(GroupReduction::getValueForProduct($id_product, $id_group)))
$price -= $price * $reductionFromCategory;
  else // apply group reduction if there is no group reduction for this category
$price *= ((100 - Group::getReductionByIdGroup($id_group)) / 100);
 }

 

auf folgendes ändern:

// Group reduction
 if ($use_groupReduction)
 {
  if ($reductionFromCategory = (GroupReduction::getValueForProduct($id_product, $id_group)))
$price -= $price * (float)$reductionFromCategory;
  else // apply group reduction if there is no group reduction for this category
$price *= ((100 - Group::getReductionByIdGroup($id_group)) / 100);
 }

 

dann gehts ;).

 

Da die if abfrage bei 0% immer leer oder 0 war kam die else als standard variante rein und somit die gloabeln rabatte.

Durch versetzen des floats eins nach unten erhält man nun oben schon:

Entweder für nicht auffinden eine blank rückgabe oder für 0% eine 0.000 welches nicht als empty gilt und somit gezählt wird und die Abfrage klappt.

 

Kleiner fix große Wirkung ,)

 

 

Desweiteren ist mir aufgefallen, dass die Kategorie Rabatte auf Produktebene laufen, fügt man ein Rabatt für eien KAtegorie hinzu, wird geprüft ob der Artikel nur in dieser kAtegorie auftritt wenn ja wird der artikel der gruppe und dem rabatt zugewiesen, dies gilt aber auch global, wenn man wie ich zum testen einfach neue Produkte hinzugefügt habe.

 

Wäre es nicht Sinnvoll, wenn man sagt, alle Produke wo dort drin vorkommen sind auch in den anderen Kategorien wo dies Produkt vorkommt reduziert? Da eh keine Kategorie für den Rabatt gezogen wird?

 

Momentan wird es ja auf Grundlage der Standardkategorie gemacht, dann zieht auch der Rabatt in den "verlinkten" kategorien wo das Produkt ebenfalls vorkommt.

 

Sprich es müsste möglich sein eine Kategorie anzulegen wie du bereits gesagt hast für die sonderfälle und dieser dann einfach die Produkte zuordnen und entsprechend verlinken.

 

So langsam blick ich da glaube ich durch^^

 

Grüße

BluTiGeS

Link to comment
Share on other sites

 

Desweiteren ist mir aufgefallen, dass die Kategorie Rabatte auf Produktebene laufen, fügt man ein Rabatt für eien KAtegorie hinzu, wird geprüft ob der Artikel nur in dieser kAtegorie auftritt wenn ja wird der artikel der gruppe und dem rabatt zugewiesen, dies gilt aber auch global, wenn man wie ich zum testen einfach neue Produkte hinzugefügt habe.

So soll es auch sein.

Wäre es nicht Sinnvoll, wenn man sagt, alle Produke wo dort drin vorkommen sind auch in den anderen Kategorien wo dies Produkt vorkommt reduziert? Da eh keine Kategorie für den Rabatt gezogen wird?

 

Nein, genau das will man ja verhindern mit den Rabatten auf Kategorie-Ebene. Möchtest du ein Produkt generell rabattieren, also nicht auf Kategorie-Ebene, dann kannst du das über das Produkt machen. Hat auch prima bisher (leider nur sehr kurzfristig) funktioniert... Hier wurde schon öfters gefixt...

Link to comment
Share on other sites

  • 1 month later...

Hi,

 

ich habe wieder ein problem diesbezüglich.

 

Ich habe ja auf bestimmen Kategorien 0 % Rabatt füe die Gruppen wie z.b. Schuhe

 

Jedoch füge ich nun ein Produkt dieser Kategorie hinzu (Standard Kategorie für Produkt) legt mir Presta nur ein Rabatt für eien Gruppe an und nicht für alle wo bereits diese Gruppe Reduziert hatten, ich kann das ganze dann nur lösen wenn ich in der DB rumwerkel und alle fehlenden Gruppen auch wieder hinzufüge in der Tabelle

 

ps_product_group_reduction_cache

 

Hat jemadn das auch schon beobachtet oder weiß eine Lösung?

Link to comment
Share on other sites

Ich habe mich mal selber wieder ans bugfixen gemacht:

 

classes/Product.php (am besten als override) und vorhande ersetzen:

 

/**
 * Set Group reduction if needed modified by BluTiGeS
 */
public function setGroupReduction()
{
 $row = GroupReduction::getGroupByCategoryIdArray((int)$this->id_category_default);
 if (!$row) // Remove
 {
  if (!GroupReduction::deleteProductReduction((int)$this->id))
return false;
 }
 else {
	foreach($row as $rows){
							if(!GroupReduction::setProductReduction((int)$this->id, $rows['id_group'], (int)$this->id_category_default, (float)$rows['reduction']))
							{
								 return false;
							}
						   }
		 }
 return true;
}

 

und noch in der GroupReduction.php folgednes hinzufügen:

 

/*added by BluTiGeS*/
public static function getGroupByCategoryIdArray($id_category)
{
 return Db::getInstance()->ExecuteS('
  SELECT gr.`id_group` as id_group, gr.`reduction` as reduction
  FROM `'._DB_PREFIX_.'group_reduction` gr
  WHERE `id_category` = '.(int)$id_category);
}

/*added by BluTiGeS*/

 

und

 

public static function setProductReduction($id_product, $id_group, $id_category, $reduction)
{
 $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
  SELECT pgr.`id_product`, pgr.`id_group`, pgr.`reduction`
  FROM `'._DB_PREFIX_.'product_group_reduction_cache` pgr
  WHERE pgr.`id_product` = '.(int)$id_product.' AND `id_group` = '.(int)($id_group)
 );

 if (Db::getInstance()->NumRows() == 0)
  $query = 'INSERT INTO `'._DB_PREFIX_.'product_group_reduction_cache` (`id_product`, `id_group`, `reduction`)
							  VALUES ('.(int)($id_product).', '.(int)($id_group).', '.(float)($reduction).')';
 else
  $query = 'UPDATE `'._DB_PREFIX_.'product_group_reduction_cache`
							  SET `reduction` = '.(float)($reduction).'
							  WHERE `id_product` = '.(int)($id_product).' AND `id_group` = '.(int)($id_group);
 return (Db::getInstance()->Execute($query));
}

 

Fehler lag darin, dass Presta nur eine Gruppe abfrägt anstatt der anderen auch passenden.

Edited by BluTiGeS (see edit history)
  • Like 1
Link to comment
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...