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: Mindermengenzuschlag, ot_loworderfee

    gisela-55

    • Neu im Forum
    • Beiträge: 31
    Mindermengenzuschlag, ot_loworderfee
    am: 08. Mai 2012, 17:31:08
    Hallo,

    ich weiss das ich nicht im sql oder php Grundkurs sitze, aber ich stelle trotzdem mal meine Frage.
    Nur nicht gleich wieder schimpfen!!!

    Also, ich habe mir gedacht das ein Aufschlag (pro Artikel) zu dem Mindermengenzuschlag mein Problem lösen könnte und habe deshalb ein Zusatzfeld in die group_prices.php geschrieben.

    Code: PHP  [Auswählen]
    <tr>
    <td style="border-top: 1px solid; border-color: #cccccc;" class="main"><?php echo Mindermengenzuschlag;?></td>
    <td style="border-top: 1px solid; border-color: #cccccc;" class="main"><?php echo xtc_draw_input_field('products_low_order_price',$pInfo->products_low_order_price);?></td>
    </tr>
     

    Die categories.php bearbeitet:

    Code: PHP  [Auswählen]
    // set pointer to last key
                    end($customers_statuses_array);        
                    for ($i = 0; $n = key($customers_statuses_array), $i < $n+1; $i ++) {
                            if (isset($customers_statuses_array[$i]['id'])) {
                                    $permission_array = array_merge($permission_array, array ('group_permission_'.$customers_statuses_array[$i]['id'] => $permission[$customers_statuses_array[$i]['id']]));
                            }
                    }
                    $sql_data_array = array (
                    'products_quantity' => xtc_db_prepare_input($products_data['products_quantity']),
                    'products_model' => xtc_db_prepare_input($products_data['products_model']),
                    'products_ean' => xtc_db_prepare_input($products_data['products_ean']),
                    'products_price' => xtc_db_prepare_input($products_data['products_price']),
    'products_low_order_price'=> xtc_db_prepare_input($products_data['products_low_order_price']),
     

    Und natürlich ein Datenbankfeld unter products mit dem Namen: products_low_order_price
    angelegt.

    Jetzt wollte ich gern in die ot_loworderfee.php einfügen:

    Code: PHP  [Auswählen]
    class ot_loworderfee {
        var $title, $output;

        function ot_loworderfee() {
            global $xtPrice;
          $this->code = 'ot_loworderfee';
          $this->title = MODULE_ORDER_TOTAL_LOWORDERFEE_TITLE;
          $this->description = MODULE_ORDER_TOTAL_LOWORDERFEE_DESCRIPTION;
          $this->enabled = ((MODULE_ORDER_TOTAL_LOWORDERFEE_STATUS == 'true') ? true : false);
          $this->sort_order = MODULE_ORDER_TOTAL_LOWORDERFEE_SORT_ORDER;

          $this->output = array();
        }

        function process() {
          global $order, $xtPrice;
             
             
             $low_order_price = .......Datenbankabfrage meiner $products_low_order_price??????????......;
             
              //xtc_db_query("SELECT products_low_order_price FROM ".TABLE_PRODUCTS." ORDER BY products_id");
         
          if (MODULE_ORDER_TOTAL_LOWORDERFEE_LOW_ORDER_FEE == 'true') {
            switch (MODULE_ORDER_TOTAL_LOWORDERFEE_DESTINATION) {
              case 'national':
                if ($order->delivery['country_id'] == STORE_COUNTRY) $pass = true; break;
              case 'international':
                if ($order->delivery['country_id'] != STORE_COUNTRY) $pass = true; break;
              case 'both':
                $pass = true; break;
              default:
                $pass = false; break;
            }      
                   
            if ( ($pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) < MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER) ) {
              $tax = xtc_get_tax_rate(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, $order->delivery['country']['id'], $order->delivery['zone_id']);
              $tax_description = xtc_get_tax_description(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, $order->delivery['country']['id'], $order->delivery['zone_id']);
             

                    if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) {
                      $order->info['tax'] += xtc_calculate_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax);
              $order->info['tax_groups'][TAX_ADD_TAX . "$tax_description"] += xtc_calculate_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax);
              $order->info['total'] += MODULE_ORDER_TOTAL_LOWORDERFEE_FEE + xtc_calculate_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax) + $low_order_price;
              $low_order_fee=xtc_add_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax) + $low_order_price;
            }

    Das klappt allerdings nicht, weil ich nicht weiss wie ich die Abfrage schreiben muß um meine Variable
    $products_low_order_price aus meiner Datenbank zu bekommen! Es muß ja auch jeder Artikel beachtet werden. Also wahrscheinlich auch die products_id abgefragt werden. Oder?

    (Ich hoffe, ich schreib hier nicht den ober Mist. Denkt bitte dran ich bin Anfänger.)

    Kann mir jemand einen Tip geben???

    Gruß...

    Linkback: https://www.modified-shop.org/forum/index.php?topic=19913.0
    Trade Republic - Provisionsfrei Aktien handeln

    gisela-55

    • Neu im Forum
    • Beiträge: 31
    Re: Mindermengenzuschlag, ot_loworderfee
    Antwort #1 am: 11. Mai 2012, 18:29:55
    Hat denn niemand Zeit und Lust drüber zu schauen?

    Gruß...

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Mindermengenzuschlag, ot_loworderfee
    Antwort #2 am: 11. Mai 2012, 19:52:30
    Hallo Gisela,

    in der function process() kannst Du mit folgenden Code die Produkt Ids ermitteln und damit die Daten aus der Produkttabelle ziehen

    Code: PHP  [Auswählen]
        foreach ($order->products as $product) {      
          $product_id = $product['id'];      
          //Mit der Produkt ID kann die Tabelle products abgefragt werden
        }

    Die Queryabfrage solltest Du selber hinbekommen. Und in der foreach Schleife dann alles nach Wunsch programmieren.

    Gruss Web28

    gisela-55

    • Neu im Forum
    • Beiträge: 31
    Re: Mindermengenzuschlag, ot_loworderfee
    Antwort #3 am: 13. Mai 2012, 14:23:34
    Hallo,

    danke für Deine Antwort. Das haut ja gut hin mit den Daten die in der Order drin sind, allerdings bekomme ich meine neue Datenbankspalte "products_low_order_price" nicht ausgelesen!

    Diese muss doch in die order.php übernommen werden oder liege ich da verkehrt!?
    Leider weiss ich nicht wie...

    Ich habe mal mit dem Artikelgewicht getestet (weil ich dieses sonst nicht benötige). Allerdings ist dort das Problem das ich nur das Gewicht des letzten Artikels ausgegeben bekomme und nicht das Gesamtgewicht von allen Artikeln die sich im Warenkorb befinden.

    Hast Du vielleicht nochmal einen Denkanstoß für mich???

    Gruß...

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Mindermengenzuschlag, ot_loworderfee
    Antwort #4 am: 13. Mai 2012, 14:39:39
    Mit der Schleife wird jeder Artikel der Bestellung abgefragt

    Für das neue Feld products_low_order_price musst eine neue Query Abfrage für die Tabelle products machen. Das Ergebnis musst Du dann nach Wunsch verarbeiten (z.B. aufaddieren).

    Gruss Web28

    gisela-55

    • Neu im Forum
    • Beiträge: 31
    Re: Mindermengenzuschlag, ot_loworderfee
    Antwort #5 am: 14. Mai 2012, 19:18:05
    Hallo,

    leider bekomme ich das nicht geregelt mit der Query Abfrage. Ich bin mir nicht mal sicher, ob die Abfrage in die order.php muss.
    Also falls noch jemand einen Tip hat! Gern her damit ;)...

    Und für alle die es vielleicht gebrauchen können oder einfach mal drüber sehen wollen, hier ein kleiner Auszug aus meiner ot_loworderfee.php!

    Code: PHP  [Auswählen]
           
        function process() {
          global $order, $products, $xtPrice;
                   
          if (MODULE_ORDER_TOTAL_LOWORDERFEE_LOW_ORDER_FEE == 'true') {
            switch (MODULE_ORDER_TOTAL_LOWORDERFEE_DESTINATION) {
              case 'national':
                if ($order->delivery['country_id'] == STORE_COUNTRY) $pass = true; break;
              case 'international':
                if ($order->delivery['country_id'] != STORE_COUNTRY) $pass = true; break;
              case 'both':
                $pass = true; break;
              default:
                $pass = false; break;
            }        
             
           if ( ($pass == true) && ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) ) {

            foreach ($order->products as $product) {
          $low_order_fee += $product['weight'];      
          //Mit der Produkt ID kann die Tabelle products abgefragt werden
        }
           if ( ($low_order_fee < 1) && ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) ) {
             $this->enabled = false;
        }
           if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) {
                      $order->info['tax'] += xtc_calculate_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax);
              $order->info['tax_groups'][TAX_ADD_TAX . "$tax_description"] += xtc_calculate_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax);
              $order->info['total'] += MODULE_ORDER_TOTAL_LOWORDERFEE_FEE + xtc_calculate_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax) + $low_order_fee;
              $low_order_fee=xtc_add_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax) + $low_order_fee;
            }      
            }

              $this->output[] = array('title' => $this->title . ':',
                                      'text' => $xtPrice->xtcFormat($low_order_fee, true),
                                      'value' => $low_order_fee);
           
          }
        }
           

    Ich habe jetzt das Artikelgewicht angezapft (da ich dies sonst nicht benutze) und trage dort in jedem Artikel bei Gewicht meinen Mindermengenzuschlag ein.

    Somit wird jetzt bei allen Artikeln im Warenkorb mit Mindermengenzuschlag (Gewicht) der eingetragene Wert ausgeben und addiert.

    Ist keiner dieser Artikel im WK, wird kein Mindermengenzuschlag angezeigt!

    Vielleicht kann ja noch jemand etwas damit anfangen.

    Falls noch jemand einen Tip hat zu der Query Abfrage könnte man die Sache natürlich sehr viel besser gestalten!

    Danke nochmal an Web28...

    Gruß Gisela
    Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
    4 Antworten
    5535 Aufrufe
    10. Juli 2015, 14:17:12 von noRiddle (revilonetz)
    8 Antworten
    4886 Aufrufe
    14. Mai 2015, 19:00:58 von Nils
    0 Antworten
    2111 Aufrufe
    09. März 2012, 11:48:33 von thomas673