Files
Lanterna_H/Principal.bas
Jose Alberto Guerra Ugalde 9485b8b62b - VERSION 4.09.11
- Se corrigio que, a veces cuando existia otra mesa y ticket igual (Diferente tipo de pago), traia el total de esa otra mesa y en el ticket ponia iva y total equivocado.
2024-09-11 15:53:03 -06:00

4660 lines
222 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Activity
Version=12.8
@EndOfDesignText@
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: false
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Private xui As XUI 'ignore
Dim prodsMap As Map
Dim etCantHasFocus, hayPedido As Boolean 'ignore
Dim ticketId As String
Dim rutaUsuario, folio As String 'ignore
Dim query As String
Dim listaProds, listaHints, listaHintsM, list_prodsPedido As List
Dim reiniciarlistaProds As Boolean = False 'ignore
Dim forzarBusqueda As Boolean = False
Dim reqManager As DBRequestManager
Dim su As StringUtils
Dim cs As CSBuilder
Dim impresoraConectada As Boolean = False
Dim errorImpresora As Int = 0
Dim Printer1 As EscPosPrinter
Private tipoPago As String = "VENTA"
Dim n2t As numeroATexto
Dim n As Int
Dim pagoPropina As String
Dim sftp1 As SFtp 'Requiere la libreria "JSch" (https://www.b4x.com/android/forum/threads/android-sftp-based-on-jsch-tutorial.26994/) para SFTP.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim listaFormasDePagoCB, listaFormaDePago, listaMontoDePago, listaTickets As List
Private p_leyendaDescuento As Panel
Private b_leyendaDescuento As Button
Private cb_leyendaDescuento As CheckBox
Private et_buscar As EditText
Private p_buscar As Panel
Private p_transparenteDescuento As Panel
Private cb_mostrarDescuento As CheckBox
Dim p_transparenteCierreAdmin As Panel
Private cd1 As ColorDrawable
Private p_botonesCierre As Panel
Private p_transparenteResumen As Panel
Private p_resumen As Panel
Private l_resumen As Label
Private sv_resumen As ScrollView
Dim b_imp As Button
Private b_envioInfo As Button
Private b_imprimirTicket As Button
Private b_regresarProds As Button
Private p_botonesProds As Panel
Private et_propina As EditText
Private cb_pagoPropina As B4XComboBox
' Private p_test As Panel
Private p_transparenteCambioMesa As Panel
Private p_cambioMesa As Panel
Private l_cambioMesa2 As Label
Private cb_cambioMesa As B4XComboBox
Private b_cambioMesa As Button
Private l_cambioMesa As Label
Private p_renombraVarios As Panel
Private l_renombraVarios As Label
Private b_renombraVarios As Button
Private et_precioVariable As EditText
Private et_nombreVariable As EditText
Private p_transparentePago As Panel
Private b_agregarPago As Button
Private l_tipoPago1 As Label
Private p_propina As Panel
Private cb_pago2 As B4XComboBox
Private l_tipoPago2 As Label
Private et_montoPago1 As EditText
Private et_montoPago2 As EditText
Private p_formasDePago As Panel
Private l_tipoPago As Label
Private formaPago As String
Private l_faltaMonto As Label
Private p_opcionEfectivo As Panel
Private l_opcionEfectivo As Label
Private CheckBox1 As CheckBox
Private cb_opcionEfectivo As CheckBox
' Private p_transparenteVerOrden As Panel
Private p_verOrden As Panel
Private l_verOrden As Label
Private lv_verOrden As ListView
Private b_reabrirMesa As Button
Private p_reabrirMesaMulti As Panel
Private b_reabrirMesaMulti As Button
Private b_imp2 As Button
Private p_wobble As Panel
Private p_botonesCerrar As Panel
Private b_imprimirCerrar As Button
Private p_principal As Panel
Dim WobbleMenu1 As WobbleMenu
Dim PCLV, PCLVM As PreoptimizedCLV
Private p_about As Panel
Private clv_prods_ll, clv As CustomListView
' Private p_botonesVenta As Panel
Private b_continuar As Button
Private l_about As Label
' Private et_busca As EditText
' Private b_buscar As Button
' Private lv_promos As ListView
Private b_prodMenos As Button
Private et_pCant As EditText
Private l_pCant As Label
Private b_prodMas As Button
Private p_botMasMen As Panel
Private l_prodX As Label
Private i_prod As ImageView
Private p_prods As Panel
Private p_mesas As Panel
Private b_terminar As Button
Private p_historial As Panel
' Private p_botonesHist As Panel
Private l_compraTerminada As Label
Private b_borrar As Button
Private l_historialVacio As Label
Private lv_historial As ListView
Dim clv_mesas As CustomListView
Private l_mesaX As Label
Private l_estatus As Label
Private l_mesa As Label
Private p_mesa As Panel
Private b_abrirMesa As Button
Private cb_comensales As B4XComboBox
Dim cb_mesero As B4XComboBox
Private l_mesero As Label
Private l_comensales As Label
Private l_pago As Label
Private cb_pago As B4XComboBox
Private p_mesaCampos As Panel
Private p_mesasItem As Panel
Private l_comensalesAbierta2 As Label
Private l_meseroAbierta2 As Label
Private b_mesaEditar As Button
Private b_mesaCerrar As Button
Private p_mesaAbierta As Panel
Private lv_categorias As ListView
Private p_pago As Panel
' Private Label1 As Label
Private b_pagoCerrar As Button
Private b_cierraAdmin As Button
Private b_cierreTotal As Button
Private p_cierreAdmin As Panel
Private et_inicioDia As EditText
Private l_inicioDia As Label
Private l_cierreAdmin As Label
Private clv_orden As CustomListView
Dim listaProdsOrden As List
Private p_productos1, p_productos2, p_productos3, p_productos4, p_productos5 As Panel
Private b_sigPagina As Button
Private panelEnUso As Int = 1
Private p_contProductos As Panel
Private l_selAlimentos As Label
Private l_selVinos As Label
Dim selBuscar As String = ""
Private et_selBuscar As EditText
Private Button1 As Button
Private l_panelEnUso As Label
Private l_about2 As Label
Private i_logo As ImageView
Private l_tituloHistorial As Label
Private p_prevBusqueda As Panel
Private l_total2 As Label
Private subtotal As String = 0
Private subtotal2 As String = 0
Private b_resumen As Button
Private cb_factura As CheckBox
Private p_resumenDia As Panel
Private clv_resumenDia As CustomListView
Private l_titResumenDia As Label
Private p_resItem As Panel
Private l_formaPago As Label
Private l_comprobante As Label
Private l_total As Label
Private l_propina, l_propinaPago As Label
Private l_consumo As Label
Private l_selMedios As Label
Private b_cierraParcial As Button
Private l_titResMesa As Label
Private l_titResConsumo As Label
Private l_titResPropina, l_titResPropinaPago As Label
Private l_titResPagoTot As Label
Private l_titResComprobante As Label
Private l_titResFormaPago As Label
Private b_imp3 As Button
Private p_contScrollView As Panel
Private p_resumenDiaTotales As Panel
Dim imprimirEfectivo As Boolean = False
Private l_propinaEfectivo, l_propinaAmex, l_propinaTDD, l_propinaTDC, l_propinaTotal, l_consumoEfectivo, l_consumoAmex, l_consumoTDC, l_consumoTDD, l_consumoTotal, l_totalEfectivo, l_totalAmex, l_totalTDD, l_totalTDC, l_totalTotal As Label
Private l_titPropinaPago As Label
Private p_transparenteCambioPagos As Panel
Private b_cambioPagos As Button
Private p_cambioPagos As Panel
Private cb_nuevoPago As B4XComboBox
Private cb_nuevoPagoPropina As B4XComboBox
Dim cambioPago, cambioPagoPropina As String
Private l_mesa0 As Label
Private b_reimprimirTicket As Button
Private p_selBuscar As Panel
Private b_prevPagina As Button
Private et_nuevoPago As EditText
Private et_nuevoPagoPropina As EditText
Private p_botonesCierreTotal As Panel
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Principal")
Subs.panelWH(p_principal, Activity.Width, Activity.Height)
Subs.panelWH(p_mesa, Activity.Width, Activity.Height - WobbleMenu1.Height)
If File.Exists(Starter.ruta, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", Starter.ruta, "kmt.db")
End If
PCLV.Initialize(Me, "PCLV", clv_prods_ll)
PCLVM.Initialize(Me, "PCLVM", clv_mesas)
WobbleMenu1.SetTabTextIcon(1,"Mesas", Chr(0xF00A), Typeface.FONTAWESOME)
WobbleMenu1.SetTabTextIcon(2,"Ordenes", Chr(0xF155), Typeface.FONTAWESOME)
WobbleMenu1.SetTabTextIcon(3,"Acerca de", Chr(0xF16B), Typeface.FONTAWESOME)
' WobbleMenu1.SetTabTextIcon(5,"Cinco", Chr(0xF29D), Typeface.FONTAWESOME)
p_resumenDia.Top = 10dip : p_resumenDia.left = 10dip
p_resumenDia.Width = Activity.Width - 20dip :p_resumenDia.height = Activity.height - 90dip
Subs.centraEtiqueta(l_titResumenDia, p_resumenDia.Width)
p_principal.Width = Activity.Width
p_principal.Height = Activity.Height
clv_prods_ll.GetBase.SetLayoutAnimated(0, 400dip, 10dip, Activity.Width - 430, Activity.Height * 0.55) 'Cambiamos el tamaño y posición de la lista de productos.
clv_prods_ll.Base_Resize(clv_prods_ll.GetBase.Width, clv_prods_ll.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que se ajuste al nuevo tamaño.
clv_mesas.GetBase.SetLayoutAnimated(0, 10dip, 80dip, clv_mesas.GetBase.Width, clv_mesas.GetBase.Height) 'Cambiamos el tamaño y posición de la lista de mesas.
clv_mesas.Base_Resize(clv_mesas.GetBase.Width, clv_mesas.GetBase.Height) 'Cambiamos el tamaño del panel interno de las mesas para que se ajuste al nuevo tamaño.
' clv_orden.GetBase.SetLayoutAnimated(0, 10dip, 10dip, clv_orden.GetBase.Width, Activity.Height - 220dip) 'Cambiamos el tamaño y posición de la lista de ordenes.
' clv_orden.Base_Resize(clv_orden.GetBase.Width, clv_orden.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que se ajuste al nuevo tamaño.
' Log(Activity.Height - 220)
p_about.Width = Activity.Width
p_about.Height = Activity.Height - WobbleMenu1.Height
Subs.centraEtiqueta(l_about, p_about.Width)
Subs.centraEtiqueta(l_about2, p_about.Width)
i_logo.Left = Round(p_about.Width/2)-(i_logo.Width/2)
p_mesas.Width = Activity.Width
p_mesaAbierta.Height = Activity.Height : p_mesaAbierta.width = Activity.width
p_mesas.Height = Activity.Height ' - WobbleMenu1.Height
p_historial.Width = Activity.Width
p_historial.Height = Activity.Height - WobbleMenu1.Height
Subs.centraPanel(p_cierreAdmin, Activity.Width)
Subs.centraPanel(p_cambioMesa, p_transparenteCambioMesa.Width)
p_transparenteCambioMesa.Top = 0 : p_transparenteCambioMesa.Left = 0
p_transparenteCambioMesa.Height = Activity.Height : p_transparenteCambioMesa.width = Activity.width
' p_transparenteVerOrden.Left = 0 : p_transparenteVerOrden.top = 0
' p_transparenteVerOrden.Height = Activity.Height : p_transparenteVerOrden.width = Activity.width
Subs.panelWH(p_transparenteCierreAdmin, Activity.Width, Activity.Height)
p_transparenteCierreAdmin.Top = 0 : p_transparenteCierreAdmin.left = 0
Subs.panelWH(p_transparenteResumen, Activity.Width, Activity.Height)
Subs.panelWH(p_transparentePago, Activity.Width, Activity.Height)
p_transparentePago.Top = 0 : p_transparentePago.left = 0
Subs.panelWH(p_transparenteDescuento, Activity.Width, Activity.Height)
p_transparenteDescuento.Top = 0 : p_transparenteDescuento.left = 0
sv_resumen.Panel.LoadLayout("resumenCont")
Subs.centraEtiqueta(l_pago, p_pago.Width)
Subs.centraEtiqueta(l_tituloHistorial, Activity.Width)
Subs.centraPanel(p_propina, p_pago.Width)
' Subs.centraPanel(p_botonesCerrar, p_pago.Width)
Subs.centraBoton(b_pagoCerrar, p_pago.Width)
p_contProductos.Width = Activity.Width - p_contProductos.Left - 10dip
p_contProductos.Height = Activity.Height - (p_mesaAbierta.Top + 1) - (WobbleMenu1.Height - 10dip) '165dip - 90dip
' Log($"${Activity.Height} - ${p_mesaAbierta.Top + 1} - ${(WobbleMenu1.Height - 10dip)}"$) ' - 90dip
' Log($"${Activity.Height - (p_mesaAbierta.Top + 1) - (WobbleMenu1.Height - 10dip)}"$) '- 90dip
p_productos1.Width = p_contProductos.Width - 30dip : p_productos1.height = p_contProductos.height - 60dip
p_productos2.Width = p_productos1.Width : p_productos2.Height = p_productos1.Height
p_productos3.Width = p_productos1.Width : p_productos3.Height = p_productos1.Height
p_productos4.Width = p_productos1.Width : p_productos4.Height = p_productos1.Height
p_productos5.Width = p_productos1.Width : p_productos5.Height = p_productos1.Height
Dim cs As CSBuilder
cs.Initialize
l_inicioDia.Text = cs.append("Para iniciar día, ingrese el texto ").bold.Append("INICIO DIA").Pop.Append(" y la tecla ").Bold.Append("Retorno").Pop.Append(" del teclado.").Color(Colors.red).Append(" Los datos del día anterior se borraran.").Popall
' p_botonesVenta.Top = Activity.Height - p_botonesVenta.Height - WobbleMenu1.Height + 10
Subs.centraPanel(p_pago, p_mesaAbierta.Width)
Subs.centraBoton(b_abrirMesa, Activity.Width)
p_botonesProds.Top = clv_orden.AsView.top + clv_orden.AsView.Height + 1dip ' - b_mesaCerrar.Height
'Esto para cambiar los tamaños y posiciones para pantallas chicas (celuar).
If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
p_botonesProds.Top = clv_orden.AsView.Height + clv_orden.AsView.top - 15dip
p_botonesProds.BringToFront
l_selMedios.Width = l_selMedios.Width * 0.7
p_selBuscar.Left = l_selMedios.Width + l_selMedios.left
p_selBuscar.Width = 90dip
l_selMedios.Left = l_selVinos.Left + l_selVinos.Width
' b_prevPagina.Width = b_prevPagina.Width * 0.85
b_prevPagina.Left = p_selBuscar.Left + p_selBuscar.Width
l_panelEnUso.left = b_prevPagina.Left + b_prevPagina.Width
b_sigPagina.left = l_panelEnUso.Left + l_panelEnUso.Width
p_botonesCierreTotal.Top = p_botonesCierreTotal.Top - 20dip
End If
' Subs.centraPanel(p_botonesProds, p_mesaAbierta.Width)
Subs.centraPanel(p_mesaCampos, Activity.Width)
Subs.centraPanel(p_mesaAbierta, Activity.Width)
lv_historial.Height = Activity.Height * 0.4
p_botonesCierre.Top = lv_historial.Top + lv_historial.Height + 20dip
' Subs.centraPanel(p_botonesCierre, p_historial.Width)
prodsMap.Initialize
listaProds.Initialize
listaHints.Initialize
listaHintsM.Initialize
listaProdsOrden.Initialize
p_mesas.Width = Activity.Width
Subs.panelVisible(p_mesas, 0, 0)
cb_comensales.SetItems(Array As String(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20))
' cb_pago.SetItems(Array As String("American Express", "Visa/Mastercard", "Efectivo"))
cb_pagoPropina.SetItems(Array As String("Amex", "Mifel", "Efectivo"))
cb_mesero.SetItems(Subs.traeMeserosLista)
' Private lasCats As List = Subs.traeCategorias
Starter.nivelActual = "Cats"
lv_categorias.Color = Colors.White
' lv_categorias.Top = l_meseroAbierta2.Top + l_meseroAbierta2.Height + 5
lv_categorias.Top = 10dip
lv_categorias.Height = Activity.Height * 0.60
Private Label1 As Label = lv_categorias.SingleLineLayout.Label
Label1.TextSize = 9dip
Label1.TextColor = Colors.Black
cb_nuevoPago.SetItems(Array As String("Amex", "Mifel", "Efectivo"))
cb_nuevoPagoPropina.SetItems(Array As String("Amex", "Mifel", "Efectivo"))
muestraCats
Log("################# PERMISOS BT: " & Starter.rp.Check("android.permission.BLUETOOTH_CONNECT"))
' Log("Permisos BT: " & Starter.rp.Check("android.permission.BLUETOOTH_CONNECT"))
' Log("REVISAMOS PERMISOS DE BT")
Starter.rp.CheckAndRequest("android.permission.BLUETOOTH_CONNECT")
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
' If Result Then Log("Tenemos permisos de bluetooth.")
' Log($"Resultado del CheckAndRequest: ${Result}"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_TARJETA = 'Mifel' where PT_TARJETA like '%Visa%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_PAGO_PROPINA = 'Mifel' where PT_TARJETA like '%Visa%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_PAGO2 = 'Mifel' where PT_TARJETA like '%Visa%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_PAGO2 = 'Mifel' where PT_PAGO2 like '%Visa%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_TARJETA = 'Amex' where PT_TARJETA like '%American%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_PAGO_PROPINA = 'Amex' where PT_TARJETA like '%American%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_PAGO2 = 'Amex' where PT_TARJETA like '%American%'"$)
Starter.skmt.ExecNonQuery($"update pedido_ticket set PT_PAGO2 = 'Amex' where PT_PAGO2 like '%American%'"$)
If FirstTime Then
sftp1.Initialize("sftp1", "u114586321", "FTP&R3sp4ld0sK3ym0n", "access986911787.webspace-data.io", 22)
sftp1.SetKnownHostsStore(File.DirInternal, "hosts.txt")
End If
End Sub
Sub l_prods_Click
Private tlbl As Label = Sender
' Log(tlbl.text)
Log(tlbl.tag)
tlbl.Color = Colors.LightGray
Sleep(200)
tlbl.Color = Colors.white
' Log("clicked")
Private m As Map = tlbl.tag
' Log(listaProdsOrden.IndexOf(m.Get("id")))
Log(listaProdsOrden)
Private indice As String = listaProdsOrden.IndexOf(m.Get("id"))
Try
If indice = -1 Then ' No esta en la orden y lo agregamos con cantidad 1.
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_orden.AsView.Width, 40dip)
Log(clv_orden.Size)
clv_orden.Add(Pnl, CreateMap("prod":m.Get("prod"), "precio":m.Get("precio"), "almacen":m.Get("almacen"), "id":m.Get("id"), "cant":1, "img":Null))
Subs.actualizaProducto(m.Get("precio"), 1, m.Get("prod"), m.Get("id"), Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
' listaProdsOrden.Add(m.Get("id"))
Log(clv_orden.Size)
Sleep(200)
clv_orden.ScrollToItem(clv_orden.Size - 1)
Sleep(100)
' clv_orden.GetPanel(clv_orden.Size - 1).GetView(0).Color = Colors.RGB(0,230,0) 'Resaltamos el articulo.k
' resalta(clv_orden.GetPanel(clv_orden.Size - 1).GetView(0))
Try 'Si se presionan muy rapido los productos, a veces manda error de que no esta inicializada la vista.
Wait For (resalta(clv_orden.GetPanel(clv_orden.Size - 1).GetView(0))) Complete (Completed As Object)
Catch
Log(LastException)
listaProdsOrden.Initialize
LlenaOrden
End Try
' Sleep(400)
' clv_orden.GetPanel(clv_orden.Size - 1).GetView(0).Color = 0xFFE2EEFF 'Regresamos el color original.
Else 'Ya esta en la orden, le sumamos 1 a la cantidad.
Log(clv_orden.GetValue(indice).As(Map).Get("cant"))
Private newCant As Int = clv_orden.GetValue(indice).As(Map).Get("cant") + 1
clv_orden.GetValue(indice).As(Map).put("cant", newCant)
clv_orden.GetPanel(indice).GetView(0).GetView(2).GetView(4).As(EditText).text = newCant 'getview(0) = p_prods, getview(2) = p_botMasMen, getview(4) = et_pCant
Subs.actualizaProducto(m.Get("precio"), newCant, m.Get("prod"), m.Get("id"), Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
End If
If indice > -1 Then
' Log($"Brincamos a ${indice}"$)
clv_orden.ScrollToItem(indice)
clv_orden.GetPanel(indice).GetView(0).Color = Colors.RGB(0,230,0) 'Resaltamos el articulo
Sleep(400)
clv_orden.GetPanel(indice).GetView(0).Color = 0xFFE2EEFF
End If
Catch
Log(LastException)
End Try
et_selBuscar.Text = ""
Log(listaProdsOrden)
End Sub
Sub resalta(p As Panel) As ResumableSub
p.Color = Colors.RGB(0,230,0) 'Resaltamos el articulo.k
Sleep(400)
p.Color = 0xFFE2EEFF 'Regresamos el color original.
Return 1
End Sub
Sub Activity_Resume
If Starter.cargaMeseros Then cb_mesero.SetItems(Subs.traeMeserosLista)
' p_transparenteCierreAdmin.Elevation = 0
' p_wobble.Left = 0
' p_wobble.Height = 170
' p_wobble.Top = Activity.Height - p_wobble.Height - 50
' p_wobble.Elevation = 10
' p_wobble.BringToFront
Starter.imprimirTicket = True
reqManager.Initialize(Me, Starter.DBReqServer)
Starter.atrasPresionado = False
' Log(Starter.DBReqServer)
clv = clv_prods_ll
cuentaProds
LlenaMesas(Null, Null)
LlenaProdsLL(Null, Null)
' PCLV.lblHint.SetTextSizeAnimated(0,13)
' PCLV.B4XSeekBar1.Color1=Colors.DarkGray
' PCLV.B4XSeekBar1.Color2=Colors.DarkGray
' PCLV.B4XSeekBar1.ThumbColor=Colors.red
' PCLV.B4XSeekBar1.Radius1 = 15
' PCLV.B4XSeekBar1.Radius2 = 20
PCLV.B4XSeekBar1.mBase.Left = Activity.Width * 1.5 '0.92
' PCLV.B4XSeekBar1.mBase.Width = 40dip
'' PCLV.B4XSeekBar1.mBase.Top=-50
' PCLV.B4XSeekBar1.mBase.Height = clv_prods_ll.AsView.Height
' PCLV.pnlOverlay.Height = clv_prods_ll.AsView.Height
' PCLV.pnlOverlay.Width = clv_prods_ll.AsView.Width
' PCLV.B4XSeekBar1.Update
' PCLV.B4XSeekBar1.mBase.Visible = False
If clv_mesas.Size > 0 Then
clv_mesas.JumpToItem(0) 'Vamos al primer artículo de la lista.
End If
PCLVM.lblHint.SetTextSizeAnimated(0,13)
PCLVM.B4XSeekBar1.Color1 = Colors.DarkGray
PCLVM.B4XSeekBar1.Color2 = Colors.DarkGray
PCLVM.B4XSeekBar1.ThumbColor = Colors.red
PCLVM.B4XSeekBar1.Radius1 = 15
PCLVM.B4XSeekBar1.Radius2 = 20
PCLVM.B4XSeekBar1.mBase.Left = Activity.Width * 0.88
' PCLVM.B4XSeekBar1.mBase.Top=-50
PCLVM.B4XSeekBar1.mBase.Height=clv_mesas.AsView.Height
PCLVM.pnlOverlay.Height = clv_mesas.AsView.Height
PCLVM.pnlOverlay.Width = clv_mesas.AsView.Width
PCLVM.B4XSeekBar1.Update
p_about.Height = Activity.Height - WobbleMenu1.Height
If p_mesas.Visible And Subs.revisaCierreAdmin Then
p_transparenteCierreAdmin.BringToFront
p_transparenteCierreAdmin.Visible = True
Log(8)
Else
p_transparenteCierreAdmin.Visible = False
End If
Private c As Cursor = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
c.Position = 0
If c.RowCount > 0 Then
Starter.mac_impresora = c.GetString("CAT_VA_VALOR")
Else
Starter.mac_impresora = 0
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0"))
End If
Printer1.Initialize(Me, "Printer1")
n2t.Initialize
' Log(n2t.NumberToWords(456.50))
' Log(n2t.NumberToWords(456.51))
' For x = 198 To 305
' Log(NumberFormat2(x&".52", 1,2,2,True) & " -> " & n2t.NumberToWords(x&".52"))
' Next
WobbleMenu1.mBase.As(Panel).Elevation = 10dip 'Ponemos la elevacion en 10 para que quede enfrente de los paneles semitransparentes.
Private z As ResultSet = Starter.skmt.ExecQuery2("select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As String ("IMPRESION_ACTIVA"))
Do While z.NextRow
Private ia As Boolean = False
If z.GetString("CAT_VA_VALOR") = 1 Then ia = True
Loop
Starter.imprimirTicket = ia
' Log(Starter.imprimirTicket)
sftp1.Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Activity_KeyPress (key As Int) As Boolean
' BACK key pressed
If key=KeyCodes.KEYCODE_BACK Then
If p_transparenteCambioPagos.Visible Then
p_transparenteCambioPagos.Visible = False
Else If p_resumenDia.Visible Then
p_resumenDia.Visible = False
else If p_prevBusqueda.Visible Then
p_prevBusqueda.Visible = False
' et_selBuscar.h
else If p_transparenteDescuento.Visible Then
p_transparenteDescuento.Visible = False
else If lv_categorias.Visible And n = 0 Then 'Or Starter.catActual = "VARIOS") And Starter.nivelActual = "SubCats"
clv_prods_ll.AsView.Visible = False
' p_buscar.Visible = False
lv_categorias.Visible = True
muestraCats
n = 1
Log(Starter.nivelActual & ", " & n)
Log(0)
Else If p_reabrirMesaMulti.Visible Then
Log(1)
p_reabrirMesaMulti.Visible = False
else If p_renombraVarios.Visible Then
Log(3)
p_renombraVarios.Visible = False
Else If p_transparenteCambioMesa.Visible Then
Log(4)
p_transparenteCambioMesa.Visible = False
Else If p_transparentePago.visible Then 'Si se esta mostrando el popup de pago, lo cerramos.
Log(5)
' p_pago.Visible = False
p_transparentePago.Visible = False
Else If clv_prods_ll.AsView.Visible Then 'SI se muestran los
' Log(6)
clv_prods_ll.AsView.Visible = False
' p_buscar.Visible = False
lv_categorias.Visible = True
n = 0
' Log(Starter.nivelActual & ", " & n)
else If p_mesa.Visible Then
' Log(7)
If Subs.revisaCierreAdmin Then
p_transparenteCierreAdmin.BringToFront
p_transparenteCierreAdmin.Visible = True
' Log(8)
Else
' Log(9)
p_transparenteCierreAdmin.Visible = False
End If
p_mesa.Visible = False
p_mesas.Visible = True
LlenaMesas(Null, Null)
Else if p_transparenteResumen.Visible Then
p_transparenteResumen.Visible = False
else if WobbleMenu1.GetCurrentTab = 2 Or WobbleMenu1.GetCurrentTab = 3 Then
WobbleMenu1.SetCurrentTab(1)
WobbleMenu1_Tab1Click
else if WobbleMenu1.GetCurrentTab = 1 Then
' B4XPages.ShowPage("Login")
StartActivity(Main)
End If
Return True
End If
' Returning False signals the system to handle the key
End Sub
Sub muestraCats
' Log("MUESTRA CATS")
Private lasCats As List = Subs.traeCategorias
Starter.nivelActual = "Cats"
lv_categorias.Clear
For cat = 0 To lasCats.Size - 1
lv_categorias.AddSingleLine(lasCats.get(cat))
Next
End Sub
Sub b_prodMenos_Click
etCantHasFocus = False
clv = clv_orden
' Log(Sender.As(Button).text & "|" & Sender.As(Button).tag)
Private buttonTag As String = Sender.As(Button).tag
LogColor("b_prodMenos_Click", Colors.Magenta)
Dim index As Int = clv.GetItemFromView(Sender)
LogColor(clv.GetValue(index), Colors.Magenta)
Private inv As Int = clv.GetValue(index).As(Map).Get("almacen")
Dim pnl0 As B4XView = clv.GetPanel(index)
' Log(pnl0.As(Panel))
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(4) 'et_pCant
' Log(pnl.GetView(0).NumberOfViews)
Dim elNombre As B4XView = pnl.GetView(1)
If WobbleMenu1.GetCurrentTab = 2 Then laCant = pnl.GetView(2).GetView(4)
' Log($"${pnl.GetView(1)}${CRLF}${pnl.GetView(2).GetView(2)}${CRLF}${pnl.GetView(2).GetView(3)}${CRLF}${pnl.GetView(2).GetView(4)}"$)
If buttonTag = "vendido" And laCant.Text > 0 Then
' Log(clv.GetValue(index).As(Map))
clv.GetValue(index).As(Map).Put("almacen",inv + 1)
' Log(clv.GetValue(index).As(Map))
End If
If laCant.Text = "" Then laCant.Text = 0
' Log($"|${laCant.Text}|"$)
laCant.Text = $"$1.0{laCant.Text-1}"$
If laCant.Text < 0 Then laCant.Text = 0
Private tmpMap As Map = clv.GetValue(index).As(Map)
Private precio As String = clv.GetValue(index).As(Map).Get("precio")
Private id As String=clv.GetValue(index).As(Map).Get("id")
Private prodNombre As String = clv.GetValue(index).As(Map).Get("prod")
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
' Log(tmpMap)
prodsMap.Put(id, tmpMap)
If laCant.Text = 0 Then prodsMap.Remove(id)
' Private nombreX As String = Subs.traeProdNombre(id)
If laCant.Text = 0 Then
clv.RemoveAt(index)
listaProdsOrden.RemoveAt(index)
Log(listaProdsOrden)
End If
If laCant.text > 0 Then clv.GetValue(index).As(Map).Put("cant",laCant.text)
Subs.actualizaProducto(precio, laCant.text, prodNombre, id, Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
cuentaProds
Dim cs As CSBuilder
cs.Initialize
If WobbleMenu1.GetCurrentTab = 2 Then
Private elTexto As String = clv.GetValue(index).As(Map).Get("prod")
Private elPrecioU As String = clv.GetValue(index).As(Map).Get("precio")
Private elTotal As String = elPrecioU * laCant.text
elNombre.Text = cs.Color(Colors.red).append(elTexto).pop.append(CRLF).Color(0xFF017F01).Append($"Precio $${NumberFormat2(elTotal, 1, 2, 2, True)}"$).Popall
End If
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Sub b_prodMas_Click
etCantHasFocus = False
clv = clv_orden
Private buttonTag As String = Sender.As(Button).tag
Dim index As Int = clv.GetItemFromView(Sender)
LogColor("b_prodMas_Click", Colors.Magenta)
Dim pnl0 As B4XView = clv.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(4) 'et_pCant
Dim elNombre As B4XView = pnl.GetView(1)
If WobbleMenu1.GetCurrentTab = 2 Then laCant = pnl.GetView(2).GetView(4)
' Log($"${pnl.GetView(2).GetView(1)}${CRLF}${pnl.GetView(2).GetView(2)}${CRLF}${pnl.GetView(2).GetView(3)}${CRLF}${pnl.GetView(2).GetView(4)}"$)
If laCant.Text = "" Then laCant.Text = 0
Private precio As String=clv.GetValue(index).As(Map).Get("precio")
Private prodNombre As String = clv.GetValue(index).As(Map).Get("prod")
Private inv As Int = clv.GetValue(index).As(Map).Get("almacen")
' Log($"|${laCant.Text}, ${inv}"$)
If buttonTag = "vendido" Then
If inv > 0 And (laCant.Text + 1 <= inv) Then
' Log(clv.GetValue(index).As(Map))
clv.GetValue(index).As(Map).Put("almacen", (inv - 1))
inv = inv - 1
laCant.Text = $"$1.0{laCant.Text+1}"$
' Log(clv.GetValue(index).As(Map))
End If
else If laCant.Text + 1 <= inv Then
laCant.Text = $"$1.0{laCant.Text + 1}"$
Log(Subs.totalPedido)
End If
Private id As String=clv.GetValue(index).As(Map).Get("id")
' Private nombreX As String = Subs.traeProdNombre(id)
Private precioX As String = precio
If laCant.text > 0 Then clv.GetValue(index).As(Map).Put("cant",laCant.text)
Subs.actualizaProducto(precioX, laCant.text, prodNombre, id, Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
cuentaProds
Dim cs As CSBuilder
cs.Initialize
If WobbleMenu1.GetCurrentTab = 2 Then
Private elTexto As String = clv.GetValue(index).As(Map).Get("prod")
Private elPrecioU As String = clv.GetValue(index).As(Map).Get("precio")
Private elTotal As String = elPrecioU * laCant.text
elNombre.Text = cs.Color(Colors.red).append(elTexto).pop.append(CRLF).Color(0xFF017F01).Append($"Precio $${NumberFormat2(elTotal, 1, 2, 2, True)}"$).Popall
End If
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Sub cuentaProds
' LogColor($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red)
' Log("===========================")
Private c As Cursor = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total, sum(PE_CANT) as cant from PEDIDO where PE_TICKET IN (Select cuenta from cuentaa)"$)
' LogColor("TIEMPO cuentaProds =" & ((DateTime.Now-inicioContador)/1000), Colors.Red)
' LogColor(prodsMap, Colors.Magenta)
c.Position=0
' Log(Subs.totalPedido)
Private cant0 As String = "0"
Private total0 As String = "0"
If c.GetString("cant") <> Null And c.GetString("cant") <> "null" Then cant0 = c.GetString("cant")
If c.GetString("total") <> Null And c.GetString("total") <> "null" Then total0 = c.GetString("total")
Private p As Cursor = Starter.skmt.ExecQuery($"select count(PT_TICKET) as ordenes from pedido_TICKET where PT_PAGO <> 'MULTI-TICKET' and PT_PAGO <> 'VENTA' "$)
p.Position = 0
' Log($"Total Prods: ${cant0}, Total Compra: $$1.2{total0}"$)
' l_totalCarrito.text = $"Total: $${NumberFormat2(total0,1,2,2,True)}"$
c.Close
If WobbleMenu1.GetCurrentTab = 2 Then LlenaProdsLL(Null, Null)
If Subs.hayPedido Then WobbleMenu1.SetBadge(2, p.GetString("ordenes"), Colors.white, Colors.red) Else WobbleMenu1.RemoveBadge(2)
End Sub
Sub LlenaProdsLL(p As ResultSet, extra As String)
' Log("LlenaProdsLL")
listaProds.Initialize
Private listaProdsIndex As List
listaProdsIndex.Initialize
Dim cantsMap As Map
cantsMap.Initialize
hayPedido = Subs.hayPedido
' Log($"HAYPEDIDO: ${hayPedido}"$)
Private listaProdsConCant2, listaProdsConCantIndex2 As List
listaProdsConCant2.Initialize
listaProdsConCantIndex2.Initialize
If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV.
Private c As Cursor = Starter.skmt.ExecQuery($"Select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG, PE_PROID, PE_CANT, PE_PRONOMBRE, PE_COSTOU from cat_gunaprod join pedido on cat_gp_id = Pe_proid where PE_TICKET = '${Starter.ticketActual}' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
' Log(c.RowCount)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim tempMap As Map = CreateMap("prod":c.GetString("PE_PRONOMBRE"), "precio":c.GetString("PE_COSTOU"), "almacen":c.GetString("CAT_GP_ALMACEN"), "id":c.GetString("CAT_GP_ID"), "cant":c.GetString("PE_CANT"), "img":Null)
listaProdsConCant2.Add(tempMap)
listaProdsConCantIndex2.Add(c.GetString("CAT_GP_ID"))
Next
End If
End If
' Log(p.IsInitialized)
If query = "" Or query = Null Then query = "cat_gunaprod2"
If p.IsInitialized Then
Log($"YA HAY RESULSET ${p.RowCount} registros"$)
Else
' Log("NO HAY RESULSET")
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
End If
' Log($"listaProdsConCant2= ${listaProdsConCant2}"$)
' Log($"listaProdsConCantIndex2=${listaProdsConCantIndex2}"$)
' Log($"listaProdsConCant2=${listaProdsConCant2}"$)
' Log($"listaProdsConCantIndex2=${listaProdsConCantIndex2}"$)
' Log(p.RowCount)
Private cont As Int = 0
Do While p.NextRow
Private cant As Int = 0
' If hayPedido And cantsMap.ContainsKey(p.GetString("CAT_GP_ID")) Then cant = cantsMap.Get(p.GetString("CAT_GP_ID")) 'Agregamos la cantidad ya comprada al producto
Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":p.GetString("CAT_GP_PRECIO"), "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID"), "cant":cant, "img":Null)
listaProds.Add(tempMap)
' Log($"${p.GetString("CAT_GP_ID")}, ${p.GetString("CAT_GP_NOMBRE")}, ${cant}"$)
Loop
' Log($"listaProdsConCant2=${listaProdsConCant2}"$)
' Log($"listaProdsConCantIndex2=${listaProdsConCantIndex2}"$)
p.Close
' Log("LISTAPRODS: " & listaProds)
PCLV.Commit
clv_prods_ll.Clear
Private cont As Int = 0
For pr0=0 To listaProdsConCant2.Size - 1 'Agregamos los productos con cantidad previa.
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
clv_prods_ll.Add(Pnl, listaProdsConCant2.Get(pr0))
' listaHints.Add(listaProdsConCant2.get(pr0).As(Map).Get("prod"))
cont = cont + 1
Next
' LogColor(clv_prods_ll.Size, Colors.red)
For pr = 0 To listaProds.Size - 1
Private Pnl As B4XView = xui.CreatePanel("")
If listaProds.Get(pr).As(Map).Get("almacen") < 1 Then
' Log("EN CERO" & listaProds.Get(pr).As(Map).Get("prod") & "|" & listaProds.Get(pr).As(Map).Get("almacen"))
Else
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
' Log($"Existe ${listaProds.get(pr).As(Map).Get("id")} -> ${listaProdsConCantIndex2.IndexOf(listaProds.get(pr).As(Map).Get("id"))}"$)
If listaProdsConCantIndex2.IndexOf(listaProds.get(pr).As(Map).Get("id")) = - 1 Then
clv_prods_ll.Add(Pnl, listaProds.Get(pr))
listaHints.Add(listaProds.get(pr).As(Map).Get("prod"))
End If
cont = cont + 1
End If
Next
If clv_prods_ll.Size > 0 Then
clv_prods_ll.JumpToItem(0) 'Vamos al primer artículo de la lista.
End If
' PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
' PCLV.B4XSeekBar1.MinValue = 0
' PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/20
' PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
' PCLV.B4XSeekBar1.Update
' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/20}"$)
reiniciarlistaProds = False
End Sub
Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
' Log($"clv_prods_ll_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$)
Dim ExtraSize As Int = 30 'List size
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_prods_ll.Size - 1)
Dim Pnl As B4XView = clv_prods_ll.GetPanel(i)
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
' Log(listaRenglones)
' Log(clv_prods_ll.GetValue(i))
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
Pnl.LoadLayout("proditem")
p_prods.Width = clv_prods_ll.GetBase.Width ' Activity.Width * 0.99
'
p_prods.Height = 50dip
' Pnl.SetLayoutAnimated(0, 0, 0, p_prods.Width, 200dip)
p_botMasMen.Left = (clv_prods_ll.GetBase.Width - p_botMasMen.Width - 32)
' Log(p_botMasMen.left)
Private cs As CSBuilder
cs.Initialize
l_prodX.SetTextSizeAnimated(0, 13)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then
p_prods.Color=0xFFE2EEFF
et_pCant.TextColor=Colors.Red
' Log("VENDIDO ")
b_prodMenos.Tag = "vendido"
b_prodMas.Tag = "vendido"
End If
Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_prods_ll.GetValue(i).As(Map).Get("cant")
l_prodX.Text = cs.Color(Colors.red).append(clv_prods_ll.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Color(0xFF017F01).Append($"Precio $${NumberFormat2(precio, 1, 2, 2, True)}"$).Popall
l_prodX.Tag = clv_prods_ll.GetValue(i).As(Map)
l_pCant.Tag = clv_prods_ll.GetValue(i).As(Map).Get("id")
' Log(clv_prods_ll.GetValue(i).As(Map).Get("id"))
i_prod.Bitmap = clv_prods_ll.GetValue(i).As(Map).Get("img")
End If
' Log($"${i}, ${FirstIndex}, ${LastIndex}, ${Pnl.NumberOfViews}. ${clv_prods_ll.Size}"$)
Else 'Not visible
' If Pnl.NumberOfViews > 0 Then
' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
' End If
End If
' Log($"Bar value: ${PCLV.B4XSeekBar1.Value}"$)
Next
End Sub
Sub et_busca_TextChanged (Old As String, New As String)
'' Private inicioContador As String = DateTime.Now
' If New.Length = 1 And Not(forzarBusqueda) Then Return
' forzarBusqueda = False
' If lfila.text = "PROMOCIONES" Then
'' If Not(lv_promos.Visible) Then lv_promos.Visible = True
'' Private cPromo As Cursor=Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${query} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID)"$)
'' Log($"res:${cPromo.RowCount}"$)
'' If cPromo.RowCount > 0 Then
'' lv_promos.Clear
'' For i=0 To cPromo.RowCount -1
'' cPromo.Position=i
'' Private tm As Map = Subs.procesaPromocion(cPromo.GetString("CAT_GP_ID"), ticketId)
'' If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
'' lv_promos.AddTwoLines(cPromo.GetString("CAT_GP_NOMBRE"),"# " & cPromo.GetString("CAT_GP_ALMACEN") & " $ " & cPromo.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
'' End If
'' Next
'' Else
'' ToastMessageShow("No hay promociones disponibles.", False)
'' End If
'' cPromo.Close
' Else
' If Not(clv_prods_ll.AsView.Visible) Then clv_prods_ll.AsView.Visible = True
' clv_prods_ll.Clear
' listaProds.Initialize
' listaHints.Initialize
' Sleep(0)
' Dim p As ResultSet = Starter.skmt.ExecQuery($"Select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
' Log($"Llamamos LlenaProdsLL con ${p.RowCount} registros"$)
' LlenaProdsLL(p, Null)
' p.Close
' End If
End Sub
Sub llenaCarrito 'ignore
' Private totalPedido As String = 0
' Private cantPedido As String = 0
' p_mesas.Visible = False
'' Subs.agrupador
'' lv_carrito.Clear
' clv_carrito.Clear
' list_prodsPedido.Initialize
' Private c_prods As Cursor=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_FOLIO, PE_CEDIS, PE_PROID FROM PEDIDO WHERE PE_TICKET IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_PRONOMBRE")
'' Log(c_prods.RowCount)
' If c_prods.RowCount > 0 Then
' c_prods.Position = 0
'' lv_carrito.BringToFront
' clv_carrito.AsView.BringToFront
' Private cs As CSBuilder
' For i = 0 To c_prods.RowCount -1
' cs.Initialize
' c_prods.Position = i
'' Dim label1 As Label
'' lv_carrito.TwoLinesLayout.ItemHeight = 50dip
'' label1 = lv_carrito.TwoLinesLayout.Label
'' label1.TextSize = 15
'' label1.TextColor = Colors.Black
'' label1.color = Colors.White
'' label1.Height = 30dip
' Private textColor As Int = Colors.black 'ignore
'' Log(c_prods.GetString("PE_CEDIS"))
' If Not(IsNumber(c_prods.GetString("PE_CEDIS"))) Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto.
' If c_prods.GetString("PE_CEDIS") = "DUR" Then textColor = Colors.red 'Si es promo, cambiamos el color del texto.
'' Dim label2 As Label
'' label2 = lv_carrito.TwoLinesLayout.SecondLabel
'' label2.TextSize = 10
'' label2.TextColor = Colors.Blue
'' label2.Tag = i
'' Log(c_prods.GetString("PE_PRONOMBRE"))
'' lv_carrito.AddTwoLines(cs.Color(textColor).append(c_prods.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c_prods.GetString("PE_CANT")& " SubTotal $"& c_prods.GetString("PE_COSTO_TOT")& " Folio "& c_prods.GetString("PE_FOLIO"))
' Private tempMap As Map = CreateMap("prod":c_prods.GetString("PE_PRONOMBRE"), "almacen":1000, "id": c_prods.GetString("PE_PROID"), "cant": c_prods.GetString("PE_CANT"), "precio": c_prods.GetString("PE_COSTOU"), "precioT": c_prods.GetString("PE_COSTO_TOT"))
' list_prodsPedido.Add(tempMap)
'' Private bmp As Bitmap = Subs.traeImgDeDB(c_prods.GetString("PE_PROID"))
'' Private elTexto As String = cs.Color(Colors.red).append(c_prods.GetString("PE_PRONOMBRE")).pop.append(CRLF).Color(0xFF017F01).Append($"Precio $${NumberFormat2(c_prods.GetString("PE_COSTO_TOT"), 1, 2, 2, True)}"$).Popall
' clv_carrito.Add(CreateListItem(c_prods.GetString("PE_PRONOMBRE"), c_prods.GetString("PE_CANT"), c_prods.GetString("PE_COSTO_TOT"), 1000, clv_carrito.AsView.Width, 150dip, Null, c_prods.GetString("PE_PROID")), tempMap)
' folio = 0
' totalPedido = totalPedido + (c_prods.GetString("PE_COSTOU") * c_prods.GetString("PE_CANT"))
' cantPedido = cantPedido + c_prods.GetString("PE_CANT")
' If c_prods.GetString("PE_FOLIO") <> Null Then folio = c_prods.GetString("PE_FOLIO")
' Next
' Else
' l_carritoVacio.Visible = True
' l_carritoVacio.Text = "No hay productos en tu carrito."
' End If
'' Log(list_prodsPedido)
' c_prods.Close
'' l_total2.Text = $"$1.2{totalPedido}"$
'' l_cant.Text = cantPedido
'' If Subs.revisaImpresa Then b_rechazar.Visible = False Else b_rechazar.Visible = True
'' p_vistaPreviaTrans.Width = Activity.Width
'' p_vistaPreviaTrans.Height = Activity.Height
'' Subs.centraPanel(p_vistaPrevia, Activity.Width)
'' p_vistaPrevia.Visible=True
'' p_vistaPreviaTrans.Visible=True
End Sub
'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder.
Sub PCLV_HintRequested(Index As Int) As Object
' Dim word As String = listaHints.get(Index)
' Return word
End Sub
'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder.
Sub PCLVM_HintRequested(Index As Int) As Object
Dim word As String = listaHintsM.get(Index)
Return word
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Private Sub WobbleMenu1_Tab1Click
' Log("TAB 1")
Starter.tipov = "VENTA"
If p_resumenDia.Visible Then p_resumenDia.Visible = False
If p_transparentePago.Visible Then Activity_KeyPress(KeyCodes.KEYCODE_BACK)
If Subs.revisaCierreAdmin Then
p_transparenteCierreAdmin.BringToFront
p_transparenteCierreAdmin.Visible = True
Else
p_transparenteCierreAdmin.Visible = False
p_mesas.BringToFront
p_mesas.Visible = True
End If
cuentaProds
LlenaMesas(Null, Null)
' LlenaProdsLL(Null, Null)
Subs.panelVisible(p_mesas, 0, 0)
PCLVM.B4XSeekBar1.mBase.Visible = False
' PCLV.B4XSeekBar1.mBase.Visible = False
p_about.Visible = False
' p_carrito.Visible = False
p_historial.Visible = False
' p_mesa.Visible = False
p_transparenteResumen.Visible = False
End Sub
Private Sub WobbleMenu1_Tab2Click
' Log("TAB 2")
If p_resumenDia.Visible Then p_resumenDia.Visible = False
p_verOrden.Visible = False
Subs.panelVisible(p_historial, 0, 0)
p_about.Visible = False
' p_carrito.Visible = False
p_mesas.Visible = False
p_mesa.Visible = False
p_transparenteCierreAdmin.Visible = False
If Subs.revisaCierreAdmin Then
cd1.Initialize(Colors.gray, 10dip)
b_cierraAdmin.Background = cd1
Else
cd1.Initialize(Colors.red, 10dip)
b_cierraAdmin.Background = cd1
End If
llenaHistorial
End Sub
Private Sub WobbleMenu1_Tab3Click
' Log("TAB 3")
LlenaProdsLL(Null, Null)
' PCLVM.B4XSeekBar1.mBase.Visible = False
' PCLV.B4XSeekBar1.mBase.BringToFront
' PCLV.B4XSeekBar1.mBase.Visible = True
Subs.panelVisible(p_about, 0, 0)
p_mesas.Visible = False
' p_carrito.Visible = False
p_transparenteCierreAdmin.Visible = False
p_historial.Visible = False
p_mesa.Visible = False
p_transparenteResumen.Visible = False
actualizaProductos("Alimentos")
' For w = 0 To 150
'
' Next
End Sub
Private Sub b_continuar_Click
WobbleMenu1.SetCurrentTab(2)
End Sub
Private Sub lv_promos_ItemClick (Position As Int, Value As Object)
End Sub
Private Sub p_historial_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub p_carrito_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub b_terminar_Click
DateTime.DateFormat= $"yyMMdd-HHmmss-${Starter.ticketActual}"$
Private id As String = DateTime.Date(DateTime.Now)
Starter.skmt.ExecNonQuery($"insert into cat_hist_compras (H_IDCOMPRA, H_FOLIO, H_MESA, H_CEDIS, H_COSTO_TOT, H_COSTOU, H_CANT, H_PRONOMBRE, H_PROID, H_TICKET, H_FECHA) select '${id}', PE_FOLIO, PE_MESA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA from pedido where PE_TICKET = '${Starter.ticketActual}'"$)
Starter.skmt.ExecNonQuery($"delete from pedido where PE_TICKET = '${Starter.ticketActual}'"$)
LlenaProdsLL(Null, Null)
l_compraTerminada.Text = $"¡Felicidades!${CRLF}${CRLF}Tu compra con número de orden ${id} ha sido registrada.${CRLF}${CRLF}Llegará en tu siguiente día de entrega."$
l_compraTerminada.Visible = True
l_compraTerminada.BringToFront
End Sub
Sub llenaHistorial
Dim rs_hist As ResultSet = Starter.skmt.ExecQuery($"Select *, ifnull(PT_PAGO2,"") as pt from pedido_ticket where PT_PAGO <> 'VENTA' and PT_PAGO <> 'MULTI-TICKET' order by PT_PAGO desc, PT_TICKET"$)
If rs_hist.RowCount > 0 Then
l_historialVacio.Visible = False
Private cs As CSBuilder
lv_historial.Clear
lv_historial.Visible = True
Do While rs_hist.NextRow
cs.Initialize
Dim Label1 As Label
Label1 = lv_historial.TwoLinesLayout.Label
Label1.TextSize = 16
Private elColor As Int = Colors.RGB(0,0,122)
If rs_hist.GetString("PT_PAGO") = "TARJETA" Then elColor = Colors.Red
Label1.color = Colors.White
Label1.Height = 30dip
Dim label2 As Label
label2 = lv_historial.TwoLinesLayout.SecondLabel
label2.TextSize = 14
label2.TextColor = Colors.RGB(1,127,1)
Private fecha As String = rs_hist.GetString("PT_FECHA")
fecha = fecha.SubString2(1,10)
Private pt As String = ""
If rs_hist.GetString("pt") = "Mifel" Or rs_hist.GetString("pt") = "Visa/Mastercard Debito" Then
pt = "Mifel"
Else if rs_hist.GetString("pt") = "Amex" Then
pt = "Amex"
else if rs_hist.GetString("pt") = "Efectivo" Then
pt = "Efectivo"
Else
pt = rs_hist.GetString("pt")
End If
Private co As String = rs_hist.GetString("PT_COMENSALES")
lv_historial.AddTwoLines2(cs.Color(elColor).Append("Orden: " & rs_hist.GetString("PT_TICKET") & " - Mesa: " & rs_hist.GetString("PT_MESA") & " - " & pt & " - C:" & co).PopAll, $"Fecha: ${fecha}, Productos: ${rs_hist.GetString("PT_NOART")}, Total: $${NumberFormat2(rs_hist.GetString("PT_MONTO"), 1, 2, 2, True)}"$, $"${rs_hist.GetString("PT_MESA")}|${rs_hist.GetString("PT_TICKET")}|${rs_hist.GetString("PT_PAGO")}|${rs_hist.GetString("PT_MESERO")}|${rs_hist.GetString("PT_COMENSALES")}|-|${rs_hist.GetString("PT_ORIGEN")}"$)
Loop
Else
lv_historial.Visible = False
l_historialVacio.Visible = True
l_historialVacio.Text = "No hay ordenes en tu historial."
End If
rs_hist.Close
End Sub
Sub CreateListItem(Text As String, cant As Int, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore
' Dim p As B4XView = xui.CreatePanel("")
' Dim cs As CSBuilder
' cs.Initialize
' p.SetLayoutAnimated(0, 0, 0, Width, Height)
' p.LoadLayout("prodItemCarrito")
'' i_prod.Bitmap = img
' l_prodX.TextSize = 15
' p_prods.Height = Height
' p_prods.Width = Width - 10
'' Log($"${clv_carrito.AsView.Width}, ${Activity.Width}, ${p_prods.Width}"$)
' p_botMasMen.Left = p_prods.Width - (p_botMasMen.Width - 75)
' l_prodX.Height = Height
' l_prodX.Text = Text&CRLF&"# " & inv & " $ " & precioU
' l_prodX.Text = cs.Color(Colors.red).append(Text).pop.append(CRLF).Color(0xFF017F01).Append($"Precio $${NumberFormat2(precioU, 1, 2, 2, True)}"$).Popall
' l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$
' l_pCant.Tag = precioU&"|"&inv&"|"&prodId
' et_pCant.Tag = precioU&"|"&inv&"|"&prodId
' et_pCant.Text = cant
' et_pCant.BringToFront
' Return p
End Sub
Private Sub b_borrar_Click
' clv = clv_carrito
'' Private buttonTag As String = Sender.As(Button).tag
' Dim index As Int = clv.GetItemFromView(Sender)
' Msgbox2Async("¿Seguro que deseas borrar este producto?", "Borrar Producto", "Si", "", "No", Null, False)
' Wait For Msgbox_Result (Result As Int)
' If Result = DialogResponse.POSITIVE Then
' LogColor("b_borrar_Click", Colors.Magenta)
' Private precio As String=clv.GetValue(index).As(Map).Get("precio")
'' Private inv As Int = clv.GetValue(index).As(Map).Get("almacen")
' Dim pnl0 As B4XView = clv.GetPanel(index)
' Dim pnl As B4XView = pnl0.GetView(0)
' Dim laCant As B4XView = pnl.GetView(2).GetView(2)
' If WobbleMenu1.GetCurrentTab = 3 Then laCant = pnl.GetView(2).GetView(4)
' Log(laCant.text)
' laCant.Text = "0"
' Private id As String=clv.GetValue(index).As(Map).Get("id")
'' Private almacenX As String = Subs.traeAlmacen
' Private nombreX As String = Subs.traeProdNombre(id)
' Private precioX As String = precio
' Subs.actualizaProducto(precioX, laCant.text, nombreX, id, Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
'' Log($"${almacenX}, ${precioX}, ${laCant.text}, ${nombreX}, ${id}, ${Starter.ticketActual}, ${Subs.traeFecha}, ${Subs.traeUsuarioDeBD}, ${rutaUsuario}, 0, ${Starter.tipov}"$)
' cuentaProds
' llenaCarrito
' End If
End Sub
Private Sub clv_mesas_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
' Log($"clv_mesa_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$)
Dim ExtraSize As Int = 30 'List size
Private m As Map
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_mesas.Size - 1)
Dim Pnl As B4XView = clv_mesas.GetPanel(i)
m = clv_mesas.GetValue(i)
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
Pnl.LoadLayout("mesasItem")
Pnl.Width = Pnl.Parent.Width - 1
Pnl.Left = 1dip
p_mesasItem.Width = p_mesasItem.Parent.As(Panel).Width - 1
p_mesasItem.Height = p_mesasItem.Parent.As(Panel).Height - 1dip
l_mesaX.Width = p_mesasItem.Width * 0.7
l_estatus.Width = p_mesasItem.Width * 0.26
l_estatus.Left = l_mesaX.left + l_mesaX.Width
Private cs As CSBuilder
cs.Initialize
l_mesaX.TextSize = 13
l_estatus.text = "DISPONIBLE"
' Log(m)
If m.Get("estatus") = "ABIERTA" Then l_estatus.Text = "ABIERTA"
' Log(m)
If l_estatus.text = "ABIERTA" Then
l_mesaX.Text = cs.Color(Colors.red).Size(16).Append($"Mesa ${m.Get("nombre")}"$).pop.append(CRLF).Color(0xFF017F01).Append($"Comensales ${m.Get("comensales")}"$).Append(" - Mesero ").pop.Color(Colors.red).append(m.Get("mesero")).pop.append(CRLF).Color(Colors.black).Append($"Subtotal. $${NumberFormat2(m.Get("subtotal"), 1,2,2,True)} - Articulos: ${m.Get("articulos")}"$).Popall
Else
l_mesaX.Text = cs.Color(Colors.red).Size(16).Append($"Mesa ${m.Get("nombre")}"$).Popall
End If
l_mesaX.Tag = m
p_mesasItem.Tag = m
End If
Else 'Not visible
' If Pnl.NumberOfViews > 0 Then
' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
' End If
End If
Next
End Sub
Sub LlenaMesas(p As ResultSet, extra As String) 'ignore
Private o As Cursor = Starter.skmt.ExecQuery("select count(PT_TICKET) as ordenes from pedido_TICKET where PT_PAGO <> 'MULTI-TICKET' and PT_PAGO <> 'VENTA' "$)
o.Position = 0
If o.GetInt("ordenes") > 0 Then WobbleMenu1.SetBadge(2, o.GetInt("ordenes"), Colors.white, Colors.red) Else WobbleMenu1.RemoveBadge(2)
Dim p As ResultSet = Starter.skmt.ExecQuery($"select *, IFNULL(M_ESTATUS, 'CERRADA') as ESTATUS2, IFNULL(M_MESERO, 'NINGUNO') as MESERO, IFNULL(M_COMENSALES, 0) as COMENSALES from cat_mesas order by ESTATUS2, cast(M_ID as INTEGER)"$)
' Log(p.RowCount)
PCLVM.Commit
clv_mesas.Clear
Private m_mesas As Map
m_mesas.Initialize
Do While p.NextRow
Private subtotal2 As String = "0"
Private NO_ARTS2 As String = "0"
' Log(p.GetString("ESTATUS2"))
If p.GetString("ESTATUS2") = "ABIERTA" Then
' Log($"PT_TICKET = '${p.GetString("M_TICKET")}' and PT_MESA = '${p.GetString("M_ID")}"$)
Private pt As Cursor = Starter.skmt.ExecQuery($"select ifnull(sum(PT_MONTO),0) as SUBTOTAL, ifnull(sum(PT_NOART), 0) as NO_ARTS from PEDIDO_TICKET where PT_TICKET = '${p.GetString("M_TICKET")}' and PT_MESA = '${p.GetString("M_ID")}' and PT_PAGO = 'VENTA'"$)
If pt.RowCount > 0 Then
pt.Position = 0
subtotal2 = pt.GetString("SUBTOTAL")
NO_ARTS2 = pt.GetString("NO_ARTS")
End If
End If
' Log($"${SUBTOTAL2}, ${NO_ARTS2}"$)
Dim tempMap As Map = CreateMap("id":p.GetString("M_ID"), "numero":p.GetString("M_NUMERO"), "nombre":p.GetString("M_NOMBRE"), "zona":p.GetString("M_ZONA"), "ticket":p.GetString("M_TICKET"), "estatus":p.GetString("ESTATUS2"), "mesero":p.GetString("MESERO"), "comensales":p.GetString("COMENSALES"), "subtotal":subtotal2, "articulos":NO_ARTS2)
' m_mesas.Put(p.GetString("M_ID"), tempMap)
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_mesas.AsView.Width, 70dip)
clv_mesas.Add(Pnl, tempMap)
listaHintsM.Add($"Mesa ${p.GetString("M_ID")}"$)
Loop
p.Close
PCLVM.B4XSeekBar1.MaxValue = clv_mesas.Size
PCLVM.B4XSeekBar1.MinValue = 0
PCLVM.B4XSeekBar1.Interval = clv_mesas.Size/20
PCLVM.B4XSeekBar1.Value = clv_mesas.Size
PCLVM.B4XSeekBar1.Update
reiniciarlistaProds = False
End Sub
'Entramos a la mesa seleccionada.
Private Sub p_mesasItem_Click
Log("Entramos a la mesa")
Starter.tipov = "VENTA"
Log(Sender.As(Panel).tag)
listaProdsOrden.Initialize
listaFormasDePagoCB.Initialize
listaFormaDePago.Initialize
listaMontoDePago.Initialize
listaTickets.Initialize
Starter.formasDePago = 1
tipoPago = "VENTA"
muestraCats
clv_prods_ll.AsView.Visible = False
' p_buscar.Visible = True
lv_categorias.Visible = True
' Log(Sender.As(Panel).tag)
b_abrirMesa.Text = "Abrir Mesa"
Subs.panelVisible(p_mesa, 0, 0)
Private m As Map = Sender.As(Panel).tag
Starter.mesaActual = m.Get("id")
Starter.meseroActual = m.Get("mesero")
Starter.ticketActual = m.Get("ticket")
Starter.comensalesActuales = m.Get("comensales")
Starter.totalActual = m.Get("subtotal")
l_mesa0.Text = $"MESA ${Starter.mesaActual}"$
cb_opcionEfectivo.Checked = False
cb_mostrarDescuento.Checked = False
cb_opcionEfectivo_CheckedChange(False)
' Log(m)
b_mesaCerrar.Tag = m
Starter.skmt.ExecNonQuery("delete from cuentaa")
Starter.skmt.ExecNonQuery($"insert into cuentaa (cuenta) values ('${m.Get("ticket")}')"$)
LlenaProdsLL(Null, Null)
p_mesas.Visible = False
cb_mesero.SelectedIndex = 0
' cb_pago.SelectedIndex = 0
cb_comensales.SelectedIndex = 0
' Private mesero As String = Subs.traeMesero(m.Get("id"))
If m.Get("mesero") <> "NINGUNO" Then cb_mesero.SelectedIndex = cb_mesero.IndexOf(m.Get("mesero"))
If m.Get("comensales") <> "0" Then cb_comensales.SelectedIndex = cb_comensales.IndexOf(m.Get("comensales"))
' Log(Subs.traeMesaEstatus(m.Get("id")))
If Subs.traeMesaEstatus(m.Get("id")) = "CERRADA" Then
p_mesaCampos.Visible = True
b_abrirMesa.Visible = True
p_mesaAbierta.Visible = False
Else
p_mesaCampos.Visible = False
b_abrirMesa.Visible = False
p_mesaAbierta.Visible = True
p_mesaAbierta.BringToFront
l_meseroAbierta2.Text = m.Get("mesero")
l_comensalesAbierta2.Text = m.Get("comensales")
End If
Private tm As Map = CreateMap("ticket":m.Get("ticket"), "pago":tipoPago)
listaTickets.Initialize
listaTickets.Add(tm) 'Agregamos el ticket y pago a la lista para imprimir el ticket con estos datos al llamar b_imprimirTicket_Click
selBuscar = "%"
actualizaProductos("Alimentos")
LlenaOrden
Starter.ticketFactura = False
Private f As Cursor = Starter.skmt.ExecQuery($"select ifnull(PT_FACTURAR, 'false') as PT_FACTURAR from PEDIDO_TICKET where PT_TICKET = '${Starter.ticketActual}' and PT_MESA = '${Starter.mesaActual}' and PT_PAGO = 'VENTA'"$)
If f.RowCount > 0 Then
f.Position = 0
Starter.ticketFactura = f.GetString("PT_FACTURAR")
End If
cb_factura.Checked = Starter.ticketFactura
End Sub
Private Sub p_mesasItem_LongClick
Private m As Map = Sender.As(Panel).tag
If m.Get("estatus") <> "CERRADA" Then
Log(m)
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ID from CAT_MESAS where ifnull(M_ESTATUS, 0) <> 'ABIERTA' order by M_ID"$)
If c.RowCount > 0 Then
Private listaMesas As List
listaMesas.Initialize
' Log(c.RowCount)
For i = 0 To c.RowCount - 1
c.Position = i
listaMesas.Add(c.GetInt("M_ID"))
Next
listaMesas.Sort(True)
End If
cb_cambioMesa.SetItems(listaMesas)
l_cambioMesa2.Text = $"Reasignar la mesa ${m.Get("id")} a la mesa:"$
b_cambioMesa.Tag = m.Get("id")
Subs.centraPanel(p_cambioMesa, Activity.Width)
p_transparenteCambioMesa.BringToFront
p_transparenteCambioMesa.Visible = True
End If
End Sub
Private Sub b_cambioMesa_Click
Private c As Cursor = Starter.skmt.ExecQuery($"select * from CAT_MESAS where M_ID = '${Sender.As(Button).tag}'"$)
Log($"select * from CAT_MESAS where M_ID = '${Sender.As(Button).tag}'"$)
If c.RowCount > 0 Then
c.Position = 0
Starter.skmt.BeginTransaction
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_ESTATUS = '${c.GetString("M_ESTATUS")}', M_TICKET = '${c.GetString("M_TICKET")}', M_MESERO = '${c.GetString("M_MESERO")}', M_COMENSALES = '${c.GetString("M_COMENSALES")}' where M_ID = '${cb_cambioMesa.SelectedItem}'"$)
Log($"update CAT_MESAS set M_ESTATUS = '${c.GetString("M_ESTATUS")}', M_TICKET = '${c.GetString("M_TICKET")}', M_MESERO = '${c.GetString("M_MESERO")}', M_COMENSALES = '${c.GetString("M_COMENSALES")}' where M_ID = '${cb_cambioMesa.SelectedItem}'"$)
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_ESTATUS = null, M_TICKET = null, M_MESERO = null, M_COMENSALES = null where M_ID = '${Sender.As(Button).tag}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_MESA = '${cb_cambioMesa.SelectedItem}' where PE_TIPO = 'VENTA' and PE_TICKET = '${c.GetString("M_TICKET")}' and PE_MESA = '${Sender.As(Button).tag}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_MESA = '${cb_cambioMesa.SelectedItem}' where PT_PAGO = 'VENTA' and PT_TICKET = '${c.GetString("M_TICKET")}' and PT_MESA = '${Sender.As(Button).tag}'"$)
Starter.skmt.TransactionSuccessful
Starter.skmt.EndTransaction
End If
p_transparenteCambioMesa.Visible = False
WobbleMenu1_Tab1Click
WobbleMenu1.SetCurrentTab(1)
End Sub
Private Sub b_abrirMesa_Click
If cb_mesero.SelectedIndex <> 0 Then
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ID = '${Starter.mesaActual}' and M_ESTATUS = 'ABIERTA'"$)
If c.RowCount > 0 Then
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_MESERO = '${cb_mesero.SelectedItem}', M_COMENSALES = '${cb_comensales.SelectedItem}' where M_ID = '${Starter.mesaActual}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_MESERO = '${cb_mesero.SelectedItem}', PT_COMENSALES = '${cb_comensales.SelectedItem}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
Log($"update PEDIDO_TICKET set PT_MESERO = '${cb_mesero.SelectedItem}', PT_COMENSALES = '${cb_comensales.SelectedItem}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}'"$)
Else
Starter.ticketActual = Subs.traeConsecutivoTicket("ABIERTA", "PENDIENTE")
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_TICKET = '${Subs.traeConsecutivoTicket("ABIERTA", "PENDIENTE")}', M_ESTATUS = 'ABIERTA', M_MESERO = '${cb_mesero.SelectedItem}', M_COMENSALES = '${cb_comensales.SelectedItem}' where M_ID = '${Starter.mesaActual}'"$)
' Log($"update CAT_MESAS set M_TICKET = '${Starter.ticketActual}', M_ESTATUS = 'ABIERTA', M_MESERO = '${cb_mesero.SelectedItem}', M_COMENSALES = '${cb_comensales.SelectedItem}' where M_ID = '${Starter.mesaActual}'"$)
End If
Starter.meseroActual = cb_mesero.SelectedItem
Starter.comensalesActuales = cb_comensales.SelectedItem
Starter.skmt.ExecNonQuery($"delete from usuarioa"$)
Starter.skmt.ExecNonQuery($"insert into usuarioa (usuario) values ('${cb_mesero.SelectedItem}')"$)
LlenaProdsLL(Null, Null)
l_comensalesAbierta2.Text = cb_comensales.SelectedItem
l_meseroAbierta2.Text = cb_mesero.SelectedItem
p_mesaCampos.Visible = False
b_abrirMesa.Visible = False
p_mesaAbierta.Visible = True
Else
ToastMessageShow("Es necesario seleccionar un mesero", False)
End If
End Sub
Private Sub p_mesa_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub cb_comensales_SelectedIndexChanged (Index As Int)
Log(Index)
End Sub
Private Sub cb_mesero_SelectedIndexChanged (Index As Int)
' Log(Index)
End Sub
Private Sub b_mesaCerrar_Click
' Log("Cerrar")
listaFormasDePagoCB.Initialize
listaFormaDePago.Initialize
listaMontoDePago.Initialize
listaTickets.Initialize
Starter.formasDePago = 1
l_faltaMonto.Text = ""
cb_opcionEfectivo.Checked = False
p_formasDePago.Height = 40dip
p_propina.Top = 143dip
'Esto para cambiar los tamaños y posiciones para pantallas chicas (celuar).
If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
b_pagoCerrar.Top = 235dip ' 295dip
b_pagoCerrar.Left = 20dip
b_pagoCerrar.BringToFront
Else
b_pagoCerrar.Top = 295dip ' 295dip
End If
p_pago.Height = 390dip
p_formasDePago.RemoveAllViews
Private c As Cursor = Starter.skmt.ExecQuery($"select PE_MESA from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA'"$)
If c.RowCount > 0 Then
' Log(Sender.As(Button).tag)
p_transparentePago.Visible = True
p_transparentePago.BringToFront
agregaFormaDePago(l_tipoPago.Left, 0, Starter.formasDePago, 60)
et_montoPago2.Text = Subs.traeTotalTicketActual_PT
Starter.totalActual = Subs.traeTotalTicketActual_PT
et_propina.Text = ""
' et_montoPago2.Text = Starter.totalActual
' p_pago.Elevation = 100dip
' p_pago.BringToFront
' p_pago.Visible = True
l_faltaMonto.Visible = False
Else
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_PAGO = null, M_TICKET = null, M_ESTATUS = null, M_MESERO = null, M_COMENSALES = null where M_ID = '${Starter.mesaActual}'"$)
Activity_KeyPress(KeyCodes.KEYCODE_BACK)
End If
pagoPropina = "Amex"
cb_pagoPropina.SelectedIndex = 0
Try
cb_pago2.SelectedIndex = 0
Catch
Log(LastException)
End Try
End Sub
Private Sub b_mesaEditar_Click
b_abrirMesa.Text = "Guardar"
p_mesaCampos.Visible = True
b_abrirMesa.Visible = True
p_mesaAbierta.Visible = False
End Sub
Private Sub p_mesaAbierta_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub lv_categorias_ItemClick (Position As Int, Value As Object)
' Log("ITEM CLICKED")
' Starter.catActual = Value
If Starter.nivelActual = "Cats" Then
Starter.catActual = Value
Else if Starter.nivelActual = "SubCats" Then
Starter.subcatActual = Value
End If
' Log(Starter.nivelActual)
' Log($"${Starter.catActual}, ${Starter.subcatActual}"$)
' If Starter.nivelActual = "Cats" And Value = "VARIOS" Then
' Log(6)
' Starter.nivelActual = "SubCats"
' lv_categorias_ItemClick (1, "VARIOS")
' Starter.nivelActual = "SubCats"
' End If
If Starter.nivelActual = "Cats" Then
Private lasCats As List = Subs.traeSubCategorias(Value)
Starter.nivelActual = "SubCats"
lv_categorias.Clear
For cat = 0 To lasCats.Size - 1
lv_categorias.AddSingleLine(lasCats.get(cat))
Next
' p_buscar.Visible = True
Else
lv_categorias.Visible = False
clv_prods_ll.AsView.Visible = True
' p_buscar.Visible = True
Private c As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_CLASIF = '${Value}' and CAT_GP_TIPO = '${Starter.catActual}' order by CAT_GP_NOMBRE"$)
LlenaProdsLL(c, Null)
End If
End Sub
Private Sub p_pago_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub b_pagoCerrar_Click
listaTickets.Initialize
p_transparentePago.Visible = False
' Private pt As ResultSet = Starter.skmt.ExecQuery($"select * from PEDIDO_TICKET where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
' Do While pt.NextRow
' Private laPropina As String = pt.GetString("PT_PROPINA")
' Private laPropinaPago As String = pt.GetString("PT_PAGO_PROPINA")
' Loop
' Log($"${laPropina}, ${laPropinaPago}"$)
Log("###################### " & listaFormasDePagoCB.Size & "|" & listaFormaDePago)
If listaFormasDePagoCB.Size > 1 Then
Log(">>>>>>>> VARIOS PAGOS")
Private sigTicketMT As String = Subs.traeConsecutivoTicket("CERRADA", "MULTI-TICKET")
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_TIPO = 'MULTI-TICKET', PE_TICKET = '${sigTicketMT}' where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$)
Log(1)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = 'MULTI-TICKET', PT_TICKET = '${sigTicketMT}', PT_PROPINA = '0', PT_PAGO_PROPINA = '0', PT_FECHA = '${Subs.traeFecha}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_PAGO = null, M_TICKET = null, M_ESTATUS = null, M_MESERO = null, M_COMENSALES = null where M_ID = '${Starter.mesaActual}'"$) 'Reseteamos la mesa a cerrada.
Private primeraVez As Boolean = True
'' Private descuentoAplicado As Boolean = False
Private ticketX As String = Starter.ticketActual
Private ticketAnt As String = ""
Private pagoAnt As String = ""
Private descXEfectivo As String = ""
Private contT As Int = 0
For fdp = 0 To listaFormasDePagoCB.Size - 1
Log($"FOR - PASO ${fdp}"$)
formaPago = listaFormaDePago.Get(fdp)
If formaPago = "Efectivo" Then
tipoPago = "EFECTIVO"
Else
tipoPago = "TARJETA" 'Pago con tarjeta
End If
Private sigTicket As String = Subs.traeConsecutivoTicket("CERRADA", tipoPago)
LogColor($"${primeraVez} - ${tipoPago} - |${formaPago}|"$, Colors.Red)
Private laPropina As String = "0"
If et_propina.Text <> "" Then
laPropina = et_propina.Text
End If
If tipoPago = "TARJETA" Then 'primeraVez And
Log("INSERTAMOS TARJETA")
Log($"${listaFormaDePago.Get(fdp)}"$)
Private pa As ResultSet = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${sigTicketMT}' and PE_TIPO = 'MULTI-TICKET'"$)
Log($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${sigTicketMT}' and PE_TIPO = 'MULTI-TICKET'"$)
Log(pa.RowCount)
Do While pa.NextRow
Log($"${pa.GetString("PE_PROID")}, ${pa.GetString("PE_COSTO_TOT")}, ${pa.GetString("PE_TIPO")}"$)
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", _
Array As Object (pa.GetString("PE_COSTO_TOT"), pa.GetString("PE_COSTOU"), pa.GetString("PE_CANT"), pa.GetString("PE_PRONOMBRE"), pa.GetString("PE_PROID"), sigTicket, pa.GetString("PE_FECHA"), pa.GetString("PE_MESERO"), pa.GetString("PE_MESA"), pa.GetString("PE_COSTO_SIN"), "TARJETA", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Loop
LogColor("INSERTAMOS TARJETA EN PT", Colors.blue)
Private ptMonto As String = listaMontoDePago.Get(fdp).As(EditText).text
' Private ptPropina = laPropina
If fdp <> listaFormasDePagoCB.Size - 1 Then
laPropina = 0
pagoPropina = formaPago
Else
pagoPropina = cb_pagoPropina.SelectedItem
End If
Log($"${contT}|${laPropina}|${cb_pagoPropina.SelectedItem}|${pa.RowCount}|${ptMonto}, ${formaPago}"$)
Starter.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES, PT_ALMACEN, PT_PAGO2, PT_ORIGEN, PT_PROPINA, PT_PAGO_PROPINA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object _
(sigTicket, tipoPago, Subs.traeFecha, Starter.meseroActual, pa.RowCount, ptMonto, Starter.mesaActual, ptMonto, Starter.comensalesActuales, "MULTI-TICKET", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$, laPropina, pagoPropina))
ticketX = ticketAnt
ticketAnt = sigTicket
pagoAnt = formaPago
primeraVez = False
If contT = 0 Then
Private descuentoTicket As String = sigTicket
Private descuentoTipoPago As String = tipoPago
End If
Private d As ResultSet = Starter.skmt.ExecQuery($"select ifnull(sum(PE_COSTO_TOT), 0) as totalEfectivo from PEDIDO where PE_TIPO = 'EFECTIVO' and PE_ORIGEN = '${Starter.mesaActual}|${sigTicketMT}'"$)
Private elEfectivo As String = "0"
Do While d.NextRow
elEfectivo = d.GetString("totalEfectivo")
Loop
If elEfectivo > "0" Then
Log("INSERTAMOS DESCUENTO")
Log($"DescTicket: ${descuentoTicket}, descPago: ${descuentoTipoPago}"$)
'Agregamos el efectivo como DESCUENTO en el pedido de la tarjeta.
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((elEfectivo * -1), (elEfectivo * -1), 1, "DESCUENTO", "DESC01", sigTicket, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, elEfectivo, "TARJETA", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Starter.ticketActual = ticketX
End If
contT = contT + 1
End If
If tipoPago = "EFECTIVO" Then
Log("INSERTAMOS EFECTIVO")
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object _
(listaMontoDePago.Get(fdp).As(EditText).text, listaMontoDePago.Get(fdp).As(EditText).text, 1, "Consumo de alimentos", "CDA01", sigTicket, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, listaMontoDePago.Get(fdp).As(EditText).text, tipoPago, formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Private laPropinaEfectivo As String = "0"
Private pagoPropinaEfectivo As String = "Efectivo"
If pagoPropina = "Efectivo" Then
laPropinaEfectivo = laPropina
pagoPropinaEfectivo = pagoPropina
End If
Starter.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES, PT_ALMACEN, PT_PAGO2, PT_ORIGEN, PT_PROPINA, PT_PAGO_PROPINA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object(sigTicket, tipoPago, Subs.traeFecha, Starter.meseroActual, 1, listaMontoDePago.Get(fdp).As(EditText).text, Starter.mesaActual, listaMontoDePago.Get(fdp).As(EditText).text, Starter.comensalesActuales, "MULTI-TICKET", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$, laPropinaEfectivo, pagoPropinaEfectivo))
Log("INSERTAMOS EFECTIVO EN PT")
descXEfectivo = listaMontoDePago.Get(fdp).As(EditText).text
End If
' If Not(descuentoAplicado) And pagoAnt <> "" And ticketAnt <> "" And descXEfectivo <> "" Then
' Log("INSERTAMOS DESCUENTO")
' Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((descXEfectivo * -1), (descXEfectivo * -1), 1, "DESCUENTO", "DESC01", ticketAnt, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, descXEfectivo, "TARJETA", pagoAnt, $"${Starter.mesaActual}|${sigTicketMT}"$)) 'Agregamos el descuento al pedido de tarjeta.
' descuentoAplicado = True
' End If
Starter.ticketActual = sigTicket
Private tm As Map = CreateMap("ticket":sigTicket, "pago":tipoPago)
listaTickets.Add(tm) 'Agregamos el ticket y pago a la lista para imprimir el ticket con estos datos al llamar b_imprimirTicket_Click
Next
Private d As ResultSet = Starter.skmt.ExecQuery($"select ifnull(sum(PE_COSTO_TOT), 0) as totalEfectivo from PEDIDO where PE_TIPO = 'EFECTIVO' and PE_ORIGEN = '${Starter.mesaActual}|${sigTicketMT}'"$)
Private elEfectivo As String = "0"
Do While d.NextRow
elEfectivo = d.GetString("totalEfectivo")
Loop
Log($"${Starter.ticketActual}, ${ticketAnt}, ${sigTicket}, ${ticketX}"$)
Starter.ticketActual = sigTicketMT
If elEfectivo > "0" Then
Private rd As ResultSet = Starter.skmt.ExecQuery($"select pe_proid from pedido where pe_pronombre = 'DESCUENTO' and pe_mesa = '${Starter.mesaActual}' and pe_ticket = '${descuentoTicket}'"$)
If rd.RowCount = 0 Then 'Si no se ha agregado el descuento al ticket, lo agregamos.
Log("INSERTAMOS DESCUENTO")
Log($"DescTicket: ${descuentoTicket}, descPago: ${descuentoTipoPago}"$)
' Agregamos el efectivo como DESCUENTO en el pedido de la tarjeta.
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((elEfectivo * -1), (elEfectivo * -1), 1, "DESCUENTO", "DESC01", descuentoTicket, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, elEfectivo, "TARJETA", descuentoTipoPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
End If
Starter.ticketActual = ticketX
End If
' Log(Subs.traeTotalTicketActual_P("MULTI-TICKET"))
' Private elTotalTarjeta As String = Subs.traeTotalTicketActual_P("MULTI-TICKET") - elEfectivo
' Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_MONTO = '${elTotalTarjeta}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${ticketAnt}' and PT_PAGO = 'TARJETA'"$)
Else
Log(">>>>>>>> UN SOLO PAGO")
formaPago = listaFormaDePago.Get(0)
If formaPago = "Efectivo" Then
tipoPago = "EFECTIVO"
Else
tipoPago = "TARJETA" 'Pago con tarjeta
End If
Private sigTicket As String = Subs.traeConsecutivoTicket("CERRADA", tipoPago)
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_PAGO = null, M_TICKET = null, M_ESTATUS = null, M_MESERO = null, M_COMENSALES = null where M_ID = '${Starter.mesaActual}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_TIPO = '${tipoPago}', PE_TICKET = '${sigTicket}', PE_TIPO2 = '${formaPago}' where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$)
Private laPropina As String = "0"
If et_propina.Text <> "" Then
laPropina = et_propina.Text
End If
Log(2)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = '${tipoPago}', PT_TICKET = '${sigTicket}', PT_TARJETA = '${formaPago}', PT_PROPINA = '${laPropina}', PT_PAGO_PROPINA = '${cb_pagoPropina.SelectedItem}', PT_PAGO2 = '${formaPago}', PT_FECHA = '${Subs.traeFecha}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
Log(tipoPago)
Starter.ticketActual = sigTicket
Private tm As Map = CreateMap("ticket":sigTicket, "pago":tipoPago)
listaTickets.Add(tm) 'Agregamos el ticket y pago a la lista para imprimir el ticket con estos datos al llamar b_imprimirTicket_Click
End If
b_leyendaDescuento_Click
Sleep(1000)
WobbleMenu1_Tab1Click
WobbleMenu1.SetCurrentTab(1)
End Sub
Private Sub cb_pago_SelectedIndexChanged (Index As Int)
Log(cb_pago.SelectedItem)
End Sub
Private Sub b_cierraAdmin_Click
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
If c.RowCount = 0 Then 'Si no hay mesas abiertas entonces ...
cd1.Initialize(Colors.gray, 10dip)
b_cierraAdmin.Background = cd1
ToastMessageShow("¡Cierre administrativo habilitado!", False)
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CIERRE ADMIN"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CIERRE ADMIN","1"))
Else
ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
End If
DateTime.DateFormat = "yyMMdd_HHmmss"
sftp1.UploadFile(File.DirInternal, "kmt.db", $"/Lanterna/kmt_Lanterna_${DateTime.Date(DateTime.Now)}.db"$) 'Requiere la libreria "JSch" (https://www.b4x.com/android/forum/threads/android-sftp-based-on-jsch-tutorial.26994/) para SFTP.
End Sub
Private Sub b_cierraAdmin_LongClick
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CIERRE ADMIN"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CIERRE ADMIN","0"))
cd1.Initialize(Colors.red, 10dip)
b_cierraAdmin.Background = cd1
ToastMessageShow("¡Cierre administrativo cancelado!", False)
End Sub
Private Sub b_cierreTotal_Click
' Log("click")
b_envioInfo.Enabled = True
If Subs.revisaEfectivoBorrado Then
b_imp.Text = "Imprimir" & CRLF & "Z"
b_envioInfo.Visible = False
b_imp3.Visible = False
Else
b_imp.Text = "Imprimir" & CRLF & "A + B"
b_envioInfo.Visible = True
b_imp3.Visible = True
End If
sv_resumen.Panel.Height = p_resumen.Height
l_resumen.Width = sv_resumen.Width - 20dip
cs.Initialize
Log(l_resumen.text)
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
' Log(c.RowCount)
If c.RowCount = 0 Then 'Si no hay mesas abiertas entonces ...
Private c As Cursor = Starter.skmt.ExecQuery("select PE_MESA, PE_TIPO, PE_TICKET, sum(PE_COSTO_TOT) as SUBTOT from PEDIDO group by PE_MESA, pe_tipo, PE_TICKET order by PE_MESA, PE_TIPO desc")
If c.RowCount > 0 Then
c.Position = 0
Private mesaAnt As String = ""
Private tipoAnt As String = ""
Private tipo As String
Private ticket As String
DateTime.DateFormat = "dd/mm/yyyy HH:mm:ss"
' cs.Append($"Fecha: ${DateTime.Date(DateTime.now)}${CRLF}${CRLF}"$)
For i = 0 To c.RowCount - 1
c.Position = i
ticket = c.GetString("PE_TICKET")
If c.GetString("PE_TIPO") = "TARJETA" Then
tipo = "Pago Tarjeta "
Else If c.GetString("PE_TIPO") = "EFECTIVO" Then
tipo = "Pago Efectivo "
End If
If mesaAnt <> c.GetString("PE_MESA") Then
Private tm As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalMesa from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO <> 'MULTI-TICKET'"$)
tm.Position = 0
' Log($"Mesa ${c.GetString("PE_MESA")} - $${tm.GetString("totalMesa")} ${CRLF}"$)
cs.Color(Colors.RGB(1,127,1)).Append($"Mesa ${c.GetString("PE_MESA")} - $${NumberFormat2(tm.GetString("totalMesa"), 1, 2, 2, True)} ${CRLF}"$).pop
Private tipoAnt As String = ""
End If
If tipoAnt <> c.GetString("PE_TIPO") And c.GetString("PE_TIPO") <> "MULTI-TICKET" Then
Private tpt As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalTipo from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO = '${c.GetString("PE_TIPO")}'"$)
tpt.Position = 0
cs.Color(Colors.red).Append($" * ${tipo} - $${NumberFormat2(tpt.GetString("totalTipo"), 1, 2, 2, True)} ${CRLF}"$).pop
End If
If c.GetString("PE_TIPO") <> "MULTI-TICKET" Then
cs.Append($" Ticket ${ticket}: $${NumberFormat2(c.GetString("SUBTOT"), 0, 2, 2, True)}${CRLF}"$).Popall
End If
mesaAnt = c.GetString("PE_MESA")
tipoAnt = c.GetString("PE_TIPO")
Next
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
End If
Subs.panelVisible(p_transparenteResumen, 0, 0)
Else
ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
End If
End Sub
Private Sub b_cierraParcial_Click
sv_resumen.Panel.Height = p_resumen.Height
l_resumen.Width = sv_resumen.Width - 20dip
b_envioInfo.Enabled = False
' If Subs.revisaEfectivoBorrado Then b_imp.Text = "Imprimir" & CRLF & "Z" Else b_imp.Text = "Imprimir" & CRLF & "A + B"
If Subs.revisaEfectivoBorrado Then
b_imp.Text = "Imprimir" & CRLF & "Z"
b_envioInfo.Visible = False
b_imp3.Visible = False
Else
b_imp.Text = "Imprimir" & CRLF & "A + B"
b_envioInfo.Visible = True
b_imp3.Visible = True
End If
cs.Initialize
Log(l_resumen.text)
Private c As Cursor = Starter.skmt.ExecQuery("select PE_MESA, PE_TIPO, PE_TICKET, sum(PE_COSTO_TOT) as SUBTOT from PEDIDO group by PE_MESA, pe_tipo, PE_TICKET order by PE_MESA, PE_TIPO desc")
If c.RowCount > 0 Then
c.Position = 0
Private mesaAnt As String = ""
Private tipoAnt As String = ""
Private tipo As String
Private ticket As String
DateTime.DateFormat = "dd/mm/yyyy HH:mm:ss"
' cs.Append($"Fecha: ${DateTime.Date(DateTime.now)}${CRLF}${CRLF}"$)
For i = 0 To c.RowCount - 1
c.Position = i
ticket = c.GetString("PE_TICKET")
If c.GetString("PE_TIPO") = "TARJETA" Then
tipo = "Pago Tarjeta "
Else If c.GetString("PE_TIPO") = "EFECTIVO" Then
tipo = "Pago Efectivo "
End If
If mesaAnt <> c.GetString("PE_MESA") Then
Private tm As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalMesa from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO <> 'MULTI-TICKET'"$)
tm.Position = 0
cs.Color(Colors.RGB(1,127,1)).Append($"Mesa ${c.GetString("PE_MESA")} - $${NumberFormat2(tm.GetString("totalMesa"), 1, 2, 2, True)} ${CRLF}"$).pop
Private tipoAnt As String = ""
End If
If tipoAnt <> c.GetString("PE_TIPO") And c.GetString("PE_TIPO") <> "MULTI-TICKET" Then
Private tpt As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalTipo from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO = '${c.GetString("PE_TIPO")}'"$)
tpt.Position = 0
cs.Color(Colors.red).Append($" * ${tipo} - $${NumberFormat2(tpt.GetString("totalTipo"), 1, 2, 2, True)} ${CRLF}"$).pop
End If
If c.GetString("PE_TIPO") <> "MULTI-TICKET" Then
cs.Append($" Ticket ${ticket}: $${NumberFormat2(c.GetString("SUBTOT"), 0, 2, 2, True)}${CRLF}"$).Popall
End If
mesaAnt = c.GetString("PE_MESA")
tipoAnt = c.GetString("PE_TIPO")
Next
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
End If
Subs.panelVisible(p_transparenteResumen, 0, 0)
End Sub
Private Sub b_cierreTotal_LongClick
Log("click")
sv_resumen.Panel.Height = p_resumen.Height
cs.Initialize
Private m As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
If m.RowCount = 0 Then 'Si no hay mesas abiertas entonces ...
Private c As Cursor = Starter.skmt.ExecQuery("select PE_MESA, PE_TIPO, sum(PE_COSTO_TOT) as SUBTOT from PEDIDO group by PE_MESA, pe_tipo order by PE_MESA, PE_TIPO desc")
If c.RowCount > 0 Then
c.Position = 0
Private mesaAnt As String = ""
Private tipo As String
For i = 0 To c.RowCount - 1
c.Position = i
If c.GetString("PE_TIPO") = "TARJETA" Then tipo = "Tarjeta " Else tipo = "Efectivo "
If mesaAnt <> c.GetString("PE_MESA") Then cs.Color(Colors.red).Append("Mesa " & c.GetString("PE_MESA") & CRLF).pop
cs.Append($"* ${tipo} $${NumberFormat2(c.GetString("SUBTOT"), 0, 2, 2, True)}${CRLF}"$).Popall
mesaAnt = c.GetString("PE_MESA")
Next
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
End If
Subs.panelVisible(p_transparenteResumen, 0, 0)
Else
ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
End If
End Sub
Private Sub et_inicioDia_EnterPressed
If et_inicioDia.Text.trim = "INICIO DIA" Then
p_transparenteCierreAdmin.Visible = False
et_inicioDia.Text = ""
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CIERRE ADMIN"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CIERRE ADMIN","0"))
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("EFECTIVO BORRADO"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("EFECTIVO BORRADO","0"))
Starter.skmt.ExecNonQuery("delete from PEDIDO")
Starter.skmt.ExecNonQuery("delete from PEDIDO_TICKET")
End If
End Sub
Private Sub p_transparenteCierreAdmin_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub p_transparenteResumen_Click
'Para evitar que el clic en pantalla no se siga hacia atras
p_transparenteResumen.Visible = False
End Sub
Sub Printer1_Connected (Success As Boolean)
' If Logger Then Log("Printer1_Connected")
If Success Then
ToastMessageShow("Impresora conectada", False)
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP", Starter.mac_impresora))
If Starter.logger Then LogColor("Impresora conectada", Colors.Green)
' B_IMP2.Enabled = True
impresoraConectada = True
Else
' Msgbox(Printer1.ConnectedErrorMsg, "Error connecting.") 'ignore
' ToastMessageShow("Error conectando la impresora", False)
LogColor("Error conectando la impresora", Colors.Red)
errorImpresora = errorImpresora + 1
If errorImpresora > 1 Then
Starter.MAC_IMPRESORA = "0"
errorImpresora = 0
End If
End If
End Sub
Sub Printer1_Error
Log("error printer")
End Sub
Sub b_imp_Click
b_impAB_Click
End Sub
Sub b_imp_LongClick
imprimeResumenMesas
End Sub
Sub imprimeResumenMesas
Private imprimirAqui As Boolean = Starter.imprimirTicket
Private sDate, sTime As String
Private c As Cursor
sv_resumen.Panel.Height = p_resumen.Height
cs.Initialize
Private l_total, la_cuenta As Label
l_total.Initialize("l")
la_cuenta.Initialize("2")
b_imp.Enabled = False
ProgressDialogShow("Imprimiendo, un momento ...")
Log(imprimirAqui)
If imprimirAqui Then
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
If Starter.logger Then Log("conectando 1")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada)
Sleep(1000)
cont = cont + 1
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
Else
If Starter.logger Then Log("conectando 2")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
If cont = 2 Then Printer1.Connect
If cont > 4 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
End If
Printer1.Reset
End If
Dim bmp As Bitmap
bmp.InitializeResize(File.DirAssets, "logoLanter2.bmp", 376, 129, True) 'ignore
Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
myimage = Printer1.DitherImage2D(myimage, 128)
myimage= Printer1.PackImage(myimage)
If imprimirAqui Then Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
If imprimirAqui Then Printer1.WriteString(Printer1.REVERSE)
If imprimirAqui Then Printer1.PrintImage(myimage)
If imprimirAqui Then Printer1.WriteString(Printer1.UNREVERSE)
Try
DateTime.DateFormat = "yyyymmdd"
sDate = DateTime.Date(DateTime.Now)
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString("LA LANTERNA RISTORANTE" & CRLF)
Printer1.WriteString(Printer1.NOBOLD)
DateTime.DateFormat = "dd/MM/yyyy"
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
Log(c.RowCount)
' If c.RowCount = 0 Then 'Si no hay mesas abiertas entonces ...
Private c As Cursor = Starter.skmt.ExecQuery("select PE_MESA, PE_TIPO, PE_TICKET, sum(PE_COSTO_TOT) as SUBTOT from PEDIDO where PE_TIPO <> 'VENTA' group by PE_MESA, pe_tipo, PE_TICKET order by PE_MESA, PE_TIPO desc")
If c.RowCount > 0 Then
c.Position = 0
Private mesaAnt As String = ""
Private tipoAnt As String = ""
Private tipo As String
Private ticket As String
If imprimirAqui Then Printer1.WriteString($"Fecha: ${sDate} ${sTime} ${CRLF}${CRLF}"$)
For i = 0 To c.RowCount - 1
c.Position = i
ticket = c.GetString("PE_TICKET")
If c.GetString("PE_TIPO") = "TARJETA" Then
tipo = "Pago Tarjeta "
Else If c.GetString("PE_TIPO") = "EFECTIVO" Then
tipo = "Pago Efectivo "
End If
If mesaAnt <> c.GetString("PE_MESA") Then
Private tm As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalMesa from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO <> 'MULTI-TICKET'"$)
tm.Position = 0
cs.Color(Colors.RGB(1,127,1)).Append($"Mesa ${c.GetString("PE_MESA")} - $${NumberFormat2(tm.GetString("totalMesa"), 1, 2, 2, True)} ${CRLF}"$).pop
If imprimirAqui Then Printer1.WriteString($"Mesa ${c.GetString("PE_MESA")} - $${NumberFormat2(tm.GetString("totalMesa"), 1, 2, 2, True)} ${CRLF}"$)
Private tipoAnt As String = ""
End If
If tipoAnt <> c.GetString("PE_TIPO") And c.GetString("PE_TIPO") <> "MULTI-TICKET" Then
Private tpt As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalTipo from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO = '${c.GetString("PE_TIPO")}'"$)
tpt.Position = 0
cs.Color(Colors.red).Append($" * ${tipo} - $${NumberFormat2(tpt.GetString("totalTipo"), 1, 2, 2, True)} ${CRLF}"$).pop
If imprimirAqui Then Printer1.WriteString($" * ${tipo} - $${NumberFormat2(tpt.GetString("totalTipo"), 1, 2, 2, True)} ${CRLF}"$)
End If
If c.GetString("PE_TIPO") <> "MULTI-TICKET" Then
cs.Append($" Ticket ${ticket}: $${NumberFormat2(c.GetString("SUBTOT"), 0, 2, 2, True)}${CRLF}"$).Popall
If imprimirAqui Then Printer1.WriteString($" Ticket ${ticket}: $${NumberFormat2(c.GetString("SUBTOT"), 0, 2, 2, True)}${CRLF}"$)
End If
mesaAnt = c.GetString("PE_MESA")
tipoAnt = c.GetString("PE_TIPO")
Next
If imprimirAqui Then Printer1.WriteString(CRLF)
Private tt As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as total from PEDIDO_TICKET where PT_PAGO = 'TARJETA'"$)
Private te As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as total from PEDIDO_TICKET where PT_PAGO = 'EFECTIVO'"$)
tt.Position = 0 : te.Position = 0
Private totalEfectivo As String = 0
If te.GetString("total") <> Null Then totalEfectivo = te.GetString("total")
' cs.color(Colors.RGB(1,127,1)).Append($"${CRLF}Total Tarjeta: ${NumberFormat2(tt.GetString("total"), 1,2,2,True)}${CRLF}"$).popall
' If imprimirAqui Then Printer1.WriteString($"${CRLF}Total Tarjeta: ${NumberFormat2(tt.GetString("total"), 1,2,2,True)}${CRLF}"$)
If totalEfectivo > 0 Then
cs.color(Colors.RGB(1,127,1)).Append($"${CRLF}Tarjeta: ${NumberFormat2(tt.GetString("total"), 1,2,2,True)}${CRLF}"$).popall
If imprimirAqui Then Printer1.WriteString($"${CRLF}Tarjeta: ${NumberFormat2(tt.GetString("total"), 1,2,2,True)}${CRLF}"$)
cs.color(Colors.RGB(1,127,1)).Append($"Efectivo: ${NumberFormat2(totalEfectivo, 1,2,2,True)}${CRLF}"$).popall
If imprimirAqui Then Printer1.WriteString($"Efectivo: ${NumberFormat2(totalEfectivo, 1,2,2,True)}${CRLF}"$)
Else
cs.color(Colors.RGB(1,127,1)).Append($"${CRLF}Total: ${NumberFormat2(tt.GetString("total"), 1,2,2,True)}${CRLF}"$).popall
If imprimirAqui Then Printer1.WriteString($"${CRLF}Total: ${NumberFormat2(tt.GetString("total"), 1,2,2,True)}${CRLF}"$)
End If
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
End If
Subs.panelVisible(p_transparenteResumen, 0, 0)
' Else
' ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
' End If
' Printer1.WriteString("__________" & CRLF)
' Printer1.WriteString("------------------------------" & CRLF)
' Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF)
' Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF)
' Printer1.WriteString("--------INFORMATIVO-----------" & CRLF)
' Printer1.WriteString("------------------------------" & CRLF)
' Printer1.WriteString(CRLF)
Printer1.WriteString(CRLF)
Printer1.WriteString(CRLF)
Sleep(1000)
Printer1.DisConnect
Catch
ToastMessageShow("Error en la impresion 2.", True)
Printer1.Disconnect
' B4XPages.ShowPage("Principal")
Activity_Resume
End Try
Sleep(1000)
b_imp.Enabled = True
ProgressDialogHide
End Sub
Sub b_imp2_Click
imprimeResumenGrupos
End Sub
'Sub b_imp2_LongClick
' b_impAB_Click
'End Sub
Sub imprimeResumenGrupos
Private imprimirAqui As Boolean = Starter.imprimirTicket
Private sDate, sTime As String
Private c As Cursor
sv_resumen.Panel.Height = p_resumen.Height
cs.Initialize
Private l_total, la_cuenta As Label
l_total.Initialize("l")
la_cuenta.Initialize("2")
b_imp2.Enabled = False
ProgressDialogShow("Imprimiendo, un momento ...")
If imprimirAqui Then
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
If Starter.logger Then Log("conectando 1")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada)
Sleep(1000)
cont = cont + 1
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
Else
If Starter.logger Then Log("conectando 2")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
If cont = 2 Then Printer1.Connect
If cont > 4 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
End If
Printer1.Reset
End If
' Dim bmp As Bitmap
' bmp.InitializeResize(File.DirAssets, "logoLanter2.bmp", 376, 129, True) 'ignore
' Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
' myimage = Printer1.DitherImage2D(myimage, 128)
' myimage= Printer1.PackImage(myimage)
' If imprimirAqui Then Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
' If imprimirAqui Then Printer1.WriteString(Printer1.REVERSE)
' If imprimirAqui Then Printer1.PrintImage(myimage)
' If imprimirAqui Then Printer1.WriteString(Printer1.UNREVERSE)
Try
DateTime.DateFormat = "yyyymmdd"
sDate = DateTime.Date(DateTime.Now)
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString("LA LANTERNA RISTORANTE" & CRLF)
Printer1.WriteString(Printer1.NOBOLD)
DateTime.DateFormat = "dd/MM/yyyy"
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
' Log(c.RowCount)
' If c.RowCount = 0 Then 'Si no hay mesas abiertas entonces ...
Private c As Cursor = Starter.skmt.ExecQuery("select distinct PE_PRONOMBRE, PE_PROID, CAT_GP_TIPO2, CAT_GP_CLASIF, sum(pe_cant) as cuantos, sum(pe_costo_tot) as monto, PE_FECHA from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' and PE_TIPO <> 'MULTI-TICKET' and PE_PROID not like 'CDA%' and PE_PROID not like 'DESC%' group by CAT_GP_TIPO2, PE_PRONOMBRE order by CAT_GP_ORDEN_GRUPOS, CAT_GP_TIPO2, PE_PRONOMBRE") 'Este query quita los "Consumo de alimentos", que son los tickets que se generan con el multi-ticket, porque en CAT_GUNAPROD no existe el ID CDA01.
' Log(c.RowCount)
If c.RowCount > 0 Then
c.Position = 0
Private catAnt As String = ""
Private catTotal As String = 0
Private catMontoTotal As String = 0
Private laFecha() As String = Regex.Split(" ", c.GetString("PE_FECHA")) 'Traemos la fecha del PEDIDO.
If imprimirAqui Then Printer1.WriteString($"Fecha: ${laFecha(0)} ${sTime} ${CRLF}${CRLF}"$)
cs.Color(Colors.red).Append($"Fecha: ${laFecha(0)} ${sTime}${CRLF}"$).pop
Log($"Fecha: ${laFecha(0)} ${sTime} ${CRLF}${CRLF}"$)
Log("*** GRUPOS ***")
cs.Color(Colors.red).Append($"*** GRUPOS ***${CRLF}"$).pop
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** GRUPOS ***${CRLF}"$)
Printer1.WriteString(Printer1.NOBOLD)
' For i = 0 To c.RowCount - 1
' c.Position = i
'' Log($"${catAnt} - ${c.GetString("CAT_GP_TIPO2")}"$)
' If catAnt <> c.GetString("CAT_GP_TIPO2") Then
'' Private tm As Cursor = Starter.skmt.ExecQuery($"select sum(PT_MONTO) as totalMesa from PEDIDO_TICKET where PT_MESA = '${c.GetString("PE_MESA")}' and PT_PAGO <> 'MULTI-TICKET'"$)
'' tm.Position = 0
' If catAnt <> "" Then
' Private primerEspacioLargo As Int = 45 - "Total ".Length - catAnt.Length - 5 - catTotal.Length - NumberFormat2(catMontoTotal,1,0,0,True).Length
' Private primerEspacio As String = ""
' For n = 1 To primerEspacioLargo
' primerEspacio = primerEspacio & "."
' Next
'' Log("primer espacio : " & primerEspacioLargo)
' cs.Color(Colors.Green).Append($"Total ${catAnt}: ${catTotal}${primerEspacio}$${NumberFormat2(catMontoTotal,1,0,0,True)}${CRLF}"$).pop
' Log($"Total ${catAnt}: ${catTotal}${primerEspacio}$${NumberFormat2(catMontoTotal,1,0,0,True)}${CRLF}"$)
' If imprimirAqui Then
' Printer1.WriteString(Printer1.BOLD)
' Printer1.WriteString($"Total ${catAnt}: ${catTotal}${primerEspacio}$${NumberFormat2(catMontoTotal,1,0,0,True)}${CRLF}${CRLF}"$)
' Printer1.WriteString(Printer1.NOBOLD)
' End If
'' Log($">>>>>>> CAT TOTAL ${catAnt}: ${catTotal}"$ )
' End If
' cs.Color(Colors.red).Append($"++ ${c.GetString("CAT_GP_TIPO2")} ++${CRLF}"$).pop
' LogColor($"++ ${c.GetString("CAT_GP_TIPO2")} ++${CRLF}"$, Colors.blue)
' Printer1.WriteString(Printer1.BOLD)
' If imprimirAqui Then Printer1.WriteString($"++ ${c.GetString("CAT_GP_TIPO2")} ++${CRLF}"$)
' Printer1.WriteString(Printer1.NOBOLD)
' Private tipoAnt As String = ""
' catTotal = 0
' catMontoTotal = 0
' End If
' Private elNombre As String = c.GetString("PE_PRONOMBRE")
' If c.GetString("PE_PROID").StartsWith("LA") Then
' Private nn As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = '${c.GetString("PE_PROID")}'"$)
' Do While nn.NextRow
' elNombre = nn.GetString("CAT_GP_NOMBRE")
' Loop
' End If
' Private monto As String = NumberFormat2(c.GetString("monto"), 1, 0, 0, True)
' Private cuantos As String = c.GetString("cuantos")
' Private nom() As String = Regex.Split("\$", elNombre)
' If nom.Length > 1 Then elNombre = nom(0)
' If elNombre.Length > 45 Then elNombre = elNombre.SubString2(0, 45)
' Log($"${elNombre} - ${c.GetString("cuantos")} .. $${monto}"$) '${c.Position} - ${elNombre.Length} -
' cs.Color(Colors.DarkGray).Append($"${elNombre} - ${c.GetString("cuantos")} .. $${monto} ${CRLF}"$).pop
'' Log(cs.Length)
' Private primerEspacioLargo As Int = 45 - elNombre.Length - c.GetString("cuantos").Length - (monto.Length + 1) - 6
' Private primerEspacio As String = ""
' For n = 1 To primerEspacioLargo
' primerEspacio = primerEspacio & "."
' Next
'' If imprimirAqui Then Printer1.WriteString($"${elNombre}${Subs.alineaDerecha(c.GetString("cuantos"), (31 - elNombre.Length), ".")} ${CRLF}"$)
' If imprimirAqui Then Printer1.WriteString($"${elNombre}${primerEspacio}${c.GetString("cuantos")}..$${monto} ${CRLF}"$)
' catTotal = catTotal + c.GetString("cuantos")
' catMontoTotal = catMontoTotal + c.GetString("monto")
'' Log($">>>> ${catAnt} - ${c.GetString("CAT_GP_TIPO2")}"$)
' If i = c.RowCount - 1 Then
' Private primerEspacioLargo As Int = 45 - "Total ".Length - c.GetString("CAT_GP_TIPO2").Length - 5 - catTotal.Length - NumberFormat2(catMontoTotal,1,0,0,True).Length
' Private primerEspacio As String = ""
' For n = 1 To primerEspacioLargo
' primerEspacio = primerEspacio & "."
' Next
'' Log("PRIMER ESPACIO:" & primerEspacio.Length)
' Log($"Total ${c.GetString("CAT_GP_TIPO2")}: ${catTotal} ${primerEspacio}$${NumberFormat2(catMontoTotal,1,0,0,True)}${CRLF}"$)
' cs.Color(Colors.Green).Append($"Total ${c.GetString("CAT_GP_TIPO2")}: ${catTotal} ${primerEspacio}$${NumberFormat2(catMontoTotal,1,0,0,True)}${CRLF}"$).pop
' If imprimirAqui Then
' Printer1.WriteString(Printer1.BOLD)
' Printer1.WriteString($"Total ${c.GetString("CAT_GP_TIPO2")}: ${catTotal} ${primerEspacio}$${NumberFormat2(catMontoTotal,1,0,0,True)}${CRLF}"$)
' Printer1.WriteString(Printer1.NOBOLD)
' End If
' End If
' Private tipoAnt As String = ""
' catAnt = c.GetString("CAT_GP_TIPO2")
'' Log(i)
' Next
If imprimirAqui Then Printer1.WriteString(CRLF)
' l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
End If
'RESUMEN
LogColor("sleeping ....", Colors.Magenta)
If imprimirAqui Then Sleep(4000)
Private rsm As Cursor = Starter.skmt.ExecQuery($"select distinct CAT_GP_TIPO2, sum(pe_cant) as cuantos, sum(pe_costo_tot) as monto from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' group by CAT_GP_TIPO2 order by CAT_GP_ORDEN_GRUPOS, CAT_GP_TIPO2"$) 'Este query quita los "Consumo de alimentos", que son los tickets que se generan con el multi-ticket, porque en CAT_GUNAPROD no existe el ID CDA01.
' Log(rsm.RowCount)
If rsm.RowCount > 0 Then
' Printer1.WriteString(Printer1.BOLD)
' If imprimirAqui Then Printer1.WriteString($"*** GRUPOS *** ${CRLF}"$)
' Log($"*** GRUPOS ***${CRLF}"$)
' cs.Color(Colors.red).Append($"*** GRUPOS ***${CRLF}"$).pop
' Printer1.WriteString(Printer1.NOBOLD)
' For i = 0 To rsm.RowCount - 1
' rsm.Position = i
' Private laCat As String = rsm.GetString("CAT_GP_TIPO2")
' If laCat.Length > 20 Then laCat = laCat.SubString2(0, 20)
'' Log($"${rsm.Position} - ${laCat.Length} - ${laCat}"$)
' Private monto As String = NumberFormat2(rsm.GetString("monto"), 1, 0, 0, True)
' Private cuantos As String = rsm.GetString("cuantos")
' Private primerEspacioLargo As Int = 30 - laCat.Length - (cuantos.Length + 1) - 6
' Private primerEspacio As String = ""
' For n = 1 To primerEspacioLargo
' primerEspacio = primerEspacio & "."
' Next
' If imprimirAqui Then Printer1.WriteString($"${laCat}${primerEspacio}${cuantos}..$${monto} ${CRLF}"$)
' cs.Color(Colors.DarkGray).Append($"${laCat}${primerEspacio}${cuantos}..$${monto} ${CRLF}"$).pop
' Log($"${laCat}${primerEspacio}${cuantos}..$${monto} ${CRLF}"$)
' Next
Private totAlimentos As String = "0"
Private totBebidas As String = "0"
Private cuantosAlimentos As String = "0"
Private cuantosBebidas As String = "0"
Private laCat, laCatAnt As String = ""
Private cuantos As String = 0
' Private grps As ResultSet = Starter.skmt.ExecQuery($"select distinct PE_MESA, PE_PRONOMBRE, PE_TIPO, ifnull(PE_DESC,0) as PE_DESC,PE_COSTO_TOT, PE_CANT, CAT_GP_TIPO, CAT_GP_TIPO2, CAT_GP_ORDEN_GRUPOS from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' and PE_TIPO <> 'MULTI-TICKET' and pe_ticket <> 'null' and PE_PROID not like 'CDA%' and PE_PROID not like 'DESC%' order by CAT_GP_ORDEN_GRUPOS, PE_PRONOMBRE"$)
Private grps As ResultSet = Starter.skmt.ExecQuery($"Select PE_MESA, PE_TICKET, PE_TIPO, PE_TIPO2, ifnull(PE_DESC,0) as PE_DESC, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, CAT_GP_TIPO, CAT_GP_TIPO2, PE_ORIGEN, CAT_GP_ORDEN_GRUPOS from PEDIDO join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' and PE_ORIGEN Is Null order by CAT_GP_ORDEN_GRUPOS, PE_PRONOMBRE"$)
Private elProd, prodAnt As String
Private grpsCant As String = "0"
Private grpsProdCant As String = "0"
Private grpsCantAnt As String = "0"
Private grpsMonto As String = "0"
Private grpsProdMonto As String = "0"
Private grpsMontoAnt As String = "0"
Private mProds As Map '= CreateMap("prod":"", "info":"")
Private mGrupos As Map
mProds.Initialize
mGrupos.Initialize
Private desc As String = "0"
Private st As String = "0"
Do While grps.NextRow
Private laCat As String = grps.GetString("CAT_GP_TIPO2")
' If laCat <> laCatAnt Then
' Log("** " & laCat & " **")
' End If
Private n2() As String = Regex.Split("\$", grps.GetString("PE_PRONOMBRE"))
' Private m As Map = CreateMap("prod":"", "grupo":"", "cant":"","monto":"")
If grps.GetString("PE_PRONOMBRE") <> prodAnt Then
grpsProdCant = 0
grpsProdMonto = 0
End If
' Log(">>>>> " & n2(0))
elProd = grps.GetString("PE_PRONOMBRE")
grpsProdCant = grpsProdCant + grps.GetString("PE_CANT")
' Private elMonto2 As String = grps.GetString("PE_COSTO_TOT")
' Log("################ |" & grps.GetString("CAT_GP_TIPO2") & "| - " & grps.GetString("PE_DESC"))
' If elProd.StartsWith("MED") Then Log("MEDIAS - " & elProd)
desc = "0"
If grps.GetString("CAT_GP_TIPO2") = "ALIMENTOS" And grps.GetString("PE_DESC") > 0 Then
' elMonto2 = elMonto2 - ((grps.GetString("PE_DESC")/100) * elMonto2)
desc = grps.GetString("PE_DESC") / 100
' Log("Hacemos descuento: " & elMonto2)
End If
Private elSubTIndividual As String = grps.GetString("PE_COSTOU") - (grps.GetString("PE_COSTOU") * desc)
Private st2 As String = Ceil(elSubTIndividual) * grps.GetString("PE_CANT")
' st = st + st2
' Log($"${elProd}|${elMonto2}|${st}|${st2}"$)
grpsProdMonto = grpsProdMonto + st2 'Ceil(elMonto2)
Private m As Map = CreateMap("prod":elProd, "grupo":laCat, "cant":grpsProdCant,"monto":grpsProdMonto)
mProds.Put(elProd, m)
prodAnt = grps.GetString("PE_PRONOMBRE")
laCatAnt = laCat
Loop
' Log(mProds.Size)
laCat = ""
Private grpsMontoTotal As String
Private grpsCantTotal As String
Private totMontoAlimentos As String = "0"
Private totCantAlimentos As String = "0"
Private totMontoBebidas As String = "0"
Private totCantBebidas As String = "0"
For Each elProd2 As String In mProds.keys
' Log(elProd2)
Private tm As Map = mProds.Get(elProd2)
' Log(tm)
Private elNom As String = tm.Get("prod")
Private n3() As String = Regex.Split("\$", tm.Get("prod"))
If n3.Length > 1 Then elNom = n3(0)
' Log($"${tm.Get("grupo")}, ${elNom}, ${tm.Get("cant")}, ${tm.Get("monto")}"$)
If tm.Get("grupo") <> laCatAnt Then
If grpsCant > 0 Or grpsMonto > 0 Then 'Imprimimos el total de cantidad y monto del grupo.
Private primerEspacioLargo As Int = 30 - laCatAnt.Length - (grpsCant.Length + 1) - 6
Private primerEspacio As String = ""
For n = 1 To primerEspacioLargo
primerEspacio = primerEspacio & "."
Next
' Log($"${grpsCant}, ${grpsMonto}, |${tm.Get("grupo")}|"$)
If laCatAnt = "ALIMENTOS" Then
totMontoAlimentos = totMontoAlimentos + Ceil(grpsMonto)
totCantAlimentos = totCantAlimentos + grpsCant
Else
totMontoBebidas = totMontoBebidas + Ceil(grpsMonto)
totCantBebidas = totCantBebidas + grpsCant
End If
If Subs.revisaEfectivoBorrado And laCatAnt = "ALIMENTOS" Then ' Agregamos el efectivo descontado al monto de los alimentos.
Log("=========== TERMINA ALIMENTOS")
Private descs As ResultSet = Starter.skmt.ExecQuery($"select distinct pe_mesa, pe_costo_tot, pe_cant from pedido where pe_proid = 'DESC01'"$)
Private descsMonto As String = "0"
Private descsCant As String = "0"
Do While descs.NextRow
descsMonto = descsMonto + descs.GetString("PE_COSTO_TOT")
descsCant = descsCant + descs.GetString("PE_CANT")
Loop
grpsMonto = grpsMonto + descsMonto
grpsCant = grpsCant + descsCant
cs.Color(Colors.DarkGray).Append($"ALIMENTOS VARIOS ${primerEspacio.SubString(primerEspacio.Length/3)}${descsCant} ... ${descsMonto} ${CRLF}"$).pop
Log($" ALIMENTOS VARIOS${primerEspacio}${descsCant} ... ${descsMonto} ${CRLF}"$)
End If
If imprimirAqui Then Printer1.WriteString($"Total ${laCatAnt}${primerEspacio}${grpsCant} .. $${NumberFormat2(grpsMonto, 1, 0, 0, True)} ${CRLF}"$)
Log($" Total ${laCatAnt}: .......... "$ & grpsCant & " ..... " & NumberFormat2(grpsMonto, 1, 0, 0, True))
cs.Color(Colors.DarkGray).Append($"Total ${laCatAnt}${primerEspacio.SubString(primerEspacio.Length/3)}${grpsCant} ... $${NumberFormat2(grpsMonto, 1, 0, 0, True)} ${CRLF}"$).pop
End If
grpsCant = 0
grpsMonto = 0
' Log($"** ${tm.Get("grupo")} **"$)
If imprimirAqui Then Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString("** " & tm.Get("grupo") & " **" & CRLF)
If imprimirAqui Then Printer1.WriteString(Printer1.NOBOLD)
cs.Color(Colors.DarkGray).Bold.Append("** " & tm.Get("grupo") & " **" & CRLF).pop
Log("** " & tm.Get("grupo") & " **")
End If
Private primerEspacioLargo As Int = 45 - elNom.Length - (tm.Get("cant").As(String).Length + 1) - 8
' Private primerEspacioLargo As Int = 30 - elNom.Length - (tm.Get("cant").As(String).Length + 1) - 8 'Para impresora vieja.
Private primerEspacio As String = ""
For n = 1 To primerEspacioLargo
primerEspacio = primerEspacio & "."
Next
' Log($"${primerEspacioLargo} - ${primerEspacio.Length}"$)
If imprimirAqui Then Printer1.WriteString($"${elNom}${primerEspacio}${tm.Get("cant")} ... $${NumberFormat2(tm.Get("monto"),1,0,0,True)} ${CRLF}"$)
' Private cuantos As String = rsm.GetString("cuantos")
' Private primerEspacioLargo As Int = 30 - laCat.Length - (cuantos.Length + 1) - 6
' Private primerEspacio As String = ""
' For n = 1 To primerEspacioLargo
' primerEspacio = primerEspacio & "."
' Next
' If imprimirAqui Then Printer1.WriteString($"${laCat}${primerEspacio}${cuantos}..$${monto} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"${elNom}${primerEspacio.SubString(primerEspacio.Length/3)}${tm.Get("cant")} ... ${tm.Get("monto")} ${CRLF}"$).pop
Log($" ${elNom}${primerEspacio}${tm.Get("cant")} ... ${tm.Get("monto")} ${CRLF}"$)
' Log($" ${tm.Get("prod")}, ${tm.Get("cant")}, ${tm.Get("monto")}"$)
grpsCant = grpsCant + tm.Get("cant")
grpsMonto = grpsMonto + Ceil(tm.Get("monto"))
laCatAnt = tm.Get("grupo")
Next
totMontoBebidas = totMontoBebidas + grpsMonto
totCantBebidas = totCantBebidas + grpsCant
If imprimirAqui Then Printer1.WriteString($"${laCatAnt}${primerEspacio}${grpsCant} .. $${grpsMonto} ${CRLF}"$)
Log($"${laCatAnt}: .......... "$ & grpsCant & " ..... " & NumberFormat2(grpsMonto, 1, 0, 0, True))
cs.Color(Colors.DarkGray).Append($"${laCatAnt}${primerEspacio}${grpsCant}.. $${NumberFormat2(grpsMonto, 1, 0, 0, True)} ${CRLF}"$).pop
' Log(grpsCant & "|" & grpsMonto)
'COMENSALES
LogColor("sleeping ....", Colors.Magenta)
If imprimirAqui Then Sleep(3000)
Private coms As Cursor = Starter.skmt.ExecQuery($"select sum(PT_COMENSALES) as totComensales from PEDIDO_TICKET where ifnull(PT_ALMACEN,0) <> 'MULTI-TICKET'"$)
Private totalComensales As Int = 0
If coms.RowCount > 0 Then
coms.Position = 0
totalComensales = coms.GetInt("totComensales")
End If
If imprimirAqui Then Printer1.WriteString($"Comensales ...........${totalComensales} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"Comensales ..........${totalComensales} ${CRLF}"$).pop
Log($"Comensales ...........${totalComensales} ${CRLF}"$)
'PAGOS
LogColor("sleeping ....", Colors.Magenta)
If imprimirAqui Then Sleep(1000)
Private pgs As Cursor = Starter.skmt.ExecQuery($"Select PT_PAGO2, sum(PT_NOART) As arts, sum(PT_MONTO) As monto from PEDIDO_TICKET where pt_pago <> 'MULTI-TICKET' and pt_pago <> 'VENTA' group by PT_PAGO2"$)
Private totalComensales As Int = 0
If imprimirAqui Then Printer1.WriteString($"${CRLF}"$)
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** PAGOS SIN PROPINAS *** ${CRLF}"$)
Printer1.WriteString(Printer1.NOBOLD)
cs.Color(Colors.red).Append($"** PAGOS SIN PROPINAS **${CRLF}"$).pop
Log("*** PAGOS SIN PROPINAS ***")
Private totalPagos As String = 0
For i = 0 To pgs.RowCount - 1
pgs.Position = i
Private elPago As String = pgs.GetString("PT_PAGO2")
If elPago.Length > 20 Then elPago = elPago.SubString2(0, 20)
' Log($"${pgs.Position} - ${elPago.Length} - ${elPago}"$)
Private monto As String = pgs.GetString("monto")
Private cuantos As String = pgs.GetString("arts")
Private primerEspacioLargo As Int = 30 - elPago.Length - (cuantos.Length + 1) - 6
Private primerEspacio As String = ""
For n = 1 To primerEspacioLargo
primerEspacio = primerEspacio & "."
Next
' monto = NumberFormat2(monto.As(Double), 1, 0, 0, True)
' Log(monto)
' Aqui se sacan las PROPINAS para sumarselas a los subtotals de cada pago.
' Private propAmex = "0", propMifel = "0", propMifelDebito = "0", propEfectivo = "0" As String
' Private rt As ResultSet = Starter.skmt.ExecQuery($"Select sum(pt_monto) as ptMonto, sum(pt_propina) as ptPropina, * from pedido_ticket where pt_pago <> 'VENTA' and PT_PAGO <> 'MULTI-TICKET' group by pt_pago2"$)
' Private rtpa As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Amex' group by pt_pago_propina"$)
' Do While rtpa.NextRow
' propAmex = rtpa.GetString("ptPropina")
' Loop
' Private rtpmc As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Visa/Mastercard Credito' group by pt_pago_propina"$)
' Do While rtpmc.NextRow
' propMifel = rtpmc.GetString("ptPropina")
' Loop
' Private rtpmd As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Visa/Mastercard Debito' group by pt_pago_propina"$)
' Do While rtpmd.NextRow
' propMifelDebito = rtpmd.GetString("ptPropina")
' Loop
' Private rtpe As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Efectivo' group by pt_pago_propina"$)
' Do While rtpe.NextRow
' propEfectivo = rtpe.GetString("ptPropina")
' Loop
' If elPago = "Amex" Then
' Log("ES AMEX")
' monto = monto + propAmex
' else If elPago = "Visa/Masercard Cedito" Then
' monto = monto + propMifel
' Log("ES MIFEL")
' End If
' Log($"########## ${elPago}, ${monto}, ${propAmex}, ${propMifel} "$)
Log(elPago)
If elPago = "Amex" Then elPago = "Amex"
If imprimirAqui Then Printer1.WriteString($"${elPago}${primerEspacio}.. $${NumberFormat2(pgs.GetString("monto"), 1, 0, 0, True)} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"${elPago}${primerEspacio}.. $${NumberFormat2(pgs.GetString("monto"), 1, 0, 0, True)} ${CRLF}"$).pop
Log($"${elPago}${primerEspacio}.. $${NumberFormat2(pgs.GetString("monto"), 1, 0, 0, True)} ${CRLF}"$)
totalPagos = totalPagos + monto
Next
totalPagos = NumberFormat2(totalPagos, 1, 0, 0, True)
If imprimirAqui Then Printer1.WriteString($"TOTAL PAGOS ........... $${totalPagos} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"TOTAL PAGOS: ........... ${totalPagos} ${CRLF}"$).pop
Log($"TOTAL PAGOS: .........${i}.. ${totalPagos} ${CRLF}"$)
'PROPINAS
LogColor("sleeping ....", Colors.Magenta)
If imprimirAqui Then Sleep(1000)
Private prop As ResultSet = Starter.skmt.ExecQuery($"Select PT_PAGO_PROPINA, sum(PT_PROPINA) As PROPINA from PEDIDO_TICKET where pt_pago <> 'MULTI-TICKET' group by PT_PAGO_PROPINA"$)
If imprimirAqui Then Printer1.WriteString(CRLF)
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** PROPINAS *** ${CRLF}"$)
Printer1.WriteString(Printer1.NOBOLD)
cs.Append(CRLF)
cs.Color(Colors.red).Append($"** PROPINAS **${CRLF}"$).pop
Log("*** PROPINAS ***")
Do While prop.NextRow
If prop.GetString("PT_PAGO_PROPINA") <> Null Then
Private laPropina As String = prop.GetString("PROPINA")
If imprimirAqui Then Printer1.WriteString($"${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 2, 2, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} ${CRLF}"$)
' Log(prop.GetString("PT_PAGO_PROPINA"))
cs.Color(Colors.DarkGray).Append($"${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 2, 2, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} ${CRLF}"$).pop
Log($" ${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 2, 2, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} "$)
End If
Loop
' LogColor($">>>>>>> ${Ceil(25.2)}"$, Colors.red)
' LogColor($">>>>>>> ${Ceil(25.5)}"$, Colors.red)
' Efectivo...............$300.00
' Tarjeta................$910.00
' If imprimirAqui Then Printer1.WriteString($"${CRLF}${CRLF}${CRLF}"$)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
End If
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
Subs.panelVisible(p_transparenteResumen, 0, 0)
' Else
' ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
' End If
If imprimirAqui Then Sleep(1000)
Printer1.DisConnect
Catch
ToastMessageShow("Error en la impresion 2.", True)
Printer1.Disconnect
' B4XPages.ShowPage("Principal")
Activity_Resume
End Try
If imprimirAqui Then Sleep(1000)
b_imp2.Enabled = True
ProgressDialogHide
End Sub
Sub b_imp3_Click
Private imprimirAqui As Boolean = Starter.imprimirTicket
Private sDate, sTime As String
Private c As Cursor
sv_resumen.Panel.Height = p_resumen.Height
cs.Initialize
Private l_total, la_cuenta As Label
l_total.Initialize("l")
la_cuenta.Initialize("2")
b_imp2.Enabled = False
ProgressDialogShow("Imprimiendo, un momento ...")
If imprimirAqui Then
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
If Starter.logger Then Log("conectando 1")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada)
Sleep(1000)
cont = cont + 1
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
Else
If Starter.logger Then Log("conectando 2")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
If cont = 2 Then Printer1.Connect
If cont > 4 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
End If
Printer1.Reset
End If
' If imprimirAqui Then Printer1.WriteString(Printer1.UNREVERSE)
Try
DateTime.DateFormat = "yyyymmdd"
sDate = DateTime.Date(DateTime.Now)
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString("LA LANTERNA RISTORANTE" & CRLF)
Printer1.WriteString(Printer1.NOBOLD)
DateTime.DateFormat = "dd/MM/yyyy"
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
'RESUMEN
Private rsm As Cursor = Starter.skmt.ExecQuery($"select distinct CAT_GP_CLASIF, sum(pe_cant) as cuantos, sum(pe_costo_tot) as monto from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID group by CAT_GP_CLASIF order by CAT_GP_CLASIF"$) 'Este query quita los "Consumo de alimentos", que son los tickets que se generan con el multi-ticket, porque en CAT_GUNAPROD no existe el ID CDA01.
' Log(rsm.RowCount)
If rsm.RowCount > 0 Then
'PROPINAS
Private prop As ResultSet = Starter.skmt.ExecQuery($"Select PT_PAGO_PROPINA, sum(PT_PROPINA) As PROPINA from PEDIDO_TICKET where pt_pago <> 'MULTI-TICKET' group by PT_PAGO_PROPINA"$)
If imprimirAqui Then Printer1.WriteString(CRLF)
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** PROPINAS *** ${CRLF}"$)
Printer1.WriteString(Printer1.NOBOLD)
cs.Append(CRLF)
cs.Color(Colors.red).Append($"** PROPINAS **${CRLF}"$).pop
Log("*** PROPINAS ***")
Private tot As String = 0
Do While prop.NextRow
If prop.GetString("PT_PAGO_PROPINA") <> Null Then
Private laPropina As String = prop.GetString("PROPINA")
If imprimirAqui Then Printer1.WriteString($"${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 2, 2, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} ${CRLF}"$)
' Log(prop.GetString("PT_PAGO_PROPINA"))
cs.Color(Colors.DarkGray).Append($"${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 2, 2, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} ${CRLF}"$).pop
Log($" ${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 2, 2, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} "$)
tot = tot + laPropina
End If
Loop
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString($"Total:${Subs.alineaDerecha("$"&NumberFormat2(tot, 1, 2, 2, True), (30 - 6), ".")} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"Total:${Subs.alineaDerecha("$"&NumberFormat2(tot, 1, 2, 2, True), (30 - 6), ".")} ${CRLF}"$).pop
Log($"Total: ${tot}"$)
' LogColor($">>>>>>> ${Ceil(25.2)}"$, Colors.red)
' LogColor($">>>>>>> ${Ceil(25.5)}"$, Colors.red)
' Efectivo...............$300.00
' Tarjeta................$910.00
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
End If
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
Subs.panelVisible(p_transparenteResumen, 0, 0)
' Else
' ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
' End If
Sleep(1000)
Printer1.DisConnect
Catch
ToastMessageShow("Error en la impresion 3.", True)
Printer1.Disconnect
' B4XPages.ShowPage("Principal")
Activity_Resume
End Try
Sleep(1000)
b_imp2.Enabled = True
ProgressDialogHide
End Sub
Sub b_impAB_Click
Private imprimirAqui As Boolean = Starter.imprimirTicket
Private sDate, sTime As String
Private montoAmex = "0", montoMifel = "0", montoEfectivo = "0" As String
Private c As Cursor
sv_resumen.Panel.Height = p_resumen.Height
cs.Initialize
Private l_total, la_cuenta As Label
l_total.Initialize("l")
la_cuenta.Initialize("2")
b_imp.Enabled = False
ProgressDialogShow("Imprimiendo, un momento ...")
If imprimirAqui Then
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
If Starter.logger Then Log("conectando 1")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada)
Sleep(1000)
cont = cont + 1
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
Else
If Starter.logger Then Log("conectando 2")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
If cont = 2 Then Printer1.Connect
If cont > 4 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
End If
Printer1.Reset
End If
' If imprimirAqui Then
' Printer1.DisConnect
' If Not(Printer1.IsConnected) Then
' If Starter.logger Then Log("conectando 1")
' Printer1.Connect
' Private cont As Int = 0
' Do While Not(impresoraConectada)
'' Sleep(1000)
' cont = cont + 1
' If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
' If cont > 15 Then impresoraConectada = True
' Loop
'' Sleep(500)
' impresoraConectada = False
' Else
' If Starter.logger Then Log("conectando 2")
' Printer1.Connect
' Private cont As Int = 0
' Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
'' Sleep(1000)
' cont = cont + 1
' If cont = 2 Then Printer1.Connect
' If cont > 4 Then impresoraConectada = True
' Loop
'' Sleep(500)
' impresoraConectada = False
' End If
' Printer1.Reset
' End If
DateTime.DateFormat = "yyyymmdd"
sDate = DateTime.Date(DateTime.Now)
If imprimirAqui Then Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString("LA LANTERNA RISTORANTE" & CRLF)
If imprimirAqui Then Printer1.WriteString(Printer1.NOBOLD)
DateTime.DateFormat = "dd/MM/yyyy"
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
Private tf As Cursor = Starter.skmt.ExecQuery($"select pe_fecha from pedido limit 1"$) ' Traemos la fecha del pedido.
If tf.RowCount > 0 Then
tf.Position = 0
Private laFecha() As String = Regex.Split(" ", tf.GetString("PE_FECHA")) 'Traemos la fecha del PEDIDO.
If imprimirAqui Then Printer1.WriteString($"Fecha: ${laFecha(0)} ${sTime} ${CRLF}${CRLF}"$)
cs.Color(Colors.red).Append($"Fecha: ${laFecha(0)} ${sTime}${CRLF}"$).pop
Log($"Fecha: ${laFecha(0)} ${sTime} ${CRLF}${CRLF}"$)
End If
Private c As Cursor = Starter.skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ESTATUS = 'ABIERTA'"$)
' Log(c.RowCount)
Try
'RESUMEN
' LogColor("sleeping ....", Colors.Magenta)
' If imprimirAqui Then Sleep(4000)
Private rsm As Cursor = Starter.skmt.ExecQuery($"select distinct CAT_GP_TIPO2, sum(pe_cant) as cuantos, sum(pe_costo_tot) as monto from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' and PE_TIPO <> 'MULTI-TICKET' and pe_ticket <> 'null' and PE_PROID not like 'CDA%' and PE_PROID not like 'DESC%' group by CAT_GP_TIPO2 order by CAT_GP_ORDEN_GRUPOS, CAT_GP_TIPO2"$) 'Este query quita los "Consumo de alimentos", que son los tickets que se generan con el multi-ticket, porque en CAT_GUNAPROD no existe el ID CDA01.
' Log(rsm.RowCount)
If rsm.RowCount > 0 Then
If imprimirAqui Then Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** RESUMEN *** ${CRLF}"$)
Log($"*** RESUMEN ***${CRLF}"$)
cs.Color(Colors.red).Append($"** RESUMEN **${CRLF}"$).pop
If imprimirAqui Then Printer1.WriteString(Printer1.NOBOLD)
Private totAlimentos As String = "0"
Private totBebidas As String = "0"
Private cuantosAlimentos As String = "0"
Private cuantosBebidas As String = "0"
Private laCat, laCatAnt As String = ""
Private cuantos As String = 0
' Private grps As ResultSet = Starter.skmt.ExecQuery($"select distinct PE_MESA, PE_PRONOMBRE, PE_TIPO, ifnull(PE_DESC,0) as PE_DESC,PE_COSTO_TOT, PE_CANT, CAT_GP_TIPO, CAT_GP_TIPO2, CAT_GP_ORDEN_GRUPOS from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' and PE_TIPO <> 'MULTI-TICKET' and pe_ticket <> 'null' and PE_PROID not like 'CDA%' and PE_PROID not like 'DESC%' order by CAT_GP_ORDEN_GRUPOS, PE_PRONOMBRE"$)
Private grps As ResultSet = Starter.skmt.ExecQuery($"Select PE_MESA, PE_TICKET, PE_TIPO, PE_TIPO2, ifnull(PE_DESC,0) as PE_DESC, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, CAT_GP_TIPO, CAT_GP_TIPO2, PE_ORIGEN, CAT_GP_ORDEN_GRUPOS from PEDIDO join CAT_GUNAPROD on cat_gp_id = PE_PROID where PE_TIPO <> 'VENTA' and PE_ORIGEN Is Null order by CAT_GP_ORDEN_GRUPOS, PE_PRONOMBRE"$)
Private elProd, prodAnt As String
Private grpsCant As String = "0"
Private grpsProdCant As String = "0"
Private grpsCantAnt As String = "0"
Private grpsMonto As String = "0"
Private grpsProdMonto As String = "0"
Private grpsMontoAnt As String = "0"
Private mProds As Map '= CreateMap("prod":"", "info":"")
Private mGrupos As Map
mProds.Initialize
mGrupos.Initialize
Private desc As String = "0"
Private st As String = "0"
Do While grps.NextRow
Private laCat As String = grps.GetString("CAT_GP_TIPO2")
' If laCat <> laCatAnt Then
' Log(laCat)
' End If
Private n2() As String = Regex.Split("\$", grps.GetString("PE_PRONOMBRE"))
' Private m As Map = CreateMap("prod":"", "grupo":"", "cant":"","monto":"")
If grps.GetString("PE_PRONOMBRE") <> prodAnt Then
grpsProdCant = 0
grpsProdMonto = 0
End If
' Log(">>>>> " & n2(0))
elProd = grps.GetString("PE_PRONOMBRE")
grpsProdCant = grpsProdCant + grps.GetString("PE_CANT")
' Private elMonto2 As String = grps.GetString("PE_COSTO_TOT")
desc = "0"
If grps.GetString("CAT_GP_TIPO2") = "ALIMENTOS" And grps.GetString("PE_DESC") > 0 Then
' elMonto2 = elMonto2 - ((grps.GetString("PE_DESC")/100) * elMonto2)
desc = grps.GetString("PE_DESC") / 100
' Log("Hacemos descuento: " & desc)
End If
Private elSubTIndividual As String = grps.GetString("PE_COSTOU") - (grps.GetString("PE_COSTOU") * desc)
Private st2 As String = Ceil(elSubTIndividual) * grps.GetString("PE_CANT")
' st = st + st2
' Log($"${elProd}|${elMonto2}|${st}|${st2}"$)
grpsProdMonto = grpsProdMonto + st2 'Ceil(elMonto2)
' Log($"laCat: ${laCat}, laCatAnt: ${laCatAnt}"$)
If Subs.revisaEfectivoBorrado And laCatAnt = "ALIMENTOS" And laCat <> "ALIMENTOS" Then ' Agregamos el efectivo descontado al monto de los alimentos.
' Log("=========== TERMINA ALIMENTOS")
Private descs As ResultSet = Starter.skmt.ExecQuery($"select distinct pe_mesa, pe_costo_tot, pe_cant from pedido where pe_proid = 'DESC01'"$)
Private descsMonto As String = "0"
Private descsCant As String = "0"
Do While descs.NextRow
descsMonto = descsMonto + descs.GetString("PE_COSTO_TOT")
descsCant = descsCant + descs.GetString("PE_CANT")
Loop
Private m As Map = CreateMap("prod":"ALIMENTOS VARIOS", "grupo":laCatAnt, "cant":descsCant,"monto":descsMonto)
mProds.Put("ALIMENTOS VARIOS", m)
' Log(m)
' grpsMonto = grpsMonto + descsMonto
' grpsCant = grpsCant + descsCant
' cs.Color(Colors.DarkGray).Append($"ALIMENTOS VARIOS ${primerEspacio.SubString(primerEspacio.Length/3)}${descsCant} ... ${descsMonto} ${CRLF}"$).pop
' Log($" ALIMENTOS VARIOS${primerEspacio}${descsCant} ... ${descsMonto} ${CRLF}"$)
End If
Private m As Map = CreateMap("prod":elProd, "grupo":laCat, "cant":grpsProdCant,"monto":grpsProdMonto)
mProds.Put(elProd, m)
' Log(m)
prodAnt = grps.GetString("PE_PRONOMBRE")
laCatAnt = laCat
Loop
' Log(mProds.Size)
laCat = ""
Private grpsMontoTotal As String
Private grpsCantTotal As String
Private totMontoAlimentos As String = "0"
Private totCantAlimentos As String = "0"
Private totMontoBebidas As String = "0"
Private totCantBebidas As String = "0"
For Each elProd2 As String In mProds.keys
' Log(elProd2)
Private tm As Map = mProds.Get(elProd2)
' Log(tm)
' Log($"${tm.Get("grupo")}, ${tm.Get("prod")}, ${tm.Get("cant")}, ${tm.Get("monto")}, ${totMontoAlimentos}, ${grpsMontoTotal}"$)
If tm.Get("grupo") <> laCatAnt Then
If grpsCant > 0 Or grpsMonto > 0 Then
Private primerEspacioLargo As Int = 30 - laCatAnt.Length - (grpsCant.Length + 1) - 6
Private primerEspacio As String = ""
For n = 1 To primerEspacioLargo
primerEspacio = primerEspacio & "."
Next
' Log($">>>>>> ${grpsCant}, ${grpsMonto}, ${totMontoAlimentos}, |${tm.Get("grupo")}|"$)
If laCatAnt = "ALIMENTOS" Then
totMontoAlimentos = totMontoAlimentos + Ceil(grpsMonto)
totCantAlimentos = totCantAlimentos + grpsCant
Else
totMontoBebidas = totMontoBebidas + Ceil(grpsMonto)
totCantBebidas = totCantBebidas + grpsCant
End If
If imprimirAqui Then Printer1.WriteString($"${laCatAnt}${primerEspacio}${grpsCant} .. $${NumberFormat2(grpsMonto, 1, 0, 0, True)} ${CRLF}"$)
Log($"${laCatAnt}: .......... "$ & grpsCant & " ..... $" & NumberFormat2(grpsMonto, 1, 0, 0, True))
' cs.Color(Colors.DarkGray).Append($"${laCatAnt}: .......... "$ & grpsCant & " ..... " & NumberFormat2(grpsMonto, 1, 0, 0, True) & CRLF).pop
cs.Color(Colors.DarkGray).Append($"${laCatAnt}${primerEspacio}${grpsCant} .. $${NumberFormat2(grpsMonto, 1, 0, 0, True)} ${CRLF}"$).pop
End If
grpsCant = 0
grpsMonto = 0
' Log($"** ${tm.Get("grupo")} **"$)
End If
' Log($" ${tm.Get("prod")}, ${tm.Get("cant")}, ${tm.Get("monto")}"$)
grpsCant = grpsCant + tm.Get("cant")
grpsMonto = grpsMonto + Ceil(tm.Get("monto"))
laCatAnt = tm.Get("grupo")
Next
totMontoBebidas = totMontoBebidas + grpsMonto
totCantBebidas = totCantBebidas + grpsCant
If imprimirAqui Then Printer1.WriteString($"${laCatAnt}${primerEspacio}${grpsCant} .. $${grpsMonto} ${CRLF}"$)
Log($"${laCatAnt}: .......... "$ & grpsCant & " ..... $" & NumberFormat2(grpsMonto, 1, 0, 0, True))
cs.Color(Colors.DarkGray).Append($"${laCatAnt}${primerEspacio}${grpsCant} .. $${NumberFormat2(grpsMonto, 1, 0, 0, True)} ${CRLF}"$).pop
' Log(grpsCant & "|" & grpsMonto)
'COMENSALES
' If imprimirAqui Then Sleep(3000)
Private coms As Cursor = Starter.skmt.ExecQuery($"select sum(PT_COMENSALES) as totComensales from PEDIDO_TICKET where ifnull(PT_ALMACEN,0) <> 'MULTI-TICKET'"$)
Private totalComensales As Int = 0
If coms.RowCount > 0 Then
coms.Position = 0
totalComensales = coms.GetInt("totComensales")
End If
If imprimirAqui Then Printer1.WriteString($"Comensales ...........${totalComensales} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"Comensales ..........${totalComensales} ${CRLF}"$).pop
Log($"Comensales ..........${totalComensales} ${CRLF}"$)
'TOTAL ALIMENTOS Y BEBIDAS
Log("*** TOTAL CONSUMO ***")
Log($"TOTAL ALIMENTOS: $${NumberFormat2(totMontoAlimentos, 1, 0, 0, True)}"$)
Log($"TOTAL BEBIDAS: $${NumberFormat2(totMontoBebidas,1,0,0,True)}"$)
If imprimirAqui Then Printer1.WriteString($"${CRLF}"$)
Private primerEspacioLargo As Int = 30 - laCat.Length - (cuantos.Length + 1) - 6
Private primerEspacio As String = ""
For n = 1 To primerEspacioLargo
primerEspacio = primerEspacio & "."
Next
Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** TOTAL CONSUMO *** ${CRLF}"$)
Printer1.WriteString(Printer1.NOBOLD)
If imprimirAqui Then Printer1.WriteString($"TOTAL ALIMENTOS ....... ${totCantAlimentos} ${Subs.alineaDerecha("$"&NumberFormat2(totMontoAlimentos,1,0,0,True), 35 - $"TOTAL ALIMENTOS ....... ${totCantAlimentos}"$.Length, ".")} ${CRLF}"$)
If imprimirAqui Then Printer1.WriteString($"TOTAL BEBIDAS ......... ${totCantBebidas} ${Subs.alineaDerecha("$"&NumberFormat2(totMontoBebidas,1,0,0,True), 35 - $"TOTAL BEBIDAS ......... ${totCantBebidas}"$.Length, ".")} ${CRLF}"$)
If imprimirAqui Then Printer1.WriteString($"TOTAL ${Subs.alineaDerecha("$"&NumberFormat2((totMontoAlimentos+totMontoBebidas),1,0,0,True), 35 - "TOTAL ".Length, ".")} ${CRLF}"$)
' If imprimirAqui Then Printer1.WriteString($"${CRLF}"$)
cs.Append($"${CRLF}"$)
cs.Color(Colors.red).Append($"*** TOTAL DE CONSUMOS ***${CRLF}"$).pop
cs.Color(Colors.DarkGray).Append($"TOTAL ALIMENTOS $${Subs.alineaDerecha("$"&NumberFormat2(totMontoAlimentos, 1, 0, 0, True), 45 - "TOTAL ALIMENTOS".Length, ".")} ${CRLF}"$).pop
cs.Color(Colors.DarkGray).Append($"TOTAL BEBIDAS $${Subs.alineaDerecha("$"&NumberFormat2(totMontoBebidas, 1, 0, 0, True), 45 - "TOTAL BEBIDAS".Length, ".")} ${CRLF}"$).pop
cs.Color(Colors.DarkGray).Append($"TOTAL: $${Subs.alineaDerecha("$"&NumberFormat2(totMontoAlimentos+totMontoBebidas,1,0,0,True), 45 - "TOTAL BEBIDAS".Length, ".")} ${CRLF}"$).pop
' cs.Append($"${CRLF}"$)
Log($"TOTAL ALIMENTOS ........... $${NumberFormat2(totMontoAlimentos, 1, 0, 0, True)} ${CRLF}"$)
Log($"TOTAL BEBIDAS ........... $${NumberFormat2(totMontoBebidas, 1, 0, 0, True)} ${CRLF}"$)
Log($"TOTAL: $${Subs.alineaDerecha("$"&NumberFormat2(totMontoAlimentos+totMontoBebidas,1,0,0,True), 45 - "TOTAL BEBIDAS".Length, ".")} ${CRLF}"$)
'PROPINAS
' If imprimirAqui Then Sleep(1000)
Private prop As ResultSet = Starter.skmt.ExecQuery($"Select PT_PAGO_PROPINA, sum(PT_PROPINA) As PROPINA from PEDIDO_TICKET where pt_pago <> 'MULTI-TICKET' group by PT_PAGO_PROPINA
order by CASE PT_PAGO_PROPINA
WHEN 'Amex' THEN 0
WHEN 'Mifel' THEN 1
WHEN 'Efectivo' THEN 2
END"$)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** PROPINAS *** ${CRLF}"$)
If imprimirAqui Then Printer1.WriteString(Printer1.NOBOLD)
cs.Append(CRLF)
cs.Color(Colors.red).Append($"** PROPINAS **${CRLF}"$).pop
Log("*** PROPINAS ***")
Private totPropinas As String = "0"
Do While prop.NextRow
If prop.GetString("PT_PAGO_PROPINA") <> Null Then
Private laPropina As String = prop.GetString("PROPINA")
If imprimirAqui Then Printer1.WriteString($"${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 0, 0, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} ${CRLF}"$)
' Log(prop.GetString("PT_PAGO_PROPINA"))
cs.Color(Colors.DarkGray).Append($"${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 0, 0, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} ${CRLF}"$).pop
Log($" ${prop.GetString("PT_PAGO_PROPINA")}${Subs.alineaDerecha("$"&NumberFormat2(laPropina, 1, 0, 0, True), (30 - prop.GetString("PT_PAGO_PROPINA").Length), ".")} "$)
totPropinas = totPropinas + laPropina
End If
Loop
'TOTAL PROPINAS
If imprimirAqui Then
Printer1.WriteString(Printer1.BOLD)
Printer1.WriteString($"Total: ${Subs.alineaDerecha("$"&NumberFormat2(totPropinas, 1, 2, 2, True), (30 - "Total: ".Length), ".")} ${CRLF}"$)
Printer1.WriteString(Printer1.NOBOLD)
End If
cs.Color(Colors.DarkGray).Append($"Total: ${Subs.alineaDerecha("$"&NumberFormat2(totPropinas, 1, 0, 0, True), (30 - "Total: ".Length), ".")} ${CRLF}"$).pop
Log($"Total: ${Subs.alineaDerecha("$"&NumberFormat2(totPropinas, 1, 0, 0, True), (30 - totPropinas.Length), ".")}${CRLF}"$)
'PAGOS
' If imprimirAqui Then Sleep(1000)
Private pgs As Cursor = Starter.skmt.ExecQuery($"Select PT_PAGO2, sum(PT_NOART) As arts, sum(PT_MONTO) As monto from PEDIDO_TICKET where pt_pago <> 'MULTI-TICKET' and pt_pago <> 'VENTA'
group by PT_PAGO2
order by CASE PT_PAGO_PROPINA
WHEN 'Amex' THEN 0
WHEN 'Mifel' THEN 1
WHEN 'Efectivo' THEN 2
END"$) ' and (CASE WHEN PT_PAGO = 'EFECTIVO' and PT_ALMACEN = 'MULTI-TICKET' THEN false ELSE true END) - El primer "case" es para que en el efectivo NO cuente los tickets multi-tickets, porque esos son "Consumo de alimentos".
Private totalComensales As Int = 0
If imprimirAqui Then Printer1.WriteString($"${CRLF}"$)
If imprimirAqui Then Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** PAGOS CON PROPINAS *** ${CRLF}"$)
If imprimirAqui Then Printer1.WriteString(Printer1.NOBOLD)
cs.Append(CRLF)
cs.Color(Colors.red).Append($"** PAGOS CON PROPINAS **${CRLF}"$).pop
Log("*** PAGOS CON PROPINAS ***")
Private totalPagos As String = 0
For i = 0 To pgs.RowCount - 1
pgs.Position = i
Private elPago As String = pgs.GetString("PT_PAGO2")
' Log($"|${elPago}|"$)
If elPago.Length > 20 Then elPago = elPago.SubString2(0, 20)
' Log($"${pgs.Position} - ${elPago.Length} - ${elPago}"$)
Private monto As String = pgs.GetString("monto")
Private cuantos As String = pgs.GetString("arts")
Private primerEspacioLargo As Int = 30 - elPago.Length - (cuantos.Length + 1) - 6
Private primerEspacio As String = ""
For n = 1 To primerEspacioLargo
primerEspacio = primerEspacio & "."
Next
' monto = NumberFormat2(monto.As(Double), 1, 0, 0, True)
' Log(">>> MONTO: " & monto)
' Aqui se sacan las PROPINAS para sumarselas a los subtotals de cada pago.
Private propAmex = "0", propMifel = "0", propMifelDebito = "0", propEfectivo = "0" As String
Private rt As ResultSet = Starter.skmt.ExecQuery($"Select sum(pt_monto) as ptMonto, sum(pt_propina) as ptPropina, * from pedido_ticket where pt_pago <> 'VENTA' and PT_PAGO <> 'MULTI-TICKET' group by pt_pago2"$)
Private rtpa As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Amex' group by pt_pago_propina"$)
Do While rtpa.NextRow
propAmex = rtpa.GetString("ptPropina")
Loop
Private rtpmc As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Mifel' group by pt_pago_propina"$)
Do While rtpmc.NextRow
propMifel = rtpmc.GetString("ptPropina")
Loop
' Private rtpmd As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Visa/Mastercard Debito' group by pt_pago_propina"$)
' Do While rtpmd.NextRow
' propMifelDebito = rtpmd.GetString("ptPropina")
' Loop
Private rtpe As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Efectivo' group by pt_pago_propina"$)
Do While rtpe.NextRow
propEfectivo = rtpe.GetString("ptPropina")
Loop
' Log($"PROPINA EFECTIVO: ${propEfectivo}"$)
If elPago = "Amex" Then
' Log("ES AMEX")
montoAmex = monto
monto = monto + propAmex
else If elPago = "Mifel" Then
' Log("ES MIFEL")
montoMifel = monto
monto = monto + propMifel
else If elPago = "Efectivo" Then
montoEfectivo = monto
monto = monto + propEfectivo
End If
' Log($"########## ${elPago}, ${monto}, ${propAmex}, ${propMifel} "$)
' Log($"${elPago} - ${monto}"$)
If elPago = "Amex" Then elPago = "Amex"
If imprimirAqui Then Printer1.WriteString($"${elPago}${primerEspacio}.. $${NumberFormat2(monto, 1, 0, 0, True)} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"${elPago}${primerEspacio}.. $${NumberFormat2(monto, 1, 0, 0, True)} ${CRLF}"$).pop
Log($"${elPago}${primerEspacio}.. $${NumberFormat2(monto, 1, 0, 0, True)} ${CRLF}"$)
totalPagos = totalPagos + monto
Next
totalPagos = NumberFormat2(totalPagos, 1, 0, 0, True)
If imprimirAqui Then Printer1.WriteString($"TOTAL PAGOS ........... $${totalPagos} ${CRLF}"$)
cs.Color(Colors.DarkGray).Append($"TOTAL PAGOS: ........... $${totalPagos} ${CRLF}"$).pop
Log($"TOTAL PAGOS: .........${i}.. $${totalPagos} ${CRLF}"$)
If Not(Subs.revisaEfectivoBorrado) Then ' Si es corte Z entonces no ponemos el Total sin propinas.
'TOTAL SIN PROPINAS
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(Printer1.BOLD)
If imprimirAqui Then Printer1.WriteString($"*** TOTAL SIN PROPINAS *** ${CRLF}"$)
If imprimirAqui Then Printer1.WriteString(Printer1.NOBOLD)
cs.Append(CRLF)
cs.Color(Colors.red).Append($"** TOTAL SIN PROPINAS **${CRLF}"$).pop
Log("*** TOTAL SIN PROPINAS ***")
If imprimirAqui Then
Printer1.WriteString($"Tarjetas: ${Subs.alineaDerecha("$"&NumberFormat2(montoAmex+montoMifel, 1, 0, 0, True), (30 - "Tarjetas: ".Length), ".")} ${CRLF}"$)
Printer1.WriteString($"Efectivo: ${Subs.alineaDerecha("$"&NumberFormat2(montoEfectivo, 1, 0, 0, True), (30 - "Efectivo: ".Length), ".")} ${CRLF}"$)
Printer1.WriteString($"Total: ${Subs.alineaDerecha("$"&NumberFormat2(montoAmex+montoMifel+montoEfectivo, 1, 0, 0, True), (30 - "Total: ".Length), ".")} ${CRLF}"$)
End If
cs.Color(Colors.DarkGray).Append($"Total Tarjetas: ${Subs.alineaDerecha("$"&NumberFormat2(montoAmex+montoMifel, 1, 0, 0, True), (30 - "Total Tarjetas: ".Length), ".")} ${CRLF}"$).pop
cs.Color(Colors.DarkGray).Append($"Total Efectivo: ${Subs.alineaDerecha("$"&NumberFormat2(montoEfectivo, 1, 0, 0, True), (30 - "Total Efectivo: ".Length), ".")} ${CRLF}"$).pop
cs.Color(Colors.DarkGray).Append($"Total: ${Subs.alineaDerecha("$"&NumberFormat2(montoAmex+montoMifel+montoEfectivo, 1, 0, 0, True), (30 - "Total: ".Length), ".")} ${CRLF}"$).pop
Log($"Tarjetas: ${Subs.alineaDerecha("$"&NumberFormat2(montoAmex+montoMifel, 1, 0, 0, True), (30 - "Tarjetas: ".Length), ".")} "$)
Log($"Efectivo: ${Subs.alineaDerecha("$"&NumberFormat2(montoEfectivo, 1, 0, 0, True), (30 - "Efectivo: ".Length), ".")} "$)
Log($"Total: ${Subs.alineaDerecha("$"&NumberFormat2(montoAmex+montoMifel+montoEfectivo, 1, 0, 0, True), (30 - "Total: ".Length), ".")} "$)
End If
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
If imprimirAqui Then Printer1.WriteString(CRLF)
End If
l_resumen.Text = cs
l_resumen.Height = su.MeasureMultilineTextHeight(l_resumen, l_resumen.Text)
sv_resumen.Panel.Height = l_resumen.Height
Subs.panelVisible(p_transparenteResumen, 0, 0)
' Else
' ToastMessageShow("¡Es necesario que NO haya mesas abiertas para realizar el cierre!", True)
' End If
' If imprimirAqui Then Sleep(1000)
If imprimirAqui Then Printer1.DisConnect
Catch
ToastMessageShow("Error en la impresion 2.", True)
Printer1.Disconnect
' B4XPages.ShowPage("Principal")
Activity_Resume
End Try
' If imprimirAqui Then Sleep(1000)
b_imp.Enabled = True
ProgressDialogHide
End Sub
Sub b_imp_VIEJO_Click
' Log("inicia B_IMP2_Click")
Private TAMANO As Int
Private ESPACIO As Int
Private BLANCO As String
Private c, s As Cursor
Private l_total, la_cuenta As Label
l_total.Initialize("l")
la_cuenta.Initialize("2")
b_imp.Enabled = False
' If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(la_cuenta.Text) 'Solo lo marcamos como impreso si tiene venta (total > 0).
ProgressDialogShow("Imprimiendo, un momento ...")
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
If Starter.logger Then Log("conectando 1")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada)
Sleep(1000)
cont = cont + 1
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
Else
If Starter.logger Then Log("conectando 2")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
If cont = 2 Then Printer1.Connect
If cont > 4 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
End If
' If Logger Then Log($"Impresora Conectada: ${Printer1.IsConnected}"$)
' If la_cuenta.Text <> "0" And la_cuenta.Text <> "null" Then
' Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ", Array As Object("VENTA"))
' Starter.skmt.ExecNonQuery("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO In (select cuenta from cuentaa)")''
' End If
' Guardar.Visible = True
' Starter.skmt.ExecNonQuery("delete from pedido3")
' Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ")
' c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_FOLIO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
' If c.RowCount > 0 Then
' For i = 0 To c.RowCount -1
' c.Position = i
' Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? AND PE_FOLIO = ?", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS"), c.GetString("PE_FOLIO")))
' Next
' End If
' Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
' Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
' c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
' c.Position =0
' perfil = c.GetString("CUANTOS")
' c.Close
' If perfil > 0 Then
' c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
' c.Position =0
' perfil = c.GetString("CAT_VA_VALOR")
' c.Close
' End If
' c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
' c.Position=0
Private usuario As String = "USUARIO"
DateTime.DateFormat = "dd/MM/yyyy"
Private sDate,sTime As String
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
' c.Close
' c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL"))
' c.Position = 0
Private sucursal As String = "SUCURSAL"
' c.Close
TAMANO = 0
ESPACIO = 14
BLANCO = " " 'esto para las impresoras nuevas
'printer.Initialize(cmp20.OutputStream)
Printer1.Reset
Dim bmp As Bitmap
bmp.InitializeResize(File.DirAssets, "logoLanter2.bmp", 376, 129, True) 'ignore
Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
myimage = Printer1.DitherImage2D(myimage, 128)
myimage= Printer1.PackImage(myimage)
Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
Printer1.WriteString(Printer1.REVERSE)
Printer1.PrintImage(myimage)
Printer1.WriteString(Printer1.UNREVERSE)
Try
DateTime.DateFormat = "yyyymmdd"
sDate=DateTime.Date(DateTime.Now)
Printer1.WriteString("LA LANTERNA RISTORANTE" & CRLF)
Printer1.WriteString("No. Ticket: " & Starter.ticketActual & CRLF)
DateTime.DateFormat = "dd/MM/yyyy"
sDate=DateTime.Date(DateTime.Now)
Printer1.WriteString(sDate &" " & sTime & CRLF)
Printer1.WriteString("Mesero:" & usuario & CRLF)
' Printer1.WriteString("Ruta:" & ruta_tienda & CRLF)
' Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF)
Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF)
' Printer1.WriteString("Calle: " & la_Calle.Text & CRLF)
' Printer1.WriteString("Colonia: " & la_col.Text & CRLF)
' Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
' Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
' Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
Printer1.WriteString(" " & CRLF)
s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DOE"))
s.Position = 0
Private sTotal2 As Double
Log(sTotal2)
LogColor(s.GetString("TOTAL"),Colors.Magenta)
If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then
sTotal2 = s.GetString("TOTAL")
' sTotal2 = Subs.sumaPedido(Subs.traeCliente)
Printer1.WriteString( $"Sub Total : $${NumberFormat2(sTotal2, 1, 2, 2, False)}"$ & CRLF)
Else
sTotal2 = 0
End If
Log(sTotal2)
Private cantidad1 As String = "0"
s.Close
''''SE MODIFCA EL QUERY POR LOS PEDIDOS DOE
S=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA","CAMBIO","DOE"))
Printer1.WriteString("------------------------------" & CRLF)
Printer1.WriteString("VENTA" & CRLF)
Printer1.WriteString("------------------------------" & CRLF)
''s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo <> ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO"))
If S.RowCount>0 Then
For i=0 To S.RowCount -1
S.Position=i
If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then
Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF)
Else
Private strT As String = ""
Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF)
Private strT As String = ""
strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT")
TAMANO = strT.Length
ESPACIO = ESPACIO - TAMANO
For E=0 To ESPACIO -1
BLANCO = " " & BLANCO
Next
Private pecostou As String = 0
If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU")
Private pecostotot As String = 0
If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT")
Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF)
TAMANO = 0
ESPACIO = 14
BLANCO = " "
End If
Next
End If
s.Close
s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO","DOE"))
s.Position = 0
Private sTotal2 As Double
' If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then
' sTotal2 = s.GetString("TOTAL")
' Else
' sTotal2 = 0
' End If
' sTotal2 = kh.traeTotalCliente
s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO"))
s.Position = 0
Private cant5 As String = s.GetString("CANTIDAD")
Private sTotal3 As Double
If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then
sTotal3 = s.GetString("TOTAL")
Else
sTotal3 = 0
End If
Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & $"Sub Total Venta: $${NumberFormat2((sTotal2+(sTotal3 * -1)), 1, 2, 2, False)}"$ & CRLF)
Private cantidad1 As String = "0"
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD")
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad1 & CRLF)
Printer1.WriteString(CRLF)
s.Close
' s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO"))
' s.Position = 0
' Private sTotal3 As Double
' If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then
' sTotal3 = s.GetString("TOTAL")
' Else
' sTotal3 = 0
' End If
' Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
' Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF)
' Private cantidad2 As String = "0"
' If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD")
' Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF)
' Printer1.WriteString(CRLF)
' s.Close
' Printer1.WriteString(CRLF)
s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA"))
s.Position =0
Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
Private total2 As String = 0
' If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total2 = s.GETSTRING("TOTAL")
' total2 = kh.traeTotalCliente
Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & NumberFormat2(total2, 1, 2, 2, False) & CRLF)
' Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & s.GetString("TOTAL") & CRLF)
' Printer1.WriteString("===============================" & CRLF)
'
' Printer1.WriteString( "Total venta: $" & s.GetString("TOTAL") & CRLF)
s.Close
s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA"))
s.Position =0
Private total5 As String = "0"
If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total5 = s.GetString("TOTAL")
Printer1.WriteString(Printer1.BOLD & "No. platillos vendidos: " & (total5) & CRLF)
' Printer1.WriteString(Printer1.BOLD & "Productos devueltos : " & cantidad2 & CRLF)
Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
' Printer1.WriteString( "No. Productos: " & s.GetString("TOTAL") & CRLF)
' Printer1.WriteString( "===============================" & CRLF)
s.Close
Printer1.WriteString(Printer1.UNREVERSE)
Printer1.WriteString(Printer1.NOBOLD)
' printer.WriteLine("------------VENTA-------------")
' printer.WriteLine("TOTAL COMPRA: $:" & total_cliente)
' Printer1.WriteString(Printer1.DEFAULTS & CRLF)
Printer1.WriteString(CRLF)
' Printer1.WriteString(Printer1.SINGLE)
'Printer1.WriteString("------------------------------")
' Printer1.WriteString(Printer1.HIGH)
' Printer1.Justify = 1
Printer1.WriteString( "Nombre y Firma del cliente" & CRLF)
Printer1.WriteString(CRLF)
Printer1.WriteString(CRLF)
Printer1.WriteString(CRLF)
' Printer1.WriteString(Printer1.DEFAULTS)
' Printer1.WriteString(Printer1.SINGLE)
Printer1.WriteString("__________" & CRLF)
Printer1.WriteString("------------------------------" & CRLF)
Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF)
Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF)
Printer1.WriteString("--------INFORMATIVO-----------" & CRLF)
Printer1.WriteString("------------------------------" & CRLF)
Printer1.WriteString(CRLF)
Printer1.WriteString(CRLF)
Printer1.WriteString(CRLF)
Sleep(1000)
Printer1.DisConnect
Catch
ToastMessageShow("Error en la impresion 2.", True)
Printer1.Disconnect
' B4XPages.ShowPage("Principal")
Activity_Resume
End Try
Sleep(1000)
b_imp.Enabled = True
ProgressDialogHide
' If Logger Then Log("Habilitamos boton")
End Sub
Private Sub b_envioInfo_Click
Private cmd As DBCommand
Log(Starter.DBReqServer)
' sql.insertPedido_Lanter=insert into Lanter.pedido (PE_CODPROMO, PE_FECHA_SINC, PE_IDALMACEN, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_COSTO_SIN, PE_DESCUENTO, PE_CANT_TOTAL, PE_VENTA_TOTAL, PE_FOLIO, PE_TIPO, PE_PERFIL)
' VALUES ((?),SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?))
' sql.insertPedidos_Lanter=insert into LANTER.pedido_cliente(PC_FECHA_SINC, PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO, PC_LON, PC_LAT, PC_IDALMACEN, PC_RUTA, PC_COSTO_SIN, PC_DESCUENTO, PC_FACTURA)
' VALUES (SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?))
Private cantTotal As Int
Private ventaTotal As Double
Private pt As Cursor = Starter.skmt.ExecQuery("select * from pedido_ticket")
If pt.RowCount > 0 Then
ProgressDialogShow("Enviando la información del día")
reqManager.trackInit
For j = 0 To pt.RowCount - 1
pt.Position = j
cmd.Initialize
cmd.Name = "insertPedidos3_Lanter" 'Inserta en tabla PEDIDO_CLIENTE
cmd.Parameters = Array As Object(pt.GetString("PT_TICKET"), pt.GetString("PT_FECHA"), 0, pt.GetString("PT_NOART"), pt.GetString("PT_MONTO"), 0, 0, pt.GetString("PT_MESA"), pt.GetString("PT_MESERO"), pt.GetString("PT_COSTO_SIN"), 0, pt.GetString("PT_FACTURA"), pt.GetString("PT_PAGO"), pt.GetString("PT_TARJETA"), pt.GetString("PT_PROPINA"), pt.GetString("PT_PAGO_PROPINA"), pt.GetString("PT_ORIGEN"))
' Log($"${pt.GetString("PT_TICKET")}, ${pt.GetString("PT_FECHA")}, 0, ${pt.GetString("PT_NOART")}, ${pt.GetString("PT_MONTO")}, 0, 0, ${pt.GetString("PT_MESA")}, ${pt.GetString("PT_MESERO")}, ${pt.GetString("PT_COSTO_SIN")}, 0, ${pt.GetString("PT_PROPINA")}, ${pt.GetString("PT_PAGO_PROPINA")}"$)
reqManager.ExecuteCommand(cmd , $"insertPedidos_${pt.GetString("PT_TICKET")}"$)
' LogColor($"insertPedidos_${pt.GetString("PT_TICKET")}"$, Colors.Red)
cantTotal = pt.GetString("PT_NOART")
ventaTotal = pt.GetString("PT_MONTO")
'De cada ticket, mandamos los productos
Private c As Cursor = Starter.skmt.ExecQuery($"select * from pedido where PE_MESA = '${pt.GetString("PT_MESA")}' and PE_TIPO = '${pt.GetString("PT_PAGO")}' and PE_TICKET = '${pt.GetString("PT_TICKET")}'"$)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.position = i
cmd.Initialize
cmd.Name = "insertPedido3_Lanter" 'Inserta en tabla PEDIDO
cmd.Parameters = Array As Object("", c.getstring("PE_MESA"), c.getstring("PE_COSTO_TOT"), c.getstring("PE_COSTOU"), c.getstring("PE_CANT"), c.getstring("PE_PRONOMBRE"), c.getstring("PE_PROID"), c.getstring("PE_TICKET"), c.getstring("PE_FECHA"), "", c.getstring("PE_MESERO"), c.getstring("PE_COSTO_SIN"), 0, cantTotal, ventaTotal, c.getstring("PE_FOLIO"), c.getstring("PE_TIPO"), "", c.getstring("PE_TIPO2"), c.GetString("PE_ORIGEN")) '
reqManager.ExecuteCommand(cmd , $"insertPedido_${c.GetString("PE_MESA")}_${c.GetString("PE_TIPO")}_${c.GetString("PE_TICKET")}_${c.GetString("PE_PROID")}"$)
' LogColor($"insertPedido_${c.GetString("PE_MESA")}_${c.GetString("PE_TIPO")}_${c.GetString("PE_TICKET")}_${c.GetString("PE_PROID")}"$, Colors.Blue)
' insert into LANTER.HIST_VENTAS_DETALLE (HVD_FOLIO_TICKET, HVD_CLIENTE, HVD_MESERO, HVD_PROID, HVD_PRONOMBRE, HVD_CANT, HVD_COSTOU, HVD_COSTO_TOT, HVD_FECHA, HVD_MESA, HVD_TIPO_PAGO, HVD_FECHA_CARGA) values ((?), (?), (?), (?), (?), (?), (?), (?), to_date((?),'MM/DD/YYYY HH24:MI:ss'), (?), sysdate, (?))
cmd.Initialize
cmd.Name = "insertHVD_Lanter" 'Inserta en tabla HVD
cmd.Parameters = Array As Object(c.getstring("PE_TICKET"), "", c.getstring("PE_MESERO"), c.getstring("PE_PROID"), c.getstring("PE_PRONOMBRE"), c.getstring("PE_CANT"), c.getstring("PE_COSTOU"), c.getstring("PE_COSTO_TOT"), c.getstring("PE_FECHA"), c.getstring("PE_MESA"), c.getstring("PE_TIPO2")) '
reqManager.ExecuteCommand(cmd , $"insertPedido_${c.GetString("PE_MESA")}_${c.GetString("PE_TIPO")}_${c.GetString("PE_TICKET")}_${c.GetString("PE_PROID")}"$)
'
Next
End If
' Log("##########################################")
Next
End If
End Sub
Sub JobDone(Job As HttpJob)
Log("JOBDONE PRINCIPAL")
reqManager.trackNext(Job)
If Not(Job.Success) Then
LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red)
reqManager.errorList.Add(Job.Tag)
Else
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
' If result.Tag = "traeGeoPass" Then 'query tag
' If result.Rows.Size = 0 Then MsgboxAsync("Contraseña equivocada, por favor intente de nuevo.", "ATENCION")
For Each records() As Object In result.Rows
For Each k As String In result.Columns.Keys
Log(k & ": " & records(result.Columns.Get(k)))
Next
Next
' End If
End If
End If
If reqManager.reqsList.Size = 0 Then ' Si ya se completo el envio, etonces borramos el efectivo!
ProgressDialogHide
p_transparenteResumen.Visible = False
Log("Llamamos BorrarEfectivo")
borrarEfectivo
llenaHistorial
Log(">>>>> ENVIO TERMINADO")
ToastMessageShow("¡Envío terminado!", False)
End If
If reqManager.errorList.Size > 0 Then Log(">>>>> ERRORES - " & reqManager.errorList)
Job.Release
End Sub
Sub borrarEfectivo
Log("Borramos el efectivo")
Starter.skmt.ExecNonQuery($"delete from PEDIDO where PE_TIPO = 'EFECTIVO'"$)
' Starter.skmt.ExecNonQuery($"delete from PEDIDO where PE_PROID = 'DESC01'"$)
Starter.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_PAGO = 'EFECTIVO'"$)
Starter.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_PAGO2 = 'Efectivo'"$)
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("EFECTIVO BORRADO"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("EFECTIVO BORRADO","1"))
End Sub
Private Sub b_regresarProds_Click
WobbleMenu1_Tab1Click
WobbleMenu1.SetCurrentTab(1)
End Sub
Sub imprimeTicket (ticket As String, pago As String) As ResumableSub
Starter.ticketActual = ticket
tipoPago = pago
b_imprimirTicket_Click
End Sub
Private Sub b_imprimirTicket_Click
p_transparenteDescuento.Visible = True
' p_leyendaDescuento.Visible = True
' p_leyendaDescuento.BringToFront
cb_leyendaDescuento.Checked = False
' If Not(Starter.ticketFactura) Then cb_leyendaDescuento.Checked = True
End Sub
Private Sub cb_pagoPropina_SelectedIndexChanged (Index As Int)
pagoPropina = cb_pagoPropina.SelectedItem
Log($"####### Cambiamos el pago de la propina a ${pagoPropina}"$)
End Sub
Private Sub p_transparenteCambioMesa_Click
'Para evitar que el clic en pantalla no se siga hacia atras
p_transparenteCambioMesa.Visible = False
End Sub
Private Sub p_transparenteDescuento_Click
'Para evitar que el clic en pantalla no se siga hacia atras
p_transparenteDescuento.Visible = False
End Sub
Private Sub l_prodX_LongClick
Log(Sender.As(Label).tag)
Private m As Map = Sender.As(Label).tag.As(Map)
Log(Sender.As(View).Parent.As(Panel).GetView(2).As(Panel).GetView(4).As(EditText).text)
'Sender.As(View).Parent.As(Panel) = p_prods
'Sender.As(View).Parent.As(Panel).GetView(2) = p_botMasMen
'Sender.As(View).Parent.As(Panel).GetView(2).As(Panel).GetView(4)
'Sender.As(View).Parent.As(Panel).GetView(2).As(Panel).GetView(4).As(EditText) = et_pCant
Private laCant As Int = Sender.As(View).Parent.As(Panel).GetView(2).As(Panel).GetView(4).As(EditText).text '
If m.Get("prod").As(String).Contains("Alimentos Varios") Or m.Get("prod").As(String).Contains("Bebidas Varias") Then
p_renombraVarios.BringToFront
et_nombreVariable.Text = m.Get("prod")
et_nombreVariable.tag = m
et_precioVariable.Text = m.Get("precio")
p_renombraVarios.Visible = True
Else
ToastMessageShow("Este artículo no es editable", False)
End If
End Sub
Private Sub b_renombraVarios_Click
p_renombraVarios.Visible = False
Private m As Map = et_nombreVariable.tag.As(Map)
' Private c As Cursor=Starter.skmt.ExecQuery($"select * from pedido where PE_PROID = '${m.Get("id")}' and PE_TICKET = '${Starter.ticketActual}' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA'"$)
' Log($"select * from pedido where PE_PROID = '${m.Get("id")}' and PE_TICKET = '${Starter.ticketActual}' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA'"$)
' If c.RowCount > 0 Then
' Starter.skmt.ExecNonQuery($"update PEDIDO set PE_PRONOMBRE = '${et_nombreVariable.text}', PE_COSTOU = '${et_precioVariable.text}' where PE_PROID = '${m.Get("id")}' and PE_TIPO = 'VENTA' and PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Log($"update PEDIDO set PE_PRONOMBRE = '${et_nombreVariable.text}', PE_COSTOU = '${et_precioVariable.text}' where PE_PROID = '${et_nombreVariable.tag}' and PE_TIPO = 'VENTA' and PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Else
Private cant As Int = m.Get("cant")
If cant = 0 Then cant = 1
Subs.actualizaProducto(et_precioVariable.text, cant, et_nombreVariable.Text, m.Get("id"), Starter.ticketActual, DateTime.Now, Starter.meseroActual, Starter.mesaActual, et_precioVariable.Text, "VENTA", Starter.comensalesActuales)
' End If
LlenaOrden
LlenaProdsLL(Null, Null)
End Sub
Private Sub p_transparentePago_Click
'Para evitar que el clic en pantalla no se siga hacia atras
p_transparentePago.Visible = False
End Sub
Private Sub b_agregarPago_Click
Starter.formasDePago = Starter.formasDePago + 1
' Log(Starter.formasDePago)
agregaFormaDePago(l_tipoPago.Left, (60 * (Starter.formasDePago - 1)), Starter.formasDePago, 60)
cb_pagoPropina.SelectedIndex = 0
pagoPropina = "Amex"
' cb_pago2.SelectedIndex = 0
End Sub
'Agrega una froma de pago al cerrar una mesa
Sub agregaFormaDePago(left0 As Int, top0 As Int, tag0 As Int, brinco As Int)
' Log("agregaFormaDePago |" & top0 & "|" & tag0)
p_opcionEfectivo.Visible = False
Private p_num As Panel
p_num.Initialize("")
p_num.LoadLayout("formaPago")
' Private x As B4XView = p_num
' x.SetColorAndBorder(Colors.gray, 3dip, Colors.Magenta, 0)
' x.Width = 800dip
' p_num = x
' p_num.Width = 700dip
' Log(p_formasDePago.Width & "|" & p_num.Width)
' If brinco < l_tipoPago2.Height Then
' Log($"${brinco}|${l_tipoPago2.Height}"$)
' top0 = (top0/brinco) * l_tipoPago2.Height
' brinco = l_tipoPago2.Height
' End If
' Log($"${brinco}|${l_tipoPago2.Height}"$)
If Starter.formasDePago > 1 Then
p_propina.Top = p_propina.Top + brinco
p_formasDePago.Height = p_formasDePago.Height + brinco
p_pago.Height = p_pago.Height + brinco
' p_botonesCerrar.Top = p_botonesCerrar.Top + brinco
b_pagoCerrar.Top = b_pagoCerrar.Top + brinco
End If
l_tipoPago2.Text = $"${Starter.formasDePago}:"$
cb_pago2.Tag = tag0
' cb_pago2.mBase.SetTextSizeAnimated(0, 14dip)
et_montoPago2.Tag = tag0
cb_pago2.SetItems(Array As String("Amex", "Mifel", "Efectivo"))
If Starter.ticketFactura Then cb_pago2.SetItems(Array As String("Amex", "Mifel"))
p_num.Tag = tag0
listaFormasDePagoCB.Add(cb_pago2)
listaFormaDePago.Add(cb_pago2.SelectedItem)
listaMontoDePago.Add(et_montoPago2)
p_formasDePago.AddView(p_num, left0, top0, p_formasDePago.Width, 40dip)
b_pagoCerrar.Enabled = False
If listaFormaDePago.Size > 1 Then l_faltaMonto.Visible = True
Try
et_montoPago2_TextChanged("","1")
' Log("PONEMOS LO QUE FALTA " & l_faltaMonto.Text)
Private f() As String = Regex.Split(" ", l_faltaMonto.Text)
If f.Length > 0 And f(0) = "FALTAN" Then
et_montoPago2.Text = f(1)
End If
Catch
Log(LastException)
End Try
End Sub
Private Sub cb_pago2_SelectedIndexChanged (Index As Int)
' Log(Sender.As(B4XComboBox).tag)
Log("|"&Sender.As(B4XComboBox).SelectedItem&"|")
listaFormaDePago.Set(Sender.As(B4XComboBox).tag - 1, Sender.As(B4XComboBox).SelectedItem)
If Sender.As(B4XComboBox).SelectedItem = "Amex" Then
cb_pagoPropina.SelectedIndex = 0
Else If Sender.As(B4XComboBox).SelectedItem = "Mifel" Then
cb_pagoPropina.SelectedIndex = 1
else If Sender.As(B4XComboBox).SelectedItem = "Efectivo" Then
cb_pagoPropina.SelectedIndex = 2
End If
If Sender.As(B4XComboBox).SelectedItem = "Efectivo" And listaFormaDePago.Size = 1 Then
Private c As Cursor = Starter.skmt.ExecQuery("select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DESCUENTO X EFECTIVO'")
c.Position = 0
l_opcionEfectivo.Text = $"${c.GetString("CAT_VA_VALOR")}% desc."$
p_opcionEfectivo.Visible = True
' cb_opcionEfectivo.Checked = False
Else
' Log(listaFormaDePago.Size)
p_opcionEfectivo.Visible = False
cb_opcionEfectivo.Checked = False
End If
pagoPropina = cb_pagoPropina.SelectedItem
' Log(listaFormaDePago)
Log($"****** Cambiamos el pago de la propina a ${pagoPropina}"$)
End Sub
Private Sub et_montoPago2_TextChanged (Old As String, New As String)
' Log("TEXT CHANGED")
' Log(Starter.totalActual)
subtotal = 0
Private enBlanco As Boolean = False
For i = 0 To listaMontoDePago.Size - 1
' Log(listaMontoDePago.Get(i).As(EditText).text)
If listaMontoDePago.Get(i).As(EditText).text <> "" Then
subtotal = subtotal + listaMontoDePago.Get(i).As(EditText).text
Else
enBlanco = True
End If
Next
' Log($"${Starter.totalActual} - ${subtotal} = ${Starter.totalActual - subtotal}"$)
' LogColor($"FALTAN ${Starter.totalActual - subtotal}"$, Colors.blue)
If listaMontoDePago.Size > 1 Then
l_faltaMonto.Visible = True
If subtotal < Starter.totalActual Then
' LogColor($"FALTAN ${Starter.totalActual - subtotal}"$, Colors.red)
l_faltaMonto.Text = $"FALTAN ${NumberFormat2((Starter.totalActual - subtotal), 1, 0, 0, False)}"$
else if subtotal > Starter.totalActual Then
' LogColor($"SOBRAN ${subtotal - Starter.totalActual}"$, Colors.red)
l_faltaMonto.Text = $"SOBRAN ${NumberFormat2((subtotal - Starter.totalActual), 1, 0, 0, False)}"$
Else
l_faltaMonto.Text = ""
End If
subtotal2 = subtotal
If et_propina.Text <> "" And IsNumber(et_propina.Text) Then
subtotal2 = subtotal + et_propina.text
End If
l_total2.text = subtotal2
End If
If listaMontoDePago.Size > 1 And (l_faltaMonto.Text <> "" Or enBlanco) Then
b_pagoCerrar.Enabled = False
Else
b_pagoCerrar.Enabled = True
End If
End Sub
Private Sub et_propina_TextChanged (Old As String, New As String)
subtotal2 = subtotal
If New <> "" And IsNumber(New) Then subtotal2 = subtotal + New
l_total2.text = subtotal2
End Sub
Private Sub et_montoPago2_FocusChanged (HasFocus As Boolean)
' Log("FOCUS CHANGED")
' Log(Starter.totalActual)
If HasFocus Then
' Log("PONEMOS EN BLANCO")
et_montoPago2.Text = ""
Sleep(200)
End If
Private subtotal As String = 0
Private enBlanco As Boolean = False
For i = 0 To listaMontoDePago.Size - 1
' Log(listaMontoDePago.Get(i).As(EditText).text)
If listaMontoDePago.Get(i).As(EditText).text <> "" Then
subtotal = subtotal + listaMontoDePago.Get(i).As(EditText).text
Else
enBlanco = True
End If
Next
' LogColor($"FALTAN ${Starter.totalActual - subtotal}"$, Colors.blue)
If subtotal < Starter.totalActual Then
' LogColor($"FALTAN ${Starter.totalActual - subtotal}"$, Colors.red)
l_faltaMonto.Text = $"FALTAN ${NumberFormat2((Starter.totalActual - subtotal), 1, 0, 0, False)}"$
else if subtotal > Starter.totalActual Then
' LogColor($"SOBRAN ${subtotal - Starter.totalActual}"$, Colors.red)
l_faltaMonto.Text = $"SOBRAN ${NumberFormat2((subtotal - Starter.totalActual), 1, 0, 0, False)}"$
Else
l_faltaMonto.Text = ""
End If
If listaMontoDePago.Size > 1 And (l_faltaMonto.Text <> "" Or enBlanco) Then
b_pagoCerrar.Enabled = False
Else
b_pagoCerrar.Enabled = True
End If
End Sub
Private Sub cb_opcionEfectivo_CheckedChange(Checked As Boolean)
' Log(">> OPCION EFECTIVO CAMBIO - ACTUALIZAMOS PEDIDO")
Private desc As String = 1 / Subs.traeDescXefectivo
' Private tot As String = Subs.traeTotalTicketActual_P("VENTA")
If Checked Then
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_DESC = '${Subs.traeDescXefectivo}' where PE_TIPO = 'VENTA' and PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${Starter.ticketActual}'"$)
' et_montoPago2.Text = NumberFormat2(tot - (tot * desc), 1, 0, 0, False)
' et_montoPago2.Text = Subs.traeTotalTicketActual_P
Else
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_DESC = '0' where PE_TIPO = 'VENTA' and PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${Starter.ticketActual}'"$)
' et_montoPago2.Text = tot
End If
'Recualculamos el total para ponerlo en PEDIDO_TICKET
' Private c As ResultSet = Starter.skmt.ExecQuery($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$)
Private c As ResultSet = Starter.skmt.ExecQuery($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Log($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$)
' Private elSubTotal As String = "0"
' Do While c.NextRow
' If c.GetString("CAT_GP_TIPO") = "ALIMENTOS" Then
' elSubTotal = elSubTotal + c.GetString("PE_COSTO_TOT") - (c.GetString("PE_COSTO_TOT") * (c.GetString("DESC") / 100))
' Else
' elSubTotal = elSubTotal + c.GetString("PE_COSTO_TOT")
' End If
' Loop
' LogColor($">>>>> ${elSubTotal} "$, Colors.Blue)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_MONTO = '${NumberFormat2(Subs.traeTotalTicketActual_P("VENTA"), 1, 0, 0, False)}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
If et_montoPago2.IsInitialized Then
et_montoPago2.Text = Subs.traeTotalTicketActual_P("VENTA")
l_total2.Text = Subs.traeTotalTicketActual_P("VENTA")
End If
End Sub
Private Sub lv_historial_ItemClick (Position As Int, Value As Object)
Log(Value)
'Esto para cambiar los tamaños y posiciones para pantallas chicas (celuar).
If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
lv_verOrden.Height = Activity.Height * 0.42
b_reabrirMesa.Height = 40dip
b_reimprimirTicket.Height = 40dip
b_reabrirMesa.Top = lv_verOrden.top + lv_verOrden.Height + 10dip
b_reimprimirTicket.Top = lv_verOrden.top + lv_verOrden.Height + 10dip
End If
Private d() As String = Regex.Split("\|", Value)
l_verOrden.Text = $"Orden ${d(1)}"$
Starter.mesaActual = d(0)
Starter.ticketActual = d(1)
Starter.tipov = d(2)
Starter.meseroActual = d(3)
Starter.comensalesActuales = d(4)
lv_verOrden.Clear
Private c As Cursor = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_MESA = '${d(0)}' and PE_TICKET = '${d(1)}' and PE_TIPO = '${d(2)}'"$)
' Log($"select * from PEDIDO where PE_MESA = '${d(0)}' and PE_TICKET = '${d(1)}' and PE_TIPO = '${d(2)}'"$)
' Log(c.RowCount)
Private Label1 As Label = lv_verOrden.TwoLinesLayout.Label
Private Label2 As Label = lv_verOrden.TwoLinesLayout.SecondLabel
Label1.TextColor = Colors.RGB(1,127,1)
Label1.TextSize = 14
Label2.TextColor = Colors.Red
Label2.TextSize = 14
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Private n1 As String = c.GetString("PE_PRONOMBRE")
' Log(n.Length & " - " & n)
If n1.Length > 25 Then n1 = n1.SubString2(0, 25)
lv_verOrden.AddTwoLines($"${c.GetString("PE_CANT")} - ${n1}"$, $"Precio: $${c.GetString("PE_COSTOU")}"$)
Next
End If
p_verOrden.Visible = True
b_reabrirMesa.Tag = Value
End Sub
Private Sub lv_historial_ItemLongClick (Position As Int, Value As Object)
' Log(Value)
' Private d() As String = Regex.Split("\|", Value)
' lv_verOrden.Clear
' Private c As Cursor = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_MESA = '${d(0)}' and PE_TICKET = '${d(1)}' and PE_TIPO = '${d(2)}'"$)
'' Log($"select * from PEDIDO where PE_MESA = '${d(0)}' and PE_TICKET = '${d(1)}' and PE_TIPO = '${d(2)}'"$)
'' Log(c.RowCount)
' Private Label1 As Label = lv_verOrden.TwoLinesLayout.Label
' Private Label2 As Label = lv_verOrden.TwoLinesLayout.SecondLabel
' Label1.TextColor = Colors.RGB(1,127,1)
' Label1.TextSize = 16
' Label2.TextColor = Colors.Red
' Label2.TextSize = 14
' If c.RowCount > 0 Then
' For i = 0 To c.RowCount - 1
' c.Position = i
' Private n1 As String = c.GetString("PE_PRONOMBRE")
'' Log(n.Length & " - " & n)
' If n1.Length > 25 Then n1 = n1.SubString2(0, 25)
' lv_verOrden.AddTwoLines($"${c.GetString("PE_CANT")} - ${n1}"$, $"Precio: $${c.GetString("PE_COSTOU")}"$)
' Next
' End If
' p_transparenteVerOrden.Visible = True
' b_reabrirMesa.Tag = Value
End Sub
Private Sub p_transparenteVerOrden_Click
'Para evitar que el clic en pantalla no se siga hacia atras
' p_transparenteVerOrden.Visible = False
End Sub
Private Sub b_reabrirMesa_Click
Private t As String = Sender.As(Button).tag
' Log(t)
Private d() As String = Regex.Split("\|", t)
Private hayMesaAbierta As Boolean = False
'Revisamos si la mesa a REABRIR no esta ACTUALMENTE abierta.
Private ma As ResultSet = Starter.skmt.ExecQuery($"select M_ID from CAT_MESAS where M_ID = '${d(0)}' and M_ESTATUS = 'ABIERTA'"$)
Do While ma.NextRow
hayMesaAbierta = True
' Log(ma.GetString("M_ID"))
Loop
If hayMesaAbierta Then
ToastMessageShow($"La mesa ${d(0)} esta ABIERTA, por favor cierrela antes intentar reabir este ticket"$, True)
Else
If d(6) <> "null" Then
Log("MULTI-TICKET") 'multi-ticket
b_reabrirMesaMulti.Tag = t
p_reabrirMesaMulti.BringToFront
p_reabrirMesaMulti.Visible = True
Else
Log("UN TICKET") 'multi-ticket
Starter.skmt.BeginTransaction
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_ESTATUS = 'ABIERTA', M_TICKET = '${d(1)}', M_MESERO = '${d(3)}', M_COMENSALES = '${d(4)}' where M_ID = '${d(0)}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_TIPO = 'VENTA', PE_TIPO2 = Null where PE_TIPO = '${d(2)}' and PE_MESA = '${d(0)}' and PE_TICKET = '${d(1)}'"$)
Log(3)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = 'VENTA', PT_TARJETA = Null, PT_PAGO_PROPINA = Null, PT_PROPINA = Null, PT_PAGO2 = Null where PT_PAGO = '${d(2)}' and PT_MESA = '${d(0)}' and PT_TICKET = '${d(1)}'"$)
Starter.skmt.TransactionSuccessful
Starter.skmt.EndTransaction
p_reabrirMesaMulti.Visible = False
' p_transparenteVerOrden.Visible = False
Log("Vamos a Tab1")
WobbleMenu1_Tab1Click
WobbleMenu1.SetCurrentTab(1)
End If
End If
End Sub
Private Sub b_reabrirMesaMulti_Click
Private t As String = Sender.As(Button).tag
Log(t)
Private d() As String = Regex.Split("\|", t)
Starter.skmt.BeginTransaction
Starter.skmt.ExecNonQuery($"delete from PEDIDO where PE_ORIGEN = '${d(6)}|${d(7)}' and PE_TIPO <> 'MULTI-TICKET'"$)
' Log($"delete from PEDIDO where PE_ORIGEN = '${d(6)}|${d(7)}' and PE_TIPO <> 'MULTI-TICKET'"$)
Starter.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_ORIGEN = '${d(6)}|${d(7)}' and PT_ALMACEN = 'MULTI-TICKET'"$)
' Log($"delete from PEDIDO_TICKET where PT_ORIGEN = '${d(6)}|${d(7)}' and PT_ALMACEN = 'MULTI-TICKET'"$)
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_ESTATUS = 'ABIERTA', M_TICKET = '${d(7)}', M_MESERO = '${d(3)}', M_COMENSALES = '${d(4)}' where M_ID = '${d(6)}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_TIPO = 'VENTA', PE_TIPO2 = Null where PE_TIPO = 'MULTI-TICKET' and PE_MESA = '${d(6)}' and PE_TICKET = '${d(7)}'"$)
Log(4)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = 'VENTA', PT_TARJETA = Null, PT_PAGO_PROPINA = Null, PT_PROPINA = Null, PT_PAGO2 = Null where PT_PAGO = 'MULTI-TICKET' and PT_MESA = '${d(6)}' and PT_TICKET = '${d(7)}'"$)
Starter.skmt.TransactionSuccessful
Starter.skmt.EndTransaction
p_reabrirMesaMulti.Visible = False
' p_transparenteVerOrden.Visible = False
WobbleMenu1_Tab1Click
WobbleMenu1.SetCurrentTab(1)
End Sub
Private Sub p_reabrirMesaMulti_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub b_imprimirCerrar_Click
' b_imprimirTicket_Click
End Sub
Private Sub b_leyendaDescuento_Click
Private imprimirEste As Boolean = Starter.imprimirTicket
Private logger As Boolean = True
Private TAMANO As Int
Private ESPACIO As Int
Private BLANCO As String
Private c, s As Cursor
Private l_total, la_cuenta As Label
l_total.Initialize("l")
la_cuenta.Initialize("2")
b_imprimirTicket.Enabled = False
' If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(la_cuenta.Text) 'Solo lo marcamos como impreso si tiene venta (total > 0).
ProgressDialogShow("Imprimiendo, un momento ...")
Private cont As Int = 0
For k = 0 To listaTickets.Size - 1 'Por cada ticket y pago de la lista imprimimos un ticket.
' LogColor($">>>> Forma de pago : ${listaTickets.Get(k).As(Map).Get("pago")}"$, Colors.Blue)
Log("#### IMPRIMIR EFECTIVO: " & imprimirEfectivo)
If listaTickets.Size>= k And listaTickets.Get(k).As(Map).Get("pago") = "EFECTIVO" Or cont > 0 Then 'Solo imprimimos si es el PRIMER ticket de TARJETA.
If Not(imprimirEfectivo) Then Continue
End If
imprimirEfectivo = False
cont = cont + 1
If imprimirEste Then
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
If Starter.logger Then Log("conectando 1")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada)
Sleep(1000)
cont = cont + 1
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
Else
If Starter.logger Then Log("conectando 2")
Printer1.Connect
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
If cont = 2 Then Printer1.Connect
If cont > 4 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
End If
End If
DateTime.DateFormat = "dd/MM/yyyy"
Private sDate,sTime As String
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
' c.Close
' c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL"))
' c.Position = 0
Private sucursal As String = "SUCURSAL"
' c.Close
TAMANO = 0
ESPACIO = 14
BLANCO = " " 'esto para las impresoras nuevas
'printer.Initialize(cmp20.OutputStream)
If imprimirEste Then Printer1.Reset
Dim bmp As Bitmap
bmp.InitializeResize(File.DirAssets, "logoLanter2.bmp", 376, 129, True) 'ignore
Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
myimage = Printer1.DitherImage2D(myimage, 128)
myimage= Printer1.PackImage(myimage)
' LogColor(listaTickets, Colors.red)
If logger Then LogColor($">>>>>> INICIA IMPRESION DE TICKET ${listaTickets.Get(k).As(Map).Get("ticket")} <<<<<<<<<<<<"$, Colors.Red)
Starter.ticketActual = listaTickets.Get(k).As(Map).Get("ticket")
tipoPago = listaTickets.Get(k).As(Map).Get("pago")
Try
If imprimirEste Then Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
If imprimirEste Then Printer1.WriteString(Printer1.REVERSE)
If imprimirEste Then Printer1.PrintImage(myimage)
If imprimirEste Then Printer1.WriteString(Printer1.UNREVERSE)
If tipoPago <> "VENTA" Then 'Solo imprimimos los datos fiscales si es para b_pagoCerrar.
If imprimirEste Then Printer1.WriteString(" RESTAURANTE Y COCINA ITALIANA PEVEL" & CRLF)
If logger Then Log(" RESTAURANTE Y COCINA ITALIANA PEVEL" & CRLF)
If imprimirEste Then Printer1.WriteString(" RFC: RCI230918DAA " & CRLF)
If logger Then Log("RFC: RCI230918DAA" & CRLF)
If imprimirEste Then Printer1.WriteString(" REG FSC: GENERAL DE LEY DE PERSONAS MORALES" & CRLF)
If logger Then Log("REG FSC: GENERAL DE LEY DE PERSONAS MORALES" & CRLF)
If imprimirEste Then Printer1.WriteString(" DOM FSC: PASEO DE LAS PALMAS 275, LOCAL B" & CRLF)
If logger Then Log("DOM FSC: PASEO DE LAS PALMAS NO. 275, LOCAL B" & CRLF)
If imprimirEste Then Printer1.WriteString(" EXPEDIDO EN: PASEO DE LAS PALMAS NO. 275" & CRLF)
If imprimirEste Then Printer1.WriteString(" LOCAL B" & CRLF)
If logger Then Log("EXPEDIDO EN: PASEO DE LAS PALMAS NO. 275, LOCAL B" & CRLF)
If imprimirEste Then Printer1.WriteString(" TEL: 55 5207 9969" & CRLF)
If logger Then Log("TEL: 55 5207 9969" & CRLF)
End If
If imprimirEste Then Printer1.WriteString(" CDMX " & sDate &" " & sTime & CRLF)
If logger Then Log("CDMX " & sDate &" " & sTime & CRLF)
If imprimirEste Then Printer1.WriteString(Printer1.BOLD)
If imprimirEste Then Printer1.WriteString(" No. Ticket: " & Starter.ticketActual & CRLF)
If imprimirEste Then Printer1.WriteString(Printer1.NOBOLD)
If logger Then Log("No. Ticket: " & Starter.ticketActual & CRLF)
If imprimirEste Then Printer1.WriteString($" Mesero: ${Starter.meseroActual}${Subs.rellenaHasta(15 - Starter.meseroActual.Length)}${Printer1.BOLD} # Mesa${CRLF}"$)
If logger Then Log($"Mesero: ${Starter.meseroActual}${Subs.rellenaHasta(15 - Starter.meseroActual.Length)} # Mesa${CRLF}"$)
If imprimirEste Then Printer1.WriteString(Printer1.NOBOLD)
If imprimirEste Then Printer1.WriteString($" Comensales: ${Starter.comensalesActuales}${Subs.rellenaHasta(14 - Starter.mesaActual.Length)}${Printer1.BOLD} ${Starter.mesaActual}${CRLF}"$)
If logger Then Log($"Comensales: ${Starter.comensalesActuales}${Subs.rellenaHasta(14 - Starter.mesaActual.Length)}${Starter.mesaActual}${CRLF}"$)
If imprimirEste Then Printer1.WriteString(" " & CRLF)
c = Starter.skmt.ExecQuery($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Log($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Private elTotalSumado As String = "0"
' LogColor($">>>>> DESCUENTO: ${c.RowCount}"$, Colors.red)
If c.RowCount > 0 Then
Private elSubTotal As String = 0
Private elPU As String = 0
If imprimirEste Then Printer1.WriteString(Printer1.NOBOLD)
For i = 0 To c.RowCount - 1
c.Position = i
Private elNombre As String = c.GetString("PE_PRONOMBRE")
elPU = c.GetString("PE_COSTOU")
If elNombre.Length > 45 Then elNombre.SubString2(0, 45)
If c.GetString("CAT_GP_TIPO") = "ALIMENTOS" Or c.GetString("CAT_GP_TIPO") = "MEDIA" Then
' Log($">> APLICAMOS DESC POR ALIMENTOS"$)
Private elSubTIndividual As String = c.GetString("PE_COSTOU") - (c.GetString("PE_COSTOU") * (c.GetString("DESC") / 100))
elSubTotal = Ceil(elSubTIndividual) * c.GetString("PE_CANT")
' elSubTotal = c.GetString("PE_COSTO_TOT") - (c.GetString("PE_COSTO_TOT") * (c.GetString("DESC") / 100))
' Log(c.GetString("PE_COSTOU"))
elSubTotal = Ceil(elSubTotal)
' Log(elSubTotal)
elPU = Ceil(c.GetString("PE_COSTOU") - (c.GetString("PE_COSTOU") * (c.GetString("DESC") / 100)))
Else
elSubTotal = c.GetString("PE_COSTO_TOT")
End If
Private nom() As String = Regex.Split("\$", elNombre)
If nom.Length > 1 Then
elNombre = nom(0)
End If
' Log($"${c.GetString("PE_PRONOMBRE")}, ${c.GetString("DESC")}${elSubTotal}"$)
Private cantXpu As String = $" ${c.GetString("PE_CANT")} X ${elPU}"$
If imprimirEste Then Printer1.WriteString($" ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (45 - cantXpu.Length), ".")}${CRLF}"$)
Log($"${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$)
' elTotalSumado = elTotalSumado + elSubTotal
If i = c.RowCount - 1 Then
Log(">>>>>>>>>>>>>>>>>>>>>>>>>< ")
Private desc As ResultSet = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_PRONOMBRE = 'DESCUENTO' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
Log($"select * from PEDIDO where PE_PRONOMBRE = 'DESCUENTO' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
Log(">>>>> DESC: " & desc.RowCount)
Do While desc.NextRow
If imprimirEste Then Printer1.WriteString($" Subtotal: ${Subs.alineaDerecha("$"&NumberFormat2( (Subs.traeTotalTicketActual_P(tipoPago)), 1, 2, 2, True), (45 - 12), ".")}${CRLF}"$)
Log($"Subtotal: ${Subs.alineaDerecha("$"&NumberFormat2((Subs.traeTotalTicketActual_P(tipoPago)), 1, 2, 2, True), (45 - 12), ".")}${CRLF}"$)
cantXpu = $"1 x ${desc.GetString("PE_COSTOU")}"$
If imprimirEste Then Printer1.WriteString($" 1 DESCUENTO${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(desc.GetString("PE_COSTO_TOT"), 1, 2, 2, True), (45 - cantXpu.Length), ".")}${CRLF}"$)
Log($"1 DESCUENTO${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(desc.GetString("PE_COSTO_TOT"), 1, 2, 2, True), (45 - cantXpu.Length), ".")}${CRLF}"$)
Loop
End If
Next
End If
c = Starter.skmt.ExecQuery($"select *, ifnull(PT_PROPINA, "0") as propina, ifnull(PT_ALMACEN, "") as ALM from PEDIDO_TICKET where PT_MESA = '${Starter.mesaActual}' and PT_PAGO = '${tipoPago}' and PT_TICKET = '${Starter.ticketActual}'"$)
' Log($"Rowcount: ${c.RowCount}"$)
If c.RowCount > 0 Then
c.Position = 0
' Log($"TIPO PAGO: ${tipoPago}"$)
Private elTotal As String = Subs.traeTotalTicketActual_P(tipoPago)
' LogColor("<<<<<<<<<<<<<<<< elTotal: " & elTotal, Colors.red)
If c.GetString("ALM") = "MULTI-TICKET" Then
' Log("ORIGEN: " & c.GetString("PT_ORIGEN"))
Private m0() As String = Regex.Split("\|", c.GetString("PT_ORIGEN"))
Private mesaX As String = m0(0)
Private ticketX As String = m0(1)
Private x As Cursor = Starter.skmt.ExecQuery($"select * from PEDIDO_TICKET where PT_MESA = '${mesaX}' and PT_TICKET = '${ticketX}' and PT_PAGO = 'MULTI-TICKET'"$)
Private y As Cursor = Starter.skmt.ExecQuery($"select ifnull(PT_MONTO, 0) as desc from PEDIDO_TICKET where PT_MESA = '${mesaX}' and PT_PAGO = 'EFECTIVO' and PT_ORIGEN = '${c.GetString("PT_ORIGEN")}'"$)
' Log($"select * from PEDIDO_TICKET where PT_MESA = '${mesaX}' and PT_TICKET = '${ticketX}'"$)
Private elDesc As String = "0"
If y.RowCount > 0 Then
y.Position = 0
elDesc = y.GetString("desc")
End If
If x.RowCount > 0 Then
x.Position = 0
' Log(x.GetString("PT_TICKET"))
' LogColor(">>>>>> PT_MONTO= " & x.GetString("PT_MONTO"), Colors.red)
elTotal = x.GetString("PT_MONTO") - elDesc
End If
End If
' elTotal = elTotalSumado
' If c.GetString("ALM") = "MULTI-TICKET" Then elTotal = c.GetString("PT_MONTO")
' Log(">>>>>>>> " & Subs.traeTotalTicketActual_P(tipoPago))
' If c.GetString("propina") <> 0 And c.GetString("PT_PAGO_PROPINA") = "Tarjeta" Then 'Se comento porque lo propina no se debe de sumar al ticket.
' If imprimirEste Then Printer1.WriteString($"${CRLF}Propina: $${NumberFormat2(c.GetString("PT_PROPINA"), 1, 2, 2, True)}"$)
' If logger Then Log($"${CRLF}Propina: $${NumberFormat2(c.GetString("PT_PROPINA"), 1, 2, 2, True)}"$)
' elTotal = elTotal + c.GetString("PT_PROPINA")
' End If
If tipoPago <> "VENTA" Then
If imprimirEste Then Printer1.WriteString($"${CRLF} IVA: $${NumberFormat2(((elTotal * 0.16)), 1, 2, 2, True)}"$)
If logger Then Log($"${CRLF}IVA: $${NumberFormat2(((elTotal * 0.16)), 1, 2, 2, True)}"$)
End If
If imprimirEste Then Printer1.WriteString($"${CRLF} Total: $${NumberFormat2(elTotal, 1, 2, 2, True)}"$)
If logger Then Log($"${CRLF}Total: $${NumberFormat2(elTotal, 1, 2, 2, True)}"$)
Private elTextoTotal As String = n2t.NumberToWords(NumberFormat2(elTotal, 1, 2, 2, False))
If elTextoTotal.Length > 40 Then
Private tot1 As String = elTextoTotal.SubString2(0, 40)
Private tot2 As String = elTextoTotal.SubString(40)
' Log("xxxxxxxxxxxxxxxxx")
If imprimirEste Then Printer1.WriteString($"${CRLF} ${tot1}"$)
If imprimirEste Then Printer1.WriteString($"${CRLF} ${tot2}"$)
Else
If imprimirEste Then Printer1.WriteString($"${CRLF} ${n2t.NumberToWords(NumberFormat2(elTotal, 1, 2, 2, False))}"$)
End If
If logger Then Log($"${CRLF}${n2t.NumberToWords(NumberFormat2(elTotal, 1, 2, 2, False))}"$)
If tipoPago <> "VENTA" Then
Private fPago As String = c.GetString("PT_PAGO")
If fPago = "EFECTIVO" Then fPago = "EFEPUNTOS"
If imprimirEste Then Printer1.WriteString($"${CRLF} Forma de pago: ${fPago}"$)
If logger Then Log($"${CRLF}Forma de pago: ${fPago}"$)
End If
End If
If imprimirEste Then Printer1.WriteString(Printer1.UNREVERSE)
If imprimirEste Then Printer1.WriteString(Printer1.NOBOLD)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(" --------------------------------------" & CRLF)
If logger Then Log("------------------------------" & CRLF)
If tipoPago <> "VENTA" Then
If imprimirEste Then Printer1.WriteString(" --------------- PAGADO ---------------" & CRLF)
If logger Then Log("------------ PAGADO ----------" & CRLF)
Else
If imprimirEste Then Printer1.WriteString(" -------------- NO PAGADO -------------" & CRLF)
If logger Then Log("---------- NO PAGADO ---------" & CRLF)
End If
If imprimirEste Then Printer1.WriteString(" --------------------------------------" & CRLF)
If logger Then Log("------------------------------" & CRLF)
If imprimirEste Then Printer1.WriteString(" --------ESTE TICKET NO ES UN ---------" & CRLF)
If logger Then Log("----ESTE TICKET NO ES UN -----" & CRLF)
If imprimirEste Then Printer1.WriteString(" ------COMPROBANTE FISCAL, SOLO ES-----" & CRLF)
If logger Then Log("--COMPROBANTE FISCAL, SOLO ES-" & CRLF)
If imprimirEste Then Printer1.WriteString(" ------------INFORMATIVO---------------" & CRLF)
If logger Then Log("--------INFORMATIVO-----------" & CRLF)
If imprimirEste Then Printer1.WriteString(" --------------------------------------" & CRLF)
If logger Then Log("--------------------------------------" & CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If tipoPago = "VENTA" And cb_leyendaDescuento.Checked Then
If imprimirEste Then Printer1.WriteString(Printer1.REVERSE)
If imprimirEste Then Printer1.WriteString(" ---------- 10% DE DESCUENTO ----------" & CRLF)
If imprimirEste Then Printer1.WriteString(" --------- PAGANDO EN EFECTIVO --------" & CRLF)
If imprimirEste Then Printer1.WriteString(" ------ >> SOLO EN ALIMENTOS << -------" & CRLF)
If imprimirEste Then Printer1.WriteString(Printer1.UNREVERSE)
If imprimirEste Then Printer1.WriteString(CRLF)
If logger Then Log("------ 10% DE DESCUENTO ------" & CRLF)
If logger Then Log("----- PAGANDO EN EFECTIVO ----" & CRLF)
If logger Then Log("-- >> SOLO EN ALIMENTOS << ---" & CRLF)
End If
If cb_factura.Checked Then
' If imprimirEste Then Printer1.WriteString(Printer1.REVERSE)
If imprimirEste Then Printer1.WriteString(" ----------- PARA FACTURAR -----------" & CRLF)
If imprimirEste Then Printer1.WriteString(" -------- INGRESAR A ESTA LIGA --------" & CRLF)
If imprimirEste Then Printer1.WriteString(" ------- TIENE 3 DIAS DESDE EL --------" & CRLF)
If imprimirEste Then Printer1.WriteString(" ------ MOMENTO DE LA IMPRESION ------" & CRLF)
If imprimirEste Then Printer1.WriteString(" http://facturacionkmts.com.mx" & CRLF)
If imprimirEste Then Printer1.WriteString(Printer1.UNREVERSE)
If imprimirEste Then Printer1.WriteString(CRLF)
If logger Then Log("------ PARA FACTURAR ------" & CRLF)
If logger Then Log("----- INGRESAR A ESTA LIGA ----" & CRLF)
If logger Then Log("http://facturacionkmts.com.mx" & CRLF)
End If
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
If imprimirEste Then Printer1.WriteString(CRLF)
Sleep(1000)
Printer1.DisConnect
Catch
Log(LastException)
End Try
Sleep(1000)
Next
Sleep(1000)
b_imprimirTicket.Enabled = True
ProgressDialogHide
' p_leyendaDescuento.Visible = False
p_transparenteDescuento.Visible = False
' B4XPage_CloseRequest
cb_mostrarDescuento.Checked = False
' cb_opcionEfectivo_CheckedChange(False)
End Sub
Private Sub et_buscar_TextChanged (Old As String, New As String)
Private c As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_NOMBRE like '%${New}%' order by CAT_GP_NOMBRE"$) ' and CAT_GP_TIPO = '${Starter.catActual}'
LlenaProdsLL(c, Null)
lv_categorias.Visible = False
clv_prods_ll.AsView.Visible = True
Log(c.RowCount)
End Sub
Private Sub cb_mostrarDescuento_CheckedChange(Checked As Boolean)
cb_opcionEfectivo_CheckedChange(Checked)
End Sub
Private Sub p_verOrden_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub p_leyendaDescuento_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub p_cambioMesa_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub p_resumen_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub l_prodX_Click
Log("clicked")
Log(Sender.As(Label).tag)
Private m As Map = Sender.As(Label).tag
Log(listaProdsOrden.IndexOf(m.Get("id")))
Private indice As String = listaProdsOrden.IndexOf(m.Get("id"))
' Log(clv_orden.GetPanel(indice).GetView(0).GetView(2).GetView(4).As(EditText).text) 'getview(0) = p_prods, getview(2) = p_botMasMen, getview(4) = et_pCant
If indice = -1 Then
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
clv_orden.Add(Pnl, CreateMap("prod":m.Get("prod"), "precio":m.Get("precio"), "almacen":m.Get("almacen"), "id":m.Get("id"), "cant":1, "img":Null))
Subs.actualizaProducto(m.Get("precio"), 1, m.Get("prod"), m.Get("id"), Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
Else
Log(clv_orden.GetValue(indice).As(Map).Get("cant"))
Private newCant As Int = clv_orden.GetValue(indice).As(Map).Get("cant") + 1
clv_orden.GetValue(indice).As(Map).put("cant", newCant)
clv_orden.GetPanel(indice).GetView(0).GetView(2).GetView(4).As(EditText).text = newCant 'getview(0) = p_prods, getview(2) = p_botMasMen, getview(4) = et_pCant
Subs.actualizaProducto(m.Get("precio"), newCant, m.Get("prod"), m.Get("id"), Starter.ticketActual, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, 0, Starter.tipov, Starter.comensalesActuales)
End If
End Sub
Private Sub clv_orden_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
Dim ExtraSize As Int = 30 'List size
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_orden.Size - 1)
Dim Pnl As B4XView = clv_orden.GetPanel(i)
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
' Log(i)
' If listaProdsOrden.IndexOf(clv_orden.GetValue(i).As(Map).Get("id")) > -1 Then
' Log("Ya existe")
' Else
Pnl.LoadLayout("proditem")
listaProdsOrden.InsertAt(i, clv_orden.GetValue(i).As(Map).Get("id"))
' Log($"insertamos ${clv_orden.GetValue(i).As(Map).Get("id")} en ${i}"$)
' Log(listaProdsOrden)
p_prods.Width = clv_orden.GetBase.Width ' Activity.Width * 0.99
p_prods.Height = 42dip
p_botMasMen.Left = (clv_orden.GetBase.Width - p_botMasMen.Width - 8)
b_prodMas.Height = 47dip : b_prodMas.top = 3dip
b_prodMenos.Height = 47dip : b_prodMenos.top = 3dip
et_pCant.Height = 49dip : et_pCant.top = 3dip
l_pCant.Height = 37dip : l_pCant.top = 9dip
p_botMasMen.Top = -6
Private cs As CSBuilder
cs.Initialize
l_prodX.SetTextSizeAnimated(0, 13)
If clv_orden.GetValue(i).As(Map).Get("cant") <> Null And clv_orden.GetValue(i).As(Map).Get("cant") > 0 Then
p_prods.Color=0xFFE2EEFF
et_pCant.TextColor=Colors.Red
b_prodMenos.Tag = "vendido"
b_prodMas.Tag = "vendido"
End If
Private precio As String=NumberFormat2(clv_orden.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False)
If clv_orden.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_orden.GetValue(i).As(Map).Get("cant")
l_prodX.Text = cs.Color(Colors.red).append(clv_orden.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Color(0xFF017F01).Append($"Precio $${NumberFormat2(precio, 1, 2, 2, True)}"$).Popall
l_prodX.Tag = clv_orden.GetValue(i).As(Map)
l_pCant.Tag = clv_orden.GetValue(i).As(Map).Get("id")
' Log(clv_orden.GetValue(i).As(Map).Get("id"))
i_prod.Bitmap = clv_orden.GetValue(i).As(Map).Get("img")
' End If
End If
End If
' Log($"Bar value: ${PCLV.B4XSeekBar1.Value}"$)
Next
End Sub
Sub LlenaOrden
' Log("LlenaOrden - " & Subs.hayPedido)
clv_orden.Clear
If Subs.hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV.
Private c As Cursor = Starter.skmt.ExecQuery($"Select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG, PE_PROID, PE_CANT, PE_PRONOMBRE, PE_COSTOU from cat_gunaprod join pedido on cat_gp_id = Pe_proid where PE_TICKET = '${Starter.ticketActual}' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS'"$) ' order by CAT_GP_ORDENAMIENTO, CAT_GP_NOMBRE
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_orden.AsView.Width, 40dip)
c.Position = i
clv_orden.Add(Pnl, CreateMap("prod":c.GetString("PE_PRONOMBRE"), "precio":c.GetString("PE_COSTOU"), "almacen":c.GetString("CAT_GP_ALMACEN"), "id":c.GetString("CAT_GP_ID"), "cant":c.GetString("PE_CANT"), "img":Null))
Next
End If
End If
End Sub
Sub actualizaProductos(categoria As String)
Private labelTmp As Label
Private left0 As Int = 0
Private top0 As Int = 0
Private w As Int = 0
Private letra As String = ""
If selBuscar = "%" Then
Private c As ResultSet = Starter.skmt.ExecQuery($"select * from cat_gunaprod where cat_gp_tipo like '%${categoria}%' and CAT_GP_NOMBRE not like '%Varios%' and CAT_GP_NOMBRE not like '%Varias%' order by CAT_GP_ORDENAMIENTO, cat_gp_nombre"$)
Else
Private c As ResultSet = Starter.skmt.ExecQuery($"select * from cat_gunaprod where cat_gp_tipo like '%${categoria}%' and CAT_GP_NOMBRE like '%${selBuscar}%' order by CAT_GP_ORDENAMIENTO, cat_gp_nombre"$)
End If
panelEnUso = 1
p_productos1.BringToFront
p_productos1.RemoveAllViews
p_productos2.RemoveAllViews
p_productos3.RemoveAllViews
p_productos4.RemoveAllViews
p_productos5.RemoveAllViews
Dim clasifAnt As String = ""
Do While c.NextRow
Private nombre As String = c.getstring("CAT_GP_NOMBRE")
labelTmp.Initialize("l_prods")
Dim l_prods As B4XView = labelTmp ' We cast it to B4XView so we can set the border.
l_prods.Width = 149dip
l_prods.Height = 46dip
l_prods.TextSize = 12
If w Mod 2 == 0 Then
l_prods.SetColorAndBorder(Colors.White, 1dip, Colors.Black, 0)
Else
l_prods.SetColorAndBorder(Colors.RGB(220,255,220), 1dip, Colors.Black, 0)
End If
'If 1 = 0 And selBuscar = "%" And letra <> c.getstring("CAT_GP_NOMBRE").As(String).SubString2(0,1) Then ' Cambiamos el color cuando cambia la letra inicial
letra = c.getstring("CAT_GP_NOMBRE").As(String).SubString2(0,1)
' l_prods.SetColorAndBorder(Colors.White, 1dip, Colors.Black, 0)
l_prods.SetTextAlignment("CENTER", "CENTER")
' Log(nombre)
l_prods.Tag = CreateMap("prod":nombre, "precio":c.GetString("CAT_GP_PRECIO"), "almacen":"9999", "id":c.GetString("CAT_GP_ID"), "cant":1, "img":Null)
If nombre.Length > 20 Then nombre = nombre.SubString2(0, 20)
nombre = nombre & " $" & c.getstring("CAT_GP_PRECIO")
l_prods.Text = nombre
' {prod=ALCACHOFAS CRUDAS 250g , precio=190, almacen=9997, id=LA92, cant=7, img=Null}
' l_prods.TextColor = Colors.White
Private t As Int = w
If w > 0 Then top0 = top0 + (l_prods.Height + 1)
' Log("T:"&top0)
If top0 > p_productos1.Height - l_prods.Height Then
left0 = left0 + (l_prods.Width + 1)
top0 = 0
' Log("CAMBIO - L:" & left0 & "|LW:" & l_prods.Width & "|W:" & w)
End If
If (left0 + l_prods.Width) > p_productos1.Width Then
left0 = 0
If panelEnUso = 1 Then
panelEnUso = 2
else if panelEnUso = 2 Then
panelEnUso = 3
else if panelEnUso = 3 Then
panelEnUso = 4
else if panelEnUso = 4 Then
panelEnUso = 5
End If
' Log("NO CABEN - " & w & " USAMOS " & panelEnUso)
End If
If c.GetString("CAT_GP_CLASIF") <> clasifAnt Then
' Log(">>> " & c.GetString("CAT_GP_CLASIF"))
' Dim labelHead As Label
' labelHead.Initialize("l_head")
' labelHead.Width = 119dip
' labelHead.Height = 36dip
' labelHead.Text = "ENCABEZADO" 'c.GetString("CAT_GP_CLASIF")
' p_productos1.AddView(labelHead, left0, top0, labelHead.Width, labelHead.Height)
l_prods.TextColor = Colors.RGB(220,0,0)
Else
l_prods.TextColor = Colors.black
End If
clasifAnt = c.GetString("CAT_GP_CLASIF")
' Log(l_prods.text)
' Log($"L:${left0}, T:${top0}, PH:${p_productos.Height}"$)
' Log($"Panel: ${panelEnUso}, W: ${w}"$)
If panelEnUso = 1 Then
p_productos1.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height)
else if panelEnUso = 2 Then
p_productos2.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height)
else if panelEnUso = 3 Then
p_productos3.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height)
Else if panelEnUso = 4 Then
p_productos4.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height)
Else if panelEnUso = 5 Then
p_productos5.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height)
End If
w = w + 1
Loop
panelEnUso = 1
l_panelEnUso.Text = panelEnUso
End Sub
Private Sub l_selVinos_Click
' Log("Vinos")
selBuscar = "%"
et_selBuscar.Text = ""
actualizaProductos("Vinos")
End Sub
Private Sub l_selAlimentos_Click
' Log("Alimentos")
selBuscar = "%"
et_selBuscar.Text = ""
actualizaProductos("Alimentos")
End Sub
Private Sub l_selMedios_Click
' Log("Medios")
selBuscar = "%"
et_selBuscar.Text = ""
actualizaProductos("MEDIA")
End Sub
Private Sub et_selBuscar_TextChanged (Old As String, New As String)
If New.Length > 1 Then
p_prevBusqueda.Visible = False
selBuscar = New
actualizaProductos("%")
End If
End Sub
Private Sub et_selBuscar_FocusChanged (HasFocus As Boolean)
Log("HAS FOCUS: " & HasFocus)
' p_prevBusqueda.BringToFront
' p_prevBusqueda.Visible = True
End Sub
Private Sub b_sigPagina_Click
If panelEnUso = 1 Then
p_productos2.BringToFront
panelEnUso = 2
else if panelEnUso = 2 Then
p_productos3.BringToFront
panelEnUso = 3
else if panelEnUso = 3 Then
p_productos4.BringToFront
panelEnUso = 4
else if panelEnUso = 4 Then
p_productos5.BringToFront
panelEnUso = 5
Else
p_productos1.BringToFront
panelEnUso = 1
End If
' b_sigPagina.Text = panelEnUso & " >"
l_panelEnUso.Text = panelEnUso
' Log(panelEnUso)
End Sub
Private Sub b_prevPagina_Click
If panelEnUso = 1 Then
p_productos5.BringToFront
panelEnUso = 5
else if panelEnUso = 2 Then
p_productos1.BringToFront
panelEnUso = 1
else if panelEnUso = 3 Then
p_productos2.BringToFront
panelEnUso = 2
Else if panelEnUso = 4 Then
p_productos3.BringToFront
panelEnUso = 3
Else if panelEnUso = 5 Then
p_productos4.BringToFront
panelEnUso = 4
End If
' b_sigPagina.Text = panelEnUso & " >"
l_panelEnUso.Text = panelEnUso
Log(panelEnUso)
End Sub
Sub p_productos1_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Sub p_productos2_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Sub p_productos3_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Sub p_productos4_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Sub p_productos5_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub p_mesas_Click
'Para evitar que el clic en pantalla no se siga hacia atras
End Sub
Private Sub b_resumen_Click
Log("CLIC RESUMEN")
' clv_resumenDia.AsView.left = 10dip : clv_resumenDia.AsView.top = 70dip
clv_resumenDia.AsView.top = 1dip
clv_resumenDia.AsView.width = p_resumenDia.Width - 20dip : clv_resumenDia.AsView.height = (p_resumenDia.height / 2.3) ' - 90dip
p_contScrollView.Width = clv_resumenDia.AsView.width + 2dip : p_contScrollView.height = clv_resumenDia.AsView.height + 2dip
p_contScrollView.left = 10dip : p_contScrollView.top = 70dip
clv_resumenDia.Base_Resize(clv_resumenDia.GetBase.Width, clv_resumenDia.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que se ajuste al nuevo tamaño.
'Esto para cambiar los tamaños y posiciones para pantallas chicas (celuar).
If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
p_resumenDiaTotales.Top = p_contScrollView.Height + p_contScrollView.Top - 35dip : p_resumenDiaTotales.left = p_contScrollView.left
p_resumenDiaTotales.Height = p_resumenDia.Height - p_resumenDiaTotales.top + 20dip
Else
p_resumenDiaTotales.Top = p_contScrollView.Height + p_contScrollView.Top + 10dip : p_resumenDiaTotales.left = p_contScrollView.left
p_resumenDiaTotales.Height = p_resumenDia.Height - p_resumenDiaTotales.top - 10dip
End If
Private n As Int = 0
p_resumenDia.Visible = True
clv_resumenDia.Clear
Private o As ResultSet = Starter.skmt.ExecQuery($"select *, ifnull(PT_PROPINA, 0) as PT_PROPINA, ifnull(PT_PAGO_PROPINA, "") as PT_PAGO_PROPINA, ifnull(PT_FACTURAR, 'false') as PT_FACTURAR, ifnull(PT_PAGO2, 'PENDIENTE') as PT_PAGO2 from PEDIDO_TICKET where PT_PAGO <> 'MULTI-TICKET' and PT_PAGO <> 'VENTA' order by PT_FECHA"$)
Do While o.NextRow
' Log($"xx - |${o.GetString("PT_PAGO")}|"$)
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_resumenDia.AsView.Width, 52dip)
clv_resumenDia.Add(Pnl, 1)
Dim Pnl1 As B4XView = clv_resumenDia.GetPanel(n)
Pnl1.LoadLayout("resumenItem")
acomodaResItems
p_resItem.Tag = CreateMap("mesa":o.GetString("PT_MESA"), "ticket":o.GetString("PT_TICKET"), "formaPago":o.GetString("PT_PAGO2"), "propinaPago":o.GetString("PT_PAGO_PROPINA"), "almacen":o.GetString("PT_ALMACEN"), "pago":o.GetString("PT_MONTO"), "propina":o.GetString("PT_PROPINA"))
p_resItem.Width = clv_resumenDia.AsView.Width
p_resItem.Height = Pnl1.Height
l_mesa.Text = o.GetString("PT_MESA")
l_consumo.Text = "$" & NumberFormat2(o.GetString("PT_MONTO"), 1, 2, 2, True)
l_propina.Text = "$" & NumberFormat2(o.GetString("PT_PROPINA"), 1, 2, 2, True)
l_total.Text = "$" & NumberFormat2((o.GetString("PT_MONTO") + o.GetString("PT_PROPINA")), 1, 2, 2, True)
l_comprobante.Text = "NOTA"
If o.GetString("PT_FACTURAR") = "true" Then l_comprobante.Text = "FACTURA"
l_formaPago.Text = o.GetString("PT_PAGO2")
Select o.GetString("PT_PAGO_PROPINA")
Case "Mifel"
l_propinaPago.Text = "Mifel"
Case "Visa/Mastercard Debito"
l_propinaPago.Text = "Mifel Debito"
Case "Amex"
l_propinaPago.Text = "Amex"
Case "Efectivo"
l_propinaPago.Text = "Efectivo"
End Select
Log($"|${o.GetString("PT_PAGO_PROPINA")}|${l_propinaPago.Text}|"$)
' l_propinaPago.Text = o.GetString("PT_PAGO_PROPINA")
' If o.GetString("PT_PAGO2") = "null" Then l_formaPago.Text = "PENDIENTE"
n = n + 1
Loop
Private propAmex = "0", propMifel = "0", propMifelDebito = "0", propEfectivo = "0" As String
Private rt As ResultSet = Starter.skmt.ExecQuery($"Select sum(pt_monto) as ptMonto, sum(pt_propina) as ptPropina, * from pedido_ticket where pt_pago <> 'VENTA' and PT_PAGO <> 'MULTI-TICKET' group by pt_pago2"$) ' and (CASE WHEN PT_PAGO = 'EFECTIVO' and PT_ALMACEN = 'MULTI-TICKET' THEN false ELSE true END) - El "case" es para que en el efectivo NO cuente los tickets multi-tickets, porque esos son "Consumo de alimentos".
Private rtpa As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Amex' group by pt_pago_propina"$)
Do While rtpa.NextRow
propAmex = rtpa.GetString("ptPropina")
Loop
Private rtpmc As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Mifel' group by pt_pago_propina"$)
Do While rtpmc.NextRow
propMifel = rtpmc.GetString("ptPropina")
Loop
Log(propMifel)
' Private rtpmd As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Visa/Mastercard Debito XXX' group by pt_pago_propina"$)
' Do While rtpmd.NextRow
' propMifelDebito = rtpmd.GetString("ptPropina")
' Loop
Private rtpe As ResultSet = Starter.skmt.ExecQuery($"Select ifnull(sum(pt_propina),0) as ptPropina, * from pedido_ticket where pt_pago_propina = 'Efectivo' group by pt_pago_propina"$)
Do While rtpe.NextRow
propEfectivo = rtpe.GetString("ptPropina")
Loop
Log(rtpa.RowCount)
Private consumoTotales As String = 0
Private propinaTotales As String = 0
Private totalTotales As String = 0
Do While rt.NextRow
consumoTotales = consumoTotales + rt.GetString("ptMonto")
' propinaTotales = propinaTotales + rt.GetString("ptPropina")
totalTotales = totalTotales + rt.GetString("ptMonto") + rt.GetString("ptPropina")
If rt.GetString("PT_PAGO") = "EFECTIVO" Then
l_consumoEfectivo.Text = $"$${NumberFormat2(rt.GetString("ptMonto"), 1, 2, 2, True)}"$
' l_propinaEfectivo.Text = $"$${NumberFormat2(rt.GetString("ptPropina"), 1, 2, 2, True)}"$
l_totalEfectivo.Text = $"$${NumberFormat2((rt.GetString("ptMonto") + propEfectivo), 1, 2, 2, True)}"$
else if rt.GetString("PT_PAGO2") = "Amex" Then
l_consumoAmex.Text = $"$${NumberFormat2(rt.GetString("ptMonto"), 1, 2, 2, True)}"$
' l_propinaAmex.Text = $"$${NumberFormat2(rt.GetString("ptPropina"), 1, 2, 2, True)}"$
l_totalAmex.Text = $"$${NumberFormat2((rt.GetString("ptMonto") + propAmex), 1, 2, 2, True)}"$
else if rt.GetString("PT_PAGO2") = "Mifel" Then
l_consumoTDC.Text = $"$${NumberFormat2(rt.GetString("ptMonto"), 1, 2, 2, True)}"$
' l_propinaTDC.Text = $"$${NumberFormat2(rt.GetString("ptPropina"), 1, 2, 2, True)}"$
l_totalTDC.Text = $"$${NumberFormat2((rt.GetString("ptMonto") + propMifel), 1, 2, 2, True)}"$
else if rt.GetString("PT_PAGO2") = "Visa/Mastercard Debito" Then
l_consumoTDD.Text = $"$${NumberFormat2(rt.GetString("ptMonto"), 1, 2, 2, True)}"$
' l_propinaTDD.Text = $"$${NumberFormat2(rt.GetString("ptPropina"), 1, 2, 2, True)}"$
l_totalTDD.Text = $"$${NumberFormat2((rt.GetString("ptMonto") + propMifelDebito), 1, 2, 2, True)}"$
End If
Loop
l_propinaAmex.Text = $"$${NumberFormat2(propAmex, 1, 2, 2, True)}"$
l_propinaTDC.Text = $"$${NumberFormat2(propMifel, 1, 2, 2, True)}"$
l_propinaEfectivo.Text = $"$${NumberFormat2(propEfectivo, 1, 2, 2, True)}"$
propinaTotales = propAmex + propMifel + propMifelDebito + propEfectivo
l_consumoTotal.Text = "$" & NumberFormat2(consumoTotales, 1, 2, 2, True)
l_propinaTotal.Text = "$" & NumberFormat2(propinaTotales, 1, 2, 2, True)
l_totalTotal.Text = "$" & NumberFormat2(totalTotales, 1, 2, 2, True)
End Sub
Sub acomodaResItems
l_mesa.Width = clv_resumenDia.AsView.Width * 0.1
l_titResMesa.Left = l_mesa.left + 10dip : l_titResMesa.width = l_mesa.Width
l_consumo.Width = clv_resumenDia.AsView.Width * 0.15
l_consumo.Left = l_mesa.Left + l_mesa.Width + 1
l_titResConsumo.Left = l_consumo.left + 10dip : l_titResConsumo.width = l_consumo.Width
l_propina.Width = clv_resumenDia.AsView.Width * 0.15
l_propina.Left = l_consumo.Left + l_consumo.Width + 1
l_propinaPago.Left = l_propina.Left + l_propina.Width + 1
l_titResPropina.Left = l_propina.left + 10dip : l_titResPropina.width = l_propina.Width
l_titResPropinaPago.Left = l_propinaPago.left + 10dip : l_titResPropinaPago.width = l_propinaPago.Width
l_total.Width = clv_resumenDia.AsView.Width * 0.15
l_total.Left = l_propinaPago.Left + l_propinaPago.Width + 1
l_titResPagoTot.Left = l_total.left + 10dip : l_titResPagoTot.width = l_total.Width
l_comprobante.Width = clv_resumenDia.AsView.Width * 0.15
l_comprobante.Left = l_total.Left + l_total.Width + 1
l_titResComprobante.Left = l_comprobante.left + 10dip : l_titResComprobante.width = l_comprobante.Width
l_formaPago.Width = clv_resumenDia.AsView.Width * 0.17
l_formaPago.Left = l_comprobante.Left + l_comprobante.Width + 1
l_titResFormaPago.Left = l_formaPago.left + 10dip : l_titResFormaPago.width = l_formaPago.Width
End Sub
Private Sub cb_factura_CheckedChange(Checked As Boolean)
Starter.ticketFactura = Checked
If Checked Then
Log(222)
cb_leyendaDescuento.Checked = False
cb_mostrarDescuento.Checked = False
cb_leyendaDescuento.Enabled = False
cb_mostrarDescuento.Enabled = False
Else
Log(333)
cb_leyendaDescuento.Enabled = True
cb_mostrarDescuento.Enabled = True
End If
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_FACTURAR = '${Checked}' where PT_TICKET = '${Starter.ticketActual}' and PT_MESA = '${Starter.mesaActual}' and PT_PAGO = 'VENTA'"$)
End Sub
Private Sub p_resumenDia_Click
End Sub
Private Sub p_resItem_Click
Log(Sender.As(Panel).tag)
p_contScrollView.BringToFront
End Sub
Private Sub p_resItem_LongClick
Log(Sender.As(Panel).tag)
cambioPago = Sender.As(Panel).tag.As(Map).Get("formaPago")
cambioPagoPropina = Sender.As(Panel).tag.As(Map).Get("propinaPago")
If cambioPagoPropina = "" Then cambioPagoPropina = "Efectivo"
cb_nuevoPago.SelectedIndex = cb_nuevoPago.IndexOf(cambioPago)
cb_nuevoPagoPropina.SelectedIndex = cb_nuevoPagoPropina.IndexOf(cambioPagoPropina)
et_nuevoPago.Text = Sender.As(Panel).tag.As(Map).Get("pago")
et_nuevoPagoPropina.Text = Sender.As(Panel).tag.As(Map).Get("propina")
Log($"${cb_nuevoPago.IndexOf(cambioPago)}, ${cb_nuevoPagoPropina.IndexOf(cambioPagoPropina)}"$)
b_cambioPagos.Tag = Sender.As(Panel).tag
p_transparenteCambioPagos.Top = 0 : p_transparenteCambioPagos.left = 0
p_transparenteCambioPagos.Width = Activity.Width : p_transparenteCambioPagos.Height = Activity.height
Subs.centraBoton(b_cambioPagos, p_cambioPagos.Width)
Subs.centraPanel(p_cambioPagos, Activity.Width)
p_transparenteCambioPagos.Visible = True
End Sub
Private Sub b_cambioPagos_Click
p_transparenteCambioPagos.Visible = False
Log(Sender.As(Button).tag)
Private m As Map = Sender.As(Button).tag
Private alm As String = m.Get("almacen")
If alm = "null" Then alm = ""
Log("|" & alm & "|")
If alm = "MULTI-TICKET" Then
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_MONTO = '${et_nuevoPago.text}', PT_PROPINA = '${et_nuevoPagoPropina.text}', PT_PAGO_PROPINA = '${cambioPagoPropina}', PT_PAGO2 = '${cambioPago}' where PT_MESA = '${m.Get("mesa")}' and PT_TICKET = '${m.Get("ticket")}'"$)
Log($"update PEDIDO_TICKET set PT_PAGO_PROPINA = '${cambioPagoPropina}', PT_PAGO2 = '${cambioPago}' where PT_MESA = '${m.Get("mesa")}' and PT_TICKET = '${m.Get("ticket")}''"$)
Else
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO_PROPINA = '${cambioPagoPropina}', PT_PAGO2 = '${cambioPago}', PT_TARJETA = '${cambioPago}' where PT_MESA = '${m.Get("mesa")}' and PT_TICKET = '${m.Get("ticket")}'"$)
Log($"update PEDIDO_TICKET set PT_PAGO_PROPINA = '${cambioPagoPropina}', PT_PAGO2 = '${cambioPago}', PT_TARJETA = '${cambioPago}' where PT_MESA = '${m.Get("mesa")}' and PT_TICKET = '${m.Get("ticket")}'"$)
End If
b_resumen_Click
End Sub
Private Sub b_reimprimirTicket_Click
Log(Starter.mesaActual)
' b_leyendaDescuento_Click
Private tm As Map = CreateMap("ticket":Starter.ticketActual, "pago":Starter.tipov)
listaTickets.Initialize
listaTickets.Add(tm) 'Agregamos el ticket y pago a la lista para imprimir el ticket con estos datos al llamar b_imprimirTicket_Click
imprimirEfectivo = True
b_leyendaDescuento_Click
End Sub
Private Sub cb_nuevoPagoPropina_SelectedIndexChanged (Index As Int)
cambioPagoPropina = cb_nuevoPagoPropina.SelectedItem
End Sub
Private Sub cb_nuevoPago_SelectedIndexChanged (Index As Int)
cambioPago = cb_nuevoPago.SelectedItem
End Sub
Private Sub p_transparenteCambioPagos_Click
p_transparenteCambioPagos.Visible = False
End Sub
Sub p_contScrollView_Click
p_contScrollView.BringToFront
Log("p_contScrollView TO FRONT")
End Sub
Sub p_resumenDiaTotales_Click
p_resumenDiaTotales.BringToFront
Log("p_resumenDiaTotales TO FRONT")
End Sub
Sub sftp1_PromptYesNo (Message As String)
'Requiere la libreria "JSch" (https://www.b4x.com/android/forum/threads/android-sftp-based-on-jsch-tutorial.26994/) para SFTP.
sftp1.SetPromptResult(True)
End Sub
Sub sftp1_ShowMessage (Message As String)
'Requiere la libreria "JSch" (https://www.b4x.com/android/forum/threads/android-sftp-based-on-jsch-tutorial.26994/) para SFTP.
Msgbox(Message, "")
End Sub
Sub sftp1_UploadProgress (ServerPath As String, TotalUploaded As Long, Total As Long)
'Requiere la libreria "JSch" (https://www.b4x.com/android/forum/threads/android-sftp-based-on-jsch-tutorial.26994/) para SFTP.
Dim s As String
s = "Uploaded " & Round(TotalUploaded / 1000) & "KB"
If Total > 0 Then s = s & " out of " & Round(Total / 1000) & "KB"
Log(s)
End Sub
Sub sftp1_UploadCompleted (ServerPath As String, Success As Boolean)
'Requiere la libreria "JSch" (https://www.b4x.com/android/forum/threads/android-sftp-based-on-jsch-tutorial.26994/) para SFTP.
Log(ServerPath & ", Success=" & Success)
If Success = False Then Log(LastException.Message)
End Sub