commit 26456e6e241a4487e5b52c70e36d275eb073db5b
Author: Moritz Bunkus <m.bunkus@linet.de>
Date:   Fri Mar 5 15:01:47 2010 +0100

    Bei Zahlungseingang/-ausgang Meldung anzeigen, wenn offene Rechnungen in anderen WÃ¤hrungen vorhanden sind
    
    Fix fÃ¼r Bug 1050.

diff --git a/SL/CP.pm b/SL/CP.pm
index b7e6241de..f6c8c1a8e 100644
--- a/SL/CP.pm
+++ b/SL/CP.pm
@@ -160,16 +160,14 @@ sub get_openinvoices {
   my $buysell = $form->{vc} eq 'customer' ? "buy" : "sell";
   my $arap = $form->{arap} eq "ar" ? "ar" : "ap";
 
-  my $curr_null = $form->{curreny} ? '' : ' OR a.curr IS NULL'; # fix: after sql-injection fix, curr is inserted as NULL, before that as ''
-
   my $query =
      qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, a.curr | .
      qq|FROM $arap a | .
-     qq|WHERE (a.${vc}_id = ?) AND (a.curr = ? $curr_null) AND NOT (a.amount = paid)| .
+     qq|WHERE (a.${vc}_id = ?) AND (COALESCE(a.curr, '') = ?) AND NOT (a.amount = a.paid)| .
      qq|ORDER BY a.id|;
   my $sth = prepare_execute_query($form, $dbh, $query,
                                   conv_i($form->{"${vc}_id"}),
-                                  $form->{currency});
+                                  "$form->{currency}");
 
   $form->{PR} = [];
   while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
@@ -182,6 +180,16 @@ sub get_openinvoices {
   }
 
   $sth->finish;
+
+  $query = <<SQL;
+    SELECT COUNT(*)
+    FROM $arap
+    WHERE (${vc}_id = ?)
+      AND (COALESCE(curr, '') <> ?)
+      AND (amount <> paid)
+SQL
+  ($form->{openinvoices_other_currencies}) = selectfirst_array_query($form, $dbh, $query, conv_i($form->{"${vc}_id"}), "$form->{currency}");
+
   $dbh->disconnect;
 
   $main::lxdebug->leave_sub();
@@ -363,7 +371,7 @@ sub process_payment {
 		# Hier werden negativen ZahlungseingÃ¤nge abgefangen
 		# Besser: in OberflÃ¤che schon prÃ¼fen
 		# Zahlungsein- und ausgÃ¤nge sind immer positiv
-    $dbh->rollback;	
+    $dbh->rollback;
     $rc = 0;
   }
   if ($form->round_amount($paymentamount, 2) == 0) {
diff --git a/bin/mozilla/cp.pl b/bin/mozilla/cp.pl
index 51624331c..f4a9efb20 100644
--- a/bin/mozilla/cp.pl
+++ b/bin/mozilla/cp.pl
@@ -317,6 +317,19 @@ sub form_header {
 $jsscript
 |;
 
+  if ($form->{openinvoices_other_currencies}) {
+    my $warning = $form->{vc} eq 'customer' ? $::locale->text('There are #1 more open invoices for this customer with other currencies.', $form->{openinvoices_other_currencies})
+                :                             $::locale->text('There are #1 more open invoices from this vendor with other currencies.',  $form->{openinvoices_other_currencies});
+
+    print qq|
+
+  <input type="hidden" name="openinvoices_other_currencies" value="| . H($form->{openinvoices_other_currencies}) . qq|">
+  <tr>
+   <td><b>| . $::locale->text('Note') . qq|: $warning</b></td>
+  </tr>
+|;
+  }
+
   $lxdebug->leave_sub();
 }
 
diff --git a/locale/de/all b/locale/de/all
index 4d3e03959..35e8d33f9 100644
--- a/locale/de/all
+++ b/locale/de/all
@@ -1644,6 +1644,8 @@ $self->{texts} = {
   'The wrong taxkeys for AP and AR transactions have been fixed.' => 'Die Probleme mit falschen Steuerschlüssel bei Kreditoren- und Debitorenbuchungen wurden behoben.',
   'The wrong taxkeys for inventory transactions for sales and purchase invoices have been fixed.' => 'Die falschen Steuerschlüssel für Warenbestandsbuchungen bei Einkaufs- und Verkaufsrechnungen wurden behoben.',
   'The wrong taxkeys have been fixed.' => 'Die Steuerschlüssel wurden nach Ihrer Auswahl korrigiert.',
+  'There are #1 more open invoices for this customer with other currencies.' => 'Es gibt #1 weitere offene Rechnungen für diesen Kunden, die in anderen Währungen ausgestellt wurden.',
+  'There are #1 more open invoices from this vendor with other currencies.' => 'Es gibt #1 weitere offene Rechnungen von diesem Lieferanten, die in anderen Währungen ausgestellt wurden.',
   'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'There are four tax zones.'   => 'Es gibt vier Steuerzonen.',
   'There are no items in stock.' => 'Dieser Artikel ist nicht eingelagert.',
diff --git a/locale/de/cp b/locale/de/cp
index 9de006c67..11ee88810 100644
--- a/locale/de/cp
+++ b/locale/de/cp
@@ -106,6 +106,7 @@ $self->{texts} = {
   'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'Es wurde kein oder ein unbekanntes Authentifizierungsmodul in "config/authentication.pl" angegeben.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
+  'Note'                        => 'Hinweis',
   'Number'                      => 'Nummer',
   'Others'                      => 'Andere',
   'PAYMENT POSTED'              => 'Rechung gebucht',
@@ -159,6 +160,8 @@ $self->{texts} = {
   'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
+  'There are #1 more open invoices for this customer with other currencies.' => 'Es gibt #1 weitere offene Rechnungen für diesen Kunden, die in anderen Währungen ausgestellt wurden.',
+  'There are #1 more open invoices from this vendor with other currencies.' => 'Es gibt #1 weitere offene Rechnungen von diesem Lieferanten, die in anderen Währungen ausgestellt wurden.',
   'To (email)'                  => 'An',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
