Index: openacs-4/packages/dotlrn-ecommerce/www/ecommerce/shopping-cart-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/ecommerce/shopping-cart-add.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/dotlrn-ecommerce/www/ecommerce/shopping-cart-add.tcl 25 Jul 2005 13:25:36 -0000 1.7 +++ openacs-4/packages/dotlrn-ecommerce/www/ecommerce/shopping-cart-add.tcl 25 Jul 2005 18:19:21 -0000 1.8 @@ -68,106 +68,103 @@ if { $member_state != "approved" && $member_state != "waitinglist approved" && - $member_state != "payment received" } { + $member_state != "payment received" && + ($override_p == 0 || $admin_p == 0) + } { # FIRST check if the section is full # and if prerequisites are met # Is section full? - if { $member_state != "waitinglist approved" } { - set available_slots [dotlrn_ecommerce::section::available_slots $section_id] - ns_log notice "DEBUG:: $available_slots available slots, override $override_p, admin $admin_p" + set available_slots [dotlrn_ecommerce::section::available_slots $section_id] - if { $available_slots == 0 && ( $override_p != 1 || $admin_p == 0 ) } { - # No more slots left, ask user if he wants to go to - # waiting list - - if { $admin_p && $user_id != [ad_conn user_id] } { - set return_url [export_vars -base ../admin/process-purchase-course { user_id }] - } else { - set return_url [apm_package_url_from_key dotlrn-ecommerce]application-confirm - } - ad_returnredirect [export_vars -base waiting-list-confirm { product_id user_id participant_id return_url }] - ad_script_abort + if { $available_slots == 0 } { + # No more slots left, ask user if he wants to go to + # waiting list + + if { $admin_p && $user_id != [ad_conn user_id] } { + set cancel_url [set return_url [export_vars -base ../admin/process-purchase-course { user_id }]] + } else { + set return_url [apm_package_url_from_key dotlrn-ecommerce]application-confirm + set cancel_url .. } + ad_returnredirect [export_vars -base waiting-list-confirm { product_id user_id participant_id return_url cancel_url }] + ad_script_abort } # Are prerequisites met? - if { $member_state != "request approved" } { - ns_log notice "DEBUG:: checking prerequisites" - set prereq_not_met 0 - db_foreach prereqs { - select m.tree_id, m.user_field, s.community_id - from dotlrn_ecommerce_prereqs p, - dotlrn_ecommerce_prereq_map m, - dotlrn_ecommerce_section s - where p.tree_id = m.tree_id - and p.section_id = s.section_id - and s.section_id = :section_id - } { - set section_prereqs [db_list section_prereqs { - select category_id - from category_object_map_tree - where tree_id = :tree_id - and object_id = :community_id - }] + ns_log notice "DEBUG:: checking prerequisites" + set prereq_not_met 0 + db_foreach prereqs { + select m.tree_id, m.user_field, s.community_id + from dotlrn_ecommerce_prereqs p, + dotlrn_ecommerce_prereq_map m, + dotlrn_ecommerce_section s + where p.tree_id = m.tree_id + and p.section_id = s.section_id + and s.section_id = :section_id + } { + set section_prereqs [db_list section_prereqs { + select category_id + from category_object_map_tree + where tree_id = :tree_id + and object_id = :community_id + }] - set user_prereqs [db_list participant_prereqs { - select category_id - from category_object_map_tree - where tree_id = :tree_id - and object_id = :participant_id - }] + set user_prereqs [db_list participant_prereqs { + select category_id + from category_object_map_tree + where tree_id = :tree_id + and object_id = :participant_id + }] - # Check if prereq is met - if { [llength $user_prereqs] > 0 } { - foreach user_prereq $user_prereqs { - if { [llength $section_prereqs] > 0 && [lsearch $section_prereqs $user_prereq] == -1 } { - # Prereq not met - incr prereq_not_met - } + # Check if prereq is met + if { [llength $user_prereqs] > 0 } { + foreach user_prereq $user_prereqs { + if { [llength $section_prereqs] > 0 && [lsearch $section_prereqs $user_prereq] == -1 } { + # Prereq not met + incr prereq_not_met } - } else { - incr prereq_not_met } + } else { + incr prereq_not_met } + } - if { $prereq_not_met > 0 } { - ns_log notice "DEBUG:: prerequisites not met" - if { $admin_p && $user_id != [ad_conn user_id] } { - set return_url [export_vars -base ../admin/process-purchase-course { user_id }] - } else { - set return_url [apm_package_url_from_key dotlrn-ecommerce]application-confirm - } - ad_returnredirect [export_vars -base prerequisite-confirm { product_id user_id participant_id return_url }] - ad_script_abort + if { $prereq_not_met > 0 } { + ns_log notice "DEBUG:: prerequisites not met" + if { $admin_p && $user_id != [ad_conn user_id] } { + set cancel_url [set return_url [export_vars -base ../admin/process-purchase-course { user_id }]] + } else { + set return_url [apm_package_url_from_key dotlrn-ecommerce]application-confirm + set cancel_url .. } + ad_returnredirect [export_vars -base prerequisite-confirm { product_id user_id participant_id return_url cancel_url }] + ad_script_abort } # Check application assessment - if { $member_state != "payment received" } { - if { [db_0or1row get_assessment { - select c.assessment_id + if { [db_0or1row get_assessment { + select c.assessment_id - from dotlrn_ecommerce_section s, - dotlrn_catalogi c, - cr_items i + from dotlrn_ecommerce_section s, + dotlrn_catalogi c, + cr_items i - where s.course_id = c.item_id - and c.item_id = i.item_id - and i.live_revision = c.course_id - and s.product_id = :product_id + where s.course_id = c.item_id + and c.item_id = i.item_id + and i.live_revision = c.course_id + and s.product_id = :product_id - limit 1 - }] } { - if { ! [empty_string_p $assessment_id] && $assessment_id != -1 } { - set return_url [ad_conn package_url]application-confirm - ad_returnredirect [export_vars -base application-request { participant_id community_id {next_url $return_url} { type payment } }] - ad_script_abort - - } + limit 1 + }] } { + if { ! [empty_string_p $assessment_id] && $assessment_id != -1 } { + set return_url [ad_conn package_url]application-confirm + ad_returnredirect [export_vars -base application-request { participant_id community_id {next_url $return_url} { type payment } }] + ad_script_abort + } - } + } } }