Publicado el 18 comentarios

Importando productos desde excel


'código de la forma PRODSEXCEL (utilizado en el Ambiente de Desarrollo)
Sub Form_load

Me.Caption = “Importando desde Excel(tm)”
Archivo.File = Ambiente.Path & “\articulos.xls”

End Sub

Sub Button_Click()

Select Case ControlEvento.Tag
Case “Aceptar”

AplicaInventario
DescargaForma

Case “Cancelar”

DescargaForma

Case “cmdButton2”

ShellRun Parent.hWnd, “Open”, Archivo.File

End Select

End Sub

Sub AplicaInventario

Set excelConnection = CreateObject(“ADODB.Connection”)
excelConnection.ConnectionString = “driver={Microsoft Excel Driver (*.xls)};DBQ=” & Controles(“Archivo”).File
excelConnection.Open

ImportaInventario excelConnection

End Sub

Sub ImportaInventario( excelConnection )
Dim rstProductos
Dim bolAfectaInventario
Dim rstArticulo
Dim rstClaveAdd
Dim Articulos
Dim Ajuste
Dim rstImpuesto

Ambiente.Connection.Execute “UPDATE prods SET etiquetas = 0”

bolAfectaInventario = True

‘——————————————————————————————————————–
‘2011_11_22 Jose Felix jofelchez@gmail.com
‘Agregamos las Lineas a la Importación

Set rstExcel = CreaRecordSet( “SELECT linea FROM [ARTICULOS$] group by linea”, (excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
While Not rstExcel.EOF

Set rstLinea = CreaRecordSet( “SELECT * FROM lineas WHERE Linea = ‘” & rstExcel(“Linea”) & “‘”, Ambiente.Connection )

Query.Reset

If rstLinea.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “linea = ‘” & rstExcel(“linea”) & “‘”
End If

Query.AddField “lineas”,”linea”, rstExcel(“Linea”)
Query.AddField “lineas”,”descrip”,rstExcel(“Linea”)
Query.AddField “lineas”,”Usuario”, Ambiente.Uid
Query.AddField “lineas”,”usuFecha”, Date
Query.AddField “lineas”,”usuHora”,Formato( Time, “hh:mm:ss” )
Query.AddField “lineas”,”Numero”, 0

Query.CreateQuery
Query.Execute

Query.Reset

rstExcel.MoveNext
Wend

‘——————————————————————————————————————–

Set rstProductos = CreaRecordSet( “SELECT * FROM [ARTICULOS$]”, (excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection

Set Articulos = CreateObject( “MyBArticulos.Articulos” )
Set Articulos.Ambiente = Ambiente

nEntrada = 0
nSalida = 0

While Not rstProductos.EOF

If Not clEmpty( “” & (rstProductos(“Código del producto”)) ) Then
If Not clEmpty( “” & (rstProductos(“Descripción”)) ) Then

Articulos.recalculoDeInventario rstProductos(“Código del producto”), Ambiente, False
Set rstArticulo = CreaRecordSet( “SELECT articulo, existencia FROM prods WHERE articulo = ‘” & rstProductos(“Código del producto”) & “‘”, Ambiente.Connection )

Query.Reset

If rstArticulo.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “articulo = ‘” & rstProductos(“Código del producto”) & “‘”
End If

Query.AddField “prods”,”articulo”, rstProductos(“Código del producto”)
Query.AddField “prods”,”descrip”,rstProductos(“Descripción”)
Query.AddField “prods”,”linea”, rstProductos(“Linea”)
Query.AddField “prods”,”marca”, “SYS”
Query.AddField “prods”,”fabricante”, “SYS”
Query.AddField “prods”,”precio1″, FDec( rstProductos(“Precio de venta”) )
Query.AddField “prods”,”costo_u”, FDec( rstProductos(“Costo ultimo”) )
Query.AddField “prods”,”etiquetas”, Val2( rstProductos(“Existencia”) )
Query.AddField “prods”,”Unidad”, rstProductos(“Unidad”)
Query.AddField “prods”,”precio2″, FDec( rstProductos(“Precio2”) )
Query.AddField “prods”,”precio3″, FDec( rstProductos(“Precio3”) )
Query.AddField “prods”,”precio4″, FDec( rstProductos(“Precio4”) )
Query.AddField “prods”,”precio5″, FDec( rstProductos(“Precio5”) )

If Val2(rstProductos(“Impuesto”)) > 0 Then
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & _
FDec( rstProductos(“Impuesto”) ), Ambiente.Connection )
Else
If ClAt(“0”, Trim(rstProductos(“Impuesto”))) > 0 AND Len(Trim(rstProductos(“Impuesto”))) = 1 Then
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & _
FDec( rstProductos(“Impuesto”) ), Ambiente.Connection )
Else
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE impuesto = ‘” & _
rstProductos(“Impuesto”) & “‘”, Ambiente.Connection )
End If
End If

If rstImpuesto.EOF Then
cImpuesto = “SYS”
Else
cImpuesto = rstImpuesto( “impuesto” )
End If

Query.AddField “prods”,”impuesto”, cImpuesto
Query.AddField “prods”,”paraventa”, 1
Query.AddField “prods”,”invent”, 1
Query.CreateQuery
Query.Execute

Query.Reset

If Not IsNull( rstProductos(“Existencia”) ) Then

Ajuste = FDec( rstProductos(“Existencia”) )’ – Val2( rstArticulo(“Existencia”) )
AfectandoInventario rstProductos(“Código del producto”), Ajuste
Articulos.recalculoDeInventario rstProductos(“Código del producto”), Ambiente, False

If Ajuste <> 0 Then
If Ajuste > 0 Then
nEntrada = CreaEntrada( nEntrada, rstProductos(“Código del producto”), Ajuste, FDec( rstProductos(“Costo ultimo”) ), rstProductos(“Descripción”) )
Else
nSalida = CreaSalida( nSalida, rstProductos(“Código del producto”), Ajuste, FDec( rstProductos(“Precio de venta”) ), rstProductos(“Descripción”) )
End If
Else
Query.Reset
Query.SQL = “UPDATE prods SET costo_u = ” & FDec( rstProductos(“Costo ultimo”) ) & _
” WHERE articulo = ‘” & rstProductos(“Código del producto”) & “‘”
Query.Execute
End If

End If

If Not clEmpty( “” & rstProductos(“Código de barras”) ) Then

Set rstClaveAdd = CreaRecordSet( “SELECT clave FROM clavesadd WHERE clave = ‘” & rstProductos(“Código de barras”) & “‘”, Ambiente.Connection )

Query.Reset

If rstClaveAdd.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “clave = ‘” & rstProductos(“Código de barras”) & “‘”
End If

Query.AddField “clavesadd”,”Clave”, rstProductos(“Código de barras”)
Query.AddField “clavesadd”,”Dato1″, “”
Query.AddField “clavesadd”,”Usuario”, Ambiente.Uid
Query.AddField “clavesadd”,”usuFecha”, Date
Query.AddField “clavesadd”,”usuHora”, Formato( Time, “hh:mm:ss” )
Query.AddField “clavesadd”,”Dato2″, “”
Query.AddField “clavesadd”,”Articulo”, rstProductos(“Código del producto”)
Query.AddField “clavesadd”,”Cantidad”, 1
Query.AddField “clavesadd”,”Unidad”, “”

If bolAfectaInventario = True Then
Query.AddField “clavesadd”,”Existencia”, 0
End If

Query.AddField “clavesadd”,”Libre”, 0
Query.AddField “clavesadd”,”Exportado”, 0
Query.AddField “clavesadd”,”Precio”, 0
Query.AddField “clavesadd”,”imagen”, “”
Query.AddField “clavesadd”,”etiquetas”, 0
Query.CreateQuery
Query.Execute

End If

End If
End If

Detalle.Caption = “” & rstProductos(“Descripción”)

rstProductos.MoveNext
Wend

MyMessage “Catálogo importado”

If Question( “Desea imprimir etiquetas de codigo de barras”, 1 ) = True Then

Script.RunProcess “ZEBRA2844”, Me, Ambiente

End If

End Sub

Sub AfectandoInventario( strArticulo, Existencia )
Dim rstProd
Dim n
Dim Query
Dim rstInvInicial

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

Set rstProd = CreaRecordSet( “SELECT articulo, existencia, costo_u FROM prods WHERE articulo = ‘” & strArticulo & “‘”, Ambiente.Connection )
n = n + 1

If Existencia = 0 Then
Exit Sub
End If

Set MovInv = CreateObject( “MyBInventario.Inventario” )
Set MovInv.Ambiente = Ambiente

MovInv.FechaMov = Date
MovInv.uId = Me.Ambiente.uId
MovInv.EntradaSalida = “S”
MovInv.cMetodo = Me.Ambiente.costeo
MovInv.EstacionSalida = Trim(Ambiente.Estacion)

While Not rstProd.EOF

n = n + 1

Query.Reset
Query.strState = “INSERT”
Query.AddField “movsinv”,”MOVIMIENTO”, 1

If Existencia > 0 Then
MovInv.EntradaSalida = “E”
MovInv.nMovimiento = 1
MovInv.TipoMovim = “EX+”
MovInv.NoMovim = 1
MovInv.TipoOperacion = “EX+”
MovInv.nCantidad = Existencia
MovInv.AfectaCosto = True
Else
MovInv.EntradaSalida = “S”
MovInv.nMovimiento = 1
MovInv.TipoMovim = “EX-”
MovInv.NoMovim = 1
MovInv.TipoOperacion = “EX-”
MovInv.nCantidad = Existencia * -1
End If

MovInv.nPrecio = rstProd(“costo_u”)
MovInv.nAlmacen = 1
MovInv.cArticulo = strArticulo
MovInv.AfectaInventario

Set rstInvInicial = CreaRecordSet( “SELECT * FROM invinicial WHERE articulo = ‘” & rstProd(“articulo”) & “‘”, _
Ambiente.Connection )

If rstInvInicial.EOF Then
Query.Reset
Query.strState = “INSERT”
Query.AddField “invinicial”,”fecha”, DateSerial( 2000, 01, 01 )
Query.AddField “invinicial”,”articulo”, rstProd(“articulo”)
Query.AddField “invinicial”,”existencia”, Existencia
Query.AddField “invinicial”,”costo”, rstProd(“costo_u”)
Query.CreateQuery
Query.Execute
End If

rstProd.MoveNext

Wend

End Sub

Function FDec( Number )

FDec = Replace( “” & Number, “,”, “.” )

End Function

Function CreaEntrada( Entrada, Articulo, Cantidad, Costo, Descripcion )
Dim Query
Dim rstArticulo

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

If Entrada = 0 Then
Query.Reset
Query.strState = “INSERT”

Entrada = TraeSiguiente( “MovEnt”, Ambiente.Connection )
Query.AddField “entradas”, “entrada”, Entrada
Query.AddField “entradas”, “ocupado”, 1
Query.AddField “entradas”, “f_emision”, Date
Query.AddField “entradas”, “tipo_doc”, “EX+”
Query.AddField “entradas”, “importe”, 0
Query.AddField “entradas”, “costo”, 0
Query.AddField “entradas”, “almacen”, 1
Query.AddField “entradas”, “estado”, “CO”
Query.AddField “entradas”, “observ”, vbNullString
Query.AddField “entradas”, “tipo_cam”, 1
Query.AddField “entradas”, “moneda”, Ambiente.Moneda
Query.AddField “entradas”, “datos”, vbNullString
Query.AddField “entradas”, “usuario”, Ambiente.uId
Query.AddField “entradas”, “usufecha”, Date
On Error Resume Next
Query.AddField “entradas”, “usuhora”, Libreria.Formato(Time, “hh:mm:ss”)
On Error GoTo 0
Query.CreateQuery
Query.Execute
End If

Query.Reset
Query.strState = “INSERT”
Query.AddField “entpart”,”ENTRADA”, Entrada
Query.AddField “entpart”,”TIPO_DOC”, “EX+”
Query.AddField “entpart”,”NO_REFEREN”, Entrada
Query.AddField “entpart”,”ARTICULO”, Articulo
Query.AddField “entpart”,”CANTIDAD”, Cantidad
Query.AddField “entpart”,”PRECIO”, Costo
Query.AddField “entpart”,”OBSERV”, Descripcion
Query.AddField “entpart”,”PARTIDA”, 0
Query.AddField “entpart”,”ID_ENTRADA”, TraeSiguiente( “entpart”, Ambiente.Connection )
Query.AddField “entpart”,”Usuario”, Ambiente.Uid
Query.AddField “entpart”,”UsuFecha”, Date
Query.AddField “entpart”,”UsuHora”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “entpart”,”PRCANTIDAD”, 0
Query.AddField “entpart”,”PRDESCRIP”, “”
Query.AddField “entpart”,”CLAVEADD”, “”
Query.CreateQuery
Query.Execute

CreaEntrada = Entrada

End Function

Function CreaSalida( Salida, Articulo, Cantidad, Precio, Descripcion )
Dim Query
Dim rstArticulo

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

If Salida = 0 Then
Query.Reset
Query.strState = “INSERT”

Salida = TraeSiguiente( “MovSal”, Ambiente.Connection )

Query.AddField “salidas”,”Salida”, Salida
Query.AddField “salidas”,”ocupado”, 1
Query.AddField “salidas”,”tipo_doc”, “EX-”
Query.AddField “salidas”,”F_EMISION”, Date
Query.AddField “salidas”,”IMPORTE”, 0
Query.AddField “salidas”,”COSTO”, 0
Query.AddField “salidas”,”ALMACEN”, 1
Query.AddField “salidas”,”ESTADO”, “CO”
Query.AddField “salidas”,”OBSERV”, “Salida automática por excel”
Query.AddField “salidas”,”DATOS”, “”
Query.AddField “salidas”,”USUARIO”, Ambiente.Uid
Query.AddField “salidas”,”USUFECHA”, Date
Query.AddField “salidas”,”USUHORA”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “salidas”,”traspaso”, 0
Query.AddField “salidas”,”almt”, 0
Query.AddField “salidas”,”estraspaso”, 0
Query.AddField “salidas”,”sucursal”, “”
Query.AddField “salidas”,”esparasucursal”, 0
Query.AddField “salidas”,”entsuc”, 0
Query.AddField “salidas”,”folio”, TraeSiguiente(Trim(Ambiente.Estacion) & “salida”, Ambiente.Connection)
Query.AddField “salidas”,”estacion”, Ambiente.Estacion
Query.CreateQuery
Query.Execute
End If

Query.Reset
Query.strState = “INSERT”
Query.AddField “salpart”,”SALIDA”, Salida
Query.AddField “salpart”,”TIPO_DOC”, “EX-”
Query.AddField “salpart”,”NO_REFEREN”, Salida
Query.AddField “salpart”,”ARTICULO”, Articulo
Query.AddField “salpart”,”CANTIDAD”, Cantidad * -1
Query.AddField “salpart”,”PRECIO”, Precio
Query.AddField “salpart”,”OBSERV”, Descripcion
Query.AddField “salpart”,”PARTIDA”, 0
Query.AddField “salpart”,”ID_SALIDA”, TraeSiguiente( “salpart”, Ambiente.Connection )
Query.AddField “salpart”,”Usuario”, Ambiente.Uid
Query.AddField “salpart”,”UsuFecha”, Date
Query.AddField “salpart”,”UsuHora”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “salpart”,”PRCANTIDAD”, 0
Query.AddField “salpart”,”PRDESCRIP”, “”
Query.AddField “salpart”,”CLAVEADD”, “”
Query.AddField “salpart”,”costo”, 0
Query.CreateQuery
Query.Execute

CreaSalida = Salida

End Function

 

Publicado el 29 comentarios

Ticket Explicado Ejemplo

ticket_explicado_mybusinessposEn esta publicación se considera que la importancia de conocer cada parte del código que forma el ticket, ya que es necesario para hacer modificaciones. Además, es necesario tener conocimientos básicos de programación. En caso de que no cuente con ello, no se preocupe, podemos ofrecerle una solución que no requiere programación: el Editor de ticket. Este editor tiene un costo de un pomo de 700 pesos.



Ticket Explicado

132.00 KB 4754 descargas

Codigo de ticket explicado
'****************************************************************************************
'Visite http://helpmybusinesspos.info e inviteme un Pomo *
'2011_09_30 jose felix jofelchez@gmail.com. Invita un Pomo para poder subir más tips *
'vamos a configurar el ticket para que se imprima mas pequeño *
'Además se explica cada ina de las líneas de códogo. *
'****************************************************************************************
'los comentarios son de color verde. Los comentarios para esta explicación se encuentran en la parte derecha.
'para descomentar una linea, solo basta con quitar el apostrofo ql inicio de este.
Sub Main() 'iniciar el procedimiento. Main es el bloque principal del programa
Dim rstSeries 'declarar la variable rstSeries, la cual puede ser necesaria para el manejo de series (como en el caso del giro de telefonía)
Dim nDescuento 'declarar la variable nDescuento

'Ambiente.Torreta.PortOpen = False
'Ambiente.Torreta.Settings = "9600,N,8,1"
'Ambiente.Torreta.RTSEnable = True
'Ambiente.Torreta.PortOpen = True
'Ambiente.Torreta.CommPort = 1
'Ambiente.Torreta.OutPut = "ABC"
'Eventos
'Ambiente.Torreta.PortOpen = False

'cLineaNueva = Chr(13)
cLineaNueva = Chr(13) & Chr(10) ' definir cLineaNueva, es un salto de línea, el cual se usará mas adelante

'If MsgBox( "Desea imprimir el ticket", vbQuestion + vbYesNo + vbDefaultButton2 ) = vbNo Then
' Exit Sub
'End If 'en caso de que solo necesite imprimir algunos tickets, no todos, tendria que descomentar este bloquecito

' Creamos el recordSet del encabezado de la venta ' el recordset "Rst(consulta, Ambiente.Connection)" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstEncabezado". aqui va la Fecha, Observaciones generales, ID del Cliente, Importes Totales, Folio, Vendedor
Set rstEncabezado = Rst("SELECT * FROM ventas WHERE venta = " & prn.Documento, Ambiente.Connection ) '"prn.Documento" es el número de venta actual del Punto de Venta. ", Ambiente.Connection" es la conexion (a base de datos) en la que esta trabajando el sistema en este momento.

' Verificamos que la venta que se desea imprimir exista
if rstEncabezado.EOF Then 'en caso de que la consulta anterior no tenga datos se enviaría un mensaje de error
MsgBox "No existe la venta seleccionada",vbInformation
Exit Sub 'con "Exit Sub" terminamos el proceso y no se imprimirá nada. en este caso, se "mata" el proceso Sub Main(), porque estemos dentro de este.
end if 'Termina la condición den caso de que no arrojara datos el Rst()

' Creamos el recordSet de las partidas que componen la venta '' el recordset "Rst()" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstPartidas". Aqui van los articulos, precio, IVA, Descuentos,
'Set rstPartidas = Rst("SELECT partvta.prcantidad, partvta.iespecial, partvta.id_salida, partvta.kit, partvta.articulo, prods.precio1,prods.descrip, partvta.precio, partvta.cantidad, partvta.descuento, partvta.impuesto, partvta.preciobase, partvta.prdescrip, prods.serie FROM partvta INNER JOIN prods ON prods.articulo = partvta.articulo WHERE venta =" & rstEncabezado.fields("Venta"), Ambiente.Connection )
Set rstPartidas = Rst("SELECT partvta.prcantidad, partvta.iespecial, partvta.id_salida, partvta.kit, partvta.articulo, prods.precio1, partvta.observ, partvta.precio, partvta.cantidad, partvta.descuento, partvta.impuesto, partvta.preciobase, partvta.prdescrip, prods.serie FROM partvta INNER JOIN prods ON prods.articulo = partvta.articulo WHERE venta =" & rstEncabezado.fields("Venta"), Ambiente.Connection )

' Traemos todos los datos del cliente 'el recordset "Rst()" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstCliente". Aqui va el nombre del cliente, RFC, Direcciones, Descuentos, puntos acumulados
Set rstCliente = Rst("SELECT * FROM clients WHERE cliente = '" & rstEncabezado.fields("Cliente") & "'", Ambiente.Connection ) 'la condición de la consulta es que el cliente sea igual al del listado que se extrajo en la busqueda del encabezado del ticket "rstEncabezado.fields("Cliente")"

' Traemos los datos de cobranza si es que existe 'el recordset "Rst()" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstCobranza". Aqui van los articulos, precio, IVA, Descuentos,
Set rstCobranza = Rst( "SELECT * FROM cobranza WHERE venta = " & rstEncabezado("venta"), Ambiente.Connection )

cSalida = "" '"cSalida" es la variable que almacena todo el texto que se imprimirá. en este caso "cSalida" se prepara en blanco. es importane ver en las siguientes líneas cómo es que se va alimentando esta variable "cSalida"

'Esto abre el cajon de dinero
if Ambiente.rstEstacion("Cajon") <> 0 Then '"Ambiente.rstEstacion("Cajon")" es el valor de la ESTACION01, cuando se habilita (valor 1) el cajon de dinero en la pertaña de Impresora de Tickets, entonces entra en este bloque de código
cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(20) & Chr(20) '"Chr(27) & Chr(112) & Chr(48) & Chr(20) & Chr(20) & Chr(7)" es el código para abrir el cajon de dinero. este funciona solo con impresoras conectadas via LPT. en ocasiones varia este código dependiendo de la marca y modelo de impresora. Consulte el manual avanzado de su impresora para abrir el cajón.
cSalida = cSalida & Chr(7)
' Sansung de inyección
' cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(49)
end if

Set rstTextTicket = CreaRecordSet( "SELECT * FROM tickettext", Ambiente.Connection ) '"CreaRecordSet()" consulta si el usuario colocó algun mensaje en el encabezado y pie del ticket a traves de la utileria "editar texto del ticket" y lo almacena en "rstTextTicket"

If rstTextTicket.EOF Then 'en caso de que el usuario haya dejado vacio el encabezado y pie de ticket (rstTextTicket Nulo), entrar al bloque para colocar los datos de la Empresa que se colocan con la Configuración "Datos Generales de la Empresa"
cSalida = cSalida & "" & Ambiente.Empresa & cLineaNueva '"Ambiente.Empresa" es el nombre de la Empresa que se coloca con la Configuración "Datos Generales de la Empresa". "cLineaNueva" es un salto de linea en el ticket. en caso de que necesitara un salto mas solo basta agregar " & cLineaNueva" al final de esta liea
cSalida = cSalida & "" & Trim( Ambiente.Direccion1 ) & cLineaNueva ''"Trim( Ambiente.Direccion1 )" es la dirección que se encuentra en la primera linea, que se coloca con la Configuración "Datos Generales de la Empresa". la función "Trim()" elimina los espacios en blanco antes y al final de la dirección1
cSalida = cSalida & "" & Trim( Ambiente.Direccion2 ) & cLineaNueva ''"Trim( Ambiente.Direccion2 )" es la dirección que se encuentra en la segunda linea, que se coloca con la Configuración "Datos Generales de la Empresa". la función "Trim()" elimina los espacios en blanco antes y al final de la dirección2
cSalida = cSalida & "" & Trim( Ambiente.Telefonos ) & cLineaNueva ''"Trim( Ambiente.telefonos )" es el espacio para mostrar algun dato adicional que se coloca con la Configuración "Datos Generales de la Empresa". la función "Trim()" elimina los espacios en blanco antes y al final de la dirección1
Else

cSalida = cSalida & rstTextTicket("textheader") 'en caso de que el usuario haya colocado algun dato en el encabezado y pie de ticket, tomamos el Encabezado de este "rstTextTicket("textheader")" y lo agregamos a la variable "cSalida" con "cSalida = cSalida & "
End If

cSalida = cSalida & Trim( rstEncabezado("caja") ) & " " & Trim( rstEncabezado("Usuario") ) & " Ticket: " & rstEncabezado("No_referen") & cLineaNueva 'Agregamos los datos de la Caja "Trim( rstEncabezado("caja") )" , el usuario que atiende la Venta "Trim( rstEncabezado("Usuario") )" y el Folio del Ticket "rstEncabezado("No_referen")"

cSalida = cSalida & Formato( rstEncabezado("f_emision"),"dd-MM-yyyy" ) & " Hora: " & rstEncabezado("usuHora") & cLineaNueva 'Agregamos la fecha "Formato( rstEncabezado("f_emision"),"dd-MM-yyyy" )" y hora "rstEncabezado("usuHora")" de la Venta.

cDatos = "" & rstEncabezado("datos") '"rstEncabezado("datos")" es el nombre del cliente. en caso de que sea cliente general, aparecerá como "Cliente de Mostrador". el valor se agrega en la veriable "cDatos"

If clAt( ":", Trim(cDatos) ) = 1 Then 'condición especial. en caso de que en el nombre del cliente se encontraran unos puntos, haria un salto de linea y se almacena el valor en la variable "cSalida"
cSalida = cDatos & cLineaNueva
Else 'en caso contrario...
cSalida = cSalida & Trim( rstCliente("cliente") ) & " " & Trim( rstCliente("Nombre") ) & cLineaNueva '"Trim( rstCliente("cliente") )" es el ID del Cliente, "Trim( rstCliente("Nombre") )" es el Nombre del Cliente y se agrega a la variable "cSalida"
cSalida = cSalida & Trim( rstCliente("calle") ) & " " & Trim( rstCliente("colonia") ) & Chr(13) & Chr(10) '"Trim( rstCliente("calle") ) & " " & Trim( rstCliente("colonia") )" es la dirección del cliente. este valor se agrega a la variable "cSalida"
End If

'cSalida = cSalida & Ambiente.rstEstacion("leyendacomodin") & " " & rstEncabezado("comodin") & cLineaNueva 'Ambiente.rstEstacion("leyendacomodin") & " " & rstEncabezado("comodin") es por si deseamos un dato adicional a la venta, el cual se configura en la ESTACION01 como leyenda comodin

'cSalida = cSalida & "Vendedor: " & rstEncabezado("Vend") & cLineaNueva 'Clave del Vendedor "rstEncabezado("Vend")"

'cSalida = cSalida & Ambiente.Var9 & vbCrLf
'Ambiente.Var9 = ""

cSalida = cSalida & "CANT. DESCRIPCION IMPORTE" & cLineaNueva 'Cabecera de los articulos del ticket

nImporteTotal = 0 'Inicializamos las variables. "nImporteTotal" es el Importe Acumulado
nImpuesto = 0 '"nImpuesto" es el impuesto Acumulado
nCantidadTotal = 0 '"nCantidadTotal" es la cantidad total acumulada
nDescuentoTotal = 0 '"nDescuentoTotal" es El descuento Acumulado, en caso de que hubiese
nImporteOrigen = 0

'PrintText cSalida

While Not rstPartidas.EOF 'Mientras haya Partidas en la venta... Este ciclo se repite hasta que llega al final de la lista de artículos que incluye una Venta.

nPrecio = rstPartidas("Precio") * ( 1 - (rstPartidas("Descuento")/100) ) * (1 + ( rstPartidas("impuesto") / 100 ) ) 'Calcular el Precio Neto (quita descuentos al artículo y agrega impuesto) y se almacena en "nPrecio"
nPrecioBase = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 ) ), 2) 'considera el pecio Base (si hubiese) y lo guarda en "nPrecioBase"
nDescuento = (nPrecioBase - nPrecio) * rstPartidas("Cantidad") 'Aplica descuento al precio base, si hubiese y se guarda en "nDescuento"

If nPrecioBase > 0 Then 'en caso de que el precio base fuese mayor que 0, entra al bloque para aplicar un descuento al precio Base (este no es el Precio1, es diferente)
nDescPor = ( nPrecio / nPrecioBase ) * 100
Else
nDescPor = 0
End If

nDescuentoTotal = nDescuentoTotal + nDescuento '"nDescuentoTotal" va acumulando los descuentos
nImporte = nPrecio * rstPartidas("Cantidad") '"nImporte" es el importe del artículo (cantidad X Precio Unitario)
' nDescuento = Formato(rstPartidas("Descuento"))
'nCantidad = PadL(Formato( rstPartidas("cantidad") / rstPartidas("prCantidad"), "##,##0" ),3)
nCantidad = PadL(Formato( rstPartidas("cantidad") / rstPartidas("prCantidad"), "##,##0.00" ),3) '"nCantidad" es la canttdad dividida entre las unidades consideradas en la Presentación "rstPartidas("prCantidad")"

'cDescrip = PadL( Mid( rstPartidas("Descrip"), 1, 20 ), 20 ) '"cDescrip" es la descripción del artículo. en este caso, "PadL( Mid( rstPartidas("Descrip"), 1, 15 ), 15 )" quiere decir que va a considerar la descripción desde la linea 1 hasta la 20, ademas de que lo alineará a la derecha 20 letras.
cDescrip = PadL( Mid( rstPartidas("observ"), 1, 20 ), 20 ) '"cDescrip" es la descripción del artículo. en este caso, "PadL( Mid( rstPartidas("observ"), 1, 15 ), 15 )" quiere decir que va a considerar la descripción desde la linea 1 hasta la 20, ademas de que lo alineará a la derecha 20 letras.
nCantidadTotal = nCantidadTotal + ( rstPartidas("cantidad") / rstPartidas("prcantidad") ) '"nCantidadTotal" acumula la cantidad vendida entre las unidades de la presentación, si hubiese.

nImporteTotal = nImporteTotal + nImporte
nImpuesto = nImpuesto + ( nImporteTotal * ( rstPartidas("impuesto") / 100 ) )

nPrecio = 0 'este bloque es para manejar algun precio con Impuesto especial (como sucede en los cigarros o en las comunicaciones)
nIEspecial = rstPartidas("Precio") * (Val2(rstPartidas("iespecial")) / 100)
nIVa = rstPartidas("Precio") * (rstPartidas("impuesto") / 100)
nPrecio = rstPartidas("Precio") + nIEspecial + nIVa 'Suma el precio1, el Impuesto especial y el IVA. se guarda en "nPrecio"

Set rstArticulo = CreaRecordSet( "SELECT precio5 FROM prods WHERE articulo = '" & rstPartidas("articulo") & "'", Ambiente.Connection ) 'esto lo podemos omitir. es por si deseamos usar un precio especial

'cPrecio5 = PadL(Trim(Formato( rstArticulo("Precio5") + nIEspecial + nIVa, Ambiente.FDinero )),6)
cPrecio5 = PadL(Trim(Formato( nIVa, Ambiente.FDinero )),6) ' ESTE ES UN PRECIO ESPECIAL..POR SI SE LLEGASE A NECESITAR.
cPrecio = PadL(Trim(Formato( nPrecio, Ambiente.FDinero )),8) 'Este es el precio DEL ARTÍCULO que se IMPRIMIRÁ de cada Artículo. Se le da formato al Precio y se guarda en "cPrecio"
cImporte = PadL(Trim(Formato( Round( nPrecio, 2) * rstPartidas("cantidad") * (1 - (rstPartidas("descuento") / 100)), Ambiente.FDinero )),10) 'este es el Importe que se Imprimirá de cada Artículo, se almacena en "cImporte"
nPrecioOrigen = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 )),2) * rstPartidas("cantidad")
nImporteOrigen = nImporteOrigen + nPrecioOrigen

'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & cPrecio & " " & cPrecio5 & " " & cImporte
'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & cPrecio & " " & cImporte
'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & " " & cImporte
strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & PadL( Mid( rstPartidas("observ"),1,16 ),16) & cImporte & cLineaNueva

'If rstPartidas("Precio1") > rstPartidas("Precio") Then
' nDescuentoPartida = ( rstPartidas("Precio1") - rstPartidas("Precio") ) * nCantidad
' strSalida = strSalida & " Descuento: " & Formato( nDescuentoPartida, "##,##0.00" ) & vbCrLf 'Si necesitamos que aparezca el descuento, descomentamos esta línea
'End If

'Si se necesita multiples lineas para la descripcion, colocaremos este bloque de codigo
if Len (rstPartidas("observ")) > 16 Then
strSalida = strSalida & " " & Mid( rstPartidas("observ"),17,16) & cLineaNueva
end if
if Len (rstPartidas("observ")) > 32 Then
strSalida = strSalida & " " & Mid( rstPartidas("observ"),33,16) & cLineaNueva
end if
cSalida = cSalida & strSalida & cLineaNueva

'If Not clEmpty( cNull( rstPartidas("prdescrip") ) ) Then
' cSalida = cSalida & Trim( rstPartidas("prdescrip") ) & vbCrLf
'End If

If rstPartidas("Kit") <> 0 Then
Set rstOpciones = CreaRecordSet( "SELECT partvtaopciones.articulo, prods.descrip FROM partvtaopciones INNER JOIN prods ON partvtaopciones.articulo = prods.articulo WHERE id_salida = " & rstPartidas("id_salida"), Ambiente.Connection )

While Not rstOpciones.EOF
cSalida = cSalida & "Opcion:" & rstOpciones("descrip") & Chr(13) & Chr(10)
rstOpciones.MoveNext
Wend
End If

If rstPartidas("serie") <> 0 Then

If rstEncabezado("ticket") <> 0 Then
Set rstSeries = CreaRecordSet( _
"SELECT * FROM series WHERE documento = 'TICKET' AND numeroDocumento = " & rstEncabezado( "no_referen" ) & " AND articulo = '" & rstPartidas("articulo") & "'", _
Ambiente.Connection )
Else
Set rstSeries = CreaRecordSet( _
"SELECT * FROM series WHERE documento = 'REMISION' AND numeroDocumento = " & rstEncabezado( "no_referen" ) & " AND articulo = '" & rstPartidas("articulo") & "'", _
Ambiente.Connection )
End If

While Not rstSeries.EOF

Serie = Trim( rstSeries("serie") )
Serie = PadL( Serie, 11 )
Serie = Mid( Serie, Len( Serie ) - 10 )

cSalida = cSalida & "SERIE: " & Serie & vbCrLf
rstSeries.MoveNext
Wend

End If

'Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla
'cSalida = ""
'Dormir 100

rstPartidas.MoveNext

Wend

'PrintText cSalida

cSalida = cSalida & cLineaNueva
cSalida = cSalida & cLineaNueva

cSalida = cSalida & " Importe: " & PadL(Formato( Val2(rstEncabezado("importe")), Ambiente.FDinero ),9) & cLineaNueva
cSalida = cSalida & "Impuesto: " & PadL(Formato( Val2(rstEncabezado("impuesto")), Ambiente.FDinero ),9) & cLineaNueva

'if Val2(rstEncabezado("iespecial")) > 0 Then
' cSalida = cSalida & " Impuesto 2%: " & PadL(Formato( Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),10) & cLineaNueva
'end if

if nDescuentoTotal > 0 Then
'cSalida = cSalida & " Importe: " & PadL(Formato( nImporteOrigen, Ambiente.FDinero ),10) & cLineaNueva
'cSalida = cSalida & " Descuento: " & PadL(Formato( nDescuentoTotal, Ambiente.FDinero ),10) & cLineaNueva
end if

cSalida = cSalida & " Total: " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),9) & cLineaNueva
'cSalida = cSalida & "Redondeo: " & PadL(Formato( Val2(rstEncabezado("Redondeo")), "##0.00" ),9) & cLineaNueva ' si necesitamos mostrar redondeo, descomentamos esta linea
cSalida = cSalida & cLineaNueva
cSalida = cSalida & PadL(Formato( nCantidadTotal, "###,###.00" ),3) & "--TOTALES--" & PadL(Formato( (Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("redondeo"))), "$" & Ambiente.FDinero ),10) & cLineaNueva

nPagoTotal = Val2(rstEncabezado("Pago1")) + Val2(rstEncabezado("Pago2")) + Val2(rstEncabezado("Pago3"))

if rstEncabezado("Pago1") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto1") & " " & PadL(Formato( Val2(rstEncabezado("Pago1")), "$" & Ambiente.FDinero ),10) & cLineaNueva
end if

if rstEncabezado("Pago2") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto2") & " " & PadL(Formato( Val2(rstEncabezado("Pago2")), "$" & Ambiente.FDinero ),10) & cLineaNueva
end if

if rstEncabezado("Pago3") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto3") & " " & PadL(Formato( Val2(rstEncabezado("Pago3")), "$" & Ambiente.FDinero ),10) & cLineaNueva
end if

Eventos

If rstEncabezado("Comision") > 0 Then
cSalida = cSalida & " Comisión: " & PadL(Formato( Val2(rstEncabezado("comision")), "$" & Ambiente.FDinero ),10) & cLineaNueva
End If

nComision = rstEncabezado("comision")

if nPagoTotal < (Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("redondeo"))) Then cSalida = cSalida & " Credito: " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("redondeo")) - nPagoTotal, "$" & Ambiente.FDinero ),9) & cLineaNueva else cSalida = cSalida & " Cambio: " & PadL(Formato( nPagoTotal - nComision - Val2(rstEncabezado("impuesto")) - Val2(rstEncabezado("iespecial")) - Val2(rstEncabezado("importe")) - Val2(rstEncabezado("redondeo")), "$" & Ambiente.FDinero ),9) & cLineaNueva end if Set rstMoneda = CreaRecordSet( "SELECT * FROM monedas WHERE moneda = '" & Ucase(Trim(rstEncabezado("moneda"))) & "'", Ambiente.Connection ) cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & Letra( Round( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), 2 ), Trim(rstMoneda("Descrip")), True,rstMoneda("Nombre") ) & cLineaNueva If Not rstCliente.EOF Then cSalida = cSalida & cLineaNueva 'cSalida = cSalida & cLineaNueva If Val2( rstCliente( "saldo" ) ) > 0 Then
cSalida = cSalida & "Su saldo: " & Formato( rstCliente( "saldo" ), "$##,##0.00" ) & cLineaNueva
End If
End If

If rstTextTicket.EOF Then
'cSalida = cSalida & cLineaNueva
'cSalida = cSalida & cLineaNueva
cSalida = cSalida & cLineaNueva

cSalida = cSalida & "***** GRACIAS POR SU COMPRA *****" & cLineaNueva
cSalida = cSalida & cLineaNueva
cSalida = cSalida & cLineaNueva
cSalida = cSalida & cLineaNueva
cSalida = cSalida & "." & cLineaNueva
Else
cSalida = cSalida & rstTextTicket("textend")
End If

' Esto manda un corte de papel

if Ambiente.rstEstacion("ticketcorte") <> 0 Then
cSalida = cSalida & Chr(27) & Chr(105)
end if

'EstableceImpresora "EPSON TM-U220D Receipt"

msgbox " " & cSalida

'IniciaDocumento 'este bloque permite imprimir en una impresora USB (imprime en la impresora predeterminada de Windows). En caso de que desee imprimir con la que tiene configurada en ESTACION01, tendra que comentar estas 5 lineas del bloque.
'EstableceFuente "Courier New", 8 'Fuente que tendra el ticket USB
'Say 0,0.2, "" & cSalida 'Alineación del texto en el ticket, en pulgadas
'FinDocumento 'Termina el Ticket
'Exit Sub 'Termina el Procedimiento Main

' DATOS = ""
'
' Ambiente.Parent.OPOSPOSPrinter1.Open("POSPrinter")
' Ambiente.Parent.OPOSPOSPrinter1.ClaimDevice(1000)
' Ambiente.Parent.OPOSPOSPrinter1.DeviceEnabled = True
' rc = Ambiente.Parent.OPOSPOSPrinter1.SetBitmap(1, 2, "c:\lumen.bmp", 512, 0)
' DATOS = Chr(27) + "|1B"
' cSalida = DATOS & cSalida
' Ambiente.Parent.OPOSPOSPrinter1.PrintNormal 2, (cSalida)
' rc = Ambiente.Parent.OPOSPOSPrinter1.PrintBarCode(2, "7501086801046", 104, 70, 400, -2, -13)
' rc = Ambiente.Parent.OPOSPOSPrinter1.PrintNormal(2, Chr(10) + Chr(20) + Chr(10) + Chr(10) + Chr(10))
' rc = Ambiente.Parent.OPOSPOSPrinter1.CutPaper(100)

If Ambiente.Tag = "HTML" Then

Ambiente.Tag = ""

cSalida = Replace( cSalida, cLineaNueva, "
" )
cSalida = "

" & cSalida & "
"
CreaHtml "", (cSalida)

Else
Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla 'enviamos a la impresorade tickets que esta definida en ESTACION01

'cSalida = cSalida & cLineaNueva & "COPIA PARA EL CLIENTE" 'En caso de que necesitemos un segundo ticket con la frase COPIA PARA EL CLIENTE , descomentamos esta linea
'Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla 'En caso de que necesitemos un segundo ticket, descomentamos esta linea

Script.ImprimeFormato "VALESVENTA", prn.Documento, Ambiente, Me, False ' en caso de ser necesario, imprime el formato de Vale Venta

End If

End Sub

Publicado el 3 comentarios

ZEBRA 2844 CON PRESENTACIONES Y UNIDAD

'|----------------------------------------------------------------------------------|
'| 2010-10-25 |
'| JOSE FELIX SANCHEZ (jofelchez@gmail.com) |
'| El siguiente procedimiento imprime las etiquetas de cada uno de los articulos, |
'| incluyendo sus presentaciones |
'| AGREGAMOS EL CAMPO UNIDAD |
'|----------------------------------------------------------------------------------|

Public Sub Main ()

‘Set rstPartidas = CreaRecordSet( “SELECT UPPER(prods.articulo) AS articulo, descrip, etiquetas, precio1, precio2, precio10 FROM prods WHERE etiquetas > 0”, Ambiente.Connection )
‘AGREGAMOS EL CAMPO UNIDAD
Set rstPartidas = CreaRecordSet( “SELECT UPPER(prods.articulo) AS articulo, descrip, etiquetas, precio1, precio2, precio10,UNIDAD 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” ), “” , “” , “” , “” , “” , “”
‘AGREGAMOS EL CAMPO UNIDAD
ImprimeEtiqueta “LPT1”, rstPartidas(“articulo”), rstPartidas(“descrip”) , Formato(rstPartidas(“precio1”), “##,##0.00” ), “” , “” , “” , “” , “” , “”, rstPartidas(“UNIDAD”)
Next

rstPartidas.MoveNext

Wend
‘AGREGAMOS LA UNIDAD
Set rstPartidas = CreaRecordSet( “SELECT UPPER(prods.articulo) AS articulo, prods.descrip, prods.precio1, UPPER(clavesadd.clave) AS clave, clavesadd.dato1, clavesadd.dato2, clavesadd.cantidad, clavesadd.unidad, clavesadd.etiquetas, clavesadd.precio, PRODS.UNIDAD AS UNIDAD_ARTICULO 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(“articulo”), rstPartidas(“descrip”) , Formato(rstPartidas(“precio1”), “##,##0.00” ), rstPartidas(“clave”) , rstPartidas(“dato1”), rstPartidas(“dato2”) , Formato(rstPartidas(“cantidad”), “##,##0.00” ), rstPartidas(“unidad”) , Formato(rstPartidas(“precio”), “##,##0.00” ), rstPartidas(“UNIDAD_ARTICULO”)
Next

rstPartidas.MoveNext

Wend

End sub

‘AGREGAMOS LA VARIABLE UNIDAD
Public Sub ImprimeEtiqueta( cPuerto, cArticulo, cDescrip, cPrecioDeLista, cClave, cDato1, cDato2, cCantidad, cUnidad, cPrecioPresentacion , cUNIDAD_ARTICULO )

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

cClave = Trim( cClave )
cDato2 = Trim( cDato2 )
cUnidad = Trim( cUnidad )
‘AGREGAMOS LA VARIABLE UNIDAD
cUNIDAD_ARTICULO = Trim( cUNIDAD_ARTICULO )

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) ‘LIBERAMOS LA MEMORIA
cSalida = cSalida & “D14” & Chr(13) & Chr(10) ‘DENSIDAD DE LA IMPRESION, DE 0 A 15
‘LA SIGUENTE LINEA SE PUEDE EXPLICAR EN LA PÁGINA 22 DEL MANUAL: A = ASCII; 05 = POSICION X; 11=POSICION Y; 0=GIRO 0 GRADOS; 2= TAMAÑO LETRA; 1=ESCALA EN HORIZONTAL; 1 = ESCALA VERICAL; N=LIMPIA MEMORIA
cSalida = cSalida & “A05,11,0,2,1,1,N,” & Chr(34) & Mid( cDescrip,1, 12 ) & ” $ ” & cPrecioDeLista & Chr(34) & Chr(13) & Chr(10)
‘LA SIGUENTE LINEA SE PUEDE EXPLICAR EN LA PÁGINA 29 DEL MANUAL: B = CODIGO DE BARRAS; 05 = POSICION X; 30=POSICION Y; 0=GIRO 0 GRADOS; 1= TIPO DE CÓDIGO(CODE39); 2=SEPARACIONDE LAS BARRAS; 6 = TAMAÑO HORIZONTAL; 40=TAMAÑO VERTICAL; B=MOSTRAR LOS CARACTERES ABAJO DEL CÓDIGO DE BARRAS
cSalida = cSalida & “B05,30,0,1,2,6,40,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
‘————————————————————————————————–
‘linea de codigo de barras de la version 2011
‘cSalida = cSalida & “B05,30,0,2,1,6,25,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
‘linea de codigo de barras de la version 2006
‘cSalida = cSalida & “B250,60,0,1,2,6,80,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
‘————————————————————————————————–

‘EN CASO DE QUE HAYA UNA CLAVE DE PRESENTACION
if cClave <> “” then

cSalida = cSalida & “A05,81,0,2,1,1,N,” & Chr(34) & Mid( cDato1,1, 16 ) & ” $ ” & cPrecioPresentacion & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “B05,100,0,1,2,6,30,B,” & Chr(34) & cClave & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,140,0,1,1,1,N,” & Chr(34) & Mid( cDato2,1, 16 ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,155,0,1,1,1,N,” & Chr(34) & Mid( cCantidad,1, 16 ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,170,0,1,1,1,N,” & Chr(34) & Mid( cUnidad,1, 16 ) & Chr(34) & Chr(13) & Chr(10)

end if

‘ESTA LINEA MUESTRA EL CAMPO UNIDAD, LO COLOQUÉ AL FINAL PARA QUE LO PUEDA VISUALIZAR
cSalida = cSalida & “A05,185,0,2,1,1,N,” & Chr(34) & “UNIDAD: ” & Mid( cUNIDAD_ARTICULO,1, 12 ) & Chr(34) & Chr(13) & Chr(10)

‘cSalida = cSalida & “A220,55,0,4,1,1,N,” & Chr(34) & “$” & cPrecioDeLista & Chr(34) & Chr(13) & Chr(10)
‘CON P1, ESPECIFICAMOS QUE SE DEBE IMPRIMIR UNA ETIQUETA Y FINALIZAMOS ESTA
cSalida = cSalida & “P1” & Chr(13) & Chr(10)

‘msgbox cSalida

‘——————————————————————————————-
‘EL SIGUIENTE BLOQUE QUE APARECE EN VERDE ES POR SI QUISIERAMOS IMPRIMIR VIA USB
‘IniciaDocumento
‘ EstableceFuente “Times New Roman”, 9
‘ Say 2.3, 3.4, Mid( cDescrip,1, 12 ) & ” $ ” & cPrecioDeLista
‘ EstableceFuente “C39HrP24DhTt”, 40
‘ Say 2.5, 3.4, cArticulo

‘if cClave <> “” then

‘ EstableceFuente “Times New Roman”, 9
‘ Say 3.1, 3.4, Mid( cDato1,1, 16 ) & ” $ ” & cPrecioPresentacion
‘ Say 3.3, 3.4, “Tipo: ” & Mid( cDato2,1, 16 )

‘ EstableceFuente “C39HrP24DhTt”, 30
‘ Say 3.5, 3.4, cClave

‘ EstableceFuente “Times New Roman”, 9
‘ Say 4.0, 3.4, “Cantidad: ” & Mid( cCantidad,1, 16 )
‘ Say 4.1, 3.4, “Unidad: ” & Mid( cUnidad,1, 16 )

‘end if

‘FinDocumento
‘———————————————————————————–

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 Dejar un comentario

ZEBRA 2844 CON PRESENTACIONES

'|----------------------------------------------------------------------------------|
'| 2010-10-13 |
'| JOSE FELIX SANCHEZ (jofelchez@gmail.com) |
'| El siguiente procedimiento imprime las etiquetas de cada uno de los articulos, |
'| incluyendo sus presentaciones |
'|----------------------------------------------------------------------------------|

Public Sub Main ()

Set rstPartidas = CreaRecordSet( “SELECT UPPER(prods.articulo) AS 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” ), “” , “” , “” , “” , “” , “”
Next

rstPartidas.MoveNext

Wend

Set rstPartidas = CreaRecordSet( “SELECT UPPER(prods.articulo) AS articulo, prods.descrip, prods.precio1, UPPER(clavesadd.clave) AS clave, clavesadd.dato1, clavesadd.dato2, clavesadd.cantidad, clavesadd.unidad, clavesadd.etiquetas, clavesadd.precio 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” )
ImprimeEtiqueta “LPT1”, rstPartidas(“articulo”), rstPartidas(“descrip”) , Formato(rstPartidas(“precio1”), “##,##0.00” ), rstPartidas(“clave”) , rstPartidas(“dato1”), rstPartidas(“dato2”) , Formato(rstPartidas(“cantidad”), “##,##0.00” ), rstPartidas(“unidad”) , Formato(rstPartidas(“precio”), “##,##0.00” )
Next

rstPartidas.MoveNext

Wend

End sub

Public Sub ImprimeEtiqueta( cPuerto, cArticulo, cDescrip, cPrecioDeLista, cClave, cDato1, cDato2, cCantidad, cUnidad, cPrecioPresentacion )

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

cClave = Trim( cClave )
cDato2 = Trim( cDato2 )
cUnidad = Trim( cUnidad )

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) ‘LIBERAMOS LA MEMORIA
cSalida = cSalida & “D14” & Chr(13) & Chr(10) ‘DENSIDAD DE LA IMPRESION, DE 0 A 15
‘LA SIGUENTE LINEA SE PUEDE EXPLICAR EN LA PÁGINA 22 DEL MANUAL: A = ASCII; 05 = POSICION X; 11=POSICION Y; 0=GIRO 0 GRADOS; 2= TAMAÑO LETRA; 1=ESCALA EN HORIZONTAL; 1 = ESCALA VERICAL; N=LIMPIA MEMORIA
cSalida = cSalida & “A05,11,0,2,1,1,N,” & Chr(34) & Mid( cDescrip,1, 12 ) & ” $ ” & cPrecioDeLista & Chr(34) & Chr(13) & Chr(10)
‘LA SIGUENTE LINEA SE PUEDE EXPLICAR EN LA PÁGINA 29 DEL MANUAL: B = CODIGO DE BARRAS; 05 = POSICION X; 30=POSICION Y; 0=GIRO 0 GRADOS; 1= TIPO DE CÓDIGO(CODE39); 2=SEPARACIONDE LAS BARRAS; 6 = TAMAÑO HORIZONTAL; 40=TAMAÑO VERTICAL; B=MOSTRAR LOS CARACTERES ABAJO DEL CÓDIGO DE BARRAS
cSalida = cSalida & “B05,30,0,1,2,6,40,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
‘————————————————————————————————–
‘linea de codigo de barras de la version 2011
‘cSalida = cSalida & “B05,30,0,2,1,6,25,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
‘linea de codigo de barras de la version 2006
‘cSalida = cSalida & “B250,60,0,1,2,6,80,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
‘————————————————————————————————–

‘EN CASO DE QUE HAYA UNA CLAVE DE PRESENTACION
if cClave <> “” then

cSalida = cSalida & “A05,81,0,2,1,1,N,” & Chr(34) & Mid( cDato1,1, 16 ) & ” $ ” & cPrecioPresentacion & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “B05,100,0,1,2,6,30,B,” & Chr(34) & cClave & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,140,0,1,1,1,N,” & Chr(34) & Mid( cDato2,1, 16 ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,140,0,1,1,1,N,” & Chr(34) & Mid( cCantidad,1, 16 ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,155,0,1,1,1,N,” & Chr(34) & Mid( cUnidad,1, 16 ) & Chr(34) & Chr(13) & Chr(10)

end if

‘cSalida = cSalida & “A220,55,0,4,1,1,N,” & Chr(34) & “$” & cPrecioDeLista & Chr(34) & Chr(13) & Chr(10)
‘CON P1, ESPECIFICAMOS QUE SE DEBE IMPRIMIR UNA ETIQUETA Y FINALIZAMOS ESTA
cSalida = cSalida & “P1” & Chr(13) & Chr(10)

‘msgbox csalida

‘——————————————————————————————-
‘EL SIGUIENTE BLOQUE QUE APARECE EN VERDE ES POR SI QUISIERAMOS IMPRIMIR VIA USB
‘IniciaDocumento
‘ EstableceFuente “Times New Roman”, 9
‘ Say 2.3, 3.4, Mid( cDescrip,1, 12 ) & ” $ ” & cPrecioDeLista
‘ EstableceFuente “C39HrP24DhTt”, 40
‘ Say 2.5, 3.4, cArticulo

‘if cClave <> “” then

‘ EstableceFuente “Times New Roman”, 9
‘ Say 3.1, 3.4, Mid( cDato1,1, 16 ) & ” $ ” & cPrecioPresentacion
‘ Say 3.3, 3.4, “Tipo: ” & Mid( cDato2,1, 16 )

‘ EstableceFuente “C39HrP24DhTt”, 30
‘ Say 3.5, 3.4, cClave

‘ EstableceFuente “Times New Roman”, 9
‘ Say 4.0, 3.4, “Cantidad: ” & Mid( cCantidad,1, 16 )
‘ Say 4.1, 3.4, “Unidad: ” & Mid( cUnidad,1, 16 )

‘end if

‘FinDocumento
‘———————————————————————————–

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

Formato de etiquetas para zebra 2844

' 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 & “D14” & Chr(13) & Chr(10)
cSalida = cSalida & “A220,15,0,1,1,1,N,” & Chr(34) & Formato( Date, “dd-MM-yyyy” ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A05,11,0,2,1,1,N,” & Chr(34) & Mid( cDescrip,1, 12 ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “B05,30,0,2,1,6,25,B,” & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & “A220,55,0,4,1,1,N,” & Chr(34) & “$” & 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