Control de tiempos de actividades o clientes
Publicado: 10 Ago 2012, 13:16
Programa muy sencillo sin buscar diseño, solo para controlar las actividades que haces durante el día o el tiempo que inviertes en los clientes.
El tiempo vuela!!!
Graba los tiempos que dedicamos a diferentes actividades en un fichero texto, y gestiona los clientes en el INI.
Y a nivel de ejemplo incluye como usar sencillamente una base de datos sqlite con sintaxis SQL.
Puedes elegir los clientes/actividades del listado, o bien crear nuevos escribiendolos en el texto.
Llamadas al menu:
Alt+Mayusculas+t activar el interface
Alt+Mayusculas+y para el contador.
los ficheros aquí (exe fuente icono y fichero.ini):
https://docs.google.com/folder/d/0Bxrdw ... 0tZ00/edit
Cualquier sugerencia bienvenida.
Los datos de los ficheros se pueden abrir/importar en una hoja de calculo y ordenarlos o gestionarlos por fechas o por clientes, etc...
Salu22:)
El tiempo vuela!!!
Graba los tiempos que dedicamos a diferentes actividades en un fichero texto, y gestiona los clientes en el INI.
Y a nivel de ejemplo incluye como usar sencillamente una base de datos sqlite con sintaxis SQL.
Puedes elegir los clientes/actividades del listado, o bien crear nuevos escribiendolos en el texto.
Llamadas al menu:
Alt+Mayusculas+t activar el interface
Alt+Mayusculas+y para el contador.
los ficheros aquí (exe fuente icono y fichero.ini):
https://docs.google.com/folder/d/0Bxrdw ... 0tZ00/edit
Código: Seleccionar todo
;Creditos Basicos Autoit.es
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=controltiempos.ico
#AutoIt3Wrapper_outfile=controltiempos.exe
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Comment=Control tiempos basicos
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <Misc.au3>
#include <sqlite.au3>
#include <sqlite.dll.au3>
Local $hQuery, $aRow, $noexistedb
If Not FileExists("controtiempos") Then $noexistedb = 1
_SQLite_Startup()
_SQLite_Open("controltiempos.sq")
If FileExists("borra.txt") Then _SQLite_Exec(-1, "DROP TABLE movimientos;") ;borra la tabla
If $noexistedb Or FileExists("borra.txt") Then _SQLite_Exec(-1, "CREATE TABLE movimientos (hora,cliente,concepto,tarea,segundos);")
OnAutoItExitRegister("Salir")
HotKeySet("!+t", "Pon")
HotKeySet("!+y", "Para")
HotKeySet("!+u", "ToolTipon")
If IniRead("ControlTiempos.ini", "CONFIG", "clientes", "fallo") = "fallo" Then IniWrite("ControlTiempos.ini", "CONFIG", "clientes", "")
If IniRead("ControlTiempos.ini", "CONFIG", "conceptos", "fallo") = "fallo" Then IniWrite("ControlTiempos.ini", "CONFIG", "conceptos", "")
If IniRead("ControlTiempos.ini", "CONFIG", "tareas", "fallo") = "fallo" Then IniWrite("ControlTiempos.ini", "CONFIG", "tareas", "")
Global $cliente = "", $tarea, $concepto, $segundos = 0, $timeron = "", $tooltipon = 1
$clientes = IniRead("ControlTiempos.ini", "CONFIG", "clientes", "fallo")
$conceptos = IniRead("ControlTiempos.ini", "CONFIG", "tareas", "fallo")
$tareas = IniRead("ControlTiempos.ini", "CONFIG", "tareas", "fallo")
Interface()
While 1
If $tooltipon Then ToolTip($cliente & "-" & Int($segundos / 60) & ":" & $segundos - (Int($segundos / 60) * 60), 200, 0)
Sleep(1000)
$segundos = $segundos + 1
WEnd
Func ToolTipon()
$tooltipon = _Iif($tooltipon, 0, 1)
EndFunc ;==>ToolTipon
Func Pon()
$wcliente = $cliente
;$cliente = InputBox("Cliente", "Que cliente activamos? Nombre corto o Nick, FIN para cerrar")
Interface()
_FileWriteLog(@ScriptDir & "\milog.txt", "," & $cliente & "," & $timeron & "," & "ON")
If $cliente <> $wcliente Or $cliente = "FIN" Then
GrabarMovi()
$segundos = 0
If $cliente = "FIN" Then Exit
EndIf
EndFunc ;==>Pon
Func Para()
_FileWriteLog(@ScriptDir & "\milog.txt", "," & $cliente & "," & $timeron & "," & "STOP")
MsgBox(0, "Tiempos de clientes", "Aceptar para seguir contando")
_FileWriteLog(@ScriptDir & "\milog.txt", "," & $cliente & "," & $timeron & "," & "ON")
EndFunc ;==>Para
Func Interface()
#region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Tiempos de Clientes", 599, 128, 144, 132)
$Input1 = GUICtrlCreateInput("", 296, 8, 137, 21)
$Label1 = GUICtrlCreateLabel("CLIENTE:", 8, 8, 60, 17)
$Combo1 = GUICtrlCreateCombo("GRL", 80, 8, 201, 25)
GUICtrlSetData(-1, StringReplace($clientes, ",", "|"), "GRL"); StringRight($clientes, StringInStr($clientes, ",", 0, -1) - 1)
$Group1 = GUICtrlCreateGroup("Datos del trabajo", 8, 32, 433, 81)
$Input2 = GUICtrlCreateInput("", 296, 53, 137, 21)
$Label2 = GUICtrlCreateLabel("CONCEPTO:", 16, 53, 74, 17)
$Combo2 = GUICtrlCreateCombo("GRL", 96, 53, 185, 25)
GUICtrlSetData(-1, StringReplace($conceptos, ",", "|"), "GRL")
GUICtrlSetData(-1, "")
$Input3 = GUICtrlCreateInput("", 296, 77, 137, 21)
$Label3 = GUICtrlCreateLabel("TAREA:", 16, 85, 59, 17)
$Combo3 = GUICtrlCreateCombo("GRL", 96, 77, 185, 25)
GUICtrlSetData(-1, StringReplace($tareas, ",", "|"), "GRL")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Activar", 448, 8, 73, 97, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Salir", 556, 93, 33, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("&Ver tabla", 536, 8, 57, 57, $WS_GROUP)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button1
$texto1 = GUICtrlRead($Input1, 1)
$texto2 = GUICtrlRead($Input2, 1)
$texto3 = GUICtrlRead($Input3, 1)
$elcombo1 = GUICtrlRead($Combo1, 1)
$elcombo2 = GUICtrlRead($Combo3, 1)
$elcombo3 = GUICtrlRead($Combo3, 1)
$cliente = _Iif($texto1, $texto1, $elcombo1)
If $texto1 <> "" Then IniWrite("ControlTiempos.ini", "CONFIG", "clientes", IniRead("ControlTiempos.ini", "CONFIG", "clientes", "") & "," & $texto1)
$concepto = _Iif($texto2, $texto2, $elcombo3)
If $texto2 <> "" Then IniWrite("ControlTiempos.ini", "CONFIG", "conceptos", IniRead("ControlTiempos.ini", "CONFIG", "conceptos", "") & "," & $texto2)
$tarea = _Iif($texto3, $texto3, $elcombo3)
If $texto3 <> "" Then IniWrite("ControlTiempos.ini", "CONFIG", "tareas", IniRead("ControlTiempos.ini", "CONFIG", "tareas", "") & "," & $texto3)
GUICtrlSetData($Button1, _Iif(GUICtrlRead($Button1, 1) = "&Activar", "Activado", "&Activar"))
MsgBox(0, "Gestión de Clientes", $cliente & " " & $concepto & " " & $tarea & " está activado", 5)
ExitLoop
Case $Button2
$cliente = "FIN"
ExitLoop
Case $Button3
Local $aResult, $iRows, $iColumns, $iRval
$iRval = _SQLite_GetTable2d(-1, "SELECT * FROM movimientos;", $aResult, $iRows, $iColumns)
If $iRval = $SQLITE_OK Then
_SQLite_Display2DResult($aResult)
_ArrayDisplay($aResult)
Else
MsgBox(16, "SQLite Error: " & $iRval, _SQLite_ErrMsg())
EndIf
EndSwitch
WEnd
GUIDelete()
Return
EndFunc ;==>Interface
Func GrabarMovi()
$grabando = $cliente & "," & $tarea & "," & $concepto & "," & String(Int($segundos / 60) & ":" & $segundos - (Int($segundos / 60) * 60) & "," & $segundos)
FileWrite(@ScriptDir & "\movimientos.txt", @HOUR & ":" & @MIN & ":" & @SEC & "," & $grabando)
_SQLite_Exec(-1, "Insert into movimientos(hora,cliente,concepto,tarea,segundos) VALUES ('" & @HOUR & ":" & @MIN & ":" & @SEC & "','" & $cliente & "','" & $concepto & "','" & $tarea & "'," & $segundos & ");")
_FileWriteLog(@ScriptDir & "\milog.txt", "," & $grabando & "," & "GRABA")
EndFunc ;==>GrabarMovi
Func Salir()
_SQLite_Close()
_SQLite_Shutdown()
Exit
EndFunc ;==>Salir
Los datos de los ficheros se pueden abrir/importar en una hoja de calculo y ordenarlos o gestionarlos por fechas o por clientes, etc...
Salu22:)