- VERSION 4.12.02
- Commit Inicial
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
**/Objects
|
||||
**/AutoBackups
|
||||
1300
B4A/B4XMainPage.bas
Normal file
126
B4A/BatteryUtilities.bas
Normal file
@@ -0,0 +1,126 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=9.5
|
||||
@EndOfDesignText@
|
||||
'Class module
|
||||
Sub Class_Globals
|
||||
Private nativeMe As JavaObject
|
||||
|
||||
End Sub
|
||||
'Initializes the object.
|
||||
Public Sub Initialize
|
||||
nativeMe = Me
|
||||
End Sub
|
||||
'Return information about the battery status. It returns the following 11 values in an integer Array:
|
||||
'EXTRA_LEVEL = current battery level, from 0 To EXTRA_SCALE.
|
||||
'EXTRA_SCALE = the maximum battery level possible.
|
||||
'EXTRA_HEALTH = the current health constant.
|
||||
'EXTRA_ICON_SMALL = the resource ID of a small status bar icon indicating the current battery state.
|
||||
'EXTRA_PLUGGED = whether the device is plugged into a Power source; 0 means it is on battery, other constants are different types of Power sources.
|
||||
'EXTRA_STATUS = the current status constant.
|
||||
'EXTRA_TEMPERATURE = the current battery temperature.
|
||||
'EXTRA_VOLTAGE = the current battery voltage level.
|
||||
'A value indicating if the battery is being charged or fully charged (If neither it returns 0 Else it returns 1)
|
||||
'A value indicating if it is charging via USB (0 = Not USB, 2 = USB)
|
||||
'A value indicating if it is charging via AC (0 = Not AC, 1 = AC)
|
||||
Public Sub getBatteryInformation () As Int()
|
||||
|
||||
Dim batteryInfo(11) As Int
|
||||
batteryInfo = nativeMe.RunMethod("getBatteryInformation",Null)
|
||||
Return batteryInfo
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub getBatteryTechnolgy() As String
|
||||
|
||||
Dim batterytech As String
|
||||
batterytech = nativeMe.RunMethod("getBatteryTechnology",Null)
|
||||
Return batterytech
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
#If Java
|
||||
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Bundle;
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
|
||||
public int[] getBatteryInformation() {
|
||||
|
||||
int[] mybat = new int[11];
|
||||
|
||||
Intent batteryIntent = ba.context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
|
||||
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
||||
mybat[0] = level;
|
||||
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||
mybat[1] = scale;
|
||||
int health = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH,-1);
|
||||
mybat[2] = health;
|
||||
int icon_small = batteryIntent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL,-1);
|
||||
mybat[3] = icon_small;
|
||||
int plugged = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED,-1);
|
||||
mybat[4] = plugged;
|
||||
// boolean present = batteryIntent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT);
|
||||
int status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS,-1);
|
||||
mybat[5] = status;
|
||||
// String technology = batteryIntent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
|
||||
// BA.Log("Technology = " + technology);
|
||||
int temperature = batteryIntent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,-1);
|
||||
mybat[6] = temperature;
|
||||
int voltage = batteryIntent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,-1);
|
||||
mybat[7] = voltage;
|
||||
// int ac = batteryIntent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_AC);
|
||||
// mybat[8] = ac;
|
||||
// int usb = batteryIntent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_USB);
|
||||
// mybat[9] = usb;
|
||||
|
||||
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
|
||||
status == BatteryManager.BATTERY_STATUS_FULL;
|
||||
mybat[8] = 0;
|
||||
if (isCharging == true) {
|
||||
mybat[8] = 1;
|
||||
}
|
||||
|
||||
// How are we charging?
|
||||
mybat[9] = 0;
|
||||
mybat[10] = 0;
|
||||
int chargePlug = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
|
||||
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
|
||||
if (usbCharge == true) {
|
||||
mybat[9] = 2;
|
||||
}
|
||||
|
||||
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
|
||||
if (acCharge == true) {
|
||||
mybat[10] = 1;
|
||||
}
|
||||
|
||||
return mybat;
|
||||
}
|
||||
|
||||
|
||||
public String getBatteryTechnology() {
|
||||
|
||||
Intent batteryIntent = ba.context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
|
||||
String technology = batteryIntent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
|
||||
|
||||
return technology;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#End If
|
||||
240
B4A/C_Bitacora.bas
Normal file
@@ -0,0 +1,240 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=13
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
Dim db As SQL
|
||||
Private Root2 As B4XView
|
||||
Dim p_transparenteInicioFin2 As Panel
|
||||
Dim b_Inicio_Fin_venta2 As Button
|
||||
Dim contadorIniciarVenta, precision As Int
|
||||
Dim dentroDeGeocerca, enVenta As Boolean
|
||||
Dim IniVenNO As Boolean = False
|
||||
Dim motivoNoVenta, motivoNoVisita As String
|
||||
Private reqManager As DBRequestManager
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize (vCallback As Object, vEventName As String, vRoot As B4XView, db1 As SQL, DBReq As DBRequestManager) As Object
|
||||
db = db1
|
||||
Root2 = vRoot
|
||||
reqManager = DBReq
|
||||
db.ExecNonQuery("CREATE TABLE IF NOT EXISTS BITACORAGPS(fechab TEXT, usuariob TEXT, almacenb TEXT, rutab TEXT, eventob TEXT, clienteb TEXT, iniciob TEXT, finb TEXT, latitudb TEXT, longitudb TEXT, precision TEXT, motivonoventa TEXT, motivonovisita TEXT)")
|
||||
' agregaColumna("BITACORAGPS", "BAN_GEOB", "TEXT")
|
||||
contadorIniciarVenta = 0
|
||||
cargamosPanel
|
||||
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
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
'En geocerca si mete la contraseña poner 0 en precision gps y si esta dentro de los 50 mts poner 1 y 2 para eventos que no lo ocupen
|
||||
'Mandar fecha de sync(sysdate)
|
||||
Sub mandaBitacora(fechab As String, usuariob As String, almacenb As String, rutab As String, eventob As String, clienteb As String, iniciob As String, finb As String, latitudb As String, longitudb As String, precisionb As String, motivoNoVentab As String, motivoNoVisitab As String)
|
||||
Log(motivoNoVisitab)
|
||||
' Log("bitacora")
|
||||
Private cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "mandaBitacora_mazapa"
|
||||
' Log("BITACORA3")
|
||||
Private nombreCliente As String = traeNombreCliente(clienteb)
|
||||
If eventob = "Llega a almacen" Then
|
||||
nombreCliente = "BOLETA"
|
||||
clienteb = ""
|
||||
finb = iniciob
|
||||
End If
|
||||
If eventob = "Salida almacen" Then nombreCliente = "CHECKLIST"
|
||||
If eventob = "Fin Día" Then nombreCliente = "FIN DIA"
|
||||
If eventob = "Carga día" Then nombreCliente = "CARGA DIA"
|
||||
If eventob = "Carga día suplencia" Then nombreCliente = traeRutasSup
|
||||
If eventob <> "Termina Venta" And eventob <> "No Venta" Then
|
||||
db.ExecNonQuery($"INSERT INTO BITACORAGPS (fechab, usuariob , almacenb , rutab , eventob , clienteb , iniciob , finb , latitudb, longitudb , precision , motivonoventa , motivonovisita) VALUES ('${fechab}' ,'${usuariob}' , '${almacenb}' , '${rutab}' , '${eventob}' , '${clienteb}' , '${iniciob}' , '${finb}' , '${latitudb}' , '${longitudb}' , '${precisionb}' , '${motivoNoVentab}' , '${motivoNoVisitab}')"$)
|
||||
Else
|
||||
Private e As Cursor = db.ExecQuery($"select fechab from BITACORAGPS where usuariob = '${usuariob}' and almacenb = '${almacenb}' and rutab = '${rutab}' and clienteb = '${clienteb}' and eventob = 'Inicia Venta' order by fechab desc"$)
|
||||
If e.RowCount > 0 Then
|
||||
e.Position = 0
|
||||
Log("ACTUALIZA BITACORA")
|
||||
If eventob = "Termina Venta" Then
|
||||
db.ExecNonQuery($"update BITACORAGPS set finb = '${finb}' where rutab = '${rutab}' and almacenb = '${almacenb}' and usuariob = '${usuariob}' and clienteb = '${clienteb}' and fechab = '${e.GetString("fechab")}' "$)
|
||||
cmd.Parameters = Array As Object(finb, rutab, almacenb, usuariob, clienteb, "Inicia Venta", e.GetString("fechab"))
|
||||
else if eventob = "No Venta" Then
|
||||
db.ExecNonQuery($"update BITACORAGPS set finb = '${finb}', motivonoventa = '${motivoNoVentab}', motivonovisita = '${motivoNoVisitab}' where rutab = '${rutab}' and almacenb = '${almacenb}' and usuariob = '${usuariob}' and clienteb = '${clienteb}' and fechab = '${e.GetString("fechab")}' "$)
|
||||
cmd.Parameters = Array As Object(finb, motivoNoVentab, motivoNoVisitab, rutab, almacenb, usuariob, clienteb, "Inicia Venta", e.GetString("fechab"))
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
If eventob <> "Inicia Venta" Then
|
||||
Private c As Cursor = db.ExecQuery($"select * from BITACORAGPS where usuariob = '${usuariob}' and almacenb = '${almacenb}' and rutab = '${rutab}' and clienteb = '${clienteb}' order by fechab desc"$)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
cmd.Parameters = Array As Object(c.GetString("almacenb"), c.GetString("usuariob"), c.GetString("rutab"), c.GetString("eventob"), c.GetString("clienteb"), nombreCliente, c.GetString("iniciob"), c.GetString("finb"), c.GetString("latitudb"), c.GetString("longitudb"), c.GetString("precision"), c.GetString("motivonoventa"), c.GetString("motivonovisita"), c.GetString("fechab"))
|
||||
reqManager.ExecuteCommand(cmd , "mandaBitacora")
|
||||
End If
|
||||
End If
|
||||
' Log("Mandamos bitacora")
|
||||
End Sub
|
||||
|
||||
'Regresa el nombre del cliente del id dado.
|
||||
Sub traeNombreCliente(id As String) As String
|
||||
Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE from kmt_info where CAT_CL_CODIGO = '${id}'"$)
|
||||
Private n As String = "N/A"
|
||||
Do While c.NextRow
|
||||
n = c.GetString("CAT_CL_NOMBRE")
|
||||
Loop
|
||||
Return n
|
||||
End Sub
|
||||
|
||||
'Regresa la ruta actual de la base de datos.
|
||||
Sub traeRutasSup As String
|
||||
Dim c As Cursor
|
||||
Dim rutas As String
|
||||
rutas = ""
|
||||
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info")
|
||||
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
rutas = rutas & c.GetString("CAT_CL_RUTA") & ", "
|
||||
Next
|
||||
If rutas.Length > 0 Then rutas = rutas.SubString2(0, rutas.Length - 2)
|
||||
End If
|
||||
|
||||
c.Close
|
||||
Return rutas
|
||||
End Sub
|
||||
|
||||
'Muestra u oculta el boton de inicio y fin de venta
|
||||
Sub inicioFin
|
||||
LogColor($">>>>>>>>>>>> XX EN VENTA : ${enVenta} <<<<<<<<<<<<"$, Colors.Blue)
|
||||
' Log(b_Inicio_Fin_venta2.Text)
|
||||
If enVenta = False Then
|
||||
p_transparenteInicioFin2.BringToFront
|
||||
p_transparenteInicioFin2.Visible = True
|
||||
' b_Inicio_Fin_venta2.Text = "INICIAR VENTA"
|
||||
' Log("Hacemos visible el boton de Inicio Venta")
|
||||
Else
|
||||
If b_Inicio_Fin_venta2.Text <> "TERMINAR VENTA" Then
|
||||
p_transparenteInicioFin2.Visible = False
|
||||
' b_Inicio_Fin_venta2.Visible = False
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub b_Inicio_Fin_venta2_Click
|
||||
' b_Inicio_Fin_venta.Visible = False
|
||||
' Subs.bitacora(Subs.fechanormal(DateTime.Now), usuario, Subs.traeAlmacen, Subs.traeRuta, "Pre-venta", "0", Subs.fechanormal(DateTime.Now), Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, "", "")
|
||||
contadorIniciarVenta = 0
|
||||
IniVenNO = False
|
||||
If dentroDeGeocerca Then precision = 1
|
||||
' LogColor("-------> "&contadorIniciarVenta & " <-------", Colors.Red)
|
||||
LogColor($">>>>>>>>>>>> EN VENTA : ${enVenta} <<<<<<<<<<<<"$, Colors.Blue)
|
||||
motivoNoVenta = ""
|
||||
motivoNoVisita = ""
|
||||
p_transparenteInicioFin2.Visible = False
|
||||
If b_Inicio_Fin_venta2.Text = "TERMINAR VENTA" Then
|
||||
mandaBitacora(Subs.fechanormal(DateTime.Now), Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeRutaBitacora, "Termina Venta", Subs.traeCliente, "", Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, motivoNoVenta, motivoNoVisita)
|
||||
enVenta = False
|
||||
LogColor($">>>>>> EN VENTA: ${enVenta}"$, Colors.red)
|
||||
iniciamosVenta
|
||||
B4XPages.ShowPageAndRemovePreviousPages("Principal")
|
||||
' guardadoventa
|
||||
Else if b_Inicio_Fin_venta2.Text = "INICIAR VENTA" Then
|
||||
contadorIniciarVenta = 0
|
||||
IniVenNO = False
|
||||
contadorIniciarVenta = contadorIniciarVenta + 1
|
||||
If contadorIniciarVenta = 1 And IniVenNO = False And motivoNoVenta <> "NO VENTA" Then
|
||||
IniVenNO = True
|
||||
mandaBitacora(Subs.fechanormal(DateTime.Now), Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeRutaBitacora, "Inicia Venta", Subs.traeCliente, Subs.fechanormal(DateTime.Now), "", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, "", "")
|
||||
enVenta = True
|
||||
LogColor($">>>>>> EN VENTA: ${enVenta}"$, Colors.red)
|
||||
' LogColor($">>>>>> INICIA VENTA: ${Starter.enVenta} - ${Subs.traeCliente}"$, Colors.red)
|
||||
Else If contadorIniciarVenta = 1 And IniVenNO = False And motivoNoVenta = "NO VENTA" Then
|
||||
IniVenNO = True
|
||||
mandaBitacora(Subs.fechanormal(DateTime.Now), Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeRutaBitacora, "Inicia Venta", Subs.traeCliente, Subs.fechanormal(DateTime.Now), "", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, motivoNoVenta, "")
|
||||
enVenta = True
|
||||
LogColor($">>>>>> EN VENTA: ${enVenta}"$, Colors.red)
|
||||
Else If contadorIniciarVenta > 1 Then
|
||||
p_transparenteInicioFin2.Visible = False
|
||||
End If
|
||||
End If
|
||||
p_transparenteInicioFin2.Visible = False
|
||||
LogColor($">>>>>>>>>>>> EN VENTA : ${enVenta} <<<<<<<<<<<<"$, Colors.Blue)
|
||||
End Sub
|
||||
|
||||
'Cargamos el layout del panel.
|
||||
private Sub cargamosPanel
|
||||
Log(p_transparenteInicioFin2.IsInitialized)
|
||||
' Log(p_transparenteInicioFin2.)
|
||||
If Not(p_transparenteInicioFin2.IsInitialized) Then
|
||||
' LogColor(">>>>>>> CARGAMOS PANEL BITACORA", Colors.red)
|
||||
Root2.LoadLayout("inicioFinVenta")
|
||||
p_transparenteInicioFin2.Width = Root2.Width
|
||||
p_transparenteInicioFin2.Height = Root2.Height
|
||||
b_Inicio_Fin_venta2.top = 700
|
||||
b_Inicio_Fin_venta2.Left = 5
|
||||
b_Inicio_Fin_venta2.Width = Root2.Width - 20
|
||||
b_Inicio_Fin_venta2.Text = "INICIAR VENTA"
|
||||
p_transparenteInicioFin2.BringToFront
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub p_transparenteInicioFin2_click
|
||||
|
||||
End Sub
|
||||
|
||||
' Ponemos el texto del boton en "INICIAR VENTA" y enVenta en Falso .
|
||||
Sub iniciamosVenta
|
||||
enVenta = False
|
||||
b_Inicio_Fin_venta2.Text = "INICIAR VENTA"
|
||||
End Sub
|
||||
|
||||
Sub agregaColumna(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 = 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
|
||||
' Log(1)
|
||||
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
|
||||
Log(2)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Borra los datos de la tabla BITACORAGPS
|
||||
Sub borraDatosBitacora
|
||||
db.ExecNonQuery("DELETE FROM BITACORAGPS")
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
Log("JOBDONE BITACORA")
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
Log($"Tag: ${RESULT.tag}, success=${Job.Success}"$)
|
||||
End If
|
||||
'Log(Job.Tag)
|
||||
If Job.Success = False Then
|
||||
' Log("JOBDONE ERROR")
|
||||
LogColor("Error: " & Job.ErrorMessage, Colors.red)
|
||||
Else 'If Job Success then ...
|
||||
' Log("JOBDONE SUCCESS")
|
||||
End If
|
||||
End Sub
|
||||
2511
B4A/C_Cliente.bas
Normal file
526
B4A/C_Clientes.bas
Normal file
@@ -0,0 +1,526 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
' Dim skmt As SQL
|
||||
Dim c As Cursor
|
||||
Dim c2 As Cursor
|
||||
Dim d As Cursor
|
||||
Dim s As Cursor
|
||||
Dim ListView1 As ListView
|
||||
Dim entro As String
|
||||
Dim gest As Button
|
||||
Dim lfila As Label
|
||||
Dim busca As EditText
|
||||
Dim colonia As String
|
||||
Private b_qr As Button
|
||||
Private qr As QRCode
|
||||
' Dim sc As Zxing_scanner
|
||||
Dim CODIGO As String
|
||||
Dim STIME As String
|
||||
|
||||
Dim ruta As String
|
||||
Dim q_buscar As String
|
||||
Private p_clientes As Panel
|
||||
Private CustomListView1 As CustomListView
|
||||
Private numerocliente As Label
|
||||
Private nombrecliente As Label
|
||||
Private direccion As Label
|
||||
Private cxc As Label
|
||||
Private p_datosclie As Panel
|
||||
Private b_buscar As Button
|
||||
Private CHECK As Int
|
||||
Private l_baseodia As Label
|
||||
|
||||
Private CREDITO As Label
|
||||
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("clientes")
|
||||
'Dim ruta As String
|
||||
entro ="2"
|
||||
' valido donde escribo el archivo de la base de datos de kmt
|
||||
' If File.ExternalWritable Then
|
||||
' ruta = File.DirDefaultExternal
|
||||
' Else
|
||||
ruta = File.DirInternal
|
||||
' End If
|
||||
|
||||
' se crea o no el archivo de la base de ddatos de kmt
|
||||
'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE
|
||||
'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA
|
||||
'SI SE REGRESA A ESTE ACTIVIDAD.
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
qr.initialize
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
If B4XPages.MainPage.cliente.IsInitialized Then
|
||||
B4XPages.MainPage.cliente.bitacora.enVenta = False
|
||||
End If
|
||||
l_baseodia.Text = "Clientes del día de visita"
|
||||
CHECK = 0
|
||||
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"$)
|
||||
ListView1.Clear
|
||||
lfila.Text = "NOMBRE"
|
||||
|
||||
CustomListView1.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
CustomListView1.Add(CreateListItem(c.GetString("CAT_CL_NOMBRE"),c.GetString("CAT_CL_CALLE"),c.GetString("CAT_CL_CODIGO")),i)
|
||||
d = B4XPages.MainPage.skmt.ExecQuery($"select CLIENTE FROM ABONOSP WHERE CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
|
||||
If d.RowCount = 0 Then
|
||||
cxc.Visible = False
|
||||
Else
|
||||
cxc.Visible = False
|
||||
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")}'"$)
|
||||
' LogColor(d.RowCount,Colors.Blue)
|
||||
If d.RowCount > 0 Then
|
||||
d.Position = 0
|
||||
If d.GetString("CAT_CL_BCREDITO") = "1" Then
|
||||
CREDITO.Visible = False
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
d.Close
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
Next
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 13
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 13
|
||||
label2.TextColor = Colors.Black
|
||||
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NOMBRE"))
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
entro = "4"
|
||||
|
||||
End Sub
|
||||
|
||||
Sub CreateListItem(mostrar As String, mostrar1 As String, mostrar2 As String) As Panel
|
||||
Dim p As B4XView = xui.CreatePanel("")
|
||||
p.SetLayoutAnimated(0, 0, 0, 1, 220)
|
||||
p.LoadLayout("datoscliente")
|
||||
p.Height= 60dip
|
||||
' p.Width = clv_orden.GetBase.Width
|
||||
nombrecliente.Text = mostrar
|
||||
direccion.Text = mostrar1
|
||||
numerocliente.Text = mostrar2
|
||||
p_datosclie.Tag = mostrar2
|
||||
' cxc.Text = mostrar3
|
||||
' Log(p.Width)
|
||||
Return p
|
||||
End Sub
|
||||
|
||||
Sub ListView1_ItemClick (Position As Int, value As Object)
|
||||
If colonia = 0 Then
|
||||
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))
|
||||
ListView1.Clear
|
||||
lfila.text = "Calle"
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CALLE"),c2.GetString("cuantos") )
|
||||
Next
|
||||
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))
|
||||
ListView1.Clear
|
||||
lfila.text = "Nombre"
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE"))
|
||||
Next
|
||||
End If
|
||||
entro = "4"
|
||||
Else If entro = "4" Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(value))
|
||||
DateTime.TimeFormat = "HHmmss"
|
||||
STIME=DateTime.Time(DateTime.Now)
|
||||
Starter.pre_viejo = Subs.traeTotalClientepreventaparacredito
|
||||
s=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_STAY_STORE WHERE HSS_IN = ? AND HSS_CODIGO In (select cuenta from cuentaa)", Array As String("0"))
|
||||
s.Position = 0
|
||||
If s.GetString("CUANTOS") = 1 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
Else
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (value))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
End If
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_INI = ? where HSO_INI = 0 ", Array As Object(STIME))
|
||||
DateTime.TimeFormat = "HH:mm:ss"
|
||||
|
||||
Subs.guardaClienteHoraInicio(value)
|
||||
|
||||
If B4XPages.MainPage.cliente.bitacora.IsInitialized Then
|
||||
Log("VAMOS A CLIENTE CON ENVENTA = FALSO")
|
||||
B4XPages.MainPage.cliente.bitacora.iniciamosVenta
|
||||
Log(B4XPages.MainPage.cliente.bitacora.enVenta)
|
||||
End If
|
||||
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
' BACK key pressed
|
||||
'Return True to close, False to cancel
|
||||
' If key=KeyCodes.KEYCODE_BACK Then
|
||||
' StartActivity(seleccion)
|
||||
' Return False
|
||||
' End If
|
||||
Return True
|
||||
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))
|
||||
ListView1.Clear
|
||||
lfila.text = "Nombre y Calle"
|
||||
|
||||
CustomListView1.Clear
|
||||
For i = 0 To c2.RowCount - 1
|
||||
c2.Position = i
|
||||
CustomListView1.Add(CreateListItem(c2.GetString("CAT_CL_NOMBRE"),c2.GetString("CAT_CL_CALLE"),c2.GetString("CAT_CL_CODIGO")),i)
|
||||
d = B4XPages.MainPage.skmt.ExecQuery($"select CLIENTE FROM ABONOSP WHERE CLIENTE = '${c2.GetString("CAT_CL_CODIGO")}'"$)
|
||||
If d.RowCount = 0 Then
|
||||
cxc.Visible = False
|
||||
Else
|
||||
cxc.Visible = False
|
||||
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")}'"$)
|
||||
' LogColor(d.RowCount,Colors.Blue)
|
||||
If d.RowCount > 0 Then
|
||||
d.Position = 0
|
||||
' LogColor(d.GetString("CAT_CL_BCREDITO"),Colors.Blue)
|
||||
If d.GetString("CAT_CL_BCREDITO") = "1" Then
|
||||
CREDITO.Visible = False
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
d.Close
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 9
|
||||
label1.TextColor = Colors.White
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 17
|
||||
label2.TextColor = Colors.White
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE"))
|
||||
Next
|
||||
End If
|
||||
entro = "4"
|
||||
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_info 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"
|
||||
|
||||
CustomListView1.Clear
|
||||
For i = 0 To c2.RowCount - 1
|
||||
c2.Position = i
|
||||
CustomListView1.Add(CreateListItem(c2.GetString("CAT_CL_NOMBRE"),c2.GetString("CAT_CL_CALLE"),c2.GetString("CAT_CL_CODIGO")),i)
|
||||
d = B4XPages.MainPage.skmt.ExecQuery($"select CLIENTE FROM ABONOSP WHERE CLIENTE = '${c2.GetString("CAT_CL_CODIGO")}'"$)
|
||||
If d.RowCount = 0 Then
|
||||
cxc.Visible = False
|
||||
Else
|
||||
cxc.Visible = False
|
||||
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")}'"$)
|
||||
' LogColor(d.RowCount,Colors.Blue)
|
||||
If d.RowCount > 0 Then
|
||||
d.Position = 0
|
||||
LogColor(d.GetString("CAT_CL_BCREDITO"),Colors.Blue)
|
||||
If d.GetString("CAT_CL_BCREDITO") = "1" Then
|
||||
CREDITO.Visible = False
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
d.Close
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 9
|
||||
label1.TextColor = Colors.White
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 17
|
||||
label2.TextColor = Colors.White
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE"))
|
||||
Next
|
||||
End If
|
||||
entro = "4"
|
||||
c2.Close
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub b_qr_Click
|
||||
Dim scan_width As Int
|
||||
Dim scan_height As Int
|
||||
scan_width = 400
|
||||
scan_height = 400
|
||||
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.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.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")))
|
||||
s.Close
|
||||
' b_qr.Visible = False
|
||||
B4XPages.ShowPage("clientes")
|
||||
Else
|
||||
Msgbox("CODIGO " & CODIGO & " NO ENCONTRADO","AVISO") 'ignore
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub sc_noScan
|
||||
Log("nothing returned from the scan !!!!!")
|
||||
End Sub
|
||||
|
||||
Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes
|
||||
Dim i As Int
|
||||
Dim cO As Char
|
||||
Dim soma As Int
|
||||
Dim n As Int
|
||||
Dim digit As Float
|
||||
soma = 0
|
||||
For i=0 To number.Length - 1
|
||||
digit = number.SubString2(i,i+1)
|
||||
n= digit * ((i Mod 2) * 2 + 1)
|
||||
soma=soma+n
|
||||
Next
|
||||
Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 )
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Private Sub p_clientes_Click
|
||||
'Nada aqui, solo esta para que los clics no se pasen hacia atras.
|
||||
End Sub
|
||||
|
||||
Private Sub p_datosclie_Click
|
||||
If colonia = 0 Then
|
||||
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))
|
||||
ListView1.Clear
|
||||
lfila.text = "Calle"
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CALLE"),c2.GetString("cuantos") )
|
||||
Next
|
||||
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))
|
||||
ListView1.Clear
|
||||
lfila.text = "Nombre"
|
||||
If c2.RowCount>0 Then
|
||||
For i=0 To c2.RowCount -1
|
||||
c2.Position=i
|
||||
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE"))
|
||||
Next
|
||||
End If
|
||||
entro = "4"
|
||||
Else If entro = "4" Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Sender.As(Panel).tag))
|
||||
DateTime.TimeFormat = "HHmmss"
|
||||
STIME=DateTime.Time(DateTime.Now)
|
||||
|
||||
s=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_STAY_STORE WHERE HSS_IN = ? AND HSS_CODIGO In (select cuenta from cuentaa)", Array As String("0"))
|
||||
s.Position = 0
|
||||
If s.GetString("CUANTOS") = 1 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
Else
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (Sender.As(Panel).tag))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
End If
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_INI = ? where HSO_INI = 0 ", Array As Object(STIME))
|
||||
DateTime.TimeFormat = "HH:mm:ss"
|
||||
|
||||
Subs.guardaClienteHoraInicio(Sender.As(Panel).tag)
|
||||
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End If
|
||||
|
||||
|
||||
' Log(Sender.As(Panel).tag)
|
||||
End Sub
|
||||
|
||||
Private Sub b_buscar_Click
|
||||
Log(CHECK)
|
||||
If CHECK = 0 Then
|
||||
l_baseodia.Text = "Clientes de base de datos"
|
||||
CHECK = 1
|
||||
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"$)
|
||||
ListView1.Clear
|
||||
lfila.Text = "NOMBRE"
|
||||
ListView1.Clear
|
||||
CustomListView1.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
CustomListView1.Add(CreateListItem(c.GetString("CAT_CL_NOMBRE"),c.GetString("CAT_CL_CALLE"),c.GetString("CAT_CL_CODIGO")),i)
|
||||
d = B4XPages.MainPage.skmt.ExecQuery($"select CLIENTE FROM ABONOSP WHERE CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
|
||||
If d.RowCount = 0 Then
|
||||
cxc.Visible = False
|
||||
Else
|
||||
cxc.Visible = False
|
||||
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")}'"$)
|
||||
' LogColor(d.RowCount,Colors.Blue)
|
||||
If d.RowCount > 0 Then
|
||||
d.Position = 0
|
||||
LogColor(d.GetString("CAT_CL_BCREDITO"),Colors.Blue)
|
||||
If d.GetString("CAT_CL_BCREDITO") = "1" Then
|
||||
CREDITO.Visible = False
|
||||
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
d.Close
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
Next
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 13
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 13
|
||||
label2.TextColor = Colors.Black
|
||||
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NOMBRE"))
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
entro = "4"
|
||||
|
||||
Else If CHECK = 1 Then
|
||||
l_baseodia.Text = "Clientes del día de visita"
|
||||
CHECK = 0
|
||||
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"$)
|
||||
ListView1.Clear
|
||||
lfila.Text = "NOMBRE"
|
||||
ListView1.Clear
|
||||
CustomListView1.Clear
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
CustomListView1.Add(CreateListItem(c.GetString("CAT_CL_NOMBRE"),c.GetString("CAT_CL_CALLE"),c.GetString("CAT_CL_CODIGO")),i)
|
||||
d = B4XPages.MainPage.skmt.ExecQuery($"select CLIENTE FROM ABONOSP WHERE CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
|
||||
If d.RowCount = 0 Then
|
||||
cxc.Visible = False
|
||||
Else
|
||||
cxc.Visible = False
|
||||
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")}'"$)
|
||||
' LogColor(d.RowCount,Colors.Blue)
|
||||
If d.RowCount > 0 Then
|
||||
d.Position = 0
|
||||
LogColor(d.GetString("CAT_CL_BCREDITO"),Colors.Blue)
|
||||
If d.GetString("CAT_CL_BCREDITO") = "1" Then
|
||||
CREDITO.Visible = False
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
d.Close
|
||||
Else
|
||||
CREDITO.Visible = False
|
||||
End If
|
||||
Next
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 13
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 13
|
||||
label2.TextColor = Colors.Black
|
||||
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NOMBRE"))
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
entro = "4"
|
||||
|
||||
End If
|
||||
End Sub
|
||||
179
B4A/C_Cuestionario.bas
Normal file
@@ -0,0 +1,179 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.2
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
Private bAceptarPregunta As Button
|
||||
Dim encuestaIniciada As Boolean = False
|
||||
Private Root2 As B4XView
|
||||
Private EventName As String 'ignore
|
||||
Private CallBack As Object 'ignore
|
||||
Private vPreguntaActual As String
|
||||
Private db As SQL
|
||||
' Private clienteAnt As String = ""
|
||||
Dim panelSombra As Panel 'Panel de sombra.
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize (vCallback As Object, vEventName As String, vRoot As B4XView, skmt As SQL) As Object
|
||||
Root2 = vRoot
|
||||
EventName = vEventName
|
||||
CallBack = vCallback
|
||||
db = skmt
|
||||
vPreguntaActual = 0
|
||||
db.ExecNonQuery("CREATE TABLE IF NOT EXISTS CUESTIONARIO (Q_RUTA TEXT, Q_ALMACEN TEXT, Q_IDCLIENTE TEXT, Q_IDPREGUNTA TEXT, Q_PREGUNTA TEXT, Q_IDRESPUESTA TEXT, Q_RESPUESTA TEXT, Q_FECHA TEXT, Q_ENVIO_OK INTEGER DEFAULT 0)")
|
||||
agregaColumna("CUESTIONARIO", "Q_ENVIO_OK", "TEXT")
|
||||
agregaColumna("CUESTIONARIO", "Q_RUTA", "TEXT")
|
||||
agregaColumna("CUESTIONARIO", "Q_ALMACEN", "TEXT")
|
||||
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
|
||||
End Sub
|
||||
|
||||
'Regresa verdadero o falso dependiendo de si ya se inició la encuesta.
|
||||
'Sub encuestaIniciada As Boolean
|
||||
' Return vEncuestaIniciada
|
||||
'End Sub
|
||||
|
||||
'Regresa el Id de la pregunta actual (read-only).
|
||||
Sub preguntaActual As String 'ignore
|
||||
Return vPreguntaActual
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
'Muestra una pregunta con sus posibles respuestas.
|
||||
' La lista de respuestas puede ser directamente un array p. ej. Array As String("value1", "value2")
|
||||
' Crear un Sub_Click con el nombre del evento para que reciba un mapa con la respuesta p. ej.: Sub questionario_Click
|
||||
' Regresa un mapa con:
|
||||
' idPregunta - El Id especificado de la pregunta.
|
||||
' pregunta - El texto de la pregunta.
|
||||
' idRespuesta - Un numero consecutivo empezando en 1 por cada pregunta.
|
||||
' respuesta - El texto de la respuesta.
|
||||
' panel - El panel del popup para poder ocultarlo al contestar la pregunta. ( p. ej.: m.Get("panel").As(Panel).Visible = false )
|
||||
'###########################################
|
||||
' Sub questionario_Click
|
||||
' if m.get("idPregunta") = "1" ..Then .. Else con nuevas preguntas
|
||||
' End Sub
|
||||
'###########################################
|
||||
Sub agregaPregunta(id As String, pregunta As String, respuestas As List)
|
||||
encuestaIniciada = True
|
||||
vPreguntaActual = id
|
||||
bAceptarPregunta.Initialize("bAceptarPregunta")
|
||||
|
||||
Private su As StringUtils
|
||||
panelSombra.Initialize("pSombra")
|
||||
Private cd As ColorDrawable
|
||||
cd.Initialize(Colors.ARGB(125, 98, 98, 98), 0)
|
||||
panelSombra.Background = cd
|
||||
Private panelX As Panel 'Panel de la pregunta.
|
||||
panelX.Initialize("pQuest")
|
||||
Private lbl As Label 'Etiqueta de la pregunta.
|
||||
lbl.Initialize("")
|
||||
lbl.Text = pregunta
|
||||
lbl.TextSize = 16
|
||||
lbl.TextColor = Colors.Black
|
||||
cd.Initialize2(Colors.white, 20, 1, Colors.Gray) 'Borde y esquinas redondeadas del panel de la pregunta.
|
||||
panelX.Background = cd
|
||||
panelSombra.AddView(panelX, 10dip, 0dip, 80%x, 200dip)
|
||||
Root2.AddView(panelSombra, 0, 0, 100%x, 100%y) 'add the panel to the layout
|
||||
panelX.AddView(lbl, 20dip, 20dip, (panelX.Width * 0.9), 40dip) 'Agregamos la etiqueta al panel.
|
||||
lbl.Height = su.MeasureMultilineTextHeight(lbl, lbl.Text)
|
||||
Private r(respuestas.Size) As RadioButton
|
||||
For p = 0 To respuestas.Size - 1
|
||||
r(p).Initialize("r")
|
||||
r(p).Text = respuestas.Get(p)
|
||||
r(p).Tag = CreateMap("id":id, "pregunta":pregunta, "panel":panelSombra, "idRespuesta":p + 1)
|
||||
panelX.AddView(r(p), 10dip, (70 * (p + 1)), (panelX.Width * 0.9), 10) 'Agegamos el radio al panel.
|
||||
r(p).Height = su.MeasureMultilineTextHeight(r(p), r(p).Text) + 25 'Calculamos el alto del radio de acuerdo al largo del texto.
|
||||
Private newTop As Int = lbl.top + lbl.Height + 10 'Si es el primer radio, lo ponemos en top = alto de la "pregunta" + 10.
|
||||
If p <> 0 Then newTop = r(p - 1).Top + r(p - 1).Height + 5 'Calculamos el Top del radio de acuerdo al top y alto del radio anterior.
|
||||
r(p).Top = newTop
|
||||
Next
|
||||
r(0).Checked = True
|
||||
bAceptarPregunta.Text = "Continuar"
|
||||
panelX.AddView(bAceptarPregunta, 10, newTop + r(respuestas.Size - 1).Height + 20, 150dip, 50dip) 'Ponemos el boton de continuar despues del ultimo radio.
|
||||
bAceptarPregunta.Left = (panelX.Width / 2) - (bAceptarPregunta.Width / 2)
|
||||
panelX.Height = bAceptarPregunta.Top + bAceptarPregunta.Height + 15dip 'Calculamos el alto del panel de acuerdo al Top del boton.
|
||||
panelX.left = (Root2.Width / 2) - (panelX.Width / 2)
|
||||
panelX.top = (Root2.Height / 3) - (panelX.Height / 2)
|
||||
panelSombra.Width = Root2.Width
|
||||
panelSombra.Height = Root2.Height
|
||||
panelSombra.Elevation = 100
|
||||
panelSombra.BringToFront
|
||||
' panelSombra.Elevation = 0
|
||||
End Sub
|
||||
|
||||
private Sub preguntaContestada(Success As Map) 'ignore
|
||||
If SubExists(CallBack, EventName & "_preguntaContestada") Then
|
||||
CallSubDelayed2(CallBack, EventName & "_preguntaContestada", Success)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
private Sub pSombra_Click
|
||||
End Sub
|
||||
|
||||
private Sub r_CheckedChange(Checked As Boolean)
|
||||
bAceptarPregunta.tag = CreateMap("idPregunta":Sender.As(RadioButton).tag.As(Map).Get("id").As(String), "pregunta":Sender.As(RadioButton).tag.As(Map).Get("pregunta"), "idRespuesta":Sender.As(RadioButton).tag.As(Map).Get("idRespuesta").As(String), "respuesta":Sender.As(RadioButton).text, "panel":Sender.As(RadioButton).tag.As(Map).Get("panel"))
|
||||
End Sub
|
||||
|
||||
Private Sub bAceptarPregunta_Click
|
||||
encuestaIniciada = True
|
||||
Private m As Map = Sender.As(Button).tag.As(Map) 'Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo.
|
||||
preguntaContestada(m)
|
||||
'' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta.
|
||||
' m.Get("panel").As(Panel).RemoveView
|
||||
' If m.Get("idPregunta") = "1" And m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then
|
||||
' Log("Tiendajon / Ventana / Kiosko")
|
||||
' else If m.Get("idPregunta") = "1" And m.Get("respuesta") = "Si se pude acceder" Then
|
||||
' agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central"))
|
||||
' End If
|
||||
' If m.Get("idPregunta") = "2" And m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then
|
||||
' Log("Mini-Super")
|
||||
' else If m.Get("idPregunta") = "2" And m.Get("respuesta") = "No tiene pasillos o solo uno central" Then
|
||||
' agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal. ¿El local esta enfocado a venta especializada?"))
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
'Regresa verdadero si el cliente dado tiene cuestionario contestado.
|
||||
Sub clienteConCuestionario(idCliente As String) As Boolean 'ignore
|
||||
Private r As Boolean = False
|
||||
Private c As Cursor = db.ExecQuery($"select count(*) as q from CUESTIONARIO where Q_IDCLIENTE = '${idCliente}'"$)
|
||||
c.Position = 0
|
||||
If c.GetInt("q") > 0 Then r = True
|
||||
Return r
|
||||
End Sub
|
||||
|
||||
'Oculta el anel de la pregunta.
|
||||
Sub ocultPanelPregunta
|
||||
If panelSombra.IsInitialized Then panelSombra.RemoveView
|
||||
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
|
||||
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
||||
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
|
||||
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
|
||||
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
|
||||
123
B4A/C_Historico.bas
Normal file
@@ -0,0 +1,123 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
Dim g As GPS
|
||||
Dim clie_id As String
|
||||
Dim sDate,sTime As String
|
||||
Dim usuario As String
|
||||
|
||||
Dim c As Cursor
|
||||
Dim ruta As String
|
||||
Dim Regresar As Button
|
||||
|
||||
|
||||
Dim ListView1 As ListView
|
||||
Dim L_CANT As Label
|
||||
Dim L_TOTAL As Label
|
||||
Dim borra As Button
|
||||
Dim Existe As String
|
||||
Dim result As String
|
||||
' Dim lat_gps, lon_gps As String
|
||||
|
||||
Private Titulo As Label
|
||||
Private b_desc As Button
|
||||
Private ListView2 As ListView
|
||||
Dim tgl As Toggle
|
||||
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
|
||||
ruta = File.DirInternal
|
||||
Root.LoadLayout("nota")
|
||||
borra.Visible = False
|
||||
Titulo.Text = "Acumulado"
|
||||
b_desc.Visible = False
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
' skmt.Initialize(ruta,"kmt.db", True)
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
L_CANT.Text =""
|
||||
L_TOTAL.Text=""
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select count(*) as EXISTE from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
C.Position=0
|
||||
Existe = C.GetString("EXISTE")
|
||||
C.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PRONOMBRE asc")
|
||||
ListView1.Clear
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 15
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 10
|
||||
label2.TextColor = Colors.Blue
|
||||
ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT"))
|
||||
Next
|
||||
End If
|
||||
If Existe <> 0 Then
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from HIST_VENTAS where HVD_CLIENTE in (Select CUENTA from cuentaa)")
|
||||
C.Position=0
|
||||
L_CANT.Text = c.GetString("PC_NOART")
|
||||
L_TOTAL.Text = c.GetString("PC_MONTO")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||
End Sub
|
||||
|
||||
Sub Regresar_Click
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
' BACK key pressed
|
||||
' Return True To close, False To cancel
|
||||
B4XPages.ShowPage("Principal")
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Sub ListView2_ItemClick (Position As Int, Value As Object)
|
||||
ListView2.Visible = False
|
||||
ListView1.Visible = True
|
||||
End Sub
|
||||
|
||||
Sub ListView1_ItemClick (Position As Int, Value As Object)
|
||||
ListView2.Visible = True
|
||||
ListView1.Visible = False
|
||||
Dim label1 As Label
|
||||
For i=0 To 20
|
||||
label1 = ListView2.SingleLineLayout.Label
|
||||
label1.TextSize = 15
|
||||
label1.TextColor = Colors.Black
|
||||
ListView2.AddSingleLine(i)
|
||||
Next
|
||||
End Sub
|
||||
263
B4A/C_MapaRutas.bas
Normal file
@@ -0,0 +1,263 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
Dim GPS As GPS
|
||||
Dim rp As RuntimePermissions
|
||||
Dim ruta As String
|
||||
Dim skmt As SQL
|
||||
Dim c As Cursor
|
||||
Dim c2 As Cursor
|
||||
Dim c22 As Cursor
|
||||
Dim c3 As Cursor
|
||||
|
||||
Private gmap As GoogleMap
|
||||
Private MapFragment1 As MapFragment
|
||||
Dim Latitud As Double = 0
|
||||
Dim Longitud As Double = 0
|
||||
Dim Lat2 As Double = 0
|
||||
Dim Lon2 As Double = 0
|
||||
Dim p1, p2 As Location
|
||||
Dim Distance As Float
|
||||
Dim boton1 As Button
|
||||
Dim HUE_BLUE As Float
|
||||
Dim HUE_RED As Float
|
||||
Dim HUE_GREEN As Float
|
||||
Private B_AZUL As Button
|
||||
Private B_ROJO As Button
|
||||
Private B_VERDE As Button
|
||||
Private B_TODOS As Button
|
||||
Dim Tienda As String
|
||||
Dim LatitudRu As Double
|
||||
Dim LongitudRU As Double
|
||||
Dim LIST_AZUL As List
|
||||
Dim LIST_ROJO As List
|
||||
Dim LIST_VERDE As List
|
||||
Dim MARK_AZUL As Marker
|
||||
Dim MARK_ROJO As Marker
|
||||
Dim MARK_VERDE As Marker
|
||||
Dim MARK_CEDIS As Marker
|
||||
Dim rojo As String
|
||||
Dim azul As String
|
||||
Dim verde As String
|
||||
Dim todos As String
|
||||
Dim NumSerie As Int
|
||||
Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener
|
||||
Dim GoogleMapEXTRA As GoogleMapsExtras
|
||||
Dim CODIGO As String
|
||||
Private SEMANA As String
|
||||
Private p_mapaRutas As Panel
|
||||
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("mapaRutas")
|
||||
ruta = File.DirInternal
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
GPS.Initialize("GPS")
|
||||
If MapFragment1.IsGooglePlayServicesAvailable = False Then
|
||||
ToastMessageShow("Please install Google Play Services.", True)
|
||||
End If
|
||||
MARK_AZUL.IsInitialized
|
||||
MARK_ROJO.IsInitialized
|
||||
MARK_VERDE.IsInitialized
|
||||
LIST_AZUL.Initialize
|
||||
LIST_ROJO.Initialize
|
||||
LIST_VERDE.Initialize
|
||||
verde = 0
|
||||
azul = 0
|
||||
rojo = 0
|
||||
todos = 1
|
||||
c=B4XPages.MainPage.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
|
||||
c.Position =0
|
||||
SEMANA = c.GetString("CUANTOS")
|
||||
c.Close
|
||||
If SEMANA > 0 Then
|
||||
c=B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
|
||||
c.Position =0
|
||||
SEMANA = c.GetString("CAT_VA_VALOR")
|
||||
c.Close
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub MapFragment1_Ready
|
||||
Log("ENTRANDO")
|
||||
gmap = MapFragment1.GetMap
|
||||
gmap.IsInitialized
|
||||
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
|
||||
gmap.MyLocationEnabled = Result
|
||||
Dim JavaMapsObject As JavaObject
|
||||
JavaMapsObject = gmap.GetUiSettings
|
||||
JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))
|
||||
'''''''----------------------------MARKER AZUL - POR VISITAR
|
||||
If azul = 1 Or todos = 1 Then
|
||||
c.IsInitialized
|
||||
c=B4XPages.MainPage.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 <> ' ' ")
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
' Log(i&"|"&c.GetString("CAT_CL_LAT")&"|")
|
||||
LatitudRu = 0
|
||||
If c.GetString("CAT_CL_LAT") <> "" Then LatitudRu = c.GetString("CAT_CL_LAT")
|
||||
LongitudRU = 0
|
||||
If c.GetString("CAT_CL_LONG") <> "" Then LongitudRU = c.GetString("CAT_CL_LONG")
|
||||
CODIGO=c.GetString("CAT_CL_CODIGO")
|
||||
Tienda= c.GetString("CAT_CL_NOMBRE")
|
||||
MARK_AZUL = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO, gmap.HUE_BLUE)
|
||||
MARK_AZUL.Snippet = Tienda
|
||||
Next
|
||||
End If
|
||||
c .Close
|
||||
If MARK_AZUL.IsInitialized Then LIST_AZUL.Add(MARK_AZUL)
|
||||
End If
|
||||
'''''''----------------------------MARKER VERDE - VENTA
|
||||
If verde =1 Or todos = 1 Then
|
||||
c2.IsInitialized
|
||||
c2=B4XPages.MainPage.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")
|
||||
For i = 0 To c2.RowCount -1
|
||||
c2.Position = i
|
||||
LongitudRU = c2.GetString("CAT_CL_LONG")
|
||||
LatitudRu = c2.GetString("CAT_CL_LAT")
|
||||
CODIGO=c2.GetString("CAT_CL_CODIGO")
|
||||
Tienda= c2.GetString("CAT_CL_NOMBRE")
|
||||
MARK_VERDE = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO,gmap.HUE_GREEN)
|
||||
MARK_VERDE.Snippet = Tienda
|
||||
Next
|
||||
Else
|
||||
If verde =1 Or todos = 1 Then
|
||||
c2.IsInitialized
|
||||
c2=B4XPages.MainPage.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")
|
||||
For i = 0 To c2.RowCount -1
|
||||
c2.Position = i
|
||||
LongitudRU = c2.GetString("CAT_CL_LONG")
|
||||
LatitudRu = c2.GetString("CAT_CL_LAT")
|
||||
CODIGO=c2.GetString("CAT_CL_CODIGO")
|
||||
Tienda= c2.GetString("CAT_CL_NOMBRE")
|
||||
MARK_VERDE = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO,gmap.HUE_GREEN)
|
||||
MARK_VERDE.Snippet = Tienda
|
||||
Next
|
||||
c2 .Close
|
||||
If MARK_VERDE.IsInitialized Then LIST_VERDE.Add(MARK_VERDE)
|
||||
End If
|
||||
End If
|
||||
' '''''''----------------------------MARKER ROJO - NO VENTA
|
||||
If rojo =1 Or todos = 1 Then
|
||||
c3.IsInitialized
|
||||
c3=B4XPages.MainPage.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")
|
||||
For i = 0 To c3.RowCount -1
|
||||
c3.Position = i
|
||||
LongitudRU = c3.GetDouble("CAT_CL_LONG")
|
||||
LatitudRu = c3.GetDouble("CAT_CL_LAT")
|
||||
Tienda= c3.GetString("CAT_CL_NOMBRE")
|
||||
MARK_ROJO = gmap.AddMarker2(LatitudRu,LongitudRU,Tienda, gmap.HUE_RED)
|
||||
Next
|
||||
Else
|
||||
If rojo =1 Or todos = 1 Then
|
||||
c3.IsInitialized
|
||||
c3=B4XPages.MainPage.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")
|
||||
For i = 0 To c3.RowCount -1
|
||||
c3.Position = i
|
||||
LongitudRU = c3.GetDouble("CAT_CL_LONG")
|
||||
LatitudRu = c3.GetDouble("CAT_CL_LAT")
|
||||
Tienda= c3.GetString("CAT_CL_NOMBRE")
|
||||
MARK_ROJO = gmap.AddMarker2(LatitudRu,LongitudRU,Tienda, gmap.HUE_RED)
|
||||
Next
|
||||
If MARK_ROJO.IsInitialized Then LIST_ROJO.Add(MARK_ROJO)
|
||||
c3.Close
|
||||
End If
|
||||
End If
|
||||
''------------------------------
|
||||
Dim aa As CameraPosition
|
||||
aa.Initialize(LatitudRu,LongitudRU,15)''' RECOMENDABLE CAMBIAR A 10 PARA QUE SE VEAN MAS MARCADORES
|
||||
gmap.AnimateCamera(aa)
|
||||
|
||||
'''''---------------------- ESTO ES PARA LOS CLICK EN LAS VENTANAS D INFORMACION-----------
|
||||
Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener
|
||||
OnInfoWindowClickListener1.Initialize("OnInfoWindowClickListener1")
|
||||
GoogleMapEXTRA.SetOnInfoWindowClickListener(gmap, OnInfoWindowClickListener1)
|
||||
|
||||
End Sub
|
||||
|
||||
Sub OnInfoWindowClickListener1_click(Marker1 As Marker)
|
||||
Log("mapclicked")
|
||||
Log("borramos cuentaa")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
Log("insertamos cuentaa")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?) ", Array As Object(Marker1.Title))
|
||||
Log("vamos a cliente")
|
||||
B4XPages.ShowPage("Cliente")
|
||||
B4XPages.ClosePage("MapaRutas")
|
||||
B4XPages.GetManager.ClosePage(Me)
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Parametro As Location)
|
||||
MARK_CEDIS.IsInitialized
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
If GPS.GPSEnabled = False Then
|
||||
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
|
||||
StartActivity(GPS.LocationSettingsIntent)
|
||||
Else
|
||||
GPS.Start(0, 0)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub B_TODOS_Click
|
||||
todos =1
|
||||
verde = 0
|
||||
azul = 0
|
||||
rojo = 0
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Sub B_VERDE_Click
|
||||
verde = 1
|
||||
azul = 0
|
||||
rojo = 0
|
||||
todos = 0
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Sub B_ROJO_Click
|
||||
rojo = 1
|
||||
verde = 0
|
||||
azul = 0
|
||||
todos = 0
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Sub B_AZUL_Click
|
||||
azul = 1
|
||||
verde = 0
|
||||
rojo = 0
|
||||
todos = 0
|
||||
gmap.Clear
|
||||
MapFragment1_Ready
|
||||
End Sub
|
||||
|
||||
Private Sub p_mapaRutas_Click
|
||||
|
||||
End Sub
|
||||
24
B4A/C_Mapas.bas
Normal file
@@ -0,0 +1,24 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
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
|
||||
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
191
B4A/C_NoVenta.bas
Normal file
@@ -0,0 +1,191 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
Dim g As GPS
|
||||
Dim ruta As String
|
||||
Dim skmt As SQL
|
||||
Dim c As Cursor
|
||||
|
||||
Dim CANCELA As Button
|
||||
Dim GUARDA As Button
|
||||
Dim r_1 As RadioButton
|
||||
Dim r_2 As RadioButton
|
||||
Dim r_3 As RadioButton
|
||||
Dim e_comm As EditText
|
||||
Dim motivo As String
|
||||
Dim cuenta As String
|
||||
Dim usuario As String
|
||||
Dim sDate,sTime As String
|
||||
' Dim lat_gps, lon_gps As String
|
||||
Dim tgl As Toggle
|
||||
Dim r_4 As RadioButton
|
||||
Dim reqManager As DBRequestManager
|
||||
Private stay_hh As String
|
||||
Private stay_mi As String
|
||||
Private stay_ss As String
|
||||
|
||||
Dim bitacora As C_Bitacora
|
||||
|
||||
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("noventa")
|
||||
ruta = File.DirInternal
|
||||
' End If
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
|
||||
bitacora.Initialize("bitacora", "bitacora", Root, B4XPages.MainPage.skmt, reqManager)
|
||||
|
||||
' skmt.Initialize(ruta,"kmt.db", True)
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
e_comm.Text=""
|
||||
tgl.Initialize
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
r_1.Checked = False
|
||||
r_2.Checked = False
|
||||
r_3.Checked = False
|
||||
r_4.Checked = False
|
||||
e_comm.Text = ""
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||
End Sub
|
||||
|
||||
Sub CANCELA_Click
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End Sub
|
||||
Sub GUARDA_Click
|
||||
If r_1.Checked Then
|
||||
motivo = "CERRADO"
|
||||
Else If r_2.Checked Then
|
||||
motivo = "NO COMPRA"
|
||||
Else If r_3.Checked Then
|
||||
motivo = "CON PRODUCTO"
|
||||
Else
|
||||
motivo = "NO ESTA EL ENCARGADO"
|
||||
End If
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select CUENTA from cuentaa")
|
||||
c.Position = 0
|
||||
cuenta = c.GetString("CUENTA")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa")
|
||||
c.Position = 0
|
||||
usuario = c.GetString("USUARIO")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||
Next
|
||||
End If
|
||||
|
||||
If B4XPages.MainPage.cliente.IsInitialized Then
|
||||
B4XPages.MainPage.cliente.motivoNoVenta = motivo
|
||||
' Subs.bitacora(Subs.fechanormal(DateTime.Now), usuario, Subs.traeAlmacen, Subs.traeRuta, "No Venta", Subs.traeCliente, "", Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.cliente.precision, motivo, e_comm.text)
|
||||
Starter.enVenta = False
|
||||
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.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)")
|
||||
DateTime.TimeFormat = "HHmmss"
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_OUT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(sTime))
|
||||
' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE HIST_STAY_STORE set HSS_TOT = HSS_OUT - HSS_IN where HSS_CODIGO In (select cuenta from cuentaa)")
|
||||
|
||||
c=B4XPages.MainPage.skmt.ExecQuery(" Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _
|
||||
"Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then (substr(HSS_OUT,3,2) + 60 - substr(HSS_IN,3,2)) " & _
|
||||
" Else (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) End - Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then 1 Else 0 end MINUTOS_TOTALES, " & _
|
||||
"Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then (substr(HSS_OUT,5,2) + 60 - substr(HSS_IN,5,2)) " & _
|
||||
" Else (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) end SEGUNDOS_TOTALES " & _
|
||||
" from HIST_STAY_STORE where HSS_CODIGO In (Select cuenta from cuentaa) ")
|
||||
c.Position = 0
|
||||
stay_hh = c.GetString("HORAS_TOTALES") * 60 * 60
|
||||
stay_mi = c.GetString("MINUTOS_TOTALES") * 60
|
||||
stay_ss = c.GetString("SEGUNDOS_TOTALES")
|
||||
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_TOT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(stay_hh + stay_mi + stay_ss))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_FIN = ? ", Array As Object(sTime))
|
||||
DateTime.TimeFormat = "HH:mm:ss"
|
||||
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update PEDIDO_INICIO_FINAL set PIF_HORA_FINAL = ? where PIF_CLIENTE = ? and PIF_HORA_FINAL = 0", Array As Object (DateTime.Now, cuenta))
|
||||
LogColor($"actualizamos "${cuenta}, hora_final=${DateTime.now}"$,Colors.Red)
|
||||
|
||||
mandaPendientesnoventa
|
||||
bitacora.mandaBitacora(Subs.fechanormal(DateTime.Now), usuario, Subs.traeAlmacen, Subs.traeRutaBitacora, "NO VENTA", Subs.traeCliente,Subs.fechanormal(DateTime.Now), Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, 2, motivo, r_1.Checked)
|
||||
|
||||
B4XPages.ShowPage("Principal")
|
||||
End Sub
|
||||
|
||||
Sub mandaPendientesnoventa
|
||||
'PEDIDO_CLIENTE (Pendientes)
|
||||
' c = B4XPages.MainPage.skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where pc_envio_ok <> 1")
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM NOVENTA where ifnull(NV_ENVIO_OK, 0) <> 1")
|
||||
Log($"NO VENTA PENDIENTE: ${c.RowCount}"$)
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "insert_noventa_mazapa"
|
||||
cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"), C.GetString("NV_FECHA"), C.GetString("NV_USER"), C.GetString("NV_MOTIVO"), C.GetString("NV_COMM"), C.GetString("NV_LAT"), C.GetString("NV_LON"), Subs.traeAlmacen, Subs.traeRuta(C.GetString("NV_CLIENTE")))
|
||||
reqManager.ExecuteCommand(cmd , $"insert_noventa_${c.GetString("NV_CLIENTE")}"$)
|
||||
' insert_noventa_INTMEX=INSERT INTO INTMEX.NOVENTA (NV_FECHA_SINC,NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON,NV_IDALMACEN,NV_RUTA) VALUES (SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?))
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
Log(Job.Success)
|
||||
If Job.Success = False Then
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
Else
|
||||
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||
If resultado.Tag.As(String).IndexOf("insert_noventa_") > -1 Then
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_") + 9)
|
||||
Log($"Cliente1:${cliente}"$)
|
||||
Starter.skmt.ExecNonQuery($"update NOVENTA set NV_ENVIO_OK = '1' where NV_CLIENTE = '${cliente}'"$)
|
||||
For Each records() As Object In resultado.Rows
|
||||
For Each k As String In resultado.Columns.Keys
|
||||
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
Job.Release
|
||||
End If
|
||||
End Sub
|
||||
297
B4A/C_Nota.bas
Normal file
@@ -0,0 +1,297 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
Dim skmt As SQL
|
||||
Dim g As GPS
|
||||
Dim clie_id As String
|
||||
Dim sDate,sTime As String
|
||||
Dim usuario As String
|
||||
|
||||
Dim c As Cursor
|
||||
Dim ruta As String
|
||||
Dim Regresar As Button
|
||||
|
||||
Dim ListView1 As ListView
|
||||
Dim L_CANT As Label
|
||||
Dim L_TOTAL As Label
|
||||
Dim borra As Button
|
||||
Dim Existe As String
|
||||
Dim result As String
|
||||
' Dim lat_gps, lon_gps As String
|
||||
Dim DESC As String
|
||||
|
||||
Private Titulo As Label
|
||||
Private b_desc As Button
|
||||
Dim DESCUENTO As String
|
||||
Dim folio As String
|
||||
Dim tgl As Toggle
|
||||
Private almacen As String
|
||||
Private p_nota As Panel
|
||||
Dim vamoaver As List
|
||||
Dim c2 As Cursor
|
||||
Dim j3 As Cursor
|
||||
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
|
||||
ruta = File.DirInternal
|
||||
Root.LoadLayout("nota")
|
||||
borra.Visible = True
|
||||
Titulo.Text = "Pedido Actual"
|
||||
' If Existe <> 0 Then
|
||||
' c=B4XPages.MainPage.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||
' C.Position=0
|
||||
' L_CANT.Text = c.GetString("PC_NOART")
|
||||
' L_TOTAL.Text = c.GetString("PC_MONTO")
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||
C.Position =0
|
||||
almacen = C.GetString("ID_ALMACEN")
|
||||
C.Close
|
||||
L_CANT.Text =""
|
||||
L_TOTAL.Text=""
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select count(*) as EXISTE from pedido_cliente WHERE pc_cliente IN (Select CUENTA from cuentaa)")
|
||||
C.Position=0
|
||||
Existe = C.GetString("EXISTE")
|
||||
C.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_PRONOMBRE")
|
||||
ListView1.Clear
|
||||
vamoaver.Initialize
|
||||
Private cs As CSBuilder
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
cs.Initialize
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 15
|
||||
label1.TextColor = Colors.Black
|
||||
label1.color = Colors.White
|
||||
Private textColor As Int = Colors.black
|
||||
If c.GetString("PE_FOLIO") = "PREVENTA_48" Then
|
||||
textColor = Colors.RGB(48,3,195)
|
||||
Else If c.GetString("PE_FOLIO") = "PREVENTA_24" Or c.GetString("PE_FOLIO") = "ABORDO" Or c.GetString("PE_FOLIO") = "RECARGA" Then
|
||||
textColor = Colors.RGB(166,0,0)
|
||||
End If
|
||||
If Not(IsNumber(c.GetString("PE_CEDIS"))) And c.GetString("PE_FOLIO") = "PREVENTA_48" Then
|
||||
textColor = Colors.RGB(154,131,231) 'Si es promo, cambiamos el color del texto.
|
||||
Else If Not(IsNumber(c.GetString("PE_CEDIS"))) And c.GetString("PE_FOLIO") = "PREVENTA_24" Then
|
||||
textColor = Colors.RGB(255,111,111) 'Si es promo, cambiamos el color del texto.
|
||||
End If
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 10
|
||||
label2.TextColor = Colors.Blue
|
||||
ListView1.AddTwoLines(cs.Color(textColor).append(c.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")& " Folio "& c.GetString("PE_FOLIO"))
|
||||
folio = c.GetString("PE_FOLIO")
|
||||
vamoaver.Add(c.GetString("PE_FOLIO"))
|
||||
Next
|
||||
End If
|
||||
Log($"EXISTE: ${Existe}"$)
|
||||
' If Existe <> 0 Then
|
||||
' c=B4XPages.MainPage.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||
c = 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 ) ")
|
||||
If c.RowCount > 0 Then
|
||||
C.Position = 0
|
||||
Log($"registros: ${c.RowCount}, arts: ${c.GetString("PC_NOART")}, monto:${c.GetString("PC_MONTO")}"$)
|
||||
L_CANT.Text = c.GetString("PC_NOART")
|
||||
L_TOTAL.Text = c.GetString("PC_MONTO")
|
||||
If L_CANT.Text = Null Or L_CANT.Text = "null" Or L_CANT.Text = "" Then L_CANT.Text = "0"
|
||||
If L_TOTAL.Text = Null Or L_TOTAL.Text = "null" Or L_TOTAL.Text = "" Then L_TOTAL.Text = "0"
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select SUM(IFNULL(PE_DESC,0)) AS DESCUENTO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
c.Position=0
|
||||
DESC = c.GetString("DESCUENTO")
|
||||
b_desc.Visible = False
|
||||
End If
|
||||
|
||||
' End If
|
||||
' If Subs.pedidoGuardado Then borra.Enabled = False Else borra.Enabled = True
|
||||
End Sub
|
||||
|
||||
Sub Activity_Pause (UserClosed As Boolean)
|
||||
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||
End Sub
|
||||
|
||||
Sub Regresar_Click
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
' BACK key pressed
|
||||
' Return True To close, False To cancel
|
||||
B4XPages.ShowPage("Cliente")
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Sub borra_Click
|
||||
' If folio <> "" Then
|
||||
result = Msgbox2("Seguro que desea borrar el pedido?","Cancelar pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||
If result = DialogResponse.POSITIVE Then
|
||||
' c=B4XPages.MainPage.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
|
||||
' If c.RowCount>0 Then
|
||||
' For i=0 To c.RowCount -1
|
||||
' c.Position=i
|
||||
' B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (almacen,c.GetString("PE_PROID"),c.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_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||
Subs.borraPedidoClienteActual
|
||||
B4XPage_Appear
|
||||
B4XPages.MainPage.productos.clv_prods_ll.Clear
|
||||
End If
|
||||
' Else
|
||||
' Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Sub ListView1_ItemLongClick (Position As Int, Value As Object)
|
||||
Log(Value)
|
||||
' If Not(Subs.pedidoGuardado) Then
|
||||
result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||
If result = DialogResponse.POSITIVE Then
|
||||
c=B4XPages.MainPage.skmt.ExecQuery2("select PE_PROID,PE_CANT, PE_FOLIO FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value))
|
||||
c.Position=0
|
||||
Log(vamoaver.Get(Position))
|
||||
If vamoaver.Get(Position) = "PREVENTA_48" Then
|
||||
Log("CAT_GUNAPROD2")
|
||||
Log(Position)
|
||||
Log(Value)
|
||||
Starter.tabla = "CAT_GUNAPROD2"
|
||||
Else
|
||||
Log("CAT_GUNAPROD")
|
||||
Log(Position)
|
||||
Log(Value)
|
||||
Starter.tabla = "CAT_GUNAPROD"
|
||||
End If
|
||||
' B4XPages.MainPage.skmt.ExecNonQuery2($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (Subs.traeAlmacen,c.GetString("PE_PROID"),c.GetString("PE_CANT")* -1))
|
||||
c2=B4XPages.MainPage.skmt.ExecQuery2($"select count(*) AS CUANTOS from ${Starter.tabla} where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'"$, Array As String(Value))
|
||||
c2.Position=0
|
||||
Log(c2.GetString("CUANTOS"))
|
||||
If c2.GetString("CUANTOS") > 0 Then
|
||||
j3 = B4XPages.MainPage.skmt.ExecQuery2("SELECT PE_CEDIS, PE_CANT,PE_PROID, PE_PRONOMBRE FROM PEDIDO WHERE PE_CEDIS IN (SELECT PE_CEDIS FROM PEDIDO WHERE PE_PRONOMBRE = ?)",Array As String(Value))
|
||||
Log(j3.RowCount)
|
||||
If j3.RowCount > 0 Then
|
||||
Log("estoy aqui")
|
||||
For i = 0 To j3.RowCount -1
|
||||
Log("aqui tronare?")
|
||||
j3.Position = i
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen + ${j3.GetString("PE_CANT")} where cat_gp_id = '${j3.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 Object(j3.GetString("PE_PRONOMBRE"), c.GetString("PE_FOLIO")))
|
||||
Next
|
||||
End If
|
||||
j3.Close
|
||||
Else
|
||||
B4XPages.MainPage.skmt.ExecNonQuery($"update ${Starter.tabla} set cat_gp_almacen = cat_gp_almacen + ${c.GetString("PE_CANT")} where cat_gp_id = '${c.Getstring("PE_PROID")}'"$)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) AND PE_FOLIO = ?", Array As Object(Value, c.GetString("PE_FOLIO")))
|
||||
End If
|
||||
c.Close
|
||||
c2.Close
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
c.Position=0
|
||||
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)")
|
||||
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)")
|
||||
End If
|
||||
B4XPage_Appear
|
||||
End If
|
||||
' Else
|
||||
' ToastMessageShow("Pedido guardado, NO se puede editar.",False)
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Sub b_desc_Click
|
||||
If DESCUENTO = "MENOS" Then
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
c.Close
|
||||
result = Msgbox2("Seguro que desea dar descuento del 5%?","Dar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||
If result = DialogResponse.POSITIVE Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT * .95, PE_DESC = 5 WHERE PE_CLIENTE In (select cuenta from cuentaa)")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS 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) 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))
|
||||
c.Close
|
||||
B4XPage_Appear
|
||||
End If
|
||||
ELSE IF DESCUENTO = "MAS" Then
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
c.Close
|
||||
result = Msgbox2("Seguro que desea CANCELAR el descuento?","Cancelar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||
If result = DialogResponse.POSITIVE Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT / .95, PE_DESC = 0 WHERE PE_CLIENTE In (select cuenta from cuentaa)")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS 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) 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))
|
||||
c.Close
|
||||
B4XPage_Appear
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub p_nota_Click
|
||||
|
||||
End Sub
|
||||
432
B4A/C_NuevoCliente.bas
Normal file
@@ -0,0 +1,432 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
Dim g As GPS
|
||||
Dim ruta As String
|
||||
Dim c As Cursor
|
||||
|
||||
Dim CANCELA As Button
|
||||
Dim GUARDA As Button
|
||||
Dim cuenta As String
|
||||
Dim usuario As String
|
||||
Dim sDate,sTime As String
|
||||
Dim sDate2,sTime2 As String
|
||||
Dim no_cliente As String
|
||||
Dim no_ruta As String
|
||||
|
||||
Dim r_4 As RadioButton
|
||||
Dim E_NOMBRE As EditText
|
||||
Dim tgl As Toggle
|
||||
Private l_sinUbicacion As Label
|
||||
Private p_nuevoCliente As Panel
|
||||
Private Label1 As Label
|
||||
Private p_botones As Panel
|
||||
Private p_cam As Panel
|
||||
Private p_camara As Panel
|
||||
Private b_foto_inci As Button
|
||||
' Private camEx2 As CameraExClass2
|
||||
Dim frontCamera As Boolean = False
|
||||
Dim fototomada As String = "0"
|
||||
Dim ALMACEN As String
|
||||
Private et_direccion As EditText
|
||||
Private Label2 As Label
|
||||
Dim lat As Double = 0
|
||||
Dim lon As Double = 0
|
||||
Private b_ubicacion As Label
|
||||
Private Label3 As Label
|
||||
Private cb_giro As B4XComboBox
|
||||
Dim giros As String
|
||||
Dim hr_ini As String
|
||||
Private L_Atiende As Label
|
||||
Private ET_Atiende As EditText
|
||||
Private Label5 As Label
|
||||
Private et_colonia As EditText
|
||||
Private et_telefono As EditText
|
||||
Private et_referencia As EditText
|
||||
Private l_referecia As Label
|
||||
Private l_hora_final As Label
|
||||
Private l_hora_inicial As Label
|
||||
Private cb_hora_ini As B4XComboBox
|
||||
Private cb_hora_fin As B4XComboBox
|
||||
Private l_fin As Label
|
||||
Private l_ini As Label
|
||||
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)
|
||||
' B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||
Root = Root1
|
||||
'load the layout to Root
|
||||
Root.LoadLayout("nuevocliente")
|
||||
ruta = File.DirInternal
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
' skmt.Initialize(ruta,"kmt.db", True)
|
||||
' p_camara.Height = Root.Height
|
||||
' p_camara.Width = Root.Width
|
||||
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
'' camEx2.Initialize(p_cam, frontCamera, Me, "Camera1")
|
||||
'' frontCamera = camEx2.Front
|
||||
' Log("inicializamos Camara")
|
||||
' Else
|
||||
' ToastMessageShow("Sin permisos de camara!!!", True)
|
||||
' End If
|
||||
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
If Result Then
|
||||
Log("Con permisos para escritura")
|
||||
Else
|
||||
ToastMessageShow("Sin permisos de escritura!!!", True)
|
||||
End If
|
||||
|
||||
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
If Result Then
|
||||
Log("Con permisos para escritura")
|
||||
Else
|
||||
ToastMessageShow("Sin permisos de lectura!!!", True)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
et_direccion.Text = ""
|
||||
E_NOMBRE.Text = ""
|
||||
ET_Atiende.Text = ""
|
||||
et_colonia.Text = ""
|
||||
et_telefono.Text = ""
|
||||
et_referencia.Text = ""
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
GUARDA.Visible = False
|
||||
Subs.panelVisible(p_nuevoCliente, 0, 0)
|
||||
p_nuevoCliente.Height = Root.Height
|
||||
p_nuevoCliente.Width = Root.Width
|
||||
Subs.centraEtiqueta(Label1, Root.Width)
|
||||
Subs.centraEtiqueta(Label5, Root.Width)
|
||||
Subs.centraEtiqueta(Label2, Root.Width)
|
||||
Subs.centraEtiqueta(Label3, Root.Width)
|
||||
Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
|
||||
Subs.centraEtiqueta(b_ubicacion, Root.Width)
|
||||
Subs.centraPanel(p_botones, Root.Width)
|
||||
E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
|
||||
et_colonia.Left = Round(Root.Width/2)-(et_colonia.Width/2)
|
||||
et_direccion.Left = Round(Root.Width/2)-(et_direccion.Width/2)
|
||||
If B4XPages.MainPage.lat_gps <> "0.0" Then
|
||||
GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
|
||||
l_sinUbicacion.Visible = True
|
||||
End If
|
||||
|
||||
If Not(Starter.GPS.GPSEnabled) Then
|
||||
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
|
||||
StartActivity(Starter.GPS.LocationSettingsIntent)
|
||||
Else
|
||||
Starter.GPS.Start(0, 0)
|
||||
' If Starter.ubicacionActual.Latitude <> 0 Then GPS_LocationChanged(Starter.ubicacionActual)
|
||||
End If
|
||||
CallSubDelayed(Tracker, "StartFLPSmall")
|
||||
|
||||
c = Starter.skmt.ExecQuery("SELECT GIRO FROM CAT_GIRO order by 1")
|
||||
Dim Items As List
|
||||
Items.Initialize
|
||||
Items.Add("SELECCIONA UNA OPCIÓN")
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount-1
|
||||
c.Position = i
|
||||
Items.Add(c.GetString("GIRO"))
|
||||
Next
|
||||
cb_giro.SetItems(Items)
|
||||
End If
|
||||
giros = "SELECCIONA UNA OPCIÓN"
|
||||
c.Close
|
||||
|
||||
'-------------------------------------------------------------
|
||||
|
||||
Dim Items2 As List
|
||||
Items2.Initialize
|
||||
Items2.Add("SELECCIONA UNA OPCIÓN")
|
||||
For i = 7 To 23
|
||||
Dim hora As String
|
||||
hora = i
|
||||
Items2.Add(hora)
|
||||
Next
|
||||
cb_hora_ini.SetItems(Items2)
|
||||
|
||||
hr_ini = ("SELECCIONA UNA OPCIÓN")
|
||||
|
||||
' --------------------------------------------------------------
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
If B4XPages.MainPage.lat_gps <> "0.0" Then
|
||||
GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
|
||||
l_sinUbicacion.Visible = True
|
||||
lat = Location1.Latitude
|
||||
lon = Location1.Longitude
|
||||
l_sinUbicacion.Text = ("Latitud: " & lat & ", Longotud: "& lon)
|
||||
End If
|
||||
|
||||
b_ubicacion.TextSize = 13
|
||||
b_ubicacion.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$
|
||||
If Location1.Accuracy > 200 Then
|
||||
b_ubicacion.TextColor = Colors.Red
|
||||
b_ubicacion.TextSize = 16
|
||||
b_ubicacion.Text = $"Mala señal $1.0{Location1.Accuracy} m"$
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub CANCELA_Click
|
||||
B4XPages.ShowPage("Principal")
|
||||
CallSubDelayed(Tracker, "StartFLP")
|
||||
End Sub
|
||||
|
||||
Sub GUARDA_Click
|
||||
' Verifica si el nombre de la tienda está vacío
|
||||
If E_NOMBRE.Text = "" Then
|
||||
MsgboxAsync("Por favor captura el nombre de la Tienda","Atención")
|
||||
' Verifica si la dirección tiene más de 3 caracteres
|
||||
Else If et_direccion.Text.Length > 3 Then
|
||||
' Verifica si la latitud es diferente de 0
|
||||
If lat <> 0 Then
|
||||
' Verifica si el giro del cliente está seleccionado
|
||||
If giros <> "SELECCIONA UNA OPCIÓN" Or cb_giro.SelectedItem <> "SELECCIONA UNA OPCIÓN" Then
|
||||
' Verifica si el encargado que atiende el negocio está capturado
|
||||
If ET_Atiende.Text <> "" Then
|
||||
If et_colonia.Text <> "" Then
|
||||
If et_colonia.Text <> "" Then
|
||||
If et_referencia.Text <> "" Then
|
||||
If hr_ini <> "SELECCIONA UNA OPCIÓN" Or cb_hora_ini.SelectedItem <> "SELECCIONA UNA OPCIÓN" Then
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
DateTime.Timeformat = "HHmmss"
|
||||
sDate = DateTime.Date(DateTime.Now)
|
||||
sTime = DateTime.Time(DateTime.Now)
|
||||
Log($" //////////// Date: ${sDate} - Time: ${sTime} ////////////////"$)
|
||||
' Aquí creamos manualmente la hora con el separador de los 2 puntos porque en algunas versiones de Android no respeta el formato "Timeformat = 'HH:mm:ss'"
|
||||
Private hora As String = sTime.SubString2(0,2)
|
||||
Private mins As String = sTime.SubString2(2,4)
|
||||
Private segs As String = sTime.SubString(4)
|
||||
sTime = hora & ":" & mins & ":" & segs
|
||||
Log("////////////// sTime: "&sTime&" ////////////////")
|
||||
c = Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
|
||||
c.Position = 0
|
||||
no_ruta = c.GetString("CAT_CL_RUTA")
|
||||
no_cliente = "N" & sTime & no_ruta
|
||||
Log("++ ++ no_cliente = "&no_cliente)
|
||||
c.Close
|
||||
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 (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))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
|
||||
Starter.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
|
||||
c = Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
ALMACEN = c.GetString("ID_ALMACEN")
|
||||
End If
|
||||
c.Close
|
||||
c = Starter.skmt.ExecQuery("select usuario from usuarioa")
|
||||
c.Position = 0
|
||||
usuario = c.GetString("USUARIO")
|
||||
c.Close
|
||||
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTO_CLIENTE(CODIGO, ALMACEN, RUTA) VALUES(?,?,?)", Array As Object(no_cliente, ALMACEN, no_ruta))
|
||||
' Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_LAT,NV_LON,NV_NOMBRE,NV_DIRECCION) VALUES(?,?,?,?,?,?,?,?) ", Array As Object (no_cliente,sDate & sTime, usuario, "NUEVO CLIENTE", lat, lon, E_NOMBRE.Text,et_direccion.Text))
|
||||
|
||||
DateTime.DateFormat = "dd/MM/yyyy"
|
||||
DateTime.Timeformat = "HH:mm:ss"
|
||||
sDate2 = DateTime.Date(DateTime.Now)
|
||||
sTime2 = DateTime.Time(DateTime.Now)
|
||||
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CLIENTES_NUEVOS(CN_ID, CN_FECHA, CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_FOTO, CN_RUTA, CN_GIRO, CN_SOLICITA,CN_COLONIA, CN_TELEFONO, CN_REFERENCIA, CN_HR_INICIO, CN_HR_FIN) 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_referencia.Text, cb_hora_ini.SelectedItem, cb_hora_fin.SelectedItem))
|
||||
' fototomada = "0"
|
||||
B4XPages.ShowPage("Cliente")
|
||||
CallSubDelayed(Tracker, "StartFLP")
|
||||
Else
|
||||
MsgboxAsync("Por favor, debe capturar la referencia de el negocio.","Atención")
|
||||
End If
|
||||
Else
|
||||
MsgboxAsync("Por favor, debe capturar la referencia de el negocio.","Atención")
|
||||
End If
|
||||
Else
|
||||
MsgboxAsync("Por favor, debe capturar la colonia el negocio.","Atención")
|
||||
End If
|
||||
Else
|
||||
MsgboxAsync("Por favor, debe capturar el telfono.","Atención")
|
||||
End If
|
||||
Else
|
||||
' Mensaje de advertencia si ET_Atiende.Text está vacío
|
||||
MsgboxAsync("Por favor, debe capturar al encargado que atiende el negocio.","Atención")
|
||||
End If
|
||||
Else
|
||||
MsgboxAsync("Por favor captura el giro del cliente","Atención")
|
||||
End If
|
||||
Else
|
||||
MsgboxAsync("Por favor revisa que tengas señal GPS","Atención")
|
||||
End If
|
||||
Else
|
||||
MsgboxAsync("Por favor captura la dirección del cliente","Atención")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub p_nuevoCliente_Click
|
||||
|
||||
End Sub
|
||||
|
||||
'Private Sub b_foto_inci_Click
|
||||
' camEx2.TakePicture
|
||||
' p_camara.Visible = False
|
||||
'' StopCamera2
|
||||
'End Sub
|
||||
'
|
||||
'Private Sub InitializeCamera2
|
||||
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
' camEx2.Initialize(p_cam, frontCamera, Me, "Camera1")
|
||||
' frontCamera = camEx2.Front
|
||||
' Log("inicializamos Camara")
|
||||
' Else
|
||||
' ToastMessageShow("Sin permisos de camara!!!", True)
|
||||
' End If
|
||||
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
' Log("con permisos para escritura")
|
||||
' Else
|
||||
' ToastMessageShow("Sin permisos de escritura!!!", True)
|
||||
' End If
|
||||
'
|
||||
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' If Result Then
|
||||
' Log("con permisos para escritura")
|
||||
' Else
|
||||
' ToastMessageShow("Sin permisos de lectura!!!", True)
|
||||
' End If
|
||||
'End Sub
|
||||
'
|
||||
'Sub Camera1_Ready (Success As Boolean)
|
||||
' Log("Camara ready")
|
||||
' If Success Then
|
||||
' camEx2.SetJpegQuality(90)
|
||||
' camEx2.SetContinuousAutoFocus
|
||||
' camEx2.CommitParameters
|
||||
' camEx2.StartPreview
|
||||
' Log(camEx2.GetPreviewSize)
|
||||
' Else
|
||||
' ToastMessageShow("Cannot open camera.", True)
|
||||
' Log("Cannot open camera")
|
||||
' End If
|
||||
'End Sub
|
||||
'
|
||||
'Sub Camera1_PictureTaken (Data()As Byte)
|
||||
' Log("tome foto")
|
||||
' Dim filename As String = fototomada
|
||||
' Dim Dirp As String = File.DirInternal
|
||||
' Dim Dir As String
|
||||
' Dim Dir2 As String
|
||||
' Try
|
||||
' File.MakeDir(Dirp,"/promotoriakmts")
|
||||
' Dir = "/promotoriakmts"
|
||||
' Log("creado en promotoria " & Dirp & Dir)
|
||||
' Catch
|
||||
' Dir = ""
|
||||
' Log("creado en raiz")
|
||||
' End Try
|
||||
'
|
||||
' Try
|
||||
' File.MakeDir(Dirp & Dir,"/reduccion")
|
||||
' Dir2 = "/reduccion"
|
||||
' Log("creado en promotoria " & Dirp & Dir & Dir2)
|
||||
' Catch
|
||||
' Dir = ""
|
||||
' Log("creado en raiz")
|
||||
' End Try
|
||||
'
|
||||
' camEx2.SavePictureToFile(Data, Dirp&Dir, filename)
|
||||
' camEx2.StartPreview 'restart preview
|
||||
' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
|
||||
' Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
|
||||
' p_camara.Visible = False
|
||||
' StopCamera2
|
||||
'
|
||||
'End Sub
|
||||
'
|
||||
'Private Sub StopCamera2
|
||||
'' Capturing = False
|
||||
' If camEx2.IsInitialized Then
|
||||
' camEx2.Release
|
||||
' End If
|
||||
'End Sub
|
||||
'
|
||||
'
|
||||
'Private Sub B_FOTO_Click
|
||||
' DateTime.DateFormat="ddMMyyyyHHmmss"
|
||||
' InitializeCamera2
|
||||
' Subs.panelVisible(p_camara, 0, 0)
|
||||
' fototomada = DateTime.Now & "_cliente.jpg"
|
||||
'End Sub
|
||||
|
||||
Private Sub cb_giro_SelectedIndexChanged (Index As Int)
|
||||
giros = cb_giro.SelectedItem
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub cb_hora_ini_SelectedIndexChanged (Index As Int)
|
||||
Dim Item3 As List
|
||||
Item3.Initialize
|
||||
Item3.Add("SELECCIONA UNA OPCIÓN")
|
||||
If cb_hora_ini.SelectedIndex > 0 Then
|
||||
Dim horaInicio As Int = cb_hora_ini.SelectedItem + 1
|
||||
|
||||
For i = horaInicio To 23
|
||||
Dim hora As String
|
||||
hora = i
|
||||
Item3.Add(hora)
|
||||
Next
|
||||
Else
|
||||
Item3.Add("SELECCIONA UNA OPCIÓN")
|
||||
End If
|
||||
cb_hora_fin.SetItems(Item3)
|
||||
|
||||
If cb_hora_ini.SelectedItem >= 7 And cb_hora_ini.SelectedItem <= 11 Then
|
||||
l_ini.Text = "AM"
|
||||
Else If cb_hora_ini.SelectedItem >= 12 And cb_hora_ini.SelectedItem <= 23 Then
|
||||
l_ini.Text = "PM"
|
||||
Else
|
||||
l_ini.Text = ""
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub cb_hora_fin_SelectedIndexChanged (Index As Int)
|
||||
If cb_hora_fin.SelectedItem >= 7 And cb_hora_fin.SelectedItem <= 11 Then
|
||||
l_fin.Text = "AM"
|
||||
Else If cb_hora_fin.SelectedItem >= 12 And cb_hora_fin.SelectedItem <= 23 Then
|
||||
l_fin.Text = "PM"
|
||||
Else
|
||||
l_fin.Text = ""
|
||||
End If
|
||||
End Sub
|
||||
584
B4A/C_Pedidos.bas
Normal file
@@ -0,0 +1,584 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
|
||||
Dim g As GPS
|
||||
Dim ruta As String
|
||||
Dim skmt As SQL
|
||||
Private t3 As Timer
|
||||
Dim p As Phone
|
||||
Dim sb As StringBuilder
|
||||
|
||||
Dim c As Cursor
|
||||
Dim e As Cursor
|
||||
Dim f As Cursor
|
||||
Dim h As Cursor
|
||||
Dim CC As Cursor
|
||||
Dim DD As Cursor
|
||||
Dim l_tipo As Label
|
||||
Dim l_sub As Label
|
||||
Dim l_marca As Label
|
||||
Dim l_desc As Label
|
||||
Dim l_precio As Label
|
||||
Dim l_bodega As Label
|
||||
Dim cantidad As EditText
|
||||
Dim guardar As Button
|
||||
Dim Terminar As Button
|
||||
Dim img_prod As ImageView
|
||||
Dim IMG_PASO() As Byte
|
||||
Dim L_PROID As Label
|
||||
Dim clie_id As String
|
||||
Dim sDate,sTime As String
|
||||
Dim usuario As String
|
||||
' Dim lat_gps, lon_gps As String
|
||||
Dim t_venta As Label
|
||||
Dim PROMO_C As String
|
||||
Dim i_fotol As ImageView
|
||||
Private DESC_PROMO As Button
|
||||
Private nopromo As Button
|
||||
Dim TOT_ART_PROMO As String
|
||||
Dim cambio As String
|
||||
Dim COSTO_TOT As String
|
||||
Dim ALMACEN As String
|
||||
Dim preciosin As String
|
||||
Dim cl_ruta As String
|
||||
Dim d As Cursor
|
||||
Dim TOT_ART_PROMOR As String
|
||||
Dim PROMO_CR As String
|
||||
Dim TOTAL_PROMO As String
|
||||
Dim HCCP_CANT As String
|
||||
Dim tgl As Toggle
|
||||
Dim precio_Cero As String
|
||||
Private BONSABOR As String
|
||||
Private BONSABOR2 As String
|
||||
Dim cmd As DBCommand
|
||||
Private p_pedido As Panel
|
||||
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("pedido")
|
||||
i_fotol.Visible = False
|
||||
' B4XPages.MainPage.reqManager.Initialize(Me, "http://177.244.63.54:1782")
|
||||
ruta = File.DirInternal
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
' skmt.Initialize(ruta,"kmt.db", True)
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
tgl.Initialize
|
||||
BONSABOR = 0
|
||||
BONSABOR2 = 0
|
||||
If Not(Starter.gps.GPSEnabled) Then
|
||||
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||
End If
|
||||
cantidad.Text = ""
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||
C.Position =0
|
||||
ALMACEN = C.GetString("ID_ALMACEN")
|
||||
C.Close
|
||||
i_fotol.Visible = False
|
||||
sb.Initialize
|
||||
p.Shell("ping -c1 -W1 177.244.63.54",Null, sb,Null)
|
||||
skmt.Initialize(ruta,"kmt.db", True)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select 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,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV from CAT_GUNAPROD where CAT_GP_NOMBRE In (Select PDESC from PROID)")
|
||||
c.Position=0
|
||||
L_PROID.Text = c.GetString("CAT_GP_ID")
|
||||
l_tipo.Text = c.GetString("CAT_GP_TIPO")
|
||||
l_sub.Text = c.GetString("CAT_GP_SUBTIPO")
|
||||
l_marca.Text = c.GetString("CAT_GP_CLASIF")
|
||||
l_desc.Text = c.GetString("CAT_GP_NOMBRE")
|
||||
l_precio.Text = c.GetDouble("CAT_GP_PRECIO")
|
||||
l_bodega.Text = c.GetString("CAT_GP_ALMACEN")
|
||||
IMG_PASO = c.GetBlob("CAT_GP_IMG")
|
||||
PROMO_C = c.GetString("CAT_GP_STS")
|
||||
cambio = c.GetString("CAT_GP_DEV")
|
||||
preciosin = c.GetString("CAT_GP_IMP2")
|
||||
PROMO_CR = c.GetString("CAT_GP_IMP1")
|
||||
cambio = "0"
|
||||
|
||||
e=B4XPages.MainPage.skmt.ExecQuery2("select count(*) as CUANTOS FROM pedido WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select cuenta from cuentaa) ", Array As String(c.GetString("CAT_GP_ID")))
|
||||
e.Position =0
|
||||
If e.GetString("CUANTOS") = 0 Then
|
||||
If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" Then
|
||||
DESC_PROMO.Visible = True
|
||||
CC=B4XPages.MainPage.skmt.ExecQuery2("select count(*) as CUANTOS FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(c.GetString("CAT_GP_ID")))
|
||||
CC.Position =0
|
||||
If CC.GetString("CUANTOS") = 0 Then
|
||||
l_bodega.Text = "0" ' se modifica a cero para evitar error en la promo especial de unilever mayo
|
||||
Else
|
||||
CC.Close
|
||||
CC=B4XPages.MainPage.skmt.ExecQuery2("select CAT_PA_MAXPROM, CAT_PA_MAXPROMREC, CAT_PA_MAXPROMCLIE FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(c.GetString("CAT_GP_ID")))
|
||||
CC.Position =0
|
||||
' SE MODIFICA LA APLICACION PARA QUE VEA EL HISTORIAL DE VENTA DEL CLIENTE.
|
||||
DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(c.GetString("CAT_GP_ID")))
|
||||
DD.Position =0
|
||||
If DD.GetString("CUANTOS") = 0 Then
|
||||
HCCP_CANT = 0
|
||||
Else
|
||||
DD.Close
|
||||
DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT HCCP_CANT FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(c.GetString("CAT_GP_ID")))
|
||||
DD.Position =0
|
||||
HCCP_CANT = DD.GetString("HCCP_CANT")
|
||||
DD.Close
|
||||
End If
|
||||
BONSABOR = HCCP_CANT
|
||||
DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String(c.GetString("CAT_GP_NOMBRE")))
|
||||
DD.Position =0
|
||||
If DD.GetString("CUANTOS") = 0 Then
|
||||
HCCP_CANT = 0
|
||||
Else
|
||||
DD.Close
|
||||
DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT SUM(HVD_CANT) AS HCCP_CANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String(c.GetString("CAT_GP_NOMBRE")))
|
||||
DD.Position =0
|
||||
HCCP_CANT = DD.GetString("HCCP_CANT")
|
||||
DD.Close
|
||||
End If
|
||||
DD=B4XPages.MainPage.skmt.ExecQuery2("Select COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) AND PE_PROID IN (select CAT_GP_ID from CAT_GUNAPROD where CAT_GP_CLASIF = ?) ",Array As String(c.GetString("CAT_GP_NOMBRE")))
|
||||
DD.Position =0
|
||||
BONSABOR2 = DD.GetString("CUANTOS")
|
||||
DD.Close
|
||||
TOTAL_PROMO = CC.GetString("CAT_PA_MAXPROMCLIE") - HCCP_CANT
|
||||
If HCCP_CANT = 0 Then
|
||||
l_bodega.Text = CC.GetString("CAT_PA_MAXPROM")
|
||||
Else IF TOTAL_PROMO > CC.GetString("CAT_PA_MAXPROMREC") Then
|
||||
l_bodega.Text = CC.GetString("CAT_PA_MAXPROMREC")
|
||||
Else
|
||||
l_bodega.Text = TOTAL_PROMO
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
DESC_PROMO.Visible = False
|
||||
End If
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select CASE WHEN pe_costo_tot is null then 0 else sum( pe_costo_tot ) end as TOTAL_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
c.Position=0
|
||||
t_venta.Text = c.GetString("TOTAL_CLIE")
|
||||
c.Close
|
||||
Terminar.Visible = True
|
||||
guardar.Visible = True
|
||||
cantidad.Visible = True
|
||||
If cambio = "1" Then
|
||||
nopromo.Visible = True
|
||||
Else
|
||||
nopromo.Visible = False
|
||||
End If
|
||||
Dim out As OutputStream
|
||||
out = File.OpenOutput(ruta, "1.jpg", False)
|
||||
out.WriteBytes(IMG_PASO, 0, IMG_PASO.Length)
|
||||
out.Close
|
||||
img_prod.Bitmap = LoadBitmap(ruta,"1.jpg")
|
||||
TOT_ART_PROMO = "0"
|
||||
TOT_ART_PROMOR = "0"
|
||||
If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And l_bodega.Text = "0" Then
|
||||
Msgbox("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION") 'ignore
|
||||
B4XPages.ShowPage("Productos")
|
||||
ELSE IF l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And L_PROID.Text = "PROUNI1" And BONSABOR <> "1" And BONSABOR2 = 0 Then
|
||||
Msgbox("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION") 'ignore
|
||||
B4XPages.ShowPage("Productos")
|
||||
End If
|
||||
Else
|
||||
Msgbox("ALERTA","EL CLIENTE YA COMPRO ESTE PRODUCTO REVISAR NOTA") 'ignore
|
||||
B4XPages.ShowPage("Productos")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub guardar_Click
|
||||
If cantidad.Text = "" Then
|
||||
B4XPages.ShowPage("Productos")
|
||||
ELSE If cantidad.Text > l_bodega.Text Then
|
||||
Msgbox("Exede la existencia", "ADVERTENCIA") 'ignore
|
||||
Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from PROIDID")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
|
||||
c.Position =0
|
||||
If c.GetString("CUANTOSD") = 0 Then
|
||||
Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
|
||||
Else
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1)")
|
||||
C.Position =0
|
||||
TOT_ART_PROMO = C.GetString("TOT_ART_PROMO")
|
||||
COSTO_TOT = C.GetString("COSTO_TOT")
|
||||
C.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||
c.Position =0
|
||||
If c.GetString("CUANTOSD") = 0 Then
|
||||
TOT_ART_PROMOR = "0" 'Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA")
|
||||
Else
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||
C.Position =0
|
||||
TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO")
|
||||
End If
|
||||
C.Close
|
||||
PROMO_C = PROMO_C * cantidad.Text
|
||||
PROMO_CR = PROMO_CR * cantidad.Text
|
||||
If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(L_PROID.text))
|
||||
D=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1")
|
||||
If D.RowCount>0 Then
|
||||
For i=0 To D.RowCount -1
|
||||
D.Position=i
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||
Next
|
||||
End If
|
||||
D.Close
|
||||
D=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1")
|
||||
If D.RowCount>0 Then
|
||||
For i=0 To D.RowCount -1
|
||||
D.Position=i
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||
Next
|
||||
End If
|
||||
D.Close
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
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.Position=0
|
||||
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
|
||||
' SE LO QUITE DE CONDICION AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||
e.Position =0
|
||||
If e.GetString("CUANTOS") > 0 Then
|
||||
F=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS,CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ") ' AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||
'meter el otro
|
||||
'si jala copiar para guna y el resto
|
||||
If f.RowCount>0 Then
|
||||
For i=0 To f.RowCount -1
|
||||
f.Position=i
|
||||
precio_Cero = f.GetString("CAT_DP_PRECIO")
|
||||
h=B4XPages.MainPage.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||
h.Position=0
|
||||
'0
|
||||
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) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,precio_Cero * f.GetString("CAT_DP_PZAS") * cantidad.text, precio_Cero, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta))
|
||||
h.Close
|
||||
Next
|
||||
End If
|
||||
f.Close
|
||||
End If
|
||||
e.Close
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0 , 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, b4xpages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
Else
|
||||
Msgbox("Tiene " & TOT_ART_PROMO & " " & TOT_ART_PROMOR & " y necesita " & PROMO_C & " " & PROMO_CR & " Para la Promo. " , "ADVERTENCIA") 'ignore
|
||||
End If
|
||||
End If
|
||||
cantidad.Text = ""
|
||||
B4XPages.ShowPage("Productos")
|
||||
else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from PROIDID")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
c.Close
|
||||
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.Position=0
|
||||
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
'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) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario))
|
||||
'para insertar la promo de ades el de regalo en 0
|
||||
e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) ")
|
||||
e.Position =0
|
||||
If e.GetString("CUANTOS") > 0 Then
|
||||
F=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS, CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID)")
|
||||
For i =0 To f.RowCount -1
|
||||
F.Position =i
|
||||
h=B4XPages.MainPage.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||
h.Position=0
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,f.GetString("CAT_DP_PRECIO") * cantidad.text * f.GetString("CAT_DP_PZAS"), f.GetString("CAT_DP_PRECIO"), f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||
h.Close
|
||||
Next
|
||||
f.Close
|
||||
End If
|
||||
e.Close
|
||||
'0
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
cantidad.Text = ""
|
||||
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(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.ShowPage("Productos")
|
||||
Else
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
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.Position=0
|
||||
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
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 (ALMACEN,cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,preciosin, B4XPages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
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(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.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (ALMACEN,L_PROID.Text,cantidad.text))
|
||||
B4XPages.ShowPage("Productos")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub GPS_LocationChanged (Location1 As Location)
|
||||
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||
End Sub
|
||||
|
||||
Sub Terminar_Click
|
||||
If cantidad.Text = "" Then
|
||||
B4XPages.ShowPage("Cliente")
|
||||
ELSE If cantidad.Text > l_bodega.Text Then
|
||||
Msgbox("Exede la existencia", "ADVERTENCIA") 'ignore
|
||||
Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from PROIDID")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
|
||||
c.Position =0
|
||||
If c.GetString("CUANTOSD") = 0 Then
|
||||
Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
|
||||
Else
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1)")
|
||||
C.Position =0
|
||||
TOT_ART_PROMO = C.GetString("TOT_ART_PROMO")
|
||||
COSTO_TOT = C.GetString("COSTO_TOT")
|
||||
C.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||
c.Position =0
|
||||
If c.GetString("CUANTOSD") = 0 Then
|
||||
TOT_ART_PROMOR = "0" 'Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA")
|
||||
Else
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||
C.Position =0
|
||||
TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO")
|
||||
End If
|
||||
C.Close
|
||||
PROMO_C = PROMO_C * cantidad.Text
|
||||
PROMO_CR = PROMO_CR * cantidad.Text
|
||||
If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then
|
||||
' anterior a 29/06/2015
|
||||
'B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(l_precio.text/(TOT_ART_PROMO/cantidad.Text),l_precio.text/(TOT_ART_PROMO/cantidad.Text)))
|
||||
'en pe_cedis meto el codigo de promocion para hacer esta validacion.
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(L_PROID.text))
|
||||
D=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1")
|
||||
If D.RowCount>0 Then
|
||||
For i=0 To D.RowCount -1
|
||||
D.Position=i
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||
Next
|
||||
End If
|
||||
D.Close
|
||||
D=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1")
|
||||
If D.RowCount>0 Then
|
||||
For i=0 To D.RowCount -1
|
||||
D.Position=i
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||
Next
|
||||
End If
|
||||
D.Close
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
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.Position=0
|
||||
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
'para insertar la promo de ades el de regalo en 0
|
||||
e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
|
||||
' SE LO QUITE DE CONDICION AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||
e.Position =0
|
||||
If e.GetString("CUANTOS") > 0 Then
|
||||
F=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS,CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ") ' AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||
'meter el otro
|
||||
'si jala copiar para guna y el resto
|
||||
If f.RowCount>0 Then
|
||||
For i=0 To f.RowCount -1
|
||||
f.Position=i
|
||||
precio_Cero = f.GetString("CAT_DP_PRECIO")
|
||||
h=B4XPages.MainPage.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||
h.Position=0
|
||||
Log(111)
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,precio_Cero * f.GetString("CAT_DP_PZAS") * cantidad.text, precio_Cero, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||
h.Close
|
||||
Next
|
||||
End If
|
||||
f.Close
|
||||
End If
|
||||
e.Close
|
||||
Log(222)
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0 , 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, b4xpages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
Else
|
||||
Msgbox("Tiene " & TOT_ART_PROMO & " " & TOT_ART_PROMOR & " y necesita " & PROMO_C & " " & PROMO_CR & " Para la Promo. " , "ADVERTENCIA") 'ignore
|
||||
End If
|
||||
End If
|
||||
cantidad.Text = ""
|
||||
B4XPages.ShowPage("Cliente")
|
||||
else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from PROIDID")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
c.Close
|
||||
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.Position=0
|
||||
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
'para insertar la promo de ades el de regalo en 0
|
||||
e=B4XPages.MainPage.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) ")
|
||||
e.Position =0
|
||||
If e.GetString("CUANTOS") > 0 Then
|
||||
F=B4XPages.MainPage.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS, CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID)")
|
||||
For i =0 To f.RowCount -1
|
||||
F.Position =i
|
||||
h=B4XPages.MainPage.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||
h.Position=0
|
||||
Log(333)
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,f.GetString("CAT_DP_PRECIO") * cantidad.text * f.GetString("CAT_DP_PZAS"), f.GetString("CAT_DP_PRECIO"), f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||
h.Close
|
||||
Next
|
||||
f.Close
|
||||
End If
|
||||
e.Close
|
||||
Log(444)
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
cantidad.Text = ""
|
||||
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(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.ShowPage("Cliente")
|
||||
Else
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
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.Position=0
|
||||
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||
c.Close
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
Log(555)
|
||||
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 (ALMACEN,cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,preciosin, B4XPages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
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(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.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (ALMACEN,L_PROID.Text,cantidad.text))
|
||||
B4XPages.ShowPage("Cliente")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
' BACK key pressed
|
||||
' Return True To close, False To cancel
|
||||
Msgbox("Presione Boton Terminar.","ADVERTENCIA") 'ignore
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Sub img_prod_Click
|
||||
i_fotol.Visible = True
|
||||
i_fotol.Bitmap = LoadBitmap(ruta,"1.jpg")
|
||||
|
||||
End Sub
|
||||
Sub i_fotol_Click
|
||||
i_fotol.Visible = False
|
||||
|
||||
End Sub
|
||||
|
||||
Sub DESC_PROMO_Click
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from PROIDID")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||
B4XPages.ShowPage("detalle_promo")
|
||||
End Sub
|
||||
|
||||
Sub nopromo_Click
|
||||
If cantidad.Text = "" Then
|
||||
Msgbox("Cantidad no puede ser 0","Cantidad") 'ignore
|
||||
Else If cantidad.Text > l_bodega.Text Then
|
||||
Msgbox("Exede la existencia", "ADVERTENCIA") 'ignore
|
||||
Else
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
sTime=DateTime.Time(DateTime.Now)
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||
c.Position=0
|
||||
usuario = c.GetString("USUARIO")
|
||||
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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",0,0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario, b4xpages.MainPage.tipo_venta))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||
cantidad.Text = ""
|
||||
B4XPages.ShowPage("Productos")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub p_pedido_Click
|
||||
|
||||
End Sub
|
||||
2795
B4A/C_Principal.bas
Normal file
1667
B4A/C_Productos.bas
Normal file
607
B4A/C_Promos.bas
Normal file
@@ -0,0 +1,607 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
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
|
||||
168
B4A/C_RespaldoDiario.bas
Normal file
@@ -0,0 +1,168 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.2
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
Dim skmt, rkmt As SQL
|
||||
' Dim rp As RuntimePermissions
|
||||
Dim safePath As String
|
||||
Dim fechaHoy As String
|
||||
Dim skmtAttached As Boolean = False
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
' Log("************************** " & safePath)
|
||||
Dim rp As RuntimePermissions
|
||||
Dim Dirp As String = File.DirInternal
|
||||
Dim Dir As String
|
||||
' Dim Dir2 As String
|
||||
Try
|
||||
File.MakeDir(Dirp,"/kmts")
|
||||
Dir = "/kmts"
|
||||
' Log("creado en kmts " & Dirp & Dir)
|
||||
Catch
|
||||
Dir = ""
|
||||
' Log("creado en raiz")
|
||||
End Try
|
||||
' safePath = rp.GetSafeDirDefaultExternal("./")
|
||||
safePath = Dirp & Dir
|
||||
'Si no existe el directorio "kmts" en el raiz de la tarjeta de memoria, nos cambiamos al directorio seguro (sdcard/Android/data/kelloggs...)
|
||||
If Not(File.IsDirectory(Dirp, Dir)) Then safePath = rp.GetSafeDirDefaultExternal("kmts")
|
||||
Private name() As String = Regex.split(" ", Application.LabelName)
|
||||
rkmt.Initialize(safePath,$"${name(0)}.rkmt.km"$, True)
|
||||
skmt.Initialize(File.DirInternal,"kmt.db", False)
|
||||
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)"$)
|
||||
agregaColumna2(rkmt,"pedidos","pe_cantc","text")
|
||||
agregaColumna2(rkmt,"pedidos","pe_bcajas","text")
|
||||
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
||||
Private c As Cursor = rkmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('pedidos') WHERE name='pe_envio_ok'"$)
|
||||
c.Position = 0
|
||||
If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos
|
||||
rkmt.ExecNonQuery($"ALTER TABLE pedidos ADD COLUMN pe_envio_ok INT"$)
|
||||
Log($"Columna "pe_envio_ok INT", agregada a "pedidos}"."$)
|
||||
End If
|
||||
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||
Try
|
||||
rkmt.ExecNonQuery($"ALTER TABLE pedidos ADD COLUMN pe_envio_ok INT"$)
|
||||
Log($"Columna "pe_envio_ok INT", agregada a "pedidos".."$)
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Try
|
||||
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 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)"$)
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
fechaHoy = DateTime.Date(DateTime.Now)
|
||||
revisaSkmtAttached
|
||||
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
|
||||
End Sub
|
||||
|
||||
'Revisa si esta montada "kmt.db" como "skmt" y si no, se monta.
|
||||
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.
|
||||
If rs.GetString("name") = "skmt1" Then skmtAttached = True
|
||||
Loop
|
||||
If Not(skmtAttached) Then
|
||||
rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$)
|
||||
skmtAttached = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'Copia la tabla PEDIDO a rkmt.db en la tarjeta del celular.
|
||||
Sub respaldaPedido
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("copiando pedidos ...")
|
||||
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,pe_cantc,pe_bcajas) select * 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}"$)
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("copiando inventarios ...")
|
||||
' rkmt.ExecNonQuery($"delete from inventarios where substr(fecha, 1, 10) = '${fechaHoy}'"$)
|
||||
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.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
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("copiando paquetes ...")
|
||||
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.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
rkmt.EndTransaction
|
||||
' Log(((DateTime.Now - inicio)/1000) & " segs")
|
||||
End Sub
|
||||
|
||||
Sub vacuum
|
||||
' Log("Vacuum")
|
||||
rkmt.ExecNonQuery("vacuum;")
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
'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
|
||||
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
|
||||
|
||||
Sub agregaColumna2(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 = 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
|
||||
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
|
||||
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
|
||||
608
B4A/C_Subs.bas
Normal file
@@ -0,0 +1,608 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.2
|
||||
@EndOfDesignText@
|
||||
Sub Class_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 reqManager As DBRequestManager
|
||||
Private EventName As String 'ignore
|
||||
Private CallBack As Object 'ignore
|
||||
Dim phn As Phone
|
||||
Dim devModel As String
|
||||
Dim db, kmt, errorLog As SQL 'Requiere la libreria "SQL" 'ignore
|
||||
Dim ssid As String 'ignore
|
||||
Dim reqsList As List
|
||||
Dim reqError As Boolean = False
|
||||
Private subsLogs As Boolean = False
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize (vCallback As Object, vEventName As String) As Object
|
||||
reqsList.Initialize
|
||||
EventName = vEventName
|
||||
CallBack = vCallback
|
||||
db = dbInit
|
||||
reqManager = reqManagerInit
|
||||
Return Me
|
||||
End Sub
|
||||
|
||||
'Inicializa la BD con "kmt.db" en File.DirInternal, si el archivo no existe, lo copia desde File.DirAssets.
|
||||
'Dispara el evento "dbOk" cuando termina.
|
||||
Sub dbInit As SQL
|
||||
If File.Exists(File.DirInternal, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db")
|
||||
db.Initialize(File.DirInternal,"kmt.db", True)
|
||||
dbOk(True)
|
||||
' Log(db.IsInitialized)
|
||||
Return db
|
||||
End Sub
|
||||
|
||||
Sub dbOk(Success As Boolean)
|
||||
If SubExists(CallBack, EventName & "_dbOk") Then
|
||||
CallSub2(CallBack, EventName & "_dbOk", Success)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'Inicializamos el DBReqServer.
|
||||
Sub reqManagerInit As DBRequestManager
|
||||
Private rm As DBRequestManager
|
||||
rm.Initialize(Me, traeDBReqServerDeBD(db))
|
||||
Log($"Inicializamos reqManager con ${traeDBReqServerDeBD(db)}"$)
|
||||
Return rm
|
||||
End Sub
|
||||
|
||||
'Reinicializamos el DBReqServer de C_Subs.
|
||||
Sub reqManagerReInit
|
||||
Log("reqManager ReInit")
|
||||
reqManager = reqManagerInit
|
||||
End Sub
|
||||
|
||||
Sub envioTest
|
||||
reqsList.Initialize ' Ponemos la lista de DBRequests en cero.
|
||||
Private cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_fecha"
|
||||
For i = 0 To 50
|
||||
' Sleep(200)
|
||||
reqManager.ExecuteQuery(cmd, 0, $"select_fecha_${i}"$)
|
||||
reqsList.Add($"select_fecha_${i}"$)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
'Dispara el evento "_envioOk" del caller.
|
||||
Sub envioOk(Success As Boolean)
|
||||
' Log($"_ENVIOOK_"$)
|
||||
If SubExists(CallBack, EventName & "_envioOk") Then
|
||||
CallSub2(CallBack, EventName & "_envioOk", Success)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
LogColor("C_SUBS JOBDONE - " & Job.Success, Colors.Red)
|
||||
If Job.Success = False Then
|
||||
Log($"Error en el request ${Job.Tag}"$)
|
||||
LogColor("** " & Job.Tag & " Error: " & Job.ErrorMessage, Colors.Red)
|
||||
If reqsList.IndexOf(Job.Tag) > -1 Then reqsList.RemoveAt(reqsList.IndexOf(Job.Tag))
|
||||
reqError = True
|
||||
Else
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||
If reqsList.IndexOf(resultado.Tag) > -1 Then reqsList.RemoveAt(reqsList.IndexOf(resultado.Tag))
|
||||
If resultado.Tag = "select_fecha" Then
|
||||
For Each records() As Object In resultado.Rows
|
||||
For Each k As String In resultado.Columns.Keys
|
||||
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Log(reqsList.Size)
|
||||
If reqsList.Size = 0 Then 'Ya no hay DBReqs pendientes.
|
||||
Log(reqError)
|
||||
If Not(reqError) Then
|
||||
envioOk(True)
|
||||
Else
|
||||
envioOk(False)
|
||||
End If
|
||||
reqError = False
|
||||
Log("-= FIN =-")
|
||||
End If
|
||||
Job.Release
|
||||
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
|
||||
|
||||
'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
|
||||
|
||||
'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
|
||||
|
||||
'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
|
||||
|
||||
'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
|
||||
|
||||
'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
|
||||
|
||||
'Regresa la fecha en el formato "MM/dd/yyyy"
|
||||
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
|
||||
|
||||
'Guarda el nombre y version de la app en CAT_VARIABLES.
|
||||
Sub guardaAppInfo(skmt As SQL) 'ignore
|
||||
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
|
||||
|
||||
'Muestra en el Log los campos y valores que regresan en el JobDone.
|
||||
Sub logJobDoneResultados(resultado As DBResult) 'ignore
|
||||
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
|
||||
|
||||
'Regresa la base de datos especificada ya inicializada.
|
||||
Sub inicializaBD(ruta As String, BDName As String) As SQL 'ignore
|
||||
Dim skmt As SQL
|
||||
If File.Exists(ruta, BDName) = False Then
|
||||
File.Copy(File.DirAssets, BDName, ruta, BDName)
|
||||
LogColor($"Copiamos ${BDName} de ${File.DirAssets} a ${ruta}"$,Colors.Green)
|
||||
End If
|
||||
skmt.Initialize(ruta, BDName, True)
|
||||
Return skmt
|
||||
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
|
||||
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
||||
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
|
||||
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
|
||||
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 el DBReqServer desde CAT_VARIABLES o "N/A" si no existe.
|
||||
Sub traeDBReqServerDeBD(dbx As SQL) As String 'ignore
|
||||
Dim srvr As String = "N/A"
|
||||
Dim rs As ResultSet = dbx.ExecQuery("select CAT_VA_VALOR from cat_variables where CAT_VA_DESCRIPCION = 'SERVER'")
|
||||
If rs.RowCount > 0 Then
|
||||
rs.NextRow
|
||||
srvr = rs.GetString("CAT_VA_VALOR")
|
||||
End If
|
||||
Return srvr
|
||||
End Sub
|
||||
|
||||
'Regresa el valor de intervalo desde CAT_VARIABLES o "30" si no existe.
|
||||
Sub traeIntervaloDeBD As String 'ignore
|
||||
Dim intrvl As String = "30"
|
||||
Dim rs As ResultSet = db.ExecQuery("select valor from cat_variables where nombre = 'intervalo'")
|
||||
If rs.RowCount > 0 Then
|
||||
rs.NextRow
|
||||
intrvl = rs.GetString("valor")
|
||||
End If
|
||||
Return intrvl
|
||||
End Sub
|
||||
|
||||
'Regresa el valor timeout desde CAT_VARIABLES o "9000" si no existe.
|
||||
Sub traeTimeoutDeBD As String 'ignore
|
||||
Dim tmout As String = "9000"
|
||||
Dim rs As ResultSet = db.ExecQuery("select valor from cat_variables where nombre = 'timeout'")
|
||||
If rs.RowCount > 0 Then
|
||||
rs.NextRow
|
||||
tmout = rs.GetString("valor")
|
||||
End If
|
||||
Return tmout
|
||||
End Sub
|
||||
|
||||
'Crea una notificación con el "body" dado y regresa el objeto.
|
||||
Sub CreateNotification (Body As String) As Notification 'ignore
|
||||
Dim notification As Notification
|
||||
notification.Initialize2(notification.IMPORTANCE_LOW)
|
||||
notification.Icon = "icon"
|
||||
notification.SetInfo("Tester", Body, Main)
|
||||
Return notification
|
||||
End Sub
|
||||
|
||||
'Genera una notificacion con importancia alta
|
||||
Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore
|
||||
activity = Main
|
||||
Private notif As Notification
|
||||
notif.Initialize2(notif.IMPORTANCE_HIGH)
|
||||
notif.Icon = "icon"
|
||||
notif.Vibrate = False
|
||||
notif.Sound = False
|
||||
notif.AutoCancel = True
|
||||
' If logger Then Log("notiHigh: "&title)
|
||||
notif.SetInfo(title, body, activity)
|
||||
' Log("notiHigh SetInfo")
|
||||
notif.Notify(id)
|
||||
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
|
||||
|
||||
'Regresa el almacen actual de la base de datos.
|
||||
Sub traeAlmacen As String 'ignore
|
||||
Private c As Cursor
|
||||
Private a As String
|
||||
c = db.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||
c.Position = 0
|
||||
a = C.GetString("ID_ALMACEN")
|
||||
c.Close
|
||||
Return a
|
||||
End Sub
|
||||
|
||||
'Regresa la ruta actual de la base de datos.
|
||||
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)")
|
||||
r = "0"
|
||||
If c.RowCount > 0 Then
|
||||
c.Position=0
|
||||
r = c.GetString("CAT_CL_RUTA")
|
||||
End If
|
||||
c.Close
|
||||
Return r
|
||||
End Sub
|
||||
|
||||
''Mandamos los pedidos pendientes (pc_envio_ok <> 1).
|
||||
'Sub mandaPendientes 'ignore
|
||||
' Private logger As Boolean = False
|
||||
' 'PEDIDO_CLIENTE (Pendientes)
|
||||
' Private c As Cursor = db.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where pc_envio_ok <> 1")
|
||||
' If logger Then Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
|
||||
' Private almacen As String = traeAlmacen
|
||||
' Private ruta As String = traeRuta
|
||||
' If c.RowCount>0 Then
|
||||
' For i = 0 To c.RowCount - 1
|
||||
' c.Position = i
|
||||
'' Dim cmd As DBCommand
|
||||
'' cmd.Initialize
|
||||
'' cmd.Name = "DELETE_PEDIDO_MARDS_PC"
|
||||
'' cmd.Parameters = Array As Object(almacen, ruta, c.GetString("PC_CLIENTE") )
|
||||
'' reqManager.ExecuteCommand(cmd , "DEL_PC")
|
||||
'
|
||||
' Dim cmd As DBCommand
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "insert_pedidos_mazapa"
|
||||
' If logger Then Log($"${c.GetString("PC_CLIENTE")}, ${almacen}"$)
|
||||
' cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"), C.GetString("PC_FECHA"), C.GetString("PC_USER"), C.GetString("PC_NOART"), C.GetString("PC_MONTO"), C.GetString("PC_LON"), C.GetString("PC_LAT"), almacen, ruta, C.GetString("PC_COSTO_SIN"), C.GetString("PC_FACTURA"))
|
||||
' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$)
|
||||
' Next
|
||||
' End If
|
||||
'
|
||||
' 'PEDIDO (Pendientes)
|
||||
' c=Starter.skmt.ExecQuery("SELECT PC_ENVIO_OK, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM pedido_cliente left join PEDIDO where pc_cliente = pe_cliente and pc_envio_ok <> 1")
|
||||
' If logger Then Log($"Pedido PENDIENTE: ${c.RowCount}"$)
|
||||
' If c.RowCount>0 Then
|
||||
' For i = 0 To c.RowCount - 1
|
||||
' c.Position = i
|
||||
' Dim cmd As DBCommand
|
||||
'
|
||||
'' cmd.Initialize
|
||||
'' cmd.Name = "DELETE_PEDIDO_MARDS_PE"
|
||||
'' cmd.Parameters = Array As Object(almacen, ruta,c.GetString("PE_CLIENTE") )
|
||||
'' reqManager.ExecuteCommand(cmd , "DEL_PE")
|
||||
'
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "insert_pedido2_mazapa"
|
||||
' 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"), c.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"), c.GetString("PE_DESC"), c.GetString("PE_FOLIO"))
|
||||
' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}"$)
|
||||
' Next
|
||||
' End If
|
||||
'
|
||||
' 'ABONOS
|
||||
' Dim ab As Cursor = db.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$)
|
||||
' If logger Then Log(ab.RowCount)
|
||||
' If ab.RowCount > 0 Then
|
||||
' For i = 0 To ab.RowCount - 1
|
||||
' ab.Position = i
|
||||
' Dim cmd As DBCommand
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "insert_abono_mazapa"
|
||||
' cmd.Parameters = Array As Object( ab.GetString("a_usuario"), ab.GetString("a_ruta"), ab.GetString("a_cliente"), ab.GetString("a_abono"), ab.GetString("a_fecha") )
|
||||
' reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
|
||||
' If logger Then Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
|
||||
' Next
|
||||
' End If
|
||||
' ab.Close
|
||||
'End Sub
|
||||
|
||||
'Revisa si la aplicación tiene permiso para acceder a las notificaciones.
|
||||
Sub CheckNotificationAccess As Boolean 'ignore
|
||||
Dim ph As Phone
|
||||
Dim nstr, pstr As String
|
||||
Dim r As Reflector
|
||||
pstr = r.GetStaticField("anywheresoftware.b4a.BA", "packageName")
|
||||
nstr = ph.GetSettings("enabled_notification_listeners")
|
||||
Return nstr.Contains(pstr)
|
||||
End Sub
|
||||
165
B4A/C_TicketsDia.bas
Normal file
@@ -0,0 +1,165 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
Private p_ticketsdia As Panel
|
||||
|
||||
Dim c As Cursor
|
||||
Dim S As Cursor
|
||||
Dim ruta As String
|
||||
Dim ListView1 As ListView
|
||||
Dim b_noventa As Button
|
||||
Dim nombre_boton As String
|
||||
Dim STIME As String
|
||||
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
|
||||
ruta = File.DirInternal
|
||||
Root.LoadLayout("ticketsdia")
|
||||
If File.Exists(ruta, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||
End If
|
||||
c = B4XPages.MainPage.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
|
||||
|
||||
|
||||
ListView1.Clear
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 10
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 13
|
||||
label2.TextColor = Colors.Blue
|
||||
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
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_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
|
||||
Dim noArticulos As Int = 0
|
||||
|
||||
ListView1.Clear
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim x As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select sum(PE_CANT) as PC_NOART from PEDIDO where PE_CLIENTE = '${c.GetString("PC_CLIENTE")}' AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP)"$)
|
||||
If x.RowCount > 0 Then
|
||||
x.Position = 0
|
||||
' Log(x.GetString("PC_NOART"))
|
||||
noArticulos = x.GetString("PC_NOART")
|
||||
End If
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 10
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 13
|
||||
label2.TextColor = Colors.Blue
|
||||
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& noArticulos & " SubTotal $"& c.GetString("PC_MONTO"))
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
End Sub
|
||||
|
||||
Sub Regresar_Click
|
||||
B4XPages.ShowPage("cliente")
|
||||
End Sub
|
||||
Sub Activity_KeyPress (key As Int) As Boolean
|
||||
' BACK key pressed
|
||||
If key=KeyCodes.KEYCODE_BACK Then
|
||||
' I want to capture the key here so I return True
|
||||
B4XPages.ShowPage("principal")
|
||||
'Return True
|
||||
End If
|
||||
' Returning False signals the system to handle the key
|
||||
Return False
|
||||
End Sub
|
||||
Sub ListView1_ItemLongClick (Position As Int, Value As Object)
|
||||
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value))
|
||||
DateTime.TimeFormat = "HHmmss"
|
||||
STIME=DateTime.Time(DateTime.Now)
|
||||
Starter.pre_viejo = Subs.traeTotalClientepreventaparacredito
|
||||
s=B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_STAY_STORE WHERE HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)")
|
||||
s.Position = 0
|
||||
If s.GetString("CUANTOS") = 1 Then
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
Else
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (Value))
|
||||
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||
End If
|
||||
DateTime.TimeFormat = "HH:mm:ss"
|
||||
Subs.guardaClienteHoraInicio(Value)
|
||||
B4XPages.MainPage.cliente.venimosDeTicketsDia = True
|
||||
B4XPages.ShowPage("cliente")
|
||||
End Sub
|
||||
|
||||
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")
|
||||
ListView1.Clear
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 15
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 10
|
||||
label2.TextColor = Colors.Blue
|
||||
ListView1.AddTwoLines(c.GetString("NV_CLIENTE"),c.GetString("NOMBRE") &" Motivo #"& c.GetString("NV_MOTIVO")& " Comentario $"& c.GetString("NV_COMM"))
|
||||
Next
|
||||
End If
|
||||
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")
|
||||
ListView1.Clear
|
||||
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim label1 As Label
|
||||
label1 = ListView1.TwoLinesLayout.Label
|
||||
label1.TextSize = 15
|
||||
label1.TextColor = Colors.Black
|
||||
Dim label2 As Label
|
||||
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||
label2.TextSize = 10
|
||||
label2.TextColor = Colors.Blue
|
||||
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub p_ticketsdia_Click
|
||||
|
||||
End Sub
|
||||
73
B4A/C_UpdateAvailable.bas
Normal file
@@ -0,0 +1,73 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11.5
|
||||
@EndOfDesignText@
|
||||
Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
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.Color = Colors.Transparent
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
Try
|
||||
Do While Not(CanRequestPackageInstalls)
|
||||
MsgboxAsync($"Por favor permita que ${Application.PackageName} instale actualizaciones"$, "Instalar actualización")
|
||||
Wait For Msgbox_Result(Result As Int)
|
||||
Dim in As Intent
|
||||
in.Initialize("android.settings.MANAGE_UNKNOWN_APP_SOURCES", "package:" & Application.PackageName)
|
||||
StartActivity(in)
|
||||
Loop
|
||||
Catch
|
||||
Log("updateAvailable() Error - " & LastException.Message)
|
||||
End Try
|
||||
If appUpdater.newApp.update Then
|
||||
ofreceActualizacion
|
||||
Else
|
||||
sinActualizacion
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||
'//// Esta es una actividad usada por el servicio appUpdater para mostrar notificaciones
|
||||
'//// cuando hay alguna actualizacion de apk.
|
||||
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
public Sub CanRequestPackageInstalls As Boolean
|
||||
' // https://www.b4x.com/android/forum/threads/version-safe-apk-installation.87667/#content
|
||||
Dim ctxt As JavaObject
|
||||
ctxt.InitializeContext
|
||||
Dim PackageManager As JavaObject = ctxt.RunMethod("getPackageManager", Null)
|
||||
Return PackageManager.RunMethod("canRequestPackageInstalls", Null)
|
||||
End Sub
|
||||
|
||||
Sub ofreceActualizacion
|
||||
If Msgbox2(appUpdater.newApp.newMsg,"Actualización disponible","Si","","No",Null) = DialogResponse.Positive Then 'ignore
|
||||
' StartService(DownloadService)
|
||||
CallSubDelayed(appUpdater, "download_newApk")
|
||||
End If
|
||||
B4XPages.MainPage.ocultaProgreso
|
||||
StartActivity(Main)
|
||||
' Activity.Finish
|
||||
B4XPages.ShowPage("Login")
|
||||
End Sub
|
||||
|
||||
Sub sinActualizacion
|
||||
Msgbox(appUpdater.newApp.okMsg, "Aplicación al corriente") 'ignore
|
||||
' StartActivity(Main)
|
||||
B4XPages.MainPage.ocultaProgreso
|
||||
B4XPages.ShowPage("Login")
|
||||
End Sub
|
||||
274
B4A/DBRequestManager.bas
Normal file
@@ -0,0 +1,274 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=6.8
|
||||
@EndOfDesignText@
|
||||
''Class module
|
||||
Sub Class_Globals
|
||||
Private mTarget As Object
|
||||
Type DBResult (Tag As Object, Columns As Map, Rows As List)
|
||||
Type DBCommand (Name As String, Parameters() As Object)
|
||||
Private link As String
|
||||
Private bc As ByteConverter
|
||||
Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _
|
||||
,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte
|
||||
Private VERSION As Float = 0.9
|
||||
Private tempArray(1) As Object
|
||||
Dim jobTagAnterior As String = "" 'Mod por CHV - 211109
|
||||
Dim reqsList As List
|
||||
End Sub
|
||||
|
||||
'Target - The module that handles JobDone (usually Me).
|
||||
'ConnectorLink - URL of the Java server.
|
||||
Public Sub Initialize (Target As Object, ConnectorLink As String)
|
||||
mTarget = Target
|
||||
link = ConnectorLink
|
||||
reqsList.Initialize
|
||||
End Sub
|
||||
|
||||
'Sends a query request.
|
||||
'Command - Query name and parameters.
|
||||
'Limit - Maximum rows to return or 0 for no limit.
|
||||
'Tag - An object that will be returned in the result.
|
||||
Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object)
|
||||
Dim j As HttpJob
|
||||
Dim ms As OutputStream
|
||||
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||
If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||
|
||||
WriteObject(Command.Name, out2)
|
||||
WriteInt(Limit, out2)
|
||||
WriteList(Command.Parameters, out2)
|
||||
out2.Close
|
||||
j.PostBytes(link & "?method=query", ms.ToBytesArray)
|
||||
End Sub
|
||||
|
||||
'Executes a batch of (non-select) commands.
|
||||
'ListOfCommands - List of the commands that will be executes.
|
||||
'Tag - An object that will be returned in the result.
|
||||
Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object)
|
||||
Dim j As HttpJob
|
||||
Dim ms As OutputStream
|
||||
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||
WriteInt(ListOfCommands.Size, out2)
|
||||
For Each Command As DBCommand In ListOfCommands
|
||||
WriteObject(Command.Name, out2)
|
||||
WriteList(Command.Parameters, out2)
|
||||
Next
|
||||
out2.Close
|
||||
j.PostBytes(link & "?method=batch", ms.ToBytesArray)
|
||||
End Sub
|
||||
|
||||
'Similar to ExecuteBatch. Sends a single command.
|
||||
Public Sub ExecuteCommand(Command As DBCommand, Tag As Object)
|
||||
If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||
ExecuteBatch(Array As DBCommand(Command), Tag)
|
||||
End Sub
|
||||
|
||||
Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream
|
||||
j.Initialize("DBRequest", mTarget)
|
||||
j.Tag = Tag
|
||||
MemoryStream.InitializeToBytesArray(0)
|
||||
Dim compress As CompressedStreams
|
||||
Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip")
|
||||
WriteObject(VERSION, out)
|
||||
Return out
|
||||
End Sub
|
||||
|
||||
Private Sub WriteList(Parameters As List, out As OutputStream)
|
||||
Dim data() As Byte
|
||||
If Parameters = Null Or Parameters.IsInitialized = False Then
|
||||
Dim Parameters As List
|
||||
Parameters.Initialize
|
||||
End If
|
||||
data = bc.IntsToBytes(Array As Int(Parameters.Size))
|
||||
out.WriteBytes(data, 0, data.Length)
|
||||
For Each o As Object In Parameters
|
||||
WriteObject(o, out)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub WriteObject(o As Object, out As OutputStream)
|
||||
Dim data() As Byte
|
||||
tempArray(0) = o
|
||||
If tempArray(0) = Null Then
|
||||
out.WriteBytes(Array As Byte(T_NULL), 0, 1)
|
||||
Else If tempArray(0) Is Short Then
|
||||
out.WriteBytes(Array As Byte(T_SHORT), 0, 1)
|
||||
data = bc.ShortsToBytes(Array As Short(o))
|
||||
Else If tempArray(0) Is Int Then
|
||||
out.WriteBytes(Array As Byte(T_INT), 0, 1)
|
||||
data = bc.IntsToBytes(Array As Int(o))
|
||||
Else If tempArray(0) Is Float Then
|
||||
out.WriteBytes(Array As Byte(T_FLOAT), 0, 1)
|
||||
data = bc.FloatsToBytes(Array As Float(o))
|
||||
Else If tempArray(0) Is Double Then
|
||||
out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1)
|
||||
data = bc.DoublesToBytes(Array As Double(o))
|
||||
Else If tempArray(0) Is Long Then
|
||||
out.WriteBytes(Array As Byte(T_LONG), 0, 1)
|
||||
data = bc.LongsToBytes(Array As Long(o))
|
||||
Else If tempArray(0) Is Boolean Then
|
||||
out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1)
|
||||
Dim b As Boolean = 0
|
||||
Dim data(1) As Byte
|
||||
If b Then data(0) = 1 Else data(0) = 0
|
||||
Else If GetType(tempArray(0)) = "[B" Then
|
||||
data = o
|
||||
out.WriteBytes(Array As Byte(T_BLOB), 0, 1)
|
||||
WriteInt(data.Length, out)
|
||||
Else 'If o Is String Then (treat all other values as string)
|
||||
out.WriteBytes(Array As Byte(T_STRING), 0, 1)
|
||||
data = bc.StringToBytes(o, "UTF8")
|
||||
WriteInt(data.Length, out)
|
||||
End If
|
||||
If data.Length > 0 Then out.WriteBytes(data, 0, data.Length)
|
||||
End Sub
|
||||
|
||||
Private Sub ReadObject(In As InputStream) As Object
|
||||
Dim data(1) As Byte
|
||||
In.ReadBytes(data, 0, 1)
|
||||
Select data(0)
|
||||
Case T_NULL
|
||||
Return Null
|
||||
Case T_SHORT
|
||||
Dim data(2) As Byte
|
||||
Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_INT
|
||||
Dim data(4) As Byte
|
||||
Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_LONG
|
||||
Dim data(8) As Byte
|
||||
Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_FLOAT
|
||||
Dim data(4) As Byte
|
||||
Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_DOUBLE
|
||||
Dim data(8) As Byte
|
||||
Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
Case T_BOOLEAN
|
||||
Dim b As Byte = ReadByte(In)
|
||||
Return b = 1
|
||||
Case T_BLOB
|
||||
Dim len As Int = ReadInt(In)
|
||||
Dim data(len) As Byte
|
||||
Return ReadBytesFully(In, data, data.Length)
|
||||
Case Else
|
||||
Dim len As Int = ReadInt(In)
|
||||
Dim data(len) As Byte
|
||||
ReadBytesFully(In, data, data.Length)
|
||||
Return BytesToString(data, 0, data.Length, "UTF8")
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte()
|
||||
Dim count = 0, read As Int
|
||||
Do While count < Len And read > -1
|
||||
read = In.ReadBytes(Data, count, Len - count)
|
||||
count = count + read
|
||||
Loop
|
||||
Return Data
|
||||
End Sub
|
||||
|
||||
Private Sub WriteInt(i As Int, out As OutputStream)
|
||||
Dim data() As Byte
|
||||
data = bc.IntsToBytes(Array As Int(i))
|
||||
out.WriteBytes(data, 0, data.Length)
|
||||
End Sub
|
||||
|
||||
Private Sub ReadInt(In As InputStream) As Int
|
||||
Dim data(4) As Byte
|
||||
Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||
End Sub
|
||||
|
||||
Private Sub ReadByte(In As InputStream) As Byte
|
||||
Dim data(1) As Byte
|
||||
In.ReadBytes(data, 0, 1)
|
||||
Return data(0)
|
||||
End Sub
|
||||
|
||||
'Handles the Job result and returns a DBResult.
|
||||
Public Sub HandleJob(Job As HttpJob) As DBResult
|
||||
Dim start As Long = DateTime.Now 'ignore
|
||||
Dim In As InputStream = Job.GetInputStream
|
||||
Dim cs As CompressedStreams
|
||||
In = cs.WrapInputStream(In, "gzip")
|
||||
Dim serverVersion As Float = ReadObject(In) 'ignore
|
||||
Dim method As String = ReadObject(In)
|
||||
Dim table As DBResult
|
||||
table.Initialize
|
||||
table.Columns.Initialize
|
||||
table.rows.Initialize
|
||||
table.Tag = Job.Tag
|
||||
If jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.RGB(171,70,0)) 'Mod por CHV - 211109
|
||||
jobTagAnterior = Job.Tag 'Mod por CHV - 211109
|
||||
If method = "query" Then
|
||||
Dim numberOfColumns As Int = ReadInt(In)
|
||||
For i = 0 To numberOfColumns - 1
|
||||
table.Columns.Put(ReadObject(In), i)
|
||||
Next
|
||||
Do While ReadByte(In) = 1
|
||||
Dim rowObjects(numberOfColumns) As Object
|
||||
table.rows.Add(rowObjects)
|
||||
For col = 0 To numberOfColumns - 1
|
||||
Dim o As Object = ReadObject(In)
|
||||
rowObjects(col) = o
|
||||
Next
|
||||
Loop
|
||||
Else If method = "batch" Then
|
||||
table.Columns.Put("AffectedRows", 0)
|
||||
Dim rows As Int = ReadInt(In)
|
||||
For i = 0 To rows - 1
|
||||
table.rows.Add(Array As Object(ReadInt(In)))
|
||||
Next
|
||||
End If
|
||||
In.Close
|
||||
' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112
|
||||
Return table
|
||||
End Sub
|
||||
'Reads a file and returns the file as a bytes array.
|
||||
Public Sub FileToBytes(Dir As String, FileName As String) As Byte()
|
||||
Dim out As OutputStream
|
||||
out.InitializeToBytesArray(0)
|
||||
Dim In As InputStream = File.OpenInput(Dir, FileName)
|
||||
File.Copy2(In, out)
|
||||
out.Close
|
||||
Return out.ToBytesArray
|
||||
End Sub
|
||||
'Converts an image to a bytes array (for BLOB fields).
|
||||
Public Sub ImageToBytes(Image As Bitmap) As Byte()
|
||||
Dim out As OutputStream
|
||||
out.InitializeToBytesArray(0)
|
||||
Image.WriteToStream(out, 100, "JPEG")
|
||||
out.Close
|
||||
Return out.ToBytesArray
|
||||
End Sub
|
||||
'Converts a bytes array to an image (for BLOB fields).
|
||||
Public Sub BytesToImage(bytes() As Byte) As Bitmap
|
||||
Dim In As InputStream
|
||||
In.InitializeFromBytesArray(bytes, 0, bytes.Length)
|
||||
Dim bmp As Bitmap
|
||||
bmp.Initialize2(In)
|
||||
Return bmp
|
||||
End Sub
|
||||
'Prints the table to the logs.
|
||||
Public Sub PrintTable(Table As DBResult)
|
||||
Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size)
|
||||
Dim sb As StringBuilder
|
||||
sb.Initialize
|
||||
For Each col In Table.Columns.Keys
|
||||
sb.Append(col).Append(TAB)
|
||||
Next
|
||||
Log(sb.ToString)
|
||||
For Each row() As Object In Table.Rows
|
||||
Dim sb As StringBuilder
|
||||
sb.Initialize
|
||||
For Each record As Object In row
|
||||
sb.Append(record).Append(TAB)
|
||||
Next
|
||||
ToastMessageShow(sb.ToString, True)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
1158
B4A/EscPosPrinter.bas
Normal file
163
B4A/FileHandler.bas
Normal file
@@ -0,0 +1,163 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=11
|
||||
@EndOfDesignText@
|
||||
'Requiere la librería "ContentResolver"
|
||||
'
|
||||
'Copiar este codigo al boton_Click que se quiere que importe la base de datos.
|
||||
'
|
||||
' Private Sub b_importarBD_Click
|
||||
' Private FH As FileHandler
|
||||
' FH.Initialize
|
||||
' Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar.
|
||||
' File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno.
|
||||
' Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada.
|
||||
' ToastMessageShow("¡BD importada!", False)
|
||||
' End Sub
|
||||
|
||||
Sub Class_Globals
|
||||
#if B4A
|
||||
Private ion As Object
|
||||
Private OldIntent As Intent
|
||||
#end if
|
||||
Type LoadResult (Success As Boolean, Dir As String, FileName As String, RealName As String, Size As Long, Modified As Long, MimeType As String)
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub Initialize
|
||||
|
||||
End Sub
|
||||
|
||||
#if B4A
|
||||
Public Sub SaveAs (Source As InputStream, MimeType As String, Title As String) As ResumableSub
|
||||
Dim intent As Intent
|
||||
intent.Initialize("android.intent.action.CREATE_DOCUMENT", "")
|
||||
intent.AddCategory("android.intent.category.OPENABLE")
|
||||
intent.PutExtra("android.intent.extra.TITLE", Title)
|
||||
intent.SetType(MimeType)
|
||||
StartActivityForResult(intent)
|
||||
Wait For ion_Event (MethodName As String, Args() As Object)
|
||||
If -1 = Args(0) Then 'resultCode = RESULT_OK
|
||||
Dim result As Intent = Args(1)
|
||||
Dim jo As JavaObject = result
|
||||
Dim ctxt As JavaObject
|
||||
Dim out As OutputStream = ctxt.InitializeContext.RunMethodJO("getContentResolver", Null).RunMethod("openOutputStream", Array(jo.RunMethod("getData", Null)))
|
||||
File.Copy2(Source, out)
|
||||
out.Close
|
||||
Return True
|
||||
End If
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
Public Sub Load As ResumableSub
|
||||
Dim cc As ContentChooser
|
||||
cc.Initialize("cc")
|
||||
cc.Show("application/octet-stream", "Choose text file")
|
||||
Wait For CC_Result (Success As Boolean, Dir As String, FileName As String)
|
||||
Log($"***************************${CRLF}${Dir}${CRLF} ${FileName}"$)
|
||||
Dim res As LoadResult = CreateLoadResult(Success, Dir, FileName)
|
||||
Log($"***************************${CRLF}${res.FileName}${CRLF} ${res}"$)
|
||||
If res.Success Then ExtractInformationFromURI(res.FileName, res)
|
||||
Return res
|
||||
End Sub
|
||||
|
||||
Private Sub StartActivityForResult(i As Intent)
|
||||
Dim jo As JavaObject = GetBA
|
||||
ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
|
||||
jo.RunMethod("startActivityForResult", Array(ion, i))
|
||||
End Sub
|
||||
|
||||
Private Sub GetBA As Object
|
||||
Return Me.As(JavaObject).RunMethod("getBA", Null)
|
||||
End Sub
|
||||
|
||||
Private Sub ExtractInformationFromURI (Uri As String, res As LoadResult)
|
||||
Try
|
||||
|
||||
Dim resolver As ContentResolver
|
||||
resolver.Initialize("")
|
||||
Dim u As Uri
|
||||
u.Parse(Uri)
|
||||
Dim rs As ResultSet = resolver.Query(u, Null, "", Null, "")
|
||||
If rs.NextRow Then
|
||||
Dim columns As B4XSet = B4XCollections.CreateSet
|
||||
For i = 0 To rs.ColumnCount - 1
|
||||
columns.Add(rs.GetColumnName(i))
|
||||
Next
|
||||
If columns.Contains("_display_name") Then res.RealName = rs.GetString("_display_name")
|
||||
If columns.Contains("_size") Then res.Size = rs.GetLong("_size")
|
||||
If columns.Contains("last_modified") Then res.Modified = rs.GetLong("last_modified")
|
||||
If columns.Contains("mime_type") Then res.MimeType = rs.GetString("mime_type")
|
||||
End If
|
||||
rs.Close
|
||||
|
||||
Catch
|
||||
Log("error extracting information from file provider")
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Sub CheckForReceivedFiles As LoadResult
|
||||
Dim Activity As Activity = B4XPages.GetNativeParent(B4XPages.MainPage)
|
||||
If IsRelevantIntent(Activity.GetStartingIntent) Then
|
||||
Dim in As Intent = Activity.GetStartingIntent
|
||||
Dim uri As String
|
||||
If in.HasExtra("android.intent.extra.STREAM") Then
|
||||
uri = in.As(JavaObject).RunMethod("getParcelableExtra", Array("android.intent.extra.STREAM"))
|
||||
Else
|
||||
uri = in.GetData
|
||||
End If
|
||||
Dim res As LoadResult = CreateLoadResult(True, "ContentDir", uri)
|
||||
ExtractInformationFromURI(res.FileName, res)
|
||||
Return res
|
||||
End If
|
||||
Return CreateLoadResult(False, "", "")
|
||||
End Sub
|
||||
|
||||
Private Sub IsRelevantIntent(in As Intent) As Boolean
|
||||
If in.IsInitialized And in <> OldIntent And in.Action = in.ACTION_VIEW Then
|
||||
OldIntent = in
|
||||
Return True
|
||||
End If
|
||||
Return False
|
||||
End Sub
|
||||
|
||||
#else if B4i
|
||||
Public Sub SaveAs(ParentPage As Object, AnchorView As Object, Text As String) As ResumableSub
|
||||
Dim avc As ActivityViewController
|
||||
avc.Initialize("avc", Array(Text))
|
||||
avc.Show(B4XPages.GetNativeParent(ParentPage), AnchorView)
|
||||
Wait For avc_Complete (Success As Boolean, ActivityType As String)
|
||||
Return Success
|
||||
End Sub
|
||||
|
||||
Public Sub Load (ParentPage As Object, AnchorView As Object) As ResumableSub
|
||||
Dim DocumentPicker As DocumentPickerViewController
|
||||
DocumentPicker.InitializeImport("picker", Array("public.text"))
|
||||
DocumentPicker.Show(B4XPages.GetNativeParent(ParentPage), AnchorView)
|
||||
Wait For Picker_Complete (Success As Boolean, URLs As List)
|
||||
If Success And URLs.Size > 0 Then
|
||||
Return UrlToLoadResult(URLs.Get(0))
|
||||
End If
|
||||
Return CreateLoadResult(False, "", "")
|
||||
End Sub
|
||||
|
||||
Public Sub UrlToLoadResult(url As String) As LoadResult
|
||||
Dim res As LoadResult = CreateLoadResult(IIf(File.Exists(url, ""), True, False), url, "")
|
||||
res.RealName = res.Dir.SubString(res.Dir.LastIndexOf("/") + 1)
|
||||
res.Size = File.Size(res.Dir, "")
|
||||
Return res
|
||||
End Sub
|
||||
#end if
|
||||
|
||||
Private Sub CreateLoadResult (Success As Boolean, Dir As String, FileName As String) As LoadResult
|
||||
Dim t1 As LoadResult
|
||||
t1.Initialize
|
||||
t1.Success = Success
|
||||
t1.Dir = Dir
|
||||
t1.FileName = FileName
|
||||
Return t1
|
||||
End Sub
|
||||
|
||||
BIN
B4A/Files/abordo.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
B4A/Files/alert2.png
Normal file
|
After Width: | Height: | Size: 632 B |
BIN
B4A/Files/alerta_amarilla.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
B4A/Files/anterior.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
B4A/Files/bus-ar.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
B4A/Files/carrito.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
B4A/Files/celltitle.bal
Normal file
BIN
B4A/Files/cliente.bal
Normal file
BIN
B4A/Files/clientes.bal
Normal file
BIN
B4A/Files/datoscliente.bal
Normal file
BIN
B4A/Files/desvanecido.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
B4A/Files/durakelo.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
B4A/Files/engrane.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
B4A/Files/engrane_gris.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
B4A/Files/folioabono.bal
Normal file
BIN
B4A/Files/fondo_kmt.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
B4A/Files/gps20.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
B4A/Files/guna_viejo.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
B4A/Files/hacer pedido.jpg
Normal file
|
After Width: | Height: | Size: 595 KiB |
BIN
B4A/Files/hacerpedido30.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
B4A/Files/hacerpedido30.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
B4A/Files/iniciofinventa.bal
Normal file
BIN
B4A/Files/intmex_logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
B4A/Files/intmex_logo_192x192.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
B4A/Files/intmex_logo_192x192_old.jpg
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
B4A/Files/itembuttonblue.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/kmt.db
Normal file
BIN
B4A/Files/login.bal
Normal file
BIN
B4A/Files/logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
B4A/Files/logo_mariana.jpeg
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
B4A/Files/logomazapa.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
B4A/Files/mainpage.bal
Normal file
BIN
B4A/Files/malo.jpg
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
B4A/Files/mapa_cliente.bal
Normal file
BIN
B4A/Files/mapa_rutas.bal
Normal file
BIN
B4A/Files/mariana.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
B4A/Files/mariana_ico.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
B4A/Files/mariana_logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
B4A/Files/marker-azul-0.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
B4A/Files/marker-azul-1.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
B4A/Files/marker-azul-10.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-100.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-101.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-102.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-103.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-104.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-105.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-106.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-107.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-108.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-109.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-11.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
B4A/Files/marker-azul-110.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-111.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
B4A/Files/marker-azul-112.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-113.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-114.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-115.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
B4A/Files/marker-azul-116.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-117.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
B4A/Files/marker-azul-118.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-119.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-12.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-120.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-121.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-122.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-123.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-124.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
B4A/Files/marker-azul-125.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-126.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-127.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-128.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-129.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-13.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-130.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-131.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |