summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2011-08-11 00:39:00 +0000
committerivan <ivan>2011-08-11 00:39:00 +0000
commitd3e18527e2fa36b7b7fe7b8b0a5906caae3cb8de (patch)
tree07d4d1dc02ba4c8bea9dad8866e1a57a09c4c268
parent0534412bf84b022fe23f9231cb66424b7f6033df (diff)
hide start date on package order for specific package definitions, RT#13783
-rw-r--r--FS/FS/cust_pkg.pm2
-rw-r--r--FS/FS/part_pkg.pm2
-rw-r--r--FS/FS/part_pkg/delayed_Mixin.pm6
-rw-r--r--FS/FS/part_pkg/flat.pm2
-rw-r--r--httemplate/elements/order_pkg.js17
-rw-r--r--httemplate/elements/select-part_pkg.html2
-rw-r--r--httemplate/elements/tr-select-cust-part_pkg.html21
-rw-r--r--httemplate/misc/cust-part_pkg.cgi12
-rw-r--r--httemplate/misc/order_pkg.html1
9 files changed, 46 insertions, 19 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 7405617..c2b3c04 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -284,7 +284,7 @@ sub insert {
}
my $free_days = $part_pkg->option('free_days');
- if ( $free_days && $part_pkg->option('delay_setup') ) { #&& !$self->start_date
+ if ( $free_days && $part_pkg->option('delay_setup',1) ) { #&& !$self->start_date
my ($mday,$mon,$year) = (localtime(time) )[3,4,5];
#my $start_date = ($self->start_date || timelocal(0,0,0,$mday,$mon,$year)) + 86400 * $free_days;
my $start_date = timelocal(0,0,0,$mday,$mon,$year) + 86400 * $free_days;
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index f658dcf..03239ae 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -798,6 +798,8 @@ sub is_free {
sub can_discount { 0; }
+sub can_start_date { 1; }
+
sub freqs_href {
# moved to FS::Misc to make this accessible to other packages
# at initialization
diff --git a/FS/FS/part_pkg/delayed_Mixin.pm b/FS/FS/part_pkg/delayed_Mixin.pm
index 027cfff..4228a4a 100644
--- a/FS/FS/part_pkg/delayed_Mixin.pm
+++ b/FS/FS/part_pkg/delayed_Mixin.pm
@@ -25,7 +25,7 @@ use vars qw(%info);
sub calc_setup {
my($self, $cust_pkg, $time ) = @_;
- unless ( $self->option('delay_setup') ) {
+ unless ( $self->option('delay_setup', 1) ) {
my $d = $cust_pkg->bill || $time;
$d += 86400 * $self->option('free_days');
$cust_pkg->bill($d);
@@ -37,7 +37,7 @@ sub calc_setup {
sub calc_remain {
my ($self, $cust_pkg, %options) = @_;
- unless ( $self->option('delay_setup') ) {
+ unless ( $self->option('delay_setup', 1) ) {
my $last_bill = $cust_pkg->last_bill || 0;
my $next_bill = $cust_pkg->getfield('bill') || 0;
my $free_days = $self->option('free_days');
@@ -49,4 +49,6 @@ sub calc_remain {
return $self->SUPER::calc_remain($cust_pkg, %options);
}
+sub can_start_date { ! shift->option('delay_setup', 1) }
+
1;
diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm
index 4566c87..c1d1f56 100644
--- a/FS/FS/part_pkg/flat.pm
+++ b/FS/FS/part_pkg/flat.pm
@@ -196,6 +196,8 @@ sub is_free_options {
sub is_prepaid { 0; } #no, we're postpaid
+sub can_start_date { ! shift->option('start_1st', 1) }
+
#XXX discounts only on recurring fees for now (no setup/one-time or usage)
sub can_discount {
my $self = shift;
diff --git a/httemplate/elements/order_pkg.js b/httemplate/elements/order_pkg.js
index 2c13ed2..2f53e36 100644
--- a/httemplate/elements/order_pkg.js
+++ b/httemplate/elements/order_pkg.js
@@ -1,8 +1,9 @@
-function enable_order_pkg () {
+function pkg_changed () {
var form = document.OrderPkgForm;
var discountnum = form.discountnum;
if ( form.pkgpart.selectedIndex > 0 ) {
+
form.submitButton.disabled = false;
if ( discountnum ) {
if ( form.pkgpart.options[form.pkgpart.selectedIndex].getAttribute('data-can_discount') == 1 ) {
@@ -11,6 +12,20 @@ function enable_order_pkg () {
form.discountnum.disabled = true;
}
}
+
+ if ( form.pkgpart.options[form.pkgpart.selectedIndex].getAttribute('data-can_start_date') == 1 ) {
+ form.start_date_text.disabled = false;
+ form.start_date.style.backgroundColor = '#ffffff';
+ form.start_date_button.style.display = '';
+ form.start_date_button_disabled.style.display = 'none';
+ form.invoice_terms.disabled = true;
+ } else {
+ form.start_date_text.disabled = true;
+ form.start_date.style.backgroundColor = '#dddddd';
+ form.start_date_button.style.display = 'none';
+ form.start_date_button_disabled.style.display = '';
+ }
+
} else {
form.submitButton.disabled = true;
if ( discountnum ) { form.discountnum.disabled = true; }
diff --git a/httemplate/elements/select-part_pkg.html b/httemplate/elements/select-part_pkg.html
index 885bb80..439c4b5 100644
--- a/httemplate/elements/select-part_pkg.html
+++ b/httemplate/elements/select-part_pkg.html
@@ -23,7 +23,7 @@ Example:
'empty_label' => 'Select package', #should this be the default?
'label_callback' => sub { shift->pkg_comment },
'hashref' => \%hash,
- 'extra_option_attributes' => [ 'can_discount' ],
+ 'extra_option_attributes' => [ 'can_discount', 'can_start_date' ],
%opt,
)
%>
diff --git a/httemplate/elements/tr-select-cust-part_pkg.html b/httemplate/elements/tr-select-cust-part_pkg.html
index 878af4d..7d0b0dc 100644
--- a/httemplate/elements/tr-select-cust-part_pkg.html
+++ b/httemplate/elements/tr-select-cust-part_pkg.html
@@ -8,9 +8,10 @@
<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) {
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);
var length = what.length;
what.options[length] = optionName;
}
@@ -38,11 +39,12 @@
// 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+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
+ what.form.pkgpart, packagesArray[s], packagesLabel, can_discount, can_start_date
);
}
@@ -73,13 +75,12 @@
<TR>
<TH ALIGN="right">Package</TH>
<TD COLSPAN=7>
- <% include('/elements/select-cust-part_pkg.html',
+ <& /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',
- )
- %>
+ 'onchange' => 'pkg_changed',
+ &>
</TD>
</TR>
diff --git a/httemplate/misc/cust-part_pkg.cgi b/httemplate/misc/cust-part_pkg.cgi
index 524799c..dcd033f 100644
--- a/httemplate/misc/cust-part_pkg.cgi
+++ b/httemplate/misc/cust-part_pkg.cgi
@@ -23,8 +23,14 @@ my @part_pkg = qsearch({
'order_by' => 'ORDER BY pkg',
});
-my @return = map { ( $_->pkgpart, $_->pkg_comment, $_->can_discount ); }
- #sort { $a->pkg_comment cmp $b->pkg_comment }
- @part_pkg;
+my @return = map { warn $_->can_start_date;
+ ( $_->pkgpart,
+ $_->pkg_comment,
+ $_->can_discount,
+ $_->can_start_date,
+ );
+ }
+ #sort { $a->pkg_comment cmp $b->pkg_comment }
+ @part_pkg;
</%init>
diff --git a/httemplate/misc/order_pkg.html b/httemplate/misc/order_pkg.html
index bb87422..4dd2b7b 100644
--- a/httemplate/misc/order_pkg.html
+++ b/httemplate/misc/order_pkg.html
@@ -18,7 +18,6 @@
'curr_value' => $pkgpart,
'classnum' => -1,
'cust_main' => $cust_main,
- 'onchange' => 'enable_order_pkg',
)
%>