private void btnXoa_Click(object sender, EventArgs e) { GridView gridView = grcBangKeTongHop.FocusedView as GridView; var maPhieu = gridView.GetRowCellValue(gridView.FocusedRowHandle, "MaPhieuChuyen"); // lấy được mã phiếu if (maPhieu == null) { XtraMessageBox.Show("Mời bạn chọn mã phiếu nhập hàng cần xóa"); } else { // cấp nhật lại số lượng 2 bên kho đã chuyển cho nhau: // lấy được mã phiếu chuyển // lấy các thông tin chi tiết của phiếu chuyểnn: DataTable data = detailTransBUS.getDetailTransFromMa((string)maPhieu); foreach (DataRow dataRow in data.Rows) { TonKho tkChuyen = new TonKho(); TonKho tkNhan = new TonKho(); tkChuyen.MaKho = dataRow["MaKhoXuat"].ToString(); tkNhan.MaKho = dataRow["MaKhoNhan"].ToString(); tkNhan.MaHang = tkChuyen.MaHang = dataRow["MaHang"].ToString(); int slChuyen = int.Parse(dataRow["SoLuong"].ToString()); // lấy số lượng hiện tại của các mặt hàng mỗi kho int slKhoChuyen = tkBUS.getSoLuong(tkChuyen); int slKhoNhan = tkBUS.getSoLuong(tkNhan); tkBUS.UpdateSoLuong(tkChuyen, slKhoChuyen + slChuyen); tkBUS.UpdateSoLuong(tkNhan, slKhoNhan - slChuyen); } try { // xóa thông tin chuyển inforTransBUS.DeleteInforTransWarehouse((string)maPhieu); // xóa chi tiết detailTransBUS.DeleteDetailTransWarehouse((string)maPhieu); XtraMessageBox.Show("Xóa thành công phiếu chuyển kho"); grcBangKeTongHop.DataSource = inforTransBUS.getListInforTrans(a, b, 0); } catch (SqlException ex) { XtraMessageBox.Show("Lỗi tại xóa thông tin chuyển kho: " + ex.Message); } } }
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(); } } }
private void btnLuuVaThem_Click(object sender, EventArgs e) { // lấy những mặt hàng từ kho xuất vào kho nhận: bool check = true; int count = grvChuyenKho.RowCount; string maKhoXuat = ""; string maKhoNhan = ""; if (count < 2) { XtraMessageBox.Show("Mời bạn chọn các mặt hàng cần chuyền"); check = false; } else // khi có các mặt hàng: { // Lấy thông tin chuyển kho để insert: maKhoXuat = inforTrans.MaKhoXuat = cbKhoXuatHang.EditValue != null?cbKhoXuatHang.EditValue.ToString() : null; maKhoNhan = inforTrans.MaKhoNhan = cbKhoNhanHang.EditValue != null?cbKhoNhanHang.EditValue.ToString() : null; for (int i = 0; i < count - 1; i++) { TonKho tkXuat = new TonKho(); TonKho tkNhan = new TonKho(); DataRow data = grvChuyenKho.GetDataRow(i); tkNhan.MaHang = tkXuat.MaHang = detailTrans.MaHang = data[1].ToString(); detailTrans.SoLuong = int.Parse(data[4].ToString()); // Check kho xuất tkXuat.MaKho = maKhoXuat; int slTon; int slHienTai = slTon = tkBUS.getSoLuong(tkXuat); slHienTai = slHienTai - detailTrans.SoLuong; int checkMaHangXuat = tkBUS.checkMatHang(detailTrans.MaHang, maKhoXuat); if (checkMaHangXuat != 1) // chưa có { DialogResult dr; dr = XtraMessageBox.Show("Mặt hàng " + detailTrans.TenHang + " Hiện chưa có trong kho: " + maKhoXuat + " Nếu bạn thực hiện. Số lượng tồn sẽ bị âm", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.No) { check = false; break; } } else // có rồi { if (slHienTai <= 0) { DialogResult dr; dr = XtraMessageBox.Show("Mặt hàng " + detailTrans.TenHang + " Hiện có " + slTon + " trong kho: " + maKhoXuat + " Nếu bạn thực hiện. Số lượng tồn sẽ bị âm", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.No) { check = false; break; } } } } } if (check) { inforTrans.MaNVXuat = cbNguoiChuyen.EditValue != null?cbNguoiChuyen.EditValue.ToString() : null; inforTrans.MaNVNhan = cbNguoiNhan.EditValue != null?cbNguoiNhan.EditValue.ToString() : null; inforTrans.NgayLap = DateTime.Parse(String.Format("{0:MM/dd/yyyy}", dtNgayChuyen.Text)); inforTrans.GhiChu = txtGhiChu.Text; detailTrans.MaPhieuChuyen = inforTrans.MaPhieuChuyen = txtPhieuCK.Text; inforTrans.SoPhieuChuyenTay = txtPhieuChuyenTay.Text; inforTrans.TongTienChuyen = getTongTien(); int checkMPhieu = inforTransBUS.checkMaPhieuChuyenKho(txtPhieuCK.Text); try // kiểm tra xem đã có phiếu hay chưa. neeuc có rồi thì upate else: insert { if (checkMPhieu == 1) { inforTransBUS.UpdateInforTranWarehouse(inforTrans); } else { inforTransBUS.InsertInforTranWarehouse(inforTrans); } } catch (SqlException ex) { XtraMessageBox.Show("Lỗi tại thêm thông tin chuyển kho: " + ex.Message); } //Insert Chi Tiết chuyển kho: int isDelete = 0; for (int i = 0; i < count - 1; i++) { TonKho tkXuat = new TonKho(); TonKho tkNhan = new TonKho(); DataRow data = grvChuyenKho.GetDataRow(i); tkNhan.MaHang = tkXuat.MaHang = detailTrans.MaHang = data[1].ToString(); detailTrans.TenHang = data[2].ToString(); detailTrans.DonVi = data[3].ToString(); detailTrans.SoLuong = int.Parse(data[4].ToString()); detailTrans.DonGia = float.Parse(data[5].ToString()); detailTrans.ThanhTien = float.Parse(data[6].ToString()); try { if (checkMPhieu == 1 && isDelete == 0) { ckBUS.DeleteDetailTransWarehouse(txtPhieuCK.Text); isDelete = 1; } ckBUS.InsertDetailTransWarehouse(detailTrans); } catch (SqlException ex) { XtraMessageBox.Show("Lỗi thêm chi tiết chuyển kho: " + ex.Message); } // Xử lý về tồn kho: // Lấy từ KHO A chuyển Sang Kho B: // Lấy số lượng mặt hàng chuyển và kho chuyển: // Nếu mặt hàng chưa có trong KHO mà vẫn chuyển thì mặt hàng đó bị âm // Lấy bên này cộng vào bên kia // Check kho xuất tkXuat.MaKho = maKhoXuat; int slTon; int slHienTai = slTon = tkBUS.getSoLuong(tkXuat); slHienTai = slHienTai - detailTrans.SoLuong; int checkMaHangXuat = tkBUS.checkMatHang(detailTrans.MaHang, maKhoXuat); if (checkMaHangXuat != 1) // chưa có { try { int checkInsert = tkBUS.insertTonKho(tkXuat, slHienTai); } catch (SqlException ex) { XtraMessageBox.Show("Lỗi khi update số lượng kho nhận: " + ex.Message); } } else // có rồi { try { tkBUS.UpdateSoLuong(tkXuat, slHienTai); // nếu có rồi thì chỉ cần update số luọng } catch (SqlException ex) { XtraMessageBox.Show("Lỗi khi update số lượng kho nhận: " + ex.Message); } } // check kho nhận int checkMaHangNhan = tkBUS.checkMatHang(detailTrans.MaHang, maKhoNhan); tkNhan.MaKho = maKhoNhan; int slTonNhan; int slHienTaiNhan = slTonNhan = tkBUS.getSoLuong(tkNhan); slHienTaiNhan = slHienTaiNhan + detailTrans.SoLuong; if (checkMaHangNhan == 1) // nếu có rồi { try { tkBUS.UpdateSoLuong(tkNhan, slHienTaiNhan); } catch (SqlException ex) { XtraMessageBox.Show("Lỗi khi update số lượng kho nhận: " + ex.Message); } } else // chưa có thì thêm vào { try { tkBUS.insertTonKho(tkNhan, slHienTaiNhan); } catch (SqlException ex) { XtraMessageBox.Show("Lỗi khi thêm mặt hàng vô kho nhận: " + ex.Message); } } } XtraMessageBox.Show("Giao dịch thành công"); txtPhieuCK.Text = inforTransBUS.IDAuto(); grcChuyenKho.DataSource = detailBuyBus.getChiTietHoaDonMuaHang(); } else { XtraMessageBox.Show("Giao dịch thất bại"); } }
private void btnSave_Click(object sender, EventArgs e) { bool check = true; TonKho tk = new TonKho(); int count = grdHoaDon.RowCount; //float TongTienMua = 0; string maPhieu = ""; int sl = 0; if (cbTenNCC.Text == "") { XtraMessageBox.Show("Thiếu trường thông tin"); cbTenNCC.Focus(); } else if (count < 2) { XtraMessageBox.Show("Mời bạn chọn mặt hàng"); grdHoaDon.Focus(); } else { InforDetailBuy inforBuy = new InforDetailBuy(); inforBuy.MaPhieu = txtPhieu.Text; inforBuy.TenNCC = cbTenNCC.Text; inforBuy.MaNCC = txtMaNCC.Text; inforBuy.NgayLap = DateTime.Parse(String.Format("{0:MM/dd/yyyy}", dtNgay.Text)); inforBuy.HanThanhToan = DateTime.Parse(String.Format("{0:MM/dd/yyyy}", dtHanThanhToan.Text)); inforBuy.MaNVLap = cbNhanVien.EditValue != null?cbNhanVien.EditValue.ToString() : null; inforBuy.MaKhoNhap = cbKhoNhap.EditValue != null?cbKhoNhap.EditValue.ToString() : null; inforBuy.VAT = float.Parse(calVAT.Text); inforBuy.CK = float.Parse(calCK.Text); inforBuy.TongTienMua = getTongTien(); inforBuy.TongTienTra = float.Parse(calTongTienTra.Text); tk.MaKho = inforBuy.MaKhoNhap; // lấy Mã kho của măt hàng mua vào inforBuy.Ma_PhuongThuc = cbHinhThucThanhToan.EditValue != null?cbHinhThucThanhToan.EditValue.ToString() : null; inforBuy.Ma_DieuKhoan = int.Parse(cbDieuKhoanThanhToan.EditValue != null ? cbDieuKhoanThanhToan.EditValue.ToString() : null); int checkMPhieu = inforBUS.checkMaPhieuMua(txtPhieu.Text); try { // check xem mã đã có hay chưa. nếu chưa thì insert. COnf có rồi thò updaye if (checkMPhieu == 1) { inforBUS.UpdateInforBuy(inforBuy); } else { inforBUS.InsertDetailBuyGoods(inforBuy); } } catch (SqlException ex) { XtraMessageBox.Show("Lỗi DetailBuyGoods: " + ex.Message); } int isDelete = 0; for (int i = 0; i < count - 1; i++) { DetailBuyGoods detailBuy = new DetailBuyGoods(); DataRow data = grdHoaDon.GetDataRow(i); detailBuy.MaPhieu = txtPhieu.Text; maPhieu = txtPhieu.Text; txtMaNCC.Text = cbTenNCC.EditValue != null?cbTenNCC.EditValue.ToString() : null; detailBuy.MaHang = data[1].ToString(); detailBuy.TenHang = detailBuy.TenHang = data[2].ToString(); detailBuy.DonVi = data[3].ToString(); sl = detailBuy.SoLuong = int.Parse(data[4].ToString()); detailBuy.DonGia = float.Parse(data[5].ToString()); detailBuy.ThanhTien = float.Parse(data[6].ToString()); // TongTienMua += detailBuy.ThanhTien; tk.MaHang = data[1].ToString(); // lấy mã mặt hàng try { if (checkMPhieu == 1 && isDelete == 0) //có rồi { // xóa rồi thêm lại detailBuyBus.DeleteDetailBuy(detailBuy.MaPhieu); isDelete = 1; } detailBuyBus.InsertDetailBuyGoods(detailBuy); } catch (SqlException ex) { XtraMessageBox.Show("Lỗi tại thêm chi tiết phiếu mua: " + ex.Message); } // nếu mặt hàng mua đã có trong Kho rồi thì chỉ cần Update lại số lượng // còn nếu chưa có trong kho thì cần thêm mới vào tồn kho 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) { tkBus.UpdateSoLuong(tk, slHienTai); // nếu có rồi thì chỉ cần update số luọng } else // chưa có thì insert { int checkInsertTonKho = tkBus.insertTonKho(tk, sl); if (checkInsertTonKho == 0) { check = false; } } } if (check == false) { XtraMessageBox.Show("Thêm Mặt hàng thất bại"); } else { XtraMessageBox.Show("Thêm Mặt hàng thành công"); AddNhatKy("Thêm", TenChucNang); txtPhieu.Text = inforBUS.IDAuto(); detailBuyBus.deleteChiTietHoaDonAo(); grcHangHoa.DataSource = detailBuyBus.getChiTietHoaDonMuaHang(); } } }