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.1 -r1.2
--- openacs-4/packages/invoices/lib/offer-items-list.tcl 2 Nov 2005 23:06:42 -0000 1.1
+++ openacs-4/packages/invoices/lib/offer-items-list.tcl 3 Nov 2005 21:09:24 -0000 1.2
@@ -1,4 +1,7 @@
-set optional_unset_list [list offer_items_orderby]
+set optional_param_list [list elements category_filter_clause]
+set optional_unset_list [list offer_items_orderby category_id \
+ customer_id filter_package_id date_range \
+ project_status_id groupby]
foreach optional_unset $optional_unset_list {
if {[info exists $optional_unset]} {
@@ -8,7 +11,17 @@
}
}
-if {![info exist filters_p] } {
+foreach optional_param $optional_param_list {
+ if {![info exists $optional_param]} {
+ set $optional_param {}
+ }
+}
+
+if { [exists_and_not_null date_range] } {
+ set date_range [lc_time_fmt $date_range %y-%m-%d]
+}
+
+if {![info exist filters_p] } {
set filters_p 1
}
@@ -20,47 +33,114 @@
set page_size "25"
}
-if {![info exists package_id]} {
- set package_id [ad_conn package_id]
+if {![info exists invoice_package_id]} {
+ set invoice_package_id [ad_conn package_id]
}
if {![info exists base_url]} {
- set base_url [apm_package_url_from_id $package_id]
+ set base_url [apm_package_url_from_id $invoice_package_id]
}
-foreach optional_param { elements } {
- if {![info exists $optional_param]} {
- set $optional_param {}
- }
+if { ![exists_and_not_null return_url] } {
+ set return_url [ad_return_url]
}
-set user_id [ad_conn user_id]
+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
if { [exists_and_not_null elements] } {
set row_list [list]
foreach element $elements {
- lappend row_list $element
- lappend row_list [list]
+ if { ![string equal $element "categories"] } {
+ lappend row_list $element
+ lappend row_list [list]
+ } else {
+ set categories_p 1
+ }
}
} else {
- set row_list [list item_title {} final_amount {} offer_title {} rebate {} item_id {} offer_item_id {}]
+ set row_list [list item_title {} final_amount {} offer_title {} rebate {} item_id {} offer_item_id {} creation_date {}]
}
# Create the elements for the list template
set elements [list]
-lappend elements item_title [list label "Offer Item Title"]
-lappend elements final_amount [list label "Final Ammount"] \
+# We are going to create the elements for each mapped categories
+if { $categories_p } {
+ set categories [db_list_of_lists get_categories { }]
+
+ set mapped_objects [list]
+ set multirow_extend [list]
+
+ foreach category $categories {
+ set cat_name [lindex $category 0]
+ set cat_id [lindex $category 1]
+
+ lappend multirow_extend category_$cat_id
+ if { [exists_and_not_null category_id] } {
+ set label "$cat_name"
+ append label " (clear)"
+ } else {
+ set label "$cat_name"
+ }
+ lappend elements category_$cat_id [list label $label]
+ lappend row_list category_$cat_id
+ lappend row_list [list]
+ }
+}
+
+lappend elements item_title [list label "Offer Item Title"] \
+ final_amount [list label "Final Ammount"] \
offer_title [list label "Offer Title" \
display_template {
@offer_items.offer_title@
} ] \
- rebate [list label "Rebate"] \
- item_id [list label "item_id"] \
- offer_item_id [list label "offer_item_id"]
+ rebate [list label "Rebate" \
+ display_template {
+ @offer_items.rebate@ %
+ }
+ ] \
+ item_id [list label "Item Id"] \
+ offer_item_id [list label "Offer Item Id"] \
+ creation_date [list label "Creation Date"] \
+ month [list label ""]
+set filters [list 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 }
+ }]
+
+if { [apm_package_installed_p "project-manager"] } {
+ lappend filters project_status_id {
+ label "Project Status Id:"
+ values { [pm::status::project_status_select] }
+ }
+}
+
+set project_status_p 0
+if { [exists_and_not_null project_status_id] } {
+ set project_status_p 1
+}
+
+
+set groupby_values {
+ { "Customer" { { groupby organization_id } { orderby organization_id,desc } } }
+ { "Category" { { groupby category_id } { orderby cateogory_id,desc } } }
+ { "Month" { { groupby month } { orderby time_stamp,desc } } }
+}
+
+
template::list::create \
-name offer_items \
-key offer_item_id \
@@ -70,7 +150,6 @@
-elements $elements \
-orderby_name offer_items_orderby \
-orderby {
- default_value item_id
item_title {
label {Offer Item Title}
orderby_desc { lower(oi.title) desc }
@@ -86,7 +165,13 @@
-page_size $page_size \
-page_flush_p 0 \
-page_query_name "offer_items_paginated" \
- -filters { } \
+ -pass_properties return_url \
+ -groupby {
+ label "Group By"
+ type multivar
+ values $groupby_values
+ } \
+ -filters $filters \
-formats {
normal {
label "[_ invoices.Table]"
@@ -95,6 +180,31 @@
}
}
-db_multirow -extend { final_amount } offer_items offer_items { } {
+# Elements to extend the multirow
+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 "Mapped"
+ }
+ 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] } {
+ switch $project_status_id {
+ "1" {
+ if { ![pm::project::open_p -project_item_id $project_item_id] } {
+ continue
+ }
+ }
+ "2" {
+ if { [pm::project::open_p -project_item_id $project_item_id] } {
+ continue
+ }
+ }
+ }
+ } else {
+ continue
+ }
+ }
}