Buscar en el Blog

miércoles, 7 de diciembre de 2011

Validar RUC - SUNAT PERU en VB.net

Basado en el ejemplo de JhofranSoft 
 Algoritmo de Validación del RUC


Lo que modifique del codigo original es que puse todo lo concerniente a la validacion del ruc en una clase, de esa manera solo agregan la clase a su proyecto  y llaman a la funcion de validar el ruc y listo!


La clase
  1. Public Class ValidarRuc
  2. Public Shared Function validarRuc(ByVal ruc As String) As Boolean
  3. If VAL_RUC(ruc) = False Then
  4. Return False
  5. End If
  6. Return True
  7. End Function
  8. 'Ejm:
  9. 'RUC = 10254824220
  10. 'FACTOR = 5432765432
  11. 'Se separa los 10 primeros digitos de la izquierda y se hace un calculo inividual
  12. '1 * 5 =5
  13. '0 * 4 = 0
  14. '2 * 3 = 6
  15. '5 * 2 = 10
  16. '4 * 7 = 28
  17. '8 * 6 = 48
  18. '2 * 5 = 10
  19. '4 * 4 = 16
  20. '2 * 3 = 6
  21. '2 * 2 = 4
  22. 'Se suma el resultado de todas las multiplicaciones
  23. 'SUMA = 133
  24. 'Se calcula el residuo de la division por 11
  25. '133/ 11 = 1
  26. 'RESIDUO = 1
  27. 'Se resta 11 menos el residuo
  28. '11 - 1
  29. 'RESTA = 10
  30. 'digito de chequeo = RESTA
  31. 'si resta = 10 entonces digito de cheque = 0
  32. 'si resta = 11 entonces digito de cheque = 1
  33. 'RUC 10254824220 es valido por que su digito numero 11 es 0 y el digito de chekeo es 0.
  34. Private Shared Function LeftC(ByVal str As String, ByVal Length As Integer) As String
  35. Dim LenT As Integer = str.Length
  36. If LenT <= Length Then
  37. Return str
  38. Else
  39. Return str.Substring(0, Length)
  40. End If
  41. End Function
  42. Private Shared Function RightC(ByVal str As String, ByVal Length As Integer) As String
  43. Dim LenT As Integer = str.Length
  44. If LenT <= Length Then
  45. Return str
  46. Else
  47. Return str.Substring(LenT - Length)
  48. End If
  49. End Function
  50. Private Shared Function VAL_RUC(ByVal ruc As String) As Boolean
  51. Dim FACTOR() As Integer = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2}
  52. Dim suma As Integer = 0
  53. 'ERROR SI NO ES NUMERO
  54. If Not IsNumeric(ruc) Then
  55. Return False
  56. End If
  57. 'ERROR SI NO CUMPLE LOS 11 DIGITOS
  58. If ruc.Length <> 11 Then
  59. Return False
  60. End If
  61. 'ERROR SI NO TIENE LOS 2 PRIMEROS DIGITOS
  62. '10 persona natural.
  63. '20 persona juridica.
  64. '17 o 15 extranjeros
  65. Dim VAL_DIGIT() As String = {"20", "17", "15", "10"}
  66. Dim DIGIT As String = LeftC(ruc, 2)
  67. Array.Sort(VAL_DIGIT)
  68. If Array.BinarySearch((VAL_DIGIT), DIGIT) < 0 Then
  69. Return False
  70. End If
  71. For I = 0 To ruc.Length - 2
  72. suma += Integer.Parse(ruc.Substring(I, 1)) * FACTOR(I)
  73. Next
  74. Dim residuo As Integer = suma Mod 11
  75. Dim resta As Integer = 11 - residuo
  76. Dim digChk As Integer
  77. If resta = 10 Then
  78. digChk = 0
  79. ElseIf resta = 11 Then
  80. digChk = 1
  81. Else
  82. digChk = resta
  83. End If
  84. If digChk = RightC(ruc, 1) Then
  85. Return True
  86. Else
  87. Return False
  88. End If
  89. End Function
  90. End Class

Luego solo llamamos a la funcion para validar

  1. If ValidarRuc.validarRuc(txtruc.Text) = True Then
  2. MessageBox.Show("Valido", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information)
  3. Else
  4. MessageBox.Show("Invalido", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  5. End If





Generar codigo de barras en vb.net

Codigo basado en
http://www.elguille.info/colabora/NET2006/Marckys_BarCode.htm




Para esta aplicacion necesitaremos:
1 label llamado lblcodigo
1 textbox llamado txtcodigo
1 boton


codigo fuente completo


  1. Imports System.Drawing.Text
  2. Partial Public Class MainForm
  3. Dim fuente As Font
  4. Public Sub New()
  5. ' The Me.InitializeComponent call is required for Windows Forms designer support.
  6. Me.InitializeComponent()
  7. ' TODO : Add constructor code after InitializeComponents
  8. Sub MainFormLoad(ByVal sender As Object, ByVal e As EventArgs)
  9. End Sub
  10. Public Sub cargarfuente()
  11. Dim pfc As PrivateFontCollection = New PrivateFontCollection()
  12. Dim fontFamily As FontFamily
  13. 'Obtenemos la fuente que se encuentra en el directorio de la aplicacion
  14. 'y la cargamos
  15. pfc.AddFontFile(my.Application.Info.DirectoryPath & "\BARCODE.TTF")
  16. fontFamily = pfc.Families(0)
  17. fuente = New Font(fontFamily, 50)
  18. End Sub
  19. Public Function FormatoCodigoBarras(ByVal code As String) As String
  20. Dim barcode As String = String.Empty
  21. barcode = String.Format("{0}", code)
  22. Return barcode
  23. End Function
  24. Sub Button1Click(ByVal sender As Object, ByVal e As EventArgs)
  25. cargarfuente()
  26. lblCodigo.Font = fuente
  27. lblCodigo.Text = FormatoCodigoBarras(txtCodigo.Text)
  28. End Sub
  29. End Class
  30.  



    martes, 6 de diciembre de 2011

    Sqlite Manager Firefox

    Para los usuarios y Firefox y que desean usar SQLITE tienen la siguiente alternativa:

    El complemento Sqlite Manager, el cual pueden instalarlo de la siguiente direccion.

    https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/





    VB.NET Recorrer menus

    Saludos a todos ustedes estimados lectores, en esta ocacion quiero compartir este fragmento de codigo que encontre en internet, con el cual podemos recorrer los menus de una ventana y de esa manera poder manipular sus propiedades.
    ¿Para que puede ser util esto?, bueno puede ser util para dar los respectivos privilegios o restricciones a un usuario.



    El codigo en si es el que sigue


     Public Sub RecorrerNivelesAltos(byval opcion as Boolean)
            For Each M As ToolStripMenuItem In me.menuStrip1.Items

                m.Enabled=opcion
                Me.RecorrerSubMenuNivelesAltos(M,opcion)
            Next
        End Sub

        Public Sub RecorrerSubMenuNivelesAltos(ByVal M As ToolStripMenuItem,byval opcion as Boolean)
            For Each SubMenu As ToolStripMenuItem In M.DropDownItems
              
               submenu.Enabled=opcion
                Me.RecorrerSubMenuNivelesAltos(SubMenu,opcion)
            Next
        End Sub

    En el procedimiento RecorrerSubMenuNivelesAltos, hacemos uso de la recursividad.

    lunes, 5 de diciembre de 2011

    Encriptar un password con SQL Server

    Saludos a todos los seguidores de este blog!.
    Muchas veces necesitamos encriptar es password de nuestra aplicacione en la base de datos, es decir que el campo donde almacenamos el password(contraseña) no este como simple texto, si no que este valor no sea legible.

    Para eso podemos usar lo siguiente:
    Pwdencryp() y Pwdcompare() 
    Estas son dos funciones de sql server, la primera sirve para encriptar y la segunda sirve para comparar el password con la cadena encriptada.

    Por ejemplo si colocamos lo siguiente en el analizador de consultas:

    select pwdencrypt('lexblas')

    nos arrojara el siguiente valor

    0x0100D101C65D0C4F2A6714337E7E9E7CCD88C9583C9428B2E9A2

    El valor anterior es nuestro password encriptado.

    Ahora para comparar nuestro password ingresado con el que tenemos en la base de datos, hacemos lo siguiente:

    select pwdcompare ('lexblas',0x0100D101C65D0C4F2A6714337E7E9E7CCD88C9583C9428B2E9A2)

    donde: El primer argumento es el password en texto, el cual estamos ingresando en nuestra ventana de inicio de sesion y el segundo parametro es el password encriptado.


    El campo donde se almacenara el password debe ser del tipo varbinary.
    Por ejemplo:


    create table passwords
    (
    usuario varchar(15),
    password varbinary(255)
    )



    Para validar el usuario, pueden crear un procedimiento almacenado que haga el trabajo.
    Tambien hay otra alternativa.






    create proceduresp_verificarUsuario @usuario varchar(15),@pass varchar(15),@r int output
    as
    if exists (select * from usuario where usuario=@usuario and 1 = pwdcompare(@pass,password))
    set @r=1

    else
    set @r=0
    Si el password concuerda con el que esta en la base de datos devolvera el valor de 1, de caso contrario cero.


    SQL 2005 nos da otra posibilidad de realizar una encriptación de datos para campos de la base de datos. Tiene una función para ello: HashBytes.

    A esta función, simplemente se le pasan como parámetros el algoritmo de encriptación (que pueden ser MD2, MD4, MD5, SHA, SHA1) y la cadena (o variable) a encriptar, devolviendo el valor encriptado para el algoritmo usado.

    Un ejemplo:

    DECLARE @myCrypVar varchar(max);
    SELECT @myCrypVar = CONVERT(varchar,'cadena a encriptar');
    SELECT HashBytes('SHA1', @myCrypVar);
     
    Resultado: 0x548C29B27BC6750A11E0D97E9ED16D4B32DBE7FF

    Esto tambien se puede implementar como el ejemplo anterior.

    jueves, 1 de diciembre de 2011

    PowerBuilder: Aplicacion para Registrar Clientes -> Exe + Codigo Fuente


    Aplicacion desarrollada en PowerBuilder 11.5 con bd en Acces, usando datawindows.
    Util para aquellos que deseen ver como desarrollar ventanas de mantenimiento en powerbuilder con datawindows.

    exe con las librerias necesarias para correr la aplicacion(no necesita instalar el powerbuilder)
    codigo fuente 


    Clases online a buen precio!!
    pass del archivo rar:  http://infotutoriales.blogspot.com/

    jueves, 24 de noviembre de 2011

    Funcionamiento de las VPNs (Redes Privadas Virtuales)

    Saludos a todos! en esta ocasion quiero compartir un video que encontre en youtube, es video explica de forma sencilla el funcionamiento de las Redes Privadas Virtuales.





    software crm SugarCRM Open Source

    SugarCRM es una herramienta CRM libre alternativa a los sistemas de gestión comercial tradicionales como SALESFORCE, MICROSOFT CRM,etc.

    En el siguien enlace encontrara una curso(manual) sobre las caracteristicas de Sugar y su uso click aqui


    Software CRM para descargar

    Aqui pueden ver una lista de algunos Software CRM gratis:

    B-kin
    Gran desarrollador de software de habla hispana. Si bien la version gratis tiene algunas limitaciones, lo equipara con la posibilidad de probarlo online. Tambien tiene una version para el mobil.

    Vtiger
    Completisimo programa totalmente gratis basado en LAMP/WAMP. Tiene versiones tanto para Windows como para Linux. En la web se puede encontrar una demo online en donde podemos ver toda su capacidad.

    Compiere
    Organizacion dedicada a desarrollar una arquitectura de codigo abierto que soporte este tipo de administracion, con funciones completisimas y un alto grado de desarrollo.

    HiperGate
    Suite de aplicaciones de código abierto basadas en web. Todas las aplicaciones se acceden desde Internet Explorer sin necesidad de descargar ningún software en el puesto cliente.

    Free Crm
    Aplicacion online en donde podemos tener hasta 10 megas de informacion, con herramientas tales como envio de emails, calendario de contactos, historial de ventas, y muchos mas.

    software crm

    Las siglas CRM encierran un concepto de vital importancia para el buen desarrollo de una empresa, se trata de la gestión de las relaciones con los clientes, Customer Relationship Management en inglés. Y es que al fin y al cabo todo proceso de una empresa debería estar enfocado a la venta de un determinado producto.
    El software de gestión integral permite tener la trazabilidad desde que un potencial cliente se intereso por los productos y/o servicios de su empresa, pasando por visitas comerciales y llamadas de seguimiento, cotizaciones y revisiones (CRM), toma de pedido, facturación (incluyendo facturación electrónica), entrega de productos y/o servicios, pago por parte del cliente, hasta llegar al registro contable de la operación (ERP).
    De esta forma, el concepto CRM define una estrategia de organización enfocada a la satisfacción de las necesidades del cliente, para lo cual se hace énfasis en la comunicación con el cliente y en el análisis y optimización de todos los procesos implicados desde la fabricación del producto hasta su venta por parte del cliente.

    Sobre la Implantacion de un CRM:


    1. Importancia y utilidad de las Bases de Datos de Clientes

    Toda aquella información sobre los clientes actuales y potenciales debe registrarse de manera automática. Aspectos como el nombre, la dirección, el número de cuentas del cliente, las preferencias, los artículos que compra, la fecha de cumpleaños y cualquier otra información puede ser relevante archivarla. Para ello, las empresas cuentan con las bases de datos, que han tenido un gran desarrollo en los últimos años. ..

    2. Desarrollo de la base de datos de clientes para el CRM

    Si bien la creación de base de datos de clientes supone cierta inversión para las empresas, los beneficios derivados de la posesión y gestión eficaz de las mismas merecen dicha inversión. Se ha calculado que la inversión requerida para poner en marcha un base de datos de encuentra entre 1€ y 1,2 € por nombre en bienes de consumo, y entre los 3 € y los 6 € en productos industriales. Las diferencias de coste vienen determinadas por las exigencias de información...

    3. Gestión de las bases de datos de clientes. CRM

    El vendedor debe preocuparse por la gestión de la base de datos que ha creado. De lo contrario, de nada servirán la inversión acarreada por la empresa y los esfuerzos realizados por el vendedor durante su creación.
    Al hablar de la gestión de las bases de datos de clientes, necesariamente hemos de mencionar lo que se conoce como CRM ( Customer Relationships Management) o gestión de la relación con los clientes. Así y de una manera genérica, la CRM se puede entender como el uso de las nuevas tecnologías a la hora de mantener relaciones comerciales con nuestros clientes. En este sentido, la CRM incluye determinadas acciones como, por ejemplo: el almacenamiento de datos e información, sistemas de atención y servicio al cliente, gestión de centros de llamadas o call centres, comercio electronico y marketing a través de internet...

    Para descargar software CRM podemos ir a la siguiente direccionhttp://sourceforge.net/search/?q=crm