Hallo zusammen,
ich bin etwas eingerostet was die programmierung betrifft und mein Entwickler ist im Urlaub. Ich habe aber trotzdem versucht das problem zu lösen, stecke aber gerade etwas fest.
Ich habe ein Plug-In was es ermöglicht ein Artikel nach Fläche berechnen zu lassen. Leider wurde vergessen die verschiedenen Kundengruppen zu berücksichtigen. Somit passiert folgendes. Wenn man sich in einer Kundengruppe befindet in der der Shop Nettopreise anzeigt, wird die Mwst dummerweise nochmal im Warenkorb abgezogen. Ist man normaler EK ist alles fein.
Schaut man sich dann als Händler das Produkt im S_order_Basket an so sieht man das beide preise price und netprice gleich sind.
Also auf die Suche im Plug-In und siehe da:
$calculatorArray = $this->getBasketItemAreaCalculator($id);
if ($calculatorArray) {
//Preis-Brutto
$totalPrice = $calculatorArray[‚totalprice‘];
$taxRate = Shopware()->Modules()->Articles()->getTaxRateByConditions($return[„taxID“]);
$netTotalPrice = $totalPrice / (100.0 + $taxRate) * 100.0;
$return[‚price‘] = $netTotalPrice;
}
//alle Basket-Daten ermitteln
//$basketData = Shopware()->Modules()->Basket()->sGetBasketData();
return $return;
} catch (\Exception $e) {
Shopware()->PluginLogger()->error($e->getMessage());
}
Alles klar. Hier stellt sich schon diue Frage welchen Preis das ganze zurück gibt. Von
der Logik her würde ich sagen das er price als nettopreis zurück gibt. Allerdings
ist der preis von SArticle_price ja immer netto. Also macht das eigentlich keinen Sinn oder?
Da der Fehler schon auftritt wenn man das ganze in den Warenkorb legt habe ich mir nochmal
sBasket.php angeschaut. Denn in der products.tpl und auch in der cart_footer.tpl wird ja je
nach Kundengruppe der Preis Brutto oder Netto ausgegeben.
Meine Idee war diese Abfrage in das Plug-In zu übernehmen. Hier bin ich dann über
folgende stelle gestolpert: public function sGetBasketData()
if (!empty($result[‚content‘])) {
foreach ($result[‚content‘] as $key => $value) {
if (!empty($value[‚amountWithTax‘])) {
$t = round((float) str_replace(’,’, ‚.‘, $value[‚amountWithTax‘]), 2);
} else {
$t = str_replace(’,’, ‚.‘, $value[‚price‘]);
$t = (float) round($t * $value[‚quantity‘], 2);
}
if (!$this->sSYSTEM->sUSERGROUPDATA[‚tax‘] && $this->sSYSTEM->sUSERGROUPDATA[‚id‘]) {
$p = (float) $this->moduleManager->Articles()->sRound(
$this->moduleManager->Articles()->sRound(round($value[‚netprice‘], 2) * $value[‚quantity‘])
);
} else {
$p = (float) $this->moduleManager->Articles()->sRound(
$this->moduleManager->Articles()->sRound($value[‚netprice‘] * $value[‚quantity‘])
);
}
$calcDifference = $this->moduleManager->Articles()->sFormatPrice($t - $p);
$result[‚content‘][$key][‚tax‘] = $calcDifference;
}
}
In der Usergroup steht ja tax=1 für brutto und 0 für netto. Allerdings versteh ich ich hier nicht
wie er das ermittelt. Er fragt nach meinem Verständnis nur ab ob amountWithTax leer ist.
Als ich dann in die Templates geschaut habe, das die unterschiedlichen Werte als:
$sAmountWithTax und $sAmount ausgegeben werden war ich TILT.
Kann mir hier jemand vielleicht sagen wie ich das am besten anstelle und wo ich
die Variablen her bekomme das ich die Abfrage ins Plug-In bekomme? Vielleicht ist
mein Ansatz aber auch komplett falsch, da ich nicht so tief in der Produktkallkulation
von Shopware drin bin. Mein Part sind eher Themes
Ich bedanke mich schonmal bei allen für die Hilfe.