private Data.TONKHOTONG KiemTraTonKhoTong(FrameworkRepository <TONKHOTONG> frm, int KhoID, int MonID, int DonViID) { Data.TONKHOTONG item = null; if (frm.Query().Where(s => s.KhoID == KhoID && s.MonID == MonID && s.DonViID == DonViID).Count() == 0) { item = new TONKHOTONG(); item.DonViID = DonViID; item.KhoID = KhoID; item.MonID = MonID; item.TenMonBaoCao = ""; item.SoLuongBan = 0; item.SoLuongDieuChinh = 0; item.SoLuongHu = 0; item.SoLuongNhap = 0; item.SoLuongTon = 0; item.SoLuongMat = 0; item.SoLuongChuyen = 0; return(item); } return(frm.Query().Where(s => s.KhoID == KhoID && s.MonID == MonID && s.DonViID == DonViID).FirstOrDefault()); }
private int ThemMoi(BOXuLyKho item, List <BOXuLyKhoChiTiet> lsArray, Transit mTransit) { if (lsArray != null) { List <Data.TONKHOTONG> lsTonKhoTong = new List <TONKHOTONG>(); List <Data.TONKHO> lsTonKho = new List <TONKHO>(); foreach (BOXuLyKhoChiTiet line in lsArray) { IQueryable <Data.TONKHO> lsArrayLine = null; switch (item.XuLyKho.LoaiID) { case 1: lsArrayLine = frmTonKho.Query().Where(s => s.DonViID == line.TonKho.DonViID && s.MonID == line.TonKho.MonID && s.KhoID == item.XuLyKho.KhoID && s.SoLuongTon > 0).OrderBy(s => s.NgayHetHan).ThenBy(s => s.TonKhoID); if (lsArrayLine.Count() > 0 && line.TonKho.SoLuongNhap < lsArrayLine.Sum(s => s.SoLuongTon) && line.TonKho.SoLuongNhap > 0) { foreach (var l in lsArrayLine) { if (line.TonKho.SoLuongNhap > 0) { Data.TONKHOTONG tonkhotong = null; if (lsTonKhoTong.Exists(s => s.KhoID == item.XuLyKho.KhoID && s.MonID == line.TonKho.MonID && s.DonViID == line.TonKho.DonViID)) { tonkhotong = lsTonKhoTong.Find(s => s.KhoID == item.XuLyKho.KhoID && s.MonID == line.TonKho.MonID && s.DonViID == line.TonKho.DonViID); } else { tonkhotong = KiemTraTonKhoTong(frmTonKhoTong, (int)item.XuLyKho.KhoID, (int)line.TonKho.MonID, (int)line.TonKho.DonViID); lsTonKhoTong.Add(tonkhotong); } tonkhotong.SoLuongTon += line.TonKho.SoLuongNhap; tonkhotong.SoLuongDieuChinh += line.TonKho.SoLuongNhap; Data.TONKHO tonkho = null; if (lsTonKho.Exists(s => s.TonKhoID == l.TonKhoID)) { tonkho = lsTonKho.Find(s => s.TonKhoID == l.TonKhoID); } else { tonkho = l; lsTonKho.Add(tonkho); } line.XuLyKhoChiTiet.TONKHO = new TONKHO(); line.XuLyKhoChiTiet.TONKHO.PhatSinhTuTonKhoID = tonkho.TonKhoID; line.XuLyKhoChiTiet.TONKHO.LoaiPhatSinhID = (int)item.XuLyKho.LoaiID; CopyTonKho(line.XuLyKhoChiTiet.TONKHO, tonkho); if (tonkho.SoLuongTon > line.TonKho.SoLuongNhap) { line.XuLyKhoChiTiet.TONKHO.SoLuongPhatSinh = tonkho.SoLuongTon - line.TonKho.SoLuongNhap; tonkho.SoLuongTon += line.TonKho.SoLuongNhap; line.TonKho.SoLuongNhap = 0; } else { line.XuLyKhoChiTiet.TONKHO.SoLuongPhatSinh = line.TonKho.SoLuongNhap - tonkho.SoLuongTon; line.TonKho.SoLuongNhap += tonkho.SoLuongTon; tonkho.SoLuongTon = 0; } } } } break; case 2: case 3: lsArrayLine = frmTonKho.Query().Where(s => s.DonViID == line.TonKho.DonViID && s.MonID == line.TonKho.MonID && s.KhoID == item.XuLyKho.KhoID && s.SoLuongTon > 0).OrderBy(s => s.NgayHetHan).ThenBy(s => s.TonKhoID); if (lsArrayLine.Count() > 0 && line.TonKho.SoLuongNhap < lsArrayLine.Sum(s => s.SoLuongTon) && line.TonKho.SoLuongNhap > 0) { foreach (var l in lsArrayLine) { if (line.TonKho.SoLuongNhap > 0) { Data.TONKHOTONG tonkhotong = null; if (lsTonKhoTong.Exists(s => s.KhoID == item.XuLyKho.KhoID && s.MonID == line.TonKho.MonID && s.DonViID == line.TonKho.DonViID)) { tonkhotong = lsTonKhoTong.Find(s => s.KhoID == item.XuLyKho.KhoID && s.MonID == line.TonKho.MonID && s.DonViID == line.TonKho.DonViID); } else { tonkhotong = KiemTraTonKhoTong(frmTonKhoTong, (int)item.XuLyKho.KhoID, (int)line.TonKho.MonID, (int)line.TonKho.DonViID); lsTonKhoTong.Add(tonkhotong); } tonkhotong.SoLuongTon -= line.TonKho.SoLuongNhap; if (item.XuLyKho.LoaiID == 2) { tonkhotong.SoLuongMat += line.TonKho.SoLuongNhap; } if (item.XuLyKho.LoaiID == 3) { tonkhotong.SoLuongHu += line.TonKho.SoLuongNhap; } Data.TONKHO tonkho = null; if (lsTonKho.Exists(s => s.TonKhoID == l.TonKhoID)) { tonkho = lsTonKho.Find(s => s.TonKhoID == l.TonKhoID); } else { tonkho = l; lsTonKho.Add(tonkho); } line.XuLyKhoChiTiet.TONKHO = new TONKHO(); line.XuLyKhoChiTiet.TONKHO.PhatSinhTuTonKhoID = tonkho.TonKhoID; line.XuLyKhoChiTiet.TONKHO.LoaiPhatSinhID = (int)item.XuLyKho.LoaiID; CopyTonKho(line.XuLyKhoChiTiet.TONKHO, tonkho); if (tonkho.SoLuongTon > line.TonKho.SoLuongNhap) { line.XuLyKhoChiTiet.TONKHO.SoLuongPhatSinh = tonkho.SoLuongTon - line.TonKho.SoLuongNhap; tonkho.SoLuongTon -= line.TonKho.SoLuongNhap; line.TonKho.SoLuongNhap = 0; } else { line.XuLyKhoChiTiet.TONKHO.SoLuongPhatSinh = line.TonKho.SoLuongNhap - tonkho.SoLuongTon; line.TonKho.SoLuongNhap -= tonkho.SoLuongTon; tonkho.SoLuongTon = 0; } } } } break; default: break; } line.XuLyKho = new XULYKHO(); line.XuLyKho.KhoID = item.XuLyKho.KhoID; item.XuLyKho.XULYKHOCHITIETs.Add(line.XuLyKhoChiTiet); } item.XuLyKho.TongTien = lsArray.Sum(s => s.TonKho.SoLuongNhap * s.TonKho.GiaBan); foreach (TONKHO i in lsTonKho) { frmTonKho.Update(i); } foreach (TONKHOTONG i in lsTonKhoTong) { frmTonKhoTong.Update(i); } frmTonKho.Commit(); frmTonKhoTong.Commit(); } return(item.XuLyKho.ChinhKhoID); }