On Sat, May 26, 2007 at 10:35:56AM -0300, Lautaro Bonetto wrote:
> Hola a todos.
> 
> Convertí una función de VBScript que encontré y andaba necesitando, a 
> Ruby.
> Se las comparto a ustedes por si alguien en algún momento necesita de lo
> mismo.
> Básicamente es una función que calcula el CUIT/CUIL de una persona, en 
> base
> al nro de DNI y al sexo de ella.
> Seguramente se le puede mejorar algo el código... pero está funcionando
> bien. La misma función en VBS ocupaba más del doble de lineas de código.

        Un comentario nomás...

> class Impositivo
>    def generar_cuit(sexo, nro_dni)
>        dniStc = nro_dni.to_s.rjust 8, "0"
>        xyStc = 30
>        xyStc = 27 if sexo == "f"
>        xyStc = 20 if sexo == "m"
>        cDocum = xyStc.to_s + dniStc
>        matriz = [5,4,3,2,7,6,5,4,3,2]
>        xx = 0
>        10.times do |t|
>            xx += cDocum[t].chr.to_i * matriz[t]
>        end
>        n = 11 - xx % 11
>        if n == 10
>            if (xyStc == 20 or xyStc == 27 or xyStc == 24)
                                            ^^^^^^^^^^^^^^^
        ¿Tiene sentido eso? Ya no recuerdo el algoritmo así que no te voy a
hacer una corrección del mismo, peero ese or, por lo que escribiste acá
creo que no tiene sentido. xyStc puede ser 30, 27 o 20, pero nunca 24.

        Lo comento porque calculo que te olvidaste de ese caso o algo así, y
así lo revisas, ya que como dije no me acuerdo el algoritmo para
calcular el cuil pero me suena que puede empezar con 24.

>                xyStc, digitoStc = 23, 9
>            else
>                xyStc, digitoStc = 33, 9
>            end
>            digitoStc = 4 if xyStc == 27
>        else
>            digitoStc = (n == 11) ? 0 : n
>        end
>        return xyStc.to_s + dniStc + digitoStc.to_s
>    end
> end
> 
> imp = Impositivo.new
> puts imp.generar_cuit("m", 12123123)

        Muy bueno, gracias por compartirlo! Y espero que te sirva la
observación. Y a ver quien se hace unos testcases para esto, que es una
pavada ;-P

-- 
Damián Viano(Des)              ¯ ¯ - _           _ - ¯ ¯
GPG: 0x6EB95A6F                 Debian ¯-_GNU_-¯ Linux
Web: http://damianv.com.ar/               ¯-¯
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a