xtcModified Staffelpreis von Einheit Stück auf VPE ändern

Bei der Ausgabe der Staffelpreise in xtcModified (Version 1.05) sind seitens des Core keine verschiedenen Verpackungseinheiten realisiert. Hier eine eigene Erweiterung des Cores. Benutzung auf eigene Gefahr und immer an eine Datensicherung denken.

 

Damit Staffelpreise mit den entsprechenden Verpackungseinheiten dargestellt werden, kann man die folgenden zwei Dateien geringfügig anpassen:

In der Datei ‚includes/classes/product.php‘ definieren wir in der Funktion getGraduated() die neue Variable:

$get_real_vpe_name = xtc_get_vpe_name($this->data[‚products_vpe‘]);

Anschließend wird diese neue Variable unter dem Schlüssel ‚VPEREAL‘ in das array ‚$staffel_data[]‘ geschrieben:

$staffel_data[$i] = array (‚VPEREAL‘ => $get_real_vpe_name, …bla bla andere einträge…);

Auf diese Variable kann man jetzt in ‚templates/xtc5/module/graduated_price.html‘ mit ‚{$module_data.VPEREAL}‘ zugreifen und ‚{#unit#}‘ kann damit ausgetauscht werden. Es werden also keine neuen Datenfelder oder dergleichen benötigt. Die hinterlegte Bezeichnung der VPE für jeden Artikel wird bereits im Core ausgelesen, leider wurde bis heute dieser Wert nicht zur weiteren Nutzung einer Variablen zugeordnet.

Folgende zwei Dateien werden angepasst. Die Änderungen sind dokumentiert:

Änderung 1: includes/classes/produkt.php – function getGraduated()

function getGraduated() {
    global $xtPrice;
    $discount = $xtPrice->xtcCheckDiscount($this->pID);	// Hetfield - 2010-03-15 - BUGFIX show VPE with discount for graduated prices
    $staffel_query = xtDBquery("SELECT quantity, personal_offer
                                       FROM ".TABLE_PERSONAL_OFFERS_BY.(int) $_SESSION['customers_status']['customers_status_id']."
		                                     WHERE products_id = '".$this->pID."'
				                                     ORDER BY quantity ASC");
	$staffel = array ();
    while ($staffel_values = xtc_db_fetch_array($staffel_query, true)) {
        $staffel[] = array ('stk' => $staffel_values['quantity'], 'price' => $staffel_values['personal_offer']);
    }

    $staffel_data = array ();
    for ($i = 0, $n = sizeof($staffel); $i < $n; $i ++) {
        //BOF - web28 - 2010-07-13 - BUGFIX display same quantity only once for graduated prices / FIX max value info for graduated prices
        /*
        if ($staffel[$i]['stk'] == 1) {
        $quantity = $staffel[$i]['stk'];
        if ($staffel[$i +1]['stk'] != '')
           $quantity = $staffel[$i]['stk'].'-'. ($staffel[$i +1]['stk'] - 1);
        } else {
               $quantity = ' > '.$staffel[$i]['stk'];
               if ($staffel[$i +1]['stk'] != '')
					$quantity = $staffel[$i]['stk'].'-'. ($staffel[$i +1]['stk'] - 1);
               }
        */
        if ($staffel[$i]['stk'] == 1 || $staffel[$i +1]['stk'] != ''){
            $quantity = $staffel[$i]['stk'];
            if ($staffel[$i +1]['stk'] != '' && $staffel[$i +1]['stk'] != $staffel[$i]['stk'] + 1) $quantity .= ' - '. ($staffel[$i +1]['stk'] - 1);
        }
        else {
            $quantity = GRADUATED_PRICE_MAX_VALUE.' '.$staffel[$i]['stk'];
        }
        //EOF - web28 - 2010-07-13 - BUGFIX display same quantity only once for graduated prices	/FIX max value info for graduated prices
        $vpe = '';
        // BOF - Hetfield - 2009-08-24 - BUGFIX show VPE for graduated prices
        if ($this->data['products_vpe_status'] == 1 && $this->data['products_vpe_value'] != 0.0 && $staffel[$i]['price'] > 0) {
            $vpe = $staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount;
            $vpe = $vpe * (1 / $this->data['products_vpe_value']);

/*Modified by Enders - 2011-07-27: additional entry 'VPEREAL' in array '$staffel_data[]'*/
            //Einfügen 1
            $get_real_vpe_name = xtc_get_vpe_name($this->data['products_vpe']);
            //Einfügen 1 Ende

            //Löschen 1
            //$vpe = BASICPRICE_VPE_TEXT.$xtPrice->xtcFormat($vpe, true, $this->data['products_tax_class_id']).TXT_PER.xtc_get_vpe_name($this->data['products_vpe']);
            //Löschen 1 Ende

            //Einfügen 2
            $vpe = BASICPRICE_VPE_TEXT.$xtPrice->xtcFormat($vpe, true, $this->data['products_tax_class_id']).TXT_PER.$get_real_vpe_name;
            //Einfügen 2 Ende
        }
        // EOF - Hetfield - 2009-08-24 - BUGFIX show VPE for graduated prices
        //Löschen 2
        //$staffel_data[$i] = array ('QUANTITY' => $quantity, 'VPE' => $vpe, 'PRICE' => $xtPrice->xtcFormat($staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount, true, $this->data['products_tax_class_id']));
        //Löschen 2 Ende

        //Einfügen 2
        $staffel_data[$i] = array ('VPEREAL' => $get_real_vpe_name, 'QUANTITY' => $quantity, 'VPE' => $vpe, 'PRICE' => $xtPrice->xtcFormat($staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount, true, $this->data['products_tax_class_id']));
        //Einfügen 2 Ende
/*Modified by Enders - 2011-07-27 Ende*/
    }
    return $staffel_data;
 }

Änderung 2: templates/xtc5/module – graduated_price.html

Den Platzhalter:

{$module_data.QUANTITY} {#unit#}

durch Variable:

{$module_data.QUANTITY} {$module_data.VPEREAL}

austauschen.

2 Gedanken zu „xtcModified Staffelpreis von Einheit Stück auf VPE ändern

  1. ITSD

    In xtcModified befindet sich die Template-Datei für die Darstellung der Staffelpreise in ‘templates/xtc5/module/graduated_price.html’. Falls ähnliches in Veyton geändert werden soll findet man die Datei unter: ‚templates/xt_default/xtCore/pages/price/graduated_table.html‘

  2. chef Autor des Beitrags

    Die Variable {$module_data.VPEREAL} kann natürlich auch an anderen Stellen Verwendung finden. So zum Beispiel auf der Artikeldetailseite zwischen dem Eingabefelf für die Artikelanzahl und dem Button zum Speichern im Warenkorb.

Schreibe einen Kommentar