Preise

Land

mit dem Paramter ?language=de_DE wird das Land in der Anwendung über den Request gesteuert.

Die Methode initLocale in /alvine/components/alvine.application/application/source/Web.class.php steuert das. Damit der Paramter auch greift muss in den assembly.properties 'application.locale.languages=de,en,de_DE,en_DE' der Wert auch definiert sein.

Preise eines Produktes laden

Mit dem Price Provider werden die Bestände für ein Produkt geladen.

$iid=2568;
$priceProvider=new \Alvine\Application\Platform\Plugin\Commerce\Item\Price\Provider();
$priceCollection=$priceProvider->getAvailablePriceFromIIDWithFactory($iid, new \Alvine\Application\Platform\Plugin\Commerce\Item\Price\Factory());

Die Price Strategy holt sich aus der Plugin Konfiguration die Strategie Factory, die wiederum die Strategie erstellt.
Die Factory bekommt die zuvor geladenen Preise.

$priceStrategyFactory->setPriceCollection($priceCollection);

Die Factory wird mit weiteren Informationen ereitert , die für das Berechnen der Preise berücksichtigt werden sollen

$priceStrategyFactory->setItemVariant('XL');
$priceStrategyFactory->setLocale(\Alvine\I18n\Locale::getInstance('de'));
$priceStrategyFactory->setCustomerUID(1235);
$priceStrategyFactory->setCompanySHID(1);

nun kann die Strategie erstellt werden

$priceStrategy=$priceStrategyFactory->createPriceStrategy();

nun kann der Preis und die Steuer ermittelt werden.

$price=$priceStrategy->getPrice();
$net=$priceStrategy->getNet()
$gross=$priceStrategy->getGross()
$vat=$priceStrategy->getVat()

Convertieren

Die Preise werden in der Datenbank als INT gespeichert. Die Netto und Brutto Werte kommen als Money Objekte da diese Berechnet werden müssen.
Die Umwandlung übernimmt der Converter.

Umwandlung in ein Price Objekt

$price = \Alvine\Application\Platform\Plugin\Commerce\Item\Price\Converter::toPrice($priceStrategy->getNet(), $price->getDigits());
/**
 * Wert zum speichern in der Datenbank
 */
$value = $price->getAmount();

Umwandlung in ein Money Objekt

$money = \Alvine\Application\Platform\Plugin\Commerce\Item\Price\Converter::toMoney($price);

Darstellung

Brutto oder Netto anzeigen

Der Trait \Alvine\Application\Platform\Plugin\Commerce\Logic\Item\Price\Display legt die Ausgabe fest.