X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_pkg.cgi;h=9144c499501745e327c3c173118b8ec751e8765f;hb=5250c44bd7f282c7d782bf0e8349af12376929df;hp=7140ca500f0ae40043047b775dfff2c181f9d8f1;hpb=9406701ac3be0d78e44d661b4a132f5a9da23079;p=freeside.git diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index 7140ca500..9144c4995 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -45,9 +45,11 @@ 'agentnum' => 'Agent', 'setup_fee' => 'Setup fee', 'recur_fee' => 'Recurring fee', + 'discountnum' => 'Offer discounts for longer terms', 'bill_dst_pkgpart' => 'Include line item(s) from package', 'svc_dst_pkgpart' => 'Include services of package', 'report_option' => 'Report classes', + 'fcc_ds0s' => 'Voice-grade eqivalents', }, 'fields' => [ @@ -93,6 +95,7 @@ type => 'selectlayers-select', options => [ keys %plan_labels ], labels => \%plan_labels, + onchange => 'aux_planchanged(what);', }, { field => 'setup_fee', type => 'money', @@ -167,21 +170,48 @@ { field=>'pay_weight', type=>'text', size=>6 }, { field=>'credit_weight', type=>'text', size=>6 }, + ( $conf->exists('cust_pkg-show_fcc_voice_grade_equivalent') + ? ( + { type => 'tablebreak-tr-title', + value => 'FCC Form 477 information', + }, + { field=>'fcc_ds0s', type=>'text', size=>6 }, + ) + : () + ), + { type => 'columnend' }, - { 'type' => $census ? 'tablebreak-tr-title' - : 'hidden', + { 'type' => $report_option ? 'tablebreak-tr-title' + : 'hidden', 'value' => 'Optional report classes', 'field' => 'census_title', }, { 'field' => 'report_option', - 'type' => $census ? 'select-table' : 'hidden', + 'type' => $report_option ? 'select-table' + : 'hidden', 'table' => 'part_pkg_report_option', 'name_col' => 'name', + 'hashref' => { 'disabled' => '' }, 'multiple' => 1, }, + { 'type' => 'tablebreak-tr-title', + 'value' => 'Term discounts', + }, + { 'field' => 'discountnum', + 'type' => 'select-table', + 'table' => 'discount', + 'name_col' => 'name', + 'hashref' => { %$discountnum_hashref }, + #'extra_sql' => 'AND (months IS NOT NULL OR months != 0)', + 'empty_label'=> 'Select discount', + 'm2_label' => 'Offer discounts for longer terms', + 'm2m_method' => 'part_pkg_discount', + 'm2m_dstcol' => 'discountnum', + 'm2_error_callback' => $discount_error_callback, + }, { 'type' => 'tablebreak-tr-title', 'value' => 'Pricing add-ons', @@ -264,7 +294,7 @@ my $sth = dbh->prepare("SELECT COUNT(*) FROM part_pkg_report_option". " WHERE disabled IS NULL OR disabled = '' ") or die dbh->errstr; $sth->execute or die $sth->errstr; -my $census = $sth->fetchrow_arrayref->[0]; +my $report_option = $sth->fetchrow_arrayref->[0]; #XXX # - tr-part_pkg_freq: month_increments_only (from price plans) @@ -340,7 +370,8 @@ my $edit_callback = sub { $recur_disabled = $object->freq ? 0 : 1; - (@agent_type) = map {$_->typenum} qsearch('type_pkgs',{'pkgpart'=>$1}); + (@agent_type) = + map {$_->typenum} qsearch('type_pkgs', { 'pkgpart' => $object->pkgpart } ); my @report_option = (); foreach ($object->options) { @@ -397,6 +428,11 @@ my $clone_callback = sub { $object->disabled('Y'); + } else { #not when cloning... + + (@agent_type) = + map {$_->typenum} qsearch('type_pkgs',{ 'pkgpart' => $object->pkgpart } ); + } %options = $object->options; @@ -407,11 +443,27 @@ my $clone_callback = sub { $recur_disabled = $object->freq ? 0 : 1; }; +my $discount_error_callback = sub { + my( $cgi, $object ) = @_; + map { + if ( /^discountnum(\d+)$/ && + ( my $discountnum = $cgi->param("discountnum$1") ) ) + { + new FS::part_pkg_discount { + 'pkgpart' => $object->pkgpart, + 'discountnum' => $discountnum, + }; + } else { + (); + } + } + $cgi->param; +}; + my $m2_error_callback_maker = sub { my $link_type = shift; #yay closures return sub { my( $cgi, $object ) = @_; - my $num; map { if ( /^${link_type}_dst_pkgpart(\d+)$/ && @@ -466,6 +518,22 @@ my $javascript = <<'END'; } + function aux_planchanged(what) { + + alert('called!'); + var plan = what.options[what.selectedIndex].value; + var table = document.getElementById('TableNumber7') // XXX NOT ROBUST + + if ( plan == 'flat' || plan == 'prorate' || plan == 'subscription' ) { + //table.disabled = false; + table.style.visibility = ''; + } else { + //table.disabled = true; + table.style.visibility = 'hidden'; + } + + } + END @@ -499,7 +567,8 @@ my $html_bottom = sub { # $html .= ' SELECTED' if $freq eq $part_pkg->freq; # $html .= ">$freq{$freq}"; #} - #$html .= ''; + + #$html .= ''; my $href = $plans{$layer}->{'fields'}; my @fields = exists($plans{$layer}->{'fieldorder'}) @@ -508,6 +577,12 @@ my $html_bottom = sub { foreach my $field ( grep $_ !~ /^(setup|recur)_fee$/, @fields ) { + if(!exists($href->{$field})) { + # shouldn't happen + warn "nonexistent part_pkg option: '$field'\n"; + next; + } + $html .= ''. $href->{$field}{'name'}. ''; my $format = sub { shift }; @@ -538,6 +613,10 @@ my $html_bottom = sub { $html .= ' MULTIPLE' if $href->{$field}{'type'} eq 'select_multiple'; $html .= qq! NAME="${layer}__$field">!; + + $html .= '