diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..618d244 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +**/Objects +**/AutoBackups +*.meta \ No newline at end of file diff --git a/B4A/C_UpdateAvailable.bas b/B4A/C_UpdateAvailable.bas new file mode 100644 index 0000000..122de2b --- /dev/null +++ b/B4A/C_UpdateAvailable.bas @@ -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 \ No newline at end of file diff --git a/B4A/C_almacen.bas b/B4A/C_almacen.bas new file mode 100644 index 0000000..3f721d1 --- /dev/null +++ b/B4A/C_almacen.bas @@ -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 \ No newline at end of file diff --git a/B4A/C_picking.bas b/B4A/C_picking.bas new file mode 100644 index 0000000..cd7c79c --- /dev/null +++ b/B4A/C_picking.bas @@ -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 diff --git a/B4A/C_seleccion.bas b/B4A/C_seleccion.bas new file mode 100644 index 0000000..03d4d38 --- /dev/null +++ b/B4A/C_seleccion.bas @@ -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 \ No newline at end of file diff --git a/B4A/C_terminar.bas b/B4A/C_terminar.bas new file mode 100644 index 0000000..4a373fb --- /dev/null +++ b/B4A/C_terminar.bas @@ -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 \ No newline at end of file diff --git a/B4A/CameraExClass.bas b/B4A/CameraExClass.bas new file mode 100644 index 0000000..f090cea --- /dev/null +++ b/B4A/CameraExClass.bas @@ -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 + diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas new file mode 100644 index 0000000..31298ba --- /dev/null +++ b/B4A/DBRequestManager.bas @@ -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 + + \ No newline at end of file diff --git a/B4A/Files/alert2.png b/B4A/Files/alert2.png new file mode 100644 index 0000000..44d3b7e Binary files /dev/null and b/B4A/Files/alert2.png differ diff --git a/B4A/Files/almacen.bal b/B4A/Files/almacen.bal new file mode 100644 index 0000000..9649a3e Binary files /dev/null and b/B4A/Files/almacen.bal differ diff --git a/B4A/Files/dpicking.bal b/B4A/Files/dpicking.bal new file mode 100644 index 0000000..ddcea2b Binary files /dev/null and b/B4A/Files/dpicking.bal differ diff --git a/B4A/Files/folio.bal b/B4A/Files/folio.bal new file mode 100644 index 0000000..675a964 Binary files /dev/null and b/B4A/Files/folio.bal differ diff --git a/B4A/Files/icon_22-[convertido].png b/B4A/Files/icon_22-[convertido].png new file mode 100644 index 0000000..6a82555 Binary files /dev/null and b/B4A/Files/icon_22-[convertido].png differ diff --git a/B4A/Files/kmt.db b/B4A/Files/kmt.db new file mode 100644 index 0000000..2cbbb8e Binary files /dev/null and b/B4A/Files/kmt.db differ diff --git a/B4A/Files/logo-guna-18.png b/B4A/Files/logo-guna-18.png new file mode 100644 index 0000000..4f5b73b Binary files /dev/null and b/B4A/Files/logo-guna-18.png differ diff --git a/B4A/Files/mainpage.bal b/B4A/Files/mainpage.bal new file mode 100644 index 0000000..ddb5b69 Binary files /dev/null and b/B4A/Files/mainpage.bal differ diff --git a/B4A/Files/picking.bal b/B4A/Files/picking.bal new file mode 100644 index 0000000..439a855 Binary files /dev/null and b/B4A/Files/picking.bal differ diff --git a/B4A/Files/salma13.png b/B4A/Files/salma13.png new file mode 100644 index 0000000..d1d3d2a Binary files /dev/null and b/B4A/Files/salma13.png differ diff --git a/B4A/Files/seleccion.bal b/B4A/Files/seleccion.bal new file mode 100644 index 0000000..042e923 Binary files /dev/null and b/B4A/Files/seleccion.bal differ diff --git a/B4A/Files/termino.bal b/B4A/Files/termino.bal new file mode 100644 index 0000000..4302a96 Binary files /dev/null and b/B4A/Files/termino.bal differ diff --git a/B4A/Starter.bas b/B4A/Starter.bas new file mode 100644 index 0000000..dcf7c9b --- /dev/null +++ b/B4A/Starter.bas @@ -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 diff --git a/B4A/Subs.bas b/B4A/Subs.bas new file mode 100644 index 0000000..13d5bac --- /dev/null +++ b/B4A/Subs.bas @@ -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 diff --git a/B4A/guna_picking.b4a b/B4A/guna_picking.b4a new file mode 100644 index 0000000..525e428 --- /dev/null +++ b/B4A/guna_picking.b4a @@ -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~~\n~)~\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~~\n~ ~\n~)~\n~~\n~AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~AddManifestText(~\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. \ No newline at end of file diff --git a/B4J/Files/MainPage.bjl b/B4J/Files/MainPage.bjl new file mode 100644 index 0000000..405b3b7 Binary files /dev/null and b/B4J/Files/MainPage.bjl differ diff --git a/B4J/Salma_picking.b4j b/B4J/Salma_picking.b4j new file mode 100644 index 0000000..cdedb76 --- /dev/null +++ b/B4J/Salma_picking.b4j @@ -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 \ No newline at end of file diff --git a/B4XMainPage.bas b/B4XMainPage.bas new file mode 100644 index 0000000..3ac8514 --- /dev/null +++ b/B4XMainPage.bas @@ -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 \ No newline at end of file diff --git a/B4i/Files/mainpage.bil b/B4i/Files/mainpage.bil new file mode 100644 index 0000000..9ac93b4 Binary files /dev/null and b/B4i/Files/mainpage.bil differ diff --git a/B4i/Salma_picking.b4i b/B4i/Salma_picking.b4i new file mode 100644 index 0000000..7b2433a --- /dev/null +++ b/B4i/Salma_picking.b4i @@ -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 diff --git a/gitpull.bat b/gitpull.bat new file mode 100644 index 0000000..d0aed61 --- /dev/null +++ b/gitpull.bat @@ -0,0 +1 @@ +git pull diff --git a/logo-salma.jpg b/logo-salma.jpg new file mode 100644 index 0000000..2d35c74 Binary files /dev/null and b/logo-salma.jpg differ