X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=httemplate%2Fedit%2Fpart_pkg.cgi;h=3fee36b3629cb4d35b090f55a374d2ee23c9cd3d;hb=4427ad71b12bf27eac2a05d88141a82f9372d03f;hp=7e67c833a6c2f4882fbfb2fe36574cab242495ab;hpb=91dbe4c3834f38d428367d9a1e2c6cf9ea9d84a4;p=freeside.git diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index 7e67c833a..3fee36b36 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -59,6 +59,7 @@ } $conf->config('currencies') ), + 'usagepricepart' => ' ', 'discountnum' => 'Offer discounts for longer terms', 'bill_dst_pkgpart' => 'Include line item(s) from package', 'svc_dst_pkgpart' => 'Include services of package', @@ -245,6 +246,16 @@ { type => 'columnend' }, + { type => 'tablebreak-tr-title', + value => 'Usage pricing add-ons', #better name? just 'Usage pricing' ? there's also CDR usage pricing, RADIUS usage pricing, etc :/ + }, + { 'field' => 'usagepricepart', + 'type' => 'part_pkg_usageprice', + 'o2m_table' => 'part_pkg_usageprice', + 'm2_label' => ' ', + 'm2_error_callback' => $usageprice_error_callback, + }, + { 'type' => $report_option ? 'tablebreak-tr-title' : 'hidden', 'value' => 'Optional report classes', @@ -684,6 +695,28 @@ my $discount_error_callback = sub { $cgi->param; }; +my $usageprice_error_callback = sub { + my( $cgi, $object ) = @_; + map { + if ( /^usagepricepart(\d+)_price$/ + && $cgi->param("usagepricepart$1_price") ) + { + new FS::part_pkg_usageprice { + 'usagepricepart' => $cgi->param("usagepricepart$1"), + 'pkgpart' => $object->pkgpart, + 'price' => scalar($cgi->param("usagepricepart$1_price")), + #'currency + 'action' => scalar($cgi->param("usagepricepart$1_action")), + 'target' => scalar($cgi->param("usagepricepart$1_target")), + 'amount' => scalar($cgi->param("usagepricepart$1_amount")), + }; + } else { + (); + } + } + $cgi->param; +}; + my $m2_error_callback_maker = sub { my $link_type = shift; #yay closures return sub { @@ -773,13 +806,15 @@ my $javascript = <<'END'; var plan = what.options[what.selectedIndex].value; - var term_table = document.getElementById('TableNumber7') // XXX NOT ROBUST + var term_table = document.getElementById('TableNumber8') // XXX NOT ROBUST if ( plan == 'flat' || plan == 'prorate' || plan == 'subscription' ) { //term_table.disabled = false; - term_table.style.visibility = ''; + //term_table.style.visibility = ''; + term_table.style.display = ''; } else { //term_table.disabled = true; - term_table.style.visibility = 'hidden'; + //term_table.style.visibility = 'hidden'; + term_table.style.display = 'none'; } var currency_regex = /^(setup|recur)_fee_[A-Z]{3}$/; @@ -888,11 +923,16 @@ my $html_bottom = sub { foreach my $field ( grep $_ !~ /^(setup|recur)_fee$/, @fields ) { - if(!exists($href->{$field})) { + if(!exists($href->{$field})) { # shouldn't happen warn "nonexistent part_pkg option: '$field'\n"; next; } + if ( exists($href->{$field}->{display_if}) ) { + my %args = ( 'plan' => $layer ); # anything else? + my $display = &{ $href->{$field}->{display_if} }(%args); + next if !$display; + } $html .= ''. $href->{$field}{'name'}. '';