Index: openacs-4/packages/invoices/lib/offer-items-list.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/lib/offer-items-list.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/invoices/lib/offer-items-list.tcl 3 Nov 2005 22:49:12 -0000 1.3
+++ openacs-4/packages/invoices/lib/offer-items-list.tcl 7 Nov 2005 23:10:51 -0000 1.4
@@ -1,6 +1,6 @@
-set optional_param_list [list elements category_filter_clause]
+set optional_param_list [list elements category_filter_clause date_range_start date_range_end]
set optional_unset_list [list offer_items_orderby category_id \
- customer_id filter_package_id date_range \
+ customer_id filter_package_id \
project_status_id groupby]
foreach optional_unset $optional_unset_list {
@@ -17,10 +17,25 @@
}
}
-if { [exists_and_not_null date_range] } {
- catch { set date_range [lc_time_fmt $date_range %y-%m-%d] } errMsg
+set date_range_clause ""
+
+if { [exists_and_not_null date_range_start] } {
+ set date_range 1
+ catch { set date_range_start [lc_time_fmt $date_range_start %y-%m-%d] } errMsg
+ append date_range_clause "to_char(oi.creation_date,'yy-mm-dd') >= :date_range_start"
}
+if { [exists_and_not_null date_range_end] } {
+ set date_range 1
+ catch { set date_range_end [lc_time_fmt $date_range_end %y-%m-%d] } errMsg
+
+ if { [exists_and_not_null date_range_start] } {
+ append date_range_clause " and to_char(oi.creation_date,'yy-mm-dd') <= :date_range_end"
+ } else {
+ append date_range_clause "to_char(oi.creation_date,'yy-mm-dd') <= :date_range_end"
+ }
+}
+
if {![info exist filters_p] } {
set filters_p 1
}
@@ -45,10 +60,6 @@
set return_url [ad_return_url]
}
-if { [exists_and_not_null category_id] } {
- set category_filter_clause "and com.category_id = $category_id"
-}
-
set categories_p 0
# Elements to construnct row_lists
@@ -68,31 +79,71 @@
# Create the elements for the list template
set elements [list]
+set categories_filter [list]
-# We are going to create the elements for each mapped categories
+# We are going to create the elements for each mapped category tree
if { $categories_p } {
- set categories [db_list_of_lists get_categories { }]
+ set categories_trees [db_list_of_lists get_category_trees { }]
set mapped_objects [list]
set multirow_extend [list]
-
- foreach category $categories {
- set cat_name [lindex $category 0]
- set cat_id [lindex $category 1]
+ set tree_ids [list]
+
+ foreach tree $categories_trees {
+ set tree_name [lindex $tree 0]
+ set tree_id [lindex $tree 1]
+
+ lappend tree_ids $tree_id
+ lappend multirow_extend tree_$tree_id
+
+ set label "$tree_name"
- lappend multirow_extend category_$cat_id
- if { [exists_and_not_null category_id] } {
- set label "$cat_name"
- append label " ([_ invoices.clear])"
- } else {
- set label "$cat_name"
- }
- lappend elements category_$cat_id [list label $label]
- lappend row_list category_$cat_id
+ lappend elements tree_$tree_id [list label $label]
+ lappend row_list tree_$tree_id
lappend row_list [list]
}
+ set categories [db_list_of_lists get_categories " "]
+ foreach cat $categories {
+ lappend categories_filter [list [lang::util::localize [lindex $cat 0]] [lindex $cat 1]]
+ }
}
+set aggregate_amount ""
+if { [exists_and_not_null groupby] } {
+ append aggregate_amount "
Aggregate Amount: | |
"
+ foreach cat $categories_filter {
+ set c_name [lindex $cat 0]
+ set c_id [lindex $cat 1]
+ set amount_values [db_list_of_lists get_amount_values { }]
+ set total_amount "0.00"
+ foreach val $amount_values {
+ set ppu [lindex $val 0]
+ set iu [lindex $val 1]
+ set r [lindex $val 2]
+ set amount [expr $ppu * $iu]
+ if { [string equal $r "0.00"] } {
+ set amount [format %.2f $amount]
+ } else {
+ set amount [format %.2f [expr $amount - [expr [expr $r / 100] * $amount]]]
+ }
+ set total_amount [expr $total_amount + $amount]
+ }
+
+ if { [exists_and_not_null category_id] } {
+ if { [string equal $c_id $category_id] } {
+ append aggregate_amount "- $c_name:
| "
+ append aggregate_amount "$total_amount | "
+ append aggregate_amount "
"
+ }
+ } else {
+ append aggregate_amount "- $c_name:
| "
+ append aggregate_amount "$total_amount | "
+ append aggregate_amount "
"
+ }
+ }
+append aggregate_amount ""
+}
+
lappend elements item_title [list label "[_ invoices.Offer_Item_Title]"] \
final_amount [list label "[_ invoices.Final_Amount]"] \
offer_title [list label "[_ invoices.Offer_Title]" \
@@ -109,17 +160,24 @@
creation_date [list label "[_ invoices.Creation_Date]"] \
month [list label ""]
-
-set filters [list category_id { } \
+set filters [list \
+ category_id {
+ label "[_ invoices.Category]"
+ values $categories_filter
+ where_clause { com.category_id = :category_id }
+ } \
filter_package_id {
where_clause { oi.object_package_id = :filter_package_id }
} \
customer_id {
where_clause { o.organization_id = :customer_id}
} \
date_range {
- where_clause { to_char(oi.creation_date,'yy-mm-dd') > :date_range }
- }]
+ where_clause "$date_range_clause"
+ } \
+ date_range_start { } \
+ date_range_end { } \
+ ]
if { [apm_package_installed_p "project-manager"] } {
lappend filters project_status_id {
@@ -135,9 +193,9 @@
set groupby_values {
- { "#invoices.Customer#" { { groupby organization_id } { orderby organization_id,desc } } }
- { "#invoices.Category#" { { groupby category_id } { orderby cateogory_id,desc } } }
- { "#invoices.Month#" { { groupby month } { orderby time_stamp,desc } } }
+ { "#invoices.Customer#" { { groupby org_name } { offer_items_orderby org_name,asc } } }
+ { "#invoices.Category#" { { groupby cat_name } { offer_items_orderby cat_name,asc } } }
+ { "#invoices.Month#" { { groupby month } { offer_items_orderby month,asc } } }
}
@@ -160,6 +218,18 @@
orderby_desc { lower(o.title) desc }
orderby_asc { lower(o.title) asc }
}
+ org_name {
+ label { [_ invoices.Customer] }
+ orderby_asc { org.name asc }
+ }
+ cat_name {
+ label { [_ invoices.Category] }
+ orderby_asc { ob.title asc }
+ }
+ month {
+ label { [_ invoices.Month] }
+ orderby_asc { to_char(oi.creation_date,'mm') asc }
+ }
} \
-html {width 100%} \
-page_size $page_size \
@@ -170,8 +240,7 @@
label "[_ invoices.Group_by]:"
type multivar
values $groupby_values
- } \
- -filters $filters \
+ } -filters $filters \
-formats {
normal {
label "[_ invoices.Table]"
@@ -184,10 +253,16 @@
lappend multirow_extend final_amount
db_multirow -extend $multirow_extend offer_items offer_items { } {
- set final_amount [expr [expr $price_per_unit * $item_units] - [expr $rebate * $price_per_unit * $item_units]]
- if { $categories_p } {
- set category_$category_id "[_ invoices.Mapped]"
+ set amount [expr $price_per_unit * $item_units]
+ if { [string equal $rebate "0.00"] } {
+ set final_amount [format %.2f $amount]
+ } else {
+ set final_amount [format %.2f [expr $amount - [expr [expr $rebate / 100] * $amount]]]
}
+ if { $categories_p && [exists_and_not_null cat_id]} {
+ set tree_id [category::get_tree $cat_id]
+ set tree_$tree_id $cat_name
+ }
set project_item_id [lindex [application_data_link::get_linked -from_object_id $item_id -to_object_type content_item] 0]
if { $project_status_p } {
if { [exists_and_not_null project_item_id] } {