From 9011b6a8bbccf998665f64ac83366e5e1da1ad36 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Wed, 14 May 2025 18:31:13 -0600 Subject: [PATCH] - VERSION 5.05.13 - Se corrigen los montos y piezas que semuestran en Resumen Dia del abordo - Se agrega la funcion "Subs/agrupaProdsPromo" que agrupa los productos fijos y variables de las promos, esto para el caso de que los fijos y variables sean iguales en monto y cantidad y el pasarInfoMovil no los tire! --- B4A/C_Principal.bas | 10 ++++--- B4A/C_Promos.bas | 2 ++ B4A/Durakelo.b4a | 2 +- B4A/Durakelo.b4a.meta | 2 +- B4A/Subs.bas | 61 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 5 deletions(-) diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index aed4b86..cb70524 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -2557,9 +2557,13 @@ Sub Resumen_Click Private montoAbordo As String = 0 Private px As Cursor = Starter.skmt.ExecQuery("select cat_gp_almacen, cat_gp_precio from cat_gunaprod2 where cat_gp_tipo <> 'PROMOS'") If px.RowCount > 0 Then - px.Position = 0 - pzasAbordo = pzasAbordo + px.GetString("CAT_GP_ALMACEN") - montoAbordo = montoAbordo + (px.GetString("CAT_GP_PRECIO") * px.GetInt("CAT_GP_ALMACEN")) + For i = 0 To px.RowCount - 1 + px.Position = i + pzasAbordo = pzasAbordo + px.GetString("CAT_GP_ALMACEN") + montoAbordo = montoAbordo + (px.GetString("CAT_GP_PRECIO") * px.GetInt("CAT_GP_ALMACEN")) + Log(pzasAbordo) + Log(montoAbordo) + Next End If Log(pzasAbordo) Log(montoAbordo) diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index 0ad56cd..5af29ee 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -390,6 +390,7 @@ Private Sub b_terminar1_Click Next lv_prodsFijos.Clear B4XPages.MainPage.bTerminarClicked = True + Subs.agrupaProdsPromo(Subs.traeCliente) B4XPages.ShowPage("productos") B4XPages.MainPage.productos.b_terminar1_Click End Sub @@ -415,6 +416,7 @@ Private Sub b_continuar_Click prodspage.lv_promos.Visible = False prodspage.clv_productos.AsView.Visible = False End If + Subs.agrupaProdsPromo(Subs.traeCliente) B4XPages.MainPage.bTerminarClicked = True B4XPages.ShowPage("productos") End Sub diff --git a/B4A/Durakelo.b4a b/B4A/Durakelo.b4a index 56bc6b3..c6bbfa3 100644 --- a/B4A/Durakelo.b4a +++ b/B4A/Durakelo.b4a @@ -1408,7 +1408,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Durakelo #VersionCode: 1 - #VersionName: 5.05.07 + #VersionName: 5.05.13 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Durakelo.b4a.meta b/B4A/Durakelo.b4a.meta index 1236934..2a8dbe2 100644 --- a/B4A/Durakelo.b4a.meta +++ b/B4A/Durakelo.b4a.meta @@ -73,6 +73,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Principal,Resumen_Click,2543,6,C_Cliente,Class_Globals,22,0,DiseƱador Visual,principal.bal,-100,1,DiseƱador Visual,Cliente.bal,-100,1,C_Cliente,B_IMP_Click,781,0,C_Cliente,B_IMP2_Click,981,6,C_Principal,Subir_Click,576,0,C_Principal,cargar_Click,883,0,C_Principal,SUBIR_P_Click,2721,0,Starter,ENVIA_ULTIMA_GPS,100,0,C_Principal,Class_Globals,9,0 +NavigationStack=C_Principal,Class_Globals,20,0,C_Principal,B_PROXIMA_Click,2568,0,C_Productos,b_prodMenos_Click,626,0,Subs,traeTablaProds,1361,0,C_Promos,Class_Globals,0,0,C_Principal,Resumen_Click,2551,6,Subs,traemosInventarioDisponibleParaPromo,897,0,C_Promos,b_continuar_Click,412,0,C_Promos,b_terminar1_Click,386,6,Subs,agrupaProdsPromo,1529,2 SelectedBuild=0 VisibleModules=22,2,10,4,19,9,11,23,12,8 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 740d1df..d044bbc 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -1510,4 +1510,65 @@ Sub revisaFechaVigenciaPromo(pm As Map) As Boolean ' Log(Starter.tipov & "|" & vigencia & "|" & DateTime.Date(DateTime.Now)) LogColor("Promo vigente: " & vigente, Colors.red) Return vigente +End Sub + +' Agrupa los productos de las promociones, porque si tenemos un producto fijo a precio x y un producto variabe al mismo precio +' y las mismas cantidades, el pasarInfoMovil las detecta como duplicados y las tira, con esta funcion en lugar de dos registros, +' solo va uno con cantidades y totales sumados. +Sub agrupaProdsPromo (cliente As String) + Starter.skmt.ExecNonQuery($"CREATE TEMP TABLE IF NOT EXISTS PEDIDO_AGRUPADOR ( + PE_PRECIO2, + PE_TIPO, + PE_FOLIO TEXT, + PE_DESC TEXT, + PE_COSTO_SIN REAL, + PE_RUTA TEXT, + PE_CEDIS TEXT, + PE_COSTO_TOT REAL, + PE_COSTOU REAL, + PE_CANT INTEGER, + PE_PRONOMBRE TEXT, + PE_PROID TEXT, + PE_CLIENTE TEXT, + PE_FECHA TEXT, + PE_USUARIO TEXT +)"$) + + Starter.skmt.BeginTransaction + + '-- Vaciar la tabla temporal. + Starter.skmt.ExecNonQuery($"DELETE FROM PEDIDO_AGRUPADOR"$) + + '-- Ponemos los datos agrupados en la tabla temporal. + Starter.skmt.ExecNonQuery($" + INSERT INTO PEDIDO_AGRUPADOR + Select + PE_PRECIO2, + PE_TIPO, + PE_FOLIO, + 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_FECHA, + PE_USUARIO + FROM + pedido + WHERE + PE_CLIENTE = '${cliente}' + GROUP BY + PE_PROID, PE_PRONOMBRE, PE_COSTOU, PE_RUTA, PE_CEDIS, PE_CLIENTE, PE_FECHA, PE_USUARIO"$) + + '-- Reemplazar los datos originales en pedido. + Starter.skmt.ExecNonQuery($"DELETE FROM PEDIDO WHERE PE_CLIENTE = '${cliente}'"$) + Starter.skmt.ExecNonQuery($"INSERT INTO PEDIDO SELECT * FROM PEDIDO_AGRUPADOR"$) + Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + Starter.skmt.EndTransaction + Log("LISTO!!") End Sub \ No newline at end of file