Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
 public static void EnqueueDeleteForeverDrugs(params int[] drugIds)
 {
     BackgroundServiceJobHelper.DeleteForeverDrugs(MedSessionManager.CurrentDrugStoreCode, drugIds);
 }
Exemplo n.º 3
0
 public static void EnqueueMakeAffectedChangesByUpdatedDrugs(params int[] drugIds)
 {
     BackgroundServiceJobHelper.EnqueueMakeAffectedChangesByUpdatedDrugs(MedSessionManager.CurrentDrugStoreCode, drugIds);
 }
Exemplo n.º 4
0
 public static void EnqueueUpdateNewestInventories(params int[] drugIds)
 {
     BackgroundServiceJobHelper.EnqueueUpdateNewestInventories(MedSessionManager.CurrentDrugStoreCode, drugIds);
 }
Exemplo n.º 5
0
 public static void EnqueueMakeAffectedChangesRelatedReceiptNotes(params int[] noteIds)
 {
     BackgroundServiceJobHelper.EnqueueMakeAffectedChangesRelatedReceiptNotes(MedSessionManager.CurrentDrugStoreCode, MedSessionManager.CurrentUserId, noteIds);
 }
Exemplo n.º 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);
        }