X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2FREAL_cust_pkg.cgi;h=77ab1fe67069b16785f1f968281475df9dcc9db3;hp=99a3f3098be667e4fe049d9b148f094aca30d128;hb=37591b61f8ad6fc5c5acb2fd8f520d2dbe4f1539;hpb=85c6cb69b90583a8314e9c4a6d73600d4f2750cf diff --git a/httemplate/edit/REAL_cust_pkg.cgi b/httemplate/edit/REAL_cust_pkg.cgi index 99a3f3098..77ab1fe67 100755 --- a/httemplate/edit/REAL_cust_pkg.cgi +++ b/httemplate/edit/REAL_cust_pkg.cgi @@ -1,77 +1,8 @@ -% -% -%my $error =''; -%my $pkgnum = ''; -%my($susp,$adjourn,$cancel,$expire, $pkg, $comment, $setup, $bill, $otaker); -% -%my( $cust_pkg, $part_pkg ); -% -%if ( $cgi->param('error') ) { -% $error = $cgi->param('error'); -% $pkgnum = $cgi->param('pkgnum'); -% if ( $error eq '_bill_areyousure' ) { -% my $bill = $cgi->param('bill'); -% $error = "You are attempting to set the next bill date to $bill, which is -% in the past. This will charge the customer for the interval -% from $bill until now. Are you sure you want to do this? ". -% ''; -% } -% -% $susp = $cgi->param('susp'); -% $adjourn = $cgi->param('adjourn'); -% $cancel = $cgi->param('cancel'); -% $expire = $cgi->param('expire'); -% $pkg = $cgi->param('pkg'); -% $comment = $cgi->param('comment'); -% $setup = $cgi->param('setup'); -% $bill = $cgi->param('bill'); -% $otaker = $cgi->param('otaker'); -% -% #get package record -% $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); -% die "No package!" unless $cust_pkg; -% $part_pkg = qsearchs('part_pkg',{'pkgpart'=>$cust_pkg->getfield('pkgpart')}); -% -%} else { -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "no pkgnum"; -% $pkgnum = $1; -% -% #get package record -% $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); -% die "No package!" unless $cust_pkg; -% $part_pkg = qsearchs('part_pkg',{'pkgpart'=>$cust_pkg->getfield('pkgpart')}); -% -% ($susp,$adjourn,$cancel,$expire)=( -% $cust_pkg->getfield('susp'), -% $cust_pkg->getfield('adjourn'), -% $cust_pkg->getfield('cancel'), -% $cust_pkg->getfield('expire'), -% ); -% ($pkg,$comment)=($part_pkg->getfield('pkg'),$part_pkg->getfield('comment')); -% ($setup,$bill)=($cust_pkg->getfield('setup'),$cust_pkg->getfield('bill')); -% $otaker = $cust_pkg->getfield('otaker'); -%} -% -%if ( $error ) { -% #$cust_pkg->$_(str2time($cgi->param($_)) foreach qw(setup bill); -% $cust_pkg->setup(str2time($cgi->param('setup'))); -% $cust_pkg->bill(str2time($cgi->param('bill'))); -% $cust_pkg->last_bill(str2time($cgi->param('last_bill'))); -%} -% -%#my $custnum = $cust_pkg->getfield('custnum'); -% - - <% include("/elements/header.html",'Customer package - Edit dates') %> -% + %#, menubar( %# "View this customer (#$custnum)" => popurl(2). "view/cust_main.cgi?$custnum", -%# 'Main Menu' => popurl(2) %#)); -% - @@ -80,130 +11,210 @@
-% if ( $error ) { +% # raw error from below +% if ( $error ) { Error: <% $error %> % } -% -% -%#my $format = "%c %z (%Z)"; -%my $format = "%m/%d/%Y %T %z (%Z)"; -% -%#false laziness w/view/cust_main/packages.html -%#my( $billed_or_prepaid, -%my( $last_bill_or_renewed, $next_bill_or_prepaid_until ); -%unless ( $part_pkg->is_prepaid ) { -% #$billed_or_prepaid = 'billed'; -% $last_bill_or_renewed = 'Last bill'; -% $next_bill_or_prepaid_until = 'Next bill'; -%} else { -% #$billed_or_prepaid = 'prepaid'; -% $last_bill_or_renewed = 'Renewed'; -% $next_bill_or_prepaid_until = 'Prepaid until'; -%} -% -% - +% #or, regular error handler +<% include('/elements/error.html') %> <% ntable("#cccccc",2) %> Package number - <% $pkgnum %> + <% $cust_pkg->pkgnum %> Package - <% $pkg %> + <% $part_pkg->pkg %> - Comment - <% $comment %> + Custom + <% $part_pkg->custom %> - Order taker - <% $otaker %> + Comment + <% $part_pkg->comment %> - Setup date - - "> - - + Order taker + <% $cust_pkg->otaker %> - - <% $last_bill_or_renewed %> date - - "> - - - +% if ( $cust_pkg->setup && ! $cust_pkg->start_date ) { + <& .row_display, cust_pkg=>$cust_pkg, column=>'start_date', label=>'Start' &> +% } else { + <& .row_edit, cust_pkg=>$cust_pkg, column=>'start_date', label=>'Start' &> +% } + + <& .row_edit, cust_pkg=>$cust_pkg, column=>'setup', label=>'Setup' &> + <& .row_edit, cust_pkg=>$cust_pkg, column=>'last_bill', label=>$last_bill_or_renewed &> + <& .row_edit, cust_pkg=>$cust_pkg, column=>'bill', label=>$next_bill_or_prepaid_until &> + <& .row_display, cust_pkg=>$cust_pkg, column=>'adjourn', label=>'Adjournment', note=>'(will suspend this package when the date is reached)' &> + <& .row_display, cust_pkg=>$cust_pkg, column=>'susp', label=>'Suspension' &> + + <& .row_display, cust_pkg=>$cust_pkg, column=>'expire', label=>'Expiration', note=>'(will cancel this package when the date is reached)' &> + <& .row_display, cust_pkg=>$cust_pkg, column=>'cancel', label=>'Cancellation' &> + +<%def .row_edit> +<%args> + $cust_pkg + $column + $label + $note => '' + +% my $value = $cust_pkg->get($column); +% $value = $value ? time2str($format, $value) : ""; - <% $next_bill_or_prepaid_until %> date - - "> - - - - - Adjournment date + <% $label %> date - "> - -
(will suspend this package when the date is reached) + + +% if ( $note ) { +
<% $note %> +% } -% if ( $susp ) { + + + + +<%def .row_display> +<%args> + $cust_pkg + $column + $label + $note => '' + +% if ( $cust_pkg->get($column) ) { - Suspension date - <% time2str($format, $susp) %> + <% $label %> date + <% time2str($format,$cust_pkg->get($column)) %> +% if ( $note ) { +
<% $note %> +% } + % } + + - - Expiration date - - "> - -
(will cancel this package when the date is reached) - - -% if ( $cancel ) { +
+ +
- - Cancellation date - <% time2str($format, $cancel) %> - -% } +<% include('/elements/footer.html') %> +<%shared> +my $conf = new FS::Conf; +my $date_format = $conf->config('date_format') || '%m/%d/%Y'; - +my $format = $date_format. ' %T %z (%Z)'; - -
- - - +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates'); + + +my $error = ''; +my( $pkgnum, $cust_pkg ); + +if ( $cgi->param('error') ) { + + $pkgnum = $cgi->param('pkgnum'); + + if ( $cgi->param('error') =~ /^_/ ) { + + my @errors = (); + my %errors = map { $_=>1 } split(',', $cgi->param('error')); + $cgi->param('error', ''); + + if ( $errors{'_bill_areyousure'} ) { + if ( $cgi->param('bill') =~ /^([\s\d\/\:\-\(\w\)]*)$/ ) { + my $bill = $1; + push @errors, + "You are attempting to set the next bill date to $bill, which is + in the past. This will charge the customer for the interval + from $bill until now. Are you sure you want to do this? ". + ''; + } + } + + if ( $errors{'_setup_areyousure'} ) { + push @errors, + "You are attempting to remove the setup date. This will re-charge the + customer for the setup fee. Are you sure you want to do this? ". + ''; + } + + if ( $errors{'_start'} ) { + push @errors, + "You are attempting to add a start date to a package that has already + started billing."; + } + + $error = join('

', @errors ); + + } + + #get package record + $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); + die "No package!" unless $cust_pkg; + + foreach my $col (qw( start_date setup last_bill bill adjourn expire )) { + my $value = $cgi->param($col); + $cust_pkg->set( $col, $value ? parse_datetime($value) : '' ); + } + +} else { + + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "no pkgnum"; + $pkgnum = $1; + + #get package record + $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); + die "No package!" unless $cust_pkg; + +} + +my $part_pkg = qsearchs( 'part_pkg', { 'pkgpart' => $cust_pkg->pkgpart } ); + +my( $last_bill_or_renewed, $next_bill_or_prepaid_until ); +unless ( $part_pkg->is_prepaid ) { + #$billed_or_prepaid = 'billed'; + $last_bill_or_renewed = 'Last bill'; + $next_bill_or_prepaid_until = 'Next bill'; +} else { + #$billed_or_prepaid = 'prepaid'; + $last_bill_or_renewed = 'Renewed'; + $next_bill_or_prepaid_until = 'Prepaid until'; +} + +