Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / httemplate / elements / tr-select-cust-part_pkg.html
index 75f1f6f..848ab0a 100644 (file)
@@ -1,15 +1,16 @@
 %if ( scalar(@pkg_class) > 1 && ! $conf->exists('disable-cust-pkg_class') ) {
 
-  <% include('/elements/xmlhttp.html',
+  <& /elements/xmlhttp.html,
                 'url'  => $p.'misc/cust-part_pkg.cgi',
                 'subs' => [ 'get_part_pkg' ],
-            )
-  %>
+  &>
 
   <SCRIPT TYPE="text/javascript">
 
-    function opt(what,value,text) {
+    function part_pkg_opt(what, value, text, can_discount, can_start_date) {
       var optionName = new Option(text, value, false, false);
+      optionName.setAttribute('data-can_discount',   can_discount);
+      optionName.setAttribute('data-can_start_date', can_start_date);
       var length = what.length;
       what.options[length] = optionName;
     }
     function classnum_changed(what) {
 
       what.form.pkgpart.disabled = 'disabled'; //disable part_pkg dropdown
-      what.form.submit.disabled = true; //disable the submit button
+      var submitButton = what.form.submitButton; // || what.form.submit;
+      if ( submitButton ) {
+        submitButton.disabled = true; //disable the submit button
+      }
+      var discountnum = what.form.discountnum;
+      if ( discountnum ) {
+        discountnum.disabled = true; //disable discount dropdown
+      }
 
       classnum = what.options[what.selectedIndex].value;
 
         // add the new packages
         opt(what.form.pkgpart, '', 'Select package');
         var packagesArray = eval('(' + part_pkg + ')' );
-        for ( var s = 0; s < packagesArray.length; s=s+2 ) {
-          var packagesLabel = packagesArray[s+1];
-          opt(what.form.pkgpart, packagesArray[s], packagesLabel);
+        for ( var s = 0; s < packagesArray.length; s=s+4 ) {
+          var packagesLabel  = packagesArray[s+1];
+          var can_discount   = packagesArray[s+2];
+          var can_start_date = packagesArray[s+3];
+          part_pkg_opt(
+            what.form.pkgpart, packagesArray[s], packagesLabel, can_discount, can_start_date
+          );
         }
 
         what.form.pkgpart.disabled = ''; //re-enable part_pkg dropdown
 
       }
 
-      get_part_pkg( <% $cust_main->custnum %>, classnum, update_part_pkg );
-    
+      get_part_pkg( <% $cust_main     ? $cust_main->custnum         : '0' %>,
+                    <% $prospect_main ? $prospect_main->prospectnum : '0' %>,
+                    classnum,
+                    update_part_pkg
+                  );
     }
 
   </SCRIPT>
 
   <TR>
-    <TH ALIGN="right">Package Class</TH>
+    <TH ALIGN="right"><% mt('Package Class') |h %></TH>
     <TD COLSPAN=7>
-      <% include('/elements/select-cust-pkg_class.html',
+      <& /elements/select-cust-pkg_class.html,
                    'curr_value' => $opt{'classnum'},
                    'pkg_class'  => \@pkg_class,
                    'onchange'   => 'classnum_changed',
-                )
-      %>
+      &>
     </TD>
   </TR>
 
 %}
 
 <TR>
-  <TH ALIGN="right">Package</TH>
+  <TH ALIGN="right"><% mt('Package') |h %></TH>
   <TD COLSPAN=7>
-    <% include('/elements/select-cust-part_pkg.html',
-                 'curr_value' => $opt{'curr_value'}, #$pkgpart
-                 'classnum'   => $opt{'classnum'},
-                 'cust_main'  => $opt{'cust_main'},  #$cust_main
-                 'onchange'   => 'enable_order_pkg',
-              )
-    %>
+    <& /elements/select-cust-part_pkg.html,
+                 'curr_value'    => $opt{'curr_value'}, #$pkgpart
+                 'classnum'      => $opt{'classnum'},
+                 'cust_main'     => $opt{'cust_main'},  #$cust_main
+                 'prospect_main' => $opt{'prospect_main'},  #$prospect_main
+                 'onchange'      => 'pkg_changed',
+    &>
   </TD>
 </TR>
 
@@ -81,11 +95,13 @@ my %opt = @_;
 my $pre_label = $opt{'pre_label'} || '';
 $pre_label .= ' ' if length($pre_label) && $pre_label =~ /\S$/;
 
-my $cust_main = $opt{'cust_main'}
-  or die "cust_main not specified";
+my $cust_main = $opt{'cust_main'};
+my $prospect_main = $opt{'prospect_main'};
+
+die "neither cust_main nor prospect_main specified"
+  unless $cust_main || $prospect_main;
 
-#my @pkg_class = sort { $a->classname cmp $b->classname }
-#                     qsearch( 'pkg_class', { 'disabled' => '' } );
+my $agent = $cust_main ? $cust_main->agent : $prospect_main->agent;
 
 #"normal" part_pkg agent virtualization (agentnum or type)
 my @part_pkg = qsearch({
@@ -94,7 +110,7 @@ my @part_pkg = qsearch({
   'hashref'   => { 'disabled' => '' },
   'extra_sql' =>
     ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql( 'null'=>1 ).
-    ' AND '. FS::part_pkg->agent_pkgs_sql( $opt{'cust_main'}->agent ),
+    ' AND '. FS::part_pkg->agent_pkgs_sql( $agent ),
 });
 
 my @pkg_class =