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