Index: openacs-4/packages/expenses/expenses.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/expenses.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/expenses.info 31 May 2005 22:07:20 -0000 1.1 @@ -0,0 +1,23 @@ + + + + + Expense + Expenses + f + t + expenses + + + Solution Grove + + + + + + + + + + + Index: openacs-4/packages/expenses/sql/postgresql/expenses-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/sql/postgresql/expenses-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/sql/postgresql/expenses-create.sql 31 May 2005 22:07:20 -0000 1.1 @@ -0,0 +1,141 @@ +-- Create Expense Item Object + +select acs_object_type__create_type ( + 'expense_item', -- content_type + 'Expense Item', -- pretty_name + 'Expense Items', -- pretty_plural + 'acs_object', -- supertype + 'expenses', -- table_name + 'exp_id', -- id_column + null, -- package_name + 'f', -- abstract_p + null, -- type_extension_table + null -- name_method +); + +-- create expenses table +create table expenses ( + exp_id integer constraint exp_id_pk primary key, + exp_expense varchar, + exp_date timestamptz, + exp_amount numeric, + user_id integer references users(user_id), + class_key varchar(100) references dotlrn_classes(class_key), + community_id integer references dotlrn_communities_all(community_id), + package_id integer, + exp_exported boolean default 'f' +); + +-- expenses functions +create or replace function expenses__new ( + integer, -- exp_id + varchar, -- expense + date, -- date + float, -- amount + varchar, -- class_key + integer, -- community_id + integer, -- user_id + integer, -- package_id + varchar -- creation_ip +) returns integer as ' +declare + p_exp_id alias for $1; + p_expense alias for $2; + p_date alias for $3; + p_amount alias for $4; + p_class_key alias for $5; + p_community_id alias for $6; + p_user_id alias for $7; + p_package_id alias for $8; + p_creation_ip alias for $9; + v_exp_id integer; +begin + v_exp_id := acs_object__new( + p_exp_id, + ''expense_item'', + current_timestamp, + p_user_id, + p_creation_ip, + p_package_id + ); + + insert into expenses ( + exp_id, + exp_expense, + exp_date, + exp_amount, + user_id, + class_key, + community_id, + package_id) + values ( + v_exp_id, + p_expense, + p_date, + p_amount, + p_user_id, + p_class_key, + p_community_id, + p_package_id + ); + + PERFORM acs_permission__grant_permission ( + v_exp_id, + -1, + ''read'' + ); + + return v_exp_id; +end; +' language 'plpgsql'; + +create or replace function expenses__update ( + integer, -- exp_id + varchar, -- expense + date, -- date + float, -- amount + varchar, -- class_key + integer, -- community_id + integer -- user_id +) returns integer as ' +declare + p_exp_id alias for $1; + p_expense alias for $2; + p_date alias for $3; + p_amount alias for $4; + p_class_key alias for $5; + p_community_id alias for $6; + p_user_id alias for $7; +begin + + update expenses set + exp_expense = p_expense, + exp_date = p_date, + exp_amount = p_amount, + user_id = p_user_id, + class_key = p_class_key, + community_id = p_community_id + where exp_id = p_exp_id ; + + return p_exp_id; +end; +' language 'plpgsql'; + +-- kb_item delete function +create or replace function expenses__delete ( + integer -- exp_id to delete +) +returns boolean as ' +declare + p_exp_id alias for $1; +begin + delete from expenses where exp_id = p_exp_id; + PERFORM acs_object__delete(p_exp_id); + return true; +end; +' language 'plpgsql'; + + + + + Index: openacs-4/packages/expenses/sql/postgresql/expenses-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/sql/postgresql/expenses-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/sql/postgresql/expenses-drop.sql 31 May 2005 22:07:20 -0000 1.1 @@ -0,0 +1,52 @@ +-- drop related acs_objects + +-- delete all expense item records +create function inline_0 () +returns integer as ' +declare + exp_rec record; +begin + + -- iterate through all entries + for exp_rec in select exp_id from expenses loop + perform expenses__delete( exp_rec.exp_id ); + end loop; + + return 0; +end;' language 'plpgsql'; + +select inline_0(); +drop function inline_0(); + +-- drop exepense table +drop table expenses; + +-- drop functions +drop function expenses__new ( + integer, -- exp_id + varchar, -- expense + date, -- date + float, -- amount + varchar, -- class_key + integer, -- community_id + integer, -- user_id + integer, -- package_id + varchar -- creation_ip +); + +drop function expenses__update ( + integer, -- exp_id + varchar, -- expense + date, -- date + float, -- amount + varchar, -- class_key + integer, -- community_id + integer -- user_id +); + +drop function expenses__delete ( + integer -- exp_id to delete +); + +-- drop acs_object_type +select acs_object_type__drop_type ('expense_item', true); Index: openacs-4/packages/expenses/tcl/apm-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/tcl/apm-callback-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/tcl/apm-callback-procs.tcl 31 May 2005 22:07:20 -0000 1.1 @@ -0,0 +1,19 @@ +ad_library { + + APM Callbacks for Expenses + + @author Hamilton Chua (hamilton.chua@gmail.com) + @creation-date 2005-05-26 + @cvs-id $Id: apm-callback-procs.tcl,v 1.1 2005/05/31 22:07:20 hamiltonc Exp $ +} + +ad_proc -private expenses::package_mount { + -package_id + -node_id +} { + create the category tree for expenses + +} { + set tree_id [category_tree::add -name "expenses"] + category_tree::map -tree_id $tree_id -object_id $package_id +} Index: openacs-4/packages/expenses/tcl/expenses-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/tcl/expenses-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/tcl/expenses-procs.tcl 31 May 2005 22:07:20 -0000 1.1 @@ -0,0 +1,39 @@ +ad_library { + + Expenses procs + + @author Hamilton Chua (hamilton.chua@gmail.com) + @creation-date 2005-05-14 + @cvs-id $Id: expenses-procs.tcl,v 1.1 2005/05/31 22:07:20 hamiltonc Exp $ +} + +namespace eval expenses { + +ad_proc get_package_id { + +} { + HAM (hamilton.chua@gmail.com) + Return package_id of expenses package +} { + return [apm_package_id_from_key expenses] +} + +ad_proc mark_exported { + {-id:required } +} { + HAM (hamilton.chua@gmail.com) + Mark the expense record as exported +} { + db_dml "mark_exported" "update expenses set exp_exported = 't' where exp_id =:id" +} + +ad_proc mark_all_exported { + +} { + HAM (hamilton.chua@gmail.com) + Mark all expense records as exported +} { + db_dml "mark_exported" "update expenses set exp_exported = 't'" +} + +} \ No newline at end of file Index: openacs-4/packages/expenses/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/index.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/index.adp 31 May 2005 22:07:20 -0000 1.1 @@ -0,0 +1,4 @@ + +ExpensesFor admins only. Index: openacs-4/packages/expenses/www/admin/export-confirm.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/export-confirm.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/export-confirm.adp 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,5 @@ + +@title@ +"@title@" + +@content;noquote@ \ No newline at end of file Index: openacs-4/packages/expenses/www/admin/export-confirm.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/export-confirm.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/export-confirm.tcl 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,39 @@ +ad_page_contract { + Confirmation page to export and mark exported + + @author Hamilton Chua (hamilton.chua@gmail.com) + @creation-date 2005-05-16 + @cvs-id $Id: export-confirm.tcl,v 1.1 2005/05/31 22:07:21 hamiltonc Exp $ + +} { + { exp_id:integer,multiple,optional } + { all 0 } + { mark 0 } +} + +set title "Export" +set package_id [ad_conn package_id] +set package_url [apm_package_url_from_id $package_id] +set qstring "" + +set content "

Click the download link to start downloading the exported records in CSV format.

" +set qstring "all=$all&mark=$mark" + +if { [exists_and_not_null exp_id] } { + set exp_id_string [join $exp_id "&exp_id="] + append qstring "&exp_id=$exp_id_string" +} + +#if { $all == 1 } { +# set qstring "all=1&" +#} else { +# if { [exists_and_not_null exp_id] } { +# set exp_id_string [join $exp_id "&exp_id="] +# append qstring "exp_id=$exp_id_string" +# } else { +# ad_return_complaint 1 "You must choose the expenses you wish to export." +# } +#} + +append content "
Download CSV." +append content "
Go back to Expense Tracking Administration." \ No newline at end of file Index: openacs-4/packages/expenses/www/admin/export-expenses.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/export-expenses.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/export-expenses.adp 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,4 @@ + +@title@ + + \ No newline at end of file Index: openacs-4/packages/expenses/www/admin/export-expenses.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/export-expenses.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/export-expenses.tcl 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,80 @@ +ad_page_contract { + + Generate a CSV of the given exp_id + + @author Hamilton Chua (hamilton.chua@gmail.com) + @creation-date 2005-05-14 + @cvs-id $Id: export-expenses.tcl,v 1.1 2005/05/31 22:07:21 hamiltonc Exp $ + +} { + {exp_id:integer,multiple,optional} + {all 0} + {mark 0} +} + +set title "Export Expenses" +set context $title + +# generate list of exp_item_id's for export +if { [exists_and_not_null exp_id] } { + for {set i 0} {$i < [llength $exp_id]} {incr i} { + set id_$i [lindex $exp_id $i] + lappend bind_id_list ":id_$i" + } +} + +# use list template to create list of expenses + +template::list::create \ + -name expenses \ + -multirow expenses \ + -key exp_id \ + -selected_format csv \ + -formats { + csv { output csv } + } -elements { + exp_date { + label "Date" + } + exp_expense { + label "Expense" + } + exp_amount { + label "Amount" + display_template { $ @expenses.exp_amount;noquote@ } + } + class_key { + label "Class" + } + community_id { + label "Community" + } + } + +# build the multirow + +set query "select exp_id, exp_amount, exp_date, exp_expense, user_id, community_id from expenses" + +if { $all == 0 } { + set items_for_export [join $bind_id_list ","] + append query " where exp_id in ( $items_for_export )" + # mark id's as exported only if $mark ==1 + if { $mark == 1 } { + foreach id $exp_id { + expenses::mark_exported -id $id + } + } +} else { + if { $mark == 1 } { + expenses::mark_all_exported + # db_dml "mark_all_exported" "update expenses set exp_exported = 't'" + } +} + + +db_multirow expenses get_expenses $query + +# change headers to output csv +set outputheaders [ns_conn outputheaders] +ns_set cput $outputheaders "Content-Disposition" "attachment; filename=expenses.csv" +template::list::write_output -name expenses Index: openacs-4/packages/expenses/www/admin/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/index.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/index.adp 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,12 @@ + +@title@ + +Administer Expense Codes

+ + + + + +

No expenses have been recorded. + + Index: openacs-4/packages/expenses/www/admin/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/index.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/index.tcl 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,68 @@ +ad_page_contract { + + List line expenses for a given class + + @author Hamilton Chua (hamilton.chua@gmail.com) + @creation-date 2005-05-14 + @cvs-id $Id: index.tcl,v 1.1 2005/05/31 22:07:21 hamiltonc Exp $ + +} { + orderby:optional +} + +set title "Expenses" +set context $title +set package_id [expenses::get_package_id] +set object_id $package_id + +# use list template to create list of expenses + +template::list::create \ + -name expenses \ + -multirow expenses \ + -key exp_id \ + -actions { + "Export All and MARK ALL Transferred" "export-confirm?all=1&mark=1" "Export All Expenses" + "Export All but DO NOT MARK Transferred" "export-confirm?all=1&mark=0" "Export Expenses" + } -elements { + exp_date { + label "Date" + } + exp_expense { + label "Expense" + } + exp_amount { + label "Amount" + aggregate "sum" + aggregate_label "Total : $" + display_template { $ @expenses.exp_amount;noquote@ } + } + course { + label "Course/Section" + } + exp_exported { + label "Exported" + display_template { + + Yes + + + No + + } + } + } -orderby { + exp_date { orderby exp_date } + exp_amount { orderby exp_amount } + } + +# build the multirow + +set orderby_clause "[template::list::orderby_clause -name expenses -orderby]" + +db_multirow -extend {course} expenses get_expenses { } { + # retrieve course/section for this expense + db_0or1row "section_info" "select section_name, course_id from dotlrn_ecommerce_section where community_id =:community_id" + set course_name [db_string "getcoursename" "select course_name from dotlrn_catalog where course_id = (select latest_revision from cr_items where item_id =:course_id)"] + set course "$course_name/$section_name" +} \ No newline at end of file Index: openacs-4/packages/expenses/www/admin/index.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/expenses/www/admin/index.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/expenses/www/admin/index.xql 31 May 2005 22:07:21 -0000 1.1 @@ -0,0 +1,12 @@ + + + + postgresql7.1 + + + + select exp_id, exp_expense, to_char(exp_date,'MM-DD-YYYY') as exp_date, exp_amount, exp_exported, package_id, community_id from expenses $orderby_clause + + + + \ No newline at end of file