Пример #1
0
        /// <summary>
        /// 获取下一步审批人
        /// </summary>
        /// <returns></returns>
        private NameCollection GetNextApproveTaskUsers()
        {
            var nextApproveTaskUsers = new NameCollection();
            var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department);
            if (manager.IsNullOrWhitespace())
            {
                //Set default depart manager
                manager = SetDefaultDepartManager();
            }
            else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase))
            {
                var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    return null;
                }
                manager = managerEmp.UserAccount;
            }

            nextApproveTaskUsers.Add(manager);
            //获取代理人员
            var deleman = WorkFlowUtil.GetDeleman(manager, Constants.CAModules.NonTradeSupplierSetupMaintenance);
            if (deleman != null)
            {
                nextApproveTaskUsers.Add(deleman);
            }

            return nextApproveTaskUsers;
        }
Пример #2
0
        void Actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
        {
            if (e.Action.Equals("Approve"))//审批通过
            {
                WorkflowDataFields fields = WorkflowContext.Current.DataFields;
                decimal TotalCost = GetTotalCost();
                if (TotalCost == 0)
                {
                    DisplayMessage("Rate or Cost error!");
                    e.Cancel = true;
                    return;
                }

                string levelType = "Contract Approval Limits";
                string sCurrentManager = CurrentEmployee.UserAccount;
                var quota = WorkFlowUtil.GetQuota(CurrentEmployee.UserAccount, levelType);///得到当前审批人的审批金额

                WorkflowContext context = WorkflowContext.Current;
                if (TotalCost > quota)///当前审批者不够审批此金额。
                {
                    context.UpdateWorkflowVariable("IsApproveAgin", true);//

                    NameCollection manager = new NameCollection();
                    Employee managerEmp = WorkFlowUtil.GetNextApprover(sCurrentManager);
                    if (managerEmp == null && !WorkflowPerson.IsCEO(sCurrentManager))
                    {
                        DisplayMessage("The manager is not set in the system.");
                        e.Cancel = true;
                        return;
                    }
                    manager.Add(managerEmp.UserAccount);

                    string sDelePerson = WorkFlowUtil.GetDeleman(managerEmp.UserAccount, WorkFlowUtil.GetModuleIdByListName("PurchaseRequestGeneral")); //查找代理人
                    if (sDelePerson != null)
                    {
                        manager.Add(sDelePerson);
                    }
                    context.UpdateWorkflowVariable("ApproveUsers", manager);
                }
                else//进入到财务审批
                {
                    context.UpdateWorkflowVariable("IsApproveAgin", false);//
                }

                fields["Approvers"] = ReturnAllApprovers(sCurrentManager);
                fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", sCurrentManager);
            }
            else
            {
                WorkflowContext context = WorkflowContext.Current;
                WorkflowDataFields fields = WorkflowContext.Current.DataFields;
                string sWorkflowNo = fields["Title"].ToString();
                context.UpdateWorkflowVariable("EditTitle", "Please resubmit Purchase Ruequest-General:" + sWorkflowNo);//
            }
            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
Пример #3
0
        protected void Name_OnUpdate(object sender, DataGridCommandEventArgs e)
        {
            Page.Validate();

            if (Page.IsValid)
            {
                int          index = grid.EditItemIndex;
                DataGridItem item  = grid.Items[index];

                if (index >= names.Count)
                {
                    names.Add("");
                }

                Name name = names[index];

                name.IsoLangCode = ((DropDownList)item.FindControl("language")).SelectedItem.Value;
                name.Value       = ((TextBox)item.FindControl("name")).Text.Trim();

                CheckBox checkbox = (CheckBox)item.FindControl("default");

                if (index > 0 && null != checkbox && checkbox.Checked)
                {
                    for (int i = index; i > 0; i--)
                    {
                        names[i] = names[i - 1];
                    }

                    names[0] = name;
                    index    = 0;
                }

                parentEntity.Save();

                if (0 == index && !IsDownlevel)
                {
                    Page.RegisterStartupScript(
                        "Reload",
                        ClientScripts.ReloadExplorerPane(
                            parentKey));
                }

                grid.EditItemIndex = -1;
                CancelEditMode();

                PopulateDataGrid();
            }
        }
Пример #4
0
        private void Actions_ActionExecuting(object sender, CancelEventArgs e)
        {
            if (!this.DataForm1.Validate())
            {
                DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ? this.DataForm1.msg : "Please fill in all the necessary fields.");
                e.Cancel = true;
                return;
            }

            #region Set users for workflow
            //Modify task users
            var departmentManagerTaskUsers = new NameCollection();
            var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department);
            if (manager.IsNullOrWhitespace())
            {
                DisplayMessage("The department manager is not set in the system.");
                e.Cancel = true;
                return;
            }
            else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase))
            {
                var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                manager = managerEmp.UserAccount;
            }
            departmentManagerTaskUsers.Add(manager);

            var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.InternalOrderCreation);
            if (deleman != null)
            {
                departmentManagerTaskUsers.Add(deleman);
            }
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", departmentManagerTaskUsers);
            #endregion

            WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress;
        }
Пример #5
0
 private void InitNameCollection(Dictionary <string, EbMobileControl> controls)
 {
     foreach (EbMobileControl control in controls.Values)
     {
         if (control is ILinesEnabled lines)
         {
             foreach (EbMobileControl linesCtrl in lines.ChildControls)
             {
                 string key = $"{control.Name}.{linesCtrl.Name}";
                 NameCollection.Add(key);
             }
         }
         string keyControl = $"{CTRL_PARENT_FORM}.{control.Name}";
         NameCollection.Add(keyControl);
     }
 }
Пример #6
0
 void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
 {
     if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase))
     {
         WorkflowContext.Current.DataFields["Status"] = "Cancelled";
         return;
     }
     string msg = DataForm1.Validate();
     if (!string.IsNullOrEmpty(msg))
     {
         DisplayMessage(msg);
         e.Cancel = true;
         return;
     }
     NameCollection buyingUsers = new NameCollection();
     buyingUsers.Add(DataForm1.BuyingUser);
     WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers);
     WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser;
     WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit();
     WorkflowContext.Current.DataFields["Status"] = "In Progress";
 }
Пример #7
0
        /// <summary>
        /// 设置工作流变量
        /// </summary>
        /// <param name="bIsSubmit"></param>
        /// <param name="sWorkFlowNO"></param>
        bool SetWorkflowBaseVariable(bool bIsSubmit,string sWorkFlowNO)
        {
            NameCollection ncFinance = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
            if (null == ncFinance || ncFinance.Count == 0)
            {
                DisplayMessage("There are no users in wf_FinanceConfirm");
                return false;
            }
            Employee employee = WorkFlowUtil.GetNextApprover(this.Userinfo1.Applicant);/// WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
            if (null == employee)
            {
                DisplayMessage(this.Userinfo1.Applicant.UserAccount+" has no manager in System!");
                return false;
            }
            NameCollection manager = new NameCollection();
            manager.Add(employee.UserAccount);
            string sDelePerson = WorkFlowUtil.GetDeleman(employee.UserAccount, WorkFlowUtil.GetModuleIdByListName("PurchaseRequestGeneral")); //查找代理人
            if (sDelePerson != null)
            {
                manager.Add(sDelePerson);
            }

            WorkflowContext context = WorkflowContext.Current;
            context.UpdateWorkflowVariable("IsSubmit", bIsSubmit);
            context.UpdateWorkflowVariable("IsSaveAgin", false);
            context.UpdateWorkflowVariable("EditUrl", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/EditForm.aspx");//EditUrl
            context.UpdateWorkflowVariable("EditTitle", "Please complete Purchase Ruequest-General:" + sWorkFlowNO);//
            context.UpdateWorkflowVariable("ApproveURL", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/ApproveForm.aspx");//ApproveURL
            context.UpdateWorkflowVariable("ApproveTitle", sWorkFlowNO + " needs approve");//ApproveTitle
            context.UpdateWorkflowVariable("ApproveUsers", manager);
            context.UpdateWorkflowVariable("ComfirmURL", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/ConfirmForm.aspx");//ComfirmURL
            context.UpdateWorkflowVariable("ConfirmTitle", sWorkFlowNO + " needs confirm"); //ConfirmTitle
            context.UpdateWorkflowVariable("IsApproveAgin", false);
            context.UpdateWorkflowVariable("ConfirmUsers", ncFinance);
            return true;
        }
Пример #8
0
        private void Actions_ActionExecuting(object sender, ActionEventArgs e)
        {
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            switch (WorkflowContext.Current.Step)
            {

                case "NextApproveTask":
                    if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase)
                        && this.DataForm1.CashAdvanceType != "Urgent")
                    {
                        context.UpdateWorkflowVariable("IsUrgent", false);
                        WorkflowContext.Current.UpdateWorkflowVariable("IsContinue", false);
                        fields["Status"] = CAWorkflowStatus.Rejected;
                        context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request");
                        SendEmail("Reject");
                    }
                    else
                    {
                        string levelType = "Contract Approval Limits";
                        double total = Convert.ToDouble(fields["Amount"].ToString());
                        var quota = WorkFlowUtil.GetQuota(fields["CurrManager"].ToString(), levelType);
                        if (total > quota)
                        {
                            if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase))
                            {
                                context.UpdateWorkflowVariable("IsUrgent", true);
                                fields["CashAdvanceType"] = "Normal";
                                string strNextTaskTitle1 = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString());
                                context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle1);
                            }
                            var manager = new NameCollection();
                            var managerEmp = WorkFlowUtil.GetNextApprover(fields["CurrManager"].ToString());
                            if (managerEmp == null && !WorkflowPerson.IsCEO(fields["CurrManager"].ToString()))
                            {
                                DisplayMessage("The manager is not set in the system.");
                                e.Cancel = true;
                                return;
                            }
                            manager.Add(managerEmp.UserAccount);
                            fields["CurrManager"] = managerEmp.UserAccount;
                            NameCollection wfCFO = WorkFlowUtil.GetUsersInGroup("wf_Finace_FC");
                            NameCollection wfFinaceConfirm = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
                            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
                            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTask, manager.JoinString(","));
                            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceFinaceApprove, wfCFO.JoinString(","));
                            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceFinaceConfirmEnd, wfFinaceConfirm.JoinString(","));
                            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceFinaceConfirm, wfFinaceConfirm.JoinString(","));
                            WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();
                            WorkflowContext.Current.UpdateWorkflowVariable("IsContinue", true);
                            WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(manager, Constants.CAModules.CashAdvanceRequest));
                        }
                        else
                        {
                            if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase))
                            {
                                context.UpdateWorkflowVariable("IsUrgent", true);
                                WorkflowContext.Current.UpdateWorkflowVariable("IsFinance", true);
                                fields["CashAdvanceType"] = "Normal";
                                string strNextTaskTitle2 = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString());
                                context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle2);
                            }
                            WorkflowContext.Current.UpdateWorkflowVariable("IsContinue", false);
                            NameCollection wfCFO1 = WorkFlowUtil.GetUsersInGroup("wf_Finace_FC");
                            string strNextTaskTitle = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString());
                            if (!wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Urgent")
                            {
                                NameCollection wfCFO2 = WorkFlowUtil.GetUsersInGroup("wf_Finace_FC");
                                WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfCFO2, Constants.CAModules.CashAdvanceRequest));
                            }
                            if (wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Urgent")
                            {
                                NameCollection wfFinaceConfirm1 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
                                WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm1, Constants.CAModules.CashAdvanceRequest));

                                context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle);
                            }
                            if (!wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Normal")
                            {
                                NameCollection wfFinaceConfirm2 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
                                WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm2, Constants.CAModules.CashAdvanceRequest));
                                context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle);
                            }
                            if (wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Normal")
                            {
                                NameCollection wfFinaceConfirm2 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
                                WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm2, Constants.CAModules.CashAdvanceRequest));
                                context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle);
                            }
                        }
                        fields["Status"] = CAWorkflowStatus.InProgress;
                    }
                    AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName);
                    break;
                case "FinaceConfirmEnd":
                    if (e.Action.Equals("Confirm", StringComparison.CurrentCultureIgnoreCase))
                    {
                        //if (PostCashAdvanceToSAP(fields))
                        //{
                        context.UpdateWorkflowVariable("PostSAPResult", true);
                        fields["Status"] = CAWorkflowStatus.Completed;
                        SendEmail("Approve");
                        //    this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post success! ');</script>");
                        //}
                        //else
                        //{
                        //    context.UpdateWorkflowVariable("PostSAPResult", false);
                        //    this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post failed! ');</script>");
                        //}
                        if (IsExistSAP(fields["WorkflowNumber"].ToString()))
                        {
                            AddCashAdvanceSAP(fields);
                        }
                    }
                    else
                    {
                        fields["Status"] = CAWorkflowStatus.Rejected;
                        context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request");
                        SendEmail("Reject");
                    }
                    AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName);
                    break;
                case "FinaceApprove":
                    if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase)
                        && this.DataForm1.CashAdvanceType != "Urgent")
                    {
                        fields["Status"] = CAWorkflowStatus.Rejected;
                        context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request");
                        SendEmail("Reject");
                    }
                    else
                    {
                        if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase))
                        {
                            fields["CashAdvanceType"] = "Normal";
                        }
                        NameCollection wfFinaceConfirm1 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
                        WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm1, Constants.CAModules.CashAdvanceRequest));
                        fields["Status"] = CAWorkflowStatus.InProgress;
                        string strNextTaskTitle = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString());
                        context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle);
                    }
                    AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName);
                    break;
                case "FinaceConfirm":
                    if (e.Action.Equals("Confirm", StringComparison.CurrentCultureIgnoreCase))
                    {
                        //if (PostCashAdvanceToSAP(fields))
                        //{
                        context.UpdateWorkflowVariable("PostSAPResult", true);
                        fields["Status"] = CAWorkflowStatus.Completed;
                        SendEmail("Approve");
                        //    this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post success! ');</script>");
                        //}
                        //else
                        //{
                        //    context.UpdateWorkflowVariable("PostSAPResult", false);
                        //    this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post failed! ');</script>");
                        //}
                        if (IsExistSAP(fields["WorkflowNumber"].ToString()))
                        {
                            AddCashAdvanceSAP(fields);
                        }
                    }
                    else
                    {
                        fields["Status"] = CAWorkflowStatus.Rejected;
                        context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request");
                        SendEmail("Reject");
                    }
                    AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName);
                    break;
                case "CompleteTask":
                    var managerEmp1 = WorkFlowUtil.GetNextApprover(CurrentEmployee);
                    NameCollection manager1 = new NameCollection();
                    manager1.Add(managerEmp1.UserAccount);
                    WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(manager1, Constants.CAModules.CashAdvanceRequest));
                    context.UpdateWorkflowVariable("IsContinue", true);
                    break;
            }
            WorkFlowUtil.UpdateWorkflowPath(context);
        }
Пример #9
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            string taskTitle = string.Empty;
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;

            //Check which button has been clicked
            var btn = sender as StartWorkflowButton;
            var departmentManagerTaskUsers = new NameCollection();
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                var msg = this.DataForm1.ValidateForSave();
                if (msg.IsNotNullOrWhitespace())
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }
                this.DataForm1.Update(); //Save the inputed data to datatable
                context.UpdateWorkflowVariable("IsSave", true);
                fields["Status"] = CAWorkflowStatus.Pending;
                decimal  totalCost = this.DataForm1.GetTotal();
                fields["TravelTotalCost"] = totalCost;
                context.UpdateWorkflowVariable("CompleteTaskTitle", "please complete Travel Request");
            }
            else
            {
                var msg = this.DataForm1.ValidateForSubmit();
                bool isCEO = false;

                if (msg.IsNotNullOrWhitespace())
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }
                this.DataForm1.Update(); //Save the inputed data to datatable
                context.UpdateWorkflowVariable("IsSave", false);
                fields["Status"] = CAWorkflowStatus.InProgress;

                #region Set users for workflow
                //Modify task users

                //If system can't find the manager, return null;
                var managerEmp = WorkFlowUtil.GetEmployeeApprover(this.DataForm1.Applicant);
                string manager = string.Empty;

                if (managerEmp == null)
                {
                    if (!IsCEO(this.DataForm1.Applicant.UserAccount))
                    {
                        DisplayMessage("The manager is not set in the system.");
                        e.Cancel = true;
                        return;
                    }
                    else
                    {
                        isCEO = true;
                        manager = this.DataForm1.Applicant.UserAccount;
                    }
                }
                else
                {
                    manager = managerEmp.UserAccount;
                }

                departmentManagerTaskUsers.Add(manager);

                //0830
                fields["Managers"] = manager;

                var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.TravelRequest);
                if (deleman != null)
                {
                    departmentManagerTaskUsers.Add(deleman);
                    //fields["Delegates"] = deleman;
                }
                context.UpdateWorkflowVariable("DepartmentHeadTaskUsers", departmentManagerTaskUsers);
                #endregion
                decimal totalCost = this.DataForm1.GetTotal();
                if (isCEO)
                {
                    context.UpdateWorkflowVariable("IsBusiness", false);
                    context.UpdateWorkflowVariable("Total", 0);
                }
                else
                {
                    context.UpdateWorkflowVariable("IsBusiness", this.DataForm1.ChosenFlight);
                    //context.UpdateWorkflowVariable("Total", totalCost);
                    context.UpdateWorkflowVariable("Total", 0);

                }
                fields["TravelTotalCost"] = totalCost;

                taskTitle = DataForm1.EnglishName + "'s Travel Request ";

                #region Set title for workflow
                //Modify task title
                context.UpdateWorkflowVariable("DepartmentHeadTaskTitle", taskTitle + "needs approval");
                context.UpdateWorkflowVariable("MTMTaskTitle", taskTitle + "needs approval");
                context.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval");
                context.UpdateWorkflowVariable("CEOTaskTitle", taskTitle + "needs approval");
                context.UpdateWorkflowVariable("ReceptionistTaskTitle", taskTitle + "needs confirm");
                #endregion
            }
            workflowNumber = this.CreateWorkFlowNumber();
            fields["WorkflowNumber"] = workflowNumber;

            Employee applicant = this.DataForm1.Applicant;
            fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty;
            fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount);
            fields["Department"] = DataForm1.Department;

            fields["Department"] = this.DataForm1.Department;
            fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose;
            var isBusiness = this.DataForm1.ChosenFlight;
            var isNextFlight = this.DataForm1.NextFlight;
            var isBookHotel = this.DataForm1.IsBookHotel;
            fields["IsBusiness"] = isBusiness;
            fields["IsNextFlight"] = isNextFlight;
            fields["IsBookHotel"] = !isBookHotel;
            var flightClass = string.Empty;
            if (isBusiness)
            {
                flightClass = "Business";
            }
            else if (isNextFlight)
            {
                flightClass = "Other available flight";
            }
            else
            {
                flightClass = "Economy";
            }
            fields["FlightClass"] = flightClass;

            TravelRequest2Common.SaveDetails(this.DataForm1, fields["WorkflowNumber"].AsString()); //Save request details to lists

            #region Set constants for workflow
            string authorityDepartment = ConfigurationManager.AppSettings["AuthorityDepartment"];
            string authorityMTM = ConfigurationManager.AppSettings["AuthorityMTM"];
            string authorityCFO = ConfigurationManager.AppSettings["AuthorityCFO"];
            context.UpdateWorkflowVariable("L1", Int32.Parse(authorityDepartment));
            context.UpdateWorkflowVariable("L2", Int32.Parse(authorityMTM));
            context.UpdateWorkflowVariable("L3", Int32.Parse(authorityCFO));
            #endregion

            #region Set page URL for workflow
            //Set page url
            var editURL = "/_Layouts/CA/WorkFlows/TravelRequest2/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/TravelRequest2/ApproveForm.aspx";
            context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            context.UpdateWorkflowVariable("DepartmentHeadTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("ReceptionistTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("CFOTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("CEOTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("MTMTaskFormURL", approveURL);
            #endregion

            if (!string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                SendMailForSubmit(departmentManagerTaskUsers);
            }
        }
Пример #10
0
        protected static XmlNode ConvertNode(XmlNode node, XmlDocument prom, XmlNode rootNode)
        {
            int        unknownCount      = 0;
            XmlNode    fieldsNode        = node.SelectSingleNode("Fields");
            XmlElement mainStructElement = prom.CreateElement("struct");

            XmlNode nameNode = node.SelectSingleNode("Name");
            //string structName = "Main";
            string structName = tagType;

            if (nameNode != null)
            {
                structName = FixStructName(nameNode.InnerText);
            }

            XmlAttribute structNameAttribute = prom.CreateAttribute("name");

            structNameAttribute.InnerText = structName;
            mainStructElement.Attributes.Append(structNameAttribute);

            NameCollection names = new NameCollection();

            foreach (XmlNode fieldNode in fieldsNode.SelectNodes("Field"))
            {
                NameElements elements = ParseControlName(fieldNode.SelectSingleNode("Name").InnerText);

                // Create a node in the output XML doc based on the type.
                XmlAttribute typeAttribute = prom.CreateAttribute("type");
                string       fieldType     = fieldNode.SelectSingleNode("Type").InnerText;

                // Ignore Terminator_X
                if (fieldType == "Terminator_X")
                {
                    continue;
                }

                // TODO: Create a section based on these.  Continue for now.
                if (fieldType == "Explanation")
                {
                    continue;
                }

                // Fix up the field name string.
                fieldType = ConvertDataTypeString(fieldType);

                XmlElement valueElement = prom.CreateElement("value");

                if (elements.name == "")
                {
                    //unknownCount++;
                    elements.name = "_unnamed" + unknownCount.ToString();
                    elements.name = "_unnamed"; //+ unknownCount.ToString();
                }

                int uses = names.Add(elements.name);
                if (uses > 1)
                {
                    elements.name += uses.ToString();
                }

                typeAttribute.InnerText = fieldType;
                valueElement.Attributes.Append(typeAttribute);

                XmlAttribute nameAttribute = prom.CreateAttribute("name");
                nameAttribute.InnerText = elements.name;
                valueElement.Attributes.Append(nameAttribute);

                if (elements.tooltip != null)
                {
                    XmlElement tooltipElement = prom.CreateElement("tooltip");
                    tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(elements.tooltip)));
                    valueElement.AppendChild(tooltipElement);
                }

                if (elements.blocksName)
                {
                    XmlAttribute blockNameAttribute = prom.CreateAttribute("blockname");
                    blockNameAttribute.Value = "true";
                    valueElement.Attributes.Append(blockNameAttribute);
                }

                // Based on the type, we may need to append other elements.
                if (fieldType == "Block")
                {
                    // Add the MaxElements tag.
                    XmlNode blockNode = fieldNode.SelectSingleNode("Block");
                    string  blockName = FixStructName(blockNode.SelectSingleNode("Name").InnerText);

                    XmlAttribute blockNameAttribute = prom.CreateAttribute("struct");
                    blockNameAttribute.InnerText = blockName;
                    valueElement.Attributes.Append(blockNameAttribute);

                    string       maxElements          = blockNode.SelectSingleNode("MaxElements").InnerText;
                    XmlAttribute maxElementsAttribute = prom.CreateAttribute("maxelements");
                    maxElementsAttribute.Value = maxElements;
                    valueElement.Attributes.Append(maxElementsAttribute);

                    // Create a new struct and add it to the current parent.
                    XmlNode newStructNode = ConvertNode(blockNode, prom, rootNode);
                    mainStructElement.AppendChild(newStructNode);
                }
                else if (fieldType == "TagReference")
                {
                    string      extensions = "";
                    XmlNodeList subFields  = fieldNode.SelectNodes("Fields/*");
                    foreach (XmlNode subFieldNode in subFields)
                    {
                        extensions += subFieldNode.InnerText + "|";
                    }
                    extensions = extensions.TrimEnd('|');

                    XmlAttribute extensionsAttribute = prom.CreateAttribute("extensions");
                    extensionsAttribute.Value = extensions;
                    valueElement.Attributes.Append(extensionsAttribute);
                }
                else if (fieldType == "ShortBlockIndex")
                {
                    XmlNode      blockNameNode      = fieldNode.SelectSingleNode("Block");
                    XmlAttribute blockNameAttribute = prom.CreateAttribute("block");
                    blockNameAttribute.Value = FixStructName(blockNameNode.InnerText);
                    valueElement.Attributes.Append(blockNameAttribute);
                }
                else if (fieldType == "Enum")
                {
                    XmlNodeList subFields = fieldNode.SelectNodes("Fields/*");
                    int         index     = 0;
                    foreach (XmlNode subFieldNode in subFields)
                    {
                        NameElements tmpElements        = ParseControlName(subFieldNode.InnerText);
                        XmlElement   itemElement        = prom.CreateElement("item");
                        XmlAttribute itemValueAttribute = prom.CreateAttribute("value");
                        itemValueAttribute.InnerText = index.ToString();
                        index++;
                        XmlAttribute itemNameAttribute = prom.CreateAttribute("name");
                        itemNameAttribute.InnerText = tmpElements.name;
                        itemElement.Attributes.Append(itemValueAttribute);
                        itemElement.Attributes.Append(itemNameAttribute);
                        if (tmpElements.tooltip != null)
                        {
                            XmlElement tooltipElement = prom.CreateElement("tooltip");
                            tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(elements.tooltip)));
                            itemElement.AppendChild(tooltipElement);
                        }
                        valueElement.AppendChild(itemElement);
                    }
                }
                else if (fieldType == "String")
                {
                    // Change the name, since String in c# is a bad choice.
                    fieldType = "FixedLengthString";
                    typeAttribute.InnerText = fieldType;
                }
                else if ((fieldType == "ByteFlags") || (fieldType == "WordFlags") || (fieldType == "LongFlags"))
                {
                    XmlAttribute flagsLengthAttribute = prom.CreateAttribute("length");
                    if (fieldType == "ByteFlags")
                    {
                        flagsLengthAttribute.InnerText = "1";
                    }
                    if (fieldType == "WordFlags")
                    {
                        flagsLengthAttribute.InnerText = "2";
                    }
                    if (fieldType == "LongFlags")
                    {
                        flagsLengthAttribute.InnerText = "4";
                    }
                    valueElement.Attributes.Append(flagsLengthAttribute);

                    // Manually override the name so that we can use the generic flags handler.
                    fieldType = "Flags";
                    typeAttribute.InnerText = fieldType;

                    XmlNodeList subFields = fieldNode.SelectNodes("Fields/*");
                    int         index     = 0;
                    foreach (XmlNode subFieldNode in subFields)
                    {
                        NameElements tmpElements       = ParseControlName(subFieldNode.InnerText);
                        XmlElement   bitElement        = prom.CreateElement("bit");
                        XmlAttribute bitIndexAttribute = prom.CreateAttribute("index");
                        bitIndexAttribute.InnerText = index.ToString();
                        index++;
                        XmlAttribute bitNameAttribute = prom.CreateAttribute("name");
                        bitNameAttribute.InnerText = tmpElements.name;
                        bitElement.Attributes.Append(bitIndexAttribute);
                        bitElement.Attributes.Append(bitNameAttribute);
                        if (tmpElements.tooltip != null)
                        {
                            XmlElement tooltipElement = prom.CreateElement("tooltip");
                            tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(tmpElements.tooltip)));
                            bitElement.AppendChild(tooltipElement);
                        }
                        valueElement.AppendChild(bitElement);
                    }
                }
                else if ((fieldType == "Pad") || (fieldType == "Skip"))
                {
                    string       length          = fieldNode.SelectSingleNode("Value").InnerText;
                    XmlAttribute lengthAttribute = prom.CreateAttribute("length");
                    lengthAttribute.Value = length;
                    valueElement.Attributes.Append(lengthAttribute);
                }
                else if (fieldType == "ArrayStart")
                {
                    // TODO: Revisit Arrays.
                    // Not sure how we're handling this stuff.
                    // Just adding in a comment for now to show where they are.
                    string     fieldCount = fieldNode.SelectSingleNode("Array/FieldCount").InnerText;
                    XmlComment comment    = prom.CreateComment("Array field goes here: Length=" + fieldCount);
                    valueElement.AppendChild(comment);
                }
                mainStructElement.AppendChild(valueElement);

                // Add to collection.
                FieldTypes.Add(fieldType);
            }
            return(mainStructElement);
        }
Пример #11
0
        private void Actions_ActionExecuting(object sender, CancelEventArgs e)
        {
            var msg = this.DataForm1.ValidateForSubmit();
            var isCEO = false;

            if (msg.IsNotNullOrWhitespace())
            {
                DisplayMessage(msg);
                e.Cancel = true;
                return;
            }

            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;

            fields["Status"] = CAWorkflowStatus.InProgress;

            this.DataForm1.Update(); //Save the inputed data to datatable
            context.UpdateWorkflowVariable("IsSave", false);
            fields["Status"] = CAWorkflowStatus.InProgress;

            var taskTitle = DataForm1.EnglishName + "'s Travel Request ";

            #region Set title for workflow
            //Modify task title
            context.UpdateWorkflowVariable("DepartmentHeadTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("MTMTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("CEOTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("ReceptionistTaskTitle", taskTitle + "needs confirm");
            #endregion

            #region Set users for workflow
            //Modify task users
            var departmentManagerTaskUsers = new NameCollection();

            //If system can't find the manager, return null;
            var managerEmp = WorkFlowUtil.GetEmployeeApprover(this.DataForm1.Applicant);
            string manager = string.Empty;
            if (managerEmp == null)
            {
                if (!IsCEO(this.DataForm1.Applicant.UserAccount))
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                else
                {
                    isCEO = true;
                    manager = this.DataForm1.Applicant.UserAccount;
                }
            }
            else
            {
                manager = managerEmp.UserAccount;
            }

            departmentManagerTaskUsers.Add(manager);

            //0830
            fields["Managers"] = manager;

            var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.TravelRequest);
            if (deleman != null)
            {
                departmentManagerTaskUsers.Add(deleman);
            }
            context.UpdateWorkflowVariable("DepartmentHeadTaskUsers", departmentManagerTaskUsers);
            #endregion

            Employee applicant = this.DataForm1.Applicant;
            fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty;
            fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount);
            fields["Department"] = DataForm1.Department;

            decimal totalCost = this.DataForm1.GetTotal();
            if (isCEO)
            {
                context.UpdateWorkflowVariable("IsBusiness", false);
                context.UpdateWorkflowVariable("Total", 0);
            }
            else
            {
                context.UpdateWorkflowVariable("IsBusiness", DataForm1.ChosenFlight);
                //context.UpdateWorkflowVariable("Total", totalCost);
                context.UpdateWorkflowVariable("Total", 0);
            }

            fields["TravelTotalCost"] = totalCost;
            fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose;
            var isBusiness = this.DataForm1.ChosenFlight ? "Yes" : "No";
            var isNextFlight = this.DataForm1.NextFlight ? "Yes" : "No";
            fields["IsBusiness"] = isBusiness;
            fields["IsNextFlight"] = isNextFlight;
            var flightClass = string.Empty;
            if (isBusiness.Equals("Yes", StringComparison.CurrentCultureIgnoreCase))
            {
                flightClass = "Business";
            }
            else if (isNextFlight.Equals("No", StringComparison.CurrentCultureIgnoreCase))
            {
                flightClass = "Other available flight";
            }
            else
            {
                flightClass = "Economy";
            }
            fields["FlightClass"] = flightClass;

            //Delete all draft items before saving
            TravelRequest2Common.DeleteAllDraftItems(fields["WorkflowNumber"].AsString());

            TravelRequest2Common.SaveDetails(this.DataForm1, fields["WorkflowNumber"].AsString()); //Save request details to lists

            SendMailForSubmit(departmentManagerTaskUsers);
        }
Пример #12
0
 internal static NameCollection GetTaskUsers(NameCollection manager, string managerAccount)
 {
     manager.Add(managerAccount);
     var deleman = WorkFlowUtil.GetDeleman(managerAccount, WorkFlowUtil.GetModuleIdByListName("Expatriate Benefit Claim Workflow"));
     if (deleman != null)
     {
         manager.Add(deleman);
     }
     return manager;
 }
Пример #13
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            var btn = sender as StartWorkflowButton;
            var taskTitle = CurrentEmployee.DisplayName + "'s Internal Order Creation ";
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true);
                WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.Pending;
            }
            else
            {
                if (!this.DataForm1.Validate())
                {
                    DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ? this.DataForm1.msg : "Please fill in all the necessary fields.");
                    e.Cancel = true;
                    return;
                }

                #region Set users for workflow
                //Modify task users
                var departmentManagerTaskUsers = new NameCollection();
                var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department);
                if (manager.IsNullOrWhitespace())
                {
                    DisplayMessage("The department manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase))
                {
                    var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee);
                    if (managerEmp == null)
                    {
                        DisplayMessage("The manager is not set in the system.");
                        e.Cancel = true;
                        return;
                    }
                    manager = managerEmp.UserAccount;
                }
                departmentManagerTaskUsers.Add(manager);

                var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.InternalOrderCreation);
                if (deleman != null)
                {
                    departmentManagerTaskUsers.Add(deleman);
                }
                WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", departmentManagerTaskUsers);
                #endregion

                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false);
                WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress;

            }
            WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.CreateWorkFlowNumber();
            WorkflowContext.Current.DataFields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")";
            WorkflowContext.Current.DataFields["Department"] = CurrentEmployee.Department;

            #region Set title for workflow
            //Modify task title
            WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskTitle", "please complete internal order creation");
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskTitle", taskTitle + "needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskTitle", taskTitle + "needs confirm");
            #endregion

            #region Set page URL for workflow
            //Set page url
            var editURL = "/_Layouts/CA/WorkFlows/CreationOrder/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/CreationOrder/ApproveForm.aspx";
            WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskFormURL", approveURL);
            WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskFormURL", approveURL);
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskFormURL", approveURL);
            #endregion
        }
Пример #14
0
        //Return task users object according to special group
        public static NameCollection GetTaskUsers(string group, string moduleId)
        {
            var taskUsers = new NameCollection();
            List<string> delemans = null;
            List<string> groupUsers = null;

            groupUsers = WorkFlowUtil.UserListInGroup(group);
            taskUsers.AddRange(groupUsers.ToArray());

            delemans = WorkFlowUtil.GetDelemans(groupUsers, moduleId);
            //if (delemans.Count > 0)
            //{
            //    taskUsers.AddRange(delemans.ToArray());
            //}
            foreach (var delegateAccount in delemans)
            {
                // Need to check whether the delegate account is valid.
                if (UserProfileUtil.GetEmployeeEx(delegateAccount) != null)
                {
                    taskUsers.Add(delegateAccount);
                }
            }

            return taskUsers;
        }
Пример #15
0
        void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            bool flag = IsCanSubmit();
            if (!flag)
            {
                ScriptManager.RegisterStartupScript(this,this.GetType(),"msg", "alert('You do not belong to Buying .');",true);
                e.Cancel = true;
                return;
            }
            StartWorkflowButton btn = sender as StartWorkflowButton;
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true);
                WorkflowContext.Current.DataFields["Flag"] = "Save";
                WorkflowContext.Current.DataFields["RequestStatus"] = "NonSubmit";
            }
            else
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false);
                WorkflowContext.Current.DataFields["Flag"] = "Submit";
                WorkflowContext.Current.DataFields["RequestStatus"] = "In Progress";
            }
            string strDepartment = DataForm1.Applicant.Department;
            //string strManager = @"ca\ztao";
            //string strDirector = @"ca\ztao";
            //string strHead = @"ca\ztao";
            //string strBBSTeam = @"ca\ztao";
            string strMondial = this.DataForm1.IsMondia;
            //组开始
            //List<string> lst = WorkFlowUtil.UserListInGroup("DivisionManagerGroup");
            string Head = WorkFlowUtil.GetEmployeeApproverInDept(DataForm1.Applicant, true, true).UserAccount;
            NameCollection ManagerUser = new NameCollection();
            NameCollection DirectorUser = new NameCollection();
            bool isHeadOne = false;
            bool isHeadTwo = false;
            if (!string.IsNullOrEmpty(Head))
            {
                isHeadOne = true;
                ManagerUser.Add(Head);
                Employee employee = WorkFlowUtil.GetEmployeeApproverInDept(WorkFlowUtil.GetEmployeeApproverInDept(DataForm1.Applicant, true, true), true, false);
                if (employee != null)
                {
                    string strhead = employee.UserAccount;
                    if (!string.IsNullOrEmpty(strhead))
                    {
                        isHeadTwo = true;
                        DirectorUser.Add(strhead);
                    }
                }
            }

            //lst = WorkFlowUtil.UserListInGroup("BuyingDirectorGroup");
            //DirectorUser.AddRange(lst.ToArray());
            //DirectorUser.Add(strDirector);
            NameCollection HeadUser = new NameCollection();
            List<string> lst = WorkFlowUtil.UserListInGroup("wf_CommercialHead");
            HeadUser.AddRange(lst.ToArray());
            //HeadUser.Add(strHeader);
            NameCollection BBSTeamUser = new NameCollection();
            lst = WorkFlowUtil.UserListInGroup("wf_BSSTeam");
            BBSTeamUser.AddRange(lst.ToArray());
            //BBSTeamUser.Add(strBBSTeam);
            //组结束
            WorkflowContext.Current.UpdateWorkflowVariable("Manager", ManagerUser);
            WorkflowContext.Current.UpdateWorkflowVariable("BuyDirector", DirectorUser);
            WorkflowContext.Current.UpdateWorkflowVariable("Header", HeadUser);
            WorkflowContext.Current.UpdateWorkflowVariable("BBSTeamAccount", BBSTeamUser);
            WorkflowContext.Current.UpdateWorkflowVariable("Mondial", strMondial);
            WorkflowContext.Current.UpdateWorkflowVariable("isHeadOne", isHeadOne);
            WorkflowContext.Current.UpdateWorkflowVariable("isHeadTwo", isHeadTwo);

            //修改TaskTitle
            WorkflowContext.Current.UpdateWorkflowVariable("ManagerTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("DirectorTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("HeaderTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("BBSTeamTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs confirm");
            WorkflowContext.Current.UpdateWorkflowVariable("TaskUpdateTitle", "Please complete New Trade Supplier Creation request for " + DataForm1.Applicant.DisplayName);
            //修改结束

            this.WorkFlowNumber = CreateWorkFlowNumber();
            WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.WorkFlowNumber;
            WorkflowContext.Current.DataFields["UserName"] = DataForm1.Applicant.UserAccount;
            WorkflowContext.Current.DataFields["Supplier"] = DataForm1.Supplier;
            WorkflowContext.Current.DataFields["SubDivision"] = DataForm1.SubDivision;
            WorkflowContext.Current.DataFields["IsMondial"] = DataForm1.IsMondia;
            //WorkflowContext.Current.DataFields["Upload"] = DataForm1.UploadFile;
            WorkflowContext.Current.DataFields["Status"] = DataForm1.Status;
        }
Пример #16
0
        internal static NameCollection GetTaskUsersByModule(NameCollection manager, string managerAccount, string module)
        {
            manager.Add(managerAccount);
            string moduleID = WorkFlowUtil.GetModuleIdByListName(module);
            var deleman = WorkFlowUtil.GetDeleman(managerAccount, moduleID);
            if (deleman != null){
                manager.Add(deleman);
            }

            return manager;
        }
Пример #17
0
        /// <summary>
        /// 更新工作流相关list中字段数据
        /// </summary>
        /// <param name="dpTaskUsers">部门领导</param>
        private void UpdateWorkFlowDataFields(NameCollection dpTaskUsers)
        {
            WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress;
            WorkflowContext.Current.DataFields["Manager"] = dpTaskUsers.Count > 0 ? dpTaskUsers[0] : "";

            var DepartmentManagerTaskUsers = new NameCollection();
            var FinanceAnalystTaskUsers = new NameCollection();
            var CFOTaskUsers = new NameCollection();

            DepartmentManagerTaskUsers.Add(UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department));

            List<string> lst = WorkFlowUtil.UserListInGroup("wf_CFO");
            CFOTaskUsers.AddRange(lst.ToArray());

            lst = WorkFlowUtil.UserListInGroup("wf_FinanceAnalyst_IO");
            FinanceAnalystTaskUsers.AddRange(lst.ToArray());
            //WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskUsers", FinanceAnalystTaskUsers);
            //WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskUsers", CFOTaskUsers);
            //WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", DepartmentManagerTaskUsers);

            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.InternalOrderMaintenanceDepartmentManagerTask, DepartmentManagerTaskUsers.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.InternalOrderMaintenanceCFOTask, CFOTaskUsers.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.InternalOrderMaintenanceFinanceAnalystTask, FinanceAnalystTaskUsers.JoinString(","));
            WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();
        }
Пример #18
0
        void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            StartWorkflowButton btnStart = sender as StartWorkflowButton;

            if (string.Equals(btnStart.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true);
                DataForm1.Update();
                WorkflowContext.Current.DataFields["Status"] = "NonSubmit";
            }
            else
            {
                string msg = DataForm1.Validate();
                if (!string.IsNullOrEmpty(msg))
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }
                WorkflowContext.Current.DataFields["Status"] = "In Progress";
            }

            NameCollection buyingUsers = new NameCollection();
            buyingUsers.Add(DataForm1.BuyingUser);
            WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers);
            WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveTaskTitle", DataForm1.Applicant.DisplayName + "'s re-ticketing request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHead", WorkFlowUtil.GetUserInGroup("wf_BSSHead"));
            List <string>  strGroupUser = WorkFlowUtil.UserListInGroup("wf_Finance_SR");
            if (strGroupUser.Count == 0)
            {
                //Don
                DisplayMessage("Unable to submit the application. There is no user in wf_Finance_SR group. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }
            NameCollection GroupUsers = new NameCollection();
            GroupUsers.AddRange(strGroupUser.ToArray());
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceTaskUsers", GroupUsers);
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTaskTitle", DataForm1.Applicant.DisplayName + "'s re-ticketing request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceUserTaskTitle", "Please complete re-ticketing request for " + DataForm1.Applicant.DisplayName);
            this.WorkFlowNumber = CreateWorkFlowNumber();
            WorkflowContext.Current.DataFields["WorkflowNumber"] = this.WorkFlowNumber;
            WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser;
            DataForm1.WorkflowNumber = this.WorkFlowNumber;
            WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit();
        }
Пример #19
0
        //Save or Submit
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            string taskTitle = CurrentEmployee.DisplayName + "'s Internal Order Maintenance ";

            var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department);
            if (manager.IsNullOrWhitespace())
            {
                DisplayMessage("The department manager is not set in the system.");
                e.Cancel = true;
                return;
            }
            else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase))
            {
                var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                manager = managerEmp.UserAccount;
            }
            //Check which button has been clicked
            var btn = sender as StartWorkflowButton;
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                if (!Validate(e))
                {
                    return;
                }

                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true);
                WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.Pending;
            }
            else
            {
                if (!Validate(e))
                {
                    return;
                }

                double lastValue = this.DataForm1.GetLastValue(WorkflowContext.Current.DataFields["Order Number"] as string);
                WorkflowContext.Current.DataFields["Last Value"] = lastValue;
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false);
                WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress;
            }
            WorkflowContext.Current.DataFields["WorkFlowNumber"] = CreateWorkflowNumber();
            WorkflowContext.Current.DataFields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")";
            WorkflowContext.Current.DataFields["Department"] = CurrentEmployee.Department;

            #region Set title for workflow
            //Modify task title
            WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskTitle", "please complete internal order maintenance");
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskTitle", taskTitle + "needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskTitle", taskTitle + "needs confirm");
            #endregion

            #region Set users for workflow
            //Modify task users
            var DepartmentManagerTaskUsers = new NameCollection();
            var FinanceAnalystTaskUsers = new NameCollection();
            var CFOTaskUsers = new NameCollection();

            DepartmentManagerTaskUsers.Add(manager);

            List<string> lst = WorkFlowUtil.UserListInGroup("wf_CFO");
            CFOTaskUsers.AddRange(lst.ToArray());

            lst = WorkFlowUtil.UserListInGroup("wf_FinanceAnalyst_IO");
            FinanceAnalystTaskUsers.AddRange(lst.ToArray());
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskUsers", FinanceAnalystTaskUsers);
            WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskUsers", CFOTaskUsers);
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", DepartmentManagerTaskUsers);
            #endregion

            #region Set page URL for workflow
            //Set page url
            var editURL = "/_Layouts/CA/WorkFlows/InternalOrderMaintenance/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/InternalOrderMaintenance/ApproveForm.aspx";
            WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskFormURL", approveURL);
            WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskFormURL", approveURL);
            WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskFormURL", approveURL);
            #endregion
        }
Пример #20
0
        private static void StartPOWorkflow(SPList list, List<SPListItem> items)
        {
            if (items.Count == 0)
            {
                return;
            }

            SPSite site = SPContext.Current.Site;
            var wfName = ConfigurationManager.AppSettings["POWFName"];
            if (wfName.IsNullOrWhitespace())
            {
                CommonUtil.logError("PO Workflow name is set in web.config. Please check it first whether key \"POWFName\" is set.");
                return;
            }
            var currUser = SPContext.Current.Web.CurrentUser.LoginName;
            NameCollection checkManager = new NameCollection();

            checkManager.Add(SPContext.Current.Web.CurrentUser.LoginName);
            var deleman = PurchaseRequestCommon.GetDelemanForPO(currUser); //查找代理人
            if (deleman != null)
            {
                checkManager.Add(deleman);
            }

            //启动工作流
            foreach (var item in items)
            {
                WorkflowVariableValues vs = new WorkflowVariableValues();
                vs["CompleteTaskFormURL"] = "/_Layouts/CA/WorkFlows/PurchaseOrder/EditForm.aspx";
                vs["CompleteTaskTitle"] = item["WorkflowNumber"].AsString() + ": Please complete the PO";
                vs["CompleteTaskUsers"] = checkManager;
                vs["IsSkip"] = item["IsSkipChop"];//纸袋不用盖章

                var eventData = SerializeUtil.Serialize(vs);

                var wfAss = list.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture);
                SPWorkflow wf = site.WorkflowManager.StartWorkflow(item, wfAss, eventData);
                WorkFlowUtil.UpdateWorkflowPath(item, eventData);
            }
        }
Пример #21
0
        void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            StartWorkflowButton btn = sender as StartWorkflowButton;
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true);
                WorkflowContext.Current.DataFields["Flag"] = "Save";
                WorkflowContext.Current.DataFields["Status"] = "NonSubmit";
            }
            else
            {
                string msg = DataForm1.Validate;
                if (!string.IsNullOrEmpty(msg))
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false);
                WorkflowContext.Current.DataFields["Flag"] = "Submit";
                WorkflowContext.Current.DataFields["Status"] = "In Progress";

                //string strDepartment = DataForm1.Applicant.Department;
                //string strManager = @"ca\ztao";
                //string strDirector = @"ca\ztao";
                //string strHeader = @"ca\ztao";
                //string strBBSTeam = @"ca\ztao";

                //组开始
                List<string> lst = WorkFlowUtil.UserListInGroup("wf_IT");
                if (lst.Count == 0)
                {
                    //Don
                    DisplayMessage("Unable to submit the application. There is no user in wf_IT group. Please contact IT for further help.");
                    e.Cancel = true;
                    return;
                }
                NameCollection ItMemberUser = new NameCollection();
                ItMemberUser.AddRange(lst.ToArray());
                //ItMemberUser.Add(strManager);

                //string department = string.Empty;
                //if (DataForm1.Department.Contains(';'))
                //    department = DataForm1.Department.Substring(0, DataForm1.Department.IndexOf(';') + 1);
                //else
                //    department = DataForm1.Department;

                Employee approver = WorkFlowUtil.GetEmployeeApprover(DataForm1.Applicant);
                if (approver == null)
                {
                    //Don
                    DisplayMessage("Unable to find an approver for the applicant. Please contact IT for further help.");
                    e.Cancel = true;
                    return;
                }

                NameCollection DepartHeadUser = new NameCollection();
                //lst = WorkFlowUtil.UserListInGroup("DepartmentHeadGroup");
                //DepartHeadUser.AddRange(lst.ToArray());
                DepartHeadUser.Add(approver.UserAccount);
                NameCollection ITHeadUser = new NameCollection();
                string strHRHeadAccount = UserProfileUtil.GetDepartmentManager("it");
                //lst = WorkFlowUtil.UserListInGroup("ITHead");
                //ITHeadUser.AddRange(lst.ToArray());
                ITHeadUser.Add(strHRHeadAccount);
                NameCollection CFOUser = new NameCollection();
                lst = WorkFlowUtil.UserListInGroup("wf_CFO");
                CFOUser.AddRange(lst.ToArray());
                //FOCOUser.Add(strBBSTeam);
                //组结束
                WorkflowContext.Current.UpdateWorkflowVariable("ITMemberAccounts", ItMemberUser);
                WorkflowContext.Current.UpdateWorkflowVariable("DepartHeaderAccounts", DepartHeadUser);
                WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderAccounts", ITHeadUser);
                WorkflowContext.Current.UpdateWorkflowVariable("FOCOAccounts", CFOUser);
                WorkflowContext.Current.UpdateWorkflowVariable("IsFOCO", false);
            }

            //修改TaskTitle
            WorkflowContext.Current.UpdateWorkflowVariable("ITMemberTitle", DataForm1.Applicant.DisplayName + "'s IT request needs confirm");
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("FOCOTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("UpdateTaskTitle", "Please complete IT request for " + DataForm1.Applicant.DisplayName);
            //修改结束

            this.WorkFlowNumber = CreateWorkFlowNumber();
            WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.WorkFlowNumber;
            WorkflowContext.Current.DataFields["Name"] = DataForm1.Name;
            WorkflowContext.Current.DataFields["Department"] = DataForm1.Department;
            WorkflowContext.Current.DataFields["FOCOApprove"] = DataForm1.IsFOCO;
            WorkflowContext.Current.DataFields["ApplyDate"] = DataForm1.ApplyDate;
            WorkflowContext.Current.DataFields["AppliedUser"] = this.DataForm1.Applicant.UserAccount;
            WorkflowContext.Current.DataFields["ReasonforRequest"] = this.DataForm1.ReasonforRequest;
        }
Пример #22
0
        private void UpdateWorkflow(QuickFlow.UI.Controls.ActionEventArgs e)
        {
            Employee approver = WorkFlowUtil.GetEmployeeApprover(DataForm1.Applicant);
            if (approver == null)
            {
                DisplayMessage("Unable to find an approver for the applicant. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }
            List<string> list = WorkFlowUtil.UserListInGroup("wf_Reception");
            if (list.Count > 1)
            {
                DisplayMessage("Unable to submit the application. More than one receptionist is defined. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }

            string deptHead = approver.UserAccount;
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHead", deptHead);

            NameCollection names = new NameCollection();
            if (DataForm1.radiobuttonYes && DataForm1.RadioYes)
            {
                names.AddRange(list.ToArray());
                WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                WorkflowContext.Current.DataFields["IsTheSame"] = "yes";
            }
            else if (DataForm1.radiobuttonYes && DataForm1.RadioNo)
            {
                if (IsReceptionist(DataForm1.btApplicant1))
                {
                    names.AddRange(list.ToArray());
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "yes";
                }
                else
                {
                    names.AddRange(list.ToArray());
                    names.Add(DataForm1.btApplicant1);
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "no";
                }
            }
            else if (DataForm1.radiobuttonYes && DataForm1.RadioDisplay)
            {

                    names.AddRange(list.ToArray());
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "yes";

            }
            else if (DataForm1.radiobuttonNO && DataForm1.RadioYes)
            {
                if (IsReceptionist(DataForm1.btUser1))
                {
                    names.AddRange(list.ToArray());
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "yes";
                }
                else
                {
                    names.AddRange(list.ToArray());
                    names.Add(DataForm1.btUser1);
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "no";
                }
            }
            else if (DataForm1.radiobuttonNO && DataForm1.RadioNo)
            {
                if (DataForm1.btUser1.Equals(DataForm1.btApplicant1, StringComparison.CurrentCultureIgnoreCase))
                {
                    names.Add(DataForm1.btUser1);
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "yes";
                }
                else
                {
                    names.Add(DataForm1.btUser1);
                    names.Add(DataForm1.btApplicant1);
                    WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                    WorkflowContext.Current.DataFields["IsTheSame"] = "no";
                }
            }
            else if (DataForm1.radiobuttonNO && DataForm1.RadioDisplay)
            {
                names.Add(DataForm1.btUser1);
                WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
                WorkflowContext.Current.DataFields["IsTheSame"] = "yes";
            }

            //List<string> strGroupUsers = WorkFlowUtil.UserListInGroup("wf_Reception");
            //NameCollection names = new NameCollection();
            //names.AddRange(strGroupUsers.ToArray());
            //WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names);
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTaskTitle", DataForm1.Applicant.DisplayName + "'s travel request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistTaskTitle", "Please complete travel request for " + DataForm1.Applicant.DisplayName);
            WorkflowContext.Current.DataFields["UserName"] = DataForm1.Applicant.UserAccount;
            WorkflowContext.Current.DataFields["EnglishName"] = DataForm1.Applicant.DisplayName;
            WorkflowContext.Current.DataFields["Department"] = DataForm1.Applicant.Department;
            WorkflowContext.Current.DataFields["JobTitle"] = DataForm1.Applicant.Title;
            WorkflowContext.Current.DataFields["AirNotes"] = DataForm1.AirNotes;
            WorkflowContext.Current.DataFields["HotelNotes"] = DataForm1.HotelNotes;

            bool bol = DataForm1.RadioYes;
            WorkflowContext.Current.DataFields["RadioYes"] = bol.ToString();

            if (DataForm1.radiobuttonNO)
            {
                WorkflowContext.Current.DataFields["btUser"] = DataForm1.btUser1;
            }
            else
            {
                WorkflowContext.Current.DataFields["btUser"] = string.Empty;
            }

            if (DataForm1.RadioNo)
            {
                WorkflowContext.Current.DataFields["btApplicant"] = DataForm1.btApplicant1;
            }
            else
            {
                WorkflowContext.Current.DataFields["btApplicant"] = string.Empty;
            }

            WorkflowContext.Current.DataFields["Status"] = "InProgress";
        }
Пример #23
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            string url = Request.UrlReferrer.ToString();
            if (!this.DataForm.SubmitStatus)
            {
                Response.Write("<script type=\"text/javascript\">alert('You are not in Buying Department .');window.location = '" + url + "';</script>");
                Response.End();
                e.Cancel = true;
                return;
            }
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            var btn = sender as StartWorkflowButton;
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                context.UpdateWorkflowVariable("IsSave", true);
                context.DataFields["Status"] = CAWorkflowStatus.Pending;
            }
            else
            {
                #region Set users for workflow
                Employee manager = WorkFlowUtil.GetApproverByLevelPAD(this.DataForm.Applicant);
                if (null == manager)
                {
                    Response.Write("<script type=\"text/javascript\">alert('The init error about applicant’s manager in the system.');window.location = '" + url + "';</script>");
                    Response.End();
                    e.Cancel = true;
                    return;
                }
                NameCollection DMMTask = new NameCollection();
                DMMTask.Add(manager.UserAccount);
                fields["CurrManager"] = manager.UserAccount;

                NameCollection wf_NTSC_QM = new NameCollection();
                //NameCollection wf_NTSC_QAD = new NameCollection();
                NameCollection wf_NTSC_SCM = new NameCollection();
                NameCollection wf_NTSC_SCMM = new NameCollection();
                List<string> qm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_QM);
                //List<string> qad = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_QAD);
                List<string> scm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_SCM);
                List<string> scmm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_SCMM);
                System.Text.StringBuilder group = new System.Text.StringBuilder();
                if (qm.Count == 0)
                {
                    group.Append(" wf_NTSC_QM ");
                }
                //if (qad.Count == 0)
                //{
                //    group.Append(" wf_NTSC_QAD ");
                //}
                if (scm.Count == 0)
                {
                    group.Append(" wf_NTSC_SCM ");
                }
                if (scmm.Count == 0)
                {
                    group.Append(" wf_NTSC_SCMM ");
                }
                if (scm.Count == 0 || scmm.Count == 0 || qm.Count == 0)
                {
                    Response.Write("<script type=\"text/javascript\">alert('The init error about WorkflowPerson in the " + group.ToString() + "');window.location = '" + url + "';</script>");
                    Response.End();
                    e.Cancel = true;
                    return;
                }
                wf_NTSC_QM.AddRange(qm.ToArray());
                //wf_NTSC_QAD.AddRange(qad.ToArray());
                wf_NTSC_SCM.AddRange(scm.ToArray());
                wf_NTSC_SCMM.AddRange(scmm.ToArray());

                System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
                strStepAndUsers.AppendFormat("{0}:{1};", "DMMTask", DMMTask.JoinString(","));
                strStepAndUsers.AppendFormat("{0}:{1};", "QMTask", wf_NTSC_QM.JoinString(","));
                //strStepAndUsers.AppendFormat("{0}:{1};", "QADTask", wf_NTSC_QAD.JoinString(","));
                strStepAndUsers.AppendFormat("{0}:{1};", "SCMTask", wf_NTSC_SCM.JoinString(","));
                strStepAndUsers.AppendFormat("{0}:{1};", "SCMConfirmTask", wf_NTSC_SCMM.JoinString(","));
                fields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

                context.UpdateWorkflowVariable("NextApproveTaskUsers", GetDelemanNameCollection(DMMTask, WorkFlowUtil.GetModuleIdByListName("New Production Unit Creation")));
                #endregion
                context.UpdateWorkflowVariable("IsSave", false);
                context.DataFields["Status"] = CAWorkflowStatus.InProgress;
            }
            #region Save the data
            string workflowNumber = CreateWorkflowNumber();
            fields["WorkFlowNumber"] = workflowNumber;
            fields["Applicant"] = this.DataForm.Applicant.UserAccount;
            fields["Department"] = this.DataForm.Applicant.Department;
            fields["ApplicantSPUser"] = NewProductionUnitCreation.EnsureUser(this.DataForm.Applicant.UserAccount);
            fields["SupplierName"] = this.DataForm.SupplierName;
            fields["SubDivision"] = this.DataForm.Applicant.Department;
            fields["SupplierNo"] = this.DataForm.SupplierNo;
            fields["PUNO"] = this.DataForm.PUNO;
            fields["ProductionUnitName"] = this.DataForm.ProductionUnitName;
            fields["IsMondial"] = this.DataForm.IsMondial == "Yes" ? true : false;
            fields["Reason"] = this.DataForm.Reason;
            #endregion
            #region Set title for workflow
            //string taskTitle = string.Format("{0} {1} {2}'s New Production Unit Creation needs approval"
            //                                             , workflowNumber
            //                                             , this.DataForm.SupplierName
            //                                             , this.DataForm.Applicant.UserAccount);
            string taskTitle = string.Format("{0} {1}'s New Production Unit Creation needs approval"
                                                        , workflowNumber
                                                        , this.DataForm.Applicant.UserAccount);
            context.UpdateWorkflowVariable("CompleteTaskTitle", "Please complete New Production Unit Creation");
            context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle);
            #endregion
            #region Set page URL for workflow
            var editURL = "/_Layouts/CA/WorkFlows/NewProductionUnitCreation/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/NewProductionUnitCreation/ApproveForm.aspx";
            context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL);
            #endregion
            SendEmail("Submit");
            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
Пример #24
0
        /// <summary>
        /// Cria um valor compatível para o tipo indicado com base no conteúdo
        /// do modelo deserializado.
        /// </summary>
        /// <param name="type">O tipo do dado esperado.</param>
        /// <param name="node">O modelo deserializado.</param>
        /// <returns>O valor obtido da compatibilização.</returns>
        private object CreateCompatibleValue(Type type, NodeModel node)
        {
            if (node == null)
            {
                return(null);
            }

            if (type == typeof(PropertyCollection))
            {
                return((PropertyCollection)CreateCompatibleValue(typeof(object), node));
            }

            if (type == typeof(NameCollection))
            {
                var target = new NameCollection();
                foreach (var item in node.ChildValues())
                {
                    target.Add(item.Value.ToString());
                }
                return(target);
            }

            if (type == typeof(FieldCollection))
            {
                var target = new FieldCollection();
                foreach (var @object in node.ChildObjects())
                {
                    var field = new Field();
                    CopyNodeProperties(@object, field);
                    target.Add(field);
                }
                return(target);
            }

            if (type == typeof(LinkCollection))
            {
                var target = new LinkCollection();
                foreach (var item in node.Children())
                {
                    var link = new Link();
                    CopyNodeProperties(item, link);
                    target.Add(link);
                }
                return(target);
            }

            if (type == typeof(EntityActionCollection))
            {
                var target = new EntityActionCollection();
                foreach (var item in node.Children())
                {
                    var action = new EntityAction();
                    CopyNodeProperties(item, action);
                    target.Add(action);
                }
                return(target);
            }

            if (type == typeof(EntityCollection))
            {
                var target = new EntityCollection();
                foreach (var item in node.Children())
                {
                    var entity = new Entity();
                    CopyNodeProperties(item, entity);
                    target.Add(entity);
                }
                return(target);
            }

            if (type == typeof(CaseVariantString))
            {
                var text = (node as ValueModel)?.Value.ToString();
                return(text.ChangeCase(TextCase.PascalCase));
            }

            return(CreateCompatibleValue(node));
        }
Пример #25
0
        void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
        {
            if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.DataFields["Status"] = "Cancelled";
                return;
            }
            string msg = DataForm1.Validate();
            if (!string.IsNullOrEmpty(msg))
            {
                DisplayMessage(msg);
                e.Cancel = true;
                return;
            }

            NameCollection buyingUsers = new NameCollection();
            buyingUsers.Add(DataForm1.BuyingUser);
               // WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers);
            WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierReticketingBuyingApproveUsers, GetDelemanNameCollection(buyingUsers, Constants.CAModules.SupplierReTicketingCharge));

            WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser;
            WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit(); ;
            if (!string.IsNullOrEmpty(ctfComments.Value.ToString()))
            {
                WorkflowContext.Current.DataFields["Comments"] = string.Empty;
            }

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
Пример #26
0
        void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            StartWorkflowButton btn = sender as StartWorkflowButton;
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true);
                WorkflowContext.Current.DataFields["Flag"] = "Save";
                WorkflowContext.Current.DataFields["Status"] = "NonSubmit";
            }
            else
            {
                WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false);
                WorkflowContext.Current.DataFields["Flag"] = "Submit";
                WorkflowContext.Current.DataFields["Status"] = "In Progress";
            }
            //string strDepartment = DataForm1.Applicant.Department;
            //string strConstructionHeader = @"ca\ztao";
            //string strConstruction = @"ca\ztao";
            //string strDepartmentHeader = @"ca\ztao";
            //string strStoreOperationTeam = @"ca\ztao";
            //string strCFO = @"ca\ztao";

            //组开始
            string strConstructionHeadAccount = UserProfileUtil.GetDepartmentManager("Construction");
            //List<string> lst = WorkFlowUtil.UserListInGroup("ConstructionHeadGroup");
            NameCollection ConstructionHead = new NameCollection();
            //ConstructionHead.AddRange(lst.ToArray());
            ConstructionHead.Add(strConstructionHeadAccount);
            //ConstructionHead.Add(@"ca\caix");

            NameCollection ConstructionUser = new NameCollection();
            List<string> lst = WorkFlowUtil.UserListInGroup("wf_Construction");
            ConstructionUser.AddRange(lst.ToArray());
            //ConstructionUser.Add(strConstruction);

            string department = string.Empty;
            if (DataForm1.Applicant.Department.Contains(';'))
                department = DataForm1.Applicant.Department.Substring(0, DataForm1.Applicant.Department.IndexOf(';')+1);
            else
                department = DataForm1.Applicant.Department;

            string departmentManager = UserProfileUtil.GetDepartmentManager(department);
            if (string.IsNullOrEmpty(departmentManager))
            {
                //Don
                DisplayMessage("Unable to submit the application. There is no department manager defined. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }
            NameCollection DepartmentHead = new NameCollection();
            //lst = WorkFlowUtil.UserListInGroup("DepartmentHeadGroup");
            //DepartmentHead.AddRange(lst.ToArray());
            //DepartmentHead.Add(strDepartmentHeader);
            DepartmentHead.Add(departmentManager);

            NameCollection StoreOperationTeamUser = new NameCollection();
            try
            {
                //lst = WorkFlowUtil.UserListInGroup("wf_StoreOperationTeam");
                //StoreOperationTeamUser.AddRange(lst.ToArray());
                //SPListItemCollection coll = GetSPColl("Stores", "Cost Center", DataForm1.CostCenter, 1);
                //StoreOperationTeamUser.Add(new SPFieldLookupValue(coll[0]["Owner"] + "").LookupValue);
                string strStoreOperations = UserProfileUtil.GetDepartmentManager("Store Operations");
                StoreOperationTeamUser.Add(strStoreOperations);
            }
            catch { }

            //StoreOperationTeamUser.Add(strStoreOperationTeam);

            NameCollection CFOUser = new NameCollection();
            lst = WorkFlowUtil.UserListInGroup("wf_CFO");
            CFOUser.AddRange(lst.ToArray());
            //CFOUser.Add(strCFO);
            //组结束
            WorkflowContext.Current.UpdateWorkflowVariable("ConstructionHeadAccount", ConstructionHead);
            WorkflowContext.Current.UpdateWorkflowVariable("ConstructionAccount", ConstructionUser);
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadAccount", DepartmentHead);
            WorkflowContext.Current.UpdateWorkflowVariable("StoreOperationTeamAccount", StoreOperationTeamUser);
            WorkflowContext.Current.UpdateWorkflowVariable("CFOAccount", CFOUser);
            WorkflowContext.Current.UpdateWorkflowVariable("isSameUser", Common.IsSameUser(DepartmentHead, StoreOperationTeamUser, CFOUser));
            WorkflowContext.Current.UpdateWorkflowVariable("IsFixedAsset", DataForm1.RequestType == "Capex" ? "FixedAsset" : DataForm1.RequestType);

            //修改TaskTitle
            WorkflowContext.Current.UpdateWorkflowVariable("ConstructionHeadTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("ConstructionTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs supplies other information");
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("StoreOperationTeamTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("CFOTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval");
            WorkflowContext.Current.UpdateWorkflowVariable("UpdateTaskTitle", "Please complete construction purchasing request for " + DataForm1.Applicant.DisplayName);
            WorkflowContext.Current.UpdateWorkflowVariable("PlacesTheOrderTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs places the order");
            WorkflowContext.Current.UpdateWorkflowVariable("OrderHandoverTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs order handover");
            //修改结束

            this.WorkFlowNumber = CreateWorkFlowNumber();
            WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.WorkFlowNumber;
            WorkflowContext.Current.DataFields["ApplyDept"] = DataForm1.Applicant.Department;
            WorkflowContext.Current.DataFields["ApplyDate"] = DataForm1.ApplyDate;
            WorkflowContext.Current.DataFields["ApplyUser"] = this.DataForm1.Applicant.UserAccount;
            WorkflowContext.Current.DataFields["RequestType"] = this.DataForm1.RequestType;
            WorkflowContext.Current.DataFields["BudgetApproved"] = this.DataForm1.BudgetApproved;
            WorkflowContext.Current.DataFields["CurrencyType"] = this.DataForm1.CurrencyType;
            WorkflowContext.Current.DataFields["CostCenter"] = this.DataForm1.CostCenter;
            WorkflowContext.Current.DataFields["BudgetValue"] = this.DataForm1.BudgetValue;
            WorkflowContext.Current.DataFields["ProduceandDeliveryDate"] = this.DataForm1.ProduceandDeliveryDate;

            WorkflowContext.Current.DataFields["Installation"] = this.DataForm1.Installation;
            WorkflowContext.Current.DataFields["Freight"] = this.DataForm1.Freight;
            WorkflowContext.Current.DataFields["Packaging"] = this.DataForm1.Packaging;
        }
Пример #27
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            string taskTitle = CurrentEmployee.DisplayName + "'s Purchase Request ";
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            bool isHO = PurchaseRequestCommon.IsHO(CurrentEmployee.UserAccount);
            var formType = DataForm1.FormType;
            var storePurpose = DataForm1.StorePurposeType;

            //Check which button has been clicked
            StartWorkflowButton btn = sender as StartWorkflowButton;
            DataTable dtPRData= DataForm1.dtGetPRData();
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                if (!this.DataForm1.ValidateForSave())
                {
                    DisplayMessage(DataForm1.MSG);
                    e.Cancel = true;
                    DataForm1.RequestId = fields["WorkflowNumber"].AsString();
                    DataForm1.RebindItems(dtPRData);
                    return;
                }

                this.DataForm1.Update(); //验证通过更新DataTable

                #region Check QuarterlyOrder Count
                    bool isQuartOrderOK= CheckQuartOrder(isHO, storePurpose);
                    if (!isQuartOrderOK)
                    {
                        e.Cancel = true;
                        return;
                    }
                #endregion

                context.UpdateWorkflowVariable("IsSave", true);
                context.DataFields["Status"] = CAWorkflowStatus.Pending;
            }
            else
            {
                if (!this.DataForm1.Validate())
                {
                    DisplayMessage(DataForm1.MSG);
                    e.Cancel = true;
                    DataForm1.RequestId = fields["WorkflowNumber"].AsString();
                    DataForm1.RebindItems(dtPRData);
                    return;
                }

                this.DataForm1.Update(); //验证通过更新DataTable

                #region Check QuarterlyOrder Count
                bool isQuartOrderOK = CheckQuartOrder(isHO, storePurpose);
                if (!isQuartOrderOK)
                {
                    e.Cancel = true;
                    return;
                }
                //if (!isHO && !PurchaseRequestCommon.IsLegalStoreRequest(storePurpose, CurrentEmployee.UserAccount))//是门店并且不合法的季度订单
                //{
                //    DataForm1.UpdateItemForQuartOrder();
                //    DisplayMessage("Can not request quarterly order in current month or you have requested it.");
                //    e.Cancel = true;
                //    return;
                //}
                #endregion

                #region Set users for workflow
                var managerEmp = WorkFlowUtil.GetNextConstructionApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                if (isHO)
                {
                    var manager = new NameCollection();
                    manager.Add(managerEmp.UserAccount);
                    var deleman = PurchaseRequestCommon.GetDeleman(managerEmp.UserAccount); //查找代理人
                    if (deleman != null)
                    {
                        manager.Add(deleman);
                    }
                    context.UpdateWorkflowVariable("ApproveTaskUsers", manager);
                }
                else
                {
                    string taskAssignType = DataForm1.GetTaskAssignType(dtPRData);// TaskAssignType;
                    SPListItemCollection lc = null;
                    lc = WorkFlowUtil.GetCollectionByColumn("AssignType", taskAssignType, "PurchaseRequestTaskAssign");

                    NameCollection checkManager = new NameCollection();
                    Employee emp = null;
                    foreach (SPListItem item in lc)
                    {
                        emp = UserProfileUtil.GetEmployeeEx(item["TaskChecker"].ToString());
                        if (emp != null)
                        {
                            checkManager.Add(emp.UserAccount);
                        }
                    }

                    if (checkManager.Count == 0)
                    {
                        DisplayMessage("The HO checkers are not set in the system. Please contact IT for further help.");
                        e.Cancel = true;
                        return;
                    }

                    //Modify task users
                    context.UpdateWorkflowVariable("CheckTaskUsers", checkManager);
                }

                fields["CurrManager"] = managerEmp.UserAccount;
                #endregion

                context.UpdateWorkflowVariable("IsSave", false);
                context.DataFields["Status"] = CAWorkflowStatus.InProgress;

                #region SkipApproveCondition
                bool isSkipApprove = false;
                //若门店申请,则只能选择StoreRequest;若HO申请,则可以选择除StoreRequest外的其他三项
                //即PaperBagRequest和HORequest肯定是HO用户的申请
                if (DataForm1.FormType == "HO")
                {
                    isSkipApprove = DataForm1.HOPurposeType.Equals("Department");//当HO代其他部门申请时,则无需PR工作流审批
                }

                /*switch (DataForm1.FormType)
                {
                    case "PaperBag":
                        isSkipApprove = true;//纸袋已线下审批,无需PR工作流再次审批
                        break;
                    case "HO":
                        isSkipApprove = DataForm1.HOPurposeType.Equals("Department");//当HO代其他部门申请时,则无需PR工作流审批
                        break;
                    default:
                        break;
                }*/
                context.UpdateWorkflowVariable("IsSkipApprove", isSkipApprove);//Paper bag和HO代其他部门填写是不需要审批的,直接可以生成PO了
                #endregion

                #region SkipApproveTaskAssign
                //若SkipApprove,则需直接指定最后Confirm的任务人
                if (isSkipApprove)
                {
                    var confirmManager = new NameCollection();
                    confirmManager.Add(CurrentEmployee.UserAccount);
                    fields["CheckPerson"] = CurrentEmployee.UserAccount;
                    context.UpdateWorkflowVariable("ConfirmTaskUsers", confirmManager);
                }
                #endregion
            }
            #region Save the data
            //Save data to master table and sub table
            var workflowNumber = CreateWorkflowNumber();
            workflowNumber = DataForm1.IsReturn ? workflowNumber + "R" : workflowNumber;
            fields["WorkflowNumber"] = workflowNumber;

            var requestType = DataForm1.RequestType;
            var capexType = DataForm1.CapexType;

            var itemIdentity = DataForm1.ItemIdentity;

            PurchaseRequestCommon.SaveDetails(dtPRData, workflowNumber, capexType, requestType, isHO, itemIdentity); //Save request details to lists

            //float total = float.Parse(DataForm1.Total);
            double totalRMB = DataForm1.GetTotalRMB(dtPRData);// float.Parse(DataForm1.TotalRMB);
            float approvalTotalRMB = float.Parse(DataForm1.GetApprovalTotalRMB(dtPRData));// float.Parse(DataForm1.ApprovalTotalRMB);
            fields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")";
            //fields["Total"] = total;
            fields["TotalRMB"] = totalRMB;
            fields["ApprovalTotalRMB"] = approvalTotalRMB;
            fields["RequestType"] = requestType;
            fields["CapexType"] = capexType;
            fields["FormType"] = formType;
            fields["PRHOPurpose"] = DataForm1.HOPurposeType;
            fields["PRStorePurpose"] = DataForm1.StorePurposeType;
            #endregion

            if (isHO)
            {
                var ht = WorkFlowUtil.GetApproveLevel(approvalTotalRMB, "PR");
                if (ht.Count == 0)
                {
                    DisplayMessage("The system didn't set the approve level info.");
                    e.Cancel = true;
                    return;
                }
                //fields["HighLevel"] = ht["HighLevel"].ToString();
                fields["LowLevel"] = ht["LowLevel"].ToString();
                fields["CheckPerson"] = CurrentEmployee.UserAccount;//HO发起人自己做最后一步的Confirm
            }

            fields["IsHO"] = isHO;

            #region Set title for workflow
            //Modify task title
            context.UpdateWorkflowVariable("CompleteTaskTitle", workflowNumber + " :Please complete the PR");
            context.UpdateWorkflowVariable("CheckTaskTitle", string.Format("{0} \"{1}\" needs check", taskTitle, workflowNumber));
            context.UpdateWorkflowVariable("ApproveTaskTitle", string.Format("{0} \"{1}\" needs approval", taskTitle, workflowNumber));
            context.UpdateWorkflowVariable("ConfirmTaskTitle", string.Format("{0} \"{1}\" needs generate PO", taskTitle, workflowNumber));
            #endregion

            #region Set page URL for workflow
            //Set task url
            var editURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/EditForm01.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/ApproveForm.aspx";
            var checkURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/CheckForm01.aspx";
            var confirmURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/ConfirmForm.aspx";
            context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            context.UpdateWorkflowVariable("CheckTaskFormURL", checkURL);
            context.UpdateWorkflowVariable("ApproveTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("ConfirmTaskFormURL", confirmURL);
            #endregion

            //Update IsHO vari in wf. Different level person have different path
            context.UpdateWorkflowVariable("IsHO", isHO);

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
Пример #28
0
        /// <summary>
        /// 得到最后一步审批组MMC,BBS里的审批用户
        /// </summary>
        /// <returns></returns>
        NameCollection GetACCBBSApprovers()
        {
            NameCollection ncMMCBBSApprovers = new NameCollection();

            SPGroup groupMMC = WorkFlowUtil.GetUserGroup("wf_ACC");

            if (groupMMC == null || groupMMC.Users.Count == 0)
            {
                DisplayMessage("There are no users in wf_ACC");
                return null;
            }
            foreach (SPUser user in groupMMC.Users)
            {
                string sName = user.LoginName;
                if (user.IsSiteAdmin || sName.Equals("SHAREPOINT\\System", StringComparison.CurrentCultureIgnoreCase))
                {
                    continue;
                }
                ncMMCBBSApprovers.Add(sName);
                string deleman = WorkFlowUtil.GetDeleman(sName, WorkFlowUtil.GetModuleIdByListName("POTypeChangeWorkflow"));
                if (deleman != null)
                {
                    ncMMCBBSApprovers.Add(deleman);
                }
            }

            if (ncMMCBBSApprovers.Count == 0)
            {
                DisplayMessage("There are no users in wf_ACC");
                return null;
            }

            SPGroup groupBBS = WorkFlowUtil.GetUserGroup("wf_BSS");
            if (groupBBS == null || groupBBS.Users.Count == 0)
            {
                DisplayMessage("There are no users in wf_BSS");
                return null;
            }
            bool bExistBBS = false;
            foreach (SPUser user in groupBBS.Users)
            {
                string sName = user.LoginName;
                if (user.IsSiteAdmin || sName.Equals("SHAREPOINT\\System", StringComparison.CurrentCultureIgnoreCase))
                {
                    continue;
                }
                ncMMCBBSApprovers.Add(sName);
                string deleman = WorkFlowUtil.GetDeleman(sName, WorkFlowUtil.GetModuleIdByListName("POTypeChangeWorkflow"));
                if (deleman != null)
                {
                    ncMMCBBSApprovers.Add(deleman);
                }
                bExistBBS = true;
            }

            if (!bExistBBS)
            {
                DisplayMessage("There are no users in wf_BSS");
                return null;
            }
            return ncMMCBBSApprovers;
        }
Пример #29
0
        private void Actions_ActionExecuting(object sender, ActionEventArgs e)
        {
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;

            DataTable dtPRData = DataForm1.dtGetPRData();
            if (e.Action.Equals("Save", StringComparison.CurrentCultureIgnoreCase))
            {
                if (!this.DataForm1.ValidateForSave())
                {
                    DisplayMessage(this.DataForm1.MSG);
                    e.Cancel = true;
                    DataForm1.RequestId = fields["WorkflowNumber"].AsString();
                    DataForm1.RebindItems(dtPRData);
                    return;
                }
                SaveAction(sender, e, dtPRData);
            }
            else if (e.Action.Equals("Submit", StringComparison.CurrentCultureIgnoreCase))
            {
                if (!this.DataForm1.Validate())
                {
                    DisplayMessage(DataForm1.MSG);
                    e.Cancel = true;
                    DataForm1.RequestId = fields["WorkflowNumber"].AsString();
                    DataForm1.RebindItems(dtPRData);
                    return;
                }

                bool isHO = (bool)fields["IsHO"];
                var formType = DataForm1.FormType;
                var storePurpose = DataForm1.StorePurposeType;

                this.DataForm1.Update(); //验证通过更新DataTable

                #region Check QuarterlyOrder Count
                bool isQuartOrderOK = CheckQuartOrder(isHO, storePurpose, fields["Created"].AsString());
                if (!isQuartOrderOK) //if (!isHO && !PurchaseRequestCommon.IsLegalStoreRequest(storePurpose, CurrentEmployee.UserAccount))//是门店并且不合法的季度订单
                {
                    DataForm1.UpdateItemForQuartOrder();
                    DisplayMessage("Can not request quarterly order in current month or you have requested it.");
                    e.Cancel = true;
                    return;
                }
                #endregion

                #region Set users for workflow
                var managerEmp = WorkFlowUtil.GetNextConstructionApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                if (isHO)
                {
                    var manager = new NameCollection();
                    manager.Add(managerEmp.UserAccount);
                    var deleman = PurchaseRequestCommon.GetDeleman(managerEmp.UserAccount); //查找代理人
                    if (deleman != null)
                    {
                        manager.Add(deleman);
                    }
                    context.UpdateWorkflowVariable("ApproveTaskUsers", manager);
                }
                else
                {
                    string taskAssignType = DataForm1.GetTaskAssignType(dtPRData);
                    SPListItemCollection lc = null;
                    lc = WorkFlowUtil.GetCollectionByColumn("AssignType", taskAssignType, "PurchaseRequestTaskAssign");

                    NameCollection checkManager = new NameCollection();
                    Employee emp = null;
                    foreach (SPListItem item in lc)
                    {
                        emp = UserProfileUtil.GetEmployeeEx(item["TaskChecker"].ToString());
                        if (emp != null)
                        {
                            checkManager.Add(emp.UserAccount);
                        }
                    }

                    if (checkManager.Count == 0)
                    {
                        DisplayMessage("The HO checkers are not set in the system. Please contact IT for further help.");
                        e.Cancel = true;
                        return;
                    }

                    //Modify task users
                    context.UpdateWorkflowVariable("CheckTaskUsers", checkManager);
                }
                fields["CurrManager"] = managerEmp.UserAccount;
                #endregion

                #region Save the data
                var requestType = DataForm1.RequestType;
                var capexType = DataForm1.CapexType;
                var itemIdentity = DataForm1.ItemIdentity;

                PurchaseRequestCommon.DeleteAllDraftItems(fields["WorkflowNumber"].AsString()); //Delete all draft items before saving
                PurchaseRequestCommon.SaveDetails(dtPRData, fields["WorkflowNumber"].AsString(), capexType, requestType, isHO, itemIdentity); //Save request details to lists

                //float total = float.Parse(DataForm1.Total);
                double totalRMB = DataForm1.GetTotalRMB(dtPRData);
                float approvalTotalRMB = float.Parse(DataForm1.GetApprovalTotalRMB(dtPRData));
                //fields["Total"] = total;
                fields["TotalRMB"] = totalRMB;
                fields["ApprovalTotalRMB"] = approvalTotalRMB;
                fields["RequestType"] = requestType;
                fields["CapexType"] = capexType;
                fields["FormType"] = formType;
                fields["PRHOPurpose"] = DataForm1.HOPurposeType;
                fields["PRStorePurpose"] = DataForm1.StorePurposeType;
                #endregion

                if (isHO)
                {
                    var ht = WorkFlowUtil.GetApproveLevel(approvalTotalRMB, "PR");
                    if (ht.Count == 0)
                    {
                        DisplayMessage("The system didn't set the approve level info.");
                        e.Cancel = true;
                        return;
                    }
                    //fields["HighLevel"] = ht["HighLevel"].ToString();
                    fields["LowLevel"] = ht["LowLevel"].ToString();
                    fields["CheckPerson"] = CurrentEmployee.UserAccount;//HO发起人自己做最后一步的Confirm
                }

                #region SkipApproveCondition
                bool isSkipApprove = false;
                //若门店申请,则只能选择StoreRequest;若HO申请,则可以选择除StoreRequest外的其他三项
                //即PaperBagRequest和HORequest肯定是HO用户的申请
                switch (DataForm1.FormType)
                {
                    case "PaperBag":
                        isSkipApprove = true;//纸袋已线下审批,无需PR工作流再次审批
                        break;
                    case "HO":
                        isSkipApprove = DataForm1.HOPurposeType.Equals("Department");//当HO代其他部门申请时,则无需PR工作流审批
                        break;
                    default:
                        break;
                }
                context.UpdateWorkflowVariable("IsSkipApprove", isSkipApprove);//Paper bag和HO代其他部门填写是不需要审批的,直接可以生成PO了
                #endregion

                #region SkipApproveTaskAssign
                //若SkipApprove,则需直接指定最后Confirm的任务人
                if (isSkipApprove)
                {
                    var confirmManager = new NameCollection();
                    confirmManager.Add(CurrentEmployee.UserAccount);
                    fields["CheckPerson"] = CurrentEmployee.UserAccount;
                    context.UpdateWorkflowVariable("ConfirmTaskUsers", confirmManager);
                }
                #endregion

                context.UpdateWorkflowVariable("IsSave", false);
                context.DataFields["Status"] = CAWorkflowStatus.InProgress;
            }

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
Пример #30
0
        internal static NameCollection GetTaskUsers(NameCollection manager, string managerAccount)
        {
            manager.Add(managerAccount);

            string moduleID = WorkFlowUtil.GetModuleIdByListName("TravelExpenseClaimWorkflow");

            var deleman = WorkFlowUtil.GetDeleman(managerAccount, moduleID);
            if (deleman != null)
            {
                manager.Add(deleman);
            }

            return manager;
        }
Пример #31
0
        void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            string msg = DataForm1.Validate();
            if (!string.IsNullOrEmpty(msg))
            {
                DisplayMessage(msg);
                e.Cancel = true;
                return;
            }
            //验证组里用户是否为空
            List<string> list = WorkFlowUtil.UserListInGroup("wf_EquApp");
            if (list.Count == 0)
            {
                DisplayMessage("Unable to submit the application. There is no user in wf_EquApp group. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }
            WorkflowContext curContext = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            string taskTitle = SPContext.Current.Web.CurrentUser.Name + "'s Equipment Application";

            string passTo = DataForm1.Manager;

            fields["FunctionalManagerLoginName"] = DataForm1.FunctionalManager;
            fields["ManagerLoginName"] = passTo;
            fields["EmployeeName"] = ((TextBox)DataForm1.FindControl("txtEmployeeName")).Text;
            fields["EmployeeTitle"] = ((TextBox)DataForm1.FindControl("txtEmployeeTitle")).Text;
            fields["EmployeeID"] = ((TextBox)DataForm1.FindControl("txtEmployeeID")).Text;

            //fields["OnboardAt"] = ((TextBox)DataForm1.FindControl("txtOnboardAt")).Text;
            fields["OnboardAt"] = ((CADateTimeControl)DataForm1.FindControl("CADateTime1")).SelectedDate.ToShortDateString();
            fields["Department"] = ((TextBox)DataForm1.FindControl("txtDepartment")).Text;
            fields["Manager"] = EnsureUser(passTo);
            if (!string.IsNullOrEmpty(DataForm1.FunctionalManager))
            {
                fields["FunctionalManager"] = EnsureUser(DataForm1.FunctionalManager);
            }
            else
                fields["FunctionalManager"] = string.Empty;

            //fields["Remark"] = ((TextBox)DataForm1.FindControl("txtRemark")).Text;
            fields["WorkflowNumber"] = CreateWorkflowNumber();
            fields["Status"] = "In Progress";

            curContext.UpdateWorkflowVariable("HRSubmitTitle", "Please complete equipment application");
            curContext.UpdateWorkflowVariable("FunctionalManagerApproveTitle", taskTitle + " needs approval");
            curContext.UpdateWorkflowVariable("DepartmentHeadApproveTitle", taskTitle + " needs approval");
            curContext.UpdateWorkflowVariable("ITGroupConfirmTitle", taskTitle + " needs confirm");
            //curContext.UpdateWorkflowVariable("CFCOGroupApproveTitle", taskTitle + " needs approval");

            #region Set FunctionalManager or DH

            //设置工作流步骤及对应原始审批人
            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            var functionManager = DataForm1.FunctionalManager;
            if (functionManager.IsNotNullOrWhitespace())
            {
                var functionalManager = new NameCollection();
                functionalManager.Add(functionManager);
                var deleman = WorkFlowUtil.GetDeleman(functionManager, "104");
                if (deleman != null)
                {
                    functionalManager.Add(deleman);
                }
                strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentFunctionalManagerApprove, functionManager);
                curContext.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentFunctionalManager, functionalManager);
            }
            if (passTo.IsNotNullOrWhitespace())
            {
                var departmentHead = new NameCollection();
                departmentHead.Add(passTo);
                var deleman = WorkFlowUtil.GetDeleman(passTo, "104");
                if (deleman != null)
                {
                    departmentHead.Add(deleman);
                }
                strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentDepartmentHeadApprove, passTo);
                curContext.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentDH, departmentHead);
            }
            //更新工作流每级审批步骤TaskUsers
            NameCollection itAccounts = WorkFlowUtil.GetUsersInGroup("wf_EquApp");

            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentITConfirm, itAccounts.JoinString(","));
            WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();
            WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentITGroup, GetDelemanNameCollection(itAccounts, Constants.CAModules.NewEmployeeEquipmentApplication));

            #endregion

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
    static void Main(string[] args)
    {
        NameCollection names = new NameCollection();

        names.Add("A");
    }
Пример #33
0
        /// <summary>
        /// 更新工作流相关list中字段数据
        /// </summary>
        /// <param name="dpTaskUsers">部门领导</param>
        /// <param name="isSave">是否为保存数据状态</param>
        private void UpdateWorkFlowDataFields(NameCollection dpTaskUsers, bool isSave)
        {
            WorkflowContext.Current.DataFields["Status"] = isSave ? CAWorkflowStatus.Pending :
                                                                     CAWorkflowStatus.InProgress;
            WorkflowContext.Current.DataFields["WorkFlowNumber"] = CreateWorkflowNumber();
            WorkflowContext.Current.DataFields["Applicant"] = CurrentEmployee.DisplayName +
                                                              "(" + CurrentEmployee.UserAccount + ")";
            WorkflowContext.Current.DataFields["DepartmentVal"] = CurrentEmployee.Department;
            WorkflowContext.Current.DataFields["Manager"] = dpTaskUsers.Count > 0 ? dpTaskUsers[0] : "";
            //Update varivable.(Payment term less than 30 days required CFO's special approval)
            WorkflowContext.Current.DataFields["PaymentTerm"] = DataForm1.PaymentTerm;

            var DepartmentHeadTaskUsers = new NameCollection();
            var MDMTaskUsers = new NameCollection();
            var CFOTaskUsers = new NameCollection();

            string department = CurrentEmployee.Department;
            DepartmentHeadTaskUsers.Add(UserProfileUtil.GetDepartmentManager(department));

            List<string> lst = WorkFlowUtil.UserListInGroup("wf_CFO");
            CFOTaskUsers.AddRange(lst.ToArray());

            lst = WorkFlowUtil.UserListInGroup("wf_Finance_MDM");
            MDMTaskUsers.AddRange(lst.ToArray());

            //WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTaskUsers", DepartmentHeadTaskUsers);
            //WorkflowContext.Current.UpdateWorkflowVariable("MDMTaskUsers", MDMTaskUsers);
            //WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskUsers", CFOTaskUsers);

            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceDepartmentHeadTask, DepartmentHeadTaskUsers.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceMDMTask, MDMTaskUsers.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceCFOTask, CFOTaskUsers.JoinString(","));
            WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();
        }
Пример #34
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            //局部变量定义
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            var departmentManagerTaskUsers = new NameCollection();
            var btn = sender as StartWorkflowButton;
            string manager = string.Empty;
            bool isCeo = false;

            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                //判断输入数据是否正确,错误则直接返回
                var msg = this.DataForm1.ValidateForSave();
                if (msg.IsNotNullOrWhitespace())
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }
                fields["Status"] = CAWorkflowStatus.Pending;
                context.UpdateWorkflowVariable("IsSave", true);
                context.UpdateWorkflowVariable("CompleteTaskTitle", "please complete Travel Request");
            }
            else
            {
                //判断输入数据是否正确,错误则直接返回
                var msg = this.DataForm1.ValidateForSubmit();
                if (msg.IsNotNullOrWhitespace())
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }

                //以下代码获取上级审批人信息
                var managerEmp = WorkFlowUtil.GetNextApprover(this.DataForm1.Applicant.UserAccount);
                if (managerEmp == null)
                {
                    isCeo = IsCEO(DataForm1.Applicant.UserAccount);
                    if (!isCeo)
                    {
                        DisplayMessage("The manager is not set in the system.");
                        e.Cancel = true;
                        return;
                    }
                    else
                    {
                        //获取前台确认的员工
                        departmentManagerTaskUsers = TravelRequest3Common.GetTaskUsersByModuleWithoutDeleman("wf_ReceptionCtrip_TR", "TravelRequestWorkFlow");
                    }
                }
                else
                {
                    manager = managerEmp.UserAccount;
                    departmentManagerTaskUsers.Add(manager);
                }

                var deleman = WorkFlowUtil.GetDeleman(manager, "106");
                if (deleman != null)
                {
                    departmentManagerTaskUsers.Add(deleman);
                }

                context.UpdateWorkflowVariable("IsSave", false);

            }

            //WorkflowNumber
            workflowNumber = CreateTRWorkFlowNumber();
            //首先保存用户输入的数据
            DataForm1.Update();
            //保存详细信息
            TravelRequest3Common.SaveDetails(DataForm1, workflowNumber);
            //保存数据
            Employee applicant = this.DataForm1.Applicant;
            fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty;
            fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount);
            fields["Department"] = DataForm1.Department;

            fields["Department"] = this.DataForm1.Department;
            fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose;
            var isBusiness = this.DataForm1.ChosenFlight;
            var isNextFlight = this.DataForm1.NextFlight;
            var isBookHotel = this.DataForm1.IsBookHotel;
            fields["IsBusiness"] = isBusiness;
            fields["IsNextFlight"] = isNextFlight;
            fields["IsBookHotel"] = !isBookHotel;
            fields["Managers"] = manager;

            var flightClass = string.Empty;
            if (isBusiness)
            {
                flightClass = "Business";
            }
            else if (isNextFlight)
            {
                flightClass = "Other available flight";
            }
            else
            {
                flightClass = "Economy";
            }
            fields["FlightClass"] = flightClass;
            fields["WorkflowNumber"] = workflowNumber;
            fields["TravelTotalCost"] = DataForm1.GetTotal();
            fields["Status"] = CAWorkflowStatus.InProgress;

            //判断是否CEO,若是,则直接跳转到前台确认
            if (isCeo)
            {
                string taskTitle = DataForm1.EnglishName + "'s Travel Request ";
                context.UpdateWorkflowVariable("CompleteTaskTitle", "please submit Travel Request");
                context.UpdateWorkflowVariable("ConfirmTaskTitle", taskTitle + "needs confirm");
                context.UpdateWorkflowVariable("ConfirmTaskUsers", departmentManagerTaskUsers);
                context.UpdateWorkflowVariable("IsCeo", true);
            }
            else
            {
                //定义标题
                string taskTitle = DataForm1.EnglishName + "'s Travel Request ";
                context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle + "needs approval");
                context.UpdateWorkflowVariable("NextApproveTaskUsers", departmentManagerTaskUsers);
                context.UpdateWorkflowVariable("IsContinue", true);
            }

            //设置工作流URL
            var editURL = "/_Layouts/CA/WorkFlows/TravelRequest3/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/TravelRequest3/ApproveForm.aspx";
            context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("ConfirmTaskFormURL", approveURL);

            //发送邮件
            if (!string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                SendMailForSubmit(departmentManagerTaskUsers);
            }
            WorkFlowUtil.UpdateWorkflowPath(context);
        }
Пример #35
0
        void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
        {
            if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase))
            {
                WorkflowContext.Current.DataFields["Status"] = "Cancelled";
                return;
            }
            string msg = DataForm1.Validate;
            if (!string.IsNullOrEmpty(msg))
            {
                DisplayMessage(msg);
                e.Cancel = true;
                return;
            }
            //组开始
            List<string> lst = WorkFlowUtil.UserListInGroup("wf_IT");
            if (lst.Count == 0)
            {
                //Don
                DisplayMessage("Unable to submit the application. There is no user in wf_IT group. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }
            NameCollection ItMemberUser = new NameCollection();
            ItMemberUser.AddRange(lst.ToArray());

            Employee approver = WorkFlowUtil.GetEmployeeApprover(DataForm1.Applicant);
            if (approver == null)
            {
                //Don
                DisplayMessage("Unable to find an approver for the applicant. Please contact IT for further help.");
                e.Cancel = true;
                return;
            }

            NameCollection DepartHeadUser = new NameCollection();
            DepartHeadUser.Add(approver.UserAccount);
            NameCollection ITHeadUser = new NameCollection();
            string strHRHeadAccount = UserProfileUtil.GetDepartmentManager("it");
            ITHeadUser.Add(strHRHeadAccount);
            NameCollection CFOUser = new NameCollection();
            lst = WorkFlowUtil.UserListInGroup("wf_CFO");
            CFOUser.AddRange(lst.ToArray());
            //组结束

            try
            {
                WorkflowContext.Current.UpdateWorkflowVariable("ITMemberAccounts", ItMemberUser);
                WorkflowContext.Current.UpdateWorkflowVariable("DepartHeaderAccounts", DepartHeadUser);
                WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderAccounts", ITHeadUser);
                WorkflowContext.Current.UpdateWorkflowVariable("FOCOAccounts", CFOUser);
                WorkflowContext.Current.UpdateWorkflowVariable("IsFOCO", false);
                WorkflowContext.Current.UpdateWorkflowVariable("ITMemberTitle", DataForm1.Applicant.DisplayName + "'s IT request needs confirm");
                WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval");
                WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval");
                WorkflowContext.Current.UpdateWorkflowVariable("FOCOTitle", DataForm1.Applicant.DisplayName + "s 'IT request needs approval");
                WorkflowContext.Current.UpdateWorkflowVariable("UpdateTaskTitle", "Please complete IT request for " + DataForm1.Applicant.DisplayName);

                WorkflowContext.Current.DataFields["Name"] = DataForm1.Name;
                WorkflowContext.Current.DataFields["Department"] = DataForm1.Department;
                WorkflowContext.Current.DataFields["FOCOApprove"] = DataForm1.IsFOCO;
                WorkflowContext.Current.DataFields["ApplyDate"] = DataForm1.ApplyDate;
                WorkflowContext.Current.DataFields["AppliedUser"] = this.DataForm1.Applicant.UserAccount;
                WorkflowContext.Current.DataFields["ReasonforRequest"] = this.DataForm1.ReasonforRequest;
                WorkflowContext.Current.DataFields["Flag"] = "Submit";

                WorkflowContext.Current.DataFields["Status"] = "In Progress";
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }