public void LuuThanhToan()
        {
            using (var scope = new TransactionScope())
            {
                try
                {
                    double?SoTienThu = double.Parse(speSoTienTT.Number.ToString());
                    if (SoTienThu == 0)
                    {
                        throw new Exception("Chưa nhập số tiền thanh toán");
                    }
                    double?SoNoHienTai = double.Parse(txtCongNoHienTai.Text);
                    if (SoTienThu > SoNoHienTai)
                    {
                        throw new Exception("Số tiền thu không được vượt qua số nợ hiện tại");
                    }

                    int      IDKhachHang = Convert.ToInt32(ccbKhachHang.Value.ToString());
                    string   SoHoaDon    = txtHoaDon.Text;
                    string   NoiDung     = memoNoiDungTT.Text;
                    DateTime NgayThu     = Formats.ConvertToDateTime(dateNgayTT.Text);
                    int      HinhThucThu = rdlHinhThuc.SelectedIndex == 0 ? 1 : 2;
                    double   CongNoCu    = double.Parse(txtCongNoHienTai.Text);

                    kPhieuThanhToanNCC thanhtoan = new kPhieuThanhToanNCC();
                    thanhtoan.STTPhieuThu   = DBDataProvider.STTPhieuThanhToan_NCC(IDKhachHang);
                    thanhtoan.SoHoaDon      = SoHoaDon;
                    thanhtoan.KhachHangID   = IDKhachHang;
                    thanhtoan.SoTienThu     = SoTienThu;
                    thanhtoan.NoiDung       = NoiDung;
                    thanhtoan.NgayThu       = NgayThu;
                    thanhtoan.NgayLap       = DateTime.Now;
                    thanhtoan.NhanVienThuID = Formats.IDUser();
                    thanhtoan.HinhThucTTID  = HinhThucThu;
                    thanhtoan.CongNoCu      = CongNoCu;

                    DBDataProvider.DB.kPhieuThanhToanNCCs.InsertOnSubmit(thanhtoan);
                    DBDataProvider.DB.SubmitChanges();
                    int IDPhieuThu = thanhtoan.IDPhieuThu;

                    if (rdlHinhThuc.SelectedIndex == 0)
                    {
                        //Cap nhat thanh toan phieu đặt hàng
                        List <kNhapKho> ListPhieuNhapKho = DBDataProvider.ListPhieuNhapHang_ASC(IDKhachHang);// phiếu đã được duyệt & chưa thanh toán
                        int             i = 0;
                        if (SoTienThu > 0 && ListPhieuNhapKho.Count > 0)
                        {
                            while (SoTienThu > 0 && i < ListPhieuNhapKho.Count)
                            {
                                double?TienNoDonHang = ListPhieuNhapKho[i].CongNo;
                                if (SoTienThu >= TienNoDonHang)                                     //Thanh toán hết đơn hàng
                                {
                                    ListPhieuNhapKho[i].ThanhToan   = ListPhieuNhapKho[i].TongTien; //cập nhật lại thanh toán = tổng tiền
                                    ListPhieuNhapKho[i].CongNo      = 0;                            // cập nhật còn lại  = 0;
                                    ListPhieuNhapKho[i].TTThanhToan = 1;                            // đã thanh toán
                                    khKhachHang KH = DBDataProvider.DB.khKhachHangs.Where(x => x.IDKhachHang == IDKhachHang).FirstOrDefault();
                                    if (KH != null)
                                    {
                                        #region ghi nhật ký nhập kho để xem báo cáo
                                        khNhatKyCongNo nhatky = new khNhatKyCongNo();
                                        nhatky.NgayNhap    = DateTime.Now;
                                        nhatky.DienGiai    = "Thanh toán Nhà cung cấp";
                                        nhatky.NoDau       = KH.CongNo;
                                        nhatky.NhapHang    = 0;
                                        nhatky.TraHang     = 0;
                                        nhatky.ThanhToan   = TienNoDonHang;
                                        nhatky.NoCuoi      = KH.CongNo - TienNoDonHang;
                                        nhatky.NhanVienID  = Formats.IDUser();
                                        nhatky.SoPhieu     = ListPhieuNhapKho[i].MaPhieu;
                                        nhatky.IDKhachHang = IDKhachHang;
                                        DBDataProvider.DB.khNhatKyCongNos.InsertOnSubmit(nhatky);
                                        DBDataProvider.DB.SubmitChanges();
                                        #endregion
                                        KH.CongNo    -= TienNoDonHang; // - công nợ
                                        KH.ThanhToan += TienNoDonHang;
                                    }
                                    SoTienThu -= TienNoDonHang;
                                }
                                else // Thanh toán 1 phần đơn hàng
                                {
                                    ListPhieuNhapKho[i].ThanhToan += SoTienThu; // cộng phần còn lại vào thanh toán.
                                    ListPhieuNhapKho[i].CongNo     = ListPhieuNhapKho[i].TongTien - ListPhieuNhapKho[i].ThanhToan; // cập nhật phần còn lại
                                    //ListPhieuGiaoHang[i].TTThanhToan = 1;// đã thanh toán
                                    khKhachHang KH = DBDataProvider.DB.khKhachHangs.Where(x => x.IDKhachHang == IDKhachHang).FirstOrDefault();
                                    if (KH != null)
                                    {
                                        #region ghi nhật ký nhập kho để xem báo cáo
                                        khNhatKyCongNo nhatky = new khNhatKyCongNo();
                                        nhatky.NgayNhap    = DateTime.Now;
                                        nhatky.DienGiai    = "Thanh toán Nhà cung cấp";
                                        nhatky.NoDau       = KH.CongNo;
                                        nhatky.NhapHang    = 0;
                                        nhatky.TraHang     = 0;
                                        nhatky.ThanhToan   = SoTienThu;
                                        nhatky.NoCuoi      = KH.CongNo - SoTienThu;
                                        nhatky.NhanVienID  = Formats.IDUser();
                                        nhatky.SoPhieu     = ListPhieuNhapKho[i].MaPhieu;
                                        nhatky.IDKhachHang = IDKhachHang;
                                        DBDataProvider.DB.khNhatKyCongNos.InsertOnSubmit(nhatky);
                                        DBDataProvider.DB.SubmitChanges();
                                        #endregion
                                        KH.CongNo    -= SoTienThu; // - công nợ
                                        KH.ThanhToan += SoTienThu;
                                    }
                                    SoTienThu -= SoTienThu;
                                }
                                i++;
                            }
                        }
                        else
                        {
                            // trừ công nợ thẳng.
                            khKhachHang KH = DBDataProvider.DB.khKhachHangs.Where(x => x.IDKhachHang == IDKhachHang).FirstOrDefault();
                            if (KH != null)
                            {
                                #region ghi nhật ký nhập kho để xem báo cáo
                                khNhatKyCongNo nhatky = new khNhatKyCongNo();
                                nhatky.NgayNhap    = DateTime.Now;
                                nhatky.DienGiai    = "Thanh toán Nhà cung cấp";
                                nhatky.NoDau       = KH.CongNo;
                                nhatky.NhapHang    = 0;
                                nhatky.TraHang     = 0;
                                nhatky.ThanhToan   = SoTienThu;
                                nhatky.NoCuoi      = KH.CongNo - SoTienThu;
                                nhatky.NhanVienID  = Formats.IDUser();
                                nhatky.SoPhieu     = "";
                                nhatky.IDKhachHang = IDKhachHang;
                                DBDataProvider.DB.khNhatKyCongNos.InsertOnSubmit(nhatky);
                                DBDataProvider.DB.SubmitChanges();
                                #endregion
                                KH.CongNo    -= SoTienThu; // - công nợ
                                KH.ThanhToan += SoTienThu;
                            }
                        }
                    }
                    else
                    {
                        int      IDNhapKho     = int.Parse(ccbPhieuThanhToan.Value.ToString());
                        kNhapKho PhieuNK       = DBDataProvider.DB.kNhapKhos.Single(x => x.IDNhapKho == IDNhapKho);
                        double?  TienNoDonHang = PhieuNK.CongNo;
                        if (SoTienThu >= TienNoDonHang)
                        {
                            PhieuNK.ThanhToan   = PhieuNK.TongTien;
                            PhieuNK.CongNo      = 0;
                            PhieuNK.TTThanhToan = 1;// đã thanh toán
                            khKhachHang KH = DBDataProvider.DB.khKhachHangs.Where(x => x.IDKhachHang == IDKhachHang).FirstOrDefault();
                            if (KH != null)
                            {
                                #region ghi nhật ký nhập kho để xem báo cáo
                                khNhatKyCongNo nhatky = new khNhatKyCongNo();
                                nhatky.NgayNhap    = DateTime.Now;
                                nhatky.DienGiai    = "Thanh toán Nhà cung cấp";
                                nhatky.NoDau       = KH.CongNo;
                                nhatky.NhapHang    = 0;
                                nhatky.TraHang     = 0;
                                nhatky.ThanhToan   = SoTienThu;
                                nhatky.NoCuoi      = KH.CongNo - SoTienThu;
                                nhatky.NhanVienID  = Formats.IDUser();
                                nhatky.SoPhieu     = PhieuNK.MaPhieu;
                                nhatky.IDKhachHang = IDKhachHang;
                                DBDataProvider.DB.khNhatKyCongNos.InsertOnSubmit(nhatky);
                                DBDataProvider.DB.SubmitChanges();
                                #endregion
                                KH.CongNo    -= SoTienThu;// - công nợ
                                KH.ThanhToan += SoTienThu;
                            }
                        }
                    }
                    DBDataProvider.DB.SubmitChanges();
                    scope.Complete();
                    // Reset();
                    cbpThanhToan.JSProperties["cp_Reset"] = true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }