Здравствуйте, нужно немного доработать imagecms. Стоимость пишите сами, и срок. Пишите только те, кто сможет быстро сделать, срок 2-3 дня. Оставляйте цены и контакты для связи.
Вводная сайт постоен на ImageCMS, которая в свою очередь написана на фрейморке CodeIgniter
Задачи:
В админке, при редактировании товаров, есть поле Дополнительные категории
В это поле добавляются родительские категории товара, для того чтобы товар был виден в родительских категориях.
При сохранении товара с дополнительными категориями, категории сохраняются в товаре и товар выводится во фронтэнде в этих категориях.
Но при повторном открытии товара на редактирование, дополнительные категории не показываются. Соответственно их нельзя и удалить.
Необходимо проверить почему не показываются дополнительные категории и восстановить функционал.
Такой же функционал работает на вкладке Свойства.
2. Необходимо доработать функционал модуля скидок так, чтобы при его помощи можно было устанавливать наценки для товаров.
На сайте есть модуль скидок, но он работает только со скидками
clip2net.com/s/3AslmcW Находится модуль тут
/us-express.ru/application/modules/mod_discount/
В нем частично доработан функционал для установки нацеки (отрицательной скидки).
Так в админке для наценки необходимо ввести отрицательное значение.
Для расчета наценок во фронтенде был расширен класс BaseDiscount функцией:
public function getMaxMarkup($markup, $price) {
$markup = array_filter(
$markup, function($el) {
return !empty($el);
});
//считаем максимальную наценку
$maxMarkup = 0;
foreach ($markup as $key => $disc) {
$discountValue = $this->getDiscountValue($disc, $price);
if ($maxMarkup >= $discountValue) {
$maxMarkup = $discountValue;
$keyMax = $key;
}
}
return $markup[$keyMax];
}
Функция считает максимальную наценку.
Далее в классе Discount_product расширена функция
public function getProductDiscount($product, $price = null) {
$discountArray = $this->getDiscountOneProduct($product);
if (count($discountArray) > 0) {
if (null === $price)
$price = $this->ci->discount_model_front->getPrice($product[' vid']);
$discountMax = $this->baseDiscount->getMaxDiscount($discountArray, $price);
$markupMax = $this->baseDiscount->getMaxMarkup($discountArray, $price);
if ($markupMax['value']!=0) {
$price = $price $this->baseDiscount->getDiscountValue($markupMax, $price);
}
$discountValue = $this->baseDiscount->getDiscountValue($discountMax, $price);
} else {
CMSFactoryassetManager::create()->discount = false;
return false;
}
CMSFactoryassetManager::create()->discount = array(
'discoun_all_product' => $discountArray,
'discount_max' => $discountMax,
'discount_value' => $discountValue,
'price' => $price
);
return true;
}
Получается что перед расчетом скидки, функция ищет наценки и применяет их к оригинальной цене.
Данный функционал прекрасно работает на страницах каталога и на странице товара(осталось поставить условие чтобы не показывать старую цену если она равна новой)
Но при добавлении товара в корзину, а потом и в заказ, этот функционал не работает, там используется свой функционал.
Необходимо доработать функционал так, чтобы при добавлении в корзину для оригинальной цены применялись наценки.
Для получения цен есть класс ItemVariant
Лежит он тут us-express.ruapplicationmodulesshopclassesCartItemsTypesItemVaria nt.php
После доработки этого функционала товар по идее должен попадать в корзину вместе с наценкой.