예제 #1
0
        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);
        }
예제 #2
0
        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);
        }