|
|
|
|
@@ -28,18 +28,17 @@ Public Sub Initialize As Object
|
|
|
|
|
Dir = ""
|
|
|
|
|
' Log("creado en raiz")
|
|
|
|
|
End Try
|
|
|
|
|
' safePath = rp.GetSafeDirDefaultExternal("./")
|
|
|
|
|
safePath = Dirp & Dir
|
|
|
|
|
private name =
|
|
|
|
|
rkmt.Initialize(safePath,"md.rkmt.km", True)
|
|
|
|
|
skmt.Initialize(File.DirInternal,"kmt.db", False)
|
|
|
|
|
'#############################################################################################################
|
|
|
|
|
'################ REVISAR QUE COLUMNAS SON NECESARIAS PARA CADA CASO ###################################
|
|
|
|
|
'#############################################################################################################
|
|
|
|
|
rkmt.ExecNonQuery($"create table if not exists pedidos (pe_folio NUMERIC, pe_desc NUMERIC, pe_costo_sin TEXT, pe_ruta TEXT, pe_cedis TEXT, pe_costo_tot NUMERIC, pe_costou NUMERIC, pe_cant NUMERIC, pe_pronombre TEXT, pe_proid TEXT, pe_cliente TEXT, pe_fecha TEXT, pe_usuario TEXT, pe_envio_ok TEXT)"$)
|
|
|
|
|
rkmt.ExecNonQuery($"create table if not exists inventarios (cat_gp_iniciativa TEXT, cat_gp_tipoprod TEXT, cat_gp_dev TEXT, cat_gp_almacen NUMERIC, cat_gp_id TEXT, cat_gp_nombre TEXT, cat_gp_imp1 TEXT, cat_gp_imp2 TEXT, cat_gp_precio TEXT, cat_gp_clasif TEXT, cat_gp_sts TEXT, cat_gp_tipo TEXT, cat_gp_subtipo TEXT, cat_gp_tipoprod2 TEXT, fecha TEXT)"$)
|
|
|
|
|
' rkmt.ExecNonQuery($"create table if not exists inventarios2 (cat_gp_iniciativa TEXT, cat_gp_tipoprod TEXT, cat_gp_dev TEXT, cat_gp_almacen NUMERIC, cat_gp_id TEXT, cat_gp_nombre TEXT, cat_gp_imp1 TEXT, cat_gp_imp2 TEXT, cat_gp_precio TEXT, cat_gp_clasif TEXT, cat_gp_sts TEXT, cat_gp_tipo TEXT, cat_gp_subtipo TEXT, cat_gp_tipoprod2 TEXT, fecha TEXT)"$)
|
|
|
|
|
rkmt.ExecNonQuery($"create table if not exists paquetes (cat_dp_precio_simptos TEXT, cat_dp_precio TEXT, cat_dp_almacen TEXT, cat_dp_id TEXT, cat_dp_idprod TEXT, cat_dp_tipo TEXT, cat_dp_pzas TEXT, cat_dp_usuario TEXT, cat_dp_fecha TEXT, cat_dp_regalo TEXT, cat_dp_clasif TEXT, fecha TEXT)"$)
|
|
|
|
|
' rkmt.ExecNonQuery($"create table if not exists pedidos (pe_folio NUMERIC, pe_desc NUMERIC, pe_costo_sin TEXT, pe_ruta TEXT, pe_cedis TEXT, pe_costo_tot NUMERIC, pe_costou NUMERIC, pe_cant NUMERIC, pe_pronombre TEXT, pe_proid TEXT, pe_cliente TEXT, pe_fecha TEXT, pe_usuario TEXT, pe_envio_ok TEXT)"$)
|
|
|
|
|
' rkmt.ExecNonQuery($"create table if not exists inventarios (cat_gp_iniciativa TEXT, cat_gp_tipoprod TEXT, cat_gp_dev TEXT, cat_gp_almacen NUMERIC, cat_gp_id TEXT, cat_gp_nombre TEXT, cat_gp_imp1 TEXT, cat_gp_imp2 TEXT, cat_gp_precio TEXT, cat_gp_clasif TEXT, cat_gp_sts TEXT, cat_gp_tipo TEXT, cat_gp_subtipo TEXT, cat_gp_tipoprod2 TEXT, fecha TEXT)"$)
|
|
|
|
|
'' rkmt.ExecNonQuery($"create table if not exists inventarios2 (cat_gp_iniciativa TEXT, cat_gp_tipoprod TEXT, cat_gp_dev TEXT, cat_gp_almacen NUMERIC, cat_gp_id TEXT, cat_gp_nombre TEXT, cat_gp_imp1 TEXT, cat_gp_imp2 TEXT, cat_gp_precio TEXT, cat_gp_clasif TEXT, cat_gp_sts TEXT, cat_gp_tipo TEXT, cat_gp_subtipo TEXT, cat_gp_tipoprod2 TEXT, fecha TEXT)"$)
|
|
|
|
|
' rkmt.ExecNonQuery($"create table if not exists paquetes (cat_dp_precio_simptos TEXT, cat_dp_precio TEXT, cat_dp_almacen TEXT, cat_dp_id TEXT, cat_dp_idprod TEXT, cat_dp_tipo TEXT, cat_dp_pzas TEXT, cat_dp_usuario TEXT, cat_dp_fecha TEXT, cat_dp_regalo TEXT, cat_dp_clasif TEXT, fecha TEXT)"$)
|
|
|
|
|
If chkIfTableExists(skmt, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(skmt, "PEDIDO")}, FECHA TEXT)"$)
|
|
|
|
|
If chkIfTableExists(skmt, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(skmt, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$)
|
|
|
|
|
If chkIfTableExists(skmt, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(skmt, "CAT_GUNAPROD")}, FECHA TEXT)"$)
|
|
|
|
|
If chkIfTableExists(skmt, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(skmt, "CAT_GUNAPROD2")}, FECHA TEXT)"$)
|
|
|
|
|
DateTime.DateFormat = "MM/dd/yyyy"
|
|
|
|
|
fechaHoy = DateTime.Date(DateTime.Now)
|
|
|
|
|
revisaSkmtAttached
|
|
|
|
|
@@ -52,10 +51,12 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
|
|
|
|
'load the layout to Root
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Revisa si esta montada "kmt.db" como "skmt1" y si no, la monta
|
|
|
|
|
'Para que "rkmt" vea a "skmt", es necesario montarla (attach).
|
|
|
|
|
Sub revisaSkmtAttached
|
|
|
|
|
skmtAttached = False
|
|
|
|
|
Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list")
|
|
|
|
|
Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "skmt" y si no, la montamos.
|
|
|
|
|
Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "skmt1" y si no, la montamos.
|
|
|
|
|
If rs.GetString("name") = "skmt1" Then skmtAttached = True
|
|
|
|
|
Loop
|
|
|
|
|
If Not(skmtAttached) Then
|
|
|
|
|
@@ -65,44 +66,46 @@ Sub revisaSkmtAttached
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Copia la tabla PEDIDO a rkmt.db en la tarjeta del celular.
|
|
|
|
|
Sub respaldaPedido
|
|
|
|
|
Sub respalda_pedido
|
|
|
|
|
Private inicio As String = DateTime.Now
|
|
|
|
|
Log("copiando pedidos ...")
|
|
|
|
|
' Log("Copiando PEDIDO ...")
|
|
|
|
|
Private lasCols As String = getTableColumnListName(skmt, "PEDIDO")
|
|
|
|
|
rkmt.BeginTransaction
|
|
|
|
|
rkmt.ExecNonQuery($"delete from pedidos where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"insert into pedidos (pe_folio, pe_desc, pe_costo_sin, pe_ruta, pe_cedis, pe_costo_tot, pe_costou, pe_cant, pe_pronombre, pe_proid, pe_cliente, pe_fecha, pe_usuario, pe_envio_ok) select * from skmt1.pedido where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"delete from PEDIDO where FECHA = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"insert into PEDIDO (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PEDIDO where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
|
|
|
|
rkmt.EndTransaction
|
|
|
|
|
Log(((DateTime.Now - inicio)/1000) & " segs")
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Copia la tabla CAT_GUNAPRODS a rkmt.db en la tarjeta del celular.
|
|
|
|
|
Sub respaldaInventarios
|
|
|
|
|
Log($"Borrando de fecha ${fechaHoy}"$)
|
|
|
|
|
Sub respalda_cat_gunaprod
|
|
|
|
|
Private inicio As String = DateTime.Now
|
|
|
|
|
Log("copiando inventarios ...")
|
|
|
|
|
' rkmt.ExecNonQuery($"delete from inventarios where substr(fecha, 1, 10) = '${fechaHoy}'"$)
|
|
|
|
|
' Log("Copiando CAT_GUNAPROD ...")
|
|
|
|
|
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD")
|
|
|
|
|
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo.
|
|
|
|
|
rkmt.BeginTransaction
|
|
|
|
|
rkmt.ExecNonQuery($"delete from inventarios where fecha = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"insert into inventarios (cat_gp_iniciativa, cat_gp_tipoprod, cat_gp_dev, cat_gp_almacen, cat_gp_id, cat_gp_nombre, cat_gp_imp1, cat_gp_imp2, cat_gp_precio, cat_gp_clasif, cat_gp_sts, cat_gp_tipo, cat_gp_subtipo, fecha) select cat_gp_iniciativa, cat_gp_tipoprod, cat_gp_dev, cat_gp_almacen, cat_gp_id, cat_gp_nombre, cat_gp_imp1, cat_gp_imp2, cat_gp_precio, cat_gp_clasif, cat_gp_sts, cat_gp_tipo, cat_gp_subtipo, '${fechaHoy}' as fecha from skmt1.cat_gunaprod"$)
|
|
|
|
|
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD where FECHA = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_GUNAPROD"$)
|
|
|
|
|
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
|
|
|
|
rkmt.EndTransaction
|
|
|
|
|
Log(((DateTime.Now - inicio)/1000) & " segs")
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Copia la tabla CAT_DETALLE_PAQ a rkmt.db en la tarjeta del celular.
|
|
|
|
|
Sub respaldaPaquetes
|
|
|
|
|
Sub respalda_cat_detalle_paq
|
|
|
|
|
Private inicio As String = DateTime.Now
|
|
|
|
|
Log("copiando paquetes ...")
|
|
|
|
|
' Log("Copiando CAT_DETALLES_PAQ ...")
|
|
|
|
|
Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ")
|
|
|
|
|
rkmt.BeginTransaction
|
|
|
|
|
' rkmt.ExecNonQuery($"delete from paquetes where substr(fecha, 1, 10) = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"delete from paquetes where fecha = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"insert into paquetes (cat_dp_precio_simptos, cat_dp_precio, cat_dp_almacen, cat_dp_id, cat_dp_idprod, cat_dp_tipo, cat_dp_pzas, cat_dp_usuario, cat_dp_fecha, cat_dp_regalo, cat_dp_clasif, fecha) select cat_dp_precio_simptos, cat_dp_precio, cat_dp_almacen, cat_dp_id, cat_dp_idprod, cat_dp_tipo, cat_dp_pzas, cat_dp_usuario, cat_dp_fecha, cat_dp_regalo, cat_dp_clasif, '${fechaHoy}' as fecha from skmt1.cat_detalles_paq"$)
|
|
|
|
|
rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$)
|
|
|
|
|
rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_DETALLES_PAQ"$)
|
|
|
|
|
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
|
|
|
|
rkmt.EndTransaction
|
|
|
|
|
Log(((DateTime.Now - inicio)/1000) & " segs")
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Realiza un "vacuum" de la base de datos "rkmt".
|
|
|
|
|
Sub vacuum
|
|
|
|
|
Log("Vacuum")
|
|
|
|
|
rkmt.ExecNonQuery("vacuum;")
|
|
|
|
|
@@ -111,20 +114,73 @@ 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) 'ignore
|
|
|
|
|
Sub agregaColumna(db As SQL, tabla As String, columna As String, tipo As String) 'ignore
|
|
|
|
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
|
|
|
|
Private c As Cursor = Starter.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$)
|
|
|
|
|
Private c As Cursor = db.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
|
|
|
|
|
Starter.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
|
|
|
|
db.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
|
|
|
|
|
Starter.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
|
|
|
|
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
|
|
|
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$)
|
|
|
|
|
Catch
|
|
|
|
|
Log(LastException)
|
|
|
|
|
End Try
|
|
|
|
|
End Try
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Regresa los nombres y tipos de las columnas de una tabla dada.
|
|
|
|
|
Sub getTableColumnList(db As SQL, table As String) As String 'ignore
|
|
|
|
|
Private l As String = ""
|
|
|
|
|
If chkIfTableExists(db, table) Then
|
|
|
|
|
Private c As Cursor = db.ExecQuery($"pragma table_info(${table})"$)
|
|
|
|
|
If c.RowCount > 0 Then
|
|
|
|
|
For i = 0 To c.RowCount - 1
|
|
|
|
|
c.Position = i
|
|
|
|
|
If l.Length = 0 Then
|
|
|
|
|
l = $"${c.GetString("name")} ${c.GetString("type")}"$
|
|
|
|
|
Else
|
|
|
|
|
l = $"${l}, ${c.GetString("name")} ${c.GetString("type")}"$
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
End If
|
|
|
|
|
Else
|
|
|
|
|
Return "No existe la tabla."
|
|
|
|
|
End If
|
|
|
|
|
c.Close
|
|
|
|
|
Return l
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Regresa solo los nombres de las columnas de una tabla dada.
|
|
|
|
|
Sub getTableColumnListName(db As SQL, table As String) As String 'ignore
|
|
|
|
|
Private l As String = ""
|
|
|
|
|
If chkIfTableExists(db, table) Then
|
|
|
|
|
Private c As Cursor = db.ExecQuery($"pragma table_info(${table})"$)
|
|
|
|
|
If c.RowCount > 0 Then
|
|
|
|
|
For i = 0 To c.RowCount - 1
|
|
|
|
|
c.Position = i
|
|
|
|
|
If l.Length = 0 Then
|
|
|
|
|
l = $"${c.GetString("name")}"$
|
|
|
|
|
Else
|
|
|
|
|
l = $"${l}, ${c.GetString("name")}"$
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
End If
|
|
|
|
|
Else
|
|
|
|
|
Return "No existe la tabla."
|
|
|
|
|
End If
|
|
|
|
|
c.Close
|
|
|
|
|
Return l
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'Revisa si una tabla dada existe en una base de datos dada, regresa true o false.
|
|
|
|
|
Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore
|
|
|
|
|
Private t As Boolean = False 'ignore
|
|
|
|
|
Private c As Cursor = db.ExecQuery($"SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'"$)
|
|
|
|
|
If c.RowCount > 0 Then t = True
|
|
|
|
|
c.Close
|
|
|
|
|
Return t
|
|
|
|
|
End Sub
|