Например, Элемент(товар) изменился через админ панель или после выгрузки 1С.
Перейдем в classes/modules/catalog
Редактируем файл events.php
Мы добавили строчку
1 |
new umiEventListener('exchangeOnUpdateElement', 'catalog', 'CustomExchangePrice1C'); |
Откроем файл _custom.php
Добавим в абстрактный класс __custom_catalog наш Метод(событие)
1 2 3 4 5 6 |
public function CustomExchangePrice1C(iUmiEventPoint $event) { if ($event->getMode() == 'after') { $objId = $event->getRef('element')->objectId; file_get_contents('/customEvent/discountById.php?id=' . $objId); } } |
Создадим папку от корня customEvent и в ней создадим файл discountById.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<?php include $_SERVER['DOCUMENT_ROOT'] . "/standalone.php"; if (isset($_GET['id'])) { $id = $_GET['id']; function getDiscountPrice($price, $percent) { $discount = $price * $percent / 100; return $price - $discount; } // Получаем объекты $get = umiObjectsCollection::getInstance(); $object = $get->getObject($id); $percent = $object->getValue('sale_percent'); $dateStart = $object->getValue('sale_start'); $dateEnd = $object->getValue('sale_end'); if (isset($percent) && isset($dateStart) && isset($dateEnd)) { $price = $object->getValue('price'); $priceOld = $object->getValue('old_price'); $dateNow = new DateTime(); $dateNow = $dateNow->format('Y-m-d'); $needDiscount = ($dateNow >= $dateStart && $dateNow <= $dateEnd) ? true : false; if ($needDiscount) { // Ставим скидку $newPrice = getDiscountPrice($price, $percent); if ($priceOld == 0) { $object->setValue('price', $newPrice); $object->setValue('old_price', $price); $object->commit(); } else if ($priceOld == $price) { $object->setValue('price', $newPrice); $object->commit(); } } else { // убираем скидку if ($priceOld != 0) { // если есть старая цена $object->setValue('price', $priceOld); $object->setValue('old_price', 0); $object->commit(); } } } } |