Roman Kopycki 2 Napisano 8 Września 2021 Udostępnij Napisano 8 Września 2021 w Rozbicie pozycji na dostawy - sferycznie Witam. Mam listę składającą się z Symbol Asortymentu, ilość, Kod Dostawy Czy można taką listę sprawdzić za pomocą sfery przed wystawieniem dokumentu by użytkownikowi przed wystawieniem dokumentu wskazać brakując pozycje. Jeśli tak to poproszę o który pozwoli mi porównać z moją listą . DataPrzychodu, SymbolAsortymentu, kod Dostawy, Ilośc, Dostępne, Zadysponowane. Coś na przykładzie Link to postu
Mateusz Matuszewski 91 Napisano 9 Września 2021 Udostępnij Napisano 9 Września 2021 w Rozbicie pozycji na dostawy - sferycznie Najprościej byłoby oczywiście sprawdzić dostępne partie już po dodaniu pozycji na dokument (przez interfejs rozbicia pozycji), ale można też uzyskać podobny wynik pobierając z bazy danych informacje o dostępnych ilościach, łącząc je następnie z danymi z listy wejściowej: var symboleAsortymentu = pozycje.Select(p => p.SymbolAsortymentu).Distinct().ToList(); var kodyDostawy = pozycje.Select(p => p.KodDostawy).Distinct().ToList(); var stany = sfera.PodajObiektTypu<IMagazynier>() .Dane .Przychody() .Where(p => symboleAsortymentu.Contains(p.Asortyment.Symbol)) .Select(p => new { DataPrzychodu = p.Data, SymbolAsortymentu = p.Asortyment.Symbol, KodDostawy = p.Partia.Numer, DostepnaIlosc = p.Ilosc - ((decimal?)p.Rozchody.Sum(r => r.Ilosc) ?? 0m), Zadysponowane = (decimal?)p.Rozchody.Where(r => r.SesjaRezerwujaca != null).Sum(r => r.Ilosc) ?? 0m }) .Where(p => kodyDostawy.Contains(p.KodDostawy)) .ToList(); var braki = (from pozycja in pozycje join stan in stany on new { pozycja.SymbolAsortymentu, pozycja.KodDostawy } equals new { stan.SymbolAsortymentu, stan.KodDostawy } into stanJoin from stan in stanJoin.DefaultIfEmpty() select new { DataPrzychodu = stan?.DataPrzychodu, SymbolAsortymentu = pozycja.SymbolAsortymentu, KodDostawy = pozycja.KodDostawy, Ilosc = pozycja.Ilosc, Dostepne = stan?.DostepnaIlosc ?? 0m, Zadysponowane = stan?.Zadysponowane ?? 0m }) .ToList(); Link to postu
Roman Kopycki 2 Napisano 28 Września 2021 Autor Udostępnij Napisano 28 Września 2021 w Rozbicie pozycji na dostawy - sferycznie Dziękuję Działa idealnie. Ale kontynuując wątek rozbicia. Zapisałem sferycznie fakturę. Jak można po jej zapisaniu znaleźć listę rozbitych pozycji. np. fs.Dane.Pozycje.FirstOrDefault() i co dalej bo wiem ze są Link to postu
Mateusz Matuszewski 91 Napisano 29 Września 2021 Udostępnij Napisano 29 Września 2021 w Rozbicie pozycji na dostawy - sferycznie Trzeba najpierw przejść do pozycji dokumentu magazynowego, z którego będzie można pobrać informacje o rozchodach pozycji. fs.Dane .Pozycje .FirstOrDefault() .PozycjeRealizowane .Where(r => (r.TypDokumentuRealizowanego & (int)(TypDokumentu.WydanieZewnetrzne | TypDokumentu.KorektaWydaniaZewnetrznego)) != 0) .Select(r => r.PozycjaRealizowana) .SelectMany(p => p.Wydanie?.Rozchody ?? p.Rezerwacja?.Rozchody) .Where(r => r != null) .GroupBy(r => r.PrzychodZrodlowy) .Select(r => new { SymbolAsortymentu = r.Key.Asortyment.Symbol, DataPrzychodu = r.Key.Data, Numer = r.Key.Partia.Przyjecie.PozycjaDokumentu.Dokument.NumerWewnetrzny.PelnaSygnatura, KodDostawy = r.Key.Partia.Numer, TerminWaznosc = r.Key.Partia.Termin, Opis = r.Key.Partia.Komentarz, Ilosc = r.Sum(g => g.Ilosc) }) .ToList(); Link to postu
Polecane posty