コード例 #1
0
        public void DeleteForeverDrugs(string drugStoreID, params int[] drugIds)
        {
            if (drugIds == null || !drugIds.Any())
            {
                return;
            }

            var rNoteItemRepo         = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();
            var dNoteItemRepo         = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();
            var invNoteItemRepo       = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuKiemKeChiTiet> >();
            var sumPeriodNoteItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, TongKetKyChiTiet> >();
            var sumPeriodNoteRepo     = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, TongKetKy> >();
            var invRepo         = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, Inventory> >();
            var drugMappingRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, DrugMapping> >();
            var drugRepo        = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, Thuoc> >();

            var priceRefRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedReportContext, ReceiptDrugPriceRef> >();
            var reduceRepo   = IoC.Container.Resolve <BaseRepositoryV2 <MedReportContext, ReduceNoteItem> >();
            var snapshotRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedReportContext, DeliveryNoteItemSnapshotInfo> >();

            using (var trans = TransactionScopeHelper.CreateReadCommittedForWrite())
            {
                priceRefRepo.Delete(i => i.DrugStoreCode == drugStoreID &&
                                    drugIds.Contains(i.DrugId));
                reduceRepo.Delete(i => i.DrugStoreCode == drugStoreID &&
                                  drugIds.Contains(i.DrugID));
                snapshotRepo.Delete(i => i.DrugStoreCode == drugStoreID &&
                                    drugIds.Contains(i.DrugId));

                rNoteItemRepo.Delete(i => i.NhaThuoc_MaNhaThuoc == drugStoreID &&
                                     drugIds.Contains(i.Thuoc_ThuocId.Value));
                dNoteItemRepo.Delete(i => i.NhaThuoc_MaNhaThuoc == drugStoreID &&
                                     drugIds.Contains(i.Thuoc_ThuocId.Value));
                invNoteItemRepo.Delete(i => drugIds.Contains(i.Thuoc_ThuocId.Value));
                sumPeriodNoteItemRepo.Delete(i => i.NhaThuoc_MaNhaThuoc == drugStoreID &&
                                             drugIds.Contains(i.Thuoc_ThuocId.Value));
                sumPeriodNoteRepo.Delete(i => i.NhaThuoc_MaNhaThuoc == drugStoreID &&
                                         drugIds.Contains(i.Thuoc_ThuocId.Value));
                invRepo.Delete(i => i.DrugStoreID == drugStoreID &&
                               drugIds.Contains(i.DrugID));
                drugMappingRepo.Delete(i => i.DrugStoreID == drugStoreID &&
                                       drugIds.Contains(i.SlaveDrugID));
                drugRepo.Delete(i => i.NhaThuoc_MaNhaThuoc == drugStoreID &&
                                drugIds.Contains(i.ThuocId));

                trans.Complete();
            }
        }
コード例 #2
0
        private void UpdateChangesByDrugs(string drugStoreID, params int[] drugIds)
        {
            if (drugIds == null || !drugIds.Any())
            {
                return;
            }

            var dNoteItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();
            var rNoteItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();
            var refPriceRepo  = IoC.Container.Resolve <BaseRepositoryV2 <MedReportContext, ReceiptDrugPriceRef> >();

            using (var trans = TransactionScopeHelper.CreateReadCommittedForWrite())
            {
                dNoteItemRepo.UpdateMany(i => i.NhaThuoc_MaNhaThuoc == drugStoreID && drugIds.Contains(i.Thuoc_ThuocId.Value),
                                         i => new PhieuXuatChiTiet()
                {
                    IsModified = true
                });
            }
        }
コード例 #3
0
        private void UpdateAffectedItems(string drugStoreID, List <int> deliveryItemIds, List <int> receiptItemIds, List <int> drugIds)
        {
            deliveryItemIds = deliveryItemIds.Distinct().ToList();
            receiptItemIds  = receiptItemIds.Distinct().ToList();
            drugIds         = drugIds.Distinct().ToList();
            var dNoteItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();
            var rNoteItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();
            var refPriceRepo  = IoC.Container.Resolve <BaseRepositoryV2 <MedReportContext, ReceiptDrugPriceRef> >();

            using (var trans = TransactionScopeHelper.CreateReadCommittedForWrite())
            {
                if (deliveryItemIds.Any())
                {
                    dNoteItemRepo.UpdateMany(i => deliveryItemIds.Contains(i.MaPhieuXuatCt),
                                             i => new PhieuXuatChiTiet()
                    {
                        IsModified = true
                    });
                }
                if (receiptItemIds.Any())
                {
                    rNoteItemRepo.UpdateMany(i => receiptItemIds.Contains(i.MaPhieuNhapCt),
                                             i => new PhieuNhapChiTiet()
                    {
                        IsModified = true
                    });
                }
                if ((deliveryItemIds.Any() || receiptItemIds.Any()) && drugIds.Any())
                {
                    refPriceRepo.UpdateMany(i => (receiptItemIds.Contains(i.ReceiptNoteItemId) || deliveryItemIds.Contains(i.DeliveryNoteItemId)) &&
                                            i.DrugStoreCode == drugStoreID && drugIds.Contains(i.DrugId) && !i.IsDeleted,
                                            i => new ReceiptDrugPriceRef()
                    {
                        IsDeleted = true
                    });
                }

                trans.Complete();
            }
        }
コード例 #4
0
        public bool MarkAsDeleteForeverDrugs(string drugStoreCode, params int[] drugIds)
        {
            if (drugIds == null || !drugIds.Any())
            {
                return(false);
            }

            var retVal = true;

            try
            {
                using (var tran = TransactionScopeHelper.CreateReadCommittedForWrite())
                {
                    //if (CheckDrugsHasDeals(drugStoreCode, drugIds))
                    //{
                    //    tran.Complete();
                    //    return false;
                    //}
                    var drugRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, Thuoc> >();
                    drugRepo.UpdateMany(i => i.NhaThuoc_MaNhaThuoc == drugStoreCode && drugIds.Contains(i.ThuocId),
                                        i => new Thuoc()
                    {
                        RecordStatusID = (byte)RecordStatus.DeletedForever
                    });
                    //var sqlCommands = GetDeleteDrugsCommands(drugStoreCode, drugIds);
                    //drugRepo.ExecuteSqlCommand(sqlCommands);

                    tran.Complete();
                }
            }
            catch (Exception ex)
            {
                retVal = false;
                FaultHandler.Instance.Handle(ex, this);
            }

            return(retVal);
        }
コード例 #5
0
        public int DeleteReceiptNote(string drugStoreCode, int noteId)
        {
            var noteTypeId = 0;

            if (noteId <= 0)
            {
                return(noteTypeId);
            }

            try
            {
                var validItems = _dataFilterService.GetValidReceiptNotes(drugStoreCode);
                var currNote   = validItems.Where(i => i.MaPhieuNhap == noteId).Select(i => new
                {
                    NoteDate = i.NgayNhap,
                    NoteType = i.LoaiXuatNhap_MaLoaiXuatNhap
                }).FirstOrDefault();
                if (currNote == null)
                {
                    return(noteTypeId);
                }

                noteTypeId = currNote.NoteType.Value;
                var currNoteDate    = (DateTime?)currNote.NoteDate.Value.AbsoluteStart();
                var effectedNoteIds = validItems.Where(i => i.NgayNhap >= currNoteDate && i.LoaiXuatNhap_MaLoaiXuatNhap == currNote.NoteType)
                                      .Select(i => i.MaPhieuNhap).ToList();
                effectedNoteIds.Add(noteId);
                var receiptItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhapChiTiet> >();

                var drugIds = receiptItemRepo.GetAll().Where(i => i.PhieuNhap_MaPhieuNhap == noteId)
                              .Select(i => i.Thuoc_ThuocId.Value).Distinct().ToArray();
                using (var tran = TransactionScopeHelper.CreateReadCommittedForWrite())
                {
                    receiptItemRepo.UpdateMany(i => effectedNoteIds.Contains(i.PhieuNhap_MaPhieuNhap),
                                               i => new PhieuNhapChiTiet()
                    {
                        IsModified = true
                    });

                    var receiptRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuNhap> >();
                    receiptRepo.UpdateMany(i => i.MaPhieuNhap == noteId, i => new PhieuNhap()
                    {
                        Xoa = true
                    });

                    var whTransitRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, WarehouseTransition> >();
                    whTransitRepo.UpdateMany(i => i.ReceiptNoteId == noteId, i => new WarehouseTransition()
                    {
                        RecordStatusId = (int)RecordStatus.Deleted
                    });

                    tran.Complete();
                }
                BackgroundServiceJobHelper.EnqueueUpdateLastInventoryQuantity4CacheDrugs(drugStoreCode, drugIds);
            }
            catch (Exception ex)
            {
                noteTypeId = 0;
                FaultHandler.Instance.Handle(ex, this);
            }

            return(noteTypeId);
        }
コード例 #6
0
        public int DeleteDeliveryNote(string drugStoreCode, int noteId, int?actorId)
        {
            var noteTypeId = 0;

            if (noteId <= 0)
            {
                return(noteTypeId);
            }

            try
            {
                var validItems = _dataFilterService.GetValidDeliveryNotes(drugStoreCode);
                var currNote   = validItems.Where(i => i.MaPhieuXuat == noteId).Select(i => new
                {
                    NoteDate = i.NgayXuat,
                    NoteType = i.MaLoaiXuatNhap
                }).FirstOrDefault();
                if (currNote == null)
                {
                    return(noteTypeId);
                }

                noteTypeId = currNote.NoteType;
                var currNoteDate    = currNote.NoteDate.Value.AbsoluteStart();
                var effectedNoteIds = validItems.Where(i => i.NgayXuat >= currNoteDate && i.MaLoaiXuatNhap == currNote.NoteType)
                                      .Select(i => i.MaPhieuXuat).ToList();
                effectedNoteIds.Add(noteId);
                var deliveryItemRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuatChiTiet> >();
                var drugIds          = deliveryItemRepo.GetAll().Where(i => i.PhieuXuat_MaPhieuXuat == noteId)
                                       .Select(i => i.Thuoc_ThuocId.Value).Distinct().ToArray();
                using (var tran = TransactionScopeHelper.CreateReadCommittedForWrite())
                {
                    if (effectedNoteIds.Any())
                    {
                        deliveryItemRepo.UpdateMany(i => effectedNoteIds.Contains(i.PhieuXuat_MaPhieuXuat.Value),
                                                    i => new PhieuXuatChiTiet()
                        {
                            IsModified = true,
                        });
                    }

                    deliveryItemRepo.UpdateMany(i => i.PhieuXuat_MaPhieuXuat == noteId && i.NhaThuoc_MaNhaThuoc == drugStoreCode,
                                                i => new PhieuXuatChiTiet()
                    {
                        IsModified     = true,
                        RecordStatusID = (byte)RecordStatus.Deleted
                    });

                    var deliveryRepo = IoC.Container.Resolve <BaseRepositoryV2 <MedDbContext, PhieuXuat> >();
                    deliveryRepo.UpdateMany(i => i.MaPhieuXuat == noteId, i => new PhieuXuat()
                    {
                        RecordStatusID = (byte)RecordStatus.Deleted
                    });
                    tran.Complete();
                }
                BackgroundServiceJobHelper.EnqueueMakeAffectedChangesRelatedDeliveryNotes(drugStoreCode, actorId, effectedNoteIds.ToArray());
            }
            catch (Exception ex)
            {
                noteTypeId = 0;
                FaultHandler.Instance.Handle(ex, this);
            }

            return(noteTypeId);
        }