-if ( $error ) {
- $cgi->param('error', $error);
- print $cgi->redirect(popurl(2). "REAL_cust_pkg.cgi?". $cgi->query_string );
-} else {
- print $cgi->redirect(popurl(3). "view/cust_pkg.cgi?". $pkgnum);
+if (!$error) {
+ my @supp_pkgs = $old->supplemental_pkgs;
+ foreach $new (@supp_pkgs) {
+ foreach ( $contract_only ? qw( contract_end ) : qw( start_date setup contract_end ) ) {
+ # propagate these to supplementals
+ $new->set($_, $hash{$_});
+ }
+ if (( $hash{'bill'} ne $old->get('bill') ) && !$contract_only ) {
+ if ( $hash{'bill'} and $old->get('bill') ) {
+ # adjust by the same interval
+ my $diff = $hash{'bill'} - $old->get('bill');
+ $new->set('bill', $new->get('bill') + $diff);
+ } else {
+ # absolute date
+ $new->set('bill', $hash{'bill'});
+ }
+ }
+ $error = $new->replace;
+ $error .= ' (supplemental package '.$new->pkgnum.')' if $error;
+ last if $error;
+ }