'filter.fromdate' => $::form->{filter}->{fromdate},
));
- $self->render(
- 'bank_transactions/create_invoice',
- { layout => 0 },
- title => t8('Create invoice'),
- TEMPLATES_GL => $use_vendor_filter && @{ $templates_ap } ? undef : $templates_gl,
- TEMPLATES_AP => $templates_ap,
- vendor_name => $use_vendor_filter && @{ $templates_ap } ? $vendor_of_transaction->name : undef,
- );
+ # if we have exactly one ap match, use this directly
+ if (1 == scalar @{ $templates_ap }) {
+ $self->redirect_to($self->load_ap_record_template_url($templates_ap->[0]));
+
+ } else {
+ my $dialog_html = $self->render(
+ 'bank_transactions/create_invoice',
+ { layout => 0, output => 0 },
+ title => t8('Create invoice'),
+ TEMPLATES_GL => $use_vendor_filter && @{ $templates_ap } ? undef : $templates_gl,
+ TEMPLATES_AP => $templates_ap,
+ vendor_name => $use_vendor_filter && @{ $templates_ap } ? $vendor_of_transaction->name : undef,
+ );
+ $self->js->run('kivi.BankTransaction.show_create_invoice_dialog', $dialog_html)->render;
+ }
}
sub action_ajax_payment_suggestion {
'form_defaults.paid_1_suggestion' => $::form->format_amount(\%::myconfig, -1 * $self->transaction->amount, 2),
'form_defaults.AP_paid_1_suggestion' => $self->transaction->local_bank_account->chart->accno,
'form_defaults.callback' => $self->callback,
+ 'form_defaults.notes' => $self->convert_purpose_for_template($template, $self->transaction->purpose),
);
}
'form_defaults.callback' => $self->callback,
'form_defaults.bt_id' => $self->transaction->id,
'form_defaults.bt_chart_id' => $self->transaction->local_bank_account->chart->id,
- 'form_defaults.description' => $self->transaction->purpose,
+ 'form_defaults.description' => $self->convert_purpose_for_template($template, $self->transaction->purpose),
);
}
+sub convert_purpose_for_template {
+ my ($self, $template, $purpose) = @_;
+
+ # enter custom code here
+
+ return $purpose;
+}
+
sub setup_search_action_bar {
my ($self, %params) = @_;
TODO: we still rely on linked_records for the check boxes
+=item C<convert_purpose_for_template>
+
+This method can be used to parse, filter and convert the bank transaction's
+purpose string before it will be assigned to the description field of a
+gl transaction or to the notes field of an ap transaction.
+You have to write your own custom code.
+
=back
=head1 AUTHOR