public ZwrotAnalizaDokHandlowyCollectionOld GetContainsPozycja(PozycjaZwrotuAnalizaOld pozycja) { ZwrotAnalizaDokHandlowyCollectionOld list = new ZwrotAnalizaDokHandlowyCollectionOld(); foreach (ZwrotAnalizaDokHandlowyOld item in this.List) { if (item.Contains(pozycja)) { list.AddItem(item); } } return(list); }
public ZwrotAnaliza AnalizujZwrot(Session session) { if (this.Kontrahent != null) { var kontrahent = this.Kontrahent.GetKontrahentEnova((EnovaContext)session.DataContext); if (kontrahent != null) { ZwrotAnaliza analiza = new ZwrotAnaliza(); var pozycje = this.GetPozycjeEnova((EnovaContext)session.DataContext); var hm = Enova.Old.Handel.HandelModule.GetInstance(session); var defFV = hm.DefDokHandlowych.FakturaSprzedaży; DateTime dateFrom = this.DataDodania.AddDays(-IloscDniAnalizy); ZwrotAnalizaDokHandlowyCollectionOld dokumenty = new ZwrotAnalizaDokHandlowyCollectionOld(); foreach (var pozycja in pozycje) { pozycja.PozycjeDokHan = pozycja.Towar.PozycjeDokHandlowych.WgDefDokHan[defFV].WgDaty[dateFrom].WgKontrahenta[kontrahent] .WgStanuDokHan[StanDokumentuHandlowego.Zatwierdzony]; if (pozycja.PozycjeDokHan.Count() == 0) { var zamienniki = pozycja.Towar.ZamiennikiTowaru.Select(zt => zt.Zamiennik).ToList(); foreach (var z in zamienniki) { var pozDok = z.PozycjeDokHandlowych.WgDefDokHan[defFV].WgDaty[dateFrom].WgKontrahenta[kontrahent].WgStanuDokHan[StanDokumentuHandlowego.Zatwierdzony]; if (pozDok.Count() > 0) { pozycja.Towar = z; pozycja.PozycjeDokHan = pozDok; break; } } } else { var iloscPoKorektachSuma = pozycja.PozycjeDokHan.ToList().Sum(p => p.IloscPoKorektach); if (iloscPoKorektachSuma < pozycja.Ilosc) { var zamienniki = pozycja.Towar.ZamiennikiTowaru.Select(zt => zt.Zamiennik).ToList(); foreach (var z in zamienniki) { var pozDok = z.PozycjeDokHandlowych.WgDefDokHan[defFV].WgDaty[dateFrom].WgKontrahenta[kontrahent].WgStanuDokHan[StanDokumentuHandlowego.Zatwierdzony]; if (pozDok.Count() > 0) { var iloscZamPoKorektachSuma = pozDok.ToList().Sum(p => p.IloscPoKorektach); if (iloscZamPoKorektachSuma >= pozycja.Ilosc) { pozycja.Towar = z; pozycja.PozycjeDokHan = pozDok; break; } } } } } pozycja.DokHandlowe = pozycja.PozycjeDokHan.ToList().Select(p => p.Dokument); foreach (var dh in pozycja.DokHandlowe) { dokumenty.Add(dh, pozycja); } } dokumenty = dokumenty.GetOrderByDataDesc(); Type ptype = typeof(PozycjaZwrotuAnalizaOld); foreach (var pozycja in pozycje) { pozycja.DokHandloweAnaliza = dokumenty.GetContainsPozycja(pozycja).GetOrderByDescIloscPozycji(); foreach (var dh in pozycja.DokHandlowe) { int idx = dokumenty.IndexOf(dh); if (idx <= 9) { var pdh = pozycja.PozycjeDokHan.WgDokument[dh].First(); var pkorekty = pdh.PozycjaKorygującaOstatnia; var ilosc = pkorekty != null ? pkorekty.IloscValue : pdh.IloscValue; var pinfo = ptype.GetProperty("Dokument" + idx.ToString()); var piinfo = ptype.GetProperty("Dokument" + idx.ToString() + "Ilosc"); if (pinfo != null) { pinfo.SetValue(pozycja, dh, null); } if (piinfo != null) { piinfo.SetValue(pozycja, ilosc, null); } } } } analiza.Dokumenty = dokumenty; analiza.Pozycje = pozycje; return(analiza); } } return(null); }