Exemple #1
0
        public void AddExpatriateBenefitClaimSAPWorkflow(WorkflowDataFields fields)
        {
            SPSite site = SPContext.Current.Site;

            SPList sAPList = CA.SharePoint.SharePointUtil.GetList("Expatriate Benefit Claim SAP Workflow");
            SPList sAPItemsList = CA.SharePoint.SharePointUtil.GetList("ExpatriateBenefitClaimSAPItems");
            SPListItem sAPListItem = sAPList.Items.Add();
            sAPListItem["WorkflowNumber"] = CreateWorkflowNumber();
            sAPListItem["CashAdvanceAmount"] = fields["CashAdvanceAmount"].AsString();
            sAPListItem["TotalAmount"] = Math.Round(double.Parse(fields["TotalAmount"].AsString()), 2).ToString();
            sAPListItem["PreTotalAmount"] = Math.Round(double.Parse(fields["AmountDue"].AsString()), 2).ToString();
            sAPListItem["Applicant"] = fields["Applicant"].AsString();
            sAPListItem["ExpenseDescription"] = fields["ExpenseDescription"].AsString();

            string name = fields["Applicant"].AsString();
            string useraccount = name.Substring(name.IndexOf('(') + 1, name.IndexOf(')') - name.IndexOf('(') - 1);
            sAPListItem["ApplicantSPUser"] = this.EnsureUser(useraccount);

            sAPListItem["Status"] = CAWorkflowStatus.InProgress;
            sAPListItem["EBCWorkflowNumber"] = fields["WorkflowNumber"].ToString();
            sAPListItem["PostSAPStatus"] = "0";
            sAPListItem["CashAdvanceWorkFlowNumber"] = fields["CashAdvanceIDAndAmount"].AsString();

            NameCollection acAccounts = WorkFlowUtil.GetUsersInGroup(ExpatriateBenefitClaimConstants.wf_EBC_Accountants);
            NameCollection financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(ExpatriateBenefitClaimConstants.wf_EBC_FinanceManager);
            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", "ACReviewTask", acAccounts.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", "FinanceConfirmTask", financeConfirmAccounts.JoinString(","));
            sAPListItem["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

            sAPListItem.Web.AllowUnsafeUpdates = true;
            sAPListItem.Update();
            string regexText = @"\{[^\{-\}]*\}";
            Regex regex = new Regex(regexText);
            MatchCollection mc = regex.Matches(fields["SummaryExpenseType"].ToString());
            foreach (Match m in mc)
            {
                List<string> itemList = m.Value.Replace("{", "").Replace("}", "").Split(',').ToList<string>();
                SPListItem sAPItemsListItem = sAPItemsList.Items.Add();
                sAPItemsListItem["WorkflowNumber"] = sAPListItem["WorkflowNumber"].ToString();
                sAPItemsListItem["ExpenseType"] = itemList[0].Replace("name:'", "").Replace("'", "").Trim();
                sAPItemsListItem["ItemAmount"] = itemList[1].Replace("val:'", "").Replace("'", "").Trim();
                sAPItemsListItem["CostCenter"] = itemList[2].Replace("costcenter:'", "").Replace("'", "").Trim();
                sAPItemsListItem["Status"] = "0";
                sAPItemsListItem.Web.AllowUnsafeUpdates = true;
                sAPItemsListItem.Update();
            }

            WorkflowVariableValues vs = new WorkflowVariableValues();
            vs["ACReviewUsers"] = GetDelemanNameCollection(acAccounts, ExpatriateBenefitClaimConstants.ExpatriateBenefitClaimSAP);
            vs["FinanceConfirmUsers"] = GetDelemanNameCollection(financeConfirmAccounts, ExpatriateBenefitClaimConstants.ExpatriateBenefitClaimSAP);
            var aCReviewTaskFormUrl = "/_Layouts/CA/WorkFlows/ExpatriateBenefitClaim/ACReview.aspx";
            var financeConfirmTaskFormUrl = "/_Layouts/CA/WorkFlows/ExpatriateBenefitClaim/FinanceConfirm.aspx";
            vs["ACReviewTaskFormUrl"] = aCReviewTaskFormUrl;
            vs["FinanceConfirmTaskFormUrl"] = financeConfirmTaskFormUrl;
            vs["ACReviewTitle"] = fields["Applicant"].ToString() + "'s Expatriate Benefit Claim";
            vs["FinanceConfirmTitle"] = fields["Applicant"].ToString() + "'s Expatriate Benefit Claim";
            var eventData = SerializeUtil.Serialize(vs);
            var wfName = "Expatriate Benefit Claim SAP Workflow";
            var wfAss = sAPList.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture);
            site.WorkflowManager.StartWorkflow(sAPListItem, wfAss, eventData);
        }
Exemple #2
0
 public static SPWorkflow StartWorkflow(SPListItem item, string wfName, WorkflowVariableValues variableValues)
 {
     SPWorkflowAssociation wfAss = item.ParentList.WorkflowAssociations.GetAssociationByName(wfName, CultureInfo.CurrentCulture);
     string eventData = SerializeUtil.Serialize(variableValues);
     return item.Web.Site.WorkflowManager.StartWorkflow(item, wfAss, eventData);
 }
Exemple #3
0
        public void AddEmployeeExpenseClaimSAPWorkFlow(WorkflowDataFields fields)
        {
            SPSite site = SPContext.Current.Site;

            SPList sAPList = CA.SharePoint.SharePointUtil.GetList("Employee Expense Claim SAP WorkFlow");
            SPList sAPItemsList = CA.SharePoint.SharePointUtil.GetList("EmployeeExpenseClaimSAPItemsWorkFlow");
            SPListItem sAPListItem = sAPList.Items.Add();
            sAPListItem["WorkflowNumber"] = CreateWorkflowNumber();
            sAPListItem["CashAdvanceAmount"] = fields["CashAdvance"] == null ? "" : fields["CashAdvance"].ToString();
            sAPListItem["TotalAmount"] =Math.Round(double.Parse(fields["TotalAmount"].ToString()),2).ToString();
            sAPListItem["PreTotalAmount"] = Math.Round(double.Parse(fields["AmountDue"].ToString()), 2).ToString();
            sAPListItem["Applicant"] = fields["RequestedBy"].ToString();
            sAPListItem["ExpenseDescription"] = fields["ExpenseDescription"].ToString();

            string name = fields["RequestedBy"].ToString();
            string useraccount = name.Substring(name.IndexOf('(') + 1, name.IndexOf(')') - name.IndexOf('(') - 1);
            sAPListItem["ApplicantSPUser"] = this.EnsureUser(useraccount);

            sAPListItem["Status"] = CAWorkflowStatus.InProgress;
            sAPListItem["EECWWorkflowNumber"] = fields["WorkflowNumber"].ToString();
            sAPListItem["PostSAPStatus"] = "0";
            sAPListItem["CashAdvanceWorkFlowNumber"] = fields["CashAdvanceIDAndAmount"] == null ? "" : fields["CashAdvanceIDAndAmount"].ToString();

            NameCollection acAccounts = WorkFlowUtil.GetUsersInGroup(WorkflowGroupName.WF_Accountants);
            NameCollection financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(WorkflowGroupName.WF_FinanceManager);
            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", "ACReviewTask", acAccounts.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", "FinanceConfirmTask", financeConfirmAccounts.JoinString(","));
            sAPListItem["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

            sAPListItem.Web.AllowUnsafeUpdates = true;
            sAPListItem.Update();
            string regexText = @"\{[^\{-\}]*\}";
            Regex regex = new Regex(regexText);
            string set = fields["SummaryExpenseType"].ToString().Trim();
            if (set.Length < 5)
            {
                throw new Exception("系统出错,请重试,或者联系管理员!");
            }

            DataTable dt = WorkFlowUtil.GetCollectionByList("Employee Expense Claim Type").GetDataTable();
            Hashtable ht = new Hashtable();
            foreach (DataRow dr in dt.Rows)
            {
                ht.Add(dr["NewExpenseType"].ToString(), dr["ExpenseType"].ToString());
            }

            MatchCollection mc = regex.Matches(fields["SummaryExpenseType"].ToString());
            foreach (Match m in mc)
            {
                List<string> itemList = m.Value.Replace("{", "").Replace("}", "").Split(',').ToList<string>();
                SPListItem sAPItemsListItem = sAPItemsList.Items.Add();
                sAPItemsListItem["WorkflowNumber"] = sAPListItem["WorkflowNumber"].ToString();
                string et = itemList[0].Replace("name:'", "").Replace("'", "").Trim();
                if (ht[et] != null)
                {
                    et = ht[et].ToString();
                }
                sAPItemsListItem["ExpenseType"] = et;
                sAPItemsListItem["ItemAmount"] = itemList[1].Replace("val:'", "").Replace("'", "").Trim();
                sAPItemsListItem["CostCenter"] = itemList[2].Replace("costcenter:'", "").Replace("'", "").Trim();
                sAPItemsListItem["Status"] = "0";
                sAPItemsListItem["ErrorMsg"] = "";
                sAPItemsListItem.Web.AllowUnsafeUpdates = true;
                sAPItemsListItem.Update();
            }

            WorkflowVariableValues vs = new WorkflowVariableValues();
            vs["ACReviewUsers"] = GetDelemanNameCollection(acAccounts, Constants.CAModules.EmployeeExpenseClaimSAP);
            vs["FinanceConfirmUsers"] = GetDelemanNameCollection(financeConfirmAccounts, Constants.CAModules.EmployeeExpenseClaimSAP);
            var aCReviewTaskFormUrl = "/_Layouts/CA/WorkFlows/EmployeeExpenseClaim2/ACReview.aspx";
            var financeConfirmTaskFormUrl = "/_Layouts/CA/WorkFlows/EmployeeExpenseClaim2/FinanceConfirm.aspx";
            vs["ACReviewTaskFormUrl"] = aCReviewTaskFormUrl;
            vs["FinanceConfirmTaskFormUrl"] = financeConfirmTaskFormUrl;
            vs["ACReviewTitle"] = fields["RequestedBy"].ToString() + "'s Employee Expense Claim";
            vs["FinanceConfirmTitle"] = fields["RequestedBy"].ToString() + "'s Employee Expense Claim";
            var eventData = SerializeUtil.Serialize(vs);
            var wfName = "Employee Expense Claim SAP WorkFlow";
            var wfAss = sAPList.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture);
            site.WorkflowManager.StartWorkflow(sAPListItem, wfAss, eventData);
            WorkFlowUtil.UpdateWorkflowPath(sAPListItem, eventData);
        }
Exemple #4
0
        private void TerminateAndStartWFForFinanceGroup()
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(SPContext.Current.Site.ID))
                {
                    using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                    {
                        web.AllowUnsafeUpdates = true;

                        SPList list = web.Lists[WorkflowListName.CreditCardBill];
                        SPWorkflowAssociation wfAss = list.WorkflowAssociations.GetAssociationByName(WorkflowConfigName.CreditCardBillWorkflow, System.Globalization.CultureInfo.CurrentCulture);

                        SPQuery query = new SPQuery();

                        query.Query = CreditCardClaimCommon.GetQuery("WorkflowStep", "UploadBillTask");

                        SPListItemCollection items = list.GetItems(query);

                        if (items.Count > 0)
                        {
                            foreach (SPWorkflow wfItem in items[0].Workflows)
                            {
                                foreach (SPWorkflowTask wfTask in wfItem.Tasks)
                                {
                                    wfTask["Status"] = "Canceled";
                                    wfTask.SystemUpdate();
                                }

                                SPWorkflowManager.CancelWorkflow(wfItem);
                            }

                            WorkflowVariableValues vs = new WorkflowVariableValues();
                            vs["UploadBillTaskTitle"] = "Please upload credit card e-statement";
                            vs["UploadBillTaskFormURL"] = "/_Layouts/CA/WorkFlows/CreditCardClaim/UploadExcelBill.aspx";

                            var taskUsers = new NameCollection();
                            List<string> groupUsers = null;

                            groupUsers = WorkFlowUtil.UserListInGroup(WorkflowGroupName.WF_FinanceConfirm);
                            taskUsers.AddRange(groupUsers.ToArray());

                            vs["UploadBillTaskUsers"] = taskUsers;

                            string eventData = SerializeUtil.Serialize(vs);

                            site.WorkflowManager.StartWorkflow(items[0], wfAss, eventData);
                        }

                        web.AllowUnsafeUpdates = false;
                    }
                }
            });
        }
        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);
            }
        }
Exemple #6
0
        private List<string> StartCreditCardClaimWF(List<Employee> employeeList, string uploadDate)
        {
            SPList list;
            SPListItem item;
            string wfId = string.Empty;

            List<string> unMappingList = new List<string>();

            foreach (Employee employee in employeeList)
            {
                try
                {
                    SPUser user = EnsureUser(employee.UserAccount);
                    if (user != null)
                    {

                        using (SPSite site = new SPSite(SPContext.Current.Site.ID, user.UserToken))
                        {
                            using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                            {
                                WorkflowVariableValues vs = new WorkflowVariableValues();
                                vs["CompleteTaskTitle"] = "Your " + uploadDate + " Credit Card Statement has arrived; please file claim";
                                vs["CompleteTaskFormURL"] = WorkflowConfigName.CreditCardClaimUrl + "EditForm.aspx";
                                vs["IsSave"] = true;

                                string eventData = SerializeUtil.Serialize(vs);

                                list = web.Lists[WorkflowListName.CreditCardClaim];
                                wfId = CreateWorkflowNumber();

                                item = list.Items.Add();
                                item["WorkflowNumber"] = wfId;
                                item["Status"] = CAWorkflowStatus.CCFinancePending;

                                item["Applicant"] = employee.DisplayName + "(" + employee.UserAccount + ")";
                                item["ApplicantSPUser"] = this.EnsureUser(employee.UserAccount);
                                item["Department"] = employee.Department;
                                item["Month"] = uploadDate;
                                item["InvoiceStatus"] = "1";
                                item["PreTotalAmount"] = 0;
                                item["SaveStatus"] = "";

                                item.Web.AllowUnsafeUpdates = true;
                                item.Update();

                                SPWorkflowAssociation wfAss = list.WorkflowAssociations.GetAssociationByName(WorkflowConfigName.CreditCardClaim, CultureInfo.CurrentCulture);

                                site.WorkflowManager.StartWorkflow(item, wfAss, eventData);
                                WorkFlowUtil.UpdateWorkflowPath(item, eventData);

                                item.Web.AllowUnsafeUpdates = false;
                            }
                        }
                        SendEmail(employee, uploadDate);
                    }
                }
                catch (Exception ex)
                {
                    CommonUtil.logError(string.Format("Start Credit Card Claim WF Error: {0} \n. Details: WorkflowNumber:{1}\n{2}'s {3} credit card bill info upload fails.\n",
                                                                ex.Message,
                                                                wfId,
                                                                employee.UserAccount,
                                                                uploadDate));
                    unMappingList.Add(employee.DisplayName);
                }

            }

            return unMappingList;
        }
Exemple #7
0
        private void AddCashAdvanceSAP(WorkflowDataFields fields)
        {
            SPSite site = SPContext.Current.Site;

            SPList sAPList = CA.SharePoint.SharePointUtil.GetList("CashAdvanceRequestSAP");
            SPListItem sAPListItem = sAPList.Items.Add();
            sAPListItem["WorkflowNumber"] = CreateWorkflowNumber();
            sAPListItem["CAWorkflowNumber"] = fields["WorkflowNumber"].ToString();
            sAPListItem["Amount"] = fields["Amount"].ToString();
            sAPListItem["Department"] = fields["Department"].ToString();
            sAPListItem["Status"] = CAWorkflowStatus.InProgress;
            sAPListItem["SAPStatus"] = "0";
            sAPListItem["AdvanceType"] = Int32.Parse(fields["Amount"].ToString()) > 2000 ? "Transfer" : "Cash";
            sAPListItem["AdvanceRemark"] = fields["Purpose"].AsString() + ";" + fields["UrgentRemark"].AsString() + ";" + fields["Remark"].AsString();

            Employee employee = UserProfileUtil.GetEmployee(fields["Applicant"].ToString());
            sAPListItem["EmployeeID"] = employee.EmployeeID;
            sAPListItem["EmployeeName"] = employee.DisplayName;
            sAPListItem["Applicant"] = fields["Applicant"].ToString();
            sAPListItem["ApplicantSPUser"] = this.EnsureUser(fields["Applicant"].ToString());

            NameCollection acAccounts = WorkFlowUtil.GetUsersInGroup(WorkflowGroupName.WF_Accountants);
            NameCollection financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(WorkflowGroupName.WF_FinanceManager);
            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", "ACReviewTask", acAccounts.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", "FinanceConfirmTask", financeConfirmAccounts.JoinString(","));
            sAPListItem["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

            sAPListItem.Web.AllowUnsafeUpdates = true;
            sAPListItem.Update();

            WorkflowVariableValues vs = new WorkflowVariableValues();
            vs["ACReviewUsers"] = GetDelemanNameCollection(acAccounts, Constants.CAModules.CashAdvanceRequestSAP);
            vs["FinanceConfirmUsers"] = GetDelemanNameCollection(financeConfirmAccounts, Constants.CAModules.CashAdvanceRequestSAP);
            var aCReviewTaskFormUrl = "/_Layouts/CA/WorkFlows/CashAdvanceRequest/ACReview.aspx";
            var financeConfirmTaskFormUrl = "/_Layouts/CA/WorkFlows/CashAdvanceRequest/FinanceConfirm.aspx";
            vs["ACReviewTaskFormUrl"] = aCReviewTaskFormUrl;
            vs["FinanceConfirmTaskFormUrl"] = financeConfirmTaskFormUrl;
            vs["ACReviewTitle"] = fields["Applicant"].ToString() + "'s Cash Advance Request";
            vs["FinanceConfirmTitle"] = fields["Applicant"].ToString() + "'s Cash Advance Request";
            var eventData = SerializeUtil.Serialize(vs);
            var wfName = "CashAdvanceRequestSAP";
            var wfAss = sAPList.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture);
            site.WorkflowManager.StartWorkflow(sAPListItem, wfAss, eventData);
            WorkFlowUtil.UpdateWorkflowPath(sAPListItem, eventData);
        }
Exemple #8
0
        public void AddExpenseClaimSAPWorkFlow(WorkflowDataFields fields)
        {
            SPSite site = SPContext.Current.Site;

            SPList sAPList = CA.SharePoint.SharePointUtil.GetList("Credit Card Claim SAP Workflow");
            SPList sAPItemsList = CA.SharePoint.SharePointUtil.GetList("Credit Card Claim SAP Detail");
            SPListItem sAPListItem = sAPList.Items.Add();
            sAPListItem["WorkflowNumber"] = CreateWorkflowNumber();
            //sAPListItem["CashAdvanceAmount"] = fields["CashAdvance"].ToString();
            sAPListItem["TotalAmount"] = fields["PreTotalAmount"].ToString();
            //sAPListItem["PreTotalAmount"] = fields["AmountDue"].ToString();
            sAPListItem["Applicant"] = fields["Applicant"].ToString();
            sAPListItem["ExpenseDescription"] = fields["ExpenseDescription"].ToString();

            string name = fields["Applicant"].ToString();
            string useraccount = name.Substring(name.IndexOf('(') + 1, name.IndexOf(')') - name.IndexOf('(') - 1);
            sAPListItem["ApplicantSPUser"] = this.EnsureUser(useraccount);

            sAPListItem["Status"] = CAWorkflowStatus.InProgress;
            sAPListItem["CCCWWorkflowNumber"] = fields["WorkflowNumber"].ToString();

            NameCollection acAccounts = WorkFlowUtil.GetUsersInGroup(WorkflowGroupName.wf_FinanceConfirm_CreditCard);
            NameCollection financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(WorkflowGroupName.WF_FinanceManager_CreditCard);
            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", "ACReviewTask", acAccounts.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", "FinanceConfirmTask", financeConfirmAccounts.JoinString(","));
            sAPListItem["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

            sAPListItem["PostSAPStatus"] = "0";

            string postSAPType = "";
            if (fields["RMBSummaryExpenseType"].ToString().Length > 2)
            {
                postSAPType += "RMB;";
            }
            if (fields["USDSummaryExpenseType"].ToString().Length > 2)
            {
                postSAPType += "USD;";
            }
            sAPListItem["PostSAPType"] = postSAPType;

            sAPListItem.Web.AllowUnsafeUpdates = true;
            sAPListItem.Update();
            string regexText = @"\{[^\{-\}]*\}";
            Regex regex = new Regex(regexText);
            if (fields["RMBSummaryExpenseType"].ToString().Length > 2)
            {
                MatchCollection mcRMB = regex.Matches(fields["RMBSummaryExpenseType"].ToString());
                foreach (Match m in mcRMB)
                {
                    List<string> itemList = m.Value.Replace("{", "").Replace("}", "").Split(',').ToList<string>();
                    SPListItem sAPItemsListItem = sAPItemsList.Items.Add();
                    sAPItemsListItem["WorkflowNumber"] = sAPListItem["WorkflowNumber"].ToString();
                    sAPItemsListItem["ExpenseType"] = itemList[0].Replace("name:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["DealAmount"] = itemList[1].Replace("val:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["CostCenter"] = itemList[2].Replace("costcenter:'", "").Replace("'", "").Trim();

                    sAPItemsListItem["DepositAmount"] = itemList[3].Replace("depositamt:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["PayAmount"] = itemList[4].Replace("payamt:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["TransactionDescription"] = itemList[5].Replace("transdesc:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["CreditCardBillID"] = itemList[6].Replace("creditCardBillID:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["AmountType"] = "RMB";

                    sAPItemsListItem["Status"] = "0";
                    sAPItemsListItem["ErrorMsg"] = "";
                    sAPItemsListItem.Web.AllowUnsafeUpdates = true;
                    sAPItemsListItem.Update();
                }
            }
            if (fields["USDSummaryExpenseType"].ToString().Length > 2)
            {
                MatchCollection mcUSD = regex.Matches(fields["USDSummaryExpenseType"].ToString());
                foreach (Match m in mcUSD)
                {
                    List<string> itemList = m.Value.Replace("{", "").Replace("}", "").Split(',').ToList<string>();
                    SPListItem sAPItemsListItem = sAPItemsList.Items.Add();
                    sAPItemsListItem["WorkflowNumber"] = sAPListItem["WorkflowNumber"].ToString();
                    sAPItemsListItem["ExpenseType"] = itemList[0].Replace("name:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["DealAmount"] = itemList[1].Replace("val:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["CostCenter"] = itemList[2].Replace("costcenter:'", "").Replace("'", "").Trim();

                    sAPItemsListItem["DepositAmount"] = itemList[3].Replace("depositamt:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["PayAmount"] = itemList[4].Replace("payamt:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["TransactionDescription"] = itemList[5].Replace("transdesc:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["CreditCardBillID"] = itemList[6].Replace("creditCardBillID:'", "").Replace("'", "").Trim();
                    sAPItemsListItem["AmountType"] = "USD";

                    sAPItemsListItem["Status"] = "0";
                    sAPItemsListItem["ErrorMsg"] = "";
                    sAPItemsListItem.Web.AllowUnsafeUpdates = true;
                    sAPItemsListItem.Update();
                }
            }

            WorkflowVariableValues vs = new WorkflowVariableValues();
            vs["ACReviewUsers"] = GetDelemanNameCollection(acAccounts, Constants.CAModules.CreditCardClaimSAP);
            vs["FinanceConfirmUsers"] = GetDelemanNameCollection(financeConfirmAccounts, Constants.CAModules.CreditCardClaimSAP);
            var aCReviewTaskFormUrl = "/_Layouts/CA/WorkFlows/CreditCardClaim/ACReview.aspx";
            var financeConfirmTaskFormUrl = "/_Layouts/CA/WorkFlows/CreditCardClaim/FinanceConfirm.aspx";
            vs["ACReviewTaskFormUrl"] = aCReviewTaskFormUrl;
            vs["FinanceConfirmTaskFormUrl"] = financeConfirmTaskFormUrl;
            vs["ACReviewTitle"] = fields["Applicant"].ToString() + "'s Credit Card Claim";
            vs["FinanceConfirmTitle"] = fields["Applicant"].ToString() + "'s Credit Card Claim";
            var eventData = SerializeUtil.Serialize(vs);
            var wfName = "CreditCardClaimSAP";
            var wfAss = sAPList.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture);
            site.WorkflowManager.StartWorkflow(sAPListItem, wfAss, eventData);
            WorkFlowUtil.UpdateWorkflowPath(sAPListItem, eventData);
        }
Exemple #9
0
        /// <summary>
        /// Start Payment Request SAP WorkFlow
        /// </summary>
        /// <param name="fields"></param>
        private void AddPaymentRequestSAPWorkFlow(WorkflowDataFields fields)
        {
            SPSite site = SPContext.Current.Site;

            SPList sAPList = CA.SharePoint.SharePointUtil.GetList("Payment Request SAP WorkFlow");
            SPList sAPItemsList = CA.SharePoint.SharePointUtil.GetList("Payment Request SAP Items WorkFlow");
            SPListItem sAPListItem = sAPList.Items.Add();

            string workFlowNumber = "PRSAP_" + WorkFlowUtil.CreateWorkFlowNumber("PaymentRequestSAPWorkFlow").ToString("000000");
            sAPListItem["WorkflowNumber"] = workFlowNumber;
            //sAPListItem["PreTotalAmount"] = Math.Round(double.Parse(fields["TotalAmount"].ToString()) * (double.Parse(fields["PaidThisTime"].ToString()) / 100), 2);
            sAPListItem["Applicant"] = fields["Applicant"].ToString();
            sAPListItem["VendorNo"] = fields["VendorNo"].AsString();
            sAPListItem["FromPOStatus"] = bool.Parse(fields["IsFromPO"].ToString()) == true ? "1" : "0";
            string name = fields["Applicant"].ToString();
            string useraccount = name.Substring(name.IndexOf('(') + 1, name.IndexOf(')') - name.IndexOf('(') - 1);
            sAPListItem["ApplicantSPUser"] = this.EnsureUser(useraccount);
            sAPListItem["Status"] = CAWorkflowStatus.InProgress;
            sAPListItem["PRWorkflowNumber"] = fields["SubPRNo"].AsString();
            sAPListItem["PostSAPStatus"] = "0";
            sAPListItem["SystemPONo"] = fields["SystemPONo"].AsString();
            sAPListItem["PaidThisTime"] = fields["PaidThisTime"].AsString();
            sAPListItem["VendorName"] = fields["VendorName"].AsString();
            sAPListItem["PONo"] = fields["PONo"].AsString();
            sAPListItem["PaymentDesc"] = fields["PaymentDesc"].AsString();
            sAPListItem["RequestType"] = fields["RequestType"].AsString();

            sAPListItem["VendorCity"] = fields["VendorCity"].AsString();
            sAPListItem["VendorCountry"] = fields["VendorCountry"].AsString();
            sAPListItem["BankCity"] = fields["BankCity"].AsString();
            sAPListItem["SwiftCode"] = fields["SwiftCode"].AsString();//BankAccount
            sAPListItem["BankAccount"] = fields["BankAccount"].AsString();
            sAPListItem["TaxPrice"] = fields["TaxPrice"].AsString();
            sAPListItem["BankName"] = fields["BankName"].AsString();

            sAPListItem["ExchRate"] = fields["ExchRate"].AsString();
            sAPListItem["Currency"] = fields["Currency"].AsString();

            NameCollection acAccounts = null;
            NameCollection financeConfirmAccounts = null;
            if (bool.Parse(fields["IsFromPO"].ToString())==true)
            {
                if (fields["RequestType"].ToString().ToLower() == "opex")
                {
                    acAccounts = WorkFlowUtil.GetUsersInGroup(PaymentRequestGroupNames.Opex_ConstructionPO_SAPReview);
                    financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(PaymentRequestGroupNames.Opex_ConstructionPO_SAPConfirm);
                }
                else
                {
                    acAccounts = WorkFlowUtil.GetUsersInGroup(PaymentRequestGroupNames.Capex_ConstructionPO_SAPReview);
                    financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(PaymentRequestGroupNames.Capex_ConstructionPO_SAPConfirm);
                }
            }
            else
            {
                if (fields["RequestType"].ToString().ToLower() == "opex")
                {
                    acAccounts = WorkFlowUtil.GetUsersInGroup(PaymentRequestGroupNames.Opex_GeneralPO_SAPReview);
                    financeConfirmAccounts = WorkFlowUtil.GetUsersInGroup(PaymentRequestGroupNames.Opex_GeneralPO_SAPConfirm);
                }
            }

            System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
            strStepAndUsers.AppendFormat("{0}:{1};", "ACReviewTask", acAccounts.JoinString(","));
            strStepAndUsers.AppendFormat("{0}:{1};", "FinanceConfirmTask", financeConfirmAccounts.JoinString(","));
            sAPListItem["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

            Hashtable ht = GetExpenseTypeHashtable();

            DataTable itemDetails = PaymentRequestComm.GetDataTable(fields["SubPRNo"].AsString());
            double totalAmount = 0;
            foreach (DataRow dr in itemDetails.Rows)
            {
                SPListItem sAPItemsListItem = sAPItemsList.Items.Add();
                sAPItemsListItem["WorkflowNumber"] = sAPListItem["WorkflowNumber"].ToString();
                sAPItemsListItem["PRWorkflowNumber"] = sAPListItem["PRWorkflowNumber"].ToString();
                sAPItemsListItem["ExpenseType"] = dr["ExpenseType"].ToString();
                sAPItemsListItem["AssetNo"] = dr["FANO"].AsString();
                sAPItemsListItem["BusinessArea"] = "";
                //sAPItemsListItem["ItemAmount"] = Math.Round(double.Parse(dr["ItemAmount"].ToString()) * (double.Parse(dr["ItemAmount"].ToString()) / 100), 2);

                if (dr["ItemInstallmentAmount"].AsString() == "")
                {
                    if ((bool)fields["IsFromPO"] == false && GetString(fields["PaidInd"]).IsNotNullOrWhitespace() == true
                            && int.Parse(GetString(fields["PaidInd"])) == 1)
                    {
                        sAPItemsListItem["ItemAmount"] = Math.Round(double.Parse(dr["ItemAmount"].ToString()) * (double.Parse(fields["PaidThisTime"].ToString()) / 100), 2); ;

                    }
                    else
                    {
                        sAPItemsListItem["ItemAmount"] = Math.Round(double.Parse(dr["ItemAmount"].ToString()), 2);
                    }
                }
                else
                {
                    sAPItemsListItem["ItemAmount"] = Math.Round(double.Parse(dr["ItemInstallmentAmount"].ToString()), 2);
                }

                sAPItemsListItem["CostCenter"] = dr["CostCenter"].AsString();
                sAPItemsListItem["Status"] = "0";
                sAPItemsListItem["GLAccount"] = ht[dr["ExpenseType"].ToString()] != null ? ht[dr["ExpenseType"].ToString()].ToString() : "";
                sAPItemsListItem.Web.AllowUnsafeUpdates = true;
                sAPItemsListItem.Update();

                if (dr["ItemInstallmentAmount"].AsString() == "")
                {
                    if ((bool)fields["IsFromPO"] == false && GetString(fields["PaidInd"]).IsNotNullOrWhitespace() == true
                            && int.Parse(GetString(fields["PaidInd"])) == 1)
                    {
                        totalAmount += Math.Round(double.Parse(dr["ItemAmount"].ToString()) * (double.Parse(fields["PaidThisTime"].ToString()) / 100), 2);
                    }
                    else
                    {
                        totalAmount += Math.Round(double.Parse(dr["ItemAmount"].ToString()), 2);
                    }
                }
                else
                {
                    totalAmount += Math.Round(double.Parse(dr["ItemInstallmentAmount"].ToString()), 2);
                }
            }
            sAPListItem["PreTotalAmount"] = Math.Round(totalAmount, 2);
            //sAPListItem["PreTotalAmount"] = Math.Round(totalAmount * (double.Parse(fields["PaidThisTime"].ToString()) / 100), 2); ;

            sAPListItem.Web.AllowUnsafeUpdates = true;
            sAPListItem.Update();

            WorkflowVariableValues vs = new WorkflowVariableValues();
            vs["ACReviewUsers"] = GetDelemanNameCollection(acAccounts, "129");
            vs["FinanceConfirmUsers"] = GetDelemanNameCollection(financeConfirmAccounts, "129");
            var aCReviewTaskFormUrl = "/_Layouts/CA/WorkFlows/PaymentRequestSAP/ACReview.aspx";
            var financeConfirmTaskFormUrl = "/_Layouts/CA/WorkFlows/PaymentRequestSAP/FinanceConfirm.aspx";
            vs["ACReviewTaskFormUrl"] = aCReviewTaskFormUrl;
            vs["FinanceConfirmTaskFormUrl"] = financeConfirmTaskFormUrl;
            string taskTitle = fields["SubPRNo"].AsString() + " " + PaymentRequestDataView.VendorNameText + " " + PaymentRequestDataView.ApproveAmount + " " + fields["Applicant"].AsString() + "'s Payment Request ";
            vs["ACReviewTitle"] = taskTitle;
            vs["FinanceConfirmTitle"] = taskTitle ;
            var eventData = SerializeUtil.Serialize(vs);
            var wfName = "PaymentRequestSAPWorkFlow";
            var wfAss = sAPList.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture);
            site.WorkflowManager.StartWorkflow(sAPListItem, wfAss, eventData);
            WorkFlowUtil.UpdateWorkflowPath(sAPListItem, eventData);
        }
Exemple #10
0
        private void StartSAPWorkflow(WorkflowDataFields fields)
        {
            SPList list = SPContext.Current.Web.Lists[WorkflowListName.TravelExpenseClaimForSAP];
            SPListItem item = list.Items.Add();

            List<string> fieldsList = new List<string>() { "ApplicantSPUser",
                                                           "EnglishName"};

            string SAPWorkflowNumber = TravelExpenseClaimCommon.SaveListFields(fields, item, fieldsList);

            fieldsList.Clear();
            fieldsList = new List<string>(){"ExpenseType",
                                            "CostCenter",
                                            "RmbAmt",
                                            "ApprovedRmbAmt"
                                            };

            DataTable detailsDataTable = WorkFlowUtil.GetDataTableSource(fields["WorkflowNumber"].AsString(), WorkflowListName.TravelExpenseClaimDetails, fieldsList);
            WorkFlowUtil.BatchInsertDataTable(WorkflowListName.TravelExpenseClaimDetailsForSAP, SAPWorkflowNumber, detailsDataTable, null);
            item["Status"] = CAWorkflowStatus.InProgress;

            item.Update();

            WorkflowVariableValues vs = new WorkflowVariableValues();
            vs["ConfirmTaskFormURL"] = "/_Layouts/CA/Workflows/TravelExpenseClaimForSAP/NewForm.aspx";
            vs["ConfirmTaskTitle"] = fields["WorkflowNumber"].AsString() + ":Please confirm the Travel Expense Claim Info";
            vs["ConfirmTaskUsers"] = TravelExpenseClaimCommon.GetTaskUsersWithoutDeleman(WorkflowGroupName.WF_Accountants);
            vs["IsConfirm"] = true;

            var eventData = SerializeUtil.Serialize(vs);

            var wfAss = list.WorkflowAssociations.GetAssociationByName(WorkflowConfigName.TravelExpenseClaimForSAP,
                                                            CultureInfo.CurrentCulture);
            SPContext.Current.Site.WorkflowManager.StartWorkflow(item, wfAss, eventData);
            WorkFlowUtil.UpdateWorkflowPath(item, eventData);
        }