B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=12.2 @EndOfDesignText@ Sub Class_Globals Private Root As B4XView 'ignore Private xui As XUI 'ignore Dim g As GPS Dim c As Cursor Dim COMENTARIO As String Dim CANCELA As Button Dim GUARDA As Button Dim r_1 As RadioButton Dim r_2 As RadioButton Dim r_3 As RadioButton Dim e_comm As EditText Dim motivo As String Dim cuenta As String Dim usuario As String Dim sDate,sTime As String Dim r_4 As RadioButton Private p_principal As Panel Dim d As Cursor Dim reqManager As DBRequestManager Private cb_reprogramar As CheckBox Dim reprogramar As Int = 0 Private camEx As CameraExClass Dim frontCamera As Boolean = False Private p_cam As Panel Dim nombrefoto As String = "0" Private p_camara As Panel Private teclado As IME Dim fototomada As String Private b_foto As Button End Sub 'You can add more parameters here. Public Sub Initialize As Object Return Me End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 'load the layout to Root Root.LoadLayout("no_venta") reqManager.Initialize(Me, B4XPages.MainPage.SERVER) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub B4XPage_Appear reqManager.Initialize(Me, B4XPages.MainPage.SERVER) e_comm.Text="" r_1.Checked = False r_2.Checked = False r_3.Checked = False r_4.Checked = False cb_reprogramar.Checked = False p_camara.Width = Root.Width p_camara.Height = Root.Height p_camara.Visible = False CallSubDelayed(Tracker, "Track") CallSubDelayed(Tracker, "StartFLPSmall") If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. Starter.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude Starter.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude ' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) End If End Sub Sub GPS_LocationChanged (Location1 As Location) ' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then Starter.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude Starter.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude Log("Coords set to: " & Starter.lat_gps & " and " & Starter.lon_gps) End If If B4XPages.MainPage.cliente.LATITUD.Length < 5 Then Else Dim l1, l2 As Location l1.Initialize2(Starter.lat_gps, Starter.lon_gps) Log($"Coordenadas de la tienda - lat:${B4XPages.MainPage.cliente.LATITUD}, lon:${B4XPages.MainPage.cliente.LONGITUD}"$) l2.Initialize2(B4XPages.MainPage.cliente.LATITUD, B4XPages.MainPage.cliente.LONGITUD) 'now we need the distance between our location and the target location B4XPages.MainPage.cliente.distance = l1.DistanceTo(l2) 'the result is in meter Log("DISTANCIA "&B4XPages.MainPage.cliente.distance) End If Dim sDate,sTime As String DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS") Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, Starter.lat_gps, Starter.lon_gps)) CallSubDelayed(Tracker, "CreateLocationRequest") End Sub Sub CANCELA_Click B4XPages.ShowPage("Cliente") End Sub Sub GUARDA_Click If r_1.Checked = False And r_2.Checked = False And r_3.Checked = False And r_4.Checked = False Then MsgboxAsync("Selecciona un motivo de rechazo","Atención") Else If r_1.Checked Then motivo = "CERRADO" Else If r_2.Checked Then motivo = "NO PIDIO" Else If r_3.Checked Then motivo = "CANCELA" Else motivo = "NO ESTA EL ENCARGADO" End If If motivo <> "CERRADO" Or motivo = "CERRADO" Then DateTime.DateFormat = "MM/dd/yyyy" DateTime.TimeFormat="HHmmss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c=Starter.skmt.ExecQuery("select CUENTA from cuentaa") c.Position = 0 cuenta = c.GetString("CUENTA") c=Starter.skmt.ExecQuery("select usuario from usuarioa") c.Position = 0 usuario = c.GetString("USUARIO") c.Close Dim rutaactualizar As String Dim rut As Cursor = Starter.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") If rut.RowCount > 0 Then rut.Position = 0 rutaactualizar = rut.GetString("CAT_CL_RUTA") End If Starter.skmt.ExecNonQuery($"DELETE FROM NOVENTA WHERE NV_CLIENTE IN (select cuenta from cuentaa)"$) 'Traemos los productos del pedido. c=Starter.skmt.ExecQuery("select HVD_NUM_REGISTRO, HVD_CLIENTE, HVD_PRONOMBRE, HVD_CANT, HVD_COSTO_TOT, HVD_FECHA, HVD_PROID, CAT_GP_PRECIO from HIST_VENTAS2 join CAT_GUNAPROD on CAT_GP_ID = HVD_PROID WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PRONOMBRE asc") If c.RowCount > 0 Then 'Si hay pedido en HIST_VENTAS ... 'Revisamos si se le ha agregado venta al pedido. Private esteCliente As String = Subs.traeCliente Private rv As Cursor = Starter.skmt.ExecQuery($"select * from REPARTO where REP_CLIENTE = '${esteCliente}' and REP_CLI_ORIG <> '${esteCliente}' and REP_RECHAZO = 0"$) If rv.RowCount > 0 Then 'Si tenemos venta en el pedido ... For i2=0 To rv.RowCount - 1 rv.Position = i2 Log($"Actualizamos REPARTO - cliente=${rv.GetString("REP_CLIENTE")}, cliente orignal=${rv.GetString("REP_CLI_ORIG")}, le agregamos ${rv.GetString("REP_CANT")}"$) Starter.skmt.ExecNonQuery($"update REPARTO set REP_CANT = REP_CANT + ${rv.GetString("REP_CANT")} where REP_RECHAZO = '1' and REP_CLIENTE = '${rv.GetString("REP_CLI_ORIG")}' and REP_CLI_ORIG = '${rv.GetString("REP_CLI_ORIG")}'"$) Next End If Starter.skmt.ExecNonQuery("delete from reparto where REP_CLIENTE IN (Select CUENTA from cuentaa)") For i=0 To c.RowCount - 1 'Insertamos los productos en REPARTO. c.Position=i Log($"REGISTRO= ${c.GetString("HVD_NUM_REGISTRO")}"$) Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA, REP_RECHAZO, REP_PRODID, REP_PRECIO, REP_PRODREGISTRO, REP_CLI_ORIG) VALUES (?,?,?,?,?,1,?,?,?,?) ", Array As String(c.GetString("HVD_CLIENTE"),c.GetString("HVD_PRONOMBRE"),c.GetString("HVD_CANT"),c.GetString("HVD_COSTO_TOT"),c.GetString("HVD_FECHA"), c.GetString("HVD_PROID"), c.GetString("CAT_GP_PRECIO"), c.GetString("HVD_NUM_REGISTRO"), c.GetString("HVD_CLIENTE"))) Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA, REP_RECHAZO, REP_PRODID, REP_PRECIO, REP_PRODREGISTRO, REP_CLI_ORIG) VALUES (?,?,?,?,?,0,?,?,?,?) ", Array As String(c.GetString("HVD_CLIENTE"),c.GetString("HVD_PRONOMBRE"),0,c.GetString("HVD_COSTO_TOT"),c.GetString("HVD_FECHA"), c.GetString("HVD_PROID"), c.GetString("CAT_GP_PRECIO"), c.GetString("HVD_NUM_REGISTRO"), c.GetString("HVD_CLIENTE"))) Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(c.GetString("HVD_CANT"),c.GetString("HVD_PRONOMBRE"))) Next End If Starter.skmt.ExecNonQuery($"DELETE FROM NOVENTA WHERE NV_CLIENTE IN (select cuenta from cuentaa)"$) Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON,NV_FOTO,NV_REPROGRAMAR,NV_MONTO,NV_NOART) VALUES(?,?,?,?,?,?,?,?,?,0,0) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text, Starter.lat_gps, Starter.lon_gps,rutaactualizar,reprogramar)) Starter.skmt.ExecNonQuery($"UPDATE kmt_info set gestion = 3, HORAENT = '${sDate & " " & sTime}' where CAT_CL_CODIGO In (select cuenta from cuentaa) and CAT_CL_RUTA = '${rutaactualizar}'"$) Starter.skmt.ExecNonQuery("update HIST_VENTAS SET HVD_RECHAZO = 1, HVD_RECHAZOCANT = HVD_CANT, HVD_RECHAZOCANTC = CANTC, BCAJAS = 0 , CANTC = 0 WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 2, HVD_RECHAZOCANT = HVD_RECHAZOCANT WHERE HVD_PROID = HVD_CODPROMO and HVD_CLIENTE in (Select CUENTA from cuentaa)"$) Starter.skmt.ExecNonQuery("DELETE FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") d = Starter.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") d.Position = 0 Dim ruta As String = d.GetString("RUTAA") d.Close d = Starter.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") d.Position = 0 Dim rutapre As String = d.GetString("CAT_CL_RUTA") d.Close d = Starter.skmt.ExecQuery("SELECT HVD_FECHA FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") d.Position = 0 Dim fechaprev As String = d.GetString("HVD_FECHA") d.Close d = Starter.skmt.ExecQuery("SELECT CUENTA FROM CUENTAA") d.Position = 0 Starter.skmt.ExecNonQuery2("INSERT INTO REPARTO_GEO (CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO,ENVIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,0)",Array As String (cuenta, usuario, sDate &" "&sTime, Starter.lat_gps, Starter.lon_gps,B4XPages.MainPage.almacen,ruta,rutapre,fechaprev, motivo, e_comm.Text,"NO ENTREGADO")) ' Dim mandamapa As Cursor = Starter.skmt.ExecQuery("SELECT * FROM kmt_info WHERE gestion = 0") ' If mandamapa.RowCount > 0 Then ' StartActivity(MAPA_RUTAS) ' Else If mandamapa.RowCount = 0 Then Dim g5 As Cursor = Starter.skmt.ExecQuery("SELECT SUM(HVD_COSTO_TOT) AS HVD_COSTO_TOT, SUM(HVD_CANT) AS HVD_CANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") g5.Position = 0 Dim cmd As DBCommand cmd.Initialize cmd.Name = "UPDATE_ACTUAL_GEO_PROFINA_VN" ' cmd.Parameters = Array As String(l_total.Text,"0", "",Starter.lat_gps, Starter.lon_gps,"","",usuario,ruta,"ENTREGA", entregatotaloparial,"EFECTIVO", distance, L_CANT.text,la_cuenta.Text,fechaprev,almacen,Subs.traerUTAPREV) Log(g5.GetString("HVD_COSTO_TOT")) Log(g5.GetString("HVD_CANT")) cmd.Parameters = Array As String(g5.GetString("HVD_COSTO_TOT"),"0", "",Starter.lat_gps, Starter.lon_gps,1,motivo,usuario,ruta,"RECHAZO", "RECHAZO TOTAL","", B4XPages.MainPage.cliente.distance, g5.GetString("HVD_CANT"),cuenta,fechaprev,B4XPages.MainPage.almacen,Subs.traerUTAPREV) Starter.skmt.ExecNonQuery2("INSERT INTO HIST_REPARTO_GEO(HIST_RG_MONTO , HIST_RG_CREDITO , HIST_RG_MONTO_CREDITO , HIST_RG_LAT , HIST_RG_LONG , HIST_RG_RECHAZO , HIST_RG_MOTIVO , HIST_RG_USUARIO_ENTREGO , HIST_RG_RUTA_REP , HIST_RG_ESTATUS_ENTREGA , HIST_RG_COMENTARIO_ENTREGA , HIST_RG_FORMA_PAGO , HIST_RG_GEOCERCA_MTS , HIST_RG_NO_ART , HIST_RG_CLIENTE , HIST_RG_FECHA , HIST_RG_ALMACEN , HIST_RG_RUTA_PRE) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object(g5.GetString("HVD_COSTO_TOT"),"0", "",Starter.lat_gps, Starter.lon_gps,1,motivo,usuario,ruta,"RECHAZO", "RECHAZO TOTAL","", B4XPages.MainPage.cliente.distance, g5.GetString("HVD_CANT"),cuenta,fechaprev,B4XPages.MainPage.almacen,Subs.traerUTAPREV)) reqManager.ExecuteCommand(cmd, "up_geo") g5.Close B4XPages.ShowPage("Principal") ' End If Else COMENTARIO = e_comm.Text ' B4XPages.ShowPage("Foto") ' StartActivity(foto) End If End If End Sub Sub mandaPendientesreparto ' c=Starter.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO where ENVIO <> 1") ' Log($"REPARTO_Cliente PENDIENTE: ${c.RowCount}"$) ' If c.RowCount>0 Then ' For i=0 To c.RowCount -1 ' c.Position=i ' ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name = "insert_REPARTO_MARDS" ' cmd.Parameters = Array As Object(c.GetString("CLIENTE"), c.GetString("USUARIO"), c.GetString("FECHA_PUNTEO"), c.GetString("LATITUD"), c.GetString("LONGITUD"), c.GetString("ALMACEN"), c.GetString("RUTA_REPARTO"), c.GetString("RUTA_PREV"), c.GetString("FECHA_PREVENTA"), c.GetString("MOTIVO"), c.GetString("COMENTARIO"),c.GetString("TIPO")) ' reqManager.ExecuteCommand(cmd , $"ins_REPARTOPendientes_head_${c.GetString("CLIENTE")}"$) ' ' Next ' End If ' c.Close End Sub Sub JobDone(Job As HttpJob) Log(Job.Success) If Job.Success = False Then ' ToastMessageShow("Error: " & Job.ErrorMessage, True) Else LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 If Job.JobName = "DBRequest" Then Dim resultado As DBResult = reqManager.HandleJob(Job) If resultado.Tag.As(String).IndexOf("ins_REPARTOPendientes_head_") > -1 Then Private cliente As String= resultado.Tag cliente = cliente.SubString(cliente.IndexOf("_")+24) Log($"Cliente1:${cliente}"$) Starter.skmt.ExecNonQuery2("update REPARTO_GEO SET ENVIO = ? WHERE CLIENTE = ? AND ENVIO <> ?",Array As String ("1", cliente,"1")) For Each records() As Object In resultado.Rows For Each k As String In resultado.Columns.Keys Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Next Next End If End If Job.Release End If End Sub Private Sub cb_reprogramar_CheckedChange(Checked As Boolean) If Checked Then reprogramar = 1 Else reprogramar = 0 End If End Sub Private Sub InitializeCamera2 Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean) If resultC Then camEx.Initialize(p_cam, frontCamera, Me, "Camera1") frontCamera = camEx.Front Log("inicializamos Camara") Else ToastMessageShow("No permission Camara!!!", True) End If End Sub Sub Camera1_Ready (Success As Boolean) Log("Camara ready") If Success Then camEx.SetJpegQuality(90) camEx.SetContinuousAutoFocus camEx.CommitParameters camEx.StartPreview Log(camEx.GetPreviewSize) Else ToastMessageShow("Cannot open camera.", True) Log("Cannot open camera") End If End Sub Sub Camera1_PictureTaken (Data()As Byte) DateTime.DateFormat="ddMMyyyyHHmmss" nombrefoto = DateTime.Now & "_FOTO1.png" teclado.HideKeyboard fototomada = nombrefoto Log("tome foto") Dim filename As String = fototomada Dim Dirp As String = File.DirInternal Dim Dir As String Dim Dir2 As String Try File.MakeDir(Dirp,"/md") Dir = "/md" Log("creado en promotoria " & Dirp & Dir) Catch Dir = "" Log("creado en raiz") End Try Try File.MakeDir(Dirp & Dir,"/reduccion") Dir2 = "/reduccion" Log("creado en promotoria " & Dirp & Dir & Dir2) Catch Dir = "" Log("creado en raiz") End Try camEx.SavePictureToFile(Data, Dirp&Dir, filename) camEx.StartPreview 'restart preview ' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True) Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename) Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 225, 300, True) Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False) img.WriteToStream(out, 100, "PNG") ' foto4 = File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto3) out.Close motivo = "CERRADO" DateTime.DateFormat = "MM/dd/yyyy" DateTime.TimeFormat="HHmmss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c=Starter.skmt.ExecQuery("select CUENTA from cuentaa") c.Position = 0 cuenta = c.GetString("CUENTA") c=Starter.skmt.ExecQuery("select usuario from usuarioa") c.Position = 0 usuario = c.GetString("USUARIO") c.Close Dim rutaactualizar As String Dim rut As Cursor = Starter.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") If rut.RowCount > 0 Then rut.Position = 0 rutaactualizar = rut.GetString("CAT_CL_RUTA") End If Starter.skmt.ExecNonQuery($"DELETE FROM NOVENTA WHERE NV_CLIENTE IN (select cuenta from cuentaa)"$) Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON,NV_RUTA,NV_REPROGRAMAR,NV_FOTO,NV_MONTO,NV_NOART) VALUES(?,?,?,?,?,?,?,?,?,?,0,0) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text, Starter.lat_gps, Starter.lon_gps,rutaactualizar,reprogramar,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto))) Starter.skmt.ExecNonQuery($"UPDATE kmt_info set gestion = 3, HORAENT = '${sDate & " " & sTime}' where CAT_CL_CODIGO In (select cuenta from cuentaa) and CAT_CL_RUTA = '${rutaactualizar}'"$) Starter.skmt.ExecNonQuery("DELETE FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") Starter.skmt.ExecNonQuery("update HIST_VENTAS SET HVD_RECHAZO = 1, HVD_RECHAZOCANT = HVD_CANT, HVD_RECHAZOCANTC = CANTC, BCAJAS = 0 , CANTC = 0 WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 2, HVD_RECHAZOCANT = HVD_RECHAZOCANT WHERE HVD_PROID = HVD_CODPROMO and HVD_CLIENTE in (Select CUENTA from cuentaa)"$) p_camara.Visible = False StopCamera2 B4XPages.ShowPage("Principal") End Sub Private Sub p_camara_Click End Sub Private Sub b_foto_Click camEx.TakePicture p_camara.Visible = False End Sub Private Sub StopCamera2 ' Capturing = False If camEx.IsInitialized Then camEx.Release End If End Sub Private Sub r_1_CheckedChange(Checked As Boolean) InitializeCamera2 p_camara.Visible = True Subs.centraPanel(p_cam,p_camara.Width) p_camara.BringToFront End Sub Private Sub B4XPage_CloseRequest As ResumableSub If p_camara.Visible Then p_camara.Visible = False StopCamera2 r_1.Checked = False Else B4XPages.ShowPage("Cliente") End If Return False End Sub