Professional Documents
Culture Documents
cc
*/
Case(
entidad="" or sucursal="" or dc="" or cc="";"";
Let(
[
codentidad=Right("000" & GetAsText(GetAsNumber(entidad));4);
codsucursal=Right("0000" & GetAsText(GetAsNumber(sucursal));4);
coddc=Right("00" & GetAsText(GetAsNumber(dc));2);
codcc=Right("0000000000" & GetAsText(GetAsNumber(cc));10);
error_entidad=Case(Length(entidad)<>4 or codentidad="0000";"Entidad incorrecta";
"");
error_sucursal=Case(Length(sucursal)<>4 or codsucursal="0000";"Sucursal incorrec
ta";"");
error_dc=Case(Length(dc)<>2 or coddc="00";"DC incorrecta";"");
error_cc=Case(Length(cc)<>10 or codcc="0000000000";"Cuenta incorrecta";"");
entsuc1=GetAsNumber(Middle(entidad;1;1));
entsuc2=GetAsNumber(Middle(entidad;2;1));
entsuc3=GetAsNumber(Middle(entidad;3;1));
entsuc4=GetAsNumber(Middle(entidad;4;1));
entsuc5=GetAsNumber(Middle(sucursal;1;1));
entsuc6=GetAsNumber(Middle(sucursal;2;1));
entsuc7=GetAsNumber(Middle(sucursal;3;1));
entsuc8=GetAsNumber(Middle(sucursal;4;1));
cc1=GetAsNumber(Middle(cc;1;1));
cc2=GetAsNumber(Middle(cc;2;1));
cc3=GetAsNumber(Middle(cc;3;1));
cc4=GetAsNumber(Middle(cc;4;1));
cc5=GetAsNumber(Middle(cc;5;1));
cc6=GetAsNumber(Middle(cc;6;1));
cc7=GetAsNumber(Middle(cc;7;1));
cc8=GetAsNumber(Middle(cc;8;1));
cc9=GetAsNumber(Middle(cc;9;1));
cc10=GetAsNumber(Middle(cc;10;1));
entsuc_dc = entsuc8 * 6 + entsuc7 * 3 + entsuc6 * 7 + entsuc5 * 9 + entsuc4 * 10
+ entsuc3 * 5 + entsuc2 * 8 + entsuc1 * 4;
cc_dc = cc10 * 6 + cc9 * 3 + cc8 * 7 + cc7 * 9 + cc6 * 10 + cc5 * 5 + cc4 * 8 +
cc3 * 4 + cc2 * 2 + cc1;
entsuc_dc=11-Mod (entsuc_dc ; 11 );
entsuc_dc=Case(entsuc_dc=10;1;entsuc_dc=11;0;entsuc_dc);
cc_dc= 11- Mod(cc_dc;11);
cc_dc=Case(cc_dc=10;1;cc_dc=11;0;cc_dc);
dc_calculado=GetAsText(entsuc_dc) & GetAsText(cc_dc);
error_dc_calculado=Case(dc_calculado<>dc;"CCC incorrecto";"Ok");
x="";
x=Encadena(x;error_entidad;"");
x=Encadena(x;error_sucursal;"");
x=Encadena(x;error_dc;"");
x=Encadena(x;error_cc;"");
x=Encadena(x;error_dc_calculado;"");
x=x
Utiliza la funcin Encadena (cadena1; cadena2; separador)
/*
Encadena()
Desarrollado por Technology Group, s.l.
Encadena dos cadenas alfanumricas por medio de un separador s y slo si ambas cadena
s son distintas de la cadena vaca.
Parmetros
Cadena1
Cadena2
Separador
Let(
[
x=cadena1 & Case(cadena1<>"" and cadena2<>"";separador;"") & cadena2
];
x
)
/* TablaCaracterSEPA.Loop(caracter) */
/* caracter es el carcter alfanumrico del que se quiere saber el cgido SEPA */
Case(
caracter="";GetAsText("");
Position("0123456789";Left(Upper(caracter);1);1;1)>0;GetAsText(Left(Upper(
caracter);1));
GetAsText(Position("ABCDEFGHIJKLMNOPQRSTUVWXYZ";Left(Upper(caracter);1);1;
1)+9)
)
/* TablaCaracterSEPA(valor) */
/* Convierte una cadena alfanumrica a una serie de cdigos numricos SEPA */
/* valor es una cadena alfanumrica */
Case(
valor="";"";
Let(
[
c1=Left(valor;1);
resto=Right(valor;Length(valor)-1);
x=TablaCaracterSEPA.Loop(c1) & TablaCaracterSEPA(resto)
];
x
)
)
/* CalculoIBANES */
/* Convierte a IBAN una cuenta en formato CCC con origen en ES (Espaa) */
/* ccc cuenta de 20 dgitos */
Let(
[
ccc_ok=Upper(Substitute(ccc;[" ";""];[".";""];["-";""]));
temp= ccc_ok & TablaCaracterSEPA ( "ES" ) & "00";
dc= 98 - Mod(GetAsNumber(temp);97);
x="ES" & Right("00" & GetAsText(dc);2) & ccc_ok;
x=x
];
x
)