Пример #1
0
        /// <summary>
        /// irsaliye için malzeme girişi yapar
        /// </summary>
        public JsonResult Malzeme(int dID, string hesap, HttpPostedFileBase file)
        {
            if (CheckPerm(Perms.MalKabul, PermTypes.Writing) == false)
            {
                return(Json(new Result(false, "Yetkiniz yok"), JsonRequestBehavior.AllowGet));
            }
            var _result = new Result(false, 0, "Hatalı dosya!");

            if (file == null || file.ContentLength == 0)
            {
                return(Json(_result, JsonRequestBehavior.AllowGet));
            }
            // gelen dosyayı oku
            var stream = file.InputStream;
            IExcelDataReader reader;

            // dosya tipini bul
            if (file.FileName.EndsWith(".xlsx"))
            {
                reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            }
            else
            {
                return(Json(_result, JsonRequestBehavior.AllowGet));
            }
            // ilk satır başlık
            reader.IsFirstRowAsColumnNames = true;
            // exceldeki bilgileri datasete aktar
            var result = reader.AsDataSet();

            // kontrol
            if (result.Tables.Count == 0)
            {
                return(Json(_result, JsonRequestBehavior.AllowGet));
            }
            if (result.Tables[0].Rows == null)
            {
                return(Json(_result, JsonRequestBehavior.AllowGet));
            }
            // sti listesi oluşturuyoruz. tüm bilgiyi tek seferde veritabanına kaydetçek
            List <IRS_Detay> liste = new List <IRS_Detay>();
            var depo = Store.Detail(dID);
            // buraya kadar hata yoksa bunu yapar. yine de hata olursa hiçbirini kaydetmez...
            var tarih    = fn.ToOADate();
            var sonuc    = new InsertIrsaliye_Result();
            var gorevno  = db.SettingsGorevNo(tarih, dID).FirstOrDefault();
            var evraklar = "";

            using (var dbContextTransaction = db.Database.BeginTransaction())
            {
                for (int i = 0; i < result.Tables[0].Rows.Count; i++)
                {
                    _result = new Result(false, 0, "Hatalı dosya");
                    var dr = result.Tables[0].Rows[i];
                    // kontrol
                    try
                    {
                        if (dr["İrsaliye No"].ToString() == "")
                        {
                            return(Json(_result, JsonRequestBehavior.AllowGet));
                        }
                        if (dr["Miktar"].ToString2().IsNumeric() == false)
                        {
                            return(Json(_result, JsonRequestBehavior.AllowGet));
                        }
                        if (dr["MalKodu"].ToString() == "")
                        {
                            return(Json(_result, JsonRequestBehavior.AllowGet));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger(ex, "Uploads/Malzeme");
                        return(Json(_result, JsonRequestBehavior.AllowGet));
                    }

                    // satıcı malkodundan malkodunu getir
                    var sql    = string.Format(@"EXEC FINSAT6{0}.wms.getMalkoduFromSatMalKodu @HesapKodu = '{1}', @SatMalKodu = '{2}'", vUser.SirketKodu, hesap, dr["MalKodu"].ToString());
                    var malStk = db.Database.SqlQuery <frmIrsaliyeMalzemeSTK>(sql).FirstOrDefault();
                    _result.Message = "Mal kodu yanlış";
                    if (malStk == null)
                    {
                        return(Json(_result, JsonRequestBehavior.AllowGet));
                    }
                    // birim kontrol
                    var birim = dr["Birim"].ToString();
                    if (birim == "")
                    {
                        birim = malStk.Birim1;
                    }
                    else if (birim != malStk.Birim1)
                    {
                        _result.Message = malStk.MalKodu + " için birim hatalı! '" + birim + "' yerine '" + malStk.Birim1 + "' yazılmalı";
                        return(Json(_result, JsonRequestBehavior.AllowGet));
                    }

                    // add irsaliye and gorev
                    var irsNo = dr["İrsaliye No"].ToString();
                    if (evraklar.Contains(irsNo) == false)
                    {
                        if (evraklar != "")
                        {
                            evraklar += ",";
                        }
                        evraklar += irsNo;
                    }
                    else//daha önce eklenen bir irsaliye ise
                    {
                        var kontrol1 = db.Gorevs.FirstOrDefault(m => m.IR.EvrakNo == irsNo && m.IR.IslemTur == false && (m.DurumID == 9 || m.DurumID == 11));
                        if (kontrol1 != null)
                        {
                            return(Json(new Result(false, 0, kontrol1.IR.EvrakNo + " nolu irsaliye daha önce kaydedilmiş."), JsonRequestBehavior.AllowGet));
                        }
                    }

                    sonuc = db.InsertIrsaliye(vUser.SirketKodu, dID, gorevno, irsNo, tarih, "", false, ComboItems.MalKabul.ToInt32(), vUser.UserName, tarih, fn.ToOATime(), hesap, "", 0, "", "").FirstOrDefault();
                    // add detays
                    try
                    {
                        // malkodu kontrol
                        var kontrol2 = db.IRS_Detay.FirstOrDefault(m => m.MalKodu == malStk.MalKodu && m.IR.EvrakNo == irsNo && m.IR.IslemTur == false);
                        if (kontrol2 != null)
                        {
                            return(Json(new Result(false, 0, kontrol2.IR.EvrakNo + " nolu irsaliyeye daha önce " + malStk.MalKodu + " eklenmiş."), JsonRequestBehavior.AllowGet));
                        }
                        // irs detay
                        var sti = new IRS_Detay()
                        {
                            IrsaliyeID = sonuc.IrsaliyeID.Value,
                            MalKodu    = malStk.MalKodu,
                            Miktar     = Convert.ToDecimal(dr["Miktar"]),
                            Birim      = dr["Birim"].ToString()
                        };
                        if (dr["Kaynak Sipariş No"].ToString() != "")
                        {
                            // kaynak sipariş
                            sql = string.Format("EXEC FINSAT6{0}.wms.getMalKabulAsnSiparisler @EvrakNo = '{1}', @MalKodu = '{2}', @Depo = '{3}'", vUser.SirketKodu, dr["Kaynak Sipariş No"].ToString(), malStk.MalKodu, depo.DepoKodu);
                            var tbl = db.Database.SqlQuery <frmIrsaliyeMalzeme>(sql).FirstOrDefault();
                            if (tbl != null)
                            {
                                if (sti.Birim == "")
                                {
                                    sti.Birim = tbl.Birim;
                                }
                                sti.KynkSiparisNo     = tbl.EvrakNo;
                                sti.KynkSiparisID     = tbl.ROW_ID;
                                sti.KynkSiparisMiktar = tbl.BirimMiktar;
                                sti.KynkSiparisSiraNo = tbl.SiraNo;
                                sti.KynkSiparisTarih  = tbl.Tarih;
                            }
                        }

                        // Makara No
                        if (malStk.Kod1 == "KKABLO")
                        {
                            if (dr["Makara No"].ToString() != "")
                            {
                                sti.MakaraNo = dr["Makara No"].ToString();
                            }
                            else
                            {
                                return(Json(new Result(false, "Makara no girilmelidir."), JsonRequestBehavior.AllowGet));
                            }
                        }

                        // ekle
                        liste.Add(sti);
                    }
                    catch (Exception ex)
                    {
                        _result.Message = "Hatalı satırlar var";
                        Logger(ex, "Uploads/Malzeme");
                        return(Json(_result, JsonRequestBehavior.AllowGet));
                    }
                }

                reader.Close();
                // update db
                try
                {
                    db.IRS_Detay.AddRange(liste);
                    db.SaveChanges();
                    dbContextTransaction.Commit();
                }
                catch (Exception ex)
                {
                    Logger(ex, "Uploads/Malzeme");
                    _result.Message = "Hatalı satırlar var";
                    return(Json(_result, JsonRequestBehavior.AllowGet));
                }
            }

            var unvan = db.Database.SqlQuery <string>(string.Format("SELECT Unvan1+' '+Unvan2 AS Unvan FROM FINSAT6{0}.FINSAT6{0}.CHK WITH(NOLOCK) WHERE HesapKodu = '{1}'", vUser.SirketKodu, hesap)).FirstOrDefault();

            // log
            LogActions("", "Uploads", "Malzeme", ComboItems.alYükle, sonuc.GorevID.Value, "GörevID: " + sonuc.GorevID.Value + ", Satır Sayısı: " + liste.Count);
            // update görev
            var gorev = db.Gorevs.Where(m => m.ID == sonuc.GorevID.Value).FirstOrDefault();

            gorev.Bilgi = "Irs: " + evraklar + ", Tedarikçi: " + unvan;
            db.SaveChanges();
            // return
            _result.Id     = 1;
            _result.Status = true;
            return(Json(_result, JsonRequestBehavior.AllowGet));
        }
Пример #2
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));
        }
Пример #3
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));
        }