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); }
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); }
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); }
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); } }
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; }
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); }
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); }
/// <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); }
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); }