X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fprocess%2Fchange-cust_pkg.html;h=0b36e9053c2f8ed00d5238681524838ff46874aa;hb=71231d6bd803d2a3977c3ce2fa1f3c0ed4746b2d;hp=c066ff5b0171e1bedf65c974fe908d266bf6f523;hpb=a3696f50ea05e5b8f87c24c5298fc35bee03fc75;p=freeside.git diff --git a/httemplate/edit/process/change-cust_pkg.html b/httemplate/edit/process/change-cust_pkg.html index c066ff5b0..0b36e9053 100644 --- a/httemplate/edit/process/change-cust_pkg.html +++ b/httemplate/edit/process/change-cust_pkg.html @@ -27,7 +27,7 @@ my $cust_pkg = qsearchs({ die 'unknown pkgnum' unless $cust_pkg; my %change = map { $_ => scalar($cgi->param($_)) } - qw( locationnum pkgpart quantity ); + qw( locationnum pkgpart quantity waive_setup); $change{'keep_dates'} = 1; @@ -40,16 +40,16 @@ if ( $cgi->param('locationnum') == -1 ) { $change{'cust_location'} = $cust_location; } +my %discount = (discountnum => $cgi->param('discountnum')); +if (%discount) { + $discount{$_} = $cgi->param("discountnum_$_") + for qw(_type amount months percent setup); +} + my $error; -my $contract_end; my $now = time; if (defined($cgi->param('contract_end'))) { - $contract_end = parse_datetime($cgi->param('contract_end')); - if ($contract_end < $now) { - $error = "Contract end ".$cgi->param('contract_end')." is in the past."; - } else { - $change{'contract_end'} = $contract_end; - } + $change{'contract_end'} = parse_datetime($cgi->param('contract_end')); } unless ($error) { @@ -62,6 +62,7 @@ unless ($error) { } else { # schedule the change $change{'start_date'} = $date; + $change{discount} = \%discount if %discount; $error = $cust_pkg->change_later(\%change); } } else { @@ -74,14 +75,17 @@ unless ($error) { $change_to->pkgpart == $change{'pkgpart'} and $change_to->locationnum == $change{'locationnum'} and $change_to->quantity == $change{'quantity'} and - $change_to->contract_end == $change{'contract_end'} + $change_to->contract_end == $change{'contract_end'} and + $change_to->waive_setup == $change{'waive_setup'} ) { %change = ( 'cust_pkg' => $change_to ); } } - + # do a package change right now my $pkg_or_error = $cust_pkg->change( \%change ); + $pkg_or_error->change_discount(\%discount) + if ref $pkg_or_error && $discount{discountnum} =~ /$-?\d+$/; $error = ref($pkg_or_error) ? '' : $pkg_or_error; } }