X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fsvc_dsl.cgi;h=36345b9c57e449fd9263c837f90c259264bca2c0;hp=7493d98b9919df7f73f593aeaccd8ef1a50d570c;hb=b71b1576c68bc40ad26592b354feace37a029f0e;hpb=c58774a70c3326ad2ba5a7a38b174dfbd76a9f78 diff --git a/httemplate/edit/svc_dsl.cgi b/httemplate/edit/svc_dsl.cgi index 7493d98b9..36345b9c5 100644 --- a/httemplate/edit/svc_dsl.cgi +++ b/httemplate/edit/svc_dsl.cgi @@ -1,10 +1,11 @@ <% include( 'elements/svc_Common.html', - 'table' => 'svc_dsl', - 'fields' => \@fields, - 'svc_new_callback' => $new_cb, - 'svc_edit_callback' => $edit_cb, - 'html_foot' => $html_foot, - ) + 'table' => 'svc_dsl', + 'fields' => \@fields, + 'svc_new_callback' => $new_cb, + 'svc_edit_callback' => $edit_cb, + 'svc_error_callback' => $error_cb, + 'html_foot' => $html_foot, + ) %> <%init> @@ -18,110 +19,217 @@ my $ti_fields = FS::svc_dsl->table_info->{'fields'}; my @fields = (); -my $html_foot = sub { - return " +my $html_foot = sub { " "; -}; + +"; }; my $edit_cb = sub { my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields1,$opt) = @_; my @exports = $part_svc->part_export_dsl_pull; die "more than one DSL-pulling export attached to svcpart ".$part_svc->svcpart - if ( scalar(@exports) > 1 ); + if ( scalar(@exports) > 1 ); if ( scalar(@exports) == 1 ) { - my $export = @exports[0]; - if($export->exporttype eq 'ikano') { - @fields = ( 'password', 'monitored', ); - - foreach my $hf ( keys %$ti_fields ) { - push @fields, { - field => $hf, - type => 'hidden', - value => $svc_x->$hf, - } unless ( $hf eq 'password' || $hf eq 'monitored' ); - } - } - # else add any other export-specific stuff here + my $export = @exports[0]; + if($export->exporttype eq 'ikano' && $export->import_mode) { + @fields = (); + } + elsif($export->exporttype eq 'ikano') { + @fields = ( 'password', 'monitored', ); + + if ( $svc_x->vendor_qual_id ) { + push @fields, { field => 'vendor_qual_id', + type => 'hidden', + value => $svc_x->vendor_qual_id, + }; + } else { + push @fields, 'vendor_qual_id'; + } + + foreach my $hf ( + grep { $_ !~ /^(password|monitored|vendor_qual_id)$/ } + keys %$ti_fields + ) { + push @fields, { + field => $hf, + type => 'hidden', + value => $svc_x->$hf, + }; + } + } + # else add any other export-specific stuff here } else { - # XXX allow editing everything + push @fields, qw( first last company phonenum gateway_access_number circuitnum rate_band vpi vci ); } }; my $new_cb = sub { my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields1,$opt) = @_; my @exports = $part_svc->part_export_dsl_pull; - die "more than one DSL-pulling export attached to svcpart ".$part_svc->svcpart - if ( scalar(@exports) > 1 ); + die "more than one DSL-pulling export for svcpart ".$part_svc->svcpart + if ( scalar(@exports) > 1 ); + + if ( scalar(@exports) == 1 ) { + my $export = @exports[0]; + if($export->exporttype eq 'ikano' && $export->import_mode) { + @fields = ( 'vendor_order_id' ); + return; + } + } + + my $cust_main = $cust_pkg->cust_main; + + @fields = ( + { field => 'first', + value => $cust_main->ship_first ? $cust_main->ship_first + : $cust_main->first, + }, + { field => 'last', + value => $cust_main->ship_last ? $cust_main->ship_last + : $cust_main->last, + }, + { field => 'company', + value => $cust_pkg->cust_main->ship_company, + value => $cust_main->ship_company ? $cust_main->ship_company + : $cust_main->company, + }, + ); + + my $vendor_qual_id = ''; + my $qual = ''; + if ( $cgi->param('qualnum') ) { + + $qual = + qsearchs('qual', { 'qualnum' => scalar($cgi->param('qualnum')) } ) + or die 'unknown qualnum'; + + $vendor_qual_id = $qual->vendor_qual_id; + + push @fields, { 'field' => 'qualnum', + 'type' => 'hidden', + 'value' => $qual->qualnum, + }, + { 'field' => 'phonenum', + 'type' => 'fixed', + 'value' => $qual->phonenum, + }; + + } else { + + my $phonenum = $cust_main->ship_daytime ? $cust_main->ship_daytime + : $cust_main->daytime; + $phonenum =~ s/[^0-9]//g; + + push @fields, + { field => 'phonenum', + value => $phonenum, + }; + { field => 'gateway_access_number', + value => '', + }; + + + } if ( scalar(@exports) == 1 ) { - my $cust_main = $cust_pkg->cust_main; - my $defsvctn = $cust_main->ship_daytime ? $cust_main->ship_daytime - : $cust_main->daytime; - $defsvctn =~ s/[^0-9]//g; - - @fields = ( - { field => 'first', - value => $cust_main->ship_first ? $cust_main->ship_first - : $cust_main->first, - }, - { field => 'last', - value => $cust_main->ship_last ? $cust_main->ship_last - : $cust_main->last, - }, - { field => 'company', - value => $cust_pkg->cust_main->ship_company, - value => $cust_main->ship_company ? $cust_main->ship_company - : $cust_main->company, - }, - { field => 'phonenum', - value => $defsvctn, - }, - ); - - my $export = @exports[0]; - if($export->exporttype eq 'ikano') { - my $ddd = $cust_pkg->start_date; - $ddd = time unless $ddd; - - my @addl_fields = ( - { field => 'loop_type', - type => 'select', - options => [ '', '0' ], - labels => { '' => 'Line-share', '0', => 'Standalone' }, - onchange => 'ikano_loop_type_changed', - }, - 'password', - { field => 'isp_chg', type => 'checkbox', }, - 'isp_prev', - 'vendor_qual_id', - { field => 'vendor_order_type', - type => 'hidden', - value => 'NEW' }, - { field => 'desired_due_date', - type => 'fixed', - formatted_value => - time2str($date_format,$ddd), - value => $ddd, - }, - ); - push @fields, @addl_fields; - } - # else add any other export-specific stuff here + my $export = @exports[0]; + if($export->exporttype eq 'ikano') { + my $ddd = $cust_pkg->start_date; + $ddd = time unless $ddd; + + my @quals = $export->quals_by_cust_and_pkg($cust_pkg->cust_main->custnum,$cust_pkg->pkgpart); + my @prequalids; + my %prequal_labels; + foreach my $qual ( @quals ) { + my $prequalid = $qual->vendor_qual_id; + push @prequalids, $prequalid; + $prequal_labels{$prequalid} = "$prequalid - qualification #" + .$qual->qualnum; + } + + if ( $vendor_qual_id ) { + splice @fields, -1, 0, + { field => 'loop_type', + type => 'fixed', + value => ( $qual->phonenum ? '' : '0' ), + formatted_value => ( $qual->phonenum ? 'Line-share' + : 'Standalone' ), + }; + } else { + splice @fields, -1, 0, + { field => 'loop_type', + type => 'select', + options => [ '', '0' ], + labels => { '' => 'Line-share', '0', => 'Standalone' }, + onchange => 'ikano_loop_type_changed', + }; + } + + push @fields, + 'password', + { field => 'isp_chg', type => 'checkbox', value=>'Y', }, + 'isp_prev', + ; + + if ( $vendor_qual_id ) { + push @fields, + { field => 'vendor_qual_id', + type => 'fixed', + value => $vendor_qual_id, + }; + } else { + push @fields, + { field => 'vendor_qual_id', + type => 'select', + options => \@prequalids, + labels => \%prequal_labels, + onchange => 'ikano_vendor_qual_id_changed', + }; + } + + push @fields, + { field => 'vendor_order_type', + type => 'hidden', + value => 'NEW' }, + { field => 'desired_due_date', + type => 'fixed', + formatted_value => + time2str($date_format,$ddd), + value => $ddd, + }, + ; + } + # else add any other export-specific stuff here + + } else { # display non-export and non-Ikano fields + push @fields, qw( rate_band circuitnum vpi vci ); } - else { - # XXX display everything when no exports attached +}; + +my $error_cb = sub { + my( $cgi ) = @_; + #my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields,$opt) = @_; + if ( $cgi->param('svcnum') ) { + &{ $edit_cb }( @_ ); + } else { + &{ $new_cb }( @_ ); } }; +