(RTC) Rechnung in FremdWährung mit Zahlung in MW ausgleichen

24. April 2014 08:20

Hallo an alle,

ich wollte nochmal meine letzte Frage etwas umgestalten da ich da wohl für etwas Verwirrung gesorgt habe. Also ich nehme jetzt mal ein Beispiel ich habe eine Rechnung in CHF und habe immer für den 01. eines Monats einen neuen Wechselkurs hinterlegt. Nun habe ich folgendes Problem, wenn ich eine Rechnung am 31.01 in CHF buche nimmt er ja korrekter Weise den Wechselkurs der an diesem Tag gültig ist, diesen drucke ich auch auf der Rechnung an. Also die einzelnen Posten sind dann in der Währung CHF und die Gesamtsumme auch aber es steht dann ein kleiner Text mit auf der Rechnung das die Rechnung mit dem wechselkurs xy in Euro (MW) bezahlt werden kann.

Soweit so gut, wenn ich nun einen Zahlungsausgleich buche mit dem gleichen Wechselkurs wie dem von der Rechnung dann passt das ja alles und ich bekomme den Ausgleich komplett hin, nun habe ich mal die Schulungsunterlagen durchgeschaut und das Kapitel zur Mehrwährungsfähigkeit durchgearbeitet. Dort steht nun drin wie ich eine bei einer Zahlung einen bestimmten Wechselkurs hinterlegen kann bzw. das ich die Rechnungskurse regulieren kann. So wie ich das nun aber verstehe betrifft das die Wechselkurse von den Buchblattzeilen. Aber ich bekomme ja in meinem Szenario die Zahlungen in Euro in das Buchblatt und buche ja in MW die Zahlung und in FW die Rechnung. So das sich dann in der Saldenliste des Debitors folgende Buchungen befinden:

Rechnung 73,70CHF 59,88MW
Zahlung 59,88MW

Wenn ich den Ausgleich zwischen beiden Posten (über die Funktion "Posten ausgleichen"), an dem Tag der Rechnung also gleicher Währungskurs, durchführe dann geht das Restlos auf aber wenn ich einen anderen Wechselkurs verwende dann geht das nicht auf und ich habe ein Restsaldo für diesen Ausgleich. Was mache ich denn mit dem? Wenn ich die Schulungsunterlagen richtig verstehe dann muss ich nun einen Währungsverlust buchen und damit dann den Restsaldo ausgleichen. Geht das nicht einfacher? Das einfachste währe ja das ich beim Ausgleich sagen könnte "nutze Wechselkurs vom" und fertig. Diese Funktion finde ich so nicht. Hat jemand sowas schonmal umgesetzt oder gibt es ein Addon das diese Funktion unterstützt?

VG
René

Re: (RTC) Rechnung in FremdWährung mit Zahlung in MW ausglei

24. April 2014 11:05

Hallo René,
kockiren hat geschrieben:Geht das nicht einfacher? Das einfachste währe ja das ich beim Ausgleich sagen könnte "nutze Wechselkurs vom" und fertig. Diese Funktion finde ich so nicht. Hat jemand sowas schonmal umgesetzt oder gibt es ein Addon das diese Funktion unterstützt?

ja, sowas in der Art. Wir haben das in unserer SachOP-Verwaltung (Plexada OpenItems) mit drin, das man zum selben Kurs ausgleichen kann. Das lässt sich auch auf Debitoren/Kreditoren übertragen, da sie technisch ähnlich funktionieren. Das grundsätzliche Problem ist aber, das so ein Ausgleich nur unter der Bedingung erlaubt ist, das es sich um ein Währungswechselgeschäft handelt. Genau deswegen haben wir die Funktion auf das selbe Buchungsdatum eingeschränkt - diese Einschränkung kann man auch nicht machen, aber nicht ohne eine entsprechende Bestätigung durch WP oderso. Diese Posten dürfen dann auch nicht reguliert werden... oder kann es auch sein das der Kunde in FW zahlt?

LG Jens

Re: (RTC) Rechnung in FremdWährung mit Zahlung in MW ausglei

24. April 2014 11:27

Hallo Jens,

vielen Dank für deine Antwort, nein es kann nicht vorkommen das der Kunde in FW zahlt, wenn wir die besagten Rechnungen raussenden dann steht der Rechnungsbetrag immer in Euro fest und nicht in der FW, wenn ein Kunde in Fremdwährung bezahlt dann fehlt der Bereich mit dem Wechselkurs und dann bekommen wir die Zahlung auch in FW, da gibt es ja auch gar kein Problem da ich dann ja in der FW Zeile den Entsprechenden Wechselkurs angeben kann. Ich habe ja nur das Problem wenn ich die Rechnung in FW erstelle und dann auf dem Rechnungsausdruck angebe der Rechnungsbetrag in Euro (Wechselkurs von dem Tag) muss dann und dann bezahlt werden. Wenn dann die Zahlung nen paar Tage später kommt könnte ich die Zahlung natürlich erstmal mit dem Buchungsdatum = Rechnungsdatum buchen und bekomme dann den für mich richtigen Wechselkurs aber das ist ja nun alles andere als Sinnvoll.

Ich würde gern beim Ausgleich den für den Ausgleich zu verwendenden Wechselkurs (bzw. Wechselkursdatum) angeben wollen damit ich dann kein Restsaldo mehr habe. Das wir das dann als Wechselkurs-gewinn oder -verlust buchen ist laut Steuerberater nicht richtig (zumindest nicht in unserem Fall)

Re: (RTC) Rechnung in FremdWährung mit Zahlung in MW ausglei

24. April 2014 11:51

Hallo René,

dann könntet ihr das Feature wohl so (ohne die Datumsprüfung) nehmen. Zeit für ne PN würde ich sagen :-)

LG Jens

Re: (RTC) Rechnung in FremdWährung mit Zahlung in MW ausglei

28. April 2014 13:34

Hallo Jens,

erstmal vielen Dank für die Hilfe. Ich habe jetzt mal eine paar Anpassungen vorgenommen und habe das nun so gelöst das ich in den Rechnungen ein Button habe (Buche Rechnungsbetrag in MW) den ich in der Codeunit 12 in den beiden Funktion zum Buchen der Debitoren und Kreditorenposten abfrage und wenn dieser gesetzt ist lege ich die Beträge (Betrag, Restbetrag, Sollbetrag, Habenbetrag und Ursprungsbetrag) in MW an und lass den Währungscode aus. Damit wird die Rechnung in Fremdwährung gebucht und die Debitoren bzw. Kreditorenposten in der MW. Damit habe ich keine Probleme beim Ausgleich und meine Berichte passen auch weiterhin.

Im Detail hab ich folgendes gemacht (exemplarisch für eine Verkaufsrechnung), in den Tabellen "Sales Header" und "Sales Inv. Header" habe ich das Feld "PostAmountInLcy" als Bool angelegt und in den Pages entsprechend eingeblendet. Dann habe ich in der Codeunit 80 das Feld "PostAmountInLcy" an die Tabelle "Sales Inv. Header" übergeben so das dieses Flag beim buchen erhalten bleibt. Als nächstes habe ich in der CodeUnit 12 in der Funktion PostCust() folgende Änderungen gemacht:

Code:
  PostAmountInLCY := FALSE;
  SalesInvHeader.SETRANGE("No.","Document No.");
  IF SalesInvHeader.FINDFIRST THEN
    PostAmountInLCY := SalesInvHeader.PostAmountInLCY;
     
  IF PostAmountInLCY THEN
    CustLedgEntry."Currency Code" := ''
  ELSE
    CustLedgEntry."Currency Code" := "Currency Code";
   
  IF PostAmountInLCY THEN
    DtldCVLedgEntryBuf.Amount := "Amount (LCY)"
  ELSE
    DtldCVLedgEntryBuf.Amount := Amount;

  IF PostAmountInLCY THEN
    DtldCVLedgEntryBuf."Additional-Currency Amount" := "Amount (LCY)"
  ELSE
    DtldCVLedgEntryBuf."Additional-Currency Amount" := Amount;
   
  IF PostAmountInLCY THEN
    DtldCVLedgEntryBuf."Currency Code" := ''
  ELSE
    DtldCVLedgEntryBuf."Currency Code" := "Currency Code";
     
  IF PostAmountInLCY THEN
    DtldCVLedgEntryBuf."Currency Code" := ''
  ELSE
    DtldCVLedgEntryBuf."Currency Code" := "Currency Code";


Wenn ich nun eine Verkaufsrechnung buche und das Flag auf true setze dann wird die Rechnung in FW gebucht und die Debitorenposten in MW gebucht. Damit kann ich den Ausgleich in MW vornehmen, ich habe das jetzt mehrfach getestet und konnte keine Fehler feststellen. Sollte jemand eine Anmerkung haben, immer her damit :-)

VG
René

Re: (RTC) Rechnung in FremdWährung mit Zahlung in MW ausglei

28. April 2014 21:32

Hallo René,

danke für die Rückmeldung. Und Oops... das sieht auf den ersten Blick nicht ganz richtig aus, die Berichtswährung dürfte zerschossen sein. Eigentlich sollte die Behandlung anders laufen:

- keine Änderung in CU12 nötig
- in CU 80 und 90 (und 442, 444 für die Anzahlungen) sollte eigentlich nur eine kleine Änderung nötig sein:

(Beispiel CU 80)
Code:
...
    InvPostingBuffer[1].DELETEALL;

    // Post customer entry
    Window.UPDATE(4,1);
    GenJnlLine.INIT;
    GenJnlLine."Posting Date" := "Posting Date";
    GenJnlLine."Document Date" := "Document Date";
    GenJnlLine.Description := "Posting Description";
    GenJnlLine."Shortcut Dimension 1 Code" := "Shortcut Dimension 1 Code";
    GenJnlLine."Shortcut Dimension 2 Code" := "Shortcut Dimension 2 Code";
    GenJnlLine."Reason Code" := "Reason Code";
    GenJnlLine."Account Type" := GenJnlLine."Account Type"::Customer;
    GenJnlLine."Account No." := "Bill-to Customer No.";
    GenJnlLine."Document Type" := GenJnlLineDocType;
    GenJnlLine."Document No." := GenJnlLineDocNo;
    GenJnlLine."External Document No." := GenJnlLineExtDocNo;
    // Beginn Behandlung "PostAmountInLcy"
    if PostAmountInLCY then begin
      GenJnlLine.Amount := -TotalSalesLineLCY."Amount Including VAT";
    end else begin
      //Standard
      GenJnlLine."Currency Code" := "Currency Code";
      GenJnlLine.Amount := -TotalSalesLine."Amount Including VAT";
      GenJnlLine."Source Currency Code" := "Currency Code";
      GenJnlLine."Source Currency Amount" := -TotalSalesLine."Amount Including VAT";
      GenJnlLine."Amount (LCY)" := -TotalSalesLineLCY."Amount Including VAT";
    end;
    // Ende Behandlung "PostAmountInLcy"
    IF SalesHeader."Currency Code" = '' THEN
      GenJnlLine."Currency Factor" := 1
    ELSE
      GenJnlLine."Currency Factor" :=  SalesHeader."Currency Factor";
    GenJnlLine.Correction := Correction;
...


Was gemacht wird:

- keinen Währungscode mitgeben
- nur Betrag wird gefüllt, den Rest macht CU12 selbst
- Da man definiert das der Debitorenposten in MW zu buchen ist, gibt es auch keine Beziehung zur Berichtswährung (die Belegwährung sein könnte). Die BW-Beträge müssen in diesem Fall immer aus MW errechnet werden, was CU12 auch wieder selbst macht.
- Die selbe Logik muss auch für den Debitor-Gegenposten (Balance Account ist gefüllt) eingebaut werden.

Und das sollte es eigentlich sein.

LG Jens