Welcome, Guest. Please Login
Tinderbox
  News:
IMPORTANT MESSAGE! This forum has now been replaced by a new forum at http://forum.eastgate.com and no further posting or member registration is allowed. The forum is still accessible via read-only access for reference purposes. If you wish to discuss content here, please use the new forum. N.B. - posting in the new forum requires a fresh registration in the new forum (sorry - member data can't be ported).
  HomeHelpSearchLogin  
 
Pages: 1 2 
Send Topic Print
Time and Expense Tracking (Read 17568 times)
Simon Knight
Full Member
*
Offline



Posts: 80

Time and Expense Tracking
Sep 14th, 2011, 4:17am
 
I run a small business and have to keep track of time worked on various projects for inclusion on my invoices.  At present I am using a relational database written in RealBasic.  The database has a number of tables and relationships:  "Client" has many "Tasks";  "Bookings" may be a time or an expenses and are made against a Task.  At the end of each month an invoice, time sheet and expense sheet is produced for each client and shows the work completed on one or more of the clients Tasks.

My present application needs updating and suffers from some limitations e.g. report generation is a nightmare.  I was going to rebuild the same structure using RunRev but then rediscovered Tinderbox and was wondering if Tinderbox is a suitable environment to implement such an application.  I am attracted to Tinderbox because of the ease of getting at the data instead of having to write complex SQL queries.

I'm thinking of using prototypes for each client/task and each booking type and using drag and drop to allocate a booking record to a task.  Agents could then be used to search for bookings that need to be invoiced and allocate invoice numbers.  I have never looked at report generation from Tinderbox but I would probably start with a text output imported into a word processor.

So I would like to know if you experts think that my idea of using Tinderbox for this task has merit or not?

best wishes

Simon
Back to top
 
 
  IP Logged
Mark Anderson
YaBB Administrator
*
Offline

User - not staff!

Posts: 5689
Southsea, UK
Re: Time and Expense Tracking
Reply #1 - Sep 14th, 2011, 5:41am
 
I'll the the relational database angle to others more au fait with RDBMS but the export, once you have the data, is pretty simple. If you export well-formed, CSS styled, HTML then you can:
  • Print a PDF (or papaer) report from a web browser.
  • Open the HTML in Word, which should pick up the correct styling and allow further editing within Word.
Back to top
 
 

--
Mark Anderson
TB user and Wiki Gardener
aTbRef v6
(TB consulting - email me)
WWW shoantel   IP Logged
Simon Knight
Full Member
*
Offline



Posts: 80

Re: Time and Expense Tracking
Reply #2 - Sep 14th, 2011, 3:04pm
 
Thanks for your input.

Simon
Back to top
 
 
  IP Logged
Simon Knight
Full Member
*
Offline



Posts: 80

Re: Time and Expense Tracking
Reply #3 - Sep 15th, 2011, 3:31am
 
I have been experimenting with various prototypes and agents and seem to be heading in the following direction.  My collection of data will store three types of record : time, expense and milage.  Each project and invoice is a collection of these records.  I propose to create a prototype note for each type and include an attribute (field) to store the task number.  I plan to create a container for each task and this will set the task number of each note as they are added.  These containers may themselves end up in containers based on client and status.  I shall use agents to do calculations and extract notes based on date ranges and client.

One problem I have encountered involves the user (me) over writing good data with bad.  I plan to store task number and name in attributes which as I say are set by an "on Add" action.  the problem arises if the use then changes the data by selecting for example a different task number from the list.  I would like to set some attributes as Read Only unless set by agent/action but there does not seem any way of doing this.  I suspect that Rules may be the way forward on this.

I welcome your thoughts and comments

best wishes
Simon
Back to top
 
 
  IP Logged
Paul Walters
Full Member
*
Offline



Posts: 267

Re: Time and Expense Tracking
Reply #4 - Sep 15th, 2011, 4:42am
 
AFAIK, there's no way to make an attribute read-only.  But, if that attribute isn't shown in the key attributes list for a note, then it's less likely to be inadvertantly changed.  In order to "see" the value, display that attribute's value using $DisplayExpression -- or in a Rule put the value in the $Text, etc.
Back to top
 
 
  IP Logged
Mark Anderson
YaBB Administrator
*
Offline

User - not staff!

Posts: 5689
Southsea, UK
Re: Time and Expense Tracking
Reply #5 - Sep 15th, 2011, 5:36am
 
Notes can be read-only, but individual attributes can't (unless their note is set to be read-only).

If you don't mind what the number is - as long as it's read only - you can use $ID. An item's ID is a 10-digit number that never changes. Be aware that $ID is an intrinsic attribute so for aliases (e.g. in agent work) you'll want to use $ID(original) as opposed to $ID: the former fetches the original's ID, the latter that of the alias.

Though not read-only, another way to get unique numbers is to make your Number-type attribute 'sequential'. TB then allots the next free number (from 1 upwards & without re-using numbers) to each new item. A sequential number is not intrinsic and so is shared by both original and all its aliases. N.B. A sequential number can be modified, as it is not read-only.

I agree with Paul that not displaying, or directly using, an attribute storing the valuable data is probably the way to go. You could use either string or number type attributes. For example, consider a $SourceNo and $jobNo. The first will hold the 'hidden' job number and you'll interact with the latter. Let's assume we only apply job numbers to notes of parameter "Job") - this is simply for the sake of the following example agent:

Query:    $Prototype=="Job"
Agent:    $JobNo = $SourceNo

The agent finds only Job type notes and enforces - each update cycle- that $JobNo is the same value as the note's $Source value. These attributes aren't intrinsic so the original/alias issue doesn't apply compared with the $ID, etc. If $JobNo is edited it will quickly be reset. N.B. If any calculation is made on an edited $JobNo value before it gets reset the wrong value gets used- that's unavoidable.
Back to top
 
« Last Edit: Sep 15th, 2011, 5:38am by Mark Anderson »  

--
Mark Anderson
TB user and Wiki Gardener
aTbRef v6
(TB consulting - email me)
WWW shoantel   IP Logged
Simon Knight
Full Member
*
Offline



Posts: 80

Re: Time and Expense Tracking
Reply #6 - Sep 15th, 2011, 5:58am
 
Hi Paul and Mark,

Thanks for the  help; I have removed all but the essential key attributes from my record type prototypes so proto_TimeRec now only displays the $Date and $HoursWorked.  I am attempting to have a container that sets the project codes.  I have been experimenting with prototypes as a way of setting common data e.g.  If company XYZ pays a day rate of 100 woggle beads then I would like to enter this once and have all the projects use this rate.  I have tried using two prototypes one after the other but setting the second causes the rate attribute to reset to defaults.  I know I can write an agent that sets the value but is  this the most efficient way to do it?  I also have to allow for future changes of rate (probably down to 90 woggle beads per day!) where the new rate does not update older records.  Or should I be looking at containers within parent containers and have the parent container set container wide values - I'm not sure how two nested OnAdd actions operate.
Simon
Back to top
 
 
  IP Logged
Simon Knight
Full Member
*
Offline



Posts: 80

Re: Time and Expense Tracking
Reply #7 - Sep 15th, 2011, 8:16am
 
I have spent the morning "having a play" and have come up with a starting point for my Time and Expense system.   My key learning point is keep it simple; initially I was attempting to capture client details and have them transfer down to tasks, but I realised that it is a simple matter to duplicate an existing task and modify the startup rules.  If a clients rates change all that is needed is for a new task container to be created which is set to the new rate.

I intended posting my tBX file but the forum does not seem to allow it which is a shame.

Next todo is some form of reporting.....

Simon
Back to top
 
 
  IP Logged
Mark Bernstein
YaBB Administrator
*
Offline

designer of
Tinderbox

Posts: 2871
Eastgate Systems, Inc.
Re: Time and Expense Tracking
Reply #8 - Sep 15th, 2011, 11:06am
 
Lots of people use Dropbox to post their Tinderbox documents here. That's probably a nice solution.
Back to top
 
 
WWW   IP Logged
Simon Knight
Full Member
*
Offline



Posts: 80

Re: Time and Expense Tracking
Reply #9 - Sep 16th, 2011, 2:27am
 
Hi Mark,

I have followed your advice and now have a drop box account.  The link to my file is :

http://dl.dropbox.com/u/41900569/TimandExpense%20ExperimentV1%20copy.tbx.zip

Simon
Back to top
 
 
  IP Logged
Mark Anderson
YaBB Administrator
*
Offline

User - not staff!

Posts: 5689
Southsea, UK
Re: Time and Expense Tracking
Reply #10 - Sep 19th, 2011, 7:15am
 
To avoid the need for if !$IsPrototype { tests use $RuleDisabled in the prototype. Also, your code usage if !$IsPrototype { is actually incorrect syntax, as the 'condition' - i.e. the text should be in brackets:

if (!$IsPrototype) {

THe rules you are running are longer than can easily be read in the Rule box of a note's Rename dialog.  In such circumstances use a code note code note to hold edit the action code and the code note's rule to set $Rule for the prototype.

Either way, I'd consider backing off all that rule code into the action of one or more agents, leaving the $Rule free for more note-specific tasks as you may want latter on.

For an app of the scope you're planning, I'd not put everything in a root level map. Better to use a map inside a root level container - i.e. shift everything down one level. I'll skip the essay as to why, short version is you'll find it will find it gives you much more flexibilty as your app grows.

Your TBX has but one task as a root-level item. I'd suggest a 'Tasks' container' to hold it. I'd make a 'proto_Task', based on your existing test task note, and give it an $OnAdd that sets $Prototype="proto_Task". Then each new child of 'Tasks' is a new proto_Task which in turn sets your existing logic.
Back to top
 
 

--
Mark Anderson
TB user and Wiki Gardener
aTbRef v6
(TB consulting - email me)
WWW shoantel   IP Logged
Simon Knight
Full Member
*
Offline



Posts: 80

Re: Time and Expense Tracking
Reply #11 - Sep 19th, 2011, 10:55am
 
Thanks Mark, I will attempt to digest all your suggestions.

Simon
Back to top
 
 
  IP Logged
Jose Belly
Full Member
*
Offline



Posts: 1
5012 San Julio Ave, Santa Barb
Re: Time and Expense Tracking
Reply #12 - Jan 17th, 2012, 12:16am
 
I need an application for a  General Store and, I need to maintain database for the inventory control and invoices. Can Tinderbox help me that?
Back to top
 
 
  IP Logged
Mark Anderson
YaBB Administrator
*
Offline

User - not staff!

Posts: 5689
Southsea, UK
Re: Time and Expense Tracking
Reply #13 - Jan 17th, 2012, 11:59am
 
Sure, for smaller numbers of objects. But for large volumes of data you'll probably find a SQL solution more appropriate. So, Yes, Tinderbox could be used, though likely a standard relational database would make more sense if you've +++ items and/or you need a lot of computational queries.

Anyone out there actually doing this sort of thing?
Back to top
 
 

--
Mark Anderson
TB user and Wiki Gardener
aTbRef v6
(TB consulting - email me)
WWW shoantel   IP Logged
emma01
Full Member
*
Offline



Posts: 2

Re: Time and Expense Tracking
Reply #14 - Nov 10th, 2012, 1:31pm
 
Why dont you think to use some good time and expense tracking software (an automated application) as it will ease most of the cumbersome processes and make tracking projects more faster and accurately.
Back to top
 
 
  IP Logged
Pages: 1 2 
Send Topic Print