<& email-customers.html, 'form_action' => 'email-customer-statement.html', 'title' => 'Send statement to customer', 'no_search_fields' => [ 'start_date', 'end_date' ], 'alternate_form' => $alternate_form, 'post_search_hook' => $post_search_hook, 'acl' => $acl, 'process_url' => 'process/email-customer-statement.html', &> <%init> my $acl = 'Resend invoices'; die "access denied" unless $FS::CurrentUser::CurrentUser->access_right($acl); my $alternate_form = sub { # this could maaaybe be a separate element, for cleanliness # but it's really only for use by this page, and it's not overly complicated my $noinit = 0; return join("\n", '', ( map { my $label = ucfirst($_); $label =~ s/_/ /; include('/elements/tr-input-date-field.html',{ 'name' => $_, 'value' => ( scalar($cgi->param($_)) || '' ), 'label' => $label, 'noinit' => $noinit++ }); } qw( start_date end_date ) ), '
', '', '', ); }; my $post_search_hook = sub { my %opt = @_; return unless $cgi->param('preview'); my $cust_main = qsearchs('cust_main',$opt{'search'}) or die "Could not find customer"; # so that the statement indicates the latest date my $date_format = $opt{'conf'}->config('date_format') || '%m/%d/%Y'; $cgi->param('end_date', time2str($date_format, time)) unless $cgi->param('end_date'); # set from/subject/html_body based on date range $cgi->param('from', $opt{'conf'}->config('invoice_from', $cust_main->agentnum) ); # shortcut for common text my $summary_text = $cust_main->name_short . ($cgi->param('start_date') ? ' from ' : '') . $cgi->param('start_date') . ($cgi->param('end_date') ? ' through ' : '') . $cgi->param('end_date'); my $company_name = $opt{'conf'}->config('company_name', $cust_main->agentnum); my $subject = "$company_name statement for $summary_text"; $cgi->param('subject', $subject); $cgi->param('body', "

$subject

". include('/elements/customer-statement.html', 'history' => [ $cust_main->payment_history( map { $_ => parse_datetime(scalar($cgi->param($_))) } qw( start_date end_date ), ), ], ) ); };