Skocz do zawartości

[Sfera] Zmiana waluty na dokumencie ZK a płatności


Zobacz rozwiązanie Rozwiązane przez Wojciech Szopiński,

Polecane posty

Dzień dobry,

potrzebujemy za pomocą sfery zmienić walutę (np. z EUR na USD) na dokumencie ZK. Na niektórych dokumentach będą dodane płatności.

Walutę i kurs wiem jak odpowiednio ustawić dzięki temu tematowi.
Problemem są płatności, które nie ustawiają/przeliczają się poprawnie po zmianie waluty.

Jak to zrobić, żeby odwzorować to, co dzieje się przy zmianie waluty przez Subiekta nexo?
Da się to jakoś zrobić, żeby płatności robiły się jakoś same automatycznie, czy trzeba będzie jednak to ręcznie przeliczać?

Link to postu
  • Rozwiązanie

Jeśli chce Pan zachować "procent" płatności przy przewalutowywaniu dokumentu wystarczy przed zmianą waluty ustawić odpowiedni tryb przeliczania:

using (IZamowienieOdKlienta zamowienie = zamowienia.Znajdz(...))
{
	zamowienie.Platnosci.TrybPrzeliczania |= TrybPrzeliczaniaPlatnosci.PrzeliczanieWgProcentu;
  	// zmiana waluty
}

Warto jednak wspomnieć, że w przypadku gdy zmienia Pan walutę na dokumencie z już dodanymi pozycjami to samo ustawianie jej tak jak to zostało opisane w przytoczonym wątku może być niewystarczające gdyż wtedy NIE zostaną przeliczone odpowiednio ceny na pozycjach więc będziemy mieli "pomieszane różne systemy walutowe". Można wtedy skorzystać z metody Przewalutuj, która przelicza również odpowiednio ceny na pozycjach:

ILinieKursowWalut linieKursow = sfera.LinieKursowWalut();
var linia = linieKursow.Dane.Wszystkie().Where(...).FirstOrDefault();
using (IZamowienieOdKlienta zamowienie = zamowienia.Znajdz(...))
{
    Waluta usd = sfera.Waluty().DaneDomyslne.USD;
    Waluta pln = waluty.DaneDomyslne.PLN;
    zamowienie.Platnosci.TrybPrzeliczania |= TrybPrzeliczaniaPlatnosci.PrzeliczanieWgProcentu;
    zamowienie.ObslugaWaluty.Przewalutuj(
        // ustawiana waluta:
        usd
        // wybrana linia kursów walut:
        , linia 
        // kurs na wybrany dzień:
        , linieKursow.Dane.PobierzKursNaDzien(linia, usd, pln, zamowienie.Dane.DataWprowadzenia)
        , true , null , null);
    if (!zamowienie.Zapisz())
        zamowienie.WypiszBledy();
}

 

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