Radomił Ząbik 310 Napisano 4 Lipca 2017 Udostępnij Napisano 4 Lipca 2017 w [Sfera] Problem ze zmianą daty w RW Mam jakiś dziwny błąd przy jednym rodzaju RW, który w sumie pojawił się w wersji 16. Jest to proste RW, ze skutkiem magazynowym odłożonym, bez obsługi partii. Wszystkie pozycje wczytują się prawidłowo, ale pojawia się błąd, który według wiersza debugowania wskazuje na zmianę daty wystawienia - co ciekawe, w innych przypadkach, gdzie działam na partiach takiego problemu nie ma. Pojawia się on też bez względu na to czy data jest zmieniana czy jest dzisiejsza: Cytat System.InvalidOperationException: Nieznany błąd w implementacji extensionowej metody PozycjaDokumentu.PodajMetodeWyznaczaniaKosztu. Niestety, nie jestem w stanie tego odszyfrować, całościowo kod dla tego modułu, wygląda tak: // przygotowanie danych IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>(); IJednostkiMiar jednostkiMiary = sfera.PodajObiektTypu<IJednostkiMiar>(); IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>(); IUzytkownicy uzytkownicy = sfera.PodajObiektTypu<IUzytkownicy>(); IStatusyDokumentowDaneDomyslne statusyDD = sfera.PodajObiektTypu<IStatusyDokumentow>().DaneDomyslne; Konfiguracja konfRW = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.RozchodWewnetrzny; int stock; stock = results.stock; Magazyn mag = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Id == stock).FirstOrDefault(); int spot; spot = results.spot; Oddzial odd = sfera.PodajObiektTypu<IOddzialy>().Dane.Wszystkie().Where(o => o.Id == spot).FirstOrDefault(); IRozchodyWewnetrzne dokumentRozchodu = sfera.PodajObiektTypu<IRozchodyWewnetrzne>(); using (IRozchodWewnetrzny rw = dokumentRozchodu.Utworz(konfRW)) { if(spot!=100000) rw.Dane.MiejsceWprowadzenia = odd; rw.Dane.Magazyn = mag; rw.Dane.Uwagi = results.comment; rw.Dane.StatusDokumentu = statusyDD.Rozchod_Odlozony; // wypełnienie pozycji foreach(var posadd in results.pos) { int posid; decimal posquantity; posid = posadd.id; posquantity = posadd.quantity; Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == posid).First(); var poz = rw.Pozycje.Dodaj(a,1, a.JednostkaSprzedazy); poz.Ilosc = posquantity; Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - pozycja: "+a.Symbol+" - "+a.Nazwa); rw.Przelicz(); } // ustawienie daty string dateString = results.date+" 12:00:00,000"; DateTime rwDate = DateTime.ParseExact(dateString,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture); rw.Dane.DataWprowadzenia = rwDate; // osoba wystawiająca string sign = results.sign; rw.Dane.WystawilaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba; rw.Zapisz(); } Link to postu
Radomił Ząbik 310 Napisano 4 Lipca 2017 Autor Udostępnij Napisano 4 Lipca 2017 w [Sfera] Problem ze zmianą daty w RW NIEWAŻNE! Błąd był w danych wsadowych, były pozycje z ilością 0 lub ujemną, co mogło by w sumie spowodować nieprawidłowość. Jedynie co, to mogło by to weryfikować na poziomie wstawiania pozycji, aby nie wyrzucało dokumentu na koniec. Link to postu
Polecane posty