/// <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)); }
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 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)); }