From e6398484181b2c95a425707d1e2a8eb3b26198d0 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Fri, 27 Jun 2025 13:48:23 -0600 Subject: [PATCH] =?UTF-8?q?-=20VERSION=205.06.25=20-=20Se=20agreg=C3=B3=20?= =?UTF-8?q?la=20forma=20de=20pago=20en=20el=20ticket=20(credito=20o=20efec?= =?UTF-8?q?tivo)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/B4XMainPage.bas | 9 +- B4A/C_Cliente.bas | 44 ++- B4A/C_Principal.bas | 182 ++------- B4A/C_Productos.bas | 263 +++++++------ B4A/C_Promos.bas | 8 +- B4A/Files/cliente.bal | Bin 104409 -> 104409 bytes B4A/Files/kelloggs.rkmt.km | Bin 0 -> 40960 bytes B4A/Files/kmt.db | Bin 66560 -> 67584 bytes B4A/KelloggsV4.b4a | 787 +++++++++++++++++++------------------ B4A/KelloggsV4.b4a.meta | 23 +- B4A/Starter.bas | 11 +- B4A/Subs.bas | 328 ++++++++++++---- B4A/kms_helperSubs.bas | 120 +++--- C_TrendSpending.bas | 408 +++++++++++++++++++ 14 files changed, 1357 insertions(+), 826 deletions(-) create mode 100644 B4A/Files/kelloggs.rkmt.km create mode 100644 C_TrendSpending.bas diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index dd28775..a38cc1d 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -159,8 +159,10 @@ Private Sub B4XPage_Created (Root1 As B4XView) Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDOS_DOE_ENTREGA (PC_CLIENTE TEXT, PC_ENTREGA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_TREND_SPENDING_SEMANAL (HIST_TSS_RUTA TEXT, HIST_TSS_IDALMACEN TEXT, HIST_TSS_TIPO TEXT, HIST_TSS_SEMANA1 TEXT, HIST_TSS_SEMANA1_ACUM TEXT, HIST_TSS_SEMANA2 TEXT, HIST_TSS_SEMANA2_ACUM TEXT, HIST_TSS_SEMANA3 TEXT, HIST_TSS_SEMANA3_ACUM TEXT, HIST_TSS_SEMANA4 TEXT, HIST_TSS_SEMANA4_ACUM TEXT, HIST_TSS_SEMANA5 TEXT, HIST_TSS_SEMANA5_ACUM TEXT, HIST_TSS_SEMANA6 TEXT, HIST_TSS_SEMANA6_ACUM TEXT, HIST_TSS_GRUPO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TREND_SPENDING (TIPO TEXT, MONTO_SEMANA TEXT, ACUMULADO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS VERSIONES (VERSION TEXT, FECHA TEXT)") ''' FIN DOE kh.agregaColumna(Starter.skmt, "kmt_info", "IMPRESION", "INTEGER") + kh.agregaColumna(Starter.skmt, "kmt_info", "CREDITO", "INTEGER") kh.agregaColumna(Starter.skmt, "USUARIOA", "FECHA", "TEXT") kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PORCENTAJE_PAQUETE", "TEXT") kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PRECIO1", "TEXT") @@ -171,6 +173,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD", "CAT_GP_PROMOCION", "TEXT") kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD2", "CAT_GP_PROMOCION", "TEXT") kh.agregaColumna(Starter.skmt, "TREND_SPENDING", "TIPO", "TEXT") + kh.agregaColumna(Starter.skmt, "CAT_DETALLES_PAQ", "CAT_DP_PRECIOB", "TEXT") Root = Root1 ' Root.LoadLayout("MainPage") Root.LoadLayout("login") @@ -461,6 +464,8 @@ Sub B4XPage_Appear LogColor("Permisos de almacenamiento: " & MES1.HasPermission, Colors.Magenta) If MES1.HasPermission Then kh.revisaSiExisteRespaldo End If + DateTime.DateFormat = "yyyy-MM-dd HH:mm:ss" + Starter.skmt.ExecNonQuery($"insert into versiones (version, fecha) values ('${Application.VersionName}', '${datetime.Date(DateTime.Now)}')"$) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. @@ -676,8 +681,8 @@ Sub i_engranes_Click Label1.TextColor = Colors.Black et_geocerca.Text = "." et_geocerca.Text = "" - If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://10.0.0.205:1781") - ListView1.AddSingleLine("http://keymon.lat:1781") + If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://192.99.93.204:1781") + ListView1.AddSingleLine("http://keymon.net:1781") c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) c.Position = 0 E_SERVER.text = c.GetString("CAT_VA_VALOR") diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 99d979e..daecc10 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -757,10 +757,10 @@ Sub B4XPage_Appear 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)}"$ + ' l_doe.Text = $"Pedido DOE: $${kh.traeTotalClienteDOE}${CRLF}TOTAL PEDIDO: $${(kh.traeTotalCliente+kh.traeTotalClienteDOE)}"$ End If If Subs.revisaImpresa Then Guardar.Visible = True - + 'PROMOS POR MONTO Private mPromoXMonto As Map = Subs.revisaPromoPorMonto ' LogColor("PROMOXMONTO:" & mPromoXMonto, Colors.Blue) @@ -969,8 +969,8 @@ Sub Guardar_Click Starter.lat_gps = coords.Get(0) Starter.lon_gps = coords.Get(1) End If - c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") - c.Position=0 + c = Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position = 0 clie_id = c.GetString("CUENTA") usuario = Subs.traeUsuarioDeBD If l_total.Text <> Null And l_total.Text <> "null" And l_total.Text <> "0.0" Then Subs.ponImpreso(clie_id) 'Solo lo marcamos com impreso si tiene venta (total > 0). @@ -985,10 +985,10 @@ Sub Guardar_Click Log("Actualizamos gestion") Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If - s=Starter.skmt.ExecQuery("SELECT count(*) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + s = Starter.skmt.ExecQuery("SELECT count(*) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") s.Position = 0 If s.GetString("FOLIO") > 0 Then - c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c = Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c.Position = 0 End If s.Close @@ -1021,7 +1021,7 @@ Sub Guardar_Click ' B4XPages.ShowPageAndRemovePreviousPages("Principal") Guardar.SendToBack b_inicioFinVenta.Text = "TERMINAR VENTA" -' Log("RESPALDO") + Log("RESPALDO") kh.RD_respaldoBatch If la_cuenta.Text <> "0" Then 'Si es ABORDO, no mostramos el boton b_inicioFinVenta y regresamos a Principal. b_inicioFinVenta.Visible = True @@ -1214,7 +1214,7 @@ Sub Imprime_ticket Sleep(500) impresoraConectada = False End If - ' If Logger Then Log($"Impresora Conectada: ${Printer1.IsConnected}"$) + Log($"Impresora Conectada: ${Printer1.IsConnected}"$) If la_cuenta.Text <> "0" And la_cuenta.Text <> "null" Then Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ", Array As Object("VENTA")) Starter.skmt.ExecNonQuery("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO In (select cuenta from cuentaa)")'' @@ -1280,7 +1280,14 @@ Sub Imprime_ticket ' myimage= Printer1.PackImage(myimage) ' Printer1.PrintImage(myimage) Sleep(1000) + Private cr As Cursor = Starter.skmt.ExecQuery("select CREDITO from kmt_info where CAT_CL_CODIGO in (select cuenta from cuentaa)") + Private formaPago As String = "Efectivo" + If cr.RowCount > 0 Then + cr.Position = 0 + If cr.GetInt("CREDITO") = 1 Then formaPago = "Crédito" + End If If la_cuenta.Text = "0" Then + LogColor(123, Colors.red) Try Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) Printer1.WriteString(sDate &" " & sTime & CRLF) @@ -1293,6 +1300,9 @@ Sub Imprime_ticket Printer1.WriteString("C.P.: " & la_cp.Text & CRLF) Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF) Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF) + LogColor("Entre Calle2: " & l_entre2.Text, Colors.red) + Printer1.WriteString("Forma de pago: " & formaPago & CRLF) + LogColor("Forma de pago: " & formaPago, Colors.red) Printer1.WriteString(" " & CRLF) Printer1.WriteString("------------------------------" & CRLF) Printer1.WriteString("PEDIDO" & CRLF) @@ -1384,6 +1394,9 @@ Sub Imprime_ticket s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO")) s.Position =0 Private total4 As String = "0" + + Log("|" & s.GetString("TOTAL") & "|") + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total4 = s.GetString("TOTAL") Sleep(400) Printer1.WriteString( Printer1.BOLD & "No. Productos: " & total4 & CRLF) @@ -1418,6 +1431,7 @@ Sub Imprime_ticket End Try Else Try + LogColor(456, Colors.red) DateTime.DateFormat = "yyyymmdd" sDate=DateTime.Date(DateTime.Now) Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) @@ -1436,6 +1450,9 @@ Sub Imprime_ticket Printer1.WriteString("C.P.: " & la_cp.Text & CRLF) Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF) Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF) + LogColor("Entre Calle2: " & l_entre2.Text, Colors.red) + Printer1.WriteString("Forma de pago: " & formaPago & CRLF) + LogColor("Forma de pago: " & formaPago, Colors.red) Printer1.WriteString(" " & CRLF) ''''''' PEDIDOS DOE @@ -1492,7 +1509,7 @@ Sub Imprime_ticket Private cantidad1 As String = "0" If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD") - + Log("|" & cantidad1 & "|") Printer1.WriteString( "No. Productos: " & cantidad1 & CRLF) Printer1.WriteString("------------------------------" & CRLF) Printer1.WriteString("FIN PEDIDO DON TOÑO" & CRLF) @@ -1546,6 +1563,8 @@ Sub Imprime_ticket ' sTotal2 = 0 ' End If sTotal2 = kh.traeTotalCliente + Private cantidad1 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD") s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO")) s.Position = 0 Private cant5 As String = s.GetString("CANTIDAD") @@ -1558,8 +1577,7 @@ Sub Imprime_ticket Sleep(200) Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & $"Sub Total Venta: $${NumberFormat2((sTotal2+(sTotal3 * -1)), 1, 2, 2, False)}"$ & CRLF) - Private cantidad1 As String = "0" - If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD") + Log("|" & s.GetString("CANTIDAD") & "|" & cantidad1 & "|") Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad1 & CRLF) Printer1.WriteString(CRLF) Sleep(200) @@ -1611,6 +1629,8 @@ Sub Imprime_ticket Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF) Private cantidad2 As String = "0" If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD") + Log("|" & cantidad1 & "|") + Log("|" & s.GetString("CANTIDAD") & "|" & cantidad1 & "|") Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF) Printer1.WriteString(CRLF) s.Close @@ -2266,7 +2286,7 @@ Sub Cuestionario CUANTOS2 = s.GetString("CUANTOS2") If logger Then LogColor($"Hist:encuesta=${CUANTOS}, hist_encuesta2 = ${CUANTOS2}"$, Colors.Magenta) End If -' Log(CUANTOS & "|" & CUANTOS2) + LogColor("----> HISTORICO ENCUESTA: " & CUANTOS & "|" & CUANTOS2, Colors.red) If CUANTOS = 0 And CUANTOS2 = 0 Then Private enc As Cursor = Starter.skmt.ExecQuery("SELECT CAT_EP_ID, CAT_EP_IDTIPOPREGUNTA, CAT_CE_DESCRIPCION, CAT_EP_PREGUNTA, CAT_EP_RES1_PRED, CAT_EP_RES2_PRED, CAT_EP_RES3_PRED, CAT_EP_ORDEN_PREGUNTA FROM CAT_ENCUESTA_PREGUNTA ORDER BY CAT_CE_DESCRIPCION, CAST(CAT_EP_ORDEN_PREGUNTA AS DECIMAL)") If enc.RowCount > 0 Then diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 3a420c4..8d2d93a 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -773,6 +773,7 @@ Sub cargar_Click cmd.Initialize cmd.Name = "SELECT_HIST_ENCUESTA_KELL" cmd.Parameters = Array As Object( e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN ) +' cmd.Parameters = Array As Object( e_ruta.text, ALMACEN ) reqManager.ExecuteQuery(cmd , 0, "HIST_ENCUESTA2") ' Log($"${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN}"$) @@ -804,17 +805,17 @@ Sub cargar_Click cmd.Name = "select_cat_paquetes_KELL" cmd.Parameters = Array As Object(ALMACEN) reqManager.ExecuteQuery(cmd , 0, "gunaprodp") - + cmd.Initialize cmd.Name = "pedidosugerido_KELLOGGS" cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text) reqManager.ExecuteQuery(cmd , 0, "PEDIDOsugerido") - + cmd.Initialize cmd.Name = "select_cat_paquetess_KELL" cmd.Parameters = Array As Object(ALMACEN) reqManager.ExecuteQuery(cmd , 0, "gunaprodps") - + cmd.Initialize cmd.Name = "select_cat_detallepa_KELL" cmd.Parameters = Array As Object(ALMACEN) @@ -1079,8 +1080,9 @@ Sub JobDone(Job As HttpJob) Dim CAT_CL_CATEGORIA As String = records(RESULT.Columns.Get("CAT_CL_CATEGORIA")) Dim CAT_CL_SEGMENTO As String = records(RESULT.Columns.Get("CAT_CL_SEGMENTO")) Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_CL_LIMITECREDITO")) + Dim CREDITO As String = records(RESULT.Columns.Get("CAT_CL_BCREDITO")) ' LogColor("CAT_CL_LIMITECREDITO:" & CAT_CL_LIMITECREDITO & " -- ID: " & CAT_CL_CODIGO, Colors.red) - Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(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_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA, gestion, IMPRESION, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,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_LAT,CAT_CL_LONG,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA,CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO)) + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(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_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA, gestion, IMPRESION, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO, CREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,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_LAT,CAT_CL_LONG,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA,CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO,CREDITO)) Next Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(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_BFACTURA,CAT_CL_BCREDITO,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_DIAS_VISITA, gestion, IMPRESION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,0,0) ",Array As Object ("0",e_ruta.TEXT, "VENTA ABORDO","null","null","null","null","null","null","null","null","null","null","null","0","null","null","null","10000000","null")) Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! @@ -1095,10 +1097,7 @@ Sub JobDone(Job As HttpJob) End If End If bcarga1 = 20 - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_promos" Then 'query tag If logger Then Log("TIEMPO hist_promos : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1120,10 +1119,7 @@ Sub JobDone(Job As HttpJob) S_CH.Text = "LISTO" End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_cliente_promos" Then 'query tag If logger Then Log("TIEMPO hist_cliente_promos : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1139,10 +1135,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.EndTransaction ' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True) End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_comp_promos" Then 'query tag If logger Then Log("TIEMPO hist_comp_promos : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1169,10 +1162,7 @@ Sub JobDone(Job As HttpJob) S_CH.Text = "LISTO" End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "promo_monto" Then 'query tag For Each records() As Object In RESULT.Rows Dim CPM_CLIENTE As String = records(RESULT.Columns.Get("CPM_CLIENTE")) @@ -1182,17 +1172,11 @@ Sub JobDone(Job As HttpJob) Dim CPM_CANT As String = records(RESULT.Columns.Get("CPM_CANT")) Dim CPM_RANGO As String = records(RESULT.Columns.Get("CPM_RANGO")) Dim CPM_DESC As String = records(RESULT.Columns.Get("CPM_DESC")) - Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PROMO_MONTO(CPM_CLIENTE, CPM_IDPROMO, CPM_MONTO, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC) VALUES (?,?,?,?,?,?,?)", Array As Object (CPM_CLIENTE, CPM_IDPROMO, CPM_MONTO, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC)) - Next End If - End If - - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "PEDIDOsugerido" Then 'query tag - For Each records() As Object In RESULT.Rows Dim ID_PRODUCTO As String = records(RESULT.Columns.Get("ID_PRODUCTO")) Dim CANTIDAD As String = records(RESULT.Columns.Get("PROMEDIO")) @@ -1204,10 +1188,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO_SUGERIDO(ID_PRODUCTO, PROMEDIO,RUTA, ALMACEN) VALUES (?,?,?,?)", Array As Object (ID_PRODUCTO, CANTIDAD, e_ruta.Text, ALMACEN)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "cat_verificacion" Then 'query tag For Each records() As Object In RESULT.Rows Dim CAT_VE_IDPROD As String = records(RESULT.Columns.Get("CAT_VE_IDPROD")) @@ -1216,10 +1197,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VERIFICACION(CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN) VALUES (?,?,?)", Array As Object (CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "DESCUENTOS_CLIENTE" Then 'query tag If logger Then Log("TIEMPO DESCUENTOS_CIENTE : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1234,11 +1212,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction End If - End If - 'DESCUENTOS SKU - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' DESCUENTOS SKU If RESULT.Tag = "DESCUENTOS_CLIENTE_SKU" Then 'query tag If logger Then Log("TIEMPO DESCUENTOS_CLIENTE_SKU : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1251,10 +1226,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_abordo" Then 'query tag If logger Then Log("TIEMPO hist_abordo : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1266,10 +1238,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "gunaprod" Then 'query tag ' Subs.logJobDoneResultados(RESULT) cargar.Enabled = True @@ -1323,11 +1292,8 @@ Sub JobDone(Job As HttpJob) EJECUTANDO = 0 End If End If - End If - 'CARGA DEL CATALOGO ABORDO - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' CARGA DEL CATALOGO ABORDO If RESULT.Tag = "gunaprod2" Then 'query tag cargar.Enabled = True If logger Then Log("TIEMPO gunaprod2 : " & ((DateTime.Now-inicioContador)/1000)) @@ -1379,10 +1345,7 @@ Sub JobDone(Job As HttpJob) ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD2(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS"))) ' c.Close End If - End If - - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprodp" Then 'query tag If logger Then Log("TIEMPO gunaprodp : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1428,10 +1391,7 @@ Sub JobDone(Job As HttpJob) EJECUTANDO = 0 End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "gunaprodps" Then 'query tag Starter.skmt.BeginTransaction For Each records() As Object In RESULT.Rows @@ -1475,10 +1435,7 @@ Sub JobDone(Job As HttpJob) EJECUTANDO = 0 End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "detallepaq" Then 'query tag If logger Then Log("TIEMPO detallepaq : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1494,7 +1451,8 @@ Sub JobDone(Job As HttpJob) Dim CAT_DP_CLASIF As String = records(RESULT.Columns.Get("CAT_DP_CLASIF")) Dim CAT_DP_PRECIO As String = records(RESULT.Columns.Get("CAT_DP_PRECIO")) Dim CAT_DP_PRECIO_SIMPTOS As String = records(RESULT.Columns.Get("CAT_DP_PRECIO_SIMPTOS")) - Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS) VALUES (?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS)) + Dim CAT_DP_PRECIOB As String = records(RESULT.Columns.Get("CAT_DP_PRECIOB")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS,CAT_DP_PRECIOB) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS,CAT_DP_PRECIOB)) Next Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction @@ -1520,10 +1478,7 @@ Sub JobDone(Job As HttpJob) EJECUTANDO = 0 End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_datos" Then 'query tag If logger Then Log("TIEMPO hist_datos : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -1554,10 +1509,7 @@ Sub JobDone(Job As HttpJob) EJECUTANDO = 0 End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_rmi" Then 'query tag If logger Then Log("TIEMPO hist_rmi : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1586,10 +1538,7 @@ Sub JobDone(Job As HttpJob) EJECUTANDO = 0 End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "variables" Then 'query tag For Each records() As Object In RESULT.Rows Dim Cat_Va_Descripcion As String = records(RESULT.Columns.Get("CAT_VA_DESCRIPCION")) @@ -1597,10 +1546,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object (Cat_Va_Descripcion, Cat_Va_Valor)) Next End If - End If - - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "limite_abordo" Then 'query tag If logger Then Log("TIEMPO limite_abordo : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1614,10 +1560,7 @@ Sub JobDone(Job As HttpJob) End If Next End If - End If - - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "carga_encuesta" Then 'query tag If logger Then Log("TIEMPO carga_encuesta : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1632,10 +1575,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ENCUESTA_PREGUNTA (CAT_EP_ID ,CAT_EP_IDTIPOPREGUNTA ,CAT_CE_DESCRIPCION ,CAT_EP_PREGUNTA ,CAT_EP_RES1_PRED ,CAT_EP_RES2_PRED ,CAT_EP_RES3_PRED ,CAT_EP_ORDEN_PREGUNTA ) VALUES (?,?,?,?,?,?,?,?)", Array As Object (CAT_EP_ID ,CAT_EP_IDTIPOPREGUNTA ,CAT_CE_DESCRIPCION ,CAT_EP_PREGUNTA ,CAT_EP_RES1_PRED ,CAT_EP_RES2_PRED ,CAT_EP_RES3_PRED ,CAT_EP_ORDEN_PREGUNTA)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "carga_encuesta_cliente" Then 'query tag If logger Then Log("TIEMPO carga_encuesta_cliente : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1644,10 +1584,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ENCUESTA_CLIENTE(HIST_ECD_IDGRUPO ,HIST_ECD_CLIENTE) VALUES (?,?)", Array As Object (HIST_ECD_IDGRUPO ,HIST_ECD_CLIENTE)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedido" Then 'query tag If logger Then Log("TIEMPO valida_pedido : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1661,10 +1598,7 @@ Sub JobDone(Job As HttpJob) End If Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedido1" Then 'query tag For Each records() As Object In RESULT.Rows Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP")) @@ -1684,10 +1618,7 @@ Sub JobDone(Job As HttpJob) End If Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedidoc" Then 'query tag For Each records() As Object In RESULT.Rows Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC")) @@ -1699,10 +1630,7 @@ Sub JobDone(Job As HttpJob) End If Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_noventa" Then 'query tag For Each records() As Object In RESULT.Rows Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN")) @@ -1714,10 +1642,7 @@ Sub JobDone(Job As HttpJob) End If Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "ins_pedido" Then 'query tag For Each records() As Object In RESULT.Rows PB2.Progress = PB2.Progress + 5 @@ -1726,10 +1651,7 @@ Sub JobDone(Job As HttpJob) PB2.Progress = 100 S_CP.Text = "VALIDANDO" End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "version" Then 'query tag connecta.TextColor = Colors.White ' Subs.logJobDoneResultados(RESULT) @@ -1741,19 +1663,13 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "count_cli" Then 'query tag For Each records() As Object In RESULT.Rows COUNT_CLIE = records(RESULT.Columns.Get("COUNT_CLIE")) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "ruta" Then 'query tag e_ruta.Enabled = True ' Log(RESULT) @@ -1783,10 +1699,7 @@ Sub JobDone(Job As HttpJob) End If Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "usuario" Then 'query tag For Each records() As Object In RESULT.Rows Dim name2 As String = records(RESULT.Columns.Get("VALIDO")) @@ -1796,10 +1709,7 @@ Sub JobDone(Job As HttpJob) End If P1.Visible = False End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "fecha" Then 'query tag For Each records() As Object In RESULT.Rows Starter.FECHA_HOY = records(RESULT.Columns.Get("FECHA")) @@ -1807,10 +1717,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",Starter.FECHA_HOY)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hora" Then 'query tag For Each records() As Object In RESULT.Rows Starter.HORA = records(RESULT.Columns.Get("HORA")) @@ -1822,10 +1729,7 @@ Sub JobDone(Job As HttpJob) MsgboxAsync("La hora del equipo NO coincide con la hora del servidor, es necesario corregirla", "AVISO IMPORTANTE") End If End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "folio" Then 'query tag If logger Then Log("TIEMPO folio : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1834,11 +1738,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FOLIO",FOLIO)) Next End If - End If - 'Perfil - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' Perfil If RESULT.Tag = "perfil" Then 'query tag For Each records() As Object In RESULT.Rows Dim PERFIL As String = records(RESULT.Columns.Get("PERFIL")) @@ -1846,11 +1747,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("PERFIL",PERFIL)) Next End If - End If - 'Marcas - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' Marcas If RESULT.Tag = "marcas" Then 'query tag If logger Then Log("TIEMPO marcas : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1859,11 +1757,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MARCAS",MARCAS)) Next End If - End If - ' SUCURSAL - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' SUCURSAL If RESULT.Tag = "sucursal" Then 'query tag For Each records() As Object In RESULT.Rows Dim SUCURSAL As String = records(RESULT.Columns.Get("SUCURSAL")) @@ -1871,10 +1766,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SUCURSAL",SUCURSAL)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "placas" Then 'query tag For Each records() As Object In RESULT.Rows Dim PLACAS As String = records(RESULT.Columns.Get("PLACAS")) @@ -1882,10 +1774,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("PLACAS",PLACAS)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "SEMANA" Then 'query tag If logger Then Log("TIEMPO SEMANA : " & ((DateTime.Now-inicioContador)/1000)) For Each records() As Object In RESULT.Rows @@ -1894,10 +1783,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SEMANA",Cat_Va_Valor)) Next End If - End If - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "dia_visita" Then 'query tag For Each records() As Object In RESULT.Rows Dim DIA_VISITA As String = records(RESULT.Columns.Get("DIA_VISITA")) @@ -1906,11 +1792,8 @@ Sub JobDone(Job As HttpJob) 'Msgbox(DIA_VISITA, "") 'ignore Next End If - End If - 'CUOTAS - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' CUOTAS If RESULT.Tag = "CUOTAS" Then 'query tag For Each records() As Object In RESULT.Rows Dim HC_RUTA As String = records(RESULT.Columns.Get("HC_RUTA")) @@ -1929,12 +1812,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUOTAS(HC_RUTA, HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (HC_RUTA, HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6)) Next End If - End If - - 'Cambios - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' Cambios If RESULT.Tag = "cat_cambios" Then 'query tag For Each records() As Object In RESULT.Rows Dim CAMBIOS As String = records(RESULT.Columns.Get("CAT_VA_VALOR")) @@ -1942,11 +1821,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CAMBIOS",CAMBIOS)) Next End If - End If - 'Precios - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' Precios If RESULT.Tag = "precios" Then 'query tag If logger Then Log("TIEMPO precios : " & ((DateTime.Now-inicioContador)/1000)) ' Subs.cronoX("Precios", 1) @@ -1973,11 +1849,8 @@ Sub JobDone(Job As HttpJob) ' If Logger Then LogColor($"///////////////// ${Subs.cronoX("Precios", 2)} ///////////////////////////"$, Colors.red) ' ToastMessageShow("LISTA DE PRECIOS OK LISTA DE PRECIOS OK", True) End If - End If - 'Candado Fin Dia - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' Candado Fin Dia If RESULT.Tag = "pass_fin_dia" Then 'query tag For Each records() As Object In RESULT.Rows Dim nuevaContrasena As String = records(RESULT.Columns.Get("CAR_VA_VALOR3")) @@ -1985,11 +1858,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", nuevaContrasena)) Next End If - End If - 'Exhibidores - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' Exhibidores If RESULT.Tag = "exhibidores" Then 'query tag If logger Then Log("TIEMPO exhibidores : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -2002,11 +1872,8 @@ Sub JobDone(Job As HttpJob) Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction End If - End If - 'HIST_ENCUESTA2 - If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = reqManager.HandleJob(Job) +' HIST_ENCUESTA2 If RESULT.Tag = "HIST_ENCUESTA2" Then 'query tag If logger Then Log("TIEMPO HIST_ENCUESTA2 : " & ((DateTime.Now-inicioContador)/1000)) Starter.skmt.BeginTransaction @@ -2343,6 +2210,7 @@ Sub e_ruta_EnterPressed Starter.skmt.ExecNonQuery("delete from TMP_CAT_MONEDAS") Starter.skmt.ExecNonQuery("delete from TREND_SPENDING") Starter.skmt.ExecNonQuery("delete from HIST_TREND_SPENDING_SEMANAL") + Starter.skmt.ExecNonQuery("delete from VERSIONES") Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO")) Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) @@ -3436,7 +3304,7 @@ Sub descargaCartaPorte ' cartaPortePDF = "CPORTE2_100_Prueba.pdf" 'Para pruebas ' Log(cartaPortePDF) 'Para el servidor - Private pdfServer As String = "keymon.lat" + Private pdfServer As String = "keymon.net" If Starter.DBReqServer.IndexOf("10.0.0.205") > -1 Then pdfServer = "10.0.0.205" ' Log(pdfServer) pdfURL = $"https://${pdfServer}/CartaPorteKelloggs/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$ diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index 5e2ab56..7728bfc 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -9,6 +9,7 @@ Sub Class_Globals Private xui As XUI 'ignore Dim ruta As String Dim kh As kms_helperSubs + Dim ts As C_TrendSpending Dim q_buscar As String Dim forzarBusqueda As Boolean = False Dim skmt As SQL @@ -100,18 +101,19 @@ Sub Class_Globals Dim dispAbordo As String Private l_avisoAbordo As Label Private l_infoPedido As Label - Dim promosC As Promociones +' Dim promosC As Promociones Dim invTotal As Int Dim TS_RMI() As String Dim TS_DESCUENTOS() As String Dim TS_BONIFICACIONES() As String - dim bonificacionesMaximas as int = 0 + Dim bonificacionesMaximas As Int = 0 End Sub 'You can add more parameters here. Public Sub Initialize As Object kh.Initialize(Me, "kh", Starter.skmt) - promosC.Initialize(Me, "promosC", Starter.skmt) + ts.Initialize(Me, "ts", Starter.skmt) +' promosC.Initialize(Me, "promosC", Starter.skmt) Return Me End Sub @@ -249,7 +251,7 @@ Sub B4XPage_Appear ' l_totProds.Width = Root.Width * 0.19 ' l_total.Left = l_totProds.Width + 20 ' l_total.Width = Root.Width * 0.25 - + ' Log(Subs.traeTotalesClienteActual) Dim m As Map = Subs.traeTotalesClienteActual prodsPedidoActual = m.Get("productos") @@ -284,7 +286,7 @@ Sub B4XPage_Appear End If If B4XPages.MainPage.cliente.la_cuenta.text = "0" Then b_rmi.Visible = False ' Log(Starter.tipov) - Private mx As Map = Subs.traeInfoTrendSpending + Private mx As Map = ts.traeInfoTrendSpending TS_RMI = Regex.Split(",", mx.Get("RMI")) TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS")) TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES")) @@ -354,7 +356,6 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object) Log(c2.GetString("CAT_PA_PORCENTAJE_PAQUETE")) If c2.GetString("CAT_PA_TIPO_PROMONTO") = "0" Then ' Si NO es promo por monto entonces la mostamos. lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant")) - End If End If Next @@ -600,25 +601,34 @@ Sub b_prodMenos_Click Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") - Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen) +' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen) Log(clv_prods_ll.GetValue(index).As(Map)) - ' ######## Trend Spending - Poner estas lienas antes de que si es negativo se ponga en CERO. - Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) - If laBonificacion > 0 Then - Log("LA BONIFICACION: " & laBonificacion) - Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")) - Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) - bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion - Log("MAX: " & bonificacionesMaximas) - Log(Subs.traeAcumuladoHoyTS("bonificaciones")) - End If - Log("LA BONIFICACION: " & laBonificacion) - If laCant.text >= 0 Then - Subs.modTrendSpending("suma", "bonificaciones", laBonificacion) - End If + ' ######## Trend Spending - Poner estas lineas antes de que si es negativo se ponga en CERO. +' Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) +' If laBonificacion > 0 Then +' Log("LA BONIFICACION: " & laBonificacion) +' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")) +' Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) +' bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion +' Log("MAX: " & bonificacionesMaximas) +' Log(Subs.traeAcumuladoHoyTS("bonificaciones")) +' End If +' Log("LA BONIFICACION: " & laBonificacion) +' If laCant.text >= 0 Then +' Subs.modTrendSpending("suma", "bonificaciones", laBonificacion) +' End If ' ####################### + ' ######## Trend Spending - Poner estas lineas antes de que si es negativo se ponga en CERO. + If lfila.Text = "PRODUCTOS" Then + Log(">>>>>>>>>> PRODUCTOS <<<<<<<<<<<<<<") + ts.trendSpending("prodMenos", "descuentos", clienteId, id, laCant.Text, 0) + else If lfila.Text = "RMI" Then + ts.trendSpending("prodMenos", "rmi", clienteId, id, laCant.Text, 0) + End If + ' ####################### + If laCant.Text < 0 Then laCant.Text = 0 ' Log(tmpMap) ' prodsMap.Put(id, tmpMap) @@ -656,6 +666,7 @@ Sub b_prodMenos_Click End Sub Sub b_prodMas_Click + Private logger As Boolean = True Root.RequestFocus etCantHasFocus = False Private buttonTag As String = Sender.As(Button).tag @@ -664,47 +675,67 @@ Sub b_prodMas_Click Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index) Dim pnl As B4XView = pnl0.GetView(0) Dim lProdX As B4XView = pnl.GetView(1) - Log("========= " & pnl0.Tag) - Log("========= " & pnl.Tag) - Log("========= " & pnl.GetView(1).Tag) - Private existencias As String = clv_prods_ll.GetValue(index).As(Map).Get("almacen") +' Log("========= " & pnl0.Tag) +' Log("========= " & pnl.Tag) +' Log("========= " & pnl.GetView(1).Tag) +' Private existencias As String = clv_prods_ll.GetValue(index).As(Map).Get("almacen") Dim laCant As B4XView = pnl.GetView(2).GetView(2) If laCant.Text = "" Then laCant.Text = 0 - Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") - Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen") - Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$) - - inv = Subs.traeinventario(pnl.GetView(1).Tag) - Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$) - +' Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) +' Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen") +' Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$) + Private inv As Int = Subs.traeinventario(pnl.GetView(1).Tag) + Log($"inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$) Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") Private almacenX As String = Subs.traeAlmacen Private nombreX As String = Subs.traeProdNombre(id) Private precioX As String = precio - - '######## Trend Spending - Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) - If laBonificacion > 0 Then - Log("LA BONIFICACION: " & laBonificacion) - Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")) - Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) - Log("BON RESTANTE: " & BonsRestantes) - bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion - Log("MAX: " & bonificacionesMaximas) - Log(Subs.traeAcumuladoHoyTS("bonificaciones")) + +' ######## Trend Spending + ' NOTA: + ' Cuando se haga la funcion debemos de enviar si es bonificacion o rmi y el regreso tene que ser "bonificacionesMaximas" y "laBonificacion" +' Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) +' If laBonificacion > 0 Then +' Log("LA BONIFICACION: " & laBonificacion) +' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")) +' Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) +' Log("BON RESTANTE: " & BonsRestantes) +' bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion +' Log("MAX: " & bonificacionesMaximas) +' Log(Subs.traeAcumuladoHoyTS("bonificaciones")) +' End If +' If laCant.Text = bonificacionesMaximas Then +' ToastMessageShow("El presupuesto de BONIFICACIONES no permite agregar mas productos!!", False) +' End If +' Log("LA BONIFICACION: " & laBonificacion) +' If inv > 0 And laCant.Text < bonificacionesMaximas Then +' Subs.modTrendSpending("resta", "bonificaciones", laBonificacion) +' Log(Subs.traeAcumuladoHoyTS("bonificaciones")) +' End If +' Log("BONIFCACIONES RESTANTES: " & (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones"))) + Private tsMonto As String = 0 + Private tsMaximas As Int = 0 + If lfila.Text = "PRODUCTOS" Then + Log(">>>>>>>>>> PRODUCTOS <<<<<<<<<<<<<<") + Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - ts.traeAcumuladoHoyTS("descuentos")) ' Traemos monto restante de Trend Spending para bonificaciones. + tsMonto = NumberFormat2(ts.traePrecio(id)*(ts.traeDescXSku(clienteId, id)/100), 1, 2, 2, False) ' Traemos el monto (descuento total) del producto actual. + tsMaximas = ((laCant.text * tsMonto) + tsRestantes) / tsMonto ' Traemos la cantidad maxima de descuentos por presupuesto de Trend Spending. + Log("tsRestantes: " & tsRestantes) +' Log("tsMonto: " & tsMonto) + Log("tsMaximas: " & tsMaximas) + Log("tsMaximas2: " & ts.traeMaximas("descuentos", clienteId, id, laCant.Text, "")) +' Log("tsMonto2: " & ts.traeMonto(clienteId, id)) + Else if lfila.Text = "RMI" Then + Log(">>>>>>>>>> RMI <<<<<<<<<<<<<<") + Private tsRestantes As String = (TS_RMI(0) - TS_RMI(1) - ts.traeAcumuladoHoyTS("rmi")) ' Traemos monto restante de Trend Spending para RMIs. + tsMonto = NumberFormat2(ts.traePrecioRMI(id), 1, 2, 2, False) ' Traemos el monto (precio) del RMI actual. + tsMaximas = ((laCant.text * tsMonto) + tsRestantes) / tsMonto ' Traemos la cantidad maxima de RMIs por presupuesto de Trend Spending. +' Log(tsMaximas) +' Log(tsMonto) End If - If laCant.Text = bonificacionesMaximas Then - ToastMessageShow("El presupuesto de BONIFICACIONES no permite agregar mas productos!!", False) - End If - Log("LA BONIFICACION: " & laBonificacion) - If inv > 0 And laCant.Text < bonificacionesMaximas Then - Subs.modTrendSpending("resta", "bonificaciones", laBonificacion) - Log(Subs.traeAcumuladoHoyTS("bonificaciones")) - End If - Log("BONIFCACIONES RESTANTES: " & (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones"))) - '########################## - +' ########################## + ' Private iq As Cursor = Starter.skmt.ExecQuery($"select cat_gp_almacen from ${Subs.traeTablaProds(Starter.tipov)} where cat_gp_id = '${clv_prods_ll.GetValue(index).As(Map).Get("id")}'"$) ' If iq.RowCount > 0 Then ' iq.Position = 0 @@ -714,8 +745,11 @@ Sub b_prodMas_Click ' Log($"${kh.traeLimiteCredito(Subs.traeCliente)} < ${kh.totalPedido + precio}"$) ' Log(kh.traeLimiteCredito(Subs.traeCliente) < (kh.totalPedido + precio)) +' Log(inv > 0) +' Log(tsMonto.As(Int) = 0) + If 1 = 2 And buttonTag = "vendido" And lfila.Text = "PRODUCTOS" Then - Log(1) +' Log(11) ' Log("VENDIDO") Log($"${(laCant.Text + 1 <= inv)} And ${(kh.totalPedido - precio > 1)}"$) ' If inv > 0 And (laCant.Text + 1 <= (laCant.Text + existencias)) And (kh.totalPedido - precio > 1) Then @@ -726,38 +760,41 @@ Sub b_prodMas_Click inv = inv - 1 ' laCant.Text = $"$1.0{laCant.Text+1}"$ laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False) + ts.trendSpending("prodMas", "descuentos", clienteId, id, laCant.Text, inv) ' Log(clv_prods_ll.GetValue(index).As(Map)) End If else if kh.traeLimiteCredito(Subs.traeCliente) < (kh.totalPedido + precio) And lfila.Text = "PRODUCTOS" Then - Log(3) +' Log(33) Log($"#######################${CRLF}#### LIMITE CREDITO SUPERADO${CRLF}#######################"$) ToastMessageShow("LIMITE DE CREDITO SUPERADO", False) - else If inv > 0 And laBonificacion = 0 And lfila.Text = "PRODUCTOS" Then + else If inv > 0 And tsMonto.As(Int) = 0 And lfila.Text = "PRODUCTOS" Then +' Log(55) laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False) - else If inv > 0 And laBonificacion > 0 And laCant.Text < bonificacionesMaximas And lfila.Text = "PRODUCTOS" Then - Log(4) -' LogColor(inv, Colors.blue) -' laCant.Text = $"$1.0{laCant.Text + 1}"$ + ts.trendSpending("prodMas", "descuentos", clienteId, id, laCant.Text, inv) + else If inv > 0 And tsMonto > 0 And laCant.Text < tsMaximas And lfila.Text = "PRODUCTOS" Then +' Log(44) laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False) -' Log(kh.totalPedido) -' else If lfila.Text = "RMI" And laCant.Text + 1 <= inv And (kh.totalPedido - precio > 1) Then - else If lfila.Text = "RMI" And (kh.totalPedido - precio > 1) Then - Log(5) + ts.trendSpending("prodMas", "descuentos", clienteId, id, laCant.Text, inv) + else If lfila.Text = "RMI" And laCant.Text >= tsMaximas Then + ToastMessageShow("El presupuesto de RMI no permite agregar mas productos!!", False) + else If lfila.Text = "RMI" And laCant.Text < tsMaximas And (kh.totalPedido - precio > 1) Then +' Log(66) + ts.trendSpending("prodMas", "rmi", clienteId, id, laCant.Text, inv) LogColor(inv, Colors.blue) ' laCant.Text = $"$1.0{laCant.Text + 1}"$ laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False) Log(kh.totalPedido) else if kh.totalPedido < 1 Then - Log(6) +' Log(77) laCant.Text = "0" End If - +' Log(99) If lfila.Text = "RMI" Then almacenX = "DUR" nombreX = "CAMBIO"&Subs.traeRMINombre(id) precioX = precioX * -1 End If - + Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$) Log($"TotalPedido: ${NumberFormat2(kh.totalPedido,1,2,2,False)}"$) @@ -808,6 +845,7 @@ End Sub Private Sub et_pCant_TextChanged (Old As String, New As String) ' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds +' Log($"${Old}|${New}"$) If etCantHasFocus = True Then Try LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta) @@ -828,7 +866,7 @@ Private Sub et_pCant_TextChanged (Old As String, New As String) If existencias = "" Then existencias = 0 existencias = NumberFormat2(existencias, 1, 0, 0, False) Log($"laCant: ${laCant.text}, Precio: ${precio}, DISPONIBLES: ${disp}"$) - Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") +' Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") If(New = "" Or New = Null) Then New = 0 Log($"Nuevo: ${New}, InvTotal: ${invTotal}"$) ' If(New >= invTotal) Then @@ -874,33 +912,32 @@ Private Sub et_pCant_TextChanged (Old As String, New As String) End If '######## Trend Spending - Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) - Log("LA BONIFICACION: " & laBonificacion) - Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")) - Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) - Private maxDispPorBonificaciones As Int = (BonsRestantes/laBonificacion).As(Int) - Log($"Max disponibles por bonificaciones: ${maxDispPorBonificaciones}"$) - If laBonificacion > 0 Then - If New > bonificacionesMaximas Then - If invTotal > bonificacionesMaximas Then - laCant.Text = bonificacionesMaximas - Else - laCant.Text = invTotal + If lfila.Text = "PRODUCTOS" Then + Private tsMonto As String = NumberFormat2(ts.traePrecio(id)*(ts.traeDescXSku(clienteId, id)/100), 1, 2, 2, False) + Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - ts.traeAcumuladoHoyTS("descuentos")) + Log("tsMonto: " & tsMonto) + Log("Monto del presupuesto disponible: " & tsRestantes) +' Private tsMaximas As Int = (tsRestantes/tsMonto).As(Int) +' Log($"tsMaximas: ${tsMaximas}"$) + Log($"tsMaximas: ${ts.tsMaximas}"$) + If tsMonto > 0 Then + If New > ts.tsMaximas Then + If invTotal > ts.tsMaximas Then + laCant.Text = ts.tsMaximas + Else + laCant.Text = invTotal + End If + End If + Else if tsMonto = 0 Then + If laCant.Text > invTotal Or New > invTotal Then + laCant.text = invTotal End If End If - Else if laBonificacion = 0 Then - If laCant.Text > invTotal Or New > invTotal Then -' Log("Se pasa!!") -' Log($"Ponemos laCant en: ${invTotal}"$) - laCant.text = invTotal - End If + ts.modTrendSpending("resta", "descuentos", ((New * tsMonto) - (Old * tsMonto))) + Log("tsAcumulado: " & ts.traeAcumuladoHoyTS("descuentos")) End If - - Subs.modTrendSpending("resta", "bonificaciones", ((New * laBonificacion) - (Old * laBonificacion))) - Log(Subs.traeAcumuladoHoyTS("bonificaciones")) '########################## - ' If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> "" And etCantHasFocus Then Subs.actualizaProducto(almacenX, precioX, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) ' End If @@ -936,24 +973,23 @@ Private Sub et_pCant_FocusChanged (HasFocus As Boolean) Dim pnl As B4XView = pnl0.GetView(0) Dim laCant As B4XView = pnl.GetView(2).GetView(2) Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") - - '######## Trend Spending - Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) - If laBonificacion > 0 And HasFocus Then - Log("LA BONIFICACION: " & laBonificacion) - Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")) - Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) - - bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion - Log("MAX: " & bonificacionesMaximas) -' Private maxDispPorBonificaciones As Int = ((BonsRestantes/laBonificacion)+laCant.text).As(Int) -' Log($"Max disponibles por bonificaciones: ${maxDispPorBonificaciones}"$) - -' Subs.modTrendSpending("resta", "bonificaciones", ((New * laBonificacion) - (Old * laBonificacion))) - Log(Subs.traeAcumuladoHoyTS("bonificaciones")) + If lfila.Text = "PRODUCTOS" Then + '######## Trend Spending + Private laBonificacion As String = ts.traePrecio(id)*(ts.traeDescXSku(clienteId, id)/100) + If laBonificacion > 0 And HasFocus Then + Log("LA BONIFICACION: " & laBonificacion) + Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - ts.traeAcumuladoHoyTS("descuentos")) + Log("Monto de prespuesto disponible: " & tsRestantes) + ts.tsMaximas = ((laCant.text * laBonificacion) + tsRestantes) / laBonificacion + Log("tsMaximas: " & ts.tsMaximas) + Log(ts.traeAcumuladoHoyTS("descuentos")) + End If + '########################## End If - '########################## - +' If HasFocus Then +' bonificacionesMaximas = Subs.trendSpendingFuncs("focusChanged", "bonificaciones", clienteId, id, laCant.text, 0) +'' Log("bonificacionesMaximas: " & bonificacionesMaximas) +' End If invTotal = laCant.Text + Subs.traeinventario(id) LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red) cuentaProds @@ -1232,12 +1268,12 @@ Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object) 'Si no es RMI, actualizamos el inventario. If prod.GetString("PE_CEDIS") <> "DUR" Then Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(m.get("cant"), m.get("prodId"))) Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$) - ' Codigo para regresar el dinero al resupuesto de BONIFICACIONES (Trend Spending) + ' Codigo para regresar el dinero al presupuesto de DESCUENTOS (Trend Spending) Private precio0 As String = Subs.traePrecio(m.Get("prodId")) Private precioConDesc As String = (kh.traeDescXSku(Subs.traeCliente, m.Get("prodId"))/100)*precio0 Log(precioConDesc) Log(">>>>>>>>>>>>> " & (precioConDesc * m.Get("cant"))) - Subs.modTrendSpending("suma", "bonificaciones", (precioConDesc * m.Get("cant"))) + Subs.modTrendSpending("suma", "descuentos", (precioConDesc * m.Get("cant"))) ' Termina Trend Spending Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cant = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value, m.Get("cedis"), m.Get("cant"))) @@ -1365,6 +1401,11 @@ Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As In prioridad = p1.GetInt("CAT_GP_TIPOPROD2") ' Log(prioridad) End If +' Log("NIVEL: " & lfila.Text) + If lfila.Text = "RMI" Then ' Si es RMI, la cantidad solo se puede cambiar con los botones. + et_pCant.Enabled = False + et_pCant.TextColor = Colors.black + End If If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then p_prods.Color=0xFFE2EEFF ' Log($"select CAT_GP_TIPOPROD2 from CAT_GUNAPROD where CAT_GP_ID = '${clv_prods_ll.GetValue(i).As(Map).Get("id")}'"$) @@ -1530,7 +1571,7 @@ Sub LlenaProdsLL(p As ResultSet, extra As String) Private Pnl As B4XView = xui.CreatePanel("") Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip) Private tempMap As Map = listaProdsConCant.Get(pr0) - Private inv = tempMap.Get("almacen")' + tempMap.Get("cant") + Private inv As String = tempMap.Get("almacen")' + tempMap.Get("cant") tempMap.Put("almacen", inv) ' Log(tempMap) clv_prods_ll.Add(Pnl, tempMap) diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index 45c0294..bbad2fb 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -35,7 +35,7 @@ Sub Class_Globals Dim estaPromo, esteCliente As String Private b_promoMas As Button Private b_promoMenos As Button - dim et_promoCant As EditText + Dim et_promoCant As EditText Private l_promosCant As Label Private b_continuar As Button Private p_prodsVariables As Panel @@ -43,11 +43,13 @@ Sub Class_Globals Dim prodsPedidoActual As String Dim montoPedidoActual As String Dim promosMap As Map + Dim ts As C_TrendSpending End Sub 'You can add more parameters here. Public Sub Initialize As Object ' promosC.Initialize(Me, "promosC", Starter.skmt) + ts.Initialize("ts", "ts", Starter.skmt) Return Me End Sub @@ -436,7 +438,7 @@ End Sub ' Esto pasa cuando el producto fijo de una promocion tambien es parte de los productos variables de la misma, asi que ' si la promo usa 3 productos fijos y quedan 10 para los variables, cuando pedimos 2 promociones, en lugar de usar ' 3 para los fijos, ahora vamos a necesitar 6, y en lugar de quedar 10 para los variables, ahora solo quedan 7. -' Regresa un mapa con el nuevo inventario de los productos variables afectados. +' Regresa un mapa con el nuevo inventario de los productos variables afectados. Sub revisaInvProdsVariables As Map Private invVariablesModificados As Map = CreateMap() ' Private prodsFijosOriginales As Int = (tpf / et_promoCant.Text) @@ -487,7 +489,7 @@ End Sub Private Sub b_continuar_Click cuentaProds ' Log("====================================================================") -' Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) + Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal index 25190999bc9726cb96ccf68c73ac196f008e4c58..33f38cc8a396f1311e5467228f93966e27fa9c41 100644 GIT binary patch delta 1929 zcmZuyTTGK@814fZ(6ZRB!|6mOx@<1At`v)uaVQi!5Tz8D2N>g^uufVjr=f8|FwB{q zncv{m1rIo3vJ4C2_HVmz?x4vwN9Ha}Om@I{v0X{8mMrmN@BjB;e&N4pn(up_=Y8Ji zJKYK<+zKX4&zfd)&7a4MS<@S{cP(r0QFNFbMx%LnIsa%|sBf_ zG@FBbx^9JwY<4_N*^Cwgucg9Aelx6Mpge)**I*g_V#fsh$9{ftWd*xWkvs6KM12&@ z#RB$;+czF1?;aHB_o?Rn!f+>@jT$L44xwuZy+)g}4|2VLM`U(+57g?Psq|-L;x@!sXZfVNF+LWG;6e@DC%^o$12J(?b zMa2lw*@7^}L;)wu^{Rn#Ka^3(t97#q85DA{h4>N#$?SkbVNjm~%b+-=&m1b?k>pCsqai07D=THp#gZtdUyV^bWo>4yrdrr(pp;iQc?*}a zxniX*xp;bRD_b@+u;q8ldHRdz;gI(fC6>yL>5Q98F(!mTDt7Za4XW$VbRD|sg9@hF z%Ocb_%Ves=)OEm-Fzv_#G)0%&%owTW(!(C+f4zl!d8mdxC70i?&5?$1G`yDbr2gnq zO1o+}jQp)~Yhla0Y+>ot?JRwH8&b);6Prk1fn{-ih^kyG)$d?ZkvlSFcuOrD#{9XH zG2c~2Q+`{GkyFMyQe~~Yk*-xo`d?9_^v}tx1C_m?m{MXIuV*hmZRdiOF7}eTL&hl@ zL&O@@w7!7>bGu?Ii(nE2#W)6{N0t0S?4 zXc$pL!!7bDv{PCOYu;>N&G{A-(E7%hwc}DnE53s61ar;uY5#}}UX;>g6DR3|IGpzs z)$N8({Mi2p{jnEz=`Sx{f^Ia5KS^yq6pB*?TD?4W|Kjt}6(8R;+gih9iOGYY1TUND z@xc~%2ITQ#IeZf1egMX}k!%s@H?BO(I?By6wuE5Z#}ME4KQ4YRNtKG)u>&}#B=Bi~ z!#cMF0pn6y2j3W&P;m2|jGI`DOVgEd``K~?pU^-rw$Nx7uIkP+vW*9^U)*r!h)^g4 zlVP216c{GeI!avfB`t<(lcbg&41-1ja_XHh(PH0jnsUQA3yJ2i>M zJfnU}?NV76T!=NPC0`#u4h!-Np*QpE7Ub*ym|x3VhTjIaSa56Udo#Auf3M;(G0{^` z<-KepD80V{Ujj4HI80*0L8Di>4u^ONppI-@1q8uT3J3xtO1U^x1SA3FP74bwnXoz77B`~A zPdLm0%Ps;g%!0^1oHOVTe=N%~$zn1xP4LHJ$S(48S(a_*dub^Y`lIc4-sf`8dEfKB z^A7KMhxf!(gj^Hz-qcjYwAa+1F`@s^A005r{|@QsIXePSb?N)vml|}aqKk2el`E{? zlajxyJN4U9gld8nTj)PKPEu_Y3`%1=ra@<-5kM2&2$CN(@1dD!mhCd`#u>Wy zCZ3^2B_+_37j*PXHw+vw?!^u=Tljx11$E$pe0!h1KMqC;31m=tFm|GjEIx?jAI>J2 z27NH8t%p2!dKaCFf^Ks?G@4kAMzd)Pf9dKVhjb;9BMLKUke|%GAWszfXd6M6WbC8S zc=)l9e-c8pO^|!Lb0{{3k9j)9yN54@|~%}^Kf@|=rzK zpKZBJc~}UudO#_xNTeiyT<>b&;Hz+;N1U6AJU%x)8;Ntnm#CzeTfFHocXX`SEmv`v zm*$VE1u3k*3shRdi8d7=k;Y3@oDyr{FnWbYz8OAZQR?+DVpN=ZaF*!tG52{WJB}h6 zE8=1*PKc;zNcd3>JSpV^$$HB(c-ccv;KpC$;`&_1CaKQ@qz*Rvi8nBp#P&oVW8t65 zmxWCdZG<0Kg`YUi_~$F3lNaZFSCXOfN>MoHz=dBC{_31bS2oboehhk4<~$=}+-{!4 z2nGd9jPjrdOLU6I_$h`2=xI4i4|#w@X~Rl!1#aj6csfM4{2Kk)vCGDq> z?{x+#*DKKn{b$UNRNsi7ldT%5@~}xKsWJDf(nhDO2-AKcSj4O(Wk(hApug&(jtJ`3 z5q=I(rPKvazIZQw*Xh43kan5{Fv?{l$jzOGtz$0g=mu2nwdI5(YhXja6#??kx$4DX zphvYZNMEj}Bq<4X7zRbP@E}ZN8K|>`H%1h)lPnEsVa$f}24ne4#J+x`d7 C>L$4W diff --git a/B4A/Files/kelloggs.rkmt.km b/B4A/Files/kelloggs.rkmt.km new file mode 100644 index 0000000000000000000000000000000000000000..16e5f52c94a478d7326fa72d492295f146994325 GIT binary patch literal 40960 zcmeI%?~B|-7zgl;_ao~`#dk|Rih)wvgR5YRP<-X=WHwGsGHEhdif>}Ys~ojGu=_^e z_1gNz|4Q%=@Rk3L&m^1d%;Xe75DedgyWM#vnIE5LGD*1VQF^{Pi=JNm@chXpx4wxT&J$wJRYd^mC$I)kDb(kIe zP67Nt00I!0u)xJUTpS+I^)V{@1__g%0Q z{K_~_CBY7abV8v@E^^Htil$(XYGL4=dTL6lPp%5ybAwtIs%Zy)Wd`1Udk`*e+z5U- zZWW$A-!$hho?i5yp)>zJ+D)FP&628PIb_!4%tTj=>$>c6+^q_V=5^LoqLgAKE6G(v zWh(KZKGVwJ`=@d0pt7b!Eu~C*0hK3iWVK`uz5Z7$)n14f?pY%4*XVX8S)EJw5Ux^{ zOTQhKrowioL2?tb6J!XK%)O!Kiqh(JVa{|zB4aXjLt3O_rE+h;OiNle{#e>*JRVK9 zEWM5rS$ZwTl2y%`Qs(2e3#+XC@HoO%ER(*~@6KLs&M#h!vQOY5QFQIQv#dmt(S-W5 zw`oabCbe+ao}{HCDzod5u}DOD8d)37>ks$ao#yS!VW&yzoY8d=-!qL4g+ph-J5}AP zPYT*2;`V~FhDuSHOD;)zZBK#X#>w>K9vzFd8(?Y1=#n=u-6dg~^iIl^moalpR@keo zi`Z+CA|yk*h1(xbStVC)tkU+CMkkuFdxzA^aZqMSGz_|*?`RCPzgl+%J2@Zig^OFa zf}ev?a_j^g{AFtXv&`%^EaUt?%FZ%X%YTufOZiT?xO+EvBZdscLYsZ6GWREwCA+*o z%9LH(Wh?HNWmC}-*2-RaL!GtuDAr#hyE`EToh-Cv?_#5vw_+($e8s#D>#C+l4|}!K zVY@}z;Zdj*2|Z7^0~=jSrib>LTW$~BHFR?MAP5)NuLp0wY%L4Azs0KiyXUxdvFJ`g z&j4*>{S`$4YerOBsgy=O+)ycE9)_F%SCv*o-9MDkG1g8^CHp>WitX`Q>2WKy8)9@z zv%4mKXP=_RC^V$Wv`vpYv`24gD6rExji~6RVpn<6zQq57KNEgL$J8JI0SG_<0uX=z z1Rwwb2tWV=lNT`mo2P&J;|Br|fB*y_009U<00Izz00bZafe8!X{eQyA#nd1G0SG_< z0uX=z1Rwwb2tWV=TLHZPV<|uY0uX=z1Rwwb2tWV=5P$##rZ0f^|LNx#GlT#HAOHaf zKmY;|fB*y_009W#{U2)p0uX=z1Rwwb2tWV=5P$##ATWIay#G%>$Cx1mAOHafKmY;| zfB*y_009U<0Pp`;0}y}!1Rwwb2tWV=5P$##AOL~s3*h~K`Z>l7ApijgKmY;|fB*y_ L009U<00Msk^g0A2 literal 0 HcmV?d00001 diff --git a/B4A/Files/kmt.db b/B4A/Files/kmt.db index 6d9dc455b1e7890542b1ee7c4c9b78d30cd518c9..8e9cc51cb04849ec573d459563b3e72cd1a1326c 100644 GIT binary patch delta 579 zcmZqZU}>1ZGC^7}nSp`935a!pn1z9X@zX>dW7cE_y{f{EDRZSo8B-Wo88R7wXgR|d z#>>pJL2$E}j2|Nl(<_Gj%^9*yj6iJ+8#lj`6J}%wvOuP6=1}<4&Be^Pf`M@bvjB6~ zX1+C_m_7;j+QQ<)!NjP`z;u*R7bqgiDAueP&fY8=&MvO6 z&)6&qq}A0KTQev7uaU2Jat?BJ3~^Nmadh%=RZwzv42gFS^>Yje@^>*(QqbVyga`%1 zJNvr;1%3UMI73_`LUa%ko_?Oro{k}&VU8G5A)W#LAd@g8TwKE-V)aM{Ir{iII=lKQ zar%Y&x(0bVBT0E;8sX>f>lEaQVX~)hfFU+PBMiZSAXjJ4dQAT~`#1)Bx?v~}4hhB( s1Njd_FgVl+tGK7HyAmgtW|Ku2ySTPCV~cu8Vp7ib%fOgoT*Sfx0Ce(;9{>OV delta 142 zcmZpez|zpcGC^7}k%5815s0CH@y$dXW7b3lJ^$K`DRZSofx;XNnG8U*oZ$;&3gcy_ zSIi-s#bo>#S#mkq#W!cjHZihf@BmrwF8!bmfcL-k1{b@GXekyN+Tlx diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index 13c3a4a..88130d4 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -1,424 +1,425 @@ Build1=Default,kelloggsV2.keymon.lat,HU2_PUBLIC File1=alcancia.png File10=cacahuates_blanco2.png -File100=marker-azul-34.png -File101=marker-azul-35.png -File102=marker-azul-36.png -File103=marker-azul-37.png -File104=marker-azul-38.png -File105=marker-azul-39.png -File106=marker-azul4.png -File107=marker-azul-4.png -File108=marker-azul-40.png -File109=marker-azul-41.png +File100=marker-azul-33.png +File101=marker-azul-34.png +File102=marker-azul-35.png +File103=marker-azul-36.png +File104=marker-azul-37.png +File105=marker-azul-38.png +File106=marker-azul-39.png +File107=marker-azul4.png +File108=marker-azul-4.png +File109=marker-azul-40.png File11=cacahuates_blanco3.png -File110=marker-azul-42.png -File111=marker-azul-43.png -File112=marker-azul-44.png -File113=marker-azul-45.png -File114=marker-azul-46.png -File115=marker-azul-47.png -File116=marker-azul-48.png -File117=marker-azul-49.png -File118=marker-azul5.png -File119=marker-azul-5.png +File110=marker-azul-41.png +File111=marker-azul-42.png +File112=marker-azul-43.png +File113=marker-azul-44.png +File114=marker-azul-45.png +File115=marker-azul-46.png +File116=marker-azul-47.png +File117=marker-azul-48.png +File118=marker-azul-49.png +File119=marker-azul5.png File12=cacahuates_chico.png -File120=marker-azul-50.png -File121=marker-azul-51.png -File122=marker-azul-52.png -File123=marker-azul-53.png -File124=marker-azul-54.png -File125=marker-azul-55.png -File126=marker-azul-56.png -File127=marker-azul-57.png -File128=marker-azul-58.png -File129=marker-azul-59.png +File120=marker-azul-5.png +File121=marker-azul-50.png +File122=marker-azul-51.png +File123=marker-azul-52.png +File124=marker-azul-53.png +File125=marker-azul-54.png +File126=marker-azul-55.png +File127=marker-azul-56.png +File128=marker-azul-57.png +File129=marker-azul-58.png File13=cacahuates_original.jpeg -File130=marker-azul-6.png -File131=marker-azul-60.png -File132=marker-azul-61.png -File133=marker-azul-62.png -File134=marker-azul-63.png -File135=marker-azul-64.png -File136=marker-azul-65.png -File137=marker-azul-66.png -File138=marker-azul-67.png -File139=marker-azul-68.png +File130=marker-azul-59.png +File131=marker-azul-6.png +File132=marker-azul-60.png +File133=marker-azul-61.png +File134=marker-azul-62.png +File135=marker-azul-63.png +File136=marker-azul-64.png +File137=marker-azul-65.png +File138=marker-azul-66.png +File139=marker-azul-67.png File14=cacahuates_original2.bmp -File140=marker-azul-69.png -File141=marker-azul-7.png -File142=marker-azul-70.png -File143=marker-azul-71.png -File144=marker-azul-72.png -File145=marker-azul-73.png -File146=marker-azul-74.png -File147=marker-azul-75.png -File148=marker-azul-76.png -File149=marker-azul-77.png +File140=marker-azul-68.png +File141=marker-azul-69.png +File142=marker-azul-7.png +File143=marker-azul-70.png +File144=marker-azul-71.png +File145=marker-azul-72.png +File146=marker-azul-73.png +File147=marker-azul-74.png +File148=marker-azul-75.png +File149=marker-azul-76.png File15=cacahuates_original2.jpg -File150=marker-azul-78.png -File151=marker-azul-79.png -File152=marker-azul-8.png -File153=marker-azul-80.png -File154=marker-azul-81.png -File155=marker-azul-82.png -File156=marker-azul-83.png -File157=marker-azul-84.png -File158=marker-azul-85.png -File159=marker-azul-86.png +File150=marker-azul-77.png +File151=marker-azul-78.png +File152=marker-azul-79.png +File153=marker-azul-8.png +File154=marker-azul-80.png +File155=marker-azul-81.png +File156=marker-azul-82.png +File157=marker-azul-83.png +File158=marker-azul-84.png +File159=marker-azul-85.png File16=cacahuates_original3.bmp -File160=marker-azul-87.png -File161=marker-azul-88.png -File162=marker-azul-89.png -File163=marker-azul-9.png -File164=marker-azul-90.png -File165=marker-azul-91.png -File166=marker-azul-92.png -File167=marker-azul-93.png -File168=marker-azul-94.png -File169=marker-azul-95.png +File160=marker-azul-86.png +File161=marker-azul-87.png +File162=marker-azul-88.png +File163=marker-azul-89.png +File164=marker-azul-9.png +File165=marker-azul-90.png +File166=marker-azul-91.png +File167=marker-azul-92.png +File168=marker-azul-93.png +File169=marker-azul-94.png File17=carrito.png -File170=marker-azul-96.png -File171=marker-azul-97.png -File172=marker-azul-98.png -File173=marker-azul-99.png -File174=marker-rojo.png -File175=marker-rojo-0.png -File176=marker-rojo1.png -File177=marker-rojo-1.png -File178=marker-rojo-10.png -File179=marker-rojo-100.png +File170=marker-azul-95.png +File171=marker-azul-96.png +File172=marker-azul-97.png +File173=marker-azul-98.png +File174=marker-azul-99.png +File175=marker-rojo.png +File176=marker-rojo-0.png +File177=marker-rojo1.png +File178=marker-rojo-1.png +File179=marker-rojo-10.png File18=checklist.bal -File180=marker-rojo-11.png -File181=marker-rojo-12.png -File182=marker-rojo-13.png -File183=marker-rojo-14.png -File184=marker-rojo-15.png -File185=marker-rojo-16.png -File186=marker-rojo-17.png -File187=marker-rojo-18.png -File188=marker-rojo-19.png -File189=marker-rojo2.png +File180=marker-rojo-100.png +File181=marker-rojo-11.png +File182=marker-rojo-12.png +File183=marker-rojo-13.png +File184=marker-rojo-14.png +File185=marker-rojo-15.png +File186=marker-rojo-16.png +File187=marker-rojo-17.png +File188=marker-rojo-18.png +File189=marker-rojo-19.png File19=checks.bal -File190=marker-rojo-2.png -File191=marker-rojo-20.png -File192=marker-rojo-21.png -File193=marker-rojo-22.png -File194=marker-rojo-23.png -File195=marker-rojo-24.png -File196=marker-rojo-25.png -File197=marker-rojo-26.png -File198=marker-rojo-27.png -File199=marker-rojo-28.png +File190=marker-rojo2.png +File191=marker-rojo-2.png +File192=marker-rojo-20.png +File193=marker-rojo-21.png +File194=marker-rojo-22.png +File195=marker-rojo-23.png +File196=marker-rojo-24.png +File197=marker-rojo-25.png +File198=marker-rojo-26.png +File199=marker-rojo-27.png File2=alert2.png File20=cliente.bal -File200=marker-rojo-29.png -File201=marker-rojo-3.png -File202=marker-rojo-30.png -File203=marker-rojo-31.png -File204=marker-rojo-32.png -File205=marker-rojo-33.png -File206=marker-rojo-34.png -File207=marker-rojo-35.png -File208=marker-rojo-36.png -File209=marker-rojo-37.png +File200=marker-rojo-28.png +File201=marker-rojo-29.png +File202=marker-rojo-3.png +File203=marker-rojo-30.png +File204=marker-rojo-31.png +File205=marker-rojo-32.png +File206=marker-rojo-33.png +File207=marker-rojo-34.png +File208=marker-rojo-35.png +File209=marker-rojo-36.png File21=cliente.bal.bak -File210=marker-rojo-38.png -File211=marker-rojo-39.png -File212=marker-rojo-4.png -File213=marker-rojo-40.png -File214=marker-rojo-41.png -File215=marker-rojo-42.png -File216=marker-rojo-43.png -File217=marker-rojo-44.png -File218=marker-rojo-45.png -File219=marker-rojo-46.png +File210=marker-rojo-37.png +File211=marker-rojo-38.png +File212=marker-rojo-39.png +File213=marker-rojo-4.png +File214=marker-rojo-40.png +File215=marker-rojo-41.png +File216=marker-rojo-42.png +File217=marker-rojo-43.png +File218=marker-rojo-44.png +File219=marker-rojo-45.png File22=clientes.bal -File220=marker-rojo-47.png -File221=marker-rojo-48.png -File222=marker-rojo-49.png -File223=marker-rojo-5.png -File224=marker-rojo-50.png -File225=marker-rojo-51.png -File226=marker-rojo-52.png -File227=marker-rojo-53.png -File228=marker-rojo-54.png -File229=marker-rojo-55.png +File220=marker-rojo-46.png +File221=marker-rojo-47.png +File222=marker-rojo-48.png +File223=marker-rojo-49.png +File224=marker-rojo-5.png +File225=marker-rojo-50.png +File226=marker-rojo-51.png +File227=marker-rojo-52.png +File228=marker-rojo-53.png +File229=marker-rojo-54.png File23=detalle_promo.bal -File230=marker-rojo-56.png -File231=marker-rojo-57.png -File232=marker-rojo-58.png -File233=marker-rojo-59.png -File234=marker-rojo-6.png -File235=marker-rojo-60.png -File236=marker-rojo-61.png -File237=marker-rojo-62.png -File238=marker-rojo-63.png -File239=marker-rojo-64.png +File230=marker-rojo-55.png +File231=marker-rojo-56.png +File232=marker-rojo-57.png +File233=marker-rojo-58.png +File234=marker-rojo-59.png +File235=marker-rojo-6.png +File236=marker-rojo-60.png +File237=marker-rojo-61.png +File238=marker-rojo-62.png +File239=marker-rojo-63.png File24=durakelo.png -File240=marker-rojo-65.png -File241=marker-rojo-66.png -File242=marker-rojo-67.png -File243=marker-rojo-68.png -File244=marker-rojo-69.png -File245=marker-rojo-7.png -File246=marker-rojo-70.png -File247=marker-rojo-71.png -File248=marker-rojo-72.png -File249=marker-rojo-73.png +File240=marker-rojo-64.png +File241=marker-rojo-65.png +File242=marker-rojo-66.png +File243=marker-rojo-67.png +File244=marker-rojo-68.png +File245=marker-rojo-69.png +File246=marker-rojo-7.png +File247=marker-rojo-70.png +File248=marker-rojo-71.png +File249=marker-rojo-72.png File25=durakelo1.png -File250=marker-rojo-74.png -File251=marker-rojo-75.png -File252=marker-rojo-76.png -File253=marker-rojo-77.png -File254=marker-rojo-78.png -File255=marker-rojo-79.png -File256=marker-rojo-8.png -File257=marker-rojo-80.png -File258=marker-rojo-81.png -File259=marker-rojo-82.png +File250=marker-rojo-73.png +File251=marker-rojo-74.png +File252=marker-rojo-75.png +File253=marker-rojo-76.png +File254=marker-rojo-77.png +File255=marker-rojo-78.png +File256=marker-rojo-79.png +File257=marker-rojo-8.png +File258=marker-rojo-80.png +File259=marker-rojo-81.png File26=engrane.jpg -File260=marker-rojo-83.png -File261=marker-rojo-84.png -File262=marker-rojo-85.png -File263=marker-rojo-86.png -File264=marker-rojo-87.png -File265=marker-rojo-88.png -File266=marker-rojo-89.png -File267=marker-rojo-9.png -File268=marker-rojo-90.png -File269=marker-rojo-91.png +File260=marker-rojo-82.png +File261=marker-rojo-83.png +File262=marker-rojo-84.png +File263=marker-rojo-85.png +File264=marker-rojo-86.png +File265=marker-rojo-87.png +File266=marker-rojo-88.png +File267=marker-rojo-89.png +File268=marker-rojo-9.png +File269=marker-rojo-90.png File27=engrane.png -File270=marker-rojo-92.png -File271=marker-rojo-93.png -File272=marker-rojo-94.png -File273=marker-rojo-95.png -File274=marker-rojo-96.png -File275=marker-rojo-97.png -File276=marker-rojo-98.png -File277=marker-rojo-99.png -File278=marker-verde.png -File279=marker-verde-0.png +File270=marker-rojo-91.png +File271=marker-rojo-92.png +File272=marker-rojo-93.png +File273=marker-rojo-94.png +File274=marker-rojo-95.png +File275=marker-rojo-96.png +File276=marker-rojo-97.png +File277=marker-rojo-98.png +File278=marker-rojo-99.png +File279=marker-verde.png File28=engranes.png -File280=marker-verde-1.png -File281=marker-verde-10.png -File282=marker-verde-100.png -File283=marker-verde-11.png -File284=marker-verde-12.png -File285=marker-verde-13.png -File286=marker-verde-14.png -File287=marker-verde-15.png -File288=marker-verde-16.png -File289=marker-verde-17.png +File280=marker-verde-0.png +File281=marker-verde-1.png +File282=marker-verde-10.png +File283=marker-verde-100.png +File284=marker-verde-11.png +File285=marker-verde-12.png +File286=marker-verde-13.png +File287=marker-verde-14.png +File288=marker-verde-15.png +File289=marker-verde-16.png File29=errormanager.bal -File290=marker-verde-18.png -File291=marker-verde-19.png -File292=marker-verde-2.png -File293=marker-verde-20.png -File294=marker-verde-21.png -File295=marker-verde-22.png -File296=marker-verde-23.png -File297=marker-verde-24.png -File298=marker-verde-25.png -File299=marker-verde-26.png +File290=marker-verde-17.png +File291=marker-verde-18.png +File292=marker-verde-19.png +File293=marker-verde-2.png +File294=marker-verde-20.png +File295=marker-verde-21.png +File296=marker-verde-22.png +File297=marker-verde-23.png +File298=marker-verde-24.png +File299=marker-verde-25.png File3=alerta.jpg File30=fondo_kmt.jpg -File300=marker-verde-27.png -File301=marker-verde-28.png -File302=marker-verde-29.png -File303=marker-verde-3.png -File304=marker-verde-30.png -File305=marker-verde-31.png -File306=marker-verde-32.png -File307=marker-verde-33.png -File308=marker-verde-34.png -File309=marker-verde-35.png +File300=marker-verde-26.png +File301=marker-verde-27.png +File302=marker-verde-28.png +File303=marker-verde-29.png +File304=marker-verde-3.png +File305=marker-verde-30.png +File306=marker-verde-31.png +File307=marker-verde-32.png +File308=marker-verde-33.png +File309=marker-verde-34.png File31=foto.bal -File310=marker-verde-36.png -File311=marker-verde-37.png -File312=marker-verde-38.png -File313=marker-verde-39.png -File314=marker-verde-4.png -File315=marker-verde-40.png -File316=marker-verde-41.png -File317=marker-verde-42.png -File318=marker-verde-43.png -File319=marker-verde-44.png +File310=marker-verde-35.png +File311=marker-verde-36.png +File312=marker-verde-37.png +File313=marker-verde-38.png +File314=marker-verde-39.png +File315=marker-verde-4.png +File316=marker-verde-40.png +File317=marker-verde-41.png +File318=marker-verde-42.png +File319=marker-verde-43.png File32=foto1.jpg -File320=marker-verde-45.png -File321=marker-verde-46.png -File322=marker-verde-47.png -File323=marker-verde-48.png -File324=marker-verde-49.png -File325=marker-verde-5.png -File326=marker-verde-50.png -File327=marker-verde-51.png -File328=marker-verde-52.png -File329=marker-verde-53.png +File320=marker-verde-44.png +File321=marker-verde-45.png +File322=marker-verde-46.png +File323=marker-verde-47.png +File324=marker-verde-48.png +File325=marker-verde-49.png +File326=marker-verde-5.png +File327=marker-verde-50.png +File328=marker-verde-51.png +File329=marker-verde-52.png File33=foto2.jpg -File330=marker-verde-54.png -File331=marker-verde-55.png -File332=marker-verde-56.png -File333=marker-verde-57.png -File334=marker-verde-58.png -File335=marker-verde-59.png -File336=marker-verde-6.png -File337=marker-verde-60.png -File338=marker-verde-61.png -File339=marker-verde-62.png +File330=marker-verde-53.png +File331=marker-verde-54.png +File332=marker-verde-55.png +File333=marker-verde-56.png +File334=marker-verde-57.png +File335=marker-verde-58.png +File336=marker-verde-59.png +File337=marker-verde-6.png +File338=marker-verde-60.png +File339=marker-verde-61.png File34=foto3.jpg -File340=marker-verde-63.png -File341=marker-verde-64.png -File342=marker-verde-65.png -File343=marker-verde-66.png -File344=marker-verde-67.png -File345=marker-verde-68.png -File346=marker-verde-69.png -File347=marker-verde-7.png -File348=marker-verde-70.png -File349=marker-verde-71.png +File340=marker-verde-62.png +File341=marker-verde-63.png +File342=marker-verde-64.png +File343=marker-verde-65.png +File344=marker-verde-66.png +File345=marker-verde-67.png +File346=marker-verde-68.png +File347=marker-verde-69.png +File348=marker-verde-7.png +File349=marker-verde-70.png File35=foto4.jpg -File350=marker-verde-72.png -File351=marker-verde-73.png -File352=marker-verde-74.png -File353=marker-verde-75.png -File354=marker-verde-76.png -File355=marker-verde-77.png -File356=marker-verde-78.png -File357=marker-verde-79.png -File358=marker-verde-8.png -File359=marker-verde-80.png +File350=marker-verde-71.png +File351=marker-verde-72.png +File352=marker-verde-73.png +File353=marker-verde-74.png +File354=marker-verde-75.png +File355=marker-verde-76.png +File356=marker-verde-77.png +File357=marker-verde-78.png +File358=marker-verde-79.png +File359=marker-verde-8.png File36=guardagestion.bal -File360=marker-verde-81.png -File361=marker-verde-82.png -File362=marker-verde-83.png -File363=marker-verde-84.png -File364=marker-verde-85.png -File365=marker-verde-86.png -File366=marker-verde-87.png -File367=marker-verde-88.png -File368=marker-verde-89.png -File369=marker-verde-9.png +File360=marker-verde-80.png +File361=marker-verde-81.png +File362=marker-verde-82.png +File363=marker-verde-83.png +File364=marker-verde-84.png +File365=marker-verde-85.png +File366=marker-verde-86.png +File367=marker-verde-87.png +File368=marker-verde-88.png +File369=marker-verde-89.png File37=guna_viejo.png -File370=marker-verde-90.png -File371=marker-verde-91.png -File372=marker-verde-92.png -File373=marker-verde-93.png -File374=marker-verde-94.png -File375=marker-verde-95.png -File376=marker-verde-96.png -File377=marker-verde-97.png -File378=marker-verde-98.png -File379=marker-verde-99.png +File370=marker-verde-9.png +File371=marker-verde-90.png +File372=marker-verde-91.png +File373=marker-verde-92.png +File374=marker-verde-93.png +File375=marker-verde-94.png +File376=marker-verde-95.png +File377=marker-verde-96.png +File378=marker-verde-97.png +File379=marker-verde-98.png File38=historico.bal -File380=nota.bal -File381=noventa.bal -File382=nuevocliente.bal -File383=palomita_verde.png -File384=palomita_verde_original.png -File385=pedido.bal -File386=pedidoItem.bal -File387=planfia_logo.png -File388=planfia_logo_old.png -File389=planfia_logo_old2.png +File380=marker-verde-99.png +File381=nota.bal +File382=noventa.bal +File383=nuevocliente.bal +File384=palomita_verde.png +File385=palomita_verde_original.png +File386=pedido.bal +File387=pedidoItem.bal +File388=planfia_logo.png +File389=planfia_logo_old.png File39=info_gral.resp -File390=principal.bal -File391=proditem.bal -File392=productos.bal -File393=productos2.bal -File394=profina.jpg -File395=profina.png -File396=promociones.bal -File397=qr.bal -File398=rechazo.jpg -File399=rojo.png +File390=planfia_logo_old2.png +File391=principal.bal +File392=proditem.bal +File393=productos.bal +File394=productos2.bal +File395=profina.jpg +File396=profina.png +File397=promociones.bal +File398=qr.bal +File399=rechazo.jpg File4=alerta_amarilla.png File40=infonavit1.jpg -File400=salma.jpg -File401=salma.png -File402=senial.jpg -File403=sync.png -File404=tache_rojo.png -File405=tache_rojo_original.png -File406=telefonos.bal -File407=ticketsDia.bal -File408=Tiendita.jpg -File409=transporte.png +File400=rojo.png +File401=salma.jpg +File402=salma.png +File403=senial.jpg +File404=sync.png +File405=tache_rojo.png +File406=tache_rojo_original.png +File407=telefonos.bal +File408=ticketsDia.bal +File409=Tiendita.jpg File41=INVENTARIO (1).jpg -File410=verde.png -File411=vista1.png -File412=vista2.png -File413=vista3.png -File414=vista4.png -File415=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg -File416=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpg -File417=whatsapp.png -File418=whatsapp_original.png -File419=WHATSTEL.jpeg +File410=transporte.png +File411=verde.png +File412=vista1.png +File413=vista2.png +File414=vista3.png +File415=vista4.png +File416=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg +File417=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpg +File418=whatsapp.png +File419=whatsapp_original.png File42=INVENTARIO.jpg -File420=WHATSTEL.png +File420=WHATSTEL.jpeg +File421=WHATSTEL.png File43=inventario.PNG File44=itembuttonblue.png File45=itembuttonred.png File46=kellanova.png File47=kellanova_borde.png File48=kelloggs.png -File49=kelloggs_chico.png +File49=Kelloggs.rkmt.km File5=amarillo.png -File50=kelloggs_original.png -File51=kelloggs2.jpg -File52=kelloggs2.png -File53=keymon_logo.png -File54=kmt.db -File55=knv_logo_white.png -File56=login.bal -File57=logo sanfer.jpg -File58=logo_192x192.png -File59=logo_exitus1.jpg +File50=kelloggs_chico.png +File51=kelloggs_original.png +File52=kelloggs2.jpg +File53=kelloggs2.png +File54=keymon_logo.png +File55=kmt.db +File56=knv_logo_white.png +File57=login.bal +File58=logo sanfer.jpg +File59=logo_192x192.png File6=anterior.jpg -File60=logo2.png -File61=logo2_192x192.png -File62=MainPage.bal -File63=Malo.jpg -File64=mapa.bal -File65=mapa_rutas.bal -File66=mapas.bal -File67=marker-azul.png -File68=marker-azul-0.png -File69=marker-azul1.png +File60=logo_exitus1.jpg +File61=logo2.png +File62=logo2_192x192.png +File63=MainPage.bal +File64=Malo.jpg +File65=mapa.bal +File66=mapa_rutas.bal +File67=mapas.bal +File68=marker-azul.png +File69=marker-azul-0.png File7=BLACNCO.jpg -File70=marker-azul-1.png -File71=marker-azul-10.png -File72=marker-azul-100.png -File73=marker-azul-11.png -File74=marker-azul-12.png -File75=marker-azul-13.png -File76=marker-azul-14.png -File77=marker-azul-15.png -File78=marker-azul-16.png -File79=marker-azul-17.png +File70=marker-azul1.png +File71=marker-azul-1.png +File72=marker-azul-10.png +File73=marker-azul-100.png +File74=marker-azul-11.png +File75=marker-azul-12.png +File76=marker-azul-13.png +File77=marker-azul-14.png +File78=marker-azul-15.png +File79=marker-azul-16.png File8=cacahuates.png -File80=marker-azul-18.png -File81=marker-azul-19.png -File82=marker-azul2.png -File83=marker-azul-2.png -File84=marker-azul-20.png -File85=marker-azul-21.png -File86=marker-azul-22.png -File87=marker-azul-23.png -File88=marker-azul-24.png -File89=marker-azul-25.png +File80=marker-azul-17.png +File81=marker-azul-18.png +File82=marker-azul-19.png +File83=marker-azul2.png +File84=marker-azul-2.png +File85=marker-azul-20.png +File86=marker-azul-21.png +File87=marker-azul-22.png +File88=marker-azul-23.png +File89=marker-azul-24.png File9=cacahuates_blanco.png -File90=marker-azul-26.png -File91=marker-azul-27.png -File92=marker-azul-28.png -File93=marker-azul-29.png -File94=marker-azul3.png -File95=marker-azul-3.png -File96=marker-azul-30.png -File97=marker-azul-31.png -File98=marker-azul-32.png -File99=marker-azul-33.png +File90=marker-azul-25.png +File91=marker-azul-26.png +File92=marker-azul-27.png +File93=marker-azul-28.png +File94=marker-azul-29.png +File95=marker-azul3.png +File96=marker-azul-3.png +File97=marker-azul-30.png +File98=marker-azul-31.png +File99=marker-azul-32.png FileGroup1=Default Group FileGroup10=Default Group FileGroup100=Default Group @@ -777,6 +778,7 @@ FileGroup418=Default Group FileGroup419=Default Group FileGroup42=Default Group FileGroup420=Default Group +FileGroup421=Default Group FileGroup43=Default Group FileGroup44=Default Group FileGroup45=Default Group @@ -868,46 +870,47 @@ Library6=camera Library7=contentresolver Library8=core Library9=fileprovider -ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~)~\n~'Set activity to Landscape~\n~SetActivityAttribute(foto, android:screenOrientation, "landscape")~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddManifestText(~\n~~\n~)~\n~'''' para el teclado~\n~ SetActivityAttribute(main, android:windowSoftInputMode, adjustResize|stateHidden)~\n~ SetApplicationAttribute(android:allowBackup, "false")~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~ ~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~ AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~~\n~AddPermission(android.permission.ACCESS_FINE_LOCATION)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~~\n~AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~'Le da mas memoria a la aplicacion~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths, ~\n~~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~~\n~'Si al cargar un mapa de google manda este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~SetApplicationAttribute(android:exported, "true")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~~\n~ 'Para que se registre para abrir bases de datos~\n~' AddActivityText(main,~\n~'~\n~'~\n~'~\n~'~\n~')~\n~~\n~ 'Para que se registre para abrir bases de datos~\n~ AddActivityText(main,~\n~~\n~~\n~~\n~~\n~~\n~) +ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~)~\n~'Set activity to Landscape~\n~SetActivityAttribute(foto, android:screenOrientation, "landscape")~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddManifestText(~\n~~\n~)~\n~'''' para el teclado~\n~ SetActivityAttribute(main, android:windowSoftInputMode, adjustResize|stateHidden)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~ ~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~ AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~~\n~AddPermission(android.permission.ACCESS_FINE_LOCATION)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~~\n~AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~'Le da mas memoria a la aplicacion~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths, ~\n~~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~~\n~'Si al cargar un mapa de google manda este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~SetApplicationAttribute(android:exported, "true")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~~\n~ 'Para que se registre para abrir bases de datos~\n~' AddActivityText(main,~\n~'~\n~'~\n~'~\n~'~\n~')~\n~~\n~ 'Para que se registre para abrir bases de datos~\n~ AddActivityText(main,~\n~~\n~~\n~~\n~~\n~~\n~) Module1=B4XMainPage Module10=C_Pedidos Module11=C_Principal Module12=C_Productos Module13=C_Promos Module14=C_TicketsDia -Module15=C_updateAvailable -Module16=CameraExClass -Module17=DBRequestManager -Module18=DownloadService -Module19=errorManager +Module15=|relative|..\C_TrendSpending +Module16=C_updateAvailable +Module17=CameraExClass +Module18=DBRequestManager +Module19=DownloadService Module2=C_CheckList -Module20=EscPosPrinter -Module21=FileHandler -Module22=foto -Module23=kms_helperSubs -Module24=ManageExternalStorage -Module25=MAPA_RUTAS -Module26=Promociones -Module27=SD_Spinner -Module28=Starter -Module29=Subs +Module20=errorManager +Module21=EscPosPrinter +Module22=FileHandler +Module23=foto +Module24=kms_helperSubs +Module25=ManageExternalStorage +Module26=MAPA_RUTAS +Module27=Promociones +Module28=SD_Spinner +Module29=Starter Module3=C_Cliente -Module30=Tracker +Module30=Subs +Module31=Tracker Module4=C_Clientes Module5=C_Historico Module6=C_Mapas Module7=C_Nota Module8=C_NoVenta Module9=C_NuevoCliente -NumberOfFiles=420 +NumberOfFiles=421 NumberOfLibraries=28 -NumberOfModules=30 +NumberOfModules=31 Version=12.8 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 5.04.21 + #VersionName: 5.04.28 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index 3a42c75..f090162 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -23,6 +23,7 @@ ModuleBookmarks28= ModuleBookmarks29= ModuleBookmarks3= ModuleBookmarks30= +ModuleBookmarks31= ModuleBookmarks4= ModuleBookmarks5= ModuleBookmarks6= @@ -54,6 +55,7 @@ ModuleBreakpoints28= ModuleBreakpoints29= ModuleBreakpoints3= ModuleBreakpoints30= +ModuleBreakpoints31= ModuleBreakpoints4= ModuleBreakpoints5= ModuleBreakpoints6= @@ -64,8 +66,8 @@ ModuleClosedNodes0= ModuleClosedNodes1= ModuleClosedNodes10= ModuleClosedNodes11= -ModuleClosedNodes12=3,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 -ModuleClosedNodes13= +ModuleClosedNodes12=3,7,8,9,10,11,12 +ModuleClosedNodes13=6,7,8,9,10,11,12,13,14,16,17 ModuleClosedNodes14= ModuleClosedNodes15= ModuleClosedNodes16= @@ -76,21 +78,22 @@ ModuleClosedNodes2= ModuleClosedNodes20= ModuleClosedNodes21= ModuleClosedNodes22= -ModuleClosedNodes23=4,5,6,7,8,11,12,14,15,17,18,21,22,24,25,26,27,28,29,30,31,32,33,35 -ModuleClosedNodes24= -ModuleClosedNodes25=4 -ModuleClosedNodes26= +ModuleClosedNodes23= +ModuleClosedNodes24=4,24,25,26,27,31,32,33,35 +ModuleClosedNodes25= +ModuleClosedNodes26=4 ModuleClosedNodes27= ModuleClosedNodes28= ModuleClosedNodes29= -ModuleClosedNodes3=1,5,6,7 -ModuleClosedNodes30= +ModuleClosedNodes3=5,6,7 +ModuleClosedNodes30=115 +ModuleClosedNodes31= ModuleClosedNodes4= ModuleClosedNodes5= ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=Subs,modTrendSpending,2124,4,Subs,traeAcumuladoHoyTS,2150,2,C_Principal,Class_Globals,6,0,Subs,borraPedidoClienteActual,1505,6,Subs,Process_Globals,14,0,Subs,actualizaProducto,983,0,C_Productos,et_pCant_FocusChanged,938,6,C_Productos,et_pCant_TextChanged,893,6,C_Productos,b_prodMenos_Click,619,6,C_Productos,b_prodMas_Click,675,6 +NavigationStack=C_Clientes,Class_Globals,23,0,C_Clientes,B_IMP_Click,236,0,C_Cliente,B4XPage_Created,316,0,B4XMainPage,B4XPage_Created,155,1,C_Principal,JobDone,1064,0,Diseñador Visual,cliente.bal,-100,3,C_Cliente,B_IMP_Click,1138,0,Subs,ponImpreso,658,0,C_Cliente,Imprime_ticket,1210,6,kms_helperSubs,RD_respalda_kmt_info,362,0,kms_helperSubs,RD_Init,94,4 SelectedBuild=0 -VisibleModules=1,28,11,3,29,12,7,9,23 +VisibleModules=1,29,11,3,30,13,12,7,27,26,24,4 diff --git a/B4A/Starter.bas b/B4A/Starter.bas index 65d5627..734e23f 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -25,7 +25,7 @@ Sub Process_Globals Dim GPS As GPS 'Para ENVIA_ULTIMA_GPS Dim Timer1 As Timer - Dim Interval As Int = 20 + Dim Interval As Int = 600 Dim DBReqServer As String Dim pe As PhoneEvents Dim ph As Phone @@ -47,7 +47,7 @@ Sub Process_Globals Dim ultimaActualizacionGPS As String = 235959 ' Dim fechaRuta As String 'ignore Dim tiempos As Map - Dim Logger As Boolean = False + Dim Logger As Boolean = True Dim ultimaActividad As String = "" Dim boleta As String = 0 Dim sesion As Map @@ -57,7 +57,7 @@ Sub Process_Globals Dim errorConnDBReq As Boolean = False Dim GUID As String = "" Dim passSupervisor As String = "13X#X$X46" ' Valor predeterminado DIFERENTE a "" - dim semana as int = 0 + Dim semana As Int = 0 End Sub Sub Service_Create @@ -74,7 +74,7 @@ Sub Service_Create Subs.revisaBD pe.Initialize("pe") 'Para obtener la bateria ' skmt = s.dbInit 'Inicializamos BD. - DBReqServer = "http://keymon.lat:1781" + DBReqServer = "http://keymon.net:1781" ' DBReqServer = "http://keymon.lat:9003" Private c As Cursor = skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'SERVER'"$) If c.RowCount > 0 Then @@ -231,7 +231,8 @@ Sub JobDone(Job As HttpJob) skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORA", HORA)) DateTime.DateFormat = "HH" skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORASRVR")) - skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORASRVR", DateTime.Date(DateTime.Now))) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORAMVL")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORAMVL", DateTime.Date(DateTime.Now))) Next End If End If diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 362e104..117a277 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -1184,7 +1184,7 @@ End Sub 'Regresa el numero máximo de promociones permitidas, tomando en cuenta recurrentes, clientes y maxPromos. Sub traeMaxPromos(pm As Map) As Int - Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub. Private maxPromos As List Private mp0, mp As String = "0" maxPromos.Initialize @@ -1197,7 +1197,11 @@ Sub traeMaxPromos(pm As Map) As Int ' LogColor("SIN HCCP CANT", Colors.Magenta) ' End If If thisLog Then LogColor("==== HISTORICO:"&pm.Get("historico"), Colors.Red) +' Log("### PRODS VARIABLES: " & pm.Get("prodsVariables")) + Private maxPromosXDescPV As String = B4XPages.MainPage.promos.ts.maxPromosPorProdsVariables(pm.Get("prodsVariables"), pm.Get("id")) + Log("########### " & maxPromosXDescPV) If thisLog Then Log(pm) + maxPromos.Add(maxPromosXDescPV.As(Int)) If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente If pm.Get("maxPromos") <> "null" Then maxPromos.Add(pm.Get("maxPromos").As(Int)) 'Agregamos maxPromos If pm.Get("maxXcliente") <> "null" Then maxPromos.Add(pm.Get("maxXcliente").As(Int)) 'Agregamos maxXcliente @@ -1232,15 +1236,13 @@ End Sub '3799, 7226, 7228, 7230 Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore - Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub. Private inicioContador As String = DateTime.Now Private mp As Int = 0 If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.red) 'Obtenemos el mapa con toda la info de la promoción. Private pm As Map = traePromo(idPromo, cliente) - ' B4XPages.MainPage.productos.promosC.traePromo(idPromo, cliente) - If thisLog Then LogColor(pm, Colors.Blue) ' If thisLog Then LogColor("|" & pm.Get("maxPromos") & "|", Colors.Blue) ' Log("|"&revisaMaxPromosProdsFijosPorInventario(pm)&"|") @@ -1336,17 +1338,20 @@ Sub revisaMaxPromosProdsFijosPorInventario(pm As Map) As Int Private thisInvDisp As Int = 0 If invDispParaPromo.Get(idProdsFijos.Get(p)) <> Null Then thisInvDisp = invDispParaPromo.Get(idProdsFijos.Get(p)) If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${thisInvDisp}, pzas=${prodsFijosPiezas.Get(p)}"$) +' Log(">>>>> Monto Bonificacion: " & B4XPages.MainPage.promos.ts.traeMontoBonificacion(idProdsFijos.Get(p), pm.Get("id"))) +' If thisLog Then LogColor(">> Max prods fijos x Bonificaciones: " & B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), pm.Get("id")), Colors.blue) + t.Add(B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), pm.Get("id"))) ' If thisLog Then Log($"${(thisInvDisp / prodsFijosPiezas.Get(p))}"$) Private x() As String = Regex.Split("\.", $"${(thisInvDisp / prodsFijosPiezas.Get(p))}"$) 'Separamos el resultado de la division por el punto decimal. -' If thisLog Then Log(x(0)) + If thisLog Then Log(x(0)) t.Add(x(0).As(Int)) 'Solo guardamos la parte del entero de la division. Next t.Sort(True) 'Ordenamos la lista para que en el lugar 0 este el resultao mas pequeño. If thisLog Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue) If thisLog Then LogColor($"prodsFijosPiezasReq=${prodsFijosPiezas}"$, Colors.Blue) - If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) +' If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) + LogColor(">>>>>> T: " & t, Colors.red) If thisLog Then LogColor("Max promos de prodsFijos POR inventario = " & t.Get(0), Colors.red) -' LogColor(">>>>>> " & t.Get(0), Colors.red) Return t.Get(0) 'Regresamos el resultado mas pequeño. End Sub @@ -1357,7 +1362,7 @@ End Sub 'fijos es 5, entonces regresamos 5. Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore Private thisLog As Boolean = True - If thisLog Then Log("======================================================") + If thisLog Then LogColor("==================revisaMaxPromosProdsVariablesPorInventario====================", Colors.red) If thisLog Then Log("======================================================") Private invFijoXpromo As Map invFijoXpromo.Initialize @@ -1371,36 +1376,58 @@ Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore Private prodsVariablesRequeridos As Int = pm.Get("prodsVariablesRequeridos") Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas") Private idProdsFijos As List = pm.Get("prodsFijos") - For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo. - invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosPiezas.Get(p)) - Private idEsteProd As String = idProdsFijos.Get(p) - Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd) - Private pzasReqEsteProd As Int = prodsFijosPiezas.Get(p) - If thisLog Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$) +' For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo. +' invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosPiezas.Get(p)) +' Private idEsteProd As String = idProdsFijos.Get(p) +' Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd) +' Private pzasReqEsteProd As Int = prodsFijosPiezas.Get(p) +' If thisLog Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$) ' invDispParaPromo.Put( idEsteProd, (invEsteProd - (1)) ) - Next +' Next If thisLog Then LogColor($"MaxPromos=${maxPromos}, promosXFijos=${maxPromosXFijos}"$, Colors.Blue) If thisLog Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue) If thisLog Then LogColor($"prodsFijosPiezasReq=${prodsFijosPiezas}"$, Colors.Blue) If thisLog Then LogColor($"prodsVariables=${idProdsVariables}${CRLF}Variables Req=${prodsVariablesRequeridos} "$, Colors.Blue) - If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) +' If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) If thisLog Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$) Private maxPromosXVariables As Int = 0 + + 'Si prodsFijosCant = 0 entonces no debemos de hacemos el loop, solo sumamos las existencias de los variables / cant de variables requeridos y ese seria el maximo. + + Private revisiones As Int = maxPromosXFijos + + If pm.Get("prodsFijos").As(List).Size = 0 Then + revisiones = 1 + Log(pm.Get("prodsVariables")) + + End If + + Log(pm.Get("prodsFijos").As(List).Size) + Log(maxPromosXFijos) + For x = 1 To maxPromosXFijos + If thisLog Then Log("==================== maxPromosXFijos "& x &" ========================") If thisLog Then Log("=====================================================") - If thisLog Then Log("=====================================================") + Log("FIJOS: " & idProdsFijos.Size) For i = 0 To idProdsFijos.Size - 1 If thisLog Then Log($"FIJO - ${idProdsFijos.Get(i)}, ${invDispParaPromo.Get(idProdsFijos.Get(i))} - ${prodsFijosPiezas.Get(i).As(Int)*(i+1)}"$) invDispParaPromo.Put(idProdsFijos.Get(i), invDispParaPromo.Get(idProdsFijos.Get(i)).As(Int) - prodsFijosPiezas.Get(i).As(Int)*(i+1)) 'Restamos las piezas de los productos fijos del inventario disponible. Next If thisLog Then LogColor("Inv disponible despues de restar fijos = " & invDispParaPromo, Colors.Blue) - totalProdsVariablesDisponibles = 0 + Private prodsVariablesXPresupuestoBonificaciones As List + prodsVariablesXPresupuestoBonificaciones.Initialize For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes. If invDispParaPromo.ContainsKey(idProdsVariables.Get(i)) Then + Log($"Este prodVariable: ${idProdsVariables.Get(i)}"$) + Log($"Este invDisponible: ${invDispParaPromo.Get(idProdsVariables.Get(i))}"$) +' Log(">> Monto Bonificacion: " & B4XPages.MainPage.promos.ts.traeMontoBonificacion(idProdsVariables.Get(i), pm.Get("id"))) + prodsVariablesXPresupuestoBonificaciones.Add(B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsVariables.Get(i), prodsVariablesRequeridos, pm.Get("id"))) +' If thisLog Then LogColor(">> Max prods fijos x Bonificaciones: " & B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsVariables.Get(i), prodsVariablesRequeridos, pm.Get("id")), Colors.blue) totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(idProdsVariables.Get(i)) End If Next + If thisLog Then Log($"prodsVariablesXPresupuestoBonificaciones: ${prodsVariablesXPresupuestoBonificaciones}"$) 'Revisamos variables. If thisLog Then Log($"Var disponibles - var requeridos : ${totalProdsVariablesDisponibles} - ${prodsVariablesRequeridos*x}"$) totalProdsVariablesDisponibles = totalProdsVariablesDisponibles - (prodsVariablesRequeridos*x) @@ -1409,7 +1436,9 @@ Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore maxPromosXVariables = x Next 'Restamos fijos. -' LogColor("Max promos de prodsVariables POR inventario = " & maxPromosXVariables, Colors.red) + LogColor("Max promos de prodsVariables POR inventario = " & maxPromosXVariables, Colors.red) + If thisLog Then Log("=====================================================") + If thisLog Then LogColor("=================TERMINA MAXPROMOSPRODSVARIABLES===================", Colors.red) Return maxPromosXVariables End Sub @@ -1945,7 +1974,12 @@ Sub revisaPromoPorMonto As Map Private rangoMin As String = "0" Private promoId As String = "" m.Initialize - Private pm As Cursor = Starter.skmt.ExecQuery("select CAT_PA_ID, ifNull(CAT_PA_PORCENTAJE_PAQUETE, 0) as CAT_PA_PORCENTAJE_PAQUETE, ifNull(CAT_PA_PRECIO1, 0) as CAT_PA_PRECIO1, ifNull(CAT_PA_PRECIO2, 0) as CAT_PA_PRECIO2 from promos_comp where CAT_PA_TIPO_PROMONTO = '1' and CAT_PA_ID not in (select PE_CEDIS from PEDIDO where PE_CEDIS = PE_PROID)") 'Traemos las "promos por monto" que no existen en el "PEDIDO" del cliente. + Private pm As Cursor = Starter.skmt.ExecQuery($"select CAT_PA_ID, + ifNull(CAT_PA_PORCENTAJE_PAQUETE, 0) As CAT_PA_PORCENTAJE_PAQUETE, + ifNull(CAT_PA_PRECIO1, 0) As CAT_PA_PRECIO1, + ifNull(CAT_PA_PRECIO2, 0) As CAT_PA_PRECIO2 from promos_comp + where CAT_PA_TIPO_PROMONTO = '1' and + CAT_PA_ID Not in (Select PE_CEDIS from PEDIDO where PE_CEDIS = PE_PROID And PE_CLIENTE = '${traeCliente}')"$) 'Traemos las "promos por monto" que no existen en el "PEDIDO" del cliente. If pm.RowCount > 0 Then Private clienteId As String = traeCliente For i = 0 To pm.RowCount - 1 @@ -2051,46 +2085,45 @@ Sub comparaVersiones(versionMinima As String, versionActual As String) As Int End If ' Si son iguales, sigue comparando Next - ' Si todas las partes comparadas son iguales: Return 0 End Sub -' Regresa un mapa con el tipo, monto permitido semanal y el acumulado hasta el día anterior: -' ej: -' - RMI=1500,0 -' - DESCUENTOS=1500,0 -' - BONIFICACIONES=1500,480 -Sub traeInfoTrendSpending As Map - Private semana As Int = 0 - Private HIST_TSS_SEMANA As String - Private HIST_TSS_SEMANA_ACUM As String - Private m As Map - m.Initialize - Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) - If c.RowCount > 0 Then - c.Position = 0 - semana = c.GetInt("CAT_VA_VALOR") - End If - If semana > 0 Then - c = Starter.skmt.ExecQuery($"select HIST_TSS_TIPO, HIST_TSS_SEMANA${semana}, HIST_TSS_SEMANA${semana}_ACUM from HIST_TREND_SPENDING_SEMANAL"$) - If c.RowCount > 0 Then - For i = 0 To c.RowCount - 1 - c.Position = i - HIST_TSS_SEMANA = c.GetString($"HIST_TSS_SEMANA${semana}"$) - HIST_TSS_SEMANA_ACUM = c.GetString($"HIST_TSS_SEMANA${semana}_ACUM"$) - If c.GetString("HIST_TSS_TIPO") = "RMI" Then - m.Put("RMI", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) - else if c.GetString("HIST_TSS_TIPO") = "DESCUENTOS" Then - m.Put("DESCUENTOS", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) - else if c.GetString("HIST_TSS_TIPO") = "BONIFICACIONES" Then - m.Put("BONIFICACIONES", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) - End If - Next - End If - End If - Return m -End Sub +'' Regresa un mapa con el tipo, monto permitido semanal y el acumulado hasta el día anterior: +'' ej: +'' - RMI=1500,0 +'' - DESCUENTOS=1500,0 +'' - BONIFICACIONES=1500,480 +'Sub traeInfoTrendSpending As Map +' Private semana As Int = 0 +' Private HIST_TSS_SEMANA As String +' Private HIST_TSS_SEMANA_ACUM As String +' Private m As Map +' m.Initialize +' Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) +' If c.RowCount > 0 Then +' c.Position = 0 +' semana = c.GetInt("CAT_VA_VALOR") +' End If +' If semana > 0 Then +' c = Starter.skmt.ExecQuery($"select HIST_TSS_TIPO, HIST_TSS_SEMANA${semana}, HIST_TSS_SEMANA${semana}_ACUM from HIST_TREND_SPENDING_SEMANAL"$) +' If c.RowCount > 0 Then +' For i = 0 To c.RowCount - 1 +' c.Position = i +' HIST_TSS_SEMANA = c.GetString($"HIST_TSS_SEMANA${semana}"$) +' HIST_TSS_SEMANA_ACUM = c.GetString($"HIST_TSS_SEMANA${semana}_ACUM"$) +' If c.GetString("HIST_TSS_TIPO") = "RMI" Then +' m.Put("RMI", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) +' else if c.GetString("HIST_TSS_TIPO") = "DESCUENTOS" Then +' m.Put("DESCUENTOS", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) +' else if c.GetString("HIST_TSS_TIPO") = "BONIFICACIONES" Then +' m.Put("BONIFICACIONES", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) +' End If +' Next +' End If +' End If +' Return m +'End Sub ' Modifica el acumulado del Trend Speding, le "suma" o "resta" al presupuesto especificado (RMI, BONIFICACIONES o DESCUENTOS) Sub modTrendSpending(accion As String, tipo As String, monto As String) @@ -2113,20 +2146,21 @@ Sub modTrendSpending(accion As String, tipo As String, monto As String) End If Log("acumulado:" & acumulado & " | monto: " & monto) Private c As Cursor = Starter.skmt.ExecQuery($"select HIST_TSS_TIPO, ${HIST_TSS_SEMANA} as disponible, ${HIST_TSS_SEMANA_ACUM} as acumulado from HIST_TREND_SPENDING_SEMANAL where HIST_TSS_TIPO = '${tipo.ToUpperCase}'"$) - If accion = "resta" Then + If accion.ToUpperCase = "RESTA" Then If c.RowCount > 0 Then c.Position = 0 - If tipo.ToUpperCase = "BONIFICACIONES" Then + If tipo.ToUpperCase = "BONIFICACIONES" Or tipo.ToUpperCase = "RMI" Then Private nuevaBonificacion As String = NumberFormat2((acumulado + monto), 1, 2, 2, False) - LogColor($"Nueva bonificacion = ${nuevaBonificacion}"$, Colors.Magenta) + LogColor($"Nuevo acumulado ${tipo} = ${nuevaBonificacion}"$, Colors.Magenta) Starter.skmt.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$) Starter.skmt.ExecNonQuery($"insert into TREND_SPENDING (tipo, acumulado) values ('${tipo.ToUpperCase}', '${nuevaBonificacion}')"$) +' else if tipo.ToUpperCase = "RMI" Then End If End If - else if accion = "suma" Then + else if accion.ToUpperCase = "SUMA" Then If c.RowCount > 0 Then c.Position = 0 - If tipo.ToUpperCase = "BONIFICACIONES" Then + If tipo.ToUpperCase = "BONIFICACIONES" Or tipo.ToUpperCase = "RMI" Then Private nuevaBonificacion As String = NumberFormat2((acumulado - monto), 1, 2, 2, False) LogColor($"Nueva bonificacion = ${nuevaBonificacion}"$, Colors.Magenta) Starter.skmt.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$) @@ -2136,27 +2170,27 @@ Sub modTrendSpending(accion As String, tipo As String, monto As String) End If End Sub -Sub traeAcumuladoHoyTS(tipo As String) As String - Private HIST_TSS_SEMANA As String - Private HIST_TSS_SEMANA_ACUM As String - Private acumulado As String = "0" - If Starter.semana = 0 Then - Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) - If c.RowCount > 0 Then - c.Position = 0 - Starter.semana = c.GetInt("CAT_VA_VALOR") - End If - End If - HIST_TSS_SEMANA = $"HIST_TSS_SEMANA${Starter.semana}"$ - HIST_TSS_SEMANA_ACUM = $"HIST_TSS_SEMANA${Starter.semana}_ACUM"$ - Private d As Cursor = Starter.skmt.ExecQuery($"select acumulado from TREND_SPENDING where tipo = '${tipo.ToUpperCase}'"$) - If d.RowCount > 0 Then - d.Position = 0 - acumulado = d.GetString("ACUMULADO") - End If - Logcolor("Acumulado hoy: " & acumulado, Colors.Blue) - Return NumberFormat2(acumulado, 1, 2, 2, False) -End Sub +'Sub traeAcumuladoHoyTS(tipo As String) As String +' Private HIST_TSS_SEMANA As String +' Private HIST_TSS_SEMANA_ACUM As String +' Private acumulado As String = "0" +' If Starter.semana = 0 Then +' Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) +' If c.RowCount > 0 Then +' c.Position = 0 +' Starter.semana = c.GetInt("CAT_VA_VALOR") +' End If +' End If +' HIST_TSS_SEMANA = $"HIST_TSS_SEMANA${Starter.semana}"$ +' HIST_TSS_SEMANA_ACUM = $"HIST_TSS_SEMANA${Starter.semana}_ACUM"$ +' Private d As Cursor = Starter.skmt.ExecQuery($"select acumulado from TREND_SPENDING where tipo = '${tipo.ToUpperCase}'"$) +' If d.RowCount > 0 Then +' d.Position = 0 +' acumulado = d.GetString("ACUMULADO") +' End If +' LogColor($"Acumulado hoy de ${tipo}: "$ & acumulado, Colors.Blue) +' Return NumberFormat2(acumulado, 1, 2, 2, False) +'End Sub Sub traePrecio(id As String) As String Private precio As String = "0" @@ -2166,4 +2200,132 @@ Sub traePrecio(id As String) As String precio = c.GetString("CAT_GP_PRECIO") End If Return precio -End Sub \ No newline at end of file +End Sub + +' +'Sub trendSpendingFuncs(accion As String, tipo As String, clienteId As String, id As String, laCant As String, inv As Int) As String +' Private logger As Boolean = True +' Dim kh As kms_helperSubs +' kh.Initialize("kh", "kh", Starter.skmt) +' Dim TS_RMI() As String +' Dim TS_DESCUENTOS() As String +' Dim TS_BONIFICACIONES() As String +' Private mx As Map = traeInfoTrendSpending +' TS_RMI = Regex.Split(",", mx.Get("RMI")) +' TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS")) +' TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES")) +' +' If tipo.ToUpperCase = "RMI" Then +' Private lasMaximas As Int = 0 +' Log($"Acumulado de RMIs: ${traeAcumuladoHoyTS("rmi")}"$) +' Private elMonto As String = NumberFormat2(traePrecioRMI(id), 1, 2, 2, False) +' Log($"elMonto: ${elMonto}"$) +' Log($"TS_RMI(0): ${TS_RMI(0)}"$) +' Log($"TS_RMI(1): ${TS_RMI(1)}"$) +' Log($"LaCant: ${laCant}"$) +' Private rmisRestantes As String = (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi")) +' Log($"rmisRestantes: ${rmisRestantes}"$) +' +' If accion.ToUpperCase = "PRODMAS" Then 'Regresa lasMaximas y elMonto separadas por un "|" +' If elMonto > 0 Then +' lasMaximas = ((laCant * elMonto) + rmisRestantes) / elMonto +' If logger Then Log("lasMaximas: " & lasMaximas) +' If logger Then Log(traeAcumuladoHoyTS("rmi")) +' End If +'' If laCant + 1 = lasMaximas Then +'' ToastMessageShow("El presupuesto de RMI no permite agregar mas productos!!", False) +'' End If +' If logger Then Log("EL RMI: " & elMonto) +' Log($"lacant=${laCant} < lasMaximas=${lasMaximas} = ${laCant 0 Then +' lasMaximas = ((laCant * elMonto) + BonsRestantes) / elMonto +' If logger Then Log("lasMaximas: " & lasMaximas) +' If logger Then Log(traeAcumuladoHoyTS("bonificaciones")) +' End If +' If laCant = lasMaximas Then +' ToastMessageShow("El presupuesto de BONIFICACIONES no permite agregar mas productos!!", False) +' End If +' If logger Then Log("EL MONTO: " & elMonto) +' If inv > 0 And laCant < lasMaximas Then +' modTrendSpending("resta", "bonificaciones", elMonto) ' Restamos al presupuesto de hoy (agregamos al acumulado). +' End If +' If logger Then Log(">>>> MONTO RESTANTE PRESUPUESTO: " & (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones"))) +' Return lasMaximas & "|" & elMonto +' else if accion.ToUpperCase = "PRODMENOS" Then 'Regresa bonificacionesMaximas y elMonto separadas por un "|" +' If logger Then Log("LaCANT= " & laCant & ", elMonto= " & elMonto) +' If laCant >= 0 Then +' modTrendSpending("suma", "bonificaciones", elMonto) ' Agregamos al presupuesto de hoy (restamos del acumulado). +' End If +' Return lasMaximas & "|" & elMonto +' else if accion.ToUpperCase = "TEXTCHANGED" Then +' Log("TC") +'' Private laBonificacion As String = NumberFormat2(kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100), 1, 2, 2, False) +'' Log("LA BONIFICACION: " & laBonificacion) +'' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) +'' Log("Monto de BONIFICACIONES disponible: " & BonsRestantes) +'' Private maxDispPorBonificaciones As Int = (BonsRestantes/laBonificacion).As(Int) +'' Log($"Max disponibles por bonificaciones: ${maxDispPorBonificaciones}"$) +'' If laBonificacion > 0 Then +'' If New > bonificacionesMaximas Then +'' If inv > bonificacionesMaximas Then +'' laCant = bonificacionesMaximas +'' Else +'' laCant = inv +'' End If +'' End If +'' Else if laBonificacion = 0 Then +'' If laCant > inv Or New > inv Then +''' Log("Se pasa!!") +''' Log($"Ponemos laCant en: ${inv}"$) +'' laCant = inv +'' End If +'' End If +'' modTrendSpending("resta", "bonificaciones", ((New * laBonificacion) - (Old * laBonificacion))) +'' Log(traeAcumuladoHoyTS("bonificaciones")) +'' Return bonificacionesMaximas & "|" & laBonificacion +' else if accion.ToUpperCase = "FOCUSCHANGED" Then 'Regresa bonificaciones maximas, SOLO correr esta parte si HASFOCUS es VERDADERO. +' Log("FC") +' Private elMonto As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100) +' If elMonto > 0 Then 'And HasFocus +' If logger Then Log("LA BONIFICACION: " & elMonto) +' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) +' If logger Then Log("Monto del PRESUPUESTO disponible: " & BonsRestantes) +' lasMaximas = ((laCant * elMonto) + BonsRestantes) / elMonto +' If logger Then Log("bonificacionesMaximas: " & lasMaximas) +' End If +' Return lasMaximas +' End If +' End If +'End Sub +' +'' Trae el precio del RMI desde CAT_RMI. +'Sub traePrecioRMI(id As String) As String +' Private precio As String = "0" +' Private c As Cursor = Starter.skmt.ExecQuery($"select cat_monto from cat_rmi where cat_id = '${id}'"$) +' If c.RowCount > 0 Then +' c.Position = 0 +' precio = c.GetString("CAT_MONTO") +' End If +' Return precio +'End Sub \ No newline at end of file diff --git a/B4A/kms_helperSubs.bas b/B4A/kms_helperSubs.bas index 1189499..d06b2e8 100644 --- a/B4A/kms_helperSubs.bas +++ b/B4A/kms_helperSubs.bas @@ -66,25 +66,41 @@ Sub RD_Init If Not(File.IsDirectory(Dirp, Dir)) Then safePath = rp.GetSafeDirDefaultExternal("kmts") ' Log($"Hay directorio: ${Dirp} ${Dir} - ${File.IsDirectory(Dirp, Dir)}"$) If Starter.Logger Then Log($"Safepath:${safePath}"$) + Private limpiarBD As Boolean = False Private name() As String = Regex.split(" ", Application.LabelName) 'Obtenemos el nombre de la app para ponerselo a la BD. + If File.Exists(safePath, $"${name(0)}.rkmt.km"$) = False Then + File.Copy(File.DirAssets, $"${name(0)}.rkmt.km"$, safePath, $"${name(0)}.rkmt.km"$) + limpiarBD = True + Log("NO EXISTE BD") + End If rkmt.Initialize(safePath, $"${name(0)}.rkmt.km"$, True) + If limpiarBD Then + LogColor("----->> LIMPIAMOS BD RECUPERACION PRIMERA VEZ <<-------", Colors.red) + rkmt.ExecNonQuery("delete from pedido") + rkmt.ExecNonQuery("delete from cat_gunaprod") + rkmt.ExecNonQuery("delete from cat_gunaprod2") + rkmt.ExecNonQuery("delete from kmt_info") + limpiarBD = False + End If ' Log("TAMAÑO DE ARCHIVO RESPALDO " &File.size(File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$)) - skmt.Initialize(File.DirInternal,"kmt.db", False) - If chkIfTableExists(skmt, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(skmt, "PEDIDO")}, FECHA TEXT)"$) - If chkIfTableExists(skmt, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(skmt, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$) - If chkIfTableExists(skmt, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(skmt, "CAT_GUNAPROD")}, FECHA TEXT)"$) - If chkIfTableExists(skmt, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(skmt, "CAT_GUNAPROD2")}, FECHA TEXT)"$) +' skmt.Initialize(File.DirInternal,"kmt.db", False) + If chkIfTableExists(khdb, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(khdb, "PEDIDO")}, FECHA TEXT)"$) + If chkIfTableExists(khdb, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(khdb, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$) + If chkIfTableExists(khdb, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(khdb, "CAT_GUNAPROD")}, FECHA TEXT)"$) + If chkIfTableExists(khdb, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(khdb, "CAT_GUNAPROD2")}, FECHA TEXT)"$) agregaColumna(rkmt,"CAT_GUNAPROD", "CAT_GP_TIPOPROD2", "TEXT") agregaColumna(rkmt,"CAT_GUNAPROD", "CAT_GP_PROMOCION", "TEXT") agregaColumna(rkmt,"CAT_GUNAPROD2", "CAT_GP_TIPOPROD2", "TEXT") agregaColumna(rkmt,"CAT_GUNAPROD2", "CAT_GP_PROMOCION", "TEXT") agregaColumna(rkmt, "kmt_info", "CAT_CL_LIMITECREDITO", "TEXT") - If chkIfTableExists(skmt, "kmt_info") Then rkmt.ExecNonQuery($"create table if not exists kmt_info (${getTableColumnList(skmt, "kmt_info")}, FECHA TEXT)"$) - If chkIfTableExists(skmt, "PROMOS_COMP") Then rkmt.ExecNonQuery($"create table if not exists PROMOS_COMP (${getTableColumnList(skmt, "PROMOS_COMP")}, FECHA TEXT)"$) + If chkIfTableExists(khdb, "kmt_info") Then rkmt.ExecNonQuery($"create table if not exists kmt_info (${getTableColumnList(khdb, "kmt_info")}, FECHA TEXT)"$) + If chkIfTableExists(khdb, "PROMOS_COMP") Then rkmt.ExecNonQuery($"create table if not exists PROMOS_COMP (${getTableColumnList(khdb, "PROMOS_COMP")}, FECHA TEXT)"$) agregaColumna(rkmt, "PROMOS_COMP", "CAT_PA_PORCENTAJE_PAQUETE", "TEXT") agregaColumna(rkmt, "PROMOS_COMP", "CAT_PA_PRECIO1", "TEXT") - If chkIfTableExists(skmt, "CAT_VARIABLES") Then rkmt.ExecNonQuery($"create table if not exists CAT_VARIABLES (${getTableColumnList(skmt, "CAT_VARIABLES")}, FECHA TEXT)"$) - If chkIfTableExists(skmt, "CAT_RMI") Then rkmt.ExecNonQuery($"create table if not exists CAT_RMI (${getTableColumnList(skmt, "CAT_RMI")}, FECHA TEXT)"$) + agregaColumna(rkmt, "CAT_DETALLES_PAQ", "CAT_DP_PRECIOB", "TEXT") + agregaColumna(rkmt, "kmt_info", "CREDITO", "INTEGER") + If chkIfTableExists(khdb, "CAT_VARIABLES") Then rkmt.ExecNonQuery($"create table if not exists CAT_VARIABLES (${getTableColumnList(khdb, "CAT_VARIABLES")}, FECHA TEXT)"$) + If chkIfTableExists(khdb, "CAT_RMI") Then rkmt.ExecNonQuery($"create table if not exists CAT_RMI (${getTableColumnList(khdb, "CAT_RMI")}, FECHA TEXT)"$) DateTime.DateFormat = "yyyyMMdd" fechaHoy = DateTime.Date(DateTime.Now) If Starter.Logger Then Log("RKMTS: " & rkmt.IsInitialized) @@ -126,7 +142,7 @@ End Sub 'Para que "skmt" vea a "rkmt", es necesario montarla (attach). Sub revisaRkmtAttached As Boolean rkmtAttached = False - Dim rs As ResultSet = skmt.ExecQuery("SELECT * FROM pragma_database_list") + Dim rs As ResultSet = khdb.ExecQuery("SELECT * FROM pragma_database_list") Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "rkmt1" y si no, la montamos. If rs.GetString("name") = "rkmt1" Then rkmtAttached = True ' Log(rs.GetString("name")) @@ -134,7 +150,7 @@ Sub revisaRkmtAttached As Boolean If Not(rkmtAttached) Then Private name() As String = Regex.split(" ", Application.LabelName) - skmt.ExecNonQuery($"attach database '${File.Combine(safePath,$"${name(0)}.rkmt.km"$)}' as rkmt1;"$) + khdb.ExecNonQuery($"attach database '${File.Combine(safePath,$"${name(0)}.rkmt.km"$)}' as rkmt1;"$) rkmtAttached = True End If Return rkmtAttached @@ -157,10 +173,10 @@ Sub RD_respalda_pedido DateTime.DateFormat = "MM/dd/yyyy" Private fechaHoy2 As String = DateTime.Date(DateTime.Now) ' Log("Copiando PEDIDO ...") - Private x As Cursor = skmt.ExecQuery("select * from PEDIDO") + Private x As Cursor = khdb.ExecQuery("select * from PEDIDO") ' Log(x.RowCount) If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "PEDIDO") + Private lasCols As String = getTableColumnListName(khdb, "PEDIDO") ' rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from PEDIDO where FECHA = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into PEDIDO (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PEDIDO where substr(pe_fecha, 1, 10) = '${fechaHoy2}'"$) @@ -180,9 +196,9 @@ End Sub Sub RD_respalda_cat_gunaprod Private inicio As String = DateTime.Now ' Log("Copiando CAT_GUNAPROD ...") - Private x As Cursor = skmt.ExecQuery("select * from CAT_GUNAPROD") + Private x As Cursor = khdb.ExecQuery("select * from CAT_GUNAPROD") If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD") + Private lasCols As String = getTableColumnListName(khdb, "CAT_GUNAPROD") lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo. rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from CAT_GUNAPROD where FECHA = '${fechaHoy}'"$) @@ -209,8 +225,8 @@ Sub RD_restaura_cat_gunaprod If c.RowCount > 0 Then c.Position = 0 ' Log(c.GetString("FECHA")) - skmt.ExecNonQuery("delete from CAT_GUNAPROD") - skmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery("delete from CAT_GUNAPROD") + khdb.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$) Log($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -227,9 +243,9 @@ End Sub Sub RD_respalda_cat_gunaprod2 Private inicio As String = DateTime.Now ' Log("Copiando CAT_GUNAPROD2 ...") - Private x As Cursor = skmt.ExecQuery("select * from CAT_GUNAPROD2") + Private x As Cursor = khdb.ExecQuery("select * from CAT_GUNAPROD2") If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD2") + Private lasCols As String = getTableColumnListName(khdb, "CAT_GUNAPROD2") lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la fecha del respaldo. rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from CAT_GUNAPROD2 where FECHA = '${fechaHoy}'"$) @@ -255,8 +271,8 @@ Sub RD_restaura_cat_gunaprod2 If c.RowCount > 0 Then c.Position = 0 LogColor(">>>>> Restauramos GP: " & c.GetString("FECHA"), Colors.red) - skmt.ExecNonQuery("delete from CAT_GUNAPROD2") - skmt.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery("delete from CAT_GUNAPROD2") + khdb.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$) ' Log($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -296,10 +312,12 @@ End Sub Sub RD_respalda_cat_detalle_paq Private inicio As String = DateTime.Now ' Log("Copiando CAT_DETALLES_PAQ ...") - Private x As Cursor = skmt.ExecQuery("select * from CAT_DETALLES_PAQ") + Private x As Cursor = khdb.ExecQuery("select * from CAT_DETALLES_PAQ") + Log(1) Try If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ") + Log(2) + Private lasCols As String = getTableColumnListName(khdb, "CAT_DETALLES_PAQ") rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_DETALLES_PAQ"$) @@ -326,8 +344,8 @@ Sub RD_restaura_cat_detalle_paq If c.RowCount > 0 Then c.Position = 0 ' Log(c.GetString("FECHA")) - skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") - skmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery("delete from CAT_DETALLES_PAQ") + khdb.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$) Log($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -344,9 +362,9 @@ End Sub Sub RD_respalda_kmt_info Private inicio As String = DateTime.Now ' Log("Copiando kmt_info ...") - Private x As Cursor = skmt.ExecQuery("select * from kmt_info") + Private x As Cursor = khdb.ExecQuery("select * from kmt_info") If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "kmt_info") + Private lasCols As String = getTableColumnListName(khdb, "kmt_info") rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from kmt_info where fecha = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into kmt_info (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.kmt_info"$) @@ -370,15 +388,15 @@ Sub RD_restaura_kmt_info If c.RowCount > 0 Then c.Position = 0 ' Log(c.GetString("FECHA")) - skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA"))' Ponemos el dia de hoy para visita. - skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA", Subs.traeDiaSemana)) - skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA"))' Borramos fecha de FIN DIA. - skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_PASS"))' Ponemos la contraseña del FIN DIA en "CL" - skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", "CL")) - Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) 'Ponemos la fecha de hoy en CAT_VARIABLES para que nos deje ingresar con el usuario guardado. - Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA", fechaHoy)) - skmt.ExecNonQuery("delete from kmt_info") - skmt.ExecNonQuery($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA"))' Ponemos el dia de hoy para visita. + khdb.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA", Subs.traeDiaSemana)) + khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA"))' Borramos fecha de FIN DIA. + khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_PASS"))' Ponemos la contraseña del FIN DIA en "CL" + khdb.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", "CL")) + khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) 'Ponemos la fecha de hoy en CAT_VARIABLES para que nos deje ingresar con el usuario guardado. + khdb.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA", fechaHoy)) + khdb.ExecNonQuery("delete from kmt_info") + khdb.ExecNonQuery($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$) ' Log($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -395,9 +413,9 @@ End Sub Sub RD_respalda_cat_variables Private inicio As String = DateTime.Now ' Log("Copiando CAT_VARIABLES ...") - Private x As Cursor = skmt.ExecQuery("select * from CAT_VARIABLES") + Private x As Cursor = khdb.ExecQuery("select * from CAT_VARIABLES") If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "CAT_VARIABLES") + Private lasCols As String = getTableColumnListName(khdb, "CAT_VARIABLES") rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from CAT_VARIABLES where fecha = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into CAT_VARIABLES (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.cat_variables"$) @@ -421,8 +439,8 @@ Sub RD_restaura_cat_variables If c.RowCount > 0 Then c.Position = 0 ' Log(c.GetString("FECHA")) - skmt.ExecNonQuery("delete from CAT_VARIABLES") - skmt.ExecNonQuery($"insert into CAT_VARIABLES (${lasCols}) select ${lasCols} from rkmt1.CAT_VARIABLES where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery("delete from CAT_VARIABLES") + khdb.ExecNonQuery($"insert into CAT_VARIABLES (${lasCols}) select ${lasCols} from rkmt1.CAT_VARIABLES where fecha = '${c.GetString("FECHA")}'"$) ' Log($"insert into CAT_VARIABLES (${lasCols}) select ${lasCols} from rkmt1.CAT_VARIABLES where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -439,9 +457,9 @@ End Sub Sub RD_respalda_promos_comp Private inicio As String = DateTime.Now ' Log("Copiando kmt_info ...") - Private x As Cursor = skmt.ExecQuery("select * from PROMOS_COMP") + Private x As Cursor = khdb.ExecQuery("select * from PROMOS_COMP") If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "PROMOS_COMP") + Private lasCols As String = getTableColumnListName(khdb, "PROMOS_COMP") rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from PROMOS_COMP where fecha = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into PROMOS_COMP (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PROMOS_COMP"$) @@ -465,8 +483,8 @@ Sub RD_restaura_promos_comp If c.RowCount > 0 Then c.Position = 0 ' Log(c.GetString("FECHA")) - skmt.ExecNonQuery("delete from PROMOS_COMP") - skmt.ExecNonQuery($"insert into PROMOS_COMP (${lasCols}) select ${lasCols} from rkmt1.PROMOS_COMP where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery("delete from PROMOS_COMP") + khdb.ExecNonQuery($"insert into PROMOS_COMP (${lasCols}) select ${lasCols} from rkmt1.PROMOS_COMP where fecha = '${c.GetString("FECHA")}'"$) Log($"insert into PROMOS_COMP (${lasCols}) select ${lasCols} from rkmt1.PROMOS_COMP where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -483,9 +501,9 @@ End Sub Sub RD_respalda_cat_rmi Private inicio As String = DateTime.Now ' Log("Copiando cat_rmi ...") - Private x As Cursor = skmt.ExecQuery("select * from CAT_RMI") + Private x As Cursor = khdb.ExecQuery("select * from CAT_RMI") If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "CAT_RMI") + Private lasCols As String = getTableColumnListName(khdb, "CAT_RMI") rkmt.BeginTransaction rkmt.ExecNonQuery($"delete from CAT_RMI where fecha = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into CAT_RMI (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_RMI"$) @@ -509,8 +527,8 @@ Sub RD_restaura_cat_rmi If c.RowCount > 0 Then c.Position = 0 ' Log(c.GetString("FECHA")) - skmt.ExecNonQuery("delete from CAT_RMI") - skmt.ExecNonQuery($"insert into CAT_RMI (${lasCols}) select ${lasCols} from rkmt1.CAT_RMI where fecha = '${c.GetString("FECHA")}'"$) + khdb.ExecNonQuery("delete from CAT_RMI") + khdb.ExecNonQuery($"insert into CAT_RMI (${lasCols}) select ${lasCols} from rkmt1.CAT_RMI where fecha = '${c.GetString("FECHA")}'"$) Log($"insert into CAT_RMI (${lasCols}) select ${lasCols} from rkmt1.CAT_RMI where fecha = '${c.GetString("FECHA")}'"$) Else If fechaRestauracion.Length > 0 Then @@ -598,7 +616,7 @@ End Sub Sub getTableColumnList(db As SQL, table As String) As String 'ignore Private l As String = "" If chkIfTableExists(db, table) Then - Private c As Cursor = skmt.ExecQuery($"pragma table_info(${table})"$) + Private c As Cursor = khdb.ExecQuery($"pragma table_info(${table})"$) If c.RowCount > 0 Then For i = 0 To c.RowCount - 1 c.Position = i @@ -620,7 +638,7 @@ End Sub Sub getTableColumnListName(db As SQL, table As String) As String 'ignore Private l As String = "" If chkIfTableExists(db, table) Then - Private c As Cursor = skmt.ExecQuery($"pragma table_info(${table})"$) + Private c As Cursor = khdb.ExecQuery($"pragma table_info(${table})"$) If c.RowCount > 0 Then For i = 0 To c.RowCount - 1 c.Position = i @@ -642,7 +660,7 @@ End Sub Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore Private t As Boolean = False 'ignore If db.IsInitialized Then - Private c As Cursor = skmt.ExecQuery($"SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'"$) + Private c As Cursor = khdb.ExecQuery($"SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'"$) If c.RowCount > 0 Then t = True c.Close End If diff --git a/C_TrendSpending.bas b/C_TrendSpending.bas new file mode 100644 index 0000000..d38dcd5 --- /dev/null +++ b/C_TrendSpending.bas @@ -0,0 +1,408 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.8 +@EndOfDesignText@ +' Clase para las funciones de Trend Spending. +' Trend spending son 3 presupuestos que tiene Kelloggs, que son bonificaciones, descuentos y RMIs, estos se calculan semanalmente +' y se descargan de la tabla HIST_TRADE_SPENDING_SEMANAL, de ahi obtenemos el presupuesto de la semana y el acumulado hasta ayer +' en la noche, a cada presupuesto le vamos sumando cada que agregamos a pedido un descuento (Precios diferentes al original que +' NO están en PROMOS), una bonificacion (precios con descuento que estan en promociones) o un RMI (de estos sumamos al presupuesto +' el precio del RMI seleccionado), de acuerdo al presupuesto disponible de cada tipo, se limitan los productos, es decir que si +' el presupuesto de bonificaciones ya se agoto, ya no aparecen promociones, o si el de descuentos se agoto, ya no se pueden agregar +' mas productos con descuento. + +Sub Class_Globals + Private EventName As String 'ignore + Private CallBack As Object 'ignore + Dim tsMaximas As Int = 0 + Private tsdb As SQL + Dim TS_RMI() As String + Dim TS_DESCUENTOS() As String + Dim TS_BONIFICACIONES() As String +End Sub + +'Initializes the object. You can add parameters to this method if needed. +Public Sub Initialize (vCallback As Object, vEventName As String, db As SQL) As Object + EventName = vEventName + CallBack = vCallback + tsdb = db + Private mx As Map = traeInfoTrendSpending + Log(mx) + TS_RMI = Regex.Split(",", mx.Get("RMI")) + TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS")) + TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES")) + Log(">>>>>>>>>>>>> TRENDSPENDING: " & mx) + Log("RMI: " & TS_RMI(0) & "|" & TS_RMI(1)) + Log("DESCUENTOS: " & TS_DESCUENTOS(0) & "|" & TS_DESCUENTOS(1)) + Log("BONIFICACIONES: " & TS_BONIFICACIONES(0) & "|" & TS_BONIFICACIONES(1)) + Return Me +End Sub + +'Regresa la tabla de productos (cat_gunaprod o cat_gunaprod2) dependiendo del tipo de venta. +Sub traeTablaProds(tipoventa As String) As String + Private tablaProds As String = "cat_gunaprod2" + If tipoventa = "ABORDO" Or tipoventa = "PREVENTA" Then tablaProds = "cat_gunaprod" +' LogColor($"Tipo= ${tipoventa}, tabla=${tablaProds}"$, Colors.RGB(200,136,0)) + Return tablaProds +End Sub + +'Regresa el descuento de condiciones comerciales por SKU. +Sub traeDescXSku(clienteId As String, prodId As String) As String 'ignore + Private desc As String = "0" + Private c As Cursor = tsdb.ExecQuery($"Select * from CAT_DESCUENTOS_SKU where CAT_DS_CLIENTE = '${clienteId}' and CAT_DS_PRODID = '${prodId}'"$) + If c.RowCount > 0 Then + c.Position = 0 + desc = c.GetString("CAT_DS_PORCENTAJE") + End If + Return desc +End Sub + +' Regresa un mapa con el tipo, monto permitido semanal y el acumulado hasta el día anterior: +' ej: +' - RMI=1500,0 +' - DESCUENTOS=1500,0 +' - BONIFICACIONES=1500,480 +Sub traeInfoTrendSpending As Map + Private semana As Int = 0 + Private HIST_TSS_SEMANA As String = 0 + Private HIST_TSS_SEMANA_ACUM As String = 0 + Private m As Map = CreateMap("RMI": 100000 & "," & 0, "DESCUENTOS": 100000 & "," & 0, "BONIFICACIONES": 100000 & "," & 0) ' El 100,000 es el default del presupuesto, por si NO HAY datos de trend spending. +' m.Initialize + Private c As Cursor = tsdb.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) + If c.RowCount > 0 Then + c.Position = 0 + semana = c.GetInt("CAT_VA_VALOR") + End If + If semana > 0 Then + c = tsdb.ExecQuery($"select HIST_TSS_TIPO, HIST_TSS_SEMANA${semana}, HIST_TSS_SEMANA${semana}_ACUM from HIST_TREND_SPENDING_SEMANAL"$) + If c.RowCount > 0 Then + For i = 0 To c.RowCount - 1 + c.Position = i + HIST_TSS_SEMANA = c.GetString($"HIST_TSS_SEMANA${semana}"$) + HIST_TSS_SEMANA_ACUM = c.GetString($"HIST_TSS_SEMANA${semana}_ACUM"$) + If c.GetString("HIST_TSS_TIPO") = "RMI" Then + m.Put("RMI", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) + else if c.GetString("HIST_TSS_TIPO") = "DESCUENTOS" Then + m.Put("DESCUENTOS", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) + else if c.GetString("HIST_TSS_TIPO") = "BONIFICACIONES" Then + m.Put("BONIFICACIONES", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM) + End If + Next + End If + End If + Return m +End Sub + +' Modifica el acumulado del Trend Speding, le "suma" o "resta" al presupuesto especificado (RMI, BONIFICACIONES o DESCUENTOS) +Sub modTrendSpending(accion As String, tipo As String, monto As String) + Private HIST_TSS_SEMANA As String + Private HIST_TSS_SEMANA_ACUM As String + Private acumulado As String = "0" + If Starter.semana = 0 Then + Private c As Cursor = tsdb.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) + If c.RowCount > 0 Then + c.Position = 0 + Starter.semana = c.GetInt("CAT_VA_VALOR") + End If + End If + HIST_TSS_SEMANA = $"HIST_TSS_SEMANA${Starter.semana}"$ + HIST_TSS_SEMANA_ACUM = $"HIST_TSS_SEMANA${Starter.semana}_ACUM"$ + Private d As Cursor = tsdb.ExecQuery($"select acumulado from TREND_SPENDING where tipo = '${tipo.ToUpperCase}'"$) + If d.RowCount > 0 Then + d.Position = 0 + acumulado = d.GetString("ACUMULADO") + End If + Log("acumulado:" & acumulado & " | monto: " & monto) + Private c As Cursor = tsdb.ExecQuery($"select HIST_TSS_TIPO, ${HIST_TSS_SEMANA} as disponible, ${HIST_TSS_SEMANA_ACUM} as acumulado from HIST_TREND_SPENDING_SEMANAL where HIST_TSS_TIPO = '${tipo.ToUpperCase}'"$) + If accion.ToUpperCase = "RESTA" Then + If c.RowCount > 0 Then + c.Position = 0 + If tipo.ToUpperCase = "DESCUENTOS" Or tipo.ToUpperCase = "RMI" Then + Private nuevaBonificacion As String = NumberFormat2((acumulado + monto), 1, 2, 2, False) + LogColor($"Nuevo acumulado ${tipo} = ${nuevaBonificacion}"$, Colors.Magenta) + tsdb.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$) + tsdb.ExecNonQuery($"insert into TREND_SPENDING (tipo, acumulado) values ('${tipo.ToUpperCase}', '${nuevaBonificacion}')"$) +' else if tipo.ToUpperCase = "RMI" Then + End If + End If + else if accion.ToUpperCase = "SUMA" Then + If c.RowCount > 0 Then + c.Position = 0 + If tipo.ToUpperCase = "DESCUENTOS" Or tipo.ToUpperCase = "RMI" Then + Private nuevaBonificacion As String = NumberFormat2((acumulado - monto), 1, 2, 2, False) + LogColor($"Nueva bonificacion = ${nuevaBonificacion}"$, Colors.Magenta) + tsdb.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$) + tsdb.ExecNonQuery($"insert into TREND_SPENDING (tipo, acumulado) values ('${tipo.ToUpperCase}', '${nuevaBonificacion}')"$) + End If + End If + End If +End Sub + +Sub traeAcumuladoHoyTS(tipo As String) As String +' Private HIST_TSS_SEMANA As String +' Private HIST_TSS_SEMANA_ACUM As String + Private acumulado As String = "0" + If Starter.semana = 0 Then + Private c As Cursor = tsdb.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$) + If c.RowCount > 0 Then + c.Position = 0 + Starter.semana = c.GetInt("CAT_VA_VALOR") + End If + End If +' HIST_TSS_SEMANA = $"HIST_TSS_SEMANA${Starter.semana}"$ +' HIST_TSS_SEMANA_ACUM = $"HIST_TSS_SEMANA${Starter.semana}_ACUM"$ + Private d As Cursor = tsdb.ExecQuery($"select acumulado from TREND_SPENDING where tipo = '${tipo.ToUpperCase}'"$) + If d.RowCount > 0 Then + d.Position = 0 + acumulado = d.GetString("ACUMULADO") + End If +' LogColor($"Acumulado hoy de ${tipo}: "$ & acumulado, Colors.Blue) + Return NumberFormat2(acumulado, 1, 2, 2, False) +End Sub + +'Trae el cliente de CUENTAA +Sub traeCliente As String 'ignore + Private c As Cursor + Private cl As String + c = Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position = 0 + cl = c.GetString("CUENTA") + c.Close + Return cl +End Sub + +Sub traePrecio(id As String) As String + Private precio As String = "0" + Private c As Cursor = tsdb.ExecQuery($"select cat_gp_precio from ${traeTablaProds(Starter.tipov)} where cat_gp_id = '${id}'"$) + If c.RowCount > 0 Then + c.Position = 0 + precio = c.GetString("CAT_GP_PRECIO") + End If + Return precio +End Sub + +Sub trendSpending(accion As String, tipo As String, clienteId As String, id As String, laCant As String, inv As Int) As String + Private logger As Boolean = True + Dim TS_RMI() As String + Dim TS_DESCUENTOS() As String + Dim TS_BONIFICACIONES() As String + Private mx As Map = traeInfoTrendSpending + TS_RMI = Regex.Split(",", mx.Get("RMI")) + TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS")) + TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES")) + If tipo.ToUpperCase = "RMI" Then + Private lasMaximas As Int = 0 + Log($"Acumulado de RMIs: ${traeAcumuladoHoyTS("rmi")}"$) + Private elMonto As String = NumberFormat2(traePrecioRMI(id), 1, 2, 2, False) + If logger Then Log($"elMonto: ${elMonto}"$) + If logger Then Log($"TS_RMI(0): ${TS_RMI(0)}"$) + If logger Then Log($"TS_RMI(1): ${TS_RMI(1)}"$) + If logger Then Log($"LaCant: ${laCant}"$) + Private tsRestantes As String = (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi")) + Log($"tsRestantes: ${tsRestantes}"$) + If accion.ToUpperCase = "PRODMAS" Then 'Regresa lasMaximas y elMonto separadas por un "|" + If elMonto > 0 Then + lasMaximas = ((laCant * elMonto) + tsRestantes) / elMonto + If logger Then Log("lasMaximas: " & lasMaximas) + If logger Then Log("traeAcumuladoHoyTS: " & traeAcumuladoHoyTS("rmi")) + End If +' If laCant + 1 = lasMaximas Then +' ToastMessageShow("El presupuesto de RMI no permite agregar mas productos!!", False) +' End If + If logger Then Log("EL RMI: " & elMonto) + If logger Then Log($"lacant=${laCant} < lasMaximas=${lasMaximas} = ${laCant 0 Then + lasMaximas = ((laCant * elMonto) + tsRestantes) / elMonto + If logger Then Log("lasMaximas: " & lasMaximas) + If logger Then Log("lasMaximas2: " & traeMaximas("descuentos", clienteId, id, laCant, "")) + If logger Then Log(traeAcumuladoHoyTS("descuentos")) + End If + If laCant = lasMaximas Then + ToastMessageShow("El presupuesto de DESCUENTOS no permite agregar mas productos!!", False) + End If + If logger Then Log("EL MONTO: " & elMonto) + If inv > 0 And laCant < lasMaximas Then + modTrendSpending("resta", "descuentos", elMonto) ' Restamos al presupuesto de hoy (agregamos al acumulado). + End If + If logger Then Log(">>>> MONTO RESTANTE PRESUPUESTO: " & (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos"))) + Return lasMaximas & "|" & elMonto + else if accion.ToUpperCase = "PRODMENOS" Then 'Regresa descuentosMaximas y elMonto separadas por un "|" + If logger Then Log("LaCANT= " & laCant & ", elMonto= " & elMonto) + If laCant >= 0 Then + modTrendSpending("suma", "descuentos", elMonto) ' Agregamos al presupuesto de hoy (restamos del acumulado). + End If + Return lasMaximas & "|" & elMonto + else if accion.ToUpperCase = "TEXTCHANGED" Then + If logger Then Log("TC") + else if accion.ToUpperCase = "FOCUSCHANGED" Then 'Regresa descuentos maximas, SOLO correr esta parte si HASFOCUS es VERDADERO. + If logger Then Log("FC") + Private elMonto As String = traePrecio(id)*(traeDescXSku(clienteId, id)/100) + If elMonto > 0 Then 'And HasFocus + If logger Then Log("LA BONIFICACION: " & elMonto) + Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos")) + If logger Then Log("Monto del PRESUPUESTO disponible: " & tsRestantes) + lasMaximas = ((laCant * elMonto) + tsRestantes) / elMonto + If logger Then Log("tsMaximas: " & lasMaximas) + End If + Return lasMaximas + End If + End If +End Sub + +' Trae el precio del RMI desde CAT_RMI. +Sub traePrecioRMI(id As String) As String + Private precio As String = "0" + Private c As Cursor = tsdb.ExecQuery($"select cat_monto from cat_rmi where cat_id = '${id}'"$) + If c.RowCount > 0 Then + c.Position = 0 + precio = c.GetString("CAT_MONTO") + End If + Return precio +End Sub + + ' Traemos el monto (descuento total) del producto actual. + ' Utiliza el descuento de condiciones comerciales por SKU (tabla CAT_DESCUENTOS). +Sub traeMonto(clienteId As String, id As String) As String + Private tsMonto As String + tsMonto = NumberFormat2(traePrecio(id)*(traeDescXSku(clienteId, id)/100), 1, 2, 2, False) + Return tsMonto +End Sub + +' Trae la cantidad máxima de rmis, bonificaciones o descuentos por presupuesto. +Sub traeMaximas(tipo As String, clienteId As String, id As String, laCant As String, promoId As String) As Int + Private tsMaximas As Int = 100000 + Private tsRestantes As String = 0 + Private tsMonto As String '= traeMonto(clienteId, id) +' If tsMonto > 0 Then + If tipo.ToUpperCase = "DESCUENTOS" Then + tsMonto = NumberFormat2(traePrecio(id)*(traeDescXSku(clienteId, id)/100), 1, 2, 2, False) + tsRestantes = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos")) ' Traemos monto restante de Trend Spending para descuentos. + else If tipo.ToUpperCase = "RMI" Then + tsMonto = NumberFormat2(traePrecioRMI(id), 1, 2, 2, False) + tsRestantes = (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi")) ' Traemos monto restante de Trend Spending para rmis. +' else If tipo.ToUpperCase = "BONIFICACIONES" Then +' tsMonto = NumberFormat2(traeMontoBonificacion(id, promoId), 1, 2, 2, False) +' tsRestantes = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) ' Traemos monto restante de Trend Spending para bonificaciones. + End If +' Log($"${TS_BONIFICACIONES(0)} - ${TS_BONIFICACIONES(1)} - ${traeAcumuladoHoyTS("bonificaciones")}"$) +' Log($"((${laCant} * ${tsMonto}) + ${tsRestantes}) / ${tsMonto}"$) + Log($"tsMonto: ${tsMonto}"$) + Log($"tsRestantes: ${tsRestantes}"$) + tsMaximas = ((laCant * tsMonto) + tsRestantes) / tsMonto +' End If + Return tsMaximas +End Sub + +' Trae la cantidad máxima de bonificaciones por presupuesto. +Sub traeBonificacionesMaximas(tipo As String, clienteId As String, id As String, laCant As String, promoId As String) As Int + Private tsMaximas As Int = 100000 + Private tsRestantes As String = 0 + Private tsMonto As String + If tipo.ToUpperCase = "BONIFICACIONES" Then + tsMonto = NumberFormat2(traeMontoBonificacion(id, promoId), 1, 2, 2, False) + tsRestantes = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) ' Traemos monto restante de Trend Spending para bonificaciones. + End If +' Log($"tsMonto: ${tsMonto}"$) +' Log($"tsRestantes: ${tsRestantes}"$) +' Log($"laCant: ${laCant}"$) + If tsMonto > 0 Then + tsMaximas = Floor(tsRestantes / (tsMonto * laCant)) +' Log(">>> tsMaximas: " & tsMaximas) + End If + Return tsMaximas +End Sub + +' Trae el monto de la bonificacion, que es el precio original MENOS el precio de venta con descuento. +' - Si CAT_DP_PRECIOB es 1, la bonificacion es: Precio original - precio de venta. +' - Si CAT_DP_PRECIOB es 0, la bonificacion es: Precio original. +Sub traeMontoBonificacion(id As String, promoId As String) As String +' Log(promoId) + Private tsMonto As String = 0 + Private c As Cursor = tsdb.ExecQuery($"SELECT CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_PRECIO, CAT_DP_TIPO, CAT_GP_PRECIO, CAT_DP_PRECIOB FROM CAT_DETALLES_PAQ join ${traeTablaProds(Starter.tipov)} on CAT_GP_ID = CAT_DP_IDPROD where CAT_GP_ID = '${id}' and CAT_DP_ID = '${promoId}'"$) + If c.RowCount > 0 Then + c.Position = 0 + If c.GetInt("CAT_DP_PRECIOB") = 1 Then + tsMonto = c.GetString("CAT_GP_PRECIO") - c.GetString("CAT_DP_PRECIO") ' Precio original - precio de venta. + Else + tsMonto = c.GetString("CAT_GP_PRECIO") ' Precio original. + End If +' Log($"${c.GetString("CAT_GP_PRECIO")} - ${c.GetString("CAT_DP_PRECIO")}"$) + End If +' Log("ROWCOUNT: " & c.RowCount) + Return tsMonto +End Sub + +' Recibe una lista con los ids de los productos variables, revisa cada id para traer los maximos por presupuesto para ese producto +' y pone ese maximo en una lista, luego ordena esa lista para obtener el mas chico y regresa ese como maximo. +' esta funcion se va a aplicar en la funcion maxpromos como un limite mas para que no muestre las promociones. +' NOTA: hay que ver como y cuando dejar de mostrar promociones cuando quede poco presupuesto para bonificaciones. +' NOTA: Talvez se pueda hacer que cuando se entre a PROMOS, si ya no hay presupuesto suficiente, mande un toast o msgbox diciendo que ya +' se agoto el presupuesto. +' Aunque si hay suficiente para mostrar algunas promos ... pues que si las muestre. +Sub maxPromosPorProdsVariables(idProdsVariables As List, promo As String)As Int + Private logger As Boolean = False + Private Maxs As Int = 100000 + Private prodsVariablesXPresupuestoBonificaciones As List + Private prodsVariablesRequeridos As Int = traeProdsVariablesRequeridos(promo) + prodsVariablesXPresupuestoBonificaciones.Initialize +' Log("PRODS SIZE: " & idProdsVariables.Size) + For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes. + If logger Then Log($"Este prodVariable: ${idProdsVariables.Get(i)}"$) +' Log($"Este invDisponible: ${invDispParaPromo.Get(idProdsVariables.Get(i))}"$) + If logger Then Log(">> Monto Bonificacion: " & traeMontoBonificacion(idProdsVariables.Get(i), promo)) + Private maxProds As Int = traeBonificacionesMaximas("bonificaciones", traeCliente, idProdsVariables.Get(i), prodsVariablesRequeridos, promo) + prodsVariablesXPresupuestoBonificaciones.Add(maxProds) + if logger then LogColor(">> Max prods x Bonificaciones: " & maxProds, Colors.blue) + Next + prodsVariablesXPresupuestoBonificaciones.Sort(True) + If prodsVariablesXPresupuestoBonificaciones.Size > 0 Then + Maxs = prodsVariablesXPresupuestoBonificaciones.Get(0) + End If + Return Maxs +End Sub + +' Regresa los productos variables requeridos de la promocion dada. +Sub traeProdsVariablesRequeridos(promo As String) As Int + Private pvr As Int = 0 + Private c As Cursor = Starter.skmt.ExecQuery("Select CAT_GP_STS, CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '"& promo & "'") 'Obtenemos las piezas requeridas de productos variables para la promoción. + If c.RowCount > 0 Then + c.Position = 0 + If c.RowCount > 0 Then + c.Position = 0 + pvr = c.GetString("CAT_GP_STS") + End If + End If + c.Close + Return pvr +End Sub + +'Poner en una funcion (maxPromosPorProdsFijos) el codigo para traer las promos maximas por productos fijos, igual que la de productos +' variables, y ponerla igual en "traeMaxPromos" en lugar de en "revisaMaxPromosProdsFijosPorInventario". + +' Falta el codigo para el funcionamiento diferente de las bonificaciones: +' Si CAT_DP_PRECIOB es 1 --> (Precio de original (cat_precio) - precio de venta) y se suma al acumulado de BONIFICACIONES +' Si CAT_DP_PRECIOB es 0 --> precio orginal se suma al acumulado de BONIFICACIONES +'Hay que traer desde web la columna "CAT_DP_PRECIOB" y gardarla en algun lado en movil!! \ No newline at end of file