selectable domain on first package in edit/cust_main
authorjeff <jeff>
Wed, 14 Feb 2007 23:32:22 +0000 (23:32 +0000)
committerjeff <jeff>
Wed, 14 Feb 2007 23:32:22 +0000 (23:32 +0000)
httemplate/edit/cust_main.cgi
httemplate/edit/cust_main/select-domain.html [new file with mode: 0644]
httemplate/misc/svc_acct-domains.cgi [new file with mode: 0644]

index 83eda7f..a843772 100755 (executable)
@@ -15,7 +15,7 @@
 %#get record
 %
 %my $error = '';
-%my($custnum, $username, $password, $popnum, $cust_main, $saved_pkgpart);
+%my($custnum, $username, $password, $popnum, $cust_main, $saved_pkgpart, $saved_domsvc);
 %my(@invoicing_list);
 %my $payinfo;
 %my $same = '';
 %    map { $_, scalar($cgi->param($_)) } fields('cust_main')
 %  } );
 %  $custnum = $cust_main->custnum;
+%  $saved_domsvc = $cgi->param('domsvc') || '';
+%  if ( $saved_domsvc =~ /^(\d+)$/ ) {
+%    $saved_domsvc = $1;
+%  } else {
+%    $saved_domsvc = '';
+%  }
 %  $saved_pkgpart = $cgi->param('pkgpart_svcpart') || '';
 %  if ( $saved_pkgpart =~ /^(\d+)_/ ) {
 %    $saved_pkgpart = $1;
@@ -50,6 +56,7 @@
 %    $cust_main->paycvv($paycvv);
 %  }
 %  $saved_pkgpart = 0;
+%  $saved_domsvc = 0;
 %  $username = '';
 %  $password = '';
 %  $popnum = 0;
@@ -61,6 +68,7 @@
 %  $cust_main->otaker( &getotaker );
 %  $cust_main->referral_custnum( $cgi->param('referral_custnum') );
 %  $saved_pkgpart = 0;
+%  $saved_domsvc = 0;
 %  $username = '';
 %  $password = '';
 %  $popnum = 0;
@@ -427,7 +435,7 @@ function copyelement(from, to) {
 %  #eslaf
 %
 %  my @part_pkg = grep { $_->svcpart('svc_acct') && $pkgpart->{ $_->pkgpart } }
-%    qsearch( 'part_pkg', { 'disabled' => '' },'','ORDER BY pkg' ); # case?
+%    qsearch( 'part_pkg', { 'disabled' => '' }, '', 'ORDER BY pkg' ); # case?
 %
 %  if ( @part_pkg ) {
 %
@@ -441,15 +449,12 @@ function copyelement(from, to) {
     
       <TR>
         <TD COLSPAN=2>
-          <SELECT NAME="pkgpart_svcpart">
-            <OPTION VALUE="">(none)
-% foreach my $part_pkg ( @part_pkg ) { 
-
-    
-              <OPTION VALUE="<% $part_pkg->pkgpart. "_". $part_pkg->svcpart('svc_acct') %>"<% ( $saved_pkgpart && $part_pkg->pkgpart == $saved_pkgpart ) ? ' SELECTED' : '' %>><% $part_pkg->pkg. " - ". $part_pkg->comment %>
-% } 
-
-          </SELECT>
+          <% include('cust_main/select-domain.html',
+                       'pkgparts'      => \@part_pkg,
+                       'saved_pkgpart' => $saved_pkgpart,
+                       'saved_domsvc' => $saved_domsvc,
+                    )
+          %>
         </TD>
       </TR>
 % 
@@ -470,6 +475,15 @@ function copyelement(from, to) {
       </TR>
     
       <TR>
+        <TD ALIGN="right">Domain</TD>
+        <TD>
+          <SELECT NAME="domsvc">
+            <OPTION>(none)</OPTION>
+          </SELECT>
+        </TD>
+      </TR>
+    
+      <TR>
         <TD ALIGN="right">Password</TD>
         <TD>
           <INPUT TYPE="text" NAME="_password" VALUE="<% $password %>" SIZE=<% $pmax2 %> MAXLENGTH=<% $passwordmax %>>
diff --git a/httemplate/edit/cust_main/select-domain.html b/httemplate/edit/cust_main/select-domain.html
new file mode 100644 (file)
index 0000000..3d42eb8
--- /dev/null
@@ -0,0 +1,66 @@
+
+<% include('/elements/xmlhttp.html',
+              'url'  => $p.'misc/svc_acct-domains.cgi',
+              'subs' => [ $opt{'prefix'}. 'get_domains' ],
+           )
+%>
+
+<SCRIPT TYPE="text/javascript">
+
+  function selopt(what,value,text,selected) {
+    var optionName = new Option(text, value, false, selected);
+    var length = what.length;
+    what.options[length] = optionName;
+  }
+
+  function <% $opt{'prefix'} %>pkgpart_svcpart_changed(what,selected) {
+
+    pkgpart_svcpart = what.options[what.selectedIndex].value;
+
+    function <% $opt{'prefix'} %>update_domains(domains) {
+
+      // blank the current domain list
+      for ( var i = what.form.<% $opt{'prefix'} %>domsvc.length; i >= 0; i-- )
+          what.form.<% $opt{'prefix'} %>domsvc.options[i] = null;
+
+      // add the new domains
+      var domainArray = eval('(' + domains + ')' );
+      for ( var s = 0; s < domainArray.length; s=s+2 ) {
+          var domainLabel = domainArray[s+1];
+          if ( domainLabel == "" )
+              domainLabel = '(n/a)';
+          selopt(what.form.<% $opt{'prefix'} %>domsvc, domainArray[s], domainLabel, (domainArray[s] == selected) ? true : false);
+      }
+
+    }
+
+    // go get the new domains
+    <% $opt{'prefix'} %>get_domains( pkgpart_svcpart, <% $opt{'prefix'} %>update_domains );
+
+  }
+
+</SCRIPT>
+
+<SELECT NAME="<% $opt{'prefix'} %>pkgpart_svcpart" onchange="<% $opt{'prefix'} %>pkgpart_svcpart_changed(this,0);" >
+
+% foreach my $part_pkg ( @part_pkg ) {
+
+  <OPTION VALUE="<% $part_pkg->pkgpart. "_". $part_pkg->svcpart('svc_acct') %>"<% ( $opt{saved_pkgpart} && $part_pkg->pkgpart == $opt{saved_pkgpart} ) ? ' SELECTED' : '' %>><% $part_pkg->pkg. " - ". $part_pkg->comment %>
+
+% } 
+
+</SELECT>
+<SCRIPT>
+  pkgpart_svcpart_changed(document.bottomform.pkgpart_svcpart, <% $opt{saved_domsvc} %>);
+</SCRIPT>
+
+<%init>
+my %opt = @_;
+foreach my $opt (qw( svc_part pkgparts saved_pkgpart saved_domsvc prefix)) {
+  $opt{$_} = '' unless exists($opt{$_}) && defined($opt{$_});
+}
+$opt{saved_domsvc} = 0 unless $opt{saved_domsvc};
+my @part_pkg = @{$opt{'pkgparts'}};
+
+</%init>
+
diff --git a/httemplate/misc/svc_acct-domains.cgi b/httemplate/misc/svc_acct-domains.cgi
new file mode 100644 (file)
index 0000000..5e96b8d
--- /dev/null
@@ -0,0 +1,25 @@
+%
+%
+%  my $pkgpart_svcpart = $cgi->param('arg');
+%  $pkgpart_svcpart =~ /^\d+_(\d+)$/;
+%  my $part_svc = qsearchs('part_svc', { 'svcpart' => $1 }) if $1;
+%  my $part_svc_column = $part_svc->part_svc_column('domsvc');
+%
+%  my @output = split /,/, $part_svc_column->columnvalue;
+%  my @svc_domain = ();
+%  my %seen = ();
+%  
+%  foreach (@output) {
+%    my $svc_domain = qsearchs('svc_domain', { 'svcnum' => $_ })
+%      or warn "unknown svc_domain.svcnum $_ for part_svc_column domsvc; ".
+%         "svcpart = " . $part_svc->svcpart;
+%    push @svc_domain, [ $_ => $svc_domain->domain ];
+%    $seen{$_}++;
+%  }
+%  if ($part_svc_column->columnflag eq 'D' || $part_svc_column->columnflag eq '') {
+%    foreach (grep { $_->svcnum ne $output[0] } qsearch('svc_domain', {}) ){
+%      push @svc_domain, [ $_->svcnum => $_->domain ];
+%    }
+%  }
+%
+[ <% join(', ', map { qq("$_->[0]", "$_->[1]") } @svc_domain) %> ]