- Se agregó que cuando son pagos multiples, y hay efectivo, se genere una orden con pago de tarjeta que contenga todos los productos de la orden y a esa orden se le descuente el total del efectivo, asi tenemos la orden completa, con el momto correcto (tarjeta menos efectivo).

This commit is contained in:
2024-03-30 00:22:07 -06:00
parent ec62f951f4
commit f66a527ee0
3 changed files with 108 additions and 25 deletions

View File

@@ -1006,6 +1006,8 @@ Private Sub p_mesasItem_Click
Starter.comensalesActuales = m.Get("comensales")
Starter.totalActual = m.Get("subtotal")
l_mesa.Text = $"MESA ${m.Get("nombre")}"$
cb_opcionEfectivo.Checked = False
cb_mostrarDescuento.Checked = False
cb_opcionEfectivo_CheckedChange(False)
' Log(m)
b_mesaCerrar.Tag = m
@@ -1041,12 +1043,12 @@ End Sub
Private Sub p_mesasItem_LongClick
Private m As Map = Sender.As(Panel).tag
If m.Get("estatus") <> "CERRADA" Then
Log(m)
' 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)
' Log(c.RowCount)
For i = 0 To c.RowCount - 1
c.Position = i
listaMesas.Add(c.GetInt("M_ID"))
@@ -1209,6 +1211,13 @@ Private Sub b_pagoCerrar_Click
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_TIPO = 'MULTI-TICKET', PE_TICKET = '${sigTicketMT}' where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = 'MULTI-TICKET', PT_TICKET = '${sigTicketMT}', PT_PROPINA = '0', PT_PAGO_PROPINA = '0' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
Starter.skmt.ExecNonQuery($"update CAT_MESAS set M_PAGO = null, M_TICKET = null, M_ESTATUS = null, M_MESERO = null, M_COMENSALES = null where M_ID = '${Starter.mesaActual}'"$) 'Reseteamos la mesa a cerrada.
Private primeraVez As Boolean = True
'' Private descuentoAplicado As Boolean = False
Private ticketAnt As String = ""
Private pagoAnt As String = ""
Private descXEfectivo As String = ""
Log($"${listaFormaDePago}|${listaMontoDePago}"$)
For fdp = 0 To listaFormasDePagoCB.Size - 1
formaPago = listaFormaDePago.Get(fdp)
If formaPago = "Efectivo" Then
@@ -1217,17 +1226,58 @@ Private Sub b_pagoCerrar_Click
tipoPago = "TARJETA" 'Pago con tarjeta
End If
Private sigTicket As String = Subs.traeConsecutivoTicket("CERRADA", tipoPago)
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}"$))
LogColor($"${primeraVez} - ${tipoPago} - |${formaPago}|"$, Colors.Red)
If primeraVez And tipoPago = "TARJETA" Then
Log("INSERTAMOS TARJETA")
Private pa As ResultSet = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${sigTicketMT}' and PE_TIPO = 'MULTI-TICKET'"$)
Log($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TICKET = '${sigTicketMT}' and PE_TIPO = 'MULTI-TICKET'"$)
Log(pa.RowCount)
Do While pa.NextRow
Log($"${pa.GetString("PE_PROID")}, ${pa.GetString("PE_COSTO_TOT")}, ${pa.GetString("PE_TIPO")}"$)
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", _
Array As Object (pa.GetString("PE_COSTO_TOT"), pa.GetString("PE_COSTOU"), pa.GetString("PE_CANT"), pa.GetString("PE_PRONOMBRE"), pa.GetString("PE_PROID"), sigTicket, pa.GetString("PE_FECHA"), pa.GetString("PE_MESERO"), pa.GetString("PE_MESA"), pa.GetString("PE_COSTO_SIN"), "TARJETA", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Loop
Starter.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES, PT_ALMACEN, PT_PAGO2, PT_ORIGEN) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object(sigTicket, tipoPago, Subs.traeFecha, Starter.meseroActual, 1, listaMontoDePago.Get(fdp).As(EditText).text, Starter.mesaActual, listaMontoDePago.Get(fdp).As(EditText).text, Starter.comensalesActuales, "MULTI-TICKET", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Log("INSERTAMOS EN PT")
ticketAnt = sigTicket
pagoAnt = formaPago
primeraVez = False
End If
If tipoPago = "EFECTIVO" Then
Log("INSERTAMOS EFECTIVO")
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (listaMontoDePago.Get(fdp).As(EditText).text, listaMontoDePago.Get(fdp).As(EditText).text, 1, "Consumo de alimentos", "CDA01", sigTicket, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, listaMontoDePago.Get(fdp).As(EditText).text, tipoPago, formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Starter.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES, PT_ALMACEN, PT_PAGO2, PT_ORIGEN) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object(sigTicket, tipoPago, Subs.traeFecha, Starter.meseroActual, 1, listaMontoDePago.Get(fdp).As(EditText).text, Starter.mesaActual, listaMontoDePago.Get(fdp).As(EditText).text, Starter.comensalesActuales, "MULTI-TICKET", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
Log("INSERTAMOS EN PT")
descXEfectivo = listaMontoDePago.Get(fdp).As(EditText).text
End If
' If Not(descuentoAplicado) And pagoAnt <> "" And ticketAnt <> "" And descXEfectivo <> "" Then
' Log("INSERTAMOS DESCUENTO")
' Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((descXEfectivo * -1), (descXEfectivo * -1), 1, "DESCUENTO", "DESC01", ticketAnt, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, descXEfectivo, "TARJETA", pagoAnt, $"${Starter.mesaActual}|${sigTicketMT}"$)) 'Agregamos el descuento al pedido de tarjeta.
' descuentoAplicado = True
' End If
Private laPropina As String = "0"
If et_propina.Text <> "" Then
laPropina = et_propina.Text
End If
Starter.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES, PT_ALMACEN, PT_PAGO2, PT_ORIGEN) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object(sigTicket, tipoPago, Subs.traeFecha, Starter.meseroActual, 1, listaMontoDePago.Get(fdp).As(EditText).text, Starter.mesaActual, listaMontoDePago.Get(fdp).As(EditText).text, Starter.comensalesActuales, "MULTI-TICKET", formaPago, $"${Starter.mesaActual}|${sigTicketMT}"$))
' Log(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
Next
Private d As ResultSet = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as totalEfectivo from PEDIDO where PE_TIPO = 'EFECTIVO' and PE_ORIGEN = '${Starter.mesaActual}|${sigTicketMT}'"$)
Private elEfectivo As String = "0"
Do While d.NextRow
elEfectivo = d.GetString("totalEfectivo")
Loop
If elEfectivo > "0" Then
Log("INSERTAMOS DESCUENTO")
'Agregamos el efectivo como DESCUENTO en el pedido de la tarjeta.
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((elEfectivo * -1), (elEfectivo * -1), 1, "DESCUENTO", "DESC01", ticketAnt, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, elEfectivo, "TARJETA", pagoAnt, $"${Starter.mesaActual}|${sigTicketMT}"$))
End If
Else
Log(">>>>>>>> UN SOLO PAGO")
formaPago = listaFormaDePago.Get(0)
@@ -1377,6 +1427,7 @@ 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)
@@ -2153,10 +2204,12 @@ 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
@@ -2198,6 +2251,7 @@ 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
@@ -2243,7 +2297,7 @@ Private Sub cb_pago2_SelectedIndexChanged (Index As Int)
cb_opcionEfectivo.Checked = True
Else
Log(listaFormaDePago.Size)
' Log(listaFormaDePago.Size)
p_opcionEfectivo.Visible = False
cb_opcionEfectivo.Checked = False
End If
@@ -2251,27 +2305,27 @@ Private Sub cb_pago2_SelectedIndexChanged (Index As Int)
End Sub
Private Sub et_montoPago2_TextChanged (Old As String, New As String)
Log("TEXT CHANGED")
' Log("TEXT CHANGED")
' Log(Starter.totalActual)
Private subtotal As String = 0
Private enBlanco As Boolean = False
For i = 0 To listaMontoDePago.Size - 1
Log(listaMontoDePago.Get(i).As(EditText).text)
' 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)
' 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)
' 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)
' LogColor($"SOBRAN ${subtotal - Starter.totalActual}"$, Colors.red)
l_faltaMonto.Text = $"SOBRAN ${NumberFormat2((subtotal - Starter.totalActual), 1, 0, 0, False)}"$
Else
l_faltaMonto.Text = ""
@@ -2285,24 +2339,24 @@ Private Sub et_montoPago2_TextChanged (Old As String, New As String)
End Sub
Private Sub et_montoPago2_FocusChanged (HasFocus As Boolean)
Log("FOCUS CHANGED")
Log(Starter.totalActual)
' Log("FOCUS CHANGED")
' Log(Starter.totalActual)
Private subtotal As String = 0
Private enBlanco As Boolean = False
For i = 0 To listaMontoDePago.Size - 1
Log(listaMontoDePago.Get(i).As(EditText).text)
' 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)
' LogColor($"FALTAN ${Starter.totalActual - subtotal}"$, Colors.blue)
If subtotal < Starter.totalActual Then
LogColor($"FALTAN ${Starter.totalActual - subtotal}"$, Colors.red)
' 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)
' LogColor($"SOBRAN ${subtotal - Starter.totalActual}"$, Colors.red)
l_faltaMonto.Text = $"SOBRAN ${NumberFormat2((subtotal - Starter.totalActual), 1, 0, 0, False)}"$
Else
l_faltaMonto.Text = ""
@@ -2315,7 +2369,7 @@ Private Sub et_montoPago2_FocusChanged (HasFocus As Boolean)
End Sub
Private Sub cb_opcionEfectivo_CheckedChange(Checked As Boolean)
Log(">> OPCION EFECTIVO CAMBIO - ACTUALIZAMOS PEDIDO")
' Log(">> OPCION EFECTIVO CAMBIO - ACTUALIZAMOS PEDIDO")
Private desc As String = 1 / Subs.traeDescXefectivo
' Private tot As String = Subs.traeTotalTicketActual_P("VENTA")
If Checked Then
@@ -2327,13 +2381,19 @@ Private Sub cb_opcionEfectivo_CheckedChange(Checked As Boolean)
' 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}'"$)
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 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
elSubTotal = elSubTotal + c.GetString("PE_COSTO_TOT") - (c.GetString("PE_COSTO_TOT") * (c.GetString("DESC") / 100))
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)
' LogColor($">>>>> ${elSubTotal} "$, Colors.Blue)
Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_MONTO = '${NumberFormat2(Ceil(elSubTotal), 1, 0, 0, False)}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$)
If et_montoPago2.IsInitialized Then et_montoPago2.Text = Subs.traeTotalTicketActual_P("VENTA")
End Sub
@@ -2365,6 +2425,7 @@ 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
@@ -2433,7 +2494,13 @@ Private Sub b_leyendaDescuento_Click
b_imprimirTicket.Enabled = False
' If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(la_cuenta.Text) 'Solo lo marcamos como impreso si tiene venta (total > 0).
ProgressDialogShow("Imprimiendo, un momento ...")
Private cont As Int = 0
For k = 0 To listaTickets.Size - 1 'Por cada ticket y pago de la lista imprimimos un ticket.
LogColor($">>>> Forma de pago : ${listaTickets.Get(k).As(Map).Get("pago")}"$, Colors.Blue)
If listaTickets.Get(k).As(Map).Get("pago") = "EFECTIVO" Or cont > 0 Then 'Solo imprimimos si es el PRIMER ticket de TARJETA.
Continue
End If
cont = cont + 1
If imprimirEste Then
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
@@ -2626,4 +2693,20 @@ 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

View File

@@ -82,7 +82,7 @@ Version=12.8
#Region Project Attributes
#ApplicationLabel: Lanterna
#VersionCode: 1
#VersionName: 4.03.27
#VersionName: 4.03.28
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False

View File

@@ -25,6 +25,6 @@ ModuleClosedNodes5=
ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=47,48
NavigationStack=C_Principal,B4XPage_Appear,311,0,C_Principal,b_mesaCerrar_Click,1130,0,C_Principal,B4XPage_CloseRequest,320,0,C_Principal,PCLV_HintRequested,731,0,C_Principal,WobbleMenu1_Tab1Click,747,6,C_Principal,b_cierreTotal_Click,1315,0,C_Principal,b_leyendaDescuento_Click,2432,0,C_Principal,p_mesasItem_Click,1031,0,C_Principal,b_pagoCerrar_Click,1206,0,C_Principal,b_reabrirMesa_Click,2363,0
NavigationStack=C_Principal,p_cambioMesa_Click,2681,0,C_Principal,p_resumen_Click,2685,0,C_Principal,p_transparentePago_Click,2226,3,C_Principal,p_pago_Click,1194,0,Subs,guardaProductoSinGestion,1334,0,C_Principal,b_prodMenos_Click,418,0,C_Principal,b_prodMas_Click,463,0,C_Principal,b_renombraVarios_Click,2225,0,Subs,actualizaProducto,1276,0,C_Principal,b_pagoCerrar_Click,1258,6
SelectedBuild=0
VisibleModules=1,7,8,2,3,6,4,5