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); }
public static void EnqueueDeleteForeverDrugs(params int[] drugIds) { BackgroundServiceJobHelper.DeleteForeverDrugs(MedSessionManager.CurrentDrugStoreCode, drugIds); }
public static void EnqueueMakeAffectedChangesByUpdatedDrugs(params int[] drugIds) { BackgroundServiceJobHelper.EnqueueMakeAffectedChangesByUpdatedDrugs(MedSessionManager.CurrentDrugStoreCode, drugIds); }
public static void EnqueueUpdateNewestInventories(params int[] drugIds) { BackgroundServiceJobHelper.EnqueueUpdateNewestInventories(MedSessionManager.CurrentDrugStoreCode, drugIds); }
public static void EnqueueMakeAffectedChangesRelatedReceiptNotes(params int[] noteIds) { BackgroundServiceJobHelper.EnqueueMakeAffectedChangesRelatedReceiptNotes(MedSessionManager.CurrentDrugStoreCode, MedSessionManager.CurrentUserId, noteIds); }
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); }