From afcd8129ecf6f7cbaa1f39350f6ad89656578bfd Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Tue, 1 Jul 2025 11:51:23 -0600 Subject: [PATCH] - VERSION 5.06.10 - Cambios de Javy. --- B4A/B4XMainPage.bas | 4 +- B4A/C_Cliente.bas | 141 ++++++++++++++++++++-------------- B4A/C_Principal.bas | 7 +- B4A/C_Productos.bas | 48 ++++++++++-- B4A/C_Promos.bas | 6 -- B4A/Files/cliente.bal | Bin 62681 -> 63537 bytes B4A/Guna Vistas V3.1.b4a | 2 +- B4A/Guna Vistas V3.1.b4a.meta | 4 +- B4A/Starter.bas | 2 +- B4A/Subs.bas | 120 +---------------------------- 10 files changed, 139 insertions(+), 195 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 497f694..5eae53a 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -198,8 +198,10 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("HIST_ENCUESTA", "HE_LON", "TEXT") Subs.agregaColumna("kmt_info3", "encuesta", "TEXT") Subs.agregaColumna("kmt_info3", "CAT_CL_TIPOCLIENTE", "TEXT") + Subs.agregaColumna("kmt_info3", "CAT_CL_LIMITECREDITO", "TEXT") Subs.agregaColumna("kmt_info3", "CAT_CL_BCREDITO", "TEXT") '########################## CODIGO PARA CREDITOS #################### Subs.agregaColumna("CAT_GUNAPROD", "CAT_PA_BSEGMENTA", "TEXT") + Subs.agregaColumna("CAT_GUNAPROD", "CAT_LISTAPRECIO", "TEXT") Subs.agregaColumna("CAT_GUNAPROD", "CAT_PA_SEGMENTAV", "TEXT") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_PA_BSEGMENTA", "TEXT") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_PA_SEGMENTAV", "TEXT") @@ -822,7 +824,7 @@ End Sub Sub i_engrane_Click p_appUpdate.Left = (Root.Width/2) - (p_appUpdate.Width/2) lv_server.Clear - lv_server.AddSingleLine("http://keymon.lat:1782") + lv_server.AddSingleLine("http://keymon.net:1782") If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1782") l_server.Text = Starter.server et_server.Text = Starter.server diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 3be8ffc..f4d0c5d 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -461,6 +461,8 @@ Sub Class_Globals Private lv_comentarios As ListView Private ImageView4 As ImageView Private p_cliente_ As Panel + Private l_limite As Label + Private l_credito As Label End Sub 'You can add more parameters here. @@ -538,7 +540,8 @@ Sub B4XPage_Appear que_modulo = 1 dentroDeGeocerca = False indicePregunta = 0 - + l_credito.Visible = False + l_limite.Visible = False pnlPlanLealtad.Top = 0 pnlPlanLealtad.Left = 0 pnlPlanLealtad.Width = Root.Width @@ -1184,6 +1187,19 @@ Sub B4XPage_Appear If fac.GetString("PC_FACTURA") <> Null And IsNumber(fac.GetString("PC_FACTURA")) Then factura = fac.GetString("PC_FACTURA") If factura = "1" Then CH_FACTURA.Checked = True +' If l_credito.IsInitialized Then + c=B4XPages.MainPage.skmt.ExecQuery("select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c.Position = 0 + If c.GetInt("CAT_CL_BCREDITO") = 1 Then + l_credito.Visible = True + l_limite.Visible = True + l_limite.Text = c.GetInt("CAT_CL_LIMITECREDITO") + Else If c.GetInt("CAT_CL_BCREDITO") = 0 Then + l_credito.Visible = False + l_limite.Visible = False + End If +' End If + End Sub Sub GPS_LocationChanged (Location1 As Location) @@ -1385,6 +1401,7 @@ Sub GPS_LocationChanged (Location1 As Location) ' 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, "CreateLocationRequest") @@ -2566,27 +2583,6 @@ Sub b_mapa_Click B4XPages.ShowPage("mapas") End Sub -Sub Printer1_Connected (Success As Boolean) -' If Logger Then Log("Printer1_Connected") - If Success Then - ToastMessageShow("Impresora conectada", False) - skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) - skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Starter.mac_impresora)) - LogColor("Impresora conectada", Colors.Green) -' B_IMP2.Enabled = True - impresoraConectada = True - Else -' Msgbox(Printer1.ConnectedErrorMsg, "Error connecting.") 'ignore -' ToastMessageShow("Error conectando la impresora", False) - LogColor("Error conectando la impresora", Colors.Red) - errorImpresora = errorImpresora + 1 - If errorImpresora > 1 Then - Starter.MAC_IMPRESORA = "0" - errorImpresora = 0 - End If - End If -End Sub - Sub B_IMP_Click ' Printer1.Connect2 ' c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) @@ -2633,28 +2629,26 @@ Sub Impresion2 ProgressDialogShow("Imprimiendo, un momento ...") Printer1.DisConnect If Not(Printer1.IsConnected) Then - Log("Conectando a impresora ...") +' If logger Then Log("conectando 1") Printer1.Connect Private cont As Int = 0 Do While Not(impresoraConectada) Sleep(1000) - Log("++++++ " & cont) cont = cont + 1 - If cont = 2 Then Printer1.Connect 'Tratamos de reconectar - If cont > 3 Then impresoraConectada = True + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True Loop Sleep(500) impresoraConectada = False Else - Log("conectando 2") +' If logger Then Log("conectando 2") Printer1.Connect Private cont As Int = 0 Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) Sleep(1000) - Log("****** " & cont) cont = cont + 1 If cont = 2 Then Printer1.Connect - If cont > 3 Then impresoraConectada = True + If cont > 4 Then impresoraConectada = True Loop Sleep(500) impresoraConectada = False @@ -2835,28 +2829,26 @@ Sub Impresion ProgressDialogShow("Imprimiendo, un momento ...") Printer1.DisConnect If Not(Printer1.IsConnected) Then - Log("Conectando a impresora ...") +' If logger Then Log("conectando 1") Printer1.Connect Private cont As Int = 0 Do While Not(impresoraConectada) Sleep(1000) - Log("++++++ " & cont) cont = cont + 1 - If cont = 2 Then Printer1.Connect 'Tratamos de reconectar - If cont > 3 Then impresoraConectada = True + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True Loop Sleep(500) impresoraConectada = False Else - Log("conectando 2") +' If logger Then Log("conectando 2") Printer1.Connect Private cont As Int = 0 Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) Sleep(1000) - Log("****** " & cont) cont = cont + 1 If cont = 2 Then Printer1.Connect - If cont > 3 Then impresoraConectada = True + If cont > 4 Then impresoraConectada = True Loop Sleep(500) impresoraConectada = False @@ -2896,16 +2888,17 @@ Sub Impresion Printer1.WriteString("-----------PREVENTA-----------" & CRLF) ' aqui es donde esta el pedo de julieta de los descuentos quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show. - s=skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,PE_CANT * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS <> ? AND LENGTH(PE_CEDIS) < 4 AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PROID", Array As String("DUR")) +' s=skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,PE_CANT * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS <> ? AND LENGTH(PE_CEDIS) < 4 AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PROID", Array As String("DUR")) + s=skmt.ExecQuery2("select PE_PRONOMBRE, SUM(PE_CANT) AS PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,SUM(PE_CANT) * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_COSTOU > 0.01 GROUP by PE_PROID", Array As String("DUR")) If S.RowCount>0 Then For i=0 To S.RowCount -1 S.Position=i - If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then +' If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) - Else +' Else - Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) +' Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) TAMANO = s.GetLong("L_CANT") + TAMANO TAMANO = s.GetLong("L_COSTOU") + TAMANO TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO @@ -2919,22 +2912,24 @@ Sub Impresion TAMANO = 0 ESPACIO = 21 BLANCO = " " - End If +' End If Next End If s.Close Printer1.WriteString(" " & CRLF) - s=skmt.ExecQuery("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,PE_CANT * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE LENGTH(PE_CEDIS) > 3 AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_COSTOU") +' s=skmt.ExecQuery("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,PE_CANT * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE LENGTH(PE_CEDIS) > 3 AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_COSTOU") + s=skmt.ExecQuery2("select PE_PRONOMBRE, SUM(PE_CANT) AS PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,SUM(PE_CANT) * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_COSTOU = 0.01 GROUP by PE_PROID", Array As String("DUR")) + If S.RowCount>0 Then - Printer1.WriteString("------------PROMOS------------" & CRLF) + Printer1.WriteString("--------BONIFICACIONES--------" & CRLF) For i=0 To S.RowCount -1 S.Position=i - If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then +' If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) - Else +' Else - Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) +' Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) TAMANO = s.GetLong("L_CANT") + TAMANO TAMANO = s.GetLong("L_COSTOU") + TAMANO TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO @@ -2948,7 +2943,7 @@ Sub Impresion TAMANO = 0 ESPACIO = 21 BLANCO = " " - End If +' End If Next Printer1.WriteString(" " & CRLF) End If @@ -3058,12 +3053,38 @@ End Sub '' printer.Close 'End Sub +Sub Printer1_Connected (Success As Boolean) +' If Logger Then Log("Printer1_Connected") + If Success Then + ToastMessageShow("Impresora conectada", False) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Starter.mac_impresora)) +' If logger Then LogColor("Impresora conectada", Colors.Green) +' B_IMP2.Enabled = True + impresoraConectada = True + Else +' Msgbox(Printer1.ConnectedErrorMsg, "Error connecting.") 'ignore +' ToastMessageShow("Error conectando la impresora", False) + LogColor("Error conectando la impresora", Colors.Red) + errorImpresora = errorImpresora + 1 + If errorImpresora > 1 Then + Starter.MAC_IMPRESORA = "0" + errorImpresora = 0 + End If + End If +End Sub + +Sub Printer1_Error + Log("error printer") +End Sub + Sub Printer_Connected (Success As Boolean) If Success Then - B_IMP.Enabled = True +' B_IMP.Enabled = True +' PASA_IMP = "1" Else - B_IMP.Enabled = False - If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'Ignore +' B_IMP.Enabled = False + If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore StartPrinter End If End If @@ -3071,37 +3092,39 @@ End Sub Sub StartPrinter Dim PairedDevices As Map - Dim L As List + Dim L1 As List Dim resimp As Int ToastMessageShow("Printing.....",True) PairedDevices.Initialize Try PairedDevices = cmp20.GetPairedDevices Catch - Msgbox("Getting Paired Devices","Printer Error") 'Ignore + Msgbox("Getting Paired Devices","Printer Error") 'ignore printer.Close cmp20.Disconnect End Try + If PairedDevices.Size = 0 Then - Msgbox("Error Connecting to Printer - Printer Not Found","") 'Ignore + Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore Return End If + If PairedDevices.Size = 1 Then Try - cmp20.ConnectInsecure(btAdmin,PairedDevices.Get(PairedDevices.GetKeyAt(0)),1) + cmp20.Connect(PairedDevices.Get(PairedDevices.GetKeyAt(0))) Catch - Msgbox("Connecting","Printer Error") 'Ignore + Msgbox("Connecting","Printer Error") 'ignore printer.Close cmp20.Disconnect End Try Else - L.Initialize + L1.Initialize For i = 0 To PairedDevices.Size - 1 - L.Add(PairedDevices.GetKeyAt(i)) + L1.Add(PairedDevices.GetKeyAt(i)) Next - resimp = InputList(L, "Choose device", -1) 'Ignore + resimp = InputList(L1, "Choose device", -1) 'ignore If resimp <> DialogResponse.CANCEL Then - cmp20.Connect(PairedDevices.Get(L.Get(resimp))) + cmp20.Connect(PairedDevices.Get(L1.Get(resimp))) End If End If End Sub diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index ce7a853..c28dd45 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -1390,10 +1390,11 @@ Sub JobDone(Job As HttpJob) Dim CAT_CL_MTOCOMPRA As String = records(RESULT.Columns.Get("CAT_CL_MTOCOMPRA")) Dim CAT_CL_NUM_SERIEFISICO As String = records(RESULT.Columns.Get("CAT_CL_NUM_SERIEFISICO")) Dim CAT_CL_TIPOCLIENTE As String = records(RESULT.Columns.Get("CAT_CL_TIPOCLIENTE")) + Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_CL_LIMITECREDITO")) '########################## INICIA CODIGO PARA CREDITOS #################### Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_CL_BCREDITO")) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,FOTO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,CAT_CL_FOTO)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,FOTO,CAT_CL_LIMITECREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,?,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,CAT_CL_FOTO,CAT_CL_LIMITECREDITO)) '########################## TERMINA CODIGO PARA CREDITOS #################### B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (CAT_CL_CODIGO)) Next @@ -1758,9 +1759,11 @@ Sub JobDone(Job As HttpJob) ' Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV")) Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) Dim CAT_GP_INICIATIVA As Int = records(RESULT.Columns.Get("CAT_GP_INICIATIVA")) + Dim CAT_LISTAPRECIO As Int = records(RESULT.Columns.Get("CAT_LISTAPRECIO")) + Dim CAT_LISTAPRECIO As Int = 10 ' CAT_GP_INICIATIVA = 5 ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_DEV)) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA,CAT_LISTAPRECIO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA,CAT_LISTAPRECIO)) Next Listo2=1 If PB2.Progress = 0 Then diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index e94d0ca..ddb9153 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -1080,6 +1080,9 @@ Sub B4XPage_Appear PCLV.B4XSeekBar1.mBase.Height=clv_prods_ll.AsView.Height PCLV.pnlOverlay.Height = clv_prods_ll.AsView.Height PCLV.B4XSeekBar1.Update + + + End Sub Sub PCLV_AddProds @@ -2423,6 +2426,7 @@ Sub LlenaProdsLL(p As ResultSet) If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV. Dim cantsMap As Map cantsMap.Initialize + Dim pe As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select PE_PROID, PE_CANT from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = '${Subs.traeAlmacen}' and PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) ' LogColor("Ponemos productos de pedido anterior: "&pe.RowCount, Colors.red) Do While pe.NextRow @@ -2449,13 +2453,26 @@ Sub LlenaProdsLL(p As ResultSet) ' Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} LEFT JOIN PEDIDO ON CAT_GP_ID = PE_PROID where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} LEFT JOIN PEDIDO ON CAT_GP_ID = PE_PROID where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$) - Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Subs.traeTablaProds(tipo_venta)} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPO <> 'PROMOS' and CAT_GP_TIPO <> 'PROMOCION' + If Subs.traeTipoCliente = "4" Then + Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_LISTAPRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Subs.traeTablaProds(tipo_venta)} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPO <> 'PROMOS' and CAT_GP_TIPO <> 'PROMOCION' order by Case CAT_GP_TIPOPROD when 'PRIORITARIO' THEN 0 WHEN 'ESTRATEGICO' THEN 1 WHEN 'COMPLEMENTARIO' then 2 Else 3 End, CAT_GP_NOMBRE"$) + Else + Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Subs.traeTablaProds(tipo_venta)} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPO <> 'PROMOS' and CAT_GP_TIPO <> 'PROMOCION' + order by + Case CAT_GP_TIPOPROD when 'PRIORITARIO' THEN 0 + WHEN 'ESTRATEGICO' THEN 1 + WHEN 'COMPLEMENTARIO' then 2 + Else 3 + End, CAT_GP_NOMBRE"$) + End If + + + End If ' Do While p.NextRow @@ -2478,11 +2495,28 @@ Sub LlenaProdsLL(p As ResultSet) Log(p.GetString("CAT_GP_ID")) cant = cantsMap.Get(p.GetString("CAT_GP_ID")) End If - - If p.GetString("CAT_GP_ID") <> "GUN141" And p.GetString("CAT_GP_ID") <> "GUN142" Then + If Subs.traeTipoCliente = "4" Then + If p.GetString("CAT_GP_ID") <> "GUN141" And p.GetString("CAT_GP_ID") <> "GUN142" Then ' Log(p.GetString("CAT_GP_NOMBRE")) - ' ¡Importante! Crear un NUEVO mapa en cada iteración. - Dim tempMap As Map = CreateMap( _ + ' ¡Importante! Crear un NUEVO mapa en cada iteración. + Dim tempMap As Map = CreateMap( _ + "prod": p.GetString("CAT_GP_NOMBRE"), _ + "precio": p.GetString("CAT_LISTAPRECIO"), _ + "prioridad": p.GetString("CAT_GP_TIPOPROD"), _ + "almacen": p.GetString("CAT_GP_ALMACEN"), _ + "id": p.GetString("CAT_GP_ID"), _ + "cant": cant, _ + "conversion": 1, _ + "precio_caja": 0, _ + "b_caja": 0 _ + ) + listaProds.Add(tempMap) ' Agregar el nuevo mapa a la lista + End If + Else + If p.GetString("CAT_GP_ID") <> "GUN141" And p.GetString("CAT_GP_ID") <> "GUN142" Then +' Log(p.GetString("CAT_GP_NOMBRE")) + ' ¡Importante! Crear un NUEVO mapa en cada iteración. + Dim tempMap As Map = CreateMap( _ "prod": p.GetString("CAT_GP_NOMBRE"), _ "precio": p.GetString("CAT_GP_PRECIO"), _ "prioridad": p.GetString("CAT_GP_TIPOPROD"), _ @@ -2493,8 +2527,10 @@ Sub LlenaProdsLL(p As ResultSet) "precio_caja": 0, _ "b_caja": 0 _ ) - listaProds.Add(tempMap) ' Agregar el nuevo mapa a la lista + listaProds.Add(tempMap) ' Agregar el nuevo mapa a la lista + End If End If + Loop ' p.Close ' Log(listaProds) diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index 4a33c97..e7f5e99 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -997,9 +997,6 @@ Private Sub b_terminar1_Click ' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) ' Next ' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) - - Subs.agrupaProdsPromo(Subs.traeCliente) - lv_prodsFijos.Clear B4XPages.MainPage.bTerminarClicked = True B4XPages.ShowPage("productos") @@ -1038,9 +1035,6 @@ 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/Files/cliente.bal b/B4A/Files/cliente.bal index 5c9a311236a57cb0412087f8bb455765818cad34..44587ee37c7ad1286fd3ac04f972c2c3faa2e29f 100644 GIT binary patch delta 4472 zcma)933!cH8ouXGF8OcxZ`=gg%1ww^LL!(V3Ar9i7-OfiFkz-<>WOI?+Ua6z>x!eC|dD?i+?>*;y-*>+KoO`Lt ztDw%Stai}2xmSrid7`CZV z^sP%Dq1G+?6T|8i9bn%QhaXocQn3LACqi*9^)UMyMVCTZ2@01-nM=rk0W{ihOXOmF zw>&lIKLoi6@+tcG(l9da6!|pXUelhP!TT$$VWoV*pFU@4w0c(e;MqC8@(q3bI5>qX zD}wz`6Vynj*?AP*>yN~heOMV@S$UjYa9Y<3&qi6y7xeVFnr~$nv47Q%>=FuAN71(~ zy)(w!Er{71fG%rBw5aR1PF;5&`8m4IN(lD?)oy!ck8eKaehVPxoYBvf6y zHiofsege6-BldpU)vvq}H#s|kRUk2~mQ^|lt(ch*Vy@H^3KK75@477071|MQx5Ku5 zFxIUPU{@)k?Zd9o25VqW&)R7g%vX4Wp*~}fuWGy!jR_ecnAhEi@e@p_+8T$g>D}0M zkr~&CPGvVl^#6;)8BxgFq)68d7;5j1c|#REDU{Xt4KopT*7Ju`_s({<{BM)HLOWi_8n5P(rtHXN4T?=KphQU)CRepK4O_C?>)Y9 zpFRy7{Et5T&)cy~QRtqzE}DHWtV>KVQn6Yn*m6HEQH0=M1p3nul^}Hdo@O3@RnyEN z+G&>wF||Hw)O+tU_JiALKQ!XuK2}F<^*dvh+k4WSTc^VWOE|o=EKhd-CI8Yc(s5zI&(+UT(WTfrrXY%wGY{?7vnrY+h zBs3zP*h^_N(^8(%va_X7nc`udVthnP=kdFpe_&7|zZZW~Gkw<8x0G z$cTay{#d#|#@=1BBr$|#24VMtXn5u2GA~S|&4YOfW-mP#w?Xn|=(}Sg7JU@&You+F zIjv}|DiX^+jApH|{Z16D6=sPR>)#17w{9eZcQ7C1{4>2-cDXUT+zh*k*eBto-OX#@ z+gOBeGa}ju5tl!1UPRkQBCx+up&a3=D}r&#p5__NjTx)1)xWaF!JA4g*?$rLZt^ekEd$CbMwNzhFh-(J?qtl#3z9v?hcg z#Htr)^`THRdo4(3s z-AOhTp`#O_^-0B{z0||4n)>)C#kr@*hMs!4JmTV_9<3_JiKv$#>eZA;igKidwfKP4 z+u^pS#WIKW>75XHa--CT;qavp77g3kE_i%WHb?8E^hUtfl^9mqHSidzFPd|Vo1JVF@cyaNfg2kn|qN~5a z22e(qjkALbUfhHvelY%xy*MUX{PC@7*oMXNqJt&)mtq+RPx&AulpuC=KBwDMSbkejgNa*8z69TW~-HJ9kFIdh`!;GtyJBy6y! zF&l-*ozZ5Sjw+D{N*dV8XQ|7HFEJ=_jH6{1d zA*UZnzo+b5hx1piG}`T04tZ5NekpWAn>!oPP_1)O;25W9Un6x{{!jb@B1T6}21~zW zX!m+o@p^fydb00Wq8Hb|uNbxu4`JiDf*r@Xq)ufVm)VXc6tF)=q+-BM9UX~^~8rEb{ zE|VMa@De*yKe@$ZnL^tCM6!79CXp;t^e51aCkwxzzT6pzxcg14W>ZBHOx5%0e6_w| G?Ee9u#~UgD delta 4272 zcmb7H3s6+o8Qyw*PYh>IfifhhPypaClyd{oqqc1)dMrqfJnYSyu_v8fL< zq78nM09O@?XED88cd2nxPHd}36n_(1Jr?0?Sg!o7gw1m-{d_niNI z{>P#8uHU)u{DS>WCeu^9$zIjXHdj4u=lktiwNK{3C{s8MZKFFic|jguxfx ztvWnF8>$AIX_l7MyTGbhBHvH~%zT_UQgaV{Fb~;xLhBV^E#sz~CI4AWVwF(A=--2wHL@=_su0;?$!oax_CP2QNwmGS;oO z9%EFfQjVi&ZA`!kM*U5oSHe(q%`)VqI0@n96hpw%yN{n%ik&K6IGdP>mk0*RLhIUo z{uPW?vuzkws$gEhB|LwwysIx#L7jK@eSJ@B2hI@F6`QZ-g)KmyEC|-QEn! zMO|dds8OawqcK{ZpaLnzExpNWWds`C#hL-&e@i#HXAr^V8Lz|-Nd17`RU*Bi45s2 zMs72RGBYW6c#+#8iCe@@D=+^N$X#B|tBMAv}hoE46p!ROzpNa12!=m0Z@`wOwpML5`bYFOCoyyk9YrU^k z7p)_DAer5_WAM>-hx)+4%p6IvXxM(29tz%Y(IzGD!!BgXj%I3?iP7#&jB$8t=P$g? z;890nJTmaLcO(YlKTAYor4>zcW8f-DrN{CHD(h0!$3_-$18_~WVq$%oOz-o5P0{z1 z%EWn8VhO16Z08_E zi~npsS^vY|BN&wbBH`o7s`%`@u6EQciL(BQ_hc^rk8?8uZ@QhRelZj;|GgOTyF!sa zufHf{6z#Hc1Vws1MRI+nbnW!+lpqt=rOYQHlorn+GkVuXKqSdN)y#Vd8~XBJqgv74 z{7|jU!jwJTC0KfpVCg}Ezm#xbZ+8g+JxB=XLBbEDgfXSvB?R^$A+QGtij=T>Uv~-C z9wb3fRnH(O<6fzz9Fd`mVp04vl1b#J83FEzRv5&T$;n9LZHu5P+zs;2w`2u0dBtF_!EPMRxg6r0sU7E`zuzu;=DzX4~KyrUi$e{U+$o zA^3i8g8oKjUgux+wHWb;X*p7eIfq{HnO=8jiuSW(69`8toZ_{Bu){VE1ZR==jiCMN zn+Zg*GL>SD;$^P=NT$-;C(CG%h^h4izqw^%3_|uP%{-XUn(L$?NT`fM^Klzfy;0df zLuLGbQ>Ea^3EtDzR&hedNhNUxB}1i>VM2*kS;LmZOQQH5h=xl`nrh3CSrsGd5=*OW zXee@UVU9z;Grq}@z_!RIg_>ZHGJ>x<4WV_#l*l?lz=Oh`Xr%C5H%|&}Vtp~eUaOF7 z(pXSC08jtsAY(sXk*na)xnde6<$1fZeN+!JWrLoDlnaG4nu&eQ7^@aLarCr}MsVIN zVcQaM?czw!1jLpz$-M7w*y){!V>|pBYt$h9+S6D_*qzz_T>p6 zm6o0NDc#eU$WM1G>Mk#&@f~F|zN2g~s=bmHdKJW65haoiDN z>?sDyWEoX+YG+Z18v43vn4m@YWg8{Ss(G=Kpy03*$8HRHX7fm6RnMuMbhbe^sn=b# z`3nc+8(LQ{n)PN9(FB&4rA{!KtuK<0TUZJizT5|hd{ zo=HfLbK-G}G$(9|PXzZ+`QsJAH7?&FS#85n(x6~{+hFXkkM1gmrb_3h8l1`y&U?96 zcjK5QIi@|6V>oK=71DIQqxR`WYEPx{Gs)-WxCe{OKlL<|8NNivqq{Z^q`P4(#yrf> zzu0cI#eAQCrjU8h=AXe9i0l73-0fCh3h=88Xzw1}MfW}Ja{qm4K}Rr# 0 Then x.Position = 0 - Log("ESTO LO HIZO GUERRA ------> "&x.GetInt("CAT_CL_TIPOCLIENTE")) +' Log("ESTO LO HIZO GUERRA ------> "&x.GetInt("CAT_CL_TIPOCLIENTE")) tc = x.GetInt("CAT_CL_TIPOCLIENTE") End If - Log("ESTO LO HIZO GUERRA X2------> "&tc) +' Log("ESTO LO HIZO GUERRA X2------> "&tc) Return tc End Sub @@ -2189,118 +2189,4 @@ Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As End If ' Log(res) Return res -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) - ' Obtener la estructura de la tabla pedido con tipos de datos - Dim rs As ResultSet = Starter.skmt.ExecQuery("PRAGMA table_info(pedido)") - Dim columns As List - columns.Initialize - Dim columnTypes As Map - columnTypes.Initialize - - ' Obtener nombres y tipos de columnas - Do While rs.NextRow - Dim colName As String = rs.GetString("name") - Dim colType As String = rs.GetString("type") - columns.Add(colName) - columnTypes.Put(colName, colType) - Loop - rs.Close - - ' Construir la sentencia CREATE TABLE dinámica con tipos correctos - Dim createTableSQL As StringBuilder - createTableSQL.Initialize - createTableSQL.Append("CREATE TEMP TABLE IF NOT EXISTS PEDIDO_AGRUPADOR (") - - For i = 0 To columns.Size - 1 - Dim columnName As String = columns.Get(i) - If i > 0 Then createTableSQL.Append(", ") - createTableSQL.Append(columnName).Append(" ") - - ' Determinar el tipo de dato adecuado - Dim detectedType As String = columnTypes.Get(columnName) - If detectedType.Contains("INT") Then - createTableSQL.Append("INTEGER") - Else If detectedType.Contains("CHAR") Or detectedType.Contains("TEXT") Then - createTableSQL.Append("TEXT") - Else If detectedType.Contains("REAL") Or detectedType.Contains("FLOA") Or detectedType.Contains("DOUB") Then - createTableSQL.Append("REAL") - Else If detectedType.Contains("BLOB") Then - createTableSQL.Append("BLOB") - Else - ' Por defecto usar TEXT si no se reconoce el tipo - createTableSQL.Append("TEXT") - End If - Next - - createTableSQL.Append(")") - - ' Crear la tabla temporal con los tipos correctos - Starter.skmt.ExecNonQuery(createTableSQL.ToString) - - Log("########################################################################") - Log(createTableSQL.ToString) - Log("########################################################################") - - ' Identificar columnas que deben sumarse (basado en nombre o tipo) - Dim sumColumns As List - sumColumns.Initialize - sumColumns.Add("PE_CANT") ' Estas son las que sabemos que deben sumarse - sumColumns.Add("PE_COSTO_TOT") - - ' Construir la lista de columnas para el GROUP BY (excluyendo las que se sumarán) - Dim groupByColumns As List - groupByColumns.Initialize - For Each col As String In columns - If sumColumns.IndexOf(col) = -1 Then ' Si no es una columna a sumar - groupByColumns.Add(col) - End If - Next - - ' Construir la consulta SELECT dinámica - Dim selectSQL As StringBuilder - selectSQL.Initialize - selectSQL.Append("INSERT INTO PEDIDO_AGRUPADOR SELECT ") - - For i = 0 To columns.Size - 1 - Dim columnName As String = columns.Get(i) - If i > 0 Then selectSQL.Append(", ") - - If sumColumns.IndexOf(columnName) > -1 Then - ' Columnas que requieren SUM() - selectSQL.Append("SUM(").Append(columnName).Append(") As ").Append(columnName) - Else - ' Otras columnas - selectSQL.Append(columnName) - End If - Next - - selectSQL.Append(" FROM pedido WHERE PE_CLIENTE = '").Append(cliente).Append("' GROUP BY ") - - For i = 0 To groupByColumns.Size - 1 - If i > 0 Then selectSQL.Append(", ") - selectSQL.Append(groupByColumns.Get(i)) - Next - - ' Ejecutar la transacción - Starter.skmt.BeginTransaction - - ' Vaciar la tabla temporal - Starter.skmt.ExecNonQuery("DELETE FROM PEDIDO_AGRUPADOR") - - ' Insertar datos agrupados - Starter.skmt.ExecNonQuery(selectSQL.ToString) - - ' Reemplazar los datos originales - Starter.skmt.ExecNonQuery($"DELETE FROM PEDIDO WHERE PE_CLIENTE = '${cliente}'"$) - Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO_AGRUPADOR") - - Starter.skmt.TransactionSuccessful - Starter.skmt.EndTransaction - Log("LISTO!!") End Sub \ No newline at end of file