Publicado el Dejar un comentario

Ejemplo Verificador de Precios personalizado


El siguiente bloque de código permite realizar la consulta al catálogo de productos, verl las características y agregar el artículo al punto de venta.
Este código se implementa en el ambiente de desarrollo, creas un formulario; en la pestaña diseño solo agregas las etiquetas y textbox.

'jofelchez@gmail.com Jose Felix WhatsApp 7222816462
'Ejemplo de verificador de precios
Option Explicit
Dim mcp,mcl,mcm
Dim mca
Dim mcc
dim Busqueda,cCondicion
dim ApruebaEliminar
dim rstArticulo,rstClavesadd
dim rstArt
dim nPartida,n

Sub Form_Load()
'Lista.visible = false
'Grid.RowMode = True
Grid.MultiSelect = True

Me.Caption = "Verificador de Artículos"

lblArticulo.font.size = 14
lblDescripcion.font.size = 14
lblPrecio.font.size = 14
lblUnidad.font.size = 14
lblPresentacion.font.size = 14
lblCantPres.font.size = 14
'txtArticulo.ForeColor = vbGreen

LimpiarVentana
end sub

Sub Text_KeyDown()

Dim rstProds

if ControlEvento.Tag = "txtArticulo" Then
If KeyCode = 40 Then
Set Busqueda = CreateObject ("MyBBusquedaArticulos.BusquedaArticulos")
Set Busqueda.Ambiente = Ambiente
Set Busqueda.Control = txtArticulo
Busqueda.MuestraForma
Set Busqueda = Nothing
txtArticulo.SetFocus
Exit Sub
End if

End If

If KeyCode = 27 Then
DescargaForma
End If

End Sub

Function FDecimal(dValor)
FDecimal = Replace(dValor, ",", ".")
End Function

Sub Text_LostFocus()

If ControlEvento.Tag = "txtArticulo" Then
LimpiarVentana
call VerificarArticulo(txtArticulo)

End If

End Sub

sub VerificarArticulo(Articulo)

Dim s, s_adicional
dim Presentacion, Cant_Presentacion
Presentacion = ""
Cant_Presentacion = ""

cCondicion = ""
if txtArticulo <> "" then
cCondicion = cCondicion & " and prods.articulo = '" & txtArticulo & "' "
end if
s_adicional = ""

s = ""
s = s & "SELECT "
s = s & "prods.articulo As 'Articulo', "
s = s & "prods.descrip As 'Descripción', "
s = s & "impuestos.impuesto As 'Impuesto', "
'If Ambiente.rstEstacion("conimpuesto") <> 0 Then
' s = s & " precio1 * (1 + ( impuestos.valor / 100 )) As 'Precio 1', "
' s = s & " precio2 * (1 + ( impuestos.valor / 100 )) As 'Precio 2', "
' s = s & " precio3 * (1 + ( impuestos.valor / 100 )) As 'Precio 3', "
' s = s & "prods.costo_u * (1 + ( impuestos.valor / 100 )) As 'Costo Ultimo', "
'else
' s = s & " precio1 As 'Precio 1', "
' s = s & " precio2 As 'Precio 2', "
' s = s & " precio3 As 'Precio 3', "
' s = s & "prods.costo_u As 'Costo Ultimo', "
'end if
s = s & " precio1 * (1 + ( impuestos.valor / 100 )) As 'Precio 1', "
s = s & " precio2 * (1 + ( impuestos.valor / 100 )) As 'Precio 2', "
s = s & " precio3 * (1 + ( impuestos.valor / 100 )) As 'Precio 3', "
s = s & "prods.costo_u * (1 + ( impuestos.valor / 100 )) As 'Costo Ultimo', "

s = s & "prods.existencia As 'Existencia', "
s = s & "prods.linea As 'Línea', "
s = s & "prods.marca As 'Marca', "
s = s & "Fabricante As 'Fabricante', "
s = s & "Unidad As 'Unidad', "
s = s & "Invent As 'Control Inventario', "
s = s & "ParaVenta As 'Para venta', "
s = s & "Bloqueado As 'Bloqueado', "
s = s & "Bloqueado As 'Granel' "
s = s & "FROM prods INNER JOIN impuestos ON impuestos.impuesto = prods.impuesto "
s = s & "WHERE prods.articulo <> 'SYS' "

s_adicional = s & cCondicion
s_adicional = s_adicional & " ORDER BY 'Descripción' "

'mymessage "" & s_adicional
'SetSessionValue Ambiente, "SQLPRODUCTOS", s
Set rstArticulo = CreaRecordSet( "" & s_adicional , Ambiente.Connection )
'Set rstArticulo = CreaRecordSet( "SELECT * FROM tickettext where NombreTicket = ", Ambiente.Connection )

If rstArticulo.EOF Then
Set rstClavesadd = CreaRecordSet( "SELECT * FROM clavesadd WHERE clave = '" & txtArticulo & "'", Ambiente.Connection )

If Not rstClavesadd.EOF Then
'mymessage "si hay presentacion " & rstClavesadd("articulo")
'Set rstProd = CreaRecordSet( "SELECT * FROM prods WHERE articulo = '" & rstClavesadd("articulo") & "'", Ambiente.Connection )
Set rstArticulo = CreaRecordSet( "SELECT * FROM (" & s & ") a WHERE Articulo = '" & rstClavesadd("articulo") & "'", Ambiente.Connection )
Presentacion = rstClavesadd("clave") & " - " & rstClavesadd("dato1")
Cant_Presentacion = Val2(rstClavesadd("Cantidad"))
End If

End If

If Not rstArticulo.EOF then 'clEmpty(rstArticulo("Artículo")) Then
txtArticulo = rstArticulo("Articulo")
lblArticulo = "Artículo: " & rstArticulo("Articulo")
lblDescripcion = "Descripción: " & rstArticulo("Descripción")
lblPrecio = "Precio: " & formato(rstArticulo("Precio 1"),"##,##0.00" )
lblUnidad = "Unidad: " & rstArticulo("Unidad")
if Presentacion <> "" then
lblPresentacion = "Presentación: " & Presentacion
lblCantPres = "Cantidad presentación: " & Cant_Presentacion
end if
End If

end sub

Sub NuevaPartida(rstArticulo, nPrecio)
on error resume next
Set rstVenta = Rst("SELECT venta FROM ventas WHERE venta = " & ParentObject.Venta, Ambiente.Connection)
'mymessage "" & rstArticulo & nPrecio
If rstVenta.EOF Then
SalvaVenta False
End If

Query.Reset
Query.strState = "INSERT"
Query.AddField "partvta", "clave", ""
Query.AddField "partvta", "prcantidad", 1
Query.AddField "partvta", "venta", ParentObject.Venta
Query.AddField "partvta", "articulo", rstArticulo("Articulo")
Query.AddField "partvta", "cantidad", 1
Query.AddField "partvta", "precio", nPrecio / ParentObject.tipoDeCambio
Query.AddField "partvta", "preciobase", rstArticulo("precio1") / ParentObject.tipoDeCambio
Query.AddField "partvta", "descuento", 0
Query.AddField "partvta", "impuesto", rstArticulo("valor")
Query.AddField "partvta", "observ", Trim(rstArticulo("Descrip"))
Query.AddField "partvta", "partida", 0
Query.AddField "partvta", "usuario", ParentObject.Ambiente.uId
Query.AddField "partvta", "usufecha", Date
Query.AddField "partvta", "usuhora", Formato(Time, "HH:mm:ss")
Query.AddField "partvta", "almacen", 1
Query.AddField "partvta", "lista", 1
Query.AddField "partvta", "caja", ParentObject.Ambiente.Estacion
Query.AddField "partvta", "estado", "PE"
Query.AddField "partvta", "devconf", 0
Query.AddField "partvta", "iespecial", rstArticulo("iEspecial")
Query.AddField "partvta", "kit", rstArticulo("kit")
Query.AddField "partvta", "costo_u", rstArticulo("costo_u")
Query.AddField "partvta", "costo", rstArticulo("costo")
Query.AddField "partvta", "donativo", rstArticulo("Donativo") / ParentObject.tipoDeCambio
Query.AddField "partvta", "invent", 1
Query.Exec

nPartida = LastInsertedId(ParentObject.Ambiente.Connection)

ParentObject.fg2.Redraw = False

For n = ParentObject.UltimaPartida To ParentObject.fg2.Rows - ParentObject.fg2.FixedRows
If clEmpty(fg2.TextMatrix(n, 0)) Then
ParentObject.fg2.TextMatrix(n, 10) = 1
ParentObject.fg2.TextMatrix(n, 0) = rstArticulo("Articulo")
ParentObject.fg2.TextMatrix(n, 1) = 1
ParentObject.fg2.TextMatrix(n, 2) = nPrecio / ParentObject.tipoDeCambio
ParentObject.fg2.TextMatrix(n, 3) = Formato(0, formatoDeDinero)
ParentObject.fg2.TextMatrix(n, 5) = Formato(rstArticulo("Valor"), Ambiente.FDinero)
ParentObject.fg2.TextMatrix(n, 6) = Trim(rstArticulo("Descrip"))
ParentObject.fg2.TextMatrix(n, 14) = Formato(rstArticulo("iEspecial"), Ambiente.FDinero)
ParentObject.fg2.Row = n
ParentObject.fg2.Col = 6
ParentObject.fg2.CellFontBold = True
ParentObject.fg2.Col = 1
ParentObject.fg2.TextMatrix(n, 7) = nPartida
ParentObject.fg2.TextMatrix(n, 8) = 1
ParentObject.fg2.TextMatrix(n, 9) = 1
ParentObject.fg2.TextMatrix(n, 12) = Val2(rstArticulo("costo_u"))
ParentObject.fg2.TextMatrix(n, 17) = Val2(rstArticulo("Donativo")) / ParentObject.tipoDeCambio

ParentObject.UltimaPartida = n
AjustaPartida (n)

Exit For

End If
Next

ParentObject.CantidadDeArticulos = 0
ParentObject.Peso = 0

CalculaImportes
ParentObject.fg2.Redraw = True

ParentObject.Peso = 0
End Sub

Sub Button_click()

Select Case ControlEvento.Tag
Case "cmdAgregarPartida"
'Agregamos la recarga al punto de venta a través de NuevaPartida
Set rstArt = Rst("SELECT prods.*, impuestos.valor FROM prods, impuestos WHERE prods.impuesto = impuestos.impuesto " & _
" and prods.articulo = '" & txtArticulo & "' ", Ambiente.Connection)
If not rstArt.EOF Then
'SalvaVenta False
NuevaPartida rstArt, Val2(rstArt("precio1"))
End If

End Select
txtArticulo.SetFocus
End Sub

Sub LimpiarVentana()
lblArticulo = "Artículo: "
lblDescripcion = "Descripción: "
lblPrecio = "Precio: "
lblUnidad = "Unidad: "
'if Presentacion <> "" then
lblPresentacion = " "
lblCantPres = " "
'end if
end sub

Publicado el Dejar un comentario

ALTA DE ARTICULOS ASIGNANDO ALMACEN

ALTA DE ARTICULOS ASIGNANDO ALMACEN

 

1.-Dar de Alta Productos.

2.-Modificacion de Productos.

3.-Asignacion de Almacen Dado de Alta.

4.-Solicitud de Precio.

5.-Venta Agranel.

6.-Cambio de Clave.

7.-Despliega la Clave Anterior.

8.-Modificacion de Existecias (Directa).

9.-Despliega los Articulos en General.

10.-Despliega los Articulos en el almacen Seleccionado.

 

Nestor Octavio Guzman Bernal

Desarrollador de Soluciones

Cel.: (722) 7 70 16 56

WhatsApp: (722) 7 70 16 56

 

 

 

Publicado el Dejar un comentario

Ejemplo de consulta WSDL

El siguiente ejemplo funciona para consumir servicios web SOAP.



'jofelchez@gmail.com
'whatsapp 7222816462
'Alta de catálogo de productos desde halpmybusinesspos.info
Public imagen
Public info
Public codigoEncontrado

Sub Form_Load()
Dim wf

Me.Caption = “ALTA ULTRARAPIDA”

cmdCancelar.Cancel = True

txtSKU.TabIndex = 0
txtDescripcion.TabIndex = 1
txtImpuesto.TabIndex = 2
txtPrecio.TabIndex = 3
cmdAceptar.TabIndex = 4
cmdCancelar.TabIndex = 5

codigoEncontrado = False
txtImpuesto = 0
txtSKU.Text = “” & GetSessionValue( Ambiente, “SKU_BUSCADO” )

End Sub

Sub procesaCadena( c )
Dim n, s, i

c = Mid( c, 4 )

Do While True
n = clAt( “:–:”, c )

If n = 0 Then
Exit Do
Else
i = i + 1

If i = 1 Then
txtSKU = Mid( c, 1, n – 1 )
End If

If i = 2 Then
txtDescripcion = Mid( c, 1, n – 1 )
End If

If i = 3 Then
txtPrecio = Formato( Val2(Mid( c, 1, n – 1 )), “##,##0.00” )
txtPrecio.SelStart = 0
txtPrecio.SelLength = Len( txtPrecio )
End If

If i = 4 Then
imagen = Mid( c, 1, n – 1 )
End If

If i = 5 Then
info = Mid( c, 1, n – 1 )
End If

If i = 6 Then
txtImpuesto = Formato( Val2(Mid( c, 1, n – 1 )), “##,##0.00” )
End If

c = Mid( c, n + 4 )

End If

Loop

End Sub

Sub Button_click()
Select Case ControlEvento.Tag
Case “cmdAceptar”

Call salvaDatos()

Case “cmdCancelar”
DescargaForma
End Select

End Sub

Sub salvaDatos()
Dim Query, rstImpuesto, codigoImpuesto, wf,longitudDescipcion,informacion
dim rstProds

If clEmpty( txtSKU ) Then
MyMessage “Es necesario que indique el código de barras del producto”
txtSKU.Setfocus
Exit Sub
End If

If Val2( txtPrecio ) <= 0 Then
MyMessage “Es necesario que indique el precio del producto”
txtDescripcion.SetFocus
Exit Sub
End If

Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection

Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & Val2( txtImpuesto ), Ambiente.Connection )

If rstImpuesto.EOF Then
Query.strState = “INSERT”
Query.AddField “impuestos”,”Impuesto”, “I” & txtimpuesto
Query.AddField “impuestos”,”Descrip”, “I” & txtimpuesto
Query.AddField “impuestos”,”Valor”, txtimpuesto
Query.AddField “impuestos”,”Usuario”, Ambiente.Uid
Query.AddField “impuestos”,”usuFecha”, Date
Query.AddField “impuestos”,”usuHora”, Formato( Time, “hh:mm:ss” )
Query.Exec

codigoImpuesto = “I” & txtimpuesto
Else

codigoImpuesto = rstImpuesto(“impuesto”)

End If

Set rstProds = CreaRecordSet( “SELECT articulo FROM prods WHERE articulo = ‘” & txtSKU & “‘”, Ambiente.Connection )

longitudDescipcion = len(txtDescripcion)
informacion = Lcase(Mid( txtDescripcion, 1, longitudDescipcion – 7))
informacion = replace(informacion,”ñ”,”%C3%B1″) ‘ñ
informacion = replace(informacion,”á”,”a”) ‘a
informacion = replace(informacion,”é”,”e”) ‘e
informacion = replace(informacion,”í”,”i”) ‘i
informacion = replace(informacion,”ó”,”o”) ‘o
informacion = replace(informacion,”ú”,”u”) ‘u

Query.Reset

If rstProds.EOF Then
Query.strState = “INSERT”
Query.AddField “prods”, “linea”, “SYS”
Query.AddField “prods”, “marca”, “SYS”
Query.AddField “prods”, “ubicacion”, “SYS”
Query.AddField “prods”, “fabricante”, “SYS”
Query.AddField “prods”, “imagen”, info

Else
Query.strState = “UPDATE”
Query.Condition = “articulo = ‘” & txtSKU & “‘”

End If

Query.AddField “prods”, “articulo”, txtSKU
Query.AddField “prods”, “descrip”, txtDescripcion
Query.AddField “prods”, “precio1”, Val2(txtPrecio) / (1 + (Val2( txtImpuesto ) / 100))
Query.AddField “prods”, “impuesto”, codigoImpuesto
Query.AddField “prods”, “paraventa”, 1
Query.AddField “prods”, “invent”, 1
Query.AddField “prods”, “url”, “https://mbasic.facebook.com/search/photos/?source=filter&isTrending=0&q=” & informacion
Query.Exec

Set rstProds2 = CreaRecordSet( “SELECT top 1 ARTICULO, prods.DESCRIP, prods.LINEA, prods.MARCA, PRECIO1, UNIDAD, IMPUESTO, INVENT, lineas.descrip as descripLinea, marcas.descrip as descripMarca FROM prods left join lineas on prods.linea = lineas.linea left join marcas on prods.marca= marcas.marca WHERE prods.autor is null or prods.autor <> ‘1’ order by articulo desc “, Ambiente.Connection )
If not rstProds2.EOF Then
consulta “INSERT IGNORE INTO prods (ARTICULO, DESCRIP, LINEA, MARCA, PRECIO1, UNIDAD, IMPUESTO, INVENT, DESCRIPLINEA, DESCRIPMARCA, USUFECHA ) VALUES (‘” & rstProds2(“ARTICULO”) & “‘, ‘” & rstProds2(“DESCRIP”) & “‘ , ‘” & rstProds2(“LINEA”) & “‘ , ‘” & rstProds2(“MARCA”) & “‘ , ‘” & rstProds2(“PRECIO1”) & “‘ , ‘” & rstProds2(“UNIDAD”) & “‘ , ‘” & rstProds2(“IMPUESTO”) & “‘ , ‘” & rstProds2(“INVENT”) & “‘ , ‘” & rstProds2(“DESCRIPLINEA”) & “‘ , ‘” & rstProds2(“DESCRIPMARCA”) & “‘ , now() ) ”
Ambiente.Connection.Execute “update prods set autor = 1 where articulo = ‘” & rstProds2(“ARTICULO”) & “‘ ”

end if

on error resume next
ParentObject.txtFields(3) = “”
ParentObject.LlenaPartida txtSKU.Text

DescargaForma

End Sub

Sub Form_Activate()
On Error Resume Next

If clEmpty( txtDescripcion ) Then
txtDescripcion.SetFocus()
Else
If Not clEmpty( txtImpuesto ) Then
txtPrecio.SetFocus
Else
txtImpuesto.SetFocus
End If
End If

End Sub

Sub consulta(MiArticulo)
Dim NS, NS_SOAP, NS_SOAPENC, NS_XSI, NS_XSD

NS = “urn:miserviciowsdl”

NS_SOAP = “http://schemas.xmlsoap.org/soap/envelope/”
NS_SOAPENC = “http://schemas.xmlsoap.org/soap/encoding”
NS_XSI = “http://www.w3.org/2001/XMLSchema-instance”
NS_XSD = “http://www.w3.org/2001/XMLSchema”

‘ The URL of the Web service.
Dim URL
URL = “https://demo.helpmybusinesspos.info/ws/servicio_2.php?wsdl”

‘ The URL of the operation (function).
Dim Operation_HMBP
Operation_HMBP = “urn:MyServicewsdl#GetData2”

‘ XML DOM objects.
Dim DOM, Envelope, Body, Operation, Param

‘ Creates an XML DOM object.
Set DOM = CreateObject(“MSXML2.DOMDocument.6.0”)

‘ Creates the main elements.
Set Envelope = DOM.createNode(1, “SOAP-ENV:Envelope”, NS_SOAP)
Envelope.setAttribute “xmlns:soapenc”, NS_SOAPENC
Envelope.setAttribute “xmlns:xsi”, NS_XSI
Envelope.setAttribute “xmlns:xsd”, NS_XSD
DOM.appendChild Envelope
Set Body = DOM.createElement(“SOAP-ENV:Body”)
Envelope.appendChild Body

‘ Creates an element for the TIPOSDECAMBIO function.
‘Set Operation = DOM.createNode(1, “ns1:GetData”, NS)
Set Operation = DOM.createNode(1, “ns1:GetData2”, NS)
Body.appendChild Operation

‘ Creates an element for the Celsius parameter (passes a value of 33 °C).
‘Parámetro 1
Set Param = DOM.createNode(1, “ID”, NS)
Param.Text = MiArticulo
Operation.appendChild Param

‘Parámetro 2
‘Set Param2 = DOM.createNode(1, “baseDeDatos”, NS)
‘Param2.Text = MibaseDeDatos
‘Operation.appendChild Param2

‘Parámetro 3
‘Set Param3 = DOM.createNode(1, “cliente”, NS)
‘Param3.Text = MiCliente
‘Operation.appendChild Param3

‘ Releases the objects.
Set Param = Nothing
Set Operation = Nothing
Set Body = Nothing
Set Envelope = Nothing

Set NodeList = DOM.getElementsByTagName(“*”)
For Each Element in NodeList
If Element.tagName = “return” then

‘cortar hasta el primer pipe
nPos = clAt( “|”, “” & Element.Text )
cArticulo = Mid( Element.Text, 1, nPos – 1)
txtSku = trim(cArticulo)

cDescripcion = Mid( Element.Text, nPos + 1)
‘cortar hasta el segundo pipe
nPos = clAt( “|”, “” & cDescripcion )
cDescripcion = Mid( cDescripcion,1, nPos – 1)
txtDescripcion = trim(cDescripcion)

Exit For

End If
Next

‘ Releases the objects.
Set Element = Nothing
Set NodeList = Nothing
Set DOM = Nothing

End Sub

Sub procesaRespuesta( sMensaje)
Dim Query, rstArticulo
Dim NodeList, Element

mymessage “” & sMensaje

Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection

Set xml = CreateObject(“Msxml2.DOMDocument.3.0”)
xml.loadXML((sMensaje))
Set NodeList = xml.getElementsByTagName(“*”)
For Each Element in NodeList
If Element.tagName = “bm:Obs” then
msgbox “Tipo de cambio : ” & Trim(Element.getAttribute(“OBS_VALUE”) ) & vbCrLf & “Fecha : ” & Trim(Element.getAttribute(“TIME_PERIOD”) )
Exit For
End If
Next
End Sub

Sub Text_LostFocus()

If ControlEvento.Tag = “txtSku” Then
consulta “SELECT articulo, descrip, precio1,linea,marca, impuesto FROM prods WHERE articulo = ‘” & trim(txtSKU) & “‘ or articulo like ‘%” & Cambia(“%”, ” “, txtSKU) & “%’ or descrip like ‘%” & Cambia(“%”, ” “, txtSKU) & “%’ order by articulo ”
Form_Activate
End If

End Sub

 

Publicado el Dejar un comentario

Reconstruir índices en Sql Server

microsoft_sql_server_indice_indexEn este tema se describe cómo volver a generar un índice o todos los índices de una tabla mediante el Explorador de objetos en SQL Server Management Studio. Cuando se vuelve a generar un índice, dicho índice se elimina y se vuelve a crear. De este modo, se elimina la fragmentación, se recupera el espacio de disco mediante la compactación de las páginas según el valor del factor de llenado existente y se vuelven a ordenar las filas del índice en páginas contiguas. Para obtener más información acerca de la fragmentación de índices, vea Reorganizar y volver a generar índices.

Para volver a generar un índice

  1. En el Explorador de objetos, realice la conexión a una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server) y, a continuación, expándala.
  2. Expanda Bases de datos, expanda la base de datos que contiene la tabla con el índice especificado y, a continuación, expanda Tablas.
  3. Expanda la tabla a la que pertenece el índice y, a continuación, expanda Índices.
  4. Haga clic con el botón secundario en el índice que desee volver a generar y, a continuación, haga clic en Volver a generar.
  5. Para iniciar la operación de regeneración, haga clic en Aceptar.

Para volver a generar todos los índices de una tabla

  1. En el Explorador de objetos, realice la conexión a una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server) y, a continuación, expándala.
  2. Expanda Bases de datos, expanda la base de datos que contiene la tabla con los índices especificados y, a continuación, expanda Tablas.
  3. Expanda la tabla a la que pertenecen los índices.
  4. Haga clic con el botón secundario en Índices y, a continuación, haga clic en Volver a generar todo.
  5. Para iniciar la operación de recreación, haga clic en Aceptar.

Fuente:

Publicado el 6 comentarios

Conectar MyBusiness POS con Hamachi

Al parecer, hay muchos usuarios que todavía tienen dudas respecto a el programa Hamachi, el cual permite crear una red privada virtual (VPN) mediante el uso de Internet de una manera transparente. Aquí les dejo el link de un manual de Instalación de Hamachi

Sin embargo, se han venido presentando nuevas versiones de Windows (Vista y 7) y LogmeIn Hamachi (2.0), los cuales no son compatibles, sobre todo al momento de iniciar el equipo, el servicio hamachi se retrasa en habilitarse y genera errores.
Lo recomendable es trabajar con la versión Hamach 1.0.3.0, la cual es muy estable y funcional en todas las vesiones de Windows. Aquí coloco el link:
El algun momento el programa solicita la actualización, sin embargo, en muchas ocasiones esta actualización nos genera los errores antes mencionados. Por esta razón, no se recomienda actualizar el Hamachi.
Saludos…
Fuente:
www.mybusinesspos.com