Beispiel #1
0
        private void btnAddXuat_Click(object sender, EventArgs e)
        {
            //Lấy dữ liệu đầu vào
            MatHang mh          = cbMatHangXuat.Tag as MatHang;
            int     giaXuatHang = Convert.ToInt32(cbGiaXuat.Text);
            int     soLuongXuat = Convert.ToInt32(nudSoLuongXuat.Value);

            if (cbMatHangXuat.Text != "" && cbGiaXuat.Text != "")//Kiểm tra thông tin đã nhập hay chưa
            {
                //Lấy danh sách tồn kho của mặt hàng với giá vừa được nhập vào
                TonKho tk = new TonKho();
                conn.Open();
                string     sql = @"select idMatHang,giaXuat,sum(trangThai) as tonKho from ChiTietPhieuNhap where idMatHang =N'" + mh.id + @"' and giaXuat =N'" + giaXuatHang.ToString() + @"' group by idMatHang,giaXuat";
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                cmd.Connection  = conn;
                DbDataReader reader = cmd.ExecuteReader();
                try
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            int idIndex = reader.GetOrdinal("idMatHang");
                            tk.id = Convert.ToString(reader.GetValue(idIndex));
                            int giaIndex = reader.GetOrdinal("giaXuat");
                            tk.gia = Convert.ToInt32(reader.GetValue(giaIndex));
                            int tonKhoIndex = reader.GetOrdinal("tonKho");
                            tk.soLuongTon = Convert.ToInt32(reader.GetValue(tonKhoIndex));
                        }
                    }
                }
                catch
                {
                    MessageBox.Show(@"Lỗi khi kiểm tra tồn kho " + mh.ten);
                }
                finally
                {
                    reader.Close();
                    reader.Dispose();
                }
                //Thêm mat hang vao hoa don
                ChiTietPhieuXuat item = new ChiTietPhieuXuat();
                item.maHang    = mh.id;
                item.tenHang   = mh.ten;
                item.donVi     = mh.tenDonVi;
                item.giaXuat   = giaXuatHang;
                item.soLuong   = soLuongXuat;
                item.thanhTien = giaXuatHang * soLuongXuat;
                //Nếu hóa đơn chưa có mặt hàng nào
                if (lsChiTietPhieuXuat.Count == 0)
                {
                    if (soLuongXuat <= tk.soLuongTon && soLuongXuat > 0)
                    {
                        lsChiTietPhieuXuat.Add(item);
                    }
                    else
                    {
                        MessageBox.Show(@"số lượng tồn kho không đủ hoặc bạn nhập vào số âm khi chưa có mặt hàng này trong phiếu! Hiện tại " + item.tenHang + @" với giá " + item.giaXuat.ToString() + @"chỉ còn " + tk.soLuongTon.ToString() + @" (" + item.donVi + @")");
                    }
                }
                else  //trường hợp hóa đơn đã có nội dung
                {
                    bool daCoMatHang = false;
                    //kiểm tra mặt hàng đã có trong hóa đơn hay chưa
                    foreach (ChiTietPhieuXuat tg in lsChiTietPhieuXuat)
                    {
                        if (item.maHang == tg.maHang)//nếu đã có
                        {
                            daCoMatHang = true;
                            int sl = item.soLuong + tg.soLuong;
                            if (sl <= 0)//nếu tổng số thêm vào nhỏ hơn hoặc bằng 0 thì xóa mặt hàng khỏi hóa đơn
                            {
                                lsChiTietPhieuXuat.Remove(tg);
                            }
                            else if (sl <= tk.soLuongTon)// nếu tổng số lượng thêm vào >0 và <= số lượng tồn kho
                            {
                                lsChiTietPhieuXuat.Add(item);
                            }
                            else
                            {
                                MessageBox.Show(@"tồn kho không đủ!");
                            }
                        }
                    }
                    if (daCoMatHang == false)
                    {
                        if (soLuongXuat <= tk.soLuongTon && soLuongXuat > 0)
                        {
                            lsChiTietPhieuXuat.Add(item);
                        }
                        else
                        {
                            MessageBox.Show(@"Tồn kho không đủ hoặc số lượng mặt hàng thêm vào đang âm!");
                        }
                    }
                }
                //Hiển thị nội dung hóa đơn cho người dùng
                int chay = 0;
                lsvPhieuXuat.Items.Clear();
                foreach (ChiTietPhieuXuat i in lsChiTietPhieuXuat)
                {
                    chay++;
                    ListViewItem itemTG = new ListViewItem(chay.ToString());
                    itemTG.SubItems.Add(i.maHang);
                    itemTG.SubItems.Add(i.tenHang);
                    itemTG.SubItems.Add(i.soLuong.ToString());
                    itemTG.SubItems.Add(i.donVi);
                    itemTG.SubItems.Add(i.giaXuat.ToString());
                    itemTG.SubItems.Add(i.thanhTien.ToString());
                    lsvPhieuXuat.Items.Add(itemTG);
                }
                conn.Close();
                //sau khi thêm xong tiến hành làm trống lại các mục
                cbMatHangXuat.Text   = "";
                cbGiaXuat.Text       = "";
                nudSoLuongXuat.Value = 0;
            }
            else
            {
                MessageBox.Show(@"Hãy nhập tên mặt hàng và chọn giá hàng!");
            }
        }
Beispiel #2
0
        private void ThemNoiDungPhieuXuat(ChiTietPhieuXuat item, int idPhieuXuat)
        {
            //Lấy ra danh sách các lô hàng của mặt hàng item.tenHang với giá xuât item.giaXuat và còn trong kho(trangThai>0)
            SqlConnection connetion = new SqlConnection(@"Data Source=DESKTOP-KP2LC3K\SQLEXPRESS;Initial Catalog=QuanLyKhoHang;Integrated Security=True");

            connetion.Open();
            SqlCommand command = new SqlCommand();
            string     lenh    = @"select *from ChiTietPhieuNhap where idMatHang =N'" + item.maHang + @"' and giaXuat=N'" + item.giaXuat.ToString() + @"' order by id";

            command.Connection  = connetion;
            command.CommandText = lenh;
            DbDataReader            read = command.ExecuteReader();
            List <ChiTietPhieuNhap> ls   = new List <ChiTietPhieuNhap>();

            try
            {
                if (read.HasRows)
                {
                    while (read.Read())
                    {
                        ChiTietPhieuNhap tg = new ChiTietPhieuNhap();
                        int idIndex         = read.GetOrdinal("id");
                        tg.id = Convert.ToInt32(read.GetValue(idIndex));
                        int idHangIndex = read.GetOrdinal("idMatHang");
                        tg.idMatHang = Convert.ToString(read.GetValue(idHangIndex));
                        int idPhieuNhapIndex = read.GetOrdinal("idPhieuNhap");
                        tg.idPhieuNhap = Convert.ToInt32(read.GetValue(idPhieuNhapIndex));
                        int giaNhapIndex = read.GetOrdinal("giaNhap");
                        tg.giaNhap = Convert.ToInt32(read.GetValue(giaNhapIndex));
                        int giaXuatIndex = read.GetOrdinal("giaXuat");
                        tg.giaXuat = Convert.ToInt32(read.GetValue(giaXuatIndex));
                        int soLuongIndex = read.GetOrdinal("soLuong");
                        tg.soLuong = Convert.ToInt32(read.GetValue(soLuongIndex));
                        int trangThaiIndex = read.GetOrdinal("trangThai");
                        tg.trangThai = Convert.ToInt32(read.GetValue(trangThaiIndex));
                        ls.Add(tg);
                    }
                }
            }
            catch
            {
                MessageBox.Show(@"lỗi khi lấy danh sách ct phiếu nhập của mặt hàng " + item.tenHang + @" với giá xuất " + item.giaXuat.ToString());
            }
            finally
            {
                read.Dispose();
            }
            //thêm bản ghi vào Bảng ChiTietPhieuXuat
            foreach (var i in ls)
            {
                if (i.trangThai >= item.soLuong)
                {
                    //thêm vào ctpx
                    lenh = @"insert into ChiTietPhieuXuat(idMatHang,idPhieuXuat,idChiTietPhieuNhap,soLuong) values(N'" + item.maHang + @"',N'" + idPhieuXuat.ToString() + @"',N'" + i.id.ToString() + @"',N'" + item.soLuong.ToString() + @"')";
                    command.CommandText = lenh;
                    command.ExecuteNonQuery();
                    //cập nhật lại trạng thái cho bản ghi ctpn có id là i.id
                    i.trangThai         = i.trangThai - item.soLuong;
                    lenh                = @"update ChiTietPhieuNhap set trangThai = N'" + i.trangThai.ToString() + @"' where id=N'" + i.id.ToString() + @"'";
                    command.CommandText = lenh;
                    command.ExecuteNonQuery();
                    break;
                }
                else
                {
                    //thêm vào ctpx
                    lenh = @"insert into ChiTietPhieuXuat(idMatHang,idPhieuXuat,idChiTietPhieuNhap,soLuong) values(N'" + item.maHang + @"',N'" + idPhieuXuat.ToString() + @"',N'" + i.id.ToString() + @"',N'" + i.trangThai.ToString() + @"')";
                    command.CommandText = lenh;
                    command.ExecuteNonQuery();
                    item.soLuong = item.soLuong - i.trangThai;
                    //cập nhật trạng thái
                    lenh = @"update ChiTietPhieuNhap set trangThai = N'0' where id=N'" + i.id.ToString() + @"'";
                    command.CommandText = lenh;
                    command.ExecuteNonQuery();
                }
            }

            connetion.Close();
            connetion.Dispose();
        }