Publicado el Dejar un comentario

Dónde guarda el código MyBusiness POS?

Tal vez te has preguntado cómo es que almacena las modificaciones el sistema MyBusiness POS. Los scripts se almacenan e dos tablas:

  • FormasDeltaEsta tabla almacena todos los códigos que utiliza el sistema para la mayoría de las ventanas que utilizamos y podemos modificar con el editor gráfico
  • FormatosDeltaEsta tabla almacena los procedimientos, formatos de impresión y formatos de reportes que tiene el sistema

Cabe destacar que no todo el código es visible por el usuario; aproximadamente un 30% es código duro que no de puede editar. Sin embargo, el código visible es suficiente para crear nuevos desarrollos a la medida.

Espero que esta informaicón sea de utilidad para futuros desarrolladores de módulos.   

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

Respaldos automáticos en My Business POS

Sql_Management_Studio-mybusinessposTenemos una alternativa reciente para respaldar una base de datos en la nube. Esta alternativa es independiente del programa MyBusiness POS y permite programar los respaldos en Internet.

Solicita la configuración al WhatsApp 7222816462

 

Nunca se conoce la importancia de los respaldos hasta que ocurre un desastre, desde que un apagón dañe un archivo importante hasta lo peor: que se pierda toda la información de su disco duro, meses o quizás años de valiosa información de su negocio. Ahora MyBusiness POS (version 2008 a la 2012) le ofrece una forma automática de hacer respaldos, los cuales se pueden programar desde una sencilla ventana.

Este módulo se encuentra en la barra de tareas en la pestaña Utilerías, icono Respaldo.

Las opciones son:

CONFIGURACIÓN DEL RESPALDO.

Base de datos: Es la ruta donde se encuentra la base de datos que respaldaremos. Por omisión es C:\MyBusinessDatabase\MyBusinessPOS2012.mdf, que es la base de datos de MS SQL Server que se crea en la instalación.

Destino: Es la carpeta en donde se guardarán los respaldos, la cual se crea al momento de instalar el programa. Por omisión es C:\Respaldos\MyBusinessPOS2012.back.

Destino Adicional: Podemos utilizar esta opción para otra ruta donde se quiera guardar una copia de la base de datos. Por omisión es F:\Respaldos\MyBusinessPOS2012.back.

CONFIGURACIÓN DE LA CALENDARIZACIÓN.

Realizar desde: Esta opción nos la muestra en caso de tener varios equipos en red y queramos que una de las estaciones sea la que almacene la información de los respaldos.

Frecuencia: puede ser diaria, en cierta fecha y hora, una vez cada “x” días o en ciertos días específicos de la semana.

Elija una configuración adecuada a sus necesidades, de un clic en [Aplicar] y después en [Salir].

Ya cuenta ahora con una herramienta automática de respaldo de su información para no sufrir sobresaltos.

Fuente:Información obtenida del boletín No. 50 de http://mybusinesspos.com

Privacidad

aviso-de-privacidad_mybusinessposAviso de Privacidad

Ley Federal de Protección de Datos Personales en Posesión de los Particulares

Responsable de la protección de sus Datos Personales

Help MBP, con domicilio en Paseo Tollocan 1217, Delegación Santa Ana Tlapaltitlán, Toluca, Edo. de México, C.P. 50080, es responsable del tratamiento de sus datos personales recabados por este medio.

Forma y medios de contacto

Puede contactarnos, redactando un documento en idioma español, dirigido al Responsable de Seguridad de Información y hacerlo llegar por correo electrónico a la siguiente dirección electrónica: jofelchez@gmail.com.

Fines de los Datos Personales recabados

Sus datos personales serán utilizados para los siguientes fines: proveerle los productos y servicios y desarrollar los procesos que ello implique como son seguimiento, confirmación, información, comunicación; con fines promocionales, de actualización y de contratación; dar cumplimiento a obligaciones contraídas con nuestros clientes, evaluar la calidad del servicio, realizar estudios sobre hábitos de consumo y preferencias.

Datos recabados y medios de obtención de Datos Personales

Los datos personales que recabamos de usted, con los fines descritos en el presente aviso de privacidad, son recabados de manera personal, cuando usted nos los proporciona directamente; por vía de nuestros Sitios en Internet cuando ingresa sus datos o utiliza nuestros servicios en línea, y cuando obtenemos información a través de otras fuentes que están permitidas por la Ley.

Los datos personales que recabamos de forma directa cuando usted mismo nos los proporciona por diversos medios, como cuando participa en promociones, ofertas o cuando contrata con nosotros algún producto o servicio.

Los datos que recabamos de manera directa y vía internet, son los siguientes: Nombre completo, empresa donde labora (opcional), domicilio(s), teléfono(s), correo(s) electrónico(s), etc. Ninguna de esta información es considerada como Datos Sensibles en los términos señalados en Artículo 2o., fracción VI de la Ley.

Toda vez que la Ley permite otras fuentes para allegarnos de información como lo son directorios telefónicos, de servicios y laborales, los datos que por dichos medios podemos obtener son: Nombre completo, empresa donde labora (opcional), domicilio(s), teléfono(s), correo(s) electrónico(s).

En cuanto a los datos financieros como lo son su número de tarjeta de crédito, fecha de expiración de la misma de conformidad con los artículos 8°, 10° y 37° de la Ley no son considerados datos que requieran de su consentimiento expreso para ser utilizados.

Limitaciones al uso de datos

Usted puede dejar de recibir promociones, ofertas y servicios de manera telefónica, por correo electrónico, haciendo llegar una carta escrita en idioma español, donde indique su solicitud y los datos necesarios como lo son Nombre completo (nombre o nombres y apellido o apellidos), copia simple de su identificación oficial o por medio electrónico, mediante una versión digitalizada de las mismas (escaneo), número de cliente (en caso de tener uno), teléfono, dirección física y electrónica, para fines de notificaciones relacionadas al caso, al correo electrónico jofelchez@gmail.com .

Ejercicio de los Derechos

Usted tiene derecho de acceder a los datos personales que poseemos, a los detalles de tratamiento de los mismos, a la rectificación en el caso de ser estos inexactos o incompletos, a cancelarlos cuando considere que no son necesarios para ninguna de las finalidades contenidas en el presente Aviso de Privacidad, que son utilizados para finalidades no consentidas, u oponerse al tratamiento de los mismos para fines específicos y que deberá expresar de manera clara.

Mecanismos para el ejercicio de los Derechos

Los Derechos antes descritos se ejercen a través de la presentación de la solicitud respectiva que por escrito y en idioma español debe presentar en Paseo Tollocan 1315, Colonia Seminario 3ra Sección, Edo. de México, C.P. 50080, con atención al Responsable de Seguridad de Información; o bien hacerla llegar por correo electrónico a la siguiente dirección: jofelchez@gmail.com .

El plazo para atender su solicitud será en un máximo de veinte días contados a partir de la fecha de recepción de su solicitud de acceso, rectificación, cancelación u oposición.

Para mayor información favor de comunicarse con el Responsable de Seguridad de Información por correo electrónico a la dirección: jofelchez@gmail.com .

El Instituto Federal de Acceso a la Información y Protección de Datos es quien tiene encomendado velar por sus derechos y el encargado de regular y verificar la observancia de la Ley.

Derecho de revocar su consentimiento para el tratamiento de datos

En todo momento, usted puede revocar el consentimiento que nos ha otorgado para el tratamiento de sus datos personales, con el fin de que se deje de hacer uso de los mismos, para ello es necesario que presente su petición según se describe en éste mismo aviso en la sección de “Forma y medios de contacto”.

Su solicitud deberá indicar Nombre completo, copia simple de su identificación oficial o, en medios electrónicos, la versión digitalizada de la misma (escaneo), indicación del correo electrónico, nombre de la empresa, dirección física que designe para notificaciones, número telefónico y correo electrónico de contacto.

En un plazo máximo de veinte días, contados a partir de la fecha de recepción de su solicitud de revocación, le daremos contestación sobre la procedencia de la misma, por medio de correo electrónico dirigido a su persona, enviado a la dirección de correo electrónico que haya indicado en la propia solicitud o enviando carta al domicilio físico que haya indicado a tales efectos (los veinte días se darán por cumplidos al momento de entregar el documento al servicio postal)

Transferencia de datos a terceros, nacional e internacional

Sus datos personales pueden ser transferidos y tratados dentro y fuera de los Estados Unidos Mexicanos, por personas distintas a ésta empresa. En ese sentido, su información puede ser compartida con Instituciones Financieras, bancarias, crediticias y empresariales para fines informativos, promocionales, publicitarios y mercantiles.

Sus datos personales no serán transferidos a terceros sin su consentimiento, de conformidad con el artículo 37 de la Ley, salvo por las excepciones previstas en dicho ordenamiento legal. Si usted no manifiesta su oposición para que sus datos personales sean transferidos, se entenderá que ha otorgado su consentimiento para ello.

Modificaciones al presente aviso de privacidad

Nos reservamos el derecho de efectuar, en cualquier momento, modificaciones o actualizaciones al presente aviso de privacidad, entre otros, para la atención de novedades legislativas, políticas internas o nuevos requerimientos para la prestación u ofrecimiento de nuestros servicios o productos

Las modificaciones que se efectúen se pondrán a disposición del público a través de algunos o todos los medios siguientes: anuncios visibles en nuestro establecimiento o centro de atención a clientes, vía nuestra página de internet, vía correo electrónico a la dirección mas reciente que tengamos de usted o personalmente por medio de nuestros encargados al momento de acudir a cualquiera de nuestras instalaciones.

Información en Internet

Hacemos de su conocimiento que cuando accede a nuestro Sitio en Internet es recibida por nuestra parte información referente a sus cookies y web beacons para obtener información como lo es su tipo de navegador y sistema operativo. Soporte MyBusiness POS NO almacena información de las páginas de Internet que ha visitado recientemente, los vínculos que recientemente ha seguido, la dirección IP de su computadora, el sitio que cerró antes de entrar a nuestro portal en Internet.

Datos personales sensibles

Hacemos de su conocimiento que para cumplir con las finalidades detalladas en el Presente Aviso de Privacidad NO serán recabados datos personales sensibles, como aquellos que refieren a: Parentesco, Preferencia sexual, religión, creencias filosóficas, condición física, estado de salud, discapacidad, documentos médicos, entre algunos otros.

Definiciones

Se entiende para efectos del presente aviso de Privacidad lo siguiente:

I.-Cookies.- Son los archivos de texto que se descargan automáticamente y se almacenan en el disco duro del equipo de cómputo del usuario al navegar en una página o portal de Internet específico, que permiten almacenar en el servidor de Internet ciertos datos del usuario, entre ellos, paginas preferidas de visualización en internet, algunas claves y contraseñas.

II.-*Días.- Por disposición del Artículo 3° en su fracción VII de la Ley Federal de Protección de Datos Personales en Posesión De los Particulares los plazos y tiempos estipulados en días, se contarán en días hábiles.

III.- Derechos ARCO.- Son los Derechos de Acceso, Rectificación, Cancelación y Oposición, consagrados de en la Ley que por sus siglas forman dicha palabra.

IV.-Ley.-Hacer referencia a la Ley Federal de Protección de Datos Personales en Posesión de los Particulares, publicada en el Diario Oficial de la Federación el 5 de julio de 2010.

V.-Web beacons.-Imágenes insertadas en páginas o portales de Internet, así como en correos electrónicos y que entre otros pueden almacenar información de la dirección IP del usuario, tiempo de interacción en los sitios web, tipo de navegador utilizado, entre otros.

Publicado el 2 comentarios

My Business POS 2012

descagas mybusiness pos

Factura Electrónica CFDI 2010

20.28 MB 478 descargas

Descarga la nueva versión de MyBusiness POS 2012 ahora!!!

[gview file=”http://helpmybusinesspos.info/wp-content/Descargas/2012/05/MyBusinessPOS2012_trip.pdf” height=”900″ width=”100%”]

Así que hay que probar las novedades que nos presenta; por supuesto espero que esta última versión sea mucho mejor que sus antecesoras 2008, 2010 y 2011; porque para lograr llegar hasta aquí tuvieron que pasar dos años de espera, quiero pensar que eso significa que los errores son mínimos

Lo único que espero es que este típtico no sea solo publicidad engañosa, esto debido a que muchos nuevos distribuidores se ven ilusionados y se arriesgan a tal grado de perder hasta la lealtad de sus clientes. Y pues con el cliente no se puede jugar…Hay que ofrecer soluciones y no problemas.

Los distribuidores que tienen el privilegio de ir al congreso a Cancún en este mes de  Mayo, pues bien por ellos; en mi caso, pues la carga de trabajo no me permite  asistir (y si tuviera tiempo y dinero pues mejor lo disfrutaba en Mérida y sus alrededores)

Aquí les dejo el link de descarga de la diferentes versiones de MyBusiness POS por si llegaran a necesitarlas

En lo personal, aun sigo recomendando la versión 2006 Delta por considero que es la que ha dado vida y  costeado el desarrollo de las demás versiones.

Recomendación importante para los Distribuidores:

Antes de ofrecer el producto, hay que hacer las pruebas necesarias para tener la certeza de funcionalidad del software…

Bueno pues mucha suerte y éxito a todos.