-%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 part_pkg_opt(what,value,text,can_discount) {
+ function part_pkg_opt(what, value, text, can_discount, can_start_date, start_date) {
var optionName = new Option(text, value, false, false);
- optionName.setAttribute('data-can_discount', can_discount);
+ optionName.setAttribute('data-can_discount', can_discount);
+ optionName.setAttribute('data-can_start_date', can_start_date);
+ optionName.setAttribute('data-start_date', start_date || '');
var length = what.length;
what.options[length] = optionName;
}
what.form.pkgpart.disabled = 'disabled'; //disable part_pkg dropdown
var submitButton = what.form.submitButton; // || what.form.submit;
- if ( submitButton ) {
+ if ( submitButton && <% $opt{'curr_value'} ? 0 : 1 %> ) {
submitButton.disabled = true; //disable the submit button
}
var discountnum = what.form.discountnum;
discountnum.disabled = true; //disable discount dropdown
}
- classnum = what.options[what.selectedIndex].value;
+ classnum = what.value;
function update_part_pkg(part_pkg) {
// add the new packages
opt(what.form.pkgpart, '', 'Select package');
var packagesArray = eval('(' + part_pkg + ')' );
- for ( var s = 0; s < packagesArray.length; s=s+3 ) {
- var packagesLabel = packagesArray[s+1];
- var can_discount = packagesArray[s+2];
+ for ( var s = 0; s < packagesArray.length; s=s+5 ) {
+ //surely this should be some kind of JSON structure
+ var packagesLabel = packagesArray[s+1];
+ var can_discount = packagesArray[s+2];
+ var can_start_date = packagesArray[s+3];
+ var start_date = packagesArray[s+4];
part_pkg_opt(
- what.form.pkgpart, packagesArray[s], packagesLabel, can_discount
+ what.form.pkgpart, packagesArray[s], packagesLabel, can_discount, can_start_date, start_date
);
}
what.form.pkgpart.disabled = ''; //re-enable part_pkg dropdown
+% if ( $opt{'curr_value'} ) {
+ what.form.pkgpart.value = <% $opt{'curr_value'} %>;
+% }
}
- 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
+ );
}
+ <&| /elements/onload.js &>
+ classnum_changed(document.getElementById('classnum'));
+ </&>
+
</SCRIPT>
+% if ( scalar(@pkg_class) > 1 && ! $conf->exists('disable-cust-pkg_class') ) {
<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>
-%}
+% } else { # so that the rest of the page works correctly
+ <INPUT TYPE="hidden" ID="classnum" NAME="classnum" VALUE="-1`">
+% }
<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>
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({
'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 =