Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Payment Type Discount Modul

  1. #1
    Jedi-Ritter Avatar von webchills
    Registriert seit
    30.10.2004
    Ort
    Österreich
    Beiträge
    6.092
    Themen
    85
    DANKE
    3
    Erhaltene Danke: 961

    Standard Payment Type Discount Modul

    Hi,
    im Downloadbereich gibt es ja das Payment Type Discount Modul, wo man für verschiedene Zahlungsarten entweder Rabatte oder Zusatzgebühren verrechnen kann. Das geht immer nur prozentuell, habe auch auf zen-cart.com nichts anderes gefunden.
    Kennt wer eine Möglichkeit das Modul auf absolute Werte umzustellen?
    So dass man z.B. für Kreditkartenzahlung fix eine bestimmte handling fee festlegen kann?
    Grüße
    webchills
    !!! kostenloser Support ausschließlich im Forum - Nicht per Email, nicht per Telefon und nicht per PM !!!

  2. #2
    Padawan Stufe VIII Avatar von Lissy73
    Registriert seit
    27.09.2006
    Ort
    Rheinland-Pfalz
    Beiträge
    996
    Themen
    95
    DANKE
    0
    Erhaltene Danke: 2

    Standard

    Also ich muß passen, da ich das Modul garnicht kenne!

    Vielleicht weiß jemand rat, der dies auch verwendet!

    Gruß
    Lissy
    Gruß
    Lissy

    *****************************

    ZenCart Version 1.3.7 sowie ZC 1.3.8

    Apache/2.0.54 (Debian GNU/Linux) mod_ssl/2.0.54 OpenSSL/0.9.7e

  3. #3
    Jedi-Ritter Avatar von MaleBorg
    Registriert seit
    17.05.2006
    Beiträge
    3.043
    Themen
    30
    DANKE
    5
    Erhaltene Danke: 82

    Standard

    Ich wverwende es zwar nicht, aber wenn ich so in den Code schau der Datei ot_payment.php tippe ich mal auf Zeile 68

    $od_amount = round($amount*10)/10*$od_pc/100;

    Versuch mal bitte die obige Zeile durch diese zu ersetzen

    $od_amount = $amount+$od_pc;

    und poste bitte das Ergebnis.

    Gruß
    MaleBorg

  4. #4
    Jedi-Ritter Avatar von webchills
    Registriert seit
    30.10.2004
    Ort
    Österreich
    Beiträge
    6.092
    Themen
    85
    DANKE
    3
    Erhaltene Danke: 961
    Erstellt von

    Standard

    Danke für den Tipp MaleBorg. Funkt aber leider nicht. Wenn ich die Zeile entsprechend ändere wird gar kein Discount mehr berechnet oder ausgewiesen.
    Ich verwende ein erweitertes Modul von zencartbuilder.com, mit dem man nicht nur eine Ermäßigung sondern auch eine Gebühr für die verschiedenen Zahlungsarten einstellen kann. Bei der normalen ot_payment.php geht nur ein Discount.
    Leider ist aber auch mit der erweiterten nur eine prozentuelle Angabe möglich.
    Ich poste hier mal die ot_payment_type.php um die es geht:
    Code:
    <?php
    class ot_payment_type
    {
      var $title, $output;
    
      function ot_payment_type()
      {
        $this->code = 'ot_payment_type';
        $this->title = MODULE_PAYMENT_TYPE_DESCRIPTION;
        $this->description = sprintf(MODULE_PAYMENT_TYPE_TITLE, MODULE_PAYMENT_TYPE_DESCRIPTION_FEE . '/' . MODULE_PAYMENT_TYPE_DESCRIPTION_DISC);
        $this->enabled = MODULE_PAYMENT_TYPE_STATUS;
        $this->sort_order = MODULE_PAYMENT_TYPE_SORT_ORDER;
        $this->include_shipping = MODULE_PAYMENT_TYPE_INC_SHIPPING;
        $this->include_tax = MODULE_PAYMENT_TYPE_INC_TAX;
        $this->fee_maximum = (float)MODULE_PAYMENT_TYPE_FEE_MAXIMUM;
        $this->disc_minimum = (float)MODULE_PAYMENT_TYPE_DISC_MINIMUM;
        $this->calculate_tax = MODULE_PAYMENT_TYPE_CALC_TAX;
        $this->operator = 'none';
        $this->output = array();
      }
    
      function process()
      {
        global $order, $currencies;
    
        $delta = $this->calculate($this->get_order_total());
        if ($delta > 0)
        {
          $this->output[] = array('title' => $this->title,
                                  'text' => $this->operator . $currencies->format($delta),
                                  'value' => $delta);
    	    $order->info['total'] = $this->add_subtract($order->info['total'], $delta);
    		}
      }
    
    
      function calculate($amount)
      {
        global $order, $customer_id;
        $delta = 0;
        
        // check for fee
        $table = split("[,]", MODULE_PAYMENT_TYPE_FEE_TYPES);
        for ($i = 0, $j = count($table); $i < $j; $i++)
        {
          if ($_SESSION['payment'] == $table[$i])
            $this->operator = '+';// fee
        }
        
        // check for discount - if dupe, pass without anything
        $table = split("[,]", MODULE_PAYMENT_TYPE_DISC_TYPES);
        for ($i = 0, $j = count($table); $i < $j; $i++)
        {
          if ($_SESSION['payment'] == $table[$i])
          {
            if ($this->operator == 'none')
            {
              $this->operator = '-';// discount
            }
            else
            {
              $this->operator = 'none';
          }
        }
        }
        
        // set required vars for each type
        $process = false;
        switch ($this->operator)
        {
          case '+':// fee
            if ($order->info['total'] < $this->fee_maximum)
            {
              $this->percentage = (zen_not_null(MODULE_PAYMENT_TYPE_FEE_PERCENTAGE) ? (float)MODULE_PAYMENT_TYPE_FEE_PERCENTAGE : 0);
              $this->title = sprintf((defined('MODULE_PAYMENT_TYPE_TITLE_CHECKOUT') ? MODULE_PAYMENT_TYPE_TITLE_CHECKOUT : MODULE_PAYMENT_TYPE_TITLE), MODULE_PAYMENT_TYPE_DESCRIPTION_FEE);
              $process = true;
            }
            break;
          case '-':// disc
            if ($order->info['total'] > $this->disc_minimum)
            {
              $this->percentage = (zen_not_null(MODULE_PAYMENT_TYPE_DISC_PERCENTAGE) ? (float)MODULE_PAYMENT_TYPE_DISC_PERCENTAGE : 0);
              $this->title = sprintf((defined('MODULE_PAYMENT_TYPE_TITLE_CHECKOUT') ? MODULE_PAYMENT_TYPE_TITLE_CHECKOUT : MODULE_PAYMENT_TYPE_TITLE), MODULE_PAYMENT_TYPE_DESCRIPTION_DISC);
              $process = true;
            }
            break;
          default:
            // pass - no fee/disc
        }
        
        if ($process && $this->enabled == 'true')
        {
          // calculate percentage amount of total order
          $delta = round($amount, 2) * ($this->percentage / 100);// percentage of total order
          
    	    if ($this->calculate_tax == 'true')
    	    {
    				// update ot tax to include fee/disc
    	      $tax_delta = round($order->info['tax'], 2) * ($this->percentage / 100);
    	      $order->info['tax'] = $this->add_subtract($order->info['tax'], $tax_delta);
    	      
    				// update ot tax group to include fee/disc
    	      reset($order->info['tax_groups']);
    	      while (list($key, $value) = each($order->info['tax_groups']))
    	      {
    	        $tax_group_delta = round($value, 2) * ($this->percentage / 100);
    	        $order->info['tax_groups'][$key] = $this->add_subtract($order->info['tax_groups'][$key], $tax_group_delta);
    	      }
    	      // add tax percentage amount to total - add/subtract performed in process method 
    	      $delta = $delta + $tax_delta;
    	    }
        }
        return $delta;
      }
      
      function add_subtract($a, $b)
      {
        if ($this->operator == '+')
          return $a + $b;// fee
        
        if ($this->operator == '-')
          return $a - $b;// disc
      }
    
      function get_order_total()
      {
        global  $order, $db;
        $order_total = $order->info['total'];
        // Check if gift voucher is in cart and adjust total
        if (is_object($_SESSION['cart']))
        {
          $products = $_SESSION['cart']->get_products();
          for ($i = 0, $j = sizeof($products); $i < $j; $i++)
          {
            $t_prid = zen_get_prid($products[$i]['id']);
            $gv_result = $db->Execute("select products_price, products_tax_class_id, products_model from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
            if (ereg('^GIFT', addslashes($gv_result->fields['products_model'])))
            {
              $qty = $_SESSION['cart']->get_quantity($t_prid);
              $products_tax = zen_get_tax_rate($gv_result->fields['products_tax_class_id']);
              if ($this->include_tax == 'false')
              {
                $gv_amount = $gv_result->fields['products_price'] * $qty;
              }
              else
              {
                $gv_amount = ($gv_result->fields['products_price'] + zen_calculate_tax($gv_result->fields['products_price'], $products_tax)) * $qty;
              }
              $order_total = $order_total + $gv_amount;
            }
          }
        }
        if ($this->include_tax == 'false')
          $order_total = $order_total - $order->info['tax'];
        if ($this->include_shipping == 'false')
          $order_total = $order_total - $order->info['shipping_cost'];
        // echo $order_total.' + order total
    ';
        return $order_total;
      }
    
      function check()
      {
      global $db;
        if (!isset($this->check))
        {
          $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_TYPE_STATUS'");
          $this->check = $check_query->RecordCount();
        }
        return $this->check;
      }
    
      function keys()
      {
        return array('MODULE_PAYMENT_TYPE_STATUS', 'MODULE_PAYMENT_TYPE_SORT_ORDER', 'MODULE_PAYMENT_TYPE_DISC_PERCENTAGE', 'MODULE_PAYMENT_TYPE_FEE_PERCENTAGE', 'MODULE_PAYMENT_TYPE_DISC_MINIMUM', 'MODULE_PAYMENT_TYPE_FEE_MAXIMUM', 'MODULE_PAYMENT_TYPE_FEE_TYPES', 'MODULE_PAYMENT_TYPE_DISC_TYPES', 'MODULE_PAYMENT_TYPE_INC_SHIPPING', 'MODULE_PAYMENT_TYPE_INC_TAX', 'MODULE_PAYMENT_TYPE_CALC_TAX');
      }
    
      function install()
      {
      global $db;
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Module Enabled?', 'MODULE_PAYMENT_TYPE_STATUS', 'false', 'Do you want to enable the Payment Type Discount/Fee module?', '6', '1','zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_PAYMENT_TYPE_SORT_ORDER', '220', 'Sort order of display.', '6', '2', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Include Shipping', 'MODULE_PAYMENT_TYPE_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '5', 'zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Include Tax', 'MODULE_PAYMENT_TYPE_INC_TAX', 'false', 'Include Tax in calculation.', '6', '6','zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Discount Percentage', 'MODULE_PAYMENT_TYPE_DISC_PERCENTAGE', '1.50', 'Amount of discount (percentage).', '6', '7', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Fee Percentage', 'MODULE_PAYMENT_TYPE_FEE_PERCENTAGE', '2.50', 'Amount of fee (percentage).', '6', '7', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function ,date_added) values ('Calculate Tax', 'MODULE_PAYMENT_TYPE_CALC_TAX', 'true', 'Re-calculate Tax on discount/fee-included amount?', '6', '5','zen_cfg_select_option(array(\'true\', \'false\'), ', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Minimum Discounted Order Total', 'MODULE_PAYMENT_TYPE_DISC_MINIMUM', '50', 'Minimum order amount for application of discount', '6', '2', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Maximum Charged Order Total', 'MODULE_PAYMENT_TYPE_FEE_MAXIMUM', '2000', 'Maximum order amount for addition of fee', '6', '2', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Discounted Payment Type(s)', 'MODULE_PAYMENT_TYPE_DISC_TYPES', 'moneyorder', 'Payment Type(s) to apply discount to.
    (Use payment class name - Eg. bankdeposit,moneyorder)', '6', '2', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Charged Payment Type(s)', 'MODULE_PAYMENT_TYPE_FEE_TYPES', 'paypal,cc', 'Payment Type(s) to apply fee to.
    (Use payment class name - Eg. cc,paypal)', '6', '2', now())");
      }
    
      function remove()
      {
      global $db;
        $keys = '';
        $keys_array = $this->keys();
        for ($i=0; $i<sizeof($keys_array); $i++)
        {
          $keys .= "'" . $keys_array[$i] . "',";
        }
        $keys = substr($keys, 0, -1);
    
        $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")");
      }
    }
    ?>
    !!! kostenloser Support ausschließlich im Forum - Nicht per Email, nicht per Telefon und nicht per PM !!!

  5. #5
    Jedi-Ritter Avatar von MaleBorg
    Registriert seit
    17.05.2006
    Beiträge
    3.043
    Themen
    30
    DANKE
    5
    Erhaltene Danke: 82

    Standard

    Hmm, also ich habe jetzt mehrfach versucht das hier im Download vorhandene Modul von 2006 zu installieren. Leider spuckt es mir immer nur eine Fehlermeldung aus.

    Habe sie zwar wegbekommen, aber irgendwie zeigt der keinen Rabatt für die Zahlungsart an. Dadurch wird natürlich das Testen und Knobeln unmöglich.

    In dem obigen Modul tippe ich mal auf diese Zeile. Jedefalls spricht der Kommentar dafür:

    // calculate percentage amount of total order
    $delta = round($amount, 2) * ($this->percentage / 100);// percentage of total order

    Versuch dort mal

    // calculate percentage amount of total order
    $delta = $this->percentage;// percentage of total order

    Gruß
    MaleBorg

  6. #6
    Jedi-Ritter Avatar von webchills
    Registriert seit
    30.10.2004
    Ort
    Österreich
    Beiträge
    6.092
    Themen
    85
    DANKE
    3
    Erhaltene Danke: 961
    Erstellt von

    Standard

    Hi MaleBorg,
    super, das wars!
    Danke!
    webchills
    !!! kostenloser Support ausschließlich im Forum - Nicht per Email, nicht per Telefon und nicht per PM !!!

  7. #7
    Padawan Stufe II Avatar von yps
    Registriert seit
    13.11.2007
    Beiträge
    98
    Themen
    30
    DANKE
    0
    Erhaltene Danke: 0

    Standard

    Leider funktioniert das Modul bei mir auch nicht. Es kommt immer diese Fehlermeldung:
    Fatal error: Cannot use object of type queryFactoryResult as array in /...shop/includes/modules/order_total/ot_payment.php on line 88


    Ich würde gerne auf Vorauskasse Skonto geben aber leider funktioniert das Modul nicht mehr. Ich verwende Zen cart 1.3.7.

    Lg yps

  8. #8
    Padawan Stufe II Avatar von yps
    Registriert seit
    13.11.2007
    Beiträge
    98
    Themen
    30
    DANKE
    0
    Erhaltene Danke: 0

    Standard

    Zeile 88 ersetzen mit
    Code:
    if (ereg('^GIFT', addslashes($gv_result->fields['products_model']))) {
    Der Fehler ist weg aber es wird einfach nix abgezogen .

    Vielleicht hilft es noch jemanden:

    Das Modul von Peter Anastos scheint das richtige zu sein: Surcharge Fee by Payment Method Order Total Module
    http://www.zen-cart.com/index.php?ma...oducts_id=1078

    einfach bei den % Aufschlag ein - davor setzen und schon wird es abgezogen. Auf den ersten Blick scheint es richtig zu arbeiten .

    (Achtung dt. Sprachdatei fehlt)

    Lg yps

  9. #9
    Jedi-Ritter Avatar von webchills
    Registriert seit
    30.10.2004
    Ort
    Österreich
    Beiträge
    6.092
    Themen
    85
    DANKE
    3
    Erhaltene Danke: 961
    Erstellt von

    Standard

    Eine funktionierende Version ist ab sofort im Downloadbereich verfügbar:
    https://www.zen-cart-pro.at/forum/do...d=8&linkid=152
    Geändert von webchills (12.02.2009 um 23:49 Uhr)
    !!! kostenloser Support ausschließlich im Forum - Nicht per Email, nicht per Telefon und nicht per PM !!!

  10. #10
    Padawan Stufe II Avatar von yps
    Registriert seit
    13.11.2007
    Beiträge
    98
    Themen
    30
    DANKE
    0
    Erhaltene Danke: 0

    Standard

    Vielen Dank webchills, das war genau das richtige

    Lg yps

Seite 1 von 2 12 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
zen-cart-pro.at
Zen Cart ist eine kostenlose unter der GPL-Lizenz veröffentlichte Open-Source Shopsoftware. Das System wird in den USA entwickelt, die amerikanische Website dazu ist www.zen-cart.com

Die deutsche Zen-Cart Version, um die es hier auf zen-cart-pro.at geht, ist eine Anpassung der amerikanischen Version an die Bedürfnisse von Onlineshopbetreibern im deutschsprachigen Raum.

Die deutsche Zen Cart Version wird von einem Team von Entwicklern in Österreich und Deutschland betreut, weiterentwickelt und supportet und steht kostenlos in unserem Downloadbereich zur Verfügung.

[mehr]
Follow Us
  • zen-cart-pro-at auf Twitter
  • zen-cart-pro-at auf Github
  • zen-cart-pro-at auf SourceForge
Aktuelle Version
Zen Cart 1.5.5 deutsch
Revision 1188 vom 02.12.2016
[Download]