<% include("/elements/header.html",'Customer package - Edit dates') %> %#, menubar( %# "View this customer (#$custnum)" => popurl(2). "view/cust_main.cgi?$custnum", %#));
% # raw error from below % if ( $error ) { Error: <% $error %> % } % #or, regular error handler <% include('/elements/error.html') %> <% ntable("#cccccc",2) %> Package number <% $cust_pkg->pkgnum %> Package <% $part_pkg->pkg %> Custom <% $part_pkg->custom %> Comment <% $part_pkg->comment %> Order taker <% $cust_pkg->otaker %> % 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) : ""; <% $label %> date % if ( $note ) {
<% $note %> % } <%def .row_display> <%args> $cust_pkg $column $label $note => '' % if ( $cust_pkg->get($column) ) { <% $label %> date <% time2str($format,$cust_pkg->get($column)) %> % if ( $note ) {
<% $note %> % } % }
<% 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)'; <%init> 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'; }