From 5f6f3ac5457e243695b5b7c4cd650bfd013221e0 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Tue, 16 Dec 2025 16:57:33 -0600 Subject: [PATCH] - VERSION 5.12.10 - Se agrego codigo para las promos por rango. - FALTA PONERLO EN TICKETS y PDFS --- B4A/B4XMainPage.bas | 1 + B4A/C_Cliente.bas | 92 ++++++++++++++++++++++------------- B4A/C_Nota.bas | 11 ++--- B4A/C_NuevoCliente.bas | 3 -- B4A/C_Principal.bas | 13 +++-- B4A/C_Productos.bas | 3 ++ B4A/C_TicketsDia.bas | 33 +++---------- B4A/Guna Vistas V3.1.b4a.meta | 6 +-- B4A/Subs.bas | 35 +++++++++++++ B4A/Tracker.bas | 2 +- 10 files changed, 119 insertions(+), 80 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index c089c19..613260b 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -222,6 +222,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("CAT_GUNAPROD", "CAT_PA_SEGMENTAV", "TEXT") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_PA_BSEGMENTA", "TEXT") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_PA_SEGMENTAV", "TEXT") + Subs.agregaColumna("PEDIDO", "PE_RECCANT", "TEXT") Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "P10" en la tabla c=skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('ENCUESTA_MODULO3') WHERE name='P10'") c.Position = 0 diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index da42e17..90f82d0 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -549,8 +549,9 @@ Sub B4XPage_Appear ' ' ' Al aparecer la página del cliente ' InicializarLocalizacionMejorada - - TraeCantProd + + recalculoXcant + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"images.png") btnPlanLealtad.Visible = False bitacora.inicioFin @@ -1194,7 +1195,13 @@ Sub B4XPage_Appear End If End If End If - + + Log("============================================================") + Log("============================================================") + Log("============================================================") +' ********************************************************* + l_total.Text = Subs.calculaTotalConPromoXRango +' ********************************************************* SV_ENCUESTA.Visible = False P_gallina.Visible = False @@ -1316,21 +1323,22 @@ Sub MejorarPrecisionGPS As ResumableSub Return False ' No se logró buena precisión End Sub - -Sub TraeCantProd As Boolean - +' Recalcula y pone en PEDIDO si el producto cumple lascondiciones para tener descuento +Sub recalculoXcant ' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("SELECT* FROM PEDIDO JOIN CAT_PROMOS_DESCUENTOS ON CAT_PD_PRODUCTO = PE_PROID WHERE PE_CLIENTE IN (Select CUENTA FROM CUENTAA) AND PE_CEDIS = ? AND PE_CANT >= CAT_PD_RANGO AND CAT_PD_RANGO2 <= PE_CANT", Array As String(Subs.traeAlmacen)) Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("SELECT * FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA FROM CUENTAA) AND PE_CEDIS = ? ", Array As String(Subs.traeAlmacen)) + + If c.RowCount > 0 Then For promespdes = 0 To c.RowCount -1 c.Position = promespdes - Dim rangosel As Cursor= B4XPages.MainPage.skmt.ExecQuery2("SELECT * FROM CAT_PROMOS_DESCUENTOS WHERE CAT_PD_PRODUCTO = ? AND CAT_PD_RANGO <= ? AND CAT_PD_RANGO2 >= ?",Array As String(c.GetString("PE_PROID"),c.GetInt("PE_CANT"),c.GetInt("PE_CANT"))) If rangosel.RowCount > 0 Then + +' delete fromo pedido where cliete = estecliente!!! y prodId = esteID + For hjh = 0 To rangosel.RowCount-1 - rangosel.Position = hjh - If rangosel.GetString("CAT_PD_TIER").Contains(Subs.traeTipoCliente) Then Log(c.GetString("PE_COSTOU")) Log(rangosel.GetString("CAT_PD_DESCUENTO")) @@ -1340,18 +1348,44 @@ Sub TraeCantProd As Boolean Log(NumberFormat2(((c.GetString("PE_COSTOU") * rangosel.GetString("CAT_PD_DESCUENTO"))/100),0,2,2,False)) Log(rangosel.GetString("CAT_PD_DESCUENTO")) Private recalculototal As Float =c.GetString("PE_CANT") * recalculo - skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = ?, PE_RECALCULOTOT = ?, PE_RECCEDIS = ? WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(NumberFormat2(recalculo,0,2,2,False) ,NumberFormat2(recalculototal,0,2,2,False), rangosel.GetString("CAT_PD_COD_PROMO"),c.GetString("PE_PROID"))) + skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = ?, PE_RECALCULOTOT = ?, PE_RECCEDIS = ?, PE_RECCANT = PE_CANT WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(NumberFormat2(recalculo,0,2,2,False) ,NumberFormat2(recalculototal,0,2,2,False), rangosel.GetString("CAT_PD_COD_PROMO"),c.GetString("PE_PROID"))) End If - Next + Else ' No cumple el rango ... + Dim rangosel2 As Cursor= B4XPages.MainPage.skmt.ExecQuery2("SELECT * FROM CAT_PROMOS_DESCUENTOS WHERE CAT_PD_PRODUCTO = ? and ? > cat_pd_rango2",Array As String(c.GetString("PE_PROID"),c.GetInt("PE_CANT"))) + +' definir rango sup y cantidad + + If rangosel2.RowCount > 0 Then +' rangosel2.Position = 0 - Else - skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = NULL, PE_RECALCULOTOT = NULL, PE_RECCEDIS = NULL WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(c.GetString("PE_PROID"))) + For hjh = 0 To rangosel2.RowCount-1 + rangosel2.Position = hjh + If rangosel2.GetString("CAT_PD_TIER").Contains(Subs.traeTipoCliente) Then + Log(c.GetString("PE_COSTOU")) + Log(rangosel2.GetString("CAT_PD_DESCUENTO")) + Private recalculo As Float = c.GetString("PE_COSTOU") - NumberFormat2(((c.GetString("PE_COSTOU") * rangosel2.GetString("CAT_PD_DESCUENTO"))/100),0,2,2,False) + LogColor(recalculo,Colors.Blue) + Log(c.GetString("PE_COSTOU")) + Log(NumberFormat2(((c.GetString("PE_COSTOU") * rangosel2.GetString("CAT_PD_DESCUENTO"))/100),0,2,2,False)) + Log(rangosel2.GetString("CAT_PD_DESCUENTO")) + Private recalculototal As Float = rangosel2.GetString("CAT_PD_RANGO2") * recalculo + +' Restar total cantidad menos rango mayor para obtener la diferencia y saber cuanto hay de mas + +' INSERT de producto (diferencia entre el rango sup y cantidad de pedido + + skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = ?, PE_RECALCULOTOT = ?, PE_RECCEDIS = ?, PE_RECCANT = ? WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(NumberFormat2(recalculo,0,2,2,False),NumberFormat2(recalculototal,0,2,2,False),rangosel2.GetString("CAT_PD_COD_PROMO"), rangosel2.GetString("CAT_PD_RANGO2"),c.GetString("PE_PROID"))) + End If + Next + + + Else + skmt.ExecNonQuery2("UPDATE PEDIDO set PE_RECALCULO = NULL, PE_RECALCULOTOT = NULL, PE_RECCEDIS = NULL, PE_RECCANT = NULL WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) ",Array As String(c.GetString("PE_PROID"))) + End If End If - Next End If - End Sub Private Sub LA_GPS_Click @@ -1487,18 +1521,10 @@ Sub GPS_LocationChanged (Location1 As Location) distancealm = ubi1.DistanceTo(ubi2) End If - - - - - ' Mostrar la precisión actual If LA_GPS.IsInitialized Then LA_GPS.Text = $"UBICACIÓN - Precisión: ${NumberFormat2(Location1.Accuracy, 0, 1, 1, False)}m"$ - End If - - ' Solo usar ubicaciones con buena precisión If Location1.Accuracy < 30 Then ' Menos de 30 metros de error ' Tu lógica actual aquí @@ -1555,9 +1581,6 @@ Sub GPS_LocationChanged (Location1 As Location) bitacora.banderaGeoCerca = "0" ' ToastMessageShow("DENTRO de rango GPS", False) Else If habi = "1" Then - - - If distancealm < 50 Then precision = "0" LA_GEO.TextColor = Colors.Blue @@ -1582,14 +1605,14 @@ Sub GPS_LocationChanged (Location1 As Location) bitacora.banderaGeoCerca = "0" iniciofin Else If c.RowCount = 0 Then - c = skmt.ExecQuery("SELECT NV_CLIENTE FROM NOVENTA CLIENTE WHERE NV_CLIENTE IN (Select CUENTA from cuentaa)") - If c.RowCount > 0 Then + Private c5 As Cursor = skmt.ExecQuery("SELECT NV_CLIENTE FROM NOVENTA CLIENTE WHERE NV_CLIENTE IN (Select CUENTA from cuentaa)") + If c5.RowCount > 0 Then Tels.Visible = True gest.Visible = True precision = "0" ' b_geo = "0" iniciofin - Else If c.RowCount = 0 Then + Else If c5.RowCount = 0 Then Tels.Visible = False gest.Visible = False ' p_transparenteInicioFin.Visible = False @@ -1604,7 +1627,9 @@ Sub GPS_LocationChanged (Location1 As Location) iniciofin End If End If + c5.Close End If + c.Close LA_GEO.TextColor = Colors.Red If ALMACEN = "1" Then Tels.Visible = False @@ -1650,6 +1675,7 @@ Sub GPS_LocationChanged (Location1 As Location) iniciofin End If End If + c.Close LA_GEO.TextColor = Colors.Red If ALMACEN = "1" Then Tels.Visible = False @@ -1659,6 +1685,7 @@ Sub GPS_LocationChanged (Location1 As Location) iniciofin End If End If + c.Close Else Tels.Visible = False gest.Visible = False @@ -1676,7 +1703,7 @@ Sub GPS_LocationChanged (Location1 As Location) End If End If End If - + ' RevisarGeocerca Else If LA_GPS.IsInitialized Then @@ -1702,12 +1729,9 @@ Sub GPS_LocationChanged (Location1 As Location) If LA_GEO.IsInitialized Then LA_GEO.Text= $"$1.2{distance/1000} kms"$ ' If distance > 100 Then ToastMessageShow("Fuera de rango GPS", False) - - B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) - CallSubDelayed(Tracker, "CreateLocationRequestSmallD") - +' CallSubDelayed(Tracker, "CreateLocationRequestSmallD") End Sub Private Sub p_pideGeoPass_Click diff --git a/B4A/C_Nota.bas b/B4A/C_Nota.bas index 4ebb402..42c62f5 100644 --- a/B4A/C_Nota.bas +++ b/B4A/C_Nota.bas @@ -129,26 +129,21 @@ Sub B4XPage_Appear Private s3 As Cursor=B4XPages.MainPage.skmt.ExecQuery2("select * FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_RECALCULO <> ? OR PE_RECALCULO <> ? OR PE_RECALCULO IS NOT NULL",Array As String("","null")) LogColor(s3.RowCount,Colors.Yellow) If s3.RowCount > 0 Then - Private s As Cursor=B4XPages.MainPage.skmt.ExecQuery2("select iFNULL(sum(pe_costo_tot),0) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and (PE_RECALCULO = ? or PE_RECALCULO = ? or PE_RECALCULO IS NULL)",Array As String("","null")) s.Position=0 Private s5 As Cursor = B4XPages.MainPage.skmt.ExecQuery2("select iFNULL(sum(PE_RECALCULOTOT),0) as TOTAL_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and (PE_RECALCULO <> ? or PE_RECALCULO <> ? OR PE_RECALCULO IS NOT NULL)",Array As String("","null")) s5.Position = 0 - - L_TOTAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,True) - s.Close - - Else If s3.RowCount = 0 Then Private s As Cursor=B4XPages.MainPage.skmt.ExecQuery("select iFNULL(sum(pe_costo_tot),0) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") s.Position=0 - L_TOTAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,True) - s.Close End If + ' ************************************************* + L_TOTAL.text = Subs.calculaTotalConPromoXRango + ' ************************************************* 'AQUI TERMINA End If diff --git a/B4A/C_NuevoCliente.bas b/B4A/C_NuevoCliente.bas index 70e654d..87b3294 100644 --- a/B4A/C_NuevoCliente.bas +++ b/B4A/C_NuevoCliente.bas @@ -89,7 +89,6 @@ Sub GPS_LocationChanged (Location1 As Location) If GUARDA.IsInitialized Then GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar. l_sinUbicacion.Visible = True - End If End If Log("CAMBIE") @@ -100,10 +99,8 @@ Sub GPS_LocationChanged (Location1 As Location) lat = Location1.Latitude lon = Location1.Longitude l_sinUbicacion.Text = ("Latitud: " & lat & ", Longotud: "& lon) - End If End If - End Sub Sub CANCELA_Click diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index c0a56e6..3d58be4 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -2811,7 +2811,8 @@ Sub resdia_Click ' l_ru_pri.Text = NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,False) - L_REAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,False) +' L_REAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,False) + L_REAL.Text = Subs.calculaTotalConPromoXRango s.Close Else If s3.RowCount = 0 Then @@ -2820,11 +2821,12 @@ Sub resdia_Click ' l_ru_pri.Text =NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,False) - L_REAL.Text =NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,False) - +' L_REAL.Text = NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,False) + L_REAL.Text = Subs.calculaTotalConPromoXRango + s.Close End If - + 'Prueba0 Private ru_o As Cursor = B4XPages.MainPage.skmt.ExecQuery2("SELECT IFNULL(PE_RUTA, 0) AS PE_RUTA, IFNULL(SUM(PE_COSTO_TOT), 0) AS TOTAL_CLIE FROM PEDIDO LEFT JOIN RUTA_SUPLENCIA ON PE_RUTA = RS_RUTA WHERE RS_RUTA IS NULL", Null) ru_o.Position=0 @@ -2834,7 +2836,8 @@ Sub resdia_Click Else if ru_o.RowCount >=1 Then Private rutOr As String = ru_o.GetString("PE_RUTA") Label2.Text = "Ruta " & rutOr - l_ru_pri.Text = NumberFormat2(ru_o.GetDouble("TOTAL_CLIE"), 0, 2, 2, False) +' l_ru_pri.Text = NumberFormat2(ru_o.GetDouble("TOTAL_CLIE"), 0, 2, 2, False) + l_ru_pri.Text = Subs.calculaTotalConPromoXRango End If ru_o.Close diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index bcb1944..15d0536 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -1211,6 +1211,9 @@ Sub b_terminar1_Click ' r.Close End If c_prods.Close + + l_total2.Text = Subs.calculaTotalConPromoXRango + ' BUSCA.Text = "" p_vistaPreviaTrans.Width = Root.Width p_vistaPreviaTrans.Height = Root.Height diff --git a/B4A/C_TicketsDia.bas b/B4A/C_TicketsDia.bas index d45ba43..9c013c1 100644 --- a/B4A/C_TicketsDia.bas +++ b/B4A/C_TicketsDia.bas @@ -54,7 +54,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) ListView1.TwoLinesLayout.ItemHeight = 95dip Label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) label2.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) - ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO")) + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& Subs.calculaTotalConPromoXRango) Next End If End Sub @@ -104,13 +104,9 @@ Sub B4XPage_Appear ListView1.TwoLinesLayout.ItemHeight = 95dip label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) label2.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) - ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& (s.GetString("CANT_CLIE") + s5.GetString("CANT_CLIE")) & " SubTotal $"& NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,True)) - - - +' ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& (s.GetString("CANT_CLIE") + s5.GetString("CANT_CLIE")) & " SubTotal $"& NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,True)) + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& (s.GetString("CANT_CLIE") + s5.GetString("CANT_CLIE")) & " SubTotal $"& Subs.calculaTotalConPromoXRango) s.Close - - Else If s3.RowCount = 0 Then Private s As Cursor=B4XPages.MainPage.skmt.ExecQuery2("select iFNULL(sum(pe_costo_tot),0) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE = ?", Array As String(C.GetString("PC_CLIENTE"))) s.Position=0 @@ -129,16 +125,9 @@ Sub B4XPage_Appear ListView1.TwoLinesLayout.ItemHeight = 95dip label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) label2.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) - ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& s.GetString("CANT_CLIE") & " SubTotal $"& NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,True)) - - - + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& s.GetString("CANT_CLIE") & " SubTotal $"& Subs.calculaTotalConPromoXRango) s.Close End If - - - - Next End If c.Close @@ -215,10 +204,6 @@ Sub b_noventa_Click s.Position=0 Private s5 As Cursor = B4XPages.MainPage.skmt.ExecQuery2("select iFNULL(sum(PE_RECALCULOTOT),0) as TOTAL_CLIE, IFNULL(SUM(PE_CANT),0) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE = ? and (PE_RECALCULO <> ? or PE_RECALCULO <> ? OR PE_RECALCULO IS NOT NULL) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP)",Array As String(C.GetString("PC_CLIENTE"),"","null")) s5.Position = 0 - - - - Dim label1 As Label label1 = ListView1.TwoLinesLayout.Label label1.TextSize = 20 @@ -233,13 +218,9 @@ Sub b_noventa_Click ListView1.TwoLinesLayout.ItemHeight = 95dip label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) label2.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) - ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& (s.GetString("CANT_CLIE") + s5.GetString("CANT_CLIE")) & " SubTotal $"& NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,True)) - - - +' ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& (s.GetString("CANT_CLIE") + s5.GetString("CANT_CLIE")) & " SubTotal $"& NumberFormat2(s.GetString("TOTAL_CLIE") + s5.GetString("TOTAL_CLIE"),0,2,2,True)) + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& (s.GetString("CANT_CLIE") + s5.GetString("CANT_CLIE")) & " SubTotal $"& Subs.calculaTotalConPromoXRango) s.Close - - Else If s3.RowCount = 0 Then Private s As Cursor=B4XPages.MainPage.skmt.ExecQuery2("select iFNULL(sum(pe_costo_tot),0) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE = ?", Array As String(C.GetString("PC_CLIENTE"))) s.Position=0 @@ -258,7 +239,7 @@ Sub b_noventa_Click ListView1.TwoLinesLayout.ItemHeight = 95dip label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) label2.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) - ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& s.GetString("CANT_CLIE") & " SubTotal $"& NumberFormat2(s.GetString("TOTAL_CLIE"),0,2,2,True)) + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& s.GetString("CANT_CLIE") & " SubTotal $"& Subs.calculaTotalConPromoXRango) diff --git a/B4A/Guna Vistas V3.1.b4a.meta b/B4A/Guna Vistas V3.1.b4a.meta index f5631e5..52a933a 100644 --- a/B4A/Guna Vistas V3.1.b4a.meta +++ b/B4A/Guna Vistas V3.1.b4a.meta @@ -66,7 +66,7 @@ ModuleClosedNodes12= ModuleClosedNodes13= ModuleClosedNodes14= ModuleClosedNodes15= -ModuleClosedNodes16= +ModuleClosedNodes16=1 ModuleClosedNodes17= ModuleClosedNodes18= ModuleClosedNodes19= @@ -88,6 +88,6 @@ ModuleClosedNodes6= ModuleClosedNodes7=6,8,9,10,11 ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Principal,JobDone,1463,0,B4XMainPage,B4XPage_Created,206,0,C_Cliente,Class_Globals,464,0,C_Cliente,B4XPage_Created,483,0,C_Principal,cargar_Click,1142,0,C_Cliente,B4XPage_Appear,1263,6,C_Cliente,gest_Click,1899,0,C_Cliente,compra,2036,0,Diseñador Visual,cliente.bal,-100,6,C_Cliente,Cuestionario,5242,0 +NavigationStack=C_Productos,b_aceptar_Click,1329,0,C_TicketsDia,Class_Globals,10,0,C_TicketsDia,B4XPage_Created,50,0,C_TicketsDia,B4XPage_Appear,101,0,C_TicketsDia,b_noventa_Click,215,0,Diseñador Visual,ticketsdia.bal,-100,2,C_Principal,Class_Globals,0,0,C_Principal,B4XPage_Created,251,0,Diseñador Visual,resdia.bal,-100,2,C_Principal,resdia_Click,2819,0 SelectedBuild=0 -VisibleModules=27,2,16,28,5,12,13,22,21,18 +VisibleModules=27,2,16,28,5,12,13,22,18,17,14,29,19 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 42caedb..a05c291 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -2222,4 +2222,39 @@ Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As End If ' Log(res) Return res +End Sub + +'Calcula el total de pedido tomando en cuenta si hay productos con promos por rango. +Sub calculaTotalConPromoXRango As String +' caso 1 pe_recant = Null +' monto del pedido = pe_costo_tot +' caso 2 pe_recant = pe_cant (solo prods dentro de rango) +' monto del pedido = pe_recalculotot +' caso 3 pe_recant <> pe_cant (hay prod dentro de rango y producto extra +' monto del pedido = ((pe_cant - pe_reccant) * pe_costou) + pe_recalculotot + Log("888888888888") + Private totalParcial As String = 0 + Private total As String = 0 + Private cx As Cursor = Starter.skmt.ExecQuery($"select *, ifnull(pe_reccant, 'N') as RECANT from pedido where pe_cliente = '${traeCliente}'"$) + If cx.RowCount > 0 Then + For i = 0 To cx.RowCount - 1 + Log("999999999999999999999999999999999999") + cx.Position = i + Log("***************************************") + If cx.getstring("RECANT") = "N" Then ' Sin productos dentro de rango. + totalParcial = cx.getstring("PE_COSTO_TOT") + else if cx.getstring("RECANT") = cx.getstring("PE_CANT") Then ' Solo productos dentro de rango. + totalParcial = cx.getstring("PE_RECALCULOTOT") + Else ' hay productos dentro de rango y productos arriba del rango. + totalParcial = ((cx.getstring("PE_CANT") - cx.getstring("PE_RECCANT")) * cx.getstring("PE_COSTOU")) + (cx.getstring("PE_RECALCULO") * cx.getstring("PE_RECCANT")) + Log($"${((cx.getstring("PE_CANT") - cx.getstring("PE_RECCANT")) * cx.getstring("PE_COSTOU"))} + ${(cx.getstring("PE_RECALCULO") * cx.getstring("PE_RECCANT"))} "$) + End If + Log($"Total:${total} + Total Parcial: ${totalParcial}"$) + total = total + totalParcial + Next + End If + cx.Close + total = NumberFormat2(total, 1, 2, 2, False) + Log($"Total con promocXrango = ${total}"$) + Return total End Sub \ No newline at end of file diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas index f82e459..9d40e30 100644 --- a/B4A/Tracker.bas +++ b/B4A/Tracker.bas @@ -491,7 +491,7 @@ End Sub Sub flp_LocationChanged (Location1 As Location) ' ToastMessageShow("Loc changed", False) -' Log($"Loc changed:${Location1.Longitude},${Location1.Latitude}"$) + Log($"Loc changed:${Location1.Longitude},${Location1.Latitude}"$) B4XPages.MainPage.lat_gps = Location1.Latitude B4XPages.MainPage.lon_gps = Location1.Longitude UUGCoords = Location1