Aktionspreise? Ich steh' auf dem Schlauch

Antworten

Aktionspreise? Ich steh' auf dem Schlauch

Hi,

die Forumsuche bringt mich nicht weiter.

Habe die cao_osc.php v1.55 (das scheint die aktuellste zu sein) und nehme in CAO einen Artikel, stelle dort einen Aktionspreis ein (50% von heute bis 3 Tage) und will den an osC übertragen.
Dazu gehe ich zum Shoptransfer und Update cao->osc und denke, dass dieser Aktionspreis in den Shop übertragen werden, tut's aber nicht.

Ich habe mir die Scripte angesehen und bemerkt, dass die Funktion dafür gar nicht angefasst wird:

Code: Alles auswählen

case 'products_specialprice_update':
SendXMLHeader ();
ProductsSpecialPriceUpdate ();
exit;
Es wird nur das normale Produktupdate "ProductsUpdate ();" durchgeführt, was keine Aktionspreise beinhaltet.

Was mache ich falsch? Gibt es irgendwo eine Einstellung für die Aktionspreise, die ich anschalten muss?
:?:
Gruss Axel

Re: Aktionspreise? Ich steh' auf dem Schlauch

Moin,

das Shop-Script muss angepaßt werden, da das in den alten Scripten nicht vorhanden ist.
Anbei die Doku zur Schnittstelle, anhand derer man das anpassen kann.
Schnittstellenbeschreibung CAO.pdf
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
bis dahin
Thoren
______________________________________________
Alles wird gut....:)
______________________________________________
Shopsysteme
Oxid CE mit COI-Modul

Re: Aktionspreise? Ich steh' auf dem Schlauch

Okay, danke. Hab mir fast schon gedacht, dass die Funktionen obsolet sind.

> das Shop-Script muss angepaßt werden, da das in den alten Scripten nicht vorhanden ist

Gibt es neuere Scripte?

Ich habe nur die folgende Scriptversionen (für osC 2.2) gefunden:
cao_osc.php ... v1.55 vom 14.02.2007
cao_osc_functions.php ... v1.53 vom 15.08.2006

Sind das die richtigen, aktuellen Scripte?

Und ich trau' mich gar nicht zu fragen:
Die Scripte stehen doch unter GPL. Wenn ich die jetzt anpasse und dem Kunden gebe, muss ich doch die Sourcen veröffentlichen, oder? Ich meine, der Kunde bezahlt ja für die Anpassung. Wo muss ich die dann veröffentlichen?
Gruss Axel

Re: Aktionspreise? Ich steh' auf dem Schlauch

Na gut. Ich ziehe die Fragen zurück, vor allem die letzte ;-)

Andere Frage:

Hat wirklich noch niemand die Arbeit (Scripte aktualisieren) bereits gemacht? Bin ich echt der erste?
Gruss Axel

Re: Aktionspreise? Ich steh' auf dem Schlauch

m3dfmc hat geschrieben: Die Scripte stehen doch unter GPL. Wenn ich die jetzt anpasse und dem Kunden gebe, muss ich doch die Sourcen veröffentlichen, oder? Ich meine, der Kunde bezahlt ja für die Anpassung. Wo muss ich die dann veröffentlichen?
Der Kunde zahlt nicht für ein GPL Script, er zahlt für "DEINE" geleistete Arbeit.
Das ist selbst im GPL bereich legitim.

Aktualisierte Scripte gibt es bestimmt irgendwo. Allerdings unveröffentlicht gegen die GPL ;)
Gruß Chris
"Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's gerade tut."

Re: Aktionspreise? Ich steh' auf dem Schlauch

Moin,
hh-cm hat geschrieben:Aktualisierte Scripte gibt es bestimmt irgendwo.
Ja, bei mir. Aber besteht überhaupt Interesse daran :?:
Gruss Axel

Re: Aktionspreise? Ich steh' auf dem Schlauch

Moin,

stell deine Scripte mit Erklärung der Änderung hier rein. Es gibt garantiert den ein oder anderen der es gebrauchen kann.
bis dahin
Thoren
______________________________________________
Alles wird gut....:)
______________________________________________
Shopsysteme
Oxid CE mit COI-Modul

Die Lösung

Zu ändern ist *nur* die Datei cao_osc_functions.php v1.53.

Falls ihr die Datei bereits selbst modifiziert habt, verwendet die folgenden Hinweise für die Integration der Aktionspreise. Wer noch das *originale* Script verwendet, kann sich die Arbeit sparen und lädt sich die Datei aus dem Anhang.

Der folgende Code gehört ans Ende der Funktion ProductsUpdate(). Bitte über die Zeile "if (file_exists('cao_produpd_2.php'))..." einfügen:

Code: Alles auswählen

// 20140930 m3dfmc begin - Aktionspreise CAO -> osC
// Getestet mit osCommerce 2.2 MS2
// Fragen, Probleme, Anregungen bitte an axelf.acp [at] gmail.com
//
// Gegeben: Der Artikel exisitiert im Shop, keine weitere Prüfung nötig
//
// Achtung_1: CAO hat bis mind. v1.4.4.145 für Aktionen keine Plausibilitätsabfrage, d.h.:
//            Man kann in CAO eine Aktion ohne Ablaufdatum und|oder ohne|gleichen|teureren Aktionspreis anlegen,
//            dann kommen hier entweder keine "products_ac_*" POST-Variablen an oder "komische" Werte, die
//            in den Shop übernommen werden, z.B. eine Aktion mit gleichem oder höherem Preis.
//
// Achtung_2: Bitte beachten, dass CAO den Import von Sonderaktionen aus dem Shop nicht (mehr) unterstützt.
//            Der entsprechende (Aktions-) Code in "SendProducts" ist obsolet.
//            Ebenfalls obsolet sind die Funktionen "ProductsSpecialPriceUpdate" und "ProductsSpecialPriceErase"
//
// Achtung_3: Wenn in CAO eine Aktion gelöscht wird, kommt hier - trotz Artikel-Update - keine Information darüber an.
//            Deshalb wird hier jeder Artikel geprüft, um im Shop eine vorhandene Aktion inaktiv zu setzen (status=0)
//            Dazu dient der folgende Code-Block (if (!isset...). Diesen deaktivieren, wenn das nicht gewollt ist.
//            Bitte auch darauf achten, dass im Shop keine gegensätzlichen Aktionen durchgeführt werden.

   $ac_sql = "select specials_id, specials_new_products_price, expires_date from " . TABLE_SPECIALS . " " . "where products_id='" . (int)$products_id . "'";

   if (!isset($_POST['products_ac_date_to'])) {
      $ac_query = tep_db_query($ac_sql);
      if ($ac = tep_db_fetch_array($ac_query)) {
         // wenn im Shop eine Aktion zum Artikel existiert wird die jetzt deaktiviert
         $specials_id = $ac['specials_id'];
         tep_db_query("update " . TABLE_SPECIALS .
                      " set date_status_change = now()," .
                      " status = '0'" .
                      " where specials_id = '" . (int)$specials_id. "' and status <> '0'");
      }
   }

   if (isset($_POST['products_ac_date_to']) &&  isset($_POST['products_ac_price'])) {
      // CAO Artikel hat eine Aktion mit Preis u. Ablaufdatum

      $products_ac_price = tep_db_prepare_input($_POST['products_ac_price']);
      $products_ac_date_to = tep_db_prepare_input($_POST['products_ac_date_to']);
      $d = explode(".", $products_ac_date_to);               // "05.10.2014"
      $s = sprintf("%04d-%02d-%02d", $d[2], $d[1], $d[0]);   // "2014-10-05"

      if (strtotime($s) >= strtotime(date("Y-m-d"))) {
         // Datum OK (heute oder in der Zukunft)
         $ac_query = tep_db_query($ac_sql);
         if ($ac = tep_db_fetch_array($ac_query)) {
            // Aktion existiert bereits im osC
            $specials_id = $ac['specials_id'];
            if ( (strtotime($s) <> strtotime($ac['expires_date'])) || ($products_ac_price <> $ac['specials_new_products_price']) ) {
               // UPDATE, weil Datums- oder Preisänderung
               tep_db_query("update " . TABLE_SPECIALS .
                            " set specials_new_products_price = '" . $products_ac_price . "'," .
                            " specials_last_modified = now()," .
                            " expires_date = '" . $s . "'," .
                            " status = '1'" .
                            " where specials_id = '" . (int)$specials_id. "'");
            }
         } else {
            // INSERT, denn Aktion existiert nicht im osC
            tep_db_query("insert into " . TABLE_SPECIALS .
                         " (products_id, specials_new_products_price, specials_date_added, expires_date, status) " .
                         " values ('" . (int)$products_id . "', '" . $products_ac_price . "', now(), '" . $s . "', '1')");
         }
      } else {
         // Datum liegt in der Vergangenheit, Aktion parken
         $ac_query = tep_db_query($ac_sql);
         if ($ac = tep_db_fetch_array($ac_query)) {
            $specials_id = $ac['specials_id'];
            tep_db_query("update " . TABLE_SPECIALS .
                         " set specials_new_products_price = '" . $products_ac_price . "'," .
                         " specials_last_modified = now()," .
                         " expires_date = '" . $s . "'," .
                         " date_status_change = now()," .
                         " status = '0'" .
                         " where specials_id = '" . (int)$specials_id. "' and status <> '0'");
         }
      }
   }

// m3dfmc end
Der folgende Codeschnipsel gehört in die Funktion ProductsErase(). Bitte unter die Zeile "tep_remove_product($ProdID);" einfügen:

Code: Alles auswählen

// 20140930 m3dfmc begin - Aktionspreise CAO -> osC
    tep_db_query("delete from " . TABLE_SPECIALS . " where products_id = '" . (int)$ProdID . "'");
// m3dfmc end
Ich hoffe, ich konnte helfen 8-)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruss Axel