public ActionResult Themcthd(string idhoadon)
        {
            ViewBag.id = idhoadon;
            var hd = _hoadonRepository.GetByTwoKey(idhoadon, HttpContext.Session.GetString("chinhanh"));
            var ct = new cthdvat();

            ct.Idhoadon = idhoadon;
            ct.sttdong  = 0;
            ct.tygia    = 1;
            ListNgoaite("VND");
            ListHttt("TM");
            Listhttc("");
            if (hd.coupon)
            {
                Tkco("3387");
            }
            else
            {
                Tkco("5113333335");
            }
            Tkno("1311110000");
            // var hd = _hoadonRepository.Find(x=>x.Idhoadon==idhoadon && x.chinhanh== HttpContext.Session.GetString("chinhanh")).FirstOrDefault();


            if (!String.IsNullOrEmpty(hd.keyhddt))
            {
                SetAlert("Đây là hoá đơn điện tử, không được điều chỉnh thông tin khi đã xuất hoá đơn", "error");
                return(Redirect(HttpContext.Session.GetString("urlEditHoadon")));
            }

            return(View(ct));
        }
        public ActionResult Themcthd(cthdvat entity)
        {
            entity.ngaytao  = System.DateTime.Now;
            entity.tour     = "";
            entity.httc     = entity.httc ?? "";
            entity.diengiai = string.IsNullOrEmpty(entity.diengiai) ? "" : entity.diengiai;
            entity.sgtcode  = string.IsNullOrEmpty(entity.sgtcode) ? "" : entity.sgtcode;
            entity.tenkhach = string.IsNullOrEmpty(entity.tenkhach) ? "" : entity.tenkhach;
            entity.chinhanh = HttpContext.Session.GetString("chinhanh");
            entity.logfile  = "-User tạo chi tiết hoá đơn: " + HttpContext.Session.GetString("username") + " vào lúc: " + System.DateTime.Now.ToString();
            var result = _cthdvatRepository.Create(entity);

            if (result != null)
            {
                SetAlert("Thêm chi tiết hoá đơn thành công", "success");
            }
            else
            {
                SetAlert("Thêm chi tiết hoá đơn không thành công", "error");
            }
            return(Redirect(HttpContext.Session.GetString("urlEditHoadon")));
        }
        public ActionResult ThemctTuhuyhd_(string idhoadon, string listString)
        {
            var cthd = JsonConvert.DeserializeObject <List <cthdvat> >(listString);

            foreach (var c in cthd)
            {
                var     ct = _cthdvatRepository.GetById(c.Id);
                cthdvat h  = new cthdvat();
                //ct.Idhoadon = idhoadon;
                h.chinhanh   = HttpContext.Session.GetString("chinhanh");
                h.Idhoadon   = idhoadon;
                h.diengiai   = c.diengiai;
                h.sotien     = c.sotien;
                h.serial     = ct.serial;
                h.xuatve     = ct.xuatve;
                h.tenkhach   = ct.tenkhach;
                h.sgtcode    = ct.sgtcode;
                h.sotiennt   = ct.sotiennt;
                h.sotien     = ct.sotien;
                h.loaitien   = ct.loaitien;
                h.tygia      = ct.tygia;
                h.ppv        = ct.ppv;
                h.vat        = ct.vat;
                h.ghichu     = ct.ghichu;
                h.coupon     = ct.coupon;
                h.tiencoupon = ct.tiencoupon;
                h.tour       = ct.tour;
                h.httc       = ct.httc;
                h.tkno       = ct.tkno;
                h.tkco       = ct.tkco;
                h.ngaytao    = System.DateTime.Now;
                h.logfile    = "User thêm chi tiết từ hoá đơn " + c.hoadonhuy + " đã huỷ: " + HttpContext.Session.GetString("username") + " vào lúc " + System.DateTime.Now;
                // _huycthdvatRepository.Create(h);
                _cthdvatRepository.Create(h);
            }

            return(Redirect(HttpContext.Session.GetString("urlEditHoadon")));
        }
        public ActionResult ListCtVetourBySerial(string Idhoadon, string tour, string serial, decimal?ppv, decimal tygia, string tkno, string tkco)
        {
            var vetour = _hoadonRepository.GetVetourBySerial(tour, serial, HttpContext.Session.GetString("chinhanh"));

            List <cthdvat> newList = new List <cthdvat>();
            // Tính tổng cộng tiền coupon đặt cọc của vé tour
            var tccoupon = _hoadonRepository.GetTienCoupon(tour, vetour.id);

            if (tccoupon != null) // Nếu tiền coupon > 0
            {
                cthdvat ct = new cthdvat();
                ct.Idhoadon = Idhoadon;
                ct.serial   = vetour.serial;
                ct.diengiai = vetour.diengiai;
                ct.xuatve   = Convert.ToDateTime(vetour.xuatve);
                ct.tenkhach = vetour.tenkhach;
                ct.sgtcode  = vetour.sgtcode;
                // số tiền còn lại = số tiền vé tour - đặt cọc bằng coupon và vat =0 vì coupon đã tính thuế
                //ct.sotien = (vetour.sotiennt) ;
                //ct.sotiennt = (vetour.doanhthunn *tygia);
                ViewBag.tongtien = vetour.sotiennt - tccoupon.Coupon;
                if (tour == "OB")
                {
                    if (vetour.sotiennt - tccoupon.Coupon > (vetour.doanhthunn * tygia))
                    {
                        for (int j = 0; j < 2; j++)
                        {
                            if (j == 0)
                            {
                                ct.sotien   = vetour.sotiennt - tccoupon.Coupon - (vetour.doanhthunn * tygia);
                                ct.sotiennt = vetour.sotiennt - tccoupon.Coupon - (vetour.doanhthunn * tygia);
                                ct.vat      = 10;
                            }
                            else
                            {
                                ct.sotien = vetour.sotiennt - tccoupon.Coupon;
                                ct.sotien = vetour.sotiennt - tccoupon.Coupon;
                                ct.vat    = 0;
                            }
                            ct.ppv      = Convert.ToDecimal(ppv);
                            ct.tygia    = (decimal)tygia;
                            ct.ghichu   = vetour.ghichu;
                            ct.tkco     = tkco;
                            ct.tkno     = tkno;
                            ct.sttdong  = 0;
                            ct.ngaytao  = System.DateTime.Now;
                            ct.khachhuy = false;
                            ct.httc     = "";
                            ct.dichvu   = "";
                            ct.loaitien = vetour.loaitien;
                            ct.tour     = tour;
                            ct.sk       = vetour.sk;
                            newList.Add(ct);
                        }
                    }
                    else
                    {
                        ct.sotien = vetour.sotiennt - tccoupon.Coupon;
                        ct.sotien = vetour.sotiennt - tccoupon.Coupon;
                        ct.vat    = 0;

                        ct.ppv      = Convert.ToDecimal(ppv);
                        ct.tygia    = (decimal)tygia;
                        ct.ghichu   = vetour.ghichu;
                        ct.tkco     = tkco;
                        ct.tkno     = tkno;
                        ct.sttdong  = 0;
                        ct.ngaytao  = System.DateTime.Now;
                        ct.khachhuy = false;
                        ct.httc     = "";
                        ct.dichvu   = "";
                        ct.loaitien = vetour.loaitien;
                        ct.tour     = tour;
                        ct.sk       = vetour.sk;
                        newList.Add(ct);
                    }
                }
                else
                {
                    ct.sotien   = vetour.sotiennt - tccoupon.Coupon;
                    ct.sotiennt = vetour.sotiennt - tccoupon.Coupon;
                    ct.vat      = 10;
                    ct.ppv      = Convert.ToDecimal(ppv);
                    ct.tygia    = (decimal)tygia;
                    ct.ghichu   = vetour.ghichu;
                    ct.tkco     = tkco;
                    ct.tkno     = tkno;
                    ct.sttdong  = 0;
                    ct.ngaytao  = System.DateTime.Now;
                    ct.khachhuy = false;
                    ct.httc     = "";
                    ct.dichvu   = "";
                    ct.loaitien = vetour.loaitien;
                    ct.tour     = tour;
                    ct.sk       = vetour.sk;
                    newList.Add(ct);
                }
            }
            else // Nếu không có coupon thì tính 2 dòng: dòng đầu tiên vat 10% của tonggiatour - tong doanh thu nn
            {
                var listct = _cthdvatRepository.ListCtVetourBySerial(tour, serial);
                if (tour == "OB") // Nếu tour OB thì tách làm 2 dòng, dòng 1 tính 10% vat trên tổng tổngtiền - tổng doanhthunn; dòng 2 vat 0% trên tổng doanhthu nước ngoài
                {
                    //decimal number1 = 0;
                    //decimal number2 = 0;
                    //var adl = listct.Where(x => x.serial == serial).Where(x => x.dotuoi == "ADL").Select(x => x.sotiennt);
                    //var doanhthunnCHD = listct.Where(x => x.serial == serial).Where(x => x.dotuoi != "ADL").Select(x => x.sotiennt);
                    //var doanhthunnADL = listct.Where(x => x.serial == serial).Where(x => x.dotuoi.Equals("ADL")).Select(x => x.doanhthunn);
                    //number1 = adl.Sum();
                    //number2 = doanhthunnADL.Sum();
                    //var star1 = number1 - number2;
                    //var star2 = number2 + doanhthunnCHD.Sum();
                    // Nếu vé tour mà > doanh thu nướci ngoài thì chia làm 2 dong// ngược lại thì chỉ lấy 1 dòng vé tour vat  0%
                    if (vetour.sotiennt > (vetour.doanhthunn * tygia))
                    {
                        for (int j = 0; j < 2; j++)
                        {
                            cthdvat ct = new cthdvat();
                            ct.Idhoadon = Idhoadon;
                            ct.serial   = vetour.serial;
                            ct.diengiai = vetour.diengiai;
                            ct.xuatve   = Convert.ToDateTime(vetour.xuatve);
                            ct.tenkhach = vetour.tenkhach;
                            ct.sgtcode  = vetour.sgtcode;
                            if (j == 0)
                            {
                                //ct.sotiennt = star1;
                                ct.diengiai = vetour.diengiai;
                                //ct.sotien = star1;
                                //ct.vat = 10;
                                ct.sotien   = vetour.sotiennt - (vetour.doanhthunn * tygia);
                                ct.sotiennt = vetour.sotiennt - (vetour.doanhthunn * tygia);
                                ct.vat      = 10;
                            }
                            else
                            {
                                //ct.sotiennt = star2;
                                //ct.sotien = star2;
                                ct.sotiennt = vetour.doanhthunn * tygia;
                                ct.sotien   = vetour.doanhthunn * tygia;
                                ct.diengiai = vetour.diengiai;
                                ct.vat      = 0;
                            }
                            ct.ppv      = Convert.ToDecimal(ppv);
                            ct.tygia    = (decimal)tygia;
                            ct.ghichu   = vetour.ghichu;
                            ct.tkco     = tkco;
                            ct.tkno     = tkno;
                            ct.sttdong  = 0;
                            ct.ngaytao  = System.DateTime.Now;
                            ct.khachhuy = false;
                            ct.httc     = "";
                            ct.dichvu   = "";
                            ct.loaitien = vetour.loaitien;
                            ct.tour     = tour;
                            ct.sk       = vetour.sk;
                            newList.Add(ct);
                        }
                    }
                    // vé tour nhỏ hơn doanh thu nước ngoài, thì là  chính nó với vat =0%
                    else
                    {
                        cthdvat ct = new cthdvat();
                        ct.Idhoadon = Idhoadon;
                        ct.serial   = vetour.serial;
                        ct.diengiai = vetour.diengiai;
                        ct.xuatve   = Convert.ToDateTime(vetour.xuatve);
                        ct.tenkhach = vetour.tenkhach;
                        ct.sgtcode  = vetour.sgtcode;
                        ct.sotien   = vetour.sotiennt;
                        ct.sotiennt = vetour.sotiennt;
                        ct.vat      = 0;
                        ct.diengiai = vetour.diengiai;
                        ct.ppv      = Convert.ToDecimal(ppv);
                        ct.tygia    = (decimal)tygia;
                        ct.ghichu   = vetour.ghichu;
                        ct.tkco     = tkco;
                        ct.tkno     = tkno;
                        ct.sttdong  = 0;
                        ct.ngaytao  = System.DateTime.Now;
                        ct.khachhuy = false;
                        ct.httc     = "";
                        ct.dichvu   = "";
                        ct.loaitien = vetour.loaitien;
                        ct.tour     = tour;
                        ct.sk       = vetour.sk;
                        newList.Add(ct);
                    }
                }
                else // Nếu là tour nội địa thì tính vat 10% trên từng vé tour
                {
                    cthdvat ct = new cthdvat();
                    ct.Idhoadon      = Idhoadon;
                    ct.serial        = vetour.serial;
                    ct.diengiai      = vetour.diengiai;
                    ct.xuatve        = Convert.ToDateTime(vetour.xuatve);
                    ct.tenkhach      = vetour.tenkhach;
                    ct.sgtcode       = vetour.sgtcode;
                    ct.sotien        = vetour.sotiennt; // - tccoupon.Coupon;
                    ct.sotiennt      = vetour.sotiennt; // - tccoupon.Coupon;
                    ViewBag.tongtien = vetour.sotiennt; // - tccoupon.Coupon;
                    ct.vat           = 10;
                    ct.ppv           = Convert.ToDecimal(ppv);
                    ct.tygia         = (decimal)tygia;
                    ct.ghichu        = vetour.ghichu;
                    ct.tkco          = tkco;
                    ct.tkno          = tkno;
                    ct.sttdong       = 0;
                    ct.ngaytao       = System.DateTime.Now;
                    ct.khachhuy      = false;
                    ct.httc          = "";
                    ct.dichvu        = "";
                    ct.loaitien      = vetour.loaitien;
                    ct.tour          = tour;
                    ct.sk            = vetour.sk;
                    newList.Add(ct);
                }
            }
            return(View(newList));
        }
        public ActionResult Capnhatcthd(cthdvat entity)
        {
            temp = ""; log = "";

            cthdvat ct = _cthdvatRepository.GetById(entity.Id);

            ct.sttdong = string.IsNullOrEmpty(ct.sttdong.ToString()) ? 0 : ct.sttdong;

            if (ct.sttdong != entity.sttdong)
            {
                temp += string.Format("- STT thay đổi: {0}->{1}", ct.sttdong, entity.sttdong);
            }
            if (ct.diengiai != entity.diengiai)
            {
                temp += string.Format("- Diễn giải thay đổi: {0}->{1}", ct.diengiai, entity.diengiai);
            }
            if (ct.tenkhach != entity.tenkhach)
            {
                temp += string.Format("- Tên khách thay đổi: {0}->{1}", ct.tenkhach, entity.tenkhach);
            }

            if (ct.sgtcode != entity.sgtcode)
            {
                temp += string.Format("- Tour code thay đổi: {0}->{1}", ct.sgtcode, entity.sgtcode);
            }
            if (ct.sk != entity.sk)
            {
                temp += string.Format("- Số khách thay đổi: {0}->{1}", ct.sk, entity.sk);
            }
            if (ct.sotiennt != entity.sotiennt)
            {
                temp += string.Format("- Tiền NT thay đổi: {0:#,##0.0}->{1:#,##0.0}", ct.sotiennt, entity.sotiennt);
            }
            if (ct.loaitien != entity.loaitien)
            {
                temp += string.Format("- Loại tiền thay đổi thay đổi: {0}->{1}", ct.loaitien, entity.loaitien);
            }
            if (ct.tygia != entity.tygia)
            {
                temp += string.Format("- Tỷ giá thay đổi: {0}->{1}", ct.tygia, entity.tygia);
            }
            if (ct.sotien != entity.sotien)
            {
                temp += string.Format("- Tiền VNĐ thay đổi: {0:#,##0}->{1:#,##0}", ct.sotien, entity.sotien);
            }
            if (ct.ppv != entity.ppv)
            {
                temp += string.Format("- Phí phục vụ thay đổi: {0}->{1}", ct.ppv, entity.ppv);
            }
            if (ct.vat != entity.vat)
            {
                temp += string.Format("- VAT thay đổi: {0}->{1}", ct.vat, entity.vat);
            }
            var httc = string.IsNullOrEmpty(entity.httc) ? "" : entity.httc;

            if (ct.httc != httc)
            {
                temp += string.Format("- HTTC thay đổi: {0}->{1}", ct.httc, entity.httc);
            }
            if (ct.tkno != entity.tkno)
            {
                temp += string.Format("- Tài khoản nợ thay đổi: {0}->{1}", ct.tkno, entity.tkno);
            }
            if (ct.tkco != entity.tkco)
            {
                temp += string.Format("- Tài khoản có thay đổi: {0}->{1}", ct.tkco, entity.tkco);
            }
            if (ct.ghichu != entity.ghichu)
            {
                temp += string.Format("- Ghi chú thay đổi: {0}->{1}", ct.ghichu, entity.ghichu);
            }
            ct.sttdong  = entity.sttdong;
            ct.diengiai = entity.diengiai;
            ct.tenkhach = entity.tenkhach;
            ct.sgtcode  = entity.sgtcode;
            ct.sotiennt = entity.sotiennt;
            ct.loaitien = entity.loaitien;
            ct.tygia    = entity.tygia;
            ct.sotien   = entity.sotien;
            ct.ppv      = entity.ppv;
            ct.vat      = entity.vat;
            ct.httc     = string.IsNullOrEmpty(entity.httc) ? "" : entity.httc;
            ct.tkno     = entity.tkno;
            ct.tkco     = entity.tkco;
            ct.ghichu   = entity.ghichu;
            if (temp.Length > 0)
            {
                log        = System.Environment.NewLine;
                log       += "=============";
                log       += System.Environment.NewLine;
                log       += temp + " -User cập nhật chi tiết hoá đơn: " + HttpContext.Session.GetString("username") + " vào lúc: " + System.DateTime.Now.ToString("dd/MM/yyyy HH:mm");
                ct.logfile = ct.logfile + log;
            }
            var result = _cthdvatRepository.Update(ct);

            if (result != null)
            {
                SetAlert("Cập nhật chi tiết hoá đơn thành công", "success");
            }
            else
            {
                SetAlert("Cập nhật chi tiết hoá đơn không thành công", "error");
            }

            return(Redirect(HttpContext.Session.GetString("urlEditHoadon")));
        }