Ich hab sowas ähnliches bei uns auch gemacht. Dort wird allerdings immer die teuerste Versandkosten Art genommen. Du müsstest noch irgendwo einbauen, dass es abhängig von deinem Artikel ist. Vielleicht hilft es dir ja bei der Inspiration. Deinen Fall müsste man aber auch direkt über das Versandkosten Modul abbilden können, so wie @NextMike schon beschrieben hat.
session = $session;
}
/**
* @inheritdoc
*/
public static function getSubscribedEvents()
{
return [
'sAdmin::sGetPremiumDispatches::after' => 'afterGetDispatches',
];
}
public function afterGetDispatches(\Enlight_Hook_HookArgs $args)
{
$dispatches = $args->getReturn();
/** @var \sAdmin $sAdmin */
$sAdmin = $args->getSubject();
$countryParam = ['id' => $args->offsetGet('countryID')];
$dispatches = new ArrayCollection($dispatches);
$dispatches = $dispatches->map(function ($el) use($countryParam, &$sAdmin) {
// session value required for sGetPremiumShippingcosts method call
$this->session->offsetSet('sDispatch', $el['id']);
$el['ghBruttoAmount'] = $sAdmin->sGetPremiumShippingcosts($countryParam)['brutto'];
return $el;
});
$criteria = Criteria::create()
->orderBy(array('ghBruttoAmount' => Criteria::DESC));
$dispatches = $dispatches->matching($criteria);
$this->session->offsetSet('sDispatch', $dispatches->first()['id']);
return $dispatches;
}
}