Dialogbuchungen aus Bankbewegungen teilweise Verbuchungen erlauben
authorJan Büren <jan@kivitendo.de>
Fri, 1 Mar 2019 13:55:06 +0000 (14:55 +0100)
committerJan Büren <jan@kivitendo.de>
Fri, 1 Mar 2019 15:10:41 +0000 (16:10 +0100)
Da vorher nur komplette Bankbewegungen verbucht werden konnten,
war es nicht sinnvoll Teilbeträge im Dialog zu buchen.
Das Verfahren ist jetzt geändert und übergeben wird der aktuelle
Rest-Betrag der Bankbewegung

SL/Controller/BankTransaction.pm
bin/mozilla/gl.pl

index 2ec9563..2b33831 100644 (file)
@@ -569,7 +569,6 @@ sub save_single_bank_transaction {
     my $payment_received      = $bank_transaction->amount > 0;
     my $payment_sent          = $bank_transaction->amount < 0;
 
-    croak("No amount left to assign") if ($not_assigned_amount <= 0);
 
     foreach my $invoice_id (@{ $params{invoice_ids} }) {
       my $invoice = SL::DB::Manager::Invoice->find_by(id => $invoice_id) || SL::DB::Manager::PurchaseInvoice->find_by(id => $invoice_id);
@@ -860,7 +859,7 @@ sub load_gl_record_template_url {
     controller                           => 'gl.pl',
     action                               => 'load_record_template',
     id                                   => $template->id,
-    'form_defaults.amount_1'             => abs($self->transaction->amount), # always positive
+    'form_defaults.amount_1'             => abs($self->transaction->not_assigned_amount), # always positive
     'form_defaults.transdate'            => $self->transaction->transdate_as_date,
     'form_defaults.callback'             => $self->callback,
     'form_defaults.bt_id'                => $self->transaction->id,
index c39facd..5f65720 100644 (file)
@@ -1365,7 +1365,9 @@ sub post_transaction {
       die "guru meditation error: Can only assign amount to one bank account booking" if scalar @{ $payment } > 1;
 
       # credit/debit * -1 matches the sign for bt.amount and bt.invoice_amount
-      die "Can only assign the full bank amount to a single general ledger booking" unless $bt->amount == $payment->[0]->amount * -1;
+      die "Can only assign the full (partial) bank amount to a single general ledger booking"
+        unless $bt->not_assigned_amount == $payment->[0]->amount * -1;
+
       $bt->update_attributes(invoice_amount => $bt->invoice_amount + ($payment->[0]->amount * -1));
 
       # create record_link