Preise

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);

Steuern

Die Steuersätze werden in der Tabelle sh_finance_vat zentral gespeichert.

Mindestkonfiguration

Folgende werte müssen gefüllt werden

sys_vat Steuersatz zum Beispiel 1900
sys_digits Anzahl der nachkommastellen Standart 2
sys_filter_mnemonic zum Beispiel de

weitere konfiguration

Die Steuersätze können pro IID oder Kategorie oder Benugtzerguppe definiert werden

sys_filter_item_IID
sys_filter_group_GID
sys_filter_item_category_CID

Über die Datumsfelder kann eine Gültigkeit inegstellt werden.

sys_filter_date_from
sys_filter_date_to

über das sys_ranking wird die Priorität definiert

laden der Steuern

Der Vat Provider braucht ein AlvineI18nLocale Objekt um die Steuern laden zu können.
Der Steuersatz wird mit einem AlvineMeasureAmount Objekt zurück geliefert.

$provider=new \Alvine\Application\Platform\Plugin\Commerce\Finance\Vat\Provider();
$provider->setLocale($this->locale);
$vat = $provider->getVat();