Сам не осилил

Код: Выделить всё
function rpcf_link_user_tariff($user_id,$account_id=0,$tariff_current,$tariff_next=tariff_current,$discount_period_id,$tariff_link_id=0) { //0x3018
$ret=array();
if (!urfa_call(0x3018)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = new Packet();
$packet->DataSetInt($user_id);
$packet->DataSetInt($account_id);
$packet->DataSetInt($tariff_current);
$packet->DataSetInt($tariff_next);
$packet->DataSetInt($discount_period_id);
$packet->DataSetInt($tariff_link_id);
urfa_send_param($packet);
if ($x = urfa_get_data()) {
$ret[tariff_link_id]=$x->DataGetInt();
urfa_get_data();
}
return $ret;
}
Код: Выделить всё
rpcf_link_user_tariff($user_id,$account_id=0,$tariff_current,$tariff_next=tariff_current,$discount_period_id,$tariff_link_id=0)
Код: Выделить всё
rpcf_link_user_tariff($user_id,$account_id=0,$tariff_current,$tariff_next,$discount_period_id,$tariff_link_id=0)
Есть мысли почему так происходит??Debug : Jan 27 14:12:31 RPCConn[SSL]<web_1c@192.168.99.9>: Call: 0x2555 (rpcf_add_once_service_to_user)
?Debug : Jan 27 14:12:31 RPCConn[SSL]<web_1c@192.168.99.9>: Real Call: 0x2555 (rpcf_add_once_service_to_user)
?Debug : Jan 27 14:12:31 DBCtx: <146141720> SQL query: INSERT INTO service_links(user_id,account_id,service_id,tariff_link_id) VALUES('2', '2', '87', '0')
?Debug : Jan 27 14:12:31 DBCtx: <146141720> SQL query: INSERT INTO once_service_links(id,discount_date) VALUES('396','1233047551')
?Debug : Jan 27 14:12:31 BusPeriodic: BusPeriodic::rehash_periodic calling pthread_cond_signal
?Debug : Jan 27 14:12:31 BusPeriodic: Wait result:0
?Debug : Jan 27 14:12:31 BusPeriodic: real_rehash start
?Debug : Jan 27 14:12:31 RPCConn[SSL]<web_1c@192.168.99.9>: Call 0x2555 (rpcf_add_once_service_to_user) finished...
?Debug : Jan 27 14:12:31 RPCConn[SSL]<web_1c@192.168.99.9>: Stream cleared
------------------------
?Debug : Jan 27 14:12:41 RPCConn[SSL]<web_1c@192.168.99.9>: Call: 0x210b (rpcf_add_once_service)
?Debug : Jan 27 14:12:41 RPCConn[SSL]<web_1c@192.168.99.9>: Real Call: 0x210b (rpcf_add_once_service)
ERROR : Jan 27 14:12:41 RPCServer@0.0.0.0: Exception in rpcf_add_once_service: #74
?Debug : Jan 27 14:12:41 RPCConn[SSL]<web_1c@192.168.99.9>: Call 0x210b (rpcf_add_once_service) finished...
?Debug : Jan 27 14:12:41 RPCConn[SSL]<web_1c@192.168.99.9>: Stream cleared
Warn : Jan 27 14:12:41 RPCConn[SSL]<web_1c@192.168.99.9>: Session closed
Код: Выделить всё
// Получаем данные о потреблении трафика где учет идет по факту
$res = mysql_query("SELECT
discount_transactions_iptraffic_all.account_id as account_id,
Sum(bytes) AS bytes,
service_links.user_id
FROM
discount_transactions_iptraffic_all
LEFT Join service_links ON discount_transactions_iptraffic_all.slink_id = service_links.id AND discount_transactions_iptraffic_all.account_id = service_links.account_id
LEFT Join users ON service_links.user_id = users.id
Inner Join services_data ON service_links.service_id = services_data.id AND services_data.parent_service_id = 90
WHERE
t_class = 10
AND discount_date >= $period_begin AND discount_date <= $period_end
GROUP BY
account_id
") or die('Could not select: ' . mysql_error());
// Обрабатываем данные о трафике по таблице тарификации
while ($line = mysql_fetch_array($res)) {
$uid = (int)$line[2];
$account_id = (int)$line[0];
//print_r($line);
print "<br>";
// Расчитываем сумму
$discount = get_discount($line[1],$qnt,$cost);
// Изменяем сумму в разовой услуге
print "uid = $uid <br>";
print "qnt = $qnt <br>";
print "cost = $cost <br>";
print "discount = $discount <br>";
print "once_service_id = $once_service_id <br>";
$end = time()+10;
while(time()<$end) {}
rpcf_add_once_service(0,0,$once_service_id,"IP-Traffic","",0,$discount);
// Привязываем разовую услугу к клиенту
rpcf_add_once_service_to_user($uid,$account_id,$once_service_id,0,0,$invoice_time);
}
function rpcf_add_once_service_to_user($user_id,$account_id,$service_id,$tplink,$slink_id,$discount_date) { //0x2551
$ret=array();
if (!urfa_call(0x2551)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = new Packet();
$packet->DataSetInt($user_id);
$packet->DataSetInt($account_id);
$packet->DataSetInt($service_id);
$packet->DataSetInt(1); //once_service_type
$packet->DataSetString("");
$packet->DataSetInt($tplink);
$packet->DataSetInt($slink_id);
$packet->DataSetInt($discount_date);
urfa_send_param($packet);
urfa_get_data();
}
function rpcf_add_once_service_to_user2($user_id,$account_id,$service_id,$tplink,$slink_id,$discount_date) { //0x2555
$ret=array();
if (!urfa_call(0x2555)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = new Packet();
$packet->DataSetInt($user_id);
$packet->DataSetInt($account_id);
$packet->DataSetInt($service_id);
$packet->DataSetInt(0); //tplink
$packet->DataSetInt(0); //slink_id
$packet->DataSetInt($discount_date);
$packet->DataSetDouble(1);
$packet->DataSetInt(0); //invoice_id
urfa_send_param($packet);
urfa_get_data();
}
Код: Выделить всё
function rpcf_set_credit($account_id,$credit) { // non urfa standart function
$account = rpcf_get_accountinfo($account_id); //0x2030
$discount_period_id = 0;
$dealer_account_id = $account['dealer_account_id'];
$is_blocked = $account['is_blocked'];
$block_start_date = date("U");
$block_end_date = "2000000000";
$vat_rate = $account['vat_rate'];
$sale_tax_rate = $account['sale_tax_rate'];
$int_status = $account['int_status'];
$block_recalc_abon = $account['block_recalc_abon'];
$block_recalc_prepaid = $account['block_recalc_prepaid'];
$unlimited = $account['unlimited'];
rpcf_save_account($account_id,$discount_period_id='0',$credit,$is_blocked,$block_start_date,$block_end_date='2000000000',$dealer_account_id,$vat_rate,$sale_tax_rate,$int_status,$block_recalc_abon,$block_recalc_prepaid,$unlimited); //0x2032
}
А для чего нужно хранить SID? Я за все время пользования офф урфа ни разу не задумался о использовании SID, а SID не более чем костыль для user5ЗЫ. Могу сделать поддержку сессий пользователя на уровне urfa, sid сохранить в кукисах или как в оригинале ?sid=blablabla
Правда не считаю это лучшим споcобом, т.к. для получения этого sid
сначала нужно залогиниться под системным пользователем, чтобы получить этот sid. На мой взгляд не гуд.
Может есть другие варианты? Просто чтоб унифицировать сразу хотелось бы