Skip to content

Instantly share code, notes, and snippets.

@kalbac
Last active June 4, 2022 21:13
Show Gist options
  • Select an option

  • Save kalbac/855b48bec42c27c8d0bfd0354093e4dd to your computer and use it in GitHub Desktop.

Select an option

Save kalbac/855b48bec42c27c8d0bfd0354093e4dd to your computer and use it in GitHub Desktop.
Принудительно уменьшить стоимость товара если в заказе есть скидка [Tinkoff кредит]
<?php
/*
* Сниппет предназначен для уменьшения стоимости товара если к заказу применина скидка.
* Скидка примениться к одному из товаров, итоговая сумма которого привышает сумму скидки в заказе.
* По вопросам обращайтесь на емайл [email protected] или через контактную форму https://woodev.ru/support
* Нижеприведённый код необходимо вставить в файл functions.php вашей активной темы.
* Автор кода не несёт отвественности в случае возникновеня каких либо проблем при использовании данного кода.
* Любые изменения которые вы вносите в код вашего сайта, вы делаете это на свой страх и риск.
* Код представлен для ознакомления как есть. Вы должны понимать что с этим кодом нужно делать. Если нет то обатитесь к профессионалам.
*/
add_filter( 'wc_tinkoff_api_create_request_params', function( $params, $order ) {
//Проверяем, если ли в заказе скидка с отрицательным значением цисла.
if( $order->get_total_fees() && $order->get_total_fees() < 0 ) {
//Конвертируем в абсолютное число
$fees_amout = abs( $order->get_total_fees() );
//Пробегаемся по всем товарам в заказе
foreach( $params['items'] as $item_key => $item ) {
//Если общая сумма заказа больше чем сумма скидки
if( ( $item['price'] * $item['quantity'] ) > $fees_amout ) {
//Получаем часть суммы скидки от количества данного товара в заказе
$fee = $fees_amout / $item['quantity'];
//Вычетаем скидку из стоимости товара
$params['items'][ $item_key ]['price'] = $item['price'] - $fee;
break;
}
}
}
return $params;
}, 10, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment