Ejemplo n.º 1
0
        /// <summary>
        /// Bán hàng và cập nhật số lượng hàng hóa tồn kho
        /// </summary>
        /// <param name="MAKHO"></param>
        /// <param name="MAHH"></param>
        /// <param name="SOLUONG"></param>
        /// <param name="DONGIABAN"></param>
        /// <param name="NGAYBAN"></param>
        public static void Creat(long MAKHO, long MAHH, long SOLUONG, long DONGIABAN, DateTime NGAYBAN)
        {
            /* Tạo mới record bán hàng */
            BAN_HANG bh = new BAN_HANG();

            bh.MAKHO             = MAKHO;
            bh.MAHH              = MAHH;
            bh.SO_LUONG          = SOLUONG;
            bh.DON_GIA_BAN       = DONGIABAN;
            bh.NGAY_BAN          = NGAYBAN.Date;
            bh.CREATED_TIME      = DateTime.Now;
            bh.CHI_TIET_BAN_HANG = "";
            DataInstance.Instance().DBContext().AddToBAN_HANG(bh);
            DataInstance.Instance().DBContext().SaveChanges();

            /* Cập nhật số lượng tồn kho */
            List <CXuatHangChiTiet> chitiet = new List <CXuatHangChiTiet>();
            long _soluong = bh.SO_LUONG;

            foreach (NHAP_HANG nh in (from _nh in DataInstance.Instance().DBContext().NHAP_HANG
                                      where _nh.SL_CON_LAI > 0
                                      where _nh.MAHH == bh.MAHH
                                      orderby _nh.NGAY_NHAP ascending
                                      select _nh))
            {
                var sub_SL = nh.SL_CON_LAI;
                nh.SL_CON_LAI = _soluong >= nh.SL_CON_LAI ? 0 : nh.SL_CON_LAI - _soluong;

                /* Cập nhật chi tiết số lượng, đơn giá để tính lãi lỗi*/
                long __subSL = nh.SL_CON_LAI > 0 ? _soluong : sub_SL;
                if (__subSL > 0)
                {
                    chitiet.Add(new CXuatHangChiTiet()
                    {
                        NHAPHANGID = nh.ID,
                        SOLUONG    = nh.SL_CON_LAI > 0 ? _soluong : sub_SL,
                        DONGIA     = nh.DON_GIA_MUA
                    });
                }
                _soluong = _soluong >= sub_SL ? _soluong - sub_SL : 0;
                DataInstance.Instance().DBContext().SaveChanges();
                if (_soluong == 0)
                {
                    break;
                }
            }
            bh.CHI_TIET_BAN_HANG = JsonConvert.SerializeObject(chitiet);
            DataInstance.Instance().DBContext().SaveChanges();
        }
Ejemplo n.º 2
0
        private void buttonADD_Click(object sender, EventArgs e)
        {
            try
            {
                BAN_HANG bh = new BAN_HANG();
                bh.MAHH         = long.Parse(comboBoxHANGHOA.SelectedValue.ToString());
                bh.MAKHO        = long.Parse(comboBoxKHO.SelectedValue.ToString());
                bh.NGAY_BAN     = DateTime.Now.Date;
                bh.SO_LUONG     = long.Parse(textBoxSOLUONG.Text);
                bh.DON_GIA_BAN  = long.Parse(textBoxDONGIABAN.Text);
                bh.CREATED_TIME = DateTime.Now;

                if (bh.SO_LUONG == 0 || bh.DON_GIA_BAN == 0)
                {
                    MessageBox.Show("Số lượng và đơn giá không được bằng 0", "Lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                long lton = (from ton in DataInstance.Instance().DBContext().NHAP_HANG
                             where ton.MAKHO == bh.MAKHO
                             where ton.MAHH == bh.MAHH
                             select ton.SL_CON_LAI).Sum();
                if (bh.SO_LUONG > lton)
                {
                    MessageBox.Show("Số lượng bán hàng lớn hơn số lượng tồn. \nCòn tồn: " + lton.ToString(), "Lỗi số lượng!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                MBanHang.Creat(bh.MAKHO, bh.MAHH, bh.SO_LUONG, bh.DON_GIA_BAN, bh.NGAY_BAN);
                textBoxSOLUONG.Text = "0";
                textBoxSOLUONG.Select();
                textBoxSOLUONG.SelectAll();
                comboBoxKHO_SelectedIndexChanged(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Số lượng hoặc đơn giá nhập vào không đúng. Chỉ chấp nhận số");
            }
        }