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: admin/print_order.php - Gültigkeit von Variablen

    xasam

    • Fördermitglied
    • Beiträge: 25
    admin/print_order.php - Gültigkeit von Variablen
    am: 14. Februar 2014, 16:31:40
    Hallo Community,

    ich habe, so glaube ich, ein Verständnisproblem mit der Gültigkeit von Variablen. Ich habe versucht aus der admin/print_order.php eine Funktion aus /includes/classes/main.php aufzurufen.

    admin/print_order.php
    Code: PHP  [Auswählen]
      $test_contryID = xtc_db_query("SELECT countries_id
                                     FROM "
    . TABLE_COUNTRIES . "
                                     WHERE countries_name='"
    . $order->customer['country'] . "'");
      $test_contryID = xtc_db_fetch_array($test_contryID);
      $test_contryID = $test_contryID["countries_id"];
     
      include_once(DIR_FS_CATALOG.DIR_WS_CLASSES .'main.php');
      $main = new main;
      $tax_info = $main->getTaxTest($test_contryID);
      $smarty->assign('PRODUCTS_TAX_INFO', $tax_info);
     

    in /includes/classes/main.php schaut das so aus
    Code: PHP  [Auswählen]
      function getTaxTest($country) {
        $tax_test = '';

        // Steuersatz 0 und Deutschland USt §19
        if ($country == 81) {
          $tax_test = sprintf(TAX_INFO_EXCL_NOVAT,'');
        }
        // Steuersatz 0  und nicht Deutschland
        if ($country <> 81) {
          $tax_test = sprintf(TAX_INFO_EXCL_BUSINESS,'');
        }  
       
        return $tax_test;
        }
     

    Die Definition der Variablen habe ich in /lang/german/german.php vorgenommen

    Code: PHP  [Auswählen]
    define('TAX_INFO_EXCL_BUSINESS','Non taxable');

    Die class main wird doch an vielen Stellen im code aufgerufen. Leider wird statt dem gewünschten Ergebnis in der /templates/.../admin/print_order.html

    {$PRODUCTS_TAX_INFO} nur "TAX_INFO_EXCL_BUSINESS" ausgegeben. Irgendwo fehlt mir da was ...

    Könnt Ihr mir helfen das aufzulösen ?

    Danke xasam


    Linkback: https://www.modified-shop.org/forum/index.php?topic=29344.0
    rechtstexte für onlineshop

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.022
    • Geschlecht:
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #1 am: 14. Februar 2014, 18:47:47
    Du kannst eine Klasse die in der Datei nicht zur Verfügung steht und nicht instanziiert wurde nicht verwenden.
    Die Klasse muß dann erst geladen und auf jeden Fall instanziiert werden.
    Dafür gibt es viele Beispiele im Core-Code des Systems.

    Im übrigen:
    Warum definierst du dein Ansinnen nicht direkt in der Datei, wofür die class main ?

    Gruß,
    noRiddle

    xasam

    • Fördermitglied
    • Beiträge: 25
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #2 am: 14. Februar 2014, 19:18:02
    Hallo noRiddle,

    danke für Deine Antwort

    Zitat
    Im übrigen:
    Warum definierst du dein Ansinnen nicht direkt in der Datei, wofür die class main ?

    Ich hatte schon an anderer Stelle so etwas versucht was gut funktioniert hat oder besser gesagt, dort kamen die Variablen so wie sie sollten:

    /modified/send_order.php

    Code: PHP  [Auswählen]
      $test_contryID = xtc_db_query("SELECT countries_id
                                     FROM "
    . TABLE_COUNTRIES . "
                                     WHERE countries_name='"
    . $order->customer['country'] . "'");
      $test_contryID = xtc_db_fetch_array($test_contryID);
      $test_contryID = $test_contryID["countries_id"];
      $tax_info = $main->getTaxTest($xtPrice->TAX[$test_contryID]);
      $smarty->assign('PRODUCTS_TAX_INFO', $tax_info);
     

    Ich bin nicht so tief drin wie Du, würde gerne lernen warum es in der zweiten Variante nicht geht

    Zitat
    Dafür gibt es viele Beispiele im Core-Code des Systems.

    Gibst Du mir eine Beispiel?

    Zitat
    Warum definierst du dein Ansinnen nicht direkt in der Datei, wofür die class main ?

    Wahrscheinlich weil ich nicht weiß wie es geht  ;-)

    Danke und Gruß
    xasam

    xasam

    • Fördermitglied
    • Beiträge: 25
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #3 am: 15. Februar 2014, 11:03:31
    Hallo noRiddle,

    ich habe Deinen Vorschlag es in der Datei selbst zu versuchen aufgenommen. Bisher hatte war ich davon ausgegangen, dass die Variablen der z.B. "german.php" überall verfügbar sind.

    Wenn ich aber

    Code: PHP  [Auswählen]
        echo(IMAGE_BUTTON_ADD_ADDRESS);

    eingebe erhalte ich "IMAGE_BUTTON_ADD_ADDRESS"

    Erst wenn ich z.B.:

    Code: PHP  [Auswählen]
    define('IMAGE_BUTTON_ADD_ADDRESS', 'Neue Adresse');

    erneut definiere bekomme ich das gewünschte Ergebnis ... aber das macht doch keinen Sinn, dafür gibt es ja die Sprachkonfigurationen.

    Wie komme ich in der admin/print_order.php an die Variablen dran ?

    Kannst Du / könnt Ihr mir da helfen?

    Gruß
    xasam

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.022
    • Geschlecht:
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #4 am: 15. Februar 2014, 16:30:55
    Upps, ich sehe gerade, daß du die Klasse ja instanziiert hattest mit
    Code: PHP  [Auswählen]
    include_once(DIR_FS_CATALOG.DIR_WS_CLASSES .'main.php');
    $main = new main;
    hatte ich übersehen, sorry.

    Um jedoch eine einzige Ausgabe für die print_order zu haben muß man keine ganze Klasse laden.
    Du kannst doch die Funktion getTaxTest() direkt in /admin/print_order.php schreiben oder auch in den /inc Ordner legen.
    In erstem Fall reicht ja dann ein
    Code: PHP  [Auswählen]
    $tax_info = getTaxTest($test_contryID);

    und im zweiten Fall eben ein
    Code: PHP  [Auswählen]
    require_once(DIR_FS_INC . 'DEINE_FUNKTION_IM_INC_ORDNER.inc.php');
    $tax_info = getTaxTest($test_contryID);

    wobei ich jetzt nur die Zeile zitiert habe die die Funktion getTaxTest() anwendet, der Rest deines Codes muß natürlich auch noch rein.

    Wofür ist denn in
    Code: PHP  [Auswählen]
      function getTaxTest($country) {
        $tax_test = '';
     
        // Steuersatz 0 und Deutschland USt §19
        if ($country == 81) {
          $tax_test = sprintf(TAX_INFO_EXCL_NOVAT,'');
        }
        // Steuersatz 0  und nicht Deutschland
        if ($country <> 81) {
          $tax_test = sprintf(TAX_INFO_EXCL_BUSINESS,'');
        }  
       
        return $tax_test;
        }

    überhaupt das sprintf() mit einem leeren zweiten Parameter ?
    Warum nicht einfach
    Code: PHP  [Auswählen]
    $tax_test = TAX_INFO_EXCL_NOVAT;

    Außerdem, hatte deinen Code nicht näher analysiert vorher, muß die Sprachkonstante in
    /lang/SPRACHE/admin/SPRACHE.php
    und nicht in
    /lang/SPRACHE/SPRACHE.php
    definiert werden.

    Hoffe das klappt jetzt.

    Im übrigen habe ich nicht die Sinnhaftigkeit und den genauen Zweck deines Codes geprüft,
    das nur bevor noch Kritik kommt.
    Es wäre z.B. einfacher und richtig dein Anliegen, wenn ich es richtig verstanden habe, über
    Code: PHP  [Auswählen]
    $order->delivery['country_iso_2']

    zu verwiklichen anstatt über die countries_id.
    Dann kannst du dir auch die Query sparen, denn der country_iso_2 steht ja über die class order bereits zur Verfügung (in deinem Fall wäre das ja dann GI für Gibraltar).
    Oder brauchst du zwingend das Land der Rechnungsadresse anstatt das Versandland (die ja theoretisch voneinander abweichen können) ?

    Vielleicht erklärst du mal genau was du eigtl. erreichen möchtest.

    Gruß,
    noRiddle

    web28

    • modified Team
    • Beiträge: 9.404
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #5 am: 15. Februar 2014, 17:55:31
    Zitat
    Außerdem, hatte deinen Code nicht näher analysiert vorher, muß die Sprachkonstante in
    /lang/SPRACHE/admin/SPRACHE.php
    und nicht in
    /lang/SPRACHE/SPRACHE.php
    definiert werden.

    Genau das ist die Lösung, bzw. war der Fehler.

    xasam

    • Fördermitglied
    • Beiträge: 25
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #6 am: 15. Februar 2014, 19:46:08
    Hallo noRiddle, hallo web28,

    erst einmal vielen Dank für Eure Antworten. Ihr habt meinen Tag gerettet ;-)

    Um es vorweg zu nehmen, ich habe es jetzt mit Eurer Hilfe in admin/print_order.php so gelöst:

    Code: PHP  [Auswählen]
      // BOF get countryID
      $contryID = xtc_db_query("SELECT countries_id
                                     FROM "
    . TABLE_COUNTRIES . "
                                     WHERE countries_name='"
    . $order->customer['country'] . "'");
      $contryID = xtc_db_fetch_array($contryID);
      $contryID = $test_contryID["countries_id"];
      // EOF get countryID  
      // BOF taxInfo holen nach LänderID
      require_once(DIR_FS_INC . 'seco_getTaxInfo.inc.php');
      $smarty->assign('PRODUCTS_TAX_INFO', s_getTaxText($contryID));
      // BOF taxInfo holen nach LänderID  
     

    Zu meinem Verständnis waren die ausführlichen Informationen von noRiddle sehr hilfreich. Ich hab jetzt eineige Dinge besser verstanden.

    Darauf wäre ich wahrscheinlich nie gekommen:

    Zitat
    Außerdem, hatte deinen Code nicht näher analysiert vorher, muß die Sprachkonstante in
    /lang/SPRACHE/admin/SPRACHE.php
    und nicht in
    /lang/SPRACHE/SPRACHE.php
    definiert werden.

    Noch zu Deiner Frage warum das Ganze:

    Zitat
    Oder brauchst du zwingend das Land der Rechnungsadresse anstatt das Versandland (die ja theoretisch voneinander abweichen können) ?

    Ja, wir bauen einen Shop und sind nach §19 UStG entsprechend befreit. Ergo brauchen wir entsprechende Hinweißtexte an allen Preisen und Dokumenten. Das ist aber noch nicht das Problem. Wir liefern weltweit und wir haben es mit großen Unternehmen zu tun.

    Das bedeutet, wir haben Kunden die aus Deutschland in Deutsch und Englisch bestellen, die Lieferung aber entweder nach Deutschland oder ins Ausland (EU oder non EU) geliefert wird, wobei jedesmal die Rechnungsadresse eine andere ist .... oder aber auch umgekehrt, ausländische Kunden bestellen für Deutsche Tochtergesellschaften.

    Wie auch immer, ich bin nicht der modified-Profi, und versuche halt einfache Lösungen zu finden und dabei etwas zu lernen.

    Deshalb noch einmal Danke an Euch.

    Gruß
    xasam

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.022
    • Geschlecht:
    Re: admin/print_order.php - Gültigkeit von Variablen
    Antwort #7 am: 15. Februar 2014, 21:37:33
    Ist für die Steuer nicht das Land in welches versendet wird maßgebend und nicht das Land für die Rechnungserstellung ?

    Gruß,
    noRiddle
    9 Antworten
    6526 Aufrufe
    27. Februar 2011, 21:51:38 von Tomcraft
    0 Antworten
    1747 Aufrufe
    23. Juli 2013, 12:27:55 von cole
    0 Antworten
    1882 Aufrufe
    27. Februar 2011, 12:11:53 von sj-tuning
    1 Antworten
    2023 Aufrufe
    10. Juli 2012, 15:59:57 von cybermailer