Hi,
da ich das Modul
MODUL: Lieferung / Versand nach Postleitzahlen (PLZ) in meinem shops nicht ordentlich zum laufen bekomme, oder vielleicht auch einfach irgendwas falsch mache, habe ich mir dieses Modul installiert und muss sagen es funktioniert total einfach und gut für mich.
Die Pflege der Daten über die Datenbank stört mich gar nicht und ist sehr übersichtlich und einfach.
Eine Sache gibt es , die ich gerne verändern würde und bei der ich Hilfe gebrauchen könnte.
Und zwar fragt dieses Modul erst das Land ab und dann die Postleitzahl. Wenn die Postleitzahl z.b. 99427 in der Datenbank nicht vorhanden ist, dann wird einfach von einer anderen Postleitzahl oder spalte der Wert für die Versandkosten übernommen.
Ich würde es gerne so haben, das wenn ich in eine Postleitzahl nicht liefern möchte, das Modul einfach ausgeblendet wird oder die Benachrichtigung kommt das in dieses Gebiet nicht geliefert werden kann, so wie wenn der Wert für das Land auf 0 gesetzt wäre.
Wenn mir da jemand helfen könnte, dann würde ich nach dieser Veränderung und allen Textänderungen ein Modul für alle zugänglich machen, das ebenfalls Versand nach Postleitzahlen berechnet.
Das gibt es zwar schon aber vielleicht funzt das bei anderen ja auch nicht mehr.
Ich hoffe das es nur ein kleiner eingriff ist und nichts kompliziertes. Hier ist auf jedenfall die php Datei, falls jemand die Muse hat mal reinzuschauen:
<?php/*
------------------------------------------------------------------------------
Extended Shipping Module V 1.0
Anpassung für: DPD Proaktive Benachrichtigung
27.02.2014 / (c) dmun
Clonen: _DPDFLEX_ als Teilstring
dpdflex als ganzes Wort
Die Daten werden aus der zentrallen Tabelle "shipping" gelesen.
Aufbau der Tabelle und Bedeutung der Felder:
`shipping_module` VARCHAR(100): Name des Versandmoduls z.B. dpdflex
`shipping_charge` VARCHAR(1024): Kostenstring. Aufbau wie in den anderen Versand
modulen auch.
Beispiel: 0-3:4.5,3-6:5.5 usw. bedeutet 0-3 kg = 4.5 Euro, 3-6 kg = 5.5 Euro
Alternative: 3:4.5,6:5.5 usw. gleiche Bedeutung wie oben nur kürzer
`shipping_free_limit` INT : kostenloser Versand ab X Euro. Nur Ganzzahlen sind erlaubt
Beispiel: 500 bedeutet ab 500 Euro kostenloser Versand
`shipping_country` VARCHAR(2): Land der Versandadresse
`shipping_from_zip` VARCHAR(20): Optional PLZ von
`shipping_to_zip` VARCHAR(20): Optional PLZ bis
Durch Angabe eines PLZ Bereiches können bestimmte Gebiete mit anderen Kosten
beaufschlagt werden. Sinnvoll zum Beispiel bei Inseln (Inselzuschlag).
`shipping_addition_type` ENUM('+','-','*'):
`shipping_addition` DECIMAL(4,2):
Mit diesen beiden Feldern kann ein Auf oder Abschlag zu den Versandkosten umgesetzt
werden. shipping_addition_type gibt die Rechenart an. Plus, Minus oder mal und
shipping_addition den "Wert".
Beispiel: + 10 = fester Aufschlag von 10 Euro auf die Versandkosten vor Steuern und
zusätzlichen Handlinggebühren, sinnvoll bei einem festen Aufschlag für Inselzustellung
Beispiel: - 3 = fester Abschlag von 3 Euro von den Versandkosten vor Steuern und
zusätzlichen Handlinggebühren. Wenn man den Versand subventionieren will.
Beispiel: * 1.05 = Die Versandkosten vor Steuern und zusätzlichen Handlinggebühren werden
um 5% erhöht. Sinnvoll bei Preisanpassungen, Kraftstoffzuschlägen und anderen Preiserhöhungen
Beispiel: * 0.90 = Die Versandkosten vor Steuern und zusätzlichen Handlinggebühren werden
um 10% reduziert. Wenn es mal günstiger werden sollte....
`shipping_enabled` ENUM('0','1'): 1 = Datensatz aktiv, 0 = Datensatz nicht aktiv
`shipping_comment` VARCHAR(255): Optional für Kommentare. Achtung bei Sondernzeichen und CSV
Im- bzw. Export
------------------------------------------------------------------------------
based on:
Copyrigt (c) 2004 cigamth
------------------------------------------------------------------------------
based on:
XTC-GLS Shipping Module - Contribution for XT-Commerce http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))
modified by http://www.hhgag.com
Copyright (c) 2004 H.H.G.
-----------------------------------------------------------------------------
based on:
(c) 2003 Deutsche Post Module
Original written by Marcel Bossert-Schwab (webmaster@wernich.de), Version 1.2b
Addon Released under GLSL V2.0 by Gunter Sammet (Gunter@SammySolutions.com)
Contribution based on:
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2002 - 2003 osCommerce
Released under the GNU General Public License
---------------------------------------------------------------------------*/ class dpdflex
{ var $code, $title, $description, $enabled, $icon; // class constructor function dpdflex
() { global $order; $this->code = 'dpdflex'; $this->title = MODULE_SHIPPING_DPDFLEX_TEXT_TITLE
; $this->description = MODULE_SHIPPING_DPDFLEX_TEXT_DESCRIPTION
; $this->sort_order = MODULE_SHIPPING_DPDFLEX_SORT_ORDER
; $this->icon = DIR_WS_ICONS
. 'shipping_dpd.gif'; $this->tax_class = MODULE_SHIPPING_DPDFLEX_TAX_CLASS
; $this->enabled = ((MODULE_SHIPPING_DPDFLEX_STATUS
== 'True') ?
true : false); if ( ($this->enabled == true) && ((int
)MODULE_SHIPPING_DPDFLEX_ZONE
> 0) ) { $check_flag = false; $check_query_string = " select
zone_id
from " . TABLE_ZONES_TO_GEO_ZONES
. "
where
geo_zone_id = '" . MODULE_SHIPPING_DPDFLEX_ZONE
. "'
and
zone_country_id = '" . $order->delivery['country']['id'] . "'
order by zone_id"; $check_query = xtc_db_query
($check_query_string); 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 $shipping_quote_all, $shipping_weight, $shipping_quoted, $shipping_cost_total, $shipping_method, $order; $shipping_error = false; $destination_country = $order->delivery['country']['iso_code_2']; $destination_zip_code = $order->delivery['postcode']; $destination_zip_code = strtoupper(str_replace(' ', '', $destination_zip_code)); // bei GB nur die ersten beiden Stellen der PLZ if($destination_country == 'GB') { $destination_zip_code = substr($destination_zip_code, 0, 2); } // Abfragen ob ein oder mehrer Einträge vorhanden sind $sQry = " SELECT
count(shipping_country) as entries
FROM
shipping
WHERE
shipping_country = '" . $destination_country . "'
AND
shipping_module = 'dpdflex'
AND
shipping_enabled = '1'"; $rQry = xtc_db_query
($sQry); $aRows = xtc_db_fetch_array
($rQry); // // kein Eintrag vorhanden = kein Versand möglich // if ($aRows['entries'] == 0) { $this->quotes = array( 'id' => $this->code, 'module' => MODULE_SHIPPING_DPDFLEX_TEXT_TITLE
, 'error' => MODULE_SHIPPING_DPDFLEX_INVALID_ZONE
, 'methods' => array(array( 'id' => $this->code, 'title' => MODULE_SHIPPING_DPDFLEX_TEXT_TITLE
, 'cost' => 0))); if ($this->tax_class > 0) { $this->quotes['tax'] = xtc_get_tax_rate
($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); } if (xtc_not_null
($this->icon)) $this->quotes['icon'] = xtc_image
($this->icon, $this->title); return $this->quotes; } // // 1 Eintrag vorhanden - Abfrage ohne PLZ Bereich durchführen // if ($aRows['entries'] == 1) { $sQry = " SELECT
*
FROM
shipping
WHERE
shipping_country = '" . $destination_country . "'
AND
shipping_module = 'dpdflex'
AND
shipping_enabled = '1'"; } // // Mehr als 1 Eintrag vorhanden - Abfrage mit PLZ Bereich durchführen // if ($aRows['entries'] > 1) { $sQry = " SELECT
*
FROM
shipping
WHERE
shipping_country = '" . $destination_country . "'
AND
shipping_enabled = '1'
AND
shipping_module = 'dpdflex'
AND
'" . $destination_zip_code . "' BETWEEN shipping_from_zip AND shipping_to_zip"; } $rQry = xtc_db_query
($sQry); $shipping_charge = xtc_db_fetch_array
($rQry); $shipping_cost_tmp = -1; $shipping_charge_array = preg_split("/[:,]/" , $shipping_charge['shipping_charge']); for ($i = 0; $i < count($shipping_charge_array); $i+=2) { $p = strpos($shipping_charge_array[$i],'-'); if ( $p !== false) { $shipping_charge_array[$i] = substr($shipping_charge_array[$i],$p+1); } $shipping_charge_array[$i] = trim($shipping_charge_array[$i]); $shipping_charge_array[$i+1] = trim($shipping_charge_array[$i+1]); if ($shipping_weight <= $shipping_charge_array[$i]) { $shipping_cost_tmp = $shipping_charge_array[$i+1]; $shipping_method = MODULE_SHIPPING_DPDFLEX_TEXT_WAY
. ' ' . $destination_country . ': ' . $shipping_weight . ' ' . MODULE_SHIPPING_DPDFLEX_TEXT_UNITS
;; break; } } if ( $shipping_cost_tmp == -1) { $shipping_cost_total = 0; $shipping_method = MODULE_SHIPPING_DPDFLEX_UNDEFINED_RATE
; $shipping_error = true; } else { if($shipping_charge['shipping_free_limit'] == 0){ //Aufschläge prüfen if ($shipping_charge['shipping_addition'] !== 0) { if ($shipping_charge['shipping_addition_type'] == '+') { $shipping_cost_tmp = $shipping_cost_tmp + $shipping_charge['shipping_addition']; } else if ($shipping_charge['shipping_addition_type'] == '-') { $shipping_cost_tmp = $shipping_cost_tmp - $shipping_charge['shipping_addition']; } else if ($shipping_charge['shipping_addition_type'] == '*') { $shipping_cost_tmp = $shipping_cost_tmp * $shipping_charge['shipping_addition']; } } // Ende Aufschläge $shipping_cost_total = ( $shipping_cost_tmp + MODULE_SHIPPING_DPDFLEX_HANDLING
+ SHIPPING_HANDLING
); } else if ($shipping_charge['shipping_free_limit'] !== 0) { if($order->info['subtotal'] >= $shipping_charge['shipping_free_limit']){ $shipping_cost_total = 0; $shipping_method = MODULE_SHIPPING_DPDFLEX_FREE_SHIPPING
; } else { //Aufschläge prüfen if ($shipping_charge['shipping_addition'] != 0) { if ($shipping_charge['shipping_addition_type'] == '+') { $shipping_cost_tmp = $shipping_cost_tmp + $shipping_charge['shipping_addition']; } else if ($shipping_charge['shipping_addition_type'] == '-') { $shipping_cost_tmp = $shipping_cost_tmp - $shipping_charge['shipping_addition']; } else if ($shipping_charge['shipping_addition_type'] == '*') { $shipping_cost_tmp = $shipping_cost_tmp * $shipping_charge['shipping_addition']; } } // Ende Aufschläge $shipping_cost_total = ( $shipping_cost_tmp + MODULE_SHIPPING_DPDFLEX_HANDLING
+ SHIPPING_HANDLING
); } } } $this->quotes = array( 'id' => $this->code, 'module' => MODULE_SHIPPING_DPDFLEX_TEXT_TITLE
, 'methods' => array(array( 'id' => $this->code, 'title' => $shipping_method, 'cost' => $shipping_cost_total))); if ($this->tax_class > 0) { $this->quotes['tax'] = xtc_get_tax_rate
($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); } if (xtc_not_null
($this->icon)) $this->quotes['icon'] = xtc_image
($this->icon, $this->title); if($shipping_error){ $this->quotes['error'] = $shipping_method; } return $this->quotes; } function check
() { $check_query = xtc_db_query
("select configuration_value from " . TABLE_CONFIGURATION
. " where configuration_key = 'MODULE_SHIPPING_DPDFLEX_STATUS'"); $this->_check
= xtc_db_num_rows
($check_query); return $this->_check
; } function install
() { //disabled the next one because of some problems: If module is installed and this set to 0, checkout doesn't work. xtc_db_query
("insert into " . TABLE_CONFIGURATION
. " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_SHIPPING_DPDFLEX_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_SHIPPING_DPDFLEX_HANDLING', '0', '6', '0', now())"); xtc_db_query
("insert into " . TABLE_CONFIGURATION
. " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DPDFLEX_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_DPDFLEX_SORT_ORDER', '0', '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_DPDFLEX_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_DPDFLEX_ZONE', '0', '6', '0', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())"); // Zentrale Tabelle für die Speicherung der Versanddaten anlegen // wenn noch nicht vorhanden if (xtc_db_query
(" CREATE TABLE IF NOT EXISTS `shipping` (
`shipping_module` VARCHAR(100) NULL DEFAULT '',
`shipping_charge` VARCHAR(1024) NULL DEFAULT '',
`shipping_free_limit` INT NULL DEFAULT '0',
`shipping_country` VARCHAR(2) NOT NULL DEFAULT 'DE',
`shipping_from_zip` VARCHAR(20) NULL DEFAULT '',
`shipping_to_zip` VARCHAR(20) NULL DEFAULT '',
`shipping_enabled` ENUM('0','1') NOT NULL DEFAULT '1',
`shipping_addition_type` ENUM('+','-','*') NOT NULL DEFAULT '+',
`shipping_addition` DECIMAL(4,2) NOT NULL DEFAULT '0.0000',
`shipping_comment` VARCHAR(255) NULL
)
COLLATE='latin1_german1_ci'
ENGINE=MyISAM")) { } else { } } function remove
() { xtc_db_query
("delete from " . TABLE_CONFIGURATION
. " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys
() { $keys = array('MODULE_SHIPPING_DPDFLEX_STATUS', 'MODULE_SHIPPING_DPDFLEX_HANDLING','MODULE_SHIPPING_DPDFLEX_ALLOWED', 'MODULE_SHIPPING_DPDFLEX_SORT_ORDER', 'MODULE_SHIPPING_DPDFLEX_TAX_CLASS', 'MODULE_SHIPPING_DPDFLEX_ZONE'); return $keys; } }?>