public void Delete() { DeNghiDieuChuyenBussiness DeNghiXuatDieuChuyenBusiness; if (grvDanhSach.FocusedRowHandle < 0) { return; } DeNghiXuatDieuChuyenBusiness = new DeNghiDieuChuyenBussiness((ChungTuDieuChuyenInfor)grvDanhSach.GetRow(grvDanhSach.FocusedRowHandle)); List <ChungTuDieuChuyenInfor> objXuat = DeNghiDieuChuyenDataProvider.Instance.GetListChiTietChungTuBySoChungTu(DeNghiXuatDieuChuyenBusiness.ChungTu.SoChungTu); if (objXuat.FindAll(delegate(ChungTuDieuChuyenInfor math) { return(math.LoaiChungTu == 21); }).Count > 0) { throw new ManagedException("chứng từ đã nhập kho thành công, không thể hủy được!"); } else { //Huy De Nghi nhan dieu chuyen DeNghiNhanDieuChuyenBussiness DeNghiNhanDieuChuyenBusiness; if (grvDanhSach.FocusedRowHandle < 0) { return; } DeNghiNhanDieuChuyenBusiness = new DeNghiNhanDieuChuyenBussiness((ChungTuNhapDieuChuyenInfor)grvDanhSach.GetRow(grvDanhSach.FocusedRowHandle)); List <ChungTuNhapDieuChuyenInfor> objNhan = DeNghiNhanDieuChuyenDataProvider.Instance.GetListChiTietChungTuBySoChungTu(DeNghiNhanDieuChuyenBusiness.ChungTu.SoChungTu); for (int i = 0; i < objNhan.Count; i++) { if (objNhan[i].LoaiChungTu == 14) { DeNghiNhanDieuChuyenBussiness DeNghiNhanBusiness = new DeNghiNhanDieuChuyenBussiness(objNhan[i]); DeNghiNhanBusiness.ChungTu.TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN); DeNghiNhanBusiness.ChungTu.LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_NHAN_DIEU_CHUYEN); DeNghiNhanBusiness.CancelChungTu(); } } //Huy De Nghi Xuat dieu chuyen trung gian DeNghiXuatDieuChuyenTGBussiness DeNghiXuatDieuChuyenTGBusiness; DeNghiXuatDieuChuyenTGBusiness = new DeNghiXuatDieuChuyenTGBussiness((ChungTuXuatDieuChuyenInfo)grvDanhSach.GetRow(grvDanhSach.FocusedRowHandle)); List <ChungTuXuatDieuChuyenInfo> objDNXuatTG = DeNghiXuatDieuChuyenTGDataProvider.Instance.GetListChiTietChungTuBySoChungTu(DeNghiXuatDieuChuyenTGBusiness.ChungTu.SoChungTu); for (int i = 0; i < objXuat.Count; i++) { if (objNhan[i].LoaiChungTu == 55) { DeNghiXuatDieuChuyenTGBussiness DeNghiXuatTGBusiness = new DeNghiXuatDieuChuyenTGBussiness(objDNXuatTG[i]); DeNghiXuatTGBusiness.ChungTu.TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN); DeNghiXuatTGBusiness.ChungTu.LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN_TRUNG_GIAN); DeNghiXuatTGBusiness.CancelChungTu(); } } //Huy nhap dieu chuyen trug gian NhapDieuChuyenTGBussiness NhapDieuChuyenTGBusiness; if (grvDanhSach.FocusedRowHandle < 0) { return; } NhapDieuChuyenTGBusiness = new NhapDieuChuyenTGBussiness((ChungTuNhapDieuChuyenInfo)grvDanhSach.GetRow(grvDanhSach.FocusedRowHandle)); List <ChungTuNhapDieuChuyenInfo> objNhapTG = NhapDieuChuyenKhoTGDataProvider.Instance.GetListChiTietChungTuBySoChungTu(NhapDieuChuyenTGBusiness.ChungTu.SoChungTu); for (int i = 0; i < objNhan.Count; i++) { if (objNhan[i].LoaiChungTu == 54) { NhapDieuChuyenTGBussiness NhapTGBusiness = new NhapDieuChuyenTGBussiness(objNhapTG[i]); NhapTGBusiness.ChungTu.TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN); NhapTGBusiness.ChungTu.LoaiChungTu = -Convert.ToInt32(TransactionType.NHAN_DIEU_CHUYEN_TRUNG_GIAN); NhapTGBusiness.CancelChungTu(); } } //Huy De Nghi nhan dieu chuyen trung gian DeNghiNhapDieuChuyenTGBussiness DeNghiNhapDieuChuyenTGBusiness; if (grvDanhSach.FocusedRowHandle < 0) { return; } DeNghiNhapDieuChuyenTGBusiness = new DeNghiNhapDieuChuyenTGBussiness((ChungTuNhapDieuChuyenInfo)grvDanhSach.GetRow(grvDanhSach.FocusedRowHandle)); List <ChungTuNhapDieuChuyenInfo> objDNNhapTG = DeNghiNhapDieuChuyenTGDataProvider.Instance.GetListChiTietChungTuBySoChungTu(DeNghiNhapDieuChuyenTGBusiness.ChungTu.SoChungTu); for (int i = 0; i < objNhan.Count; i++) { if (objNhan[i].LoaiChungTu == 53) { DeNghiNhapDieuChuyenTGBussiness DeNghiNhapTGBusiness = new DeNghiNhapDieuChuyenTGBussiness(objDNNhapTG[i]); DeNghiNhapTGBusiness.ChungTu.TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN); DeNghiNhapTGBusiness.ChungTu.LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_NHAN_DIEU_CHUYEN_TRUNG_GIAN); DeNghiNhapTGBusiness.CancelChungTu(); } } //Huy Xuat dieu chuyen for (int i = 0; i < objXuat.Count; i++) { if (objXuat[i].LoaiChungTu == 13) { XuatDieuChuyenBusiness XuatDieuChuyenBusiness = new XuatDieuChuyenBusiness(objXuat[i]); XuatDieuChuyenBusiness.ChungTu.TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN); XuatDieuChuyenBusiness.ChungTu.LoaiChungTu = -Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN); XuatDieuChuyenBusiness.CancelChungTu(); } } // Huy de nghi xuat dieu chuyen for (int i = 0; i < objXuat.Count; i++) { if (objXuat[i].LoaiChungTu == 12) { DeNghiDieuChuyenBussiness DeNghiDieuChuyenBusiness = new DeNghiDieuChuyenBussiness(objXuat[i]); DeNghiDieuChuyenBusiness.ChungTu.TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN); DeNghiDieuChuyenBusiness.ChungTu.LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN); DeNghiDieuChuyenBusiness.CancelChungTu(); } } } }
public bool HuyDieuChuyen(ChungTuXuatDieuChuyenInfo chungTuXuatDieuChuyenInfo) { //ChungTuXuatDieuChuyenInfo chungTuXuatDieuChuyenInfo = null; ChungTuXuatDieuChuyenInfo chungTuXuatDieuChuyenTgInfo = null; ChungTuNhapDieuChuyenInfo chungTuNhapDieuChuyenInfo = null; ChungTuNhapDieuChuyenInfo chungTuNhapDieuChuyenTgInfo = null; DeNghiXuatDieuChuyenTGBussiness deNghiXuatDieuChuyenTgBussiness = null; DeNghiNhapDieuChuyenBussiness deNghiNhapDieuChuyenBussiness = null; DeNghiNhapDieuChuyenTGBussiness deNghiNhapDieuChuyenTgBussiness = null; NhapDieuChuyenTGBussiness nhapDieuChuyenTgBussiness = null; DeNghiXuatDieuChuyenBussiness deNghiXuatDieuChuyenBussiness = null; XuatDieuChuyenBussiness xuatDieuChuyenBussiness = null; ChungTuBusinessBase businessCloned; Exception innerException = null; try { frmProgress.Instance.DoWork( delegate { try { frmProgress.Instance.Description = "Đang thực hiện ..."; frmProgress.Instance.MaxValue = 30; CommonProvider.Instance.Check_Lock_ChungTu(chungTuXuatDieuChuyenInfo.IdChungTu); frmProgress.Instance.Value += 1; if (!CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuXuatDieuChuyenInfo, 1)) { frmProgress.Instance.Description = "Không hoàn thành!"; frmProgress.Instance.Value = frmProgress.Instance.MaxValue; throw new ManagedException( String.Format("Chứng từ {0} đã bị khóa bởi người dùng khác, không thể hủy được!", chungTuXuatDieuChuyenInfo.SoChungTu)); } frmProgress.Instance.Value += 1; chungTuXuatDieuChuyenInfo = DeNghiXuatDieuChuyenDataProvider.Instance.GetChungTuXuatDieuChuyenById( chungTuXuatDieuChuyenInfo.IdChungTu); frmProgress.Instance.Value += 1; //ngay xuat kho < sysdate, thi khong huy duoc. if ((chungTuXuatDieuChuyenInfo.LoaiChungTu == Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN) || XuatDieuChuyenDataProvider.Instance.GetListChiTietHangHoaByIdChungTu( chungTuXuatDieuChuyenInfo.IdChungTu).Count > 0) && chungTuXuatDieuChuyenInfo.NgayNhapXuatKho.Date != CommonProvider.Instance.GetSysDate().Date) { frmProgress.Instance.Description = "Không hoàn thành!"; frmProgress.Instance.Value = frmProgress.Instance.MaxValue; throw new ManagedException( String.Format("Chứng từ đã xuất từ ngày {0}, không thể hủy được!", chungTuXuatDieuChuyenInfo.NgayNhapXuatKho.Date)); } frmProgress.Instance.Value += 1; if (chungTuXuatDieuChuyenInfo == null || chungTuXuatDieuChuyenInfo.LoaiChungTu != Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN) && chungTuXuatDieuChuyenInfo.LoaiChungTu != Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN)) { frmProgress.Instance.DoWork(LoadData); frmProgress.Instance.Description = "Không hoàn thành!"; frmProgress.Instance.Value = frmProgress.Instance.MaxValue; throw new ManagedException("Chứng từ đã bị hủy!"); } frmProgress.Instance.Value += 1; chungTuNhapDieuChuyenInfo = DeNghiNhapDieuChuyenDataProvider.Instance.GetChungTuNhanDCBySoCTGoc( chungTuXuatDieuChuyenInfo.SoChungTu); frmProgress.Instance.Value += 1; if (chungTuNhapDieuChuyenInfo != null) { if (MessageBox.Show("Đã có đề nghị nhận điều chuyển, bạn có muốn tiếp tục không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) { CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuXuatDieuChuyenInfo, 0); frmProgress.Instance.Description = "Không hoàn thành!"; frmProgress.Instance.Value = frmProgress.Instance.MaxValue; frmProgress.Instance.IsCompleted = true; return; } CommonProvider.Instance.Check_Lock_ChungTu(chungTuNhapDieuChuyenInfo.IdChungTu); frmProgress.Instance.Value += 1; if (!CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuNhapDieuChuyenInfo, 1)) { throw new ManagedException( String.Format( "Chứng từ {0} đã bị khóa bởi người dùng khác, không thể hủy được!", chungTuNhapDieuChuyenInfo.SoChungTu)); } frmProgress.Instance.Value += 1; chungTuNhapDieuChuyenInfo = DeNghiNhapDieuChuyenDataProvider.Instance.GetChungTuNhanDCBySoCTGoc( chungTuXuatDieuChuyenInfo.SoChungTu); frmProgress.Instance.Value += 1; //neu co chung tu nhan dieu chuyen, thi khong huy duoc. if (chungTuNhapDieuChuyenInfo.LoaiChungTu == Convert.ToInt32(TransactionType.NHAN_DIEU_CHUYEN) || NhapDieuChuyenKhoDataProvider.Instance.GetListChiTietHangHoaByIdChungTu( chungTuNhapDieuChuyenInfo.IdChungTu).Count > 0) { throw new ManagedException("Đã nhận điều chuyển, không thể hủy được!"); } frmProgress.Instance.Value += 1; chungTuXuatDieuChuyenTgInfo = DeNghiXuatDieuChuyenTGDataProvider.Instance.GetChungTuXuatDCTGBySoCTGoc( chungTuNhapDieuChuyenInfo.SoChungTu); frmProgress.Instance.Value += 1; if (chungTuXuatDieuChuyenTgInfo != null) { deNghiXuatDieuChuyenTgBussiness = new DeNghiXuatDieuChuyenTGBussiness(chungTuXuatDieuChuyenTgInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN_TRUNG_GIAN) } }; } frmProgress.Instance.Value += 1; deNghiNhapDieuChuyenBussiness = new DeNghiNhapDieuChuyenBussiness(chungTuNhapDieuChuyenInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_NHAN_DIEU_CHUYEN) } }; frmProgress.Instance.Value += 1; } chungTuNhapDieuChuyenTgInfo = DeNghiNhapDieuChuyenTGDataProvider.Instance.GetChungTuNhanDCTGBySoCTGoc( chungTuXuatDieuChuyenInfo.SoChungTu); frmProgress.Instance.Value += 1; if (XuatDieuChuyenDataProvider.Instance.GetListChiTietHangHoaByIdChungTu( chungTuXuatDieuChuyenInfo.IdChungTu).Count > 0 && (chungTuXuatDieuChuyenInfo.LoaiChungTu == Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN) || chungTuXuatDieuChuyenInfo.LoaiChungTu == Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN))) { if (chungTuNhapDieuChuyenTgInfo != null) { nhapDieuChuyenTgBussiness = new NhapDieuChuyenTGBussiness(chungTuNhapDieuChuyenTgInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.NHAN_DIEU_CHUYEN_TRUNG_GIAN) } }; frmProgress.Instance.Value += 1; deNghiNhapDieuChuyenTgBussiness = new DeNghiNhapDieuChuyenTGBussiness(chungTuNhapDieuChuyenTgInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.NHAN_DIEU_CHUYEN_TRUNG_GIAN) } }; frmProgress.Instance.Value += 1; } xuatDieuChuyenBussiness = new XuatDieuChuyenBussiness(chungTuXuatDieuChuyenInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN) } }; frmProgress.Instance.Value += 1; deNghiXuatDieuChuyenBussiness = new DeNghiXuatDieuChuyenBussiness(chungTuXuatDieuChuyenInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN) } }; frmProgress.Instance.Value += 1; } else if (chungTuXuatDieuChuyenInfo.LoaiChungTu == Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN)) { if (chungTuNhapDieuChuyenTgInfo != null) { deNghiNhapDieuChuyenTgBussiness = new DeNghiNhapDieuChuyenTGBussiness(chungTuNhapDieuChuyenTgInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_NHAN_DIEU_CHUYEN_TRUNG_GIAN) } }; frmProgress.Instance.Value += 1; } deNghiXuatDieuChuyenBussiness = new DeNghiXuatDieuChuyenBussiness(chungTuXuatDieuChuyenInfo) { ChungTu = { TrangThai = Convert.ToInt32(TrangThaiDieuChuyen.HUY_DIEU_CHUYEN), LoaiChungTu = -Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN) } }; frmProgress.Instance.Value += 1; } try { ConnectionUtil.Instance.BeginTransaction(); frmProgress.Instance.MaxValue = 12; //Huy nhan de nghi nhan dieu chuyen if (deNghiNhapDieuChuyenBussiness != null) { businessCloned = deNghiNhapDieuChuyenBussiness.Clone(); businessCloned.CancelChungTu(); } frmProgress.Instance.Value += 1; //Huy nhan de nghi xuat dieu chuyen trung gian if (deNghiXuatDieuChuyenTgBussiness != null) { businessCloned = deNghiXuatDieuChuyenTgBussiness.Clone(); businessCloned.CancelChungTu(); } frmProgress.Instance.Value += 1; //Huy nhan dieu chuyen trung gian if (nhapDieuChuyenTgBussiness != null) { businessCloned = nhapDieuChuyenTgBussiness.Clone(); businessCloned.CancelChungTu(); } frmProgress.Instance.Value += 1; //Huy de nghi nhan dieu chuyen trung gian if (deNghiNhapDieuChuyenTgBussiness != null) { businessCloned = deNghiNhapDieuChuyenTgBussiness.Clone(); businessCloned.CancelChungTu(); } frmProgress.Instance.Value += 1; //Huy dieu chuyen if (xuatDieuChuyenBussiness != null) { businessCloned = xuatDieuChuyenBussiness.Clone(); businessCloned.CancelChungTu(); } frmProgress.Instance.Value += 1; //Huy de nghi dieu chuyen if (deNghiXuatDieuChuyenBussiness != null) { businessCloned = deNghiXuatDieuChuyenBussiness.Clone(); businessCloned.CancelChungTu(); } frmProgress.Instance.Value += 1; ConnectionUtil.Instance.CommitTransaction(); } catch (Exception) { ConnectionUtil.Instance.RollbackTransaction(); throw; } //ConnectionUtil.Instance.DoSerializableWorkInTransaction( // delegate // { // frmProgress.Instance.MaxValue = 12; // //Huy nhan de nghi nhan dieu chuyen // if (deNghiNhapDieuChuyenBussiness != null) // { // businessCloned = deNghiNhapDieuChuyenBussiness.Clone(); // businessCloned.CancelChungTu(); // } // frmProgress.Instance.Value += 1; // //Huy nhan de nghi xuat dieu chuyen trung gian // if (deNghiXuatDieuChuyenTgBussiness != null) // { // businessCloned = deNghiXuatDieuChuyenTgBussiness.Clone(); // businessCloned.CancelChungTu(); // } // frmProgress.Instance.Value += 1; // //Huy nhan dieu chuyen trung gian // if (nhapDieuChuyenTgBussiness != null) // { // businessCloned = nhapDieuChuyenTgBussiness.Clone(); // businessCloned.CancelChungTu(); // } // frmProgress.Instance.Value += 1; // //Huy de nghi nhan dieu chuyen trung gian // if (deNghiNhapDieuChuyenTgBussiness != null) // { // businessCloned = deNghiNhapDieuChuyenTgBussiness.Clone(); // businessCloned.CancelChungTu(); // } // frmProgress.Instance.Value += 1; // //Huy dieu chuyen // if (xuatDieuChuyenBussiness != null) // { // businessCloned = xuatDieuChuyenBussiness.Clone(); // businessCloned.CancelChungTu(); // } // frmProgress.Instance.Value += 1; // //Huy de nghi dieu chuyen // if (deNghiXuatDieuChuyenBussiness != null) // { // businessCloned = deNghiXuatDieuChuyenBussiness.Clone(); // businessCloned.CancelChungTu(); // } // frmProgress.Instance.Value += 1; // }); frmProgress.Instance.Value += 1; if (chungTuNhapDieuChuyenInfo != null) { CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuNhapDieuChuyenInfo, 0); } frmProgress.Instance.Value += 1; CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuXuatDieuChuyenInfo, 0); frmProgress.Instance.Value += 1; frmProgress.Instance.Description = "Đã xong!"; frmProgress.Instance.Value = frmProgress.Instance.MaxValue; frmProgress.Instance.IsCompleted = true; } catch (Exception ex) { innerException = ex; frmProgress.Instance.Description = "Không hoàn thành!"; frmProgress.Instance.Value = frmProgress.Instance.MaxValue; frmProgress.Instance.IsCompleted = true; } }); if (innerException != null) { throw innerException; } return(true); } catch (ManagedException ex) { try { if (chungTuNhapDieuChuyenInfo != null) { CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuNhapDieuChuyenInfo, 0); } if (chungTuXuatDieuChuyenInfo != null) { CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuXuatDieuChuyenInfo, 0); } } catch (Exception) { } MessageBox.Show(ex.Message); return(false); } catch (Exception ex) { try { if (chungTuNhapDieuChuyenInfo != null) { CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuNhapDieuChuyenInfo, 0); } if (chungTuXuatDieuChuyenInfo != null) { CommonProvider.Instance.Lock_Unlock_ChungTu(chungTuXuatDieuChuyenInfo, 0); } } catch (Exception) { } EventLogProvider.Instance.WriteOfflineLog(ex.ToString(), this.Name); #if DEBUG MessageBox.Show(ex.ToString()); #else MessageBox.Show(ex.Message); #endif return(false); } }