Skip to content

Commit

Permalink
version 2.5 Beta with billing
Browse files Browse the repository at this point in the history
  • Loading branch information
joedanz committed Jan 16, 2009
1 parent 0b8ecd5 commit 4aec6ec
Show file tree
Hide file tree
Showing 40 changed files with 867 additions and 687 deletions.
76 changes: 76 additions & 0 deletions admin/billRates.cfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<cfsetting enablecfoutputonly="true">

<cfset client = application.client.get(url.c)>
<cfset rates = application.client.getRates(url.c)>

<!--- Loads header/footer --->
<cfmodule template="#application.settings.mapping#/tags/layout.cfm" templatename="main" title="#application.settings.app_title# &raquo; Admin &raquo; Clients &raquo; Bill Rates">

<cfoutput>
<div id="container">
<!--- left column --->
<div class="left">
<div class="main">

<div class="header" style="margin-bottom:0;">
<h2 class="admin">Administration</h2>
</div>
<ul class="submenu mb15">
<cfinclude template="menu.cfm">
</ul>
<div class="content">
<div class="wrapper">
<h3>#client.name# &raquo; Billing Rates</h3>

<cfif rates.recordCount>
<ul id="client_rates" class="mt15 ml40">
<cfloop query="rates">
<li id="r#rateID#">#category# - #DollarFormat(rate)#/hr&nbsp;<cfif numLines eq 0> <a href="##" class="x" onclick="delete_client_rate('#rateID#');return false;"></a><cfelse> <span class="sm g">(#numLines# time tracking item<cfif numLines gt 1>s</cfif>)</span></cfif></li>
</cfloop>
</ul>
<cfelse>
<div class="alert mt15 b r i">There are no billing rates set for this client.</div>
</cfif>

<br /><a href="##" class="b add" onclick="$('##add').slideDown();return false;">Add New Billing Category</a><br />
<form class="frm" id="add" style="display:none;">
<table class="input2 mt10">
<thead>
<tr>
<th>Category</th>
<th>Rate</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="category" id="category" class="short" /></td>
<td><input type="text" name="rate" id="rate" class="tiny" /></td>
<td><input type="button" class="button2" value="Add" onclick="add_client_rate('#url.c#');" /> or <a href="##" onclick="$('##add').slideUp();return false;">Cancel</a></td>
</tr>
</tbody>
</table>
</form>

<br /><a href="clients.cfm" class="b back">Return to Clients</a>
</div>
</div>

</div>
<div class="bottom">&nbsp;</div>
<div class="footer">
<cfinclude template="#application.settings.mapping#/footer.cfm">
</div>
</div>

<!--- right column --->
<div class="right">
<cfinclude template="rightmenu.cfm">
</div>

</div>
</cfoutput>

</cfmodule>

<cfsetting enablecfoutputonly="false">
4 changes: 3 additions & 1 deletion admin/clients.cfm
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
<th>Contact Name</th>
<th class="tac">Projects</th>
<th class="tac">Active</th>
<th class="tac">Billing</th>
<th class="tac">Edit</th>
</tr>
<cfloop query="clients">
Expand All @@ -37,8 +38,9 @@
<td>#contactName#</td>
<td class="tac">#NumberFormat(numProjects)#</td>
<td class="tac"><img src="../images/<cfif active>close<cfelse>cancel</cfif>.gif" height="16" width="16" border="0" alt="#YesNoFormat(active)#" /></td>
<td class="tac"><a href="billRates.cfm?c=#clientid#">rates</a></td>
<td class="tac"><a href="editClient.cfm?c=#clientid#">edit</a></td>
</tr>
</tr>
</cfloop>
</table>
<cfelse>
Expand Down
16 changes: 14 additions & 2 deletions admin/editClient.cfm
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
<cfif not compare(variables.errors,'')>
<cfswitch expression="#form.submit#">
<cfcase value="Add Client">
<cfset application.client.add(form.name,form.address,form.city,form.locality,form.country,form.postal,form.phone,form.fax,form.contactName,form.contactPhone,form.notes,form.active)>
<cfset application.client.add(form.name,form.address,form.city,form.locality,form.country,form.postal,form.phone,form.fax,form.contactName,form.contactPhone,form.contactEmail,form.website,form.notes,form.active)>
</cfcase>
<cfcase value="Update Client">
<cfset application.client.update(form.clientID,form.name,form.address,form.city,form.locality,form.country,form.postal,form.phone,form.fax,form.contactName,form.contactPhone,form.notes,form.active)>
<cfset application.client.update(form.clientID,form.name,form.address,form.city,form.locality,form.country,form.postal,form.phone,form.fax,form.contactName,form.contactPhone,form.contactEmail,form.website,form.notes,form.active)>
</cfcase>
</cfswitch>
<cflocation url="clients.cfm" addtoken="false">
Expand All @@ -32,6 +32,8 @@
<cfparam name="form.fax" default="">
<cfparam name="form.contactName" default="">
<cfparam name="form.contactPhone" default="">
<cfparam name="form.contactEmail" default="">
<cfparam name="form.website" default="">
<cfparam name="form.notes" default="">
<cfparam name="form.active" default="1">

Expand All @@ -47,6 +49,8 @@
<cfset form.fax = client.fax>
<cfset form.contactName = client.contactName>
<cfset form.contactPhone = client.contactPhone>
<cfset form.contactEmail = client.contactEmail>
<cfset form.website = client.website>
<cfset form.notes = client.notes>
<cfset form.active = client.active>
</cfif>
Expand Down Expand Up @@ -122,6 +126,14 @@
<input type="text" name="contactPhone" id="contactPhone" value="#HTMLEditFormat(form.contactPhone)#" maxlength="40" class="shorter" />
</p>
<p>
<label for="contactEmail">Contact Email:</label>
<input type="text" name="contactEmail" id="contactEmail" value="#HTMLEditFormat(form.contactEmail)#" size="35" class="short" />
</p>
<p>
<label for="website">Website:</label>
<input type="text" name="website" id="website" value="#HTMLEditFormat(form.website)#" size="35" class="short" />
</p>
<p>
<label for="notes">Notes:</label>
<textarea name="notes" id="notes" class="short">#HTMLEditFormat(form.notes)#</textarea>
</p>
Expand Down
2 changes: 1 addition & 1 deletion admin/menu.cfm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<li><a href="users.cfm"<cfif findNoCase('/admin/users.cfm',cgi.script_name) or findNoCase('/admin/editUser.cfm',cgi.script_name)> class="current"</cfif>>Users</a></li>
<li><a href="projects.cfm"<cfif findNoCase('/admin/projects.cfm',cgi.script_name)> class="current"</cfif>>Projects</a></li>
<li><a href="clients.cfm"<cfif findNoCase('/admin/clients.cfm',cgi.script_name) or findNoCase('/admin/editClient.cfm',cgi.script_name)> class="current"</cfif>>Clients</a></li>
<li><a href="clients.cfm"<cfif findNoCase('/admin/clients.cfm',cgi.script_name) or findNoCase('/admin/editClient.cfm',cgi.script_name) or findNoCase('/admin/billRates.cfm',cgi.script_name)> class="current"</cfif>>Clients</a></li>
<li><a href="carriers.cfm"<cfif findNoCase('/admin/carriers.cfm',cgi.script_name) or findNoCase('/admin/editCarrier.cfm',cgi.script_name)> class="current"</cfif>>SMS Carriers</a></li>
<li><a href="notifications.cfm"<cfif findNoCase('/admin/notifications.cfm',cgi.script_name)> class="current"</cfif>>Notifications</a></li>
<li><a href="settings.cfm"<cfif findNoCase('/admin/settings.cfm',cgi.script_name)> class="current"</cfif>>Settings</a></li>
Expand Down
22 changes: 22 additions & 0 deletions ajax/client_rate.cfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<cfsetting enablecfoutputonly="true" showdebugoutput="false">

<cfswitch expression="#url.a#">
<cfcase value="add">
<cfset newID = createUUID()>
<cfset application.client.addRate(newID,url.c,url.cat,url.r)>
<cfset rates = application.client.getRates(url.c)>
<cfoutput query="rates">
<li id="r#rateID#"<cfif not compare(newID,rateID)> class="cur_rate"</cfif>>#category# - #DollarFormat(rate)#/hr&nbsp;<cfif numLines eq 0> <a href="##" class="x" onclick="delete_client_rate('#rateID#');return false;"></a><cfelse> <small class="g">(#numLines# time tracking items)</small></cfif></li>
</cfoutput>
<cfoutput>
<script type="text/javascript">
$('.cur_rate').animate({backgroundColor:'##ffffb7'},200).animate({backgroundColor:'##fff'},2000);
</script>
</cfoutput>
</cfcase>
<cfcase value="delete">
<cfset application.client.deleteRate(url.r)>
</cfcase>
</cfswitch>

<cfsetting enablecfoutputonly="false">
12 changes: 10 additions & 2 deletions ajax/proj_users.cfm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<cfsetting enablecfoutputonly="true" showdebugoutput="false">

<cfif StructKeyExists(url,"a")>
<cfset application.role.add(url.p,url.e,url.a,url.f,url.i,url.m,url.ms,url.t,url.tt,url.s)>
<cfset application.role.add(url.p,url.e,url.a,url.f,url.i,url.m,url.ms,url.t,url.tt,url.b,url.s)>
<cfset thread = CreateObject("java", "java.lang.Thread")>
<cfset thread.sleep(250)>
<cfelseif StructKeyExists(form,"addnew")>
Expand All @@ -11,7 +11,7 @@
<cfelse>
<cfset newID = createUUID()>
<cfset application.user.create(newID,form.fn,form.ln,form.e,form.ph,form.un,form.pw,form.adm)>
<cfset application.role.add(form.p,newID,form.a,form.f,form.i,form.m,form.ms,form.t,form.tt,form.s)>
<cfset application.role.add(form.p,newID,form.a,form.f,form.i,form.m,form.ms,form.t,form.tt,form.b,form.s)>
<cfset thread = CreateObject("java", "java.lang.Thread")>
<cfset thread.sleep(250)>
</cfif>
Expand Down Expand Up @@ -67,6 +67,7 @@
<th class="tac">Milestones</th>
<th class="tac">To-Dos</th>
<th class="tac">Time Tracking</th>
<th class="tac">Billing</th>
<th class="tac">SVN</th>
<th rowspan="2" class="tac"><input type="button" value="Save" class="button" onclick="save_permissions('#url.p#','#userid#','#replace(userid,'-','','ALL')#')" /></th>
</tr>
Expand Down Expand Up @@ -114,6 +115,13 @@
<option value="0"<cfif timetrack eq 0> selected="selected"</cfif>>None</option>
</select>
</td>
<td class="tac">
<select name="billing" onchange="if (this.selectedIndex > 0) $('##a_#replace(url.p,'-','','ALL')#').attr('checked','');" id="b_#replace(userid,'-','','ALL')#">
<option value="2"<cfif timetrack eq 2> selected="selected"</cfif>>Full Access</option>
<option value="1"<cfif timetrack eq 1> selected="selected"</cfif>>Read-Only</option>
<option value="0"<cfif timetrack eq 0> selected="selected"</cfif>>None</option>
</select>
</td>
<td class="tac"><input type="checkbox" name="svn" id="s_#replace(userid,'-','','ALL')#" value="1" id="p_#replace(url.p,'-','','ALL')#" class="cb" onchange="if (this.checked == false) $('##a_#replace(url.p,'-','','ALL')#').attr('checked','');"<cfif svn> checked="checked"</cfif> /></td>
</table>
</div>
Expand Down
14 changes: 11 additions & 3 deletions ajax/timetrack.cfm
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
<cfswitch expression="#url.act#">
<cfcase value="add">
<cfset url.tt = createUUID()>
<cfset application.timetrack.add(url.tt,url.p,url.u,url.t,url.h,url.d)>
<cfset application.timetrack.add(timetrackID=url.tt,projectID=url.p,userID=url.u,dateStamp=url.t,hours=url.h,description=url.d,rateID=url.r)>
</cfcase>
<cfcase value="update">
<cfset application.timetrack.update(url.tt,url.p,url.u,url.t,url.h,url.d)>
<cfset application.timetrack.update(url.tt,url.p,url.u,url.t,url.h,url.d,url.r)>
</cfcase>
<cfcase value="delete">
<cfset application.timetrack.delete(url.tt)>
Expand All @@ -15,14 +15,22 @@

<cfset timeline = application.timetrack.get(url.tt)>
<cfset totalhours = application.timetrack.countHours(url.p)>
<cfif session.user.admin>
<cfset project = application.project.get(projectID=url.p)>
<cfelse>
<cfset project = application.project.get(session.user.userid,url.p)>
</cfif>

<cfoutput>
<tr id="r#replace(timeline.timetrackid,'-','','ALL')#">
<td class="first">#DateFormat(timeline.dateStamp,"mmm d, yyyy")#</td>
<td>#timeline.firstName# #timeline.lastName#</td>
<td class="b">#numberFormat(timeline.hours,"0.00")#</td>
<cfif project.tab_billing and project.billing gt 0>
<td>#timeline.category#</td>
</cfif>
<td><cfif compare(timeline.itemType,'')><span class="catbox #timeline.itemtype#">#timeline.itemtype#</span> <a href="todos.cfm?p=#timeline.projectID###id_#replace(timeline.todolistID,'-','','all')#">#timeline.task#</a><cfif compare(timeline.description,'')> - </cfif></cfif>#timeline.description#</td>
<td class="tac"><a href="##" onclick="edit_time_row('#timeline.projectid#','#timeline.timetrackid#','#replace(timeline.timetrackid,'-','','ALL')#')">Edit</a> &nbsp;&nbsp; <a href="##" onclick="delete_time('#timeline.projectID#','#timeline.timetrackID#','#replace(timeline.timetrackid,'-','','ALL')#');" class="delete"></a></td>
<td class="tac"><a href="##" onclick="edit_time_row('#timeline.projectid#','#timeline.timetrackid#','#replace(timeline.timetrackid,'-','','ALL')#','#project.tab_billing#','#project.billing#','#project.clientID#')">Edit</a> &nbsp;&nbsp; <a href="##" onclick="delete_time('#timeline.projectID#','#timeline.timetrackID#','#replace(timeline.timetrackid,'-','','ALL')#');" class="delete"></a></td>
</tr>
<cfif compare(url.act,'cancel')>
<script type="text/javascript">
Expand Down
14 changes: 14 additions & 0 deletions ajax/timetrack_edit.cfm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@
</select>
</td>
<td><input type="text" name="hours" id="hrs#replace(timeline.timetrackid,'-','','ALL')#" value="#numberFormat(timeline.hours,"0.00")#" class="tiny" /></td>
<cfif url.tb and url.b eq 2>
<cfset rates = application.client.getRates(url.c)>
<cfset thisRateID = timeline.rateID>
<td>
<select name="rateID" id="rateID#replace(timeline.timetrackid,'-','','ALL')#">
<option value="">None</option>
<cfloop query="rates">
<option value="#rateID#"<cfif not compare(thisRateID,rateID)> selected="selected"</cfif>>#category# (#DollarFormat(rate)#)</option>
</cfloop>
</select>
</td>
<cfelse>
<input type="hidden" name="rateID" id="rateID" value="">
</cfif>
<td><input type="text" name="description" id="desc#replace(timeline.timetrackid,'-','','ALL')#" value="#timeline.description#" class="short" /></td>
<td class="tac"><input type="submit" value="Save" onclick="save_time_edit('#timeline.projectID#','#timeline.timetrackID#','#replace(timeline.timetrackid,'-','','ALL')#');" /> or <a href="##" onclick="cancel_time_edit('#timeline.projectID#','#timeline.timetrackID#','#replace(timeline.timetrackid,'-','','ALL')#');return false;">Cancel</a></td>
</tr>
Expand Down
2 changes: 1 addition & 1 deletion ajax/user_permissions.cfm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<cfsetting enablecfoutputonly="true" showdebugoutput="false">

<cfset application.project.setUserPermissions(url.p,url.u,url.a,url.f,url.i,url.m,url.ms,url.t,url.tt,url.s)>
<cfset application.project.setUserPermissions(url.p,url.u,url.a,url.f,url.i,url.m,url.ms,url.t,url.tt,url.b,url.s)>

<cfsetting enablecfoutputonly="false">
Loading

0 comments on commit 4aec6ec

Please sign in to comment.