diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 7132334..ff8b450 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -127,6 +127,11 @@ Sub Class_Globals Private B_Can_Monto As Button Private B_Aceptar_Monto As Button Private ET_Add_Monto As EditText + Private b_bypass As Button + Private p_bypass As Panel + Private et_bypass As EditText + Private b_cancelabypass As Button + Private b_acepbypass As Button End Sub Public Sub Initialize @@ -190,6 +195,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TABULADOR_BILLETES(MIL TEXT, QUINIENTOS TEXT, DOCIENTOS TEXT, CIEN TEXT, CINCUENTA TEXT, VEINTE TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTES_NUEVOS(CN_ID TEXT, CN_FECHA TEXT, CN_USER TEXT, CN_LAT TEXT, CN_LON TEXT, CN_NOMBRE TEXT, CN_DIRECCION TEXT, CN_FOTO TEXT, CN_ALMACEN TEXT, CN_RUTA TEXT,CN_GIRO TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTAA (RUTAA TEXT)") + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info32 (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, CAT_CL_BCREDITO TEXT, CAT_CL_BCOORDENADAS TEXT, CAT_CL_LIMITECREDITO TEXT)") + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info3 (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, CAT_CL_BCREDITO TEXT, CAT_CL_BCOORDENADAS TEXT, CAT_CL_LIMITECREDITO TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS POLIGONO (LAT TEXT, LONG TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS GEOCERCA (ACTIVA TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS COORDS_ALMACEN (LAT TEXT, LONG TEXT)") @@ -223,9 +230,9 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("PEDIDO", "PE_CANTC", "TEXT") Subs.agregaColumna("PEDIDO", "PE_BCAJAS", "TEXT") Subs.agregaColumna("NOVENTA", "NV_ENVIO_OK", "INT") - Subs.agregaColumna("kmt_info", "CAT_CL_BCREDITO", "TEXT") - Subs.agregaColumna("kmt_info", "CAT_CL_BCOORDENADAS", "TEXT") - Subs.agregaColumna("kmt_info", "CAT_CL_LIMITECREDITO", "TEXT") + Subs.agregaColumna("kmt_info3", "CAT_CL_BCREDITO", "TEXT") + Subs.agregaColumna("kmt_info3", "CAT_CL_BCOORDENADAS", "TEXT") + Subs.agregaColumna("kmt_info3", "CAT_CL_LIMITECREDITO", "TEXT") Subs.agregaColumna("CAT_GUNAPROD", "CAT_DP_CONVERSION1", "TEXT") Subs.agregaColumna("CAT_GUNAPROD", "CAT_DP_PRECIO4", "TEXT") Subs.agregaColumna("CAT_GUNAPROD3", "CAT_DP_CONVERSION1", "TEXT") @@ -237,6 +244,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("CLIENTES_NUEVOS", "CN_COLONIA", "TEXT") Subs.agregaColumna("CLIENTES_NUEVOS", "CN_TELEFONO", "TEXT") Subs.agregaColumna("CLIENTES_NUEVOS", "CN_CP", "TEXT") + Subs.agregaColumna("COORDS_ALMACEN", "BANDERA", "TEXT") c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ") ' ' skmt.ExecNonQuery2("INSERT INTO POLIGONO(LAT,LONG) VALUES(?,?) ", Array As Object(19.534596, -99.148633)) @@ -331,6 +339,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) P_CIEGO.Width = Root.Width p_validacion.Height = Root.Height p_validacion.Width = Root.Width + p_bypass.Height = Root.Height + p_bypass.Width = Root.Width p_add_monto.Height = Root.Height p_add_monto.Width = Root.Width End Sub @@ -559,7 +569,7 @@ Sub JobDone(Job As HttpJob) DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position = 0 a=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") a.Position = 0 @@ -785,6 +795,9 @@ Private Sub B4XPage_CloseRequest As ResumableSub Else If p_validacion.IsInitialized And p_validacion.Visible Then p_validacion.Visible = False Return False + Else If p_bypass.IsInitialized And p_bypass.Visible Then + p_bypass.Visible = False + Return False Else If P_CIEGO.IsInitialized And P_CIEGO.Visible Then MsgboxAsync("Debes de terminar el proceso para regresar a la pantalla principal","Atención") Return False @@ -914,7 +927,8 @@ Sub i_engrane_Click ' l_server.Text = Starter.DBReqServer et_server.Text = Starter.DBReqServer Subs.panelVisible(p_appUpdate,0,0) - If user.Text.trim = "KMTS1" Then b_importarBD.Visible = True Else b_importarBD.Visible = False +' If user.Text.trim = "KMTS1" Then b_importarBD.Visible = True Else b_importarBD.Visible = False + If user.Text.trim = "KMTS1" Then b_bypass.Visible = True Else b_bypass.Visible = False End Sub Sub b_regesar_Click @@ -1071,7 +1085,7 @@ Private Sub B_PC_ENV_Click Dim idText As String = idLabel.As(Label).Text Dim idParts() As String = Regex.Split(CRLF, idText) ' Log(idParts(1)) - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 a=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") @@ -1130,7 +1144,7 @@ Private Sub b_terpc_Click Dim idText As String = idLabel.As(Label).Text Dim idParts() As String = Regex.Split(CRLF, idText) ' Log(idParts(1)) - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 a=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") @@ -1175,7 +1189,7 @@ Private Sub b_terpc_Click End Sub Private Sub b_aceptar_Click - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 a=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") @@ -1200,7 +1214,7 @@ Private Sub B_Aceptar_Monto_Click sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 a=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") @@ -1298,7 +1312,7 @@ Private Sub b_recarga_Click End Sub Private Sub b_CargarMonto_Click - c = skmt.ExecQuery("SELECT * FROM kmt_info") + c = skmt.ExecQuery("SELECT * FROM kmt_info3") c.Position = 0 If c.RowCount < 0 Or c.RowCount = 0 Then MsgboxAsync("No hay ruta cargada, favor de cargar día","Atención") @@ -1319,3 +1333,42 @@ End Sub Private Sub p_add_monto_Click End Sub + + + + +Private Sub b_bypass_Click + c = skmt.ExecQuery("SELECT * FROM kmt_info3") + If c.RowCount > 0 Then + Subs.panelVisible(p_bypass,0,0) + p_bypass.Visible = True + Else + MsgboxAsync("No hay ruta cargada, favor de cargar día","Atención") + End If +End Sub + +Private Sub b_acepbypass_Click + DateTime.TimeFormat = "HH:mm:ss" + DateTime.DateFormat = "dd/MM/yyyy" + sDate = DateTime.Date(DateTime.Now) + sTime = DateTime.Time(DateTime.Now) + + Dim datebypass() As String = Regex.Split("/",sDate) + Dim timebypass() As String = Regex.Split(":",sTime) + + If et_bypass.Text = datebypass(0) & timebypass(0) & timebypass(1) Then + B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE GEOCERCA set ACTIVA = ? ", Array As Object(0)) + et_bypass.Text = "" + MsgboxAsync("Geocerca Deshabilitada","Atención") + p_bypass.Visible = False + End If +End Sub + +Private Sub b_cancelabypass_Click + p_bypass.Visible = False + et_bypass.Text = "" +End Sub + +Private Sub p_bypass_Click + +End Sub \ No newline at end of file diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 8323d2d..d62d165 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -74,7 +74,7 @@ Sub Class_Globals Dim Guardar As Button Dim NUEVO As Button ' Dim lat_gps, lon_gps As String - + Dim bandera_almacen As string Dim l_total As Label Dim c2 As Cursor Dim S2 As Cursor @@ -187,7 +187,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") End If skmt.Initialize(ruta,"kmt.db", True) - c = skmt.ExecQuery("select 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 from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c = skmt.ExecQuery("select 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 from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") s = skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") b = skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa)") b.Position = 0 @@ -227,6 +227,12 @@ Private Sub B4XPage_Created (Root1 As B4XView) Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean) + Log(la_cuenta.Text) + If la_cuenta.Text = "0" Then + m_lat = 0 + m_lon = 0 + End If + ' h = B4XPages.MainPage.skmt.ExecQuery("SELECT CUENTA from CUENTAA") ' h.Position = 0 ' Log(h.GetString("CUENTA")) @@ -247,6 +253,9 @@ End Sub Sub B4XPage_Appear ' banderaimp = 0 + + + Guardar.Enabled = True gest.Enabled = True b_cxc.Enabled = True @@ -268,7 +277,7 @@ Sub B4XPage_Appear Subs.centraPanel(p_abono, Root.Width) Subs.centraPanel(p_credito, Root.Width) skmt.Initialize(ruta,"kmt.db", True) - c=B4XPages.MainPage.skmt.ExecQuery("select 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 from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa) UNION ALL select 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 from kmt_info2 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select 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 from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa) UNION ALL select 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 from kmt_info32 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") s=B4XPages.MainPage.skmt.ExecQuery("Select SUM(PE_COSTO_TOT) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))") b = B4XPages.MainPage.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa)") b.Position = 0 @@ -278,6 +287,13 @@ Sub B4XPage_Appear Else b_cxc.Visible = True End If + gest.Enabled = True + b_venta_credito.Enabled = True + If Subs.Chechapedidocontado Then + b_venta_credito.Enabled = False + Else If Subs.Chechapedidocredito Then + gest.Enabled = False + End If s.Position=0 If c.RowCount > 0 Then @@ -317,13 +333,15 @@ Sub B4XPage_Appear End If End If - Dim cor_al As Cursor = Starter.skmt.ExecQuery("SELECT LAT, LONG FROM COORDS_ALMACEN") + Dim cor_al As Cursor = Starter.skmt.ExecQuery("SELECT LAT, LONG, BANDERA FROM COORDS_ALMACEN") If cor_al.RowCount > 0 Then cor_al.Position = 0 m_lat_al = cor_al.GetString("LAT") m_lon_al = cor_al.GetString("LONG") + bandera_almacen = cor_al.GetString("BANDERA") End If + c.Close s.Close S2=B4XPages.MainPage.skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") @@ -398,14 +416,7 @@ Sub B4XPage_Appear Tels.Visible = True gest.Visible = True End If - CallSubDelayed(Tracker, "Track") - CallSubDelayed(Tracker, "StartFLPSmall") - If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. - B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude - B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude -' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) - GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) - End If + ' h = B4XPages.MainPage.skmt.ExecQuery("SELECT CUENTA from CUENTAA") ' h.Position = 0 @@ -428,7 +439,7 @@ Sub B4XPage_Appear Else p_cbFactura.Visible = True l_factura.Visible = True - b_ventaabordo.Visible = False + b_ventaabordo.Visible = True End If @@ -452,9 +463,41 @@ Sub B4XPage_Appear pre_act = Subs.traeTotalClientepreventaparacredito - 'SELECT CAT_CL_BCREDITO, CAT_CL_CODIGO, Ifnull(SALDO_PENDIENTE,0) FROM KMT_INFO INNER JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) + 'SELECT CAT_CL_BCREDITO, CAT_CL_CODIGO, Ifnull(SALDO_PENDIENTE,0) FROM kmt_info3 INNER JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) - Private credi2 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO, CAT_CL_CODIGO, Ifnull(SALDO_PENDIENTE,0) As SALDO_PENDIENTE, Ifnull(CAT_CL_LIMITECREDITO,0) As CAT_CL_LIMITECREDITO FROM KMT_INFO LEFT JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_BCREDITO, CAT_CL_CODIGO, Ifnull(SALDO_PENDIENTE,0) As SALDO_PENDIENTE, Ifnull(CAT_CL_LIMITECREDITO,0) As CAT_CL_LIMITECREDITO FROM KMT_INFO2 LEFT JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + + If la_cuenta.Text = "0" Then + gest.Text = "Abordo" + B4XPages.MainPage.recarga = "0" + Else If la_cuenta.Text = "1" Then + gest.Text = "Recarga" + B4XPages.MainPage.recarga = "1" + Else + gest.Text = "Pre-Venta a Contado" +' gest.Text = "Preventa" + B4XPages.MainPage.recarga = "0" + End If + LogColor(B4XPages.MainPage.recarga,Colors.Blue) +' If banderaimp = 1 Then +' Guardar_Click +' End If + Log(la_cuenta.Text) + If la_cuenta.Text = "0" Then + m_lat = 0 + m_lon = 0 + End If + CallSubDelayed(Tracker, "Track") + CallSubDelayed(Tracker, "StartFLPSmall") + If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. + B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude + B4XPages.MainPage.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 checacredito + Private credi2 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO, CAT_CL_CODIGO, Ifnull(SALDO_PENDIENTE,0) As SALDO_PENDIENTE, Ifnull(CAT_CL_LIMITECREDITO,0) As CAT_CL_LIMITECREDITO FROM kmt_info3 LEFT JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_BCREDITO, CAT_CL_CODIGO, Ifnull(SALDO_PENDIENTE,0) As SALDO_PENDIENTE, Ifnull(CAT_CL_LIMITECREDITO,0) As CAT_CL_LIMITECREDITO FROM kmt_info32 LEFT JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") Log(credi2.RowCount) If credi2.RowCount > 0 Then credi2.Position = 0 @@ -464,7 +507,7 @@ Sub B4XPage_Appear Log(credi2.GetString("SALDO_PENDIENTE")) If credi2.GetString("SALDO_PENDIENTE") > 0 Then - Private credi3 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT a_abono, CAT_CL_CODIGO FROM KMT_INFO INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT a_abono, CAT_CL_CODIGO FROM KMT_INFO2 INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + Private credi3 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT a_abono, CAT_CL_CODIGO FROM kmt_info3 INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT a_abono, CAT_CL_CODIGO FROM kmt_info32 INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") If credi3.RowCount > 0 Then credi3.Position = 0 Dim total As String = 0 @@ -479,7 +522,7 @@ Sub B4XPage_Appear b_venta_credito.Visible = False Else If credi2.GetString ("SALDO_PENDIENTE") = credi3.GetString ("a_abono") Then Log("AQUI ESTOY SI VISIBLE BOTON") - b_venta_credito.Visible = False ''' AQUI ACTIVAR PARA CREDITOS + b_venta_credito.Visible = True End If Else MsgboxAsync("La venta sera en efectivo por que hay un pagare pendiente de pago","Atención") @@ -487,14 +530,14 @@ Sub B4XPage_Appear End If credi3.Close Else If credi2.GetString("SALDO_PENDIENTE") = 0 Then - b_venta_credito.Visible = False '' AQUI ACTIVAR + b_venta_credito.Visible = True End If Else Log(1) b_venta_credito.Visible = False If credi2.GetString("SALDO_PENDIENTE") > 0 Then - Private credi3 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT a_abono, CAT_CL_CODIGO FROM KMT_INFO INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT a_abono, CAT_CL_CODIGO FROM KMT_INFO2 INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + Private credi3 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT a_abono, CAT_CL_CODIGO FROM kmt_info3 INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT a_abono, CAT_CL_CODIGO FROM kmt_info32 INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") If credi3.RowCount > 0 Then credi3.Position = 0 @@ -519,21 +562,6 @@ Sub B4XPage_Appear End If End If credi2.Close - If la_cuenta.Text = "0" Then - gest.Text = "Abordo" - B4XPages.MainPage.recarga = "0" - Else If la_cuenta.Text = "1" Then - gest.Text = "Recarga" - B4XPages.MainPage.recarga = "1" - Else -' gest.Text = "Pre-Venta a Contado" - gest.Text = "Preventa" - B4XPages.MainPage.recarga = "0" - End If - LogColor(B4XPages.MainPage.recarga,Colors.Blue) -' If banderaimp = 1 Then -' Guardar_Click -' End If End Sub Sub GPS_LocationChanged (Location1 As Location) @@ -546,7 +574,13 @@ Sub GPS_LocationChanged (Location1 As Location) Dim l1, l2,l3 As Location l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) -' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) + If la_cuenta.Text = "0" Then + m_lat = Tracker.FLP.GetLastKnownLocation.Latitude + m_lon = Tracker.FLP.GetLastKnownLocation.Longitude + End If + + Log(la_cuenta.Text) + Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) l2.Initialize2(m_lat, m_lon) l3.Initialize2(m_lat_al,m_lon_al) BT_QR.Enabled = True @@ -564,20 +598,52 @@ Sub GPS_LocationChanged (Location1 As Location) If geo.GetInt("ACTIVA") = 0 Then Tels.Visible = True gest.Visible = True - Else If geo.GetInt("ACTIVA") = 1 Then - If distance2 < 100 Then + b_ventaabordo.Visible = True + checacredito + Log("aqui") +' b_venta_credito.Visible = True + Else If geo.GetInt("ACTIVA") = 1 Then + Log("aqui") + Log(distance2) + Log(distance) + Log(bandera_almacen) + If distance2 < 100 And bandera_almacen = "1" Then LA_GEO.TextColor = Colors.Blue Tels.Visible = True gest.Visible = True + b_ventaabordo.Visible = True + checacredito + Log("aqui") +' b_venta_credito.Visible = True Else If distance < 50 Then LA_GEO.TextColor = Colors.Blue Tels.Visible = True gest.Visible = True + b_ventaabordo.Visible = True + checacredito + Log("aqui") +' b_venta_credito.Visible = True Else + If la_cuenta.Text = "0" Then + LA_GEO.TextColor = Colors.Red + Tels.Visible = False + gest.Visible = True + b_ventaabordo.Visible = False + b_venta_credito.Visible = False + Else + LA_GEO.TextColor = Colors.Red + Tels.Visible = False + gest.Visible = False + b_ventaabordo.Visible = False + b_venta_credito.Visible = False + End If LA_GEO.TextColor = Colors.Red Tels.Visible = False gest.Visible = False + b_ventaabordo.Visible = False + b_venta_credito.Visible = False + Log("aqui") End If End If End If @@ -721,29 +787,29 @@ Sub Guardar_Click Dim costo As String = fg.GetString("COSTO") If costo > 0 And costo < 1000 Then - Msgbox2Async($"¿Desea continuar?${CRLF}Si acepta, el pedido a crédito se borrará (mínimo $1,000).${CRLF}Si cancela, podrá seguir agregando productos."$,"Venta Minima de Credito", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) - Wait For Msgbox_Result (resultado As Int) - If resultado = DialogResponse.POSITIVE Then - Subs.borraPedidoCredito +' Msgbox2Async($"¿Desea continuar?${CRLF}Si acepta, el pedido a crédito se borrará (mínimo $1,000).${CRLF}Si cancela, podrá seguir agregando productos."$,"Venta Minima de Credito", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png"),False) +' Wait For Msgbox_Result (resultado As Int) +' If resultado = DialogResponse.POSITIVE Then +' Subs.borraPedidoCredito GuardaVenta ' End If - End If +' End If Else If costo >= 1000 Then - Dim cPagares As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) As REGISTRADO FROM PAGARES WHERE PA_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") - cPagares.Position = 0 - If cPagares.GetString("REGISTRADO") = 0 Then - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA, PA_FECHA, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE) VALUES(?,?,?,?,?,?,?) ", Array As Object (ALMACEN, LA_RUTA, (sDate &" "& sTime),(sDate &" "& sTime), costo, usuario, la_cuenta.Text)) - Log("Aqui inserto: " & "Almacen: " & ALMACEN & "Ruta " & LA_RUTA & "Fecha: " & (sDate &" "& sTime) & "Captura: " & (sDate &" "& sTime) & "Monto: " & costo & "Usuario: " & usuario & "Cliente: " & la_cuenta.Text & "<<<<<<<<<<<<<<<<<<<<<") +' Dim cPagares As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) As REGISTRADO FROM PAGARES WHERE PA_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") +' cPagares.Position = 0 +' If cPagares.GetString("REGISTRADO") = 0 Then +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA, PA_FECHA, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE) VALUES(?,?,?,?,?,?,?) ", Array As Object (ALMACEN, LA_RUTA, (sDate &" "& sTime),(sDate &" "& sTime), costo, usuario, la_cuenta.Text)) +' Log("Aqui inserto: " & "Almacen: " & ALMACEN & "Ruta " & LA_RUTA & "Fecha: " & (sDate &" "& sTime) & "Captura: " & (sDate &" "& sTime) & "Monto: " & costo & "Usuario: " & usuario & "Cliente: " & la_cuenta.Text & "<<<<<<<<<<<<<<<<<<<<<") GuardaVenta - p_credito.Visible = False - Else - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PAGARES set PA_FECHA = ?, PA_CAPTURA = ?, PA_MONTO = ? where PA_CLIENTE In (select cuenta from cuentaa)", Array As Object ((sDate &" "& sTime),(sDate &" "& sTime), et_montoacredito.Text)) - Log("Aqui actualizo: " & "Almacen: " & ALMACEN & "Ruta " & LA_RUTA & "Fecha: " & (sDate &" "& sTime) & "Captura: " & (sDate &" "& sTime) & "Monto: " & costo & "Usuario: " & usuario & "Cliente: " & la_cuenta.Text & "<<<<<<<<<<<<<<<<<<<<<") +' p_credito.Visible = False +' Else +' B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PAGARES set PA_FECHA = ?, PA_CAPTURA = ?, PA_MONTO = ? where PA_CLIENTE In (select cuenta from cuentaa)", Array As Object ((sDate &" "& sTime),(sDate &" "& sTime), et_montoacredito.Text)) +' Log("Aqui actualizo: " & "Almacen: " & ALMACEN & "Ruta " & LA_RUTA & "Fecha: " & (sDate &" "& sTime) & "Captura: " & (sDate &" "& sTime) & "Monto: " & costo & "Usuario: " & usuario & "Cliente: " & la_cuenta.Text & "<<<<<<<<<<<<<<<<<<<<<") GuardaVenta - p_credito.Visible = False - End If - cPagares.Close - GuardaVenta +' p_credito.Visible = False +' End If +' cPagares.Close +' GuardaVenta End If fg.Close End If @@ -752,8 +818,8 @@ Sub Guardar_Click '----------------------- ' If la_cuenta.Text <> 0 Then -' Credi = B4XPages.MainPage.skmt.ExecQuery("Select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info Where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) and CAT_CL_CODIGO NOT IN (SELECT CLIENTE FROM ABONOSP) UNION Select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info2 Where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) and CAT_CL_CODIGO NOT IN (SELECT CLIENTE FROM ABONOSP)") -' 'INNER JOIN KMT_INFO2 ON CAT_CL_CODIGO = CL_CUENTA +' Credi = B4XPages.MainPage.skmt.ExecQuery("Select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info3 Where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) and CAT_CL_CODIGO NOT IN (SELECT CLIENTE FROM ABONOSP) UNION Select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info32 Where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) and CAT_CL_CODIGO NOT IN (SELECT CLIENTE FROM ABONOSP)") +' 'INNER JOIN kmt_info32 ON CAT_CL_CODIGO = CL_CUENTA ' If Credi.RowCount > 0 Then ' Credi.Position = 0 ' If Credi.GetString("CAT_CL_BCREDITO") = "1" Then @@ -764,7 +830,7 @@ Sub Guardar_Click ' If resultado = DialogResponse.POSITIVE Then ' p_credito.Visible = True ' Dim limitcred As Cursor -' limitcred = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_LIMITECREDITO FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_LIMITECREDITO FROM kmt_info2 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") +' limitcred = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_LIMITECREDITO FROM kmt_info3 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_LIMITECREDITO FROM kmt_info32 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") ' limitcred.Position = 0 ' l_limite.Text = "Limite de credito: $" & limitcred.GetString("CAT_CL_LIMITECREDITO") ' If Subs.traeTotalClientepreventaparacredito >= limitcred.GetString("CAT_CL_LIMITECREDITO") Then @@ -786,7 +852,7 @@ Sub Guardar_Click ' GuardaVenta ' End If ' Else -' Private credi2 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_BCREDITO, a_abono, SALDO_PENDIENTE FROM KMT_INFO INNER JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_BCREDITO, a_abono, SALDO_PENDIENTE FROM KMT_INFO2 INNER JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") +' Private credi2 As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_BCREDITO, a_abono, SALDO_PENDIENTE FROM kmt_info3 INNER JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_BCREDITO, a_abono, SALDO_PENDIENTE FROM kmt_info32 INNER JOIN ABONOSP ON CAT_CL_CODIGO = CLIENTE INNER JOIN ABONOS ON CAT_CL_CODIGO = a_cliente WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") ' If credi2.RowCount > 0 Then ' credi2.Position = 0 ' Dim total As String = 0 @@ -804,7 +870,7 @@ Sub Guardar_Click ' If resultado = DialogResponse.POSITIVE Then ' p_credito.Visible = True ' Dim limitcred As Cursor -' limitcred = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_LIMITECREDITO FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_LIMITECREDITO FROM kmt_info2 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") +' limitcred = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_LIMITECREDITO FROM kmt_info3 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_LIMITECREDITO FROM kmt_info32 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") ' limitcred.Position = 0 ' l_limite.Text = "Limite de credito: $" & limitcred.GetString("CAT_CL_LIMITECREDITO") ' If Subs.traeTotalClientepreventaparacredito >= limitcred.GetString("CAT_CL_LIMITECREDITO") Then @@ -849,7 +915,7 @@ Private Sub b_acred_Click DateTime.TimeFormat = "HH:mm:ss" sDate = DateTime.Date(DateTime.Now) sTime = DateTime.Time(DateTime.Now) - limitcred = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_LIMITECREDITO FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_LIMITECREDITO FROM kmt_info2 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + limitcred = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_LIMITECREDITO FROM kmt_info3 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION SELECT CAT_CL_LIMITECREDITO FROM kmt_info32 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") limitcred.Position = 0 l_limite.Text = "Limite de credito: $" & limitcred.GetString("CAT_CL_LIMITECREDITO") If Subs.traeTotalClientepreventaparacredito >= limitcred.GetString("CAT_CL_LIMITECREDITO") Then @@ -946,8 +1012,8 @@ Sub GUADAVENTA2 B4XPages.MainPage.skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO, PC_LON, PC_LAT, PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, 0, cbFactura)) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info2 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info32 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If c.Close DateTime.TimeFormat = "HHmmss" @@ -1013,7 +1079,7 @@ Sub GUADAVENTA2 B4XPages.MainPage.skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO, PC_LON, PC_LAT, PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, 0, cbFactura)) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If c.Close DateTime.TimeFormat = "HHmmss" @@ -1077,7 +1143,7 @@ Sub sc_result(atype As String,Values As String, image As Bitmap) 'Log("Type : " & atype) 'Log("Value : " & Values) CODIGO = Values - DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM kmt_info WHERE CAT_CL_NUM_SERIEFISICO = ?", Array As String(CODIGO)) + DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM kmt_info3 WHERE CAT_CL_NUM_SERIEFISICO = ?", Array As String(CODIGO)) DD.Position =0 If DD.GetString("CUANTOS") > 0 Then MsgboxAsync("Código ya asignado", "AVISO") @@ -1086,7 +1152,7 @@ Sub sc_result(atype As String,Values As String, image As Bitmap) Msgbox2Async("El código "& CODIGO & " es correcto?" , "Title", "Yes", "Cancel", "No", Null, False) Wait For Msgbox_Result (resultado As Int) If resultado = DialogResponse.POSITIVE Then - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) + B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info3 set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) L_QR.TEXT =CODIGO L_QR.TextColor = Colors.Blue B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_CODIGO_BARRAS(CODIGOKMTS, CODIGOB, LAT, LON) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text,CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) @@ -2026,7 +2092,7 @@ End Sub ' Dim result As Int ' result = Msgbox2("Esta seguro de cambiar las coordenadas de este cliente", "Aviso GPS", "SI", "", "NO", LoadBitmap(File.DirAssets, "alerta.jpg")) 'Ignore ' If result = DialogResponse.Positive Then -' B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info SET CAT_CL_LAT = ?, CAT_CL_LONG = ? where CAT_CL_CODIGO In (Select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) +' B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info3 SET CAT_CL_LAT = ?, CAT_CL_LONG = ? where CAT_CL_CODIGO In (Select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) ' B4XPage_Appear ' End If 'End Sub @@ -2172,7 +2238,7 @@ Sub mandaPendientesrecarga Dim PCNoArts As String Dim PCMonto As String If usuario <> "KMTS1" Then - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 d = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 0 AND PC_CLIENTE = 1") c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 0 AND PC_CLIENTE = 1") @@ -2856,7 +2922,7 @@ End Sub Private Sub b_act_coords_Click - h = B4XPages.MainPage.skmt.ExecQuery("SELECT IFNULL(CAT_CL_BCOORDENADAS,0) AS CAT_CL_BCOORDENADAS from kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + h = B4XPages.MainPage.skmt.ExecQuery("SELECT IFNULL(CAT_CL_BCOORDENADAS,0) AS CAT_CL_BCOORDENADAS from kmt_info3 where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") h.Position = 0 Log(h.GetInt("CAT_CL_BCOORDENADAS")) If h.GetInt("CAT_CL_BCOORDENADAS") <= 2 Then @@ -2866,11 +2932,11 @@ Private Sub b_act_coords_Click If coord.RowCount = 0 Then skmt.ExecNonQuery2("INSERT INTO COORDENADAS(LAT,LONG,CLIENTE,CANTIDAD) VALUES (?,?,?,?)", Array As String (B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,Subs.traeCliente,(h.GetInt("CAT_CL_BCOORDENADAS")+1))) - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_LONG = ?, CAT_CL_LAT =?, CAT_CL_BCOORDENADAS = ? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,(h.GetInt("CAT_CL_BCOORDENADAS")+1))) + B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info3 set CAT_CL_LONG = ?, CAT_CL_LAT =?, CAT_CL_BCOORDENADAS = ? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,(h.GetInt("CAT_CL_BCOORDENADAS")+1))) MsgboxAsync("Coordenadas actualizadas.","Atención") Else skmt.ExecNonQuery2("UPDATE COORDENADAS SET LAT = ?, LONG = ?,CANTIDAD = ? where CLIENTE IN (SELECT CUENTA FROM CUENTAA)", Array As String (B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,(h.GetInt("CAT_CL_BCOORDENADAS")+1))) - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_LONG = ?, CAT_CL_LAT =?, CAT_CL_BCOORDENADAS = ? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,(h.GetInt("CAT_CL_BCOORDENADAS")+1))) + B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info3 set CAT_CL_LONG = ?, CAT_CL_LAT =?, CAT_CL_BCOORDENADAS = ? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,(h.GetInt("CAT_CL_BCOORDENADAS")+1))) MsgboxAsync("Coordenadas actualizadas.","Atención") End If diff --git a/B4A/C_Clientes.bas b/B4A/C_Clientes.bas index 7f0054c..91e0199 100644 --- a/B4A/C_Clientes.bas +++ b/B4A/C_Clientes.bas @@ -75,7 +75,7 @@ Sub B4XPage_Appear busca.Text = "" entro ="2" colonia = 0 - c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} ORDER BY CAST(CAT_CL_NUM_SERIEFISICO AS INTEGER) ASC"$) + c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info3 where gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} ORDER BY CAST(CAT_CL_NUM_SERIEFISICO AS INTEGER) ASC"$) ListView1.Clear lfila.Text = "NOMBRE" @@ -99,7 +99,7 @@ Sub B4XPage_Appear cxc.Visible = True End If - d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info WHERE CAT_CL_CODIGO = '${c.GetString("CAT_CL_CODIGO")}'"$) + d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info3 WHERE CAT_CL_CODIGO = '${c.GetString("CAT_CL_CODIGO")}'"$) ' LogColor(d.RowCount,Colors.Blue) If d.RowCount > 0 Then d.Position = 0 @@ -205,7 +205,7 @@ Sub ListView1_ItemClick (Position As Int, value As Object) colonia = value End If If entro = "2" Then - c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(value)) + c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info3 where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(value)) ListView1.Clear lfila.text = "Calle" If c2.RowCount>0 Then @@ -216,7 +216,7 @@ Sub ListView1_ItemClick (Position As Int, value As Object) End If entro = "3" Else If entro = "3" Then - c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(value, colonia)) + c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info3 where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(value, colonia)) ListView1.Clear lfila.text = "Nombre" If c2.RowCount>0 Then @@ -272,7 +272,7 @@ End Sub Sub BUSCA_TextChanged (Old As String, New As String) If CHECK = 0 Then q_buscar = "%" & busca.Text & "%" - c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ? OR CAT_CL_CALLE LIKE ?)and gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} order by CAT_CL_CODIGO "$, Array As String(q_buscar,q_buscar,q_buscar)) + c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info3 where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ? OR CAT_CL_CALLE LIKE ?)and gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} order by CAT_CL_CODIGO "$, Array As String(q_buscar,q_buscar,q_buscar)) ListView1.Clear lfila.text = "Nombre y Calle" @@ -287,7 +287,7 @@ Sub BUSCA_TextChanged (Old As String, New As String) cxc.Visible = True End If - d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info WHERE CAT_CL_CODIGO = '${c2.GetString("CAT_CL_CODIGO")}'"$) + d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info3 WHERE CAT_CL_CODIGO = '${c2.GetString("CAT_CL_CODIGO")}'"$) ' LogColor(d.RowCount,Colors.Blue) If d.RowCount > 0 Then d.Position = 0 @@ -321,7 +321,7 @@ Sub BUSCA_TextChanged (Old As String, New As String) c2.Close Else If CHECK = 1 Then q_buscar = "%" & busca.Text & "%" - c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info2 where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ? OR CAT_CL_CALLE LIKE ?)and gestion = 0 order by CAT_CL_CODIGO ", Array As String(q_buscar,q_buscar,q_buscar)) + c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info32 where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ? OR CAT_CL_CALLE LIKE ?)and gestion = 0 order by CAT_CL_CODIGO ", Array As String(q_buscar,q_buscar,q_buscar)) ListView1.Clear lfila.text = "Nombre y Calle" @@ -335,7 +335,7 @@ Sub BUSCA_TextChanged (Old As String, New As String) Else cxc.Visible = True End If - d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info2 WHERE CAT_CL_CODIGO = '${c2.GetString("CAT_CL_CODIGO")}'"$) + d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info32 WHERE CAT_CL_CODIGO = '${c2.GetString("CAT_CL_CODIGO")}'"$) ' LogColor(d.RowCount,Colors.Blue) If d.RowCount > 0 Then d.Position = 0 @@ -379,10 +379,10 @@ End Sub Sub sc_result(atype As String,Values As String) CODIGO = Values - c2=B4XPages.MainPage.skmt.ExecQuery2("select COUNT(*) AS ENCONTRADO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO)) + c2=B4XPages.MainPage.skmt.ExecQuery2("select COUNT(*) AS ENCONTRADO from kmt_info3 where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO)) c2.Position =0 If c2.GetString("ENCONTRADO") > 0 Then - s=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CODIGO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO)) + s=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CODIGO from kmt_info3 where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO)) s.Position =0 B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(s.GetString("CAT_CL_CODIGO"))) @@ -424,7 +424,7 @@ Private Sub p_datosclie_Click colonia = Sender.As(Panel).tag End If If entro = "2" Then - c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(Sender.As(Panel).tag)) + c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info3 where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(Sender.As(Panel).tag)) ListView1.Clear lfila.text = "Calle" If c2.RowCount>0 Then @@ -435,7 +435,7 @@ Private Sub p_datosclie_Click End If entro = "3" Else If entro = "3" Then - c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(Sender.As(Panel).tag, colonia)) + c2=B4XPages.MainPage.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info3 where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(Sender.As(Panel).tag, colonia)) ListView1.Clear lfila.text = "Nombre" If c2.RowCount>0 Then @@ -478,7 +478,7 @@ Private Sub b_buscar_Click busca.Text = "" entro ="2" colonia = 0 - c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info2 where gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} ORDER BY CAT_CL_CODIGO"$) + c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info32 where gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} ORDER BY CAT_CL_CODIGO"$) ListView1.Clear lfila.Text = "NOMBRE" ListView1.Clear @@ -493,7 +493,7 @@ Private Sub b_buscar_Click cxc.Visible = True End If - d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info2 WHERE CAT_CL_CODIGO = '${c.GetString("CAT_CL_CODIGO")}'"$) + d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info32 WHERE CAT_CL_CODIGO = '${c.GetString("CAT_CL_CODIGO")}'"$) ' LogColor(d.RowCount,Colors.Blue) If d.RowCount > 0 Then d.Position = 0 @@ -532,7 +532,7 @@ Private Sub b_buscar_Click busca.Text = "" entro ="2" colonia = 0 - c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} ORDER BY CAT_CL_CODIGO"$) + c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info3 where gestion = 0 AND CAT_CL_CODIGO <> ${"0"} AND CAT_CL_CODIGO <> ${"1"} ORDER BY CAT_CL_CODIGO"$) ListView1.Clear lfila.Text = "NOMBRE" ListView1.Clear @@ -547,7 +547,7 @@ Private Sub b_buscar_Click cxc.Visible = True End If - d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info WHERE CAT_CL_CODIGO = '${c.GetString("CAT_CL_CODIGO")}'"$) + d = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(CAT_CL_BCREDITO,0) AS CAT_CL_BCREDITO FROM kmt_info3 WHERE CAT_CL_CODIGO = '${c.GetString("CAT_CL_CODIGO")}'"$) ' LogColor(d.RowCount,Colors.Blue) If d.RowCount > 0 Then d.Position = 0 diff --git a/B4A/C_NoVenta.bas b/B4A/C_NoVenta.bas index 7da0bb3..938792b 100644 --- a/B4A/C_NoVenta.bas +++ b/B4A/C_NoVenta.bas @@ -109,10 +109,10 @@ Sub GUARDA_Click Dim cRevisa As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT distinct NV_CLIENTE FROM NOVENTA WHERE NV_CLIENTE = '${cuenta}'"$) If cRevisa.RowCount > 0 Then cRevisa.Position = 0 - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") Else B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON) VALUES(?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If DateTime.TimeFormat = "HHmmss" sTime=DateTime.Time(DateTime.Now) diff --git a/B4A/C_Nota.bas b/B4A/C_Nota.bas index fff1cef..d7db64e 100644 --- a/B4A/C_Nota.bas +++ b/B4A/C_Nota.bas @@ -218,7 +218,7 @@ Sub borra_Click End If B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") B4XPage_Appear End If End Sub @@ -307,10 +307,10 @@ End Sub ' If c.GetString("CUANTOS") > 0 Then ' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") ' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) -' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") ' Else ' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") -' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") ' End If ' B4XPage_Appear ' End If @@ -410,10 +410,10 @@ Sub ListView1_ItemLongClick (Position As Int, Value As Object) If c.GetString("CUANTOS") > 0 Then B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") Else B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If B4XPage_Appear End If diff --git a/B4A/C_NuevoCliente.bas b/B4A/C_NuevoCliente.bas index 63874b2..93f2b10 100644 --- a/B4A/C_NuevoCliente.bas +++ b/B4A/C_NuevoCliente.bas @@ -104,6 +104,7 @@ Sub B4XPage_Appear ET_Atiende.Text = "" et_colonia.Text = "" et_telefono.Text = "" + et_cp.Text = "" If Not(Starter.gps.GPSEnabled) Then ToastMessageShow("Es necesario tener el GPS encendido", True) StartActivity(Starter.gps.LocationSettingsIntent) @@ -261,11 +262,12 @@ Sub GUARDA_Click Private mins As String = sTime.SubString2(2,4) Private segs As String = sTime.SubString(4) sTime = hora & ":" & mins & ":" & segs + Dim Fechacliente() As String = Regex.Split("/",sDate) Log("////////////// sTime: "&sTime&" ////////////////") - c = Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info") + c = Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info3") c.Position = 0 no_ruta = c.GetString("CAT_CL_RUTA") - no_cliente = "N" & sTime & no_ruta + no_cliente = "N" & Fechacliente(1) & ":" & Fechacliente(0) & ":" & Fechacliente(2) & ":" & sTime & no_ruta Log("++ ++ no_cliente = "&no_cliente) c.Close @@ -290,7 +292,7 @@ Sub GUARDA_Click sDate2 = DateTime.Date(DateTime.Now) sTime2 = DateTime.Time(DateTime.Now) - 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, gestion, CAT_CL_GIRO,CAT_CL_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,?) ", Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps, cb_giro.SelectedItem,et_cp.Text)) + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion, CAT_CL_GIRO,CAT_CL_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,?) ", Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps, cb_giro.SelectedItem,et_cp.Text)) Starter.skmt.ExecNonQuery2("INSERT INTO CLIENTES_NUEVOS(CN_ID, CN_FECHA, CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_ALMACEN, CN_RUTA, CN_GIRO, CN_SOLICITA,CN_COLONIA, CN_TELEFONO,CN_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(no_cliente, sDate2 &" "&sTime2, usuario, lat, lon, E_NOMBRE.Text, et_direccion.Text, ALMACEN, no_ruta, cb_giro.SelectedItem, ET_Atiende.Text,et_colonia.Text,et_telefono.Text,et_cp.Text)) ' fototomada = "0" B4XPages.ShowPage("Cliente") @@ -430,8 +432,6 @@ Private Sub cb_giro_SelectedIndexChanged (Index As Int) giros = cb_giro.SelectedItem End Sub - - Private Sub et_cp_TextChanged (Old As String, New As String) If New.Length > 5 Then et_cp.Text = Old @@ -441,4 +441,15 @@ Private Sub et_cp_TextChanged (Old As String, New As String) End If End If +End Sub + +Private Sub et_telefono_TextChanged (Old As String, New As String) + If New.Length > 10 Then + et_telefono.Text = Old + Else If New.Length > 1 And New.Length <= 10 Then + If New.Contains(Chr(10)) Or New.Contains(Chr(13)) Or New.Contains(Chr(34)) Then + et_telefono.Text = Old + End If + End If + End Sub \ No newline at end of file diff --git a/B4A/C_Pedidos.bas b/B4A/C_Pedidos.bas index 2d6cfc3..ceb2635 100644 --- a/B4A/C_Pedidos.bas +++ b/B4A/C_Pedidos.bas @@ -256,7 +256,7 @@ Sub guardar_Click c.Position=0 clie_id = c.GetString("CUENTA") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c.Position=0 cl_ruta = c.GetString("CAT_CL_RUTA") c.Close @@ -302,7 +302,7 @@ Sub guardar_Click DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c.Position=0 cl_ruta = c.GetString("CAT_CL_RUTA") c.Close @@ -333,7 +333,7 @@ Sub guardar_Click c.Position=0 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") B4XPages.ShowPage("Productos") Else DateTime.DateFormat = "MM/dd/yyyy" @@ -343,7 +343,7 @@ Sub guardar_Click c.Position=0 clie_id = c.GetString("CUENTA") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c.Position=0 cl_ruta = c.GetString("CAT_CL_RUTA") c.Close @@ -356,7 +356,7 @@ Sub guardar_Click c.Position=0 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (ALMACEN,L_PROID.Text,cantidad.text)) B4XPages.ShowPage("Productos") End If @@ -425,7 +425,7 @@ Sub Terminar_Click c.Position=0 clie_id = c.GetString("CUENTA") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c.Position=0 cl_ruta = c.GetString("CAT_CL_RUTA") c.Close @@ -473,7 +473,7 @@ Sub Terminar_Click DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c.Position=0 cl_ruta = c.GetString("CAT_CL_RUTA") c.Close @@ -504,7 +504,7 @@ Sub Terminar_Click c.Position=0 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") B4XPages.ShowPage("Cliente") Else DateTime.DateFormat = "MM/dd/yyyy" @@ -514,7 +514,7 @@ Sub Terminar_Click c.Position=0 clie_id = c.GetString("CUENTA") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c.Position=0 cl_ruta = c.GetString("CAT_CL_RUTA") c.Close @@ -528,7 +528,7 @@ Sub Terminar_Click c.Position=0 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (ALMACEN,L_PROID.Text,cantidad.text)) B4XPages.ShowPage("Cliente") End If diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index e22ed53..ae79cc2 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -276,18 +276,18 @@ Private Sub B4XPage_Created (Root1 As B4XView) b.Position=0 Cuantos = b.GetString("CUANTOS") b.Close - d=B4XPages.MainPage.skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0") + d=B4XPages.MainPage.skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info3 where gestion = 0") d.Position=0 - e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info") + e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info3") e.Position=0 - f=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info3") f.Position=0 l_ruta.Text = f.GetString("CAT_CL_RUTA") f.Close If l_ruta.Text = 0 Then l_ruta.Text =0 Else - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 l_ruta.Text = f.GetString("CAT_CL_RUTA") f.Close @@ -333,7 +333,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) l_rutasuplencia.Visible = True l_rutasuplencia.Text = s.GetString("RS_RUTA") End If - Starter.Skmt.ExecNonQuery($"create table if not exists kmt_info2 (${getTableColumnList(Starter.skmt, "kmt_info")})"$) + Starter.Skmt.ExecNonQuery($"create table if not exists kmt_info32 (${getTableColumnList(Starter.skmt, "kmt_info3")})"$) End Sub Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore @@ -442,11 +442,11 @@ Sub B4XPage_Appear Cuantos = b.GetString("CUANTOS") b.Close ' If Starter.marcaCel <> "Sony" Then ToastMessageShow(Cuantos , True) - d=B4XPages.MainPage.skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0") + d=B4XPages.MainPage.skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info3 where gestion = 0") d.Position=0 - e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info WHERE CAT_CL_CODIGO <>0 OR CAT_CL_CODIGO <>1 ") + e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info3 WHERE CAT_CL_CODIGO <>0 OR CAT_CL_CODIGO <>1 ") e.Position=0 - f=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info WHERE CAT_CL_CODIGO <>0 OR CAT_CL_CODIGO <>1 ") + f=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info3 WHERE CAT_CL_CODIGO <>0 OR CAT_CL_CODIGO <>1 ") f.Position=0 l_ruta.Text = f.GetString("CAT_CL_RUTA") f.Close @@ -457,7 +457,7 @@ Sub B4XPage_Appear Else p_b_tabulador.Visible = False pnlBtnCobranza.Visible = False - f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info3") f.Position=0 l_ruta.Text = f.GetString("CAT_CL_RUTA") f.Close @@ -632,24 +632,24 @@ Sub B4XPage_Appear ' d.Close '----------------------------- - Dim fg As Cursor = Starter.skmt.ExecQuery("SELECT IFNULL(SUM(CASE WHEN PE_FOLIO = 'PREVENTA_CREDITO' THEN PE_COSTO_TOT ELSE 0 END), 0) AS COSTO_CRED, IFNULL(SUM(CASE WHEN PE_FOLIO = 'PREVENTA_CONTADO' THEN PE_COSTO_TOT ELSE 0 END), 0) AS COSTO_CONTADO FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO IN ('PREVENTA_CREDITO', 'PREVENTA_CONTADO')") - - fg.Position = 0 - Dim COSTO_CRED As Double = fg.GetDouble("COSTO_CRED") - Dim COSTO_CONTADO As Double = fg.GetDouble("COSTO_CONTADO") - - Log("Costo Crédito: " & COSTO_CRED & "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") - Log("Costo Contado: " & COSTO_CONTADO & "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") - - If COSTO_CRED > 0 And COSTO_CRED < 1000 Then - Msgbox2Async($"Se ha detectado venta a crédito menor a $1000 pesos. ¿Desea borrarla?"$, "Venta Mínima de Crédito", "Sí", "", "", LoadBitmap(File.DirAssets, "alert2.png"), False) - Wait For Msgbox_Result (resultado As Int) - If resultado = DialogResponse.POSITIVE Then - Subs.borraPedidoCredito - End If - End If - - fg.Close +' Dim fg As Cursor = Starter.skmt.ExecQuery("SELECT IFNULL(SUM(CASE WHEN PE_FOLIO = 'PREVENTA_CREDITO' THEN PE_COSTO_TOT ELSE 0 END), 0) AS COSTO_CRED, IFNULL(SUM(CASE WHEN PE_FOLIO = 'PREVENTA_CONTADO' THEN PE_COSTO_TOT ELSE 0 END), 0) AS COSTO_CONTADO FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO IN ('PREVENTA_CREDITO', 'PREVENTA_CONTADO')") +' +' fg.Position = 0 +' Dim COSTO_CRED As Double = fg.GetDouble("COSTO_CRED") +' Dim COSTO_CONTADO As Double = fg.GetDouble("COSTO_CONTADO") +' +' Log("Costo Crédito: " & COSTO_CRED & "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") +' Log("Costo Contado: " & COSTO_CONTADO & "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") +' +' If COSTO_CRED > 0 And COSTO_CRED < 1000 Then +' Msgbox2Async($"Se ha detectado venta a crédito menor a $1000 pesos. ¿Desea borrarla?"$, "Venta Mínima de Crédito", "Sí", "", "", LoadBitmap(File.DirAssets, "alert2.png"), False) +' Wait For Msgbox_Result (resultado As Int) +' If resultado = DialogResponse.POSITIVE Then +' Subs.borraPedidoCredito +' End If +' End If +' +' fg.Close CallSubDelayed(Tracker, "Track") CallSubDelayed(Tracker, "StartFLPSmall") @@ -770,35 +770,35 @@ Sub Subir_Click c.Close ' ENVIO DE LOS CODIGOS QR - 'c=skmt.ExecQuery2("SELECT CAT_CL_NUM_SERIEFISICO,CAT_CL_CODIGO ,CAT_CL_LONG,CAT_CL_LAT, CAT_CL_FOTO FROM kmt_info where CAT_CL_NUM_SERIEFISICO = ?", Array As String("OK")) - c=B4XPages.MainPage.skmt.ExecQuery("SELECT CODIGOKMTS, CODIGOB, LAT, LON FROM HIST_CODIGO_BARRAS" ) - If c.RowCount>0 Then - For i=0 To c.RowCount -1 - c.Position=i - Dim cmd As DBCommand - cmd.Initialize - cmd.Name = "insert_QR_2_IZCA" - cmd.Parameters = Array As Object(C.GetString("CODIGOKMTS"),C.GetString("CODIGOB"),C.GetString("LON"),C.GetString("LAT"),ALMACEN,l_ruta.text ) - reqManager.ExecuteCommand(cmd , "ins_QR") - Next - End If - c.Close +' 'c=skmt.ExecQuery2("SELECT CAT_CL_NUM_SERIEFISICO,CAT_CL_CODIGO ,CAT_CL_LONG,CAT_CL_LAT, CAT_CL_FOTO FROM kmt_info3 where CAT_CL_NUM_SERIEFISICO = ?", Array As String("OK")) +' c=B4XPages.MainPage.skmt.ExecQuery("SELECT CODIGOKMTS, CODIGOB, LAT, LON FROM HIST_CODIGO_BARRAS" ) +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "insert_QR_2_IZCA" +' cmd.Parameters = Array As Object(C.GetString("CODIGOKMTS"),C.GetString("CODIGOB"),C.GetString("LON"),C.GetString("LAT"),ALMACEN,l_ruta.text ) +' reqManager.ExecuteCommand(cmd , "ins_QR") +' Next +' End If +' c.Close - c=B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_NUM_SERIEFISICO, CAT_CL_CODIGO, CAT_CL_LONG, CAT_CL_LAT, CAT_CL_FOTO FROM kmt_info where CAT_CL_NUM_SERIEFISICO IS NOT NULL") - If c.RowCount>0 Then - For i=0 To c.RowCount -1 - c.Position=i - 's=skmt.ExecQuery2("SELECT HIST_VI_IMAGEN FROM HIST_VISITAS WHERE HIST_VI_CREDITO =?", Array As String (c.GetString("HIST_VI_CREDITO"))) - 's.Position =0 - foto1 = c.GetBlob("CAT_CL_FOTO") - Dim cmd As DBCommand - cmd.Initialize - cmd.Name = "insert_QR_IZCA" - cmd.Parameters = Array As Object(C.GetString("CAT_CL_NUM_SERIEFISICO"),C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_LONG"),C.GetString("CAT_CL_LAT"),ALMACEN,l_ruta.text ) - reqManager.ExecuteCommand(cmd , "ins_QR") - Next - End If - c.Close +' c=B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_NUM_SERIEFISICO, CAT_CL_CODIGO, CAT_CL_LONG, CAT_CL_LAT, CAT_CL_FOTO FROM kmt_info3 where CAT_CL_NUM_SERIEFISICO IS NOT NULL") +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' 's=skmt.ExecQuery2("SELECT HIST_VI_IMAGEN FROM HIST_VISITAS WHERE HIST_VI_CREDITO =?", Array As String (c.GetString("HIST_VI_CREDITO"))) +' 's.Position =0 +' foto1 = c.GetBlob("CAT_CL_FOTO") +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "insert_QR_IZCA" +' cmd.Parameters = Array As Object(C.GetString("CAT_CL_NUM_SERIEFISICO"),C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_LONG"),C.GetString("CAT_CL_LAT"),ALMACEN,l_ruta.text ) +' reqManager.ExecuteCommand(cmd , "ins_QR") +' Next +' End If +' c.Close ' 'Envio de Pagares ' c=B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM PAGARES") @@ -909,16 +909,18 @@ Sub Subir_Click c.Position = i Dim cmd As DBCommand cmd.Initialize - cmd.Name = "insert_pedido4_IZCA" 'CON TOTALES INCLUIDOS + cmd.Name = "insert_pedido5_IZCA" 'CON TOTALES INCLUIDOS ' Log(c.GetString("PE_CEDIS")&", "&ALMACEN&", "&c.GetString("PE_COSTO_TOT")&", "&c.GetString("PE_COSTOU")&", "&c.GetString("PE_CANT")&", "&c.GetString("PE_PRONOMBRE")&", "&c.GetString("PE_PROID")&", "&c.GetString("PE_CLIENTE")&", "&c.GetString("PE_FECHA")&", "&c.GetString("PE_USUARIO")&", "&Subs.traeRuta2(c.GetString("PE_CLIENTE"))&", "& c.GetString("PE_COSTO_SIN")&", "&c.GetString("PE_DESC")&", "&c.GetString("PE_FOLIO")&", "& ALMACEN) If c.GetString("PE_FOLIO") = "PREVENTA_CONTADO" Then - cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"PREVENTA") + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"PREVENTA",0) Else If c.GetString("PE_FOLIO") = "PREVENTA_CREDITO" Then - cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"PREVENTA") + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"PREVENTA",1) Else If c.GetString("PE_FOLIO") = "ABORDO" Then - cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"ABORDO") + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"ABORDO",0) + Else If c.GetString("PE_FOLIO") = "RECARGA" Then + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"RECARAGA",0) Else - cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"VENTA") + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,c.GetString("PE_COSTO_TOT"),c.GetString("PE_COSTOU"),c.GetString("PE_CANT"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"),c.GetString("PE_USUARIO"),Subs.traeRuta2(c.GetString("PE_CLIENTE")), c.GetString("PE_COSTO_SIN"),c.GetString("PE_DESC"),"VENTA",0) End If reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}"$) Next @@ -961,7 +963,7 @@ Sub Subir_Click c.Close ' Cambio ubicaciones - c=B4XPages.MainPage.skmt.ExecQuery("Select CAT_CL_LAT, CAT_CL_LONG, CAT_CL_CODIGO, CAT_CL_BCOORDENADAS from kmt_info where CAT_CL_BCOORDENADAS <> 0") + c=B4XPages.MainPage.skmt.ExecQuery("Select CAT_CL_LAT, CAT_CL_LONG, CAT_CL_CODIGO, CAT_CL_BCOORDENADAS from kmt_info3 where CAT_CL_BCOORDENADAS <> 0") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i @@ -1137,7 +1139,7 @@ Sub cargar_Click PB2.Progress = 0 EJECUTANDO = 1 - 'c=skmt.ExecQuery("CREATE TABLE kmt_info (pr_cd_credito NUMERIC,pr_cd_nombre TEXT,pr_cd_calle TEXT,pr_cd_numero TEXT,pr_cd_num_int TEXT,pr_cd_entrecalle1 TEXT,pr_cd_entrecalle2 TEXT,pr_cd_colonia TEXT,pr_cd_poblacion TEXT,pr_cd_edo TEXT,pr_cd_cp TEXT,pr_cd_zona TEXT,pr_cf_credito NUMERIC,pr_cf_saldotot NUMERIC,pr_cf_saldooper NUMERIC,pr_cf_saldof1 NUMERIC, pr_cf_penalizacion NUMERIC)") + 'c=skmt.ExecQuery("CREATE TABLE kmt_info3 (pr_cd_credito NUMERIC,pr_cd_nombre TEXT,pr_cd_calle TEXT,pr_cd_numero TEXT,pr_cd_num_int TEXT,pr_cd_entrecalle1 TEXT,pr_cd_entrecalle2 TEXT,pr_cd_colonia TEXT,pr_cd_poblacion TEXT,pr_cd_edo TEXT,pr_cd_cp TEXT,pr_cd_zona TEXT,pr_cf_credito NUMERIC,pr_cf_saldotot NUMERIC,pr_cf_saldooper NUMERIC,pr_cf_saldof1 NUMERIC, pr_cf_penalizacion NUMERIC)") TOPE = 0 ' NUEVOS CLIENTE B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM RUTA_SUPLENCIA") @@ -1145,8 +1147,8 @@ Sub cargar_Click B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM GEOCERCA") B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM COORDS_ALMACEN") B4XPages.MainPage.skmt.ExecNonQuery("delete from CLIENTE_NUEVO") - B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info") - B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info2") + B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info3") + B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info32") B4XPages.MainPage.skmt.ExecNonQuery("delete from cod_result") B4XPages.MainPage.skmt.ExecNonQuery("delete from hist_gest") B4XPages.MainPage.skmt.ExecNonQuery("delete from cat_gunaprod") @@ -1399,7 +1401,7 @@ Sub JobDone(Job As HttpJob) End If If Job.Success = False Then Log("ERROR") - LogColor("Error: " & reqManager.HandleJob(Job).tag & " : " & Job.ErrorMessage, Colors.red) + LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red) Log("ex") Log(2) ' Job.Release @@ -1506,11 +1508,11 @@ Sub JobDone(Job As HttpJob) Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_CL_BCREDITO")) Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_CL_LIMITECREDITO")) Dim CAT_CL_BCOORDENADAS As String = records(RESULT.Columns.Get("CAT_CL_BCOORDENADAS")) - B4XPages.MainPage.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_BCREDITO, CAT_CL_LIMITECREDITO, gestion,CAT_CL_BCOORDENADAS) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,0,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO,CAT_CL_BCOORDENADAS)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO, gestion,CAT_CL_BCOORDENADAS) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,0,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO,CAT_CL_BCOORDENADAS)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (CAT_CL_CODIGO)) Next -' 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, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object ("0",e_ruta.TEXT, "VENTA ABORDO","null","null","null","null","null","null","null","null","null","null","null","null","NULL","null","NULL")) -' 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, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object ("1",e_ruta.TEXT, "VENTA RECARGA","null","null","null","null","null","null","null","null","null","null","null","null","NULL","null","NULL")) + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object ("0",e_ruta.TEXT, "VENTA ABORDO","null","null","null","null","null","null","null","null","null","null","null","null","NULL","null","NULL")) +' Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object ("1",e_ruta.TEXT, "VENTA RECARGA","null","null","null","null","null","null","null","null","null","null","null","null","NULL","null","NULL")) Listo1 = 1 S_CC.Text = "LISTO" If Starter.marcaCel <> "Sony" Then ToastMessageShow("Catalogo Clientes Actualizados." , True) @@ -1593,7 +1595,7 @@ Sub JobDone(Job As HttpJob) Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_CL_BCREDITO")) Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_CL_LIMITECREDITO")) Dim CAT_CL_DIAS_VISITA As String = records(RESULT.Columns.Get("CAT_CL_DIAS_VISITA")) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info2(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion, CAT_CL_DIAS_VISITA, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0, ?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_DIAS_VISITA, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info32(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion, CAT_CL_DIAS_VISITA, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0, ?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_DIAS_VISITA, CAT_CL_BCREDITO, CAT_CL_LIMITECREDITO)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (CAT_CL_CODIGO)) Next Listo1 = 1 @@ -1717,7 +1719,8 @@ Sub JobDone(Job As HttpJob) For Each records() As Object In RESULT.Rows Dim CAT_AL_LATITUD As String = records(RESULT.Columns.Get("CAT_AL_LATITUD")) Dim CAT_AL_LONGITUD As String = records(RESULT.Columns.Get("CAT_AL_LONGITUD")) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO COORDS_ALMACEN(LAT,LONG) VALUES (?,?)", Array As Object (CAT_AL_LATITUD,CAT_AL_LONGITUD)) + Dim CAT_AL_BVENTA_ALMACEN As String = records(RESULT.Columns.Get("CAT_AL_BVENTA_ALMACEN")) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO COORDS_ALMACEN(LAT,LONG,BANDERA) VALUES (?,?,?)", Array As Object (CAT_AL_LATITUD,CAT_AL_LONGITUD,CAT_AL_BVENTA_ALMACEN)) Next End If End If @@ -2403,7 +2406,7 @@ Sub connecta_Click Dim cmd As DBCommand cmd.Initialize - cmd.Name = "select_ruta_IZCA5" + cmd.Name = "select_ruta_IZCA6" cmd.Parameters = Array As Object(ALMACEN, e_ruta.text,usuario) ' Log($"${ALMACEN},${e_ruta.text},${imei}"$) reqManager.ExecuteQuery(cmd , 0, "ruta") @@ -2464,7 +2467,9 @@ Sub e_ruta_EnterPressed B4XPages.MainPage.skmt.ExecNonQuery("delete from noventa") B4XPages.MainPage.skmt.ExecNonQuery("delete from clie_act") B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info") - B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info2") +' B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info2") + B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info3") + B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info32") B4XPages.MainPage.skmt.ExecNonQuery("delete from cat_gunaprod") B4XPages.MainPage.skmt.ExecNonQuery("delete from cat_gunaprod2") B4XPages.MainPage.skmt.ExecNonQuery("delete from cat_gunaprod3") @@ -2487,13 +2492,6 @@ Sub e_ruta_EnterPressed Starter.skmt.ExecNonQuery("DELETE FROM TABULADOR_MONEDAS") Starter.skmt.ExecNonQuery("DELETE FROM TABULADOR_BILLETES") B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM ENV_MONTO_LIQ") - - cmd.Initialize - cmd.Name ="insert_drop_IZCA" - cmd.Parameters = Array As Object(usuario,e_ruta.text,sDate,imei,sTime,"","","","","FIN DIA",ALMACEN,Application.VersionName) - 'usuario,l_ruta.Text,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO",ALMACEN,Application.VersionName - reqManager.ExecuteCommand(cmd , "inst_noventa") - B4XPage_Appear l_rutasuplencia.Visible = False Label22.Visible = False @@ -2625,7 +2623,7 @@ Sub B_OK_PAS_Click If cn.RowCount > 0 Then For gh = 0 To cn.RowCount -1 cn.Position = gh - 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, gestion, CAT_CL_GIRO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?) ", Array As Object (cn.GetString("CN_ID"),cn.GetString("CN_RUTA"), cn.GetString("CN_NOMBRE"),"null","null","null","null","null","null","null","null","null","null","null","null","null",cn.GetString("CN_LON"),cn.GetString("CN_LAT"), cn.GetString("CN_GIRO"))) + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion, CAT_CL_GIRO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?) ", Array As Object (cn.GetString("CN_ID"),cn.GetString("CN_RUTA"), cn.GetString("CN_NOMBRE"),"null","null","null","null","null","null","null","null","null","null","null","null","null",cn.GetString("CN_LON"),cn.GetString("CN_LAT"), cn.GetString("CN_GIRO"))) Next End If @@ -2666,7 +2664,7 @@ Sub B_OK_PAS_Click Resumen.Visible= True img2.Visible=False Subs.panelVisible(p_principal, 0, 0) - B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info") + B4XPages.MainPage.skmt.ExecNonQuery("delete from kmt_info3") B4XPages.MainPage.skmt.ExecNonQuery("delete from cod_result") B4XPages.MainPage.skmt.ExecNonQuery("delete from hist_gest") B4XPages.MainPage.skmt.ExecNonQuery("delete from cat_gunaprod") @@ -3146,24 +3144,25 @@ Private Sub iv_abordo_Click Starter.skmt.ExecNonQuery("delete from CUENTAA") Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object("0")) B4XPages.MainPage.tipo_venta = "ABORDO" + Log("aqui") B4XPages.ShowPage("Productos") End Sub Sub checaPedido Private c As Cursor = Starter.skmt.ExecQuery("SELECT PC_CLIENTE FROM PEDIDO_CLIENTE") If c.RowCount > 0 Then - Starter.skmt.ExecNonQuery("Update kmt_info set gestion = 2 WHERE CAT_CL_CODIGO IN (SELECT PC_CLIENTE FROM PEDIDO_CLIENTE)") + Starter.skmt.ExecNonQuery("Update kmt_info3 set gestion = 2 WHERE CAT_CL_CODIGO IN (SELECT PC_CLIENTE FROM PEDIDO_CLIENTE)") End If Private c As Cursor = Starter.skmt.ExecQuery("SELECT NV_CLIENTE FROM NOVENTA") If c.RowCount > 0 Then - Starter.skmt.ExecNonQuery("Update kmt_info set gestion = 3 WHERE CAT_CL_CODIGO IN (SELECT NV_CLIENTE FROM NOVENTA)") + Starter.skmt.ExecNonQuery("Update kmt_info3 set gestion = 3 WHERE CAT_CL_CODIGO IN (SELECT NV_CLIENTE FROM NOVENTA)") End If Private coord As Cursor = Starter.skmt.ExecQuery("SELECT * FROM COORDENADAS") If coord.RowCount > 0 Then For cor = 0 To coord.RowCount -1 coord.Position = cor - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_LONG = ?, CAT_CL_LAT =?, CAT_CL_BCOORDENADAS = ? where CAT_CL_CODIGO = ?", Array As Object(coord.GetString("LAT"), coord.GetString("LONG"),(coord.GetInt("CANTIDAD")+1),coord.GetString("CLIENTE"))) + B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info3 set CAT_CL_LONG = ?, CAT_CL_LAT =?, CAT_CL_BCOORDENADAS = ? where CAT_CL_CODIGO = ?", Array As Object(coord.GetString("LAT"), coord.GetString("LONG"),(coord.GetInt("CANTIDAD")+1),coord.GetString("CLIENTE"))) Next End If End Sub @@ -3182,7 +3181,7 @@ Private Sub btnCobranza_Click pnlCobranza.BringToFront pnlCobranza.Visible = True pnlTotal.Visible = True - Dim ct As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT IFNULL(sum(IFNULL(a.a_abono,0)),0) as suma_abono FROM kmt_info2 ki LEFT JOIN ABONOSP ap ON ki.CAT_CL_CODIGO = ap.CLIENTE LEFT JOIN ABONOS a ON ki.CAT_CL_CODIGO = a.a_cliente WHERE CAST(ap.SALDO_PENDIENTE AS REAL) > 0"$) + Dim ct As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT IFNULL(sum(IFNULL(a.a_abono,0)),0) as suma_abono FROM kmt_info32 ki LEFT JOIN ABONOSP ap ON ki.CAT_CL_CODIGO = ap.CLIENTE LEFT JOIN ABONOS a ON ki.CAT_CL_CODIGO = a.a_cliente WHERE CAST(ap.SALDO_PENDIENTE AS REAL) > 0"$) ct.Position = 0 If ct.RowCount > 0 Then lblTotal.Text = "El total abonado es: $" & ct.getString("suma_abono") @@ -3202,7 +3201,7 @@ Private Sub CargarDatosCobranza End If End If Next - c = B4XPages.MainPage.skmt.ExecQuery($"SELECT ROW_NUMBER() OVER (ORDER BY ki.CAT_CL_NOMBRE) AS Secuencia, ki.CAT_CL_CODIGO, ki.CAT_CL_NOMBRE, ap.SALDO_PENDIENTE, IFNULL(a.a_abono,0) as a_abono FROM kmt_info2 ki LEFT JOIN ABONOSP ap ON ki.CAT_CL_CODIGO = ap.CLIENTE LEFT JOIN ABONOS a ON ki.CAT_CL_CODIGO = a.a_cliente WHERE CAST(ap.SALDO_PENDIENTE AS REAL) > 0"$) + c = B4XPages.MainPage.skmt.ExecQuery($"SELECT ROW_NUMBER() OVER (ORDER BY ki.CAT_CL_NOMBRE) AS Secuencia, ki.CAT_CL_CODIGO, ki.CAT_CL_NOMBRE, ap.SALDO_PENDIENTE, IFNULL(a.a_abono,0) as a_abono FROM kmt_info32 ki LEFT JOIN ABONOSP ap ON ki.CAT_CL_CODIGO = ap.CLIENTE LEFT JOIN ABONOS a ON ki.CAT_CL_CODIGO = a.a_cliente WHERE CAST(ap.SALDO_PENDIENTE AS REAL) > 0"$) Log("Número de registros: " & c.RowCount) clvCobranza.Clear @@ -3258,7 +3257,7 @@ End Sub 'Private Sub clvCobranza_ItemClick (Index As Int, Value As Object) ' Dim CodigoCliente As Cursor = Value -' CodigoCliente = B4XPages.MainPage.skmt.ExecQuery($"SELECT ROW_NUMBER() OVER (ORDER BY ki.CAT_CL_NOMBRE) AS Secuencia, ki.CAT_CL_NOMBRE, ap.SALDO_PENDIENTE, IFNULL(a.a_abono,0) as a_abono FROM kmt_info2 ki LEFT JOIN ABONOSP ap ON ki.CAT_CL_CODIGO = ap.CLIENTE LEFT JOIN ABONOS a ON ki.CAT_CL_CODIGO = a.a_cliente WHERE CAST(ap.SALDO_PENDIENTE AS REAL) > 0"$) +' CodigoCliente = B4XPages.MainPage.skmt.ExecQuery($"SELECT ROW_NUMBER() OVER (ORDER BY ki.CAT_CL_NOMBRE) AS Secuencia, ki.CAT_CL_NOMBRE, ap.SALDO_PENDIENTE, IFNULL(a.a_abono,0) as a_abono FROM kmt_info32 ki LEFT JOIN ABONOSP ap ON ki.CAT_CL_CODIGO = ap.CLIENTE LEFT JOIN ABONOS a ON ki.CAT_CL_CODIGO = a.a_cliente WHERE CAST(ap.SALDO_PENDIENTE AS REAL) > 0"$) ' B4XPages.ShowPage("cliente") 'End Sub @@ -3284,7 +3283,7 @@ Private Sub b_productos_Click p_prod.BringToFront - Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_TIPO <> 'PROMOS' AND CAT_GP_SUBTIPO <> 'PROMOS' order by CAT_GP_NOMBRE asc") + Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD order by CAT_GP_NOMBRE asc") lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black lv_prod_Prin.Clear @@ -3295,7 +3294,7 @@ Private Sub b_productos_Click - itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$ + itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$ lv_prod_Prin.AddSingleLine(itemText) diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index 64d0420..8c90d1b 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -1071,23 +1071,23 @@ Sub b_terminar1_Click Subs.centraPanel(p_vistaPrevia, Root.Width) ' If Subs.pedidoGuardado Then b_rechazar.Enabled = False Else b_rechazar.Enabled = True - Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS COSTO, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") - fg.Position = 0 - Dim costo As String = fg.GetString("COSTO") - If costo > 0 And costo < 1000 And fg.GetString("PE_FOLIO") = "PREVENTA_CREDITO" Then - result = Msgbox2($"¿Desea continuar?${CRLF}Si acepta, el pedido se borrará (mínimo $1,000).${CRLF}Si cancela, podrá seguir agregando productos."$,"Venta Minima de Credito", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) - If result = DialogResponse.POSITIVE Then - Subs.borraPedidoCredito -' B4XPages.MainPage.promos.promosMap.Initialize - B4XPages.ShowPage("Cliente") - Else - lv_catalogos.Visible = True - End If - Else - p_vistaPrevia.Visible=True - p_vistaPreviaTrans.Visible=True - End If - fg.Close +' Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS COSTO, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") +' fg.Position = 0 +' Dim costo As String = fg.GetString("COSTO") +' If costo > 0 And costo < 1000 And fg.GetString("PE_FOLIO") = "PREVENTA_CREDITO" Then +' result = Msgbox2($"¿Desea continuar?${CRLF}Si acepta, el pedido se borrará (mínimo $1,000).${CRLF}Si cancela, podrá seguir agregando productos."$,"Venta Minima de Credito", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) +' If result = DialogResponse.POSITIVE Then +' Subs.borraPedidoCredito +'' B4XPages.MainPage.promos.promosMap.Initialize + B4XPages.ShowPage("Cliente") +' Else +' lv_catalogos.Visible = True +' End If +' Else +' p_vistaPrevia.Visible=True +' p_vistaPreviaTrans.Visible=True +' End If +' fg.Close End Sub Private Sub b_continuar_Click @@ -1112,21 +1112,21 @@ Private Sub b_continuar_Click prodsPedidoActual = m.Get("productos") montoPedidoActual = m.Get("monto") - Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS COSTO FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") - fg.Position = 0 - Dim costo As String = fg.GetString("COSTO") - - If costo > 0 And costo < 1000 Then - result = Msgbox2($"¿Desea continuar?${CRLF}Si acepta, el pedido se borrará (mínimo $1,000).${CRLF}Si cancela, podrá seguir agregando productos."$,"Venta Minima de Credito", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) - If result = DialogResponse.POSITIVE Then - Subs.borraPedidoCredito - B4XPages.MainPage.promos.promosMap.Initialize - B4XPages.ShowPage("Cliente") - Else - lv_catalogos.Visible = True - End If - End If - fg.Close +' Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS COSTO FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") +' fg.Position = 0 +' Dim costo As String = fg.GetString("COSTO") +' +' If costo > 0 And costo < 1000 Then +' result = Msgbox2($"¿Desea continuar?${CRLF}Si acepta, el pedido se borrará (mínimo $1,000).${CRLF}Si cancela, podrá seguir agregando productos."$,"Venta Minima de Credito", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) +' If result = DialogResponse.POSITIVE Then +' Subs.borraPedidoCredito +' B4XPages.MainPage.promos.promosMap.Initialize + B4XPages.ShowPage("Cliente") +' Else +' lv_catalogos.Visible = True +' End If +' End If +' fg.Close End Sub Private Sub l_prodX_LongClick @@ -1316,7 +1316,7 @@ Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object) B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") Private h As Cursor = B4XPages.MainPage.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP )") Log($"select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP )"$) h.Position=0 @@ -1326,7 +1326,7 @@ Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object) Else Log("aqui6") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") Private h As Cursor = B4XPages.MainPage.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP )") h.Position=0 l_cant.Text = 0 diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index 616019f..41a5907 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -4,6 +4,608 @@ ModulesStructureVersion=1 Type=Class Version=11.5 @EndOfDesignText@ +'Sub Class_Globals +' Private Root As B4XView 'ignore +' Private xui As XUI +' Private l_promoDesc As Label +' Private lv_prodsFijos As ListView +' Private clv_prodsVariabes, clv_prodsVariabes2 As CustomListView +' Private l_prodsFijos As Label +' Private l_prodsVariables, l_prodsVariables2 As Label +' Private i_prod As ImageView +' Private l_prodX As Label +' Private p_prods As Panel +' Private b_prodMenos, b_prodMenos2 As Button +' Private et_pCant As EditText +' Private b_prodMas, b_prodMas2 As Button +' Private l_pCant As Label +' Dim totalProds As Int = 0 +' Dim prodsVar1 As Int = 0 +' Dim prodsVar2 As Int = 0 +' Dim prodsVarReq As Int = 0 +' Dim prodsVarReq_ As Int = 0 +' Dim prodsVarReq2 As Int = 0 +' Dim prodsVarReq2_ As Int = 0 +' Dim totalCompra As Float = 0 +' Dim prodsFijosTot As Float = 0 +' Dim tpf As Int = 0 +' Dim tpf2 As Int = 0 +' Dim maxCantPromos As Int = 1 +' Private l_totProds As Label +' Private l_total As Label +' Private b_terminar1 As Button +' Private p_promociones As Panel +' Dim prodsIds, prodsCants, prodsPrecios, prodsIds2, prodsCants2, prodsPrecios2 As List +' Dim estaPromo, esteCliente As String +' Private b_promoMas As Button +' Private b_promoMenos As Button +' Private et_promoCant As EditText +' Private l_promosCant As Label +' Private b_continuar As Button +' Private p_prodsVariables, p_prodsVariables2 As Panel +' Dim laPromo = "", elCliente = "" As String +' Dim prodsPedidoActual As String +' Dim montoPedidoActual As String +' Dim promosMap As Map +' Dim su As StringUtils +'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("promociones") +' +' p_promociones.Height= Root.Height +' p_promociones.Width= Root.Width +' +' promosMap.Initialize +' p_promociones.Top=0 +' p_promociones.Left=0 +' b_terminar1.Left = Root.Width - (b_terminar1.Width + 10) +' b_continuar.Left = Root.Width - b_terminar1.Width - (b_continuar.Width + 20) +'End Sub +' +'Sub B4XPage_Appear +'' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.blue) +' prodsIds.Initialize +' prodsCants.Initialize +' prodsPrecios.Initialize +' prodsIds2.Initialize +' prodsCants2.Initialize +' prodsPrecios2.Initialize +' Dim m As Map = Subs.traeTotalesClienteActual +' prodsPedidoActual = m.Get("productos") +' montoPedidoActual = m.Get("monto") +'' Log($"laPromo=${laPromo}, el cliente=${elCliente}"$) +' If laPromo <> "" Then muestraPromo(laPromo, elCliente) +'End Sub +''You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. +' +'Sub muestraPromo(promo As String, cliente As String) +' Private thisLog As Boolean = False +'' If thisLog Then Log(promo) +' estaPromo = promo +' esteCliente = cliente +' Private mp As Map = Subs.traePromo(promo, cliente) +' Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción. +' Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo) +'' If thisLog Then Log($"invDispPromo=${invDispPromo}"$) +' If thisLog Then Log("Max promos por inv de prods FIJOS: " & Subs.revisaMaxPromosProdsFijosPorInventario(mp)) +' If thisLog Then Log("Max promos por inv de prods VARIABLES: " & Subs.revisaMaxPromosProdsVariablesPorInventario(mp)) +' maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp) +' et_promoCant.Text = 1 +' l_promosCant.text = "Max promos: " & maxCantPromos +' Private cs As CSBuilder +' cs.Initialize +' If thisLog Then Log(mp) +' If thisLog Then Log(prodsPromo) +' Private listaPV As List = mp.Get("prodsVariables") +' Private listaPreciosPV As List = mp.Get("prodsVariablesPrecios") +' Private listaPV2 As List = mp.Get("prodsVariables2") +' Private listaPreciosPV2 As List = mp.Get("prodsVariablesPrecios2") +'' Log("============ " & CRLF & listaPV) +' 'Ponemos la promo y descripción. +'' Dim desc As String = $"Promoción: ${promo}${CRLF}${mp.Get("descripcion")}"$ +'' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(promo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall +' l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(promo).append(CRLF).Append(mp.Get("descripcion")).Popall +' prodsFijosTot = 0 +' 'Ponemos el texto en las etiquetas de la cantidad de productos. +'' Dim pf As List = mp.Get("prodsFijos") +' Dim pv As List = mp.Get("prodsVariables") +' Dim pv2 As List = mp.Get("prodsVariables2") +' If thisLog Then Log(mp) +' tpf = 0 +' For Each pfp As Int In mp.Get("prodsFijosPiezas").As(List) +' tpf = tpf + pfp +' Next +' tpf2 = tpf +'' tpf = tpf * maxCantPromos +' l_prodsFijos.Text = $"Productos fijos (${tpf})"$ +' prodsVarReq = mp.Get("prodsVariablesRequeridos") +' prodsVarReq_ = prodsVarReq +' prodsVarReq2 = mp.Get("prodsVariables2Requeridos") +' prodsVarReq2_ = prodsVarReq2 +'' Log("========= " & prodsVarReq2) +' l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$ +' l_prodsVariables2.Text = $"Productos variables2 requeridos: ${prodsVarReq2}"$ +' If prodsVarReq = 0 Then +' p_prodsVariables.Visible = False +' Else +' p_prodsVariables.Visible = True +' End If +' 'Llenamos el listview con los productos fijos. +' Dim label1 As Label +' label1 = lv_prodsFijos.SingleLineLayout.Label +' label1.TextSize = 13 +' label1.TextColor = Colors.black +' lv_prodsFijos.SingleLineLayout.ItemHeight = 30dip +' lv_prodsFijos.Clear +'' If pf.Size < 1 Then pf.Add("Sin productos fijos.") +' lv_prodsFijos.Clear +' agregaFijosALista(mp, True) +' If thisLog Then Log("Total prods fijos = " & prodsFijosTot) +'' If thisLog Then Log("======="&prodsMap) +' l_totProds.text = $"Productos: ${tpf}"$ +' l_total.Text = $"Total: $$1.2{prodsFijosTot}"$ +'' Dim ins As InputStream +'' Dim bmp As Bitmap +'' Dim jpeg() As Byte +' +' 'Llenamos el listview con los productos variables. +' If thisLog Then Log($"PV1: ${pv.Size}, ${pv}"$) +' If thisLog Then Log($"PV2: ${pv2.Size}, ${pv2}"$) +' If thisLog Then Log("invDisp=" & invDispPromo) +' clv_prodsVariabes.Clear +' clv_prodsVariabes2.Clear +' For Each p As String In pv +' If invDispPromo.ContainsKey(p) Then 'Si no esta en la lista de productos con inventario no lo mostramos. +' Private indicePV = listaPV.IndexOf(p) +'' Log(p & "|" & indicePV & "|" & listaPreciosPV.Get(indicePV)) +' Private estePrecio = listaPreciosPV.Get(indicePV) +'' c2.Position=i +'' jpeg = c2.GetBlob("CAT_GP_IMG") +'' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) +'' bmp.Initialize2(ins) +' Private thisProd As Map = prodsPromo.Get(p) +' If thisLog Then Log(thisProd) +' clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p) +' End If +' Next +' For Each p As String In pv2 +' If invDispPromo.ContainsKey(p) Then 'Si no esta en la lista de productos con inventario no lo mostramos. +'' Log(p) +'' Log($"${invDispPromo}$"$) +'' Log($"${listaPV2}"$) +'' Log("listaPrecios:"&listaPreciosPV2) +' Private indicePV2 = listaPV2.IndexOf(p) +'' Log($"${indicePV2}"$) +'' Log(p & "|" & indicePV & "|" & listaPreciosPV2.Get(indicePV2)) +' Private estePrecio = listaPreciosPV2.Get(indicePV2) +'' c2.Position=i +'' jpeg = c2.GetBlob("CAT_GP_IMG") +'' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) +'' bmp.Initialize2(ins) +' Private thisProd As Map = prodsPromo.Get(p) +' If thisLog Then Log(thisProd) +' clv_prodsVariabes2.Add(CreateListItem2(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes2.AsView.Width, 50dip, Null, p), p) +' End If +' Next +' If pv2.Size = 0 Then +'' Log("PV2 = 0") +' l_prodsVariables2.Visible = False +' p_prodsVariables2.Visible = False +' +' p_prodsVariables.Height = 410dip +' clv_prodsVariabes.GetBase.Height = p_prodsVariables.Height - 20 +'' p_prodsVariables.Height = 380dip +'' clv_prodsVariabes.GetBase.Height = 380dip 'Cambiamos el tamaño y posición de la lista de productos +''' clv_prodsVariabes.GetBase.Width = +' clv_prodsVariabes.Base_Resize(clv_prodsVariabes.GetBase.Width, p_prodsVariables.Height - 20) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño. +' Else +' l_prodsVariables2.Visible = True +' p_prodsVariables2.Visible = True +' p_prodsVariables.Height = 210dip +' clv_prodsVariabes.GetBase.Height = p_prodsVariables.Height - 20 +' End If +' b_terminar1.Visible = False +' b_continuar.Visible = False +' cuentaProds +'End Sub +' +''Agregamos los productos fijos a una lista para despues meterlos en el pedido. +'Sub agregaFijosALista(mp As Map, addListItem As Boolean) +' Private thisLog As Boolean = False +' Private cont As Int = 0 +' prodsFijosTot = 0 +' Dim pf As List = mp.Get("prodsFijos") +' If pf.Size < 1 Then pf.Add("Sin productos fijos.") +'' Private m As Map +'' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0)) +'' prodsIds.Add(estaPromo) +' prodsIds.clear +' prodsCants.clear +' prodsPrecios.clear +' prodsIds.Add(estaPromo) +' prodsCants.Add(et_promoCant.text.As(Int)) +' prodsPrecios.Add(0) +' For Each p As String In pf +'' Log($"cont=${cont}, mp=${mp}"$) +' If mp.Get("prodsFijosPiezas").As(List).Size > 0 Then +' Private tpi As String = mp.Get("prodsFijosPiezas").As(List).Get(cont) +' Else +' Private tpi As String = 0 +' End If +' If mp.Get("prodsFijosPrecios").As(List).Size > 0 Then +' Private tpr As String = mp.Get("prodsFijosPrecios").As(List).Get(cont) +' Else +' Private tpr As String = 0 +' End If +' prodsFijosTot = prodsFijosTot + (tpi * tpr) +' If thisLog Then Log("|"&tpi&"|"&p) +' Private ntpi As Int = tpi * et_promoCant.text +' If addListItem And tpi > 0 Then lv_prodsFijos.AddSingleLine(ntpi & " " & Subs.traeProdNombre(p) & " - $" & tpr) +' cont = cont+1 +'' m=CreateMap("cant":tpi, "precio":tpr) +'' prodsMap.Put(p, m) +' prodsIds.Add(p) +' prodsCants.Add(tpi.As(Int)*et_promoCant.text.As(Int)) +' prodsPrecios.Add(tpr) '*et_promoCant.text.As(Int) +' Next +'End Sub +' +'Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore +' Dim p As B4XView = xui.CreatePanel("") +' p.SetLayoutAnimated(0, 0, 0, Width, Height) +' p.LoadLayout("prodItem1") +' l_prodX.TextSize = 15 +' l_prodX.Text = Text +' l_prodX.TextSize = 15 +'' p_prods.Height = Height + 70 +'' l_prodX.Height = Height +' p_prods.height = su.MeasureMultilineTextHeight(l_prodX, l_prodX.Text) + 20 'Calculamos la altura del panel de acuerdo al texto contenido. +' If p_prods.Height < Height Then p_prods.Height = Height +' l_prodX.Height = p_prods.Height +' l_pCant.Tag = precioU&"|"&inv&"|"&prodId +' et_pCant.Tag = precioU&"|"&inv&"|"&prodId +' et_pCant.BringToFront +'' i_prod.Bitmap = img +' p.Height = p_prods.Height +' Return p +'End Sub +' +'Sub CreateListItem2(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore +' Dim p As B4XView = xui.CreatePanel("") +' p.SetLayoutAnimated(0, 0, 0, Width, Height) +' p.LoadLayout("prodItem2") +' l_prodX.TextSize = 15 +' l_prodX.Text = Text +' l_prodX.TextSize = 15 +'' p_prods.Height = Height +'' l_prodX.Height = Height +' p_prods.height = su.MeasureMultilineTextHeight(l_prodX, l_prodX.Text) + 20 'Calculamos la altura del panel de acuerdo al texto contenido. +' If p_prods.Height < Height Then p_prods.Height = Height +' l_prodX.Height = p_prods.Height +'' l_pCant.Text = 0 +' l_pCant.Tag = precioU&"|"&inv&"|"&prodId +' et_pCant.Tag = precioU&"|"&inv&"|"&prodId +' et_pCant.BringToFront +'' i_prod.Bitmap = img +' p.Height = p_prods.Height +' Return p +'End Sub +' +'Sub b_prodMenos_Click +' Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender) +' Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index) +' Dim pnl As B4XView = pnl0.GetView(0) +'' Dim laCant As B4XView = pnl.GetView(5) +' Dim laCant As B4XView = pnl.GetView(2).GetView(4) +'' Log($"precio|stock:${laCant.tag}"$) +' laCant.Text = $"$1.0{laCant.Text-1}"$ +' If laCant.Text < 0 Then laCant.Text = 0 +' +'' Log(Regex.Split("\|", laCant.tag)(0)) +' Private precio As String = Regex.Split("\|", laCant.tag)(0) +'' Private inv As String = Regex.Split("\|", laCant.tag)(1) +' Private prodId As String = Regex.Split("\|", laCant.tag)(2) +' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) +'' Log(tmpMap) +' promosMap.Put(prodId, tmpMap) +' If laCant.Text = 0 Then promosMap.Remove(prodId) +'' LogColor(promosMap, Colors.Magenta) +' cuentaProds +'' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ +'' l_totProds.text = $"Total Productos: ${totalProds}"$ +'End Sub +' +'Sub b_prodMas_Click +' If prodsVar1 < prodsVarReq Then +' Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender) +' Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index) +' Dim pnl As B4XView = pnl0.GetView(0) +'' Dim laCant As B4XView = pnl.GetView(5) +' Dim laCant As B4XView = pnl.GetView(2).GetView(4) +'' Log($"precio|stock:${laCant.tag}"$) +'' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$) +' Dim esteTag As List = Regex.Split("\|", laCant.Tag) +'' Log(esteTag) +' If laCant.Text + 1 <= esteTag.get(1) Then +' laCant.Text = $"$1.0{laCant.Text+1}"$ +' cuentaProds +' End If +' +'' Log(Regex.Split("\|", laCant.tag)(0)) +' Private precio As String = Regex.Split("\|", laCant.tag)(0) +'' Private inv As String = Regex.Split("\|", laCant.tag)(1) +' Private prodId As String = Regex.Split("\|", laCant.tag)(2) +' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) +'' Log(tmpMap) +' promosMap.Put(prodId, tmpMap) +'' LogColor(promosMap, Colors.Magenta) +' End If +'' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) +'' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ +'' l_totProds.text = $"Total Productos: ${totalProds}"$ +'End Sub +' +' +'Sub b_prodMenos2_Click +' Dim index As Int = clv_prodsVariabes2.GetItemFromView(Sender) +' Dim pnl0 As B4XView = clv_prodsVariabes2.GetPanel(index) +' Dim pnl As B4XView = pnl0.GetView(0) +'' Dim laCant As B4XView = pnl.GetView(5) +' Dim laCant As B4XView = pnl.GetView(2).GetView(4) +'' Log($"precio|stock:${laCant.tag}"$) +' laCant.Text = $"$1.0{laCant.Text-1}"$ +' If laCant.Text < 0 Then laCant.Text = 0 +' +'' Log(Regex.Split("\|", laCant.tag)(0)) +' Private precio As String = Regex.Split("\|", laCant.tag)(0) +'' Private inv As String = Regex.Split("\|", laCant.tag)(1) +' Private prodId As String = Regex.Split("\|", laCant.tag)(2) +' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) +'' Log(tmpMap) +' promosMap.Put(prodId, tmpMap) +' If laCant.Text = 0 Then promosMap.Remove(prodId) +'' LogColor(promosMap, Colors.Magenta) +' cuentaProds +'' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ +'' l_totProds.text = $"Total Productos: ${totalProds}"$ +'End Sub +' +'Sub b_prodMas2_Click +'' Log(prodsVarReq & "|" & prodsVarReq2 & "|" & tpf & "|" & prodsVar2) +' If prodsVar2 < prodsVarReq2 Then +' Dim index As Int = clv_prodsVariabes2.GetItemFromView(Sender) +' Dim pnl0 As B4XView = clv_prodsVariabes2.GetPanel(index) +' Dim pnl As B4XView = pnl0.GetView(0) +'' Dim laCant As B4XView = pnl.GetView(5) +' Dim laCant As B4XView = pnl.GetView(2).GetView(4) +'' Log($"precio|stock:${laCant.tag}"$) +'' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$) +' Dim esteTag As List = Regex.Split("\|", laCant.Tag) +'' Log(esteTag) +' If laCant.Text + 1 <= esteTag.get(1) Then +' laCant.Text = $"$1.0{laCant.Text+1}"$ +' cuentaProds +' End If +' +'' Log(Regex.Split("\|", laCant.tag)(0)) +' Private precio As String = Regex.Split("\|", laCant.tag)(0) +'' Private inv As String = Regex.Split("\|", laCant.tag)(1) +' Private prodId As String = Regex.Split("\|", laCant.tag)(2) +' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) +'' Log(tmpMap) +' promosMap.Put(prodId, tmpMap) +'' LogColor(promosMap, Colors.Magenta) +' End If +'' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) +'' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ +'' l_totProds.text = $"Total Productos: ${totalProds}"$ +'End Sub +' +' +'Private Sub et_pCant_TextChanged (Old As String, New As String) +'' LogColor("txt changed",Colors.Magenta) +' cuentaProds +'End Sub +' +'Sub cuentaProds +'' Log("=====================================================") +'' Log("Inicia cuentaProds") +' Private thisLog As Boolean = False +'' LogColor($"ProdsFijos=${tpf}, totalProds=${totalProds}, totalCompra=${totalCompra}"$, Colors.Red) +' prodsIds2.Clear +' prodsCants2.Clear +' prodsPrecios2.Clear +' lv_prodsFijos.Clear +' prodsVar1 = 0 +' prodsVar2 = 0 +' agregaFijosALista(Subs.traePromo(estaPromo, esteCliente), True) +'' Log(prodsIds) +' Private tcpf As Float = 0 'Total de compra de productos fijos. +' For pf = 0 To prodsIds.Size - 1 +' If thisLog Then Log($"${tcpf} + ${prodsCants.Get(pf)} * ${prodsPrecios.Get(pf)} = ${(prodsPrecios.Get(pf) * prodsCants.Get(pf))}"$) +' tcpf = tcpf + (prodsPrecios.Get(pf) * prodsCants.Get(pf)) +' Next +'' Log("Total compra prodsFijos = " & tcpf) +' totalCompra = tcpf +' totalProds = tpf 'Cantidad total de productos fijos. +' 'Variables1 +' For i = 0 To clv_prodsVariabes.GetSize - 1 +' Private p0 As B4XView = clv_prodsVariabes.GetPanel(i) +' Private p As B4XView = p0.GetView(0) +' Private cant1 As B4XView = p.GetView(2).GetView(4) +' If cant1.Text = "" Then cant1.Text = 0 +' totalProds = totalProds + cant1.Text +' prodsVar1 = prodsVar1 + cant1.Text +' Private esteTag As List = Regex.Split("\|", cant1.Tag) +' If cant1.Text > esteTag.Get(1) Then cant1.Text = esteTag.Get(1) +' If cant1.Text > 0 Then +'' Log(esteTag.Get(2) & "|" & cant1.Text) +' totalCompra = totalCompra + (esteTag.get(0) * cant1.text) +' If thisLog Then Log($"Cant: ${cant1.Text}, Suma: ${totalCompra}"$) +' prodsIds2.Add(esteTag.Get(2)) +' prodsCants2.Add(cant1.Text) +' prodsPrecios2.Add(esteTag.get(0)) +' End If +' l_total.Text = $"Total: $$1.2{totalCompra}"$ +' l_totProds.text = $"Productos: ${totalProds}"$ +' Next +' 'Variables2 +' For i = 0 To clv_prodsVariabes2.GetSize - 1 +' Private p0 As B4XView = clv_prodsVariabes2.GetPanel(i) +' Private p As B4XView = p0.GetView(0) +' Private cant2 As B4XView = p.GetView(2).GetView(4) +' totalProds = totalProds + cant2.Text +' prodsVar2 = prodsVar2 + cant2.Text +' Private esteTag As List = Regex.Split("\|", cant2.Tag) +' If cant2.Text > esteTag.Get(1) Then cant2.Text = esteTag.Get(1) +' If cant2.Text > 0 Then +'' Log(esteTag.Get(2) & "|" & cant2.Text) +' totalCompra = totalCompra + (esteTag.get(0) * cant2.text) +' If thisLog Then Log($"Cant: ${cant2.Text}, Suma: ${totalCompra}"$) +' prodsIds2.Add(esteTag.Get(2)) +' prodsCants2.Add(cant2.Text) +' prodsPrecios2.Add(esteTag.get(0)) +' End If +' l_total.Text = $"Total: $$1.2{totalCompra}"$ +' l_totProds.text = $"Productos: ${totalProds}"$ +' Next +' +' If thisLog Then Log($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$) +' l_total.Text = $"Total: $$1.2{totalCompra}"$ +' l_totProds.text = $"Productos: ${totalProds}"$ +' If totalProds < prodsVarReq + prodsVarReq2 + tpf Or totalProds > prodsVarReq + prodsVarReq2 + tpf Then +'' Log("INCOMPLETA") +' b_terminar1.Visible = False +' b_continuar.Visible = False +' Else +'' Log("COMPLETA") +' b_terminar1.Visible = True +' b_continuar.Visible = True +' End If +' If thisLog Then LogColor($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$, Colors.blue) +' If thisLog Then LogColor($"${prodsIds2}${CRLF}${prodsCants2}${CRLF}${prodsPrecios2}"$, Colors.Magenta) +'' LogColor($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$, Colors.Blue) +'End Sub +' +'Private Sub et_pCant_FocusChanged (HasFocus As Boolean) +' LogColor("focus changed", Colors.Magenta) +' cuentaProds +'End Sub +' +'Private Sub b_promoMenos_Click +' If et_promoCant.Text > 1 Then +' et_promoCant.Text = et_promoCant.Text.As(Int) - 1 +' End If +' l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$ +' l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq_ * et_promoCant.Text.As(Int)}"$ +' l_prodsVariables2.Text = $"Productos variables2 requeridos: ${prodsVarReq2_ * et_promoCant.Text.As(Int)}"$ +' tpf = tpf2 * et_promoCant.Text.As(Int) +' prodsVarReq = prodsVarReq_ * et_promoCant.Text.As(Int) +' prodsVarReq2 = prodsVarReq2_ * et_promoCant.Text.As(Int) +' Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) +' cuentaProds +'End Sub +' +'Private Sub b_promoMas_Click +' If et_promoCant.Text < maxCantPromos Then +' et_promoCant.Text = et_promoCant.Text.As(Int) + 1 +' l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$ +' l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq_ * et_promoCant.Text.As(Int)}"$ +' l_prodsVariables2.Text = $"Productos variables2 requeridos: ${prodsVarReq2_ * et_promoCant.Text.As(Int)}"$ +' tpf = tpf2 * et_promoCant.Text.As(Int) +' prodsVarReq = prodsVarReq_ * et_promoCant.Text.As(Int) +' prodsVarReq2 = prodsVarReq2_ * et_promoCant.Text.As(Int) +' Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) +' End If +' If et_promoCant.text > maxCantPromos Then et_promoCant.Text = maxCantPromos +' cuentaProds +'End Sub +' +'Private Sub b_terminar1_Click +' cuentaProds +' Log("====================================================================") +' 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)) +' If prodsCants.Get(t) > 0 Then Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta(Subs.traeCliente), 0, B4XPages.MainPage.tipo_venta,0,0) +' Next +' For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. +' Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) +' Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta(Subs.traeCliente), 0, B4XPages.MainPage.tipo_venta,0,0) +' Next +'' Log(B4XPages.MainPage.productos.prodsMap) +'' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra. +'' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo) +''' Log(tmpMap) +'' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap) +'' Next +'' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra. +'' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo) +''' Log(tmpMap) +'' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) +'' Next +'' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) +' lv_prodsFijos.Clear +' B4XPages.MainPage.bTerminarClicked = True +' B4XPages.ShowPage("productos") +' B4XPages.MainPage.productos.b_terminar1_Click +'End Sub +' +'Private Sub b_continuar_Click +' cuentaProds +' Log("====================================================================") +' 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(Subs.traeCliente), 0, B4XPages.MainPage.tipo_venta,0,0) +' Next +' For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. +' Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) +' Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta(Subs.traeCliente), 0, B4XPages.MainPage.tipo_venta,0,0) +' Next +'' Log(B4XPages.MainPage.productos.prodsMap) +'' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra. +'' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo) +''' Log(tmpMap) +'' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap) +'' Next +'' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra. +'' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo) +''' Log(tmpMap) +'' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) +'' Next +'' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) +' lv_prodsFijos.Clear +'' Activity_KeyPress(KeyCodes.KEYCODE_BACK) +'' CallSubDelayed2(productos, "Activity_KeyPress", KeyCodes.KEYCODE_BACK) +' Private prodspage As C_Productos +' If prodspage.IsInitialized Then +' prodspage.lv_catalogos.Visible = True +' prodspage.lv_promos.Visible = False +' prodspage.clv_productos.AsView.Visible = False +' End If +' B4XPages.MainPage.bTerminarClicked = True +' B4XPages.ShowPage("productos") +'End Sub +' +''Sub Activity_KeyPress (key As Int) As Boolean 'ignore +'' ' BACK key pressed +'' Log("Keypress") +'' If key=KeyCodes.KEYCODE_BACK Then +'' Log("BACK") +'' Return False +'' End If +'' Return False +'' ' Returning False signals the system to handle the key +''End Sub + Sub Class_Globals Private Root As B4XView 'ignore Private xui As XUI @@ -205,7 +807,7 @@ Sub muestraPromo(promo As String, cliente As String) clv_prodsVariabes.GetBase.Height = p_prodsVariables.Height - 20 ' p_prodsVariables.Height = 380dip ' clv_prodsVariabes.GetBase.Height = 380dip 'Cambiamos el tamaño y posición de la lista de productos -'' clv_prodsVariabes.GetBase.Width = + '' clv_prodsVariabes.GetBase.Width = clv_prodsVariabes.Base_Resize(clv_prodsVariabes.GetBase.Width, p_prodsVariables.Height - 20) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño. Else l_prodsVariables2.Visible = True @@ -544,12 +1146,12 @@ Private Sub b_terminar1_Click ' Log(B4XPages.MainPage.productos.prodsMap) ' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra. ' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo) -'' Log(tmpMap) + '' Log(tmpMap) ' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap) ' Next ' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra. ' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo) -'' Log(tmpMap) + '' Log(tmpMap) ' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) ' Next ' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) @@ -573,12 +1175,12 @@ Private Sub b_continuar_Click ' Log(B4XPages.MainPage.productos.prodsMap) ' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra. ' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo) -'' Log(tmpMap) + '' Log(tmpMap) ' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap) ' Next ' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra. ' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo) -'' Log(tmpMap) + '' Log(tmpMap) ' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) ' Next ' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas index 781fdf1..4272e8b 100644 --- a/B4A/C_Subs.bas +++ b/B4A/C_Subs.bas @@ -524,7 +524,7 @@ End Sub Sub traeRuta As String 'ignore Private c As Cursor Private r As String - c = db.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + c = db.ExecQuery("select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") r = "0" If c.RowCount > 0 Then c.Position=0 diff --git a/B4A/C_TicketsDia.bas b/B4A/C_TicketsDia.bas index 1ccb039..adefa1e 100644 --- a/B4A/C_TicketsDia.bas +++ b/B4A/C_TicketsDia.bas @@ -56,7 +56,7 @@ End Sub Sub B4XPage_Appear nombre_boton = "NOVENTA" - c=B4XPages.MainPage.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente UNION select CAT_CL_NOMBRE from kmt_info2 where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") + c=B4XPages.MainPage.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info3 where cat_cl_codigo = pc_cliente UNION select CAT_CL_NOMBRE from kmt_info32 where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") Dim noArticulos As Int = 0 ListView1.Clear @@ -120,7 +120,7 @@ Sub b_noventa_Click If nombre_boton = "NOVENTA" Then nombre_boton = "VENTA" b_noventa.Text ="VENTA" - c=B4XPages.MainPage.skmt.ExecQuery("select NV_CLIENTE,NV_MOTIVO,NV_COMM, (select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = NV_CLIENTE ) as NOMBRE FROM NOVENTA ORDER BY NV_CLIENTE asc") + c=B4XPages.MainPage.skmt.ExecQuery("select NV_CLIENTE,NV_MOTIVO,NV_COMM, (select CAT_CL_NOMBRE from kmt_info3 where cat_cl_codigo = NV_CLIENTE ) as NOMBRE FROM NOVENTA ORDER BY NV_CLIENTE asc") ListView1.Clear If c.RowCount>0 Then For i=0 To c.RowCount -1 @@ -139,7 +139,7 @@ Sub b_noventa_Click Else nombre_boton = "NOVENTA" b_noventa.Text ="NO VENTA" - c=B4XPages.MainPage.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") + c=B4XPages.MainPage.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info3 where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") ListView1.Clear If c.RowCount>0 Then diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal index e3b83c5..b165176 100644 Binary files a/B4A/Files/cliente.bal and b/B4A/Files/cliente.bal differ diff --git a/B4A/Files/login.bal b/B4A/Files/login.bal index ed1e732..652fc8c 100644 Binary files a/B4A/Files/login.bal and b/B4A/Files/login.bal differ diff --git a/B4A/Files/nuevocliente.bal b/B4A/Files/nuevocliente.bal index 86a42f2..3080bc8 100644 Binary files a/B4A/Files/nuevocliente.bal and b/B4A/Files/nuevocliente.bal differ diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal index 6c57517..47f9fd6 100644 Binary files a/B4A/Files/principal.bal and b/B4A/Files/principal.bal differ diff --git a/B4A/IZCA.b4a b/B4A/IZCA.b4a index abdd52f..fa68369 100644 --- a/B4A/IZCA.b4a +++ b/B4A/IZCA.b4a @@ -199,7 +199,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: IZCA #VersionCode: 1 - #VersionName: 5.08.11 + #VersionName: 5.09.20 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/IZCA.b4a.meta b/B4A/IZCA.b4a.meta index c29d833..7b842f2 100644 --- a/B4A/IZCA.b4a.meta +++ b/B4A/IZCA.b4a.meta @@ -94,6 +94,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=Tracker,StartFLPSmall,103,0,C_NuevoCliente,B4XPage_Appear,117,0,C_NuevoCliente,cb_giro_SelectedIndexChanged,438,0,C_NuevoCliente,PointInPolygon,216,0,C_NuevoCliente,p_nuevoCliente_Click,392,0,Diseñador Visual,nuevocliente.bal,-100,6,C_NuevoCliente,et_cp_TextChanged,433,6,C_Cliente,GPS_LocationChanged,566,0,C_NuevoCliente,GUARDA_Click,243,2,C_Principal,Class_Globals,0,0,C_Principal,connecta_Click,2399,0 +NavigationStack=C_Principal,B4XPage_Created,305,0,C_Cliente,b_venta_Click,2007,0,C_Cliente,b_ventaabordo_Click,2708,0,Starter,ENVIA_ULTIMA_GPS,100,0,C_Cliente,GPS_LocationChanged,577,1,C_Principal,e_ruta_EnterPressed,2463,0,C_Principal,B4XPage_Appear,613,2,Diseñador Visual,principal.bal,-100,5,Main,Process_Globals,18,0,Main,Activity_Create,28,0,Main,Activity_ActionBarHomeClick,35,0 SelectedBuild=0 -VisibleModules=1,2,3,4,5,6,7,8,9,10,13 +VisibleModules=1,2,3,4,5,6,7,8,9,10 diff --git a/B4A/MAPA_CLIENTE.bas b/B4A/MAPA_CLIENTE.bas index 967334f..93449d5 100644 --- a/B4A/MAPA_CLIENTE.bas +++ b/B4A/MAPA_CLIENTE.bas @@ -55,7 +55,7 @@ Sub MapFragment1_Ready JavaMapsObject = gmap.GetUiSettings JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True)) Dim marcador1 As Marker = gmap.AddMarker (latmarker,longmarker, "TIENDA") - c = Starter.skmt.ExecQuery("SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION ALL SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info2 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + c = Starter.skmt.ExecQuery("SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info3 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION ALL SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info32 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") If c.RowCount > 0 Then c.Position = 0 @@ -102,7 +102,7 @@ Sub Activity_Resume Else GPS.Start(0, 0) End If - c = Starter.skmt.ExecQuery("SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION ALL SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info2 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + c = Starter.skmt.ExecQuery("SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info3 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA) UNION ALL SELECT CAT_CL_LAT, CAT_CL_LONG, CAT_CL_NOMBRE FROM kmt_info32 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") If c.RowCount > 0 Then c.Position = 0 diff --git a/B4A/MAPA_RUTAS.bas b/B4A/MAPA_RUTAS.bas index 3991c7c..a4882ea 100644 --- a/B4A/MAPA_RUTAS.bas +++ b/B4A/MAPA_RUTAS.bas @@ -166,7 +166,7 @@ Sub MapFragment1_Ready '''''''----------------------------MARKER AZUL - POR VISITAR If azul = 1 Or todos = 1 Then c.IsInitialized - c=skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_NOMBRE,CAT_CL_LAT,CAT_CL_LONG from kmt_info where gestion = 0 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_LAT <> ' ' and CAT_CL_LONG <> ' ' and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") + c=skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_NOMBRE,CAT_CL_LAT,CAT_CL_LONG from kmt_info3 where gestion = 0 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_LAT <> ' ' and CAT_CL_LONG <> ' ' and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") ' skmt.Initialize(ruta,"kmt.db", True) Log($"============== Resultados = ${c.RowCount}"$) If c.RowCount > 0 Then @@ -193,7 +193,7 @@ Sub MapFragment1_Ready '''''''----------------------------MARKER VERDE - VENTA If verde = 1 Or todos = 1 Then c2.IsInitialized - c2=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1 UNION select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info2 where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") + c2=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info3 where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1 UNION select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info32 where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") Log($"============== Resultados = ${c2.RowCount}"$) For i = 0 To c2.RowCount -1 c2.Position = i @@ -210,7 +210,7 @@ Sub MapFragment1_Ready Else If verde = 1 Or todos = 1 Then c2.IsInitialized - c2=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") + c2=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info3 where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") Log($"============== Resultados = ${c2.RowCount}"$) For i = 0 To c2.RowCount -1 c2.Position = i @@ -230,7 +230,7 @@ Sub MapFragment1_Ready If rojo = 1 Or todos = 1 Then c3.IsInitialized - c3=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") + c3=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info3 where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") Log($"============== Resultados = ${c3.RowCount}"$) For i = 0 To c3.RowCount -1 c3.Position = i @@ -245,7 +245,7 @@ Sub MapFragment1_Ready Else If rojo = 1 Or todos = 1 Then c3.IsInitialized - c3=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") + c3=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT from kmt_info3 where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 and CAT_CL_CODIGO <> 0 and CAT_CL_CODIGO <> 1") Log($"============== Resultados = ${c3.RowCount}"$) For i = 0 To c3.RowCount -1 c3.Position = i diff --git a/B4A/Subs.bas b/B4A/Subs.bas index f792a60..0f394b8 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -4,6 +4,1684 @@ ModulesStructureVersion=1 Type=StaticCode Version=11 @EndOfDesignText@ +''Code module +''Subs in this code module will be accessible from all modules. +'Sub Process_Globals +' 'These global variables will be declared once when the application starts. +' 'These variables can be accessed from all modules. +' Public GZip As GZipStrings 'Usa la libreria CompressStrings +' Private su As StringUtils 'Usa la libreria StringUtils +' Dim phn As Phone +' Dim devModel As String +' Dim kmt, errorLog As SQL 'Requiere la libreria "SQL" +'' Dim wifi As MLwifi +' Dim ssid As String 'ignore +' Dim rutaMaxPoints As Int = 3000 +' Dim rutaHrsAtras As Int = 48 +'' Dim rutaInicioHoy As String = "" +' Private subsLogs As Boolean = False +'End Sub +' +''Pone el valor de phn.Model en la variable global "devModel" +'Sub getPhnId As String 'ignore +' 'Requiere la libreria "Phone" +' devModel = phn.Model +' If devModel.Length <= 3 Then 'Si phn.Model esta en blanco ... +' Dim t As String = phn.GetSettings("android_id") 'Intentamos con "android_id" +' devModel = t +' End If +' If devModel.Length >= 3 Then 'Si tenemos valor para phn.Model +' File.WriteString(File.DirInternal, "phnId.txt", devModel) 'Sobreescribimos archivo phnId.txt with deviceId +'' Log("Tenemos phnId: "&devModel&" "&File.DirInternal&"/phn.txt sobreescrito") +' Else If devModel.Length < 3 Then ' Si no tenemos valor, lo leemos de phnId.txt +' Dim s As String = File.ReadString(File.DirInternal, "phnId.txt") +' devModel = s +'' Log("Leemos id de "&File.DirInternal&"/phnId.txt") +'' Log(devModel) +' End If +' Return devModel +'End Sub +' +''Centra un boton dentro de un elemento superior +'Sub centraBoton(elemento As Button, anchoElementoSuperior As Int) 'ignore +' elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +'End Sub +' +''Comprime y regresa un texto (str) en base64 +'Sub compress(str As String) As String 'ignore +' 'Requiere la libreria "CompressStrings" +' Dim compressed() As Byte = GZip.compress(str) +'' Log($"UncompressedBytesLength: ${str.Length}"$) +'' Log($"CompressedBytesLength: ${compressed.Length}"$) +' Dim base64 As String = su.EncodeBase64(compressed) +' Log($"Comprimido: ${base64.Length}"$) +'' Log($"CompressedBytes converted to base64: ${base64}"$) +' Return base64 +'End Sub +' +''Descomprime y regresa un texto en base64 +'Sub decompress(base64 As String) As String 'ignore +' Dim decompressedbytes() As Byte = su.DecodeBase64(base64) +'' Log($"decompressedbytesLength: ${decompressedbytes.Length}"$) +' Dim bc As ByteConverter +' Dim uncompressed As String = bc.StringFromBytes(decompressedbytes,"UTF8") +' Log($"Descomprimido: ${uncompressed.Length}"$) +'' Log($"Decompressed String = ${uncompressed}"$) +' Return uncompressed +'End Sub +' +''Convierte una fecha al formato yyMMddHHmmss +'Sub fechaKMT(fecha As String) As String 'ignore +'' Log(fecha) +' Dim OrigFormat As String = DateTime.DateFormat 'save orig date format +' DateTime.DateFormat="yyMMddHHmmss" +' Dim nuevaFecha As String=DateTime.Date(fecha) +' DateTime.DateFormat=OrigFormat 'return to orig date format +'' Log(nuevaFecha) +' Return nuevaFecha +'End Sub +' +''Genera una notificacion con importancia alta +'Sub notiHigh(title As String, body As String, activity As Object) 'ignore +' Private notif As Notification +' notif.Initialize2(notif.IMPORTANCE_HIGH) +' notif.Icon = "icon" +' notif.Vibrate = False +' notif.Sound = False +' notif.AutoCancel = True +' Log("notiHigh: "&title) +' notif.SetInfo(title, body, activity) +'' Log("notiHigh SetInfo") +' notif.Notify(777) +'End Sub +' +''Regresa el objeto de una notificacion con importancia baja +'Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore +' Private notification As Notification +' notification.Initialize2(notification.IMPORTANCE_LOW) +' Log("notiLowReturn: "&title) +' notification.Icon = "icon" +' notification.Sound = False +' notification.Vibrate = False +' notification.SetInfo(title, Body, Main) +' notification.Notify(id) +'' Log("notiLowReturn SetInfo") +' Return notification +'End Sub +' +''Escribimos las coordenadas y fecha a un archivo de texto +'Sub guardaInfoEnArchivo(coords As String) 'ignore +' ' Cambiamos el formato de la hora +' Dim OrigFormat As String=DateTime.DateFormat 'save orig date format +' DateTime.DateFormat="MMM-dd HH:mm:ss" +' Dim lastUpdate As String=DateTime.Date(DateTime.Now) +' DateTime.DateFormat=OrigFormat 'return to orig date format +' +' Dim ubic As String = coords&","&lastUpdate +' Dim out As OutputStream = File.OpenOutput(File.DirInternal, "gps.txt", True) +' Dim s As String = ubic & CRLF +' Dim t() As Byte = s.GetBytes("UTF-8") +' out.WriteBytes(t, 0, t.Length) +' out.Close +'End Sub +' +''Escribimos las coordenadas (latitud, longitud, fecha) y fecha a una BD +'Sub guardaInfoEnBD(coords As String) 'ignore +' Log("Guardamos ubicacion en BD - "&coords) +' Try +' Dim latlon() As String = Regex.Split("\|", coords) +' If latlon.Length < 2 Then latlon = Regex.Split(",", coords) 'Si son menos de 2, entonces estan separadas por comas y no por "|" +' If subsLogs Then Log("LatLon="&latlon) +' kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(FECHA, LAT, LON) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1))) +' Catch +' LogColor(LastException, Colors.red) +' End Try +'End Sub +' +''Regresa la ruta solicitada comprimida y en base64 +'Sub dameRuta(inicioRuta As String, origenRuta As String) As String 'ignore +' 'Requiere la libreria "SQL" +' Dim fechaInicio As String +' Try 'incioRuta es numero +' inicioRuta = inicioRuta * 1 +'' Log("fechaInicio numerica="&fechaInicio) +' fechaInicio = fechaKMT(DateTime.Now - (DateTime.TicksPerHour * inicioRuta)) +' Catch 'inicioRuta es string +' fechaInicio = fechaInicioHoy +'' Log("fechaInicio string="&fechaInicio) +' End Try +' If subsLogs Then Log("fechaInicio: "&fechaInicio&" | rutaHrsAtras="&rutaHrsAtras) 'fechaKMT(DateTime.Now) +' Dim c As Cursor +' If kmt.IsInitialized = False Then kmt.Initialize(Starter.ruta, "kmt.db", True) +' If subsLogs Then Log("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints) +' c = kmt.ExecQuery("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints) +' c.Position = 0 +' Dim ruta2 As String = "" +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' ruta2=ruta2&CRLF&c.GetString("LAT")&","&c.GetString("LON")&","&c.GetString("FECHA") +' B4XPages.MainPage.fechaRuta = c.GetString("FECHA") +' Next +' End If +' c.Close +' Return compress(ruta2) +'End Sub +' +''Limpiamos la tabla RUTA_GPS de la BD +'Sub deleteGPS_DB 'ignore +' kmt.ExecNonQuery("delete from RUTA_GPS") +' kmt.ExecNonQuery("vacuum;") +' ToastMessageShow("Borramos BD Coords GPS", False) +'End Sub +' +''Limpiamos la tabla errorLog de la BD +'Sub deleteErrorLog_DB 'ignore +' errorLog.ExecNonQuery("delete from errores") +' errorLog.ExecNonQuery("vacuum;") +' ToastMessageShow("BD Errores Borrada", False) +'End Sub +' +''Borramos el archio "gps.txt" +'Sub borramosArchivoGPS 'ignore +' Dim out As OutputStream = File.OpenOutput(File.DirInternal, "gps.txt", False) +' Dim s As String = "" +' Dim t() As Byte = s.GetBytes("UTF-8") +' out.WriteBytes(t, 0, t.Length) +' out.Close +'End Sub +' +''Revisa que exista la BD y si es necesario crea algunans tablas dentro de ella +'Sub revisaBD 'ignore +'' Main.ruta = File.DirInternal +'' Log(Starter.ruta) +'' Log(File.Exists(Starter.ruta, "kmt.db")) +' If Not(File.Exists(Starter.ruta, "kmt.db")) Then +' File.Copy(File.DirAssets, "kmt.db", Starter.ruta, "kmt.db") +' LogColor("copiamos kmt.db de "&File.DirAssets & " a " & Starter.ruta,Colors.Green) +' End If +' If Not(kmt.IsInitialized) Then kmt.Initialize(Starter.ruta, "kmt.db", True) +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT)") +'' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS UUC(fecha INTEGER, lat TEXT, lon TEXT)") 'LastKnownLocation +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora +'' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_AVANCE(HA_MARCA TEXT, HA_AVANCE TEXT, HA_OBJETIVO TEXT, HA_PORCENTAJE TEXT)") 'Historico avance mes actual +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOSP(NOTA TEXT, CLIENTE TEXT, SALDO_PENDIENTE TEXT)") +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_NUEVO(CN_ID_CLIENTE TEXT, CN_NOMBRE TEXT, CN_enviado text)") +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_SUPLENCIA(RS_RUTA TEXT)") +' Try 'Si no existe la columna PC_ENVIO_OK la agregamos. +' kmt.ExecQuery("select count(PC_ENVIO_OK) from PEDIDO_CLIENTE") +' Catch +' Try +' kmt.ExecNonQuery("ALTER TABLE PEDIDO_CLIENTE ADD COLUMN PC_ENVIO_OK INTEGER") +' Catch +' LogColor("No pudimos agregar la columna PC_ENVIO_OK.", Colors.Red) +' LogColor(LastException, Colors.Red) +' End Try +' End Try +' +' Try 'Si no existe la columna CAT_CL_DIAS_VISITA la agregamos. +' kmt.ExecQuery("select count(CAT_CL_DIAS_VISITA) from kmt_info32") +' Catch +' Try +' kmt.ExecNonQuery("ALTER TABLE kmt_info32 ADD COLUMN CAT_CL_DIAS_VISITA TEXT") +' Catch +' LogColor("No pudimos agregar la columna CAT_CL_DIAS_VISITA.", Colors.Red) +' LogColor(LastException, Colors.Red) +' End Try +' End Try +' +' Try 'Si no existe la columna PC_ENVIO_OK la agregamos. +' kmt.ExecQuery("select count(PC_TIEMPO_TIENDA) from PEDIDO_CLIENTE") +' Catch +' Try +' kmt.ExecNonQuery("ALTER TABLE PEDIDO_CLIENTE ADD COLUMN PC_TIEMPO_TIENDA FLOAT") +' Catch +' LogColor("No pudimos agregar la columna PC_TIEMPO_TIENDA.", Colors.Red) +' LogColor(LastException, Colors.Red) +' End Try +' End Try +' Try 'Si no existe la columna PC_FACTURA la agregamos. +' kmt.ExecQuery("select count(PC_FACTURA) from PEDIDO_CLIENTE") +' Catch +' Try +' kmt.ExecNonQuery("ALTER TABLE PEDIDO_CLIENTE ADD COLUMN PC_FACTURA INTEGER") +' Catch +' LogColor("No pudimos agregar la columna PC_FACTURA.", Colors.Red) +' LogColor(LastException, Colors.Red) +' End Try +' End Try +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora +'' kmt.ExecNonQuery("drop table PEDIDO_INICIO_FINAL") 'Bitacora +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO_INICIO_FINAL(PIF_CLIENTE TEXT, PIF_HORA_INICIO LONG, PIF_HORA_FINAL LONG)") 'Bitacora +' +' 'Tabla para la bitacora de errores +' If Not(errorLog.IsInitialized) Then errorLog.Initialize(Starter.ruta, "errorLog.db", True) +' errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)") +'End Sub +' +''Obtiene el ssid al que esta conectado el telefono +'Sub getSSID 'ignore +'' 'Requiere la libreria "MLWifi400" +'' If wifi.isWifiConnected Then +'' ssid = wifi.WifiSSID +'' End If +'End Sub +' +''Convierte un texto en formato JSON a un objeto "Map" +'Sub JSON2Map(theJson As String) As Map 'ignore +' 'Requiere la libreria "JSON" +' Try +' Private json As JSONParser +' json.Initialize(theJson) +' Return json.NextObject +' Catch +' Log(LastException) +' log2DB("JSON2Map: "&LastException) +' Private m As Map = CreateMap("title":"Error generating JSON", "t":"Error", "Message":LastException, "text" : LastException) +' Return m +' End Try +'End Sub +' +''Convierte un mapa a formato JSON +'Sub map2JSON(m As Map) As String 'ignore +' 'Requiere la libreria "JSON" +' 'Convierte un objecto "Map" a JSON +' Dim jg As JSONGenerator +' jg.Initialize(m) +' Dim t As String = jg.ToString +' Return t +'End Sub +' +''Mandamos "coords" en un mensaje a "Sprvsr" +''Sub mandamosLoc(coords As String) 'ignore +''' Log("Iniciamos mandamosLoc "&coords) +''' Log("locRequest="&Tracker.locRequest) +'' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd +'' Dim t As String +'' If Tracker.locRequest="Activa" Then +'' If PushService.au = 1 Then +'' t = "au" ' es una actualizacion +'' Else +'' t = "u" ' es una peticion +'' End If +'' Dim params As Map = CreateMap("topic":"Sprvsr", "coords":coords, "t":t, "b":PushService.battery, "mt":Main.montoActual) +'' CallSub2(PushService, "mandaMensaje",params) +'' Tracker.locRequest="Enviada" +'' CallSubDelayed(Tracker,"CreateLocationRequest") +'' End If +''End Sub +' +''Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS" +'Sub fechaInicioHoy As String 'ignore +' Dim OrigFormat As String = DateTime.DateFormat 'save orig date format +' DateTime.DateFormat="yyMMdd" +' Private h As String = DateTime.Date(DateTime.Now)&"000000" +' DateTime.DateFormat=OrigFormat 'return to orig date format +' Log("Hoy="&h) +' Return h +'End Sub +' +''Guardamos "texto" a la bitacora +'Sub log2DB(texto As String) 'ignore +' LogColor(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'", Colors.LightGray) +' kmt.ExecNonQuery2("INSERT INTO bitacora(fecha, texto) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), texto)) +'End Sub +' +''Regresa verdadero si ya pasaron XX minutos de la fecha dada +'Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore +' If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then +' Return True +' Else +' Return False +' End If +'End Sub +' +''Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada +'Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore +' Try +' ' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red) +' If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then +' ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) +' Return True +' Else +' ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now)) +' Return False +' End If +' Catch +' Log(LastException) +' End Try +'End Sub +' +''Limpiamos la tabla "bitacora" de la BD +'Sub borraLogDB 'ignore +' LogColor("Borramos BD de log", Colors.Magenta) +' kmt.ExecNonQuery("delete from bitacora") +' kmt.ExecNonQuery("vacuum;") +'End Sub +' +''Monitoreamos los servicios para ver si estan activos (No pausados), y si no, los reniciamos +''Sub Monitor 'ignore +'' Private monitorStatus As Boolean = True +'' LogColor("Corriendo Subs.Monitor", Colors.RGB(161,150,0)) +'' If IsPaused(Tracker) Then +'' log2DB("Reiniciando 'Tracker Pausado' desde Subs.Monitor") +'' StartService(Tracker) +'' monitorStatus = False +'' Else +'' CallSubDelayed(Tracker, "revisaFLP") +'' End If +'' If IsPaused(PushService) Then +'' log2DB("Reiniciando 'PushService Pausado' desde Subs.Monitor") +'' StartService(PushService) +'' monitorStatus = False +'' Else +'' revisaPushService +'' End If +'' If monitorStatus Then LogColor(" +++ +++ Servicios Activos", Colors.Green) +''End Sub +' +''Compara la UUG (Ultima Ubicacion Guardada) con FLP.LastKnowLocation y si +''cumple con los requisitos de distancia y precision la guardamos en la BD. +'Sub revisaUUG 'ignore +' Try +'' revisaFLP +' If Tracker.FLP.GetLastKnownLocation.IsInitialized Then +' Dim daa As Int = Tracker.UUGCoords.DistanceTo(Tracker.FLP.GetLastKnownLocation) 'Distancia de la UUG a la actual de Tracker.FLP.GetLastKnownLocation +' If Starter.Logger Then LogColor($"**** UUC "${fechaKMT(Tracker.FLP.GetLastKnownLocation.Time)}|$0.2{Tracker.FLP.GetLastKnownLocation.Accuracy}|$0.8{Tracker.FLP.GetLastKnownLocation.Latitude}|$0.8{Tracker.FLP.GetLastKnownLocation.Longitude}|$0.2{Tracker.FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35)) +' If daa > 40 And Tracker.FLP.GetLastKnownLocation.Accuracy < 35 Then 'Si la distancia de la ubicacion anterior es mayor de XX y la precision es menor de XX, la guardamos ... +' kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (fechaKMT(Tracker.FLP.GetLastKnownLocation.Time),Tracker.FLP.GetLastKnownLocation.Latitude,Tracker.FLP.GetLastKnownLocation.Longitude)) +' If Starter.Logger Then Log("++++ Distancia a anterior="&daa&"|"&"Precision="&Tracker.FLP.GetLastKnownLocation.Accuracy) +' End If +' Tracker.UUGCoords = Tracker.FLP.GetLastKnownLocation +' End If +' Catch +' LogColor("If Tracker.FLP.GetLastKnownLocation.IsInitialized --> "&LastException, Colors.Red) +' End Try +'End Sub +' +''Revisamos que el FLP (FusedLocationProvider) este inicializado y activo +'Sub revisaFLP 'ignore +' LogColor("**** **** Revisamos FLP **** ****", Colors.RGB(78,0,227)) +' Private todoBienFLP As Boolean = True +' Try +' If Not(Tracker.FLP.IsInitialized) Then +' log2DB("revisaFLP: No esta inicializado ... 'Reinicializando FLP'") +' Tracker.FLP.Initialize("flp") +' todoBienFLP = False +' End If +' Catch +' LogColor("If Not(Tracker.FLP.IsInitialized) --- "&LastException, Colors.Red) +' End Try +' Try +' If Tracker.FLP.IsInitialized Then +' Try +' If Not(Tracker.FLP.IsConnected) Then +' log2DB("revisaFLP: No esta conectado ... 'Reconectando FLP'") +' ' Tracker.FLP.Connect +' CallSubDelayed(Tracker,"StartFLP") +' todoBienFLP = False +' End If +' Catch +' LogColor("If Not(Tracker.FLP.IsConnected) --> "&LastException, Colors.Red) +' End Try +' Try +' If Tracker.FLP.IsConnected And _ +' Tracker.FLP.GetLastKnownLocation.IsInitialized And _ +' Tracker.FLP.GetLastKnownLocation.DistanceTo(Tracker.UUGCoords) > 500 Then +' log2DB("revisaFLP: 'No se esta actualizando, lo reiniciamos ...'") +' StartService(Tracker) +' todoBienFLP = False +' End If +' Catch +' LogColor("If FLP.IsConnectctd and FLP.getLKL.IsInitialized --> "&LastException, Colors.Red) +' End Try +' End If +' If todoBienFLP Then LogColor(" +++ +++ Sin errores en FLP", Colors.Green) +' Catch +' LogColor("If Tracker.FLP.IsInitialized --> "&LastException, Colors.Red) +' End Try +' ' revisar hora de lastKnownlocation y si es mayor de 10 minutos llamar StartFLP +'End Sub +' +''Revisamos que el servicio "PushService" este inicializado y activo +''Sub revisaPushService 'ignore +'' Private todoBienPS As Boolean = True +'' LogColor("**** **** Revisamos PushService **** ****", Colors.RGB(78,0,227)) +'' If Not(PushService.wsh.IsInitialized) Then 'Si no esta inicializado ... +'' log2DB("revisaPushService: No esta inicializado ... 'Reinicializando PushService'") +'' CallSubDelayed(PushService, "Connect") +'' todoBienPS = False +'' End If +'' If Not(PushService.wsh.ws.Connected) Then 'Si no esta conectado ... +'' log2DB("revisaPushService: No esta conectado ... 'Reconectando PushService'") +'' CallSubDelayed(PushService, "Connect") +'' todoBienPS = False +'' End If +'' If masDeXXMinsKMT(Starter.pushServiceActividad, 5) Then 'Si mas de xx minutos de la ultima actividad entonces ... +'' PushService.wsh.Close +'' CallSubDelayed(PushService, "Connect") +''' StartService(PushService) +'' log2DB("revisaPushService: 'Reconectamos 'PushService' por inactividad") +'' Starter.pushServiceActividad = fechaKMT(DateTime.Now) +'' todoBienPS = False +'' End If +'' If todoBienPS Then LogColor(" +++ +++ Sin errores en PushService", Colors.Green) +''End Sub +' +''Borramos renglones extra de la tabla de errores +'Sub borraArribaDe100Errores 'ignore +' revisaBD +' LogColor("Borramos BD de log", Colors.Magenta) +' errorLog.ExecNonQuery("DELETE FROM errores WHERE fecha NOT in (SELECT fecha FROM errores ORDER BY fecha desc LIMIT 99 )") +' errorLog.ExecNonQuery("vacuum;") +' Log("Borramos mas de 100 de errorLog") +'End Sub +' +''Borramos renglones extra de la tabla de bitacora +'Sub borraArribaDe600RenglonesBitacora 'ignore +' revisaBD +' LogColor("Borramos BD de log", Colors.Magenta) +' kmt.ExecNonQuery("DELETE FROM bitacora WHERE fecha NOT in (SELECT fecha FROM bitacora ORDER BY fecha desc LIMIT 599 )") +' kmt.ExecNonQuery("vacuum;") +' Log("Borramos mas de 600 de bitacora") +'End Sub +' +''Inserta 50 renglones de prueba a la tabla "errores" +'Sub insertaRenglonesPruebaEnErrorLog 'ignore +' revisaBD +' Log("insertamos 50 renglones a errorLog") +' For x = 1 To 50 +' errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), "abc")) +' Log(x) +' Next +'End Sub +' +''Regresa la tabla "errores" en una lista de mapas convertida a JSON +'Sub dameErroresJSON(SQL As SQL, maxErrores As Int, comprimido As Boolean) As String 'ignore +' Log("dameErroresJSON") +' Private j As JSONGenerator +' Private lim As String +' Private cur As ResultSet +' Private l As List +' Private i As Int = 0 +' l.Initialize +' Dim m, m2 As Map +' m2.Initialize +' If maxErrores = 0 Then lim = "" Else lim = "limit "&maxErrores +' cur = SQL.ExecQuery("select * from errores order by fecha desc "&lim) +' Do While cur.NextRow +' m.Initialize +' m.Put("fecha", cur.GetString("fecha")) +' m.Put("error", cur.GetString("error")) +' m2.Put(i,m) +' i = i + 1 +' Loop +' cur.Close +' j.Initialize(m2) +' Log(j.ToString) +' If comprimido Then +' Return compress(j.ToString) +' Else +' Return j.ToString +' End If +'End Sub +' +''Convierte una fecha en formato YYMMDDHHMMSS a Ticks +'Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore +' Try +' If fKMT.Length = 12 Then +' Private parteFecha As String = fKMT.SubString2(0,6) +' Private parteHora As String = fKMT.SubString(6) +' Private OrigFormat As String = DateTime.DateFormat 'save original date format +' DateTime.DateFormat="yymmdd" +' DateTime.TimeFormat="HHmmss" +' Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora) +' DateTime.DateFormat=OrigFormat 'return to original date format +' Return ticks +' Else +' Log("Formato de fecha incorrecto, debe de ser 'YYMMDDHHMMSS', no '"&fKMT&"' largo="&fKMT.Length) +' Return 0 +' End If +' Catch +' Log(LastException) +' LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red) +' Return 0 +' End Try +'End Sub +' +'Sub InstallAPK(dir As String, apk As String) 'ignore +' If File.Exists(dir, apk) Then +' Dim i As Intent +' i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(dir, apk)) +' i.SetType("application/vnd.android.package-archive") +' StartActivity(i) +' End If +'End Sub +' +''Copia la base de datos del almacenamiento interno al externo en el directorio kmts +'Sub copiaDB(result As Boolean) 'ignore +' ToastMessageShow("copiaDB", False) +' If result Then +' Dim p As String +' If File.ExternalWritable Then +' p = File.DirInternal +'' Log("Externo") +' Else +' p = File.DirInternal +'' Log("Interno") +' End If +' Dim theDir As String +' Try +' File.MakeDir(File.DirInternal,"kmts") +' theDir = "/kmts" +' Catch +' theDir = "" +' End Try +' Try +' File.Copy(File.DirInternal,"kmt.db",File.DirInternal&theDir,"cedex_kmt.db") +' File.Copy(File.DirInternal,"errorLog.db",File.DirInternal&theDir,"cedex_errorLog.db") +' ToastMessageShow("BD copiada!", False) +' Catch +' ToastMessageShow("No se pudo hacer la copia: "&LastException, True) +' End Try +' Log("rootExternal="&p) +' Log("File.DirInternal="&File.DirInternal) +' Log("File.DirInternal="&File.DirInternal) +' Else +' ToastMessageShow("Sin permisos", False) +' End If +'End Sub +' +''Hace visible y trae al frente el panel con los parametros "Top" y "Left" dados +'Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore +' panel.BringToFront +' panel.Visible = True +' panel.Top = top +' panel.Left = left +'End Sub +' +''Centra una etiqueta dentro de un elemento superior +'Sub centraEtiqueta(elemento As Label, anchoElementoSuperior As Int) 'ignore +' elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +'End Sub +' +''Centra un panel horizontalmente dentro de un elemento superior +'Sub centraPanel(elemento As Panel, anchoElementoSuperior As Int) 'ignore +' elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +'End Sub +' +''Centra un panel verticalmente dentro de un elemento superior +'Sub centraPanelV(elemento As Panel, altoElementoSuperior As Int) 'ignore +' elemento.Top = Round(altoElementoSuperior/2)-(elemento.Height/2) +'End Sub +' +''Centra una barra de progreso dentro de un elemento superior +'Sub centraProgressBar(elemento As ProgressBar, anchoElementoSuperior As Int) 'ignore +' elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +'End Sub +' +''Regresa el usuario de la tabla USUARIOA si es que existe, si no existe, regresa "SinUsuario". +'Sub buscaDBUsuario As String 'ignore +' Private c As Cursor +' Private usuario As String = "SinUsuario" +' c=kmt.ExecQuery("select USUARIO from usuarioa") +' c.Position=0 +' If c.RowCount > 0 Then usuario = c.GetString("USUARIO") +' Return usuario +'End Sub +' +''Saca el usuario de la tabla USUARIOA +'Sub dameUsuarioDeDB As String 'ignore +' Private c As Cursor +' Private u As String = "SinUsuario" +' If Not(kmt.IsInitialized) Then revisaBD +' c=kmt.ExecQuery("select USUARIO from usuarioa") +' c.Position=0 +' If c.RowCount > 0 Then u = c.GetString("USUARIO") +' c.Close +' Return u +'End Sub +' +'''Inserta un producto en la tabla "PEDIDO" +''Sub guardaProductoX(cedis As String, costoTot As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, tipoV As String, precio2 As String, query As String) 'ignore +''' LogColor("guardaProducto", Colors.Magenta) +''' Log($"Guardamos producto ${prodId}"$) +''' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_TIPO, PE_PRECIO2, PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, costoTot, costoU, cant, nombre, prodId, clienteId, fecha, usuario, tipoV, precio2, Starter.rutaV)) +''' B4XPages.MainPage.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) +''' ToastMessageShow("guardaProd", False) +''End Sub +' +''Sub guardaProductoSin(cedis As String, costoTot As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoV As String, precio2 As String, query As String) 'ignore +''' LogColor("guardaProductoSin", Colors.Magenta) +''' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_COSTO_SIN, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, costoTot,costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoV, precio2)) +''' B4XPages.MainPage.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) +''' DateTime.DateFormat = "MM/dd/yyyy" +''' Private sDate As String =DateTime.Date(DateTime.Now) +''' Private sTime As String =DateTime.Time(DateTime.Now) +''' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") +''' c.Position=0 +''' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +''' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, rutaV, c.GetString("TOTAL_CLIE_SIN"))) +''' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +''' c.Close +'' ToastMessageShow("guardaProdSin", False) +''End Sub +' +''Regresa el almacen actual de la base de datos. +'Sub traeAlmacen As String 'ignore +' Private c2 As Cursor +' Private b As String +' c2=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") +' Log(c2.RowCount) +' c2.Position = 0 +' b = c2.GetString("ID_ALMACEN") +' Log("Esto es almacen !!!!!!! " &c2.GetString("ID_ALMACEN") & " Esto es almacen !!!!!!!") +' Return b +'End Sub +' +''Regresa el nombre del producto desde CAT_GUNAPROD +'Sub traeProdNombre(id As String) As String +' Private h As Cursor +' Private n As String +' h=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_NOMBRE from ${Starter.tabla} where CAT_GP_ID = ? "$, Array As String(id.Trim)) +' If h.RowCount > 0 Then +' h.Position = 0 +' n = h.GetString("CAT_GP_NOMBRE") +'' Log(h.RowCount&"|"&id&"|"&n&"|") +' End If +' h.Close +' If n = Null Or n="" Then n = "N/A" +'' Log(h.RowCount&"|"&id&"|"&n&"|") +' Return n +'End Sub +' +''Regresa el total del pedido en la tabla "PEDIDO" del cliente actual. +'Sub totalPedido As String +' Private cT As Cursor = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total from PEDIDO where PE_CLIENTE = '${traeCliente}'"$) +' Private pTotal As String = "0" +' If cT.RowCount > 0 Then +' cT.Position = 0 +'' Log("|"&cT.GetLong("total")&"|"&pTotal) +' Private tempT As String = cT.GetLong("total") +' If tempT <> "null" And tempT <> Null Then +'' Log("|"&cT.GetLong("total")&"|") +' pTotal = tempT +' End If +'' Log($"Cliente actual=${traeCliente}, hayPedido=${hay}"$) +' End If +' cT.Close +' Return pTotal +'End Sub +' +''Regresa la ruta actual de la base de datos. +'Sub traeRuta (cliente As String) As String 'ignore +' Private c As Cursor +' Private r As String +' c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info32 where CAT_CL_CODIGO = '${cliente}'"$) +' r = "0" +' If c.RowCount > 0 Then +' c.Position=0 +' r = c.GetString("CAT_CL_RUTA") +' End If +' c.Close +' Return r +'End Sub +' +''Regresa la ruta actual de la base de datos. +'Sub traeRuta2 (cliente As String) As String 'ignore +' Private c As Cursor +' Private r As String +' c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info32 where CAT_CL_CODIGO = '${cliente}'"$) +' r = "0" +' If c.RowCount > 0 Then +' c.Position=0 +' r = c.GetString("CAT_CL_RUTA") +' End If +' c.Close +' Return r +'End Sub +' +'Sub traeCliente As String 'ignore +' Private c As Cursor +' Private cl As String +' c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa") +' c.Position=0 +' cl = c.GetString("CUENTA") +' c.Close +' Return cl +'End Sub +' +'Sub traeFecha As String 'ignore +' DateTime.DateFormat = "MM/dd/yyyy" +' Private sDate As String =DateTime.Date(DateTime.Now) +' Private sTime As String =DateTime.Time(DateTime.Now) +' Return sDate & sTime +'End Sub +' +''Regresa el usuario de la tabla USUARIOA +'Sub traeUsuarioDeBD As String 'ignore +' Private c As Cursor +' Private u As String = "SinUsuario" +' If Not(kmt.IsInitialized) Then revisaBD +' c=kmt.ExecQuery("select USUARIO from usuarioa") +' c.Position=0 +' If c.RowCount > 0 Then u = c.GetString("USUARIO") +' c.Close +' Return u +'End Sub +' +''Inserta un producto en la tabla "pedido" y "pedido_cliente". +''Actualiza "cat_gunaprod" y la columna "gestion" en la tabla "kmt_info3". +'Sub guardaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) +'' LogColor("guardaProducto: "&prodId&", cant="&cant, Colors.Magenta) +' Private c As Cursor +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta)) +' B4XPages.MainPage.skmt.ExecNonQuery2($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") +' c.Position=0 +' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) +' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +'End Sub +' +''Inserta un producto en la tabla "pedido" y "pedido_cliente" y actualiza "cat_gunaprod". +''NO ACTUALIZA LA BANDERA DE GESTION EN LA TABLA "kmt_info3". +''Si "gestion=2" entonces el sistema considera que el pedido ya se guardó y ya no se debe modificar. +'Sub guardaProductoSinGestion(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String, cantc As String, bcajas As String) +'' LogColor("guardaProducto: "&prodId&", cant="&cant, Colors.Magenta) +' Private c As Cursor +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_FOLIO,PE_ENVIO_OK,PE_CANTC,PE_BCAJAS) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,0,?,?) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta,cantc,bcajas)) +' If B4XPages.MainPage.tipo_venta = "VENTA" Then +' B4XPages.MainPage.skmt.ExecNonQuery2($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' Else +' B4XPages.MainPage.skmt.ExecNonQuery2($"update CAT_GUNAPROD set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' B4XPages.MainPage.skmt.ExecNonQuery2($"update CAT_GUNAPROD4 set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' End If +' c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") +' c.Position=0 +' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) +'End Sub +' +'Sub actualizaProducto(cedis As String, costoU As String, cant As Int, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String, cantc As String, bcajas As String) +' Log("Entramos a actualiza producto") +' Private c As Cursor=B4XPages.MainPage.skmt.ExecQuery($"select * from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) +'' Log($"ROWCOUNT: ${c.RowCount}, ${cant}"$) +' LogColor($"actualizaProducto, c=${clienteId}, p=${prodId}, nombre=${nombre}, cant=${cant}, cedis=${cedis}, tipo=${tipoVenta}"$, Colors.Magenta) +' If c.RowCount > 0 Then +' Log("----->1<--------------") +' c.Position=0 +' Private antCant As Int = 0 +' If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT") +' Private difCant As Int = cant - antCant +' B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costo_tot = ${(cant*c.GetString("PE_COSTOU"))}, PE_CANTC = ${cantc}, PE_BCAJAS = ${bcajas} where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) +' If B4XPages.MainPage.tipo_venta = "VENTA" Then +' B4XPages.MainPage.skmt.ExecNonQuery($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' Else +' B4XPages.MainPage.skmt.ExecNonQuery($"update CAT_GUNAPROD set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' B4XPages.MainPage.skmt.ExecNonQuery($"update CAT_GUNAPROD4 set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' End If +' +'' Log($"CANT=${cant}"$) +' If cant = 0 Then +' Log("BORRAMOS PROD") +' B4XPages.MainPage.skmt.ExecNonQuery($"delete from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) +' Private pe As Cursor = B4XPages.MainPage.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 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' End If +' Else +' Log("----->2<--------------") +' 'INSERTAMOS +' If cant <> 0 Then guardaProductoSinGestion(cedis, costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta,cantc,bcajas) +' End If +' c.Close +'End Sub +' +'Sub guardaProductoSinGestion2(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String, cantc As String, bcajas As String) +'' LogColor("guardaProducto: "&prodId&", cant="&cant, Colors.Magenta) +' Private c As Cursor +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_FOLIO,PE_ENVIO_OK,PE_CANTC,PE_BCAJAS) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,0,?,?) ", Array As Object (cedis, (cantc * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta,cantc,bcajas)) +' If B4XPages.MainPage.tipo_venta = "VENTA" Then +' B4XPages.MainPage.skmt.ExecNonQuery2($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' Else +' B4XPages.MainPage.skmt.ExecNonQuery2($"update CAT_GUNAPROD set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' B4XPages.MainPage.skmt.ExecNonQuery2($"update CAT_GUNAPROD4 set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) +' End If +' c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") +' c.Position=0 +' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) +'End Sub +' +'Sub actualizaProducto2(cedis As String, costoU As String, cant As Int, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String, cantc As String, bcajas As String) +' Private c As Cursor=B4XPages.MainPage.skmt.ExecQuery($"select * from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) +'' Log($"ROWCOUNT: ${c.RowCount}, ${cant}"$) +' LogColor($"actualizaProducto, c=${clienteId}, p=${prodId}, nombre=${nombre}, cant=${cant}, cedis=${cedis}, tipo=${tipoVenta}"$, Colors.Magenta) +' +' If c.RowCount > 0 Then +' c.Position=0 +' Private antCant As Int = 0 +' If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT") +' Private difCant As Int = cant - antCant +' B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costo_tot = ${(cantc*c.GetString("PE_COSTOU"))}, PE_CANTC = ${cantc}, PE_BCAJAS = ${bcajas} where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) +'' B4XPages.MainPage.skmt.ExecNonQuery($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' If B4XPages.MainPage.tipo_venta = "VENTA" Then +' B4XPages.MainPage.skmt.ExecNonQuery($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' Else +' B4XPages.MainPage.skmt.ExecNonQuery($"update CAT_GUNAPROD set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' B4XPages.MainPage.skmt.ExecNonQuery($"update CAT_GUNAPROD4 set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) +' End If +'' Log($"CANT=${cant}"$) +' If cant = 0 Then +' Log("BORRAMOS PROD") +' B4XPages.MainPage.skmt.ExecNonQuery($"delete from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) +' Private pe As Cursor = B4XPages.MainPage.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 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' End If +' Else +' 'INSERTAMOS +' If cant <> 0 Then guardaProductoSinGestion2(cedis, costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta,cantc,bcajas) +' End If +' c.Close +'End Sub +' +' +' +'Sub traeTotalCliente As Double +' Private sumaTotal As Double +' Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery("Select PE_COSTO_TOT from pedido where PE_CLIENTE <> 0 ") +' For i= 0 To cursorprueba.RowCount -1 +' cursorprueba.Position = i +'' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) +' sumaTotal = sumaTotal + cursorprueba.GetString("PE_COSTO_TOT") +' sumaTotal = NumberFormat2(sumaTotal, 0, 2, 2, False) +'' Log(NumberFormat2(sumaTotal, 0, 2, 2, False)) +' Next +' cursorprueba.Close +' Return sumaTotal +'End Sub +' +'Sub traeTotalClienteabordo As Double +' Private sumaTotal As Double +' Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery2("Select PE_COSTO_TOT from pedido where PE_FOLIO = ? AND PE_CLIENTE = 0", Array As String ("ABORDO")) +' For i= 0 To cursorprueba.RowCount -1 +' cursorprueba.Position = i +'' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) +' sumaTotal = sumaTotal + cursorprueba.GetString("PE_COSTO_TOT") +' sumaTotal = NumberFormat2(sumaTotal, 0, 2, 2, False) +'' Log(NumberFormat2(sumaTotal, 0, 2, 2, False)) +' Next +' cursorprueba.Close +' Return sumaTotal +'End Sub +' +'Sub traeTotalClientepreventa As Double +' Private sumaTotal As Double +' Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery2("Select PE_COSTO_TOT from pedido where PE_FOLIO = ? AND PE_CLIENTE <> 0", Array As String ("PREVENTA_CONTADO")) +' For i= 0 To cursorprueba.RowCount -1 +' cursorprueba.Position = i +'' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) +' sumaTotal = sumaTotal + cursorprueba.GetString("PE_COSTO_TOT") +' sumaTotal = NumberFormat2(sumaTotal, 0, 2, 2, False) +'' Log(NumberFormat2(sumaTotal, 0, 2, 2, False)) +' Next +' cursorprueba.Close +' Return sumaTotal +'End Sub +' +'Sub traeTotalClientepreventaparacredito As Double +' Private sumaTotal As Double +' Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery2("Select PE_COSTO_TOT from pedido where PE_FOLIO = ? AND PE_CLIENTE <> 0 AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA)", Array As String ("PREVENTA")) +' For i= 0 To cursorprueba.RowCount -1 +' cursorprueba.Position = i +'' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) +' sumaTotal = sumaTotal + cursorprueba.GetString("PE_COSTO_TOT") +' sumaTotal = NumberFormat2(sumaTotal, 0, 2, 2, False) +'' Log(NumberFormat2(sumaTotal, 0, 2, 2, False)) +' Next +' cursorprueba.Close +' Return sumaTotal +'End Sub +' +'Sub traeTotalClienteventa As Double +' Private sumaTotal As Double +' Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery2("Select PE_COSTO_TOT from pedido where PE_FOLIO = ? AND PE_CLIENTE <> 0", Array As String ("VENTA")) +' For i= 0 To cursorprueba.RowCount -1 +' cursorprueba.Position = i +'' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) +' sumaTotal = sumaTotal + cursorprueba.GetString("PE_COSTO_TOT") +' sumaTotal = NumberFormat2(sumaTotal, 0, 2, 2, False) +'' Log(NumberFormat2(sumaTotal, 0, 2, 2, False)) +' Next +' cursorprueba.Close +' Return sumaTotal +'End Sub +' +''Regresa un mapa con la información de la promo. +''Regresa: {id, maxXcliente, maxRecurrente, maxPromos, historico, +'' productos={idProducto={idProducto, preciosimptos, precio, almacen, tipo, piezas, usuario, fecha, regalo, clasif}} 'Mapa con los productos de la promo y los datos de cada uno. +'' tipos={idProducto=tipo} 'Mapa con id y tipo del producto, 0 si es fijo y 1 si es variable. +'' prodsFijos={idProducto,idProducto} 'Lista con los ids de los productos fijos. +'' prodsVariables={idProducto,idProducto} 'Lista con los ids de los productos variables. +'' resultado="OK" 'Ok si existe la promocion. +'' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción. +'Sub traePromo(promo As String, cliente As String) As Map +' 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 siHistorico As String = 0 +' Private promoMap As Map +' Private prodsFijos, prodsFijosPrecios, prodsFijosPiezas, prodsVariables, prodsVariables2, prodsVariablesPrecios, prodsVariablesPrecios2 As List +' promoMap.Initialize +' prodsFijos.Initialize +' prodsFijosPrecios.Initialize +' prodsFijosPiezas.Initialize +' prodsVariables.Initialize +' prodsVariables2.Initialize +' prodsVariablesPrecios.Initialize +' prodsVariablesPrecios2.Initialize +' c.Position = 0 +' If c.RowCount > 0 Then promoMap = CreateMap("id":promo, "maxXcliente":c.GetString("CAT_PA_MAXPROMCLIE"), "maxRecurrente":c.GetString("CAT_PA_MAXPROMREC"), "maxPromos":c.GetString("CAT_PA_MAXPROM")) +' c = B4XPages.MainPage.skmt.ExecQuery("Select count(*) as hist from HIST_PROMOS where HP_CLIENTE = '"& cliente & "' and HP_CODIGO_PROMOCION = '" & promo & "'") 'Revisamos si hay historico de la promoción. +' c.Position = 0 +' If c.GetString("hist") > 0 Then siHistorico = 1 +' promoMap.Put("historico", siHistorico) +' c = B4XPages.MainPage.skmt.ExecQuery("Select * from CAT_DETALLES_PAQ where CAT_DP_ID = '"& promo & "'") 'Obtenemos los detalles de la promoción. +' c.Position = 0 +' If c.RowCount > 0 Then +' Private prods, tipos As Map +' prods.Initialize +' tipos.Initialize +' For i=0 To c.RowCount -1 +' c.Position=i +' prods.Put(c.GetString("CAT_DP_IDPROD"), CreateMap("idProducto":c.GetString("CAT_DP_IDPROD"), "precioSimptos":c.GetString("CAT_DP_PRECIO_SIMPTOS"), "precio":c.GetString("CAT_DP_PRECIO"), "almacen":c.GetString("CAT_DP_ALMACEN"), "tipo":c.GetString("CAT_DP_TIPO"), "piezas":c.GetString("CAT_DP_PZAS"), "usuario":c.GetString("CAT_DP_USUARIO"), "regalo":c.GetString("CAT_DP_REGALO"), "clasif":c.GetString("CAT_DP_CLASIF"))) +' tipos.Put(c.GetString("CAT_DP_IDPROD"), c.GetString("CAT_DP_TIPO")) +' If c.GetString("CAT_DP_TIPO") = "0" Then +' prodsFijos.Add(c.GetString("CAT_DP_IDPROD")) +' prodsFijosPrecios.Add(c.GetString("CAT_DP_PRECIO")) +' prodsFijosPiezas.Add(c.GetString("CAT_DP_PZAS")) +' End If +' If c.GetString("CAT_DP_TIPO") = "1" Then +' prodsVariables.Add(c.GetString("CAT_DP_IDPROD")) +' prodsVariablesPrecios.Add(c.GetString("CAT_DP_PRECIO")) +' End If +' If c.GetString("CAT_DP_TIPO") = "2" Then +'' LogColor(c.GetString("CAT_DP_IDPROD") & "|" & c.GetString("CAT_DP_TIPO"), Colors.Blue) +' prodsVariables2.Add(c.GetString("CAT_DP_IDPROD")) +' prodsVariablesPrecios2.Add(c.GetString("CAT_DP_PRECIO")) +' End If +'' Log($"id:${c.GetString("CAT_DP_IDPROD")}, tipo:${c.GetString("CAT_DP_TIPO")}"$) +'' If prodsVariables2.Size > 0 Then LogColor(c.GetString("CAT_DP_ID") & "|" & prodsVariables2, Colors.red) +' Next +' promoMap.Put("productos", prods) 'Mapa con los productos de la promocion (id, precio, almacen, tipo, piezas, etc.) +' promoMap.Put("tipos", tipos) 'Mapa con los productos de la promoción y su tipo (fijo o variable). +' promoMap.Put("prodsFijos", prodsFijos) 'Lista de los productos fijos de la promoción. +' promoMap.Put("prodsVariables", prodsVariables) 'Lista de los productos variables de la promoción. +' promoMap.Put("prodsVariables2", prodsVariables2) +' promoMap.Put("prodsFijosCant", prodsFijos.Size) +' promoMap.Put("prodsFijosPrecios", prodsFijosPrecios) +' promoMap.Put("prodsFijosPiezas", prodsFijosPiezas) +' promoMap.Put("prodsVariablesCant", prodsVariables.Size) +' promoMap.Put("prodsVariables2Cant", prodsVariables2.Size) +' promoMap.Put("prodsVariablesPrecios", prodsVariablesPrecios) +' promoMap.Put("prodsVariablesPrecios2", prodsVariablesPrecios2) +' promoMap.Put("resultado", "ok") +' Else +' promoMap.Put("resultado", "No hay datos de la promoción.") +' End If +' c = B4XPages.MainPage.skmt.ExecQuery2($"Select CAT_GP_STS, CAT_GP_IMP1, CAT_GP_NOMBRE from ${Starter.tabla} where CAT_GP_ID = ?"$,Array As String(promo)) 'Obtenemos las piezas requeridas de productos variables para la promoción. +' c.Position = 0 +' Private pvr As String = 0 +' Private pvr2 As String = 0 +' If c.RowCount > 0 Then +' c.Position = 0 +' pvr = c.GetString("CAT_GP_STS") +' pvr2 = c.GetString("CAT_GP_IMP1") +' If pvr = Null Or pvr = "null" Then pvr = 0 +' If pvr2 = Null Or pvr2 = "null" Then pvr2 = 0 +' promoMap.Put("prodsVariablesRequeridos", pvr) 'Cantidad de productos variables requeridos para la promoción. +' promoMap.Put("prodsVariables2Requeridos", pvr2) +' promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE")) +' End If +' c.Close +'' Log($"Inv variables: ${cuantosVariablesTengoBD(promo)}"$) +'' Log($"Inv dispo: ${traemosInventarioDisponibleParaPromo(promo)}"$) +'' LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Green) +'' LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Red) +' Return promoMap +'End Sub +' +''Regresa un mapa con el inventario disponible por producto para la promoción (desde la base de datos). +'Sub traemosInventarioDisponibleParaPromo(promo As String) As Map 'ignore +' Private c As Cursor +' Log("ESTAMOS VIENDO INVENTARIO") +' c = B4XPages.MainPage.skmt.ExecQuery2($"SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM ${Starter.tabla} WHERE CAT_GP_ID IN (select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ?)"$, Array As String(promo)) +'' Private prodInv As Map +'' prodInv.Initialize +' Private prods As Map +' prods.Initialize +' If c.RowCount > 0 Then +' +' For i=0 To c.RowCount -1 +' c.Position=i +' prods.Put(c.GetString("CAT_GP_ID"), c.GetString("CAT_GP_ALMACEN")) +'' Log($"prod:${c.GetString("CAT_GP_ID")}, inventario:${c.GetString("CAT_GP_ALMACEN")}"$) +' Next +'' prodInv.Put("inventarios", prods) +' End If +' Return prods +'End Sub +' +''Resta los productos fijos del inventario de la promoción (mapa) y regresa un mapa con el nuevo inventario. +''Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. +''Regresa en el mapa la llave "resultado" que nos da "ok" o "No hay suficiente producto para la promocion". +'Sub restaFijosPromo(promoMap As Map) As Map 'ignore +' Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub. +' Private inventariosDisponiblesParaEstaPromo As Map = traemosInventarioDisponibleParaPromo(promoMap.Get("id")) 'Obtenemos un mapa con el inventario disponible para cada producto de la promocion desde la base de datos. +' If thisLog Then LogColor("InvDisponible: " & inventariosDisponiblesParaEstaPromo, Colors.red) +' If thisLog Then LogColor("Inventario inicial antes de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.Gray) 'Inventario inicial. +' inventariosDisponiblesParaEstaPromo.Put("resultado", "ko") +' Private i As Int +' Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. +' Private prodsFijos As List = promoMap.get("prodsFijos") 'Obtenemos una lista con los productos fijos de la promoción. +' For p = 0 To prodsFijos.Size - 1 +' Private t As String = prodsFijos.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. +' Private p2 As Map = prodsmap.Get(t) 'Obtenemos un mapa con los datos de este producto (id, precio, almacen, tipo, piezas, etc.) +' If thisLog Then Log($"T: ${t}, prod ${p2.Get("idProducto")}, piezas: ${p2.Get("piezas")}"$) 'Producto y piezas requeridas +' If thisLog Then Log("inventariosDisponiblesParaEstaPromo="&inventariosDisponiblesParaEstaPromo) +' If inventariosDisponiblesParaEstaPromo.ContainsKey(t) Then 'Si el mapa del inventario contiene el id del producto entonces ... +' i = inventariosDisponiblesParaEstaPromo.get(t) 'Obtenemos del mapa el inventario de este producto. +' If thisLog Then Log($"Nuevo inventario de ${t}: ${i}-${promoMap.Get("prodsFijosPiezas").As(List).get(p)} = $1.0{i - promoMap.Get("prodsFijosPiezas").As(List).get(p)}"$) 'El nuevo inventario. +' inventariosDisponiblesParaEstaPromo.Put(t, $"${i - promoMap.Get("prodsFijosPiezas").As(List).get(p)}"$) 'Restamos del inventario las piezas requeridas para la promoción y guardamos el nuevo inventario en el mapa. +' inventariosDisponiblesParaEstaPromo.Put("resultado", "ok") +' Else 'Si en el mapa no esta el id del producto, entonces no tenemos inventario. +' inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") +' LogColor("Sin suficiente inventario fijo: " & t, Colors.Blue) +' Exit +' End If +' If i - p2.Get("piezas") < 0 Then +' inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") 'Si el inventario de este producto sale negativo, quiere decir que no tenemos suficiente inventario para la promoción. +' Exit +' End If +' Next +' If prodsFijos.Size = 0 Then inventariosDisponiblesParaEstaPromo.Put("resultado", "ok") 'No hay productos fijos. +' If thisLog Then LogColor("Inventario final depues de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.blue) 'Inventario final. +' Return inventariosDisponiblesParaEstaPromo +'End Sub +' +''Revisa si tenemos los productos variables requeridos para la promoción (mapa). +''Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. +'Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As Boolean 'ignore +' Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. +' If thisLog Then LogColor("Inventario inicial: "&inventarioSinFijos, Colors.Gray) 'Inventario inicial. +' Private totalProdsVariables As Int = 0 +' Private totalProdsVariables2 As Int = 0 +'' Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. +' Private prodsVariables As List = promoMap.get("prodsVariables") 'Obtenemos una lista con los productos variables de la promoción. +' Private prodsVariables2 As List = promoMap.get("prodsVariables2") +' For p = 0 To prodsVariables.Size - 1 +' Private t As String = prodsVariables.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. +'' Log("inventarioSinFijos: " & inventarioSinFijos) +' If inventarioSinFijos.ContainsKey(t) Then 'Si existe el producto en la lista del inventario, entonces ... +' Private p2 As String = inventarioSinFijos.Get(t) 'Obtenemos el inventario disponible este producto. +'' Log(p2) +' totalProdsVariables = totalProdsVariables + p2 +'' Log(totalProdsVariables) +' If thisLog Then Log($"prod ${t}, hay: ${p2}"$) 'Producto y piezas requeridas +' End If +' Next +' For p = 0 To prodsVariables2.Size - 1 +' Private t As String = prodsVariables2.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. +' If inventarioSinFijos.ContainsKey(t) Then 'Si existe el producto en la lista del inventario, entonces ... +' Private p2 As String = inventarioSinFijos.Get(t) 'Obtenemos el inventario disponible este producto. +' totalProdsVariables2 = totalProdsVariables2 + p2 +' If thisLog Then Log($"prod ${t}, hay: ${p2}"$) 'Producto y piezas requeridas +' End If +' Next +' If thisLog Then Log("Total prods variables=" & totalProdsVariables & ", requeridos=" & promoMap.Get("prodsVariablesRequeridos")) +' If thisLog Then Log("Total prods variables2=" & totalProdsVariables2 & ", requeridos2=" & promoMap.Get("prodsVariables2Requeridos")) +' Private res As Boolean = False +' Private res1 As Boolean = False +' Private res2 As Boolean = False +' +'' Log($"${totalProdsVariables} >= ${promoMap.Get("prodsVariablesRequeridos")}"$) +'' Log($"${totalProdsVariables2} >= ${promoMap.Get("prodsVariables2Requeridos")}"$) +' +' If totalProdsVariables > 0 And totalProdsVariables >= promoMap.Get("prodsVariablesRequeridos") Then +' res1 = True 'Si el total de inventario de productos variables (totalProdsVariables) es mayor o igual a los productos requeridos entonces regresamos TRUE +' End If +' If promoMap.Get("prodsVariablesRequeridos").As (Int) = 0 Then res1 = True +' If totalProdsVariables2 > 0 And totalProdsVariables2 >= promoMap.Get("prodsVariables2Requeridos") Then +' res2 = True 'Si el total de inventario de productos variables (totalProdsVariables) es mayor o igual a los productos requeridos entonces regresamos TRUE +' End If +' If promoMap.Get("prodsVariables2Requeridos").As(Int) = 0 Then res2 = True +' If res1 And res2 Then 'Solo si son verdadero los dos el resultado es verdadero. +' res = True +' Else +' res = False +' End If +'' Log(res) +' Return res +'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 = True 'Si es verdadero, muestra los logs de este sub. +'' Private maxPromos As List +'' Private vendidas As Int = 0 +'' maxPromos.Initialize +''' If Starter.promosLog Then Log("==== HISTORICO:"&pm.Get("historico")) +'' If thisLog Then Log(pm) +'' If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente +'' Log(pm.Get("historico")) +'' Log(pm.Get("maxPromos")) +'' Log(pm.Get("maxXcliente")) +'' maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos +'' maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente +'' Log(maxPromos) +'' +'' Dim precioPromo As Float +'' 'Traemos el precio de la promo. +'' Dim cGp As Cursor = Starter.skmt.ExecQuery($"SELECT ifnull(CAT_GP_PRECIO,0) as CAT_GP_PRECIO FROM CAT_GUNAPROD WHERE CAT_GP_ID = '${pm.get("id")}'"$) +'' If cGp.RowCount > 0 Then +'' cGp.Position = 0 +'' precioPromo = cGp.GetString("CAT_GP_PRECIO") +'' End If +'' Dim creditoOtorgado As Float = B4XPages.MainPage.cliente.credito_diponible +'' Dim totalActual As Float = 0 +'' Dim maxPromosXCreditoDisponible As Int +'' 'Traemos el total del pedido actual. +'' Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS TOT_ACTUAL FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") +'' fg.Position = 0 +'' totalActual = fg.GetString("TOT_ACTUAL") +'' 'Calculamos el credito que tenemos disponible. +'' Dim creditoDisponible As Float = creditoOtorgado - totalActual +'' 'Calculamos las promos disponibles deacuerdo a lo que nos alcanza con el credito disponible. +'' maxPromosXCreditoDisponible = creditoDisponible / precioPromo +'' Log(creditoDisponible &" / "& precioPromo) +'' Log("Maximo de promos disponibles: " & maxPromosXCreditoDisponible) +'' Log((fg.GetString("TOT_ACTUAL")) & " Monto Actual<-------") +'' If fg.GetString("TOT_ACTUAL") + precioPromo > creditoOtorgado Then +'' maxPromosXCreditoDisponible = 0 +'' End If +'' maxPromos.Add(maxPromosXCreditoDisponible.As(String)) 'Agregamos Maxpromos X Credito Disponible +'' +'' +'' maxPromos.Sort(True) +'' +''' 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)) +'' If c.RowCount > 0 Then +'' c.Position = 0 +'' vendidas = c.GetInt("vendidas") +''' Log(vendidas) +'' End If +'' +''' If Starter.promosLog Then Log(maxPromos) +''' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0)) +''' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red) +'' Return maxPromos.Get(0) - vendidas 'Regresamos el numero mas pequeño de las opciones. +' +' Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. +' Private maxPromos As List +' Private vendidas As Int = 0 +' maxPromos.Initialize +'' If Starter.promosLog Then Log("==== HISTORICO:"&pm.Get("historico")) +' If thisLog Then Log(pm) +' If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente +' maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos +' maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente +' maxPromos.Sort(True) +' +'' 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)) +' If c.RowCount > 0 Then +' c.Position = 0 +' vendidas = c.GetInt("vendidas") +'' Log(vendidas) +' End If +' +'' If Starter.promosLog Then Log(maxPromos) +'' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0)) +'' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red) +' Return maxPromos.Get(0) - vendidas 'Regresamos el numero mas pequeño de las opciones. +' +'End Sub +' +''Regresa la cantidad de promos que se le han vendido al cliente. +'Sub traePromosVendidas(promo As String, cliente As String) As Int +' Private c As Cursor +' Private pv As Int = 0 +' c=B4XPages.MainPage.skmt.ExecQuery($"select PE_CANT from PEDIDO where PE_PROID = '${promo}' and PE_CLIENTE = '${cliente}'"$) +' If c.RowCount > 0 Then +' c.Position = 0 +' pv = c.GetInt("PE_CANT") +' End If +' Return pv +'End Sub +' +'Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore +' Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub. +' Private inicioContador As String = DateTime.Now +' If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.Magenta) +' 'Obtenemos el mapa con toda la info de la promoción. +' Private pm As Map = traePromo(idPromo, cliente) +' If thisLog Then LogColor(pm, Colors.Blue) +' If pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ... +' 'Buscamos el máximo de promociones permitidas. +' If thisLog Then LogColor($"Promociones permitidas=${traeMaxPromos(pm)}"$, Colors.Blue) +' If thisLog Then Log("Promos vendidas: " & traePromosVendidas(idPromo, cliente)) +' If traePromosVendidas(idPromo, cliente) >= traeMaxPromos(pm) Then +' If thisLog Then LogColor("Ya se vendieron las promos PERMITIDAS para el cliente", Colors.red) +' Return CreateMap("status":"ko", "mp":pm) +' End If +' 'Restamos del inventario (mapa) las piezas necesarias para los productos fijos. +' Private inventarioSinFijos As Map = restaFijosPromo(pm) +' If thisLog Then LogColor("inventariosfijos="&inventarioSinFijos, Colors.Green) +' +' If inventarioSinFijos.Get("resultado") = "ok" Then +' 'Revisamos que los productos variables requeridos sean menos que el inventario total (mapa). +' Private pv As Boolean = alcanzanLosVariablesParaPromo(pm, inventarioSinFijos) +' If thisLog Then Log("Alcanzan los variables? --> " & pv) +' If pv Then Return CreateMap("status":"ok", "mp":pm) Else Return CreateMap("status":"ko", "mp":pm) +' Else +' If thisLog Then LogColor("NO HAY INVENTARIO SUFICIENTE " & idPromo, Colors.red) +' Return CreateMap("status":"ko", "mp":pm) +' End If +' End If +' ' Si tenemos suficiente inventario para los variables mostramos la promocion, si no ... +' ' break 'NO HAY INVENTARIO SUFICIENTE PARA LA PROMOCION. +' +' LogColor("TIEMPO DE PROCESO ESTA PROMO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red) +'End Sub +' +''Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario. +'Sub revisaMaxPromosProdsFijosPorInventario2(pm As Map) As Int +' Private thisLog As Boolean = False +' If thisLog Then Log($"pm=${pm}"$) +'' Private prodsFijos As List = pm.get("prodsFijos") +' Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) +' If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) +' Private maxPromos As String = traeMaxPromos(pm) +' Private maxPromosFijosXinv As Int = 1 +' Private fpf2, pdp2 As Int +' Private salir As Boolean = False +' Private pf As List = pm.Get("prodsFijos") +' Private pfp As List = pm.Get("prodsFijosPiezas") +' If thisLog Then Log($"maxPromos=${maxPromos}, prodsFijos=${pf}, piezas=${pfp}"$) +' If thisLog Then LogColor($"InvFijo disponible=${invDispParaPromo}"$, Colors.Blue) +' Private invFijoXpromo As Map +' invFijoXpromo.Initialize +' For p = 0 To pf.Size -1 'Generamos mapa con los productos fijo y piezas requeridos por promo. +' invFijoXpromo.Put(pf.Get(p), pfp.Get(p)) +' Next +' If thisLog Then LogColor("Inv req. de prods fijos x promo" & invFijoXpromo, Colors.Green) +' For i = 1 To maxPromos 'Revisamos cuantas promociones alcanzan, hasta llegar al máximo de promos permitadas. +' If thisLog Then LogColor("Prods para promo " & (i+1), Colors.Magenta) +' For q = 0 To pf.Size - 1 +' Private q2 As String = pf.Get(q) +' If thisLog Then Log("q="&q2) +'' fpf2 = invFijoXpromo.Get(q2) * i 'Multiplicamos las piezas requeridas por la cantidad de promos. +' fpf2 = pfp.Get(q) * i 'Multiplicamos las piezas requeridas por la cantidad de promos. +' pdp2 = invDispParaPromo.Get(q2) +' If thisLog Then Log($"pf=${q2}, Actual=${(i)}, max promos: ${pdp2}-${fpf2}=${pdp2 - fpf2}"$) +' If pdp2 - fpf2 < 0 Then 'Si el inventario es negativo, entonces ya no alcanza para este producto. +' salir=True +' Exit +' End If +' Next +' If salir Then Exit +' maxPromosFijosXinv = i +' Next +' If thisLog Then LogColor("InvFijo requerido x promo="&invFijoXpromo, Colors.blue) +' LogColor("Maximo de promociones de prodsFijos POR inventario = " & maxPromosFijosXinv, Colors.Red) +' Return maxPromosFijosXinv +'End Sub +' +''Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario. +'Sub revisaMaxPromosProdsFijosPorInventario(pm As Map) As Int +' Private thisLog As Boolean = False +' Private invFijoXpromo As Map +' Private t As List +' t.Initialize +' t.Add(traeMaxPromos(pm)) ' Agregamos a la lista las promos maximas permitidas (recurrente, cliente y promo). +' invFijoXpromo.Initialize +' If thisLog Then LogColor($"pm=${pm}"$, Colors.Blue) +' Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) +' If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) +' Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas") +' Private idProdsFijos As List = pm.Get("prodsFijos") +' For p = 0 To idProdsFijos.Size -1 'Generamos una lista con las promos disponibles por producto (dividimos el inventario total entre las piezas requeridas). +' If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${invDispParaPromo.Get(idProdsFijos.Get(p))}, pzas=${prodsFijosPiezas.Get(p)}"$) +' If thisLog Then Log($"${(invDispParaPromo.Get(idProdsFijos.Get(p)) / prodsFijosPiezas.Get(p))}"$) +' Private x() As String = Regex.Split("\.", $"${(invDispParaPromo.Get(idProdsFijos.Get(p)) / prodsFijosPiezas.Get(p))}"$) 'Separamos el resultado de la division por el punto decimal. +' 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) +'' LogColor("Max promos de prodsFijos POR inventario = " & t.Get(0), Colors.red) +' Return t.Get(0) 'Regresamos el resultado mas pequeño. +'End Sub +' +''Regresa cuantas promos alcanzan con los productos VARIABLES que hay en inventario. +''La cantidad de promos disponibles se calcula DESPUES de descontar los productos fijos, y si las +''promos por productos fijos llega al maximo, aunque se puedan mas de producos variables, solo se +''regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por +''fijos es 5, entonces regresamos 5. +'Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore +' Private thisLog As Boolean = False +' If thisLog Then Log("======================================================") +' If thisLog Then Log("======================================================") +' Private invFijoXpromo As Map +' invFijoXpromo.Initialize +' Private totalProdsVariablesDisponibles As Int = 0 +' Private totalProdsVariables2Disponibles As Int = 0 +' If thisLog Then LogColor($"pm=${pm}"$, Colors.Blue) +' Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) +' If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) +' Private maxPromos As String = traeMaxPromos(pm) +' Private maxPromosXFijos As Int = revisaMaxPromosProdsFijosPorInventario(pm) +' Private idProdsVariables As List = pm.Get("prodsVariables") +' Private idProdsVariables2 As List = pm.Get("prodsVariables2") +' Private prodsVariablesRequeridos As Int = pm.Get("prodsVariablesRequeridos") +' Private prodsVariables2Requeridos As Int = pm.Get("prodsVariables2Requeridos") +' 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}"$) +'' invDispParaPromo.Put( idEsteProd, (invEsteProd - (1)) ) +' 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($"prodsVariables2=${idProdsVariables2}${CRLF}Variables2 Req=${prodsVariables2Requeridos} "$, Colors.Blue) +' If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) +' If thisLog Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$) +' If thisLog Then Log($"Prods variables2 disponibles = ${totalProdsVariables2Disponibles}"$) +' Private maxPromosXVariables As Int = 0 +' Private maxPromosXVariables2 As Int = 0 +' For x = 1 To maxPromosXFijos +' If thisLog Then Log("=====================================================") +' If thisLog Then Log("=====================================================") +' 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 +' totalProdsVariables2Disponibles = 0 +' For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes. +' If invDispParaPromo.ContainsKey(idProdsVariables.Get(i)) Then +' totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(idProdsVariables.Get(i)) +' End If +' Next +' For i = 0 To idProdsVariables2.Size - 1 'Obtenemos total de productos variables disponibes. +' If invDispParaPromo.ContainsKey(idProdsVariables2.Get(i)) Then +' totalProdsVariables2Disponibles = totalProdsVariables2Disponibles + invDispParaPromo.Get(idProdsVariables2.Get(i)) +' End If +' Next +' 'Revisamos variables. +' If thisLog Then Log($"Var disponibles - var requeridos : ${totalProdsVariablesDisponibles} - ${prodsVariablesRequeridos*x}"$) +' totalProdsVariablesDisponibles = totalProdsVariablesDisponibles - (prodsVariablesRequeridos*x) +' totalProdsVariables2Disponibles = totalProdsVariables2Disponibles - (prodsVariables2Requeridos*x) +' If thisLog Then Log("prodsVariables disponibles despues de promo = " & totalProdsVariablesDisponibles) +' If thisLog Then Log("prodsVariables2 disponibles despues de promo = " & totalProdsVariables2Disponibles) +' If totalProdsVariablesDisponibles < 0 Then Exit 'Ya no hay inventario disponible. +' If totalProdsVariables2Disponibles < 0 Then Exit 'Ya no hay inventario disponible. +' maxPromosXVariables = x +' Next +' 'Restamos fijos. +' If thisLog Then LogColor("Max promos de prodsVariables POR inventario = " & maxPromosXVariables, Colors.red) +' Return maxPromosXVariables +'End Sub +' +''Regresa la suma del inventario de los productos variables de la promoción dada desde la base de datos. +'Sub cuantosVariablesTengoBD(promo As String) As String 'ignore +'' Private x As String = "0" +'' If promo <> "" Then +'' Private c As Cursor +'' c = Starter.skmt.ExecQuery2("Select SUM(CAT_GP_ALMACEN) as variables FROM CAT_GUNAPROD2 WHERE CAT_GP_ID IN (Select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? and cat_dp_tipo = 1 GROUP BY CAT_DP_IDPROD)", Array As String (promo)) +'' If c.RowCount > -1 Then +'' c.Position = 0 +'' If c.GetString("variables") <> Null Then x = c.GetString("variables") +'' End If +'' End If +'' Return x +'End Sub +' +''Regresa un mapa con los datos del producto desde la base de datos. +''el mapa incluye: Id, nombre, tipo y subtipo del producto. +'Sub traeProdIdDeBD As Map 'ignore +' Private c As Cursor +' Private m As Map +' c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_TIPO,CAT_GP_SUBTIPO from ${Starter.tabla} where CAT_GP_NOMBRE In (Select PDESC from PROID)"$) +' If c.RowCount > 0 Then +' c.Position = 0 +' m = CreateMap("id":c.GetString("CAT_GP_ID"), "nombre":c.GetString("CAT_GP_NOMBRE"), "tipo":c.GetString("CAT_GP_TIPO"), "subtipo":c.GetString("CAT_GP_SUBTIPO")) +' Else +' m = CreateMap("id":"N/A", "nombre":"N/A", "tipo":"N/A", "subtipo":"N/A") +' End If +' c.Close +' Return m +'End Sub +' +''Guarda en la base de datos la hora inicial y final de la vista. +'Sub guardaClienteHoraInicio(cliente As String) +' B4XPages.MainPage.skmt.ExecNonQuery2("insert into PEDIDO_INICIO_FINAL(PIF_CLIENTE, PIF_HORA_INICIO, PIF_HORA_FINAL) VALUES(?,?,?) ", Array As Object (cliente, DateTime.Now, 0)) +'' LogColor($"insertamos ${cliente}, hora_inicio=${DateTime.Now}, hora_final=0"$,Colors.Red) +'End Sub +' +''Actualizamos el tiempo que el vendedor estuvo en la tienda, desde que entra a la pantalla del cliente hasta que hace clic en "Guardar". +'Sub actualizaTET(cliente As String) +' Dim c As Cursor = B4XPages.MainPage.skmt.Execquery2("select * from PEDIDO_INICIO_FINAL where PIF_CLIENTE = ?", Array As String(cliente)) +' Dim total As Long = 0 +' If c.RowCount > 0 Then +' c.Position=0 +' For i = 0 To c.RowCount-1 +' c.Position=i +'' LogColor($"cliente=${c.GetString("PIF_CLIENTE")}, inicio=${c.GetString("PIF_HORA_INICIO")}, final=${c.GetString("PIF_HORA_FINAL")}"$, Colors.Magenta) +' Dim subtotal As Long = c.GetString("PIF_HORA_FINAL") - c.GetString("PIF_HORA_INICIO") +' total = total + subtotal +'' Log($" Subtotal=${subtotal}, total=${total}"$) +' Next +'' Log($"Total=${(total/1000)/60}"$) +' B4XPages.MainPage.skmt.ExecNonQuery2("update PEDIDO_CLIENTE set PC_TIEMPO_TIENDA = ? where PC_CLIENTE = ?", Array As String(((total/1000)/60), cliente)) +' End If +'End Sub +' +''Regresa el total de productos y monto del pedido del cliente actual. +'Sub traeTotalesClienteActual As Map +' Private m As Map +' m.Initialize +' Private c_prodsX As Cursor=B4XPages.MainPage.skmt.ExecQuery("select ifnull(sum(PE_CANT), 0) as cantProds, ifnull(sum(PE_COSTO_TOT), 0) as costoTotal FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") +' c_prodsX.Position=0 +'' LogColor($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red) +' m = CreateMap("productos": c_prodsX.GetString("cantProds"), "monto" : c_prodsX.GetString("costoTotal")) +' Return m +'End Sub +' +''Borra el pedido del cliente actual. +''Borra los registros de la tabla "pedido" y "pedido_cliente" +''Actualiza las tablas "cat_gunaprod" y "kmt_info3". +'Sub borraPedidoClienteActual As String +'' Private thisC As Cursor +'' thisC=B4XPages.MainPage.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") +'' If thisC.RowCount>0 Then +'' For i=0 To thisC.RowCount -1 +'' thisC.Position=i +'' B4XPages.MainPage.skmt.ExecNonQuery2($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(thisC.GetString("PE_CANT"),thisC.GetString("PE_PROID"))) +'' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1)) +'' Next +'' End If +'' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") +'' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") +'' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +'' Return 1 +' Private thisC As Cursor +'' Private tablaProds As String = "cat_gunaprod4" +' thisC=Starter.skmt.ExecQuery("select PE_PRONOMBRE, PE_PROID, PE_CANT, PE_FOLIO FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") +' If thisC.RowCount>0 Then +' For i=0 To thisC.RowCount -1 +' thisC.Position = i +'' Log(thisC.GetString("PE_TIPO") & "|" & traeTablaProds(thisC.GetString("PE_TIPO"))) +' +'' If thisC.GetString("PE_FOLIO") = "VENTA" Then +'' Starter.skmt.ExecNonQuery($"update ${traeTablaProds(thisC.GetString("PE_FOLIO"))} set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$) +'' Else +'' Starter.skmt.ExecNonQuery($"update CAT_GUNAPROD set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$) +'' Starter.skmt.ExecNonQuery($"update CAT_GUNAPROD4 set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$) +'' +'' End If +' +' If thisC.GetString("PE_FOLIO") = "VENTA" Then +' B4XPages.MainPage.skmt.ExecNonQuery($"update ${traeTablaProds(thisC.GetString("PE_FOLIO"))} set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$) +' B4XPages.MainPage.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa) AND PE_FOLIO = ?", Array As String(thisC.GetString("PE_PRONOMBRE"), thisC.GetString("PE_FOLIO"))) +' Else +' Starter.skmt.ExecNonQuery($"update CAT_GUNAPROD set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$) +' Starter.skmt.ExecNonQuery($"update CAT_GUNAPROD4 set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$) +' B4XPages.MainPage.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa) AND PE_FOLIO = ?", Array As String(thisC.GetString("PE_PRONOMBRE"), thisC.GetString("PE_FOLIO"))) +' End If +' +' LogColor($"update ${traeTablaProds(thisC.GetString("PE_FOLIO"))} set cat_gp_almacen = cat_gp_almacen + ${thisC.GetString("PE_CANT")} where cat_gp_id = '${thisC.GetString("PE_PROID")}'"$, Colors.red) +'' Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1)) +' Next +' End If +' Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") +' Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") +' Starter.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +' Return 1 +'End Sub +' +'Sub borraPedidoCredito As String +' Dim cPedidos As Cursor +' cPedidos = Starter.skmt.ExecQuery("SELECT PE_PROID, PE_CANT FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") +' +' If cPedidos.RowCount > 0 Then +' For i = 0 To cPedidos.RowCount - 1 +' cPedidos.Position = i +' Dim productoId As String = cPedidos.GetString("PE_PROID") +' Dim cantidad As Int = cPedidos.GetInt("PE_CANT") +' +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_ALMACEN = CAT_GP_ALMACEN + ? WHERE CAT_GP_ID = ?", Array As String(cantidad, productoId)) +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD4 SET CAT_GP_ALMACEN = CAT_GP_ALMACEN + ? WHERE CAT_GP_ID = ?", Array As String(cantidad, productoId)) +' +' Next +' End If +' cPedidos.Close +' +' Starter.skmt.ExecNonQuery("DELETE FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") +' +' Log("Pedidos a crédito borrados correctamente.") +' Return "1" +' +' Dim pCli As Cursor = Starter.skmt.ExecQuery("select PE_CLIENTE, PE_FECHA, PE_CEDIS, sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") +' If pCli.RowCount > 0 Then +' pCli.Position = 0 +' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As String(pCli.GetString("PE_CLIENTE"), pCli.GetString("PE_FECHA"), pCli.GetString("PE_USUARIO"), pCli.GetString("CANT_CLIE"), pCli.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, pCli.GetString("PE_CEDIS"), pCli.GetString("TOTAL_CLIE_SIN"))) +' Else +' Starter.skmt.ExecNonQuery("UPDATE kmt_info3 SET GESTION = 0 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") +' End If +'End Sub +' +'Sub traeTablaProds(tipoventa As String) As String +' Private tablaProds As String = "cat_gunaprod2" +' +' If tipoventa = "ABORDO" Or tipoventa = "PREVENTA_CONTADO" Then +' tablaProds = "cat_gunaprod" +' Else If tipoventa = "RECARGA" Then +' tablaProds = "cat_gunaprod3" +' Else If tipoventa = "PREVENTA_CREDITO" Then +' tablaProds = "cat_gunaprod4" +' End If +' +' LogColor($"Tipo= ${tipoventa}, tabla=${tablaProds}"$, Colors.RGB(200,136,0)) +' Return tablaProds +'End Sub +' +''Regresa verdadero si la columna gestion en la tabla "kmt_info3" tene valor 2. +''si no, entonces regresa falso. +'Sub pedidoGuardado As Boolean +' Private guardado As Boolean = False +' Private g As Cursor = B4XPages.MainPage.skmt.ExecQuery("select gestion from kmt_info3 where CAT_CL_CODIGO in (Select CUENTA from cuentaa)") +' If g.RowCount > 0 Then +' g.Position=0 +' If g.GetString("gestion") = "2" Or g.GetString("gestion") = "3" Then guardado = True +' End If +'' Log($"Guardado=${guardado}"$) +' Return guardado +'End Sub +' +''Regresa verdadero si hay pedido en la tabla "PEDIDO" del cliente actual. +'Sub hayPedido As Boolean +' Private thisC As Cursor=B4XPages.MainPage.skmt.ExecQuery($"select count(PE_CLIENTE) as hayPedido from PEDIDO where PE_CLIENTE = '${traeCliente}'"$) +' thisC.Position=0 +' Private hay As Boolean = False +' If thisC.GetInt("hayPedido") > 0 Then hay = True +'' Log($"Cliente actual=${traeCliente}, hayPedido=${hay}"$) +' Return hay +'End Sub +' +''Agrega una columna a la tabla especificada. +''Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +''Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +'Sub agregaColumna(tabla As String, columna As String, tipo As String) +' Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla +' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) +' c.Position = 0 +' If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos +' B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) +' Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) +' End If +' Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch +' Try +' B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) +' Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) +' Catch +' Log(LastException) +' End Try +' End Try +'End Sub +' +''Muestra en el Log los campos y valores que regresan en el JobDone. +'Sub logJobDoneResultados(resultado As DBResult) +' For Each records() As Object In resultado.Rows +' LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0)) +' For Each k As String In resultado.Columns.Keys +' LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0)) +' Next +' Next +'End Sub +' +''Guarda el nombre y version de la app en CAT_VARIABLES. +'Sub guardaAppInfo(skmt As SQL) +' skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'") +' skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$) +' skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$) +'End Sub +' +'Sub traeinventario(id As String) As String +' Dim c As Cursor +' Dim inventario As String = "0" +' c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ALMACEN from ${Starter.tabla} where CAT_GP_ID = '${id}'"$) +'' Log($"select CAT_GP_ALMACEN from ${Starter.tabla} where CAT_GP_NOMBRE = '${id}'"$) +' If c.RowCount > 0 Then +' c.Position = 0 +' inventario = c.GetString("CAT_GP_ALMACEN") +' End If +' c.Close +' Return inventario +'End Sub + 'Code module 'Subs in this code module will be accessible from all modules. Sub Process_Globals @@ -204,7 +1882,7 @@ Sub revisaBD 'ignore kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT)") ' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS UUC(fecha INTEGER, lat TEXT, lon TEXT)") 'LastKnownLocation kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora -' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_AVANCE(HA_MARCA TEXT, HA_AVANCE TEXT, HA_OBJETIVO TEXT, HA_PORCENTAJE TEXT)") 'Historico avance mes actual + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_AVANCE(HA_MARCA TEXT, HA_AVANCE TEXT, HA_OBJETIVO TEXT, HA_PORCENTAJE TEXT)") 'Historico avance mes actual kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOSP(NOTA TEXT, CLIENTE TEXT, SALDO_PENDIENTE TEXT)") kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_NUEVO(CN_ID_CLIENTE TEXT, CN_NOMBRE TEXT, CN_enviado text)") kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_SUPLENCIA(RS_RUTA TEXT)") @@ -220,10 +1898,10 @@ Sub revisaBD 'ignore End Try Try 'Si no existe la columna CAT_CL_DIAS_VISITA la agregamos. - kmt.ExecQuery("select count(CAT_CL_DIAS_VISITA) from kmt_info2") + kmt.ExecQuery("select count(CAT_CL_DIAS_VISITA) from kmt_info32") Catch Try - kmt.ExecNonQuery("ALTER TABLE kmt_info2 ADD COLUMN CAT_CL_DIAS_VISITA TEXT") + kmt.ExecNonQuery("ALTER TABLE kmt_info32 ADD COLUMN CAT_CL_DIAS_VISITA TEXT") Catch LogColor("No pudimos agregar la columna CAT_CL_DIAS_VISITA.", Colors.Red) LogColor(LastException, Colors.Red) @@ -313,10 +1991,10 @@ End Sub 'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS" Sub fechaInicioHoy As String 'ignore - Dim OrigFormat As String = DateTime.DateFormat 'save orig date format - DateTime.DateFormat="yyMMdd" - Private h As String = DateTime.Date(DateTime.Now)&"000000" - DateTime.DateFormat=OrigFormat 'return to orig date format + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMdd" + Private h As String = DateTime.Date(DateTime.Now)&"000000" + DateTime.DateFormat=OrigFormat 'return to orig date format Log("Hoy="&h) Return h End Sub @@ -339,12 +2017,12 @@ End Sub 'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore Try - ' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red) + ' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red) If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then - ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) Return True Else - ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now)) + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now)) Return False End If Catch @@ -417,7 +2095,7 @@ Sub revisaFLP 'ignore Try If Not(Tracker.FLP.IsConnected) Then log2DB("revisaFLP: No esta conectado ... 'Reconectando FLP'") - ' Tracker.FLP.Connect + ' Tracker.FLP.Connect CallSubDelayed(Tracker,"StartFLP") todoBienFLP = False End If @@ -519,9 +2197,9 @@ Sub dameErroresJSON(SQL As SQL, maxErrores As Int, comprimido As Boolean) As Str cur.Close j.Initialize(m2) Log(j.ToString) - If comprimido Then + If comprimido Then Return compress(j.ToString) - Else + Else Return j.ToString End If End Sub @@ -662,7 +2340,7 @@ End Sub '' c.Position=0 '' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") '' B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, rutaV, c.GetString("TOTAL_CLIE_SIN"))) -'' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +'' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") '' c.Close ' ToastMessageShow("guardaProdSin", False) 'End Sub @@ -717,7 +2395,7 @@ End Sub Sub traeRuta (cliente As String) As String 'ignore Private c As Cursor Private r As String - c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info2 where CAT_CL_CODIGO = '${cliente}'"$) + c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info32 where CAT_CL_CODIGO = '${cliente}'"$) r = "0" If c.RowCount > 0 Then c.Position=0 @@ -731,7 +2409,7 @@ End Sub Sub traeRuta2 (cliente As String) As String 'ignore Private c As Cursor Private r As String - c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info2 where CAT_CL_CODIGO = '${cliente}'"$) + c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info32 where CAT_CL_CODIGO = '${cliente}'"$) r = "0" If c.RowCount > 0 Then c.Position=0 @@ -771,7 +2449,7 @@ Sub traeUsuarioDeBD As String 'ignore End Sub 'Inserta un producto en la tabla "pedido" y "pedido_cliente". -'Actualiza "cat_gunaprod" y la columna "gestion" en la tabla "kmt_info". +'Actualiza "cat_gunaprod" y la columna "gestion" en la tabla "kmt_info3". Sub guardaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) ' LogColor("guardaProducto: "&prodId&", cant="&cant, Colors.Magenta) Private c As Cursor @@ -781,11 +2459,11 @@ Sub guardaProducto(cedis As String, costoU As String, cant As String, nombre As c.Position=0 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End Sub 'Inserta un producto en la tabla "pedido" y "pedido_cliente" y actualiza "cat_gunaprod". -'NO ACTUALIZA LA BANDERA DE GESTION EN LA TABLA "kmt_info". +'NO ACTUALIZA LA BANDERA DE GESTION EN LA TABLA "kmt_info3". 'Si "gestion=2" entonces el sistema considera que el pedido ya se guardó y ya no se debe modificar. Sub guardaProductoSinGestion(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String, cantc As String, bcajas As String) ' LogColor("guardaProducto: "&prodId&", cant="&cant, Colors.Magenta) @@ -919,7 +2597,7 @@ End Sub Sub traeTotalClientepreventa As Double Private sumaTotal As Double - Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery2("Select PE_COSTO_TOT from pedido where PE_FOLIO = ? AND PE_CLIENTE <> 0", Array As String ("PREVENTA_CONTADO")) + Private cursorprueba As Cursor = B4XPages.MainPage.skmt.ExecQuery2("Select PE_COSTO_TOT from pedido where PE_FOLIO = ? AND PE_CLIENTE <> 0", Array As String ("PREVENTA")) For i= 0 To cursorprueba.RowCount -1 cursorprueba.Position = i ' LogColor(cursorprueba.GetString("PE_COSTO_TOT"),Colors.Red) @@ -1167,62 +2845,6 @@ 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 = True 'Si es verdadero, muestra los logs de este sub. -' Private maxPromos As List -' Private vendidas As Int = 0 -' maxPromos.Initialize -'' If Starter.promosLog Then Log("==== HISTORICO:"&pm.Get("historico")) -' If thisLog Then Log(pm) -' If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente -' Log(pm.Get("historico")) -' Log(pm.Get("maxPromos")) -' Log(pm.Get("maxXcliente")) -' maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos -' maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente -' Log(maxPromos) -' -' Dim precioPromo As Float -' 'Traemos el precio de la promo. -' Dim cGp As Cursor = Starter.skmt.ExecQuery($"SELECT ifnull(CAT_GP_PRECIO,0) as CAT_GP_PRECIO FROM CAT_GUNAPROD WHERE CAT_GP_ID = '${pm.get("id")}'"$) -' If cGp.RowCount > 0 Then -' cGp.Position = 0 -' precioPromo = cGp.GetString("CAT_GP_PRECIO") -' End If -' Dim creditoOtorgado As Float = B4XPages.MainPage.cliente.credito_diponible -' Dim totalActual As Float = 0 -' Dim maxPromosXCreditoDisponible As Int -' 'Traemos el total del pedido actual. -' Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS TOT_ACTUAL FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") -' fg.Position = 0 -' totalActual = fg.GetString("TOT_ACTUAL") -' 'Calculamos el credito que tenemos disponible. -' Dim creditoDisponible As Float = creditoOtorgado - totalActual -' 'Calculamos las promos disponibles deacuerdo a lo que nos alcanza con el credito disponible. -' maxPromosXCreditoDisponible = creditoDisponible / precioPromo -' Log(creditoDisponible &" / "& precioPromo) -' Log("Maximo de promos disponibles: " & maxPromosXCreditoDisponible) -' Log((fg.GetString("TOT_ACTUAL")) & " Monto Actual<-------") -' If fg.GetString("TOT_ACTUAL") + precioPromo > creditoOtorgado Then -' maxPromosXCreditoDisponible = 0 -' End If -' maxPromos.Add(maxPromosXCreditoDisponible.As(String)) 'Agregamos Maxpromos X Credito Disponible -' -' -' maxPromos.Sort(True) -' -'' 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)) -' If c.RowCount > 0 Then -' c.Position = 0 -' vendidas = c.GetInt("vendidas") -'' Log(vendidas) -' End If -' -'' If Starter.promosLog Then Log(maxPromos) -'' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0)) -'' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red) -' Return maxPromos.Get(0) - vendidas 'Regresamos el numero mas pequeño de las opciones. - Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. Private maxPromos As List Private vendidas As Int = 0 @@ -1232,6 +2854,39 @@ Sub traeMaxPromos(pm As Map) As Int If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente + + Dim precioPromo As Float + 'Traemos el precio de la promo. + Dim cGp As Cursor = Starter.skmt.ExecQuery($"SELECT ifnull(CAT_GP_PRECIO,0) as CAT_GP_PRECIO FROM CAT_GUNAPROD WHERE CAT_GP_ID = '${pm.get("id")}'"$) + If cGp.RowCount > 0 Then + cGp.Position = 0 + precioPromo = cGp.GetString("CAT_GP_PRECIO") + End If + Dim creditoOtorgado As Float = B4XPages.MainPage.cliente.credito_diponible + Dim totalActual As Float = 0 + Dim maxPromosXCreditoDisponible As Int + 'Traemos el total del pedido actual. + If B4XPages.MainPage.tipo_venta = "PREVENTA_CREDITO" Then + Dim checacredito As Cursor = Starter.skmt.ExecQuery("Select CAT_CL_BCREDITO FROM kmt_info3 where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + checacredito.Position = 0 + If checacredito.GetString("CAT_CL_BCREDITO") = "1" Then + Dim fg As Cursor = Starter.skmt.ExecQuery("Select IFNULL(sum(PE_COSTO_TOT),0) AS TOT_ACTUAL FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND PE_FOLIO = 'PREVENTA_CREDITO'") + fg.Position = 0 + totalActual = fg.GetString("TOT_ACTUAL") + 'Calculamos el credito que tenemos disponible. + Dim creditoDisponible As Float = creditoOtorgado - totalActual + 'Calculamos las promos disponibles deacuerdo a lo que nos alcanza con el credito disponible. + maxPromosXCreditoDisponible = creditoDisponible / precioPromo + Log("Maximo de promos disponibles: " & maxPromosXCreditoDisponible) + Log((fg.GetString("TOT_ACTUAL")) & " Monto Actual<-------") + If fg.GetString("TOT_ACTUAL") + precioPromo > creditoOtorgado Then + Log("PENDEJADAS DE ISAAC") + maxPromosXCreditoDisponible = 0 + End If + maxPromos.Add(maxPromosXCreditoDisponible.As(String)) 'Agregamos Maxpromos X Credito Disponible + End If + Log(maxPromos) + End If maxPromos.Sort(True) ' Log($"|${pm.Get("id").As(String).trim}|${traeCliente.Trim}|"$) @@ -1246,7 +2901,6 @@ Sub traeMaxPromos(pm As Map) As Int ' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0)) ' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red) Return maxPromos.Get(0) - vendidas 'Regresamos el numero mas pequeño de las opciones. - End Sub 'Regresa la cantidad de promos que se le han vendido al cliente. @@ -1332,7 +2986,7 @@ Sub revisaMaxPromosProdsFijosPorInventario2(pm As Map) As Int End If Next If salir Then Exit - maxPromosFijosXinv = i + maxPromosFijosXinv = i Next If thisLog Then LogColor("InvFijo requerido x promo="&invFijoXpromo, Colors.blue) LogColor("Maximo de promociones de prodsFijos POR inventario = " & maxPromosFijosXinv, Colors.Red) @@ -1512,7 +3166,7 @@ End Sub 'Borra el pedido del cliente actual. 'Borra los registros de la tabla "pedido" y "pedido_cliente" -'Actualiza las tablas "cat_gunaprod" y "kmt_info". +'Actualiza las tablas "cat_gunaprod" y "kmt_info3". Sub borraPedidoClienteActual As String ' Private thisC As Cursor ' thisC=B4XPages.MainPage.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") @@ -1525,7 +3179,7 @@ Sub borraPedidoClienteActual As String ' End If ' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") ' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") -' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") ' Return 1 Private thisC As Cursor ' Private tablaProds As String = "cat_gunaprod4" @@ -1558,7 +3212,7 @@ Sub borraPedidoClienteActual As String End If Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") - Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Starter.skmt.ExecNonQuery("UPDATE kmt_info3 set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") Return 1 End Sub @@ -1589,7 +3243,7 @@ Sub borraPedidoCredito As String pCli.Position = 0 B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As String(pCli.GetString("PE_CLIENTE"), pCli.GetString("PE_FECHA"), pCli.GetString("PE_USUARIO"), pCli.GetString("CANT_CLIE"), pCli.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, pCli.GetString("PE_CEDIS"), pCli.GetString("TOTAL_CLIE_SIN"))) Else - Starter.skmt.ExecNonQuery("UPDATE KMT_INFO SET GESTION = 0 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + Starter.skmt.ExecNonQuery("UPDATE kmt_info3 SET GESTION = 0 WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") End If End Sub @@ -1608,11 +3262,11 @@ Sub traeTablaProds(tipoventa As String) As String Return tablaProds End Sub -'Regresa verdadero si la columna gestion en la tabla "kmt_info" tene valor 2. +'Regresa verdadero si la columna gestion en la tabla "kmt_info3" tene valor 2. 'si no, entonces regresa falso. Sub pedidoGuardado As Boolean Private guardado As Boolean = False - Private g As Cursor = B4XPages.MainPage.skmt.ExecQuery("select gestion from kmt_info where CAT_CL_CODIGO in (Select CUENTA from cuentaa)") + Private g As Cursor = B4XPages.MainPage.skmt.ExecQuery("select gestion from kmt_info3 where CAT_CL_CODIGO in (Select CUENTA from cuentaa)") If g.RowCount > 0 Then g.Position=0 If g.GetString("gestion") = "2" Or g.GetString("gestion") = "3" Then guardado = True @@ -1631,6 +3285,24 @@ Sub hayPedido As Boolean Return hay End Sub +Sub Chechapedidocredito As Boolean + Private thisC As Cursor=B4XPages.MainPage.skmt.ExecQuery($"select * from PEDIDO where PE_CLIENTE = '${traeCliente}' AND PE_FOLIO = 'PREVENTA_CREDITO' "$) + thisC.Position=0 + Private hay As Boolean = False + If thisC.RowCount > 0 Then hay = True +' Log($"Cliente actual=${traeCliente}, hayPedido=${hay}"$) + Return hay +End Sub + +Sub Chechapedidocontado As Boolean + Private thisC As Cursor=B4XPages.MainPage.skmt.ExecQuery($"select * from PEDIDO where PE_CLIENTE = '${traeCliente}' AND PE_FOLIO = 'PREVENTA_CONTADO' "$) + thisC.Position=0 + Private hay As Boolean = False + If thisC.RowCount > 0 Then hay = True +' Log($"Cliente actual=${traeCliente}, hayPedido=${hay}"$) + Return hay +End Sub + 'Agrega una columna a la tabla especificada. 'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) 'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") @@ -1680,4 +3352,5 @@ Sub traeinventario(id As String) As String End If c.Close Return inventario -End Sub \ No newline at end of file +End Sub +