From 166b6a56b0ff39c2e055d0cb4aa02c3950aef6d6 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Thu, 14 Dec 2023 23:15:09 -0600 Subject: [PATCH] =?UTF-8?q?14/12/23=20-=20Correcci=C3=B3n=20en=20el=20calc?= =?UTF-8?q?lulo=20del=20limite=20de=20abordo=20y=20etiqueta=20de=20info=20?= =?UTF-8?q?en=20pedido.=20-=20Se=20corrigi=C3=B3=20la=20subrutina=20que=20?= =?UTF-8?q?calcula=20el=20limite=20de=20abordo=20disponible.=20-=20Se=20ag?= =?UTF-8?q?reg=C3=B3=20que=20se=20muestre=20el=20total=20del=20pedido=20ac?= =?UTF-8?q?tual=20cuando=20se=20agregan=20productos=20al=20pedido.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/B4XMainPage.bas | 6 +- B4A/C_CheckList.bas | 2 +- B4A/C_Cliente.bas | 114 ++++++++++++++++++++++++++----------- B4A/C_Clientes.bas | 2 +- B4A/C_Nota.bas | 8 +-- B4A/C_Principal.bas | 19 ++++--- B4A/C_Productos.bas | 53 +++++++++++------ B4A/Files/checklist.bal | Bin 5795 -> 5795 bytes B4A/Files/checks.bal | Bin 33803 -> 33776 bytes B4A/Files/cliente.bal | Bin 104329 -> 104418 bytes B4A/Files/clientes.bal | Bin 6951 -> 6972 bytes B4A/Files/errormanager.bal | Bin 4243 -> 4280 bytes B4A/Files/foto.bal | Bin 3632 -> 3614 bytes B4A/Files/historico.bal | Bin 8224 -> 8649 bytes B4A/Files/login.bal | Bin 21632 -> 22339 bytes B4A/Files/mapa_rutas.bal | Bin 6748 -> 7468 bytes B4A/Files/mapas.bal | Bin 3741 -> 4150 bytes B4A/Files/nota.bal | Bin 10950 -> 11384 bytes B4A/Files/nuevocliente.bal | Bin 6207 -> 6296 bytes B4A/Files/principal.bal | Bin 69453 -> 69619 bytes B4A/Files/productos.bal | Bin 21231 -> 21698 bytes B4A/Files/ticketsdia.bal | Bin 3977 -> 4363 bytes B4A/KelloggsV4.b4a | 2 +- B4A/KelloggsV4.b4a.meta | 12 ++-- B4A/MAPA_RUTAS.bas | 2 +- B4A/Subs.bas | 4 +- B4A/kms_helperSubs.bas | 26 ++++++++- 27 files changed, 172 insertions(+), 78 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index d52b8aa..33f4f9e 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -62,7 +62,7 @@ Sub Class_Globals Private IMEN As EditText Private Entrar As Button Private Panel1 As Panel - Private ImageView4 As ImageView + Private i_engranes As ImageView Private E_SERVER As EditText Private B_SERVER As Button Private B_MACIMP As Button @@ -600,7 +600,7 @@ Sub user_EnterPressed If existe = 1 Then Subs.iniciaActividad("Principal") End Sub -Sub ImageView4_Click +Sub i_engranes_Click Entrar.Visible = False ' Starter.server = "http://201.99.139.28:1782" ' Starter.server = "http://177.244.63.54:1782" @@ -624,7 +624,7 @@ Sub ImageView4_Click If user.Text = "KMTS1" Then b_importarBD.Visible = True Else b_importarBD.Visible = False End Sub -Private Sub ImageView4_LongClick +Private Sub i_engranes_LongClick ' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) ' Subs.copiaDB(Result) diff --git a/B4A/C_CheckList.bas b/B4A/C_CheckList.bas index dff232b..9e1e1b5 100644 --- a/B4A/C_CheckList.bas +++ b/B4A/C_CheckList.bas @@ -80,7 +80,7 @@ Sub Class_Globals Private Ch_NVL_REFRIGE As CheckBox Private Ch_NVL_LIQUIDBRI As CheckBox Private Ch_COND_BANMOTOR As CheckBox - ''''' PANEL5 + ''''' p_resumenAcumulado Private Ch_FUGASGRAL As CheckBox Private Ch_FRENOS As CheckBox Private Edt_COMENTARIO As AutoCompleteEditText diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index c1abc6f..63bed03 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -275,7 +275,7 @@ Sub Class_Globals Private BP_DOE_R1 As Button Private ime As IME Dim laDist As Float - Private Panel11 As Panel + Private p_rechazoDOE As Panel Dim RMI_VALOR As String Dim errorImpresora As Int = 0 Private b_inicioFinVenta As Button @@ -400,20 +400,15 @@ End Sub Sub B4XPage_Appear clienteId = kh.traeCliente P_DOE.Visible = False - If clienteId.StartsWith("N") Then b_noVenta.Visible = False + dentroDeGeocerca = False + ' Log($"TOTAL VENTA: ${kh.traeTotalCliente}"$) B_VENTA.Visible = False b_noVenta.Visible = False + If clienteId.StartsWith("N") Then b_noVenta.Visible = False + l_doe.Text = "HAY PEDIDO DOE" ' Log(Starter.rp.Check("android.permission.BLUETOOTH_CONNECT")) - b_inicioFinVenta.Text = "INICIAR VENTA" - b_inicioFinVenta.BringToFront - If Not(Starter.enVenta) And la_cuenta.Text <> "0" Then - b_inicioFinVenta.Visible = True -' Log("EnVenta Visible") - Else -' Log("EnVenta NO Visible") - b_inicioFinVenta.Visible = False - End If + reqManager.Initialize(Me, Starter.DBReqServer) usarGeocerca = kh.traeUsarGeocerca ' Log(Subs.traeUltimaActividadBD) @@ -477,6 +472,18 @@ Sub B4XPage_Appear If c.GetString("CAT_CL_ATIENDE1") <> Null And c.GetString("CAT_CL_ATIENDE1") <> "null" Then l_atiende.Text = c.GetString("CAT_CL_ATIENDE1") l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2") + b_inicioFinVenta.Text = "INICIAR VENTA" + b_inicioFinVenta.BringToFront +' LogColor(">>>>>> EN VENTA: " & Starter.enVenta, Colors.red) + If Not(Starter.enVenta) And la_cuenta.Text <> "0" Then + b_inicioFinVenta.Visible = True +' Log("EnVenta Visible") + Else +' Log("EnVenta NO Visible") + b_inicioFinVenta.Visible = False + End If +' LogColor(">>>>>> EN VENTA: " & Starter.enVenta, Colors.red) + ' LONGITUD = 0 ' If c.GetString("CAT_CL_LONG") <> Null And c.GetString("CAT_CL_LONG") <> "null" And IsNumber(c.GetString("CAT_CL_LONG")) Then LONGITUD = c.GetString("CAT_CL_LONG") ' LATITUD = 0 @@ -508,22 +515,22 @@ Sub B4XPage_Appear ' LogColor($"${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}"$, Colors.red) If logger Then Log($"Lat: ${LATITUD}, Lon: ${LONGITUD}"$) NOMBRE = c.GetString("CAT_CL_NOMBRE") -' Log(l_total.text) - If l_total.Text = Null Or l_total.Text = "null" Then - If Not(clienteId.StartsWith("N")) Then b_noVenta.Visible = True + Log($"TOTAL DE LA VENTA: ${kh.traeTotalCliente}"$) + If kh.traeTotalCliente < 0.01 And kh.traeTotalClienteDOE < 0.01 Then + If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo. Else b_noVenta.Visible = False - If la_cuenta.Text = "0" Then + If la_cuenta.text = 0 Then CREDITO_DISPONIBLE = 10000000 CREDITO = 0 b_inicioFinVenta.Visible = False End If End If - If S1.GetString("CUANTOS") = 0 Then -' b_noVenta.Visible = True - Else 'Si ya hay venta, ocultamos el boton de "NO VENTA" - b_noVenta.Visible = False - End If +' If S1.GetString("CUANTOS") = 0 Then +'' b_noVenta.Visible = True +' Else 'Si ya hay venta, ocultamos el boton de "NO VENTA" +' b_noVenta.Visible = False +' End If If CREDITO = "1" Then Msgbox("ALTO","A este cliente no se le puede vender ya que tienen adeudo en su crédito") 'ignore B_VENTA.Visible = False @@ -599,7 +606,7 @@ Sub B4XPage_Appear Else Guardar.Visible = True End If - If Not(l_total.Text > 0) Then Guardar.Visible = True + If Not(l_total.Text > 0) And Not(kh.traeTotalClienteDOE > 0) Then Guardar.Visible = True ' If la_cuenta.text = "0" Then Guardar.Visible = True 'Abordo If l_total.Text = Null Or l_total.Text = "null" Or l_total.text = "0" Then Guardar.Visible = True 'Si no hay venta entonces "Guardar" es visible. @@ -702,6 +709,12 @@ Sub B4XPage_Appear Else B_IMP2.Enabled = False End If + If kh.traeTotalClienteDOE > 0 Then + Private cs As CSBuilder + cs.Initialize + l_doe.Text = cs.append($"Pedido DOE: $${kh.traeTotalClienteDOE}"$).color(Colors.red).append(CRLF).Append($"TOTAL PEDIDO: $${(kh.traeTotalCliente+kh.traeTotalClienteDOE)}"$).Popall + ' l_doe.Text = $"Pedido DOE: $${kh.traeTotalClienteDOE}${CRLF}TOTAL PEDIDO: $${(kh.traeTotalCliente+kh.traeTotalClienteDOE)}"$ + End If If Subs.revisaImpresa Then Guardar.Visible = True End Sub @@ -733,7 +746,7 @@ End Sub Sub GPS_LocationChanged (Location1 As Location) 'Este codigo se corre desde Tracker/flp_LocationChanged b_ubicacion.TextColor = Colors.Gray - Sleep(200) +' Sleep(200) b_ubicacion.TextColor = Colors.White If logger Then Log($"${Location1.Latitude}, ${Location1.Longitude}, ${Location1.Accuracy}"$) @@ -760,6 +773,7 @@ Sub GPS_LocationChanged (Location1 As Location) Else l_ubicacion2.TextColor = Colors.Black dentroDeGeocerca = True + Log("dentro de geocerca") End If '''' GEO CERCA @@ -795,9 +809,9 @@ Sub GPS_LocationChanged (Location1 As Location) ' Log($"${gps_boton_doe}|${clienteConPromo}"$) - If gps_boton_doe = "1" And clienteConPromo = "0" Then b_whats.Visible = True + If gps_boton_doe = "1" And clienteConPromo = "0" And revisaExistenciasDOE Then b_whats.Visible = True If Not(clienteDeudor) Then B_VENTA.Visible = True 'Si el cliente no tiene adeudo, habilitamos el boton de venta - pedido_doe_muestra + If Not(p_rechazoDOE.Visible) Then pedido_doe_muestra Else b_noVenta.Visible = False B_VENTA.Visible = False @@ -838,6 +852,10 @@ Private Sub B4XPage_CloseRequest As ResumableSub else if p_promowhats.Visible Then P_INF_GENERAL.Visible = True p_promowhats.Visible = False + else if p_rechazoDOE.Visible Then + p_rechazoDOE.Visible = False + BP_DOE_A.Visible = True + BP_DOE_R.Visible = True Else Msgbox("Presione Imprimir y Guardar para continuar","Aviso") 'ignore End If @@ -906,7 +924,6 @@ Sub Guardar_Click If logger Then Log("Cerramos Cliente, iniciamos Principal") ' B4XPages.ShowPage("Principal") - B4XPages.MainPage.productos.reiniciarlistaProds = True B4XPages.MainPage.productos.prodsMap.Initialize B4XPages.MainPage.promos.promosMap.Initialize @@ -921,6 +938,7 @@ Sub Guardar_Click Else b_inicioFinVenta.Visible = False Starter.enVenta = False +' LogColor(">>>>>> EN VENTA: " & Starter.enVenta, Colors.red) Subs.iniciaActividad("principal") B4XPages.ShowPageAndRemovePreviousPages("Principal") End If @@ -3773,7 +3791,7 @@ Private Sub b_aceptarrpomo_Click ' l_promowhats.Text = c.GetString("CAT_CL_NOMBRE") ' End If ' c.Close - Private almadoe As Cursor = Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMaCEN") + Private almadoe As Cursor = Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN") almadoe.Position = 0 LogColor(almadoe.GetString("ID_ALMACEN"),Colors.Blue) If almadoe.GetString("ID_ALMACEN") = "3" Then @@ -3809,7 +3827,7 @@ Private Sub b_aceptarrpomo_Click Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps,Id_Almacen,Starter.rutaV,c.GetString("TOTAL_CLIE_SIN"))) Starter.skmt.ExecNonQuery("delete from pedido3") Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") - Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, 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_FECHA, 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 ") 'Mod por CHV - 220302 - Agregué PE_FECHA al select/insert + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, 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_FECHA, 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 ") ' starter.skmt.ExecNonQuery2("INSERT INTO") p_promowhats.Visible = False P_INF_GENERAL.Visible = True @@ -3888,7 +3906,7 @@ Private Sub b_geopass_Click Log($"${Starter.DBReqServer}, ${et_geopass.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$) et_geopass.Text = "" End If - If Not(clienteId.StartsWith("N")) Then b_noVenta.Visible = True + If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo. p_pideGeoPass.Visible = False ime.HideKeyboard ' Log("Guardamos coords") @@ -3972,17 +3990,21 @@ Private Sub BP_DOE_A_Click Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction P_DOE.Visible = False + B4XPage_Appear End Sub Private Sub BP_DOE_R_Click Dim result As Int result = Msgbox2("El cliente perderá el descuento si cancela el pedio, se cancela el pedido ?", "Pedido Cancela", "SI", "", "NO", LoadBitmap(File.DirAssets, "alert2.png")) If result = DialogResponse.Positive Then - Panel11.Visible = True + P_DOE.Visible = False + p_rechazoDOE.BringToFront + p_rechazoDOE.Visible = True BP_DOE_A.Visible = False BP_DOE_R.Visible = False Else - P_DOE.Visible = False + P_DOE.Visible = True +' Log("yyy") End If End Sub @@ -4000,8 +4022,9 @@ private Sub pedido_doe_muestra If YA_TIENE_PEDIDO_DOE = 0 Then C5=Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE_DOE from PEDIDO_DOE WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") C5.Position = 0 - If C5.GetString("CLIENTE_DOE") >0 Then - P_DOE.VISIBLE = True + If C5.GetString("CLIENTE_DOE") > 0 Then +' Log("xxx") + P_DOE.Visible = True P_DOE.Elevation = 100 P_DOE.BringToFront C6=Starter.skmt.ExecQuery("select PE_PROID, PE_PRONOMBRE, PE_CANT, PE_COSTO_TOT from PEDIDO_DOE where PE_CLIENTE IN (Select CUENTA from cuentaa)") @@ -4046,7 +4069,7 @@ Private Sub BP_DOE_R1_Click motivo = motivo & " " & e_comm.Text BP_DOE_A.Visible = True BP_DOE_R.Visible = True - Panel11.Visible = False + p_rechazoDOE.Visible = False P_DOE.Visible = False c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO_DOE where pe_cliente in (Select CUENTA from cuentaa) ") If c.RowCount>0 Then @@ -4059,6 +4082,7 @@ Private Sub BP_DOE_R1_Click Starter.skmt.ExecNonQuery("delete from PEDIDOS_DOE_ENTREGA where PC_CLIENTE in (Select CUENTA from cuentaa)") Starter.skmt.ExecNonQuery2("insert into PEDIDOS_DOE_ENTREGA (PC_CLIENTE, PC_ENTREGA) VALUES (?,?) ", Array As Object(clie_id,motivo)) Starter.skmt.ExecNonQuery("delete from pedido_DOE where pe_cliente in (Select CUENTA from cuentaa)") + Subs.bitacora(Subs.fechanormal(DateTime.Now),usuario, Id_Almacen, ruta_tienda, "Rechazo DOE", la_cuenta.text, Subs.fechanormal(DateTime.Now), "", Starter.lat_gps, Starter.lon_gps, "2", "", "") P_DOE.Visible = False End Sub @@ -4067,15 +4091,39 @@ Private Sub b_inicioFinVenta_Click If Starter.enVenta Then Subs.bitacora(Subs.fechanormal(DateTime.Now), usuario, Id_Almacen, ruta_tienda, "Termina Venta", la_cuenta.text, "", Subs.fechanormal(DateTime.Now), Starter.lat_gps, Starter.lon_gps, precision, motivoNoVenta, "") Starter.enVenta = False + LogColor(">>>>>> EN VENTA: " & Starter.enVenta, Colors.red) Subs.iniciaActividad("principal") B4XPages.ShowPageAndRemovePreviousPages("Principal") Else Subs.bitacora(Subs.fechanormal(DateTime.Now),usuario, Id_Almacen, ruta_tienda, "Inicia Venta", la_cuenta.text, Subs.fechanormal(DateTime.Now), "", Starter.lat_gps, Starter.lon_gps, precision, motivoNoVenta, "") Starter.enVenta = True + LogColor(">>>>>> EN VENTA: " & Starter.enVenta, Colors.red) End If b_inicioFinVenta.Visible = False End Sub Private Sub P_DOE_Click +End Sub + +Private Sub p_rechazoDOE_Click + +End Sub + +'Revisa si hay suficiente existencia para dar la promo DOE. +Sub revisaExistenciasDOE As Boolean 'ignore + Private suficiente As Boolean = True + Private p As Cursor = Starter.skmt.ExecQuery($"select * from cat_gunaprod2 where cat_gp_id in ('1008027226', '1008027228', '1008013799')"$) + If p.RowCount > 1 Then + For i = 0 To p.RowCount - 1 + p.Position = i + If p.GetString("CAT_GP_ID") = "1008027226" And p.GetString("CAT_GP_ALMACEN") < 2 Then suficiente = False + If p.GetString("CAT_GP_ID") = "1008027228" And p.GetString("CAT_GP_ALMACEN") < 1 Then suficiente = False + If p.GetString("CAT_GP_ID") = "1008013799" And p.GetString("CAT_GP_ALMACEN") < 1 Then suficiente = False + Next + End If +' 2, "LECHE ALL BRAN CHOCO 236ML", "1008027226" +' 1, "LECHE ALL BRAN NUEZ 236ML", "1008027228" +' 1, "LECHE CHOCO MELVIN 236ML", "1008013799" + Return suficiente End Sub \ No newline at end of file diff --git a/B4A/C_Clientes.bas b/B4A/C_Clientes.bas index 2a940e6..3b55e8f 100644 --- a/B4A/C_Clientes.bas +++ b/B4A/C_Clientes.bas @@ -147,7 +147,7 @@ Sub Activity_KeyPress (key As Int) As Boolean 'ignore End Sub Sub BUSCA_TextChanged (Old As String, New As String) - Log($"${Old}|${New}"$) +' Log($"${Old}|${New}"$) q_buscar = "%" & busca.Text & "%" c2 = Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ?) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar,"DIA_VISITA")) ListView1.Clear diff --git a/B4A/C_Nota.bas b/B4A/C_Nota.bas index 669fd68..893d06e 100644 --- a/B4A/C_Nota.bas +++ b/B4A/C_Nota.bas @@ -256,7 +256,7 @@ Sub borra_Click Private textoExtra As String = "" If pedidoMostrado = "DOE" Then textoExtra = " DOE" If kh.clienteConDOE And pedidoMostrado = "NORMAL" Then textoExtra = " (Sin DOE)" - If folio = "0" Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512 'Para que el abordo borre siempre agregar -> " Or Subs.clienteActual = "0"" + If folio = "0" or 1 = 1 Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512 'Para que el abordo borre siempre agregar -> " Or Subs.clienteActual = "0"" result = Msgbox2($"¿Seguro que desea borrar el pedido${textoExtra}?"$,"Cancelar pedido", "Si", "", "No", LoadBitmap(File.DirAssets,"alert2.png")) 'ignore If result = DialogResponse.POSITIVE Then ' c = Starter.skmt.ExecQuery("select PE_PROID, PE_CANT, PE_TIPO, PE_CEDIS FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") @@ -446,7 +446,7 @@ Private Sub clv_pedidos_ItemLongClick (position As Int, Value As Object) c.Close c = Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_PRONOMBRE = ? order by PE_PRONOMBRE asc", Array As String(Value) ) c.Position = 0 - If c.GetString("PE_FOLIO") = "0" Then 'Para que el abordo borre siempre agregar -> " Or Subs.clienteActual = "0" " + If c.GetString("PE_FOLIO") = "0" or 1 = 1 Then 'Para que el abordo borre siempre agregar -> " Or Subs.clienteActual = "0" " result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore If result = DialogResponse.POSITIVE Then Private prod As Cursor = Starter.skmt.ExecQuery2("select PE_PROID, PE_CANT, PE_CEDIS FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) @@ -513,7 +513,7 @@ Private Sub lv_prodsDOE_ItemLongClick (Position As Int, Value As Object) If kh.revisaImpresa Then ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False) Else - If folio = "0" Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512 poner esto para borrar abordo "Or Subs.clienteActual = "0"" + If folio = "0" or 1 = 1 Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512 poner esto para borrar abordo "Or Subs.clienteActual = "0"" result = Msgbox2("Seguro que desea borrar el pedido?","Cancelar pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore If result = DialogResponse.POSITIVE Then c=Starter.skmt.ExecQuery2("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS = ?", Array As String("DOE")) @@ -521,7 +521,7 @@ Private Sub lv_prodsDOE_ItemLongClick (Position As Int, Value As Object) For i = 0 To c.RowCount - 1 c.Position = i TIPO = c.GetString("PE_TIPO") - If c.GetString("PE_TIPO") = "VENTA" or c.GetString("PE_TIPO") = "DOE" Then + If c.GetString("PE_TIPO") = "VENTA" Or c.GetString("PE_TIPO") = "DOE" Then Log($"update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ${c.GetString("PE_CANT")} where cat_gp_id = 4{c.GetString("PE_PROID")}"$) Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID"))) Else diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 7fff487..d2c9e38 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -130,7 +130,7 @@ Sub Class_Globals Private l_monto_c3 As Label Private B_BOLETA As Button Private B_MAPA_RUTA As Button - Private Panel5 As Panel + Private p_resumenAcumulado As Panel Private L_CUOTA1 As Label Private L_CUOTA2 As Label Private L_CUOTA3 As Label @@ -278,7 +278,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) ' kh.centraPanel(PNL_ACCESO, Root.Width) P_RESUMEN.Top = 0 : P_RESUMEN.Left = 0 'Panel Resumen - Panel5.Top = 0 : Panel5.Left = 0 ' Panel Resumen Acumualado +' p_resumenAcumulado.Top = 0 : p_resumenAcumulado.Left = 0 ' Panel Resumen Acumualado p_downloadPDF.Top = 0 : p_downloadPDF.left = 0 P1.Width = GetDeviceLayoutValues.Width P1.Height = GetDeviceLayoutValues.Height @@ -2389,7 +2389,7 @@ Sub Resumen_Click L_MONTOD.Text = c.GetString("MONTO_DIA") L_MONTOD.Text = Subs.sumaPedido(Subs.traeCliente) 'Trae el monto sin el redondeo que a veces hace el SUM(). ' Log(Subs.sumaPedido(Subs.traeCliente) & " - " & L_MONTOD.Text) - Subs.sumaPedido(Subs.traeCliente) +' Subs.sumaPedido(Subs.traeCliente) l_cuantosc.Text = c.GetString("CLIENTES_DIA") l_cuantosn.Text = b.GetString("CUANTOS") L_CUANTOST.Text = NumberFormat2((l_cuantosc.Text + l_cuantosn.Text), 1, 0, 0, False) @@ -2398,8 +2398,7 @@ Sub Resumen_Click l_efectiva.text = Round2(efectiva*100,2) l_ctast.Text = d.GetString("TOTAL_VISITAR") 'l_porvisitar.Text = e.GetString("POR_VISITAR") - drop = (c.GetString("CLIENTES_DIA") + b.GetString("CUANTOS"))/ d.GetString("TOTAL_VISITAR") - l_drop.Text = Round(drop * 100) + l_drop.Text = Round((L_CUANTOST.Text / l_porvisitar.text) * 100) If l_drop.Text + l_efectiva.Text < 100 Then ImageView3.Bitmap = LoadBitmap(File.DirAssets, "tache_rojo.png") Else If l_drop.Text + l_efectiva.Text > = 100 And l_drop.Text + l_efectiva.Text < 130 Then @@ -2543,14 +2542,14 @@ Sub b_cuotas_Click L_META6.Text = 0 End If DDD.Close - Panel5.BringToFront - Panel5.Visible = True + p_resumenAcumulado.BringToFront + p_resumenAcumulado.Visible = True Panel2.Visible = False Panel1.Visible = False End Sub Sub B_CUOATA_C_Click - Panel5.Visible = False + p_resumenAcumulado.Visible = False Panel2.Visible = True Panel1.Visible = True End Sub @@ -3265,4 +3264,8 @@ End Sub Private Sub P_RESUMEN_Click +End Sub + +Private Sub p_resumenAcumulado_Click + End Sub \ No newline at end of file diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index 24139f2..aac0641 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -99,6 +99,7 @@ Sub Class_Globals Private l_limiteAbordoDisp As Label Dim dispAbordo As String Private l_avisoAbordo As Label + Private l_infoPedido As Label End Sub 'You can add more parameters here. @@ -162,13 +163,16 @@ Sub B4XPage_Appear ' list_prodsPedido.Initialize ' Log("list_prodsPedido.Initialize") clienteId = Subs.traeCliente + l_infoPedido.Text = "" If clienteId = 0 Then - dispAbordo = NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, false) + dispAbordo = kh.traeDisponibleAbordo l_limiteAbordoDisp.Text = $"Disp Abordo: $${dispAbordo}"$ l_limiteAbordoDisp.Visible = True + l_infoPedido.Visible = True b_rmi.Visible = False Else l_limiteAbordoDisp.Visible = False + l_infoPedido.Visible = True End If rutaUsuario = Subs.traeRuta If p_rmi.Visible Then p_rmi.Visible = False @@ -191,7 +195,7 @@ Sub B4XPage_Appear query = "cat_gunaprod" query2 = "COUNT_GUNAPROD" End If - clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, 130dip, Root.Width + 10, Root.Height * 0.68) 'Cambiamos el tamaño y posición de la lista de productos + clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, (lfila.Top + lfila.Height), Root.Width + 10, Root.Height * 0.68) '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 ajuste al nuevo tamaño. If B4XPages.MainPage.bTerminarClicked Then lv_catalogos.Visible = True @@ -213,6 +217,7 @@ Sub B4XPage_Appear lv_catalogos.Visible = True p_botonesVenta.Visible = False p_botonesVenta.Top = clv_prods_ll.AsView.top + clv_prods_ll.AsView.Height - 10 + l_infoPedido.Top = p_botonesVenta.Top + p_botonesVenta.Height + 5dip lv_promos.Visible = False End If Dim label1 As Label @@ -640,7 +645,7 @@ Sub b_prodMas_Click laCant.Text = "0" et_pCant_TextChanged(100, 0) End If - dispAbordo = NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False) + dispAbordo = kh.traeDisponibleAbordo If Subs.traeCliente = 0 And dispAbordo < 1 Then Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False)) laCant.Text = NumberFormat2((laCant.Text - 1), 1, 0, 0, False) @@ -704,7 +709,7 @@ Private Sub et_pCant_TextChanged (Old As String, New As String) Subs.actualizaProducto(almacenX, precioX, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) ' End If Log("REVISAMOS ABORDO DISP") - dispAbordo = NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False) + dispAbordo = kh.traeDisponibleAbordo If Subs.traeCliente = 0 And dispAbordo < 1 Then Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False)) laCant.Text = NumberFormat2(Old, 1, 0, 0, False) @@ -743,21 +748,35 @@ Sub cuentaProds ' Log(Subs.totalPedido) If lfila.Text = "RMI" Then l_mDisponible.Visible = True Else l_mDisponible.Visible = False l_mDisponible.Text = $"Disponible: $${Subs.totalPedido}"$ - -' Log($"${kh.traeLimiteAbordoXInventario} - ${kh.traeVenta} - ${kh.traeLimiteAbordoWeb}"$) -' Log($"LIMITE ABORDO DISPONIBLE: ${NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False)}"$) - dispAbordo = NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False) - l_limiteAbordoDisp.Text = $"Disp Abordo: $${dispAbordo}"$ - If dispAbordo < 1 and kh.traeCliente = 0 Then - b_continuar.Visible = False - b_terminar1.Visible = False - l_avisoAbordo.BringToFront - l_avisoAbordo.Visible = True + + Log(clienteId) + If clienteId = "0" Then + LogColor($" DispoAbordoWeb: ${kh.traeLimiteAbordoWeb}${CRLF} + Limite X Inventario: ${kh.traeLimiteAbordoXInventario}${CRLF} + Venta: ${kh.traeVenta}${CRLF} + Venta Abordo: ${kh.traeVentaAbordo} "$, Colors.red) + l_infoPedido.Text = $"LimiteAbordo: ${NumberFormat2(kh.traeLimiteAbordoWeb,1,2,1,True)} TotalInv: ${NumberFormat2(kh.traeLimiteAbordoXInventario,1,2,1,True)} + Venta: ${NumberFormat2(kh.traeVenta,1,2,1,True)} VentaAbordo: ${NumberFormat2(kh.traeVentaAbordo,1,2,1,True)} "$ +' Log($"${kh.traeLimiteAbordoXInventario} - ${kh.traeVenta} - ${kh.traeLimiteAbordoWeb}"$) +' Log($"LIMITE ABORDO DISPONIBLE: ${NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False)}"$) + dispAbordo = kh.traeDisponibleAbordo + l_limiteAbordoDisp.Text = $"Disp Abordo: $${dispAbordo}"$ + If dispAbordo < 1 And kh.traeCliente = 0 Then + b_continuar.Visible = False + b_terminar1.Visible = False + l_avisoAbordo.BringToFront + l_avisoAbordo.Visible = True + Else + l_avisoAbordo.Visible = False + b_continuar.Visible = True + b_terminar1.Visible = True + End If Else - l_avisoAbordo.Visible = False - b_continuar.Visible = True - b_terminar1.Visible = True + Log("No ABORDO") + l_infoPedido.Text = $"Total pedido: $${kh.traeTotalCliente}"$ End If + + ' Log($"Total Prods: ${c.GetString("cant")}, Total Compra: $$1.2{c.GetString("total")}"$) c.Close End Sub diff --git a/B4A/Files/checklist.bal b/B4A/Files/checklist.bal index d05448b9c6a3fdf54b65b79af08d06961cf207bd..68764d693f3c94194452c22b609bb4b2f46b44df 100644 GIT binary patch delta 50 zcmZ3iyI6OFF)!0RrpXF?mXq^%H!$5|+N{8r$H>&hw0Q!5F*8#G(`HuTAV#2)&5
_RnLv!mYxA@=|1P-62ki3JBZ9bQGlMyDcd4B;j6O03vWhs{BV#;CKtXzAR F4FF*h7{LGl diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal index 72914a5c86e90cd02a11556eb5a65599d939ad5a..97f5676407337b8ff592d94a831e6ab0b1dddcce 100644 GIT binary patch delta 4397 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 delta 4096 zcmZ`+c~Dem5}zIwnTLUKB;1G~L84SR!YP-KAQ@1(qTm%o$JIhtMnOzwTf6 z*Yj=d? zvfTBT7ym1&J+yaL)7-R%rGIXnG^feWYfsL-pVVt(Ry*`Lo_>1N!R*1ze}1K}Yuxyc zHO1xJz-wA{;y|=op3`TnwwOBv^yce^fsujj9~o~-bW z*Vsm!-4h>NoYuFkT4UD~5HX}a?;gLoEg?_YGV@=@N*;y{o%;7+R_;$OxsNZ_7s%On z+Kyh0=Hk!Y&lVm!cQf(llE{4zW7@jEYU(VD*X?+bZ>_n0m!nqkKgmKZ>Ocq<0xioM{h0R^X@VAIerYI7|CB5_IzsjSRY=ns-0 z7zGc9$33_vQxm+KG)|V5LI*rE4iFAladMR6Rx(8LU5>UXe7A@>Sr8?OuUl%2iq^KF8@pQSS7_|RViZ22o`>6v^ju@4%Ni4=D4IHn2Y8rH2RI@g;D{70ip@zHAFj@z z1Ej4n%(l~O#xiqMm~C7Dc@ZS65ym-wv)0h0$JnF68Mt8`ge#9psm8|WsEo#Z)bO*^ zlW8xFsw8C{5f5u1+^SaULC8uSE?y6_aU_)ne!A9L=vgks5YN}*^}^o^eZDkwl-D)r z^9Dp=&qh$Q+2L<<#|i31=T+3Bas$LF`RDOruLV{V`i8s#*wsRNHnh@v#(xMaTw(nF zAe=c1T{1_nFv~rpe{x;GoiMol7&A9P1UnwCu;RZna*aKkz(ao0gzK?B&gvxBQNaD) z;H^>cX4gp1)_l~MeiOGiLMR)Fwqvak({b1u zg3vz;*1~B)6=$-jrl(EN(9Pnkg_W?jbEg(k0M7E!p?48DTAh6r?##s!VF0}p=TKin zbGvpMUGlj&-~pcEUDLPS7F)N_C{M@+71u;QGWi(u*kE)J8yT4k%|bxK*(B3uDT5#Y zrVZg(#d34h=*W~s-Y7V{Ds_l-IdRM(TF{;v{dPgDu%F?D zU50?1@!MUnUcMS|&;#alYV%cn@eF%cX*wz$ffkt-E16oUghw zn_XV2ke?@E?4QYe_VQh5h6xs6$&{rEv^W4^I8+GX(1DIR@Kbh34o7C%^g#Tk7!;kg zI#>;GL8t`3U0Pj`LdCpxc2bF306sO~gw@mPQ&ZTB{1KATd>_=oB_7ZESA|<$l0tgf6To z0WW2j)Rq)e0!g%Zx)v{{rZ8i=(%Dr>*3d0s{rdr0IlCp6UHq(kQxM?%gLLik>9XK; zDu~Jp*!Q_}aKT%ofy^Uz_{jm9mkS+W5qg)>iv02b)wBx}OCi^qpBcjNGB$SB`SQEB zJB4J63(LS8`wxN*4ore6{2m@?#aDlP$aDz_yN1upsMGFFBY77aB5`AnG@h(t9cOW! zzM{VrGQ|x_)k1r5VY@k6f~jmILWSqb!Aed)C-&J}-88{)3kyF2^?1lL3@misM@Q$- zFf+~a*{`yEW`gB&G&^L>@+Adr$SSe$r8P~{`>Qm)CTMPBd4(}e?F1Uyp-t1=k^ZTIXrZmIhFZMI`1^P( zxZ%ho`X9!33EEWiBIA`I?-!Z_wUfaaEo&gm^tlEk=Q7s9fHVR@ZG#iE5J#BND&YyF MJ+;9NI61)o0mk8h2mk;8 diff --git a/B4A/Files/clientes.bal b/B4A/Files/clientes.bal index 25f42945adfe1fecf10e8431b621c7c658979df3..a001f51efc9a8401a736418d5f361d3c02b2f1d3 100644 GIT binary patch delta 225 zcmV<703QFRHoP_k1poj5L9qpO0)NW@001A02mk;8000C4Rgb|6f*`a?C9DWp zDc`RnW5TkbD?4`zH0w9B=a^@#)D`2hP2F{16WF$4A&Im>52 delta 204 zcmV;-05ku*Hm5cP1poj5EU^W30)Msu001A02mk;8000C4EsntofgtW&3+vqx#I27VZ3z8}7qC*rDtL3N}ITd=yLmVFWT+@xAn zIDJKLbW_)87`SnWJA;~9gf|NpWif}w0G9|k4x|y<@@~m-VCjLOpOEFu!8lQvA}3gI zZ1OW*OJ2wzl5##Sz1cL+=mzBtVN?=>mRFM9w?P0T)<8~*5ug4+sKfDIuK*O^} G1NIlV$y$B@ diff --git a/B4A/Files/errormanager.bal b/B4A/Files/errormanager.bal index b7bc8715b092b4687570f06cf321d5af1d3ff923..50d6f7373b0d11e3d8905266c93188303a8d694f 100644 GIT binary patch delta 127 zcmV-_0D%9KA-Ew01poj5&#?tb0T6`%001A02mk;8000C43saL`0U%Zt#1|B0<|Stq zBm{=I-6oc%uHRJ*SV^y=ZlC!S?3XG&E{(Xx_^_;Uh!G)+>h< tPKkDL2TeA7e1-7|9{@{A9E|_~ diff --git a/B4A/Files/foto.bal b/B4A/Files/foto.bal index 9afc56589139fa79f7eaed7ceba1d56b3639d01f..011004043931b0f1d7174b71f7e7e864687d6484 100644 GIT binary patch delta 161 zcmdlWGf!s2Tt>#g&GQ)bSvFr|eakx8ms4W$I!;}727U$x22S_M5bBX~8e;{To2NEE_!UrT+8NoIL bO#aI$B@8k`7Kj;BfP@GTa|TRaz&il|HAfd7 delta 180 zcmbOyvq5IVTt>#A&GQ)bSvXl47#I?B3NjKmpJjc^%H|H_GX9_J$SFN}DW~q_|J-bh z9+Pi!1^`JdE)z!2$?;sCldtkv2YLY&G6OLKr#Fyb0x^7m1jsmuurEy556JKbVoot2 q5dg%D6S2t>S(cLD%7vmCqt diff --git a/B4A/Files/historico.bal b/B4A/Files/historico.bal index d98e227d21698b3eb415f64cdfdb7eef36be6d69..0b25667241ae5848c1147a0007f41397741bd843 100644 GIT binary patch delta 618 zcmZ4BaMGEVm4Si5kC}mi3rI_EiuWae`tQ2 zVew$~f`vQ2hlCd2-*#q0ZepJB%>_)4gj{vc6fCQGp3^-yJMG}dk}gL_OXWzm+rEN! z+&ya(m}MMnotle_I4mV6hxqK={>fk7gIQnta@~ZQ9XZ z-W&7&JXmjRdn)~Poc-&R;_k^UNx_xp4ZG{t+--f_mSks<_Vhyk|6fu5e|Bfe@0&1n z!_JFWUms1)yZ8CF;o{Ia3WBn>6Qhq;@wKyGee`0>t>0$~0>tGv&A#=eo{@o}aPvbZ zb2b4Wi@_Wzh&M}cN-|H*<`>!Q%EQ9QHHC?RK@O;dkzsQ%Zvrz@1k>aR5|W$G3Ak`` zfkI9mB$qOIo~*{?1|F`>elksrj5(8c^Sd%{Iju6eKuU=*ce0v*G8ZU1MSz$yck%%# zc}A|u7lp+qcL|6Ka{w&>8WBFIguScY z&(5{|ANB3@E9QI3m9G~7os_>hoY|ah^E^&T=E(~3Y?Jdu_%@&BVPWKoV`N~E11ezD z*nE>Wftl$aYM!JRQ@vM-O)WCal+AWKnEiZO5U1yKc%wcMca1>4BNG`UpK Ij){>003+RT(EtDd diff --git a/B4A/Files/login.bal b/B4A/Files/login.bal index b119ab238a74edf25c9e1ac04c78601a84a6fab2..260e6870209818761379c5dcfb697ae6820a140b 100644 GIT binary patch delta 4510 zcmcIn2~gD68Q1VPSKhzQG}B|-&)SD*sr zOB13vDn`?2o2X2V+Gr&iYuag=IGs!zW5$|J+S*Ag*0eKa#?tToVJ{*PXDBo8@xAx| z-uJ%u`_3JBoqX^HadT#|SXkl0}@M=Gr{XZNdmI4 z%(boU+gsXP8FFV!lS$Xs*xc@dO9QgEDxK(u`mQeee^-~OGiIiV{eZ|-xK!gv!C|2_ zNc-Rr;Yfu#=Ue^vkqR8yfHRBb#4?Q+7qFG?*FJ4bzgFF(>;A0VHAqI+^Ij2G_s94dZc${3!hn$2LdKe%`K&TMbSSu2qM~ALNzQKh)*68FTv#{mmn9j#alo8ULDp}^*A`P4>6o!(e$%qq>x zhB2-pnwqb^)!bZ9g%s8|m|E2o{illyGbxnFxH&JgxD;<F%uWqBmq!mX+#^Fe%s%!R~qvy}dLq zC$|hb+}~%;CV|=`lA)5}BO-RSa~qJk%99x(Z78mjo@L%)@fONj-nFZ~vxRXf<}nHM zqwL=E`=FR7BK|PW6~Pei*fZAGDtXADQlz9L%d%vK(&9|(7Ztr=bC$kLx6EJZ35$m- z%x&8#s#c$$>GrtJh7)Q}Sde>=LhuOkB1LdAM&gx&Y+@Xw2`2##P7w@bXZe*OP`-5k z@WR4^gcA9aW>cK-FN-E%XcpmtKRX?drm=*~kHqjRrGD8HF zkC6NfN@YT$&(TuI4LPnk6K8Wds-mcz~wgLCUZv<=%dvf z6E3&maE7@|v7DNo@d2x$=yw}r)KC#H;LnHo=v1;DNKPi~iSb|B*LZ5C~Y*H{xs3y@C4C&Fj|pR5Fh*>ZUjT!~jv zAAzY<(Hbj4I;@a%tO}A&n^xZ>s?gQ$$II4OCwM!M0cX8z2^>-fPsxHIFqO098j&d~ z__>S=^YLqr$8IYgyH|zB_ZIQE5hZ~pFCp}+I8c|WB0c{HT*z})-JV;OZhLIDdMPcN zG+TfJ_o&e z;cAAAd>`&)oB_9xjbJt=LVpOK^e&Z)Y}l)N;`C1XnUc}J>?T?=2AGmDzA1I3V0mmg z8f0V-K0@~MjO+m!2hL?}WHKxRsfQ4}Vf*rdfWcS<`bmzZZ0vKmYzSB1 zSvK~=*Ewg%0mPh^<7&YH$KwpL|H@G@rR#;fZyD<#9+Z$nP!c6sGTFgp0;tJefb;qL zn5s04Uzw^j0$M`_`2jr+mkNA%hw+0mi;pvBgqA<}bu6C@QGcB@Q$|>zA}z5$&ZV{Y^(8;D|p}}dY}@_elAfTqD1~Yo_!XZr(%Y6m;!*FnpK%aMXWDSyx!1s}e zqWiSNVR}i*X?ysj)i(xwH^6@-9C8$UECq>#G#?F^bGa}Y_axa|fsOJ8FWPH6wkGAE z6KU*P5U9%#!rP)W!PGK!9^HUU(VTgVYR08~A=6+VfIhJjE~&V%CszyywL-Y-Y&nW7&QU zi67(OypGdZc<3i4=YYgZ(;eFdv z0{<@H2Th{5?@W|Gg)0Gz{j~zdH*vr{aD|w)-UJtlq?p@0;kY*klOx^~@P?z(%kG3w zeK33+un3(3!#Nec$l_w{CplU4m)BBpI8Q^9n}dfLM4G@{>;s3hLugdGJ4WR;HvCrT z3&H|fvMs-?+6Wi$ibW$_gnwj8ysSpB)}xD-Y{2|h!2CnFa7eDCYJ<7VX&qtx56w5) AkpKVy delta 4248 zcmcIodr*^C7S9C&d?61YA;APl0tgBrkOx8%HAD>Ioe(0{qR@zuw!A@0TgCe9vSrm7 zj?=|5Dpa&qyDpU4KWwM1+nLTzU01u?PN%bW)w<($rnA%C>Fggn>kfPF7ZL~rY_%hl5CJ}Hs9L{Ia91ahEo2LY~39q8V+v;n0#@DZdA4oniPG>}9 z5e2evT;5J!yDkc;Zf{>7{k^--*PA=NFY*V%NbyyM%LK#R+b^9&N;wpZPYx%FlXvtw zFG9z+@BY)Te|uS#e!oS1@Y}tI?tZW{UHt7kzTp+hT)I{voq7nfUQ zo|4JGPMl9Op1$=$&bicxPcEMw8`FtR(VI_?bVkUsKQG~r<=ILzGHlN(e{(YOUUuH^ zcDWzyE`D(TRR7MKN~^Lw{V%!q@4R>DpBJxoz5B((wy*MU#GF!B^qfIN?@sTCxe*EX z_)>7hwZK5UI-20NVKwxK#LyVWKq9}Cp`r1%cR%fgAweo^;%BL75bT}1dcD2W`3=tM zjg+U}?ye}K@ut65&B6UbDp&2@?rSfka;onS9;WPT0+Ecvm(nh(x6k+S zl$U-hN<}C#;3k}Eqp!t54LWMkUEwJA@R87KO{QX%UFC8+H&Q-RkWWwf8tkN$eE3csev1{8sZqPlqb+V4K98> z{eWQvktq!(9XzOUCXibA%%CNDI8kXPP8csz30=rWjWc!laD%QuO6tLus}XtV<|cg5 zpQr{$odMdXKvR#Gv@utK$ z>r*V;sbNSHYEprjwcy{ae4|x**JOU;zaiz9j9YXGmI7S;8R&LX$cQ$ z2MehMAxWXnWeS1vjmuo@Lqn0cILuCbu%T{6g4Uvc`{}^;Ge|s(i)q70J9IQ8lMWbL zDHl`zWL&hIIU-z42OJQ~V5-hY%HTnrnRKGRd6+n-+YVQ=6{H*L407Ut>ux#3trDiw zXWG#R=(wV;(t+T?w|T=AO2ik1o4?d9_}2lm>K{l+4pTKy|Bwx~V-D`v4Mi<%S5<8LYV@vTd-{xR$&G z~B-IB)R3BVI^&wXEe^Oe>VfL6jpV}lk9KyR7{VKpF z6bn|j<8T}TTvemTs;HJtVX~b`Sts!-%1E)GM zP!}OJH?%}u3@tJO3-i8wOTLpAt|go2x8q$_1-J}}@F8~U>sBH5SuBV!P5CI>lxZu~ z!bdp_WM|etb}TR3@>m>S+GcT(E%0w!27I9L*M#5lwyei*`Qe7SDAbhBS#K*sxG+0)Weejo zqtWAl{Xd`~ud?xZbuo@G)%wdoe8m2mDa_a7s8&DjiX|f~rjZ|o>0|)Y>wuBYvCEyNpE!oR8{(5+oT2XmlZLS?lu za@2q8Bd6e%WDDD~W(?aPs|LA^O)yd;B%|1j|FAGr%MF+_7=^h3L;qlyYmKA90W-!< zfu?!}I*XP#L(3T%4>2;ngpt?L$T7*;M}#$``%Z+0HF%?#z_99Y4yVFd^V&dI$vLoD z3IhQxI2QtA0^gRMKj-0^(`_9o^33R$=uAwHQ) zU{lHy-U_EZc&oOWazJaBK~0H1eCt^zks$CWU~#rt~k2JFd?rl`SRmTvNlyhfSR0QGt E7j+`0mjD0& diff --git a/B4A/Files/mapa_rutas.bal b/B4A/Files/mapa_rutas.bal index ff9c2310926940272aec1c8ba27f59a39bb7ae00..deeb8c7e37b2ac195c5660b12e4922560c229286 100644 GIT binary patch literal 7468 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 Y(r{=kYGkpyHz)E0i(E~f3NQ5i3t>Vp$p8QV diff --git a/B4A/Files/mapas.bal b/B4A/Files/mapas.bal index 6452c1328320e8aabf7e4f7825083054c7e7eaee..2b6907c6ef3f14cf87934f0ca7f66fb638d84039 100644 GIT binary patch delta 1526 zcmb7EU2KbC6n72GN&@#64ZBr`h4 zgBdfi`e)a_c8Om7VqK)WYm4u;-qR4-sy`pB+jc&qr>9FKMLx|x*1z6a;e4a@SLM9W z@71~rUHYBFod>V(y4Do&9L;@vXo~js#N>gtjX%~}K9)Gk(sbj)6Q{fIz$aT^^Wc{Y znV%OY{J!D!c&~Z>oOE04uXlc9Mk#At@Y8jyH|2!p69ohL;>zhqK37rxb=Q5@>m23x z(>G@|_9e0N)L`EY-pzTcIFn!#5oH>8i(ASJp_{960{i^!!M!cyMWDss*c>oM*&?Oi zFoG>jv#{3DXC(CV6qRb5n}eaY;K6_iL3K^FS3ETP#1thcW+i&WO{GS-xlN<>O|AZY z!S(}v9f`fXmTXM`nCbwb8BC>`*?g*T=nN(L;ALiJEJImS7Kj$Gxqz8dE7f^I z*V1fuNE^Tn&;&r82g(*lv~+HWD;Ar0pxHGKHcz9fS6sZ;vcoyh@)q+Ua)F`CIb-Qb z5DNe^&y&1RvP-gCa=zpO$%Vvh5m+q(6_Z#DS^}7P3582Rr4#~;g-yf7|LIIL8jW{m z8MafGgGM>C0-=ZU^o%k9*6l1?Nttp`It%}ETUtWKS?N3SV%W-6l%e&~Q`#{buuP;h zIXwI-F9I`LO?i6rWD>M)O-xikDADh~qSGN{n=0jTYZ0!aqAIj0Zz{Q#N)^*%z1mH^ zO2u6<0P8_RJ<5QRt+PY?r+c}V2IAez!X7Xu&b?}c>42QaG$yud7Ka_Nw1$>TN2qF) zBcf9~R9b_ayqXR%a%+>+&>b@CX>$zwJ{j2u%fj$2kI z(azE-L)2Td!z0$z;R|{GR)~@F9kDdMbUYwmHXCBB-yRw@?9n#VsP!QFn8q5l29`4B ztceTB&c^r|YQP?&o`T2={2QI^kny9l1DOgy!N?Dd4*g~-0X1%NY@)Jule H^pE~83MJkx delta 1243 zcmaJ=OH30{6rD$Z4y98SwNO8_YN0@>d=x}c1{D;j1&U(g2N=?^R!dtefk;TIabr*t z$xDbXTo~QSj%eb-XmkZ(<7Xl6+_}`aaaYfM1wxHD$vJcGeQ)0Fz3=p;>+w#TNs^>z zOp@~PR;F#wJ!Xh*Ew0DvZBTw8&!x0vQcuxd5u2vJH}g8?(*}_#xwioqQbIhfUON`Y(7V-&;%zqgI&R8^g zBRZ}dQ9jreY_;I6$F-rD9_GX5kd@-377j<_5&p&;WyN$3e{0yruUNV~GFC4q;^Bn< zYBEAwBPne(I&zcpdQ2bHMxu#0_gYj(Au`wWSWJs2Mzw*VL@KQNlkv#hlI1B&yRm2h zBzZR|kHjX>9>B!*3ib#t68ydl3&W z7q7#DC{CU12h17J0RXp)BLH&-PyI@Uvc?9Gd=S(Km>9W0J_I^Ug4$>TaN=Og5y~9p zx2?{!3(^6wFsK<2JMARsTNNnSNRbt^`ukfDn51Krr|veBpbE!V#0dy<=Ev_$5rjCq zm6qB-CrO+F?ErX#QdUUQCM#6N09fO$S!ery+uX z+y&|e*cgZ&V-JXCxpp)m{y}!S=`7Jd-L7am1fc@UZF8q>qNx|LD18Rvf2Gf2J-2it z|7i2L={r#d?`)Yq2o=bd3GpJOjjWj+#0-QOL>0fTl(2R_t+>)TuAu*^FvEKG!0cD; zaUPrH3m|&_>643CSjQ)qu(TcE)pplVu0!Z668YK<}a5#}0$E;MV5bUH1JL6-i@ T7`$3>@Oit!X89L;2t)q^17oPd diff --git a/B4A/Files/nota.bal b/B4A/Files/nota.bal index b00f710c99f6957c028543c1761e298a9aa9bf94..70d3175d65a2b38807cf8efbb20f77f6396980ad 100644 GIT binary patch delta 781 zcmX>W`Xhpum4Sib3Nr%(7m!xk$h(-4(P;8=Mg>OE$tM`^*UJD!Wr0`$h=Gb2Sb$g& zi1~q70Ej_=nUR4(zMBKgW?|@^c+iX4P@wH<^1LLyO#vl$V_jV|qC#Fc2CTS}+dcE%ek#9=I4p2# z(T(`LBZil}WvffCu3Y|q;nnRwtn(h*TKs?fWoG+@*|EAl#-9&n?%TKfbVnj{;sH8F3R(S4Y13{t5_PjNdKk{GTHi4=8z_9s@fC3}81JGavkoqZ1 zlOM`SP8JaQBn%XS7#0O&fDN;o{6<-0v#szaM#giS4MZCmxj+s8TR3yFt%Tv`H)8IL zjBJ}tBq|sg^ER)Q1W}XEs98-;kp95vusKjBfd!|rZxn#W%1^$p^b4Dk&2N;`K!&ZA zwA$ROY6mj@j9NY;qs3$!4J*cu$%)dglW%eJOx`3d$=EshjI=TrD5;46F=yxGy+ZPn zH!BNG-XO;|*+52I*aaARU=P8)9Wc3&=j>!X&04N5pcX@rw(iMWHQo6^Tr(i%5e12L zP7V}MlL3j@0x{cv?OB(>zBdPkl^sYy&tyhXy~)*DoJ?E{liRfHChyl`MZ)X=r+(|9 delta 533 zcmewnaV(UVm4SgFl$n8n3rH(&dY87M++)2a%V6?yv^vsG?|fCWAZwo$HE}*gAEIX8Rj*)T18{?8R1WijITHE7j0x@ z6xr-34x|J(AC{M!axvid)%j(iv&c{ zm{y1dX{`tztdlbqbi%cw}qZTEkKgd<52>(Fu&P%!BHm_l4g*q+&RmOy6EV zhUbVZ7@W~-EDmYurNIfiLVkM_X7~K!kGF&KW0hm&||MH z{s834*E@m%003tI000I60JDz*3J4R#|Ns9T00001G5`Po9smFU0Rof06Ckt93e*At W3X`D?j{yL)F%DM*0W`CT61D|SsfcC( delta 238 zcmbPXxZi-4m4ShwVI%8P#`;-6mV7q{kYr$BVbJY8&BbKM<63GRKQY$P<=Am2mWw~x z4%YfA3%}TsI!RJq+y1Km#!%+Qg7=)qXCAAT$USeiq9NhDr}kwYDgO-Hsn>WIldlH` zT$nLYrdc=M$Govyv`BzC!}~!-ii*cuXNzKmKTBLq=T51V?fY5reC|xy&;A^fIDVe` zA^tvL@2dB+b8Y`eeLMY%`JQs+>jey(?=uN=aMds}FvtR($7nQ(M{4qZKK{+B+*g<; kCke|=7UL^s3jiAR2Nodnlr5#bhA08vj=Hvj+t diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal index 349b85ea312da71f3ed8ab9e7459b5aaee1a93ad..deef6ffaedbc9a510f203c608aaa86102c0738df 100644 GIT binary patch literal 69619 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 Kn(Vv<3;q)g{&24V literal 69453 zcmeHw3wUHlb*5%44Q?Co126^~-17qb8jqec!;G<7t)3apXe6PR-)^_0o>6;REzxR? zA7EmSZ7^>Wurc5e#{-0r@Jj664GG4ag}No_6ooY~TH3V!@C(#c4v=}O^9p>p%-ptpDr zmzQ%33;8n3`?7t*gPHNv^I6`vRH@9D+|qR{l?=-3%cduWQ{$;@nzg2~(@XP}++v%Q z3>+9C^Hg>&w~#wkvJRw1QrXdo@s!iX@c!&bYE03inX!bhjf@UoF>oODJU&!P+4O9F z`tV?3u_A3$O1lf?#maLix>6dzbWwD{@`BEuAUCBwMiQ#eS&X&R4RKDoeV2M1lg?zTWRLQYd85v;*;Tf3A z9m-D@@;A1hfu}9%(G|easyrg39@@9skL~tjhyB=TKXzG7+a2k&%52VVtE|U*+Gag% zx1M&iqU(jZLmlqV&Xf3DIzki&v#Gw}(f(l$wV0jG%}o{N7l{%cU?~*}0=bkcRpu9` zt)~*724P^Sq4D9daYq`=Z9LU(&>aTdY0zB;-EGi4w5nouX8y)faXvRQ(!ZP9Lq>Ui z!D&8!5Nau4`3Fwv%?PAp~+57c4@L(lReI$=jJiCY|atxJWRJ+Pokn?)-CHa zs~t8O54$~d7!NO!5#1UFKG{)cjPlSgmYE&NwtGZ}M|3_{M!PUyp3avlxf}B8`AA{0 zP|1}YG-%5-s=@5o#K>S~C_Rv3M+URw1L^&ko(G&h9?6#%3-cw`k%`~{#VOLhRd5i} z$aUb8Tn9cO9r%QF;1jY(OW3B#?V8-7+SOt^bh{n8-4266x7(rH?a=LZ=yp4FyB)gS z4&APn)v4R<)a`cab~_DT-EOCDw^O&`&gboRL(Chw$so@vRIlX4rGSb@}Zsmm9{h`2zjnn9I5$6M{IaTx{toxJI|rosVVHY4_(|_vZ*1#+IfEvQq%eQ@I;*LQjlMq(%pZ z+mC^PpEb^p7Q)7UQvfS_G{Nv_cEF=)1|CiPJ(`2?Xu{&r^kE)N^?Edi>Cv6jXV7Vb?lt4f?kX`Zj~U-Jp*e^c@C$r$OIk z&~Gy6HyiZb2K^R;eyc&h&7j|I(C;wlcY^kO&bvV0gY<5s-!|y?81#D$`d)*+&!FFD z(Dxhk`wjX72K_;Ue!!rA$DluC(7$WY4;u9Efqn?-7}AFg`Xit}iuC(PA4BrS_y?dp z{*Qz9aQH*eFF|@K(jOW0Ck*O4EhhmW9%x z7szwIT*+l~bGdS%Sd{Ejk&Q!ixloxW*O_=MRPu9E5($_pF6Ei~JmenEqef}|h!UnU zu!Sqn2p`*I_WYqki>#NxGalwU_;4~F4&;jSTW(m8W)?ut;bfAUf&$d?cp z5Y8v?eBRs0!M)3^@A|V-zR-Jm=D-I(b^q>%&iuj+7xkb1jz{i&>n}h1{!J%+xpe%U zUwh)TM}9o^^v9n1hsPe<`u89D-giEiJb(Z8C*JhogQre*kN?Seo1W8i&gT8a!ouG? zG5(?(*7a=p-glB$zwO5}xl1no==EI-x8L)fECXUwZtX zl23i^ZAU-x+Sl&>!Prfw{L9`4zVw1K9{u)L-t?;%oOfyOtuI;A(o#ZNhmlM#j^DhH zKNnR0RBo{_y`?|DSU6P5m$w|qS8`r3s1@ZE@Dc3l2odcjS1QcqDmeW0FO}sdVVWuD zZp=*;^RED1Exg|?+mfCy&X>KX7gM}f%`R#~(KLCV10r9d+!-n|e*~NRq1;@aEqdLh zQV%W_i(}K}e7;0Q7E05_rJ4MAp;8pi8*)c-95@G7LTy5^kSjwL2$?FC+#$AEVGT-f z_ruBl$3G#bcPWtGvqwBHqf6|>5zG?=Ft$>3F@Lbac~_ZVps*VYGnH93HJdLSnys+n zEauv*GpZvFNyb+nF3c=KLoHi5%d5eoX5_HIDP|pf+I_e^a2-4^FH~mJ^JOS_(JSEe zkl9$4;poT9*? z^-7;wUJtkQ6)K1udXHzb{)}fqb{SDWSSaS{xqO@rAwN{kG1^HZQC*T#=>pGq`5EHg z9)!C@HU#(T;9st|Fe_n_`7*plMet!8gPGmq+0lVLd&k9IiR!z*RgfW?r}c7{AIwclgJY?ovFuo8bYM5d9#PGohNpC9 zXgo8Toy?3P2$UKmW^(K;O5~I6aNNvxBUnasXlQu!Kx&W!@6YT`O$?4J4BEG@Mefif z?Mgt|K?##w=KLms6MB9=O6{=p`9A!f@oX7`YVt({keP!ydk(8BYm!oimpy*EyqUtH zI2X)8EJ^HtCMQ-e;UzZ~OMV^8*-pLmXZYQ|^;M*+Rts;?SU(QtmWm2K&LfR(RUuJu zZUkt0X@qnT1};k@64mvVVww{}%2Lu1v{-rZdRe5r2RHsf`CdSRHh+*I&weyW(X)k8 zg_-;*6M+wf(!x^3TO!6YS4hZtA-A}ABQ`Fqbt5iFq(hyYO>&bUj}k`LTMD=Dol>S_ zKim8_O`K@TDanMwJ`0x>L@J#c-IJ2Yu6G+DsKJM%$5W&1gv4QJc0ao77;9vPCI?cZ zVp6V?NQ#$G^Q}XN+j`hhMtWG$xxb)4+O7SOj6f~|bnJ-CVsa7}bk|7Mb7N%5{(;(? z8xAtPHW4Cn$hn}njo%{@_t)V`g{1_1Gh^ea@rf}GL+yqs zN?Av{*xeul``p5(Q{#`{J~+H*IN6_3-Jnhxw4;>FP%<+%k{K0XS*?S+eybYL>YqsC ze#NafavnIUXS(b@bYPMg`UENo)kt3lfhm+`@>rtgup6()lElV4xrkeh?}aTq{+`i+ zv}%5@BSc(5U)H%FByhv~1;p*#npBJ(x;1&agl7k*S?!_0;*_b`A$M%k`cPxB^iWub z1Z8u@n&Xhg+AXX)NR4|FUO-F_&Scu!PUlk>HnrB z01O9@D_lUdcyV1>7dm45bCukla$$yJa)i(a(&gf~H8WqD!%3^0pV{Juo9P761np}P z+gNd!w0*ajGt~=Bb4`M=!=I?=JBx8`D_6KOx9+@+m663eTPNpEGI`ekZYeK!ozlD9 z9NzpoIkyXz+R^G;imq;PapM`ep5|R5Zx1QJ@nG9nJTfq}hb_9r5?Xg@eRtBmm8LhA z8XUheIX09^?;jH>b*~3`ljYo?jAag_hEjt>S>Kw|0i-jdqp4BVsqP)JxUi=x&$>+! zUp1K;O6!eekJ;(Kn@`zwzP&N7hy3q+ocl7|h#=xWDDcZ=r@AO%ALW#w z!ESG-w)*<})u`I#q8JlI=X8;0a=-zX*tK^vXC!0P>S4~%C23u28*?(dGgMJAi@Qzt zE|XXj*?R+s&Em9|7N*gZ%=K+t^1G!Ga>O7n#QHD+-)>EiJcQ)(hgh z&O=LrKiQcCjhSwI%{|DX>tsetg1|{R!RCP0J&O;1wzN`hZEL9M1V=|Dx3#c?Z7uA$ zNaWHbr35oU#JKVbK}{uIh%fHJ);;^rf@;lJLr*~`JtmeyC` zixpaovA+_Jsw>jD)9zY6KOf(Kz!c*sb}sD|UnRfRdJ0_Ruko zPEdkD7YL2P1}~es?nV-u2(l7buCkIIFekR*i=Wo*_)6^H7m_J zUJh>*ySCp{@AF!8BS05nZ2vo`ZtH>qwJx}z^&+|6r&brED0FNegzbIm>Vi&1+kUal z(*?{}biwjaw%=6mGlpKqssRd&pn-9)$D@HOJq@%))`0dt6X?!bq{Jk?AkcM6mwVY) zfVfg+Z}76!!u%|9>Uk%MwHIbiTXY)DS`vcDf@-{K-e>u0&RO~M^4-F^Y%KhWRPT^F7uWbSF&a;GjE-F zc@*{Zylq|Q&f5(TAoG?2RPWVzeAcWi7#*!OVc&K=8V}Gzt>+B0Z=*n45533<^qe^q zIvM~W8h8XmJq@f8gl!Ex)#?h^1Ta;(Xn_4*P6JaYZ<+?C(Rc$I;PPP41PY9x0qzBC z4cv>Im1y8wo(5VYYaov%o2G$-XuJUpoQLYR1}HFs1`dJU)&Q4}m1scCfiJF&ItOOa zWYaWIK;yA$fC3|E;0CbU8dyS3LmK#gWDOiflTFh=5sg=C;5O$pQ@ak(=h&y2W5}`R z00jnWpbv#Xrx_GQ+(GX`6}=K))8-2Ju%`i*pM$i9{a$Vzm_vEfG*Ck0)f#ZmlVLRQ z9aOh9K!Jf8s6E5XgWaA3-N*?y2MDaz!24=6!17QUSOBA=0lGjauzCmmIxo8nf*;># z)FKK3une=imKWPkT#5YmG;0TtCJB?+Z&Y~m(R4hA=a5)5tu zkw9|8m#+u8lUZlrYZnquV%MkM0HUqsQs&oAL2}*7B35}Lk{lv_i#fO9OAuizf(ZL; zTNGQgp}8G7?s;WR3Us1&j!W9rS)#xOnZ*(uMc(J;LWH5^Ps&($}fO5j|5 zGYXXsMXSrqRWjS)IWDf=T=nx;4b0WM6$VLAGFR7w0H`iB8@y~xQ8z|%;Rn9H2@hhb zCxehnfX!YGe)?Z=y#)m}JjanE6PHcO#Qh8iab;w-;jw{v0_Do}7*32LwIj!aGjHj( z#Wa1bUGlcrEu16lRe0wVVpD?LqclB%ezP$10AZP|uvt z<4LS055l$@_Fj$0$7=SW+|k-vF@)|G=Zsu*% zpuotc@h()dP2-!$k-f|^rs20URHnf`L^F*8sL`-#IMW}Js%Gs24?GYsYa1{P+aWbz zBeo#)-rtYhgMw;fd2ZjO$W27@Bkx8HSx6}`va$R&D%r+zCRTefmiM42f*;{wV}*Vs zi>i*XgbCCKS%vrZO&g@~Q+0rK7U%b(pc?hSU;xpSb-N3Mc<-Nsu%{>m+Nk#;Con93 z1_~X#y-hJ^ir_s0A^>l{$*J&W>(M6X6l#RWTb6aysJpC_$2NXHCwVWpsx@#=D!}eJ zNLvH7PLcuxHPDB`Gm+#lnI>@`z8npJ5Q7b~ayl9)p^9EPl?F~nwrGGVJO^nFi`Ha?nkJ5_Ea) zpkr{dH+b3lsDqrURR#mvj9d)I`S`xg_W_itPDwY9BS%b@O^Va_OAz9r$*d7R6;H}E zWz5}Z>t)E5CeH%l#%m~2LxcwhqNhO!L|^reI(tA!Z#ZU=M1r5{xA{)Eqx~Qnt+wBW z94!TE@CaouQp}Fl!E*+JHQtZnNz~H^y$Ie9B1d#xZ-dNo$KqCFgG~Fj{qI$({ZJO) z%wyF9=xVjSG<2+@K-*rNlXWlh1CLd|gTf4wK307bPvQ2?N5QGBM(v&HXro!p>K?0p zt*z!m0Jqv|0yh(!jpCUnL5OF*4}`s)qrk{k^Sh`N-D(`Gu&sv6g!r1)$i60)6PN7u zo<%1%BCR7)wJ3Ta9F)js`NKF^s_L6Ah5}C9Vf;ZzuQrVc4u#X!HVq1lY#P6ZO15dJ z^VLcZ<5LhB&7ovb<2TC?Hpbfk1V63v<##%H2qmGdhSp#^6mDs4tD(TiR&xxMY^%8r z{vg~kWN%(R4@u%sejh|MtD&9!8d;5b{I_>OSF3?+0JRn=vE07@-5*}R89Y93Zz8uk zs^I)S(}z(YR`U@MyO1FNz7@oBc$$)v0tH64nvbHAZ8d81Qui!&6m|9HMJ+?Mn-^{= z<%ofw`mn+WXHw-s{Tf+~xgIrSH7mGD;FJ`r`4|Y-Y64fNT3_=m)UtgI1%|bnKLBqU zDZ%S8+iE%+^)=BqFSF>xZ>%QN3iXG8O04FOK)6;@4DvN$tcC)^TFocGD^~MK5CK+G z*Vou9l=3xnLG}t&&(|DA4aaJ31|^RD77#`h?NfLZu;^J`uEkhG<6gWMY3FniK01ZamzvItk+LGF|{EJ_Du~~LPW@r zkK@1RKs%U*2@%P8fweax)jKcP{?%{y^=U|{RoA7+^|=!X6C0*LTN}N|2|WJaheF4y zL5Lp0#D=vV^a`qC!%738W5a0LT}wX$%F#suPxmU1(A(vto zVEE_Vr0rLP1}65|i%$7(eji4`P9$-dyFkDg17k2mN35y~gjf|vYj0yHP@_mpdyxVs z?IS3(mm-Q>$zh4RT^smK$PwUKBxXQkQz``QPSp-j&Qv`glvv~iAoNtd(96CE#KlO7 ze}}J2kbK_;{r4!a&5n~wkfU5d?jslzp1l*ZI|4#R z&oySb(eFdKGy2styZ?YTV>LSpv{CFuPN3QSDGK8;yA6;ez|-Fg@JSG%%YOFT!e~va|1)c&U0RK6##|-?xLS!`Hr%+?HfqxWj z#tJ+IMgaZcB22!p0 zvU0JC4TQaNaV7U#xsD@WuUyK3rfNpTefV;tnnn3)o73ZHGgfn=KpVwg zD-$wZ9R4Gyh@<}sssxVyt0+|M)f+vT8y`LYIHG{H3*uytKwmCxE2oYOy)N?sh~evN z_=-6Czd@D2(f=nDh8{hcqmAD0wb~zgx~ECV=&5phHXy@q^iLu?;^@DQDuJW_&nOH% zdNMaY`d&}>H$hx9-G2i$oY99_&^LnHFJ4^p(&ctAR{x&GH<7oK`DfsZRtle+ZtdLFq{TT;MBhU<(|c> zOG}!5C~x;|FghAYf|AX}dJqukW-qhnfV%acN8OAEX2{1kJpW%&WSjMI zcu0`h#xmR@NRb+t51>b4+Y1<@xPnh2M}V2aSXFQAMUc8S{+jC3cobm%7Q}a0hSZYy zZ}^gI>hZhG`S1Ap9*O^fFMe9Ti!aG;6wmDxw1Zzr?%Va>2f343h6lMm$b)bt5U4o_ zftnu9wqFX=m{S94G`)CmUCA&=rHeEkr2PyC{fDwxE{4oK$6oRb;7g%=79M*q>ZqDyIgg`5#5Ix&g2cV?~1e! zU}t;{`UfZw_-ox~tw9r3nc!*z_D4}P8{2mIl+BQ zS>L@hWXk^t>4N1CLBwIo6li0)s?K2(nzs?HHD&q)A4Idrc1*b;ME?n51koRXhyzgy zY$BpWYlVoSW=(+RpONRFoCFnawO@bgH>uY(?8?bV`VWD$;fWvLZR?LwpjHE!RL7BH zul8K;PD4tNS)*JVyCI_(4Svf1QT2VRqFoFiC zcv}OHASav#O5oH7wcGGyYv3qyL<9BWb^E~RxPmYmXvpG!il(aZZph*(Faq8`1G|lP z!xn!KBBNQn-ZF&2J7$ajKRz00$l@t5f(A~2#VZYjws^h8Xo3d*Z`>N7z~*Y;PV_+L zKxhq2p~fotoS*yP-H^|rzzBH%0_-vS9EEr2RW=_9@0fkgGd>z<$mdXC1P#RJbJk)P zxx!U;wwW6E*SIx6fz8!GbgzH7nHuW*sz~$O1K?)UurvffRlIjwzpg`Lw+L2?0;QNrFE-ccl&9OVC0W6ee!yWqA zDShZ;9TC9jhHSu|MvnBJ$7(g6m*GJG$4?iYB~T8=VYa{^k|{AhcaW5}^R3fE*t_CiOtbs2#Qv;{OtpN&b ziUv6OR_KNFtL9<$@iBX$Q{&bE1vXa$(Y?^unmGr!V~f=bQDAd55Zwzs8A$^h!M)7C+v~ z!-U5Bsnx^#w7Bu6zzBH%B7VG;KM9TZw^tAE(|z!6C`?U(5%4|(?D6=M?Ep>u$-^LI zAO8#p@hA0SW8ib6lKiu%j%P_CPa?nTL9`(`*`Wf$-Y;;XmVA8QN_zpCQUOxw=5a8~ zL6uFaP?*Gd$*fVWeJhR5R0Ubj!h`QyY5Yfe0udM-h<=J3Y5N)sPxVGgB471eX-VXT z0|s$*iL{gZWTcR<>%9w4VwQmZHfcHz|$6MKVXuPAnoY#;)IVWzsDKG-w=f;NjgD_IDZ-w`+u=br@ zJ^OxH+;~%91iW7!8{SXX;2qk&r&bT|^Ww&v0wds^j1BJxJ-n6w4sGB0NO;E_pIaYA z1GV=w+`!xSG!z)9fj+RGi6r}@v`5%G77kF}bf~*yA;LayI&3;T}Y4olmU>D6k<7OrW)Jrf+M2_A92ZG{D1Cr~?$0-Zc0BieL>~ zi+)$LAv@mU;D! z0t4|LM&&apfbXNENxTZ|_J)TiqHuUKRHl8-TkvFCJR>uqEdCBKIu?IEsI^Fm3-HyZ zvM=4uQ+0_BXp2_E-CjD9CNV1@{Loe*KI{ndKh+WAg_Hk`c>ANZo$pEmBt!$D=Q}F6x?mMY7fDcJiR(dVOWfdP>-W1?7`5gtk1`7}l;e;sM#?6| zNNHmdwI;Jhb)`}3br2^;x(kFrq@vc(AV>AaHd1Qc_}fTfjC3Qatk@-9jImamN_90r|Em|JJMknMVC$j*PASm<`yF8MC~0Zkhp+H% zxgm?+8jN?X6Xr<7ODwYqpuh-t{{$lAv3M?>f;W$hHs19tK3W_*W{YnR)_~s zU<3`sXYscMYoMORXHj*PEWRTc@0D3R1xCR8XBcYC7XL6rMzi>-NO;F=@twgMSeeCB zU<3`E0E@5HKs}4kH&X*$ach7Ao2!8*Yvw>b4a`Q;Ktro+cQD>7^Enh40qjVeqcMo$Lt)er2wP0wVw)pR4%+RA_H+xZMo3os1UHj@j97i(3N}*jx=L zXCGPvO^s}Ck6Qy2*jx=L=M!23ORMMX`76|+kFdnC-jRv|BjCLQ?D07JpL#xr0mWz= zOx9SX4gIU*#+w2o;Jq_8ycu{CAFtwwp@TMeM8Z2}AHOS#2DmM=E&dpC?4S(=M$kZf zt1N*R4X}0F;_GcE??R1LviM7b@m|?>k^&>({Ti^x<6(Z~;T_%L?~a6b%ocx{j|SXd zXsy*i7>lRC2pWjb;+2n&Zt+lndv~!<=^_a#+}*_r|3GdpfKstj+5R3!lj2a;gRt)| z$gEKfb9doPdWzJM+^g^;PT}VmnK%Uo@}+HtbX9Lo*xdyh*^GonosaLIXHB8FdfVZ? zabIha1jTm3oPf3yra%oIq3i|ED!g$&iDv9&klhfx>zy$>z}UDGhLHMr_r;Aj1xCO- zzBlgQ=;2ND#J)*{!dp-LM(*Z9;mu!niPgR-FaqB3y>YMbR*PO}yrbPzYy_}=ccG#1 z?vER93XFhvd~e);8soM7$u8uCvhR5AB|_nyi5qVUjDUB1Z`}W|2Jg`J9qnGCA^YAP zH{KK&0q-Q(12)lh-}mOWL+?+NeJlSR+P?D;6n?#oc@w=SiUw*o(a)go_Kt-D12xbG z_A`<63uv{QXbw>B`s-?d2x|?f9SeIYD=51W%EQcpv1uCE+n5F(Lf>r-P+&tExECVB zX@JJAHK68z(m-gR6YX9i<~cCXmp*lH zMkWyb0CEMQe?y_;*P>55(Nps`F&YXTQ=kTqQ1(K6VCZ-h3>h#;tV&rFZ75OqAZ8zh zkD`teAb3-X;2l169C|{29kK%_7+Ic@(9?& z&At*i^#Mf9K4pI_7u&D59O^)8=-GEUh8bvoSD-NT>?5-c*h*&KGZ?Gwd+3{F^aNA& z#%D7yg>q;1HNpO_#OPzSKMJ(r?8W$2!Tx5@uxLQpANTa3>@Ocl0~^7;;)|85eDH2) zwWYv7yob?MWzA_kB;s3b72e!dM_X-C!QBArnLmNNwMfnXzdPu}CM4kM{WZYnJkVwz z>#jzTGi5h`l5Xn_Dsrmox88J;T^}s||7P`SAM-DTTnT0wdC*O+M}mxWb_w+kkR9(GkP-X(Gv^Do@@-r zu6k}@U>gTjDUd;mgTZ|u1cQq~s6Hu4$aMV%d+1m}6V}Wu`nwYyFi%YP2Tf9*JOs-w z5Q61-AnZv>fi|eU;0atauLrv`J-vU6#Z9S9&$_>+dK8@63K>*T^INR&y~q&_)Z4Rx z&(%d9l%tCzs1;7s77S%Gs?!wY<2zAvC{|`6-Q=vYCn}dCnW$vesMa3h$*4@rFj9)t z5RpqDdIaJGqB00+`|T)Fy-|{oSu;`pEiZ1KhvaPJC+a_y+w}U6iQ-g!5wacM)&Ep( z3cyv*o4`NeOjjX_odhBChMKVF4FzfqQ{Odn+9ioJf?9fB#CY92O*~MaS&n} zRQ+jWF-BE;OXM|@dc(30vHMqV92b2Axt(fWK_cm+?H^A zCO94iA;74ERS7xafcZQ)1(?S`B#_$Ve_AGPs2LAC`~@;N>V6EQT9ai|tfEK7F|K4( z+$_te_JWX6ZGa?EcfI{6-KsMW!kh>;f?LOMu=jlSWac30dC-H0<^OQwVRUXMxfn&= zg@ho$^+5*#q9b!f9R!e3wV|Ov8^vDm1YVsK!R|OE@0`wUjBI7PkTU(i#w#!lMs-jSuh1e`I1++7I7=vOOf=$wm7K`QQ&El$$s^*GF zagJtClf`}Q=-Kt;-Ie=?ZS`q+KX`OGc2l3HSn-aqsD9_u-OE4^Ks zs9yK*;z)Jjf{KpZ(yM|8k}%~Brm0=_?VHZ@qjAN(+~Ex8rK*zd%6Ea118X1Lg(6Fh zBee2+M454?IbSz2+NJN?GyJ0Zw^l|1g{14VIM z&(!6-Fh4SfDUU{; zQiP6RBf1iKvvP>SqjLW`5pMZ4d@FB+lSH))I~5{=ZYtv76n<8?pamUsqmC(g1jLi3 z3`#qgiAzeGiPHV5f?#s+S~yus6~O7S$}0NwxUd<^B{9&-$y7~%w&h}U&12{@lTa)u zQ)OVY+74%ZhG6Kk6S(`t3$aJ@9<1Y7)=5~>74NZbr5M`KnY5U;{l|!ebNGhMz`;~I zw0pCSvD+tM+dXV;S{6HD}V?9U3qLamCv{9mp}JY={JjKD8n*AC`pRhvqK@l`Jw+Dv-oWv!q`obiR3;=8xx`=bZO>FXuS}?Z|FJ9xeny zP_6{Q!FzI-$45l{Mizu3srxJ|Dv!dq(HJ6(bspoyW1V=M6OYF{0Yi+D=){wpxWtJ| zow#h1L!Zm3@;CS_yt@al1hJcltjgP4k?vW!JlA1X7Y27<3pjB5*K~Wc>HK^fYyM?# zOHpgp%1D{YlpqrI+2fY_D#G6TNhfRK7wGoNV(z=TMWymy=Kh}S$!GFG`h$0>t0dWL zI^d*j(ESC9@`_!^4W5{ps{Kxnvp{!M5L%=uK2cb2so|MRin~L6L$!)z!I{t68{?wU zscGS*eronF>?&w^Vwo^rWDVb(EiieNAAhyH#JV*UB^tsbcVb|FiL)h!(#z)pAcifV z4!Z@gsnebXZm5vz74!#!F_#0JOb+}>97YeI%U6e2q0e==U|@S^UlX%&A~M#d-M{F3=pi4+e7hJmzN812gs@9E=75gyeQ1o5M3Qn+tQYB*;;c zh{Q8^!)tvCkKB@HTboo5w5k-fZaC7qO|@zrt+u1KjY@6XG^=l3f<>hdct*S7FW@t- zL8^+2Ct{*j%?L=;MtoxGJ$JlLrXxY9VeT^W7r>-li^5N>3RaGh@KxvIn7d=gZhE+4 GIQkE zRz*ozZ?S5L&h;BgVo(@*P?1^fHdzyDnOa`sY9`j-OcZ_|^CJ;3QU#4l8n6PAkik7L z22R${z+KP}KxWW@ZE)G5p#%GaLRDn~Pxj}u^qg`=|3EgM6ktOago=>{OXI}WDZ_>tm&P9BAed0x^n0F&pv9Y z|LI!zOvlDU@78YFw{+-<$Il+A-u_$o`_W%(8ycG*x%m6SxAr%GF*f++^M}ShKXLvU zUvtgTB};c44Xhk(c~;s4$GC>=dJg@d12ZM71gou_`y`?wfLC} zJ!hX1KhNmceC*OEr$#@xda>v2p5aBYzs4^AP}}>`>mPdOe|zN5_B&hOpR;rC!4p^N znxFovX6?-PjxQj1caS$gGoi=#X|4D``#S{ab}0TgeCf4U%)qNZ>4M z%8+a*SuHr6=P%$&=H(H2Ko!efln0A@{;eXb7mHCDh@hh%1K5lDp)B49DS^MyCNqPR^4qA~@v?IgL9F zoPa(i*jiXnP;`Y%z@-H_ugIFw2vw>`8OSvwo5SG|C23@!IwO>H#=yahtR*t07X_1q z;D$jZsUztdZ>PyE5?mjXN~p<2+5*$WuTL>DZP`2pRJS%zFr4jqcBi!LgSkK}!3VnJ zq%y2C$f_uCSg~1N)9@%KCzFbno=>Ek;bu3Q+^JT%$XgcryA9b8Ds>ug28=b&<4Krkkpg)0MrP713BU1g70=fm150 z8G#X@XU%-W67tB8OhBc&8KMkAL9~UU@laQPXRIsyXe=5JL=ZYE5ka}4h7(y$XXs2D za9k${RS{7%0mF4;kIGiG#v(y3KC#c zwh0~=ZR!nm#lvlZ2-2--s=~LLxLcD45ZSy!o^np$qDZJc-rp7O=#0ZK>oC7MDOoqD z4zsEnGOHH#V0Qbda-H8E&h_$F2#T1VUqMgpmc-3LFZBmo@((T{eLd1{eLh|8@ zr_X1-eV%8D1-HSFe1L-Yp%&4v8mAw9rApxM_23R4;)H_rdVr;uA4k@RWZ+#y*9TPa z&w~k=&s%ees2U%;I(`cgUeB#GSD-z6k~9GbCJ;d;Q2k7xQrQh;R?#0a3$dxV6B7-| zw}>Wopq_}5UyCg^{8~bz3QpZcgEiTnF10xHl`5CfgaiDKpy>N@TH23NI8>H^p@j(y2;P5^tmeC;bu=i>Cj<9^vz{g!Q$`uW9ARL`5gsMtej0q7Lk*cys1f*P z8eZuEo;T3!dyuBtAaLhHAU4vpi3V30XGEMLyBS+8GzCDk(qu=rEJsi-E;(|U6mX8v zwwWWiiTy$NZB5v&LJO!VxE~HiQfqq;03l;DJgPcn}CDJSR!;dhpPJNkILdE;A|Fm(c~3 zeFPbeVwc%Mq%#N65}aKIaC7QGxCGJUE(1X~h@jF1BI245ouZi9`9B3j6WZ^?be1zH zLPRNp7F%ri$yH3>8)_%cRC252t)yvUB_EoqlJWR3im;Cp4WV>aG8C5J1i06&;V20> zYZzUGYdA(kfX0+He1JAf5jagN`&r;5-Ax>h03J9yAM98Xb5d$9DcuT#Gor1V+d0C+*iC@A1 W7PB}qg)zYX4PiiXMKqk0B>f92SkU?a delta 1593 zcmb7EUrbYH6#p*0E!=u*FM7 zedjy3!)2$O79(TKk;Rx9&)lTtzS#t@I~3I;HOZGHe38`54@tF&F|f|z9C*fLR(blK zIjc(b9^KNOJmA@O`%a_$Xxeo1#IEwZ7eDJGOPucd-~3ni8HQq0%AL{M-xMC1thxN% z!O0f)W7X~t*PVHyN}W&l?0$GY>G+|ty=~*r@Zw(05N`cF+_kLvP1B~n(tj>_H;n%@ zSp4Jk!1M9Z;=lYkBRSJ|-`l1R{&HpN!jZbv*YEDVG(0OGe07mc^kgwu_9+m*BxF&bn6d*mK_lM%$J<(5xMXZqLXBSjZLqd^QIFw!( z>5lbvAJ=8DKEKaP32mVcJ+hu(G5Wb|TIr?)pFijcP(oZEh&S~_dU~l<@xhpWDAcJ_ zZv!4*pq&RzE2Ltfvom`KU4jGoKpw*yE3C zu#Cx-aFoEPYetD$q^#jLEOr}Jx4|S*Z52EmDGivvoe@{fA6V@pW@}$be)@n^u>z)QM6ZF{3^TGV^jZtIhyX3GBd`^&9)?S{r&5JL66tAxDIT~+ z0!=)r*{t6K7QhT*=UaTjx>;JqU23UgJ6O@U9RSTRr3G#$OgcuBBDM0Zntiz!gviA+ zEw&Y4w%9g)LTk*U1!98E0*Iqm;*y;FZ_Qk|3sibqd_ZDbKY)?HwH74yehkhUC2?ys z*#G6$u#CxpxeKN9@ja9wE-ohhg=A(jAt+HGICp{nuS8UvYj*Y_GBZ1w(NWm-%ihz{wZV-4J}mpOBr`0TSqb964Pce8;2H@u!8u?E@C#ZIf4e}* PdySXbe+adi>(o8~`hohW diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index 2756fbf..28cc14b 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -870,7 +870,7 @@ Version=12.5 #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 3.12.08 P-V4 + #VersionName: 3.12.14 P-V4 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index 4e9a1f4..37cdd82 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -63,8 +63,8 @@ ModuleBreakpoints9= ModuleClosedNodes0= ModuleClosedNodes1=35 ModuleClosedNodes10= -ModuleClosedNodes11=4,50,51,52 -ModuleClosedNodes12=1 +ModuleClosedNodes11=50,51,52 +ModuleClosedNodes12= ModuleClosedNodes13= ModuleClosedNodes14=39,40,41,43,44 ModuleClosedNodes15= @@ -83,14 +83,14 @@ ModuleClosedNodes26=2 ModuleClosedNodes27= ModuleClosedNodes28=9,10,11 ModuleClosedNodes29= -ModuleClosedNodes3=86 +ModuleClosedNodes3=3,86 ModuleClosedNodes30= ModuleClosedNodes4= ModuleClosedNodes5= ModuleClosedNodes6= -ModuleClosedNodes7=3,11,12,14 +ModuleClosedNodes7=3,11,12 ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=Visual Designer,principal.bal,-100,6,C_Cliente,B4XPage_Created,304,4,C_Cliente,Initialize,298,0,Visual Designer,cliente.bal,-100,6,Visual Designer,productos.bal,-100,1,C_Principal,e_ruta_EnterPressed,2045,0,kms_helperSubs,traeCliente,615,0,kms_helperSubs,hayPedido,696,0,C_Cliente,B4XPage_Appear,394,0,C_Productos,cuentaProds,744,5 +NavigationStack=kms_helperSubs,traeCliente,613,0,kms_helperSubs,traeRuta,611,0,C_Productos,et_pCant_TextChanged,704,0,C_Productos,B4XPage_Created,143,0,kms_helperSubs,traeVentaAbordo,757,0,Visual Designer,checks.bal,-100,1,C_Productos,Class_Globals,95,0,Visual Designer,productos.bal,-100,6,C_Productos,cuentaProds,766,6,C_Productos,B4XPage_Appear,172,6 SelectedBuild=0 -VisibleModules=1,28,11,24,3,12,7,4,29 +VisibleModules=1,28,11,24,3,12,7,4,29,2 diff --git a/B4A/MAPA_RUTAS.bas b/B4A/MAPA_RUTAS.bas index 2d5aa9e..059e68b 100644 --- a/B4A/MAPA_RUTAS.bas +++ b/B4A/MAPA_RUTAS.bas @@ -105,7 +105,7 @@ Sub Activity_Create(FirstTime As Boolean) SEMANA = c.GetString("CAT_VA_VALOR") c.Close End If - p_header.Width = Activity.Width +' p_header.Width = Activity.Width p_mapa.Width = Activity.Width p_mapa.GetView(0).SetLayout(0, 0, p_mapa.Width, p_mapa.Height) End Sub diff --git a/B4A/Subs.bas b/B4A/Subs.bas index dfe6e37..e93780f 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -1599,7 +1599,7 @@ End Sub 'Trae la sumatoria del pedido del cliente especificado de la tabla PEDIDO. 'A veces hace el SUM() REDONDEA el monto, con esta función no se redondea nada. Sub sumaPedido(cliente As String) As String 'ignore - Dim x As Cursor = Starter.skmt.ExecQuery($"select PE_COSTO_TOT from pedido where PE_CEDIS <> PE_PROID and pe_cliente = '${cliente}' and PE_CEDIS <> "DOE""$) + Dim x As Cursor = Starter.skmt.ExecQuery($"select PE_COSTO_TOT from pedido where PE_CEDIS <> PE_PROID and PE_CEDIS <> "DOE" and PE_CLIENTE <> 0"$) Private total As String = 0 For i = 0 To x.RowCount - 1 x.Position = i @@ -1609,5 +1609,5 @@ Sub sumaPedido(cliente As String) As String 'ignore ' LogColor(total, Colors.Blue) Next x.Close - Return NumberFormat2(total, 0, 2, 2, False) + Return NumberFormat2(total, 1, 2, 2, False) End Sub \ No newline at end of file diff --git a/B4A/kms_helperSubs.bas b/B4A/kms_helperSubs.bas index 7b43283..523f5ff 100644 --- a/B4A/kms_helperSubs.bas +++ b/B4A/kms_helperSubs.bas @@ -615,7 +615,7 @@ Sub traeRuta(db As SQL) As String 'ignore Return r End Sub -'Regresa el cliente actual de la base de dtos (CUENTAA). +'Regresa el cliente actual de la base de datos (CUENTAA). Sub traeCliente As String 'ignore Private c As Cursor Private cl As String @@ -653,6 +653,21 @@ Sub traeTotalCliente As Double Return sumaTotal End Sub +'Regresa el TOTAL de la venta del cliente DOE. +Sub traeTotalClienteDOE As Double + Private sumaTotal As Double = 0 + Private cursorprueba As Cursor = khdb.ExecQuery2("select PE_COSTO_TOT from pedido where PE_CEDIS <> PE_PROID and pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS = ?", Array As String("DOE")) + For i= 0 To cursorprueba.RowCount -1 + cursorprueba.Position = i +' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) + sumaTotal = sumaTotal + cursorprueba.GetString("PE_COSTO_TOT") + sumaTotal = NumberFormat2(sumaTotal, 0, 2, 2, False) +' Log(NumberFormat2(sumaTotal, 0, 2, 2, False)) + Next + cursorprueba.Close + Return sumaTotal +End Sub + 'Regresa la venta de la ruta desde pedido. Sub traeVenta As Double 'ignore Private sumatotal As Double = 0 @@ -746,6 +761,15 @@ Sub traeVentaAbordo As Double Return va End Sub +'Regresa el monto disponible para el abordo. +Sub traeDisponibleAbordo As Double +' Log("Venta abordo") + Private disp As Double = 0 + Log($"${traeLimiteAbordoWeb} - ${traeLimiteAbordoXInventario} - ${traeVentaAbordo}"$) + disp = NumberFormat2((traeLimiteAbordoWeb - (traeLimiteAbordoXInventario) - traeVentaAbordo), 0, 2, 2, False) + Return disp +End Sub + Sub string2date(fecha As String) 'ignore Log(fecha) DateTime.DateFormat = "MM/dd/yyyy"