Доброго времени суток.
Столкнулся с такой проблемой: после настройки партнерской программы никак не мог провести калькуляцию аффилиатов. Система выдавала "Калькуляция завершена. Калькулировано 1 аффилиатов. Выплаты произведены 0 аффилиатам." То есть никак не мог произвести выплаты. В результате поисков по коду битрикса нашел интересное место в файле /bitrix/modules/sale/general/affiliate.php функция SetAffiliatePlan($affiliate, $dateFrom = false, $dateTo = false).
В этом массиве три одинаковых ключа SUM. Естественно в итоговом массиве будет только один элемент SUM=>TAX_VALUE и выборка из базы возвращает только одно поле TAX_VALUE. И значение переменной $itemsValue будет рассчитано не правильно. А эта переменная в дальнейшем используется как основа для рассчета размера выплат партнеру.
Либо я чего-то не так делаю либо это баг битрикса. В чем может быть проблема?
Столкнулся с такой проблемой: после настройки партнерской программы никак не мог провести калькуляцию аффилиатов. Система выдавала "Калькуляция завершена. Калькулировано 1 аффилиатов. Выплаты произведены 0 аффилиатам." То есть никак не мог произвести выплаты. В результате поисков по коду битрикса нашел интересное место в файле /bitrix/modules/sale/general/affiliate.php функция SetAffiliatePlan($affiliate, $dateFrom = false, $dateTo = false).
| Код |
|---|
if ($affiliatePlanType == "N")
{
$dbOrders = CSaleOrder::GetList(
array(),
array(
"ALLOW_DELIVERY" => "Y",
">=DATE_ALLOW_DELIVERY" => $dateFrom,
"<DATE_ALLOW_DELIVERY" => $dateTo,
"AFFILIATE_ID" => $affiliateID,
"LID" => $arAffiliate["SITE_ID"]
),
array(
"SUM" => "BASKET_QUANTITY"
)
);
if ($arOrder = $dbOrders->Fetch())
$itemsValue = $arOrder["BASKET_QUANTITY"];
}
else
{
$dbOrders = CSaleOrder::GetList(
array(),
array(
"ALLOW_DELIVERY" => "Y",
">=DATE_ALLOW_DELIVERY" => $dateFrom,
"<DATE_ALLOW_DELIVERY" => $dateTo,
"AFFILIATE_ID" => $affiliateID,
"LID" => $arAffiliate["SITE_ID"]
),
array(
"SUM" => "PRICE",
"SUM" => "PRICE_DELIVERY",
"SUM" => "TAX_VALUE"
)
);
if ($arOrder = $dbOrders->Fetch())
$itemsValue = $arOrder["PRICE"] - $arOrder["PRICE_DELIVERY"] - $arOrder["TAX_VALUE"];
}
|
В этом массиве три одинаковых ключа SUM. Естественно в итоговом массиве будет только один элемент SUM=>TAX_VALUE и выборка из базы возвращает только одно поле TAX_VALUE. И значение переменной $itemsValue будет рассчитано не правильно. А эта переменная в дальнейшем используется как основа для рассчета размера выплат партнеру.
Либо я чего-то не так делаю либо это баг битрикса. В чем может быть проблема?
Качественная Разработка на Битрикс. Решение нестандартных задач. Консультации. Все вопросы в личку.