From 7c5e244db0d6adaa418142b2a0aac9ae92cb680d Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Thu, 22 Feb 2024 16:31:13 -0600 Subject: [PATCH] Se agregaron a la impresion del ticket, lo campos de propina, regimen fiscal, direccion fiscal y otros datos requeridos y la cantidad en letra. --- B4A/C_Principal.bas | 131 +++++++++++++++++++++++--------------- B4A/Files/principal.bal | Bin 30766 -> 30785 bytes B4A/Lanterna.b4a | 9 +-- B4A/Lanterna.b4a.meta | 11 ++-- B4A/Subs.bas | 2 + B4A/numeroATexto.bas | 135 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 230 insertions(+), 58 deletions(-) create mode 100644 B4A/numeroATexto.bas diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index f300b5d..2387516 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -92,6 +92,8 @@ Sub Class_Globals Private et_propina As EditText Private cb_pagoPropina As B4XComboBox ' Private p_test As Panel + Private tipoPago As String = "VENTA" + Dim n2t As numeroATexto End Sub 'You can add more parameters here. @@ -224,16 +226,22 @@ Sub B4XPage_Appear 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 End Sub Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed 'Return True to close, False to cancel - If clv_prods_ll.AsView.Visible Then + If p_pago.visible Then 'Si se esta mostrando el popup de pago, lo cerramos. + p_pago.Visible = False + Else If clv_prods_ll.AsView.Visible Then 'SI se muestran los clv_prods_ll.AsView.Visible = False lv_categorias.Visible = True - Else If p_pago.visible Then - p_pago.Visible = False else If p_mesa.Visible Then If Subs.revisaCierreAdmin Then p_transparenteCierreAdmin.Visible = True Else p_transparenteCierreAdmin.Visible = False p_mesa.Visible = False @@ -918,6 +926,7 @@ Private Sub p_mesasItem_Click ' Log(p_prods.Width) ' p_prods.Width = clv_prods_ll.GetBase.Width ' clv_prods_ll.Base_Resize(400,Root.Height) + tipoPago = "VENTA" clv_prods_ll.AsView.Visible = False lv_categorias.Visible = True ' Log(Sender.As(Panel).tag) @@ -1033,10 +1042,10 @@ End Sub Private Sub b_pagoCerrar_Click p_pago.Visible = False If cb_pago.SelectedItem = "Efectivo" Then - Private tipoPago As String = "EFECTIVO" + tipoPago = "EFECTIVO" Else 'Pago con tarjeta - Private tipoPago As String = "TARJETA" + tipoPago = "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}'"$) @@ -1044,11 +1053,19 @@ Private Sub b_pagoCerrar_Click Starter.skmt.ExecNonQuery($"update PEDIDO set PE_TIPO = '${tipoPago}', PE_TICKET = '${sigTicket}' where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$) ' Log($"update PEDIDO set PE_TIPO = '${tipoPago}', PE_TICKET = '${sigTicket}' 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 - + If et_propina.Text <> "" Then + laPropina = et_propina.Text +' Starter.skmt.ExecNonQuery($"insert into PROPINAS (PR_MESA, PR_TICKET, PR_PAGO, PR_PROPINA, PT_MESERO, PR_FECHA) values ('${Starter.mesaActual}', '${sigTicket}', '${tipoPago}', '${laPropina}', '${Starter.meseroActual}', '${DateTime.Date(DateTime.Now)}')"$) + End If Starter.skmt.ExecNonQuery($"update PEDIDO_TICKET set PT_PAGO = '${tipoPago}', PT_TICKET = '${sigTicket}', PT_TARJETA = '${cb_pago.SelectedItem}', PT_PROPINA = '${laPropina}', PT_PAGO_PROPINA = '${cb_pagoPropina.SelectedItem}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA'"$) ' Log($"update PEDIDO_TICKET set PT_PAGO = '${tipoPago}', PT_TICKET = '${sigTicket}' where PT_MESA = '${Starter.mesaActual}' and PT_TICKET = '${Starter.ticketActual}' and PT_PAGO = 'VENTA"$) - B4XPage_CloseRequest + Log(tipoPago) + Starter.ticketActual = sigTicket + b_imprimirTicket_Click +' Log("Close Request") +' B4XPage_CloseRequest + Sleep(1000) + WobbleMenu1_Tab1Click End Sub Private Sub cb_pago_SelectedIndexChanged (Index As Int) @@ -1146,10 +1163,12 @@ End Sub Private Sub et_inicioDia_EnterPressed If et_inicioDia.Text.trim = "INICIO DIA" Then - p_transparenteCierreAdmin.Visible = False + 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 @@ -1290,7 +1309,6 @@ Sub b_imp_Click 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) @@ -1658,17 +1676,15 @@ Private Sub b_regresarProds_Click End Sub Private Sub b_imprimirTicket_Click - Private imprimirEste As Boolean = True + Private imprimirEste As Boolean = False 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_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 ...") @@ -1698,7 +1714,6 @@ Private Sub b_imprimirTicket_Click Sleep(500) impresoraConectada = False End If - DateTime.DateFormat = "MM/dd/yyyy" Private sDate,sTime As String sDate = DateTime.Date(DateTime.Now) @@ -1718,69 +1733,84 @@ Private Sub b_imprimirTicket_Click Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) myimage = Printer1.DitherImage2D(myimage, 128) myimage= Printer1.PackImage(myimage) - -' Mesero: Donald--------- # Mesa -' Mesero: Luis----------- # Mesa -' ...........................2 - 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) Try - If imprimirEste Then Printer1.WriteString("LA LANTERNA RISTORANTE" & CRLF) - If logger Then Log("LA LANTERNA RISTORANTE" & CRLF) + If imprimirEste Then Printer1.WriteString("RESTAURANTE Y COCINA ITALIANA PEVEL" & CRLF) + If logger Then Log("RESTAURANTE Y COCINA ITALIANA PEVEL" & CRLF) + If imprimirEste Then Printer1.WriteString("RFC: RCI230918DAA " & CRLF) + If logger Then Log("RFC: RCI230918DAA" & CRLF) + If imprimirEste Then Printer1.WriteString("REG FSC: GENERAL DE LEY DE PERSONAS MORALES" & CRLF) + If logger Then Log("REG FSC: GENERAL DE LEY DE PERSONAS MORALES" & CRLF) + If imprimirEste Then Printer1.WriteString("DOM FSC: PASEO DE LAS PALMAS NO. 275, LOCAL B" & CRLF) + If logger Then Log("DOM FSC: PASEO DE LAS PALMAS NO. 275, LOCAL B" & CRLF) + If imprimirEste Then Printer1.WriteString("EXPEDIDO EN: PASEO DE LAS PALMAS NO. 275, LOCAL B" & CRLF) + If logger Then Log("EXPEDIDO EN: PASEO DE LAS PALMAS NO. 275, LOCAL B" & CRLF) + If imprimirEste Then Printer1.WriteString("TEL: 55 5207 9969" & CRLF) + If logger Then Log("TEL: 55 5207 9969" & CRLF) If imprimirEste Then Printer1.WriteString("No. Ticket: " & Starter.ticketActual & CRLF) If logger Then Log("No. Ticket: " & Starter.ticketActual & CRLF) - If imprimirEste Then Printer1.WriteString(sDate &" " & sTime & CRLF) - If logger Then Log(sDate &" " & sTime & CRLF) + If imprimirEste Then Printer1.WriteString("CDMX " & sDate &" " & sTime & CRLF) + If logger Then Log("CDMX " & sDate &" " & sTime & 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.BOLD}${Subs.alineaDerecha(Starter.mesaActual, 28, " ")}"$) - If logger Then Log($"${Subs.alineaDerecha(Starter.mesaActual, 28, " ")}"$) + 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($"${Printer1.BOLD}${Subs.alineaDerecha(Starter.mesaActual, 28, " ")}"$) +' If logger Then Log($"${Subs.alineaDerecha(Starter.mesaActual, 28, " ")}"$) ' If imprimirEste Then Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) ' If logger Then Log("ID.Cliente: " & la_cuenta.Text & CRLF) If imprimirEste Then Printer1.WriteString(" " & CRLF) - If logger Then Log(" " & CRLF) - c = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and PE_TICKET = '${Starter.ticketActual}'"$) + c = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$) If c.RowCount > 0 Then + 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") If elNombre.Length > 30 Then elNombre.SubString2(0, 30) - If imprimirEste Then Printer1.WriteString($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${Subs.alineaDerecha("$"&NumberFormat2(c.GetString("PE_COSTO_TOT"), 1, 2, 2, True), 30, ".")}${CRLF}"$) Log($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${Subs.alineaDerecha("$"&NumberFormat2(c.GetString("PE_COSTO_TOT"), 1, 2, 2, True), 30, ".")}${CRLF}"$) Next End If - c = Starter.skmt.ExecQuery($"select * from PEDIDO_TICKET where PT_MESA = '${Starter.mesaActual}' and PT_PAGO = 'VENTA' and PT_TICKET = '${Starter.ticketActual}'"$) + c = Starter.skmt.ExecQuery($"select *, ifnull(PT_PROPINA, "0") as propina 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 - If imprimirEste Then Printer1.WriteString($"${CRLF}Total: $${NumberFormat2(c.GetString("PT_MONTO"), 1, 2, 2, True)}"$) - If logger Then Log($"${CRLF}Total: $${NumberFormat2(c.GetString("PT_MONTO"), 1, 2, 2, True)}"$) +' Log(c.GetString("propina")) + Private elTotal As String = c.GetString("PT_MONTO") + If c.GetString("propina") <> 0 And c.GetString("PT_PAGO_PROPINA") = "Tarjeta" Then + 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 imprimirEste Then Printer1.WriteString($"${CRLF}Total: $${NumberFormat2(elTotal, 1, 2, 2, True)}"$) + If logger Then Log($"${CRLF}Total: $${NumberFormat2(elTotal, 1, 2, 2, True)}"$) + If imprimirEste Then Printer1.WriteString($"${CRLF}${n2t.NumberToWords(NumberFormat2(elTotal, 1, 2, 2, False))}"$) + If logger Then Log($"${CRLF}${n2t.NumberToWords(NumberFormat2(elTotal, 1, 2, 2, False))}"$) + If tipoPago <> "VENTA" Then + If imprimirEste Then Printer1.WriteString($"${CRLF}Forma de pago: ${c.GetString("PT_PAGO")}"$) + If logger Then Log($"${CRLF}Forma de pago: ${c.GetString("PT_PAGO")}"$) + End If End If - - If imprimirEste Then Printer1.WriteString(Printer1.UNREVERSE) If imprimirEste Then Printer1.WriteString(Printer1.NOBOLD) -' printer.WriteLine("------------VENTA-------------") -' printer.WriteLine("TOTAL COMPRA: $:" & total_cliente) -' Printer1.WriteString(Printer1.DEFAULTS & CRLF) If imprimirEste Then Printer1.WriteString(CRLF) - ' Printer1.WriteString(Printer1.SINGLE) - 'Printer1.WriteString("------------------------------") - ' Printer1.WriteString(Printer1.HIGH) - ' Printer1.Justify = 1 -' If imprimirEste Then Printer1.WriteString( "Nombre y Firma del cliente" & CRLF) -' If logger Then Log( "Nombre y Firma del cliente" & CRLF) -' If imprimirEste Then Printer1.WriteString(CRLF) -' If imprimirEste Then Printer1.WriteString(CRLF) -' If imprimirEste Then Printer1.WriteString(CRLF) - ' Printer1.WriteString(Printer1.DEFAULTS) - ' Printer1.WriteString(Printer1.SINGLE) -' If imprimirEste Then Printer1.WriteString("__________" & CRLF) -' If logger Then Log("__________" & 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) @@ -1803,6 +1833,7 @@ Private Sub b_imprimirTicket_Click Sleep(1000) b_imp.Enabled = True ProgressDialogHide +' B4XPage_CloseRequest End Sub Private Sub cb_pagoPropina_SelectedIndexChanged (Index As Int) diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal index 31533dfab5c08454973d400fb2db632628ad1195..f3436b7f20ea6aa7d9efe71813476b7eeae12b10 100644 GIT binary patch delta 525 zcmZXQOG`pg5XbMBg;y-Gr;8RrFO}%Ih#<(cOG#x?8Z8QgXb~x;BGRgFAmuFDwsKJ* z*4;*FWtu(h{V)jp0xsIy97QTx%#Z*1&zzY#CzOR~7Q#C+_z-txCA`$Q=yv12%3r1A zIBrNVn#Kpm>}K1zL71EpM=IAOGASjj!i-gnR`*Q9A$FJ>MfLIk;Ht9;LpmOgFx)9% z(h-CRx}0r9y-UE1GYC;sX)VeqHE5+!un~MDplN_(+|-&d+r{JTO27Psd(tzWRg8p0(-ez_~=ToZ06 z%5pgwXJgJSA;rWU;hut0x!eN@s3bfVohK6fGhvR27s4wOX2Kgq{?abWsSo>Il|io zi&~8&Np44soIF4;oG5Sk96T2Y(+TpG;zdxxo2`|V)u5dy#$9%oA%=A3 zDJLB4uclMQ6IvjOrvmYRfhA9XcP8fN&crpfz&R@Qlndcp0#~S9Rntn#Gms3AwL2GLOcP_LO6jJRO+i&2oeKIVp2`|e6b 1 Then + conDecimales = True + N = temp1(0) + losCents = temp1(1) +' Log($"Con Decimales: ${losCents}"$) + Else + N = N0 + End If +' Log(">> " & N) + If N = 0 Then + Return "Cero" 'that gets rid of that pesky special case + End If + Dim GroupsOfThree(10) As Int + Dim NumGroupsOfThree As Int = 0 + Do While N <> 0 + GroupsOfThree(NumGroupsOfThree) = N Mod 1000 + NumGroupsOfThree = NumGroupsOfThree + 1 + N = N / 1000 + Loop + + Dim Temp As String = "" + For GroupOfThree = NumGroupsOfThree - 1 To 0 Step -1 + Dim ThisGroup As Int = GroupsOfThree(GroupOfThree) + If ThisGroup <> 0 Then + If Temp.Length <> 0 Then +' If GroupOfThree = 0 And ThisGroup < 100 Then +' Temp = Temp & " y " + '' If Temp.Contains("mil y ") Then Temp = "mil " +' Else +' Temp = Temp & " " +' End If + Temp = Temp & " " + End If + Temp = Temp & NumberToWords1000(ThisGroup) + If GroupOfThree <> 0 Then +' Log($"${Temp} - ${ThousandWords(GroupOfThree)}"$) + Temp = Temp & " " & ThousandWords(GroupOfThree) + If Temp = "un mil" Then +' Log(9) + Temp = "mil" + End If + End If + End If + Next + Temp = Temp.Substring2(0,1).ToUppercase & Temp.SubString(1) + + Return Temp & $" ${moneda} ${NumberFormat2(losCents, 2, 0, 0, False)}/100 M.N."$ +End Sub + +Sub NumberToWords1000(N As Int) As String + If N < 100 Then +' Log(1) + Return NumberToWords100(N) + End If + Dim Hundreds As String = UnitWords(N / 100) & "cientos" 'Hundreds always non-blank since N < 100 already done + If UnitWords(N/100) = "nueve" Then Hundreds = "novecientos" + If UnitWords(N/100) = "cinco" Then Hundreds = "quinientos" + If UnitWords(N/100) = "siete" Then Hundreds = "setecientos" +' Log($"${N/100} - ${UnitWords(N / 100)}"$) + If UnitWords(N / 100) = "un" Then Hundreds = "ciento" + + Dim TensUnits As String = NumberToWords100(N Mod 100) 'TensUnits could be blank if digits are 00 + If TensUnits.Length = 0 Then +' Log(2) + If UnitWords(N / 100) = "un" Then Hundreds = "cien" + Return Hundreds + Else +' Log(3) + Return Hundreds & " " & TensUnits + End If +End Sub + +Sub NumberToWords100(N As Int) As String + If N < 20 Then + Return UnitWords(N) + End If + Dim Tens As String = TenWords(N / 10) 'Tens always non-blank since N < 20 already done + Dim Units As String = UnitWords(N Mod 10) 'Units could be blank if digit is 0 + If Units.Length = 0 Then + Return Tens + Else +' Log($"${Tens} - ${Units}"$) + If Tens = "veinte" Then + Return "veinti" & Units + Else + Return Tens & " y " & Units + End If + End If +End Sub \ No newline at end of file