diff --git a/ajax/activate.php b/ajax/activate.php index c26bb1318d916d4559f61dd8309df96a3dae58eb..f0d9443ea69e53cae2a5c33bb276741eacb690e7 100644 --- a/ajax/activate.php +++ b/ajax/activate.php @@ -21,6 +21,6 @@ function ($discountId) { return $Discount->isActive(); }, - array('discountId'), + ['discountId'], 'Permission::checkAdminUser' ); diff --git a/ajax/create.php b/ajax/create.php index 9858366cdec1ff3598f0776e2256e12822bfdba5..44fb53279a924cdeab5896a339e4b35b309e97a1 100644 --- a/ajax/create.php +++ b/ajax/create.php @@ -23,6 +23,6 @@ function ($params) { return $Discount->getId(); }, - array('params'), + ['params'], 'Permission::checkAdminUser' ); diff --git a/ajax/deactivate.php b/ajax/deactivate.php index 142c5538c1d71a5d8fc02e0d632bd9e4dd2ff481..dd763228ecbc5ffebc4a748674d7cf86c7324574 100644 --- a/ajax/deactivate.php +++ b/ajax/deactivate.php @@ -21,6 +21,6 @@ function ($discountId) { return $Discount->isActive(); }, - array('discountId'), + ['discountId'], 'Permission::checkAdminUser' ); diff --git a/ajax/deleteChild.php b/ajax/deleteChild.php index 24157332404fc25e6649dfcefa8a179cdd63f98b..c95c99f64a87e6cef6a6a142b88c09af14e8ad6a 100644 --- a/ajax/deleteChild.php +++ b/ajax/deleteChild.php @@ -18,6 +18,6 @@ function ($discountId) { $Discount = $Discounts->getChild($discountId); $Discount->delete(); }, - array('discountId'), + ['discountId'], 'Permission::checkAdminUser' ); diff --git a/ajax/deleteChildren.php b/ajax/deleteChildren.php index 28a15d55ac7f042ce532dcb32f072a585a08ee47..933bcbb89e1c04755945a8e19a2f2b97d6750af0 100644 --- a/ajax/deleteChildren.php +++ b/ajax/deleteChildren.php @@ -31,6 +31,6 @@ function ($discountIds) { throw new $ExceptionStack(); } }, - array('discountIds'), + ['discountIds'], 'Permission::checkAdminUser' ); diff --git a/ajax/get.php b/ajax/get.php index fdb588e83d6ce02c2da27f6e6ff03eb8c3087bcd..c6efba879f4379ba5eefd623da3483d423e66e3e 100644 --- a/ajax/get.php +++ b/ajax/get.php @@ -23,6 +23,6 @@ function ($id) { return $attributes; }, - array('id'), + ['id'], 'Permission::checkAdminUser' ); diff --git a/ajax/search.php b/ajax/search.php index c9027b9587df8e68861a6acd70d98997fc1b6c76..ed5bed6b547b04777961ce1beace37b9b0e28848 100644 --- a/ajax/search.php +++ b/ajax/search.php @@ -15,17 +15,17 @@ 'package_quiqqer_discount_ajax_search', function ($fields, $params) { $Discounts = new QUI\ERP\Discount\Handler(); - $result = array(); + $result = []; $Locale = QUI::getLocale(); $allowedFields = $Discounts->getChildAttributes(); - $query = array(); + $query = []; $params = json_decode($params, true); $fields = json_decode($fields, true); if (!is_array($fields)) { - $fields = array(); + $fields = []; } if (isset($params['order'])) { @@ -43,24 +43,24 @@ function ($fields, $params) { continue; } - $query['where_or'][$field] = array( + $query['where_or'][$field] = [ 'type' => '%LIKE%', 'value' => $value - ); + ]; } // search $data = $Discounts->getChildrenData($query); foreach ($data as $entry) { - $entry['title'] = array( + $entry['title'] = [ 'quiqqer/discount', - 'discount.' . $entry['id'] . '.title' - ); + 'discount.'.$entry['id'].'.title' + ]; $entry['text'] = $Locale->get( 'quiqqer/discount', - 'discount.' . $entry['id'] . '.title' + 'discount.'.$entry['id'].'.title' ); $result[] = $entry; @@ -72,6 +72,6 @@ function ($fields, $params) { return $result; }, - array('fields', 'params'), + ['fields', 'params'], 'Permission::checkAdminUser' ); diff --git a/ajax/toggle.php b/ajax/toggle.php index ddfc0ebd7651e34b941cc2aa57b84ddde6f13b2e..da595f9bada0f6e63ae5265e392e8951053c7bad 100644 --- a/ajax/toggle.php +++ b/ajax/toggle.php @@ -26,6 +26,6 @@ function ($discountId) { return $Discount->isActive(); }, - array('discountId'), + ['discountId'], 'Permission::checkAdminUser' ); diff --git a/ajax/update.php b/ajax/update.php index d13deae70f4f49eccfc3f24479ed4b5cfb06fb4d..790782af429c5fef61ca11ff961c8f7efc39f44c 100644 --- a/ajax/update.php +++ b/ajax/update.php @@ -22,6 +22,6 @@ function ($discountId, $params) { $Discount->setAttributes($params); $Discount->update(); }, - array('discountId', 'params'), + ['discountId', 'params'], 'Permission::checkAdminUser' ); diff --git a/bin/controls/DiscountEdit.html b/bin/controls/DiscountEdit.html index e5f690e89259a5549228038115afe0c347479684..33177590df647b0ff185b6de3c5210eb43f80c7c 100644 --- a/bin/controls/DiscountEdit.html +++ b/bin/controls/DiscountEdit.html @@ -174,6 +174,7 @@ <option value="1">{{usageScopeEvery}}</option> <option value="2">{{usageScopeTotal}}</option> <option value="3">{{usageScopeUnique}}</option> + <option value="4">{{usageScopeGrandTotal}}</option> </select> </label> </td> diff --git a/bin/controls/DiscountEdit.js b/bin/controls/DiscountEdit.js index bd60e790c061901cdb7273ce6d34a85640b237b7..f1f50b41253160b38f70b665b1dac850447aa0e9 100644 --- a/bin/controls/DiscountEdit.js +++ b/bin/controls/DiscountEdit.js @@ -77,11 +77,12 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ usageLastProductDiscount : QUILocale.get(lg, 'control.edit.template.usageLastProductDiscount'), usageLastProductDiscountDesc: QUILocale.get(lg, 'control.edit.template.usageLastProductDiscountDesc'), - usageScope : QUILocale.get(lg, 'control.edit.template.usageScope'), - usageScopeEvery : QUILocale.get(lg, 'control.edit.template.usageScopeEvery'), - usageScopeTotal : QUILocale.get(lg, 'control.edit.template.usageScopeTotal'), - usageScopeUnique: QUILocale.get(lg, 'control.edit.template.usageScopeUnique'), - scopeDescription: QUILocale.get(lg, 'control.edit.template.usage.description'), + usageScope : QUILocale.get(lg, 'control.edit.template.usageScope'), + usageScopeEvery : QUILocale.get(lg, 'control.edit.template.usageScopeEvery'), + usageScopeTotal : QUILocale.get(lg, 'control.edit.template.usageScopeTotal'), + usageScopeUnique : QUILocale.get(lg, 'control.edit.template.usageScopeUnique'), + usageScopeGrandTotal: QUILocale.get(lg, 'control.edit.template.usageScopeGrandTotal'), + scopeDescription : QUILocale.get(lg, 'control.edit.template.usage.description'), calculationBasis : QUILocale.get(lg, 'control.edit.template.calculationBasis'), calculationBasisNetto : QUILocale.get(lg, 'control.edit.template.calculationBasis.netto'), diff --git a/locale.xml b/locale.xml index 63970673def7e7ce39f29d3c6ad4dc5ed02c8782..1012c4ebb005bfbe38a0b340e7d2f0e9e057bfaf 100644 --- a/locale.xml +++ b/locale.xml @@ -245,6 +245,10 @@ 'For each product' and 'On one product (Unique)' is applied to the single price of the product. ]]></en> </locale> + <locale name="control.edit.template.usageScopeGrandTotal"> + <de><![CDATA[Von Gesamtsumme abziehen]]></de> + <en><![CDATA[Deduct from grand total]]></en> + </locale> <locale name="control.edit.template.shopping.amount.of"> <de><![CDATA[Einkaufsmenge von]]></de> diff --git a/src/QUI/ERP/Discount/Discount.php b/src/QUI/ERP/Discount/Discount.php index cf4eac7d0f695dd289ee8b8d685f264c09f5c994..e737981113f95fc5f77f3247c96e700eacb4713a 100644 --- a/src/QUI/ERP/Discount/Discount.php +++ b/src/QUI/ERP/Discount/Discount.php @@ -530,6 +530,10 @@ public function toPriceFactor($Locale = null, $Customer = null) $basis = QUI\ERP\Accounting\Calc::CALCULATION_BASIS_VAT_BRUTTO; } + if ($this->getAttribute('scope') === Handler::DISCOUNT_SCOPE_GRAND_TOTAL) { + $basis = QUI\ERP\Accounting\Calc::CALCULATION_GRAND_TOTAL; + } + try { $Plugin = QUI::getPackage('quiqqer/products'); $Config = $Plugin->getConfig(); diff --git a/src/QUI/ERP/Discount/Handler.php b/src/QUI/ERP/Discount/Handler.php index 5d5a41bc2c67e8c1797542c16fc42aee26595f1b..9bcd281f99be1ea9e69afada95c527573168c91a 100644 --- a/src/QUI/ERP/Discount/Handler.php +++ b/src/QUI/ERP/Discount/Handler.php @@ -41,6 +41,13 @@ class Handler extends QUI\CRUD\Factory */ const DISCOUNT_SCOPE_UNIQUE = 3; + /** + * discount scope -> grand total + * - ignoring vat calc + * - deduct from grand total + */ + const DISCOUNT_SCOPE_GRAND_TOTAL = 4; + /** * pricefactor discount type */ diff --git a/src/QUI/ERP/Discount/Utils.php b/src/QUI/ERP/Discount/Utils.php index 1d13076e46bce8ba32a964906480d3aded987084..7cd5fd1811e877abfd69dc922cfba7950e8d2673 100644 --- a/src/QUI/ERP/Discount/Utils.php +++ b/src/QUI/ERP/Discount/Utils.php @@ -22,8 +22,10 @@ class Utils * * @param \QUI\Interfaces\Users\User $User * @return array + * + * @throws \QUI\Database\Exception */ - public static function getUserDiscounts(UserInterface $User) + public static function getUserDiscounts(UserInterface $User): array { $guString = UserGroups::getUserGroupStringFromUser($User); $guString = ','.\str_replace(',', ',|,', $guString).','; @@ -63,8 +65,10 @@ public static function getUserDiscounts(UserInterface $User) * * @param Product $Product * @return array + * + * @throws \QUI\Database\Exception */ - public static function getProductDiscounts(Product $Product) + public static function getProductDiscounts(Product $Product): array { $result = []; $Discounts = new Handler(); @@ -101,8 +105,10 @@ public static function getProductDiscounts(Product $Product) * * @param \QUI\Interfaces\Users\User $User * @return array + * + * @throws \QUI\Database\Exception */ - public static function getActiveUserDiscounts(UserInterface $User) + public static function getActiveUserDiscounts(UserInterface $User): array { $guString = UserGroups::getUserGroupStringFromUser($User); $guString = ','.\str_replace(',', ',|,', $guString).','; @@ -168,8 +174,10 @@ public static function getActiveUserDiscounts(UserInterface $User) * * @param \QUI\Interfaces\Users\User $User * @return array + * + * @throws \QUI\Database\Exception */ - public static function getUsableUserDiscounts(UserInterface $User) + public static function getUsableUserDiscounts(UserInterface $User): array { $discounts = self::getActiveUserDiscounts($User); $result = [];