Advertisement
Joker0day

*prv8 calculate the BIC code from the CCC code (country ES)

Oct 22nd, 2018
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.47 KB | None | 0 0
  1. ** / ********************************************* ************************
  2. FUNCTION GenBic (pcEntity, plMsg)
  3. ** --------------------------------------------- **
  4. * Routine to calculate the BIC code from the CCC code - VALID only for SPAIN-
  5. * Parameters:
  6. * pcEntity = Code of the entity. Corresponds to positions 1 to 4 of the CCC
  7. * plMsg = Option to activate warning messages
  8. * ------------------------------------------------- ----
  9. plMsg = IIF (vartype (plMsg) = 'L', plMsg, .F.)
  10.  
  11. IF empty (pcEntity)
  12. if plMsg
  13. Messagebox ('The entity code is unknown', 32, 'BIC Code')
  14. endif
  15. return ('')
  16. endif
  17.  
  18. IF vartype (pcEntity) = 'N'
  19. pcEntity = PADL (alltrim (str (pcEntity)), 4, '0')
  20. endif
  21.  
  22. IF len (PCEntity)! = 4
  23. if plMsg
  24. Messagebox ('Bad entity code', 32, 'BIC code')
  25. endif
  26. return (space (11))
  27. endif
  28.  
  29. local lcBIC, llError, lcDevuelve
  30.  
  31. lcBIC = 'BIC' + pcEntity
  32.  
  33. BIC0003 = 'BDEPESM1XXX'
  34. BIC0011 = 'ALLFESMMXXX'
  35. BIC0019 = 'DEUTESBBXXX'
  36. BIC0021 = 'BCNDESM1XXX'
  37. BIC0030 = 'ESPCESMMXXX'
  38. BIC0031 = 'ETCHES2GXXX'
  39. BIC0036 = 'SABNESMMXXX'
  40. BIC0046 = 'GALEES2GXXX'
  41. BIC0049 = 'BSCHESMMXXX'
  42. BIC0057 = 'BVADESMMXXX'
  43. BIC0058 = 'BNPAESMMXXX'
  44. BIC0059 = 'MADRESMMXXX'
  45. BIC0061 = 'BMARES2MXXX'
  46. BIC0065 = 'BARCESMMXXX'
  47. BIC0072 = 'PSTRESMMXXX'
  48. BIC0073 = 'OPENESMMXXX'
  49. BIC0075 = 'POPUESMMXXX'
  50. BIC0078 = 'BAPUES22XXX'
  51. BIC0081 = 'BSABESBBXXX'
  52. BIC0083 = 'RENBESMMXXX'
  53. BIC0086 = 'NORTESMMXXX'
  54. BIC0093 = 'VALEESVVXXX'
  55. BIC0094 = 'BVALESMMXXX'
  56. BIC0099 = 'AHCRESVVXXX'
  57. BIC0106 = 'LOYDESMMXXX'
  58. BIC0107 = 'BNLIESM1XXX'
  59. BIC0108 = 'SOGEESMMXXX'
  60. BIC0113 = 'INBBESM1XXX'
  61. BIC0121 = 'OCBAESM1XXX'
  62. BIC0122 = 'CITIES2XXXX'
  63. BIC0125 = 'BAOFESM1XXX'
  64. BIC0128 = 'BKBKESMMXXX'
  65. BIC0129 = 'INALESM1XXX'
  66. BIC0130 = 'CGDIESMMXXX'
  67. BIC0131 = 'BESMESMMXXX'
  68. BIC0132 = 'PRNEESM1XXX'
  69. BIC0133 = 'MIKBESB1XXX'
  70. BIC0136 = 'AREBESMMXXX'
  71. BIC0138 = 'BKOAES22XXX'
  72. BIC0144 = 'PARBESMXXXX'
  73. BIC0145 = 'DEUTESM1XXX'
  74. BIC0149 = 'BNPAESMSXXX'
  75. BIC0151 = 'CHASESM3XXX'
  76. BIC0152 = 'BPLCESMMXXX'
  77. BIC0154 = 'BSUIESMMXXX'
  78. BIC0155 = 'BRASESMMXXX'
  79. BIC0156 = 'ABNAESMMXXX'
  80. BIC0159 = 'COBAESMXXXX'
  81. BIC0160 = 'BOTKESMXXXX'
  82. BIC0161 = 'BKTRESM1XXX'
  83. BIC0162 = 'MIDLESMMXXX'
  84. BIC0167 = 'GEBAESMMXXX'
  85. BIC0168 = 'BBRUESMXXXX'
  86. BIC0169 = 'NACNESMMXXX'
  87. BIC0182 = 'BBVAESMMXXX'
  88. BIC0184 = 'BEDFESM1XXX'
  89. BIC0186 = 'BFIVESBBXXX'
  90. BIC0188 = 'ALCLESMMXXX'
  91. BIC0190 = 'BBPIESMMXXX'
  92. BIC0196 = 'WELAESMMXXX'
  93. BIC0198 = 'BCOEESMMXXX'
  94. BIC0200 = 'PRVBESB1XXX'
  95. BIC0205 = 'DECRESM1XXX'
  96. BIC0211 = 'PROAESMMXXX'
  97. BIC0216 = 'POHIESMMXXX'
  98. BIC0217 = 'HLFXESMMXXX'
  99. BIC0218 = 'FCEFESM1XXX'
  100. BIC0219 = 'BMCEESMMXXX'
  101. BIC0220 = 'FIOFESM1XXX'
  102. BIC0223 = 'GEECESB1XXX'
  103. BIC0224 = 'SCFBESMMXXX'
  104. BIC0225 = 'FIEIESM1XXX'
  105. BIC0226 = 'UBSWESMMXXX'
  106. BIC0227 = 'UNOEESM1XXX'
  107. BIC0228 = 'IXIUESM1XXX'
  108. BIC0229 = 'POPLESMMXXX'
  109. BIC0231 = 'DSBLESMMXXX'
  110. BIC0232 = 'INVLESMMXXX'
  111. BIC0233 = 'POPIESMMXXX'
  112. BIC0234 = 'CCOCESMMXXX'
  113. BIC0235 = 'PIESESM1XXX'
  114. BIC0236 = 'LOYIESMMXXX'
  115. BIC0237 = 'CSURES2CXXX'
  116. BIC0486 = 'THREE2BXXX'
  117. BIC0487 = 'GBMNESMMXXX'
  118. BIC0488 = 'BFASESMMXXX'
  119. BIC1000 = 'ICROESMMXXX'
  120. BIC1113 = 'BSUDESM1XXX'
  121. BIC1116 = 'SCSIESM1XXX'
  122. BIC1127 = 'SCBLESM1XXX'
  123. BIC1156 = 'IRVTESM1XXX'
  124. BIC1164 = 'ESBFESM1XXX'
  125. BIC1168 = 'BNACESM1XXX'
  126. BIC1173 = 'COURESB1XXX'
  127. BIC1182 = 'HYVEESM1XXX'
  128. BIC1191 = 'HANDES21XXX'
  129. BIC1193 = 'PKBSES21XXX'
  130. BIC1196 = 'AEEVESM1XXX'
  131. BIC1197 = 'BILLESB1XXX'
  132. BIC1199 = 'CRGEESM1XXX'
  133. BIC1209 = 'ABCMESM1XXX'
  134. BIC1210 = 'REDEESM1XXX'
  135. BIC1221 = 'PNBMESM1XXX'
  136. BIC1224 = 'RHRHESM1XXX'
  137. BIC1227 = 'BSSAESB1XXX'
  138. BIC1231 = 'BOCAES21XXX'
  139. BIC1233 = 'BCMAESM1XXX'
  140. BIC1234 = 'PRBAESM1XXX'
  141. BIC1236 = 'HELAESM1XXX'
  142. BIC1238 = 'BIMEESM1XXX'
  143. BIC1240 = 'LOFPESB1XXX'
  144. BIC1241 = 'STOLESM1XXX'
  145. BIC1242 = 'SOLAESB1XXX'
  146. BIC1245 = 'BEIVESM1XXX'
  147. BIC1248 = 'WAFAESM1XXX'
  148. BIC1249 = 'NPBSES21XXX'
  149. BIC1251 = 'IHZUES21XXX'
  150. BIC1255 = 'AARBESM1XXX'
  151. BIC1451 = 'CRCGESB1XXX'
  152. BIC1454 = 'NEWGESM1XXX'
  153. BIC1457 = 'LLISESM1XXX'
  154. BIC1459 = 'PRABESMMXXX'
  155. BIC1460 = 'CRESESMMXXX'
  156. BIC1462 = 'ASSCESM1XXX'
  157. BIC1463 = 'PSABESM1XXX'
  158. BIC1464 = 'NFFSESM1XXX'
  159. BIC1465 = 'INGDESMMXXX'
  160. BIC1466 = 'FRANESM1XXX'
  161. BIC1467 = 'EHYPESMXXXX'
  162. BIC1469 = 'SHSAESM1XXX'
  163. BIC1470 = 'BPIPESM1XXX'
  164. BIC1472 = 'UCSSESM1XXX'
  165. BIC1473 = 'PRIBESMXXXX'
  166. BIC1474 = 'CITIESMXXXX'
  167. BIC1475 = 'CCSEESM1XXX'
  168. BIC1478 = 'MLIBESM1XXX'
  169. BIC1479 = 'NATXESMMXXX'
  170. BIC1480 = 'VOWAES21XXX'
  171. BIC1485 = 'BOFAES2XXXX'
  172. BIC1488 = 'PICTESMMXXX'
  173. BIC1490 = 'SELFESMMXXX'
  174. BIC1491 = 'TRIOESMMXXX'
  175. BIC1494 = 'BCITESMMXXX'
  176. BIC1497 = 'ESSIESMMXXX'
  177. BIC1501 = 'DPBBESM1XXX'
  178. BIC1502 = 'IKBDESM1XXX'
  179. BIC1505 = 'ARABESMMXXX'
  180. BIC1506 = 'MLCBESM1XXX'
  181. BIC1522 = 'EFGBESMMXXX'
  182. BIC1524 = 'UBIBESMMXXX'
  183. BIC1525 = 'BCDMESMMXXX'
  184. BIC1534 = 'KBLXESMMXXX'
  185. BIC1538 = 'ICBKESMMXXX'
  186. BIC1544 = 'BACAESMMXXX'
  187. BIC1545 = 'AGRIESMMXXX'
  188. BIC2000 = 'CECAESMMXXX'
  189. BIC2010 = 'CECAESMM010'
  190. BIC2013 = 'CESCESBBXXX'
  191. BIC2017 = 'CECAESMM017'
  192. BIC2018 = 'CECAESMM018'
  193. BIC2031 = 'CECAESMM031'
  194. BIC2038 = 'CAHMESMMXXX'
  195. BIC2043 = 'CECAESMM043'
  196. BIC2045 = 'CECAESMM045'
  197. BIC2048 = 'CECAESMM048'
  198. BIC2051 = 'CECAESMM051'
  199. BIC2052 = 'CECAESMM052'
  200. BIC2056 = 'CECAESMM056'
  201. BIC2066 = 'CECAESMM066'
  202. BIC2080 = 'CAGLESMMVIG'
  203. BIC2081 = 'CECAESMM081'
  204. BIC2085 = 'CAZRES2ZXXX'
  205. BIC2086 = 'CECAESMM086'
  206. BIC2095 = 'BASKES2BXXX'
  207. BIC2096 = 'CSPAES2LXXX'
  208. BIC2099 = 'CECAESMM099'
  209. BIC2100 = 'CAIXESBBXXX'
  210. BIC2101 = 'CGGKES22XXX'
  211. BIC2103 = 'UCJAES2MXXX'
  212. BIC2104 = 'CSSOES2SXXX'
  213. BIC2105 = 'CECAESMM105'
  214. BIC2107 = 'BBVAESMM107'
  215. BIC2108 = 'CSPAES2L108'
  216. BIC3001 = 'BCOEESMM001'
  217. BIC3007 = 'BCOEESMM007'
  218. BIC3008 = 'BCOEESMM008'
  219. BIC3009 = 'BCOEESMM009'
  220. BIC3016 = 'BCOEESMM016'
  221. BIC3017 = 'BCOEESMM017'
  222. BIC3018 = 'BCOEESMM018'
  223. BIC3020 = 'BCOEESMM020'
  224. BIC3023 = 'BCOEESMM023'
  225. BIC3025 = 'CDENESBBXXX'
  226. BIC3029 = 'CCRIES2A029'
  227. BIC3035 = 'CLPEES2MXXX'
  228. BIC3045 = 'CCRIES2A045'
  229. BIC3058 = 'CCRIES2AXXX'
  230. BIC3059 = 'BCOEESMM059'
  231. BIC3063 = 'BCOEESMM063'
  232. BIC3067 = 'BCOEESMM067'
  233. BIC3070 = 'BCOEESMM070'
  234. BIC3076 = 'BCOEESMM076'
  235. BIC3080 = 'BCOEESMM080'
  236. BIC3081 = 'BCOEESMM081'
  237. BIC3084 = 'CVRVES2BXXX'
  238. BIC3085 = 'BCOEESMM085'
  239. BIC3089 = 'BCOEESMM089'
  240. BIC3095 = 'CCRIES2A095'
  241. BIC3096 = 'BCOEESMM096'
  242. BIC3098 = 'BCOEESMM098'
  243. BIC3102 = 'BCOEESMM102'
  244. BIC3104 = 'BCOEESMM104'
  245. BIC3105 = 'CCRIES2A105'
  246. BIC3110 = 'BCOEESMM110'
  247. BIC3111 = 'BCOEESMM111'
  248. BIC3112 = 'CCRIES2A112'
  249. BIC3113 = 'BCOEESMM113'
  250. BIC3115 = 'BCOEESMM115'
  251. BIC3116 = 'BCOEESMM116'
  252. BIC3117 = 'BCOEESMM117'
  253. BIC3118 = 'CCRIES2A118'
  254. BIC3119 = 'CCRIES2A119'
  255. BIC3121 = 'CCRIES2A121'
  256. BIC3123 = 'CCRIES2A123'
  257. BIC3127 = 'BCOEESMM127'
  258. BIC3130 = 'BCOEESMM130'
  259. BIC3134 = 'BCOEESMM134'
  260. BIC3135 = 'CCRIES2A135'
  261. BIC3137 = 'CCRIES2A137'
  262. BIC3138 = 'BCOEESMM138'
  263. BIC3140 = 'BCOEESMM140'
  264. BIC3144 = 'BCOEESMM144'
  265. BIC3146 = 'CCCVESM1XXX'
  266. BIC3150 = 'BCOEESMM150'
  267. BIC3152 = 'CCRIES2A152'
  268. BIC3157 = 'CCRIES2A157'
  269. BIC3159 = 'BCOEESMM159'
  270. BIC3160 = 'CCRIES2A160'
  271. BIC3162 = 'BCOEESMM162'
  272. BIC3165 = 'CCRIES2A165'
  273. BIC3166 = 'BCOEESMM166'
  274. BIC3171 = 'CXAVESB1XXX'
  275. BIC3172 = 'CCOCESMMXXX'
  276. BIC3174 = 'BCOEESMM174'
  277. BIC3177 = 'BCOEESMM177'
  278. BIC3179 = 'CCRIES2A179'
  279. BIC3183 = 'CASDESBBXXX'
  280. BIC3186 = 'CCRIES2A186'
  281. BIC3187 = 'BCOEESMM187'
  282. BIC3188 = 'CCRIES2A188'
  283. BIC3190 = 'BCOEESMM190'
  284. BIC3191 = 'BCOEESMM191'
  285. BIC6814 = 'MNTYESMMXXX'
  286. BIC6852 = 'BMEUESM1XXX'
  287. BIC8233 = 'CSFAESM1XXX'
  288. BIC8512 = 'UCINESMMXXX'
  289. BIC8835 = 'SBFCESMMXXX'
  290. BIC9000 = 'ESPBESMMXXX'
  291.  
  292.  
  293. ** / Error handling for VFP version 6
  294. public llErrorBIC
  295. llErrorBIC = .F.
  296.  
  297. ON ERROR DO error_BIC WITH ERROR (), MESSAGE (), MESSAGE (1), PROGRAM (), LINEN ()
  298. lcDevuelve = & lcBIC
  299. ON ERROR
  300.  
  301. if llErrorBIC
  302. lcDevuelve = space (11)
  303. if plMsg
  304. MESSAGEBOX ('BIC code not found or unknown', 16, 'ERROR')
  305. endif
  306. endif
  307.  
  308. *! * ** / Error handling for VFP version 9
  309. *! * TRY
  310. *! * lcDevuelve = & lcBIC
  311. *! * CATCH
  312. *! * lcDevuelve = space (11)
  313. *! * if plMsg
  314. *! * MESSAGEBOX ('BIC code not found or unknown', 16, 'ERROR')
  315. *! * endif
  316. *! * END
  317.  
  318. release llErrorBIC
  319. return lcDevuelve
  320. ENDFUNC
  321.  
  322. PROCEDURE error_BIC
  323. PARAMETER merror, mess, mess1, mprog, mlineno
  324. ** / BIC code does not exist and generates error
  325. llErrorBIC = .T.
  326.  
  327. *! *? 'Error number:' + LTRIM (STR (merror))
  328. *! *? 'Error message:' + mess
  329. *! *? 'Line of code with error:' + mess1
  330. *! *? 'Line number of error:' + LTRIM (STR (mlinene))
  331. *! *? 'Program with error:' + mprog
  332.  
  333. ENDPROC
  334.  
  335. FUNCTION CALCULA_IBAN (lcCCC, llIban)
  336. ** --------------------------------------------- **
  337. * Routine to calculate the IBAN code from the CCC code - VALID only for SPAIN-
  338. * Parameters:
  339. * lcCCC = CCC Code
  340. * llIban = Option to obtain only the IBAN part (ES + 2 control digits). By default .F.
  341. * ------------------------------------------------- ----
  342. LOCAL nParte1 AS Integer, nResul1 AS Integer, cResul1 AS String,;
  343. nPart2 AS Integer, nResul2 AS Integer, cResul2 AS String ,;
  344. nPart3 AS Integer, nResul3 AS Integer, cResul3 AS String ,;
  345. nPart4 AS Integer, nResul4 AS Integer, cResul4 AS String ,;
  346. CCC AS String, nDigitosControl AS Integer, cDigitosControl AS String
  347. Local llSoloIBAN
  348. llSoloIBAN = IIF (vartype (llIban) = 'L', llIban, .F.)
  349. ** Value of each letter to convert the country code to numeric
  350. Local A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y , Z
  351. A = 10
  352. B = 11
  353. C = 12
  354. D = 13
  355. E = 14
  356. F = 15
  357. G = 16
  358. H = 17
  359. I = 18
  360. J = 19
  361. K = 20
  362. L = 21
  363. M = 22
  364. N = 23
  365. O = 24
  366. P = 25
  367. Q = 26
  368. R = 27
  369. S = 28
  370. T = 29
  371. U = 30
  372. V = 31
  373. W = 32
  374. X = 33
  375. Y = 34
  376. Z = 35
  377.  
  378. if parameters ()> 0
  379. ** / Delete scripts in the CCC and blank spaces
  380. CCC = alltrim (STRTRAN (STRTRAN (m.lcCCC, '-', ''), '', ''))
  381. endif
  382.  
  383. IF LEN (CCC) # 20
  384. ** / = MESSAGEBOX ('You must enter a valid CCC (20 digits).', 0 + 32 + 0, 'User information.')
  385. RETURN (m.CCC)
  386. ENDIF
  387.  
  388. ** Convert the letters of the country (ES) into numbers by applying E = 14; S = 28
  389. ** In this example I add to the CCC the numbers corresponding to the "ES" and two zeros at the end
  390. cAux = CCC + '14 '+' 28 '+' 00 '
  391.  
  392. ** As the resulting number is very large (26 digits) and VFP can not handle such large numeric or integer fields
  393. ** what is done is to go calculating by smaller chains (up to 9 digits) and concatenating the partial results
  394. nPart1 = VAL (SUBSTR (cAux, 1.7))
  395. nResul1 = MOD (nParte1,97)
  396. cResul1 = ALLTRIM (STR (nResul1))
  397.  
  398. nParte2 = VAL (cResul1 + SUBSTR (cAux, 8.7))
  399. nResul2 = MOD (nParte2,97)
  400. cResul2 = ALLTRIM (STR (nResul2))
  401.  
  402. nPart3 = VAL (cResul2 + SUBSTR (cAux, 15.7))
  403. nResul3 = MOD (nPart3,97)
  404. cResul3 = ALLTRIM (STR (nResul3))
  405.  
  406. nParte4 = VAL (cResul3 + SUBSTR (cAux, 22.5))
  407. nResul4 = MOD (nParte4,97)
  408. cResul4 = ALLTRIM (STR (nResul4))
  409.  
  410. nDigitosControl = 98 - VAL (cResul4)
  411. cDigitosControl = ALLTRIM (STR (nDigitosControl))
  412.  
  413. ** The calculated control digits must be 2 so if the result is less than 10, add a 0 ahead
  414. cDigitosControl = PADL (cDigitosControl, 2, "0")
  415.  
  416. ** / WAIT WINDOW 'CALCULATED IBAN CODE:' + 'ES' + cDigitosControl + CCC
  417. return ('ES' + cDigitosControl + IIF (llSoloIBAN, '', CCC))
  418. endfunc
  419. ** --------------------------------------------- **
  420.  
  421.  
  422. FUNCTION CALCULA_ACREEDOR (lcCIF, lcSufix, llDControl)
  423. ** --------------------------------------------- **
  424. * Routine to calculate the CREDITOR code from the CIF of the entity
  425. * Parameters:
  426. * lcCIF = CIF of the entity
  427. * lcSuffix = Code suffix of the entity. By default '000'
  428. * llDControl = Get only part ES + the two control digits. By default .F.
  429. * ------------------------------------------------- ----
  430.  
  431. LOCAL nParte1 AS Integer, nResul1 AS Integer, cResul1 AS String,;
  432. nPart2 AS Integer, nResul2 AS Integer, cResul2 AS String ,;
  433. CIF AS String, nDigitosControl AS Integer, cDigitosControl AS String
  434.  
  435. Local llSoloDControl, letraCIF, Sufix
  436. Suffix = IIF (vartype (lcSufix) = 'C', lcSuffix, '000')
  437. llDControl = IIF (vartype (llDControl) = 'L', llDControl, .F.)
  438.  
  439. ** Value of each letter to convert the country code to numeric
  440. Local A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y , Z
  441. A = 10
  442. B = 11
  443. C = 12
  444. D = 13
  445. E = 14
  446. F = 15
  447. G = 16
  448. H = 17
  449. I = 18
  450. J = 19
  451. K = 20
  452. L = 21
  453. M = 22
  454. N = 23
  455. O = 24
  456. P = 25
  457. Q = 26
  458. R = 27
  459. S = 28
  460. T = 29
  461. U = 30
  462. V = 31
  463. W = 32
  464. X = 33
  465. Y = 34
  466. Z = 35
  467.  
  468. if parameters ()> 0
  469. ** / Remove scripts and blanks in the CIF
  470. CIF = alltrim (STRTRAN (STRTRAN (m.lcCIF, '-', ''), '', ''))
  471. endif
  472.  
  473. IF LEN (m.CIF) # 9 OR ISDIGIT (m.CIF)
  474. MESSAGEBOX ('CIF not valid (Letter + 8 digits).', 0 + 32 + 0, 'CIF:' + m.lcCIF)
  475. RETURN (m.CIF)
  476. ENDIF
  477.  
  478. ** Convert the letters of the country (ES) into numbers by applying E = 14; S = 28 and the letter of the CIF for its value
  479. ** In this example I add to the CIF the numbers corresponding to the "ES" and two zeros at the end
  480. letraCIF = SUBSTR (CIF, 1,1)
  481.  
  482. cAux = alltrim (str (& letterCIF)) + substr (CIF, 2,8) + '14' + '28' + '00'
  483.  
  484. nPart1 = VAL (SUBSTR (cAux, 1.8))
  485. nResul1 = MOD (nParte1,97)
  486. cResul1 = ALLTRIM (STR (nResul1))
  487.  
  488. nParte2 = VAL (cResul1 + SUBSTR (cAux, 9.8))
  489. nResul2 = MOD (nParte2,97)
  490. cResul2 = ALLTRIM (STR (nResul2))
  491.  
  492. nDigitosControl = 98 - VAL (cResul2)
  493. cDigitosControl = ALLTRIM (STR (nDigitosControl))
  494.  
  495. ** The calculated control digits must be 2 so if the result is less than 10, add a 0 ahead
  496. cDigitosControl = PADL (cDigitosControl, 2, "0")
  497.  
  498. return ('ES' + cDigitosControl + IIF (llDControl, '', m.Sufix + CIF))
  499. endfunc
  500. ** --------------------------------------------- **
  501.  
  502.  
  503. FUNCTION TEXT_IBAN (lcCCC, llOculta, plMsg)
  504. ** --------------------------------------------- **
  505. * Routine to display the IBAN code on paper from the CCC code with the possibility of partially hiding the CCC
  506. * Parameters:
  507. * lcCCC = CCC Code
  508. * llOculta = Option to hide part of the CCC
  509. * plMsg = Option to activate warning messages
  510. * ------------------------------------------------- ----
  511. plMsg = IIF (vartype (plMsg) = 'L', plMsg, .F.)
  512. llOculta = IIF (vartype (llOculta) = 'L', llOculta, .F.)
  513.  
  514. IF EMPTY (lcCCC)
  515. if plMsg
  516. MESSAGEBOX ('You must enter a valid CCC (20 digits) or a valid IBAN account (24 characters)', 0 + 32 + 0, 'CCC / IBAN Account not valid')
  517. endif
  518. RETURN ('IBAN?')
  519. ENDIF
  520.  
  521. ** / Delete scripts in the CCC
  522. lcCCC = alltrim (STRTRAN (STRTRAN (m.lcCCC, '-', ''), '', ''))
  523.  
  524. ** / Check if it is a CCC account
  525. IF LEN (lcCCC) = 20 && CCC
  526. lcIBAN = Calcula_IBAN (lcCCC, .F.)
  527. else
  528. lcIBAN = 'ES **' + lcCCC
  529. if plMsg
  530. MESSAGEBOX ('You must enter a valid CCC (20 digits).', 0 + 32 + 0, 'Error in CCC')
  531. endif
  532. Endif
  533.  
  534. return ('IBAN' + space (1) +;
  535. substr (lcIBAN, 1,4) + space (1) +;
  536. substr (lcIBAN, 5.4) + space (1) +;
  537. IIF (llOculta, '****', substr (lcIBAN, 9.4)) + space (1) +;
  538. IIF (llOculta, '****', substr (lcIBAN, 13.4)) + space (1) +;
  539. IIF (llOculta, '****', substr (lcIBAN, 17,4)) + space (1) +;
  540. substr (lcIBAN, 21.4))
  541. endfunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement