public ActionResult ThemPhieuNhap(PhieuNhapViewModel pnViewModel, string TenNXB)
        {
            if (ModelState.IsValid)
            {
                var nxb = nhaXuatBanService.GetSingleByName(TenNXB);
                if (nxb == null)
                {
                    ModelState.AddModelError("", "Thông tin nhà xuất bản không tồn tại.");
                }
                else
                {
                    pnViewModel.IdNXB       = nxb.Id;
                    pnViewModel.NhaXuatBan  = Mapper.Map <NhaXuatBan, NhaXuatBanViewModel>(nxb);
                    pnViewModel.TongTien    = 0;
                    pnViewModel.TongSoLuong = 0;
                    Session["PhieuNhap"]    = pnViewModel;
                    // Open current session to save the Import data info
                    Session["dsCtPhieuNhap"] = new List <CtPhieuNhapViewModel>();

                    return(Redirect("them-chi-tiet/"));
                }
            }
            return(View(pnViewModel));
        }
        public ActionResult TaoBaoCao(ThanhToanViewModel thanhToanVm, string TenNXB)
        {
            if (Request.Form["analyze"] != null)
            {
                if (ModelState.IsValid)
                {
                    var nxb = nxbService.GetSingleByName(TenNXB);
                    if (nxb == null)
                    {
                        ModelState.AddModelError("", "Thông tin nhà xuất bản không tồn tại.");
                    }
                    else
                    {
                        thanhToanVm.IdNXB = nxb.Id;
                        var ngayBatDau = thanhToanService.GetStartDateToCreateReport(nxb.Id);
                        if (ngayBatDau != null)
                        {
                            if (ngayBatDau <= thanhToanVm.NgayKetThuc)
                            {
                                thanhToanVm.NgayBatDau = ngayBatDau.Value;
                            }
                            else
                            {
                                ModelState.AddModelError("", "Thời gian báo cáo không hợp lệ.");
                                return(View(thanhToanVm));
                            }
                        }
                        else
                        {
                            var ngayBatDauTaoPhieuXuat = phieuNhapService.GetFirstDateToCreateReport(nxb.Id).Value;
                            if (ngayBatDauTaoPhieuXuat != null)
                            {
                                if (ngayBatDauTaoPhieuXuat <= thanhToanVm.NgayKetThuc)
                                {
                                    thanhToanVm.NgayBatDau = ngayBatDauTaoPhieuXuat;
                                }
                                else
                                {
                                    ModelState.AddModelError("", "Thời gian báo cáo không hợp lệ.");
                                    return(View(thanhToanVm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("", "Chưa nhập sách từ NXB này, không thể lập báo cáo.");
                                return(View(thanhToanVm));
                            }
                        }

                        var listThongKe = thanhToanService.GetListAnalysisReport(thanhToanVm.IdNXB, thanhToanVm.NgayBatDau, thanhToanVm.NgayKetThuc);
                        if (listThongKe.Count == 0)
                        {
                            ModelState.AddModelError("", "Chưa nhập hàng từ nhà xuất bản này.");
                        }
                        else if (thanhToanService.CheckReportIsCreated(thanhToanVm.IdNXB, thanhToanVm.NgayBatDau))
                        {
                            ModelState.AddModelError("", "Khoảng thời gian đã được lập báo cáo rồi.");
                        }
                        else
                        {
                            // Clear at the second click
                            Session["ThanhToan"] = null;
                            // Add new value for session
                            thanhToanVm.NhaXuatBan   = Mapper.Map <NhaXuatBan, NhaXuatBanViewModel>(nxb);
                            thanhToanVm.dsThongKeNXB = listThongKe;
                            foreach (var ct in listThongKe)
                            {
                                thanhToanVm.TongTienConNo += ct.TongTienNo;
                                if (ct.TongTienXuat != null)
                                {
                                    thanhToanVm.TongTienSachBan += (double)ct.TongTienXuat;
                                }
                            }
                            Session["ThanhToan"] = thanhToanVm;
                        }
                    }
                }
            }
            else if (Request.Form["create"] != null)
            {
                var tt           = (ThanhToanViewModel)Session["ThanhToan"];
                var newThanhToan = new ThanhToan();
                newThanhToan.UpdateThanhToan(tt);
                newThanhToan.TongTienConNo += tt.TienNoThangTruoc;
                newThanhToan.IdTinhTrang    = CommonConstant.DA_BAO_CAO;
                newThanhToan.NgayXacNhan    = newThanhToan.ThoiGianLapPhieu;
                thanhToanService.Add(newThanhToan);
                thanhToanService.Save();

                foreach (var ct in tt.dsThongKeNXB)
                {
                    if (ct.SoLuongXuat == null)
                    {
                        ct.TongTienXuat = 0;
                        ct.SoLuongXuat  = 0;
                    }
                    var ctThanhToan = new CtThanhToan
                    {
                        IdSach             = ct.Id,
                        IdThanhToan        = newThanhToan.Id,
                        SoLuongNhap        = ct.SoLuongNhap,
                        SoLuongTonDotTruoc = ct.SoLuongTonDotTruoc,
                        TongTienNhap       = ct.TongTienNhap,
                        SoLuongXuat        = ct.SoLuongXuat,
                        TongTienXuat       = ct.TongTienXuat,
                        SoLuongCon         = (ct.SoLuongNhap + ct.SoLuongTonDotTruoc) - ct.SoLuongXuat,
                        TienNo             = ct.TongTienNo,
                        DonGiaNhap         = ct.DonGiaNhap
                    };
                    ctThanhToanService.Add(ctThanhToan);
                }
                thanhToanService.Save();
                Session["ThanhToan"] = null;
                TempData["Success"]  = "Đã thêm thành công một báo cáo NXB.";
                Session.RemoveAll();
                return(Redirect("/bao-cao/nxb/"));
            }
            return(View(thanhToanVm));
        }