]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DB/Helper/Payment.pm
Fertigen ohne Prüfung nach Bestand
[mfinanz.git] / SL / DB / Helper / Payment.pm
index 660794428aaac513e3445c050d692b55945550bf..5b3a138b531f7d0977ef1c2633fda7720559fe7f 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 
 use parent qw(Exporter);
 our @EXPORT = qw(pay_invoice);
 
 use parent qw(Exporter);
 our @EXPORT = qw(pay_invoice);
-our @EXPORT_OK = qw(skonto_date skonto_charts amount_less_skonto within_skonto_period percent_skonto reference_account reference_amount open_amount open_percent remaining_skonto_days skonto_amount check_skonto_configuration valid_skonto_amount get_payment_suggestions validate_payment_type open_sepa_transfer_amount get_payment_select_options_for_bank_transaction create_bank_transaction exchangerate);
+our @EXPORT_OK = qw(skonto_date skonto_charts amount_less_skonto within_skonto_period percent_skonto reference_account reference_amount open_amount open_percent remaining_skonto_days skonto_amount check_skonto_configuration valid_skonto_amount get_payment_suggestions validate_payment_type open_sepa_transfer_amount get_payment_select_options_for_bank_transaction create_bank_transaction exchangerate forex);
 our %EXPORT_TAGS = (
   "ALL" => [@EXPORT, @EXPORT_OK],
 );
 our %EXPORT_TAGS = (
   "ALL" => [@EXPORT, @EXPORT_OK],
 );
@@ -743,11 +743,16 @@ sub create_bank_transaction {
     amount                => $::form->round_amount($amount, 2),
     currency              => $self->currency->id,
     remote_name           => $self->customervendor->depositor,
     amount                => $::form->round_amount($amount, 2),
     currency              => $self->currency->id,
     remote_name           => $self->customervendor->depositor,
-    purpose               => $self->invnumber
+    purpose               => $params{purpose} || $self->invnumber
   )->save;
 };
 
 
   )->save;
 };
 
 
+sub forex {
+  my ($self) = @_;
+  $self->currency_id == $::instance_conf->get_currency_id ? return 0 : return 1;
+};
+
 sub _round {
   my $value = shift;
   my $num_dec = 2;
 sub _round {
   my $value = shift;
   my $num_dec = 2;
@@ -1103,9 +1108,31 @@ transactions from invoices to have something to test payments against.
  my $ap = SL::DB::Manager::Invoice->find_by(id => 41);
  $ap->create_bank_transaction(amount => $ap->amount/2, transdate => DateTime->today->add(days => 5));
 
  my $ap = SL::DB::Manager::Invoice->find_by(id => 41);
  $ap->create_bank_transaction(amount => $ap->amount/2, transdate => DateTime->today->add(days => 5));
 
+To create a payment for 3 invoices that were all paid together, all with skonto:
+ my $ar1 = SL::DB::Manager::Invoice->find_by(invnumber=>'20');
+ my $ar2 = SL::DB::Manager::Invoice->find_by(invnumber=>'21');
+ my $ar3 = SL::DB::Manager::Invoice->find_by(invnumber=>'22');
+ $ar1->create_bank_transaction(amount  => ($ar1->amount_less_skonto + $ar2->amount_less_skonto + $ar2->amount_less_skonto),
+                               purpose => 'Rechnungen 20, 21, 22',
+                              );
+
 Amount is always relative to the absolute amount of the invoice, use positive
 values for sales and purchases.
 
 Amount is always relative to the absolute amount of the invoice, use positive
 values for sales and purchases.
 
+The following params can be passed to override the defaults:
+
+=over 2
+
+=item * amount
+
+=item * purpose
+
+=item * chart_id (the chart the amount is to be paid to)
+
+=item * transdate
+
+=back
+
 =item C<exchangerate>
 
 Returns 1 immediately if the record uses the default currency.
 =item C<exchangerate>
 
 Returns 1 immediately if the record uses the default currency.
@@ -1115,6 +1142,10 @@ invoice's transdate, returning 'buy' for sales, 'sell' for purchases.
 
 If no exchangerate can be found for that day undef is returned.
 
 
 If no exchangerate can be found for that day undef is returned.
 
+=item C<forex>
+
+Returns 1 if record uses a different currency, 0 if the default currency is used.
+
 =back
 
 =head1 TODO AND CAVEATS
 =back
 
 =head1 TODO AND CAVEATS