Publicado el 3 comentarios

Antes de aceptar un código lo dividimos en partes

Código que se ejecuta al presionar la Tecla F2 en el punto de Venta

Sub Main()

If LCase(Articulo) = "_ini" Then
Script.RunProcess "GREENBOXINI", Me, Ambiente
CancelaProceso = True
Exit Sub
End If

If LCase(Articulo) = "_setup" Then
Script.RunProcess "GREENBOXALTA", Me, Ambiente
CancelaProceso = True
Exit Sub
End If

If LCase(Articulo) = "_tellerscatalog" Then
Script.RunProcess "GREENBOXCAJEROS", Me, Ambiente
CancelaProceso = True
Exit Sub
End If

If LCase(Articulo) = "_ta" Then
Script.RunProcess "GREENBOXTIEMPOAIRE", Me, Ambiente
CancelaProceso = True
Exit Sub
End If

If LCase(Articulo) = "_tv" Then
Script.RunProcess "GREENBOXVERIFICAR", Me, Ambiente
CancelaProceso = True
Exit Sub
End If

If Articulo = "CONSULTA EXISTENCIA" Then
Script.RunForm "CC05", Me, Ambiente,, True
CancelaProceso = True
Exit Sub
End If

'Set rstArt = CreaRecordSet( "SELECT peso FROM prods WHERE articulo = '" & Articulo & "'", Ambiente.Connection )

'If Not rstArt.EOF Then
' Me.Descuento = rstArt("peso")
'End If

'Call incrementaProducto()

' Articulo es una variable que entrega el dato que se capturo en
' el punto de venta
If Trim( Ucase(Articulo) ) = "ADMISION" Then

If Me.Venta = 0 Then
MyMessage "Es necesario capturar al menos de un producto"
CancelaProceso = True
Exit Sub
End If

Script.RunForm "MIFORMA", Me, Ambiente, , True
'PlaySound Ambiente.Path & "\sounds\s03.wav"
CancelaProceso = True
End If

Me.usuarioRequerido = 0

If clAt( "VPZ", Articulo ) = 1 Then
Call recuperaVenta()
CancelaProceso = True
End If

If Ucase(Trim(Articulo)) = "EXR" Then
CancelaProceso = True
Script.RunForm "EXISTENCIAREMOTA", Me, Ambiente,, True
End If

Version2005

'Call calculaPrecioDecaja()

End Sub

Sub calculaPrecioDeCaja()
Dim rstClaveAdd
Dim rstArticulo

Set rstClaveAdd = CreaRecordSet( "SELECT articulo, cantidad FROM clavesadd WHERE clave = '" & Me.Articulo & "'", Ambiente.Connection )

If rstClaveAdd.EOF Then
Exit Sub
End If

If rstClaveAdd("cantidad") = 1 Then
Exit Sub
End If

Set rstArticulo = CreaRecordSet( "SELECT precio3 FROM prods WHERE articulo = '" & Trim(rstClaveAdd("articulo")) & "'", Ambiente.Connection )

If Not rstArticulo.EOF Then
Me.PrecioEspecial = rstArticulo("precio3")
End If

End Sub

Sub recuperaVenta()
Dim rstVenta, nVenta

nVenta = Val2( Mid( Articulo, 4 ) )

Set rstVenta = CreaRecordSet( _
"SELECT * FROM ventas WHERE venta = " & nVenta, _
Ambiente.Connection )

If rstVenta.EOF Then
' El campo 3 despliega los mensajes en el punto de venta
txtFields(3) = "Venta no encontrada"
Exit Sub
End If

If rstVenta("estado") <> "PE" Then
txtFields(3) = "Venta no valida"
Exit Sub
End If

Set Me.rstVenta = rstVenta
Set Me.rstPartidas = CreaRecordSet( _
"SELECT * FROM partvta WHERE venta = " & nVenta, _
Ambiente.Connection )
Me.Venta = nVenta
Me.Modo = "MODIFICACION"
Me.Reload = True
Me.ReiniciaVenta
Eventos
Me.CalculaImportes
End Sub

Sub Version2005
Dim rstEmpleado
Dim cEmpleado
Dim Query
Dim nPos
Dim cCodigo
Dim cPeso
Dim rstAsistencia
Dim Contenido

' Articulo es una variable que entrega el punto de venta
' Esto proceso todos los comandos del punto de venta
Call ValidaComando

'validaNumeroDePartidas

If UCase(Trim(Articulo)) = "CENEFASXMARCA" Then
Script.RunForm "CENEFASXMARCA", Me, Ambiente,, True
CancelaProceso = True
End If

If UCase(Trim(Articulo)) = "CENEFAS" Then
Script.RunForm "CENEFAS", Me, Ambiente,, True
CancelaProceso = True
End If

If Ucase(Trim(Articulo)) = "BORDADO" Then
Script.RunForm "BORDADO", Me, Ambiente,, True
End If

If Ucase(Trim(Articulo)) = "LONAS" Then
Script.RunForm "LONAS", Me, Ambiente,, True
End If

If Ucase(Trim(Articulo)) = "ESTAMPADO01" Then
Script.RunForm "ESTAMPADO", Me, Ambiente,, True
End If

If Ucase(Trim(Articulo)) = "ESTAMPADO02" Then
Script.RunForm "ESTAMPADO02", Me, Ambiente,, True
End If

If Ucase(Trim(Articulo)) = "ESTAMPADO03" Then
Script.RunForm "ESTAMPADO03", Me, Ambiente,, True
End If

'SumaCantidades
' Articulo es una variable publica que contiene el dato que leyo el lector
' o que tecleo el usuario hasta el momento de presionar un enter
nPos = clAt( "*", Articulo )

' cantidadDeArticulos es una variable publica que indica la cantidad
' de productos que va a aceptar el punto de venta
If nPos > 0 Then
cantidadDeArticulos = Val2( Mid( Articulo, 1, nPos - 1 ) )
Articulo = Mid( Articulo, nPos + 1 )
End If

' Para articulos con peso
If clAt( "ARTICULOPARAPESO", Articulo ) = 1 Then
cCodigo = Mid( Articulo, 3, 5 )
cPeso = Mid( Articulo, 8 )
Articulo = cCodigo
CantidadDeArticulos = (Val2(cPeso) / 10000)
End if

nPos = clAt( "CLI", Articulo )

' La varable cancelaProceso termina el flujo de programa interno de MyBusiness
' Parecido a Exit Sub
If nPos = 1 Then
txtFields(0) = Mid( Articulo, 4 )
txtFields(4) = ""
CancelaProceso = True
ChecaSaldo txtFields(0)
ColocaFoto txtFields(0)
End If

If clAt( "EMP", Articulo ) = 1 Then
cEmpleado = UCase(Mid( Articulo, 4 ))
Set rstEmpleado = CreaRecordSet( "SELECT * FROM empleados WHERE empleado = '" & cEmpleado & "'", Ambiente.Connection )

If rstEmpleado.EOF Then
txtFields(3) = "Empleado no existe"
cancelaProceso = True
txtFields(4) = ""
PlaySound Ambiente.Path & "\sounds\error.wav"
Exit Sub
End If

'Set rstEmpFecha = CreaRecordSet( "SELECT * FROM asistencia WHERE empleado = '" & cEmpleado & "' AND fecha = " & fechaSQL( Date, Ambiente.Connection ), Ambiente.Connection )

'If Not rstEmpFecha.EOF Then
' txtFields(3) = "Usted ya fue registrado"
' cancelaProceso = True
' txtFields(4) = ""
' PlaySound Ambiente.Path & "\sounds\error.wav"
' Exit Sub
'End If

'PlaySound Ambiente.Path & "\sounds\ready.wav"

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

Query.strState = "INSERT"

Query.AddField "asistencia", "id", TraeSiguiente( "asistencia", Ambiente.Connection )
Query.AddField "asistencia", "fechahora", Formato( Date, "dd-MM-yyyy" ) & ":" & Formato( Time, "hh:mm:ss" )
Query.AddField "asistencia", "retardo", Retardo( rstEmpleado("horaentrada") )
Query.AddField "asistencia", "empleado", cEmpleado
Query.AddField "asistencia", "fecha", Date
Query.CreateQuery
Query.Execute

txtFields(3) = rstEmpleado("nombre") & " " & Formato( Date, "dd-MM-yyyy" ) & ":" & Formato( Time, "hh:mm:ss" )
CancelaProceso = True
txtFields(4) = ""

If Not clEmpty( rstEmpleado("imagen") ) Then
CreaHTML "", ""
End If

End If

If Ucase(Trim(Articulo)) = "ARTICULOS PROMOCIONALES" Then
Script.RunProcess "GALAXIA", Me.Parent, Ambiente
CancelaProceso = True
txtFields(4) = ""
End If

If Mid(UCase(Trim(Articulo)),1,6) = "MONEDA" Then
cambiaMonedaDeLaVenta Trim(Mid( Articulo, 7 ))
cancelaProceso = True
End If
'Call ValidaExistencia()
End Sub

Sub ValidaExistencia()
Dim rstProd
Set rstProd = CreaRecordSet( "SELECT alm" & Ambiente.Almacen & " FROM prods WHERE articulo = '" & articulo & "'", _
Ambiente.Connection )

If Not rstProd.EOF Then
If rstProd(0) <= 0 Then Me.OperacionBloqueada = True txtFields(3) = "Existencia insuficiente, operación bloqueada" CancelaProceso = True PlaySound Ambiente.Path & "\sounds\Existencia.wav" End If End If End Sub Sub cambiaMonedaDeLaVenta( cMoneda ) Dim rstVenta, rstMoneda, Query, rstMonedaOriginal Set rstVenta = CreaRecordSet( _ "SELECT * FROM ventas WHERE venta = " & Me.Venta, Ambiente.Connection ) Set rstMoneda = CreaRecordSet( _ "SELECT * FROM monedas WHERE moneda = '" & cMoneda & "'", Ambiente.Connection ) If Not rstMoneda.EOF Then Me.Moneda = cMoneda Me.tipoDeCambio = rstMoneda("tc") Else Exit Sub End If If rstVenta.EOF Then Exit Sub End If If Ucase(Trim(rstVenta("moneda"))) = UCase(Trim(cMoneda)) Then Exit Sub End If Ambiente.Connection.Execute _ "UPDATE partvta SET precio = precio * " & FormatoDecimal( rstVenta("tipo_cam") ) & ", " & _ "preciobase = preciobase * " & FormatoDecimal( rstVenta("tipo_cam") ) & ", " & _ "donativo = donativo * " & FormatoDecimal( rstVenta("tipo_cam") ) & " " & _ "WHERE venta = " & Me.Venta Ambiente.Connection.Execute _ "UPDATE partvta SET precio = precio / " & FormatoDecimal( Me.tipoDeCambio ) & ", " & _ "preciobase = preciobase / " & FormatoDecimal( Me.tipoDeCambio ) & ", " & _ "donativo = donativo / " & FormatoDecimal( Me.tipoDeCambio ) & " " & _ "WHERE venta = " & Me.Venta Set Query = NewQuery() Set Query.Connection = Ambiente.Connection Query.Reset Query.strState = "UPDATE" Query.Condition = "venta = " & Me.Venta Query.AddField "ventas", "moneda", Me.Moneda Query.AddField "ventas", "tipo_cam", Me.tipoDeCambio Query.CreateQuery Query.Execute Parent.ReLoad = True ReiniciaVenta CalculaImportes End Sub Sub ChecaSaldo( Cliente ) Dim rstSaldo, rstCobranza, Html Set rstSaldo = CreaRecordSet( "SELECT * FROM clients WHERE cliente = '" & Cliente & "'", _ Ambiente.Connection ) If rstSaldo.EOF Then Exit Sub End If CreaHTML "","" If rstSaldo("Saldo") <= 0 Then Exit Sub End If PlaySound "c:\saldo.wav" Set rstCobranza = CreaRecordSet( _ "SELECT * FROM cobranza WHERE cliente = '" & cliente & "' AND saldo > 0", _
Ambiente.Connection )

html = ""

While Not rstCobranza.EOF
html = html & "

"
html = html & "Documento " & rstCobranza("tipo_doc") & _
rstCobranza("no_referen") & " " & rstCobranza("Saldo")
html = html & "

"
rstCobranza.MoveNext
Wend

CreaHTML "",(Html)

End Sub

Function Retardo( strHora )
Dim intMinutos
Dim intMinutosActual
Dim nPos
Dim strHoraActual
Dim tolerancia

tolerancia = 10

nPos = clAt( ":", strHora )
intMinutos = Val2( Mid( strHora, 1, nPos - 1) ) * 60
intMinutos = intMinutos + Val2( Mid( strHora, nPos + 1 ) )

strHoraActual = Formato( Time(), "hh:mm" )
nPos = clAt( ":", strHoraActual )
intMinutosActual = Val2( Mid( strHoraActual, 1, nPos - 1) ) * 60
intMinutosActual = intMinutosActual + Val2( Mid( strHoraActual, nPos + 1 ) )

If intMinutosActual > (intMinutos + tolerancia) Then
Retardo = intMinutosActual - intMinutos
Else
Retardo = 0
End If

End Function

Sub ColocaFoto( cCliente )
Dim cHtml

cHtml = ""
CreaHTML "", (cHtml)

End Sub

Sub SumaCantidades()

' Buscamos si el artículo ya esta en el GRID
For n = 1 to fg2.Rows - 1
If clEmpty( fg2.TextMatrix( n, 0 ) ) Then
Exit For
End If

Set rstArtAux = Rst("SELECT tiempoaire FROM prods WHERE articulo = '" & Trim(Articulo) & "'", Ambiente.Connection)

If Trim(fg2.TextMatrix( n, 0 )) = Trim(Articulo) AND Val2(rstArtAux("tiempoaire")) <> 0 Then
Ambiente.Connection.Execute "UPDATE partvta SET cantidad = cantidad + 1 WHERE id_salida = " & fg2.TextMatrix( n, 7 )
fg2.TextMatrix( n, 1 ) = Val2( fg2.TextMatrix( n, 1 ) ) + 1
txtFields(4) = ""
CancelaProceso = True
Exit Sub
End If
Next

End Sub

Sub validaNumeroDePartidas
Dim rstPartidas

Set rstPartidas = CreaRecordSet( _
"SELECT COUNT( * ) FROM partvta WHERE venta = " & Me.Venta, _
Ambiente.Connection )

If Val2( rstPartidas(0) ) >= 4 Then
MyMessage "No es posible capturar mas de 4 partidas"
CancelaProceso = True
End If

End Sub

Sub ValidaComando()

If clAt( "/", Articulo ) > 0 And clAt( "//", Articulo ) = 0 Then
Call cantidaporPrecio()
Exit Sub
End If

If Trim(UCase(Articulo)) = "COMPRAS" Then
Set Compras = CreateObject( "MyBCompras.Compras" )
Set Compras.Ambiente = Ambiente
Compras.NuevaCompra True
End If

If Len( Trim( Articulo ) ) <> 4 Then
Exit Sub
End If

If clAt( "Z", UCase(Articulo) ) <> 1 Then
Exit Sub
End If

Select Case UCase(Articulo)
Case "Z001"
Script.RunForm "ALTACLIENTE", Me, Ambiente,, True
Case "Z002"
Me.OperacionBloqueada = False
txtFields(3) = "Operación Reactivada"
Case "Z003"
Me.FinalizaOperacion
Case "Z004"
Script.RunForm "ALTARAPIDA", Me, Ambiente,, True
Case "Z005"

If Question(Mensaje(642, Ambiente)) Then
Me.BorraVenta = True
Me.FinalizaOperacion
End If

Case "Z006"

Me.RecuperaVentaDeCliente

Case "Z007"

If txtFields(0).Enabled Then
txtFields(0).SetFocus
End If

Case "Z008"

AplicaDescuento

Case "Z009"

Script.RunProcess "CORTEX", Me, Ambiente

Case "Z010"

Script.RunProcess "CORTEZ", Me, Ambiente

Case "Z011"

Script.RunForm "PAGOEFECTIVO", Me, Ambiente,, True

Case "Z012"

Script.RunForm "COBROENEFECTIVO", Me, Ambiente,, True

Case "Z013"

Set rstUsuventas = CreaRecordSet( "SELECT * FROM usuventas WHERE usuario = '" & Ambiente.Uid & "'", Ambiente.Connection )

If rstUsuventas.EOF Then
Script.RunForm "DEVOLUCIONES", Me, Ambiente, True
'Exit Sub
End If

If Val2( rstUsuventas("devpunto") ) <> 0 Then
Script.RunForm "DEVOLUCIONES", Me, Ambiente, True
'Exit Sub
Else
MyMessage "No tiene derecho a hacer devoluciones, solicite el permiso con su supervisor"
'Exit Sub
End If

Case "Z014"

Script.RunForm "TICKETAFACTURA", Me, Ambiente,, True

'Case "Z016"
'
' Me.ActivaCobranza

Case "Z015"

Script.RunProcess "PUNTOV063", Me, Me.Ambiente

Case "Z016"

Script.RunForm "RETICKET", Me, Ambiente,, True

'Case "Z019"
'
' MyMessage "CONTROL + F12 Editar datos cliente" & vbCrLf & "CONTROL + F7 Editar guión" & vbCrLf & "SHIFT + F3 Colocar cursor en campo repartidor" & vbCrLf & "SHIFT + F4 Alta de repartidor"

Case "Z017"

Script.RunForm "FCAJA", Me, Ambiente,, True

Case "Z018"

Script.RunForm "CAMBIOUSUARIO", Me, Ambiente,, True

'Case "Z022"
'
' Script.RunProcess "VENTASCOLECTOR", Me, Me.Ambiente

Case "Z019"

Calculadora Ambiente

Case "Z020"

Script.RunProcess "ABRECAJON", Me, Me.Ambiente

Case "Z021"

Script.RunForm "AUXCLIENTS", Parent, Ambiente,, True

Case "Z022"

Script.RunProcess "ELIMINAVENTA", Me, Me.Ambiente

Case "Z023"

Script.RunForm "VENTASOBSERV", Me, Ambiente,, True

Case "Z024"

Script.RunForm "VENTASDESC", Me, Ambiente,, True

Case "Z025"

Script.RunForm "CAMBIOVALEEFECTIVO", Me, Me.Ambiente,, True

Case "Z026"

Script.Runform "FACTURADECIERRE", Me, Ambiente,, False

Case "Z027"

Script.RunHuellaForm "REGISTROACCESO", Me, Ambiente,, True

'Case "Z028"

'Script.Runform "LISTADEPEDIDOS", Me, Ambiente,, True

End Select

CancelaProceso = True
txtFields(4) = ""

End Sub

Sub llenaPuntoDeVenta
Dim cLinea, dondeEstaLaComa, articulo

' CloseFile cierra un manejador de archivo
CloseFile 1
' OpenFile Abre un archivo de texto para lectura
OpenFile "c:\articulos.txt", 1

' FileEOF regresa true en caso de que el archivo
' de texto llegue a su final
While Not FileEOF( 1 )
' ReadLine lee una cadena de texto
' hasta que encuentra un retorno de carro
cLinea = ReadLine( 1 )
dondeEstaLaComa = clAt( ",", (cLinea) )
articulo = Mid(cLinea, 1, dondeEstaLaComa -1 )

' cantidadDeArticulos es una variable que
' entrega el punto de venta e indica la
' cantidad de productos que se va a ingresar
' en el punto de venta
cantidadDeArticulos = _
Mid( cLinea, dondeEstaLaComa + 1 )

' llenaPartidad Es un metodo que ingresa
' producto en el punto de venta
llenaPartida (articulo)
Wend

CloseFile 1

End Sub

Sub calculaPeso()
Dim rstArticulo, cArticulo, nPesos

nPos = clAt( "--", Articulo )
cArticulo = Mid( Articulo, nPos + 2 )
nPesos = Val2(Mid( Articulo, 1, nPos - 1 ))

Set rstArticulo = CreaRecordSet( _
"SELECT * FROM prods WHERE articulo = '" & cArticulo & "'", _
Ambiente.Connection )

If Not rstArticulo.EOF Then
Articulo = cArticulo
cantidadDeArticulos = nPesos / rstArticulo("precio1")
End If

End Sub

Function Permisos( permisoSolicitado )

Set rstUsuario = CreaRecordSet( _
"SELECT * FROM usuarios WHERE usuario = '" & Ambiente.uid & "'", Ambiente.connection )

If rstUsuario("supervisor") Then
cmdZ001.Caption = "Z001 Cambia o da de alta un cliente"
cmdZ002.Caption = "Z002 Quita bloqueo por error código de producto"
cmdZ003.Caption = "Z003 Confirma la venta o muestra ventana de cobro"
cmdZ004.Caption = "Z004 Da de alta o modifica un artículo"
cmdZ005.Caption = "Z005 Deja como pendiente la venta actual"
cmdZ006.Caption = "Z006 Muestra lista de ventas pendientes"
cmdZ007.Caption = "Z007 Posicionar el cursor en el campo de cliente"
cmdZ008.Caption = "Z008 Pantalla de descuentos"
cmdZ009.Caption = "Z009 Corte parcial X"
cmdZ010.Caption = "Z010 Corte total Z"
cmdZ011.Caption = "Z011 Permite capturar un ingreso de dinero a caja"
cmdZ012.Caption = "Z012 Permite capturar una salida de dinero a caja"
cmdZ013.Caption = "Z013 Realiza una devolución de mercancia en caja"
cmdZ014.Caption = "Z014 Convierte un ticket en factura"
cmdZ015.Caption = "Z015 Realiza el pago de la devolucion"
cmdZ016.Caption = "Z016 Cobranza a clientes"
cmdZ017.Caption = "Z017 Muestra información del próducto"
cmdZ018.Caption = "Z018 Re imprimir ticket"
cmdZ019.Caption = "Z019 Functiones ventas por teléfono (Informativo)"
cmdZ020.Caption = "Z020 Arqueo de efectivo"
cmdZ021.Caption = "Z021 Cambio de usuario"
cmdZ022.Caption = "Z022 Recupera ventas del colector"
cmdZ023.Caption = "Z023 Muestra la calculadora"
cmdZ024.Caption = "Z024 Abre el cajón de dinero"
cmdZ025.Caption = "Z025 Datos auxiliares del cliente"
cmdZ026.Caption = "Z026 Elimina la ultima venta"
cmdZ027.Caption = "Z027 Observaciones a la venta"
cmdZ028.Caption = "Z028 Descuento por importe"
Else
cmdZ001.Caption = "Z001 Cambia o da de alta un cliente"
cmdZ002.Caption = "Z002 Quita bloqueo por error código de producto"
cmdZ003.Caption = "Z003 Confirma la venta o muestra ventana de cobro"
cmdZ004.Caption = "Z005 Deja como pendiente la venta actual"
cmdZ005.Caption = "Z006 Muestra lista de ventas pendientes"
cmdZ006.Caption = "Z007 Posicionar el cursor en el campo de cliente"
cmdZ007.Caption = "Z011 Permite capturar un ingreso de dinero a caja"
cmdZ008.Caption = "Z012 Permite capturar una salida de dinero a caja"
cmdZ009.Caption = "Z015 Realiza el pago de la devolucion"
cmdZ010.Caption = "Z020 Arqueo de efectivo"
cmdZ011.Caption = "Z021 Cambio de usuario"
cmdZ012.Caption = "Z024 Abre el cajón de dinero"
cmdZ013.Caption = "Z025 Muestra la calculadora"
cmdZ014.Caption = "Z026 Elimina la ultima venta"
cmdZ015.Caption = "Z027 Observaciones a la venta"
cmdZ016.Caption = "Z028 Descuento por importe"
End If
End Function

Sub cantidaporPrecio()
Dim nPos, cCantidad, cArticulo, rstProd
Dim nPrecio

nPos = clAt( "/", Articulo )
cCantidad = Mid( Articulo,1, nPos - 1 )
cArticulo = Trim( Mid( Articulo, nPos + 1 ) )

Set rstProd = CreaRecordSet( "SELECT * FROM prods WHERE articulo = '" & cArticulo & "'", Ambiente.Connection )

If rstProd.EOF Then
Exit Sub
End If

nCantidad = Round( Val2( cCantidad ) / rstProd("precio1"), 4 )

If Not rstProd.EOF Then
cantidadDeArticulos = nCantidad
llenaPartida rstProd("Articulo")
End If

CancelaProceso = True
End Sub

Sub incrementaProducto()
Dim rstArticulo, Query

Set rstArticulo = CreaRecordSet( _
"SELECT articulo FROM prods WHERE articulo = '" & Me.Articulo & "' AND granel = 0 AND speso = 0", _
Ambiente.Connection )

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

If rstArticulo.EOF Then
Exit Sub
End If

For n = 0 To fg2.Rows - 1

If clEmpty( fg2.TextMatrix( n, 0 ) ) Then
Exit For
End If

If Ucase( Trim( fg2.TextMatrix(n,0) ) ) = _
UCase( Trim(Me.Articulo) ) Then

Query.SQL = _
"UPDATE partvta SET cantidad = cantidad + 1 WHERE id_salida = " & _
fg2.TextMatrix(n,7)
Query.Exec

fg2.TextMatrix(n,1) = Val2(fg2.TextMatrix(n,1)) + 1
CancelaProceso = True
Me.CalculaImportes
Exit For
End If

Next

End Sub

Publicado el Dejar un comentario

Código Zebra 2844 y MyBusiness POS 2011

Puedes copiar este código y pegarlo en tu editor de mybusinesspos

' El siguiente procedimiento imprime las etiquetas de cada uno de los articulos
Public Sub Main ()

Set rstPartidas = CreaRecordSet( "SELECT articulo, descrip, etiquetas, precio1, precio2, precio10 FROM prods WHERE etiquetas > 0", Ambiente.Connection )

While Not rstPartidas.EOF

For i = 1 to rstPartidas("etiquetas")
ImprimeEtiqueta "LPT1", rstPartidas("articulo"), "",rstPartidas("descrip") , Formato(rstPartidas("precio1"), "##,##0.00" ), Formato(rstPartidas("precio2"), "##,##0.00" ), Formato(rstPartidas("precio10"), "##,##0.00" )
Next

rstPartidas.MoveNext

Wend

Set rstPartidas = CreaRecordSet( "SELECT clavesadd.clave, prods.descrip, clavesadd.etiquetas, prods.precio1, prods.precio2, prods.precio10 FROM clavesadd INNER JOIN prods ON clavesadd.articulo = prods.articulo WHERE clavesadd.etiquetas > 0", Ambiente.Connection )

While Not rstPartidas.EOF

For i = 1 to rstPartidas("etiquetas")
ImprimeEtiqueta "LPT1", rstPartidas("clave"), "",rstPartidas("descrip") , Formato(rstPartidas("precio1"), "##,##0.00" ), Formato(rstPartidas("precio2"), "##,##0.00" ), Formato(rstPartidas("precio10"), "##,##0.00" )
Next

rstPartidas.MoveNext

Wend

End sub

Public Sub ImprimeEtiqueta( cPuerto, cArticulo, cDato1, cDescrip, cPrecioDeLista, cMayoreo, cSugerido )

cPuerto = Trim( cPuerto )
cArticulo = Trim( cArticulo )
cDescrip = Trim( cDescrip )
cDato1 = Trim( cDato1 )

cSalida = ""

' Aqui se puede modificar la etiqueta utiliza un lenguaje llamado EPL2 le adjunto manual del
' lenguaje, tambien si tienen la información del formato de la etiqueta y quieren que la
' diseñe por favor mandemelo
' Aqui se muestran los comandos basicos
' El comando N inicia la etiqueta
' El comando A muestra un dato de texto en donde el 250 es la posición en el eje de las X
' y el 15 la posición en el eje de las Y
' El comando B muestra el código de barras donde 250 es la posición en el eje de las X y 45
' Es la posición de inicio del eje de las Y
' El comando P Finaliza la etiqueta y el nunero 1 indica cuantas etiquetas se van a imprimir

cSalida = cSalida & "N" & Chr(13) & Chr(10)
cSalida = cSalida & "A250,15,0,1,1,1,N," & Chr(34) & Formato( Date, "dd-MM-yyyy" ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "A250,30,0,2,1,1,N," & Chr(34) & Mid( cDescrip,1, 30)& Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "B250,70,0,1,2,6,80,B," & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "A380,155,0,4,1,1,N," & Chr(34) & "PRECIO $" & cPrecioDeLista & Chr(34) & Chr(13) & Chr(10)
'cSalida = cSalida & "A250,95,0,2,1,1,N," & Chr(34) & cMayoreo & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "P1" & Chr(13) & Chr(10)

if Ambiente.rstEstacion("ietiquetas") <> 0 Then
if clAt( "LPT", Ambiente.rstEstacion("ietiquetaspuerto") ) > 0 Then
Out Trim(Ambiente.rstEstacion("ietiquetaspuerto")), cSalida
else
if Ambiente.ImpresoraDeEtiquetas.PortOpen Then
Ambiente.ImpresoraDeEtiquetas.Output = cSalida
end if
end if
end if

Dormir 100
Eventos

End Sub

Publicado el 2 comentarios

Facturación CBB (Código Bidimensional)

 



Durante estos días estado revisando la posibilidad de tener una factura desde MyBusiness POS (2006 o 2011) con código Bidimensional y sin necesidad de agregar librerías, debido a que estas en muchas ocasiones no son compatibles con las versiones; y en otros casos, solo consumen muchos recursos con sus Net Frameworks. es por tal razón que he desarrollado el formato para que puedan imprimir todas sus facturas desde la versión 2006 de una manera transparente y tan fácil como se ha estado llevando a cabo hasta antes de que iniciara este año.

Aqui les dejo un link que muestra cómo se vería la Factura con código Bidimensional:

MyBusinesspPOS CBB

[gview file=”http://helpmybusinesspos.info/wp-content/Imagenes/MyBusinessPOS_Factura_CBB.pdf” save=”1″]

Espero les convenza y veamos el verdadero potencial que sigue teniendo la versión 2006 de MyBusiness POS sobre cualquier otra versión.

Publicado el 70 comentarios

Corregir el Código Duro 58 y 5 en MyBusiness POS

Canal oficial de Video TutorialesTe podemos solucionar este error lo más pronto posible desde Whatsapp 7222816462

El cupón de este año 2019 es 9yewhp .

En esta ocasión complementaré acerca del Código Duro 58; el cual tiene que ver con muchas razones. Por lo pronto les dejo un video que muestra la solución en Windows 7.

Descarga la cadena de conexión para MyBusiness POS 20

[products ids = “18178,19645, 15042,14972”]




Las Causas del error pueden ser varias:

  • Windows 7 y MSQL Server; Privilegios y permisos.

2147467259 se ha denegado el permiso create database en la base de datos ‘master’. código duro: 58

La causa es que los candados de SQL Server y windows 7 impiden que se cree por primera vez una base de Datos que es necesaria para guardar configuraciones del mismo SQL Server.

(Obtenido de MyBusiness POS Desarrollos)Pueden ser varias causas, le comento las posibles soluciones:

  1. Dar clic secundario al icono de MyBusiness POS y elegir la opción “Ejecutar como administrador”. Para evitar tener que hacer esto nuevamente, puede cambiar la “Configuración del control de cuentas de usuario” y colocarlo en “No notificarme nunca”
  2.  Otra alternativa sería realizar lo siguiente:
    • Utilice la secuencia “C:\MyBusinessDatabase” y seleccione el archivo “MyBusinessPOS2010”, de clic secundario y elija la opción “Propiedades
    • En el cuadro de dialogo que aparece, seleccione la ficha “Seguridad”, de clic en el botón Editar, clic en la casilla “Control total”, clic en Aceptar y nuevamente clic en Aceptar.
    • Repetir el proceso con el archivo MyBusinessPOS2010_log
  • No se puede Abrir la Conexión con SQL Server

Existe un error al intentar hacer la conexión -2147467259 Proveedor de canalizaciones con nombre: No se pudo abrir una conexión con SQL Server [2].  código duro: 58

Causa: El servicio de SQL SERVER no esta habilitado

  1. Verifique, primero, que se haya instalado correctamente el servicio de SQL Server.
  2. Revise que esté en estado Running: Entrar a inicio/todos los programas/Microsoft SQL server management studio/herramientas de configuración (configuration tools) /Administrador de configuración de SQL server/services: Aquí mostrará los servicios de SQL, seleccionaremos el servicio SQL Server (SQLExpress), clic derecho iniciar. Otra alternativa es ejecutar esta herramienta que les dejo de forma gratuita para que la prueben. La desarrollé y es funcional:
  • Problemas en la Red por Conexión o  Ancho de Banda

Existe un error al intentar hacer la conexión -2147467259 Proveedor de TCP: Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder. código duro: 5

Te podemos solucionar este error lo más pronto posible desde Whatsapp 7222816462

Causa: No hay conexión física entre el servidor de SQL Server y la Estación de Trabajo

  1. Verifique que el equipo esta dentro de la red, conectado físicamente o por VPN (Hamachi) y que pueden comunicarse o compartir archivos. 
  2. Revise que el equipo servidor está encendido y que está habilitado el servicio SQL Server
  3. Revise que su equipo Cliente cuenta con el Conector SQL. 
  4. Verifique que el firewall de su router (en caso de alguna VPN diferente a hamachi) permita acceder a traves del puerto 1400
  5. Puede utilizar el siguiente bloque de Conexion y pegarlo en la ventana grande que le aparece despues del error no 5

Provider=SQLNCLI;Data Source=TCP:SERVIDOR\SQLEXPRESS,1400;

Initial Catalog = C:\MyBusinessDatabase\MyBusinessPOS2011.mdf;

Persist Security Info=True;

User ID=sa;

Password=12345678

En donde dice SERVIDOR, es el nombre de su equipo en donde esta almacenada la base de datos

1400 es el numero de puerto por el que nos conectaremos al servidor, este debe estar abierto tanto en el firewall como en la configuracion de SQL Server (ambos en el servidor).

  • Permiso denegado. problema con para crear una Base de Datos en SQL SERVER

Existe error al interior hacer la conexion 2147467259 CREATE DATABASE Permission deied in database master codigo duro:5 

(Obtenido de MyBusiness POS Desarrollos)Pueden ser varias causas, le comento las posibles soluciones:

  1. Dar clic secundario al icono de MyBusiness POS y elegir la opción “Ejecutar como administrador”. Para evitar tener que hacer esto nuevamente, puede cambiar la “Configuración del control de cuentas de usuario” y colocarlo en “No notificarme nunca”
  2.  Otra alternativa sería realizar lo siguiente:
    • Utilice la secuencia “C:\MyBusinessDatabase” y seleccione el archivo “MyBusinessPOS2010”, de clic secundario y elija la opción “Propiedades
    • En el cuadro de dialogo que aparece, seleccione la ficha “Seguridad”, de clic en el botón Editar, clic en la casilla “Control total”, clic en Aceptar y nuevamente clic en Aceptar.
    • Repetir el proceso con el archivo MyBusinessPOS2010_log
  • Permiso Denegado. Problema con el puerto 1400.
Existe un error al intentar hacer la conexión -2147467259 Proveedor de TCP: No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión. código duro: 58
Causa: El equipo servidor no tiene abierto el puerto 1400
    • Es necesario abrir el puerto 1400 en el equipo servidor.
  • Falta el cliente (SQL Cli.msi)

Se detecto que no estan instalados los clientes de SQL Server, busque el archivo sqlncli.msi en su disco de instalación e instalelo

Causa: En la terminal, hace falta un pequeño programa que permite la conexión desde la Terminal al Servidor.
  • No está instalado el Servidor (SQL Server) en la Red Local.
Existe un error al intentar hacer la conexión -2147467259 SQL Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].  código duro: 58
Causa: No está instalado Sql Server en el equipo local y además no se encuentra en otro equipo de la Red.
La solución es Revisar que puede compartir archivos o datos con el servidor para asegurarse de que hay buena comunicación. Además será necesario que en la terminal coloque esta cadena de conexión.
 
  • El nombre (o Dirección IP) del Servidor no Existe en la Red

Existe un error al intentar hacer la conexión -2147467259 Proveedor de TCP: Host desconocido. código duro: 5

Causa: El Nombre del Servidor o Dirección Ip donde está alojada la base de Datos No existe o no tiene el Servicio Habilitado.

SERVIDOR es el nombre o IP de su SQL Server

  •  El Puerto de SQL SERVER actual no es 1400

Existe un error al intentar hacer la conexión -2147467259 Proveedor de TCP: No se ha podido establecer conexión ya que el equipo de destino ha denegado activamente dicha conexión. código duro: 5

Causa: El Servidor está rechazando la conexión debido a que el puerto disponible para aceptar las peticiones no es el 1400 (tal vez es el 1344, que viene por default). En este caso, debemos abrir el puerto 1400 para permitir el acceso a la Base de Datos.

  •  El Servicio de SQL Server está en PAUSE

 Existe un error al intentar hacer la conexión -2147467259 SQL Server service has been paused. No new connections will be allowed. To resume the service, use SQL Computer Manager or the Services application in Control Panel. código duro: 5

Causa: El servicio está Pausado de manera intencional por el Personal Administrador del Sistema (DBA).

  • No existe la Base de Datos MyBusinessPOS2011.mdf en la Lista del Servidor.

Existe un error al intentar hacer la conexión -2147467259 Cannot open database “C:\MyBusinessDatabase\MyBusinessPOS2011.mdf” requested by the login. The login failed. código duro: 5

Causa: La Base de Datos no existe en el Servidor.

Tal vez Será Necesario hacer un Attach de la Base de Datos.

Otra causa es que no se encuentran los dos archivos necesarios en la ruta C:\MyBusinessDatabase\

  • El Sistema de Archivos de  Windows esta Comprimido

EXISTE UN ERROR AL HACER LA CONEXION 2147467259 EL ARCHIVO C:\MYBUSSINESDATABASE\MYBUSSINESPOS2011.MDF.  esta comprimido pero no recibe e una base de datos o grupo de archivos de solo lectura el archivo debe estar descomprimido. codigo duro 58.

Causa: Windows Comprime los archivos de manera automática para reducir espacios.

Dar un clic sobre la unidad C,  seleccionar la opción “Propiedades”. En la ventana que le aparece debe deshabilitar la opción que dice “Comprimir esta unidad para ahorrar espacio en disco”. De clic en Aceptar y vuelva a hacer una prueba para entrar a MyBusiness POS.

  •  No coincide la contraseña para accesar a la Base de Datos

Existe un error al intentar hacer la conexión -2147217843 Login failed for user ‘sa’. código duro: 5

Causa: el usuario y la Contraseña no coinciden para accesar a la base de Datos (de SQL Server, no es la misma del login a mybusiness).

Usurio:  sa

Passwd: 12345678

  •  Error de Password en MyBusiness POS

El password no coincide

Causa: el usuario y la Contraseña no coinciden para iniciar Sesión en MyBusiness POS

Datos por Default

Usurio:  sup

Passwd: sup

La manera correcta de escribirlo es sup[ESPACIO]sup

  • Error en el Usuario MyBusiness POS

El usuario no existe

Causa: El usuario no ha sido dado de alta en el sistema.

Datos por Default

Usurio:  sup

Passwd: sup

La manera correcta de escribirlo es sup[ESPACIO]sup

  • La Cadena de Conexión está Incompleta

Existe un error al intentar hacer la conexión -2147467259 Interfaces de red SQL: La cadena de conexión no es válida [87].  código duro: 5

Causa: A la cadena de conexión le faltan parámetros para que se pueda realizar la conexión al Servidor (puede ser el nombre o el puerto 1400 que haga falta).

  • Error al ejecutar a SQLCloud

Run-time error 429 ActiveX Component Can’t create object

Module: frmInicio
Function: vbaIListBar1_ItemClick
ActiveX component can’t create object codigo duro: 24
Error número: 429

Te podemos solucionar este error lo más pronto posible desde Whatsapp 7222816462

Error al ejecutar a SQLCloud

  • Error al intentar abrir MyBusinessPOS V17

Existe un error al intentar hacer la conexión -2147467259
SQL Server Network interfaces: La instancia localDB especificada no existe.
[x89C50107]. Código duro: 5

Causa: La versión 2017 se conecta de manera diferente a las anteriores, crea un nombre  propio en el ODBC.
Te podemos solucionar este error lo más pronto posible desde Whatsapp 7222816462

  • Run time error 91 mybusiness pos

Error de tiempo de ejecución ’91’: la variable de objeto o variable de bloque With no está establecida, seguida del Error 59999 – Error definido por el objeto o definido por la aplicación

PD: Estoy seguro que ni el personal de MyBusiness POS Desarrollos tienen esta lista de errores y Soluciones!!!

Whatsapp 7222816462 , tenemos la solución.
Ocurrió un Error
Module: frmPointOfSal
Function: TerminaVenta
Description: No se pudo finalizar la reansacción de datos: Error no especificado código duro: 2944
Error número: -2147467259

Solución:
https://helpmybusinesspos.info/download/reparar-base-de-datos-2012-con-un-query/

Metadatos:

  • my business pos codigo duro 58,
  • error codigo duro 5 my business 2017,
  • codigo duro 62 my business,
  • mybusiness pos,
  • error 58 mybusiness 2011,
  • my business pos v17 configuracion en red,
  • codigo duro 5 my business pos 2017,
  • mybusinesspos2012 mdf solicitada por el inicio de sesión error de inicio de sesión código duro 5,
  • como instalar my business pos 2017,
  • existe un error al intentar hacer la conexión -2147467259 my business,
  • error codigo 5,
  • my business pos 2017 codigo duro 5,
  • codigo duro 62 my business,
  • error 58 mybusiness 2011,
  • instalar mybusiness pos 2017,
  • x89c5010a código duro 5,
  • error en el vinculo de comunicacion mybusiness,
Publicado el 25 comentarios

Configurar MyBusiness POS en RED y Código Duro 58 [Solucionado]

También visite:  Como corregir codigo duro 58

He notado que muchos de los Distribuidores y clientes tienen problemas para hacer la conexion de MyBusiness POS 2011 en Red.

Descarga la cadena de conexión para MyBusiness POS 20

En ocasiones hay que hacer algo más allá de simplemente llenar los textBox que nos presenta el Sistema. El problema en la Conexión se presentó igual en la Versión 2010.
Al parecer, cuando damos de alta una conexión de forma errónea se nos complica un poco hacer la MODIFICACIÓN en los parámetros, esto es porque la ventana contiene errores para hacer el ajuste antes mencionado. En este caso, lo recomendable es BORRAR la conexión errónea y dar de ALTA una nueva Conexión con los datos correctos.
Otra alternativa es colocar de forma manual el nombre de la Conexion en el espacio en blanco que se muestra al final de todos los TextBox. eso es lo que se presenta en el siguiente video. Espero que sea útil…. y no se olviden de Comentar.
Aunque, si hubiera una manera de hacer un Donativo, újule sería bien recibido jeje; digo, si les es útil. Al final del día quienes más visitan este blog son DISTRIBUIDORES que van a aplicar esta Solución con sus CLIENTES.
Saludos.
https://youtu.be/LfAAzzR1Kac
Además, he agregado el siguiente video para los usuarios que tienen problemas para abrir por primera vez el sistema MyBusinessPOS: El ya famoso Error Código Duro 58.

Como información adicional, cito la siguiente información obtenida del boletín No. 41 de MyBusinessPOS.com, la cual puede ser de utilidad.

Instalar SQL para trabajar en RED

Servidor

Una vez que se introduce en CD de instalación y nos muestra el “SplashCD” damos un clic en la opción Instalar SQL para trabajar en RED la cual nos mostrará una ventana donde debemos definir el “password para el servidor de Microsoft SQL Server” capturamos el password y lo confirmamos, damos un clic en el botón “Aceptar” y continuamos con la instalación.

Una ves instalado vamos a revisar el puerto que asigno al instalar el SQL, damos clic en el botón Inicio / Todos los programas / Microsoft SQL Server 2005 / Configuration Tools / SQL Server Configuration Manager Nos mostrará la siguiente ventana en la cual damos clic en la opción de SQL Server 2005 Network Configuration / Protocolo for SQL EXPRESS / TCP/IP y damos un clic en Propiedades del TCP/IP – IP Adreses IPAII – TCP Dynamic Port. Una vez que tenemos el número de puerto hay que acceder al firewall de Windows para liberar el puerto que nos servirá para conectarnos en red

Liberar puerto en el Firewall de Windows

Damos un clic en el botón Inicio / Panel de control / Firewall de Windows / Excepciones y damos clic en Agregar puerto… Asignamos un nombre y el número de puerto que género la instalación del SQL Server, clic en TCP, clic en Aceptar.

Hasta este punto ya tenemos el password para el servidor de Microsoft SQL Server, el número de puerto del SQL y liberado el puerto en el firewall de Windows.

Cliente

En el equipo cliente damos clic en la opción “Instalar MyBusiness” al concluir con la instalación nos mostrar los “Datos generales de la empresa” en la cual colocamos el nombre de nuestra empresa y damos clic en el botón “Avanzadas” y modificaremos los siguientes datos.

1. Desactivamos la casilla de “Utilizar base de datos local”

2. Revisamos que el nombre de la base de se el mismo de no ser así cambiamos la ruta o el nombre de la misma

3. Verificamos el nombre del equipo servidor o la IP a la cual nos vamos a conectar (125.265.1.125\SQLEXPRESS) ejemplo.

4. Cambiamos el puerto que nos asigna por el que nos genero el SQL y del cual liberamos el puerto

5. Y finalmente cambiamos el password por que creamos al momento de la instalación.

Damos clic en el botón “Aceptar” y ¡listo…!!! Nos hemos conectado en Red.