Commit inicial

This commit is contained in:
2023-09-07 14:06:59 -06:00
parent 3830aa413a
commit 1d239fdf49
30 changed files with 2645 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
**/Objects
**/AutoBackups
*.meta

74
B4A/C_UpdateAvailable.bas Normal file
View File

@@ -0,0 +1,74 @@
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
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.", "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")
' ToastMessageShow("Descargando actualización", True)
End If
B4XPages.MainPage.ocultaProgreso
StartActivity(Main)
' Activity.Finish
B4XPages.ShowPage("Mainpage")
End Sub
Sub sinActualizacion
Msgbox(appUpdater.newApp.okMsg, "Aplicación al corriente") 'ignore
' StartActivity(Main)
B4XPages.MainPage.ocultaProgreso
B4XPages.ShowPage("Mainpage")
End Sub

191
B4A/C_almacen.bas Normal file
View File

@@ -0,0 +1,191 @@
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 b_cargar As Button
Dim agrupado As String = "0"
Dim reqManager As DBRequestManager
Dim c As Cursor
Private cl_almacen As CustomListView
Private lb_folio As Label
Dim almacencarga As String
Dim almacenselec As String
Dim trabajo As Int
Private p_fin As Panel
Private EditText1 As EditText
Dim RES 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
Root.LoadLayout("almacen")
reqManager.Initialize(Me, Starter.DBReqServer)
p_fin.Width = Root.Width
p_fin.Height = Root.Height
End Sub
Sub B4XPage_Appear
trabajo = 0
cl_almacen.AsView.Visible = False
b_cargar_Click
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Private Sub b_cargar_Click
trabajo = 0
agrupado = "0"
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_agrupado_guna_PICKING"
cmd.Parameters = Array As Object(B4XPages.MainPage.ID_ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "agrupado")
trabajo = trabajo+1
ProgressDialogShow("Cargando")
End Sub
Private Sub lb_folio_Click
Log(Sender.As(Label).Text)
almacenselec = Sender.As(Label).Text
c = Starter.skmt.ExecQuery2("SELECT CAT_ALM_IDALMACEN FROM CAT_ALMACENES WHERE CAT_ALM_NOMBRE = ?",Array As String(Sender.As(Label).Text))
c.Position = 0
almacencarga = c.GetString("CAT_ALM_IDALMACEN")
c.Close
Log(almacencarga)
B4XPages.ShowPage("seleccion")
End Sub
Sub CreateListItem(mostrar As String) As Panel
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, 1, 115)
p.LoadLayout("folio")
p.Height= 65dip
' p.Width = clv_orden.GetBase.Width
' lb_folio.Height = p.Height *0.8
lb_folio.Text = mostrar
' Log(p.Width)
Return p
End Sub
Sub JobDone(Job As HttpJob)
If Job.Success = False Then
ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "agrupado" Then 'query tag
For Each records() As Object In result.Rows
agrupado = records(result.Columns.Get("AGRUPADO"))
Log(agrupado)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_almacenes_guna_PICKING"
cmd.Parameters = Array As Object(agrupado)
reqManager.ExecuteQuery(cmd , 0, "almacenes")
Starter.skmt.ExecNonQuery("delete from CAT_ALMACENES")
Next
End If
If result.Tag = "almacenes" Then 'query tag
trabajo = trabajo-1
If agrupado <> "0" Then
For Each records() As Object In result.Rows
Dim ALMACEN2 As String = records(result.Columns.Get("IDALMACEN"))
Dim NONBRE_ALMACEN As String = records(result.Columns.Get("NONBRE_ALMACEN"))
Dim agrupado2 As String = records(result.Columns.Get("AGRUPADO"))
Log(agrupado)
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACENES(CAT_ALM_IDALMACEN, CAT_ALM_NOMBRE, CAT_ALM_AGRUPADO) VALUES (?,?,?)", Array As Object (ALMACEN2,NONBRE_ALMACEN,agrupado2))
Next
cl_almacen.AsView.Visible = True
c = Starter.skmt.ExecQuery("SELECT CAT_ALM_NOMBRE FROM CAT_ALMACENES")
cl_almacen.Clear
For i = 0 To c.RowCount - 1
c.Position = i
cl_almacen.Add(CreateListItem(c.GetString("CAT_ALM_NOMBRE")),i)
Next
c.Close
End If
End If
End If
Job.Release
If trabajo = 0 Then
ProgressDialogHide
Log("estoyaqui")
End If
End If
End Sub
Private Sub b_findia_Click
p_fin.Visible = True
End Sub
Private Sub EditText1_EnterPressed
If EditText1.Text = "FIN DIA" Then
RES = Msgbox2("Seguro que desa hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If RES = DialogResponse.POSITIVE Then
Starter.skmt.ExecNonQuery("delete from CAT_CONVERSION")
Starter.skmt.ExecNonQuery("delete from CAT_DETALLEFOLIO")
Starter.skmt.ExecNonQuery("delete from CAT_FOLIOS")
Starter.skmt.ExecNonQuery("delete from CAT_PICKING")
Starter.skmt.ExecNonQuery("delete from CUENTAA")
Starter.skmt.ExecNonQuery("delete from FECHA")
p_fin.Visible = False
B4XPages.MainPage.seleccion.b_cad.Text = "Fecha consulta"
End If
Else
MsgboxAsync("Escribe FIN DIA para iniciar de nuevo el picking","Atención")
End If
End Sub
Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed
' Return True To close, False To cancel
If p_fin.Visible Then
p_fin.Visible = False
Else
End If
' Return True
Return False
End Sub

513
B4A/C_picking.bas Normal file
View File

@@ -0,0 +1,513 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=11.8
@EndOfDesignText@
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Dim lb_folioselec As Label
Dim c As Cursor
Dim d As Cursor
Dim cl_picking As CustomListView
Private b_guardapicking As Button
Dim cmd As DBCommand
Dim reqManager As DBRequestManager
Private toast As BCToast
Private Capturing As Boolean
Private rp As RuntimePermissions
Private detector As JavaObject
Private camEx As CameraExClass
Private LastPreview As Long
Private IntervalBetweenPreviewsMs As Int = 100
Dim codigoencontrado As String
Private p_producto As Panel
Private l_nombreproducto As Label
Private et_catori_piezas As EditText
Private et_cantesc_piezas As EditText
Private et_catori_cajas As EditText
Private et_cantesc_cajas As EditText
Private et_cantesc_blister As EditText
Private et_catori_blister As EditText
Private btnStartStop As ImageView
Private et_codigo As EditText
Private l_ordenamiento As Label
Dim posision As Int = 0
Private Panel6 As Panel
Private pnlPreview As Panel
Private B_cerrar As Button
Private b_entradamanual As Button
Private p_entradamaual As Panel
Private et_entradamanual As EditText
Private b_cancelar As Button
Private b_terminar As Button
Dim sDate,sTime As String
Private l_totales As Label
Private l_faltantes As Label
Private l_porcentaje As Label
Private l_fecha As Label
Private btnStartStop2 As ImageView
Dim delanteatras As Int
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
Root.LoadLayout("picking")
'load the layout to Root
reqManager.Initialize(Me, Starter.DBReqServer)
'camara
Panel6.Width = Root.Width
Panel6.Height= Root.Height
Panel6.Visible = False
toast.Initialize(Root)
StopCamera
B4XPages.SetTitle(Me, "Barcode Example")
CreateDetector (Array("AZTEC", "CODE_128", "CODE_39", "CODE_93", "CODABAR", "DATA_MATRIX", "EAN_13", "EAN_8", "ITF", "PDF417", "QR_CODE", "UPC_A", "UPC_E"))
End Sub
Sub B4XPage_Appear
btnStartStop2.Visible = False
c = Starter.skmt.ExecQuery("SELECT CUENTA FROM CUENTAA WHERE ESTATUS = 1")
c.Position = 0
Log(c.RowCount)
If c.RowCount >= 1 Then
b_cancelar.Visible = False
lb_folioselec.Text = c.GetString("CUENTA")
btnStartStop2.Visible = True
d = Starter.skmt.ExecQuery("SELECT FECHACONSULTA FROM FECHA")
d.Position = 0
l_fecha.Text = d.GetString("FECHACONSULTA")
d.Close
Else
b_cancelar.Visible = True
btnStartStop2.Visible = False
lb_folioselec.Text = B4XPages.MainPage.seleccion.folioactual
l_fecha.Text = B4XPages.MainPage.seleccion.fechabusqueda
End If
c.Close
p_producto.Visible = False
c = Starter.skmt.ExecQuery("SELECT CAT_DF_ID, CAT_DF_NOMBRE, CAT_DF_RUTA, CAT_DF_RUTAO, CAT_DF_PIEZAS, CAT_DF_CAJAS, CAT_DF_BLISTER FROM CAT_DETALLEFOLIO WHERE CAT_DF_ESTATUS = 0 ORDER BY 3")
d = Starter.skmt.ExecQuery("SELECT CAT_DF_ID, CAT_DF_NOMBRE, CAT_DF_RUTA, CAT_DF_RUTAO, CAT_DF_PIEZAS, CAT_DF_CAJAS, CAT_DF_BLISTER FROM CAT_DETALLEFOLIO")
Log(c.RowCount)
l_faltantes.Text = d.RowCount - c.RowCount + 1
l_totales.text = d.RowCount
l_porcentaje.Text = NumberFormat2((l_faltantes.Text * 100)/l_totales.Text,1,2,2,True)
If c.RowCount = 1 Then
c.Position = 0
l_ordenamiento.Text = c.GetString("CAT_DF_RUTAO")
et_codigo.Text = c.GetString("CAT_DF_ID")
l_nombreproducto.Text = c.GetString("CAT_DF_NOMBRE")
et_catori_piezas.Text = c.GetString("CAT_DF_PIEZAS")
et_catori_cajas.Text = c.GetString("CAT_DF_CAJAS")
et_catori_blister.Text = c.GetString("CAT_DF_BLISTER")
et_cantesc_piezas.Text = c.GetString("CAT_DF_PIEZAS")
et_cantesc_cajas.Text = c.GetString("CAT_DF_CAJAS")
et_cantesc_blister.Text = c.GetString("CAT_DF_BLISTER")
b_guardapicking.Text = "Terminar picking"
Else If c.RowCount > 1 Then
Log(c.RowCount)
c.Position = 0
l_ordenamiento.Text = c.GetString("CAT_DF_RUTAO")
et_codigo.Text = c.GetString("CAT_DF_ID")
l_nombreproducto.Text = c.GetString("CAT_DF_NOMBRE")
et_catori_piezas.Text = c.GetString("CAT_DF_PIEZAS")
et_catori_cajas.Text = c.GetString("CAT_DF_CAJAS")
et_catori_blister.Text = c.GetString("CAT_DF_BLISTER")
et_cantesc_piezas.Text = c.GetString("CAT_DF_PIEZAS")
et_cantesc_cajas.Text = c.GetString("CAT_DF_CAJAS")
et_cantesc_blister.Text = c.GetString("CAT_DF_BLISTER")
b_guardapicking.Text = "Guardar"
Else
Msgbox2Async("No existen datos de la ruta: "& B4XPages.MainPage.seleccion.folioactual &" del almacen: "& B4XPages.MainPage.almacen.almacenselec,"Atención","Aceptar","","",Null, False)
Wait For Msgbox_Result (result As Int)
If result=DialogResponse.POSITIVE Then
B4XPages.ShowPage("seleccion")
End If
End If
c.Close
' p_producto.Visible = True 'PARA PRUEBAS
End Sub
'camara
Private Sub B4XPage_Disappear
If Panel6.Visible = True Then
Panel6.Visible = False
StopCamera
End If
End Sub
Sub btnStartStop_Click
delanteatras = 1
If Capturing = False Then
Panel6.Visible = True
StartCamera
Else
Panel6.Visible = False
StopCamera
End If
End Sub
Sub btnStartStop2_Click
delanteatras = 2
If Capturing = False Then
Panel6.Visible = True
StartCamera
Else
Panel6.Visible = False
StopCamera
End If
End Sub
Private Sub B_cerrar_Click
If et_codigo.Text.Length = 0 Then
Panel6.Visible = False
StopCamera
btnFlash2_Click
Else
Panel6.Visible = False
StopCamera
et_codigo_EnterPressed
btnFlash2_Click
End If
End Sub
Private Sub StopCamera
' et_codigo.Text = ""
Capturing = False
pnlPreview.Visible = False
If camEx.IsInitialized Then
camEx.Release
End If
End Sub
Private Sub StartCameraShared
pnlPreview.Visible = True
Capturing = True
End Sub
Private Sub FoundBarcode (msg As String)
' et_codigo.Text = msg
toast.Show($"Found [Color=Red][b][plain]${msg}[/plain][/b][/Color]"$)
Log(msg)
codigoencontrado = msg
' If et_codigo.Text.Length > 1 Then
B_cerrar_Click
' End If
End Sub
Private Sub StartCamera
rp.CheckAndRequest(rp.PERMISSION_CAMERA)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result = False Then
toast.Show("No permission!")
Return
End If
StartCameraShared
camEx.Initialize(pnlPreview, False, Me, "Camera1")
Wait For Camera1_Ready (Success As Boolean)
If Success Then
camEx.SetContinuousAutoFocus
camEx.CommitParameters
camEx.StartPreview
btnFlash_Click
Else
toast.Show("Error opening camera")
StopCamera
End If
End Sub
Sub btnFlash_Click
Dim f() As Float = camEx.GetFocusDistances
Log(f(0) & ", " & f(1) & ", " & f(2))
Dim flashModes As List = camEx.GetSupportedFlashModes
If flashModes.IsInitialized = False Then
ToastMessageShow("Flash not supported.", False)
Return
End If
Dim flash As String = "torch"
' LogColor(flash,Colors.Red)
camEx.SetFlashMode(flash)
ToastMessageShow(flash, False)
camEx.CommitParameters
End Sub
Sub btnFlash2_Click
Dim f() As Float = camEx.GetFocusDistances
Log(f(0) & ", " & f(1) & ", " & f(2))
Dim flashModes As List = camEx.GetSupportedFlashModes
If flashModes.IsInitialized = False Then
ToastMessageShow("Flash not supported.", False)
Return
End If
Dim flash As String = "off"
' LogColor(flash,Colors.Red)
camEx.SetFlashMode("off")
ToastMessageShow(flash, False)
camEx.CommitParameters
End Sub
Private Sub CreateDetector (Codes As List)
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim builder As JavaObject
builder.InitializeNewInstance("com/google/android/gms/vision/barcode/BarcodeDetector.Builder".Replace("/", "."), Array(ctxt))
Dim barcodeClass As String = "com/google/android/gms/vision/barcode/Barcode".Replace("/", ".")
Dim barcodeStatic As JavaObject
barcodeStatic.InitializeStatic(barcodeClass)
Dim format As Int
For Each formatName As String In Codes
format = Bit.Or(format, barcodeStatic.GetField(formatName))
Next
builder.RunMethod("setBarcodeFormats", Array(format))
detector = builder.RunMethod("build", Null)
Dim operational As Boolean = detector.RunMethod("isOperational", Null)
If operational = False Then
toast.Show("Failed to create detector")
End If
btnStartStop.Enabled = operational
End Sub
Private Sub Camera1_Preview (data() As Byte)
If DateTime.Now > LastPreview + IntervalBetweenPreviewsMs Then
'Dim n As Long = DateTime.Now
Dim frameBuilder As JavaObject
Dim bb As JavaObject
bb = bb.InitializeStatic("java.nio.ByteBuffer").RunMethod("wrap", Array(data))
frameBuilder.InitializeNewInstance("com/google/android/gms/vision/Frame.Builder".Replace("/", "."), Null)
'New Code
Dim In As InputStream
In.InitializeFromBytesArray(camEx.PreviewImageToJpeg(data, 100), 0, data.Length)
Dim bmp As Bitmap
'Log(TestPnl.Top)
' TestPnl.Top = 40dip
' TestPnl.Width = pnlPreview.Width
bmp.Initialize2(In)
bmp = bmp.Rotate(90)
bmp = bmp.Crop(0, bmp.Height * .3, bmp.Width, bmp.Height * .3)
'bmp = bmp.Resize(bmp.Width, bmp.Height * .8, True)
'QrTestPnl.SetBitmap(bmp)
'Dim B As Bitmap = camEx.PreviewImageToJpeg(data, 100)
'bmp.Rotate(270)
frameBuilder.RunMethod("setBitmap", Array(bmp)) 'instead of the setImageData line
'frameBuilder.RunMethod("setBitmap", Array(TestPnl.GetBitmap)) 'instead of the setImageData line
'End of new code
'Old Code
' Dim cs As CameraSize = camEx.GetPreviewSize
' frameBuilder.RunMethod("setImageData", Array(bb, cs.Width, cs.Height, 842094169))
Dim frame As JavaObject = frameBuilder.RunMethod("build", Null)
Dim SparseArray As JavaObject = detector.RunMethod("detect", Array(frame))
LastPreview = DateTime.Now
Dim Matches As Int = SparseArray.RunMethod("size", Null)
If Matches > 0 Then
Dim barcode As JavaObject = SparseArray.RunMethod("valueAt", Array(0))
Dim raw As String = barcode.GetField("rawValue")
FoundBarcode(raw)
End If
End If
End Sub
'fin camara
Private Sub et_codigo_EnterPressed
If delanteatras = 1 Then
If et_codigo.Text = codigoencontrado Then
p_producto.Visible = True
btnFlash2_Click
Else If et_codigo.Text = codigoencontrado Then
MsgboxAsync("Escanea el codigo nuevamente.","Atención")
btnFlash2_Click
End If
Else If delanteatras = 2 Then
d = Starter.skmt.ExecQuery2("SELECT * FROM CAT_DETALLEFOLIO WHERE CAT_DF_ID = ? AND CAT_DF_ESTATUS = ?",Array As String (codigoencontrado,1))
Log(d.RowCount)
If d.RowCount > 0 Then
d.Position = 0
et_codigo.Text = codigoencontrado
p_producto.Visible = True
l_ordenamiento.Text = d.GetString("CAT_DF_RUTAO")
et_codigo.Text = d.GetString("CAT_DF_ID")
l_nombreproducto.Text = d.GetString("CAT_DF_NOMBRE")
et_catori_piezas.Text = d.GetString("CAT_DF_PIEZAS")
et_catori_cajas.Text = d.GetString("CAT_DF_CAJAS")
et_catori_blister.Text = d.GetString("CAT_DF_BLISTER")
et_cantesc_piezas.Text = d.GetString("CAT_DF_PIEZAS")
et_cantesc_cajas.Text = d.GetString("CAT_DF_CAJAS")
et_cantesc_blister.Text = d.GetString("CAT_DF_BLISTER")
b_guardapicking.Text = "Guardar"
Else
MsgboxAsync("El codigo aun no ha sido escaneado","Atencion.")
End If
d.Close
End If
End Sub
Private Sub b_entradamanual_Click
If p_producto.Visible Then
p_entradamaual.Visible = False
Else If p_entradamaual.Visible Then
p_entradamaual.Visible = False
Else
p_entradamaual.Visible = True
End If
End Sub
Private Sub et_entradamanual_EnterPressed
If et_codigo.Text = et_entradamanual.Text Then
p_producto.Visible = True
p_entradamaual.Visible = False
et_entradamanual.Text = ""
Else
MsgboxAsync("Por favor captura el codigo correcto.","Atención")
End If
End Sub
Private Sub b_cancelar_Click
Starter.skmt.ExecNonQuery("delete from CUENTAA")
B4XPages.ShowPage("seleccion")
End Sub
Private Sub b_guardapicking_Click
DateTime.DateFormat = "dd/MM/yyyy"
DateTime.Timeformat = "HH:mm:ss"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
If b_guardapicking.Text = "Terminar picking" Then
If p_producto.Visible Then
Dim bopiezas As Int
Dim bocajas As Int
Dim boblister As Int
bopiezas = et_catori_piezas.Text - et_cantesc_piezas.Text
bocajas = et_catori_cajas.Text - et_cantesc_cajas.Text
boblister = et_catori_blister.Text - et_cantesc_blister.Text
Log(bopiezas)
Private CAJASPIEZAS As Int
Private BLISTERPIEZAS As Int
Private totalpiezas As Int
Private preciototal As Float
Private precioorden As Float
Private cantidadbo As Int
Private preciobo As Float
c = Starter.skmt.ExecQuery2("SELECT CAJASPIEZAS, BLISTERPIEZAS, PRECIO FROM CAT_CONVERSION WHERE ID = ? AND NOMBRE = ?", Array As String(et_codigo.Text, l_nombreproducto.Text))
d = Starter.skmt.ExecQuery2("SELECT CANTIDAD FROM CAT_DETALLEFOLIO WHERE CAT_DF_ID = ? AND CAT_DF_NOMBRE = ?",Array As String(et_codigo.Text, l_nombreproducto.Text))
d.Position = 0
c.Position = 0
CAJASPIEZAS = c.GetString("CAJASPIEZAS") * et_cantesc_cajas.Text
BLISTERPIEZAS = c.GetString("BLISTERPIEZAS") * et_cantesc_blister.Text
Log("Cajas a piezas es = "&CAJASPIEZAS)
Log("blister a piezas es = "&BLISTERPIEZAS)
totalpiezas = CAJASPIEZAS + BLISTERPIEZAS + et_cantesc_piezas.Text
Log("total piezas es = "&totalpiezas)
preciototal = c.GetString("PRECIO")* totalpiezas
Log("total precio = "& preciototal)
precioorden = c.GetString("PRECIO") * d.GetString("CANTIDAD")
cantidadbo = d.GetString("CANTIDAD") - totalpiezas
preciobo = cantidadbo * c.GetString("PRECIO")
c.Close
d.Close
' Starter.skmt.ExecNonQuery2("UPDATE CUENTAA SET ESTATUS = ? WHERE CUENTA = ?",Array As String (0,lb_folioselec.Text))
Starter.skmt.ExecNonQuery2("UPDATE CAT_FOLIOS SET CAT_FOLIO_FINAL = ? WHERE CAT_FOLIO = ? ", Array As String((sDate&" "&sTime), lb_folioselec.Text))
Starter.skmt.ExecNonQuery2("UPDATE CAT_DETALLEFOLIO SET CAT_DF_ESTATUS = ?, CAT_DF_PIEZAS_ESC = ?, CAT_DF_CAJAS_ESC = ?, CAT_DF_BLISTER_ESC = ?, PIEZASTOTAL = ?, PRECIOTOTAL = ?, PRECIOORDEN = ?, CANTIDADBO = ?, PRECIOBO = ? WHERE CAT_DF_NOMBRE = ? and CAT_DF_ID = ?",Array As String(1, et_cantesc_piezas.Text, et_cantesc_cajas.Text, et_cantesc_blister.Text, totalpiezas, preciototal, precioorden,cantidadbo, preciobo ,l_nombreproducto.Text, et_codigo.Text))
posision = posision + 1
p_producto.Visible = False
b_cancelar.Visible = False
B4XPages.ShowPage("termino")
End If
Else
If p_producto.Visible Then
Dim bopiezas As Int
Dim bocajas As Int
Dim boblister As Int
bopiezas = et_catori_piezas.Text - et_cantesc_piezas.Text
bocajas = et_catori_cajas.Text - et_cantesc_cajas.Text
boblister = et_catori_blister.Text - et_cantesc_blister.Text
Log(bopiezas)
Private CAJASPIEZAS As Int
Private BLISTERPIEZAS As Int
Private totalpiezas As Int
Private preciototal As Float
Private precioorden As Float
Private cantidadbo As Int
Private preciobo As Float
c = Starter.skmt.ExecQuery2("SELECT CAJASPIEZAS, BLISTERPIEZAS, PRECIO FROM CAT_CONVERSION WHERE ID = ? AND NOMBRE = ?", Array As String(et_codigo.Text, l_nombreproducto.Text))
d = Starter.skmt.ExecQuery2("SELECT CANTIDAD FROM CAT_DETALLEFOLIO WHERE CAT_DF_ID = ? AND CAT_DF_NOMBRE = ?",Array As String(et_codigo.Text, l_nombreproducto.Text))
d.Position = 0
If c.RowCount > 0 Then
c.Position = 0
CAJASPIEZAS = c.GetString("CAJASPIEZAS") * et_cantesc_cajas.Text
BLISTERPIEZAS = c.GetString("BLISTERPIEZAS") * et_cantesc_blister.Text
Log("Cajas a piezas es = "&CAJASPIEZAS)
Log("blister a piezas es = "&BLISTERPIEZAS)
totalpiezas = CAJASPIEZAS + BLISTERPIEZAS + et_cantesc_piezas.Text
Log("total piezas es = "&totalpiezas)
preciototal = c.GetString("PRECIO")* totalpiezas
Log("total precio = "& preciototal)
precioorden = c.GetString("PRECIO") * d.GetString("CANTIDAD")
cantidadbo = d.GetString("CANTIDAD") - totalpiezas
preciobo = cantidadbo * c.GetString("PRECIO")
c.Close
d.Close
Else
End If
Starter.skmt.ExecNonQuery2("UPDATE CUENTAA SET ESTATUS = ? WHERE CUENTA = ?",Array As String (1,lb_folioselec.Text))
Starter.skmt.ExecNonQuery2("UPDATE CAT_DETALLEFOLIO SET CAT_DF_ESTATUS = ?, CAT_DF_PIEZAS_ESC = ?, CAT_DF_CAJAS_ESC = ?, CAT_DF_BLISTER_ESC = ?, PIEZASTOTAL = ?, PRECIOTOTAL = ?, PRECIOORDEN = ?, CANTIDADBO = ?, PRECIOBO = ? WHERE CAT_DF_NOMBRE = ? and CAT_DF_ID = ?",Array As String(1, et_cantesc_piezas.Text, et_cantesc_cajas.Text, et_cantesc_blister.Text, totalpiezas, preciototal, precioorden,cantidadbo, preciobo ,l_nombreproducto.Text, et_codigo.Text))
posision = posision + 1
p_producto.Visible = False
b_cancelar.Visible = False
B4XPage_Appear
Else
End If
End If
End Sub
Private Sub b_regresar_Click
c = Starter.skmt.ExecQuery("SELECT ALMACEN FROM CUENTAA")
c.Position = 0
B4XPages.MainPage.seleccion.almacen = c.GetString("ALMACEN")
c.Close
B4XPages.ShowPage("seleccion")
End Sub

547
B4A/C_seleccion.bas Normal file
View File

@@ -0,0 +1,547 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=11.8
@EndOfDesignText@
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Private b_cargar As Button
Dim reqManager As DBRequestManager
Dim trabajos = 0 As Int
Dim trabajo1 = 0 As Int
Private cl_folios As CustomListView
Dim c As Cursor
Dim d As Cursor
Dim e As Cursor
Dim f As Cursor
Dim g As Cursor
Private lb_folio As Label
Dim folioactual As String
Dim user As String
Dim almacen As String
Dim sDate,sTime As String
Dim fechabusqueda As String
'calendario
Private p_calendario As Panel
Private ASWheelPicker1 As ASWheelPicker
Private ASWheelPicker2 As ASWheelPicker
Private ASWheelPicker3 As ASWheelPicker
Private l_fecha_caducidad As Label
Dim day As String = DateTime.GetDayOfMonth(DateTime.Now)
Dim month As String = DateTime.GetMonth(DateTime.Now)
Dim year2 As String = DateTime.GetYear(DateTime.Now)
Dim month2 As String
Private bgfecha As Button
Dim b_cad As Button
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Return Me
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("seleccion")
'load the layout to Root
reqManager.Initialize(Me, Starter.DBReqServer)
trabajos = 0
trabajo1 = 0
p_calendario.Width = Root.Width
p_calendario.Height= Root.Height
p_calendario.Visible = False
'Creacion de spinners para caducidad
Dim dias As List : dias.Initialize
Log(month)
For i = 1 To 31
Dim Item As ASWheelPicker_Item
Item.Initialize
Item.Text = i
Item.Value = i
Item.ItemTextProperties = ASWheelPicker1.ItemTextProperties
Item.ItemTextProperties.TextColor = (0x8FF000000)
dias.Add(Item)
Next
ASWheelPicker1.AddItems(dias)
Dim mes0 As List : mes0.Initialize
mes0 = Array As String("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
Dim mes As List
mes.Initialize
For Each o As Object In mes0
Dim Item As ASWheelPicker_Item
Item.Initialize
Item.Text = o
Item.Value = o
Item.ItemTextProperties = ASWheelPicker2.ItemTextProperties
Item.ItemTextProperties.TextColor = (0x8FF000000)
mes.Add(Item)
Next
ASWheelPicker2.AddItems(mes)
Dim year As List : year.Initialize
' For i = DateTime.GetYear(DateTime.Now) To DateTime.GetYear(DateTime.Now) + 4
Dim Item As ASWheelPicker_Item
Item.Initialize
Item.Text = DateTime.GetYear(DateTime.Now)
Item.Value = DateTime.GetYear(DateTime.Now)
Item.ItemTextProperties = ASWheelPicker3.ItemTextProperties
Item.ItemTextProperties.TextColor = (0x8FF000000)
year.Add(Item)
' Next
ASWheelPicker3.AddItems(year)
ASWheelPicker1.Refresh
ASWheelPicker2.Refresh
ASWheelPicker3.Refresh
If (DateTime.GetMonth(DateTime.Now)= 1 Or DateTime.GetMonth(DateTime.Now)= 2 Or DateTime.GetMonth(DateTime.Now)= 3 Or DateTime.GetMonth(DateTime.Now)= 4 Or DateTime.GetMonth(DateTime.Now)= 5 Or DateTime.GetMonth(DateTime.Now)= 6 Or DateTime.GetMonth(DateTime.Now)= 7 Or DateTime.GetMonth(DateTime.Now)= 8 Or DateTime.GetMonth(DateTime.Now)= 9 ) Then
l_fecha_caducidad.Text = DateTime.GetDayOfMonth(DateTime.Now)&"/"&"0"&DateTime.GetMonth(DateTime.Now)&"/"&DateTime.GetYear(DateTime.Now)
End If
End Sub
Sub B4XPage_Appear
cl_folios.AsView.Visible = False
user = B4XPages.MainPage.user
almacen = B4XPages.MainPage.almacen.almacencarga
Log("ESTE ES EL ALMACEN "&almacen)
trabajos = 0
trabajo1 = 1
b_cargar_Click
c = Starter.skmt.ExecQuery("SELECT FECHACONSULTA FROM FECHA")
c.Position = 0
If c.RowCount = 0 Then
b_cad.Text = "Fecha consulta"
Else If c.RowCount > 0 Then
b_cad.Text = c.GetString("FECHACONSULTA")
End If
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Private Sub b_cad_Click
p_calendario.Visible = True
End Sub
Private Sub b_cadcancel_Click
If b_cad.Text <> "Fecha consulta" Then
p_calendario.Visible = False
Else
p_calendario.Visible = False
b_cad.Text = "Fecha consulta"
End If
End Sub
Private Sub ASWheelPicker1_ItemChange(Column As Int,ListIndex As Int)
l_fecha_caducidad.Text = ASWheelPicker1.GetSelectedItem(Column).Text
day = ASWheelPicker1.GetSelectedItem(Column).Text
If day = 1 Or day = "2" Or day = "3" Or day = "4" Or day = "5" Or day = "6" Or day = "7" Or day = "8" Or day = "9" Then
l_fecha_caducidad.Text = "0"&day&"/"&month2&"/"&year2
Else
l_fecha_caducidad.Text = day&"/"&month2&"/"&year2
End If
End Sub
Private Sub ASWheelPicker2_ItemChange(Column As Int,ListIndex As Int)
l_fecha_caducidad.Text = ASWheelPicker2.GetSelectedItem(Column).Text
month = ASWheelPicker2.GetSelectedItem(Column).Text
If month = "Enero" Then
month2 = "01"
Else If month = "Febrero" Then
month2 = "02"
Else If month = "Marzo" Then
month2 = "03"
Else If month = "Abril" Then
month2 = "04"
Else If month = "Mayo" Then
month2 = "05"
Else If month = "Junio" Then
month2 = "06"
Else If month = "Julio" Then
month2 = "07"
Else If month = "Agosto" Then
month2 = "08"
Else If month = "Septiembre" Then
month2 = "09"
Else If month = "Octubre" Then
month2 = "10"
Else If month = "Noviembre" Then
month2 = "11"
Else If month = "Diciembre" Then
month2 = "12"
End If
If day = 1 Or day = "2" Or day = "3" Or day = "4" Or day = "5" Or day = "6" Or day = "7" Or day = "8" Or day = "9" Then
l_fecha_caducidad.Text = "0"&day&"/"&month2&"/"&year2
Else
l_fecha_caducidad.Text = day&"/"&month2&"/"&year2
End If
End Sub
Private Sub ASWheelPicker3_ItemChange(Column As Int,ListIndex As Int)
l_fecha_caducidad.Text = ASWheelPicker3.GetSelectedItem(Column).Text
year2 = ASWheelPicker3.GetSelectedItem(Column).Text
If day = 1 Or day = "2" Or day = "3" Or day = "4" Or day = "5" Or day = "6" Or day = "7" Or day = "8" Or day = "9" Then
l_fecha_caducidad.Text = "0"&day&"/"&month2&"/"&year2
Else
l_fecha_caducidad.Text = day&"/"&month2&"/"&year2
End If
End Sub
Private Sub bgfecha_Click
If l_fecha_caducidad.Text = "" Then
b_cad.text = "Fecha consulta"
Else
If month = "Febrero" And (day = 31 Or day = 30) And (year2 Mod 4) = 0 Then
Log(year2 Mod 4)
b_cad.Text = "29"&"/"&month2&"/"&year2
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
Else If month = "Febrero" And (day = 31 Or day = 30 Or day = 29) And (year2 Mod 4) > 1 Then
b_cad.Text = "28"&"/"&month2&"/"&year2
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
Else If month = "Abril" And day = 31 Then
b_cad.Text = "30"&"/"&month2&"/"&year2
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
Else If month = "Junio" And day = 31 Then
b_cad.Text = "30"&"/"&month2&"/"&year2
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
Else If month = "Septiembre" And day = 31 Then
b_cad.Text = "30"&"/"&month2&"/"&year2
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
Else If month = "Noviembre" And day = 31 Then
b_cad.Text = "30"&"/"&month2&"/"&year2
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
Else
b_cad.Text = l_fecha_caducidad.Text
Starter.skmt.ExecNonQuery("delete from FECHA")
Starter.skmt.ExecNonQuery2("INSERT INTO FECHA(FECHACONSULTA)VALUES (?)",Array As String(b_cad.Text))
End If
p_calendario.Visible = False
End If
End Sub
Sub b_cargar_Click
trabajos = 0
trabajo1 = 1
cl_folios.Clear
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_rutas_guna_PICKING"
cmd.Parameters = Array As Object(almacen)
reqManager.ExecuteQuery(cmd , 0, "rutas")
trabajos = trabajos +1
cmd.Initialize
cmd.Name = "select_conversiones_GUNA"
cmd.Parameters = Array As Object(almacen)
reqManager.ExecuteQuery(cmd , 0, "conversion")
trabajos = trabajos +1
ProgressDialogShow ("Cargando")
Log(trabajos)
Log(trabajo1)
' If trabajos = 0 And trabajo1 = 1 Then
' ProgressDialogHide
' End If
End Sub
Sub CreateListItem(mostrar As String) As Panel
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, 1, 115)
p.LoadLayout("folio")
p.Height= 60dip
' p.Width = clv_orden.GetBase.Width
lb_folio.Height = p.Height *0.8
lb_folio.Text = mostrar
' Log(p.Width)
Return p
End Sub
Private Sub lb_folio_Click
If b_cad.Text <> "Fecha consulta" Then
fechabusqueda = b_cad.Text
Log(fechabusqueda)
folioactual = Sender.As(Label).Text
Log(folioactual)
Log(almacen)
DateTime.DateFormat = "dd/MM/yyyy"
DateTime.Timeformat = "HH:mm:ss"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
d = Starter.skmt.ExecQuery("SELECT CUENTA FROM CUENTAA")
d.Position = 0
If d.RowCount > 0 Then
Log("1")
If d.GetString("CUENTA") <> folioactual Then
Log("2")
c = Starter.skmt.ExecQuery("SELECT CUENTA FROM CUENTAA WHERE ESTATUS = 1")
c.Position = 0
If c.RowCount = 0 Then
Log("3")
Msgbox2Async("Estas seguro de empezar a pickear la ruta : "& folioactual &" del almacen: "& B4XPages.MainPage.almacen.almacenselec,"Atención","Si","","No",Null, False)
Wait For Msgbox_Result (result As Int)
If result=DialogResponse.POSITIVE Then
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_productos_guna_picking"
cmd.Parameters = Array As Object(almacen, folioactual,fechabusqueda,almacen)
reqManager.ExecuteQuery(cmd , 0, "detallefolio")
trabajo1 = trabajo1 + 1
cmd.Initialize
cmd.Name = "select_costo_tot_GUNA"
cmd.Parameters = Array As Object(almacen, folioactual,fechabusqueda,almacen)
reqManager.ExecuteQuery(cmd , 0, "costo")
trabajo1 = trabajo1 +1
ProgressDialogShow ("Cargando")
Starter.skmt.ExecNonQuery("delete from CUENTAA")
Starter.skmt.ExecNonQuery2("UPDATE CAT_FOLIOS SET CAT_FOLIO_INICIO = ? WHERE CAT_FOLIO = ? ", Array As String((sDate&" "&sTime), folioactual))
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA (CUENTA, ESTATUS, ALMACEN) VALUES (?,?,?)", Array As Object (folioactual,"0", almacen))
End If
Else
MsgboxAsync("La ruta "&c.GetString("CUENTA")& " aun no ha sido termianda.","Atención")
Log("4")
End If
Else IF d.GetString("CUENTA") = folioactual Then
Log("5")
B4XPages.ShowPage("picking")
End If
Else If d.RowCount = 0 Then
Log("6")
Msgbox2Async("Estas seguro de empezar a pickear la ruta : "& folioactual &" del almacen: "& B4XPages.MainPage.almacen.almacenselec,"Atención","Si","","No",Null, False)
Wait For Msgbox_Result (result As Int)
If result=DialogResponse.POSITIVE Then
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_productos_guna_picking"
cmd.Parameters = Array As Object(almacen, folioactual,fechabusqueda,almacen)
reqManager.ExecuteQuery(cmd , 0, "detallefolio")
trabajo1 = trabajo1 + 1
cmd.Initialize
cmd.Name = "select_costo_tot_GUNA"
cmd.Parameters = Array As Object(almacen, folioactual,fechabusqueda,almacen)
reqManager.ExecuteQuery(cmd , 0, "costo")
trabajo1 = trabajo1 +1
ProgressDialogShow ("Cargando")
Starter.skmt.ExecNonQuery("delete from CUENTAA")
Starter.skmt.ExecNonQuery2("UPDATE CAT_FOLIOS SET CAT_FOLIO_INICIO = ? WHERE CAT_FOLIO = ? ", Array As String((sDate&" "&sTime), folioactual))
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA (CUENTA, ESTATUS, ALMACEN) VALUES (?,?,?)", Array As Object (folioactual,"0", almacen))
End If
End If
c.Close
d.Close
Else
MsgboxAsync("Captura la fecha a buscar","Atención")
End If
End Sub
Sub JobDone(Job As HttpJob)
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)
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "rutas" Then 'query tag
trabajos = trabajos - 1
trabajo1 = 1
Log(trabajos)
Starter.skmt.ExecNonQuery("delete from CAT_FOLIOS")
For Each records() As Object In result.Rows
Dim FOLIO As String = records(result.Columns.Get("RUTA_ENTREGA"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_FOLIOS (CAT_FOLIO) VALUES (?)", Array As Object (FOLIO))
Next
cl_folios.AsView.Visible = True
c = Starter.skmt.ExecQuery("SELECT CAT_FOLIO FROM CAT_FOLIOS")
cl_folios.Clear
For i = 0 To c.RowCount - 1
c.Position = i
e = Starter.skmt.ExecQuery2("SELECT ALMACEN, RUTA FROM CAT_PICKING WHERE RUTA = ? AND ALMACEN = ? GROUP BY ALMACEN, RUTA ORDER BY RUTA",Array As String(c.GetString("CAT_FOLIO"),almacen))
e.Position = 0
cl_folios.Add(CreateListItem(c.GetString("CAT_FOLIO")),i)
If e.RowCount = 0 Then
lb_folio.Color = Colors.White
Else
lb_folio.Color = Colors.Green
End If
Next
c.Close
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "conversion" Then 'query tag
trabajos = trabajos - 1
trabajo1 = 1
Log(trabajos)
Starter.skmt.ExecNonQuery("delete from CAT_CONVERSION")
For Each records() As Object In result.Rows
Dim IDCONVER As String = records(result.Columns.Get("CAT_GP_ID"))
Dim NOMBRECONVER As String = records(result.Columns.Get("CAT_GP_NOMBRE"))
Dim CAJASPIEZAS As String = records(result.Columns.Get("CAT_GP_CONVERSION1"))
Dim BLISTERPIEZAS As String = records(result.Columns.Get("CAT_GP_CONVERSION2"))
Dim PRECIOPIEZAS As String = records(result.Columns.Get("CAT_GP_PRECIO"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_CONVERSION (ID, NOMBRE, CAJASPIEZAS, BLISTERPIEZAS, PRECIO) VALUES (?,?,?,?,?)", Array As Object (IDCONVER,NOMBRECONVER, CAJASPIEZAS,BLISTERPIEZAS,PRECIOPIEZAS))
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "detallefolio" Then 'query tag
trabajo1 = trabajo1 -2
' B4XPages.MainPage.picking.cl_picking.Clear
Starter.skmt.ExecNonQuery("delete from CAT_DETALLEFOLIO")
Log("Borre la tabla")
For Each records() As Object In result.Rows
Dim ID As String = records(result.Columns.Get("CODIGO"))
Dim NOMBRE As String = records(result.Columns.Get("NOMBRE"))
Dim orden As String = records(result.Columns.Get("CAT_GP_ORDENAMIENTO"))
Dim PIEZAS As String = records(result.Columns.Get("PIEZAS"))
Dim CAJAS As String = records(result.Columns.Get("CAJAS"))
Dim BLISTER As String = records(result.Columns.Get("BLISTER"))
Dim RUTA2 As String = records(result.Columns.Get("CAT_GP_RUTA"))
Dim CANTIDAD As String = records(result.Columns.Get("CANTIDAD"))
Dim RUTA As String = folioactual
Dim almacen3 As String = almacen
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DETALLEFOLIO(CAT_DF_ID, CAT_DF_NOMBRE, CAT_DF_RUTA, CAT_DF_PIEZAS, CAT_DF_CAJAS, CAT_DF_BLISTER, CAT_DF_RUTA, CAT_DF_ALMACEN, CAT_DF_ESTATUS, CAT_DF_RUTAO, CANTIDAD) VALUES (?,?,?,?,?,?,?,?,0,?,?)", Array As Object (ID, NOMBRE, orden, PIEZAS, CAJAS, BLISTER, RUTA, almacen3, RUTA2,CANTIDAD))'' aqui nos quedmos
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "costo" Then 'query tag
trabajo1 = trabajo1 -1
' B4XPages.MainPage.picking.cl_picking.Clear
Starter.skmt.ExecNonQuery("delete from COSTO")
Log("Borre la tabla")
For Each records() As Object In result.Rows
Dim COSTO As String = records(result.Columns.Get("SUM(HVD_COSTO_TOT)"))
Starter.skmt.ExecNonQuery2("INSERT INTO COSTO(COSTO_TOT) VALUES (?)", Array As Object (COSTO))'' aqui nos quedmos
Next
End If
End If
If trabajos = 0 And trabajo1 = 1 Then
ProgressDialogHide
Log("estoyaqui")
Else If trabajo1 = 0 And trabajos = 0 Then
Log(trabajo1)
ProgressDialogHide
B4XPages.ShowPage("picking")
End If
' If trabajos = 0 Then
' ProgressDialogHide
' End If
End If
End Sub
'Private Sub B4XPage_CloseRequest As ResumableSub
'
'' If b_cargar.Visible = True Then
'' B4XPages.ShowPage("almacen")
''
'' End If
'
'' Return True
' Return False
'End Sub
Private Sub b_selecalm_Click
B4XPages.ShowPage("almacen")
End Sub

205
B4A/C_terminar.bas Normal file
View File

@@ -0,0 +1,205 @@
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 c As Cursor
Dim d As Cursor
Dim e As Cursor
Dim f As Cursor
Dim g As Cursor
Dim h As Cursor
Private et_comentario As EditText
Private et_piezastotal As EditText
Private et_montototal As EditText
Dim reqManager As DBRequestManager
Dim trabajos As Int = 0
Private clv_bo As CustomListView
Private l_codigo As Label
Private l_nombre As Label
Private l_inical As Label
Private l_costo As Label
Private et_piezas As EditText
Private et_preciototal As EditText
Private et_cantidadbo As EditText
Private et_preciobo As EditText
Private p_sinbo As Panel
Private Label11 As Label
Private Label13 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
Root.LoadLayout("termino")
reqManager.Initialize(Me, Starter.DBReqServer)
End Sub
Sub B4XPage_Appear
trabajos = 0
et_comentario.Text = ""
c = Starter.skmt.ExecQuery("SELECT * FROM CAT_DETALLEFOLIO")
e = Starter.skmt.ExecQuery("SELECT * FROM CUENTAA")
e.Position = 0
d = Starter.skmt.ExecQuery("SELECT * FROM CAT_FOLIOS WHERE CAT_FOLIO IN (SELECT CUENTA FROM CUENTAA)")
d.Position = 0
Starter.skmt.ExecNonQuery2("delete from CAT_PICKING WHERE ALMACEN = ? AND RUTA = ?",Array As String(e.GetString("ALMACEN"), e.GetString("CUENTA")))
For i = 0 To c.RowCount -1
c.Position = i
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PICKING(ALMACEN, RUTA, CODIGO, NOMBREPROD, CAJASOR, PIEZASOR, BLISTEROR, CAJASES, PIEZASES, BLISTERSES, USUARIO, FECHAINICIO, FECHAFIN, PIEZASTOTAL, PRECIOTOTAL, CANTIDADOR, PRECIOOR, CANTIDADBO, PRECIOBO, ENVIADO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)",Array As String(e.GetString("ALMACEN"), e.GetString("CUENTA"), c.GetString("CAT_DF_ID"), c.GetString("CAT_DF_NOMBRE"), c.GetString("CAT_DF_CAJAS"), c.GetString("CAT_DF_PIEZAS"), c.GetString("CAT_DF_BLISTER"), c.GetString("CAT_DF_PIEZAS_ESC"), c.GetString("CAT_DF_CAJAS_ESC"), c.GetString("CAT_DF_BLISTER_ESC"),B4XPages.MainPage.user, d.GetString("CAT_FOLIO_INICIO"),d.GetString("CAT_FOLIO_FINAL"),c.GetString("PIEZASTOTAL"),c.GetString("PRECIOTOTAL"),c.GetString("CANTIDAD"),c.GetString("PRECIOORDEN"),c.GetString("CANTIDADBO"),c.GetString("PRECIOBO")))
Next
g = Starter.skmt.ExecQuery2("SELECT CODIGO, NOMBREPROD, CANTIDADBO , PRECIOBO FROM CAT_PICKING WHERE CANTIDADBO > 0 AND ALMACEN = ? AND RUTA = ?", Array As String(e.GetString("ALMACEN"), e.GetString("CUENTA")))
If g.RowCount = 0 Then
clv_bo.AsView.Visible = False
p_sinbo.Visible = True
Label11.Visible = False
Label13.Visible = False
f = Starter.skmt.ExecQuery("SELECT SUM(PIEZASTOTAL) AS TOTALTPIEZAS, SUM(PRECIOTOTAL) AS TOTALPRECIO, SUM(CANTIDADOR) AS CANTIDADORI, SUM(PRECIOOR) AS PRECIOORI, SUM (CANTIDADBO) AS CANTIDADBACK, SUM (PRECIOBO) AS PRECIOBACK FROM CAT_PICKING WHERE RUTA IN (SELECT CUENTA FROM CUENTAA) AND ALMACEN IN (SELECT ALMACEN FROM CUENTAA) ")
f.Position = 0
h = Starter.skmt.ExecQuery("SELECT COSTO_TOT FROM COSTO")
h.Position = 0
et_piezastotal.Text = f.GetString("TOTALTPIEZAS")
et_montototal.Text = ""
et_piezas.Text = f.GetString("CANTIDADORI")
et_preciototal.Text = h.GetString("COSTO_TOT")
et_cantidadbo.Text = f.GetString("CANTIDADBACK")
et_preciobo.Text = ""
c.Close
d.Close
e.Close
f.Close
h.Close
Else
p_sinbo.Visible = False
Label11.Visible = True
Label13.Visible = True
clv_bo.AsView.Visible = True
clv_bo.Clear
For i = 0 To g.RowCount - 1
g.Position = i
clv_bo.Add(CreateListItem(g.GetString("CODIGO"), g.GetString("NOMBREPROD"), g.GetString("CANTIDADBO"), g.GetString("PRECIOBO")),i)
Next
g.Close
f = Starter.skmt.ExecQuery("SELECT SUM(PIEZASTOTAL) AS TOTALTPIEZAS, SUM(PRECIOTOTAL) AS TOTALPRECIO, SUM(CANTIDADOR) AS CANTIDADORI, SUM(PRECIOOR) AS PRECIOORI, SUM (CANTIDADBO) AS CANTIDADBACK, SUM (PRECIOBO) AS PRECIOBACK FROM CAT_PICKING WHERE RUTA IN (SELECT CUENTA FROM CUENTAA) AND ALMACEN IN (SELECT ALMACEN FROM CUENTAA) ")
f.Position = 0
h = Starter.skmt.ExecQuery("SELECT COSTO_TOT FROM COSTO")
h.Position = 0
et_piezastotal.Text = f.GetString("TOTALTPIEZAS")
et_montototal.Text = h.GetString("COSTO_TOT")
et_piezas.Text = f.GetString("CANTIDADORI")
et_preciototal.Text = h.GetString("COSTO_TOT")
et_cantidadbo.Text = f.GetString("CANTIDADBACK")
et_preciobo.Text = f.GetString("PRECIOBACK")
c.Close
d.Close
e.Close
f.Close
h.Close
End If
End Sub
Sub CreateListItem(codigo As String, nombre As String, cantidad As String, costo As String) As Panel
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, 1, 115)
p.LoadLayout("dpicking")
p.Height= 60dip
' p.Width = clv_orden.GetBase.Width
' lb_folio.Height = p.Height *0.8
l_codigo.Text = codigo
l_nombre.Text = nombre
l_inical.Text = cantidad
l_costo.Text = NumberFormat2(costo,1,2,2,True)
' Log(p.Width)
Return p
End Sub
Private Sub b_enviar_Click
trabajos = 0
c = Starter.skmt.ExecQuery("SELECT ALMACEN, RUTA, CODIGO, NOMBREPROD, CAJASOR, PIEZASOR, BLISTEROR, CAJASES, PIEZASES, BLISTERSES, USUARIO, FECHAINICIO, FECHAFIN, ENVIADO FROM CAT_PICKING WHERE ENVIADO = 0")
If c.RowCount>0 Then
ProgressDialogShow("Enviando datos")
For i=0 To c.RowCount -1
c.Position=i
d = Starter.skmt.ExecQuery("SELECT FECHACONSULTA FROM FECHA")
d.Position = 0
Dim fecha As String = d.GetString("FECHACONSULTA")
d.Close
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_picking_GUNA"
cmd.Parameters = Array As Object(c.GetString("ALMACEN"),c.GetString("RUTA"),c.GetString("CODIGO"),c.GetString("NOMBREPROD"),c.GetString("CAJASOR"),c.GetString("PIEZASOR"),c.GetString("BLISTEROR"),c.GetString("CAJASES"),c.GetString("PIEZASES"),c.GetString("BLISTERSES"),c.GetString("USUARIO"),c.GetString("FECHAINICIO"),c.GetString("FECHAFIN"),et_comentario.Text,fecha)
reqManager.ExecuteCommand(cmd , $"ins_pickingPendientes_head_${c.GetString("CODIGO")}"$)
trabajos = trabajos +1
Next
Else If c.RowCount = 0 Then
e = Starter.skmt.ExecQuery("SELECT * FROM CUENTAA")
e.Position = 0
Starter.skmt.ExecNonQuery2("UPDATE CUENTAA SET ESTATUS = ? WHERE CUENTA = ?",Array As String (0,e.GetString("CUENTA")))
B4XPages.MainPage.seleccion.almacen = e.GetString("ALMACEN")
B4XPages.ShowPage("almacen")
ProgressDialogHide
e.Close
End If
c.Close
End Sub
Sub JobDone(Job As HttpJob)
Log(Job.Success)
If Job.Success = False Then
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job)
If resultado.Tag.As(String).IndexOf("ins_pickingPendientes_head_") > -1 Then
trabajos = trabajos-1
Private codigo As String= resultado.Tag
codigo = codigo.SubString(codigo.IndexOf("_")+24)
Log($"Cliente1:${codigo}"$)
Starter.skmt.ExecNonQuery2("UPDATE CAT_PICKING SET ENVIADO = ? WHERE CODIGO = ? AND ENVIADO <> 1",Array As String ("1", codigo))
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
If trabajos = 0 Then
ProgressDialogHide
Log("estoyaqui")
e = Starter.skmt.ExecQuery("SELECT * FROM CUENTAA")
e.Position = 0
Starter.skmt.ExecNonQuery2("UPDATE CUENTAA SET ESTATUS = ? WHERE CUENTA = ?",Array As String (0,e.GetString("CUENTA")))
B4XPages.MainPage.seleccion.almacen = e.GetString("ALMACEN")
B4XPages.ShowPage("almacen")
ProgressDialogHide
e.Close
' B4XPages.ShowPage("seleccion")
End If
End If
End Sub

402
B4A/CameraExClass.bas Normal file
View File

@@ -0,0 +1,402 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=7.28
@EndOfDesignText@
'Class module
'version 1.30
'See this page for the list of constants:
'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html
'Note that you should use the constant values instead of the names.
Sub Class_Globals
Private nativeCam As Object
Private cam As Camera
Private r As Reflector
Private target As Object
Private event As String
Public Front As Boolean
Private parameters As Object
Public PreviewOrientation As Int
End Sub
Public Sub Initialize (Panel1 As Panel, FrontCamera As Boolean, TargetModule As Object, EventName As String)
target = TargetModule
event = EventName
Front = FrontCamera
Dim id As Int
id = FindCamera(Front).id
If id = -1 Then
Front = Not(Front) 'try different camera
id = FindCamera(Front).id
If id = -1 Then
ToastMessageShow("No camera found.", True)
Return
End If
End If
cam.Initialize2(Panel1, "camera", id)
End Sub
Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId
Dim ci As CameraInfoAndId
Dim cameraInfo As Object
Dim cameraValue As Int
Log("findCamera")
If frontCamera Then cameraValue = 1 Else cameraValue = 0
cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo")
Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null)
Log(r.target)
Log(numberOfCameras)
For i = 0 To numberOfCameras - 1
r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _
Array As String("java.lang.int", "android.hardware.Camera$CameraInfo"))
r.target = cameraInfo
Log("facing: " & r.GetField("facing") & ", " & cameraValue)
If r.GetField("facing") = cameraValue Then 'ignore
ci.cameraInfo = r.target
ci.Id = i
Return ci
End If
Next
ci.id = -1
Return ci
End Sub
Private Sub SetDisplayOrientation
r.target = r.GetActivity
r.target = r.RunMethod("getWindowManager")
r.target = r.RunMethod("getDefaultDisplay")
r.target = r.RunMethod("getRotation")
Dim result, degrees As Int = r.target * 90
Dim ci As CameraInfoAndId = FindCamera(Front)
r.target = ci.CameraInfo
Dim orientation As Int = r.GetField("orientation")
If Front Then
PreviewOrientation = (orientation + degrees) Mod 360
result = PreviewOrientation
PreviewOrientation = (360 - PreviewOrientation) Mod 360
Else
PreviewOrientation = (orientation - degrees + 360) Mod 360
result = PreviewOrientation
Log("Preview Orientation: " & PreviewOrientation)
End If
r.target = nativeCam
r.RunMethod2("setDisplayOrientation", PreviewOrientation, "java.lang.int")
r.target = parameters
r.RunMethod2("setRotation", result, "java.lang.int")
CommitParameters
End Sub
Private Sub Camera_Ready (Success As Boolean)
If Success Then
r.target = cam
nativeCam = r.GetField("camera")
r.target = nativeCam
parameters = r.RunMethod("getParameters")
SetDisplayOrientation
Else
Log("success = false, " & LastException)
End If
CallSub2(target, event & "_ready", Success)
End Sub
'Uncomment this sub if you need to handle the Preview event
Sub Camera_Preview (Data() As Byte)
If SubExists(target, event & "_preview") Then
CallSub2(target, event & "_preview", Data)
End If
End Sub
Public Sub TakePicture
cam.TakePicture
End Sub
Private Sub Camera_PictureTaken (Data() As Byte)
CallSub2(target, event & "_PictureTaken", Data)
End Sub
Public Sub StartPreview
cam.StartPreview
End Sub
Public Sub StopPreview
cam.StopPreview
End Sub
Public Sub Release
cam.Release
End Sub
'Saves the data received from PictureTaken event
Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String)
Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
out.WriteBytes(Data, 0, Data.Length)
out.Close
End Sub
Public Sub SetParameter(Key As String, Value As String)
r.target = parameters
r.RunMethod3("set", Key, "java.lang.String", Value, "java.lang.String")
End Sub
Public Sub GetParameter(Key As String) As String
r.target = parameters
Return r.RunMethod2("get", Key, "java.lang.String")
End Sub
Public Sub CommitParameters
'Try
r.target = nativeCam
r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters"))
'Catch
' ToastMessageShow("Error setting parameters.", True)
' Log(LastException)
' End Try
End Sub
Public Sub GetColorEffect As String
Return GetParameter("effect")
End Sub
Public Sub SetColorEffect(Effect As String)
SetParameter("effect", Effect)
End Sub
Public Sub GetSupportedPreviewSizes As CameraSize()
r.target = parameters
Dim list1 As List = r.RunMethod("getSupportedPreviewSizes")
Dim cs(list1.Size) As CameraSize
For i = 0 To list1.Size - 1
r.target = list1.get(i)
cs(i).Width = r.GetField("width")
cs(i).Height = r.GetField("height")
Next
Return cs
End Sub
Public Sub SetPreviewSize(Width As Int, Height As Int)
r.target = parameters
r.RunMethod3("setPreviewSize", Width, "java.lang.int", Height, "java.lang.int")
End Sub
Public Sub GetSupportedPicturesSizes As CameraSize()
r.target = parameters
Dim list1 As List = r.RunMethod("getSupportedPictureSizes")
Dim cs(list1.Size) As CameraSize
For i = 0 To list1.Size - 1
r.target = list1.get(i)
cs(i).Width = r.GetField("width")
cs(i).Height = r.GetField("height")
Next
Return cs
End Sub
Public Sub SetPictureSize(Width As Int, Height As Int)
r.target = parameters
r.RunMethod3("setPictureSize", Width, "java.lang.int", Height, "java.lang.int")
End Sub
Public Sub SetJpegQuality(Quality As Int)
r.target = parameters
r.RunMethod2("setJpegQuality", Quality, "java.lang.int")
End Sub
Public Sub SetFlashMode(Mode As String)
r.target = parameters
r.RunMethod2("setFlashMode", Mode, "java.lang.String")
End Sub
Public Sub GetFlashMode As String
r.target = parameters
Return r.RunMethod("getFlashMode")
End Sub
Public Sub GetSupportedFlashModes As List
r.target = parameters
Return r.RunMethod("getSupportedFlashModes")
End Sub
Public Sub GetSupportedColorEffects As List
r.target = parameters
Return r.RunMethod("getSupportedColorEffects")
End Sub
'Returns a list with the supported preview fps. Each item in the list is an array of two ints (minimum value and maximum value).
Public Sub GetSupportedPreviewFpsRange As List
r.target = parameters
Return r.RunMethod("getSupportedPreviewFpsRange")
End Sub
'Returns the current preview fps range.
'Range is a two elements array. The minimum value and maximum value will be stored in this array.
Public Sub GetPreviewFpsRange(Range() As Int)
r.target = parameters
r.RunMethod4("getPreviewFpsRange", Array As Object(Range), Array As String("[I"))
End Sub
Public Sub SetPreviewFpsRange(MinValue As Int, MaxValue As Int)
r.target = parameters
r.RunMethod4("setPreviewFpsRange", Array As Object(MinValue, MaxValue), _
Array As String("java.lang.int", "java.lang.int"))
End Sub
Public Sub GetPreviewSize As CameraSize
r.target = parameters
r.target = r.RunMethod("getPreviewSize")
Dim cs As CameraSize
cs.Width = r.GetField("width")
cs.Height = r.GetField("height")
Return cs
End Sub
Public Sub GetPictureSize As CameraSize
r.target = parameters
r.target = r.RunMethod("getPictureSize")
Dim cs As CameraSize
cs.Width = r.GetField("width")
cs.Height = r.GetField("height")
Return cs
End Sub
'Converts a preview image formatted in YUV format to JPEG.
'Note that you should not save every preview image as it will slow down the whole process.
Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte()
Dim size, previewFormat As Object
r.target = parameters
size = r.RunMethod("getPreviewSize")
previewFormat = r.RunMethod("getPreviewFormat")
r.target = size
Dim width = r.GetField("width"), height = r.GetField("height") As Int
Dim yuvImage As Object = r.CreateObject2("android.graphics.YuvImage", _
Array As Object(data, previewFormat, width, height, Null), _
Array As String("[B", "java.lang.int", "java.lang.int", "java.lang.int", "[I"))
r.target = yuvImage
Dim rect1 As Rect
rect1.Initialize(0, 0, r.RunMethod("getWidth"), r.RunMethod("getHeight"))
Dim out As OutputStream
out.InitializeToBytesArray(100)
r.RunMethod4("compressToJpeg", Array As Object(rect1, quality, out), _
Array As String("android.graphics.Rect", "java.lang.int", "java.io.OutputStream"))
Return out.ToBytesArray
End Sub
Public Sub GetSupportedFocusModes As List
r.target = parameters
Return r.RunMethod("getSupportedFocusModes")
End Sub
Public Sub SetContinuousAutoFocus
Dim modes As List = GetSupportedFocusModes
If modes.IndexOf("continuous-picture") > -1 Then
SetFocusMode("continuous-picture")
Else If modes.IndexOf("continuous-video") > -1 Then
SetFocusMode("continuous-video")
Else
Log("Continuous focus mode is not available")
End If
End Sub
Public Sub SetFocusMode(Mode As String)
r.target = parameters
r.RunMethod2("setFocusMode", Mode, "java.lang.String")
End Sub
Public Sub GetFocusDistances As Float()
Dim F(3) As Float
r.target = parameters
r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F"))
Return F
End Sub
Public Sub GetSupportedPictureFormats As List
r.target = parameters
Return r.RunMethod("getSupportedPictureFormats")
End Sub
'This method should only be called if you need to immediately release the camera.
'For example if you need to start another application that depends on the camera.
Public Sub CloseNow
cam.Release
r.target = cam
r.RunMethod2("releaseCameras", True, "java.lang.boolean")
End Sub
'Calls AutoFocus and then takes the picture if focus was successfull.
Public Sub FocusAndTakePicture
cam.AutoFocus
End Sub
Private Sub Camera_FocusDone (Success As Boolean)
If Success Then
Sleep(100)
TakePicture
Else
Log("AutoFocus error.")
End If
End Sub
Public Sub IsZoomSupported As Boolean
r.target = parameters
Return r.RunMethod("isZoomSupported")
End Sub
Public Sub GetMaxZoom As Int
r.target = parameters
Return r.RunMethod("getMaxZoom")
End Sub
Public Sub getZoom() As Int
r.target = parameters
Return r.RunMethod("getZoom")
End Sub
Public Sub setZoom(ZoomValue As Int)
r.target = parameters
r.RunMethod2("setZoom", ZoomValue, "java.lang.int")
End Sub
Public Sub getExposureCompensation As Int
r.target = parameters
Return r.RunMethod("getExposureCompensation")
End Sub
Public Sub setExposureCompensation(v As Int)
r.target = parameters
r.RunMethod2("setExposureCompensation", v, "java.lang.int")
End Sub
Public Sub getMinExposureCompensation As Int
r.target = parameters
Return r.RunMethod("getMinExposureCompensation")
End Sub
Public Sub getMaxExposureCompensation As Int
r.target = parameters
Return r.RunMethod("getMaxExposureCompensation")
End Sub
Public Sub SetFaceDetectionListener
Dim jo As JavaObject = nativeCam
Dim e As Object = jo.CreateEvent("android.hardware.Camera.FaceDetectionListener", "FaceDetection", Null)
jo.RunMethod("setFaceDetectionListener", Array(e))
End Sub
Private Sub FaceDetection_Event (MethodName As String, Args() As Object) As Object
Dim faces() As Object = Args(0)
For Each f As Object In faces
Dim jo As JavaObject = f
Dim faceRect As Rect = jo.GetField("rect") 'ignore
Next
Return Null
End Sub
Public Sub StartFaceDetection
Dim jo As JavaObject = nativeCam
jo.RunMethod("startFaceDetection", Null)
End Sub
Public Sub StopFaceDetection
Dim jo As JavaObject = nativeCam
jo.RunMethod("stopFaceDetection", Null)
End Sub

272
B4A/DBRequestManager.bas Normal file
View File

@@ -0,0 +1,272 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=6.8
@EndOfDesignText@
''Class module
'' Requiere accesRandom File y requiere compressStrings, byte converter y okhhtputuils2
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
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
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)
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)
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.Blue) '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

BIN
B4A/Files/alert2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

BIN
B4A/Files/almacen.bal Normal file

Binary file not shown.

BIN
B4A/Files/dpicking.bal Normal file

Binary file not shown.

BIN
B4A/Files/folio.bal Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
B4A/Files/kmt.db Normal file

Binary file not shown.

BIN
B4A/Files/logo-guna-18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
B4A/Files/mainpage.bal Normal file

Binary file not shown.

BIN
B4A/Files/picking.bal Normal file

Binary file not shown.

BIN
B4A/Files/salma13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
B4A/Files/seleccion.bal Normal file

Binary file not shown.

BIN
B4A/Files/termino.bal Normal file

Binary file not shown.

50
B4A/Starter.bas Normal file
View File

@@ -0,0 +1,50 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Service
Version=9.85
@EndOfDesignText@
#Region Service Attributes
#StartAtBoot: False
#ExcludeFromLibrary: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Public rp As RuntimePermissions
Dim reqManager As DBRequestManager
Dim DBReqServer As String = "http://keymon.lat:1782" '"http://keymon.lat:1782" "http://10.0.0.205:1782" "http://keymon.lat:1783" "http://11.0.0.48:1783" ""' CAMBIAR HACIA AFUERA O DENTRO DE LA OFNA
' Dim server As String = "http://10.0.0.205:1782"
Dim rutaBD As String = File.DirInternal
Dim skmt As SQL
Dim almacen As String
End Sub
Sub Service_Create
'This is the program entry point.
'This is a good place to load resources that are not specific to a single activity.
End Sub
Sub Service_Start (StartingIntent As Intent)
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
Subs.revisaBD
reqManager.Initialize(Me, DBReqServer)
If Not(skmt.IsInitialized) Then skmt.Initialize(rutaBD, "kmt.db", True)
End Sub
Sub Service_TaskRemoved
'This event will be raised when the user removes the app from the recent apps list.
End Sub
'Return true to allow the OS default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
Sub Service_Destroy
End Sub

36
B4A/Subs.bas Normal file
View File

@@ -0,0 +1,36 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=StaticCode
Version=11.5
@EndOfDesignText@
'Code module
'Subs in this code module will be accessible from all modules.
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
'Revisa que exista la BD y si es necesario crea algunas tablas dentro de ella
Sub revisaBD 'ignore
If Not(File.Exists(Starter.rutaBD, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", Starter.rutaBD, "kmt.db")
If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.rutaBD, "kmt.db", True)
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_FOLIOS(CAT_FOLIO TEXT, CAT_FOLIO_INICIO TEXT, CAT_FOLIO_FINAL TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_DETALLEFOLIO(CAT_DF_ID TEXT, CAT_DF_NOMBRE TEXT, CAT_DF_ORDEN TEXT, CAT_DF_RUTAO TEXT, CAT_DF_PIEZAS TEXT, CAT_DF_CAJAS TEXT, CAT_DF_BLISTER TEXT, CAT_DF_PIEZAS_ESC TEXT, CAT_DF_CAJAS_ESC TEXT, CAT_DF_BLISTER_ESC TEXT, CAT_DF_RUTA INT, CAT_DF_ALMACEN TEXT, PIEZASTOTAL TEXT, PRECIOTOTAL TEXT, CANTIDAD TEXT, PRECIOORDEN TEXT, CANTIDADBO TEXT, PRECIOBO TEXT, CAT_DF_ESTATUS INT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PICKING(ALMACEN TEXT, RUTA TEXT, CODIGO TEXT, NOMBREPROD TEXT, CAJASOR TEXT, PIEZASOR TEXT, BLISTEROR TEXT, CAJASES TEXT, PIEZASES TEXT, BLISTERSES TEXT, USUARIO TEXT, FECHAINICIO TEXT, FECHAFIN TEXT,PIEZASTOTAL TEXT, PRECIOTOTAL TEXT, CANTIDADOR TEXT, PRECIOOR TEXT, CANTIDADBO TEXT, PRECIOBO TEXT, ENVIADO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ALMACENES(CAT_ALM_IDALMACEN TEXT, CAT_ALM_NOMBRE TEXT, CAT_ALM_AGRUPADO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CUENTAA(CUENTA TEXT, ESTATUS TEXT, ALMACEN TEXT, FECHACONSULTA TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_CONVERSION(ID TEXT, NOMBRE TEXT, CAJASPIEZAS TEXT, BLISTERPIEZAS TEXT, PRECIO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS FECHA(FECHACONSULTA TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS COSTO(COSTO_TOT TEXT)")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_FOLIOS")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS COSTO")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_DETALLEFOLIO")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_ALMACENES")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CUENTAA")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_PICKING")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_CONVERSION")
' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS FECHA")
End Sub
'FALTA OPCION DE SI YA ACABARON Y ENTRAN PARA TERMINAR

127
B4A/guna_picking.b4a Normal file
View File

@@ -0,0 +1,127 @@
Build1=Default,guna_picking.keymon.com.mx
File1=almacen.bal
File10=seleccion.bal
File11=termino.bal
File2=dpicking.bal
File3=folio.bal
File4=icon_22-[convertido].png
File5=kmt.db
File6=logo-guna-18.png
File7=MainPage.bal
File8=picking.bal
File9=SALMA13.png
FileGroup1=Default Group
FileGroup10=Default Group
FileGroup11=Default Group
FileGroup2=Default Group
FileGroup3=Default Group
FileGroup4=Default Group
FileGroup5=Default Group
FileGroup6=Default Group
FileGroup7=Default Group
FileGroup8=Default Group
FileGroup9=Default Group
Group=Default Group
Library1=accessibility
Library10=phone
Library11=randomaccessfile
Library12=reflection
Library13=runtimepermissions
Library14=sql
Library15=stringutils
Library16=xcustomlistview
Library17=xui
Library18=xui views
Library19=aswheelpicker
Library2=b4xpages
Library3=bctoast
Library4=byteconverter
Library5=camera
Library6=compressstrings
Library7=core
Library8=ime
Library9=okhttputils2
ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="30"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true" ~\n~ android:smallScreens="true" ~\n~ android:anyDensity="true"/>)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~~\n~AddManifestText(~\n~<uses-permission~\n~ android:name="android.permission.ACCESS_FINE_LOCATION"~\n~ android:maxSdkVersion="30" />~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~AddManifestText(<uses-permission~\n~android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~android:maxSdkVersion="28" />~\n~)
Module1=|relative|..\B4XMainPage
Module2=C_almacen
Module3=C_picking
Module4=C_seleccion
Module5=C_terminar
Module6=CameraExClass
Module7=DBRequestManager
Module8=Starter
Module9=Subs
NumberOfFiles=11
NumberOfLibraries=19
NumberOfModules=9
Version=11.5
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Guna-Picking
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: False
#End Region
#AdditionalJar: com.google.android.gms:play-services-vision
'#BridgeLogger: True
Sub Process_Globals
Public ActionBarHomeClicked As Boolean
End Sub
Sub Globals
Type CameraInfoAndId (CameraInfo As Object, Id As Int)
Type CameraSize (Width As Int, Height As Int)
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim pm As B4XPagesManager
pm.Initialize(Activity)
End Sub
'Template version: B4A-1.01
#Region Delegates
Sub Activity_ActionBarHomeClick
ActionBarHomeClicked = True
B4XPages.Delegate.Activity_ActionBarHomeClick
ActionBarHomeClicked = False
End Sub
Sub Activity_KeyPress (KeyCode As Int) As Boolean
Return B4XPages.Delegate.Activity_KeyPress(KeyCode)
End Sub
Sub Activity_Resume
B4XPages.Delegate.Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
B4XPages.Delegate.Activity_Pause
End Sub
Sub Activity_PermissionResult (Permission As String, Result As Boolean)
B4XPages.Delegate.Activity_PermissionResult(Permission, Result)
End Sub
Sub Create_Menu (Menu As Object)
B4XPages.Delegate.Create_Menu(Menu)
End Sub
#if Java
public boolean _onCreateOptionsMenu(android.view.Menu menu) {
processBA.raiseEvent(null, "create_menu", menu);
return true;
}
#End If
#End Region
'Program code should go into B4XMainPage and other pages.

BIN
B4J/Files/MainPage.bjl Normal file

Binary file not shown.

53
B4J/Salma_picking.b4j Normal file
View File

@@ -0,0 +1,53 @@
AppType=JavaFX
Build1=Default,b4j.example
File1=MainPage.bjl
FileGroup1=New Group
Group=Default Group
Library1=jcore
Library2=jfx
Library3=b4xpages
Module1=|relative|..\B4XMainPage
NumberOfFiles=1
NumberOfLibraries=3
NumberOfModules=1
Version=8.31
@EndOfDesignText@
#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.Show
Dim PagesManager As B4XPagesManager
PagesManager.Initialize(MainForm)
End Sub
'Template version: B4J-1.0
#Region Delegates
Sub MainForm_FocusChanged (HasFocus As Boolean)
B4XPages.Delegate.MainForm_FocusChanged(HasFocus)
End Sub
Sub MainForm_Resize (Width As Double, Height As Double)
B4XPages.Delegate.MainForm_Resize(Width, Height)
End Sub
Sub MainForm_Closed
B4XPages.Delegate.MainForm_Closed
End Sub
Sub MainForm_CloseRequest (EventData As Event)
B4XPages.Delegate.MainForm_CloseRequest(EventData)
End Sub
Public Sub MainForm_IconifiedChanged (Iconified As Boolean)
B4XPages.Delegate.MainForm_IconifiedChanged(Iconified)
End Sub
#End Region

125
B4XMainPage.bas Normal file
View File

@@ -0,0 +1,125 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=9.85
@EndOfDesignText@
#Region Shared Files
#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
'###########################################################################################################
'###################### PULL #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=..\..\gitpull.bat
'###########################################################################################################
'###################### PUSH #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
'###########################################################################################################
#End Region
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Dim seleccion As C_seleccion
Dim picking As C_picking
Dim reqManager As DBRequestManager
Dim paso1 As String
Private Insesion As Button
Private Contraseña As EditText
Dim Usuario As EditText
Dim ID_ALMACEN As String
Dim user As String
Dim almacen As C_almacen
Dim c As Cursor
Dim d As Cursor
Dim terminar As C_terminar
End Sub
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
seleccion.Initialize
B4XPages.AddPage("seleccion",seleccion)
terminar.Initialize
B4XPages.AddPage("termino",terminar)
almacen.Initialize
B4XPages.AddPage("almacen",almacen)
picking.Initialize
B4XPages.AddPage("picking",picking)
reqManager.Initialize(Me, Starter.DBReqServer)
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Private Sub Insesion_Click
If Usuario.Text <> "" Then
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_usuario_guna_PICKING"
cmd.Parameters = Array As Object(Usuario.Text, Contraseña.Text)
reqManager.ExecuteQuery(cmd , 0, "usuario")
End If
End Sub
Sub JobDone(Job As HttpJob)
If Job.Success = False Then
ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "usuario" Then 'query tag
For Each records() As Object In result.Rows
Dim name As String = records(result.Columns.Get("USUARIO"))
ID_ALMACEN = records(result.Columns.Get("CAT_LO_AGENCIA"))
user = records(result.Columns.Get("CAT_LO_USUARIO"))
Log(user)
Next
paso1 = 1
End If
End If
Job.Release
If paso1 = 1 Then
If name = "OKActivo" Then
c = Starter.skmt.ExecQuery("SELECT CUENTA FROM CUENTAA WHERE ESTATUS = 1")
d = Starter.skmt.ExecQuery("SELECT CAT_DF_ID, CAT_DF_NOMBRE, CAT_DF_ORDEN, CAT_DF_RUTAO, CAT_DF_PIEZAS, CAT_DF_CAJAS, CAT_DF_BLISTER FROM CAT_DETALLEFOLIO WHERE CAT_DF_ESTATUS = 0")
c.Position = 0
d.Position = 0
If d.RowCount = 0 And c.RowCount >= 1 Then
B4XPages.ShowPage ("termino")
Else If c.RowCount >= 1 Then
B4XPages.ShowPage ("picking")
Else
B4XPages.ShowPage ("almacen")
End If
Else If name = "OKExpirado" Then
Msgbox("Usuario Expirado llamar al administrador","") 'ignore
Else If name = "OKCancelado" Then
Msgbox("Usuario Cancelado llamar al administrador","") 'ignore
Else
Msgbox("Usuario o password No validos","") 'ignore
End If
paso1 = 0
End If
End If
End Sub

BIN
B4i/Files/mainpage.bil Normal file

Binary file not shown.

46
B4i/Salma_picking.b4i Normal file
View File

@@ -0,0 +1,46 @@
Build1=Default,b4i.example
File1=MainPage.bil
FileGroup1=Default Group
Group=Default Group
Library1=icore
Library2=b4xpages
Module1=|relative|..\B4XMainPage
NumberOfFiles=1
NumberOfLibraries=2
NumberOfModules=1
Version=6.5
@EndOfDesignText@
'Code module
#Region Project Attributes
#ApplicationLabel: B4i Example
#Version: 1.0.0
'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
#iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight
#iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
#Target: iPhone, iPad
#ATSEnabled: True
#MinVersion: 8
#End Region
Sub Process_Globals
Public App As Application
Public NavControl As NavigationController
End Sub
Private Sub Application_Start (Nav As NavigationController)
NavControl = Nav
Dim PagesManager As B4XPagesManager
PagesManager.Initialize(NavControl)
End Sub
'Template version: B4i-1.0
#Region Delegates
Private Sub Application_Background
B4XPages.Delegate.Activity_Pause
End Sub
Private Sub Application_Foreground
B4XPages.Delegate.Activity_Resume
End Sub
#End Region

1
gitpull.bat Normal file
View File

@@ -0,0 +1 @@
git pull

BIN
logo-salma.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB