Plötzlich Sonderangebot 0 Euro für alle Artikel

exube

Aktives Mitglied
25. April 2007
140
0
Dresden
Ich hab nun ein wenig nach "Sonderangebote" und "Webshopabgleich" gesucht, aber leider keine Lösung für mein Problem gefunden.

Zunächst unsere Situation: JTL läuft im Mehrbenutzerbetrieb, insgesamt greifen 3-4 Nutzer auf den JTL-Server zu. Es ist also schwierig immer genau zu wissen, was wer und wer was macht :wink: Also mir geht es in diesem Thread nicht unbedingt darum, den Fehler zu beheben, vielmehr möchte ich ihn reproduzieren. Ich bin mir keiner Schuld bewußt, andere Mitarbeiter melden sich leider nicht zu Wort. Ich tappe also im Dunkeln. Evtl. ist aber folgendes Verhalten hier bekannt.

So sah es im OSC-Webshop aus:
- für alle Artikel wurden Sonderpreise von 0 Euro angelegt
- im Warenkorb waren diese Sonderpreise dann wieder verschwunden
- in der OSC Tabelle "Specials" waren die Felder dieser Sonderpreise durchweg mit "NULL" befüllt (diese Daten habe ich dann gelöscht, was vorerst wieder zum gewünschten Verhalten führte)

Besonderheit unseres Systems und evtl. von Belang: wir haben die Contribution "Master Porducts" installiert und produktiv im Einsatz. Bisher gab es dabei aber keine Probleme ...

Für Hinweise jeglicher Art bin ich dankbar.
 

exube

Aktives Mitglied
25. April 2007
140
0
Dresden
Sorry für die lange Pause, jez nochmal eine ausführliche Antowrt auf das letzte Posting.
Eins vorneweg: das Problem besteht weiterhin.

Sonderpreise aktiv zu schalten ist sicher möglich, aber (vorerst) keine Option. Ist ja ein nicht zu verachtendes Marketingmitte :)

Das Problem ist heute erneut aufgetreten. Der Hack zur Lösung besteht nun darin, einfach alle Zeilen aus der Tabelle "specials" mit einem Preis von 0 zu Löschen

Code:
DELETE FROM `specials` WHERE `specials_new_products_price`=0

Das kann aber auf Dauer keine Lösung sein.
Ich hoffe hier kann sich noch jemand zu Wort melden und HInweise zur Ursache geben.
Ich vermuite, es hängt mit dem Datenabgleich JTL-WaWi <-> OSCommerce zusammen.

Viele Grüße!
 

Thomas Lisson

Administrator
Mitarbeiter
24. März 2006
15.574
299
Köln
Hi,

Ich vermuite, es hängt mit dem Datenabgleich JTL-WaWi <-> OSCommerce zusammen.
Dies wird in der Tat autom. seit der letzten Connectorversion so gehandhabt. Der Connector braucht diese 0EUR Sonderpreise, damit er Sonderpreise, die in Wawi erstellt wurden, eingegeben werden können.

0€ Sonderpreise werden doch sicherlich nicht im Shop angezeigt, oder?

Abstellen kannst Du es so, wenn gewünscht:

dbeS/Artikel.php Zeile 109-118 entfernen:
Code:
		if ($products_id>0)
		{
			//erstelle Dummy für Sonderpreise, falls es keinen Sonderpreis für diesen Artikel gibt
			$spe_query = eS_execute_query("select specials_id from specials where products_id=".$products_id);
			$special_obj = mysql_fetch_object($spe_query);
			if (!$special_obj->specials_id)
			{
				eS_execute_query("insert into specials (products_id, status) values ($products_id,0)");
			}
		}
 

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
Wir hatten das gleiche Problem. Hab es jetzt auch so gelöst wie von dir beschrieben Thomas. Leider funktionieren jetzt keine Sonderangebote mehr, wenn man Sie erstellen will. Gibts da ne Lösung?
 

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
Auch nicht mit den neuen Connectoren oder der nächsten WaWi-Version? Weil wenn jemand was bestellt, dann steht in der E-Mail die er bekommt, dass er 0 Euro bezahlen muss, wie der Sonderpreis automatisch übertragen wird. Und deswegen haben wir es ja rausgenommen.
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
Ich hab mal einen Connector Mod für SPPC special prices per Customer geschrieben der Sonderpreise etc. behandelt.

Muss ich mir später mal ansehen, aber machbar wäre es insoweit, das der Connector automatisch alle zur Product ID gehörigen Sonderpreise erst einmal löscht und danach prüft ob der Sonderpreis ( Wawi) ungleich null ist und nur dann den neuen Wert in die Shopdatenbank schreibt.

Ähnlich haben wir es wie gesagt für den SPPC Mod gemacht und der funktionierte bisher einwandfrei
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
Bin gerade dabei,

hab es nur leider nicht vor dem geistigen Auge da wir Sonderpreise eben anders pflegen.

Der eine Teil besteht sicherlich in einem modifizierten Deletehack.
Der Zweite Teil dadrin, die im OSC Connector deaktivierte Funktion insertpreise zu aktivieren und nutzbar zu machen. Hierfür ist aber wichtig zu wissen wie und wo Ihr in der Wawi Sonderpreise pflegt.

Nutzt Ihr ein für OSCommerce überflüssiges Feld wie zum Beispiel UVP (was meinem empfinden nach den meisten Sinn machen würde ;)) oder geht Ihr über Attribute an das Thema ran ?
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
Ahjo, nun versteh ich das Problem - ein Update auf ein nicht bestehendes Tabellenelement kann auch ned die Sonderangebote eintragen.

Wenn Ihr es über Attribute steuert und den das Codesnippets in der Artikel.php anpasst sowie in der Attribute.php, dürfte es keine Probleme mit Sonderangeboten geben.

Hierzu würde ich wie folgt vorgehen (Achtung habe es selber nicht getestet.

1. Artikel.php

Finde

Code:
//erstelle Dummy für Sonderpreise, falls es keinen Sonderpreis für diesen Artikel gibt
			$spe_query = eS_execute_query("select specials_id from specials where products_id=".$products_id);
			$special_obj = mysql_fetch_object($spe_query);
			if (!$special_obj->specials_id)
			{
				eS_execute_query("insert into specials (products_id, status) values ($products_id,0)");
			}

ersetze durch

Code:
//erstelle Dummy für Sonderpreise, falls es keinen Sonderpreis für diesen Artikel gibt
			$spe_query = eS_execute_query("select specials_id from specials where products_id=".$products_id);
			$special_obj = mysql_fetch_object($spe_query);
			if ($special_obj->specials_id)
			{
				eS_execute_query("delete from specials where products_id=".$products_id);			}

Die Änderung sollte dafür Sorgen, das wenn ein Sonderangebot in der Tabelle specials vorhanden ist, dieses erst einmal gelöscht wird und somit keine Sonderangebote zu der Artikel-ID mehr bestehen. Theoretisch kann man die SQL und if abfrage auch weglassen und ihn grundsätzlich erst einmal die Sonderangebote löschen lassen die zum Artikel gehören(Wenn ich die Reihenfolge richtig im Kopf habe wird erst die Artikel.php und danach die Attribute.php abgearbeitet und somit müsste es funktionieren)

Danach die Attribute.php öffnen und suchen nach

Code:
eS_execute_query("update specials set specials_new_products_price=\"".$Attribut->content."\" where products_id=".$Attribut->products_id);

ersetzen durch

Code:
					$spe_query = eS_execute_query("select specials_id from specials where products_id=".$products_id);
					$special_obj = mysql_fetch_object($spe_query);
					if (!$special_obj->specials_id)
					{
						eS_execute_query("insert into specials (products_id,specials_new_products_price, status) values (".$Attribut->products_id.",\"".$Attribut->content."\",0)");
					}else{					
					eS_execute_query("update specials set specials_new_products_price=\"".$Attribut->content."\" where products_id=".$Attribut->products_id);
					}

finde

Code:
eS_execute_query("update specials set expires_date=\"".realEscape($date)."\" where products_id=".$Attribut->products_id);

ersetze durch

Code:
$spe_query = eS_execute_query("select specials_id from specials where products_id=".$products_id);
					$special_obj = mysql_fetch_object($spe_query);
					if (!$special_obj->specials_id)
					{
						eS_execute_query("insert into specials (products_id,expires_date, status) values (".$Attribut->products_id.",\"".realEscape($date)."\",0)");
					}else{		
					eS_execute_query("update specials set expires_date=\"".realEscape($date)."\" where products_id=".$Attribut->products_id);
					}

finde

Code:
eS_execute_query("update specials set status=".$Attribut->content.", date_status_change=now(), specials_last_modified=now()  where products_id=".$Attribut->products_id);

ersetze durch

Code:
$spe_query = eS_execute_query("select specials_id from specials where products_id=".$products_id);
					$special_obj = mysql_fetch_object($spe_query);
					if (!$special_obj->specials_id)
					{
						eS_execute_query("insert into specials (products_id, date_status_change,specials_last_modified,status) values (".$Attribut->products_id.",now(),now(),".$Attribut->content.")");
					}else{						
					eS_execute_query("update specials set status=".$Attribut->content.", date_status_change=now(), specials_last_modified=now()  where products_id=".$Attribut->products_id);
					}

Die Änderungen sollen zuerst prüfen, ob für den Artikel (product_id) schon ein Eintrag in der Tabelle specials vorhanden ist. Da die Reihenfolge der Attribute bei der Artikelanlage und somit auch die Übertragung an den Shop eher unsortiert erfolgen dürfte, müssen wir die Abfrage bei allen betroffenen Attributen für Sonderpreise druchführen.

Wenn nun kein Eintrag in der Tabelle specials vorhanden ist, soll eine Anlage desselben mit insert erfolgen. Sollte die id schon vorhanden sein, soll die Tabelle nur mit den neuen Werten geupdatet werden.

Keine Garantie das es funktioniert da ich es selber nicht testen konnte.
Sollte aber funktionieren.

Greets Frank
 

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
Ja, jetzt wo du es sagst, da sehe ich es auch! Das nächste mal lese ich mir den Code auch durch, hatte das gerade nicht gemacht, weil ich gerade keinen Zugriff auf den Connector habe. Aber trotzdem Danke ;)
 

Ähnliche Themen