B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=12.2 @EndOfDesignText@ Sub Class_Globals Private Root As B4XView 'ignore Private xui As XUI 'ignore Private p_principal As Panel Dim WobbleMenu1 As WobbleMenu Dim PCLV, PCLVM As PreoptimizedCLV Private p_meseros As Panel Private clv_prods_ll, clv As CustomListView Dim prodsMap As Map ' Private p_botonesVenta As Panel Private b_continuar As Button Private l_inventarios As Label ' Private et_busca As EditText ' Private b_buscar As Button 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 ' 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 Dim reqManager As DBRequestManager 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 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 su As StringUtils Dim cs As CSBuilder Dim impresoraConectada As Boolean = False Dim errorImpresora As Int = 0 Dim Printer1 As EscPosPrinter 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 tipoPago As String = "VENTA" Dim n2t As numeroATexto 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 Dim listaFormasDePagoCB, listaFormaDePago, listaMontoDePago, listaTickets As List 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_leyendaDescuento As Panel Private b_leyendaDescuento As Button Private cb_leyendaDescuento As CheckBox Dim n As Int Private et_buscar As EditText Private p_buscar As Panel Private p_transparenteDescuento As Panel Private cb_mostrarDescuento As CheckBox End Sub 'You can add more parameters here. Public Sub Initialize As Object Return Me End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 'load the layout to Root Root.LoadLayout("principal") ' p_principal.Width = Root.Width ' p_principal.Height = Root.Height Subs.panelWH(p_principal, Root.Width, Root.Height) Subs.panelWH(p_mesa, Root.Width, Root.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,"Inventario", Chr(0xF16B), Typeface.FONTAWESOME) WobbleMenu1.SetTabTextIcon(3,"Ordenes", Chr(0xF155), Typeface.FONTAWESOME) ' WobbleMenu1.SetTabTextIcon(5,"Cinco", Chr(0xF29D), Typeface.FONTAWESOME) p_principal.Width = Root.Width p_principal.Height = Root.Height clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, (p_buscar.Top + p_buscar.Height + 5), Root.Width - 20, Root.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, 5dip, 80dip, Root.Width - 20, Root.Height * 0.80) '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. p_meseros.Width = Root.Width p_meseros.Height = Root.Height - WobbleMenu1.Height p_mesas.Width = Root.Width p_mesaAbierta.Height = Root.Height : p_mesaAbierta.width = Root.width p_mesas.Height = Root.Height - WobbleMenu1.Height p_historial.Width = Root.Width p_historial.Height = Root.Height - WobbleMenu1.Height Subs.centraPanel(p_cambioMesa, p_transparenteCambioMesa.Width) p_transparenteCambioMesa.Top = 0 : p_transparenteCambioMesa.Left = 0 p_transparenteCambioMesa.Height = Root.Height : p_transparenteCambioMesa.width = Root.width p_transparenteVerOrden.Left = 0 : p_transparenteVerOrden.top = 0 p_transparenteVerOrden.Height = Root.Height : p_transparenteVerOrden.width = Root.width Subs.panelWH(p_transparenteCierreAdmin, Root.Width, Root.Height) p_transparenteCierreAdmin.Top = 0 : p_transparenteCierreAdmin.left = 0 Subs.panelWH(p_transparenteResumen, Root.Width, Root.Height) Subs.panelWH(p_transparentePago, Root.Width, Root.Height) p_transparentePago.Top = 0 : p_transparentePago.left = 0 Subs.panelWH(p_transparenteDescuento, Root.Width, Root.Height) p_transparenteDescuento.Top = 0 : p_transparenteDescuento.left = 0 sv_resumen.Panel.LoadLayout("resumenCont") Subs.centraEtiqueta(l_pago, p_pago.Width) Subs.centraPanel(p_propina, p_pago.Width) ' Subs.centraBoton(b_pagoCerrar, p_pago.Width) Subs.centraPanel(p_botonesCerrar, p_pago.Width) 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 = Root.Height - p_botonesVenta.Height - WobbleMenu1.Height + 10 Subs.centraPanel(p_pago, p_mesaAbierta.Width) Subs.centraBoton(b_abrirMesa, Root.Width) p_botonesProds.Top = clv_prods_ll.AsView.top + clv_prods_ll.AsView.Height + 15dip ' - b_mesaCerrar.Height Subs.centraPanel(p_botonesProds, p_mesaAbierta.Width) Subs.centraPanel(p_mesaCampos, Root.Width) Subs.centraPanel(p_mesaAbierta, Root.Width) lv_historial.Height = Root.Height * 0.7 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 p_mesas.Width = Root.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("Tarjeta", "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.Height = Root.Height * 0.60 Private Label1 As Label = lv_categorias.SingleLineLayout.Label Label1.TextSize = 9dip Label1.TextColor = Colors.Black 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 B4XPage_PermissionResult (Permission As String, Result As Boolean) If Result Then Log("Tenemos permisos de bluetooth.") Log($"Resultado del CheckAndRequest: ${Result}"$) End Sub Sub B4XPage_Appear ' p_transparenteCierreAdmin.Elevation = 0 ' p_wobble.Left = 0 ' p_wobble.Height = 170 ' p_wobble.Top = Root.Height - p_wobble.Height - 50 ' p_wobble.Elevation = 10 ' p_wobble.BringToFront Starter.imprimirTicket = True reqManager.Initialize(Me, Starter.DBReqServer) B4XPages.MainPage.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 = Root.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 = Root.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_meseros.Height = Root.Height - WobbleMenu1.Height If p_mesas.Visible And Subs.revisaCierreAdmin Then B4XPages.MainPage.principal.p_transparenteCierreAdmin.BringToFront B4XPages.MainPage.principal.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) End Sub Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed 'Return True to close, False to cancel ' Log($"${lv_categorias.Visible} And ${Starter.nivelActual}, ${Starter.catActual}"$) 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_transparenteVerOrden.Visible Then Log(2) p_transparenteVerOrden.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 = 3 Or WobbleMenu1.GetCurrentTab = 2 Then WobbleMenu1.SetCurrentTab(1) WobbleMenu1_Tab1Click else if WobbleMenu1.GetCurrentTab = 1 Then B4XPages.ShowPage("Login") End If Return False 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_prods_ll ' 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 = 3 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) 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 = 3 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_prods_ll 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 = 3 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 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 = 3 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 <> '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 = 3 Then LlenaProdsLL(Null, Null) If Subs.hayPedido Then WobbleMenu1.SetBadge(3, p.GetString("ordenes"), Colors.white, Colors.red) Else WobbleMenu1.RemoveBadge(3) 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 ' Root.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 = Root.Width '' p_vistaPreviaTrans.Height = Root.Height '' Subs.centraPanel(p_vistaPrevia, Root.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") If p_transparentePago.Visible Then B4XPage_CloseRequest If Subs.revisaCierreAdmin Then p_transparenteCierreAdmin.BringToFront p_transparenteCierreAdmin.Visible = True Else p_transparenteCierreAdmin.Visible = False End If LlenaMesas(Null, Null) ' LlenaProdsLL(Null, Null) Subs.panelVisible(p_mesas, 0, 0) PCLVM.B4XSeekBar1.mBase.Visible = True ' PCLV.B4XSeekBar1.mBase.Visible = False p_meseros.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") LlenaProdsLL(Null, Null) ' PCLVM.B4XSeekBar1.mBase.Visible = False ' PCLV.B4XSeekBar1.mBase.BringToFront ' PCLV.B4XSeekBar1.mBase.Visible = True Subs.panelVisible(p_meseros, 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 End Sub Private Sub WobbleMenu1_Tab3Click ' Log("TAB 3") Subs.panelVisible(p_historial, 0, 0) p_meseros.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 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 * 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) lv_historial.AddTwoLines2(cs.Color(elColor).Append("Orden: " & rs_hist.GetString("PT_TICKET") & " - Mesa: " & rs_hist.GetString("PT_MESA")).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}, ${Root.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 lv_historial_ItemClick (Position As Int, Value As Object) 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") p_mesasItem.Width = Root.Width * 0.99 Private cs As CSBuilder cs.Initialize l_mesaX.SetTextSizeAnimated(0, 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 <> 'VENTA'") o.Position = 0 If o.GetInt("ordenes") > 0 Then WobbleMenu1.SetBadge(3, o.GetInt("ordenes"), Colors.white, Colors.red) Else WobbleMenu1.RemoveBadge(3) 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") listaFormasDePagoCB.Initialize listaFormaDePago.Initialize listaMontoDePago.Initialize listaTickets.Initialize Starter.formasDePago = 1 tipoPago = "VENTA" muestraCats clv_prods_ll.AsView.Visible = False p_buscar.Visible = False 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_mesa.Text = $"MESA ${m.Get("nombre")}"$ 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 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") 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}'"$) Log($"update CAT_MESAS set M_MESERO = '${cb_mesero.SelectedItem}', M_COMENSALES = '${cb_comensales.SelectedItem}' where M_ID = '${Starter.mesaActual}'"$) 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 p_botonesCerrar.Top = 265dip p_pago.Height = 330dip 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) 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}'"$) B4XPage_CloseRequest End If 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 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 Log("###################### " & listaFormasDePagoCB.Size) 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}'"$) Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = 'MULTI-TICKET', PT_TICKET = '${sigTicketMT}', PT_PROPINA = '0', PT_PAGO_PROPINA = '0' 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 ticketAnt As String = "" Private pagoAnt As String = "" Private descXEfectivo As String = "" For fdp = 0 To listaFormasDePagoCB.Size - 1 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) If primeraVez And tipoPago = "TARJETA" Then ' Log("INSERTAMOS TARJETA") 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 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) 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}"$)) ' Log("INSERTAMOS EN PT") ticketAnt = sigTicket pagoAnt = formaPago primeraVez = False 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}"$)) 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) 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}"$)) Log("INSERTAMOS 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 Private laPropina As String = "0" If et_propina.Text <> "" Then laPropina = et_propina.Text 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 If elEfectivo > "0" Then ' Log("INSERTAMOS DESCUENTO") '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", ticketAnt, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, elEfectivo, "TARJETA", pagoAnt, $"${Starter.mesaActual}|${sigTicketMT}"$)) End If Starter.ticketActual = sigTicketMT ' 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 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}' 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 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") sv_resumen.Panel.Height = p_resumen.Height 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 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_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.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 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 = "MM/dd/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 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}"$) cs.color(Colors.RGB(1,127,1)).Append($"Total Efectivo: ${NumberFormat2(totalEfectivo, 1,2,2,True)}${CRLF}"$).popall If imprimirAqui Then Printer1.WriteString($"Total Efectivo: ${NumberFormat2(totalEfectivo, 1,2,2,True)}${CRLF}"$) 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") End Try Sleep(1000) b_imp.Enabled = True ProgressDialogHide End Sub Sub b_imp2_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 ' 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 = "MM/dd/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 CAT_GP_CLASIF, PE_PRONOMBRE, sum(pe_cant) as cuantos, sum(pe_costo_tot) as monto from pedido join CAT_GUNAPROD on cat_gp_id = PE_PROID group by PE_PRONOMBRE order by CAT_GP_CLASIF, 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 If imprimirAqui Then Printer1.WriteString($"Fecha: ${sDate} ${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_CLASIF")}"$) If catAnt <> c.GetString("CAT_GP_CLASIF") 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 cs.Color(Colors.Green).Append($"Total ${catAnt}: ${catTotal}${CRLF}"$).pop If imprimirAqui Then Printer1.WriteString(Printer1.BOLD) Printer1.WriteString($"Total ${catAnt}: ${catTotal}${CRLF}${CRLF}"$) Printer1.WriteString(Printer1.NOBOLD) End If ' Log($">>>>>>> CAT TOTAL ${catAnt}: ${catTotal}"$ ) End If cs.Color(Colors.red).Append($"++ ${c.GetString("CAT_GP_CLASIF")} ++${CRLF}"$).pop Log($"++ ${c.GetString("CAT_GP_CLASIF")} ++${CRLF}"$) Printer1.WriteString(Printer1.BOLD) If imprimirAqui Then Printer1.WriteString($"++ ${c.GetString("CAT_GP_CLASIF")} ++${CRLF}"$) Printer1.WriteString(Printer1.NOBOLD) Private tipoAnt As String = "" catTotal = 0 End If Private elNombre As String = c.GetString("PE_PRONOMBRE") If elNombre.Length > 20 Then elNombre = elNombre.SubString2(0, 20) Log($"${elNombre} - ${c.GetString("cuantos")}"$) '${c.Position} - ${elNombre.Length} - cs.Color(Colors.DarkGray).Append($"${elNombre} - ${c.GetString("cuantos")} ${CRLF}"$).pop Private monto As String = NumberFormat2(c.GetString("monto"), 1, 0, 0, True) Private cuantos As String = c.GetString("cuantos") Private primerEspacioLargo As Int = 30 - elNombre.Length - (cuantos.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}${cuantos}..${monto} ${CRLF}"$) catTotal = catTotal + c.GetString("cuantos") ' Log($">>>> ${catAnt} - ${c.GetString("CAT_GP_CLASIF")}"$) If i = c.RowCount - 1 Then Log($"Total ${c.GetString("CAT_GP_CLASIF")}: ${catTotal}${CRLF}"$) cs.Color(Colors.Green).Append($"Total ${c.GetString("CAT_GP_CLASIF")}: ${catTotal}${CRLF}"$).pop If imprimirAqui Then Printer1.WriteString(Printer1.BOLD) Printer1.WriteString($"Total ${c.GetString("CAT_GP_CLASIF")}: ${catTotal}${CRLF}"$) Printer1.WriteString(Printer1.NOBOLD) End If End If Private tipoAnt As String = "" catAnt = c.GetString("CAT_GP_CLASIF") ' 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 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 Printer1.WriteString(Printer1.BOLD) If imprimirAqui Then Printer1.WriteString($"*** RESUMEN *** ${CRLF}"$) cs.Color(Colors.red).Append($"** RESUMEN **${CRLF}"$).pop Printer1.WriteString(Printer1.NOBOLD) For i = 0 To rsm.RowCount - 1 rsm.Position = i Private laCat As String = rsm.GetString("CAT_GP_CLASIF") 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 'COMENSALES 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 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' 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 *** ${CRLF}"$) Printer1.WriteString(Printer1.NOBOLD) cs.Color(Colors.red).Append($"** PAGOS **${CRLF}"$).pop Log("*** PAGOS ***") 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) If imprimirAqui Then Printer1.WriteString($"${elPago}${primerEspacio}${cuantos}..${NumberFormat2(pgs.GetString("monto"), 1, 0, 0, True)} ${CRLF}"$) cs.Color(Colors.DarkGray).Append($"${elPago}${primerEspacio}${cuantos}..${NumberFormat2(pgs.GetString("monto"), 1, 0, 0, True)} ${CRLF}"$).pop Log($"${elPago}${primerEspacio}${cuantos}..${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 ......... ${i}..${totalPagos} ${CRLF}"$) If imprimirAqui Then Printer1.WriteString($"${CRLF}${CRLF}${CRLF}"$) cs.Color(Colors.DarkGray).Append($"TOTAL PAGOS: .........${i}.. ${totalPagos} ${CRLF}"$).pop Log($"TOTAL PAGOS: .........${i}.. ${totalPagos} ${CRLF}"$) '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.Color(Colors.red).Append($"** PROPINAS **${CRLF}"$).pop Log("*** PROPINAS ***") Do While prop.NextRow 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}"$) 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), ".")} "$) Loop LogColor($">>>>>>> ${Ceil(25.2)}"$, Colors.red) LogColor($">>>>>>> ${Ceil(25.5)}"$, Colors.red) ' Efectivo...............$300.00 ' Tarjeta................$910.00 End If l_resumen.Text = cs 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 2.", True) Printer1.Disconnect B4XPages.ShowPage("Principal") End Try Sleep(1000) b_imp2.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 = "MM/dd/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 = "MM/dd/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") 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 = "insertPedidos2_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")) ' 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 = "insertPedido2_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")) ' 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) 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 ProgressDialogHide p_transparenteResumen.Visible = False Starter.skmt.ExecNonQuery($"delete from PEDIDO where PE_TIPO = 'EFECTIVO'"$) Starter.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_PAGO = 'EFECTIVO'"$) 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 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 = True End Sub Private Sub cb_pagoPropina_SelectedIndexChanged (Index As Int) 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 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, (70 * (Starter.formasDePago - 1)), Starter.formasDePago) End Sub Sub agregaFormaDePago(left0 As Int, top0 As Int, tag0 As Int) ' Log("agregaFormaDePago |" & top0 & "|" & tag0) p_opcionEfectivo.Visible = False Private p_num As Panel p_num.Initialize("") p_num.LoadLayout("formaPago") If Starter.formasDePago > 1 Then p_propina.Top = p_propina.Top + 70 p_formasDePago.Height = p_formasDePago.Height + 70 p_pago.Height = p_pago.Height + 70 p_botonesCerrar.Top = p_botonesCerrar.Top + 70 End If l_tipoPago2.Text = $"${Starter.formasDePago}:"$ cb_pago2.Tag = tag0 et_montoPago2.Tag = tag0 cb_pago2.SetItems(Array As String("American Express", "Visa/Mastercard Credito","Visa/Mastercard Debito", "Efectivo")) p_num.Tag = tag0 listaFormasDePagoCB.Add(cb_pago2) listaFormaDePago.Add(cb_pago2.SelectedItem) listaMontoDePago.Add(et_montoPago2) p_formasDePago.AddView(p_num, left0, top0, 340dip, 38dip) b_pagoCerrar.Enabled = False If listaFormaDePago.Size > 1 Then l_faltaMonto.Visible = True 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 = "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 = True Else ' Log(listaFormaDePago.Size) p_opcionEfectivo.Visible = False cb_opcionEfectivo.Checked = False End If Log(listaFormaDePago) End Sub Private Sub et_montoPago2_TextChanged (Old As String, New As String) ' Log("TEXT CHANGED") ' Log(Starter.totalActual) 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 ' 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 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_montoPago2_FocusChanged (HasFocus As Boolean) ' Log("FOCUS CHANGED") ' Log(Starter.totalActual) 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(Ceil(elSubTotal), 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") 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 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 Private d() As String = Regex.Split("\|", t) Log(t) 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)}'"$) 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 End If Log("Vamos a Tab1") 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_reabrirMesaMulti_Click Private t As String = Sender.As(Button).tag Private d() As String = Regex.Split("\|", t) Log(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)}'"$) 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 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) If listaTickets.Get(k).As(Map).Get("pago") = "EFECTIVO" Or cont > 0 Then 'Solo imprimimos si es el PRIMER ticket de TARJETA. Continue End If 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 = "MM/dd/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 NO. 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, 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 * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$) ' Private elTotalSumado As String = "0" 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 > 30 Then elNombre.SubString2(0, 30) If c.GetString("CAT_GP_TIPO") = "ALIMENTOS" 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 ' Log($"${c.GetString("PE_PRONOMBRE")}, ${c.GetString("DESC")}${elSubTotal}"$) Private cantXpu As String = $"${c.GetString("PE_CANT")} x ${elPU}"$ If imprimirEste Then Printer1.WriteString($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$) Log($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$) ' elTotalSumado = elTotalSumado + elSubTotal 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 Private elTotal As String = Subs.traeTotalTicketActual_P(tipoPago) ' 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)}"$) If imprimirEste Then Printer1.WriteString($"${CRLF}${n2t.NumberToWords(NumberFormat2(elTotal, 1, 2, 2, False))}"$) 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 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) 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