public List <DetailSellGoods> getListChiTietMuaCongNo() // chứng từ
        {
            string sql;

            sql = string.Format("SELECT ct.MaPhieuXuat, ct.MaHang, ct.TenHang, ct.DonVi, ct.SoLuong, " +
                                "ct.DonGia, ct.ThanhToan, tt.CK, tt.VAT, tt.TongTienNhan " +
                                "FROM CT_PHIEUXUAT ct, THONGTIN_PHIEU_BANHANG tt " +
                                "WHERE ct.MaPhieuXuat = tt.MaPhieu and tt.Ma_DieuKhoan = {0} ", 1);

            DataTable data = ConnectionDB.getData(sql);
            List <DetailSellGoods> ListChiTietMuaCongNo = new List <DetailSellGoods>();

            if (data.Rows.Count > 0)
            {
                foreach (DataRow dataRow in data.Rows)
                {
                    DetailSellGoods detaiSell = new DetailSellGoods();
                    detaiSell.MaPhieuXuat   = dataRow["MaPhieuXuat"].ToString();
                    detaiSell.MaHang        = dataRow["MaHang"].ToString();
                    detaiSell.TenHang       = dataRow["TenHang"].ToString();
                    detaiSell.DonVi         = dataRow["DonVi"].ToString();
                    detaiSell.DonGia        = float.Parse(dataRow["DonGia"].ToString());
                    detaiSell.SoLuong       = int.Parse(dataRow["SoLuong"].ToString());
                    detaiSell.ThanhTien     = float.Parse(dataRow["ThanhToan"].ToString());
                    detaiSell.CKCN          = float.Parse(dataRow["CK"].ToString());
                    detaiSell.VATCN         = float.Parse(dataRow["VAT"].ToString());
                    detaiSell.TongThanhTien = float.Parse(dataRow["TongTienNhan"].ToString());
                    ListChiTietMuaCongNo.Add(detaiSell);
                }
            }
            return(ListChiTietMuaCongNo);
        }
        public List <DetailSellGoods> getListChiTietMua() // chứng từ
        {
            string sql = string.Format("SELECT MaPhieuXuat, MaHang, TenHang, DonVi, DonGia, SoLuong, ThanhTien, CK, ThanhToan " +
                                       " FROM CT_PHIEUXUAT");
            DataTable data = ConnectionDB.getData(sql);
            List <DetailSellGoods> listChiTietHoaDon = new List <DetailSellGoods>();

            if (data.Rows.Count > 0)
            {
                foreach (DataRow dataRow in data.Rows)
                {
                    DetailSellGoods detaiSell = new DetailSellGoods();
                    detaiSell.MaPhieuXuat = dataRow["MaPhieuXuat"].ToString();
                    detaiSell.MaHang      = dataRow["MaHang"].ToString();
                    detaiSell.TenHang     = dataRow["TenHang"].ToString();
                    detaiSell.DonVi       = dataRow["DonVi"].ToString();
                    detaiSell.DonGia      = float.Parse(dataRow["DonGia"].ToString());
                    detaiSell.SoLuong     = int.Parse(dataRow["SoLuong"].ToString());
                    detaiSell.ThanhTien   = float.Parse(dataRow["ThanhTien"].ToString());
                    detaiSell.CK          = float.Parse(dataRow["CK"].ToString());
                    detaiSell.ThanhToan   = float.Parse(dataRow["ThanhToan"].ToString());
                    listChiTietHoaDon.Add(detaiSell);
                }
            }
            return(listChiTietHoaDon);
        }
        public int InsertDetailSell(DetailSellGoods detailSell)
        {
            string sql = string.Format("INSERT INTO CT_PHIEUXUAT  VALUES('{0}', N'{1}', N'{2}', N'{3}'," +
                                       " {4}, {5}, {6}, {7}, {8})", detailSell.MaPhieuXuat, detailSell.MaHang, detailSell.TenHang,
                                       detailSell.DonVi, detailSell.SoLuong, detailSell.DonGia, detailSell.ThanhTien, detailSell.CK, detailSell.ThanhToan);

            return(ConnectionDB.ExcuteNonQuery(sql));
        }
        public int InsertChiTietHoaDonBanHang_Ao(DetailSellGoods detailSell)
        {
            string sql = string.Format("INSERT INTO [HIENTHI_PHIEUXUAT](MaPhieu, MaHang, TenHang, DonVi, SoLuong, DonGia, " +
                                       "ThanhTien,CK, ThanhToan ) " +
                                       "VALUES ('{0}', '{1}', N'{2}',N'{3}', {4}, {5}, {6}, '{7}', {8} )", detailSell.MaPhieuXuat,
                                       detailSell.MaHang, detailSell.TenHang, detailSell.DonVi, detailSell.SoLuong, detailSell.DonGia, detailSell.ThanhTien, detailSell.CK, detailSell.ThanhToan);
            int check = ConnectionDB.ExcuteNonQuery(sql);

            return(check);
        }
        // float TongThu = 0;

        public float getSumTien()
        {
            float tien  = 0;
            int   count = grvListGoodSell.RowCount;

            for (int i = 0; i < count - 1; i++) /// Chạy for để lấy ra tất cả tổng tiền
            {
                DetailSellGoods detailSell = new DetailSellGoods();
                DataRow         data       = grvListGoodSell.GetDataRow(i);

                tien += float.Parse(data[9].ToString());
            }
            return(tien);
        }
        public List <DetailSellGoods> getListChiTietHoaDonBanHangFromMaPhieu(string maPhieu)
        {
            string sql = string.Format("Select MaPhieuXuat, MaHang, TenHang, DonVi, SoLuong, DonGia," +
                                       " ThanhTien, CK, ThanhToan from [CT_PHIEUXUAT] where MaPhieuXuat = '{0}' ", maPhieu);
            DataTable data = ConnectionDB.getData(sql);
            List <DetailSellGoods> listChiTiet = new List <DetailSellGoods>();

            foreach (DataRow dataRow in data.Rows)
            {
                DetailSellGoods detaiBuy = new DetailSellGoods();
                detaiBuy.MaPhieuXuat = dataRow["MaPhieuXuat"].ToString();
                detaiBuy.MaHang      = dataRow["MaHang"].ToString();
                detaiBuy.TenHang     = dataRow["TenHang"].ToString();
                detaiBuy.DonVi       = dataRow["DonVi"].ToString();
                detaiBuy.SoLuong     = int.Parse(dataRow["SoLuong"].ToString());
                detaiBuy.DonGia      = float.Parse(dataRow["DonGia"].ToString());
                detaiBuy.ThanhTien   = float.Parse(dataRow["ThanhTien"].ToString());
                detaiBuy.CK          = float.Parse(dataRow["CK"].ToString());
                detaiBuy.ThanhToan   = float.Parse(dataRow["ThanhToan"].ToString());
                listChiTiet.Add(detaiBuy);
            }
            return(listChiTiet);
        }
 public int InsertDetailSell(DetailSellGoods detailSellGoods)
 {
     return(detailSell.InsertDetailSell(detailSellGoods));
 }
 public int InsertChiTietHoaDonBanHang_Ao(DetailSellGoods detail)
 {
     return(detailSell.InsertChiTietHoaDonBanHang_Ao(detail));
 }
        private void btnLuuVaThem_Click(object sender, EventArgs e)
        {
            InforDetailSell infor = new InforDetailSell();


            string maPhieu = "";
            int    sl      = 0;
            bool   check   = true;
            // lấy thông tin infor để lưu

            // phần bắt lỗi:
            int count = grvListGoodSell.RowCount;

            if (cbKhachHang.Text == "")
            {
                XtraMessageBox.Show("Thiếu trường thông tin");
                cbKhachHang.Focus();
            }
            else if (count < 2)
            {
                XtraMessageBox.Show("Mời bạn chọn mặt hàng");
            }
            else
            {
                tk.MaKho = infor.MaKho = cbKhoNhap.EditValue != null?cbKhoNhap.EditValue.ToString() : null; // lấy Mã kho của măt hàng mua vào

                for (int i = 0; i < count - 1; i++)                                                         /// Chạy for để lấy ra tất cả những mặt hành nào đã bán
                {
                    DetailSellGoods detailSell = new DetailSellGoods();
                    DataRow         data       = grvListGoodSell.GetDataRow(i);
                    sl        = detailSell.SoLuong = int.Parse(data[4].ToString());
                    tk.MaHang = detailSell.MaHang = data[1].ToString();

                    int checkMaHang = tkBus.checkMatHang(tk.MaHang, tk.MaKho);
                    int slHienTaiMH = tkBus.getSoLuong(tk);
                    slHienTaiMH -= sl;
                    // kiểm tra xem là mặt hàng nãy đã có trong kho hay chưa
                    if (checkMaHang == 1)
                    {
                        if (slHienTaiMH < 0)
                        {
                            DialogResult dr;
                            dr = XtraMessageBox.Show("Số lượng tồn kho đang ít hơn số lượng bán. Nếu thực hiện giao dịch, số lượng tồn của mặt hàng " + tk.MaHang + " sẽ là âm ", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                            if (dr == DialogResult.No)
                            {
                                check = false;
                                break;
                            }
                        }
                    }
                    else // neếu mặt hang chưa có trong Kho.
                    {
                        DialogResult dr;
                        dr = XtraMessageBox.Show("Mặt hàng hiện chưa có trong kho. Nếu thực hiện giao dịch. Số lượng tồn của mặt hàng " + tk.MaHang + " sẽ là âm ", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (dr == DialogResult.No)
                        {
                            check = false;
                            break;
                        }
                    }
                }

                if (check == false)
                {
                    XtraMessageBox.Show("Thêm Mặt hàng thất bại");
                }
                else
                {
                    infor.TongTienNhan = float.Parse(ThanhTien.Text);
                    infor.TongTienBan  = getSumTien();
                    infor.CK           = float.Parse(calCK.Text);
                    infor.VAT          = float.Parse(calVAT.Text);
                    infor.MaPhieu      = maPhieu = txtPhieu.Text;
                    infor.TenKH        = cbKhachHang.Text;
                    infor.MaKH         = txtMaKH.Text;
                    infor.NgayLap      = DateTime.Parse(String.Format("{0:MM/dd/yyyy}", dtNgay.Text));
                    infor.HanThanhToan = DateTime.Parse(String.Format("{0:MM/dd/yyyy}", dtHanThanhToan.Text));
                    infor.MaNVLap      = cbNhanVien.EditValue != null?cbNhanVien.EditValue.ToString() : null;

                    infor.SoHoaDonVAT    = txtSoHoaDonVAT.Text;
                    infor.SoPhieuNhapTay = txtSoPhieuVietTay.Text;
                    infor.DiaChi         = txtDiaChi.Text;
                    infor.GhiChu         = txtGhiChu.Text;
                    infor.Ma_PhuongThuc  = cbHinhThucThanhToan.EditValue != null?cbHinhThucThanhToan.EditValue.ToString() : null;

                    infor.Ma_DieuKhoan = int.Parse(cbDieuKhoanThanhToan.EditValue != null ? cbDieuKhoanThanhToan.EditValue.ToString() : null);

                    // kieemre tra xem đã  tông tại chưa. nếu chưa thò insert. có rồi thì update:
                    int checkMPhieu = inforSellBus.checkMaPhieuBan(infor.MaPhieu);

                    try
                    {
                        if (checkMPhieu == 1)
                        {
                            inforSellBus.UpdateInforSell(infor);  // Nhập thông tin bán hàng
                        }
                        else
                        {
                            inforSellBus.InsertDetailSellGoods(infor);  // Nhập thông tin bán hàng
                        }
                    }
                    catch (SqlException ex)
                    {
                        XtraMessageBox.Show("Lỗi Insert DetailSellGoods:  " + ex.Message);
                    }
                    int isDelete = 0;
                    for (int i = 0; i < count - 1; i++) /// Chạy for để lấy ra tất cả những mặt hành nào đã bán
                    {
                        DetailSellGoods detailSell = new DetailSellGoods();
                        DataRow         data       = grvListGoodSell.GetDataRow(i);
                        detailSell.MaPhieuXuat = maPhieu;
                        tk.MaHang          = detailSell.MaHang = data[1].ToString();
                        detailSell.TenHang = detailSell.TenHang = data[2].ToString();
                        detailSell.DonVi   = data[3].ToString();
                        sl = detailSell.SoLuong = int.Parse(data[4].ToString());
                        detailSell.DonGia    = float.Parse(data[5].ToString());
                        detailSell.ThanhTien = float.Parse(data[6].ToString());
                        detailSell.CK        = int.Parse(data[7].ToString());
                        detailSell.ThanhToan = float.Parse(data[9].ToString());
                        try
                        {
                            if (checkMPhieu == 1 && isDelete == 0) //có rồi
                            {
                                // xóa rồi thêm lại
                                detailSellBUS.DeleteDetailSell(txtPhieu.Text);
                                isDelete = 1;
                            }
                            detailSellBUS.InsertDetailSell(detailSell);
                        }
                        catch (SqlException ex)
                        {
                            XtraMessageBox.Show("Lỗi tại thêm chi tiết phiếu bán:  " + ex.Message);
                            check = false;
                        }
                        int checkMaHang = tkBus.checkMatHang(tk.MaHang, tk.MaKho);
                        int slHienTai   = tkBus.getSoLuong(tk);
                        slHienTai -= sl;
                        // kiểm tra xem là mặt hàng nãy đã có trong kho hay chưa
                        if (checkMaHang == 1)
                        {
                            //slHienTai -= sl;
                            try
                            {
                                tkBus.UpdateSoLuong(tk, slHienTai);  // nếu có rồi thì chỉ cần update số luọng
                            }
                            catch (SqlException ex)
                            {
                                XtraMessageBox.Show("Lỗi tại update số luọng:  " + ex.Message);
                            }
                        }
                        else // neếu mặt hang chưa có trong Kho.
                        {
                            try
                            {
                                tkBus.insertTonKho(tk, slHienTai);
                            }
                            catch (SqlException ex)
                            {
                                XtraMessageBox.Show("Lỗi tại thêm vào tồn kho:  " + ex.Message);
                            }
                        }
                    }
                    AddNhatKy("Thêm", TenChucNang);
                    XtraMessageBox.Show("Thêm Mặt hàng thành công");
                    txtPhieu.Text = inforSellBus.IDAuto();
                    detailSellBUS.deleteChiTietHoaDonAo();
                    grcHangHoa.DataSource = detailSellBUS.getHTDetailSellBuy();
                }
            }
        }