Formato de Tickets

 Visual Basic |  copy code |? 
001
' Mybusiness POS v. 2011
002
Sub Main()      
003
    Dim rstSeries
004
 
005
    'Ambiente.Torreta.PortOpen = False
006
    'Ambiente.Torreta.Settings = "9600,N,8,1" 
007
    'Ambiente.Torreta.RTSEnable = True 
008
    'Ambiente.Torreta.PortOpen = True 
009
    'Ambiente.Torreta.CommPort = 1 
010
    'Ambiente.Torreta.OutPut = "ABC" 
011
    'Eventos
012
    'Ambiente.Torreta.PortOpen = False
013
 
014
 
015
    'cLineaNueva = Chr(13)
016
    cLineaNueva = Chr(13) & Chr(10)                 
017
 
018
    'If MsgBox( "Desea imprimir el ticket", vbQuestion + vbYesNo + vbDefaultButton2 ) = vbNo Then   '  en caso de que la impresión sea opcional, descomentamos las Tres líneas, quitando el apostrofe.
019
    '   Exit Sub
020
    'End If
021
 
022
    ' Creamos el recordSet del encabezado de la venta
023
    Set rstEncabezado = Rst("SELECT * FROM ventas WHERE venta = " & prn.Documento, Ambiente.Connection )
024
 
025
    ' Verificamos que la venta que se desea imprimir exista
026
    if rstEncabezado.EOF Then
027
       MsgBox "No existe la venta seleccionada",vbInformation
028
       Exit Sub
029
    end if 
030
 
031
    ' Creamos el recordSet de las partidas que componen la venta
032
    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 )
033
 
034
    ' Traemos todos los datos del cliente
035
    Set rstCliente = Rst("SELECT * FROM clients WHERE cliente = '" & rstEncabezado.fields("Cliente") & "'", Ambiente.Connection )
036
 
037
    ' Traemos los datos de cobranza si es que existe
038
    Set rstCobranza = Rst( "SELECT * FROM cobranza WHERE venta = " & rstEncabezado("venta"), Ambiente.Connection )
039
 
040
    cSalida = ""
041
 
042
    'Esto abre el cajon de dinero
043
    if Ambiente.rstEstacion("Cajon") <> 0 Then 
044
       cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(20) & Chr(20) 
045
       cSalida = cSalida & Chr(7)
046
       ' Sansung de inyección
047
       ' cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(49)
048
    end if
049
 
050
    Set rstTextTicket = CreaRecordSet( "SELECT * FROM tickettext", Ambiente.Connection )
051
 
052
    If rstTextTicket.EOF Then
053
       cSalida = cSalida & "" & Ambiente.Empresa & cLineaNueva
054
       cSalida = cSalida & "" & Trim( Ambiente.Direccion1 ) & cLineaNueva
055
       cSalida = cSalida & "" & Trim( Ambiente.Direccion2 ) & cLineaNueva
056
       cSalida = cSalida & "" & Trim( Ambiente.Telefonos ) & cLineaNueva
057
    Else
058
       'cSalida = cSalida & Replace(rstTextTicket("textheader"), Chr(10), "" )
059
       cSalida = cSalida & rstTextTicket("textheader")
060
    End If
061
 
062
    'cSalida = cSalida & "" & Trim( rstEncabezado("Usuario") ) & " " & Trim( Ambiente.Estacion ) & " Ticket: " & rstEncabezado("No_referen") & cLineaNueva
063
    cSalida = cSalida & Trim( rstEncabezado("caja") ) & " " & Trim( rstEncabezado("Usuario") ) & " Ticket: " & rstEncabezado("No_referen") & cLineaNueva
064
 
065
    cSalida = cSalida & Formato( rstEncabezado("f_emision"),"dd-MM-yyyy" ) & " Hora: " & rstEncabezado("usuHora") & cLineaNueva
066
 
067
    cDatos = "" & rstEncabezado("datos")
068
 
069
    If clAt( ":", Trim(cDatos) ) = 1 Then
070
      cSalida = cDatos & cLineaNueva
071
    Else
072
      cSalida = cSalida & Trim( rstCliente("cliente") ) & " " & Trim( rstCliente("Nombre") ) & cLineaNueva
073
      cSalida = cSalida & Trim( rstCliente("calle") ) & " " & Trim( rstCliente("colonia") ) & Chr(13) & Chr(10)
074
   End If
075
 
076
 
077
    cSalida = cSalida & Ambiente.rstEstacion("leyendacomodin") & " " & rstEncabezado("comodin") & cLineaNueva
078
    'cSalida = cSalida & "Vendedor: " & rstEncabezado("Vend") & cLineaNueva
079
    'msgbox Ambiente.Var9
080
    'cSalida = cSalida & Ambiente.Var9 & vbCrLf
081
    'Ambiente.Var9 = ""
082
 
083
    cSalida = cSalida & "CANT. DESCRIPCION   CODIGO    SUBTOTAL" & cLineaNueva
084
 
085
    nImporteTotal = 0
086
    nImpuesto = 0
087
    nCantidadTotal = 0     
088
    nDescuentoTotal = 0
089
    nImporteOrigen = 0
090
 
091
    'PrintText cSalida
092
 
093
    While Not rstPartidas.EOF 
094
 
095
          nPrecio = rstPartidas("Precio") * ( 1 - (rstPartidas("Descuento")/100) ) * (1 + ( rstPartidas("impuesto") / 100 ) )
096
          nPrecioBase = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 ) ), 2)
097
          nDescuento = (nPrecioBase - nPrecio) * rstPartidas("Cantidad")
098
 
099
          If nPrecioBase > 0 Then
100
             nDescPor = ( nPrecio / nPrecioBase ) * 100
101
          Else
102
             nDescPor = 0
103
          End If 
104
 
105
          nDescuentoTotal = nDescuentoTotal + nDescuento
106
          nImporte = nPrecio * rstPartidas("Cantidad")
107
 
108
          nCantidad = PadL(Formato( rstPartidas("cantidad") / rstPartidas("prCantidad"), "##,##0" ),3)
109
 
110
          cDescrip  = PadR( Mid( rstPartidas("Descrip"), 1, 30 ), 30 )
111
          nCantidadTotal = nCantidadTotal + ( rstPartidas("cantidad") / rstPartidas("prcantidad") )
112
 
113
          nImporteTotal = nImporteTotal + nImporte
114
          nImpuesto = nImpuesto + ( nImporteTotal * ( rstPartidas("impuesto") / 100 ) )          
115
 
116
          nPrecio = 0
117
          nIEspecial = rstPartidas("Precio") * (Val2(rstPartidas("iespecial")) / 100)
118
          nIVa = rstPartidas("Precio") * (rstPartidas("impuesto") / 100)
119
          nPrecio = rstPartidas("Precio") + nIEspecial + nIVa
120
 
121
          cPrecio = PadL(Trim(Formato( nPrecio,  Ambiente.FDinero )),8)
122
          cImporte = PadL(Trim(Formato( Round( nPrecio, 2) * rstPartidas("cantidad") * (1 - (rstPartidas("descuento") / 100)), Ambiente.FDinero )),8)    
123
          nPrecioOrigen = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 )),2) * rstPartidas("cantidad")
124
          nImporteOrigen = nImporteOrigen + nPrecioOrigen
125
 
126
          strSalida = PadL(Formato( nCantidad, "##,##0" ),2) & " " & Trim( rstPartidas("prdescrip") ) & " " & cDescrip & vbCrLf & " P/Pza. " & cPrecio & "    " & rstPartidas("articulo") & "  " & cImporte 
127
 
128
          'If rstPartidas("Precio1") > rstPartidas("Precio") Then
129
          '   nDescuentoPartida = ( rstPartidas("Precio1") - rstPartidas("Precio") ) * nCantidad
130
          '   strSalida = strSalida & " Descuento: " & Formato( nDescuentoPartida, "##,##0.00" ) & vbCrLf
131
          'End If
132
 
133
          cSalida = cSalida & strSalida & cLineaNueva
134
 
135
          'If Not clEmpty( cNull( rstPartidas("prdescrip") ) ) Then
136
          '   cSalida = cSalida & Trim( rstPartidas("prdescrip") ) & vbCrLf
137
          'End If            
138
 
139
          If rstPartidas("Kit") <> 0 Then
140
             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 )
141
 
142
             While Not rstOpciones.EOF 
143
                   cSalida = cSalida & "Opcion:" & rstOpciones("descrip") & Chr(13) & Chr(10) 
144
                  rstOpciones.MoveNext
145
             Wend
146
          End If
147
 
148
          If rstPartidas("serie") <> 0 Then                                                      
149
 
150
             If rstEncabezado("ticket") <> 0 Then
151
                Set rstSeries = CreaRecordSet( _
152
                "SELECT * FROM series WHERE documento = 'TICKET' AND numeroDocumento = " & rstEncabezado( "no_referen" ) & " AND articulo = '" & rstPartidas("articulo") & "'", _ 
153
                Ambiente.Connection ) 
154
             Else
155
                Set rstSeries = CreaRecordSet( _
156
                "SELECT * FROM series WHERE documento = 'REMISION' AND numeroDocumento = " & rstEncabezado( "no_referen" ) & " AND articulo = '" & rstPartidas("articulo") & "'", _ 
157
                Ambiente.Connection )                            
158
             End If
159
 
160
             While Not rstSeries.EOF 
161
 
162
                   Serie = Trim( rstSeries("serie") )
163
                   Serie = PadL( Serie, 11 )
164
                   Serie = Mid( Serie, Len( Serie ) - 10 )
165
 
166
                   cSalida = cSalida & "SERIE: " & Serie & vbCrLf
167
                   rstSeries.MoveNext
168
             Wend
169
 
170
          End If       
171
 
172
          rstPartidas.MoveNext
173
 
174
    Wend
175
 
176
    'PrintText cSalida
177
 
178
    cSalida = cSalida & cLineaNueva 
179
    cSalida = cSalida & cLineaNueva    
180
 
181
    'cSalida = cSalida & "         Importe:            " & PadL(Formato( Val2(rstEncabezado("importe")), Ambiente.FDinero ),10) & cLineaNueva
182
    'cSalida = cSalida & "        Impuesto:            " & PadL(Formato( Val2(rstEncabezado("impuesto")), Ambiente.FDinero ),10) & cLineaNueva
183
 
184
    'if Val2(rstEncabezado("iespecial")) > 0 Then
185
    '   cSalida = cSalida & "     Impuesto 2%:            " & PadL(Formato( Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),10) & cLineaNueva
186
    'end if
187
 
188
    if nDescuentoTotal > 0 Then
189
       'cSalida = cSalida & "         Importe:            " & PadL(Formato( nImporteOrigen, Ambiente.FDinero ),10) & cLineaNueva
190
       'cSalida = cSalida & "       Descuento:            " & PadL(Formato( nDescuentoTotal, Ambiente.FDinero ),10) & cLineaNueva
191
    end if
192
 
193
    'cSalida = cSalida & "         Importe:            " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),10) & cLineaNueva
194
    'cSalida = cSalida & "        Redondeo:            " & PadL(Formato( Val2(rstEncabezado("Redondeo")), Ambiente.FDinero ),10) & cLineaNueva     
195
    cSalida = cSalida & cLineaNueva
196
    cSalida = cSalida & PadL(Formato( nCantidadTotal, "###,###" ),4) & "  ----- TOTALES ----     " & PadL(Formato( (Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("redondeo"))), "$" & Ambiente.FDinero ),10) & cLineaNueva     
197
 
198
    nPagoTotal = Val2(rstEncabezado("Pago1")) + Val2(rstEncabezado("Pago2")) + Val2(rstEncabezado("Pago3"))
199
 
200
    if rstEncabezado("Pago1") > 0 Then
201
       cSalida = cSalida & "                  Pago en " & rstEncabezado("Concepto1") & " " & PadL(Formato( Val2(rstEncabezado("Pago1")), "$" & Ambiente.FDinero ),9) & cLineaNueva
202
    end if 
203
 
204
    if rstEncabezado("Pago2") > 0 Then
205
       cSalida = cSalida & "                  Pago en " & rstEncabezado("Concepto2") & " " & PadL(Formato( Val2(rstEncabezado("Pago2")), "$" & Ambiente.FDinero ),9) & cLineaNueva
206
    end if
207
 
208
    if rstEncabezado("Pago3") > 0 Then
209
       cSalida = cSalida & "                  Pago en " & rstEncabezado("Concepto3") & " " & PadL(Formato( Val2(rstEncabezado("Pago3")), "$" & Ambiente.FDinero ),9) & cLineaNueva     
210
    end if
211
 
212
    Eventos
213
 
214
    If rstEncabezado("Comision") > 0 Then
215
       cSalida = cSalida & "        Comisión:            " & PadL(Formato( Val2(rstEncabezado("comision")), "$" & Ambiente.FDinero ),10) & cLineaNueva
216
    End If
217
 
218
    nComision = rstEncabezado("comision")
219
 
220
    if nPagoTotal < (Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("redondeo"))) Then
221
       cSalida = cSalida & "                     Credito: " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("redondeo")) - nPagoTotal, "$" & Ambiente.FDinero ),9) & cLineaNueva     
222
    else
223
       cSalida = cSalida & "                      Cambio: " & PadL(Formato( nPagoTotal - nComision - Val2(rstEncabezado("impuesto")) - Val2(rstEncabezado("iespecial")) - Val2(rstEncabezado("importe")) - Val2(rstEncabezado("redondeo")), "$" & Ambiente.FDinero ),9) & cLineaNueva     
224
    end if
225
 
226
    Set rstMoneda = CreaRecordSet( "SELECT * FROM monedas WHERE moneda = '" & Ucase(Trim(rstEncabezado("moneda"))) & "'", Ambiente.Connection )
227
 
228
 
229
    cSalida = cSalida & cLineaNueva
230
    cSalida = cSalida & cLineaNueva
231
    cSalida = cSalida & Letra( Round( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), 2 ), Trim(rstMoneda("Descrip")), True,rstMoneda("Nombre") ) & cLineaNueva
232
 
233
    If rstTextTicket.EOF Then
234
       cSalida = cSalida & cLineaNueva
235
       cSalida = cSalida & cLineaNueva
236
       cSalida = cSalida & cLineaNueva
237
 
238
       cSalida = cSalida & "***** GRACIAS POR SU COMPRA *****" & cLineaNueva
239
       cSalida = cSalida &  cLineaNueva
240
       cSalida = cSalida & cLineaNueva
241
       cSalida = cSalida & cLineaNueva
242
       cSalida = cSalida & cLineaNueva
243
       cSalida = cSalida & cLineaNueva
244
       cSalida = cSalida & cLineaNueva
245
       cSalida = cSalida & cLineaNueva    
246
       cSalida = cSalida & cLineaNueva    
247
 
248
    Else
249
       cSalida = cSalida & rstTextTicket("textend")
250
    End If
251
 
252
    ' Esto manda un corte de papel
253
 
254
    if Ambiente.rstEstacion("ticketcorte") <> 0 Then
255
       cSalida = cSalida & Chr(27) & Chr(105)        
256
    end if
257
 
258
    'EstableceImpresora "EPSON TM-U220D Receipt"
259
    'IniciaDocumento
260
    'EstableceFuente "Courier New",7.5
261
    'Say 0,0, cSalida
262
    'FinDocumento
263
    'Exit Sub
264
 
265
    If Ambiente.Tag = "HTML" Then
266
 
267
       Ambiente.Tag = ""
268
 
269
       cSalida = Replace( cSalida, cLineaNueva, "<br>" ) 
270
       cSalida = "<center><b>" & cSalida & "</b></center>"
271
       CreaHtml "", (cSalida)
272
 
273
    Else             
274
       'MsgBox cSalida      
275
       Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla    
276
'       Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla   '  si queremos que se imprima dos veces, descomentamos esta linea, solo quitamos el apostrofe al inicio
277
    End If            
278
 
279
End Sub     
280
 
281
 
282

6 comments for “Formato de Tickets

  1. Carlos Barroso
    mayo 22, 2015 at 8:29 am

    Hola
    Alguien que me pueda ayudar a cambiar el formato del ticket.
    el formato aparece de la siguiente manera:

    cantidad descripción precio importe
    12.00 jugo jumex botell 7.50 90.00

    quisiera que apareciera de esta otra manera:

    cantidad descripción precio importe
    jugo jumex botellín 250 ml
    12.00 7.50 90.00

    De antemano mil gracias.

    • José Félix
      mayo 22, 2015 at 4:58 pm

      Tomaremos como referencia el ticket explicado para ubicar la linea a modificar.

      http://helpmybusinesspos.info/ticket-explicado/

      Ubicar esto

       strSalida = PadL(Formato( nCantidad, “##,##0.00″ ),3) & ” ” & PadL( Mid( rstPartidas(“observ”),1,16 ),16)  &  cImporte &cLineaNueva

      Cambiar por

       strSalida =  rstPartidas(“observ”) &cLineaNueva
       strSalida = PadL(Formato( nCantidad, “##,##0.00″ ),3) & ” ”  &  cImporte &cLineaNueva

      Guarde y listo
      Nota: es posible que usted tenga rstPartidas(“descrip”) en lugar de rstPartidas(“observ”)

      Si aun asi se le complica le podemos ofrecer una solución en 300 pesos, un editor de ticket

      Saludos
      Jose Felix

  2. RRA
    agosto 25, 2014 at 6:17 pm

    Como puedo hacer para que en el ticket imprima el folio de la venta?

    • José Félix
      agosto 26, 2014 at 1:40 pm

      Buen día

      En su código identifique esta linea

      cSalida = cSalida & Ambiente.rstEstacion(“leyendacomodin”) & ” ” & rstEncabezado(“comodin”) & cLineaNueva

      Coloque debajo de esta lo siguiente

      cSalida = cSalida & ” Venta No. ” & rstEncabezado(“Venta”) & cLineaNueva

      Guarde y haga la prueba

      Saludos
      José Félix

  3. reaper
    febrero 25, 2014 at 7:11 pm

    Hola que tal, alguien podría ayudarme para mandar a hacer el corte del ticket? yo tengo una impresora OKIPOS 407, ya le intente con algunos códigos que encontré en línea aunque al percer solo sirven para Epson y algunas Samsung.

    Le intente con (27) (105), (27) (107) y (27) (109), gracias y saludos.

    • José Félix
      febrero 26, 2014 at 6:01 am

      Por lo que nos comenta, tiene su impresora conectada vía USB?
      Suele suceder que con el puerto USB el sistema mybusiness no logre enviar el comando para apertura del cajon dinero. Intente colocando el código directo sobre las propiedades del driver de su impresora.

Deja un comentario