- VERSION 4.09.06.EP_d

- Codigo para promo Procter PRO3009
- Codigo para promo Unilever PRO3015
This commit is contained in:
Jose Alberto Guerra Ugalde
2024-09-09 11:16:42 -06:00
parent 012169a186
commit 4de48f6db6
8 changed files with 308 additions and 86 deletions

View File

@@ -148,8 +148,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' Subs.borraArribaDe100Errores ' Para Websockets ' Subs.borraArribaDe100Errores ' Para Websockets
' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets ' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets
If File.Exists(ruta, "kmt.db") = False Then If File.Exists(File.DirInternal, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db")
End If End If
skmt.Initialize(File.DirInternal,"kmt.db", True) skmt.Initialize(File.DirInternal,"kmt.db", True)
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS IMPRESORA (HABILITADA)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS IMPRESORA (HABILITADA)")
@@ -182,6 +182,9 @@ Private Sub B4XPage_Created (Root1 As B4XView)
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT, HE_LAT TEXT, HE_LON TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT, HE_LAT TEXT, HE_LON TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS BITACORAGPS(fechab TEXT, usuariob TEXT, almacenb TEXT, rutab TEXT, eventob TEXT, clienteb TEXT, iniciob TEXT, finb TEXT, latitudb TEXT, longitudb TEXT, precision TEXT, motivonoventa TEXT, motivonovisita TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS BITACORAGPS(fechab TEXT, usuariob TEXT, almacenb TEXT, rutab TEXT, eventob TEXT, clienteb TEXT, iniciob TEXT, finb TEXT, latitudb TEXT, longitudb TEXT, precision TEXT, motivonoventa TEXT, motivonovisita TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info2(CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO TEXT, CAT_CL_MTOCOMPRA TEXT, CAT_CL_CEDIS TEXT, CAT_CL_LAT TEXT, CAT_CL_LONG TEXT, CAT_CL_FBAJA TEXT, CAT_CL_FALTA TEXT, CAT_CL_CP TEXT, CAT_CL_EDO TEXT, CAT_CL_MUNI TEXT, CAT_CL_COLONIA TEXT, CAT_CL_CALLE2 TEXT, CAT_CL_CALLE1 TEXT, CAT_CL_NOINT TEXT, CAT_CL_NOEXT TEXT, CAT_CL_CALLE TEXT, CAT_CL_EMAIL TEXT, CAT_CL_TELEFONO TEXT, CAT_CL_ATIENTE2 TEXT, CAT_CL_ATIENDE1 TEXT, CAT_CL_NOMBRE TEXT, CAT_CL_GIRO TEXT, CAT_CL_DIAS_VISITA TEXT, CAT_CL_TIPO_RUTA TEXT, CAT_CL_RUTA TEXT, CAT_CL_CODIGO TEXT, gestion NUMERIC)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info2(CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO TEXT, CAT_CL_MTOCOMPRA TEXT, CAT_CL_CEDIS TEXT, CAT_CL_LAT TEXT, CAT_CL_LONG TEXT, CAT_CL_FBAJA TEXT, CAT_CL_FALTA TEXT, CAT_CL_CP TEXT, CAT_CL_EDO TEXT, CAT_CL_MUNI TEXT, CAT_CL_COLONIA TEXT, CAT_CL_CALLE2 TEXT, CAT_CL_CALLE1 TEXT, CAT_CL_NOINT TEXT, CAT_CL_NOEXT TEXT, CAT_CL_CALLE TEXT, CAT_CL_EMAIL TEXT, CAT_CL_TELEFONO TEXT, CAT_CL_ATIENTE2 TEXT, CAT_CL_ATIENDE1 TEXT, CAT_CL_NOMBRE TEXT, CAT_CL_GIRO TEXT, CAT_CL_DIAS_VISITA TEXT, CAT_CL_TIPO_RUTA TEXT, CAT_CL_RUTA TEXT, CAT_CL_CODIGO TEXT, gestion NUMERIC)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_PRO2265(H_IDCLIENTE)")
' skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_VARIABLES (CAT_VA_DESCRIPCION TEXT, CAT_VA_VALOR TEXT)")
Subs.agregaColumna("HIST_ENCUESTA", "HE_LAT", "TEXT") Subs.agregaColumna("HIST_ENCUESTA", "HE_LAT", "TEXT")
Subs.agregaColumna("HIST_ENCUESTA", "HE_FOTO", "BLOB") Subs.agregaColumna("HIST_ENCUESTA", "HE_FOTO", "BLOB")
Subs.agregaColumna("PEDIDO", "PE_RECALCULO", "TEXT") Subs.agregaColumna("PEDIDO", "PE_RECALCULO", "TEXT")
@@ -241,7 +244,6 @@ Private Sub B4XPage_Created (Root1 As B4XView)
almacen = 0 almacen = 0
rutaPreventa = 0 rutaPreventa = 0
p_appUpdate.Visible = False p_appUpdate.Visible = False
Subs.guardaAppInfo
End Sub End Sub
Sub B4XPage_Appear Sub B4XPage_Appear
@@ -339,7 +341,7 @@ Sub B4XPage_Appear
Else Else
B4XSwitch1.Value = False B4XSwitch1.Value = False
End If End If
Subs.guardaAppInfo
End Sub End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.

View File

@@ -423,6 +423,7 @@ Sub Class_Globals
Dim motivoNoVenta, motivoNoVisita As String Dim motivoNoVenta, motivoNoVisita As String
Dim contadorIniciarVenta As Int = 0 Dim contadorIniciarVenta As Int = 0
Dim IniVenNO As Boolean = False Dim IniVenNO As Boolean = False
private geoCont as int = 0
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -1164,10 +1165,10 @@ Private Sub b_geopass_Click
End Sub End Sub
Private Sub LA_GEO_LongClick Private Sub LA_GEO_LongClick
If distance > 99 Then ' If distance > 99 Then
p_pideGeoPass.BringToFront ' p_pideGeoPass.BringToFront
p_pideGeoPass.Visible = True ' p_pideGeoPass.Visible = True
End If ' End If
End Sub End Sub
Sub JobDone(Job As HttpJob) Sub JobDone(Job As HttpJob)
@@ -1183,10 +1184,15 @@ Sub JobDone(Job As HttpJob)
Log("SIN REGISTROS " & result1.Rows.Size) Log("SIN REGISTROS " & result1.Rows.Size)
If result1.Rows.Size = 0 Then MsgboxAsync("Contraseña equivocada, por favor intente de nuevo.", "ATENCION") If result1.Rows.Size = 0 Then MsgboxAsync("Contraseña equivocada, por favor intente de nuevo.", "ATENCION")
For Each records() As Object In result1.Rows For Each records() As Object In result1.Rows
' For Each k As String In result.Columns.Keys For Each k As String In result1.Columns.Keys
' Log(k & ": " & records(result.Columns.Get(k))) Log(k & ": " & records(result1.Columns.Get(k)))
' Next Next
Private permiso_geoPass As String = records(result1.Columns.Get("'OK'")) Private permiso_geoPass As String = "KO"
Log($"|${result1.Columns.Get("'OK'")}|"$)
' Log($"|${records(result1.Columns.Get("'OK'"))}|"$)
' If result1.Columns.Get("'OK'") <> "null" And result1.Columns.Get("'OK'") <> Null Then
permiso_geoPass = result1.Columns.Get("'OK'")
' End If
If permiso_geoPass = "OK" Then If permiso_geoPass = "OK" Then
m_lat = B4XPages.MainPage.lat_gps m_lat = B4XPages.MainPage.lat_gps
m_lon = B4XPages.MainPage.lon_gps m_lon = B4XPages.MainPage.lon_gps
@@ -1197,6 +1203,8 @@ Sub JobDone(Job As HttpJob)
cmd.Name = "delete_geoPass_GUNA" cmd.Name = "delete_geoPass_GUNA"
cmd.Parameters = Array As Object( Subs.traeAlmacen, Subs.traeRuta) cmd.Parameters = Array As Object( Subs.traeAlmacen, Subs.traeRuta)
reqManager.ExecuteQuery(cmd , 0, "traeGeoPass") reqManager.ExecuteQuery(cmd , 0, "traeGeoPass")
Else
MsgboxAsync("Contraseña equivocada, por favor intente de nuevo.", "ATENCION")
End If End If
Next Next
End If End If
@@ -4795,3 +4803,16 @@ Private Sub b_Inicio_Fin_venta_Click
b_Inicio_Fin_venta.Visible = False b_Inicio_Fin_venta.Visible = False
End Sub End Sub
Private Sub LA_GEO_Click
Log(geoCont)
If geoCont = 3 Then
Subs.centraPanel(p_pideGeoPass, Root.Width)
geoCont = 0
If distance > 99 Then
p_pideGeoPass.BringToFront
p_pideGeoPass.Visible = True
End If
End If
geoCont = geoCont + 1
End Sub

View File

@@ -306,7 +306,7 @@ End Sub
Sub B4XPage_Appear Sub B4XPage_Appear
p_principal.Visible = True p_principal.Visible = True
Subs.validaPromoProcterPRO3009
HORAINGRESO ="000000" HORAINGRESO ="000000"
Btn_Ubicar.Left = (Root.Width/2) - (Btn_Ubicar.Width/2) Btn_Ubicar.Left = (Root.Width/2) - (Btn_Ubicar.Width/2)
' B4XPages.MainPage.reqManager.Initialize(Me, B4XPages.MainPage.SERVER) ' B4XPages.MainPage.reqManager.Initialize(Me, B4XPages.MainPage.SERVER)
@@ -976,6 +976,13 @@ Sub cargar_Click
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text) cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "HIST_PROM") B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "HIST_PROM")
'Promo PRO3015 - 2 AXE AEROSOL 150 ML + 1 REXONA AEROSOL 150 ML $104.00
' Solo aplica para los que hayan comprado la PRO2265 durante Jul-Ago, el siguiente query trae esos clientes.
cmd.Initialize
cmd.Name = "selectPromo2265JulAgo_Guna"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_pro2265")
If E_RUTA2.text <> "" Then If E_RUTA2.text <> "" Then
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_guna_GV2" cmd.Name = "select_cat_clientes_guna_GV2"
@@ -1084,7 +1091,7 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
Else 'If Job Success then ... Else 'If Job Success then ...
'Logcolor("JobDone: '" & B4XPages.MainPage.reqManager.HandleJob(Job).tag & "' - Registros: " & B4XPages.MainPage.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 LogColor("JobDone: '" & B4XPages.MainPage.reqManager.HandleJob(Job).tag & "' - Registros: " & B4XPages.MainPage.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
'Verificamos que el usuario guardado en BD sea VALIDO. 'Verificamos que el usuario guardado en BD sea VALIDO.
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
@@ -1188,8 +1195,6 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
End If End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
@@ -1853,6 +1858,14 @@ Sub JobDone(Job As HttpJob)
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FOLIO",FOLIO)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FOLIO",FOLIO))
Next Next
End If End If
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
If RESULT.Tag = "hist_pro2265" Then 'query tag
Starter.skmt.ExecNonQuery("delete from HIST_PRO2265")
For Each records() As Object In RESULT.Rows
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PRO2265(H_IDCLIENTE) VALUES (?)", Array As Object (records(RESULT.Columns.Get("HVD_CLIENTE"))))
Next
End If
End If End If
End If End If
Job.Release Job.Release

View File

@@ -208,6 +208,7 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
' Dim ins As InputStream ' Dim ins As InputStream
' Dim bmp As Bitmap ' Dim bmp As Bitmap
' Dim jpeg() As Byte ' Dim jpeg() As Byte
Private yaComproPRO2265 As Boolean = Subs.revisaPRO2265(Subs.traeCliente)
If c2.RowCount > 0 Then If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1 For i=0 To c2.RowCount -1
c2.Position=i c2.Position=i
@@ -215,14 +216,18 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) ' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length)
' bmp.Initialize2(ins) ' bmp.Initialize2(ins)
' ListView1.AddTwoLinesAndBitmap(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO"),bmp) ' ListView1.AddTwoLinesAndBitmap(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO"),bmp)
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), Subs.traeCliente) Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), Subs.traeCliente)
Log($"TM=${tm}"$) Log($"TM=${tm}"$)
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto. If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
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")) If yaComproPRO2265 And c2.GetString("CAT_GP_ID") = "PRO3015" Then ' Si la promo es la PRO3015 y ya compro la PRO2265, NO la mostramos.
LogColor("Ya compro la PRO2265, ya no se muestra la PRO3015", Colors.Red)
Else
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 End If
Next Next
End If End If
yaComproPRO2265 = False
c2.Close c2.Close
End If End If
entro = "4" entro = "4"
@@ -544,6 +549,7 @@ Sub cuentaProds
l_totProds.text = $"Prods: ${totalProds}"$ l_totProds.text = $"Prods: ${totalProds}"$
Next Next
' LogColor("TIEMPO cuentaProds -=" & ((DateTime.Now-inicioContador)/1000), Colors.Red) ' LogColor("TIEMPO cuentaProds -=" & ((DateTime.Now-inicioContador)/1000), Colors.Red)
Subs.revisaPromoProcterPRO3009(prodsMap)
LogColor(prodsMap, Colors.blue) LogColor(prodsMap, Colors.blue)
p_botonesVenta.Visible = True p_botonesVenta.Visible = True
Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)

View File

@@ -1,66 +1,96 @@
Build1=Default,gunav2.keymon.com.mx Build1=Default,gunav2.keymon.com.mx
File1=alerta_amarilla.png File1=alert2.png
File10=ENCUESTA_M4.bal File10=clientes.bal
File11=ENCUESTA_M5.bal File11=comis.bal
File12=ENCUESTA_PED.bal File12=datoscliente.bal
File13=engrane.jpg File13=detalle_promo.bal
File14=engrane.png File14=durakelo.png
File15=engrane18.png File15=durakelo1.png
File16=engraneactual.png File16=ENCUESSTA_M3.bal
File17=ESNCUESTA_M2.bal File17=ENCUESTA.bal
File18=fondo_kmt.jpg File18=ENCUESTA_M4.bal
File19=gps20.png File19=ENCUESTA_M5.bal
File2=bus-ar.png File2=alerta.jpg
File20=guna.png File20=ENCUESTA_PED.bal
File21=guna18.png File21=engrane.jpg
File22=guna-fondo.png File22=engrane.png
File23=Hacer pedido.jpg File23=engrane18.png
File24=hacerpedido30.png File24=engraneactual.png
File25=ic_cloud_download_white_24dp.png File25=errormanager.bal
File26=itembuttonblue.png File26=ESNCUESTA_M2.bal
File27=login.bal File27=fondo_kmt.jpg
File28=Logo Guna_192x192.png File28=foto.bal
File29=logo-guna-18.png File29=gps20.png
File3=carrito.png File3=alerta_amarilla.png
File30=MainPage.bal File30=guardagestion.bal
File31=Malo.jpg File31=guna.png
File32=mapa_rutas.bal File32=guna_viejo.png
File33=mas-azul.png File33=guna18.png
File34=mas-azul-red.png File34=guna-fondo.png
File35=mas-azul-red1.png File35=Hacer pedido.jpg
File36=menos.png File36=hacerpedido30.png
File37=menosred.png File37=ic_cloud_download_white_24dp.png
File38=menos-red.png File38=infonavit1.jpg
File39=nota.bal File39=itembuttonblue.png
File4=celltitle.bal File4=amarillo.png
File40=noventa.bal File40=keymon_logo.png
File41=nuevocliente.bal File41=kmt.db
File42=nuevo-cliente20.png File42=login.bal
File43=Nvo Cliente.jpg File43=Logo Guna_192x192.png
File44=palomita_verde.png File44=Logo Guna-01.png
File45=pedido.bal File45=logo sanfer.jpg
File46=planfia_logo.png File46=logo_exitus1.jpg
File47=principal.bal File47=logo-guna-18.png
File48=proditem.bal File48=MainPage.bal
File49=productos.bal File49=Malo.jpg
File5=cliente.bal File5=anterior.jpg
File50=promociones.bal File50=mapa.bal
File51=qr_gallina.jpg File51=mapa_rutas.bal
File52=resdia.bal File52=maparutas.bal
File53=ResDia.jpg File53=mas-azul.png
File54=resdia20.png File54=mas-azul-red.png
File55=salma.jpg File55=mas-azul-red1.png
File56=salma.png File56=menos.png
File57=senial.jpg File57=menosred.png
File58=sync.png File58=menos-red.png
File59=Ticket dia.jpg File59=nota (conflict 2022-07-08-00-16-40).bal
File6=clientes.bal File6=bus-ar.png
File60=ticketdia20.png File60=nota.bal
File61=ticketsdia.bal File61=noventa.bal
File62=Tiendita.jpg File62=nuevocliente.bal
File7=durakelo.png File63=nuevo-cliente20.png
File8=ENCUESSTA_M3.bal File64=Nvo Cliente.jpg
File9=ENCUESTA.bal File65=p&g.png
File66=palomita_verde.png
File67=pedido.bal
File68=planfia_logo.png
File69=planfia_logo_old.png
File7=carrito.png
File70=planfia_logo_old2.png
File71=principal.bal
File72=proditem.bal
File73=productos.bal
File74=promociones.bal
File75=qr.bal
File76=qr_gallina.jpg
File77=resdia.bal
File78=ResDia.jpg
File79=resdia20.png
File8=celltitle.bal
File80=rojo.png
File81=salma.jpg
File82=salma.png
File83=seleccion.bal
File84=senial.jpg
File85=sync.png
File86=tache_rojo.png
File87=telefonos.bal
File88=Ticket dia.jpg
File89=ticketdia20.png
File9=cliente.bal
File90=ticketsdia.bal
File91=Tiendita.jpg
File92=verde.png
FileGroup1=Default Group FileGroup1=Default Group
FileGroup10=Default Group FileGroup10=Default Group
FileGroup11=Default Group FileGroup11=Default Group
@@ -120,9 +150,39 @@ FileGroup6=Default Group
FileGroup60=Default Group FileGroup60=Default Group
FileGroup61=Default Group FileGroup61=Default Group
FileGroup62=Default Group FileGroup62=Default Group
FileGroup63=Default Group
FileGroup64=Default Group
FileGroup65=Default Group
FileGroup66=Default Group
FileGroup67=Default Group
FileGroup68=Default Group
FileGroup69=Default Group
FileGroup7=Default Group FileGroup7=Default Group
FileGroup70=Default Group
FileGroup71=Default Group
FileGroup72=Default Group
FileGroup73=Default Group
FileGroup74=Default Group
FileGroup75=Default Group
FileGroup76=Default Group
FileGroup77=Default Group
FileGroup78=Default Group
FileGroup79=Default Group
FileGroup8=Default Group FileGroup8=Default Group
FileGroup80=Default Group
FileGroup81=Default Group
FileGroup82=Default Group
FileGroup83=Default Group
FileGroup84=Default Group
FileGroup85=Default Group
FileGroup86=Default Group
FileGroup87=Default Group
FileGroup88=Default Group
FileGroup89=Default Group
FileGroup9=Default Group FileGroup9=Default Group
FileGroup90=Default Group
FileGroup91=Default Group
FileGroup92=Default Group
Group=Default Group Group=Default Group
Library1=appupdating Library1=appupdating
Library10=firebaseadmob Library10=firebaseadmob
@@ -183,7 +243,7 @@ Module6=C_Cuestionario
Module7=C_Historico Module7=C_Historico
Module8=C_Mapas Module8=C_Mapas
Module9=C_Nota Module9=C_Nota
NumberOfFiles=62 NumberOfFiles=92
NumberOfLibraries=33 NumberOfLibraries=33
NumberOfModules=25 NumberOfModules=25
Version=12.8 Version=12.8
@@ -191,7 +251,7 @@ Version=12.8
#Region Project Attributes #Region Project Attributes
#ApplicationLabel: Guna V3.1 #ApplicationLabel: Guna V3.1
#VersionCode: 1 #VersionCode: 1
#VersionName: 4.08.30.EP_d #VersionName: 4.09.06.EP_d
'SupportedOrientations possible values: unspecified, landscape or portrait. 'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait #SupportedOrientations: portrait
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False

View File

@@ -76,6 +76,6 @@ ModuleClosedNodes6=8,9,10
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=B4XMainPage,JobDone,543,0,C_Principal,cargar_Click,1057,0,C_Principal,b_mapa_Click,1943,0,C_Principal,t2_tick,1982,0,C_Principal,e_ruta_EnterPressed,1987,1,Subs,bitacora,1263,0,Diseñador Visual,principal.bal,-100,2,Subs,vendidoPromoEsp,1251,0,C_Principal,Class_Globals,0,0,C_Principal,Subir_Click,571,4 NavigationStack=Subs,agregaColumna,1173,0,Subs,guardaAppInfo,1186,0,B4XMainPage,Class_Globals,52,0,B4XMainPage,B4XPage_Appear,274,0,B4XMainPage,B4XPage_Created,144,2,Starter,Process_Globals,33,0,Starter,Service_Create,54,0,Main,Globals,25,0,Main,Process_Globals,21,0,Subs,revisaPromoProcterPRO3009,1425,0,Subs,validaPromoProcterPRO3009,1460,0
SelectedBuild=0 SelectedBuild=0
VisibleModules=23,2,24,13,14,4,6,9,12,5 VisibleModules=23,2,24,13,14,4,6,9,12,5

View File

@@ -14,6 +14,7 @@ Sub Process_Globals
'These variables can be accessed from all modules. 'These variables can be accessed from all modules.
Public gps As GPS Public gps As GPS
Dim ph As Phone Dim ph As Phone
Dim skmt As SQL
Public rp As RuntimePermissions Public rp As RuntimePermissions
Public FLP As FusedLocationProvider Public FLP As FusedLocationProvider
' Private flpStarted As Boolean ' Private flpStarted As Boolean
@@ -52,6 +53,10 @@ Sub Service_Create
logs.Initialize logs.Initialize
CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para Push FirebaseMessaging CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para Push FirebaseMessaging
ubicacionActual.Initialize ubicacionActual.Initialize
If File.Exists(File.DirInternal, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db")
End If
skmt.Initialize(File.DirInternal,"kmt.db", True)
End Sub End Sub
Private Sub BTAdmin_StateChanged (NewState As Int, OldState As Int) Private Sub BTAdmin_StateChanged (NewState As Int, OldState As Int)

View File

@@ -767,7 +767,7 @@ End Sub
' resultado="OK" 'Ok si existe la promocion. ' resultado="OK" 'Ok si existe la promocion.
' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción. ' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción.
Sub traePromo(promo As String, cliente As String) As Map Sub traePromo(promo As String, cliente As String) As Map
Log($"TRAE PROMO = ${promo}"$) LogColor($"TRAE PROMO = ${promo}"$, Colors.Red)
Private inicioContador As String = DateTime.Now Private inicioContador As String = DateTime.Now
Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar. Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar.
Private siHistorico As String = 0 Private siHistorico As String = 0
@@ -925,7 +925,6 @@ Sub traeMaxPromos(pm As Map) As Int
maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente
If thisLog Then Log(maxPromos) If thisLog Then Log(maxPromos)
maxPromos.Sort(True) maxPromos.Sort(True)
' Log($"|${pm.Get("id").As(String).trim}|${traeCliente.Trim}|"$) ' Log($"|${pm.Get("id").As(String).trim}|${traeCliente.Trim}|"$)
Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("select sum(PE_CANT) as vendidas from PEDIDO where PE_PROID = ? and PE_CLIENTE = ? ", Array As String(pm.Get("id").As(String).trim, traeCliente.Trim)) Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("select sum(PE_CANT) as vendidas from PEDIDO where PE_PROID = ? and PE_CLIENTE = ? ", Array As String(pm.Get("id").As(String).trim, traeCliente.Trim))
If c.RowCount > 0 Then If c.RowCount > 0 Then
@@ -933,7 +932,6 @@ Sub traeMaxPromos(pm As Map) As Int
vendidas = c.GetInt("vendidas") vendidas = c.GetInt("vendidas")
' Log(vendidas) ' Log(vendidas)
End If End If
' If Starter.promosLog Then Log(maxPromos) ' If Starter.promosLog Then Log(maxPromos)
' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0)) ' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0))
' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red) ' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red)
@@ -1387,3 +1385,120 @@ Sub iniciaActividad(ia As String)
' If B4XPages.MainPage.logger Then LogColor("Iniciamos --> " & ia, Colors.Blue) ' If B4XPages.MainPage.logger Then LogColor("Iniciamos --> " & ia, Colors.Blue)
End If End If
End Sub End Sub
'Revisa si en el pedido hay $150 o mas de los 2 productos especificados, y si si, entonces agrega el producto de regalo a la tabla pedido.
Sub revisaPromoProcterPRO3009(prodsMap1 As Map)
Log("entramos a promo Procter")
Dim almacenes As List
almacenes.Initialize2(Array As String("3", "17", "37", "31", "68", "71", "33", "80"))
Log("Posicion de almacen: " & almacenes.IndexOf(traeAlmacen))
' ("3", "17", "37", "31", "68", "71", "33", "80")
If almacenes.IndexOf(traeAlmacen) >= 0 Then ' Si el almacen actual esta dentro de la lista de almacenes autorizados para la promocion, entonces continuamos ...
Private idRegalo As String = "PYG1016"
Private newProdsMap As Map = prodsMap1
Private monto As String = 0
Private invRegalo As Int = 0
Private totalRegalos As Int = 0
Private r As ResultSet = Starter.skmt.ExecQuery($"select ifnull(cat_gp_almacen, 0) as CAT_GP_ALMACEN from cat_gunaprod where cat_gp_id = '${idRegalo}'"$) ' Traemos el inventario del regalo.
Do While r.NextRow
Log(r.GetString("CAT_GP_ALMACEN"))
If r.GetString("CAT_GP_ALMACEN") > 0 Then invRegalo = r.GetString("CAT_GP_ALMACEN")
Loop
Log("INV REGALO: " & invRegalo)
r = Starter.skmt.ExecQuery($"select pe_proid from pedido where pe_proid = '${idRegalo}' and pe_cedis = 'PRO3009' and pe_cant = 1 and pe_cliente = '${traeCliente}' "$) 'Revisamos si el regalo ya existe en el pedido.
If r.RowCount > 0 Then totalRegalos = r.RowCount
Log($"TOTAL REGALOS: ${totalRegalos}"$)
If prodsMap1.ContainsKey("PYG1014") Then ' Calculamos el monto del producto 1
Private m1 As Map = prodsMap1.Get("PYG1014")
monto = monto + m1.Get("cant") * m1.Get("precio")
End If
If prodsMap1.ContainsKey("PYG1025") Then ' Calculamos el monto del producto 2
Private m2 As Map = prodsMap1.Get("PYG1025")
monto = monto + m2.Get("cant") * m2.Get("precio")
End If
Private r2 As ResultSet = Starter.skmt.ExecQuery($"select ifnull(sum(pe_costo_tot),0) as monto from pedido where pe_cliente = '${traeCliente}' and PE_PROID in ("PYG1014", "PYG1025")"$)
Do While r2.NextRow
monto = monto + r2.GetString("monto")
Loop
Log($"Monto: ${monto}"$)
' Log("PM: " & prodsMap)
Log("prodsMap.Size: " & prodsMap1.Size)
If prodsMap1.Size > 0 Then
If monto > 149 Then
Log("Mas de 149")
If invRegalo > 0 Then
Log("Hay inventario para regalo")
If totalRegalos = 0 Then
guardaProducto("PRO3009", 1, 1, traeProdNombre(idRegalo), idRegalo, traeCliente, traeFecha, traeUsuarioDeBD, traeRuta, 0, B4XPages.MainPage.tipo_venta)
' ToastMessageShow("Agregamos regalo", False)
Private cs As CSBuilder
cs.Initialize
Msgbox(cs.Color(Colors.red).append("PRO3009:").Pop.append(" En la compra de $150 de la linea Oral B Procter & Gamble se agrega 1 Salvo Multiusuos 500 ml.").Color(Colors.red).Append(" con precio de $1.00").popall, "Producto de regalo agregado") 'ignore
End If
Else
LogColor("NO hay inventario para regalo PRO3009 Procter & Gamble.", Colors.red)
End If
Else
Log("Menos de 149")
If totalRegalos > 0 Then
Log("Quitamos regalo")
Starter.skmt.ExecNonQuery($"delete from pedido where pe_cedis = 'PRO3009' and pe_proid = '${idRegalo}' and pe_cliente = '${traeCliente}' and pe_cant = 1 "$)
Log($"Borramos pe_cedis='PRO3009' and pe_proid='${idRegalo}' and pe_cliente='${traeCliente}'"$)
Private pe As Cursor = Starter.skmt.ExecQuery("select count(pe_cliente) as cuantosPedidos from pedido where pe_cliente In (select cuenta from cuentaa)")
pe.Position=0
If pe.GetString("cuantosPedidos") = 0 Then
Log("###### delete from pedido_cliente - " & traeCliente & "|" & traeCliente)
Log($"delete from pedido_cliente where PC_CLIENTE = '${traeCliente}'"$)
Starter.skmt.ExecNonQuery($"delete from pedido_cliente where PC_CLIENTE = '${traeCliente}'"$)
End If
ToastMessageShow("Quitamos regalo PRO3009", False)
End If
End If
End If
Else
LogColor("El almacen actual NO esta en la lista para la promo de Procter & Gamble.", Colors.Magenta)
End If
' Return newProdsMap
End Sub
'Valida que si hay un regalo de la promo, tambien existan productos en el pedido para respaldarla.
Sub validaPromoProcterPRO3009
Private idRegalo As String = "PYG1016"
Private r As ResultSet = Starter.skmt.ExecQuery($"select pe_cliente from pedido where pe_proid = '${idRegalo}' and pe_cedis = 'PRO3009'"$)
' Private cont As Int = 0
Do While r.NextRow
Private monto As String = 0
Private r2 As ResultSet = Starter.skmt.ExecQuery($"select ifnull(sum(pe_costo_tot),0) as monto from pedido where pe_cliente = '${r.GetString("PE_CLIENTE")}' and PE_PROID in ("PYG1014", "PYG1025")"$)
Do While r2.NextRow
Log($"Cliente: ${r.GetString("PE_CLIENTE")}, monto: ${r2.GetString("monto")}"$)
' cont = cont + 1
' Log("CONT = " & cont & " , MONTO: " & r2.GetString("monto"))
If r2.GetString("monto") < 150 Then
Starter.skmt.ExecNonQuery($"delete from pedido where pe_cedis = 'PRO3009' and pe_proid = '${idRegalo}' and pe_cliente = '${r.GetString("PE_CLIENTE")}' and pe_cant = 1 "$)
' If cont = 1 Then
Msgbox($"Regalo de la promoción PRO3009 borrado por no cumplir con los requisitos mínimos."$, "Regalo Borrado") 'ignore
' End If
End If
Loop
r2 = Starter.skmt.ExecQuery($"select count(pe_proid) as cuantos from pedido where pe_cliente = '${r.GetString("PE_CLIENTE")}'"$) 'Revisamos si es que hay mas pedido del cliente, y si no, borramos el header.
Do While r2.NextRow
' Log(">>>> CUANTOS: " & r2.GetString("cuantos"))
If r2.GetString("cuantos") = 0 Then
Starter.skmt.ExecNonQuery($"delete from pedido_cliente where pc_cliente = '${r.GetString("PE_CLIENTE")}'"$)
Starter.skmt.ExecNonQuery($"update kmt_info2 set gestion = 0 where cat_cl_codigo = '${r.GetString("PE_CLIENTE")}'"$)
End If
Loop
Loop
End Sub
'Regresa TRUE si el cliente especificado existe en el historico de compra de la promo.
Sub revisaPRO2265(idCliente As String) As Boolean
Private r As ResultSet = Starter.skmt.ExecQuery($"select * from HIST_PRO2265 where H_IDCLIENTE = '${idCliente}'"$)
Private x As Boolean = False
Do While r.NextRow
x = True
Loop
Log($">>>> revisaPRO2265 ${idCliente} = ${x}"$)
Return x
End Sub