Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Алгоритм расчета контрольного ключа счета (банковского)  [new]
vgross
Member

Откуда: Новосибирск
Сообщений: 30
Господа!
А нет ли у кого готового Алгоритма расчета контрольного ключа счета (банковского)?
Поделитесь пожалуйста.
12 мар 04, 10:10    [574350]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм расчета контрольного ключа счета (банковского)  [new]
Юрий Р.
Member

Откуда:
Сообщений: 318
А этот алгоритм для России и Украины разный ?
12 мар 04, 10:27    [574399]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм расчета контрольного ключа счета (банковского)  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Посмотри здесь (для Российских счетов)

http://www.foxclub.ru/sol/index.php?act=view&id=236
12 мар 04, 10:30    [574410]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм расчета контрольного ключа счета (банковского)  [new]
Юрий Р.
Member

Откуда:
Сообщений: 318
А вот это для Украины, если устроит. (DOS вариант)

FUNCTION ScetKey

PARAMETERS char_scet, curr_mfo

PRIVATE check_num, long_scet, ind_for, sum1, sum2, sum3, ;
check_key, ret_scet, i

check_num = "1371337137137137137"
curr_mfo = Left(curr_mfo, 5)
char_scet = Left(char_scet, 4) + "0" + ;
Right(char_scet, Len(char_scet) - 4)
long_scet = curr_mfo + char_scet
sum1 = 0

FOR ind_for = 1 to Len(long_scet)
sum1 = sum1 + ;
Val(Right(Str(Val(SubStr(long_scet, ind_for, 1)) * ;
Val(SubStr(check_num, ind_for, 1))), 1))
ENDFOR

sum2 = sum1 + Len(char_scet)
sum3 = Val(Right(Str(sum2), 1)) * 7
check_key = Right(Str(sum3), 1)
ret_scet = Stuff(char_scet, 5, 1, check_key)

RETURN ret_scet
12 мар 04, 11:14    [574586]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм расчета контрольного ключа счета (банковского)  [new]
FM32YO aka KID
Member

Откуда: Ukraine
Сообщений: 884
Проверка контрольного разряда для лицевого счета для Украины
*/* ------ 15.12.97 09:37 ORLOV 1997 --------
* Name: TESTLS
* Params: cMfo, cLs
* Return: Variable
* Example: DO TESTLS WITH cMfo, cLs
* öπ¡¬µ¿∩ »α«óÑન ß««ΓóÑΓßΓó¿∩ ¼Σ« ¿ ½/ßτÑΓá »« ¡«ó«¼π »½á¡π ßτÑΓ«ó
* ..........................................................................
*/
*FUNCTION TESTLS(cMfo, cLs)
PARAMETERS cMfo, cLs


DIMENSION arr(19)
STORE '1' TO arr(1)
STORE '3' TO arr(2)
STORE '7' TO arr(3)
STORE '1' TO arr(4)
STORE '3' TO arr(5)
STORE '3' TO arr(6)
STORE '7' TO arr(7)
STORE '1' TO arr(8)
STORE '3' TO arr(9)
STORE '7' TO arr(10)
STORE '1' TO arr(11)
STORE '3' TO arr(12)
STORE '7' TO arr(13)
STORE '1' TO arr(14)
STORE '3' TO arr(15)
STORE '7' TO arr(16)
STORE '1' TO arr(17)
STORE '3' TO arr(18)
STORE '7' TO arr(19)

pRIVATE cStr="", tStr
SumArr=0
PRIVATE Rzr=0
PRIVATE i=0

tStr=padr(alltrim(str(cLs,15, 0)),14,"0")
Rzr=val(substr(tStr,5,1))

cStr=substr(str(cMfo,6),1,5)


cStr=substr(str(cMfo,6),1,5)+tStr

for i=1 to 19 &&len(Arr)
if(i<>10)

Arr(i)=val(Arr(i))*val(substr(cStr,i,1))

IF LEN(ALLTRIM(STR(Arr(i),2,0)))>1
Arr(i)=substr(alltrim(STR(Arr(i))),2, 1)
ELSE
Arr(i)=alltrim(STR(Arr(i)))
ENDIF
else
Arr(i)="0"
endif

SumArr=SumArr+val(Arr)

NEXT


SumArr=SumArr+len(alltrim(str(cLs,15, 0)))

*********************
do case
case LEN(ALLTRIM(STR(SumArr,3,0)))>2

Arr(1)=7*val(substr(ALLTRIM(STR(SumArr,3,0)),3,1))

case LEN(ALLTRIM(STR(SumArr,2,0)))>1

Arr(1)=7*val(substr(ALLTRIM(STR(SumArr,2,0)),2,1))
otherwise
Arr(1)=7*VAL(alltrim(STR(SumArr)))
ENDcase
***********************

if LEN(ALLTRIM(STR(Arr[1],2,0))) > 1

Arr[1]=val(substr(ALLTRIM(STR(Arr[1],2,0)),2,1))
ELSE

Arr[1]=VAL(substr(ALLTRIM(STR(Arr[1],2,0)),1,1))

ENDIF

****************

Arr[1]=VAL(substr(ALLTRIM(STR(Arr[1],2,0)),1,1))

IF Rzr==Arr[1]


IF Rzr==Arr[1]
wait window 'разряд верен'
ELSE

wait window 'разряд НЕверен'

_err=1


ENDIF
12 мар 04, 12:53    [575018]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм расчета контрольного ключа счета (банковского)  [new]
Y307
Member

Откуда: Kiev
Сообщений: 5
'==== VB6 ====
Function CheckBank(AccountNo As String, MFO As String) As Boolean
Dim mask As String
Dim buf As String
Dim kl, i, ln
'============================
mask = "1371337137137137137"
kl = 0
buf = Left(Trim(MFO), 5) & Trim(AccountNo)
ln = Len(buf)
For i = 1 To ln
If i <> 10 Then
kl = kl + (Val(Mid(buf, i, 1)) * Val(Mid(mask, i, 1))) Mod 10
End If
Next i
kl = (((kl + ln - 5) Mod 10) * 7) Mod 10
CheckBank = (kl = Val(Mid(buf, 10, 1)))
End Function

!!!
Может быть у кого-то есть алгоритм расчета контрольного ключа МФО(для Украины)?
28 мар 04, 07:42    [600820]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм расчета контрольного ключа счета (банковского)  [new]
FM32YO aka KID
Member

Откуда: Ukraine
Сообщений: 884
у меня есть алгоритм для расчета МФО для Украины.. но... на неделю я уезжаю.. так что если напомните мне на мыло - помещу егосдесь после 4-04-2004
28 мар 04, 09:31    [600834]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить