'----****
'----**** MyBusiness POS V20
'----**** Version del script: 1.0
'----**** 19/02/2020
'----****
Sub Main()
'Set rstArticulo = CreaRecordSet( "SELECT precio2, precio3 FROM prods WHERE articulo = '" & fg2.TextMatrix( fg2.row, 0 ) & "'", Ambiente.Connection )
'fg2.TextMatrix( fg2.Row, 17 ) = rstArticulo( "precio2" )
'fg2.TextMatrix( fg2.Row, 18 ) = rstArticulo( "precio3" )
End Sub
Autor: jose felix
Desarrollador de módulos para el software MyBusiness POS
EJEMPLOIMPORTA Ejemplo de importación de datos
'----****
'----**** MyBusiness POS V20
'----**** Version del script: 1.0
'----**** 19/02/2020
'----****
Sub Main()
Dim Articulo
Dim Descripcion
Dim Precio
Dim Query
Dim rstProd
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
CloseFile 1
OpenFile "c:\sample.txt", 1
Ambiente.Connection.Execute "UPDATE prods SET paraventa = 1"
While Not FileEOF( 1 )
cLinea = ReadLine( 1 )
nComa = clAt( ",", cLinea )
Articulo = Mid( cLinea, 1, nComa - 1)
cLinea = Mid( cLinea, nComa + 1)
nComa = clAt( ",", cLinea )
Descripcion = Mid( cLinea, 1, nComa - 1 )
Precio = Mid( cLinea, nComa + 1)
Set rstProd = CreaRecordSet( "SELECT articulo FROM prods WHERE articulo = '" & Articulo & "'", Ambiente.Connection )
Query.Reset
If Not rstProd.EOF Then
Query.strState = "UPDATE"
Query.Condition = "articulo = '" & Articulo & "'"
Else
Query.strState = "INSERT"
End If
Query.AddField "prods", "articulo", Articulo
Query.AddField "prods", "descrip", Descripcion
Query.AddField "prods", "precio1", Val2( Precio )
Query.AddField "PRODS", "linea", "SYS"
Query.AddField "PRODS", "marca", "SYS"
Query.AddField "PRODS", "ubicacion", "SYS"
Query.AddField "PRODS", "impuesto", "SYS"
Query.AddField "PRODS", "paraventa", 1
Query.AddField "PRODS", "invent", 1
Query.CreateQuery
Query.Execute
Wend
CloseFile 1
End Sub
CLASIFINV Clasifica el inventario
'----****
'----**** MyBusiness POS V20
'----**** Version del script: 1.0
'----**** 19/02/2020
'----****
Sub Main()
Dim rstTarea
Dim nId
Dim Query
Set rstTarea = CreaRecordSet( "SELECT MAX(id) FROM concentradortareas WHERE tarea = 'INVENTARIO'", Ambiente.Connection, false )
nId = Val2( rstTarea(0) )
Set rstTarea = CreaRecordSet( "SELECT * FROM concentradortareas WHERE id = '" & nId, Ambiente.Connection, false )
If Not rstTarea.EOF Then
If (rstTareas("Fecha") - Date) >= Val2( Combo2.Text ) Then
ProcesaInventario
Set Query = NewQuery()
Query.ErrorOculto = True
Set Ambiente.Connection = Ambiente.Connection
Query.strState = "INSERT"
Query.AddField "concentradortareas", "id" , TraeSiguiente( "concentradortarea", Ambiente.Connection )
Query.AddField "concentradortareas", "tarea", "inventario"
Query.AddField "concentradortareas", "fecha", Date
Query.CreateQuery
Query.Execute
End If
End If
End Sub
Sub ProcesaInventario
ClasificaObsoleto ""
ClasificaProd
ColocaProductosDeKits
ClasificaAltoMediobajolento
ClasificaAltos
ClasificaObsoleto "Obsoleto"
FinalizaTarea
End Sub
Sub ClasificaObsoleto( cObsoleto )
Dim dFechaInicial
Dim dFechaFinal
Dim nPeriodosNuevo
Dim nPeriodos
Dim rstProds
Dim rstMovsinv
dFechaInicial = DateSerial( 1999, 2, 1 )
dFechaFinal = Date
nPeriodosNuevo = 6
If clEmpty( (cObsoleto) ) Then
Set rstProds = CreaRecordSet( "SELECT articulo FROM prods ORDER BY articulo", Ambiente.Connection, false )
Else
Set rstProds = CreaRecordSet( "SELECT articulo FROM prods WHERE clasificacion = '" & cObsoleto & "' ORDER BY articulo", Ambiente.Connection, false )
End If
While Not rstProds.EOF
Set rstMovsinv = CreaRecordSet( "SELECT articulo, f_movim FROM movsinv WHERE articulo = '" & rstProds("Articulo") & "' AND ent_sal = 'E' ORDER BY f_movim", Ambiente.Connection, false )
If rstMovsinv.EOF Then
Set rstMovsinv = CreaRecordSet( "SELECT articulo, f_movim FROM kardex WHERE articulo = '" & rstProds("Articulo") & "' AND ent_sal = 'E' ORDER BY f_movim", Ambiente.Connection, false )
End If
If rstMovsinv.EOF Then
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Nuevo sin movimiento' WHERE articulo = '" & rstProds("articulo") & "'"
Else
nPeriodos = DateDiff( "m", dFechaInicial, rstMovsinv("f_movim") )
If nPeriodos <= nPeriodosNuevo Then
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Nuevo sin movimiento' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nPeriodos > nPeriodosNuevo And nPeriodos <= 12 Then
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Obsoleto < 1 año' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nPeriodos > 12 And nPeriodos <= 24 Then
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Obsoleto > 1 año' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nPeriodos > 24 And nPeriodos <= 36 Then
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Obsoleto > 2 años' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nPeriodos > 36 Then
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Obsoleto > 3 años' WHERE articulo = '" & rstProds("articulo") & "'"
End If
End If
rstProds.MoveNext
Wend
End Sub
Sub ClasificaProd()
Dim nFechaInicial
Dim nFechaFinal
Dim nPeriodos
Dim n
Dim strSQL
Dim dFechaAnterior
Dim Query
Dim dFechaInicialVenta
Dim dFechaFinalVenta
Dim nCantidad
Dim rstMovsinv
Dim Fecha
Dim nActivos
Dim cClasificacion
Dim rstEntradas
Dim rstSalidas
dFechaInicial = DateSerial( 1999, 2, 1 )
dFechaFinal = Date
nPeriodosNuevo = 6
nPeriodos = DateDiff( "m", dFechaInicial, dFechaFinal )
nPeriodos = Abs( nPeriodos )
Ambiente.Connection.Execute "DELETE FROM histprods"
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Query.ErrorOculto = True
For n = 0 To nPeriodos
dFechaAnterior = DateAdd( "m", n * -1, dFechaFinal )
dFechaInicialVenta = Ud( Month( dFechaAnterior ), Year( dFechaAnterior ), False )
dFechaFinalVenta = Ud( Month( dFechaAnterior ), Year( dFechaAnterior ), True )
strSQL = ""
strSQL = strSQL & "SELECT partvta.articulo, prods.kit, SUM( cantidad ) AS 'cantidad'"
strSQL = strSQL & " FROM partvta, prods, ventas"
strSQL = strSQL & " WHERE partvta.articulo = prods.articulo"
strSQL = strSQL & " AND partvta.venta = ventas.venta"
strSQL = strSQL & " AND ventas.estado = 'CO' AND ventas.cierre = 0"
strSQL = strSQL & " AND ventas.f_emision >= " & FechaSQL( dFechaInicialVenta, Ambiente.Connection )
strSQL = strSQL & " AND ventas.f_emision <= " & FechaSQL( dFechaFinalVenta, Ambiente.Connection )
strSQL = strSQL & " GROUP BY prods.articulo, prods.kit"
strSQL = strSQL & " ORDER BY prods.articulo, prods.kit"
Set rstProds = CreaRecordSet( (strSQL), Ambiente.Connection, false )
While Not rstProds.EOF
Set rstMovsinv = CreaRecordSet( "SELECT f_movim FROM movsinv WHERE ent_sal = 'E' AND articulo = '" & rstProds("articulo") & "' ORDER BY f_movim", Ambiente.Connection, false )
If rstMovsinv.EOF Then
Set rstMovsinv = CreaRecordSet( "SELECT f_movim FROM kardex WHERE ent_sal = 'E' AND articulo = '" & rstProds("articulo") & "' ORDER BY f_movim", Ambiente.Connection, false )
End If
dFecha = DateSerial( 1900, 1, 1 )
nActivos = 0
cClasificacion = "Obsoleto"
If Not rstMovsinv.EOF Then
dFecha = rstMovsinv("f_movim")
nActivos = DateDiff( "m", dFechaFinal, rstMovsinv("f_movim") )
nActivos = Abs( nActivos )
If nActivos <= nPeriodosNuevo Then
cClasificacion = "Nuevo"
End If
End If
If rstProds("kit") = 0 Then
Query.Reset
Query.AddField "histprods", "articulo", rstProds("articulo")
Query.AddField "histprods", "month", Month( dFechaAnterior )
Query.AddField "histprods", "year", Year( dFechaAnterior )
Query.AddField "histprods", "cantidad", Val2( rstProds("cantidad") )
Query.AddField "histprods", "entrada", dFecha
Query.AddField "histprods", "activos", nActivos
Query.AddField "histprods", "clasificacion", cClasificacion
Query.AddField "histprods", "mesyear", "" & Year( dFechaAnterior ) & strCero( Month( dFechaAnterior ),2 )
Query.strState = "INSERT"
Query.CreateQuery
Query.Execute
End If
rstProds.MoveNext
Wend
Next
End Sub
Sub ColocaProductosDeKits()
Dim nFechaInicial
Dim nFechaFinal
Dim nPeriodos
Dim n
Dim strSQL
Dim dFechaAnterior
Dim Query
Dim dFechaInicialVenta
Dim dFechaFinalVenta
Dim nCantidad
Dim rstMovsinv
Dim Fecha
Dim nActivos
Dim cClasificacion
Dim rstEntradas
Dim rstSalidas
dFechaInicial = DateSerial( 1999, 2, 1 )
dFechaFinal = Date
nPeriodosNuevo = 6
nPeriodos = DateDiff( "m", dFechaInicial, dFechaFinal )
nPeriodos = Abs( nPeriodos )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Query.ErrorOculto = True
For n = 0 To nPeriodos
dFechaAnterior = DateAdd( "m", n * -1, dFechaFinal )
dFechaInicialVenta = Ud( Month( dFechaAnterior ), Year( dFechaAnterior ), False )
dFechaFinalVenta = Ud( Month( dFechaAnterior ), Year( dFechaAnterior ), True )
strSQL = ""
strSQL = strSQL & "SELECT comppart.componente, prods.kit, SUM( movsinv.cantidad ) AS 'cantidad'"
strSQL = strSQL & " FROM (movsinv INNER JOIN prods ON movsinv.articulo = prods.articulo) "
strSQL = strSQL & " INNER JOIN comppart ON comppart.componente = movsinv.articulo "
strSQL = strSQL & " WHERE f_movim >= " & FechaSQL( dFechaInicialVenta, Ambiente.Connection )
strSQL = strSQL & " AND f_movim <= " & FechaSQL( dFechaFinalVenta, Ambiente.Connection )
strSQL = strSQL & " GROUP BY comppart.componente, prods.kit "
strSQL = strSQL & " ORDER BY comppart.componente, prods.kit "
Set rstProds = CreaRecordSet( (strSQL), Ambiente.Connection, false )
While Not rstProds.EOF
Set rstMovsinv = CreaRecordSet( "SELECT f_movim FROM movsinv WHERE ent_sal = 'E' AND articulo = '" & rstProds("componente") & "' ORDER BY f_movim", Ambiente.Connection, false )
If rstMovsinv.EOF Then
Set rstMovsinv = CreaRecordSet( "SELECT f_movim FROM kardex WHERE ent_sal = 'E' AND articulo = '" & rstProds("componente") & "' ORDER BY f_movim", Ambiente.Connection, false )
End If
dFecha = DateSerial( 1900, 1, 1 )
nActivos = 0
cClasificacion = "Obsoleto"
If Not rstMovsinv.EOF Then
dFecha = rstMovsinv("f_movim")
nActivos = DateDiff( "m", dFechaFinal, rstMovsinv("f_movim") )
nActivos = Abs( nActivos )
If nActivos <= nPeriodosNuevo Then
cClasificacion = "Nuevo"
End If
End If
Set rstHistProds = CreaRecordSet( "SELECT cantidad FROM histprods WHERE articulo = '" & rstProds("componente") & "' AND month = " & Month( dFechaAnterior ) & " AND year = " & Year( dFechaAnterior ), Ambiente.Connection, false )
If Not rstHistProds.EOF Then
If rstProds("kit") = 0 Then
Query.Reset
Query.AddField "histprods", "articulo", rstProds("componente")
Query.AddField "histprods", "month", Month( dFechaAnterior )
Query.AddField "histprods", "year", Year( dFechaAnterior )
Query.AddField "histprods", "cantidad", Val2( rstProds("cantidad") ) + Val2(rstHistProds("cantidad"))
Query.AddField "histprods", "entrada", dFecha
Query.AddField "histprods", "activos", nActivos
Query.AddField "histprods", "clasificacion", cClasificacion
Query.AddField "histprods", "mesyear", "" & Year( dFechaAnterior ) & strCero( Month( dFechaAnterior ), 2)
Query.strState = "UPDATE"
Query.Condition = "articulo = '" & rstProds("componente") & "' AND month = " & Month( dFechaAnterior ) & " AND year = " & Year( dFechaAnterior )
Query.CreateQuery
Query.Execute
End If
End If
rstProds.MoveNext
Wend
Next
End Sub
Sub ClasificaAltoMediobajolento()
Dim nPorcentajeAlto
Dim nPorcentajeMedio
Dim nPorcentajeBajo
Dim nPorcentajeLento
Dim nPorcentajeObsoleto
Dim nMesAnterior
Dim nYearAnterior
Dim nMesActual
Dim nYearActual
Dim dFechaAnterior
Dim dFechaActual
Dim strSQL
Dim nPeriodos
Dim nPeriodosNuevo
nPorcentajeAlto = Int( 12 * 0.7 )
nPorcentajeMedio = Int( 12 * 0.6 )
nPorcentajeBajo = Int( 12 * 0.5 )
nPorcentajeLento = Int( 12 * 0.4 )
nPorcentajeObsoleto = Int( 12 * 0.3 )
nPeriodosNuevo = 6
dFechaAnterior = DateAdd( "m", -13, Date )
nMesAnterior = Month( dFechaAnterior )
nYearAnterior = Year( dFechaAnterior )
dFechaActual = DateAdd( "m", -1, Date )
nMesActual = Month( dFechaActual )
nYearActual = Year( dFechaActual )
strSQL = ""
strSQL = strSQL & "SELECT articulo, COUNT(*) FROM histprods "
strSQL = strSQL & " WHERE clasificacion <> 'Nuevo'"
strSQL = strSQL & " AND mesyear >= '" & "" & nYearAnterior & strCero( (nMesAnterior), 2 ) & "'"
strSQL = strSQL & " AND mesyear <= '" & "" & nYearActual & strCero( (nMesActual), 2 ) & "'"
strSQL = strSQL & " GROUP BY articulo "
strSQL = strSQL & " ORDER BY articulo "
Set rstProds = CreaRecordSet( (strSQL), Ambiente.Connection, false )
While Not rstProds.EOF
nCuantos = Val2( rstProds(1) )
If nCuantos > nPorcentajeMedio Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Alto', meses = " & nCuantos & " WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeMedio And nCuantos > nPorcentajeBajo Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Medio', meses = " & nCuantos & " WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeBajo And nCuantos > nPorcentajeLento Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Bajo', meses = " & nCuantos & " WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeLento And nCuantos > nPorcentajeObsoleto Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Lento', meses = " & nCuantos & " WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeObsoleto Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Obsoleto', meses = " & nCuantos & " WHERE articulo = '" & rstProds("articulo") & "'"
End If
rstProds.MoveNext
Wend
Set rstProds = CreaRecordSet( "SELECT articulo, clasificacion FROM histprods WHERE clasificacion <> '' GROUP BY articulo ORDER BY articulo", Ambiente.Connection, false )
While Not rstProds.EOF
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = '" & rstProds("Clasificacion") & "' WHERE articulo = '" & rstProds("Articulo") & "'"
rstProds.MoveNext
Wend
End Sub
Sub ClasificaAltos
Dim nPorcentajeAlto
Dim nPorcentajeMedio
Dim nPorcentajeBajo
Dim nPorcentajeLento
Dim nPorcentajeObsoleto
Dim nMesAnterior
Dim nYearAnterior
Dim nMesActual
Dim nYearActual
Dim dFechaAnterior
Dim dFechaActual
Dim strSQL
Dim nPeriodosNuevo
nPeriodosNuevo = 6
nPorcentajeAlto = Int( nPeriodosNuevo * 0.7 )
nPorcentajeMedio = Int( nPeriodosNuevo * 0.6 )
nPorcentajeBajo = Int( nPeriodosNuevo * 0.5 )
nPorcentajeLento = Int( nPeriodosNuevo * 0.4 )
nPorcentajeObsoleto = Int( nPeriodosNuevo * 0.0 )
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = 'Nuevo sin movimiento' WHERE clasificacion LIKE 'Nuevo%'"
strSQL = ""
strSQL = strSQL & "SELECT articulo, activos FROM histprods "
strSQL = strSQL & " WHERE clasificacion LIKE 'Nuevo%'"
strSQL = strSQL & " GROUP BY articulo "
strSQL = strSQL & " ORDER BY articulo "
Set rstProds = CreaRecordSet( (strSQL), Ambiente.Connection, false )
While Not rstProds.EOF
nCuantos = Val2( rstProds(1) )
If nCuantos > nPorcentajeMedio Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Nuevo Alto' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeMedio And nCuantos > nPorcentajeBajo Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Nuevo Medio' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeBajo And nCuantos > nPorcentajeLento Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Nuevo Bajo' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeLento And nCuantos > nPorcentajeObsoleto Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Nuevo Lento' WHERE articulo = '" & rstProds("articulo") & "'"
End If
If nCuantos <= nPorcentajeObsoleto Then
Ambiente.Connection.Execute "UPDATE histprods SET clasificacion = 'Nuevo sin venta' WHERE articulo = '" & rstProds("articulo") & "'"
End If
rstProds.MoveNext
Wend
Set rstProds = CreaRecordSet( "SELECT articulo, clasificacion FROM histprods GROUP BY articulo ORDER BY articulo", Ambiente.Connection, false )
While Not rstProds.EOF
Ambiente.Connection.Execute "UPDATE prods SET clasificacion = '" & rstProds("Clasificacion") & "' WHERE articulo = '" & rstProds("Articulo") & "'"
rstProds.MoveNext
Wend
End Sub
TUPPERLECTOR Lector especial para codigos de Tupperware
'----****
'----**** MyBusiness POS V20
'----**** Version del script: 1.0
'----**** 19/02/2020
'----****
Public Sub Main()
if Ambiente.Tag = "CONFIGURANDO" Then
ConfiguraPuerto
else
ProcesaString
end if
End Sub
Public Sub ProcesaString()
Dim a
Dim b
For n = 1 To Ambiente.Lector.InBufferCount
Tag = Tag & Ambiente.Lector.Input
Next
if Len( Tag ) > 5 Then
if clAt( "04", Tag ) = 1 Then
if Len( Tag ) >= 10 Then
Tag = Replace( Tag, "04", "D", 1, 1 )
Tag = Mid( Tag, 1, Len(Tag) - 3 )
Teclado.SendKeys (Tag) & Chr(13)
Tag = ""
end if
else
Teclado.SendKeys (Tag)
Tag = ""
Exit Sub
end if
end if
End Sub
Public Sub ConfiguraPuerto()
if Ambiente.Lector.PortOpen Then
Ambiente.Lector.PortOpen = False
end if
Select Case Trim(Ambiente.rstEstacion("plector"))
Case "COM1"
Ambiente.Lector.CommPort = 1
Case "COM2"
Ambiente.Lector.CommPort = 2
Case "COM3"
Ambiente.Lector.CommPort = 3
Case "COM4"
Ambiente.Lector.CommPort = 4
Case "COM5"
Ambiente.Lector.CommPort = 5
Case else
Exit Sub
End Select
if Ambiente.Lector.PortOpen Then
Exit Sub
end if
Ambiente.Lector.Settings = "9600,N,8,1"
Ambiente.Lector.RTSEnable = True
Ambiente.Lector.PortOpen = True
TimerLector.Enabled = True
Ambiente.Tag = ""
End Sub
VENTASCOLECTOR Recupera ventas de un colector
'----****
'----**** MyBusiness POS V20
'----**** Version del script: 1.0
'----**** 19/02/2020
'----****
Sub Main()
Dim SymbolCS1504
Set SymbolCS1504 = NewCS1504()
' El puerto serial donde se va a conectar 0 = 1, 1 = 2 etc..
SymbolCS1504.PortComm = 3
SymbolCS1504.Init
If SymbolCS1504.Result <> 0 Then
MsgBox "Error al abrir puerto de comunicaciones", vbInformation
Exit Sub
End If
SymbolCS1504.ReadData
For n = 0 To SymbolCS1504.Barcodes - 1
SymbolCS1504.NumberOfBarCode = n
SymbolCS1504.GetPacket
Set rstProd = CreaRecordSet( _
"SELECT articulo FROM prods WHERE articulo = '" & _
SymbolCS1504.Barcode & "'", Ambiente.Connection )
If Not rstProd.EOF Then
LlenaPartida SymbolCS1504.Barcode
End If
Next
SymbolCS1504.SetDefaults
SymbolCS1504.ClearData
SymbolCS1504.Restore
End Sub
Sub LeeArchivo()
Dim cArhivo
Dim cGuion
cArchivo = Ambiente.Path & "\guion.txt"
If Not ExisteArchivo( cArchivo ) Then
Exit Sub
End If
cGuion = ""
CloseFile 1
OpenFile ( cArchivo ), 1
While Not FileEof( 1 )
cGuion = cGuion & ReadLine( 1 ) & vbCrLf
Wend
CloseFile 1
RichTextBox3.Text = cGuion
End Sub




