public string StokYaslandirmaRaporCek(string MalKoduBas, string MalKoduBit, string DepoBas, string DepoBit) { List <MySti> list = new List <MySti>(); List <MySti> RT = new List <MySti>(); try { var deposql = ""; if (!string.IsNullOrEmpty(DepoBas) && !string.IsNullOrEmpty(DepoBit)) { deposql = string.Format("AND DST.Depo BETWEEN '{0}' AND '{1}'", DepoBas, DepoBit); } else if (string.IsNullOrEmpty(DepoBas) && !string.IsNullOrEmpty(DepoBit)) { deposql = string.Format("AND DST.Depo <= '{0}'", DepoBit); } else if (!string.IsNullOrEmpty(DepoBas) && string.IsNullOrEmpty(DepoBit)) { deposql = string.Format("AND DST.Depo >= '{0}'", DepoBas); } var malsql = ""; if (!string.IsNullOrEmpty(MalKoduBas) && !string.IsNullOrEmpty(MalKoduBit)) { malsql = string.Format("AND STK.MalKodu BETWEEN '{0}' AND '{1}'", MalKoduBas, MalKoduBit); } else if (string.IsNullOrEmpty(MalKoduBas) && !string.IsNullOrEmpty(MalKoduBit)) { malsql = string.Format("AND STK.MalKodu <= '{0}'", MalKoduBit); } else if (!string.IsNullOrEmpty(MalKoduBas) && string.IsNullOrEmpty(MalKoduBit)) { malsql = string.Format("AND STK.MalKodu >= '{0}'", MalKoduBas); } var sorgu = string.Format( @"SELECT STI.EvrakNo, (CASE STI.KynkEvrakTip WHEN 58 THEN STI.VadeTarih ELSE STI.Tarih END) as Tarih , ISNULL(STI.CHK,'') AS CHK, ISNULL(CHK.Unvan1,'') as Unvan, STI.Birim, STI.BirimMiktar, STI.KynkEvrakTip , (DST.DvrMiktar+DST.GirMiktar-DST.CikMiktar) as DepoStokMiktar, DST.Depo, DEP.DepoAdi , STI.MalKodu, STK.MalAdi FROM FINSAT6{0}.FINSAT6{0}.STI (nolock) INNER JOIN FINSAT6{0}.FINSAT6{0}.DST (nolock) ON DST.Depo=STI.Depo AND DST.MalKodu=STI.MalKodu LEFT JOIN FINSAT6{0}.FINSAT6{0}.CHK (nolock) ON CHK.HesapKodu=STI.Chk INNER JOIN FINSAT6{0}.FINSAT6{0}.STK (nolock) ON STK.MalKodu=STI.MalKodu INNER JOIN FINSAT6{0}.FINSAT6{0}.DEP (nolock) ON DST.Depo=DEP.Depo WHERE (STI.KynkEvrakTip=4 OR (STI.KynkEvrakTip=58 AND STI.IslemTip=0)) {1} {2} AND STI.BirimMiktar>0 AND DST.Depo LIKE 'H%' AND (DST.DvrMiktar+DST.GirMiktar-DST.CikMiktar)>0 ORDER BY STI.MalKodu, STI.Tarih DESC" , vUser.SirketKodu, deposql, malsql); RT = db.Database.SqlQuery <MySti>(sorgu).ToList(); Dictionary <string, decimal> dic = new Dictionary <string, decimal>(); foreach (MySti item in RT) { var depo = item.Depo.ToString(); var malKodu = item.MalKodu.ToString(); var key = string.Format("{0}-{1}", depo, malKodu); var depoStokMik = (decimal)item.DepoStokMiktar; if (dic.ContainsKey(key)) { if (dic[key] >= depoStokMik) //depoStokMik { continue; } } else { dic.Add(key, 0); } var sti = new MySti { EvrakNo = item.EvrakNo.ToString(), Tarih = (int)item.Tarih, Chk = item.Chk.ToString(), Unvan = item.Unvan.ToString(), Birim = item.Birim.ToString(), BirimMiktar = (decimal)item.BirimMiktar, Depo = depo, MalKodu = malKodu, MalAdi = item.MalAdi.ToString(), KynkEvrakTip = (short)item.KynkEvrakTip, Kod13 = depoStokMik// depoStokMik; }; sti.Kod1 = string.Format("{0} Depo Stok Miktarı: {1:N2}", sti.MalKodu, sti.Kod13); sti.Kod2 = string.Format("{0} {1}", depo, item.DepoAdi); dic[key] += sti.BirimMiktar; list.Add(sti); if (dic[key] > depoStokMik) //depoStokMik { var fark = dic[key] - depoStokMik; //depoStokMik; sti.BirimMiktar -= fark; } } } catch (Exception) { return(""); } var json = new JavaScriptSerializer().Serialize(list); return(json); }
public string DisDepoStokMaliyetCek(string MalKoduBas, string MalKoduBit, bool isletmeBazli, bool depoBazli, Nullable <int> datebas, Nullable <int> datebit) { List <MySti> list = new List <MySti>(); List <MySti> RT = new List <MySti>(); var malkoduaraliksql = ""; if (!string.IsNullOrEmpty(MalKoduBas) || !string.IsNullOrEmpty(MalKoduBit)) { if (string.IsNullOrEmpty(MalKoduBas)) { MalKoduBas = "09500000000000000000"; } if (string.IsNullOrEmpty(MalKoduBit)) { MalKoduBit = "09599999999999999999"; } malkoduaraliksql = string.Format("AND MalKodu BETWEEN '{0}' AND '{1}' ", MalKoduBas, MalKoduBit); } var tarihsql = ""; if (datebas != null && datebit != null) { tarihsql = string.Format("AND STI.Tarih BETWEEN {0} AND {1}", datebas, datebit); } else if (datebas == null && datebit != null) { tarihsql = string.Format("AND STI.Tarih <= {0}", datebit); } else if (datebas != null && datebit == null) { tarihsql = string.Format("AND STI.Tarih >= {0}", datebas); } var sorgu = ""; if (depoBazli == false && isletmeBazli == false) { sorgu = string.Format( @"SELECT A.MalKodu, STK.MalAdi, STK.Birim1 as Birim, ISNULL(A.Fiyat,0) as BirimFiyat FROM FINSAT6{0}.FINSAT6{0}.STK (nolock) INNER JOIN ( SELECT MalKodu, SUM(Tutar)/NULLIF(SUM(Miktar),0) as Fiyat FROM FINSAT6{0}.FINSAT6{0}.STI (nolock) WHERE (STI.KynkEvrakTip=4 OR (STI.KynkEvrakTip=58 AND STI.IslemTip=0)) AND Depo LIKE 'H%' {1} {2} GROUP BY MalKodu ) as A ON A.MalKodu=STK.MalKodu" , vUser.SirketKodu , malkoduaraliksql , tarihsql); RT = db.Database.SqlQuery <MySti>(sorgu).ToList(); foreach (MySti item in RT) { var sti = new MySti { MalKodu = item.MalKodu, MalAdi = item.MalAdi, Birim = item.Birim, BirimFiyat = item.BirimFiyat }; list.Add(sti); } } else { var where = ""; if (malkoduaraliksql != "") { where = "WHERE " + malkoduaraliksql.Substring(4); } sorgu = string.Format( @"SELECT A.Chk, CHK.Unvan1, A.Depo, A.MalKodu, A.Tutar, A.BirimMiktar , STK.MalAdi, STK.Birim1 as Birim , ISNULL(A.Tutar / NULLIF(A.BirimMiktar,0),0) as BirimFiyat , DEP.DepoAdi FROM ( SELECT Chk, Depo, MalKodu, SUM(Tutar) as Tutar, SUM(BirimMiktar) as BirimMiktar FROM ( SELECT Chk, Depo, MalKodu, Tutar, BirimMiktar FROM FINSAT6{0}.FINSAT6{0}.STI (nolock) WHERE STI.KynkEvrakTip=4 {2} AND Depo LIKE 'H%' union all SELECT DEP.Yetkili2, STI.Depo, MalKodu, Tutar, BirimMiktar FROM FINSAT6{0}.FINSAT6{0}.STI (nolock) INNER JOIN FINSAT6{0}.FINSAT6{0}.DEP (nolock) on DEP.Depo=STI.Depo WHERE STI.KynkEvrakTip=58 AND STI.IslemTip=0 AND STI.Depo LIKE 'H%' {2} ) as B {1} GROUP BY Chk, Depo, MalKodu ) as A INNER JOIN FINSAT6{0}.FINSAT6{0}.STK (nolock) ON STK.MalKodu=A.MalKodu INNER JOIN FINSAT6{0}.FINSAT6{0}.CHK (nolock) ON CHK.HesapKodu=A.Chk INNER JOIN FINSAT6{0}.FINSAT6{0}.DEP (nolock) ON DEP.Depo=A.Depo" , vUser.SirketKodu , where , tarihsql); List <MySti> list2 = new List <MySti>(); RT = db.Database.SqlQuery <MySti>(sorgu).ToList(); if (RT.Count() > 0) { var Sayac = 0; try { foreach (MySti item in RT) { var sti = new MySti { Chk = item.Chk, Unvan = item.Unvan1, Depo = item.Depo, MalKodu = item.MalKodu, Tutar = item.Tutar, BirimMiktar = item.BirimMiktar, MalAdi = item.MalAdi, Birim = item.Birim, BirimFiyat = item.BirimFiyat, DepoAdi = item.DepoAdi }; list2.Add(sti); Sayac++; } } catch (Exception) { } } if (depoBazli && isletmeBazli) { list.AddRange(list2); } else if (depoBazli) { foreach (var item in list2.GroupBy(t => new { t.Depo, t.MalKodu })) { var sti = new MySti { Depo = item.Key.Depo, DepoAdi = item.First().DepoAdi, MalKodu = item.Key.MalKodu, MalAdi = item.First().MalAdi, Birim = item.First().Birim }; var tutar = item.Sum(t => t.Tutar); var birimMiktar = item.Sum(t => t.BirimMiktar); if (birimMiktar > 0) { sti.BirimFiyat = tutar / birimMiktar; } list.Add(sti); } } else if (isletmeBazli) { foreach (var item in list2.GroupBy(t => new { t.Chk, t.MalKodu })) { var sti = new MySti { Chk = item.Key.Chk, Unvan = item.First().Unvan, MalKodu = item.Key.MalKodu, MalAdi = item.First().MalAdi, Birim = item.First().Birim }; var tutar = item.Sum(t => t.Tutar); var birimMiktar = item.Sum(t => t.BirimMiktar); if (birimMiktar > 0) { sti.BirimFiyat = tutar / birimMiktar; } list.Add(sti); } } } var json = new JavaScriptSerializer().Serialize(list); return(json); }