Skocz do zawartości

[Sfera]Zmiana kursu walut

Polecane posty

Witam,

w jaki sposób zmienia się kurs walut w dokumencie ?

Obecnie mam coś takiego

IWalutyDaneDomyslne walutyDef = sfera.PodajObiektTypu<IWaluty>().DaneDomyslne;
ILinieKursowWalut linieKursow = sfera.PodajObiektTypu<ILinieKursowWalut>();
....
  
zk.Dane.Waluta = walutyDef.EUR;
var linia = linieKursow.Dane.Wszystkie().Where(l => l.Nazwa == "NBP - kursy średnie").FirstOrDefault();
var kurs = linieKursow.Dane.PobierzKursNaDzien(linia, walutyDef.EUR, walutyDef.PLN, DateTime.Now).KursyWalutyDokumentu.FirstOrDefault();
zk.Dane.KursWalutyDokumentu = kurs;

to zwraca błąd

Cytat

InsERT.Mox.DataAccess.UnsponsoredModificationException: Nie można zapisać zmian w danych, ponieważ wykryto w nich relację (KursWalutyDokumentu, LiniaKursowWalut) nieprzyłączoną do obiektu kontrolującego modyfikację danych.

 

 

Link to postu

KursWalutyDokumentu jest to encja przynależąca do danych dokumentu. Każdy dokument w walucie ma własną instancję tej klasy. Pobierając tą daną przy użyciu metody FirstOrDefault w taki sposób

var kurs = linieKursow.Dane.PobierzKursNaDzien(linia, walutyDef.EUR, walutyDef.PLN, DateTime.Now).KursyWalutyDokumentu.FirstOrDefault();

w rzeczywistości pobiera Pani instancję KursWalutyDokumentu przynależącą do jakiegoś innego wcześniej wystawionego dokumentu. Stąd też przy zapisie pojawia się błąd.

 

Aby prawidłowo ustawić kurs na dokumencie walutowym wystarczy wykonać taki kod

var kurs = linieKursow.Dane.PobierzKursNaDzien(linia, walutyDef.EUR, walutyDef.PLN, DateTime.Now);
...
zk.Dane.Waluta = walutyDef.EUR;
zk.Dane.KursWalutyDokumentu.TabelaKursowWalutPozycja = kurs;

Przy czym ważne jest, aby najpierw ustawić walutę, a potem dopiero kurs, gdyż po zmianie waluty program sam stworzy instancję klasy KursWalutyDokumentu i wypełni ją według ustawień programu.

 

Zastanawia mnie jednak dlaczego w ogóle chce Pani ręcznie podmieniać domyślnie ustawiony kurs waluty? W programie istnieje dosyć rozbudowana konfiguracja pozwalająca ustalić według jakich kryteriów kurs na dokumencie ma być ustalany.

obraz.png.5057484ab0eb0302a1836e1cca7295c5.png

Link to postu
×
×
  • Dodaj nową pozycję...