Jump to content
xt:Commerce Community Forum

Versandkosten nach Anzahl Artikel


haeuselmann

Recommended Posts

Hallo zusammen

Ich habe schon alles durchsucht, aber habe bis jetzt leider nichts gefunden.

Ich möchte meine Versandkosten nach Anzahl gekaufter Artikel einstellen.

Beispiel:

1-10 Stk. = 1.50

11-40 Stk = 2.70

ab 41 Stk. = 7.50

Kann man das irgendwie leicht einrichten? (Version 4.0.14)

Danke vielmals für eure Hilfe!

Link to comment
Share on other sites

Hi,

die Stückzahl - VK werden wie folgt berechnet:

Stück x Preis pro Stck --> z.B. 1Stck x 1,00€ -> Gesamtpreis = 1 Stck x 1,00€ = 1,00€

Bei 2 Stück funktioniert die Sache, so wie ich denke, dass du es wünscht, nicht mehr, denn:

2 Stck - Preis pro Stck = z.B. 1,00€ -> Gesamtpreis = 2 Stck x 1,00€ = 2,00€

D.h. der Stückpreis müsste angepasst werden, zu:

2 Stck - Preis pro Stck = z.B. 0,50€ -> Gesamtpreis = 2 Stck x 0,50€ = 1,00€

3 Stck - Preis pro Stck = z.B. 0,33€ -> Gesamtpreis = 3 Stck x 0,33€ = 1,00€

...

Du müsstest also für jedes Stück einen neuen Versandpreis anlegen, oder wenn es gleiche Artikel sind, evtl. Verpackungseinheiten anbieten, oder gleich nach Gewicht gehen.

Link to comment
Share on other sites

  • 2 years later...

Echt merkwürdig und schlecht, dass sowas nicht geht.

Wenn man auf das Gewicht angewiesen ist, gehts schon nichtmehr. Ausserdem sind Felder für andere Zwecke missbrauchen auch immer schlecht.

Man kann sich selbst einfach diese Erweiterung machen, indem man den Code erweitert. Ich hoffe, dass das für viele eine Zwischenlösung ist, bis Veyton soweit ist, das standardmäßig zu können:

/xtFramework/classes/class.shipping.php

Ab ca Zeile 240 Erweitern:


if($value['shipping_type']=='package'){

     $value = $this->_filterPackage($value);

}

Dann in die selbe Datei eine neue Funktion, z.B. ab etwa Zeile 556

      /**

	 * Filter shipping array for cart packages

	 *

	 * @param mixed $data

	 */

	public function _filterPackage($data){

		global $xtPlugin;


		($plugin_code = $xtPlugin->PluginCode('class.shipping.php:_filterPackage_top')) ? eval($plugin_code) : false;

		if(isset($plugin_return_value))

			return $plugin_return_value;


		if(!is_data($data)) return false;


		if(!is_data($data['costs'])) return false;


		$new_cost=array();

		$check_content = array();

		$check_content = $data['costs'];


		while (list ($key, $value) = each($check_content)) {

			if(($this->count >= $value['shipping_type_value_from'] && $this->count <= $value['shipping_type_value_to']) || ($value['shipping_type_value_to']==0 && $value['shipping_type_value_from']==0)){

				if($value['shipping_allowed']=='1'){

					$new_cost[] = $value;

				}else{

					unset($new_cost);

					unset($data);

					break;

				}

			}

		}


		$data['costs'] = $new_cost;


		$data_count = count($data['costs']);


		if($data_count==0 || !$data_count){

			unset($data);

		}


		($plugin_code = $xtPlugin->PluginCode('class.shipping.php:_filterPackage_bottom')) ? eval($plugin_code) : false;


		return $data;

	}

Dann etwa ab Zeile 788 zu den anderen Beautyfiers:

if ($methods['shipping_type'] == 'package') {

	$data[$key]['costs'][$val]['shipping_type_value_from'] = round($arr['shipping_type_value_from'],0);

	$data[$key]['costs'][$val]['shipping_type_value_to'] = round($arr['shipping_type_value_to'],0);

}

Jetzt muss noch im Backend das Dropdown erweitert werden. Einfache Möglichkeit ist, dies nachträglich zu machen. /xtAdmin/DropdownData.php etwa ab Zeile 73 den folgendes case muss dann so erweitert sein:

case "conf_shippingtype":

			$result = $dropdown->getShippingType();

			$result = array_merge($result, array(array("id" => "package", "name" => "package")));

			break;

Hoffe, dass dies für viele eine akzeptable Zwischenlösung ist.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...