Skip to content
Code-Schnipsel Gruppen Projekte
Bestätigt Commit 4ee82098 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

Merge branch 'dev'

Übergeordnete d39f2035 276d2862
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
......@@ -15,6 +15,9 @@
<event on="onQuiqqerOrderOrderProcessCheckoutOutput"
fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerOrderOrderProcessCheckoutOutput"
/>
<event on="onQuiqqerOrderOrderProcessCheckoutOutputBefore"
fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerOrderOrderProcessCheckoutOutputBefore"
/>
<event on="onUserSaveBegin"
fire="\QUI\ERP\Shipping\EventHandler::onUserSaveBegin"
/>
......
......@@ -7,10 +7,14 @@
namespace QUI\ERP\Shipping;
use QUI;
use QUI\ERP\Products\Handler\Fields as ProductFields;
use QUI\ERP\Order\Controls\OrderProcess\Checkout as OrderCheckoutStepControl;
use QUI\Template;
use \Quiqqer\Engine\Collector;
use QUI\ERP\Products\Handler\Fields as ProductFields;
use Quiqqer\Engine\Collector;
use function array_merge;
use function explode;
use function json_decode;
use function method_exists;
/**
* Class EventHandler
......@@ -137,7 +141,7 @@ public static function onQuiqqerOrderBasketToOrderEnd(
$Order->getArticles()->calc();
if (\method_exists($Order, 'save')) {
if (method_exists($Order, 'save')) {
$Order->save();
}
}
......@@ -168,7 +172,7 @@ public static function onQuiqqerPaymentCanUsedInOrder(
return;
}
$payments = \explode(',', $payments);
$payments = explode(',', $payments);
$Payments = QUI\ERP\Accounting\Payments\Payments::getInstance();
foreach ($payments as $paymentId) {
......@@ -211,6 +215,42 @@ public static function onOrderProcessCustomerDataEnd(
$Collector->append($Control->create());
}
public static function onQuiqqerOrderOrderProcessCheckoutOutputBefore(
OrderCheckoutStepControl $Checkout
) {
if (Shipping::getInstance()->shippingDisabled()) {
return;
}
$Order = $Checkout->getOrder();
if (!$Order) {
return;
}
if ($Order->hasDeliveryAddress()) {
return;
}
$SessionUser = QUI::getUserBySession();
$Customer = $Order->getCustomer();
if ($SessionUser->getId() !== $Customer->getId()) {
return;
}
$addressId = $SessionUser->getAttribute('quiqqer.delivery.address');
if ($addressId) {
try {
$DeliveryAddress = $Customer->getAddress($addressId);
$Order->setDeliveryAddress($DeliveryAddress);
$Order->save(QUI::getUsers()->getSystemUser());
} catch (\Exception $Exception) {
}
}
}
/**
* quiqqer/order: onQuiqqerOrderOrderProcessCheckoutOutput
*
......@@ -240,13 +280,13 @@ public static function onQuiqqerOrderOrderProcessCheckoutOutput(OrderCheckoutSte
if (!empty($deliveryAddressId)) {
try {
$DeliveryAddress = $Customer->getAddress($deliveryAddressId);
$ErpDeliveryAddres = new QUI\ERP\Address(
\json_decode($DeliveryAddress->toJSON(), true),
$DeliveryAddress = $Customer->getAddress($deliveryAddressId);
$ErpDeliveryAddress = new QUI\ERP\Address(
json_decode($DeliveryAddress->toJSON(), true),
$Order->getCustomer()
);
$Order->setDeliveryAddress($ErpDeliveryAddres);
$Order->setDeliveryAddress($ErpDeliveryAddress);
$Order->save(QUI::getUsers()->getSystemUser());
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
......@@ -292,7 +332,7 @@ public static function onQuiqqerOrderCustomerDataSave(
}
$ErpAddress = new QUI\ERP\Address(
\array_merge($Address->getAttributes(), ['id' => $Address->getId()])
array_merge($Address->getAttributes(), ['id' => $Address->getId()])
);
$Order->setDeliveryAddress($ErpAddress);
......@@ -345,11 +385,14 @@ public static function onUserSaveBegin(QUI\Users\User $User)
try {
$Address = $User->getAddress($address);
$User->setAttribute('quiqqer.delivery.address', $Address->getId());
} catch (QUI\Exception $Exception) {
QUI\System\Log::writeDebugException($Exception);
}
if (isset($Address)) {
QUI\ERP\Utils\User::setUserCurrentAddress($User, $Address);
}
}
/**
......@@ -445,7 +488,7 @@ public static function onQuiqqerProductsPriceEnd(Collector $Collector, QUI\ERP\P
}
$Engine = QUI::getTemplateManager()->getEngine();
$html = $Engine->fetch(dirname(__FILE__).'/templates/shippingInformation.html');
$html = $Engine->fetch(dirname(__FILE__) . '/templates/shippingInformation.html');
$Collector->append($html);
}
......
......@@ -9,6 +9,8 @@
use QUI;
use QUI\ERP\Shipping\Shipping as ShippingHandler;
use function count;
/**
* Class Shipping
*
......@@ -25,7 +27,7 @@ public function __construct($attributes = [])
{
parent::__construct($attributes);
$this->addCSSFile(\dirname(__FILE__).'/Shipping.css');
$this->addCSSFile(\dirname(__FILE__) . '/Shipping.css');
}
/**
......@@ -76,7 +78,7 @@ public function getBody()
$DebugShippingEntry->setOrder($Order);
QUI\ERP\Shipping\Debug::enable();
QUI\ERP\Shipping\Debug::addLog('# '.$DebugShippingEntry->getTitle());
QUI\ERP\Shipping\Debug::addLog('# ' . $DebugShippingEntry->getTitle());
if ($DebugShippingEntry->canUsedBy($User, $Order)) {
$DebugShippingEntry->isValid();
......@@ -92,7 +94,7 @@ public function getBody()
QUI\ERP\Shipping\Debug::disable();
$Logger->info("\n\n".\implode("\n", $debugStack));
$Logger->info("\n\n" . \implode("\n", $debugStack));
$Engine->assign('debug', \implode("\n", $debugStack));
}
......@@ -128,7 +130,7 @@ public function getBody()
'shippingList' => $shippingList
]);
return $Engine->fetch(\dirname(__FILE__).'/Shipping.html');
return $Engine->fetch(\dirname(__FILE__) . '/Shipping.html');
}
/**
......@@ -157,7 +159,7 @@ public function validate()
// if shipping are selectable and no shipping is selected
$shippingList = $this->getValidShipping();
if ($Shipping === null && \count($shippingList) === 1) {
if ($Shipping === null && count($shippingList) === 1) {
try {
$Order->setShipping($shippingList[0]);
$Order->save();
......
......@@ -8,13 +8,18 @@
use QUI;
use QUI\CRUD\Factory;
use QUI\Translator;
use QUI\Permissions\Permission;
use QUI\ERP\Shipping\Api;
use QUI\ERP\Shipping\Debug;
use QUI\ERP\Shipping\Rules\Factory as RuleFactory;
use QUI\ERP\Shipping\Rules\ShippingRule;
use QUI\Permissions\Permission;
use QUI\Translator;
use function array_keys;
use function count;
use function json_encode;
use function key;
use function max;
/**
* Class ShippingEntry
......@@ -76,8 +81,8 @@ public function toArray()
$lg = 'quiqqer/shipping';
$id = $this->getId();
$attributes = $this->getAttributes();
$Locale = QUI::getLocale();
$attributes = $this->getAttributes();
$Locale = QUI::getLocale();
$currentLang = $Locale->getCurrent();
$availableLanguages = QUI\Translator::getAvailableLanguages();
......@@ -102,8 +107,8 @@ public function toArray()
);
if ($language === $currentLang) {
$attributes['currentTitle'] = $attributes['title'][$language];
$attributes['currentDescription'] = $attributes['description'][$language];
$attributes['currentTitle'] = $attributes['title'][$language];
$attributes['currentDescription'] = $attributes['description'][$language];
$attributes['currentWorkingTitle'] = $attributes['workingTitle'][$language];
}
}
......@@ -118,11 +123,11 @@ public function toArray()
}
// icon
$attributes['icon'] = '';
$attributes['icon'] = '';
$attributes['icon_path'] = '';
try {
$attributes['icon'] = $this->getIcon();
$attributes['icon'] = $this->getIcon();
$attributes['icon_path'] = $this->getAttribute('icon');
} catch (QUI\Exception $Exception) {
QUI\System\Log::writeDebugException($Exception);
......@@ -140,7 +145,7 @@ public function toArray()
*/
public function toJSON()
{
return \json_encode($this->toArray());
return json_encode($this->toArray());
}
/**
......@@ -183,17 +188,17 @@ public function getPriceDisplay()
{
$PriceFactor = $this->toPriceFactor();
$Order = $this->Order;
$Order = $this->Order;
$isNetto = false;
/* @var $Order QUI\ERP\Order\Order */
if ($Order) {
$Customer = $Order->getCustomer();
$isNetto = $Customer->isNetto();
$isNetto = $Customer->isNetto();
}
// display is incl vat
$vat = $PriceFactor->getVat();
$vat = $PriceFactor->getVat();
$price = $this->getPrice();
if (!$isNetto && $vat) {
......@@ -222,7 +227,7 @@ public function getPrice()
foreach ($rules as $Rule) {
$discount = $Rule->getAttribute('discount');
$type = $Rule->getDiscountType();
$type = $Rule->getDiscountType();
if ($type === QUI\ERP\Shipping\Rules\Factory::DISCOUNT_TYPE_ABS) {
$price = $price + $discount;
......@@ -232,15 +237,15 @@ public function getPrice()
if ($type === QUI\ERP\Shipping\Rules\Factory::DISCOUNT_TYPE_PC_ORDER && $Order) {
try {
/* @var $Order QUI\ERP\Order\Order */
$Order = $this->Order;
$Order = $this->Order;
$Calculation = $Order->getPriceCalculation();
$nettoSum = $Calculation->getNettoSum()->get();
$nettoSum = $Calculation->getNettoSum()->get();
if (!$nettoSum) {
continue;
}
$pc = \round($nettoSum * ($discount / 100));
$pc = \round($nettoSum * ($discount / 100));
$price = $price + $pc;
continue;
......@@ -249,7 +254,7 @@ public function getPrice()
}
}
$pc = \round($price * ($discount / 100));
$pc = \round($price * ($discount / 100));
$price = $price + $pc;
}
......@@ -513,7 +518,7 @@ protected function setShippingLocale($var, $title)
continue;
}
$data[$language] = $title[$language];
$data[$language] = $title[$language];
$data[$language . '_edit'] = $title[$language];
}
......@@ -556,7 +561,7 @@ public function addShippingRule(ShippingRule $Rule)
$shippingRules[] = $Rule->getId();
}
$this->setAttribute('shipping_rules', \json_encode($shippingRules));
$this->setAttribute('shipping_rules', json_encode($shippingRules));
}
/**
......@@ -586,7 +591,7 @@ public function getShippingRules()
return [];
}
$debugging = QUI\ERP\Shipping\Shipping::getInstance()->debuggingEnabled();
$debugging = QUI\ERP\Shipping\Shipping::getInstance()->debuggingEnabled();
$debuggingLog = [];
// get rules
......@@ -777,26 +782,26 @@ public function toPriceFactor(
/* @var $Article QUI\ERP\Accounting\Article */
$Articles = $Order->getArticles();
$vats = [];
$vats = [];
foreach ($Articles as $Article) {
$vat = $Article->getVat();
$vat = $Article->getVat();
$price = $Article->getPrice()->getValue();
if (!isset($vats[$vat])) {
$vats[$vat] = 0;
if (!isset($vats[(string)$vat])) {
$vats[(string)$vat] = 0;
}
$vats[$vat] = $vats[$vat] + $price;
$vats[(string)$vat] = $vats[(string)$vat] + $price;
}
// look at vat, which vat should be used
if (\count($vats) === 1) {
$PriceFactor->setVat(\key($vats));
if (count($vats) === 1) {
$PriceFactor->setVat(key($vats));
} else {
// get max, use the max VAT if multiple exists
// @todo implement VAT setting for shipping
$maxVat = \max(\array_keys($vats));
$maxVat = max(array_keys($vats));
$PriceFactor->setVat($maxVat);
}
......
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren