Auftrags-Controller: überflüssiges "die"-Statement entfernt
[kivitendo-erp.git] / SL / Controller / BankTransaction.pm
index 48f35ed..9d432d5 100644 (file)
@@ -299,14 +299,21 @@ sub action_create_invoice {
     '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 {
@@ -976,6 +983,7 @@ sub load_ap_record_template_url {
     '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),
   );
 }
 
@@ -991,10 +999,18 @@ sub load_gl_record_template_url {
     '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) = @_;
 
@@ -1112,6 +1128,13 @@ GL-records will be deleted completely if a bank transaction was the source.
 
 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