Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }