From: levinse Date: Thu, 20 Jan 2011 20:46:30 +0000 (+0000) Subject: Ikano / svc_dsl / qualification improvements, RT7111 X-Git-Tag: freeside_2_3_0~726 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=98779ec47370ad67c716154f67f6a726b83e09ed Ikano / svc_dsl / qualification improvements, RT7111 --- diff --git a/FS/FS/part_export/ikano.pm b/FS/FS/part_export/ikano.pm index fe645e479..5d8285e6b 100644 --- a/FS/FS/part_export/ikano.pm +++ b/FS/FS/part_export/ikano.pm @@ -313,7 +313,7 @@ sub qual { }; } -sub qual_html { +sub qual_result { my($self,$qual) = (shift,shift); my %qual_options = $qual->options; @@ -325,23 +325,52 @@ sub qual_html { && $optionvalue ne '' ); } - # XXX: eventually perhaps this should return both the packages a link to - # order each package and go to the svc prov with the prequal id filled in - # but only if cust, not prospect! - my $list = "Qualifying Packages:"; - $list; + + @filtered_quals; } sub notes_html { diff --git a/FS/FS/qual.pm b/FS/FS/qual.pm index 23a827224..8f5838973 100644 --- a/FS/FS/qual.pm +++ b/FS/FS/qual.pm @@ -141,11 +141,22 @@ sub location { if ( $self->locationnum ) { my $l = qsearchs( 'cust_location', { 'locationnum' => $self->locationnum }); - return $l->location_hash if $l; + if ( $l ) { + my %loc_hash = $l->location_hash; + $loc_hash{locationnum} = $self->locationnum; + return %loc_hash; + } } if ( $self->custnum ) { my $c = qsearchs( 'cust_main', { 'custnum' => $self->custnum }); - return $c->location_hash if $c; + + if($c) { + # always override location_kind as it would never be known in the + # case of cust_main "default service address" + my %loc_hash = $c->location_hash; + $loc_hash{location_kind} = $c->company ? 'B' : 'R'; + return %loc_hash; + } } # prospectnum does not imply any particular address! must specify locationnum diff --git a/httemplate/edit/process/quick-cust_pkg.cgi b/httemplate/edit/process/quick-cust_pkg.cgi index 599f7607c..704d256e6 100644 --- a/httemplate/edit/process/quick-cust_pkg.cgi +++ b/httemplate/edit/process/quick-cust_pkg.cgi @@ -6,12 +6,23 @@ % my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/ % ? '' % : ';show=packages'; +% my $redir_url = popurl(3) +% ."view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag"; +% +% # for going right to a provision service after ordering a package +% if ( $svcpart ) { +% my $part_svc = qsearchs('part_svc', { 'svcpart' => $svcpart } ); +% if ( $part_svc ) { +% $redir_url = popurl(3)."edit/".$part_svc->svcdb.".cgi?" +% ."pkgnum=".$cust_pkg->pkgnum.";svcpart=$svcpart"; +% } +% } <% header('Package ordered') %> @@ -49,6 +60,13 @@ $cgi->param('discountnum') =~ /^(\-?\d*)$/ or die 'illegal discountnum '. $cgi->param('discountnum'); my $discountnum = $1; +# for going right to a provision service after ordering a package +my $svcpart; +if ( $cgi->param('svcpart') ) { + $cgi->param('svcpart') =~ /^(\-?\d*)$/ + or die 'illegal svcpart '. $cgi->param('svcpart'); + $svcpart = $1; +} my $cust_pkg = new FS::cust_pkg { 'custnum' => $custnum, @@ -83,6 +101,6 @@ if ( $locationnum == -1 ) { $opt{'cust_location'} = $cust_location; } -my $error = $cust_main->order_pkg( %opt ); +my $error = $cust_main->order_pkg( \%opt ); diff --git a/httemplate/edit/svc_dsl.cgi b/httemplate/edit/svc_dsl.cgi index 9b4d1c77d..48464fbad 100644 --- a/httemplate/edit/svc_dsl.cgi +++ b/httemplate/edit/svc_dsl.cgi @@ -95,6 +95,16 @@ my $new_cb = sub { 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; + } + my @addl_fields = ( { field => 'loop_type', type => 'select', @@ -105,7 +115,12 @@ my $new_cb = sub { 'password', { field => 'isp_chg', type => 'checkbox', }, 'isp_prev', - 'vendor_qual_id', + { field => 'vendor_qual_id', + type => 'select', + options => \@prequalids, + labels => \%prequal_labels, + onchange => 'ikano_vendor_qual_id_changed', + }, { field => 'vendor_order_type', type => 'hidden', value => 'NEW' }, diff --git a/httemplate/elements/popup_link-cust_main.html b/httemplate/elements/popup_link-cust_main.html index 454fcc4c8..78e50e782 100644 --- a/httemplate/elements/popup_link-cust_main.html +++ b/httemplate/elements/popup_link-cust_main.html @@ -39,4 +39,8 @@ $params->{'action'} .= ( $params->{'action'} =~ /\?/ ? ';' : '?' ). 'custnum='. $params->{'cust_main'}->custnum; +$params->{'action'} .= ';pkgpart='.$params->{'pkgpart'} if $params->{'pkgpart'}; +$params->{'action'} .= ';locationnum='.$params->{'locationnum'} if $params->{'locationnum'}; +$params->{'action'} .= ';svcpart='.$params->{'svcpart'} if $params->{'svcpart'}; + diff --git a/httemplate/elements/tr-select-cust_location.html b/httemplate/elements/tr-select-cust_location.html index fa19405b2..5802f4ec2 100644 --- a/httemplate/elements/tr-select-cust_location.html +++ b/httemplate/elements/tr-select-cust_location.html @@ -154,11 +154,16 @@ Example: <<%$th%> ALIGN="right"><% $opt{'label'} || 'Service location' %>> +% if ( $svcpart ) { + +% } <% ntable("#cccccc", 2) %> <% include('/elements/tr-select-cust-part_pkg.html', @@ -139,4 +142,6 @@ if( ! $conf->exists('order_pkg-no_start_date') ) { $start_date = $start_date ? time2str($format, $start_date) : ''; } +my $svcpart = $cgi->param('svcpart'); + diff --git a/httemplate/view/cust_main/order_pkg_link.html b/httemplate/view/cust_main/order_pkg_link.html index 30c86a757..2e8b1dac1 100644 --- a/httemplate/view/cust_main/order_pkg_link.html +++ b/httemplate/view/cust_main/order_pkg_link.html @@ -1,16 +1,22 @@ <% include( '/elements/popup_link-cust_main.html', 'action' => $p. 'misc/order_pkg.html', - 'label' => 'Order new package', + 'label' => $opt{'label'} || 'Order new package', 'actionlabel' => 'Order new package', 'color' => '#333399', 'cust_main' => $cust_main, 'closetext' => 'Close', 'width' => 763, 'height' => 538, + %optional, ) %> <%init> -my($cust_main) = @_; +my($cust_main, %opt) = @_; + +my %optional = (); +$optional{'pkgpart'} = $opt{'pkgpart'} if $opt{'pkgpart'}; +$optional{'locationnum'} = $opt{'locationnum'} if $opt{'locationnum'}; +$optional{'svcpart'} = $opt{'svcpart'} if $opt{'svcpart'}; diff --git a/httemplate/view/qual.cgi b/httemplate/view/qual.cgi index 8ab0032ad..45f3d2a62 100644 --- a/httemplate/view/qual.cgi +++ b/httemplate/view/qual.cgi @@ -28,7 +28,41 @@

% if ( $export ) { -<% $export->qual_html($qual) %> +% my $qual_result = $export->qual_result($qual); +% if ($qual_result->{'header'}) { + <% $qual_result->{'header'} %> +% } +% if ($qual_result->{'pkglist'}) { # one of the possible formats +% my $svcpart = ''; +% my $pkglist = $qual_result->{'pkglist'}; +% my $cust_or_prospect = $qual->cust_or_prospect; +% my $locationnum = ''; +% my %location = $qual->location; +% if (%location && $location{'locationnum'}) { +% $locationnum = $location{'locationnum'}; +% } + +% } % } <%init>