Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: DHL Intraship Schnittstelle

    Q

    • Fördermitglied
    • Beiträge: 1.537
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #345 am: 09. Februar 2017, 12:07:12
    Bei der Shopversion 2.0.2.1 bekomme ich beim Erstellen des Labels folgende Fehlermeldung:

    Zitat
    CSRFToken nicht definiert (Aus Sicherheits-Aspekten ist es nicht mehr erlaubt im Adminbereich in verschiedenen Tabs zu arbeiten.)

    Das Label poppt auf, aber der Bestellstatus wird nicht geändert und die Kundeninformation geht nicht raus.

    Wenn ich die beiden Zeilen [print_intraship_label.php]

    Code: PHP  [Auswählen]
            echo "window.open(\"".$result->CreationState->Labelurl."\",\"INTRASHIP\",\"height=600,width=640,resizable=1\");\n";
            echo "location.replace('orders.php?oID=".$oID."&action=edit')";
     

    tausche, dürften alle Informationen weg sein.

    BTW: Um Track and Trace mit der Sendungsnummer zu füttern, habe ich noch folgendes geändert:

    nach:

    Code: PHP  [Auswählen]
            xtc_db_query("update " . TABLE_ORDERS . " set intraship_shipmentnumber = concat(intraship_shipmentnumber, '".$fieldtext."') where orders_id = '".$oID."'");

    folgenden Code eingefügt:

    Code: PHP  [Auswählen]
    // BOM Track and Trace
            $carrier_id = '1';
            $sql_data_array = array('orders_id' => $oID,
                                  'carrier_id' => $carrier_id,
                                  'parcel_id' => $result->CreationState->ShipmentNumber->shipmentNumber);
            xtc_db_perform(TABLE_ORDERS_TRACKING,$sql_data_array);
    // EOM Track and Tracd

    Die Änderung funktioniert bei Version 1.6 SP4 und Version 2.0.2.1. Voraussetzung DHL hat die ID 1. Wer möchte kann auch noch eine SQL Abfrage nach DHL einbauen.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #346 am: 09. Februar 2017, 12:37:19
    Bei der Shopversion 2.0.2.1 bekomme ich beim Erstellen des Labels folgende Fehlermeldung:

    Zitat
    CSRFToken nicht definiert (Aus Sicherheits-Aspekten ist es nicht mehr erlaubt im Adminbereich in verschiedenen Tabs zu arbeiten.)

    Das Label poppt auf, aber der Bestellstatus wird nicht geändert und die Kundeninformation geht nicht raus.
    [...]

    Erstelle im Ordner "/admin/includes/extra/csrf_exclusion/" eine Datei mit beliebigem Namen, beispielsweise "intraship.php" und folgendem Inhalt:

    Code: PHP  [Auswählen]
    <?php
    $module_exclusions[] = 'print_intraship_label';
    ?>

    Grüße

    Torsten

    Q

    • Fördermitglied
    • Beiträge: 1.537
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #347 am: 09. Februar 2017, 17:17:10
    Vielen Dank Torsten.  :thx:

    Bei Gelegenheit bastel ich mal ein Paket für V2 zusammen.

    Q

    • Fördermitglied
    • Beiträge: 1.537
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #348 am: 09. Februar 2017, 20:12:25
    So. Jetzt habe ich noch einen Schönheitsfehler, den ich nicht in den Griff kriege. Das Pulldownmenü für die Anzahl der Pakete funktioniert nicht mehr so in modified 2.x.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Roter Kreis sollte ein Pulldownmenü mit Zahlen von 1-5 sein.

    Code: PHP  [Auswählen]
    <?php echo xtc_draw_pull_down_menu('Multipack',$multipack_select,strval($multipack), 'onChange=submit();'); ?>

    Dazu habe ich weiter oben noch dies hier gefunden:

    Code: PHP  [Auswählen]
    $dhl_weight_array[1]=number_format($dhl_weight, 2,'.','');
    for ($i=1; $i<=5; $i++){
        $multipack_select[$i-1]=array('id' => strval($i), 'text' => strval($i)); //Dropdown Array für Paketanzahlbilden
        //Gewichte per Formular
        if (isset($_GET['WeightInKG'.strval($i)])) {
            $dhl_weight_array[$i]=preg_replace('/[^0-9.,]/','',$_GET['WeightInKG'.strval($i)]);
            $dhl_weight_array[$i]=str_replace(',','.',$dhl_weight_array[$i]);
            //Formatierung des Gewichtes für Intraship
            $dhl_weight_array[$i]=number_format($dhl_weight_array[$i], 2,'.','');
        }
    }

    Planzo

    • Neu im Forum
    • Beiträge: 25
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #349 am: 11. Februar 2017, 13:41:26
    Das hier von oneQ war eine sehr gute Idee!

    BTW: Um Track and Trace mit der Sendungsnummer zu füttern, habe ich noch folgendes geändert:

    nach:

    Code: PHP  [Auswählen]
            xtc_db_query("update " . TABLE_ORDERS . " set intraship_shipmentnumber = concat(intraship_shipmentnumber, '".$fieldtext."') where orders_id = '".$oID."'");

    folgenden Code eingefügt:

    Code: PHP  [Auswählen]
    // BOM Track and Trace
            $carrier_id = '1';
            $sql_data_array = array('orders_id' => $oID,
                                  'carrier_id' => $carrier_id,
                                  'parcel_id' => $result->CreationState->ShipmentNumber->shipmentNumber);
            xtc_db_perform(TABLE_ORDERS_TRACKING,$sql_data_array);
    // EOM Track and Tracd

    Die Änderung funktioniert bei Version 1.6 SP4 und Version 2.0.2.1. Voraussetzung DHL hat die ID 1. Wer möchte kann auch noch eine SQL Abfrage nach DHL einbauen.

    Für wen das Datum noch wichtig ist, sollte stattdessen folgendes anfügen:

    Code: PHP  [Auswählen]
    $carrier_id = '1';
    $sql_data_array = array('orders_id' => $oID,
                'carrier_id' => $carrier_id,
                'parcel_id' => $result->CreationState->ShipmentNumber->shipmentNumber);
    xtc_db_query("INSERT INTO ". TABLE_ORDERS_TRACKING . " VALUES (NULL, '".$oID."', '".$carrier_id."', '".$result->CreationState->ShipmentNumber->shipmentNumber."', NOW());");
     

    Planzo

    • Neu im Forum
    • Beiträge: 25
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #350 am: 12. Februar 2017, 13:06:47
    Hi OneQ,

    ich habe mir das jetzt nochmals ganz genau angeschaut und diverse Sachen gefunden und geändert.
    Ich dachte ich teile das Mal mit euch :)

    Damit ist die Ausgabe jetzt einheitlich an das Design der 2.0.x Version des Shops abgepasst. Da ich für die Spalten Werte zw. 200-250px gewählt habe, empfiehlt es sich den "DHL-Label"-Button nicht als PopUp, sondern wie folgt einzubinden:

    Datei: includes/modules/orders_info_blocks.php
    Zeile: 456
    Code: PHP  [Auswählen]
    <a class="button" href="<?php echo xtc_href_link('print_intraship_label.php','oID='.$oID); ?>">DHL Label</a>

    Meine angepasst Version findet sich hier im Anhang.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #351 am: 12. Februar 2017, 17:28:03
    In der 2.0.X solltest du keine Core-Dateien ändern.
    Das Einfügen des Buttons macht man mit einer neuen Datein beliebigen Namens in /DEIN_ADMIN_ORDNER/includes/extra/modules/orders/orders_info_block_end/ mit z.B. folgendem Inhalt:
    Code: PHP  [Auswählen]
    <a class="button intra" href="<?php echo xtc_href_link('print_intraship_label.php', 'oID='.$oID); ?>">DHL Label</a>

    <script>
    $(function(){
        $('.intra').appendTo('.table .flt-r');
    });
    </script>

    Damit erscheint der Button hinter dem Button "Lieferschein".

    Gruß,
    noRiddle

    Q

    • Fördermitglied
    • Beiträge: 1.537
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #352 am: 12. Februar 2017, 19:26:09
    Ich habe ja den Button lieber oben neben "Bearbeiten". Da habe ich leider keine
    Code: PHP  [Auswählen]
     foreach(auto_include(
    gefunden  :’-(

    An der print_intraship_label habe ich noch ein paar Änderungen wegen des Layouts vorgenommen, um nicht in den CSS rumzudoktorn. Das Problem mit dem pull-down habe ich aber immer noch nicht gelöst :(

    noRiddle: Man lernt ja nie aus. Sorgt
    Code: PHP  [Auswählen]
    <script>
    $(function(){
        $('.intra').appendTo('.table .flt-r');
    });
    </script>
    dafür, dass der Button nach ganz hinten rutscht? Gibts da noch mehr Optionen?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #353 am: 13. Februar 2017, 13:41:48
    Was heißt "ganz nach hinten rutscht" ??

    Wie ich bereits schrieb:
    Mit dem geposteten Javascript gilt:
    Zitat von: noRiddle
    Damit erscheint der Button hinter dem Button "Lieferschein".

    Wer den Button oben nach dem Button "Bearbeiten" haben möchte versucht es so:
    Code: XML  [Auswählen]
    <script>
    $(function(){
        $('.intra').appendTo('.clear .flt-l');
    });
    </script>

    zur Sicherheit sei nochmals betont:
    Der Button muß aber auch die class "intra" haben, eben wie in meinem Beispielcode zwei Posts höher.

    Gruß,
    noRiddle

    Planzo

    • Neu im Forum
    • Beiträge: 25
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #354 am: 13. Februar 2017, 19:53:47
    noRiddle: Danke für den Hinweis. Wusste ich noch nicht. Das ist ja großartig! Endlich nicht mehr die Corefiles bei updates mergen! *yippie*

    OneQ: Mir ist es immer noch ein Rätsel wie es bei die mit dem CSRF-Exclude von Torsten funktioniert. Bei mir will das einfach nicht. Habe mir die /inc/csrf_token.inc.php genau angesehen und so wie ich es sehe müsste das auch genau so klappen. Habs sogar schon testweise hartkodiert reingehackt. Funktioniert aber nicht.
    Ich fahre jetzt die Lösung, den CSRF-Token als hidden-Field mitzugeben.

    Naja .. falls wer Interesse hat. Siehe Anhang.

    Q

    • Fördermitglied
    • Beiträge: 1.537
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #355 am: 13. Februar 2017, 20:15:00
    Zitat
    oneQ: Mir ist es immer noch ein Rätsel wie es bei die mit dem CSRF-Exclude von Torsten funktioniert.
    Naja, ich habe mich einfach mal bedankt und gedacht, wenn es von Torsten kommt wird das schon funktionieren. Hab aber heute Nachmittag festgestellt, dass es doch nicht geht. :no-sad: Sorry, wenn das falsch rüber kam.

    Code: PHP  [Auswählen]
    <?php
    $module_exclusions[] = 'print_intraship_label';
    ?>
    Muss dazu die print_intraship_label in das Modul-Verzeichnis? Die print_intraship_label.php liegt direkt im Admin-Verzeichnis.

    Gerade versuche ich noch herauszufinden, wieso das Intraship Versandmodul nicht mit cod funktioniert.

    Was heißt "ganz nach hinten rutscht" ??
    Nach ganz rechts in der Button Reihenfolge. Wollte nur wissen, ob das script für die Reihenfolge sorgt oder es eine andere Funktion hat.  :thx:

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #356 am: 13. Februar 2017, 20:42:23
    Das bischen Javascript positioniert den Button erst, er wäre, wegen des auto_include ansonsten am Ende der kompletten Box vor dem Footer zu finden.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #357 am: 13. Februar 2017, 20:48:51
    Was den betrifft:
    Der CSRF-Token wir nicht mitgesendet weil der form-tag hard-codiert ist.
    Einfach anstatt dem hard-codierten tag die Funktion xtc_draw_form() benutzen, dann ist das hidden-field mit dem Token automatsich mit eingebunden.

    Gruß,
    noRiddle

    golferteddy

    • Schreiberling
    • Beiträge: 404
    • Geschlecht:
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #358 am: 08. März 2017, 22:43:10
    Hallo noRiddle

    Frage

    Was den betrifft:
    Der CSRF-Token wir nicht mitgesendet weil der form-tag hard-codiert ist.
    Einfach anstatt dem hard-codierten tag die Funktion xtc_draw_form() benutzen, dann ist das hidden-field mit dem Token automatsich mit eingebunden.

    was bedeutet das nun konkret.
    Wo muss man nun was ändern, dass der CSRF Fehler nicht mehr Auftritt und der Status geändert wird.

    Danke

    Lg

    edelstahlratte

    • Frisch an Board
    • Beiträge: 99
    Re: MODUL: DHL Intraship Schnittstelle
    Antwort #359 am: 08. März 2017, 23:06:49
    @golferteddy

    Du müsstest z.B. in der print_intraship_label.php die Zeile

    Code: PHP  [Auswählen]
    echo '<form action="orders.php?page=1&oID='.$oID.'&action=update_order" method="post" name="formular">';

    durch

    Code: PHP  [Auswählen]
    echo xtc_draw_form('formular', FILENAME_ORDERS, 'action=update_order', 'post');
    echo xtc_draw_hidden_field('oID', $oID);

    ersetzen... (Hab ich aber nicht getestet...)

    Und bei weiteren Codestellen nach dem gleichen Muster verfahren...

    Nico.
    10 Antworten
    8899 Aufrufe
    11. Januar 2016, 17:32:13 von DerNachbar
    1 Antworten
    2825 Aufrufe
    28. Mai 2014, 16:29:01 von noRiddle (revilonetz)
    1 Antworten
    1890 Aufrufe
    12. August 2015, 13:59:40 von ShopUser
    1 Antworten
    3351 Aufrufe
    16. März 2012, 11:37:34 von nicnero