예제 #1
0
 public static void UpdateCtBaoCaoDL(this CtBaoCaoDL ctBaoCaoDL, CtBaoCaoDLViewModel ctBaoCaoDLVm)
 {
     ctBaoCaoDL.Id                 = ctBaoCaoDLVm.Id;
     ctBaoCaoDL.IdBaoCao           = ctBaoCaoDLVm.IdBaoCao;
     ctBaoCaoDL.IdSach             = ctBaoCaoDLVm.IdSach;
     ctBaoCaoDL.DonGiaXuat         = ctBaoCaoDLVm.DonGiaXuat;
     ctBaoCaoDL.SoLuongNhap        = ctBaoCaoDLVm.SoLuongNhap;
     ctBaoCaoDL.SoLuongTonDotTruoc = ctBaoCaoDLVm.SoLuongTonDotTruoc;
     ctBaoCaoDL.TongTienNhap       = ctBaoCaoDLVm.TongTienNhap;
     ctBaoCaoDL.SoLuongXuat        = ctBaoCaoDLVm.SoLuongXuat;
     ctBaoCaoDL.SoLuongCon         = ctBaoCaoDLVm.SoLuongCon;
     ctBaoCaoDL.TongTienNo         = ctBaoCaoDLVm.TongTienNo;
     ctBaoCaoDL.TongTienXuat       = ctBaoCaoDLVm.TongTienXuat;
 }
예제 #2
0
        public ActionResult ThemChiTietBaoCao(BaoCaoDLViewModel baoCaoDLVm, string TenSach)
        {
            if (ModelState.IsValid)
            {
                var sach = sachService.GetSingleByName(TenSach);
                if (sach == null)
                {
                    ModelState.AddModelError("", "Thông tin sách không tồn tại.");
                }
                else
                {
                    // Cuốn sách tồn tại thì gán id sách vào đối tượng ctBaoCao
                    baoCaoDLVm.ctBaoCao.IdSach = sach.Id;
                    // Truy xuất cuốn sách trong danh sách đã mua của Đại lý
                    var dsThongKeBaoCao = baoCaoDLService.GetListAnalysisReport(baoCaoDLVm.IdDaiLy, baoCaoDLVm.NgayBatDau, baoCaoDLVm.NgayKetThuc);
                    var tonTaiSachXuat  = dsThongKeBaoCao.Find(X => X.Id == baoCaoDLVm.ctBaoCao.IdSach);
                    if (tonTaiSachXuat == null)
                    {
                        // Sách khai không có trong danh sách phiếu xuất của đại lý
                        ModelState.AddModelError("", "Không thể khai số lượng sách chưa lập phiếu.");
                    }
                    else if (baoCaoDLVm.ctBaoCao.SoLuongXuat > (tonTaiSachXuat.SoLuongNhap + tonTaiSachXuat.SoLuongTonDotTruoc))
                    {
                        // Nếu có mà khai số lượng ảo sẽ cảnh báo
                        ModelState.AddModelError("", "Số lượng bán không thể lớn hơn số lượng đã mua là: " + (tonTaiSachXuat.SoLuongNhap + tonTaiSachXuat.SoLuongTonDotTruoc));
                    }
                    else
                    {
                        // Còn lại hợp lệ
                        var slMua  = tonTaiSachXuat.SoLuongNhap + tonTaiSachXuat.SoLuongTonDotTruoc;
                        var giaBan = (double)sachService.GetById(baoCaoDLVm.ctBaoCao.IdSach).GiaBan;

                        CtBaoCaoDLViewModel newCtBaoCaoDL = new CtBaoCaoDLViewModel();
                        newCtBaoCaoDL                    = baoCaoDLVm.ctBaoCao;
                        newCtBaoCaoDL.IdBaoCao           = baoCaoDLVm.Id;
                        newCtBaoCaoDL.DonGiaXuat         = giaBan;
                        newCtBaoCaoDL.SoLuongNhap        = tonTaiSachXuat.SoLuongNhap;
                        newCtBaoCaoDL.SoLuongTonDotTruoc = tonTaiSachXuat.SoLuongTonDotTruoc;
                        newCtBaoCaoDL.TongTienNhap       = slMua * giaBan;

                        newCtBaoCaoDL.SoLuongXuat  = baoCaoDLVm.ctBaoCao.SoLuongXuat;
                        newCtBaoCaoDL.TongTienXuat = newCtBaoCaoDL.DonGiaXuat * newCtBaoCaoDL.SoLuongXuat;
                        newCtBaoCaoDL.SoLuongCon   = slMua - baoCaoDLVm.ctBaoCao.SoLuongXuat;
                        newCtBaoCaoDL.TongTienNo   = newCtBaoCaoDL.DonGiaXuat * newCtBaoCaoDL.SoLuongCon;
                        newCtBaoCaoDL.Sach         = Mapper.Map <Sach, SachViewModel>(sach);

                        var sachDaNhap = ((List <CtBaoCaoDLViewModel>)Session["dsCtBaoCao"]).Find(x => x.IdSach == newCtBaoCaoDL.IdSach);
                        if (sachDaNhap == null)
                        {
                            baoCaoDLVm.ctBaoCao = null;
                            ((BaoCaoDLViewModel)Session["BaoCao"]).TongTienSachBan += newCtBaoCaoDL.TongTienXuat;
                            ((BaoCaoDLViewModel)Session["BaoCao"]).TongTienConNo   += newCtBaoCaoDL.TongTienNo;
                            ((List <CtBaoCaoDLViewModel>)Session["dsCtBaoCao"]).Add(newCtBaoCaoDL);

                            TempData["Success"] = "Đã lưu thành công một báo cáo đại lý.";
                            return(Redirect("them-chi-tiet/"));
                        }
                        else
                        {
                            ModelState.AddModelError("", "Mã sách đã được thêm vào danh sách chi tiết rồi.");
                        }
                    }
                }
            }
            return(View(baoCaoDLVm));
        }