/// <summary>
        /// stok malzeme sil
        /// </summary>
        public JsonResult Delete2(int ID)
        {
            if (CheckPerm(Perms.MalKabul, PermTypes.Deleting) == false)
            {
                return(Json(new Result(false, "Yetkiniz yok"), JsonRequestBehavior.AllowGet));
            }
            var _Result = IrsaliyeDetay.Delete(ID);

            return(Json(_Result, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// listeyi günceller
        /// </summary>
        public PartialViewResult GridPartial(int ID)
        {
            if (CheckPerm(Perms.MalKabul, PermTypes.Reading) == false)
            {
                return(null);
            }
            var list = IrsaliyeDetay.GetList(ID);
            var irs  = Irsaliye.Detail(ID);

            ViewBag.IrsaliyeId = ID;
            ViewBag.Onay       = irs.Onay;
            ViewBag.Yetki      = CheckPerm(Perms.MalKabul, PermTypes.Writing);
            return(PartialView("_GridPartial", list));
        }
        public JsonResult InsertMalzeme(frmMalzeme tbl)
        {
            if (CheckPerm(Perms.MalKabul, PermTypes.Writing) == false)
            {
                return(null);
            }
            // sadece irsaliye daha onaylanmamışsa yani işlemleri bitmemişse ekle
            var irs = Irsaliye.Detail(tbl.IrsaliyeId);

            if (irs.Onay == false)
            {
                return(Json(IrsaliyeDetay.Insert(tbl, irs.DepoID), JsonRequestBehavior.AllowGet));
            }
            return(Json(new Result(false, "Bu irsaliyeye ürün eklenemez"), JsonRequestBehavior.AllowGet));
        }
Пример #4
0
        public ActionResult Step3(frmSiparisIadeSteps tbl)
        {
            if (CheckPerm(Perms.SatistanIade, PermTypes.Writing) == false)
            {
                return(Redirect("/"));
            }
            var kontrol1 = DateTime.TryParse(tbl.Tarih, out DateTime tmpTarih);

            if (kontrol1 == false)
            {
                db.Logger(vUser.UserName, "", fn.GetIPAddress(), "Tarih hatası: " + tbl.Tarih, "", "WMS/ReturnSale/Step3");
                return(Redirect("/"));
            }
            // variables and consts
            var tarih = tmpTarih.ToOADateInt();
            int today = fn.ToOADate(), time = fn.ToOATime();
            var idDepo = Store.Detail(tbl.DepoID).ID;
            // yeni görev
            var GorevNo = db.SettingsGorevNo(today, idDepo).FirstOrDefault();
            var cevap   = db.InsertIadeIrsaliye(vUser.SirketKodu, idDepo, GorevNo, vUser.SirketKodu, tarih, "Irs: " + tbl.EvrakNo + ", Tedarikçi: " + tbl.HesapKodu, false, ComboItems.Satıştanİade.ToInt32(), vUser.UserName, today, time, tbl.HesapKodu, "", 0, "").FirstOrDefault();

            for (int i = 0; i < tbl.MalKodus.Length; i++)
            {
                IrsaliyeDetay.Operation(new IRS_Detay()
                {
                    IrsaliyeID    = cevap.IrsaliyeID.Value,
                    MalKodu       = tbl.MalKodus[i],
                    Birim         = tbl.Birims[i],
                    Miktar        = tbl.Miktars[i],
                    KynkSiparisNo = tbl.EvrakNos[0],
                    KynkSiparisID = tbl.IDs[i]
                });
            }
            // listeyi getir
            var sql   = string.Format("EXEC FINSAT6{0}.wms.getIrsaliyeDetay {1}", vUser.SirketKodu, cevap.IrsaliyeID.Value);
            var list2 = db.Database.SqlQuery <frmSiparisMalzeme>(sql).ToList();

            ViewBag.GorevID = cevap.GorevID.Value;
            ViewBag.DepoID  = idDepo;
            return(View("Step3", list2));
        }
Пример #5
0
        public ActionResult Step3(frmSiparisOnay tbl)
        {
            if (tbl.DepoID == "0" || tbl.checkboxes == "")
            {
                return(RedirectToAction("Index"));
            }
            if (CheckPerm(Perms.AlimdanIade, PermTypes.Writing) == false)
            {
                return(Redirect("/"));
            }
            tbl.checkboxes = tbl.checkboxes.Left(tbl.checkboxes.Length - 1);
            var checkList  = tbl.checkboxes.Split('#');
            var evrak      = tbl.EvrakNos.Split('-')[0];
            var hesapKodu  = tbl.EvrakNos.Split('-')[1];
            var malkodlari = new List <string>();
            var birimler   = new List <string>();
            var miktars    = new List <decimal>();
            var rowID      = new List <int>();
            var i          = 0;

            // malkodları,miktarları,birimleri ayır
            foreach (var item in checkList)
            {
                if (item != "")
                {
                    string[] tmp2 = item.Split('!');

                    malkodlari.Add(tmp2[0]);
                    birimler.Add(tmp2[1]);
                    miktars.Add(tmp2[2].Replace(".", ",").ToDecimal());
                    rowID.Add(tmp2[4].Replace(".", ",").ToInt32());
                }
            }

            if (checkList == null)
            {
                return(RedirectToAction("Index"));
            }
            // variables and consts
            int    today = fn.ToOADate(), time = fn.ToOATime();
            var    idDepo = db.Depoes.Where(m => m.DepoKodu == tbl.DepoID).Select(m => m.ID).FirstOrDefault();
            var    GorevNo = db.SettingsGorevNo(today, idDepo).FirstOrDefault();
            string evraknolar = "", alıcılar = "";
            var    cevap = new InsertIadeIrsaliye_Result();
            Result _Result;

            // loop the list
            cevap = db.InsertIadeIrsaliye(vUser.SirketKodu, idDepo, GorevNo, GorevNo, today, "", true, ComboItems.Alımdanİade.ToInt32(), vUser.UserName, today, time, hesapKodu, hesapKodu, 0, evrak).FirstOrDefault();
            foreach (var item in checkList)
            {
                // get stok
                var stokMiktari = db.GetStock(idDepo, malkodlari[i], birimler[i], false).FirstOrDefault();
                if (stokMiktari != null)
                {
                    // sti tablosu
                    var sti = new IRS_Detay()
                    {
                        IrsaliyeID    = cevap.IrsaliyeID.Value,
                        MalKodu       = malkodlari[i],
                        Birim         = birimler[i],
                        Miktar        = miktars[i] <= stokMiktari.Value ? miktars[i] : stokMiktari.Value,
                        KynkSiparisNo = evrak,
                        KynkSiparisID = rowID[i]
                    };
                    _Result = IrsaliyeDetay.Operation(sti);
                }

                i++;
            }

            // görev tablosu için tekrar yeni ve sade bir liste lazım
            var grv = db.Gorevs.Where(m => m.ID == cevap.GorevID).FirstOrDefault();

            grv.Bilgi = "Irs: " + evraknolar + " Alıcı: " + alıcılar;
            db.SaveChanges();
            // get gorev details
            var sql = string.Format("SELECT wms.IRS_Detay.MalKodu, SUM(wms.IRS_Detay.Miktar) AS Miktar, wms.IRS_Detay.Birim " +
                                    "FROM wms.IRS_Detay INNER JOIN wms.GorevIRS ON wms.IRS_Detay.IrsaliyeID = wms.GorevIRS.IrsaliyeID " +
                                    "WHERE(wms.GorevIRS.GorevID = {0}) " +
                                    "GROUP BY wms.IRS_Detay.MalKodu, wms.IRS_Detay.Birim", cevap.GorevID);
            var list = db.Database.SqlQuery <frmSiparisMalzemeOnay>(sql).ToList();

            foreach (var item in list)
            {
                var     tmpYer = db.Yers.Where(m => m.MalKodu == item.MalKodu && m.Birim == item.Birim && m.Kat.Bolum.Raf.Koridor.Depo.DepoKodu == tbl.DepoID && m.Miktar > 0).OrderBy(m => m.Miktar).ToList();
                decimal toplam = 0, miktar = 0;
                if (tmpYer != null)
                {
                    foreach (var itemyer in tmpYer)
                    {
                        if (itemyer.Miktar >= (item.Miktar - toplam))
                        {
                            miktar = item.Miktar - toplam;
                        }
                        else
                        {
                            miktar = itemyer.Miktar;
                        }
                        toplam += miktar;
                        // miktarı tabloya ekle
                        var tblyer = new GorevYer()
                        {
                            GorevID = cevap.GorevID.Value,
                            YerID   = itemyer.ID,
                            MalKodu = item.MalKodu,
                            Birim   = item.Birim,
                            Miktar  = miktar,
                            GC      = true
                        };
                        TaskYer.Operation(tblyer);
                        // toplam yeterli miktardaysa
                        if (toplam == item.Miktar)
                        {
                            break;
                        }
                    }
                }
            }

            // listeyi getir
            sql = string.Format("SELECT wms.Yer.HucreAd, wms.GorevYer.MalKodu, wms.GorevYer.Miktar, wms.GorevYer.Birim, wms.Yer.Miktar AS Stok " +
                                "FROM wms.GorevYer INNER JOIN wms.Yer ON wms.GorevYer.YerID = wms.Yer.ID " +
                                "WHERE (wms.GorevYer.GorevID = {0})", cevap.GorevID.Value);
            var list2 = db.Database.SqlQuery <frmSiparisMalzeme>(sql).ToList();

            ViewBag.GorevID = cevap.GorevID.Value;
            ViewBag.DepoID  = idDepo;
            return(View("Step3", list2));
        }
        public PartialViewResult New(frmIrsaliye tbl)
        {
            if (CheckPerm(Perms.MalKabul, PermTypes.Reading) == false)
            {
                ViewBag.message = "Burası için izniniz yok";
                return(PartialView("_GridPartial", new List <IRS_Detay>()));
            }

            if (tbl.EvrakNo.Length > 16)
            {
                ViewBag.message = "Bu evrak no çok uzun";
                return(PartialView("_GridPartial", new List <IRS_Detay>()));
            }

            var kontrol1 = DateTime.TryParse(tbl.Tarih, out DateTime tmpTarih);

            if (kontrol1 == false)
            {
                db.Logger(vUser.UserName, "", fn.GetIPAddress(), "Tarih hatası: " + tbl.Tarih, "", "WMS/Purchase/New");
                ViewBag.message = "Tarih yanlış";
                return(PartialView("_GridPartial", new List <IRS_Detay>()));
            }

            var tarih    = tmpTarih.ToOADateInt();
            var kontrol2 = db.IRS.Where(m => m.IslemTur == false && m.EvrakNo == tbl.EvrakNo && m.SirketKod == vUser.SirketKodu & m.HesapKodu == tbl.HesapKodu).FirstOrDefault();

            // var olanı göster
            if (kontrol2 != null)
            {
                if (kontrol2.DepoID != tbl.DepoID)
                {
                    ViewBag.message = "Bu evrak no kullanılıyor";
                    return(PartialView("_GridPartial", new List <IRS_Detay>()));
                }

                try
                {
                    var list = IrsaliyeDetay.GetList(kontrol2.ID);
                    ViewBag.IrsaliyeId = kontrol2.ID;
                    ViewBag.Onay       = kontrol2.Onay;
                    ViewBag.Yetki      = CheckPerm(Perms.MalKabul, PermTypes.Writing);
                    return(PartialView("_GridPartial", list));
                }
                catch (Exception ex)
                {
                    Logger(ex, "WMS/Purchase/New-varolan");
                    return(null);
                }
            }

            // kontrol
            if (CheckPerm(Perms.MalKabul, PermTypes.Writing) == false)
            {
                return(null);
            }
            // yeni kayıtta evrak no spide olmayacak kontrolü
            var sql = string.Format("SELECT EvrakNo FROM FINSAT6{0}.FINSAT6{0}.STI WHERE (EvrakNo = '{1}') AND (KynkEvrakTip = 3) AND (Chk = '{2}')", vUser.SirketKodu, tbl.EvrakNo, tbl.HesapKodu);
            var sti = db.Database.SqlQuery <string>(sql).FirstOrDefault();

            if (sti != null)
            {
                ViewBag.message = "Bu evrak no kullanılıyor";
                return(PartialView("_GridPartial", new List <IRS_Detay>()));
            }

            // yeni kayıt
            var gorevno = db.SettingsGorevNo(DateTime.Today.ToOADateInt(), tbl.DepoID).FirstOrDefault();
            var today   = fn.ToOADate();
            var time    = fn.ToOATime();

            try
            {
                var cevap = db.InsertIrsaliye(vUser.SirketKodu, tbl.DepoID, gorevno, tbl.EvrakNo, tarih, "Tedarikçi: " + tbl.Unvan, false, ComboItems.MalKabul.ToInt32(), vUser.UserName, today, time, tbl.HesapKodu, "", 0, "", "").FirstOrDefault();
                LogActions("WMS", "Purchase", "New", ComboItems.alEkle, cevap.GorevID.Value, "Tedarikçi: " + tbl.Unvan);
                // get list
                var list = IrsaliyeDetay.GetList(cevap.IrsaliyeID.Value);
                ViewBag.IrsaliyeId = cevap.IrsaliyeID;
                ViewBag.Onay       = false;
                ViewBag.Yetki      = CheckPerm(Perms.MalKabul, PermTypes.Writing);
                return(PartialView("_GridPartial", list));
            }
            catch (Exception ex)
            {
                Logger(ex, "WMS/Purchase/New-yeni");
                return(null);
            }
        }
Пример #7
0
        public ActionResult Step4(frmSiparisSteps tbl)
        {
            if (tbl.DepoID == "" || tbl.EvrakNos.Count() == 0 || tbl.Miktars.Count() == 0 || tbl.IDs.Count() == 0)
            {
                return(RedirectToAction("Index"));
            }
            if (CheckPerm(Perms.KabloSiparişi, PermTypes.Writing) == false)
            {
                return(Redirect("/"));
            }
            // sql oluştur
            var sql  = string.Format("EXEC FINSAT6{0}.wms.getSiparis2ListStep4 @DepoKodu = '{1}', @EvrakNos = '{2}', @IDs = '{3}'", vUser.SirketKodu, tbl.DepoID, string.Join(",", tbl.EvrakNos), string.Join(",", tbl.IDs));
            var list = db.Database.SqlQuery <frmSiparisMalzemeOnay>(sql).ToList();

            if (list == null)
            {
                return(RedirectToAction("Index"));
            }
            // variables and consts
            int    today = fn.ToOADate(), time = fn.ToOATime(), valorgun = 0;
            var    idDepo = db.Depoes.Where(m => m.DepoKodu == tbl.DepoID).Select(m => m.ID).FirstOrDefault();
            var    GorevNo = db.SettingsGorevNo(today, idDepo).FirstOrDefault();
            string alıcılar = "", chk = "", teslimchk = "", aciklama = "";
            var    cevap = new InsertIrsaliye_Result();
            Result _Result;

            // loop the list
            foreach (var item in list)
            {
                // irsaliye tablosu
                if (chk != item.Chk || valorgun != item.ValorGun || teslimchk != item.TeslimChk || aciklama != item.Aciklama)
                {
                    cevap = db.InsertIrsaliye(vUser.SirketKodu, idDepo, GorevNo, GorevNo, today, "", true, ComboItems.SiparişTopla.ToInt32(), vUser.UserName, today, time, item.Chk, item.TeslimChk, item.ValorGun, item.EvrakNo, item.Aciklama).FirstOrDefault();
                    // save sck
                    chk       = item.Chk;
                    valorgun  = item.ValorGun;
                    teslimchk = item.TeslimChk;
                    aciklama  = item.Aciklama;
                    alıcılar += item.Unvan + ",";
                }

                // get stok
                var stokMiktari = db.GetStock(idDepo, item.MalKodu, item.Birim, true).FirstOrDefault();
                if (stokMiktari != null)
                {
                    var tyerid    = tbl.MalKodus[Array.FindIndex(tbl.IDs, m => m == item.ROW_ID)];
                    var yersatiri = Yerlestirme.Detail(tyerid.ToInt32());
                    var miktar    = tbl.Miktars[Array.FindIndex(tbl.IDs, m => m == item.ROW_ID)];
                    // sti tablosu
                    var sti = new IRS_Detay()
                    {
                        IrsaliyeID        = cevap.IrsaliyeID.Value,
                        MalKodu           = item.MalKodu,
                        Birim             = item.Birim,
                        Miktar            = miktar <= stokMiktari.Value ? miktar : stokMiktari.Value,
                        MakaraNo          = yersatiri.MakaraNo,
                        KynkSiparisID     = item.ROW_ID,
                        KynkSiparisNo     = item.EvrakNo,
                        KynkSiparisSiraNo = item.SiraNo,
                        KynkSiparisTarih  = item.Tarih,
                        KynkSiparisMiktar = item.BirimMiktar,
                        KynkDegisSaat     = item.DegisSaat
                    };
                    _Result = IrsaliyeDetay.Operation(sti);

                    // miktarı tabloya ekle
                    var tblyer = new GorevYer()
                    {
                        GorevID  = cevap.GorevID.Value,
                        YerID    = tyerid.ToInt32(),
                        MalKodu  = item.MalKodu,
                        Birim    = item.Birim,
                        Miktar   = miktar,
                        MakaraNo = yersatiri.MakaraNo,
                        GC       = true
                    };
                    TaskYer.Operation(tblyer);
                }
            }
            // görev tablosu için tekrar yeni ve sade bir liste lazım
            var grv = db.Gorevs.Where(m => m.ID == cevap.GorevID).FirstOrDefault();

            grv.Bilgi = "Alıcı: " + alıcılar;
            db.SaveChanges();
            // sıralama
            var lstKoridor = db.GetKoridorIdFromGorevId(cevap.GorevID.Value).ToList();
            var asc = false; var sira = 1;

            foreach (var item in lstKoridor)
            {
                var lstBolum = db.GetBolumSiralamaFromGorevId(cevap.GorevID.Value, item.Value, asc).ToList();
                foreach (var item2 in lstBolum)
                {
                    var tmptblyer = new GorevYer()
                    {
                        ID   = item2.Value,
                        Sira = sira
                    };
                    sira++;
                    TaskYer.Operation(tmptblyer);
                }

                asc = asc == false ? true : false;
            }
            // listeyi getir
            sql = string.Format("EXEC FINSAT6{0}.wms.getSiparisListStep42 {1}", vUser.SirketKodu, cevap.GorevID);
            var list2 = db.Database.SqlQuery <frmSiparisMalzeme>(sql).ToList();

            ViewBag.GorevID = cevap.GorevID.Value;
            return(View("Step4", list2));
        }
Пример #8
0
        public JsonResult ManualMovement(Yer tbl)
        {
            if (CheckPerm(Perms.Stok, PermTypes.Writing) == false)
            {
                return(Json(new Result(false, "Yetkiniz yok"), JsonRequestBehavior.AllowGet));
            }
            if (tbl.Miktar < 1)
            {
                return(Json(new Result(false, "Miktar hatalı"), JsonRequestBehavior.AllowGet));
            }
            // burada görev oluştur
            var ilk = Yerlestirme.Detail(tbl.ID);

            if (ilk.Miktar < tbl.Miktar || tbl.Miktar < 1)
            {
                return(Json(new Result(false, "Miktar hatalı yazılmış"), JsonRequestBehavior.AllowGet));
            }
            var today = fn.ToOADate();
            var time  = fn.ToOATime();

            try
            {
                // ilk önce görevler ve irsaliye kaydedilir
                var GorevÇıkNo = "";
                var s1         = db.Gorevs.Where(m => m.DepoID == ilk.DepoID && m.GorevTipiID == (int)ComboItems.TransferÇıkış && m.DurumID == 9 && m.Bilgi == "Yer Değiştir").FirstOrDefault();
                if (s1 == null)
                {
                    GorevÇıkNo = db.SettingsGorevNo(today, ilk.DepoID).FirstOrDefault();
                }
                else
                {
                    GorevÇıkNo = s1.GorevNo;
                }
                var GorevGirNo = "";
                var s2         = db.Gorevs.Where(m => m.DepoID == ilk.DepoID && m.GorevTipiID == (int)ComboItems.TransferGiriş && m.DurumID == 15 && m.Bilgi == "Yer Değiştir").FirstOrDefault();
                if (s2 == null)
                {
                    GorevGirNo = db.SettingsGorevNo(today, ilk.DepoID).FirstOrDefault();
                }
                else
                {
                    GorevGirNo = s2.GorevNo;
                }
                //irsaliye oluştur
                var cevapGir = db.InsertIrsaliye(vUser.SirketKodu, ilk.DepoID, GorevGirNo, GorevGirNo, today, "Yer Değiştir", true, ComboItems.TransferGiriş.ToInt32(), vUser.UserName, today, time, "Yer Değiştir", "", 0, "", "").FirstOrDefault();
                var cevapÇık = db.InsertIrsaliye(vUser.SirketKodu, ilk.DepoID, GorevÇıkNo, GorevGirNo, today, "Yer Değiştir", true, ComboItems.TransferÇıkış.ToInt32(), vUser.UserName, today, time, "Yer Değiştir", "", 0, cevapGir.GorevID.Value.ToString(), "").FirstOrDefault();
                // GorevYer tablosu - çıkış
                var cevap = TaskYer.Operation(new GorevYer()
                {
                    GorevID = cevapÇık.GorevID.Value, YerID = ilk.ID, MalKodu = ilk.MalKodu, Birim = ilk.Birim, Miktar = tbl.Miktar, GC = true
                });
                // giriş
                var yertmp = Yerlestirme.Detail(tbl.KatID, ilk.MalKodu, ilk.Birim);
                if (yertmp == null)
                {
                    cevap = Yerlestirme.Insert(new Yer()
                    {
                        KatID = tbl.KatID, MalKodu = ilk.MalKodu, Birim = ilk.Birim, Miktar = 0
                    }, vUser.Id, "Yer Değiştir");
                    yertmp = new Yer()
                    {
                        ID = cevap.Id
                    };
                }

                cevap = TaskYer.Operation(new GorevYer()
                {
                    GorevID = cevapGir.GorevID.Value, YerID = yertmp.ID, MalKodu = ilk.MalKodu, Birim = ilk.Birim, Miktar = tbl.Miktar, GC = false
                });
                // irs detay
                cevap = IrsaliyeDetay.Operation(new IRS_Detay()
                {
                    IrsaliyeID = cevapGir.IrsaliyeID.Value, MalKodu = ilk.MalKodu, Miktar = tbl.Miktar, Birim = ilk.Birim, KynkSiparisID = tbl.KatID
                });
                // return
                return(Json(new Result(true), JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                Logger(ex, "Stock/ManualMovementSave");
                return(Json(new Result(false, "Kayıt hatası"), JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult Summary(frmTransferMalzemeApprove tbl)
        {
            if (CheckPerm(Perms.Transfer, PermTypes.Writing) == false)
            {
                return(Json(new Result(false, "Yetkiniz yok."), JsonRequestBehavior.AllowGet));
            }
            if (tbl.GirisDepo == "" || tbl.AraDepo == "" || tbl.CikisDepo == "" || tbl.MalKodus.Count() == 0 || tbl.Birims.Count() == 0 || tbl.Miktar.Count() == 0)
            {
                return(Json(new Result(false, "Eksik bilgi girdiniz."), JsonRequestBehavior.AllowGet));
            }
            if (tbl.GirisDepo == tbl.AraDepo || tbl.CikisDepo == tbl.AraDepo || tbl.CikisDepo == tbl.GirisDepo)
            {
                return(Json(new Result(false, "Aynı depoları seçemezsiniz."), JsonRequestBehavior.AllowGet));
            }
            // stok kontrol
            var varmi = false;

            foreach (var item in tbl.MalKodus)
            {
                var sayi = db.Yers.Where(m => m.MalKodu == item && m.Miktar > 0 && m.Kat.Bolum.Raf.Koridor.Depo.DepoKodu == tbl.CikisDepo).FirstOrDefault();
                if (sayi != null)
                {
                    varmi = true; break;
                }
            }
            if (varmi == false)
            {
                return(Json(new Result(false, "Seçtiğiniz hiç bir ürün stokta kayıtlı değil."), JsonRequestBehavior.AllowGet));
            }
            // çapraz stok kontrol
            var sql   = string.Format(@"EXEC FINSAT6{0}.wms.TransferKontrol @CikisDepo = '{1}', @MalKodus = '{2}'", vUser.SirketKodu, tbl.CikisDepo, string.Join(",", tbl.MalKodus));
            var list1 = db.Database.SqlQuery <frmTransferMalzemeler>(sql).ToList();

            foreach (var item in list1)
            {
                if (item.Depo2GunesStok != item.Depo2WmsStok)
                {
                    return(Json(new Result(false, item.MalKodu + " kodlu ürünün stoğu hatalı."), JsonRequestBehavior.AllowGet));
                }
            }
            //miktars
            for (int i = 0; i < tbl.Miktar.Length; i++)
            {
                tbl.Miktars[i] = tbl.Miktar[i].ToDecimal();
            }
            // add to list
            var aDepoID = Store.Detail(tbl.AraDepo).ID;
            var cDepoID = Store.Detail(tbl.CikisDepo);
            var gDepoID = Store.Detail(tbl.GirisDepo);
            int today = fn.ToOADate(), time = fn.ToOATime();
            // yeni bir görev eklenir
            var GorevNo = db.SettingsGorevNo(today, cDepoID.ID).FirstOrDefault();
            var cevap   = db.InsertIrsaliye(vUser.SirketKodu, cDepoID.ID, GorevNo, GorevNo, today, "Giriş: " + tbl.GirisDepo + ", Çıkış: " + tbl.CikisDepo, true, ComboItems.TransferÇıkış.ToInt32(), vUser.UserName, today, time, cDepoID.DepoAd, "", 0, "", "").FirstOrDefault();
            // yeni transfer eklenir
            var sonuc = Transfers.Operation(new Transfer()
            {
                SirketKod = vUser.SirketKodu, GirisDepoID = gDepoID.ID, CikisDepoID = cDepoID.ID, AraDepoID = aDepoID, GorevID = cevap.GorevID.Value
            });
            // find detays
            var TransferID = sonuc.Id;

            for (int i = 0; i < tbl.MalKodus.Count(); i++)
            {
                // stok kontrol
                var     malkodu = tbl.MalKodus[i];
                var     birim = tbl.Birims[i];
                var     tmpYer = db.Yers.Where(m => m.MalKodu == malkodu && m.Birim == birim && m.Kat.Bolum.Raf.Koridor.Depo.DepoKodu == tbl.CikisDepo && m.Miktar > 0).OrderByDescending(m => m.Miktar).ToList();
                decimal toplam = 0, miktar = 0;
                if (tmpYer.Count > 0)
                {
                    foreach (var itemyer in tmpYer)
                    {
                        if (itemyer.Miktar >= (tbl.Miktars[i] - toplam))
                        {
                            miktar = tbl.Miktars[i] - toplam;
                        }
                        else
                        {
                            miktar = itemyer.Miktar;
                        }
                        toplam += miktar;
                        // miktarı tabloya ekle
                        var tblyer = new GorevYer()
                        {
                            GorevID  = cevap.GorevID.Value,
                            YerID    = itemyer.ID,
                            MalKodu  = tbl.MalKodus[i],
                            Birim    = tbl.Birims[i],
                            Miktar   = miktar,
                            MakaraNo = itemyer.MakaraNo,
                            GC       = true
                        };
                        if (miktar > 0)
                        {
                            TaskYer.Operation(tblyer);
                        }
                        // toplam yeterli miktardaysa
                        if (toplam == tbl.Miktars[i])
                        {
                            break;
                        }
                    }

                    tbl.Miktars[i] = toplam;
                    // hepsi eklenince detayı db'ye ekle
                    if (tbl.Miktars[i] > 0)
                    {
                        sonuc = Transfers.AddDetay(new Transfer_Detay()
                        {
                            TransferID = TransferID, MalKodu = tbl.MalKodus[i], Birim = tbl.Birims[i], Miktar = tbl.Miktars[i]
                        });
                    }
                    if (tbl.Miktars[i] > 0)
                    {
                        IrsaliyeDetay.Operation(new IRS_Detay()
                        {
                            IrsaliyeID = cevap.IrsaliyeID.Value, MalKodu = tbl.MalKodus[i], Miktar = tbl.Miktars[i], Birim = tbl.Birims[i], KynkSiparisID = sonuc.Id, KynkSiparisTarih = TransferID
                        });
                    }
                }
            }
            return(Json(new Result(true, TransferID), JsonRequestBehavior.AllowGet));
        }
        public JsonResult Save(frmTransferMalzemeApprove tbl)
        {
            if (CheckPerm(Perms.Transfer, PermTypes.Writing) == false)
            {
                return(Json(new Result(false, "Yetkiniz yok"), JsonRequestBehavior.AllowGet));
            }
            // add to list
            var aDepoID = Store.Detail(tbl.AraDepo).ID;
            var cDepoID = Store.Detail(tbl.CikisDepo);
            var gDepoID = Store.Detail(tbl.GirisDepo);
            int today = fn.ToOADate(), time = fn.ToOATime();
            // yeni bir görev eklenir
            var GorevNo = db.SettingsGorevNo(today, cDepoID.ID).FirstOrDefault();
            var cevap   = db.InsertIrsaliye(vUser.SirketKodu, cDepoID.ID, GorevNo, GorevNo, today, "Giriş: " + tbl.GirisDepo + ", Çıkış: " + tbl.CikisDepo, true, ComboItems.TransferÇıkış.ToInt32(), vUser.UserName, today, time, cDepoID.DepoAd, "", 0, "", "").FirstOrDefault();
            // yeni transfer eklenir
            var sonuc = Transfers.Operation(new Transfer()
            {
                SirketKod = vUser.SirketKodu, GirisDepoID = gDepoID.ID, CikisDepoID = cDepoID.ID, AraDepoID = aDepoID, GorevID = cevap.GorevID.Value
            });
            // find detays
            var TransferID = sonuc.Id;

            for (int i = 0; i < tbl.MalKodus.Count(); i++)
            {
                // stok kontrol
                var     tmpYer = db.Yers.Where(m => m.MalKodu == tbl.MalKodus[i] && m.Birim == tbl.Birims[i] && m.Kat.Bolum.Raf.Koridor.Depo.DepoKodu == tbl.CikisDepo && m.Miktar > 0).OrderByDescending(m => m.Miktar).ToList();
                decimal toplam = 0, miktar = 0;
                if (tmpYer.Count > 0)
                {
                    foreach (var itemyer in tmpYer)
                    {
                        if (itemyer.Miktar >= (tbl.Miktars[i] - toplam))
                        {
                            miktar = tbl.Miktars[i] - toplam;
                        }
                        else
                        {
                            miktar = itemyer.Miktar;
                        }
                        toplam += miktar;
                        // miktarı tabloya ekle
                        var tblyer = new GorevYer()
                        {
                            GorevID  = cevap.GorevID.Value,
                            YerID    = itemyer.ID,
                            MalKodu  = tbl.MalKodus[i],
                            Birim    = tbl.Birims[i],
                            Miktar   = miktar,
                            MakaraNo = itemyer.MakaraNo,
                            GC       = true
                        };
                        if (miktar > 0)
                        {
                            TaskYer.Operation(tblyer);
                        }
                        // toplam yeterli miktardaysa
                        if (toplam == tbl.Miktars[i])
                        {
                            break;
                        }
                    }

                    tbl.Miktars[i] = toplam;
                    // hepsi eklenince detayı db'ye ekle
                    if (tbl.Miktars[i] > 0)
                    {
                        sonuc = Transfers.AddDetay(new Transfer_Detay()
                        {
                            TransferID = TransferID, MalKodu = tbl.MalKodus[i], Birim = tbl.Birims[i], Miktar = tbl.Miktars[i]
                        });
                    }
                    if (tbl.Miktars[i] > 0)
                    {
                        IrsaliyeDetay.Operation(new IRS_Detay()
                        {
                            IrsaliyeID = cevap.IrsaliyeID.Value, MalKodu = tbl.MalKodus[i], Miktar = tbl.Miktars[i], Birim = tbl.Birims[i], KynkSiparisID = sonuc.Id, KynkSiparisTarih = TransferID
                        });
                    }
                }
            }
            ViewBag.IrsaliyeId = cevap.IrsaliyeID.Value;
            // return
            return(Json(new Result(true, 1), JsonRequestBehavior.AllowGet));
        }