PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inselzuschlag



Klaus Krengel
16.09.2014, 15:20
Hallo all ,

ich bin auf der Suche nach einem Modul für meinen Gambio GX2 Shop - dem Inselzuschlag, da DPD mir eben für ein Paket auf einer besagte Insel eben 17,50€ berechnet hat. Wäre schön wenn mir da jemand weiter helfen könnte.

KlausK
17.09.2014, 00:55
Hast du schonmal bei H.H.G. Multistore geschaut? Der hatte vor einige Jahren ein DPD-Modul mit Inselzuschlag.
In das Näpfchen bin ich letztens gleich mit 6 Paketen getreten. Ich könnte so ein Modul für GLS brauchen!

Klaus Krengel
19.09.2014, 02:46
kann mir sonst keiner weiterhelfen ... ??

Klaus Krengel
20.09.2014, 11:42
Ich habe bei den Jungs vom Modified Forum das gefunden - da hat jemand aus dem Flat Modul ein Inselzuschlagmodul für DPD gemacht :


Da dieses komische "DPD-Modul" einfach nicht nachvollziehbar ist habe ich nun einfach das DPD-Modul deaktiviert und an Stelle dessen FLAT verwendet.

Im Modul selbst "/includes/modules/shipping/flat.php" habe ich die folgende Änderung direkt in der Methode "quote" vorgenommen:



$inseln = array('18565','25859','25845','25846','25847','258 49','25863','25869','25938','25929','25930','25931 ','25932','25933','25939','25940','25941','25942', '25946','25952','25953','25954','25955','25961','2 5962','25963','25964','25965','25966','25967','259 68','25969','25970','25980','25981','25982','25983 ','25984','25985','25986','25992','25993','25994', '25996','25997','25998','25999','25980','25981','2 5982','25983','25984','25985','25986','25987','259 88','25989','25990','25997','25845','26465','26474 ','26486','26548','26571','26579','26757','27498', '83209','83256');

if (in_array($order->delivery['postcode'], $inseln) ){
//Inselzuschlag erforderlich
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_FLAT_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_FLAT_TEXT_WAY . ' ('.MODULE_SHIPPING_FLAT_COST.'EUR zzgl. 11.50EUR Inselzuschlag)',
'cost' => MODULE_SHIPPING_FLAT_COST + 11.50)));

} else {
//keine Insel
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_FLAT_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_FLAT_TEXT_WAY,
'cost' => MODULE_SHIPPING_FLAT_COST)));

}



nur irgendwie will das bei mir nicht laufen :confused:

KlausK
20.09.2014, 13:21
Was genau läuft denn da nicht?
Gibt es Fehlermeldungen oder ähnliches?
Poste am besten mal den kompletten Code, so wie du das jetzt modifiziert hast, aus der flat.php

Klaus Krengel
20.09.2014, 17:30
Hier mal eine flat.php



<?php
/* -----------------------------------------------------------------------------------------
$Id: flat.php 899 2005-04-29 02:40:57Z hhgag $

XT-Commerce - community made shopping
http://www.xt-commerce.com

Copyright (c) 2003 XT-Commerce
-----------------------------------------------------------------------------------------
based on:
(c) 2000-2001 The Exchange Project (earlier name of osCommerce)
(c) 2002-2003 osCommerce(flat.php,v 1.40 2003/02/05); www.oscommerce.com
(c) 2003 nextcommerce (flat.php,v 1.7 2003/08/24); www.nextcommerce.org

Released under the GNU General Public License
---------------------------------------------------------------------------------------*/


class flat_ORIGIN {
var $code, $title, $description, $icon, $enabled;


public function __construct() {
global $order;

$this->code = 'flat';
$this->title = MODULE_SHIPPING_FLAT_TEXT_TITLE;
$this->description = MODULE_SHIPPING_FLAT_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_FLAT_SORT_ORDER;
$this->icon = '';
$this->tax_class = MODULE_SHIPPING_FLAT_TAX_CLASS;
$this->enabled = ((MODULE_SHIPPING_FLAT_STATUS == 'True') ? true : false);

if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_FLAT_ZONE > 0) ) {
$check_flag = false;
$check_query = xtc_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_FLAT_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while ($check = xtc_db_fetch_array($check_query)) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
}

if ($check_flag == false) {
$this->enabled = false;
}
}
}


function quote($method = '') {
global $order;
$inseln = array('18565','25859','25845','25846','25847','258 49','25863','25869','25938','25929','25930','25931 ','25932','25933','25939','25940','25941','25942', '25946','25952','25953','25954','25955','25961','2 5962','25963','25964','25965','25966','25967','259 68','25969','25970','25980','25981','25982','25983 ','25984','25985','25986','25992','25993','25994', '25996','25997','25998','25999','25980','25981','2 5982','25983','25984','25985','25986','25987','259 88','25989','25990','25997','25845','26465','26474 ','26486','26548','26571','26579','26757','27498', '83209','83256');

if (in_array($order->delivery['postcode'], $inseln) ){
//Inselzuschlag erforderlich
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_FLAT_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_FLAT_TEXT_WAY . ' ('.MODULE_SHIPPING_FLAT_COST.'EUR zzgl. 11.50EUR Inselzuschlag)',
'cost' => MODULE_SHIPPING_FLAT_COST + 11.50)));

} else {
//keine Insel
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_FLAT_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_FLAT_TEXT_WAY,
'cost' => MODULE_SHIPPING_FLAT_COST)));

}
}

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

function install() {
xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_FLAT_STATUS', 'True', '6', '0', 'gm_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_SHIPPING_FLAT_ALLOWED', '', '6', '0', now())");
xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_FLAT_COST', '0.00', '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_SHIPPING_FLAT_TAX_CLASS', '0', '6', '0', 'xtc_get_tax_class_title', 'xtc_cfg_pull_down_tax_classes(', 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_SHIPPING_FLAT_ZONE', '0', '6', '0', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())");
xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_FLAT_SORT_ORDER', '0', '6', '0', now())");
}

function remove() {
xtc_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}

function keys() {
return array('MODULE_SHIPPING_FLAT_STATUS', 'MODULE_SHIPPING_FLAT_COST','MODULE_SHIPPING_FLAT_ ALLOWED', 'MODULE_SHIPPING_FLAT_TAX_CLASS', 'MODULE_SHIPPING_FLAT_ZONE', 'MODULE_SHIPPING_FLAT_SORT_ORDER');
}
}

MainFactory::load_origin_class('flat');


es wird einfach kein Zuschalg dazugerechnet bei den entsprechenden PLZ´en . Hab das Modul im Admin aktiviert .... nur der Inselzuschlag wird nicht mitberechnet ....

KlausK
21.09.2014, 00:07
Ich könnte mir vorstellen, dass die Zahl gar nicht als Zahl sondern als Text gesehen wird.
Oder, dass der Parser Probleme mit dem Punkt hat, er dient ja auch als Verkettungszeichen!
Hast du mal versucht nur 11 anstatt 11.50 zu addieren?
Oder die 11.50 in Klammern zu setzen?
Vielleicht solltest du die 11,50 Euro einfach in einer Variable definieren:


$zuschlag = 11.50

'cost' => MODULE_SHIPPING_FLAT_COST + $zuschlag)));
Für PHP-Code solltest du übrigens immer das PHP-Code-Fenster verwenden.
Die integrierte Syntaxhervorhebung (Highlighting) erhöht die Lesbarkeit ungemein.