diff --git a/bin/backend/controls/shippingRules/RuleWindow.js b/bin/backend/controls/shippingRules/RuleWindow.js index 55ad69f8d54eb00c2055acf7dadb6618435d92a9..536ab85d93690e90d13a468fe3f98f948e962b55 100644 --- a/bin/backend/controls/shippingRules/RuleWindow.js +++ b/bin/backend/controls/shippingRules/RuleWindow.js @@ -83,6 +83,7 @@ define('package/quiqqer/shipping/bin/backend/controls/shippingRules/RuleWindow', this.$Rule.update().then(function () { self.Loader.hide(); self.fireEvent('updateEnd', [self]); + self.close(); }); } }); diff --git a/src/QUI/ERP/Shipping/Methods/Standard/ShippingType.php b/src/QUI/ERP/Shipping/Methods/Standard/ShippingType.php index a2784b9cdc720b2e7d472d95877f625f88df71f3..7a44b060c5ec362379d34512ea7b628c6cc6b441 100644 --- a/src/QUI/ERP/Shipping/Methods/Standard/ShippingType.php +++ b/src/QUI/ERP/Shipping/Methods/Standard/ShippingType.php @@ -40,17 +40,22 @@ public function getIcon() /** * @param QUI\ERP\Order\OrderInterface $Order - * @param QUI\ERP\Shipping\Api\ShippingInterface $ShippingEntry + * @param QUI\ERP\Shipping\Types\ShippingEntry $ShippingEntry * @return bool */ public function canUsedInOrder( QUI\ERP\Order\OrderInterface $Order, - QUI\ERP\Shipping\Api\ShippingInterface $ShippingEntry + QUI\ERP\Shipping\Types\ShippingEntry $ShippingEntry ) { if ($ShippingEntry->isActive() === false) { return false; } + if (!$ShippingEntry->isValid()) { + return false; + } + + // assignment $articles = $ShippingEntry->getAttribute('articles'); $categories = $ShippingEntry->getAttribute('categories'); diff --git a/src/QUI/ERP/Shipping/Order/Shipping.php b/src/QUI/ERP/Shipping/Order/Shipping.php index fe8660397cdbe5187ff7b17a91c3733ca77a5798..e176b4868a1eb0afa10443728d04efc25b41ff8e 100644 --- a/src/QUI/ERP/Shipping/Order/Shipping.php +++ b/src/QUI/ERP/Shipping/Order/Shipping.php @@ -66,7 +66,9 @@ public function getBody() foreach ($userShipping as $ShippingEntry) { $ShippingEntry->setOrder($Order); - if ($ShippingEntry->canUsedInOrder($Order) && $ShippingEntry->canUsedBy($User)) { + if ($ShippingEntry->isValid() + && $ShippingEntry->canUsedInOrder($Order) + && $ShippingEntry->canUsedBy($User)) { $shippingList[] = $ShippingEntry; } } diff --git a/src/QUI/ERP/Shipping/Rules/ShippingRule.php b/src/QUI/ERP/Shipping/Rules/ShippingRule.php index 00f897c196895395e8afd83eda893c8717fc4544..b9c5311aa6ade0e4758e56829944c885b38fa2fd 100644 --- a/src/QUI/ERP/Shipping/Rules/ShippingRule.php +++ b/src/QUI/ERP/Shipping/Rules/ShippingRule.php @@ -89,20 +89,19 @@ public function __construct($id, Factory $Factory) } // purchase - if (empty($attributes['purchase_quantity_from'])) { - $attributes['purchase_quantity_from'] = null; - } - - if (empty($attributes['purchase_quantity_to'])) { - $attributes['purchase_quantity_until'] = null; - } - - if (empty($attributes['purchase_value_to'])) { - $attributes['purchase_value_until'] = null; - } - - if (empty($attributes['purchase_value_to'])) { - $attributes['purchase_value_until'] = null; + $nullEmpty = [ + 'purchase_quantity_from', + 'purchase_quantity_until', + 'purchase_value_from', + 'purchase_value_until', + 'unit_value', + 'unit' + ]; + + foreach ($nullEmpty as $k) { + if (empty($attributes[$k])) { + $attributes[$k] = null; + } } // update for saving diff --git a/src/QUI/ERP/Shipping/Types/ShippingEntry.php b/src/QUI/ERP/Shipping/Types/ShippingEntry.php index 27d2bed70c28d5313838c17806742c2128d6c8b8..5183de1ca3bd82b41234830f11833aca1217fdba 100644 --- a/src/QUI/ERP/Shipping/Types/ShippingEntry.php +++ b/src/QUI/ERP/Shipping/Types/ShippingEntry.php @@ -594,6 +594,33 @@ public function getShippingRules() return $result; } + /** + * Can the shipping be used basically? + * + * @return bool + */ + public function isValid() + { + if (!$this->isActive()) { + return false; + } + + $shippingRules = $this->getAttribute('shipping_rules'); + $shippingRules = \json_decode($shippingRules, true); + + if (!\is_array($shippingRules)) { + return true; + } + + $rules = $this->getShippingRules(); + + if (empty($rules)) { + return false; + } + + return true; + } + //endregion /**