summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
authorivan <ivan>2011-03-22 06:00:54 +0000
committerivan <ivan>2011-03-22 06:00:54 +0000
commit3dfc446d8a4d241787c47ff7e2db72483d62ab7a (patch)
treef0129a16674ccd7c2feec43d7aea7dd5be2f7d41 /httemplate/edit
parentb1011034b084a90c07c7199f5e64cdee7cdd199f (diff)
new customer from prospect qualification, RT#7111
Diffstat (limited to 'httemplate/edit')
-rwxr-xr-xhttemplate/edit/cust_main.cgi48
-rw-r--r--httemplate/edit/cust_main/first_pkg.html5
-rw-r--r--httemplate/edit/cust_main/first_pkg/select-part_pkg.html5
-rw-r--r--httemplate/edit/cust_main/first_pkg/svc_dsl.html75
-rwxr-xr-xhttemplate/edit/process/cust_main.cgi23
-rw-r--r--httemplate/edit/svc_dsl.cgi209
6 files changed, 251 insertions, 114 deletions
diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi
index 07629dcff..d4217bbcc 100755
--- a/httemplate/edit/cust_main.cgi
+++ b/httemplate/edit/cust_main.cgi
@@ -13,7 +13,8 @@
%# STYLE="margin-top: 0; margin-bottom: 0">
>
-<INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>">
+<INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>">
+<INPUT TYPE="hidden" NAME="prospectnum" VALUE="<% $prospectnum %>">
% if ( $custnum ) {
Customer #<B><% $cust_main->display_custnum %></B> -
@@ -187,6 +188,7 @@ function samechanged(what) {
'popnum' => $popnum,
'saved_domsvc' => $saved_domsvc,
%svc_phone,
+ %svc_dsl,
)
%>
@@ -237,6 +239,8 @@ my $same = '';
my $pkgpart_svcpart = ''; #first_pkg
my($username, $password, $popnum, $saved_domsvc) = ( '', '', 0, 0 ); #svc_acct
my %svc_phone = ();
+my %svc_dsl = ();
+my $prospectnum = '';
if ( $cgi->param('error') ) {
@@ -273,6 +277,10 @@ if ( $cgi->param('error') ) {
$svc_phone{$_} = $cgi->param($_)
foreach qw( countrycode phonenum sip_password pin phone_name );
+ #svc_dsl (phonenum came in with svc_phone)
+ $svc_phone{$_} = $cgi->param($_)
+ foreach qw( password isp_chg isp_prev vendor_qual_id );
+
} elsif ( $cgi->keywords ) { #editing
die "access denied"
@@ -309,6 +317,44 @@ if ( $cgi->param('error') ) {
$stateid = '';
$payinfo = '';
+ if ( $cgi->param('qualnum') =~ /^(\d+)$/ ) {
+ my $qualnum = $1;
+ my $qual = qsearchs('qual', { 'qualnum' => $qualnum } )
+ or die "unknown qualnum $qualnum";
+
+ my $prospect_main = $qual->cust_or_prospect;
+ $prospectnum = $prospect_main->prospectnum
+ or die "qualification not on a prospect";
+
+ $cust_main->agentnum( $prospect_main->agentnum );
+ $cust_main->company( $prospect_main->company );
+
+ #first contact? -> name
+ my @contacts = $prospect_main->contact;
+ my $contact = $contacts[0];
+ $cust_main->first( $contact->first );
+ $cust_main->set( 'last', $contact->get('last') );
+ #XXX contact phone numbers
+
+ #XXX additional/all contacts -> alas (notes for now? add add'l contact support?)
+
+ #XXX move all contacts and locations
+
+ #location -> address (all prospect quals have location, right?)
+ my $cust_location = $qual->cust_location;
+ $cust_location->dealternize;
+ $cust_main->$_( $cust_location->$_ )
+ foreach qw( address1 address2 city county state zip country geocode );
+
+ #pkgpart handled by lock_pkgpart below
+
+ #XXX locationnum -> package order
+
+ #service telephone & vendor_qual_id -> svc_dsl
+ $svc_dsl{$_} = $qual->$_
+ foreach qw( phonenum vendor_qual_id );
+ }
+
if ( $cgi->param('lock_pkgpart') =~ /^(\d+)$/ ) {
my $pkgpart = $1;
my $part_pkg = qsearchs('part_pkg', { 'pkgpart' => $pkgpart } )
diff --git a/httemplate/edit/cust_main/first_pkg.html b/httemplate/edit/cust_main/first_pkg.html
index 7c131eadc..3b15d4ee4 100644
--- a/httemplate/edit/cust_main/first_pkg.html
+++ b/httemplate/edit/cust_main/first_pkg.html
@@ -13,7 +13,8 @@
<TR>
<TD COLSPAN=2>
<% include('first_pkg/select-part_pkg.html',
- 'part_pkg' => \@part_pkg,
+ 'part_pkg' => \@part_pkg,
+ 'first_svc' => \@first_svc,
%opt,
# map { $_ => $opt{$_} } qw( pkgpart_svcpart saved_domsvc )
)
@@ -69,7 +70,7 @@ if ( $cgi->param('lock_pkgpart') =~ /^([\d, ]+)$/ ) {
}
-my @first_svc = ( 'svc_acct', 'svc_phone' );
+my @first_svc = ( 'svc_acct', 'svc_phone', 'svc_dsl' );
@part_pkg =
grep { $_->svcpart(\@first_svc)
diff --git a/httemplate/edit/cust_main/first_pkg/select-part_pkg.html b/httemplate/edit/cust_main/first_pkg/select-part_pkg.html
index 20f0e1982..9d37f15eb 100644
--- a/httemplate/edit/cust_main/first_pkg/select-part_pkg.html
+++ b/httemplate/edit/cust_main/first_pkg/select-part_pkg.html
@@ -132,9 +132,8 @@ $opt{saved_domsvc} = 0 unless $opt{saved_domsvc};
my $url_prefix = $opt{'relurls'} ? '' : $p;
-my @part_pkg = @{$opt{'part_pkg'}};
-
-my @first_svc = ( 'svc_acct', 'svc_phone' );
+my @part_pkg = @{ $opt{'part_pkg'} };
+my @first_svc = @{ $opt{'first_svc'} };
my %pkgpart_svcpart = ();
my %svcdb = ();
diff --git a/httemplate/edit/cust_main/first_pkg/svc_dsl.html b/httemplate/edit/cust_main/first_pkg/svc_dsl.html
new file mode 100644
index 000000000..971f4be33
--- /dev/null
+++ b/httemplate/edit/cust_main/first_pkg/svc_dsl.html
@@ -0,0 +1,75 @@
+<% ntable("#cccccc") %>
+
+% if ( $opt{'phonenum'} ) {
+
+ <INPUT TYPE="hidden" NAME="loop_type" VALUE="">
+ <INPUT TYPE="hidden" NAME="phonenum" VALUE="<% $opt{'phonenum'} %>">
+
+ <TR>
+ <TD ALIGN="right">Loop Type</TD>
+ <TD BGCOLOR="#eeeeee">Line-share</TD>
+ </TR>
+
+ <TR>
+ <TD ALIGN="right">Phone Number</TD>
+ <TD BGCOLOR="#eeeeee"><% $opt{'phonenum'} %></TD>
+ </TR>
+
+% } else {
+
+ <INPUT TYPE="hidden" NAME="loop_type" VALUE="0">
+ <INPUT TYPE="hidden" NAME="phonenum" VALUE="">
+
+ <TR>
+ <TD ALIGN="right">Loop Type</TD>
+ <TD BGCOLOR="#eeeeee">Standalone</TD>
+ </TR>
+
+% }
+
+<TR>
+ <TD ALIGN="right">PPPoE password</TD>
+ <TD>
+ <INPUT TYPE = "text"
+ NAME = "password"
+ VALUE = "<% $opt{'password'} %>"
+ >
+ </TD>
+</TR>
+
+<TR>
+ <TD ALIGN="right">ISP Changing?</TD>
+ <TD>
+ <INPUT TYPE = "checkbox"
+ NAME = "isp_chg"
+ VALUE = "Y"
+ <% $opt{'isp_chg'} eq 'Y' ? 'CHECKED' : '' %>
+ >
+ </TD>
+</TR>
+
+<TR>
+ <TD ALIGN="right">Current or Previous ISP</TD>
+ <TD>
+ <INPUT TYPE = "text"
+ NAME = "isp_prev"
+ VALUE = "<% $opt{'isp_prev'} %>"
+ >
+ </TD>
+</TR>
+
+<INPUT TYPE="hidden" NAME="vendor_qual_id" VALUE="<% $opt{'vendor_qual_id'} %>">
+<TR>
+ <TD ALIGN="right">Vendor Qualification ID</TD>
+ <TD BGCOLOR="#eeeeee"><% $opt{'vendor_qual_id'} %></TD>
+</TR>
+
+</TABLE>
+
+<%init>
+
+my %opt = @_;
+
+#my $conf = new FS::Conf;
+
+</%init>
diff --git a/httemplate/edit/process/cust_main.cgi b/httemplate/edit/process/cust_main.cgi
index 24cecea64..c43ffa30e 100755
--- a/httemplate/edit/process/cust_main.cgi
+++ b/httemplate/edit/process/cust_main.cgi
@@ -192,13 +192,28 @@ if ( $new->custnum eq '' ) {
} elsif ( $svcdb eq 'svc_phone' ) {
my %svc_phone = (
- 'svcpart' => $svcpart,
- map { $_ => scalar($cgi->param($_)) }
- qw( countrycode phonenum sip_password pin phone_name )
- );
+ 'svcpart' => $svcpart,
+ map { $_ => scalar($cgi->param($_)) }
+ qw( countrycode phonenum sip_password pin phone_name )
+ );
$svc = new FS::svc_phone \%svc_phone;
+ } elsif ( $svcdb eq 'svc_dsl' ) {
+
+ my %svc_dsl = (
+ 'svcpart' => $svcpart,
+ ( map { $_ => scalar($cgi->param("ship_$_")) || scalar($cgi->param($_))}
+ qw( first last company )
+ ),
+ ( map { $_ => scalar($cgi->param($_)) }
+ qw( loop_type phonenum password isp_chg isp_prev vendor_qual_id )
+ ),
+ 'desired_due_date' => time, #XXX enter?
+ 'vendor_order_type' => 'NEW',
+ );
+ $svc = new FS::svc_dsl \%svc_dsl;
+
} else {
die "$svcdb not handled on new customer yet";
}
diff --git a/httemplate/edit/svc_dsl.cgi b/httemplate/edit/svc_dsl.cgi
index 48464fbad..7ecf906f0 100644
--- a/httemplate/edit/svc_dsl.cgi
+++ b/httemplate/edit/svc_dsl.cgi
@@ -1,10 +1,10 @@
<% 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,
+ 'html_foot' => $html_foot,
+ )
%>
<%init>
@@ -18,44 +18,43 @@ my $ti_fields = FS::svc_dsl->table_info->{'fields'};
my @fields = ();
-my $html_foot = sub {
- return "
+my $html_foot = sub { "
<SCRIPT TYPE=\"text/javascript\">
function ikano_loop_type_changed() {
- var loop_type = document.getElementById('loop_type').value;
- var phonenum = document.getElementById('phonenum');
- if(loop_type == '0') {
- phonenum.value = '';
- phonenum.disabled = true;
- }
- else phonenum.disabled = false;
+ var loop_type = document.getElementById('loop_type').value;
+ var phonenum = document.getElementById('phonenum');
+ if(loop_type == '0') {
+ phonenum.value = '';
+ phonenum.disabled = true;
+ }
+ else phonenum.disabled = false;
}
-</SCRIPT>";
-};
+</SCRIPT>
+"; };
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') {
+ @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
}
else {
- push @fields, qw( first last company phonenum circuitnum rate_band vpi vci );
+ push @fields, qw( first last company phonenum circuitnum rate_band vpi vci );
}
};
@@ -63,80 +62,82 @@ 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 );
-
- 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,
- },
- );
+ 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,
+ },
+ );
if ( scalar(@exports) == 1 ) {
- 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;
- }
-
- 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',
- { 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' },
- { 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
- }
- else { # display non-export and non-Ikano fields
- push @fields, qw( rate_band circuitnum vpi vci );
+ 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;
+ }
+
+ 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',
+ { 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' },
+ { 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 );
}
};
</%init>