Lieferkosten Abfrage

Hallo ,
Ich möchte gerne das Modul marmalade :: Diff to free shipping von Joscha ein wenig verändern. Da ich mit verschiedenen Ländern arbeite brauche ich auch verschiedene Berechnungen, denn in diesem Modul wird nur ein Preis abgefragt mit:
$sQ = ‘select OXPARAM from oxdelivery where OXADDSUM = 0’;

Hier ist der Original Code:

<?php
/*

  • Installation

  • Upload file to modules-Directory

  • module entry in Admin: oxbasket => marm_diff_oxbasket

  • Place the getter-Function in your template: [{$oxcmp_basket->getPriceUntilFreeShipping()}]

*/

class marm_diff_oxbasket extends marm_diff_oxbasket_parent
{
public function getPriceUntilFreeShipping()
{
if ( $this->_oProductsPriceList ) {

          $productsPrice = $this-&gt;_oProductsPriceList-&gt;getBruttoSum(); 
    
        $oDB = oxDb::getDb();
        $sQ = 'select OXPARAM from oxdelivery where OXADDSUM = 0';
        $freeShippingPrice = oxDb::getDb()-&gt;GetOne($sQ);    
        $priceDiff = $freeShippingPrice - $productsPrice;
        if ($priceDiff &lt; 0)
        {
            $priceDiff=0;
        }
        return oxLang::getInstance()-&gt;formatCurrency( $priceDiff, $this-&gt;getBasketCurrency() );
       
    }
    return null;
}

}
?>

Ich habe mir gedacht statt die Datenbank abzufragen hole ich den Wert aus dem Warenkorb.
im Basket heißt die Funktion [{ $oxcmp_basket->getFDeliveryCosts() }]
also füge ich den Code aus oxbasket.php:
$this->getCosts( ‘oxdelivery’ );
if ( $oDeliveryCost && ( $this->getBasketUser() || $this->getConfig()->getConfigParam( ‘blCalculateDelCostIfNotLoggedIn’ ) ) ) {
return oxLang::getInstance()->formatCurrency( $oDeliveryCost->getBruttoPrice() );

anstelle der DB Abfrage ein.

Das haut aber nicht hin, :frowning:

Hier ist der Code mit Veränderungen:

<?php
/*

  • Installation

  • Upload file to modules-Directory

  • module entry in Admin: oxbasket => marm_diff_oxbasket

  • Place the getter-Function in your template: [{$oxcmp_basket->getPriceUntilFreeShipping()}]

*/

class marm_diff_oxbasket extends marm_diff_oxbasket_parent
{
public function getPriceUntilFreeShipping()
{
if ( $this->_oProductsPriceList ) {

          $productsPrice = $this-&gt;_oProductsPriceList-&gt;getBruttoSum(); 
    
	$freeShippingPrice = $this-&gt;getCosts( 'oxdelivery' );
    if ( $oDeliveryCost && ( $this-&gt;getBasketUser() || $this-&gt;getConfig()-&gt;getConfigParam( 'blCalculateDelCostIfNotLoggedIn' ) ) ) {
        return oxLang::getInstance()-&gt;formatCurrency( $oDeliveryCost-&gt;getBruttoPrice() );
    

        
        $priceDiff = $freeShippingPrice - $productsPrice;
        if ($priceDiff &lt; 0)
        {
            $priceDiff=0;
        }
        return oxLang::getInstance()-&gt;formatCurrency( $priceDiff, $this-&gt;getBasketCurrency() );
       
    }
    return null;
}

}
?>

Was passt hier nicht?

Kann mir wirklich niemand sagen wie die Variable $freeShippingPrice richtig definiere?

Ich bin jetzt kein Profi, aber kannste wirklich mit $freeShippingPrice rechnen?

$freeShippingPrice = $this->getCosts( 'oxdelivery' );

Gibt das nicht ein Objekt?

Hi tvtotal,
Das weiß ich leider nicht, bin auch kein Profi.
Ich habe einfach die ganze Funktion kopiert die diese Summe ausgibt und das scheint falsch zu sein. :slight_smile:

Ja $freeShipping ist ein Objekt, du musst mit

$freeShipping->getBruttoPrice() 

arbeiten

[QUOTE=aggrosoft;129617]Ja $freeShipping ist ein Objekt[/QUOTE]

Jepp, ich mir auf die Schulter klopf :smiley:

Hallo,

@kostavan: das ist genau der richtige Ansatz, gefällt mir gut :slight_smile:

Vielleicht dennoch zwei kleine Hinweise:

  • wenn Du Code postest, gibt es im Forum eine Funktion, um das entsprechend auszuweisen, damit wird es für andere sehr viel besser lesbar.
  • Du modifizierst ein Modul, das unter einer OS-Lizenz auf GitHub erhältlich ist: https://github.com/jkrug/diffToFreeShipping
    Denk mal drüber nach, ob es sich vielleicht lohnt, Deine Änderungen in das Modul mit einfliessen zu lassen. Das geht recht einfach über einen so genannten Pull Request. Der Effekt ist, dass Joscha - selbst wenn er es nicht zu 100% so übernehmen kann, weil zu speziell, auf diese Möglichkeit aufmerksam wird und es evtl. ähnlich im Modul verwerten kann.

Gruß

Hallo zusammen,

wir haben das Modul installiert aber im Warenkorb zeigt es immer: “Nur noch 0,00 € und wir schicken Ihnen Ihre Bestellung kostenlos.”

Wir liefern kostenfrei ab 100,00 €.
Auch wenn der Gesamtbetrag 60,00 € ist, zeigt es 0,00 € anstatt 40,00 €, was richtig wäre.

Wir setzen die Oxid Version 4.8.5. ein.

Ich wäre sehr dankbar, wenn jemmand uns helfen konnte.

Vielen Dank.

Hallo,

wahrscheinlich ist das Modul nicht mehr mit der von Dir eingesetzten Shopversion kompatibel.

Gruß

Hallo Marco,

vielen Dank für die schnelle Antwort.

Wenn es jemand ganz genau weiß, kann sich ja bitte melden.

Gruß

wenn du Lust hast, probiers damit:

Spitze!

Damit hat alles wunderbar geklappt.

Vielen Dank!