$discountOrder = Sale\Order::load($orderId);
Sale\DiscountCouponsManager::add($coupon);
$discounts = $discountOrder->getDiscount();
$discounts->setOrderRefresh(true);
$discounts->calculate();
//$discountOrder->refreshData();
$basketOrder = $discountOrder->getBasket();
$basketOrder->refreshData(["PRICE", "COUPONS"]);
$discountOrder->doFinalAction(true);
$discountOrder->save();
Одно дело, как подобные вещи реализуются на простой php-страничке, и другое - в рамках структуры модуля Bitrix
То есть, вы утверждаете, что если приведенный выше код разместить в любом php-файле модуля, то на странице настроек модуля появится кнопка... Правильно?
Нужно добавить на страницу настроек модуля кнопку для загрузки файла. Кнопка должна открывать окно выбора файла на компьютереименно это и делает данная кнопка
//получаем базовую информацию
$entityList2 = \Bitrix\Sale\Internals\DiscountEntitiesTable::getByDiscount([$idProto], array());
//собираем весь массив рекурсивно
$entityListItogo = \entitirequrs($entityList2);
//вместо такого
Array
(
[main] => Array
(
[USER] => Array
(
[USER_ID] => Array
(
[MODULE_ID] => main
[ENTITY] => USER
[FIELD_ENTITY] => USER_ID
[FIELD_TABLE] => USER_ID
)
)
)
[catalog] => Array
(
[ELEMENT_PROPERTY] => Array
(
[PROPERTY_203_VALUE] => Array
(
[MODULE_ID] => catalog
[ENTITY] => ELEMENT_PROPERTY
[FIELD_ENTITY] => PROPERTY_203_VALUE
[FIELD_TABLE] => 26:203
)
[PROPERTY_198_VALUE] => Array
(
[MODULE_ID] => catalog
[ENTITY] => ELEMENT_PROPERTY
[FIELD_ENTITY] => PROPERTY_198_VALUE
[FIELD_TABLE] => 26:198
)
[PROPERTY_440_VALUE] => Array
(
[MODULE_ID] => catalog
[ENTITY] => ELEMENT_PROPERTY
[FIELD_ENTITY] => PROPERTY_440_VALUE
[FIELD_TABLE] => 26:440
)
)
)
)
получаю такой
Array
(
[0] => Array
(
[MODULE_ID] => main
[ENTITY] => USER
[FIELD_ENTITY] => USER_ID
[FIELD_TABLE] => USER_ID
)
[1] => Array
(
[MODULE_ID] => catalog
[ENTITY] => ELEMENT_PROPERTY
[FIELD_ENTITY] => PROPERTY_203_VALUE
[FIELD_TABLE] => 26:203
)
[2] => Array
(
[MODULE_ID] => catalog
[ENTITY] => ELEMENT_PROPERTY
[FIELD_ENTITY] => PROPERTY_198_VALUE
[FIELD_TABLE] => 26:198
)
[3] => Array
(
[MODULE_ID] => catalog
[ENTITY] => ELEMENT_PROPERTY
[FIELD_ENTITY] => PROPERTY_440_VALUE
[FIELD_TABLE] => 26:440
)
)
\Bitrix\Sale\Internals\DiscountEntitiesTable::updateByDiscount($DISCOUNT_ID, $entityListItogo, false);
// заменяем id пользователя
$dctPrototype['CONDITIONS_LIST']['CHILDREN'][0]['DATA']['value'][0] = $UserId;
[PRIORITY] => 149
[LAST_DISCOUNT] => N
[LAST_LEVEL_DISCOUNT] => Y
[VERSION] => 3
[CONDITIONS_LIST] => Array
(
[CLASS_ID] => CondGroup
[DATA] => Array
(
[All] => AND
[True] => True
)
[CHILDREN] => Array
(
)
)
[UNPACK] => function($arOrder){return ((1 == 1)); };
[ACTIONS_LIST] => Array
[ACTIONS_LIST] => Array
(
[CLASS_ID] => CondGroup
[DATA] => Array
(
[All] => AND
)
[CHILDREN] => Array
(
[0] => Array
(
[CLASS_ID] => ActSaleBsktGrp
[DATA] => Array
(
[Type] => Discount
[Value] => 15
[Unit] => Perc
[Max] => 0
[All] => AND
[True] => True
)
$result = \Bitrix\Sale\Internals\DiscountTable::add($dctPrototype);
$inline_keyboard_auth=[
[
[
'text' =>'Кнопка',
'callback_data' => 'k_btn,
"web_app"=> [
"url"=>"https://revenkroz.github.io/telegram-web-app-bot-example/index.html"
]
]
]
];
А с бекапом нет вариантов просто по причине того что проект на сервере занимает 90% места из 512 гигов, соответсвенно бекап не сделаешь, да и у меня локально нет столько места, даже половины. Отдельный сервер тоже никто не предоставит и не оплатит. Отказаться не могу это не фриланс.