//启动流程 public void ApplyForm(APHelper AP, FormTableAdapter FormTA, int?RejectedFormID, FormDS.FormRow formRow, int OrganizationUnitID, string ProcessTemplateName, SystemEnums.FormStatus StatusID, Dictionary <string, object> map) { string email = string.Empty; if (StatusID == SystemEnums.FormStatus.Awaiting) { string ProcID = AP.createProcess(formRow.FormNo + ":" + DateTime.Now.ToString(), ProcessTemplateName, map); formRow.ProcID = ProcID; String inTurnStr = AP.startProcess(ProcID, OrganizationUnitID, ref email, formRow.UserID.ToString(), new AuthorizationBLL().GetStuffUserById(formRow.UserID).StuffName); string[] InTurn = inTurnStr.Split('&');//不同流程角色下的人员和职位 string ids = ""; string pids = ""; for (int a = 0; a < InTurn.Length; a++) { ids += InTurn[a].Split('$')[0].ToString(); ///人员 pids += InTurn[a].Split('$')[1].ToString(); //职位 } formRow.InTurnUserIds = ids; //下一步的人员 formRow.InTurnPositionIds = pids; //下一步的人员职位 formRow.StatusID = (int)SystemEnums.FormStatus.Awaiting; FormTA.Update(formRow); } //作废之前的单据 if (RejectedFormID != null) { FormDS.FormRow oldRow = FormTA.GetDataByID(RejectedFormID.GetValueOrDefault())[0]; if (oldRow.StatusID == (int)SystemEnums.FormStatus.Rejected) { ScrapForm(oldRow.FormID); } } }
//启动流程 public void ApplyForm(APHelper AP, FormTableAdapter FormTA, int? RejectedFormID, FormDS.FormRow formRow, int OrganizationUnitID, string ProcessTemplateName, SystemEnums.FormStatus StatusID, Dictionary<string, object> map) { string email = string.Empty; if (StatusID == SystemEnums.FormStatus.Awaiting) { string ProcID = AP.createProcess(formRow.FormNo + ":" + DateTime.Now.ToString(), ProcessTemplateName, map); formRow.ProcID = ProcID; String inTurnStr = AP.startProcess(ProcID, OrganizationUnitID, ref email, formRow.UserID.ToString(), new AuthorizationBLL().GetStuffUserById(formRow.UserID).StuffName); string[] InTurn = inTurnStr.Split('&');//不同流程角色下的人员和职位 string ids = ""; string pids = ""; for (int a = 0; a < InTurn.Length; a++) { ids += InTurn[a].Split('$')[0].ToString();///人员 pids += InTurn[a].Split('$')[1].ToString();//职位 } formRow.InTurnUserIds = ids;//下一步的人员 formRow.InTurnPositionIds = pids;//下一步的人员职位 formRow.StatusID = (int)SystemEnums.FormStatus.Awaiting; FormTA.Update(formRow); } //作废之前的单据 if (RejectedFormID != null) { FormDS.FormRow oldRow = FormTA.GetDataByID(RejectedFormID.GetValueOrDefault())[0]; if (oldRow.StatusID == (int)SystemEnums.FormStatus.Rejected) { ScrapForm(oldRow.FormID); } } }
//审批方法 public void ApproveForm(APHelper AP, int formID, int stuffUserId, string stuffName, bool pass, string comment, string ProxyStuffName, int OrganizationUnitID) { string email = string.Empty; SqlTransaction transaction = null; try { FormTableAdapter TAMainForm = new FormTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(TAMainForm); FormDS.FormRow formRow = TAMainForm.GetDataByID(formID)[0]; string returnValue = AP.approve(pass, comment, stuffUserId.ToString(), stuffName, formRow.ProcID, ProxyStuffName, formRow.OrganizationUnitID, ref email); string[] approveinfo = AP.GetProcessApproveUser(formRow.ProcID); if (AP.GetProcessIsEnd(formRow.ProcID)) { formRow.LastApprover = stuffUserId.ToString(); formRow.Comment = comment; formRow.ApprovedDate = Convert.ToDateTime(approveinfo[0]); } formRow.ApproverIds = approveinfo[3]; if (returnValue == null) { formRow.InTurnUserIds = "P"; formRow.InTurnPositionIds = "P"; //formRow.SubmitDate = DateTime.Now; if (pass) { //如果审批通过且返回值为空则该流程结束 formRow.StatusID = (int)SystemEnums.FormStatus.ApproveCompleted; //mailTitle = string.Format("您申请的编号为{0}的单据已经通过审批", formRow.FormNo); //mailBody = string.Format(mailBody, formRow.FormNo); //email = AP.getUserEmailByID(formRow.UserID); //AP.sendMail(email, "", mailTitle, mailBody); } else { //如果不通过则为驳回 formRow.StatusID = (int)SystemEnums.FormStatus.Rejected; //mailTitle = string.Format("您有单据申请被{0}退回", stuffName); //mailBody = string.Format(mailBody, formRow.FormNo); //email = AP.getUserEmailByID(formRow.UserID); //AP.sendMail(email, "", mailTitle, mailBody); } } else { string[] InTurn = returnValue.Split('&');//不同流程角色下的人员和职位 string ids = ""; string pids = ""; for (int a = 0; a < InTurn.Length; a++) { ids += InTurn[a].Split('$')[0].ToString(); ///人员 pids += InTurn[a].Split('$')[1].ToString(); //职位 } formRow.InTurnUserIds = ids; //下一步的人员 formRow.InTurnPositionIds = pids; //下一步的人员职位 //mailTitle = string.Format(mailTitle, stuffName, formRow.FormNo); //mailBody = string.Format(mailBody, formRow.FormNo); //AP.sendMail(email, "", mailTitle,mailBody); } TAMainForm.Update(formRow); transaction.Commit(); } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); } throw ex; } finally { if (transaction != null) { transaction.Dispose(); } } //System.Threading.Thread.Sleep(3000); }
public string GenerateFormAndReturnError(int i, DataRow row, LogDS.ImportFormLogDetailRow logDetailRow) { SqlTransaction transaction = null; string errorInfor = string.Empty; try { FormTableAdapter TAForm = new FormTableAdapter(); FormSaleSettlementTableAdapter TAFormSettlement = new FormSaleSettlementTableAdapter(); FormSalePaymentTableAdapter TASalePayment = new FormSalePaymentTableAdapter(); FormSalePaymentDetailTableAdapter TASalePaymentDetail = new FormSalePaymentDetailTableAdapter(); FormSettlementExpenseDetailTableAdapter TAFormSettlementExpenseDetail = new FormSettlementExpenseDetailTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(TAForm); TableAdapterHelper.SetTransaction(TASalePayment, transaction); TableAdapterHelper.SetTransaction(TASalePaymentDetail, transaction); FormDS.FormDataTable tbForm = new FormDS.FormDataTable(); FormDS.FormSalePaymentDataTable tbPayment = new FormDS.FormSalePaymentDataTable(); FormDS.FormSalePaymentDetailDataTable tbPaymentDetail = new FormDS.FormSalePaymentDetailDataTable(); FormDS.FormRow rowForm = null; FormDS.FormSalePaymentRow rowPayment = null; FormDS.FormSalePaymentDetailRow rowPaymentDetail = null; string settlementFormNo = string.Empty; DateTime SubmitDate = DateTime.Now; decimal PaymentAmount = 0; bool IsValid = true; if (CheckData(row) != null) { errorInfor = "第" + (i + 1) + "行有错:" + CheckData(row); IsValid = false; } else { settlementFormNo = row[0].ToString().Trim(); SubmitDate = DateTime.Parse(row[1].ToString()); PaymentAmount = decimal.Parse(row[2].ToString().Trim()); logDetailRow.SettlementFormNo = settlementFormNo; logDetailRow.PaymentAmount = PaymentAmount; FormDS.FormDataTable tbSettlement = TAForm.GetDataByFormNo(settlementFormNo); if (tbSettlement.Rows.Count <= 0) { errorInfor = "第" + (i + 1) + "行有错:系统中找不到结案单《" + settlementFormNo + "》"; IsValid = false; } FormDS.FormRow settlementForm = tbSettlement[0]; FormDS.FormSaleSettlementRow rowSettlement = TAFormSettlement.GetDataByID(settlementForm.FormID)[0]; if (rowSettlement.PaymentTypeID != 2 && rowSettlement.PaymentTypeID != 5) { errorInfor = "第" + (i + 1) + "行有错:该单据支付方式,不是票扣或者调整因子《" + settlementFormNo + "》"; IsValid = false; } if (rowSettlement.IsClose) { errorInfor = "第" + (i + 1) + "行有错:该单据已标记为支付完成《" + settlementFormNo + "》"; IsValid = false; } if (rowSettlement.PaymentTypeID == 2 && PaymentAmount > rowSettlement.AmountRMB) { errorInfor = "第" + (i + 1) + "行有错:支付金额超过结案金额《" + settlementFormNo + "》"; IsValid = false; } if (IsValid) { //生成单据 rowForm = tbForm.NewFormRow(); rowPayment = tbPayment.NewFormSalePaymentRow(); //生成Form rowForm.SetRejectedFormIDNull(); //申请人取结案单申请人 rowForm.UserID = settlementForm.UserID; UtilityBLL utility = new UtilityBLL(); rowForm.FormNo = utility.GetFormNo(utility.GetFormTypeString((int)SystemEnums.FormType.SalePayment)); rowForm.SetProxyUserIDNull(); rowForm.SetProxyPositionIDNull(); //申请人部门取结案单申请人所在部门 rowForm.OrganizationUnitID = settlementForm.OrganizationUnitID; rowForm.PositionID = settlementForm.PositionID; rowForm.FormTypeID = (int)SystemEnums.FormType.SalePayment; rowForm.StatusID = (int)SystemEnums.FormStatus.ApproveCompleted; rowForm.SubmitDate = SubmitDate; rowForm.LastModified = SubmitDate; rowForm.InTurnUserIds = "P";//待改动 rowForm.InTurnPositionIds = "P";//待改动 rowForm.PageType = (int)SystemEnums.PageType.PaymentCash; rowForm.CostCenterID = settlementForm.CostCenterID; rowForm.ApprovedDate = SubmitDate; //是否创建凭证? rowForm.IsCreateVoucher = false; rowForm.IsExportLock = false; rowForm.IsCompletePayment = false; rowForm.IsInvoiceReturned = false; tbForm.AddFormRow(rowForm); TAForm.Update(rowForm); //生成FormPayment rowPayment.FormSalePaymentID = rowForm.FormID; rowPayment.FormSaleSettlementID = settlementForm.FormID; //生成时,不考虑预付款 rowPayment.SetFormSaleApplyIDNull(); rowPayment.InvoiceStatusID = (int)SystemEnums.InvoiceStatus.No; rowPayment.PaymentTypeID = rowSettlement.PaymentTypeID; //报销申请单备注 rowPayment.Remark = "此单据为自动生成单据。"; rowPayment.SetAttachedFileNameNull(); rowPayment.SetRealAttachedFileNameNull(); //报销金额 rowPayment.AmountRMB = PaymentAmount; rowPayment.VatTypeID = 1; rowPayment.AmountBeforeTax = rowPayment.AmountRMB; rowPayment.TaxAmount = 0; rowPayment.IsAdvanced = false; //VendorID设置什么值 rowPayment.SetVendorIDNull(); tbPayment.AddFormSalePaymentRow(rowPayment); TASalePayment.Update(rowPayment); //生成FormPaymentDetail decimal UsedAmount = 0; FormDS.FormSettlementExpenseDetailDataTable tbSettlementExpenseDetail = TAFormSettlementExpenseDetail.GetDataByFormSaleSettlementID(rowSettlement.FormSaleSettlementID); FormDS.FormSettlementExpenseDetailRow rowSettlementExpenseDetail = null; for (int j = 0; j < tbSettlementExpenseDetail.Rows.Count; j++) { rowSettlementExpenseDetail = (FormDS.FormSettlementExpenseDetailRow)tbSettlementExpenseDetail.Rows[j]; rowPaymentDetail = tbPaymentDetail.NewFormSalePaymentDetailRow(); rowPaymentDetail.FormSalePaymentID = rowPayment.FormSalePaymentID; rowPaymentDetail.FormSaleApplyID = rowSettlementExpenseDetail.FormSaleApplyID; rowPaymentDetail.FormSaleExpenseDetailID = rowSettlementExpenseDetail.FormSaleExpenseDetailID; rowPaymentDetail.ApplyFormNo = rowSettlementExpenseDetail.ApplyFormNo; rowPaymentDetail.ApplyPeriod = rowSettlementExpenseDetail.ApplyPeriod; rowPaymentDetail.ApplyProjectName = rowSettlementExpenseDetail.ApplyProjectName; rowPaymentDetail.ExpenseItemID = rowSettlementExpenseDetail.ExpenseItemID; if (!rowSettlementExpenseDetail.IsShopNameNull()) { rowPaymentDetail.ShopName = rowSettlementExpenseDetail.ShopName; } rowPaymentDetail.SKUID = rowSettlementExpenseDetail.SKUID; rowPaymentDetail.ApplyAmount = rowSettlementExpenseDetail.ApplyAmount; rowPaymentDetail.ApplyAmountRMB = rowSettlementExpenseDetail.ApplyAmountRMB; rowPaymentDetail.SettlementAmount = rowSettlementExpenseDetail.AmountRMB; rowPaymentDetail.TaxAmount = 0; //待改动 if (j == tbSettlementExpenseDetail.Rows.Count - 1) { rowPaymentDetail.AmountRMB = PaymentAmount - UsedAmount; rowPaymentDetail.AmountBeforeTax = rowPaymentDetail.AmountRMB; rowPaymentDetail.TaxAmount = rowPaymentDetail.TaxAmount; rowPaymentDetail.PayedAmount = 0; rowPaymentDetail.RemainAmount = 0; UsedAmount += rowPaymentDetail.AmountRMB; } else { rowPaymentDetail.AmountRMB = decimal.Round((rowSettlementExpenseDetail.AmountRMB / rowSettlement.AmountRMB) * PaymentAmount, 2); rowPaymentDetail.AmountBeforeTax = rowPaymentDetail.AmountRMB; rowPaymentDetail.TaxAmount = 0; rowPaymentDetail.PayedAmount = 0; rowPaymentDetail.RemainAmount = 0; UsedAmount += rowPaymentDetail.AmountRMB; } tbPaymentDetail.AddFormSalePaymentDetailRow(rowPaymentDetail); TASalePaymentDetail.Update(tbPaymentDetail); } logDetailRow.PaymentFormNo = rowForm.FormNo; } } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); errorInfor = e.Message.ToString(); } finally { transaction.Dispose(); } return errorInfor; }
//审批方法 public void ApproveForm(int formID, int stuffUserId, string stuffName, bool pass, string comment, string ProxyStuffName,bool CheckPeriod = false) { string email = string.Empty; SqlTransaction transaction = null; try { string l_strtitle = ""; StringBuilder l_strbody = new StringBuilder(); FormTableAdapter TAMainForm = new FormTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(TAMainForm); FormDS.FormRow formRow = TAMainForm.GetDataByID(formID)[0]; string returnValue = AP.approve(pass, comment, stuffUserId.ToString(), stuffName, formRow.ProcID, ProxyStuffName, formRow.OrganizationUnitID, ref email,CheckPeriod); // UtilityBLL ubll = new UtilityBLL(); string[] approveinfo = AP.GetProcessApproveUser(formRow.ProcID); if (AP.GetProcessIsEnd(formRow.ProcID)) { formRow.LastApprover = stuffUserId; formRow.Comment = comment; formRow.ApprovedDate = Convert.ToDateTime(approveinfo[0]); } formRow.ApproverIds = approveinfo[3]; if (returnValue == null) { formRow.InTurnUserIds = "P"; formRow.InTurnPositionIds = "P"; formRow.ApprovedDate = DateTime.Now; if (pass) { //如果审批通过且返回值为空则该流程结束 formRow.StatusID = (int)SystemEnums.FormStatus.ApproveCompleted; } else { //如果不通过则为驳回 formRow.StatusID = (int)SystemEnums.FormStatus.Rejected; } } else { string[] InTurn = returnValue.Split('&');//不同流程角色下的人员和职位 string ids = ""; string pids = ""; for (int a = 0; a < InTurn.Length; a++) { ids += InTurn[a].Split('$')[0].ToString();///人员 pids += InTurn[a].Split('$')[1].ToString();//职位 } formRow.InTurnUserIds = ids;//下一步的人员 formRow.InTurnPositionIds = pids;//下一步的人员职位 } TAMainForm.Update(formRow); transaction.Commit(); #region 发送邮件 try { QueryDS.FormViewRow l_drformView = new FormQueryBLL().GetFormViewByID(formID); if (pass) { if (!string.IsNullOrEmpty(returnValue)) { l_strtitle = "有一份" + l_drformView.FormTypeName + "单据,编号为:" + l_drformView.FormNo + ",等待您的审批!"; l_strbody.Append("您好,<br>"); l_strbody.Append(" 有一份" + l_drformView.StuffName + "提交的" + l_drformView.FormTypeName + "单据,编号:" + l_drformView.FormNo + ",等待您的审批!"); l_strbody.Append("<br>此邮件请勿回复!"); mailBody = string.Format(mailBody, l_strbody.ToString()); sendMail(email, "", l_strtitle, mailBody); //AP.sendMail(emailTo, "", l_strtitle, mailBody); } else { l_strtitle = "您的" + l_drformView.FormTypeName + "单据,编号为:" + l_drformView.FormNo + ",已审批完成!"; l_strbody.Append("您好,<br>"); l_strbody.Append(" 您于" + l_drformView.SubmitDate.ToString("yyyy-MM-dd") + "提交的" + l_drformView.FormTypeName + "单据,编号:" + l_drformView.FormNo + ",已经审批通过!"); l_strbody.Append("<br>此邮件请勿回复!"); mailBody = string.Format(mailBody, l_strbody.ToString()); sendMail(AuthorizationBLL.GetStuffUserById(formRow.UserID).EMail, "", l_strtitle, mailBody); //AP.sendMail(emailTo, "", l_strtitle, mailBody); } } else { l_strtitle = "您的" + l_drformView.FormTypeName + "单据,编号为:" + l_drformView.FormNo + ",被驳回!"; l_strbody.Append("您好,<br>"); l_strbody.Append(" 您于" + l_drformView.SubmitDate.ToString("yyyy-MM-dd") + "提交的" + l_drformView.FormTypeName + "单据,编号:" + l_drformView.FormNo + ",被" + stuffName + "驳回!"); l_strbody.Append("<br>此邮件请勿回复!"); mailBody = string.Format(mailBody, l_strbody.ToString()); sendMail(AuthorizationBLL.GetStuffUserById(formRow.UserID).EMail, "", l_strtitle, mailBody); //AP.sendMail(emailTo, "", l_strtitle, mailBody); } } catch (Exception e1) { } #endregion } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); } throw ex; } finally { if (transaction != null) { transaction.Dispose(); } } }
//审批方法 public void ApproveForm(APHelper AP, int formID, int stuffUserId, string stuffName, bool pass, string comment, string ProxyStuffName, int OrganizationUnitID) { string email = string.Empty; SqlTransaction transaction = null; try { FormTableAdapter TAMainForm = new FormTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(TAMainForm); FormDS.FormRow formRow = TAMainForm.GetDataByID(formID)[0]; string returnValue = AP.approve(pass, comment, stuffUserId.ToString(), stuffName, formRow.ProcID, ProxyStuffName, formRow.OrganizationUnitID, ref email); string[] approveinfo = AP.GetProcessApproveUser(formRow.ProcID); if (AP.GetProcessIsEnd(formRow.ProcID)) { formRow.LastApprover = stuffUserId.ToString(); formRow.Comment = comment; formRow.ApprovedDate = Convert.ToDateTime(approveinfo[0]); } formRow.ApproverIds = approveinfo[3]; if (returnValue == null) { formRow.InTurnUserIds = "P"; formRow.InTurnPositionIds = "P"; //formRow.SubmitDate = DateTime.Now; if (pass) { //如果审批通过且返回值为空则该流程结束 formRow.StatusID = (int)SystemEnums.FormStatus.ApproveCompleted; //mailTitle = string.Format("您申请的编号为{0}的单据已经通过审批", formRow.FormNo); //mailBody = string.Format(mailBody, formRow.FormNo); //email = AP.getUserEmailByID(formRow.UserID); //AP.sendMail(email, "", mailTitle, mailBody); } else { //如果不通过则为驳回 formRow.StatusID = (int)SystemEnums.FormStatus.Rejected; //mailTitle = string.Format("您有单据申请被{0}退回", stuffName); //mailBody = string.Format(mailBody, formRow.FormNo); //email = AP.getUserEmailByID(formRow.UserID); //AP.sendMail(email, "", mailTitle, mailBody); } } else { string[] InTurn = returnValue.Split('&');//不同流程角色下的人员和职位 string ids = ""; string pids = ""; for (int a = 0; a < InTurn.Length; a++) { ids += InTurn[a].Split('$')[0].ToString();///人员 pids += InTurn[a].Split('$')[1].ToString();//职位 } formRow.InTurnUserIds = ids;//下一步的人员 formRow.InTurnPositionIds = pids;//下一步的人员职位 //mailTitle = string.Format(mailTitle, stuffName, formRow.FormNo); //mailBody = string.Format(mailBody, formRow.FormNo); //AP.sendMail(email, "", mailTitle,mailBody); } TAMainForm.Update(formRow); transaction.Commit(); } catch (Exception ex) { if (transaction != null) transaction.Rollback(); throw ex; } finally { if (transaction != null) transaction.Dispose(); } //System.Threading.Thread.Sleep(3000); }