Payment-Helfer: Rechnen mit undefinierten Werten vermeiden
[kivitendo-erp.git] / SL / DB / Helper / Payment.pm
index 3d97be0..64d6a63 100644 (file)
@@ -119,7 +119,7 @@ sub pay_invoice {
   my $fx_gain_loss_amount = 0; # for fx_gain and fx_loss
 
   my $db = $self->db;
-  $db->do_transaction(sub {
+  $db->with_transaction(sub {
     my $new_acc_trans;
 
     # all three payment type create 1 AR/AP booking (the paid part)
@@ -304,11 +304,13 @@ sub pay_invoice {
       $datev->export;
 
       if ($datev->errors) {
-        # this exception should be caught by do_transaction, which handles the rollback
+        # this exception should be caught by with_transaction, which handles the rollback
         die join "\n", $::locale->text('DATEV check returned errors:'), $datev->errors;
       }
     }
 
+    1;
+
   }) || die t8('error while paying invoice #1 : ', $self->invnumber) . $db->error . "\n";
 
   return 1;
@@ -385,7 +387,7 @@ sub open_amount {
   # if the difference is 0.01 Cent this may end up as 0.009999999999998
   # numerically, so round this value when checking for cent threshold >= 0.01
 
-  return $self->amount - $self->paid;
+  return ($self->amount // 0) - ($self->paid // 0);
 };
 
 sub open_percent {