AutoHotkey Community

It is currently May 27th, 2012, 10:16 am

All times are UTC [ DST ]




Post new topic Reply to topic  [ 4 posts ] 
Author Message
PostPosted: May 25th, 2007, 1:50 am 
Offline

Joined: March 11th, 2007, 9:11 am
Posts: 13
Location: Scenic Oregon Coast
I would like to share a simple TimeClock script I wrote, that logs the start time and relevant information to aid in billing. The time keeping applications I found for sale on the internet did not provide for detailed time keeping and reporting. With the detail in the timeclock file, I can analyze and report time spent on projects, and provide detailed billings to clients. When working as a consultant, I found the detailed time billing allays any fears about padding time and provides accountability.

I would like to encourage a collaboration to enhance this script as well. One enhancement that I have not yet been able to manage is the ability to add previous project information as a drop down or pop up to aid the user in entering the project to be billed and make it easier to switch back and forth between existing projects.

I am relatively new to AutoHotKey, but already a great proponent. Feel free to suggest better ways to accomplish what I have written, as I have found this forum to be full of friendly and helpful people that try to encourage new users.

I keep my scripts in a folder C:\Scripts, and this script uses a TimeClock sub-folder and a few .ini files to store important information. The start time is stored in a file, so timekeeping can be resumed after a crash or reboot.

I tried to do a thorough search or this forum for timekeeping scripts, and hope this script offering something worthwhile to other users. I have already shared what I have with other users in my trade, and they have found it worth using for their businesses as well.

Thanks to Garry for the running time indicator script that I have used to provide the active indicator at the top of the screen. I hope I have provided the proper acknowledgment in my header comments for the use of his code. Any tips on this sort of etiquette are welcome.

Thanks in advance for your contributions to enhancements, Kirk

Code:
;
; AutoHotkey Version: 1.0.46.09
; Language:       English
; Platform:       Windows XP
; Author:         WoodWorks <script@kelseywoodworks.com>
; No warrantees are expressed or implied as to the reliability or suitability of this script.  Use at your own Risk!
;
;
; TimeClock v1.0  (3/18/2007):
; Simple Time logging with Customer and Project Information
; Screen Top Clock courtesy of AutoHotKey posting by garry  http://www.autohotkey.com/forum/topic12125.html
;   
;

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance force  ; Force only one running copy of Script
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
CoordMode, Mouse, Relative
SetTitleMatchMode, 2   ; Match partial title only to allow for different versions of Alibre Design
; SetControlDelay, 30 ; Give the Controls a little more time to take effect for greater reliability (20=Default)


IniRead, Employee, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Employee, %A_Space%
IniRead, Customer, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Customer, %A_Space%
IniRead, Project, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Project, %A_Space%
IniRead, Description, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Description, %A_Space%
IniRead, StartTime, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, StartTime, %A_Space%

TimeClockEntry:
IfEqual, StartTime   ; If NO Start Time, then default to Starting Time Clock
{
   Gui, Destroy
   Gui, Add, Edit, vEmployee x26 y30 w100 h20 , %Employee%
   Gui, Add, Edit, vCustomer x26 y80 w120 h20 , %Customer%
   Gui, Add, Edit, vProject x156 y80 w260 h20 , %Project%
   Gui, Add, Edit, vDescription x26 y130 w390 h20 , %Description%
   Gui, Add, Button, default x156 y20 w120 h30 , &START
   Gui, Add, Button, x296 y20 w120 h30 , STO&P
   Gui, Add, Text, x26 y10 w100 h20 , Employee:
   Gui, Add, Text, x26 y60 w120 h20 , Customer:
   Gui, Add, Text, x156 y60 w260 h20 , Project:
   Gui, Add, Text, x26 y110 w390 h20 +Left, Description:
   Gui, Show, x555 y449 h163 w447, TimeClock
   Return
}
Else   ; Since there is a Start Time, Default to Stopping Time Clock
{
   Gui, Destroy
   Gui, Add, Edit, vEmployee x26 y30 w100 h20 , %Employee%
   Gui, Add, Edit, vCustomer x26 y80 w120 h20 , %Customer%
   Gui, Add, Edit, vProject x156 y80 w260 h20 , %Project%
   Gui, Add, Edit, vDescription x26 y130 w390 h20 , %Description%
   Gui, Add, Button, x156 y20 w120 h30 , &START
   Gui, Add, Button, default x296 y20 w120 h30 , STO&P
   Gui, Add, Text, x26 y10 w100 h20 , Employee:
   Gui, Add, Text, x26 y60 w120 h20 , Customer:
   Gui, Add, Text, x156 y60 w260 h20 , Project:
   Gui, Add, Text, x26 y110 w390 h20 +Left, Description:
   FormatTime, StartDisplay, %StartTime%, yyyy-MM-dd  HH:mm:ss
   Gui, Add, Text, cFF0000 x145 y0 w280 h20 +Center, TimeClock Started at: %StartDisplay%
   Gui, Show, x555 y449 h163 w447, TimeClock
   Return
}

GuiEscape:
GuiClose:
ExitApp

ButtonSTOP:
Gui, Submit
IfEqual, StartTime   ; If StartTime is blank (Not Initialized)
{
MsgBox, 52, TimeClock, No Start Time!  Use Previous Stop Time?
IfMsgBox, No
   ExitApp
Else
   IniRead, StartTime, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, StopTime, %A_Space%
}

StringUpper, Employee, Employee, T
StringUpper, Customer, Customer
;StringUpper, Project, Project, T
;StringUpper, Description, Description, T

IniRead, CustomerName, C:\Scripts\TimeClock\Customers.ini, Customers, %Customer%
IfEqual, CustomerName, ERROR  ; Customer Name NOT Found
{
   InputBox, CustomerName, Customer Entry, Customer Entry  %Customer%  NOT Found!   Enter Customer Name or Cancel., ,500
   IfEqual, ErrorLevel, 0  ; OK was pressed
   {
      IniWrite, %CustomerName%, C:\Scripts\TimeClock\Customers.ini, Customers, %Customer%

      IniRead, ProjectRate, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
      IfEqual, ProjectRate, ERROR  ; Project Rate Entry NOT Found
      {
         InputBox, ProjectRate, Project Entry, Project Entry  %Project%  NOT Found for  %Customer% ! Enter Project RATE($) or Cancel., ,550
         IfEqual, ErrorLevel, 0  ; OK was pressed
         {
            IniWrite, %ProjectRate%, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
         }
         Else
            Goto TimeClockEntry
      }
   }
   Else
   {
      Goto TimeClockEntry
   }
}
Else  ; Customer Entry Found
{
   IniRead, ProjectRate, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
   IfEqual, ProjectRate, ERROR  ; Project Rate Entry NOT Found
   {
      InputBox, ProjectRate, Project Entry, Project Entry  %Project%  NOT Found for  %Customer% !     Enter Project RATE($) or Cancel., ,550
      IfEqual, ErrorLevel, 0  ; OK was pressed
      {
         IniWrite, %ProjectRate%, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
      }
      Else
         Goto TimeClockEntry
   }
}

IniWrite, %Employee%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Employee
IniWrite, %Customer%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Customer
IniWrite, %Project%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Project
IniWrite, %Description%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Description
IniDelete, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, StartTime
SetTimer, RefreshD, Off
FormatTime, StopTime, , yyyyMMddHHmmss
IniWrite, %StopTime%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, StopTime
TimeClockString = %Employee%, %StartTime%, %StopTime%, %Customer%, %Project%, %Description%
FileAppend, %TimeClockString%`r`n, C:\Scripts\TimeClock\%A_YWeek%-TimeClock.csv
ExitApp


ButtonSTART:
Gui, Submit
IfNotEqual, StartTime
{
   MsgBox, 292, TimeClock, Overwrite Existing Start Time?
   IfMsgBox Yes
      Goto, ContinueSTART
   Else
      Goto, ContinueRUNNING
}
ContinueSTART:
IniRead, CustomerName, C:\Scripts\TimeClock\Customers.ini, Customers, %Customer%
IfEqual, CustomerName, ERROR  ; Customer Name NOT Found
{
   InputBox, CustomerName, Customer Entry, Customer Entry  %Customer%  NOT Found!   Enter Customer Name or Cancel., ,500
   IfEqual, ErrorLevel, 0  ; OK was pressed
   {
      IniWrite, %CustomerName%, C:\Scripts\TimeClock\Customers.ini, Customers, %Customer%

      IniRead, ProjectRate, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
      IfEqual, ProjectRate, ERROR  ; Project Rate Entry NOT Found
      {
         InputBox, ProjectRate, Project Entry, Project Entry  %Project%  NOT Found for  %Customer% ! Enter Project RATE($) or Cancel., ,550
         IfEqual, ErrorLevel, 0  ; OK was pressed
         {
            IniWrite, %ProjectRate%, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
         }
         Else
            Goto TimeClockEntry
      }
   }
   Else
   {
      Goto TimeClockEntry
   }
}
Else  ; Customer Entry Found
{
   IniRead, ProjectRate, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
   IfEqual, ProjectRate, ERROR  ; Project Rate Entry NOT Found
   {
      InputBox, ProjectRate, Project Entry, Project Entry  %Project%  NOT Found for  %Customer% !     Enter Project RATE($) or Cancel., ,550
      IfEqual, ErrorLevel, 0  ; OK was pressed
      {
         IniWrite, %ProjectRate%, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
      }
      Else
         Goto TimeClockEntry
   }
}
FormatTime, StartTime, , yyyyMMddHHmmss
StringUpper, Employee, Employee, T
StringUpper, Customer, Customer
;StringUpper, Project, Project, T
;StringUpper, Description, Description, T
IniWrite, %Employee%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Employee
IniWrite, %Customer%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Customer
IniWrite, %Project%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Project
IniWrite, %Description%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, Description
IniWrite, %StartTime%, C:\Scripts\TimeClock\TimeClock.ini, TimeClock, StartTime
ContinueRUNNING:
Gui, Destroy
Gui, +AlwaysOnTop +ToolWindow -SysMenu -Caption
WA=%A_screenwidth%
HA=%A_screenheight%
SX:=(WA*47)/100     ;x-pos
SY:=(WA*.20)/100    ;y-pos
Gui, Color, CCCCCC
Gui, Font, cFF0000 s12 , verdana ;red
;Gui, Font, c000000 s7 , verdana ;black
;Gui, Font, cFFFFFF s7 , verdana  ;white
Gui, Add, Text, vD y0, %A_YYYY%-%A_MM%-%A_DD%  %a_hour%:%a_min%  %Project%
Gui, Show, NoActivate x%SX% y%SY%,uptime
WinSet, TransColor, CCCCCC 255,uptime
SetTimer, RefreshD, 20000
return

RefreshD:
GuiControl, , D, %A_YYYY%-%A_MM%-%A_DD%  %a_hour%:%a_min%  %Project%
Gui, Show, NoActivate x%SX% y%SY%,uptime
return

_________________
WoodWorks
www.kelseywoodworks.com


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: May 25th, 2007, 9:40 am 
Moved from Ask for Help to Scripts & Functions, as it seems to be worth it.
I suggest you post a message in Ask for Help pointing to this topic if you still want collaboration.


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: May 25th, 2007, 4:20 pm 
Offline

Joined: March 11th, 2007, 9:11 am
Posts: 13
Location: Scenic Oregon Coast
I also wanted to include the Timesheet Script as well, which creates an output file, separated by customer and summarized by project, as well as an all inclusive report.

The TimeClock script starts a new data file for each computer calendar week, from Monday thru Sunday. Which is perfect for us independant consultants who often have to work on the weekend to get something to the customer by Monday.

So the Timesheet script outputs the data in the same week timeperiod. I then open the output .csv file in Excel, change the dollar totals column to currency format, select all and format all columns to auto width, and finally make the total hours and amount a larger font so the bookeeper can easily find the total amount owed for this billing.

I also have a timesheet script set up to open the summary total output in Excel, so that a quick review can be made at any time during the week of current hours worked for all customers on all projects.

Code:
;
; AutoHotkey Version: 1.0.46.09
; Language:       English
; Platform:       Windows XP
; Author:         WoodWorks <script@kelseywoodworks.com>
; No warrantees are expressed or implied as to the reliability or suitability of this script.  Use at your own Risk!
;
;
; TimeSheet v1.0  (3/19/2007):
; Read and Process TimeClock data to create Timesheet.
; Customers.ini:  Customer ID=Full Name
; Projects.ini:  ProjectName=HourlyRate
;   
;

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance force  ; Force only one running copy of Script
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
CoordMode, Mouse, Relative
SetTitleMatchMode, 2   ; Match partial title only to allow for different versions of Alibre Design
; SetControlDelay, 30 ; Give the Controls a little more time to take effect for greater reliability (20=Default)


InputBox, WeekIdent, TimeSheet Week Identification, Enter Timesheet Week Identifier:
IfNotExist, C:\Scripts\TimeClock\%WeekIdent%-TimeClock.csv
{
   MsgBox, 16, TimeSheet, %WeekIdent%-Timeclock.csv does NOT Exist!
   ExitApp
}

SubTotalCount = 1   ; Count Number of Projects
SubTotalID%SubTotalCount% = %A_Space%  ; Initialize SubTotal Text Information
CustTotalCount = 1   ; Count Number of Customers
CustTotalID%CustTotalCount% = %A_Space%  ; Initialize Customber Total Text Information

FileDelete, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv
Sleep 250
FileAppend, Customer Name`, Project`, Description`, Weekday`, Start Date`, Start Time`, Stop Date`, Stop Time`, Minutes`, Hours`, Rate($/hour)`, Billing($) `r`n, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv

Loop, read, C:\Scripts\TimeClock\%WeekIdent%-TimeClock.csv   ; Process TimeClock Log file
{
   ; MsgBox ReadLine: %A_LoopReadLine%
   Loop, parse, A_LoopReadLine, CSV  ; Parse TimeClock Line Entry
   {
      IfEqual, A_Index, 1
         Employee = %A_LoopField%
      IfEqual, A_Index, 2
         StartTime = %A_LoopField%
      IfEqual, A_Index, 3
         StopTime = %A_LoopField%
      IfEqual, A_Index, 4
         Customer = %A_LoopField%
      IfEqual, A_Index, 5
         Project = %A_LoopField%
      IfEqual, A_Index, 6
         Description = %A_LoopField%
   }
   ; MsgBox TimeClock: %Employee% %StartTime% %StopTime% %Customer% %Project% %Description%
   
   ; Validate Customer Information
   IniRead, CustomerName, C:\Scripts\TimeClock\Customers.ini, Customers, %Customer%
   IfEqual, CustomerName, ERROR
   {
      InputBox, CustomerName, Customer Entry, Customer Entry  %Customer%  NOT Found!   Enter Customer Name or Cancel., ,500
      IfEqual, ErrorLevel, 0  ; OK was pressed
      {
         IniWrite, %CustomerName%, C:\Scripts\TimeClock\Customers.ini, Customers, %Customer%

         IniRead, ProjectRate, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
         IfEqual, ProjectRate, ERROR
         {
            InputBox, ProjectRate, Project Entry, Project Entry  %Project%  NOT Found for  %Customer% ! Enter Project $ RATE or Cancel., ,550
            IfEqual, ErrorLevel, 0  ; OK was pressed
            {
               IniWrite, %ProjectRate%, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
            }
            Else
               ProjectRate = UNDEFINED
         }
      }
      Else
      {
         CustomerName = UNDEFINED
         ProjectRate = UNDEFINED
      }
   }
   Else
   {
      IniRead, ProjectRate, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
      IfEqual, ProjectRate, ERROR
      {
         InputBox, ProjectRate, Project Entry, Project Entry  %Project%  NOT Found for  %Customer% !     Enter Project RATE($) or Cancel., ,550
         IfEqual, ErrorLevel, 0  ; OK was pressed
         {
            IniWrite, %ProjectRate%, C:\Scripts\TimeClock\Projects.ini, %CustomerName%, %Project%
         }
         Else
            ProjectRate = UNDEFINED
      }
   }

   StringReplace, ProjectID , Project, %A_Space%, , All  ; Create ID by removing all spaces from Project Name
   StringReplace, CustomerID , Customer, %A_Space%, , All  ; Create ID by removing all spaces from Customer Name

   Loop, %SubTotalCount%
   {
      IfEqual, SubTotalID%A_Index%, %CustomerID%%ProjectID%
      {
         Goto SkipSubTotalIncrement
      }
   }

   SubTotalID%SubTotalCount% = %CustomerID%%ProjectID%
   CustomerName%CustomerID%%ProjectID% = %CustomerName%
   Project%CustomerID%%ProjectID% = %Project%
   SubTotalCount++
   SkipSubTotalIncrement:
      
   Loop, %CustTotalCount%
   {
      IfEqual, CustTotalID%A_Index%, %CustomerID%
      {
         Goto SkipCustTotalIncrement
      }
   }

   CustTotalID%CustTotalCount% = %CustomerID%
   CustomerName%CustomerID% = %CustomerName%
   IfNotEqual, CustomerName, Overhead  ; Write to Customer Based Timesheet file if not Overhead Costs
   {
      FileDelete, C:\Scripts\TimeSheets\%WeekIdent%.%CustomerName%-Timesheet.csv
      Sleep 250
      FileAppend, Customer Name`, Project`, Description`, Weekday`, Start Date`, Start Time`, Stop Date`, Stop Time`, Minutes`, Hours`, Rate($/hour)`, Billing($) `r`n, C:\Scripts\TimeSheets\%WeekIdent%.%CustomerName%-Timesheet.csv
   }
   CustTotalCount++
   SkipCustTotalIncrement:
      
   
   TaskTime = %StopTime% ; Set to the Stop Time
   EnvSub, TaskTime, %StartTime%, Minutes  ; Subtract Start Time from the Stop Time set previously
   SetFormat, float, 0.2
   TaskHours := TaskTime / 60
   EnvAdd, TotalHours%CustomerID%%ProjectID%, TaskHours
   EnvAdd, CustomerHours%CustomerID%, TaskHours
   IDTotalHours := TotalHours%CustomerID%%ProjectID%
   TaskBilling := TaskHours * ProjectRate
   EnvAdd, TotalBilling%CustomerID%%ProjectID%, TaskBilling
   EnvAdd, CustomerBilling%CustomerID%, TaskBilling
   IDTotalBilling := TotalBilling%CustomerID%%ProjectID%
   IDCount := SubTotalCount - 1
   CustCount := CustTotalCount - 1
   
   DStartDate := SubStr(StartTime,1,4)"-" SubStr(StartTime,5,2)"-"SubStr(StartTime,7,2)
   DStartTime := SubStr(StartTime,9,2)":" SubStr(StartTime,11,2)
   DStopDate := SubStr(StopTime,1,4)"-" SubStr(StopTime,5,2)"-"SubStr(StopTime,7,2)
   DStopTime := SubStr(StopTime,9,2)":" SubStr(StopTime,11,2)
   
   ; MsgBox, 0, Process-------------------------, Process: %IDCount% %CustomerName% %Project% %StartTime% %StopTime% %TaskTime% %TaskHours% %ProjectRate% %TaskBilling% %IDTotalHours% %IDTotalBilling%

   FormatTime, DOW, %StartTime%, dddd
   FileAppend, %CustomerName%`, %Project%`, %Description%`, %DOW%`, %DStartDate%`, %DStartTime%`, %DStopDate%`, %DStopTime%`, %TaskTime%`, %TaskHours%`, %ProjectRate%`, %TaskBilling% `r`n, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv
   IfNotEqual, CustomerName, Overhead  ; Write to Customer Based Timesheet file if not Overhead Costs
      FileAppend, %CustomerName%`, %Project%`, %Description%`, %DOW%`, %DStartDate%`, %DStartTime%`, %DStopDate%`, %DStopTime%`, %TaskTime%`, %TaskHours%`, %ProjectRate%`, %TaskBilling% `r`n, C:\Scripts\TimeSheets\%WeekIdent%.%CustomerName%-Timesheet.csv

}   

FileAppend, '===== Project Totals ===== `r`n, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv
Loop, %IDCount%
{
   SummaryID := SubTotalID%A_Index%
   SummaryCustomer := CustomerName%SummaryID%
   SummaryProject := Project%SummaryID%
   SetFormat, float, 0.2
   SummaryHours := TotalHours%SummaryID%
   SummaryBilling := TotalBilling%SummaryID%
   ; MsgBox, 0, Summary-------------------------, Summary: %IDCount% %A_Index% %SummaryID% %SummaryCustomer% %SummaryProject% %SummaryHours% %SummaryBilling%
   FileAppend, %SummaryCustomer%`, %SummaryProject%`, (%WeekIdent%)-PROJECT TOTAL`, `, `, `, `, `, `, %SummaryHours%`, `, %SummaryBilling% `r`n, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv
   IfNotEqual, SummaryCustomer, Overhead  ; Write to Customer Based Timesheet file if not Overhead Costs
      FileAppend, %SummaryCustomer%`, %SummaryProject%`, (%WeekIdent%)-PROJECT TOTAL`, `, `, `, `, `, `, %SummaryHours%`, `, %SummaryBilling% `r`n, C:\Scripts\TimeSheets\%WeekIdent%.%SummaryCustomer%-Timesheet.csv
}

FileAppend, '===== Customer Grand Total ===== `r`n, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv
Loop, %CustCount%
{
   SummaryID := CustTotalID%A_Index%
   SummaryCustomer := CustomerName%SummaryID%
   SetFormat, float, 0.2
   SummaryHours := CustomerHours%SummaryID%
   SummaryBilling := CustomerBilling%SummaryID%
   ; MsgBox, 0, Summary-------------------------, Summary: %IDCount% %A_Index% %SummaryID% %SummaryCustomer% %SummaryProject% %SummaryHours% %SummaryBilling%
   FileAppend, %SummaryCustomer%`, `, (%WeekIdent%)-CUSTOMER GRAND TOTAL`, `, `, `, `, `, `, %SummaryHours%`, `, %SummaryBilling% `r`n, C:\Scripts\TimeSheets\%WeekIdent%-Timesheet.csv
   IfNotEqual, SummaryCustomer, Overhead  ; Write to Customer Based Timesheet file if not Overhead Costs
      FileAppend, %SummaryCustomer%`, `, (%WeekIdent%)-CUSTOMER GRAND TOTAL`, `, `, `, `, `, `, %SummaryHours%`, `, %SummaryBilling% `r`n, C:\Scripts\TimeSheets\%WeekIdent%.%SummaryCustomer%-Timesheet.csv
}
; Notify Timesheet Compilation Completion
MsgBox, 0, TimeSheet Compilation, Compilation Complete, 1
ExitApp   

_________________
WoodWorks
www.kelseywoodworks.com


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: November 16th, 2010, 3:49 am 
Offline

Joined: January 22nd, 2007, 11:24 pm
Posts: 206
Location: CO, USA
Hi Kirk,

Are you still working with AHK, I'd love to chat about collaborating on your timesheet ahk to work with my WorkBreak Timer productivity ahk tool.

_________________
Lars


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: specter333, XX0 and 25 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group