Publicado el 5 comentarios

Funciones para impresión de Ticket

Existen varias formas imprimir un ticket de venta tanto en pantalla como en la miniptinter.
El formato de ticket se encuentra en la ruta del business manager: configuración–personalizacion–formatos del sistema–TICKET. Abrir el código con doble clic e ir al final de este hasta identificar esta línea que se refiere a la impresión; ahí es posible aplicar diferentes opciones de impresión:

Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla

Si queremos imprimir en USB, colocar:

'Código para impresora conectada por cable USB
'o para la impresora predeterminada de Windows).
IniciaDocumento
' EstableceImpresora "Mi Impresora laser" 'esta linea permite elegir impresora USB destino
EstableceFuente "Courier New", 8 'Fuente que tendra el ticket USB
Say 0,.2, cSalida 'Alineación del texto, en pulgadas. cSalida es el texto a imprimir
FinDocumento 'Termina la Impresión USB
'Exit Sub
'Exit Sub es por si deseamos que termine el proceso y saltar las lineas de código que le preceden
'

Si deseamos imprimir en impresora conectada por cable LPT:

'Función para impresora conectada por cable LPT
'Impresión de ticket, corteX y CorteZ _
Enviamos a la impresorade tickets que está configurada en ESTACION01
Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla 'cSalida es el texto que se imprimirá
'

Si deseamos ver el texto del ticket en una ventana emergente:

MsgBox ("" & cSalida) 'cSalida es el texto que se visualizará
'

Una segunda opción para visualizar el el texto del ticket en una ventana emergente.

Mymessage "" & cSalida 'cSalida es el texto que se visualizará
'

Publicado el Dejar un comentario

Cómo hacer un Corte Z más pequeño?

Si deseamos un Corte Z que consuma menos papel, podemos hacer el siguiente ajuste en la ruta del business manager (Configuración–Personalización–Formatos del sistema–CorteZ). Nos colocamos aproximadamente en la linea 70 e identificamos la linea:



    detallado = True

Modificamos esta linea a False y quedará así:


    detallado = False

Guardamos y hacemos la prueba

En caso de que necesitemos el corte completo con impuestos, lo podemos hacer el cambio a true y ya aparecerá la información detallada del corte.

Publicado el 1 comentario

Ejemplo de DBMultiCombo.MultiCombo

Cuando  echamos un vistazo al código de algunas formas, vemos que aparece en varios casos esto “DBMultiCombo.MultiCombo” .  Se trata de una clase que hace una consulta a la tabla llamada “QUERY”. Ahí podemos encontrar muchas consultas predefinidas; y si no existe, la podemos crear a nuestra medida o simplemente ampliar la búsqueda a otros campos que por default no considera el sistema.

DBMultiCombo

2.36 KB 391 descargas

A continuación se muestra la lista de consultas que trae el sistema, tal vez alguna te interesa:

  • Fabricantes
  • Modelos
  • CostosAdicionales
  • Comisionistas
  • Colonia
  • Repartidores
  • Tutor
  • Familias
  • Ofertas
  • Tallas
  • Colores
  • Reportes
  • Etapas
  • Lotes
  • Clasificación de inventario
  • Estados
  • Contactos por cliente
  • Clientes por descripcion
  • Articulos por descripción
  • Remisiones para devolución
  • Estaciones
  • Ubicación en almacen
  • Marcas por clave
  • Zonas de clientes
  • Ventas sin cancelar
  • Ventas pendientes
  • Ventas
  • Vendedores
  • Usuarios
  • Tipos de teléfono
  • Tipos de proveedores
  • Tipos de Polizas
  • Tipos de póliza
  • Tipos de pendientes
  • Tipos de clientes
  • Sucursales
  • Series disponibles
  • Remisiones
  • Proveedores por clave
  • Proveedores
  • Procedimientos y rutinas de usuario
  • Pendientes
  • Partidas de venta
  • Partidas de compra
  • Monedas
  • Marcas de Artículos
  • Líneas de Artículos
  • Inventarios físicos
  • Inventarios
  • Impuestos por porcentaje
  • Impuestos
  • Grupos de cuentas
  • Formatos
  • Facturas
  • Devoluciones
  • Contactos
  • Conceptos de salidas de inventario
  • Conceptos de ingreso
  • Conceptos de gastos
  • Conceptos de entrada al inventario
  • Conceptos de egresos
  • Conceptos de cuentas por pagar
  • Conceptos de cobranza
  • Conceptos de Cargos
  • Conceptos de abonos a proveedores
  • Conceptos de Abonos
  • Compras confirmadas
  • Código de formatos
  • Cobradores
  • Clientes por clave
  • Clientes
  • Claves adicionales de articulos
  • Centros de costo
  • Artículos por clave
  • Articulos para venta
  • Articulos
  • Almacenes
  • Direcciones de embarque
  • Subfamilia1
  • Subfamilia2
  • Subfamilia3
  • ClientesNC
  • Tickets
  • SeriesTickets
  • UsuariosGB

Si tienes alguna duda al respecto, puedes escribir tu comentario y podemos aclararla

Publicado el Dejar un comentario

Cómo hacer una consulta a la tabla de clientes

En esta ocasión mostramos un ejemplo de una ventana que consulta a la tabla de clientes y permite hacer el filtro por nombre.


Este es el código fuente

 

Sub Form_load()

'José Félix 20140812

'jofelchez@gmail.com

'Ejemplo de cómo hacer una consulta a la tabla de clientes

TxtCliente.TabIndex = 0

aceptar.Default = True

'TxtCliente.PasswordChar = "*"

'TxtCliente.BackColor = 0

'TxtCliente.ForeColor = vbGreen

'TxtCliente.font.size = 14

Me.Caption = "Ejemplo de consulta a cliente"

Set mc1 = Me.Controls.Add("DBMultiCombo.MultiCombo","mc1", Me)

With mc1

.Left = TxtCliente.Left

.Top = TxtCliente.Top

.Width = TxtCliente.Width + 450

.Height = TxtCliente.Height

Set .Connection = Ambiente.Connection

Set .txtObject = TxtCliente

.Buscar = "Clientes"

.Visible = True

Set TxtCliente.Container = mc1

End With

End Sub

Sub Button_Click()

Dim cUsuario

Dim cPassword

Dim nPos

Dim s

If ControlEvento.Tag = "cancelar" Then

bolAceptar = False

DescargaForma

Exit Sub

End If

'consulta a la base de datos

Set rstCliente = CreaRecordSet( _

"SELECT * FROM clients WHERE cliente = '" & TxtCliente & "'", _

Ambiente.Connection )

'En caso de que no se encuentre el usuario envía mensaje de error

If rstCliente.EOF Then

'Progress.Destroy

MyMessage "Error:" & vbCrLf & "No existe el cliente indicado"

EstableceFoco

Exit Sub

End If

mymessage " Cliente: " & rstCliente("cliente") & vbCrLf & " Nombre: " & rstCliente("nombre")

End Sub

Sub EstableceFoco()

TxtCliente.Setfocus

TxtCliente.SelStart = 0

TxtCliente.SelLength = Len( TxtCliente )

End Sub

Sub Text_KeyUp()

'Este bloque permite responder a una tecla

'En caso de

If KeyCode = 40 Then

Select Case ControlEvento.Tag

Case "TxtCliente"

TxtCliente.Container.ShowData

End Select

End If

'en caso de

If KeyCode = 27 Then

DescargaForma

'Exit Sub

End If

End Sub

Publicado el 1 comentario

BARTICULOS001

El siguiente bloque de código BARTICULOS001 es el que permite visualizar desde el punto de venta, la ventana de artículos donde se muestra la clave, descripción y precio unitario. Describiremos un poco cada línea de código.

Para abrir y modificar este bloque de código, necesitamo ir a la siguiente ruta, dentro del Business Manager:
CONFIGURACIÓN–PERSONALIZACIÓN–PROCEDIMIENTOS Y RUTINAS DE USUARIO


Public Sub Main()
Dim strSQL 'Definición de variables
Set rstProds = SQLProdsSQLServer() ' invocamos al procedimiento SQLProdsSQLServer y asignamos el resultado a rstProds
SetSessionValue Ambiente, "CONDICIONDEBUSQUEDA", ""
End Sub

'Funcion SQLProdsSQLServer
Function SQLProdsSQLServer()
Dim s
'evaluamos la variable Var1
If clEmpty( Ambiente.Var1 ) Then
Ambiente.Var1 = " prods.descrip "
End If
'Iniciamos con la consulta, aquí mismo definimos también el nombre de los encabezados de cada columna.
s = ""
s = s & "SELECT "
s = s & "prods.articulo As 'Clave', "
s = s & "prods.descrip AS 'UNIDAD DE CONSUMO', "
s = s & "prods.precio1 * ( 1 + (impuestos.valor / 100) ) As 'Precio', "
s = s & "prods.existencia, "
s = s & "existenciaalmacen.existencia As 'Almacen " & Ambiente.Almacen & "', "
s = s & "prods.articulo "
s = s & "FROM prods "
s = s & "INNER JOIN impuestos ON prods.impuesto = impuestos.impuesto "
s = s & "LEFT JOIN existenciaalmacen ON prods.articulo = existenciaalmacen.articulo AND existenciaalmacen.almacen = " & Ambiente.Almacen
s = s & "WHERE prods.bloqueado = 0 "
s = s & cNull(GetSessionValue(Ambiente, "CONDICIONDEBUSQUEDA"))
'Evaluamos filtros adicionales. aquí es donde considera la condición que aplicamos antes de presionar la flecha hacia abajo
If Not clEmpty(cFiltro) Then
If Not clEmpty(Condition) Then
s = s & " AND (prods.descrip LIKE '%" & Cambia("%", " ", cFiltro) & "%' OR prods.articulo LIKE '%" & Cambia("%", " ", cFiltro) & "%') AND " & Condition & " ORDER BY " & Ambiente.Var1
Else
s = s & " AND (prods.descrip LIKE '%" & Cambia("%", " ", cFiltro) & "%' OR prods.articulo LIKE '%" & Cambia("%", " ", cFiltro) & "%') ORDER BY " & Ambiente.Var1
End If
Else
If Not clEmpty(Condition) Then
s = s & " ORDER BY " & Ambiente.Var1
Else
s = s & " ORDER BY " & Ambiente.Var1
End If
End If
'Ejecutamos la consulta antes estructurada y se guarda el resultado en rstProds
Set rstProds = CreaRecordSetEnCliente( (s), Ambiente.Connection)
Set SQLProdsSQLServer = rstProds 'guardamos el arreglo de datos en la variable SQLProdsSQLServer
'Especificamos el ancho de las columnas, iniciando desde la columna 0 y considerando el orden en que estructura la consulta
Set TDBGrid1.DataSource = rstProds
AnchoColumna 0, 2000
AnchoColumna 1, 6500
AnchoColumna 2, 2000
AnchoColumna 3, 1000
AnchoColumna 4, 1000
AnchoColumna 5, 2500
'Para las columnas de tipo numérico podemos colocar el formato numérico y con la cantidad de decimales apropiada
FormatoColumna 2, 1, "##,##0.00"
FormatoColumna 3, 1, Ambiente.FDinero
FormatoColumna 4, 1, Ambiente.FDinero
'Termina la función
End Function