Newlukai Posted July 20, 2004 Report Share Posted July 20, 2004 Hallo Leute, ich habe ein kleines Problem. Und zwar kann man ja je nach Geschmack Versand- und Zahlungsmodule hinzuf?gen. Ich h?tte aber gerne Abh?ngigkeiten hergestellt. Es sollte z.B. kein Selbstabholer die Zahlungsmethode Nachnahme w?hlen k?nnen. Die betreffende Datei (checkout_payment.php) habe ich schon gefunden. Leider kenne ich mich in PHP nicht so sehr aus. Man m??te doch nur per if-Abfrage herausbekommen, welche Versandart (sind ja auch nur 2, DHL und Selbstabholer) gew?hlt ist. In der for-Schleife, die die Zeilen mit den Zahlungsmethoden listet m??te man nur noch rausfinden, welche Zahlungsmethode gerade iteriert wird und je nachdem weitermachen oder die Zahlungsmethode ?berspringen. Aber wie gesagt, kenne ich mich in PHP nicht so sehr aus, um zu bestimmen, welche Versandart gew?nscht ist und welche Zahlungsmethode gerade iteriert wird. F?r Hilfe w?re ich sehr dankbar. cya Newlukai Link to comment Share on other sites More sharing options...
Newlukai Posted July 25, 2004 Author Report Share Posted July 25, 2004 Wei? denn keiner Rat? Link to comment Share on other sites More sharing options...
mzanier Posted July 25, 2004 Report Share Posted July 25, 2004 nach 2h kannst du keine antwort erwarten, bei nachfragen verl?ngert sich die antwortzeit gleichmal um paar stunden. du brauchst nichts programmieren, sondern nur bei der kundengruppe die module angeben, dort steht, "nicht erlaubte versandarten" Link to comment Share on other sites More sharing options...
tribun Posted July 27, 2004 Report Share Posted July 27, 2004 Das verstehe ich nicht. Wenn sich ein neuer Kunde anmeldet, ist er in der Gruppe "neuer Kunde". Er kann/soll nun z. B. zwischen Selbstabholung und Versand entscheiden. Im Falle der "Selbstabholung" soll z. B. die Zahlungsmethode "Vorkasse" nicht ausgew?hlt werden k?nnen, sondern die Zahlungsmethode "Barzahlung" (die es Standardm?ssig nicht gibt) erscheinen. Was soll es bringen, hier in der Gruppe "neuer Kunde" z. B. Selbstabholung zu verbieten? Der Admin m?sste ja dann zuerst eine neue Gruppe (z. B. "Selbstabholer") anlegen und den Kunden in diese Gruppe schieben, bevor er was kaufen kann. Irgendwie kapier ich's nicht... :wall: Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 @mzanier: Nicht nur auf die Uhrzeit des Posts schauen, auch auf das Datum. Ich habe 5 Tage gewartet ;-) @tribun: An sich ist das gar nicht so schwer. Hab's wohl zu knapp erl?utert. Wenn man etwas in einem XTC-Shop bestellt, w?hlt man doch erst einmal eine Versandart aus. Bei mir gibt es 2 M?glichkeiten: Selbstabholer und Deutsche Post. Danach kann man eine Zahlungsweise angeben. Stell' Dir vor Du w?rst Kunde, und h?ttest Selbstabholer gew?hlt. W?rdest Du dann erwarten, bei den Versandarten die Option "Nachnahme" anw?hlen zu k?nnen? Genauso unsinnig w?re es f?r einen Kunden, der sich die Ware zuschicken l??t als Zahlungsweise "Barzahlung" anzugeben, da er dann ja auch die Ware h?tte selbst abholen k?nnen. (Hinweis: Barzahlung gibt's als Zusatz zum runterladen) Das hat ?brigens nichts mit Kundengruppen zu tun, denn ich will ja abh?ngig von der Versandart entscheiden. Und jeder Kunde sollte grunds?tzlich mal diese und mal jene Versandart w?hlen k?nnen. Gru? Newlukai Link to comment Share on other sites More sharing options...
mzanier Posted July 27, 2004 Report Share Posted July 27, 2004 aso, da muss dann nur im modul der wert in der session gecheckt werden ob modul aktiv oder nicht. Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 Also ich hab mal nachgeschaut. Du meinst diesen Abschnitt: if (!isset($_SESSION['shipping'])) { xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } Wie bekomme ich nun raus, ob Versand oder Selbstabholer? Hier wird ja wohl nur gepr?ft, ob ?berhaupt was ausgew?hlt wurde. Wie komme ich an den Wert ran? Link to comment Share on other sites More sharing options...
mzanier Posted July 27, 2004 Report Share Posted July 27, 2004 das hat damit nichts zu tun, im bezahlmodul selbst kannst du checken welches versandmodul gew?hlt worden ist, und das bezahlmodul dann auf false setzen. daf?r sind jedoch einige php kentnisse erforderlich. die n?tigen variablen stehen in der session. Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 Mir war schon klar, da? der Codeabschnitt nur checkt, ob ?berhaupt was gew?hlt ist ;-) Ich dachte nur, in dieser Datei m??te ich es ?ndern. Aber egal. Also mu? ich in den .php-Dateien /include/modules/payment die Abfragen einf?gen? Wo wird denn die SESSION-Klasse definiert, damit ich mir die zur Verf?gung stehenden Variablen anschauen kann? Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 Hmm.. hab mal ein bi?chen gesucht, und die Funktion in der payment-Klasse gefunden, die die Zahlungsmethoden in ein Array schreibt: while (list(, $value) = each($this->modules)) { $class = substr($value, 0, strrpos($value, '.')); if ($GLOBALS[$class]->enabled) { $selection = $GLOBALS[$class]->selection(); if (is_array($selection)) $selection_array[] = $selection; } } } Ich sch?tze mal, hier mu? ich die Abfrage einf?gen? Link to comment Share on other sites More sharing options...
mzanier Posted July 27, 2004 Report Share Posted July 27, 2004 nein. wie bereits mehrfach geschrieben, direkt im payment modul selbst... Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 Aso: Die Funktion nennt sich ?berigens "selection" Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 OK. Also. Am Beispiel "invoice". Da gibt's gleich zu Anfang (Klasseninitialisierung) die Eigenschaft "enabled": function invoice() { global $order; $this->code = 'invoice'; $this->title = MODULE_PAYMENT_INVOICE_TEXT_TITLE; $this->description = MODULE_PAYMENT_INVOICE_TEXT_DESCRIPTION; $this->sort_order = MODULE_PAYMENT_INVOICE_SORT_ORDER; $this->enabled = ((MODULE_PAYMENT_INVOICE_STATUS == 'True') ? true : false); Sollte ich da ansetzen? Link to comment Share on other sites More sharing options...
Newlukai Posted July 27, 2004 Author Report Share Posted July 27, 2004 Ein einfaches $this->enabled = false; hat mir best?tigt: Ja, da mu? ich ansetzen. Allerdings wei? ich noch immer nicht genau, woher ich wei?, welche Versandart gew?hlt wurde. Bitte, bitte, ein kleiner Tip. Link to comment Share on other sites More sharing options...
Hubi Posted July 28, 2004 Report Share Posted July 28, 2004 $_SESSION['shipping'] da stehen bei Auswahl der entsprechende Systemname der Versandart drin. Systemname kannst Du im Admin bei den Versandmodulen rausbekommen. Link to comment Share on other sites More sharing options...
Newlukai Posted July 28, 2004 Author Report Share Posted July 28, 2004 Also in $_SESSION['shipping'] steht nur "Array". Also habe ich mal versucht, $_SESSION['shipping']['code'] auszugeben. Da steht aber nix drin. Meine PHP-Kenntnisse sind nicht so toll. F?r ein paar Schleifen und Abfragen reichts. Ich wei? auch, was ein Array ist. Aber ich wei? nicht, wie ich an die Array-Felder komme. Ich such aber weiter... Link to comment Share on other sites More sharing options...
mzanier Posted July 28, 2004 Report Share Posted July 28, 2004 echo '<pre>'; print_r ($_SESSION); echo '</pre>': Link to comment Share on other sites More sharing options...
Newlukai Posted July 30, 2004 Author Report Share Posted July 30, 2004 Danke. Jetzt klappt's. F?r alle Interessierten: In dem Verzeichnis /includes/modules/payment befinden sich die .php-Dateien zu den einzelnen Zahlungsarten. In diesen Dateien werden die Zahlungsarten mit der Variablen 'enabled' (de)aktiviert (boolean). Und in der $_SESSION['shipping']['id'] findet sich der Code der Versandart (bei mir: dp_dp oder selfpickup_selfpickup). cya Newlukai Link to comment Share on other sites More sharing options...
andy127 Posted July 30, 2004 Report Share Posted July 30, 2004 Hallo Newlukai, k?nntest Du kurz erkl?ren, was man genau machen muss, um dieses zu bewerkstelligen??? Ich w?rde gerne die Versandart "Abholung" mit "Barzahlung" kombinieren, hab's aber noch nicht hinbekommen. Bin noch PHP Laie... :cry: Link to comment Share on other sites More sharing options...
andy127 Posted July 30, 2004 Report Share Posted July 30, 2004 so jetzt aber leserlich: Ich hab's: einfach in den gew?nschten Zahlungarten (includes\modules\payment) nach ... if ($this->enabled == true) { if ($order->content_type == 'virtual') { $this->enabled = false; } } folgendes erg?nzen: if ($this->enabled == true) { if ($_SESSION['shipping']['id'] == 'selfpickup_selfpickup') { $this->enabled = false; } } wobei bei der angegebenen Lieferart diese Zahlungsart dann deaktiviert wird! Im Beispiel oben wird z.B. die Nachnahme bei Selbstabholung deaktiviert. Link to comment Share on other sites More sharing options...
geiz Posted December 28, 2004 Report Share Posted December 28, 2004 Klase, das hat gut geklappt. K?nnte auch jemand eins posten wenn man auf selbstabholler geht, dass dann alles au?er barzahlung ausgeblendet wird? benutze nachnahme und DP THX Link to comment Share on other sites More sharing options...
geiz Posted December 28, 2004 Report Share Posted December 28, 2004 Ich meinte Nachnahme und EU - Banktrasfer Link to comment Share on other sites More sharing options...
visus Posted April 29, 2009 Report Share Posted April 29, 2009 Hallo, es klappt bei mir mit den Standard modulen .. aber ich habe ein Versandmodul installiert, dass den Versand nach Postleitzahlen ermöglicht und da scheint es nicht zu gehen ? ,., muss ich da was beachten? Link to comment Share on other sites More sharing options...
amerdifam Posted May 15, 2009 Report Share Posted May 15, 2009 so jetzt aber leserlich: Ich hab's: einfach in den gew?nschten Zahlungarten (includes\modules\payment) nach ... if ($this->enabled == true) { if ($order->content_type == 'virtual') { $this->enabled = false; } } folgendes erg?nzen: if ($this->enabled == true) { if ($_SESSION['shipping']['id'] == 'selfpickup_selfpickup') { $this->enabled = false; } } wobei bei der angegebenen Lieferart diese Zahlungsart dann deaktiviert wird! Im Beispiel oben wird z.B. die Nachnahme bei Selbstabholung deaktiviert. Hallo, das funktioniert super, nun möchte ich gerne das auch bei Pauschalen Versandkosten kein Nachnahme angeboten wird, ich habe nun schon die verschiedensten Versionen probiert, aber ich bekomme es nicht hin, entweder werden Fehler angezeigt oder Nachnahme kommt wieder zum Vorschein. Wie kann ich diese beiden vereinen, also Pauschale Versandkosten und Selbstabholung ohne Nachnahme? Für eine Antwort wäre ich sehr dankbar1 Link to comment Share on other sites More sharing options...
SB_CBO-DO Posted May 25, 2010 Report Share Posted May 25, 2010 So wir haben in unserem Shop ein ähnliches Problem. Wenn man bei uns "Selbstabholung" wählt sollte eigentlich nur "Barzahlung bei Abholung" stehen. Leider steht da aber auch noch "Barzahlung bei Abholung" (moneyorder). Mit der hilfe hier habe ich Paypal schon rausbekommen, aber moneyorder bekomme ich einfach nicht raus. hier ist der Code function update_status() { global $order; [B]if (($this->enabled == true) && ((int) MODULE_PAYMENT_MONEYORDER_ZONE > 0)) { if ($_SESSION['shipping']['id'] == 'selfpickup_selfpickup') { $this->enabled = false; }[/B] $check_flag = false; $check_query = xtc_db_query("select zone_id from ".TABLE_ZONES_TO_GEO_ZONES." where geo_zone_id = '".MODULE_PAYMENT_MONEYORDER_ZONE."' and zone_country_id = '".$order->billing['country']['id']."' order by zone_id"); while ($check = xtc_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->billing['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } Was ich in den Code eingefügt habe ist Fett Markiert. Hat da vielleicht jemand eine ahnung und kann mir helfen. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.