Столкнувшись с необходимостью использования партнерской программы, обнаружил, что выплаты партнерам admin/affiliate_payment.php не отображаются или работают не корректно.

Сутки искал проблему, почему их вообще нет.

Нашел причину.

И так:

admin/affiliate_payment.php

$time = mktime(1, 1, 1, date(‘m’), date(‘d’) — AFFILIATE_BILLING_TIME, date(‘Y’));
$oldday = date(‘Y-m-d’, $time);

 

из данного куска следует, что мы из текущей даты вычитали лимитирующую дату AFFILIATE_BILLING_TIME и потом получали число (дату для сравнения)

Что в корне не верно.

а вот и еще одна ошибка с датой

лимитирующее число месяца вычиталось из текущей даты. а надо вычитать текущая дата — разница дат

в общем

$time = mktime(1, 1, 1, date("m"), (date("d") - (date("d") - AFFILIATE_BILLING_TIME)), date("Y"));

далее.

даты в таком виде (тем более в SQL) не дадут сравнения. и в зависимости от версии php будет всегда положительный или всегда отрицательный результат

по этому

$oldday = date("YmdHis", $time);

именно так должна выглядеть переменная

далее в SQL в циклах убираем сравнение дат, а вот в выборку добавляем дату a.affiliate_date

и уже в цикле сравниваем отформатированные даты как числа (ну или строки) (для зануд)

	  $newday = date("YmdHis", strtotime($affiliate_payment['affiliate_date']));	
	  //echo 'даза заказа'.$newday.' <= '.$oldday.'дата проверки'; 
	  
	 if ($newday <= $oldday) {

и вот тогда у нас будет верно работать и выборка и сравнение дат и все такое прочее следующее