Search  
Thursday, May 24, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  FoxPro  FoxPro 2.6 for Windows  algoritm pentru...
 algoritm pentru verificare CUI (CIF)
 
 8/19/2007 12:52:42 PM
User is offlinesagona84
15 posts


algoritm pentru verificare CUI (CIF)
 (N/A)
doresc sa scriu un program in fox for win 2.6 de verificare al CIF, ma poate ajuta cineva cu algoritmul? am inteles ca este un numar masca (ca si la CNP) care este acesta si cum se foloseste?
multzumesc anticipat
 8/19/2007 1:25:24 PM
User is offlineIaci
96 posts




Re: algoritm pentru verificare CUI (CIF)
 (N/A)
Eu folosesc rutina de mai jos, si merge. E drept ca ar mai trebui pusa conditia ca CIF-ul sa aibe intre 6 si 10 caractere daca nu ma insel...
*************************************
param m_cfiscal
IF VARTYPE(m_cfiscal)='C'
    DO case
        CASE UPPER(LEFT(m_cfiscal,2))='RO'
            m_cfiscal=SUBSTR(m_cfiscal,3)
        CASE UPPER(LEFT(m_cfiscal,1))='R'
            m_cfiscal=SUBSTR(m_cfiscal,2)
    ENDCASE
    m_cfiscal=VAL(m_cfiscal)
ENDIF
IF m_cfiscal<1
    vcuicui=.f.
    RETURN -1
ENDIF
m.Cfiscal=m_cfiscal
* cifra de control
m.cfis=int(m.cfiscal/10)
m.masca=753217532
dimension cod(9),masc(9),c(9)
* cod fiscal
m.zero=cifre(m.cfis)
for k=1 to 9
    c(k)=cod(k)
endfor
* masca
m.zero=cifre(m.masca)
for k=1 to 9
    masc(k)=c(k)
endfor
* suma
sum=0
for k=1 to 9
    sum=sum+cod(k)*masc(k)
endfor
sum=sum*10
r=mod(sum,11)
r=mod(r,10)
if m.cfiscal<>m.cfis*10+r
    vcuicui=.f.
    retu -1
ELSE
    vcuicui=.t.
endif
retu 0

FUNCTION cifre
parameter m.cfis
Cifre=Str(m.cfis,9)
for k=1 to 9
    cod(k)=Val(Subs(Cifre,k,1))
endfor
Cifre=Str(m.Masca,9)
for k=1 to 9
    masc(k)=Val(Subs(Cifre,k,1))
endfor
return

 8/19/2007 1:27:02 PM
User is offlineIaci
96 posts




Re: algoritm pentru verificare CUI (CIF)
 (N/A)
Era sa uit, merge in VFP9, dar nu vad de ce nu ar merge si in FPW
 8/20/2007 10:19:09 AM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: algoritm pentru verificare CUI (CIF)
 (Romania)

Algoritmul descris textual il gasesti la www.validari.ro.

Eu am implementat algoritmul asa:

FUNCTION ValidareCIF(tcCif)
 *
 LOCAL llOk, i, lcCheie, lcControl, lnSuma, lcVerif
 *  
 llOk = .t.
 tcCif = AllTrim(tcCif)
 IF ! BetWeen(Len(tcCif), 2, 10)
  llOk = .f.
 ELSE
  i = 1
  DO WHILE IsDigit(SubStr(tcCif,i,1)) AND (i<=Len(tcCif))
   i = i + 1
  ENDDO
  IF i <= Len(tcCif)
   llOk = .f.
  ELSE
   lcCheie  = "235712357"
   tcCif    = Inversare(tcCif)
   lcControl = Left(tcCif,1)
   tcCif  = Right(tcCif, Len(tcCif) - 1)
   lnSuma  = 0
   FOR i = 1 TO Len(tcCif)
    lnSuma = lnSuma+ Round(Val(SubStr(tcCif,i,1)) * Val(SubStr(lcCheie,i,1)),0)
   ENDFOR
   lcVerif  = AllTrim(Str(Mod(10 * lnSuma, 11)))
   llOk   = lcControl == Right(lcVerif,1)
  ENDIF
 ENDIF
 RETURN llOk
ENDFUNC

FUNCTION Inversare(tcStr)
 *
 * Returneaza oglinditul unui sir
 *
 IF Empty(tcStr)
  RETURN ""
 ELSE
  RETURN SubStr(tcStr, Len(tcStr), 1) + Inversare(Left(tcStr, Len(tcStr) - 1))
 ENDIF
ENDFUNC

 8/21/2007 8:49:20 AM
User is offlinebata
81 posts


Re: algoritm pentru verificare CUI (CIF)
 (Romania)
http://www.profox.ro/Forum/tabid/55/forumid/12/threadid/18108/scope/posts/Default.aspx

Sa mai discutat problema, si mi se pare ca s-a ajuns si la un rezultat destul de interesant.
 8/21/2007 8:51:51 AM
User is offlinebata
81 posts


Re: algoritm pentru verificare CUI (CIF)
 (Romania)
Iar eu folosesc urmatorul cod.

m.cheiecif=753217532
m.chc=MOD(m.cif,10)
m.cif=INT(m.cif/10)
m.tot=0
PUBLIC mcifcorect
FOR i=1 TO 9
    m.tot=m.tot+VAL(SUBSTR(STR(m.cif,9,0),i,1))*VAL(SUBSTR(STR(m.cheiecif,9,0),i,1))
ENDFOR
    m.prod=MOD(MOD(m.tot*10,11),10)
IF m.prod=m.chc
    mcifcorect=.t.
ELSE
    mcifcorect=.f.
ENDIF
 8/21/2007 10:28:05 AM
User is offlinecostin_mentor
492 posts
www.accessoft.ro
2nd




Re: algoritm pentru verificare CUI (CIF)
 (N/A)
 Iaci wrote
Eu folosesc rutina de mai jos, si merge. E drept ca ar mai trebui pusa conditia ca CIF-ul sa aibe intre 6 si 10 caractere daca nu ma insel...
*************************************
param m_cfiscal
IF VARTYPE(m_cfiscal)='C'
DO case
CASE UPPER(LEFT(m_cfiscal,2))='RO'
m_cfiscal=SUBSTR(m_cfiscal,3)
CASE UPPER(LEFT(m_cfiscal,1))='R'
m_cfiscal=SUBSTR(m_cfiscal,2)
ENDCASE
m_cfiscal=VAL(m_cfiscal)
ENDIF
IF m_cfiscal<1
vcuicui=.f.
RETURN -1
ENDIF
m.Cfiscal=m_cfiscal
* cifra de control
m.cfis=int(m.cfiscal/10)
m.masca=753217532
dimension cod(9),masc(9),c(9)
* cod fiscal
m.zero=cifre(m.cfis)
for k=1 to 9
c(k)=cod(k)
endfor
* masca
m.zero=cifre(m.masca)
for k=1 to 9
masc(k)=c(k)
endfor
* suma
sum=0
for k=1 to 9
sum=sum+cod(k)*masc(k)
endfor
sum=sum*10
r=mod(sum,11)
r=mod(r,10)
if m.cfiscal<>m.cfis*10+r
vcuicui=.f.
retu -1
ELSE
vcuicui=.t.
endif
retu 0

FUNCTION cifre
parameter m.cfis
Cifre=Str(m.cfis,9)
for k=1 to 9
cod(k)=Val(Subs(Cifre,k,1))
endfor
Cifre=Str(m.Masca,9)
for k=1 to 9
masc(k)=Val(Subs(Cifre,k,1))
endfor
return


Nu trebuie pusa o conditie pentru o lungime minima a codului fiscal.
Cel mai scurt cod fiscal are 2 cifre : 19.
  FoxPro  FoxPro 2.6 for Windows  algoritm pentru...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement