+ my $report = SL::ReportGenerator->new(\%myconfig, $form);
+
+ @columns =
+ qw(ids transdate id type invnumber ordnumber cusordnumber name netamount tax amount paid
+ datepaid due duedate transaction_description notes salesman employee shippingpoint shipvia
+ marge_total marge_percent globalprojectnumber customernumber country ustid taxzone
+ payment_terms charts customertype direct_debit dunning_description department);
+
+ my $ct_cvar_configs = CVar->get_configs('module' => 'CT');
+ my @ct_includeable_custom_variables = grep { $_->{includeable} } @{ $ct_cvar_configs };
+ my @ct_searchable_custom_variables = grep { $_->{searchable} } @{ $ct_cvar_configs };
+
+ my %column_defs_cvars = map { +"cvar_$_->{name}" => { 'text' => $_->{description} } } @ct_includeable_custom_variables;
+ push @columns, map { "cvar_$_->{name}" } @ct_includeable_custom_variables;
+
+ my @hidden_variables = map { "l_${_}" } @columns;
+ push @hidden_variables, "l_subtotal", qw(open closed customer invnumber ordnumber cusordnumber transaction_description notes project_id transdatefrom transdateto duedatefrom duedateto
+ employee_id salesman_id business_id parts_partnumber parts_description department_id show_marked_as_closed);
+ push @hidden_variables, map { "cvar_$_->{name}" } @ct_searchable_custom_variables;
+
+ $href = build_std_url('action=ar_transactions', grep { $form->{$_} } @hidden_variables);
+
+ my %column_defs = (
+ 'ids' => { raw_header_data => SL::Presenter::Tag::checkbox_tag("", id => "check_all", checkall => "[data-checkall=1]"), align => 'center' },
+ 'transdate' => { 'text' => $locale->text('Date'), },
+ 'id' => { 'text' => $locale->text('ID'), },
+ 'type' => { 'text' => $locale->text('Type'), },
+ 'invnumber' => { 'text' => $locale->text('Invoice'), },
+ 'ordnumber' => { 'text' => $locale->text('Order'), },
+ 'cusordnumber' => { 'text' => $locale->text('Customer Order Number'), },
+ 'name' => { 'text' => $locale->text('Customer'), },
+ 'netamount' => { 'text' => $locale->text('Amount'), },
+ 'tax' => { 'text' => $locale->text('Tax'), },
+ 'amount' => { 'text' => $locale->text('Total'), },
+ 'paid' => { 'text' => $locale->text('Paid'), },
+ 'datepaid' => { 'text' => $locale->text('Date Paid'), },
+ 'due' => { 'text' => $locale->text('Amount Due'), },
+ 'duedate' => { 'text' => $locale->text('Due Date'), },
+ 'transaction_description' => { 'text' => $locale->text('Transaction description'), },
+ 'notes' => { 'text' => $locale->text('Notes'), },
+ 'salesman' => { 'text' => $locale->text('Salesperson'), },
+ 'employee' => { 'text' => $locale->text('Employee'), },
+ 'shippingpoint' => { 'text' => $locale->text('Shipping Point'), },
+ 'shipvia' => { 'text' => $locale->text('Ship via'), },
+ 'globalprojectnumber' => { 'text' => $locale->text('Document Project Number'), },
+ 'marge_total' => { 'text' => $locale->text('Ertrag'), },
+ 'marge_percent' => { 'text' => $locale->text('Ertrag prozentual'), },
+ 'customernumber' => { 'text' => $locale->text('Customer Number'), },
+ 'country' => { 'text' => $locale->text('Country'), },
+ 'ustid' => { 'text' => $locale->text('USt-IdNr.'), },
+ 'taxzone' => { 'text' => $locale->text('Steuersatz'), },
+ 'payment_terms' => { 'text' => $locale->text('Payment Terms'), },
+ 'charts' => { 'text' => $locale->text('Chart'), },
+ 'customertype' => { 'text' => $locale->text('Customer type'), },
+ 'direct_debit' => { 'text' => $locale->text('direct debit'), },
+ 'department' => { 'text' => $locale->text('Department'), },
+ dunning_description => { 'text' => $locale->text('Dunning level'), },
+ %column_defs_cvars,
+ );
+
+ foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber name datepaid employee shippingpoint shipvia transaction_description direct_debit)) {
+ my $sortdir = $form->{sort} eq $name ? 1 - $form->{sortdir} : $form->{sortdir};
+ $column_defs{$name}->{link} = $href . "&sort=$name&sortdir=$sortdir";
+ }
+
+ my %column_alignment = map { $_ => 'right' } qw(netamount tax amount paid due);
+
+ $form->{"l_type"} = "Y";
+ map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
+
+ $column_defs{ids}->{visible} = 'HTML';
+
+ $report->set_columns(%column_defs);
+ $report->set_column_order(@columns);
+
+ $report->set_export_options('ar_transactions', @hidden_variables, qw(sort sortdir));
+
+ $report->set_sort_indicator($form->{sort}, $form->{sortdir});
+
+ CVar->add_custom_variables_to_report('module' => 'CT',
+ 'trans_id_field' => 'customer_id',
+ 'configs' => $ct_cvar_configs,
+ 'column_defs' => \%column_defs,
+ 'data' => $form->{AR});
+
+ my @options;