Сообщение B0nuse » 2010-06-30 11:44:48
lissyara писал(а):при нормальном фунциклирвоании - когда объём ручной работы минимален - оно и не нужно.
Позволю себе не согласиться.
Поясню:
1. Работает все на автомате, не паришься и в биллинг практически не заходишь.
2. Много ручной работы, заходишь каждый день, но постоянно сидеть нет смысла.
В 1 и 2 случаях при заказе кем-то ручной услуги - нужно ее оперативно выполнить. Для этого и нужно уведомление администратору.
Насколько я смог разобраться, в данном случае все сводится к изменению двух файлов
ServiceOrderPay.comp (момент оплаты услуги) и
StatusSet.comp (момент изменения статуса услуги) в папке
Код: Выделить всё
/path/to/script/hosts/billing/comp/www/API/
Помогите додумать условие и правильное оформление изменения даты окончания услуги при изменении статуса с "На создании" на "Активен" в файле StatusSet.comp, строки 120-122:
Код: Выделить всё
$StatusDate = Time();
#-------------------------------------------------------------------------
$IsUpdate = DB_Update($ModeID,Array('StatusID'=>$StatusID,'StatusDate'=>$StatusDate),Array('ID'=>$Row['ID']));
заменить на что-то вроде
Код: Выделить всё
$StatusDate = Time();
$Order = DB_Select('Orders',Array('ID','OrderDate','ExpirationDate','StatusID'),Array('UNIQ',$Row['ID'])); #делаем запрос статуса, даты создания и окончания услуги, статус которой меняется
$OrderDate = $Order['OrderDate']; #дата создания
$ExpirationDate = $Order['ExpirationDate']; #дата окончания
$Status = $Order['StatusID']; #статус
#-------------------------------------------------------------------------
#если статус услуги "на создании" и меняется на статус "активен", то компенсируем время простоя между сменой статусов -> дата окончания = пред. дате окончания + (текущее время - дата создания)
if($StatusID=='Active' AND $Status=='OnCreate') {$IsUpdate = DB_Update($ModeID,Array('ExpirationDate'=>$ExpirationDate + ($StatusDate - $OrderDate),'StatusID'=>$StatusID,'StatusDate'=>$StatusDate),Array('ID'=>$Row['ID']));
}else{
#иначе дата окончания остается без изменения (по-умолчанию)
$IsUpdate = DB_Update($ModeID,Array('StatusID'=>$StatusID,'StatusDate'=>$StatusDate),Array('ID'=>$Row['ID']));}
А вообще, по-хорошему, сделать бы возможность изменения даты окончания услуги Администратором в том же виде, как изменение даты счета и возможность компенсации времени всем клиентам, как в хостинге.
В файле ServiceOrderPay.comp перед 230 строкой (подтверждение оплаты)
нужно вставить что-то отправляющее письмо Администратору с данными заказа и позволяющее выполнить пхп код.
[quote="lissyara"]при нормальном фунциклирвоании - когда объём ручной работы минимален - оно и не нужно.[/quote]
Позволю себе не согласиться.
Поясню:
1. Работает все на автомате, не паришься и в биллинг практически не заходишь.
2. Много ручной работы, заходишь каждый день, но постоянно сидеть нет смысла.
В 1 и 2 случаях при заказе кем-то ручной услуги - нужно ее оперативно выполнить. Для этого и нужно уведомление администратору.
Насколько я смог разобраться, в данном случае все сводится к изменению двух файлов [b]ServiceOrderPay.comp[/b] (момент оплаты услуги) и [b]StatusSet.comp[/b] (момент изменения статуса услуги) в папке
[code]/path/to/script/hosts/billing/comp/www/API/[/code]
Помогите додумать условие и правильное оформление изменения даты окончания услуги при изменении статуса с "На создании" на "Активен" в файле StatusSet.comp, строки 120-122:
[code] $StatusDate = Time();
#-------------------------------------------------------------------------
$IsUpdate = DB_Update($ModeID,Array('StatusID'=>$StatusID,'StatusDate'=>$StatusDate),Array('ID'=>$Row['ID']));[/code]
заменить на что-то вроде
[code] $StatusDate = Time();
$Order = DB_Select('Orders',Array('ID','OrderDate','ExpirationDate','StatusID'),Array('UNIQ',$Row['ID'])); #делаем запрос статуса, даты создания и окончания услуги, статус которой меняется
$OrderDate = $Order['OrderDate']; #дата создания
$ExpirationDate = $Order['ExpirationDate']; #дата окончания
$Status = $Order['StatusID']; #статус
#-------------------------------------------------------------------------
#если статус услуги "на создании" и меняется на статус "активен", то компенсируем время простоя между сменой статусов -> дата окончания = пред. дате окончания + (текущее время - дата создания)
if($StatusID=='Active' AND $Status=='OnCreate') {$IsUpdate = DB_Update($ModeID,Array('ExpirationDate'=>$ExpirationDate + ($StatusDate - $OrderDate),'StatusID'=>$StatusID,'StatusDate'=>$StatusDate),Array('ID'=>$Row['ID']));
}else{
#иначе дата окончания остается без изменения (по-умолчанию)
$IsUpdate = DB_Update($ModeID,Array('StatusID'=>$StatusID,'StatusDate'=>$StatusDate),Array('ID'=>$Row['ID']));}[/code]
А вообще, по-хорошему, сделать бы возможность изменения даты окончания услуги Администратором в том же виде, как изменение даты счета и возможность компенсации времени всем клиентам, как в хостинге.
В файле ServiceOrderPay.comp перед 230 строкой (подтверждение оплаты)
[code]return Array('Status'=>'Ok');[/code]
нужно вставить что-то отправляющее письмо Администратору с данными заказа и позволяющее выполнить пхп код.