/// <summary> /// </summary> public static bool CancelOneItem(OutApplicationItem item, Account account, string remark, IOutApplication dalOutApplication, OutDiyProcessUtility outDiyProcessUtility, OutApplication outApplication) { item = dalOutApplication.GetOutApplicationItemByItemID(item.ItemID); bool valide = RequestStatus.CanCancelStatus(item.Status); if (valide) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { RequestStatus status = RequestStatus.Cancelled; if (outApplication.OutType.ID == OutType.InCity.ID || outApplication.OutType.ID == OutType.Train.ID) { status = RequestStatus.ApproveCancelPass; ConfirmMessage confirmmessage = new ConfirmMessage(); confirmmessage.FinishPhoneMessageOperation( new PhoneMessageType(PhoneMessageEnumType.OutApplication, item.ItemID)); valide = false; } dalOutApplication.UpdateOutApplicationItemStatusByItemID(item.ItemID, status); OutApplicationFlow OutApplicationFlow = new OutApplicationFlow(0, account, DateTime.Now, remark, RequestStatus.Cancelled, 1); dalOutApplication.InsertOutApplicationFlow(item.ItemID, OutApplicationFlow); ts.Complete(); } } return(valide); }
/// <summary> /// /// </summary> public int InsertOutApplicationFlow(int outApplicationItemID, OutApplicationFlow outFlow) { int pkid; SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_PKID, SqlDbType.Int).Direction = ParameterDirection.Output; cmd.Parameters.Add(_OutApplicationItemID, SqlDbType.Int).Value = outApplicationItemID; cmd.Parameters.Add(_OperatorID, SqlDbType.Int).Value = outFlow.Account.Id; cmd.Parameters.Add(_OperationTime, SqlDbType.DateTime).Value = outFlow.OperationTime; cmd.Parameters.Add(_Operation, SqlDbType.Int).Value = outFlow.Operation.Id; cmd.Parameters.Add(_Remark, SqlDbType.Text).Value = outFlow.Remark; cmd.Parameters.Add(_Step, SqlDbType.Int).Value = outFlow.Step; SqlHelper.ExecuteNonQueryReturnPKID("InsertOutApplicationFlow", cmd, out pkid); return(pkid); }
private void AutoCancelOutApplication() { if (_OldOutApplication.OutType.ID == OutType.OutCity.ID) { foreach (OutApplicationItem item in _OldOutApplication.Item) { item.Status = RequestStatus.ApproveCancelPass; new UpdateAdjustRestByOut(item, _OldOutApplication.Account.Id).Excute(); OutApplicationFlow OutApplicationFlow = new OutApplicationFlow(0, _OutApplication.Account, DateTime.Now, _OutApplication.Account.Name + "已经重新编辑外出单" + _OutApplication.PKID + ",系统自动批准取消,并退回调休记录。", RequestStatus.ApproveCancelPass, 1); _OutApplicationDal.InsertOutApplicationFlow(item.ItemID, OutApplicationFlow); } } }
protected override void ExcuteSelf() { int currentID = _OutApplication.PKID; try { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { if (_OldOutApplication.IfAutoCancel) { AutoCancelOutApplication(); } _OutApplicationDal.UpdateOutApplication(_OutApplication); _OutApplicationDal.DeleteOutApplicationItemByOutApplicationID(currentID); if (_OutApplication.Item != null) { foreach (OutApplicationItem item in _OutApplication.Item) { if (_OutApplication.OutType == OutType.OutCity) { item.Adjust = true; item.AdjustHour = new UpdateAdjustRestByOut(item, _OutApplication.Account.Id).GetItemAdjustHour(); } int itemid = _OutApplicationDal.InsertOutApplicationItem(currentID, item); if (item.Status == RequestStatus.Submit) { OutApplicationFlow flow = new OutApplicationFlow(0, _OutApplication.Account, _OutApplication.SubmitDate, _OutApplication.Reason, item.Status, 1); _OutApplicationDal.InsertOutApplicationFlow(itemid, flow); } } } ts.Complete(); } } catch { HrmisUtility.ThrowException(HrmisUtility._DbError); } new OutMailAndPhoneDelegate().SubmitOperation(_OutApplication.PKID, _CCList); }
/// <summary> /// /// </summary> /// <returns></returns> private static List <OutApplicationFlow> GetOutApplicationFlowByItemID(int itemID) { List <OutApplicationFlow> iRet = new List <OutApplicationFlow>(); SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_OutApplicationItemID, SqlDbType.Int).Value = itemID; using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetOutApplicationFlowByItemID", cmd)) { while (sdr.Read()) { Account account = new Account(Convert.ToInt32(sdr[_DbOperatorID]), "", ""); OutApplicationFlow flow = new OutApplicationFlow(Convert.ToInt32(sdr[_DbPKID]), account, Convert.ToDateTime(sdr[_DbOperationTime]), sdr[_DbRemark].ToString(), RequestStatus.FindRequestStatus(Convert.ToInt32(sdr[_DbOperation])), Convert.ToInt32(sdr[_DbStep])); iRet.Add(flow); } return(iRet); } }
/// <summary> /// /// </summary> public static bool ApproveOneItem(OutApplicationItem item, bool isAgree, Account account, OutApplication outApplication, string remark, IOutApplication dalOutApplication, OutDiyProcessUtility outDiyProcess, bool isAdjust, bool isChangeAdjust, decimal adjustHour, out Account nextOperator) { if (!isAdjust) { adjustHour = 0; } nextOperator = null; item = dalOutApplication.GetOutApplicationItemByItemID(item.ItemID); item.AdjustHour = adjustHour; bool ans = RequestStatus.CanApproveStatus(item.Status) && account.Id == outDiyProcess.GetNextOperator(outApplication.DiyProcess, item, outApplication.Account.Id).Id; if (ans) { if (!isAgree) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { RequestStatus requestStatus = RequestUtility.GetStatus(item.Status, isAgree, 1); dalOutApplication.UpdateOutApplicationItemStatusByItemID(item.ItemID, requestStatus); dalOutApplication.InsertOutApplicationFlow(item.ItemID, new OutApplicationFlow(0, account, DateTime.Now, remark, requestStatus, -1)); nextOperator = null; item.Status = requestStatus; if (outApplication.OutType.ID == OutType.OutCity.ID) { if (isChangeAdjust) { dalOutApplication.UpdateOutApplicationItemAdjustByItemID(item.ItemID, isAdjust, adjustHour); item.Adjust = isAdjust; } new UpdateAdjustRestByOut(item, outApplication.Account.Id).Excute(); } ts.Complete(); } } else { //现在做到第几步,就是上一步加1 int step = outDiyProcess.GetNextStep(item.OutApplicationFlow, outApplication.DiyProcess); RequestStatus requestStatus = RequestUtility.GetStatus(item.Status, isAgree, step); OutApplicationFlow OutApplicationFlow = new OutApplicationFlow(0, account, DateTime.Now, remark, requestStatus, step); using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { dalOutApplication.InsertOutApplicationFlow(item.ItemID, OutApplicationFlow); dalOutApplication.UpdateOutApplicationItemStatusByItemID(item.ItemID, requestStatus); item.Status = requestStatus; if (outApplication.OutType.ID == OutType.OutCity.ID) { if (isChangeAdjust) { dalOutApplication.UpdateOutApplicationItemAdjustByItemID(item.ItemID, isAdjust, adjustHour); item.Adjust = isAdjust; } new UpdateAdjustRestByOut(item, outApplication.Account.Id).Excute(); } ts.Complete(); } nextOperator = outDiyProcess.GetNextOperator(outApplication.DiyProcess, step, outApplication.Account.Id); } } return(ans); }