Skocz do zawartości

[Sfera zdarzeniowa] Automatyczne ustawianie podmiotu odbiorcy i nabywcy


Zobacz rozwiązanie Rozwiązane przez Paweł Kubacki,

Polecane posty

Moim celem jest aby po wybraniu klienta w ofercie również z automatu ustawiało takie dane w odbiorcy i nabywcy takie same jak klienta (tak samo jak domyślnie się dzieje z płatnikiem)

image.png.a1be877177cf6ac17d05c63257c983ff.png

Mam następujący kod:
 

public override void PoZmianieWlasciwosciObiektu(IKontekstZdarzeniaPoZmianieWlasciwosciObiektu<IOferta> kontekst)
{
    if (kontekst.RodzajZmiany == RodzajZmianyWartosci.PrzypisanieNowejWartosci &&
        kontekst.SposobEdycji == SposobEdycji.Okno &&
        kontekst.NazwaWlasciwosci == "Podmiot")
    {
        if (kontekst.ObiektBiznesowy.Dane.Odbiorca == null && 
            kontekst.ObiektBiznesowy.Dane.Podmiot != null)
        {
            var podmiotId = kontekst.ObiektBiznesowy.Dane.Podmiot.Id;
            kontekst.ObiektBiznesowy.PodmiotyDokumentu.SprobujUstawicNabywceWedlugId(podmiotId);
            kontekst.ObiektBiznesowy.PodmiotyDokumentu.SprobujUstawicOdbiorceWedlugId(podmiotId);
        }
    }

    base.PoZmianieWlasciwosciObiektu(kontekst);
}

Podany kod działa, ale tak jakby nie do końca.

Podczas ustawiania odbiorcy rzuca w debugerze wyjątkiem dotyczącym wartości null (prawdopodobnie dotyczy to PodmiotHistoria), co ciekawe pomimo tego że rzuci wyjątkiem to odbiorce ustawi, a z kolei przy nabywcy nie rzuci wyjątkiem, ale ustawi go w taki nie do końca poprawny sposób, czyli nie będzie miał opcji Pokaż, Popraw itp (jak na poniższym screenie):
image.png.b001a7bd2bba28aaf94984f8ee4ca827.png

Wersja nexo której używam to 45, jakieś pomysły co mogę robić niepoprawnie?

 

Link to postu
  • Rozwiązanie

Rzeczywiście w momencie reakcji na zdarzenie zmiany właściwości Podmiot, metody ustawiające nabywcę i odbiorcę nie działają najlepiej. Można jednak zareagować na zmianę innej właściwości - PodmiotWybrany. Wówczas osiągnie Pan spodziewany efekt.

if (kontekst.RodzajZmiany == RodzajZmianyWartosci.PrzypisanieNowejWartosci &&
    kontekst.SposobEdycji == SposobEdycji.Okno &&
    kontekst.NazwaWlasciwosci == "PodmiotWybrany")
{
    if (kontekst.ObiektBiznesowy.Dane.Odbiorca == null &&
        kontekst.ObiektBiznesowy.Dane.PodmiotWybrany != null &&
        kontekst.ObiektBiznesowy.Dane.PodmiotWybrany.PodmiotDlaKtoregoHistoria != null)
    {
        var podmiotId = kontekst.ObiektBiznesowy.Dane.PodmiotWybrany.PodmiotDlaKtoregoHistoria.Id;
        kontekst.ObiektBiznesowy.PodmiotyDokumentu.SprobujUstawicNabywceWedlugId(podmiotId);
        kontekst.ObiektBiznesowy.PodmiotyDokumentu.SprobujUstawicOdbiorceWedlugId(podmiotId);
    }
}

 

  • Dziękuję 1
Link to postu
  • 1 miesiąc temu...
×
×
  • Dodaj nową pozycję...