Staffelpreise - Darstellung, 1-19; 20-49;50-99; 100-199; usw.

Thema wurde von jochenb, 8. November 2018 erstellt.

  1. jochenb

    jochenb Neues Mitglied

    Registriert seit:
    7. September 2018
    Beiträge:
    2
    Danke erhalten:
    0
    Danke vergeben:
    1
    Hallo, ihr kenndas bestimmt alle.
    Ihr wollt Staffelpreise erstellen und Gambio erscheint dann diese seltsame Staffelpreisansicht:

    1-19; 20-49;50-99; 100-199; usw.

    Geht bitte in den Ordner Includes/classes

    und sucht euch die Datei product.php raus

    Ladet diese Datei per ftp z.B. fillezilla runter und öffnet sie mit einem Editor.

    Ich persönlich benutze den kostenlosen Notepad ++ Editor


    Geht nun in den Bereich der Zeilen 677 – 699 bzw. kopiert folgenden Code dort hinein

    Die Zeile 698 wurde neu hinzugefügt - ist aber bereits so u sehen. - ihr müsst nichts ändern.
    Wie ihr seht ist die Zeile 677 //HEIKO geändert/auskommentiert - bis 696 auskommentiert //ENDE HEIKO
    Zeile 698 wie bereits erwähnt eingefügt.

    Das aber nur zur Info:
    Kopiert einfach die Zeilen in die Datei an die richtige Stelle und dann sollte es gehen.
    Macht Euch aber bitte immer eine Sicherheitskopie der original product.php bzw. benennt diese um z.B. in product_org.php, damit ihr sie notfals wieder herstellen könnt.
    Ihr müsst den Admin bereich verlassen oder einen anderen Browser sehen, damit ihr die Änderungen seht, eventuell auch den Cache leeren.
    Ich würde mich über eure Rückmeldung freuen.
    Vielen Dank an meinen Buddy Heiko, der dies für mich gemacht hat.

    Hier der einzufügende Code :

    //HEIKO geändert/auskommentiert
    //if(isset($staffel[$i + 1]['stk']))
    //{
    //if((double)$staffel[$i + 1]['stk'] - (double)$this->data['gm_graduated_qty'] > $quantity)
    //{
    // $quantity_output = gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']) . ' - ' . gm_prepare_number(($staffel[$i + 1]['stk'] - (double)$this->data['gm_graduated_qty']), $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
    //}
    //elseif((double)$staffel[$i + 1]['stk'] - (double)$this->data['gm_graduated_qty'] == $quantity)
    //{
    // $quantity_output = 'ab '.gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
    //}
    //$quantity_output = 'ab '.gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);

    //}
    //else
    //{
    // $quantity -= (double)$this->data['gm_graduated_qty'];
    // $quantity_output = '> ' . gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
    //}
    // ENDE HEIKO geändert/auskommentiert
    //nächste zeile ist von HEIKO
    $quantity_output = 'ab '.gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
    //ENDE HEIKO
     

    Anhänge:

  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Willkommen im Forum.

    zunächst ist es schön, dass Du Deine Lösung hier postest ;)
    Aber:
    1. Du hast für den Code keine Code-Box benutzt. Das kann zur Folge haben, dass beim Kopieren unerwünschter Quellcode oder Leerzeichen mit kopiert werden, die dann zu Fehlermeldungen führen.
    Außerdem ist es in der Box besser lesbar.
    Die Box findest Du, wenn du auf das kleine "+" im Kästchen klickst.
    Zum Vergleich eine Zeile so:
    // $quantity -= (double)$this->data['gm_graduated_qty'];
    und in der Box:
    PHP:
    // $quantity -= (double)$this->data['gm_graduated_qty'];

    2. Beim nächsten Update fängst Du wieder an die Änderung zu machen, zumindest wenn die Datei im Update überschrieben wird. :)
    Das geht auch Updatesicher.
    Mehr dazu findest Du hier:
    (Link nur für registrierte Nutzer sichtbar.)

    Und als Tipp, falls Du das nicht alleine Update-scher hin bekommst:
    Kai Stejuhn hat etwas ähnliches freundlicherweise als Gratismodul auf seiner Seite:
    (Link nur für registrierte Nutzer sichtbar.)
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Februar 2016
    Beiträge:
    394
    Danke erhalten:
    92
    Danke vergeben:
    44
    Du kannst auch folgenden Code nehmen:

    Code:
    <?php
    
    class staffel_product extends staffel_product_parent
    
    {
    function getGraduated()
        {
            global $xtPrice;
    
            $staffel_data = array();
    
            if($xtPrice->xtcCheckSpecial($this->pID) == 0)
            {
                $staffel_query = xtDBquery("SELECT
                                                             quantity,
                                                             personal_offer
                                                             FROM
                                                             " . TABLE_PERSONAL_OFFERS_BY . (int)$_SESSION['customers_status']['customers_status_id'] . "
                                                             WHERE
                                                             products_id = '" . $this->pID . "'
                                                             ORDER BY quantity ASC");
                //Avenger start
        $customers_status=(int) $_SESSION['customers_status']['customers_status_id'];
        if ($customers_status==0)
        {
          $customers_status=DEFAULT_CUSTOMERS_STATUS_ID_GUEST;
        }
            $staffel_query = xtDBquery("SELECT
                                                         quantity,
                                                         personal_offer
                                                         FROM
                                                         ".TABLE_PERSONAL_OFFERS_BY.$customers_status."
                                                         WHERE
                                                         products_id = '".$this->pID."'
                                                         ORDER BY quantity ASC");
            //Avenger ende
    
                $staffel = array();
                while($staffel_values = xtc_db_fetch_array($staffel_query, true))
                {
                    $staffel[] = array('stk' => (double)$staffel_values['quantity'], 'price' => (double)$staffel_values['personal_offer']);
                }
    
                for($i = 0, $n = sizeof($staffel); $i < $n; $i ++)
                {
                    // BOF GM_MOD
                    $quantity_output = '';
    
                    $quantity = (double)$staffel[$i]['stk'];
    
                    if($quantity < (double)$this->data['gm_min_order'])
                    {
                        $quantity = (double)$this->data['gm_min_order'];
                    }
    
                    if(isset($staffel[$i + 1]['stk']))
                    {
                        if((double)$staffel[$i + 1]['stk'] - (double)$this->data['gm_graduated_qty'] > $quantity)
                        {
                            $quantity_output = gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']) . '-' . gm_prepare_number(($staffel[$i + 1]['stk'] - (double)$this->data['gm_graduated_qty']), $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
                        }
                        elseif((double)$staffel[$i + 1]['stk'] - (double)$this->data['gm_graduated_qty'] == $quantity)
                        {
                            $quantity_output = gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
                        }
                    }
                    else
                    {
                        $quantity -= (double)$this->data['gm_graduated_qty'];
    //                    $quantity_output = '> ' . gm_prepare_number($quantity, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
                        $quantity_output = 'ab ' . gm_prepare_number($quantity + 1, $xtPrice->currencies[$_SESSION['currency']]['decimal_point']);
                    }
    
                    $vpe = '';
    
                    if($this->data['products_vpe_status'] == 1 && $this->data['products_vpe_value'] != 0.0 && $staffel[$i]['price'] > 0)
                    {
                        $vpe = $staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount;
                        $vpe = $vpe * (1 / $this->data['products_vpe_value']);
                    }
    
                    require_once (DIR_FS_INC . 'xtc_get_vpe_name.inc.php');
    
                    if($quantity_output != '')
                    {
                        if($vpe)
                        {
                            $staffel_data[$i] = array('QUANTITY' => $quantity_output,
                                'VPE' => trim($xtPrice->xtcFormat($vpe, true, $this->data['products_tax_class_id']) . TXT_PER . xtc_get_vpe_name($this->data['products_vpe'])),
                                'PRICE' => $xtPrice->xtcFormat($staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount, true, $this->data['products_tax_class_id']),
                                'UNIT' => $this->data['unit_name']);
                        }
                        else
                        {
                            $staffel_data[$i] = array('QUANTITY' => $quantity_output,
                                'VPE' => $vpe,
                                'PRICE' => $xtPrice->xtcFormat($staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount, true, $this->data['products_tax_class_id']),
                                'UNIT' => $this->data['unit_name']);
                        }
                    }
                    // EOF GM_MOD
                }
            }
            return $staffel_data;
        }
    }
    Die Datei benennst Du staffel_product.inc.php und packst diese in den Ordner GXUserComponents/overloads/product/

    Vorteil hier ist noch, das Du als Admin auch die Stafelpreise jetzt sehen kannst und hast das "ab" davor.

    Funktioniert seit Jahren trotz Updates sehr gut bei uns bis jetzt;-)
     
  4. Anonymous

    Anonymous Mitglied

    Registriert seit:
    8. August 2017
    Beiträge:
    5
    Danke erhalten:
    0
    Danke vergeben:
    2
    Hi Leute ich möchte dass die Staffelpreise nicht angezeigt werden, weil es unschön ist ein langen Balken zu betrachten. Wo kann ich diese Box deaktivieren ohne dass es Darstellung Probleme gibt.

    Für jede Antwort ein großes Danke.
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Was ist ein "langer Balken"?
    Staffelpreise legt man eigentlich an, um Kunden zum Kauf von mehr Artikeln zu animieren.
    Das funktioniert aber nur, wenn der Kunde die Staffeln auch sieht.

    Du kannst in der Kundengruppe jeweils die Staffelpreise aktivieren oder deaktivieren.
    Werden keine Staffelpreise angezeigt, werden auch keine Berechnet. - da könnte man sich das Anlegen auch sparen :)
     
  6. Anonymous

    Anonymous Mitglied

    Registriert seit:
    8. August 2017
    Beiträge:
    5
    Danke erhalten:
    0
    Danke vergeben:
    2
    #6 Anonymous, 29. Juni 2019
    Zuletzt bearbeitet: 29. Juni 2019
    Der Kunde bekommt die Info bei der Artikelbeschreibung dass es Staffelpreise gibt und in welche Menge als Tafel. Es soll nur nicht in Warenkorb angezeigt werden als so ein rissiger Balken.

    Natürlich soll ein Berechnung Staat finden. Meine Staffelpreise gehen bis 1000 st. mit ein Staffelung von 5. Dass geht über den Footer hinaus.

    Im Inspektor von Mozilla sehe ich das es ein Box ist nur als CSS, aber ich finde die Datei nicht.
     
  7. Anonymous

    Anonymous Mitglied

    Registriert seit:
    8. August 2017
    Beiträge:
    5
    Danke erhalten:
    0
    Danke vergeben:
    2
    Ich muss leider los, würde mich freuen wenn jemand mir helfen kann Danke im Voraus
     
  8. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    #8 barbara, 29. Juni 2019
    Zuletzt bearbeitet: 30. Juni 2019
    Das müsste der Block in der tempaltes/Honeygrid/module/product_info/standard.html sein:
    HTML:
    {block name="module_product_info_standard_sticky_box_graduated_price_if"}
                                                {if $MODULE_graduated_price != '' && $QUANTITY}
                                                    {block name="module_product_info_standard_sticky_box_graduated_price"}
                                                        {$MODULE_graduated_price}
                                                    {/block}
                                                {/if}
                                            {/block}
    Ich weiß aber nicht, ob die Berechnung noch geht, wenn man das weg nimmt.
     
  9. Anonymous

    Anonymous Mitglied

    Registriert seit:
    8. August 2017
    Beiträge:
    5
    Danke erhalten:
    0
    Danke vergeben:
    2
    Vieleeen Dank ich werde das mal ausprobieren.
     
  10. Anonymous

    Anonymous Mitglied

    Registriert seit:
    8. August 2017
    Beiträge:
    5
    Danke erhalten:
    0
    Danke vergeben:
    2
    Barbara du bist einfach spitze und ich bin unsagbar froh und dankbar dass es dich gibt.
    ES FUNKTIONIERT

    Danke vielmals!!
     
  11. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Dann solltest Du das Updatesicher umsetzten, z.B. über die Smarty-Blöcke.
    Weißt Du wie das geht?
     
  12. ChristianS

    ChristianS Mitglied

    Registriert seit:
    10. März 2015
    Beiträge:
    22
    Danke erhalten:
    0
    Danke vergeben:
    14
    Hallo,

    ich möchte das Thema nochmal aufgreifen.
    Wie mache ich das mit der Anzeige wie in dem Bild im ersten Beitrag mit Shopversion 4.03?
    Ich habe den Code von wie von Charon beschrieben eingebaut. Passiert ist leider nichts.
     
  13. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    GXUserComponents wird nicht mehr genommen
    Dass muss jetzt in
    GXModules/DeinName/Stafflepreise/Shop/Overloads/
     
  14. ChristianS

    ChristianS Mitglied

    Registriert seit:
    10. März 2015
    Beiträge:
    22
    Danke erhalten:
    0
    Danke vergeben:
    14
    Hallo Barbara,

    danke für deine Antwort.
    Das habe ich getan. Die Datei liegt in GXModules/..../Staffelpreis/Shop/Overloads/product/

    im Code habe ich auch

    class staffel_product extends staffel_product_parent
    durch
    class ks_overload_product extends product_parent ersetzt nachdem eine Fehlermeldung kam, dass es keine staffel_product findet.

    Geht leider auch nicht.
     
  15. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    KS gehört zu einem Modul von Kai Stejuhn.
    Das hat nichts mit der oben genannten Datei zu tun, es sei denn, dass es die selbe Datei überlädt

    Hast Du da ein Modul, was auf die Datei geht?
     
  16. ChristianS

    ChristianS Mitglied

    Registriert seit:
    10. März 2015
    Beiträge:
    22
    Danke erhalten:
    0
    Danke vergeben:
    14
    Nee, die Datei / das Verzeichniss kommt wohl von einer anderen Installation, bei welcher ich die Dateien vom Shop beim einspielen eines Backups eines anderen Testshops mit übernommen habe.
    Dort ist die Anzeige aber auch nicht wie gewünscht. Habe mich vorhin schon gewundert warum in dem Verzeichniss schon eine Datei ist :)
     
  17. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Manchmal sollte man aufräumen :)

    Willst Du das "Ab" davor oder die Staffeln als Admin sehen (geht nur bei den Staffeln der Kundengruppe "Gast")?
     
  18. ChristianS

    ChristianS Mitglied

    Registriert seit:
    10. März 2015
    Beiträge:
    22
    Danke erhalten:
    0
    Danke vergeben:
    14
    Guten Morgen.
    Ich hätte gerne vor jeder Staffel "ab" - wie im Bild des Threaderstellers.
    Bombe wäre natürlich noch ein "ab vor dem angezeigten Preis und hier statt der ersten Preisstaffel den niedrigsten aus der Staffel zu nehmen, - wenn es denn eine Staffelung gibt. Haben ja nicht alle Artikel :)
    Als Admin sehe ich die Staffelpreise. Die bekommen bei uns alle Kundengruppen angezeigt.
     
  19. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Dann hast Du schon eine Anpassung dafür, denn im Standard sieht der Admin keinen Staffelpreis, und deshalb geht das andere nicht. Das müsstest Du zusammenführen (lassen)
     
  20. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    6. Dezember 2016
    Beiträge:
    359
    Danke erhalten:
    211
    Danke vergeben:
    156
    Ich habe es für mich etwas überarbeitet. Wenn es jemand gebrauchen kann.
    Die Datei entzippen und in GXModules/Eigenes/ kopieren. Dann Cache leeren.

    screen0.png

    Bei der letzten Staffel steht jetzt "ab" statt ">" und die Staffelpreise haben eine CSS-Klassen zum Stylen bekommen.
    So kann z.B. der Preis fett gestellt werden und der VPE-Preis in eine neue Zeile gelegt werden.
    Die css-Datei liegt auch in dem Ordner. Den Code könnt ihr auch im SE ins eigene css kopieren. Dann aber den Ordner Css aus GXModule löschen.

    screen1.png screen2.png screen3.png

    Funktioniert bei mir unter der Version 4.4.0.3 im Honeygrid-Theme und Malibu prima.

    Viel Spaß beim Probieren
     

    Anhänge: