Nachnahmegebühr Aufschlag

Du hast ein Problem gefunden und weißt nicht genau wo es hinpasst...
rieste
Beiträge: 134
Registriert: Fr 18. Mär 2011, 07:54
Shop Version: ECB 1.08 leider

Re: Nachnahmegebühr Aufschlag

Beitrag von rieste »

Reihenfolge in der Order Total Modul bzw. Zusammenfassung mal probieren.

ich arbeite mit ot_shipping - versandkostenfrei betrag das ist VOR der ot_cod_fee in der sortierreihenfolge
Mein Seite: https://www.rieste.com
Mein Lichtshop https://licht365.com
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Nachnahmegebühr Aufschlag

Beitrag von Kopernikus »

Ok, ich bin jetzt 100% sicher, dass diese Datei noch einen Bug enthält. Möglicherweise wird dieser aber nur in Zusammenhang mit dem chp Zahlungsmodul sichbar.

Wenn ich die bisherige ot_cod_fee.php verwende, werden die Nachnahmgebühren bei einer Bestellung mit Versandkosten wie von rieste gemeldet nicht verrechnet (nicht gut). Allerdings werden bei dieser Datei die Versandkosten bei einer Versandkostenfreien Bestellung verrechnet (i.O.).

Bisherige ot_cod_fee.php

Code: Alles auswählen

<?php
/** ----------------------------------------------------------------------------
 *
 * includes/modules/order_total/ot_cod_fee.php
 *
 * WEB-Shop Software http://www.webs.de/
 *
 * fee calculation for payment via cash on delivery
 *
 * -----------------------------------------------------------------------------
 * based on:
 * (c) 2000-2001 The Exchange Project (earlier name of osCommerce)
 * (c) 2002-2003 osCommerce; www.oscommerce.com
 * (c) 2003 TheMedia, Dipl.-Ing Thomas Plänkers ; http://www.themedia.at & http://www.oscommerce.at
 * (c) 2006 XT-Commerce
 *
 * Released under the GNU General Public License
 *
 * @version $Id: ot_cod_fee.php 2232 2012-02-11 23:22:00Z joerg $
 * @copyright 2012 WEB-Shop Software http://www.webs.de/
 *
 * ----------------------------------------------------------------------------- */

class ot_cod_fee {
  var $title, $output;

  function ot_cod_fee() {
    global $xtPrice;
    $this->code = 'ot_cod_fee';
    $this->title = MODULE_ORDER_TOTAL_COD_FEE_TITLE;
    $this->description = MODULE_ORDER_TOTAL_COD_FEE_DESCRIPTION;
    $this->enabled = ((MODULE_ORDER_TOTAL_COD_FEE_STATUS == 'true') ? true : false);
    $this->sort_order = MODULE_ORDER_TOTAL_COD_FEE_SORT_ORDER;

    $this->output = array();
  }

  function process() {
    global $order, $xtPrice, $cod_cost, $cod_country, $shipping;

    if (MODULE_ORDER_TOTAL_COD_FEE_STATUS == 'true') {

      //Will become true, if cod can be processed.
      $cod_country = false;

      //check if payment method is cod. If yes, check if cod is possible.
      if ($_SESSION['payment'] == 'cod') {
	//process installed shipping modules
	if ($_SESSION['shipping']['id'] == 'flat_flat') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_FLAT);
	if ($_SESSION['shipping']['id'] == 'item_item') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_ITEM);
	if ($_SESSION['shipping']['id'] == 'table_table') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_TABLE);
	if ($_SESSION['shipping']['id'] == 'zones_zones') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_ZONES);
	if ($_SESSION['shipping']['id'] == 'ap_ap') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_AP);
	if ($_SESSION['shipping']['id'] == 'dp_dp') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_DP);

	// module chp
	if ($_SESSION['shipping']['id'] == 'chp_ECO') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_CHP);
	if ($_SESSION['shipping']['id'] == 'chp_PRI') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_CHP);
	if ($_SESSION['shipping']['id'] == 'chp_URG') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_CHP);
	
	// module chronopost
	if ($_SESSION['shipping']['id'] == 'chronopost_chronopost') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_CHRONOPOST);

	// module DHL
	if ($_SESSION['shipping']['id'] == 'dhl_ECX') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_DHL);
	if ($_SESSION['shipping']['id'] == 'dhl_DOX') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_DHL);
	if ($_SESSION['shipping']['id'] == 'dhl_SDX') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_DHL);
	if ($_SESSION['shipping']['id'] == 'dhl_MDX') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_DHL);
	if ($_SESSION['shipping']['id'] == 'dhl_WPX') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_DHL);
	// UPS
	if ($_SESSION['shipping']['id'] == 'ups_ups') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_UPS);
	if ($_SESSION['shipping']['id'] == 'upse_upse') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_UPSE);
	
	// Free Shipping
	if ($_SESSION['shipping']['id'] == 'free_free') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_COD_FEE_FREE);
	if ($_SESSION['shipping']['id'] == 'freeamount_freeamount') $cod_zones = preg_split('/[:,]/', MODULE_ORDER_TOTAL_FREEAMOUNT_FREE);
	
	
	for ($i = 0; $i < count($cod_zones); $i++) {
	  if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) {
	    $cod_cost = $cod_zones[$i + 1];
	    $cod_country = true;
	    break;
	  } elseif ($cod_zones[$i] == '00') {
	    $cod_cost = $cod_zones[$i + 1];
	    $cod_country = true;
	    break;
	  } else {
	  }
	  $i++;
	}
      } else {
	//COD selected, but no shipping module which offers COD
      }

      if ($cod_country) {

	$cod_tax = xtc_get_tax_rate(MODULE_ORDER_TOTAL_COD_FEE_TAX_CLASS, $order->delivery['country']['id'], $order->delivery['zone_id']);
	$cod_tax_description = xtc_get_tax_description(MODULE_ORDER_TOTAL_COD_FEE_TAX_CLASS, $order->delivery['country']['id'], $order->delivery['zone_id']);
        if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) {
	  $order->info['tax'] += xtc_add_tax($cod_cost, $cod_tax)-$cod_cost;
	  $order->info['tax_groups'][TAX_ADD_TAX . "$cod_tax_description"] += xtc_add_tax($cod_cost, $cod_tax)-$cod_cost;
	  $order->info['total'] += $cod_cost + (xtc_add_tax($cod_cost, $cod_tax)-$cod_cost);
	  $cod_cost_value= xtc_add_tax($cod_cost, $cod_tax);
	  $cod_cost= $xtPrice->xtcFormat($cod_cost_value,true);
        }
        if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
	  $order->info['tax'] += xtc_add_tax($cod_cost, $cod_tax)-$cod_cost;
	  $order->info['tax_groups'][TAX_NO_TAX . "$cod_tax_description"] += xtc_add_tax($cod_cost, $cod_tax)-$cod_cost;
	  $cod_cost_value=$cod_cost;
	  $cod_cost= $xtPrice->xtcFormat($cod_cost,true);
	  $order->info['subtotal'] += $cod_cost_value;
	  $order->info['total'] += $cod_cost_value;
        }
        if (!$cod_cost_value) {
	  $cod_cost_value=$cod_cost;
	  $cod_cost= $xtPrice->xtcFormat($cod_cost,true);
	  $order->info['total'] += $cod_cost_value;
        }
	$this->output[] = array('title' => $this->title . ':',
				'text' => $cod_cost,
				'value' => $cod_cost_value);
      } else {
//Following code should be improved if we can't get the shipping modules disabled, who don't allow COD
// as well as countries who do not have cod
//          $this->output[] = array('title' => $this->title . ':',
//                                  'text' => 'No COD for this module.',
//                                  'value' => '');
      }
    }
  }

  function check() {
    if (!isset($this->_check)) {
      $check_query = xtc_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_ORDER_TOTAL_COD_FEE_STATUS'");
      $this->_check = xtc_db_num_rows($check_query);
    }
    return $this->_check;
  }

  function keys() {
    return array('MODULE_ORDER_TOTAL_COD_FEE_STATUS', 'MODULE_ORDER_TOTAL_COD_FEE_SORT_ORDER', 'MODULE_ORDER_TOTAL_COD_FEE_FLAT', 'MODULE_ORDER_TOTAL_COD_FEE_ITEM', 'MODULE_ORDER_TOTAL_COD_FEE_TABLE','MODULE_ORDER_TOTAL_COD_FEE_CHRONOPOST','MODULE_ORDER_TOTAL_COD_FEE_DHL','MODULE_ORDER_TOTAL_COD_FEE_CHP', 'MODULE_ORDER_TOTAL_COD_FEE_ZONES', 'MODULE_ORDER_TOTAL_COD_FEE_AP', 'MODULE_ORDER_TOTAL_COD_FEE_UPS', 'MODULE_ORDER_TOTAL_COD_FEE_UPSE', 'MODULE_ORDER_TOTAL_COD_FEE_DP', 'MODULE_ORDER_TOTAL_COD_FEE_FREE', 'MODULE_ORDER_TOTAL_FREEAMOUNT_FREE', 'MODULE_ORDER_TOTAL_COD_FEE_TAX_CLASS');
  }

  function install() {
    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_STATUS', 'true', '6', '0', 'xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_SORT_ORDER', '35', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_FLAT', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_ITEM', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_TABLE', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_ZONES', 'CA:4.50,US:3.00,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_AP', 'AT:3.63,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_DP', 'DE:4.00,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_CHP', 'CH:4.00,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_CHRONOPOST', 'FR:4.00,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_DHL', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_UPS', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_UPSE', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_FREE', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_FREEAMOUNT_FREE', 'AT:3.00,DE:3.58,00:9.99', '6', '0', now())");

    xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_ORDER_TOTAL_COD_FEE_TAX_CLASS', '0', '6', '0', 'xtc_get_tax_class_title', 'xtc_cfg_pull_down_tax_classes(', now())");
  }

  function remove() {
    xtc_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
  }
}
Verwende ich die neue ot_cod_fee.php http://bugs.webs.de/patch/V1.0.15/inclu ... od_fee.php werden zwar die Nachnahmgebühren bei einer Bestellung mit Versandkosten verrechnet (i.O.), jedoch nicht bei einer Bestellung ohne Versandkosten (nicht gut).

Könntet Ihr das noch fixen?
Antworten