# Fill $::form from the template.
my $today = DateTime->today_local;
- $::form->{title} = "Add";
- $::form->{currency} = $template->currency->name;
- $::form->{direct_debit} = $template->direct_debit;
- $::form->{globalproject_id} = $template->project_id;
+ $::form->{title} = "Add";
+ $::form->{currency} = $template->currency->name;
+ $::form->{direct_debit} = $template->direct_debit;
+ $::form->{globalproject_id} = $template->project_id;
$::form->{transaction_description} = $template->transaction_description;
- $::form->{AR_chart_id} = $template->ar_ap_chart_id;
- $::form->{transdate} = $today->to_kivitendo;
- $::form->{duedate} = $today->to_kivitendo;
- $::form->{rowcount} = @{ $template->items };
- $::form->{paidaccounts} = 1;
- $::form->{$_} = $template->$_ for qw(department_id ordnumber taxincluded employee_id notes);
+ $::form->{AR_chart_id} = $template->ar_ap_chart_id;
+ $::form->{transdate} = $today->to_kivitendo;
+ $::form->{duedate} = $today->to_kivitendo;
+ $::form->{rowcount} = @{ $template->items };
+ $::form->{paidaccounts} = 1;
+ $::form->{$_} = $template->$_ for qw(department_id ordnumber taxincluded employee_id notes);
if ($template->customer) {
$::form->{customer_id} = $template->customer_id;
} (1..($::form->{rowcount} || 1));
$template->assign_attributes(
- template_type => 'ar_transaction',
- template_name => $new_name,
-
- currency_id => SL::DB::Manager::Currency->find_by(name => $::form->{currency})->id,
- ar_ap_chart_id => $::form->{AR_chart_id} || undef,
- customer_id => $::form->{customer_id} || undef,
- department_id => $::form->{department_id} || undef,
- project_id => $::form->{globalproject_id} || undef,
- employee_id => $::form->{employee_id} || undef,
- taxincluded => $::form->{taxincluded} ? 1 : 0,
- direct_debit => $::form->{direct_debit} ? 1 : 0,
- ordnumber => $::form->{ordnumber},
- notes => $::form->{notes},
+ template_type => 'ar_transaction',
+ template_name => $new_name,
+
+ currency_id => SL::DB::Manager::Currency->find_by(name => $::form->{currency})->id,
+ ar_ap_chart_id => $::form->{AR_chart_id} || undef,
+ customer_id => $::form->{customer_id} || undef,
+ department_id => $::form->{department_id} || undef,
+ project_id => $::form->{globalproject_id} || undef,
+ employee_id => $::form->{employee_id} || undef,
+ taxincluded => $::form->{taxincluded} ? 1 : 0,
+ direct_debit => $::form->{direct_debit} ? 1 : 0,
+ ordnumber => $::form->{ordnumber},
+ notes => $::form->{notes},
transaction_description => $::form->{transaction_description},
- items => \@items,
+ items => \@items,
);
eval {
$form->{title} = $locale->text('Invoices, Credit Notes & AR Transactions');
- $form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all_sorted(query => [ deleted => 0 ]);
- $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted;
- $form->{ALL_BUSINESS_TYPES} = SL::DB::Manager::Business->get_all_sorted;
+ $form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee ->get_all_sorted(query => [ deleted => 0 ]);
+ $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted;
+ $form->{ALL_BUSINESS_TYPES} = SL::DB::Manager::Business ->get_all_sorted;
+ $form->{ALL_TAXZONES} = SL::DB::Manager::TaxZone ->get_all_sorted;
$form->{CT_CUSTOM_VARIABLES} = CVar->get_configs('module' => 'CT');
($form->{CT_CUSTOM_VARIABLES_FILTER_CODE},
qw(ids transdate id type invnumber ordnumber cusordnumber donumber deliverydate 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);
+ payment_terms charts customertype direct_debit dunning_description department attachments);
my $ct_cvar_configs = CVar->get_configs('module' => 'CT');
my @ct_includeable_custom_variables = grep { $_->{includeable} } @{ $ct_cvar_configs };
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 show_not_mailed
- shippingpoint shipvia);
+ shippingpoint shipvia taxzone_id);
push @hidden_variables, map { "cvar_$_->{name}" } @ct_searchable_custom_variables;
$href = $params{want_binary_pdf} ? '' : build_std_url('action=ar_transactions', grep { $form->{$_} } @hidden_variables);
'direct_debit' => { 'text' => $locale->text('direct debit'), },
'department' => { 'text' => $locale->text('Department'), },
dunning_description => { 'text' => $locale->text('Dunning level'), },
+ attachments => { 'text' => $locale->text('Attachments'), },
%column_defs_cvars,
);
- foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber donumber deliverydate name datepaid employee shippingpoint shipvia transaction_description direct_debit department)) {
+ foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber donumber deliverydate name datepaid employee shippingpoint shipvia transaction_description direct_debit department taxzone)) {
my $sortdir = $form->{sort} eq $name ? 1 - $form->{sortdir} : $form->{sortdir};
$column_defs{$name}->{link} = $href . "&sort=$name&sortdir=$sortdir";
}
$subtotals{marge_percent} = $subtotals{netamount} ? ($subtotals{marge_total} * 100 / $subtotals{netamount}) : 0;
$totals{marge_percent} = $totals{netamount} ? ($totals{marge_total} * 100 / $totals{netamount} ) : 0;
+ # Preserve $ar->{type} before changing it to the abbreviation letter for
+ # getting files from file management below.
+ $ar->{object_type} = $ar->{type};
+
my $is_storno = $ar->{storno} && $ar->{storno_id};
my $has_storno = $ar->{storno} && !$ar->{storno_id};
align => 'center',
};
+ if ($::instance_conf->get_doc_storage && $form->{l_attachments}) {
+ my @files = SL::File->get_all_versions(object_id => $ar->{id},
+ object_type => $ar->{object_type} || 'invoice',
+ file_type => 'attachment',);
+ if (scalar @files) {
+ my $html = join '<br>', map { SL::Presenter::FileObject::file_object($_) } @files;
+ my $text = join "\n", map { $_->file_name } @files;
+ $row->{attachments} = { 'raw_data' => $html, data => $text };
+ } else {
+ $row->{attachments} = { };
+ }
+
+ }
+
my $row_set = [ $row ];
if (($form->{l_subtotal} eq 'Y')