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: Vorschlag Klassenerweiterung ot_module

    Gulliver72

    • Mitglied
    • Beiträge: 191
    • Geschlecht:
    Vorschlag Klassenerweiterung ot_module
    am: 09. April 2020, 11:56:35
    Hallo zusammen,

    ich hatte beim Modulbau zur Differnzbesteuerung die Idee, die ot_module manipulierbar zu machen.
    Somit können mit Klassenerweiterungsmodulen die Module modifiziert oder auch abgefangen werden.
    Interessant finde ich das auch im Zusammenhang mit der Kleinunternehmerregelung.
    Momentan muß dort das Steuer-Modul und das Modul Netto-Summe deinstalliert werden. Das wäre dann obsolet.

    Ich stelle euch einfach mal das Ganze vor. Vielleicht besteht Interesse

    Die zwei Dateien hab ich noch mit dran gehangen

    ------------------------------------------------------------
        /includes/classes/checkoutModules.class.php
    ------------------------------------------------------------

    Finde:

    Code: PHP  [Auswählen]
        function unallowed_shipping_modules($unallowed_modules)
        {
            $this->function_call = 'unallowed_shipping_modules';
            return $this->call_module_method($unallowed_modules);
        }

    Füge danach ein:

    Code: PHP  [Auswählen]
        function manipulate_output_array($arr_output)
        {
            $this->function_call = 'manipulate_output_array';
            return $this->call_module_method($arr_output);
        }
       
        function manipulate_output($output)
        {
            $this->function_call = 'manipulate_output';
            return $this->call_module_method($output);
        }

    ------------------------------------------------------------
        /includes/classes/order_total.php
    ------------------------------------------------------------

    Finde:

    Code: PHP  [Auswählen]
        function __construct() {
            global $order;

    Füge danach ein:

    Code: PHP  [Auswählen]
        //new module support
        require_once (DIR_FS_CATALOG.'includes/classes/checkoutModules.class.php');
        $this->checkoutModules = new checkoutModules();

    Finde:

    Code: PHP  [Auswählen]
        function process() {
            $order_total_array = array ();
            if (is_array($this->modules)) {
                reset($this->modules);
                foreach ($this->modules as $value) {
                    $class = substr($value, 0, strrpos($value, '.'));
                    if ($GLOBALS[$class]->enabled) {
                        $GLOBALS[$class]->output = array();
                        $GLOBALS[$class]->process();

                        for ($i = 0, $n = sizeof($GLOBALS[$class]->output); $i < $n; $i ++) {
                            if (xtc_not_null($GLOBALS[$class]->output[$i]['title']) && xtc_not_null($GLOBALS[$class]->output[$i]['text'])) {
                                $order_total_array[] = array (
                                    'code' => $GLOBALS[$class]->code,
                                    'title' => $GLOBALS[$class]->output[$i]['title'],
                                    'text' => $GLOBALS[$class]->output[$i]['text'],
                                    'value' => $GLOBALS[$class]->output[$i]['value'],
                                    'sort_order' => ((isset($GLOBALS[$class]->output[$i]['sort_order'])) ? $GLOBALS[$class]->output[$i]['sort_order'] : $GLOBALS[$class]->sort_order)
                                    );
                            }
                        }
                    }
                }
            }

            return $order_total_array;
        }

    Ersetze mit:

    Code: PHP  [Auswählen]
        function process() {
            $order_total_array = array ();
            if (is_array($this->modules)) {
                reset($this->modules);
                foreach ($this->modules as $value) {
                    $class = substr($value, 0, strrpos($value, '.'));
                    if ($GLOBALS[$class]->enabled) {
                        $GLOBALS[$class]->output = array();
                        $GLOBALS[$class]->process();

                        for ($i = 0, $n = sizeof($GLOBALS[$class]->output); $i < $n; $i ++) {
                            if (xtc_not_null($GLOBALS[$class]->output[$i]['title']) && xtc_not_null($GLOBALS[$class]->output[$i]['text'])) {
                                $order_total_array[] = array (
                                    'code' => $GLOBALS[$class]->code,
                                    'title' => $GLOBALS[$class]->output[$i]['title'],
                                    'text' => $GLOBALS[$class]->output[$i]['text'],
                                    'value' => $GLOBALS[$class]->output[$i]['value'],
                                    'sort_order' => ((isset($GLOBALS[$class]->output[$i]['sort_order'])) ? $GLOBALS[$class]->output[$i]['sort_order'] : $GLOBALS[$class]->sort_order)
                                    );
                            }
                        }
                    }
                }
            }

            //new module support
            $order_total_array = $this->checkoutModules->manipulate_output_array($order_total_array);

            return $order_total_array;
        }

    Finde:

    Code: PHP  [Auswählen]
        function output() {
            $output_string = '';
            if (is_array($this->modules)) {
                reset($this->modules);
                foreach ($this->modules as $value) {
                    $class = substr($value, 0, strrpos($value, '.'));
                    if ($GLOBALS[$class]->enabled) {
                        $size = sizeof($GLOBALS[$class]->output);
                        for ($i = 0; $i < $size; $i ++) {
                            $output_string .= '              <tr>'."\n".'                <td align="right" class="main">'.$GLOBALS[$class]->output[$i]['title'].'</td>'."\n".'                <td align="right" class="main">'.$GLOBALS[$class]->output[$i]['text'].'</td>'."\n".'              </tr>';
                        }
                    }
                }
            }

            return $output_string;
        }

    Ersetze mit:

    Code: PHP  [Auswählen]
        function output() {
            $output_string = '';
            if (is_array($this->modules)) {
                reset($this->modules);
                foreach ($this->modules as $value) {
                    $class = substr($value, 0, strrpos($value, '.'));
                    if ($GLOBALS[$class]->enabled) {
                        $size = sizeof($GLOBALS[$class]->output);
                        for ($i = 0; $i < $size; $i ++) {
                            $output_string .= '              <tr>'."\n".'                <td align="right" class="main">'.$GLOBALS[$class]->output[$i]['title'].'</td>'."\n".'                <td align="right" class="main">'.$GLOBALS[$class]->output[$i]['text'].'</td>'."\n".'              </tr>';
                        }
                    }
                }
            }

            //new module support
            $output_string = $this->checkoutModules->manipulate_output($output_string);

            return $output_string;
        }

    VG Bert

    Linkback: https://www.modified-shop.org/forum/index.php?topic=40975.0

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    Re: Vorschlag Klassenerweiterung ot_module
    Antwort #1 am: 15. Juni 2020, 12:52:05
    Hallo Bert,

    danke dir. :thumbs:
    Ich habe die Idee mal in Ticket #1843 festgehalten.

    Grüße

    Torsten

    snocer

    • Fördermitglied
    • Beiträge: 312
    Re: Vorschlag Klassenerweiterung ot_module
    Antwort #2 am: 15. Juni 2020, 13:16:12
    Hallo Bert,

    nicht das Du Dich vergaloppierst. Kleinunternehmer oder auch §13b dürfen keine Differenzbesteuerung anwenden.
    Nur mal so als Hinweis. Eventuell habe ich Deine vorhergehende Ausführungen auch so nicht verstanden.
    Es muss verhindert werden, das wenn einer nach §13 Kleinunternehmer Regelung berechnet, das er überhaupt Differenzbesteuerung auswählen kann.

    cu snocer

    Gulliver72

    • Mitglied
    • Beiträge: 191
    • Geschlecht:
    Re: Vorschlag Klassenerweiterung ot_module
    Antwort #3 am: 15. Juni 2020, 13:44:39
    @snocer
    was hat dein Beitrag mit der Klassenerweiterung zutun? Zumal ich beides lediglich als Anwendungsbeispiele dieser Erweiterung genannt habe.  :gotta-go:

    VG Bert

    pdfil12

    • Neu im Forum
    • Beiträge: 18
    Re: Vorschlag Klassenerweiterung ot_module
    Antwort #4 am: 27. April 2021, 13:09:29
    Probiere mich gerade an dem Differenzbesteuert Modul. Leider funktioniert dieses spezielle checkoutModul nicht, weil nirgends "MODULE_CHECKOUT_INSTALLED" definiert wird. Dort werden ja die Module aufgelsitet, die dann überschreiben sollen. Eventuell fehlt auch nur die Info.
    Trade Republic - Provisionsfrei Aktien handeln
    6 Antworten
    2802 Aufrufe
    02. Mai 2017, 21:35:49 von awids
    2 Antworten
    2920 Aufrufe
    08. April 2011, 08:49:05 von Tomcraft
    1 Antworten
    217 Aufrufe
    02. November 2023, 20:24:38 von Tomcraft
    26 Antworten
    16194 Aufrufe
    17. August 2012, 09:37:28 von NicoDeluxe
               
    anything