Рестарт сессии со сдвигом дат

Previous pageReturn to chapter overviewNext page

 

 Скрипт позволяет сдвинуть даты интервала ограничения доступа на месяц вперед (если дата не нулевая), закрыть сессию, сбросив все счетчики  и запустить новую для клиентов группы, у которых текущий баланс превышает заданное значение Cash. При этом остатки по предыдущей сессии переносятся в следующую. (Т.о. можно разрешить работу в следующем месяце, только клиентам, на счету которых находится сумма, превышающая значение Cash.) После выполнение скрипта состояние клиента остается прежним (каким оно было до выполнения скрипта). Для автоматизации скрипт запускается в конце каждого месяца.

 

 Скрипт запускается из командной строки в каталоге scripts.

 

 cscript.exe rstsess3d.vbs APIPassword GroupID Cash /sn:ServerName

         

 APIPassword - пароль доступа.

 GroupID - GUID или имя группы в пределах которой производится выполнение скрипта.

 Cash - сумма, добавляемая к текущему балансу клиента (если требуется вычитание - параметр указывается со знаком минус).

 ServerName - имя сервера - необязательный параметр - задается при запуске скрипта с удаленного компьютера.

 


Set Args = WScript.Arguments.Unnamed

If Args.Count <> 3 Then

 WScript.Echo "??? usage: cscript.exe rstsess3d.vbs APIPassword GroupID Cash /sn:ServerName"        

 WScript.Quit        

End If

 

APIPass = Args(0)

Obj = Args(1)

Cash = Args(2)

 

If WScript.Arguments.Named.Exists("sn") Then

 ServName = WScript.Arguments.Named.Item("sn")

 Set Srv = CreateObject("TrafInsp.TrafInspAdmin",ServName)

Else

 Set Srv = CreateObject("TrafInsp.TrafInspAdmin")

End If

Srv.APILogon(APIPass)

 

UserList = Srv.ApiGetBillProp(3, Obj)

 

' Получили список клиентов группы

' Проверяем, что это таблица - двухмерный массив

 

If Not IsArray(UserList) Or Not IsArray(UserList(0)) Then

 WScript.Echo "Нет данных"        

 WScript.Quit        

End If

 

Dim ArAtr(1)

ArAtr(0) = 11 'User_Date1 

ArAtr(1) = 12 'User_Date2 

 

Dim ArAtrVal(2)

 

For I = 0 To UBound(UserList, 1)

 User = UserList(I)

 ' Получили строку - описание пользователя

 UserID = User(1)

 UserState = Srv.APIGetUserState(UserID)

 

 ' Считываем текущее состояние сессии

 OldState = UserState(4)

 OldBall = UserState(19)

 

 If OldBall >= (Cash*Sgn(Cash)) Then

         UserAttr = Srv.APIGetAttr(3, UserID, ArAtr)

         Date1s = UserAttr(0)

         Date2e = UserAttr(1)

         ' Переводим пользователя в СТОП

         Srv.APISetUserState UserID, -1, 0, "Script", "Очищаем сессию"

         ' Переводим сессию пользователя в состояние, которое было ранее

         ' Если надо всех обязательно запустить, то поправьте OldState на '2'

         Srv.APISetUserState UserID, Cash+OldBall, OldState, "Script", "Запускаем сессию"

         If Date1s <> "0:00:00" Then

                 D1Year = Int(Right(Date1s,4))

                 D1Month = Int(Mid(Date1s,4,2))

                 D1Month = D1Month +1

                 If D1Month = 13 Then

                         D1Year = D1Year + 1

                         D1Month = 1        

                 End If

                 Date1s = "01." & Right("00" & D1Month,2) & "." & D1Year

         End If

         If Date2e <> "0:00:00" Then

                 D2Year = Int(Right(Date2e,4))

                 D2Month = Int(Mid(Date2e,4,2))

                 D2Month = D2Month +1

                 If D2Month = 13 Then

                         D2Year = D2Year + 1

                         D2Month = 1        

                 End If

                 Date2e = "01." & Right("00" & D2Month,2) & "." & D2Year

         End If

         ArAtrVal(0) = CDate(Date1s)

         ArAtrVal(1) = CDate(Date2e)

         Srv.APISetAttr 3, UserID, ArAtr, ArAtrVal, True

         WScript.Echo "Клиент " & User(0) & ": доступ " & ArAtrVal(0) & "|" & ArAtrVal(1) & ", на счету " & Cash+OldBall

 End If        

Next

 

 

 


Текущая страница справки: help.smart-soft.ru/index.html?apidemorst3d.htm

Сайт разработчиков Traffic Inspector