コード例 #1
0
        public ActionResult DeleteConfirmed(string id)
        {
            PhieuNhapChiTiet phieuNhapChiTiet = db.PhieuNhapChiTiets.Find(id);

            db.PhieuNhapChiTiets.Remove(phieuNhapChiTiet);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #2
0
        public List <PhieuNhapChiTiet> PhieuNhapChiTietByMa(int maPhieuNhap)
        {
            List <PhieuNhapChiTiet> listPhieuNhapChiTiet = new List <PhieuNhapChiTiet>();
            DataTable data = DataProvider.Instance.ExecuteQuery("SECLET * FROM dbo.PhieuNhapChiTiet WHERE MaPhieuNhap =" + maPhieuNhap);

            foreach (DataRow item in data.Rows)
            {
                PhieuNhapChiTiet chiTiet = new PhieuNhapChiTiet(item);
                listPhieuNhapChiTiet.Add(chiTiet);
            }
            return(listPhieuNhapChiTiet);
        }
コード例 #3
0
 public ActionResult Edit([Bind(Include = "MaPN,MaMH,MaNCC")] PhieuNhapChiTiet phieuNhapChiTiet)
 {
     if (ModelState.IsValid)
     {
         db.Entry(phieuNhapChiTiet).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.MaPN  = new SelectList(db.MatHangs, "MaMH", "Ten", phieuNhapChiTiet.MaPN);
     ViewBag.MaNCC = new SelectList(db.NhaCungCaps, "MaNCC", "Ten", phieuNhapChiTiet.MaNCC);
     ViewBag.MaPN  = new SelectList(db.PhieuNhaps, "MaPN", "MaNV", phieuNhapChiTiet.MaPN);
     return(View(phieuNhapChiTiet));
 }
コード例 #4
0
        // GET: Administrator/PhieuNhapChiTiets/Details/5
        public ActionResult Details(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PhieuNhapChiTiet phieuNhapChiTiet = db.PhieuNhapChiTiets.Find(id);

            if (phieuNhapChiTiet == null)
            {
                return(HttpNotFound());
            }
            return(View(phieuNhapChiTiet));
        }
コード例 #5
0
ファイル: Baocao.cs プロジェクト: TrungNT44/hello-world
        private decimal TinhGiaTriChoPhieuNhapChiTiet(PhieuNhapChiTiet pnct)
        {
            var tong = pnct.SoLuong * pnct.GiaNhap;

            if (pnct.ChietKhau > 0)
            {
                tong -= pnct.ChietKhau * pnct.SoLuong * pnct.GiaNhap / 100;
            }
            if (pnct.PhieuNhap.VAT > 0)
            {
                tong += pnct.PhieuNhap.VAT * pnct.SoLuong * pnct.GiaNhap / 100;
            }
            return(tong);
        }
コード例 #6
0
        // GET: Administrator/PhieuNhapChiTiets/Edit/5
        public ActionResult Edit(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PhieuNhapChiTiet phieuNhapChiTiet = db.PhieuNhapChiTiets.Find(id);

            if (phieuNhapChiTiet == null)
            {
                return(HttpNotFound());
            }
            ViewBag.MaPN  = new SelectList(db.MatHangs, "MaMH", "Ten", phieuNhapChiTiet.MaPN);
            ViewBag.MaNCC = new SelectList(db.NhaCungCaps, "MaNCC", "Ten", phieuNhapChiTiet.MaNCC);
            ViewBag.MaPN  = new SelectList(db.PhieuNhaps, "MaPN", "MaNV", phieuNhapChiTiet.MaPN);
            return(View(phieuNhapChiTiet));
        }
コード例 #7
0
        private void Save()
        {
            PhieuNhap itemSave = new PhieuNhap();

            //thong tin ban hang
            itemSave.PhieuNhapID = PhieuNhapController.TaoMaPhieuNhap("PN", 10);
            itemSave.NgayNhap    = dateEditNgayBan.DateTime;
            if (lookUpEditNhaCungCap.EditValue != null)
            {
                itemSave.NhaCungCapID  = lookUpEditNhaCungCap.EditValue.ToString();
                itemSave.TenNhaCungCap = lookUpEditNhaCungCap.Text;
            }
            itemSave.MaPhieuNCC  = txtPhieuNhaCC.Text;
            itemSave.GhiChu      = txtGhiChu.Text;
            itemSave.NhanVienID  = txtNhanVien.Text;
            itemSave.TenNhanVien = Utility.NguoiSuDung.TenNguoiDung;
            itemSave.LastUpdate  = DateTime.Now;
            //thong tin thanh toan
            itemSave.TienHang  = txtTienHang.Value;
            itemSave.ThanhToan = txtThanhToan.Value;
            itemSave.ConNo     = txtConNo.Value;
            //lay thong tin chi tiet don hang
            List <PhieuNhapChiTiet> PhieuNhapItems = new List <PhieuNhapChiTiet>();

            if (tblDonHangChiTiet != null)
            {
                foreach (DataRow item in tblDonHangChiTiet.Rows)
                {
                    PhieuNhapChiTiet newitem = new PhieuNhapChiTiet();
                    newitem.PhieuNhapID = itemSave.PhieuNhapID;
                    newitem.SanPhamID   = item["SanPhamID"].ToString();
                    newitem.TenSanPham  = item["TenSanPham"].ToString();
                    newitem.Size        = item["Size"].ToString();
                    newitem.SoLuong     = Convert.ToInt32(item["SoLuong"].ToString());
                    newitem.DonGia      = Convert.ToDecimal(item["DonGia"].ToString());
                    newitem.CreateDate  = DateTime.Now;
                    //newitem.TonKho = SanPhamController.GetTonKho(newitem.SanPhamID);
                    PhieuNhapItems.Add(newitem);
                }
            }
            PhieuNhapController.Add(itemSave, PhieuNhapItems);
        }
コード例 #8
0
        // cap nhat gia/lo/han dung cho tung thuoc o trong Phieu kiem ke
        public void UpdateDrugSerialNoAndExpDate(String maNhaThuoc, InventoryEditModel inventoryEditModel)
        {
            int inventoryId = inventoryEditModel.InventoryId;

            // return khi ma phieu kiem ke khong hop le
            if (inventoryId <= 0)
            {
                return;
            }

            bool     canKho  = inventoryEditModel.DaCanKho;
            decimal  gia     = inventoryEditModel.Gia;
            string   soLo    = inventoryEditModel.SoLo;
            DateTime?hanDung = inventoryEditModel.HanDung;

            var phieuKiemKeRepo        = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKe> >().GetAll();
            var phieuKiemKeChiTietRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKeChiTiet> >();
            var phieuNhapChiTietRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();
            var phieuXuatChiTietRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();

            InventoryDetailModel inventoryDetailModel = GetInventoryDetailInfo(maNhaThuoc, inventoryId);
            var thuocId = inventoryDetailModel.MedicineList.Where(x => x.MaThuoc == inventoryEditModel.MaThuoc).FirstOrDefault().ThuocId;
            // lay thong tin phieu kiem ke chi tiet theo PhieuKiemKe_MaPhieuKiemKe va Thuoc_ThuocId
            var pkkctQuery = from pkkct in phieuKiemKeChiTietRepo.GetAll()
                             where (pkkct.PhieuKiemKe_MaPhieuKiemKe == inventoryId && pkkct.RecordStatusID == (byte)RecordStatus.Activated &&
                                    pkkct.Thuoc_ThuocId == thuocId)

                             select pkkct;

            var pkkctQueryResult = pkkctQuery.FirstOrDefault();
            PhieuKiemKeChiTiet phieuKiemKeChiTietEntity = pkkctQueryResult;

            phieuKiemKeChiTietEntity.DonGia  = gia;
            phieuKiemKeChiTietEntity.SoLo    = soLo;
            phieuKiemKeChiTietEntity.HanDung = hanDung;

            // cap nhat gia/lo/han vao bang PhieuKiemKeChiTiets
            phieuKiemKeChiTietRepo.Update(phieuKiemKeChiTietEntity);
            phieuKiemKeChiTietRepo.Commit();

            // TH phieu da can kho, cap nhat gia/lo/han trong phieu Nhap/xuat chi tiet
            if (canKho)
            {
                inventoryDetailModel.PhieuCanKhoChiTiet.ForEach(p =>
                {
                    // TH Phieu Nhap thì update giá nhập/lô/hạn dùng vào phiếu nhập chi tiết
                    if (p.LoaiPhieu == NoteInOutType.Receipt && p.SoLuong > 0)
                    {
                        // tim Phieu Nhap Chi Tiet theo MaPhieu va thuocId
                        var pnctQuery = from pnct in phieuNhapChiTietRepo.GetAll()
                                        where (pnct.PhieuNhap_MaPhieuNhap == p.MaPhieu &&
                                               pnct.Thuoc_ThuocId == thuocId)

                                        select pnct;

                        var pnctQueryResult = pnctQuery.FirstOrDefault();
                        if (pnctQueryResult != null)
                        {
                            PhieuNhapChiTiet phieuNhapChiTietEntity = pnctQueryResult;
                            phieuNhapChiTietEntity.GiaNhap          = gia;
                            phieuNhapChiTietEntity.SoLo             = soLo;
                            phieuNhapChiTietEntity.HanDung          = hanDung;

                            phieuNhapChiTietRepo.Update(phieuNhapChiTietEntity);
                            phieuNhapChiTietRepo.Commit();
                        }
                    }
                    // TH Phieu Xuat thì update giá xuất
                    if (p.LoaiPhieu == NoteInOutType.Delivery && p.SoLuong > 0)
                    {
                        // tim Phieu Xuat Chi Tiet theo MaPhieu va thuocId
                        var pxctQuery = from pxct in phieuXuatChiTietRepo.GetAll()
                                        where (pxct.PhieuXuat_MaPhieuXuat == p.MaPhieu &&
                                               pxct.Thuoc_ThuocId == thuocId)

                                        select pxct;
                        var pxctQueryResult = pxctQuery.FirstOrDefault();
                        if (pxctQueryResult != null)
                        {
                            PhieuXuatChiTiet phieuXuatChiTietEntity = pxctQueryResult;
                            phieuXuatChiTietEntity.GiaXuat          = gia;

                            phieuXuatChiTietRepo.Update(phieuXuatChiTietEntity);
                            phieuXuatChiTietRepo.Commit();
                        }
                    }
                });
            }
        }
コード例 #9
0
        // luu thong tin Phieu Kiem Ke (ca truong hop tao moi + update)
        public int SaveInventory(String maNhaThuoc, int userId, InventoryDetailModel model)
        {
            var phieuKiemKeRepo        = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKe> >();
            var phieuKiemKeChiTietRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKeChiTiet> >();
            var phieuNhapRepo          = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhap> >();
            var phieuXuatRepo          = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuat> >();
            var phieuNhapChiTietRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();
            var phieuXuatChiTietRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();
            var validDrugRepo          = _dataFilterService.GetValidDrugs(maNhaThuoc);


            bool canKho = model.DaCanKho;

            // add thêm giá trị giờ phút vào ngày tạo
            model.CreateTime = model.CreateTime.WithCurrentTime();

            // return value = mã phiếu nếu lưu phiếu thành công
            int retval             = 0;
            var inventoryDrugCodes = model.MedicineList.Select(i => i.MaThuoc.ToLower()).ToList();
            var inventoryDrugQuery = from d in validDrugRepo
                                     where (inventoryDrugCodes.Contains(d.MaThuoc.ToLower()))
                                     select new
            {
                d.MaThuoc,
                d.ThuocId,
                d.DonViXuatLe_MaDonViTinh,
                d.GiaNhap
            };

            var inventoryDrugQueryResult = inventoryDrugQuery.ToDictionary(x => x.MaThuoc.ToLower(), x => new
            {
                x.ThuocId,
                x.DonViXuatLe_MaDonViTinh,
                x.GiaNhap
            });

            // tạo 1 đối tượng phiếu kiểm kê và lưu/cập nhật đối tượng này vào bảng PhieuKiemKes trong DB
            PhieuKiemKe phieuKiemKe = null;

            // TH tạo phiếu kiểm kê mới
            if (model.Id == 0)
            {
                phieuKiemKe = new PhieuKiemKe
                {
                    NhaThuoc_MaNhaThuoc = maNhaThuoc,
                    CreatedBy_UserId    = userId,
                    Created             = model.CreateTime,
                    DaCanKho            = canKho,
                    RecordStatusID      = (byte)RecordStatus.Activated
                };
                phieuKiemKeRepo.Insert(phieuKiemKe);
                phieuKiemKeRepo.Commit();
            }
            // TH update phiếu đã tạo
            else
            {
                var pkkQuery = from pkk in phieuKiemKeRepo.GetAll()
                               where (pkk.MaPhieuKiemKe == model.Id)
                               select pkk;

                phieuKiemKe                   = pkkQuery.FirstOrDefault();
                phieuKiemKe.Modified          = DateTime.Now;
                phieuKiemKe.DaCanKho          = canKho;
                phieuKiemKe.ModifiedBy_UserId = userId;

                phieuKiemKeRepo.Update(phieuKiemKe);
                phieuKiemKeRepo.Commit();
            }
            retval = phieuKiemKe.MaPhieuKiemKe;

            // TH chọn cân kho, tạo phiếu điều chỉnh sau kiểm kê
            if (canKho)
            {
                // tạo phiếu nhập mới
                var nhaCungCap      = EnsureNhaCungCapKiemKe(maNhaThuoc, userId);
                var loaiKiemKe      = EnsureLoaiXuatNhapKiemKe();
                var receiptService  = IoC.Container.Resolve <IReceiptNoteService>();
                var deliveryService = IoC.Container.Resolve <IDeliveryNoteService>();

                var phieuNhap = new PhieuNhap()
                {
                    Created                     = DateTime.Now,
                    CreatedBy_UserId            = userId,
                    NhaCungCap_MaNhaCungCap     = nhaCungCap.MaNhaCungCap,
                    NhaThuoc_MaNhaThuoc         = maNhaThuoc,
                    SoPhieuNhap                 = receiptService.GetNewReceiptNoteNumber(maNhaThuoc),
                    NgayNhap                    = phieuKiemKe.Created,
                    LoaiXuatNhap_MaLoaiXuatNhap = loaiKiemKe.MaLoaiXuatNhap
                };
                phieuNhapRepo.Insert(phieuNhap);

                // tạo phiếu xuất mới
                var phieuXuat = new PhieuXuat()
                {
                    Created                 = DateTime.Now,
                    CreatedBy_UserId        = userId,
                    NhaCungCap_MaNhaCungCap = nhaCungCap.MaNhaCungCap,
                    NhaThuoc_MaNhaThuoc     = maNhaThuoc,
                    SoPhieuXuat             = deliveryService.GetNewDeliveryNoteNumber(maNhaThuoc),
                    NgayXuat                = phieuKiemKe.Created,
                    MaLoaiXuatNhap          = loaiKiemKe.MaLoaiXuatNhap
                };

                phieuXuatRepo.Insert(phieuXuat);

                var phieuXuatChiTiets = new List <PhieuXuatChiTiet>();
                var phieuNhapChiTiets = new List <PhieuNhapChiTiet>();
                model.MedicineList.ForEach(e =>
                {
                    var chenhLech   = e.ThucTe.HasValue ? e.TonKho - e.ThucTe : e.TonKho;
                    var drugId      = inventoryDrugQueryResult[e.MaThuoc.ToLower()].ThuocId;
                    var maDonViTinh = inventoryDrugQueryResult[e.MaThuoc.ToLower()].DonViXuatLe_MaDonViTinh;
                    var gia         = inventoryDrugQueryResult[e.MaThuoc.ToLower()].GiaNhap;
                    if (chenhLech > 0)
                    {
                        // tao phieu xuat dieu chinh kiem ke
                        var dItem = new PhieuXuatChiTiet()
                        {
                            DonViTinh_MaDonViTinh = maDonViTinh.Value,
                            NhaThuoc_MaNhaThuoc   = maNhaThuoc,
                            SoLuong       = chenhLech.Value,
                            Thuoc_ThuocId = drugId,
                            GiaXuat       = e.Gia != 0 ? e.Gia : gia,
                        };
                        phieuXuatChiTiets.Add(dItem);
                    }
                    else if (chenhLech < 0)
                    {
                        // tao phieu nhap dieu chinh kiem ke
                        var rItem = new PhieuNhapChiTiet()
                        {
                            DonViTinh_MaDonViTinh = maDonViTinh,
                            NhaThuoc_MaNhaThuoc   = maNhaThuoc,
                            SoLuong       = chenhLech.Value * -1,
                            Thuoc_ThuocId = drugId,
                            GiaNhap       = e.Gia != 0 ? e.Gia : gia,
                            SoLo          = e.SoLo,
                            HanDung       = e.HanDung,
                        };
                        phieuNhapChiTiets.Add(rItem);
                    }
                });

                // tính tổng tiền và đã trả cho phiếu nhập xuất rồi insert bản ghi vào DB
                phieuNhap.TongTien = phieuNhapChiTiets.Sum(a => a.SoLuong * a.GiaNhap);
                phieuNhap.DaTra    = phieuNhap.TongTien;
                phieuXuat.TongTien = phieuXuatChiTiets.Sum(a => a.SoLuong * a.GiaXuat);
                phieuXuat.DaTra    = phieuXuat.TongTien;
                phieuNhapRepo.Commit();
                phieuXuatRepo.Commit();

                // cập nhật mã phiếu nhập/xuất vào phiếu nhập xuất chi tiết
                phieuNhapChiTiets.ForEach(i =>
                {
                    i.PhieuNhap_MaPhieuNhap = phieuNhap.MaPhieuNhap;
                    i.IsModified            = true;
                });
                phieuXuatChiTiets.ForEach(i =>
                {
                    i.PhieuXuat_MaPhieuXuat = phieuXuat.MaPhieuXuat;
                    i.IsModified            = true;
                });

                phieuNhapChiTietRepo.InsertMany(phieuNhapChiTiets);
                phieuNhapChiTietRepo.Commit();
                phieuXuatChiTietRepo.InsertMany(phieuXuatChiTiets);
                phieuXuatChiTietRepo.Commit();

                // cập nhật mã phiếu nhập/xuất vào Phiếu kiểm kê
                phieuKiemKeRepo.UpdateMany(i => i.MaPhieuKiemKe == retval, i => new PhieuKiemKe()
                {
                    PhieuNhap_MaPhieuNhap = phieuNhap.MaPhieuNhap,
                    PhieuXuat_MaPhieuXuat = phieuXuat.MaPhieuXuat
                });
                phieuKiemKeRepo.Commit();
            }

            // TH phiếu đã lưu thì xóa các bản ghi phiếu kiểm kê chi tiết cũ
            if (model.Id > 0)
            {
                phieuKiemKeChiTietRepo.Delete(i => i.PhieuKiemKe_MaPhieuKiemKe == model.Id);
                phieuKiemKeChiTietRepo.Commit();
            }

            List <PhieuKiemKeChiTiet> phieuKiemKeChiTiets = new List <PhieuKiemKeChiTiet>();

            foreach (var thuoc in model.MedicineList)
            {
                phieuKiemKeChiTiets.Add(new PhieuKiemKeChiTiet
                {
                    PhieuKiemKe_MaPhieuKiemKe = retval,
                    Thuoc_ThuocId             = inventoryDrugQueryResult[thuoc.MaThuoc.ToLower()].ThuocId,
                    TonKho         = thuoc.TonKho,
                    ThucTe         = thuoc.ThucTe,
                    DonGia         = thuoc.Gia,
                    SoLo           = thuoc.SoLo,
                    HanDung        = thuoc.HanDung,
                    RecordStatusID = (byte)RecordStatus.Activated
                });
            }
            phieuKiemKeChiTietRepo.InsertMany(phieuKiemKeChiTiets);
            phieuKiemKeChiTietRepo.Commit();
            return(retval);
        }
コード例 #10
0
        // luu thong tin Phieu Kiem Ke (ca truong hop tao moi + update)
        public int SaveInventory(String maNhaThuoc, String maNhaThuocCha, int userId, InventoryDetailModel model)
        {
            var phieuKiemKeRepo        = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKe> >();
            var phieuKiemKeChiTietRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKeChiTiet> >();
            var phieuNhapRepo          = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhap> >();
            var phieuXuatRepo          = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuat> >();
            var phieuNhapChiTietRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();
            var phieuXuatChiTietRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();
            var drugRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, Thuoc> >();

            bool canKho      = model.IsCompareStore;
            var  currentDate = DateTime.Now;

            model.CreateTime = model.CreateTime.AddHours(currentDate.Hour).AddMinutes(currentDate.Minute).AddSeconds(currentDate.Second);
            int retval    = 0;
            var drugCodes = model.MedicineList.Select(i => i.MaThuoc.ToLower()).ToList();
            var query     = from d in drugRepo.GetAll()
                            where (drugCodes.Contains(d.MaThuoc.ToLower()) && (d.NhaThuoc_MaNhaThuoc == maNhaThuoc || d.NhaThuoc_MaNhaThuoc == maNhaThuocCha))
                            select new
            {
                d.MaThuoc,
                d.ThuocId,
                d.DonViXuatLe_MaDonViTinh,
                d.GiaNhap
            };

            var drugs = query.ToDictionary(x => x.MaThuoc.ToLower(), x => new
            {
                x.ThuocId,
                x.DonViXuatLe_MaDonViTinh,
                x.GiaNhap
            });



            // tạo 1 đối tượng phiếu kiểm kê và lưu/cập nhật đối tượng này vào bảng PhieuKiemKes trong DB
            PhieuKiemKe phieuKiemKe = null;

            // TH tạo phiếu kiểm kê mới
            if (model.Id == 0)
            {
                phieuKiemKe = new PhieuKiemKe
                {
                    //MaPhieuKiemKe = model.Id,
                    NhaThuoc_MaNhaThuoc = maNhaThuoc,
                    CreatedBy_UserId    = userId,
                    Created             = model.CreateTime,
                    DaCanKho            = canKho,
                    RecordStatusId      = (int)RecordStatus.Activated
                };
                phieuKiemKeRepo.Insert(phieuKiemKe);
                phieuKiemKeRepo.Commit();
            }
            // TH update phiếu đã tạo
            else
            {
                var pkkQuery = from pkk in phieuKiemKeRepo.GetAll()
                               where (pkk.MaPhieuKiemKe == model.Id)
                               select pkk;

                phieuKiemKe                   = pkkQuery.FirstOrDefault();
                phieuKiemKe.Modified          = DateTime.Now;
                phieuKiemKe.DaCanKho          = canKho;
                phieuKiemKe.ModifiedBy_UserId = userId;

                phieuKiemKeRepo.Update(phieuKiemKe);
                phieuKiemKeRepo.Commit();
            }
            retval = phieuKiemKe.MaPhieuKiemKe;

            // TH chọn cân kho, tạo phiếu điều chỉnh sau kiểm kê
            if (canKho)
            {
                // tạo phiếu nhập mới
                var nhaCungCap = EnsureNhaCungCapKiemKe(maNhaThuoc, userId);
                var loaiKiemKe = EnsureLoaiXuatNhapKiemKe();
                var phieuNhap  = new PhieuNhap()
                {
                    Created                     = DateTime.Now,
                    CreatedBy_UserId            = userId,
                    NhaCungCap_MaNhaCungCap     = nhaCungCap.MaNhaCungCap,
                    NhaThuoc_MaNhaThuoc         = maNhaThuoc,
                    SoPhieuNhap                 = _generateAvaliableSoPhieuNhap(maNhaThuoc),
                    NgayNhap                    = phieuKiemKe.Created,
                    LoaiXuatNhap_MaLoaiXuatNhap = loaiKiemKe.MaLoaiXuatNhap
                };
                phieuNhapRepo.Insert(phieuNhap);
                //phieuNhapRepo.Commit();

                // tạo phiếu xuất mới
                var phieuXuat = new Entity.PhieuXuat()
                {
                    Created                 = DateTime.Now,
                    CreatedBy_UserId        = userId,
                    NhaCungCap_MaNhaCungCap = nhaCungCap.MaNhaCungCap,
                    NhaThuoc_MaNhaThuoc     = maNhaThuoc,
                    SoPhieuXuat             = _generateAvaliableSoPhieuXuat(maNhaThuoc),
                    NgayXuat                = phieuKiemKe.Created,
                    MaLoaiXuatNhap          = loaiKiemKe.MaLoaiXuatNhap
                };

                phieuXuatRepo.Insert(phieuXuat);
                //phieuXuatRepo.Commit();

                var phieuXuatChiTiets = new List <PhieuXuatChiTiet>();
                var phieuNhapChiTiets = new List <PhieuNhapChiTiet>();
                model.MedicineList.ForEach(e =>
                {
                    var chenhLech   = e.ThucTe.HasValue ? e.TonKho - e.ThucTe : e.TonKho;
                    var drugId      = drugs[e.MaThuoc.ToLower()].ThuocId;
                    var maDonViTinh = drugs[e.MaThuoc.ToLower()].DonViXuatLe_MaDonViTinh;
                    var gia         = drugs[e.MaThuoc.ToLower()].GiaNhap;
                    if (chenhLech > 0)
                    {
                        // tao phieu xuat dieu chinh kiem ke

                        var dItem = new PhieuXuatChiTiet()
                        {
                            DonViTinh_MaDonViTinh = maDonViTinh.Value,
                            NhaThuoc_MaNhaThuoc   = maNhaThuoc,
                            SoLuong       = chenhLech.Value,
                            Thuoc_ThuocId = drugId,
                            GiaXuat       = e.Gia != 0 ? e.Gia : gia,
                            //PhieuXuat_MaPhieuXuat = phieuXuat.MaPhieuXuat
                        };
                        phieuXuatChiTiets.Add(dItem);
                    }
                    else if (chenhLech < 0)
                    {
                        // tao phieu nhap dieu chinh kiem ke
                        var rItem = new PhieuNhapChiTiet()
                        {
                            DonViTinh_MaDonViTinh = maDonViTinh,
                            NhaThuoc_MaNhaThuoc   = maNhaThuoc,
                            SoLuong       = chenhLech.Value * -1,
                            Thuoc_ThuocId = drugId,
                            GiaNhap       = e.Gia != 0 ? e.Gia : gia,
                            SoLo          = e.SoLo,
                            HanDung       = e.HanDung,
                            //PhieuNhap_MaPhieuNhap = phieuNhap.MaPhieuNhap
                        };
                        phieuNhapChiTiets.Add(rItem);
                    }
                });

                phieuNhap.TongTien = phieuNhapChiTiets.Sum(a => a.SoLuong * a.GiaNhap);
                phieuNhap.DaTra    = phieuNhap.TongTien;
                phieuXuat.TongTien = phieuXuatChiTiets.Sum(a => a.SoLuong * a.GiaXuat);
                phieuXuat.DaTra    = phieuXuat.TongTien;
                phieuNhapRepo.Commit();
                phieuXuatRepo.Commit();

                phieuNhapChiTiets.ForEach(i =>
                {
                    i.PhieuNhap_MaPhieuNhap = phieuNhap.MaPhieuNhap;
                    i.IsModified            = true;
                });
                phieuXuatChiTiets.ForEach(i =>
                {
                    i.PhieuXuat_MaPhieuXuat = phieuXuat.MaPhieuXuat;
                    i.IsModified            = true;
                });

                phieuNhapChiTietRepo.InsertMany(phieuNhapChiTiets);
                phieuNhapChiTietRepo.Commit();
                phieuXuatChiTietRepo.InsertMany(phieuXuatChiTiets);
                phieuXuatChiTietRepo.Commit();


                phieuKiemKeRepo.UpdateMany(i => i.MaPhieuKiemKe == retval, i => new PhieuKiemKe()
                {
                    PhieuNhap_MaPhieuNhap = phieuNhap.MaPhieuNhap,
                    PhieuXuat_MaPhieuXuat = phieuXuat.MaPhieuXuat
                });
                phieuKiemKeRepo.Commit();
            }


            // tạo 1 đối tượng PhieuKiemKeChiTiet
            // update table PhieuKiemKeChiTiets
            if (model.Id > 0)
            {
                phieuKiemKeChiTietRepo.Delete(i => i.PhieuKiemKe_MaPhieuKiemKe == model.Id);
                phieuKiemKeChiTietRepo.Commit();
            }

            List <PhieuKiemKeChiTiet> phieuKiemKeChiTiets = new List <PhieuKiemKeChiTiet>();

            foreach (var thuoc in model.MedicineList)
            {
                phieuKiemKeChiTiets.Add(new PhieuKiemKeChiTiet
                {
                    PhieuKiemKe_MaPhieuKiemKe = retval,
                    Thuoc_ThuocId             = drugs[thuoc.MaThuoc.ToLower()].ThuocId,
                    TonKho         = thuoc.TonKho,
                    ThucTe         = thuoc.ThucTe,
                    DonGia         = thuoc.Gia,
                    SoLo           = thuoc.SoLo,
                    HanDung        = thuoc.HanDung,
                    RecordStatusId = (int)RecordStatus.Activated
                });
            }
            phieuKiemKeChiTietRepo.InsertMany(phieuKiemKeChiTiets);
            phieuKiemKeChiTietRepo.Commit();



            return(retval);
        }