public override IList <SuRole> GetPermitRoleVerifyAndApproveVerify(long workFlowID) { WorkFlow workFlow = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID); AvAdvanceDocument advanceDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(workFlow.Document.DocumentID); //Check user role can Verify document IList <SuRole> permitRoles = QueryProvider.SuUserRoleQuery.GetRoleVerifyAndApproveVerifyPayment(); //Check Service Team //IList<SuRole> serviceTeamRoles = QueryProvider.SuRoleServiceQuery.GetRoleByServiceTeamID(advanceDocument.ServiceTeamID.ServiceTeamID); //var documentPermitRoles = from role in permitRoles // join serviceTeamRole in serviceTeamRoles // on role.RoleID equals serviceTeamRole.RoleID // select role; //return documentPermitRoles.ToList<SuRole>(); //Check PB long pbId = 0; if (advanceDocument.PBID != null) { pbId = advanceDocument.PBID.Pbid; } IList <SuRole> cashierRoles = QueryProvider.SuRolePBQuery.FindRoleByPBID(pbId); var documentPermitRoles = from role in permitRoles join cashierRole in cashierRoles on role.RoleID equals cashierRole.RoleID select role; return(documentPermitRoles.ToList <SuRole>()); }
public override IList <SuRole> GetPermitRoleCounterCashier(long workFlowID) { WorkFlow workFlow = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID); AvAdvanceDocument advanceDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(workFlow.Document.DocumentID); //Check user role is Counter Cashier IList <SuRole> permitRoles = QueryProvider.SuUserRoleQuery.GetRoleCounterCashier(); if (permitRoles.Count == 0) { return(permitRoles); } ////Check Service Team //IList<SuRole> serviceTeamRoles = QueryProvider.SuRoleServiceQuery.GetRoleByServiceTeamID(advanceDocument.ServiceTeamID.ServiceTeamID); //var documentPermitRoles = from role in permitRoles // join serviceTeamRole in serviceTeamRoles // on role.RoleID equals serviceTeamRole.RoleID // select role; //permitRoles = documentPermitRoles.ToList<SuRole>(); //if (permitRoles.Count == 0) return permitRoles; //Check PB IList <SuRole> cashierRoles = QueryProvider.SuRolePBQuery.FindRoleByPBID(advanceDocument.PBID.Pbid); var documentPermitRoles = from role in permitRoles join cashierRole in cashierRoles on role.RoleID equals cashierRole.RoleID select role; return(documentPermitRoles.ToList <SuRole>()); }
private bool CanApprove(long DocID, string DocKind) { SS.Standard.WorkFlow.DTO.WorkFlow workflow = WorkFlowQueryProvider.WorkFlowQuery.GetWorkFlowByDocumentID(DocID); bool boolReturn = false; if (workflow == null) { //this.Alert("Don't Found WorkflowID of this DocumentID !!!"); } else if (DocKind == DocumentKind.Advance.ToString()) { AvAdvanceDocument avDoc = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(DocID); if (workflow.CurrentState.Name.ToString() != SCG.eAccounting.SAP.BAPI.Service.Const.WorkFlowStatEventNameConst.WaitApproveVerify) { boolReturn = false; } else if (avDoc.AdvanceType == "DM") { boolReturn = AdvanceWorkFlowService.CanApproveWaitApproveVerify(workflow.WorkFlowID); } else { boolReturn = AdvanceForeignWorkFlowService.CanApproveWaitApproveVerify(workflow.WorkFlowID); } } else if (DocKind == DocumentKind.Remittance.ToString()) { if (workflow.CurrentState.Name.ToString() != SCG.eAccounting.SAP.BAPI.Service.Const.WorkFlowStatEventNameConst.WaitApproveRemittance) { boolReturn = false; } else { boolReturn = RemittanceWorkFlowService.CanApproveWaitApproveRemittance(workflow.WorkFlowID); } } else if (DocKind == DocumentKind.Expense.ToString()) { if (workflow.CurrentState.Name.ToString() != SCG.eAccounting.SAP.BAPI.Service.Const.WorkFlowStatEventNameConst.WaitApproveVerify) { boolReturn = false; } else { boolReturn = ExpenseWorkFlowService.CanApproveWaitApproveVerify(workflow.WorkFlowID); } } else if (DocKind == DocumentKind.ExpenseRemittance.ToString()) { if (workflow.CurrentState.Name.ToString() != SCG.eAccounting.SAP.BAPI.Service.Const.WorkFlowStatEventNameConst.WaitRemittance) { boolReturn = false; } else { boolReturn = ExpenseWorkFlowService.CanPayWaitRemittance(workflow.WorkFlowID); } } return(boolReturn); }
public void PrepareAdvance(IList <SCG.eAccounting.DTO.ValueObject.Advance> advanceList) { foreach (SCG.eAccounting.DTO.ValueObject.Advance advance in advanceList) { AvAdvanceDocument advanceDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.FindProxyByIdentity(advance.AdvanceID); if (advanceDocument.TADocumentID != null && advanceDocument.TADocumentID != 0) { // For query only advance that // 1. Status = OutStanding // 2. Do not used in Expense that has flag <> 'Cancel' SCG.eAccounting.DTO.ValueObject.Advance avCriteria = new SCG.eAccounting.DTO.ValueObject.Advance(); avCriteria.CompanyID = CompanyID; avCriteria.RequesterID = RequesterID; avCriteria.AdvanceType = FnExpenseDocumentService.GetExpenseType(this.ExpDocumentID, this.TransactionId); advance.ExpenseType = avCriteria.AdvanceType; avCriteria.TADocumentID = advanceDocument.TADocumentID; //Delete all advance and remittance in ExpenseAdvance Datatable. //กรณีที่มีรายการ advance ที่อ้างอิง TA อยู่ใน advanceList ที่เลือกมา this.ClearAdvanceGridview(); //this.ClearRemittanceGridview(); FnExpenseDocumentService.SetTA(this.TransactionId, this.ExpDocumentID, avCriteria); TADocument ta = ScgeAccountingQueryProvider.TADocumentQuery.FindByIdentity(advanceDocument.TADocumentID.Value); SS.Standard.WorkFlow.DTO.WorkFlow wf = SS.Standard.WorkFlow.Query.WorkFlowQueryProvider.WorkFlowQuery.GetWorkFlowByDocumentID(ta.DocumentID.DocumentID); ctlTANoLabel.Visible = false; ctlTALinkButton.Text = ta.DocumentID.DocumentNo; ctlTALinkButton.OnClientClick = "window.open('../Programs/DocumentView.aspx?wfid=" + wf.WorkFlowID.ToString() + "')"; ctlBusinessChk.Checked = ta.IsBusinessPurpose; ctlTrainingChk.Checked = ta.IsTrainningPurpose; ctlOtherChk.Checked = ta.IsOtherPurpose; ctlOther.Text = ta.OtherPurposeDescription; ctlCountry.Text = ta.Country; ctlFromDateCal.Value = ta.FromDate; ctlToDateCal.Value = ta.ToDate; ctlAddAdvance.Enabled = false; ctlAdvanceGridView.Columns[7].Visible = false; ctlTANoLookup.Enabled = true; ctlDeleteTA.Enabled = true; break; } else { double totalAdvance = FnExpenseDocumentService.AddExpenseAdvanceToTransaction(this.TransactionId, this.ExpDocumentID, advanceList, 0); FnExpenseDocumentService.SetTotalAdvance(this.TransactionId, 0, totalAdvance); FnExpenseDocumentService.RefreshRemittance(this.TransactionId, this.ExpDocumentID); //break; } } }
protected void ctlAdvanceReportGrid_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandSource is LinkButton) { int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex; long requesterID = UIHelper.ParseLong(ctlAdvanceReportGrid.DataKeys[rowIndex].Values["RequesterID"].ToString()); long documentID = UIHelper.ParseLong(ctlAdvanceReportGrid.DataKeys[rowIndex].Values["DocumentID"].ToString()); long advanceID = UIHelper.ParseLong(ctlAdvanceReportGrid.DataKeys[rowIndex].Values["AdvanceID"].ToString()); long expenseID = UIHelper.ParseLong(ctlAdvanceReportGrid.DataKeys[rowIndex].Values["ExpenseID"].ToString()); string requestNo = ctlAdvanceReportGrid.DataKeys[rowIndex].Values["DocumentNo"].ToString(); SCGDocument doc = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(documentID); if (e.CommandName == "ClickEmail") { ctlSendFollowUpEmail.CreatorID = doc == null ? 0 : doc.CreatorID.Userid; ctlSendFollowUpEmail.RequesterID = requesterID; ctlSendFollowUpEmail.DocumentID = documentID; ctlSendFollowUpEmail.AdvanceDocumentID = advanceID; ctlSendFollowUpEmail.RequestNo = requestNo; ctlSendFollowUpEmail.EmailType = EmailType.EM10.ToString(); ctlSendFollowUpEmail.Show(); } else if (e.CommandName == "ClickSendtime") { ctlSendFollowUpEmail.DocumentID = documentID; AvAdvanceDocument scgDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(documentID); if (scgDocument != null) { string documentNo = scgDocument.DocumentID.DocumentNo; //ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), string.Empty, "window.open('../Reports/EmailLogView.aspx?isDuplication=" + Boolean.FalseString + "&EmailType=EM10&RequestNo=" + documentNo + "')", true); ctlEmailLog.RequestNo = documentNo; ctlEmailLog.EmailType = "EM10"; ctlEmailLog.isDisplayCriteria = false; ctlEmailLog.Show(); ctlModalPopupExtender.Show(); } } else if (e.CommandName == "ClickAdvanceNo") { WorkFlow wf = WorkFlowQueryProvider.WorkFlowQuery.GetWorkFlowByDocumentID(documentID); if (wf != null) { ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), string.Empty, "window.open('../Programs/DocumentView.aspx?wfid=" + wf.WorkFlowID.ToString() + "')", true); } } else if (e.CommandName == "ClickExpenseNo") { WorkFlow wf = WorkFlowQueryProvider.WorkFlowQuery.GetWorkFlowByDocumentID(expenseID); if (wf != null) { ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), string.Empty, "window.open('../Programs/DocumentView.aspx?wfid=" + wf.WorkFlowID.ToString() + "')", true); } } } }
public void InsertAvAdvanceItem(Guid txID, long advanceID) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); AdvanceDataSet advanceDS = (AdvanceDataSet)TransactionService.GetDS(txID); AvAdvanceDocument avDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.FindProxyByIdentity(advanceID); AdvanceDataSet.AvAdvanceItemDataTable insertTable = (AdvanceDataSet.AvAdvanceItemDataTable)advanceDS.AvAdvanceItem.GetChanges(DataRowState.Added); if (insertTable != null) { foreach (AdvanceDataSet.AvAdvanceItemRow row in insertTable.Rows) { AvAdvanceItem advanceItem = new AvAdvanceItem(); advanceItem.AdvanceID = avDocument; if (!row.IsNull(advanceDS.AvAdvanceItem.PaymentTypeColumn.ColumnName)) { advanceItem.PaymentType = row.PaymentType; } if (!row.IsNull(advanceDS.AvAdvanceItem.CurrencyIDColumn.ColumnName)) { advanceItem.CurrencyID = new SS.DB.DTO.DbCurrency(row.CurrencyID); } if (!row.IsNull(advanceDS.AvAdvanceItem.AmountColumn.ColumnName)) { advanceItem.Amount = (double)Math.Round(row.Amount, 2, MidpointRounding.AwayFromZero); } if (!row.IsNull(advanceDS.AvAdvanceItem.ExchangeRateColumn.ColumnName)) { advanceItem.ExchangeRate = (double)Math.Round(row.ExchangeRate, 5, MidpointRounding.AwayFromZero); } if (!row.IsNull(advanceDS.AvAdvanceItem.AmountTHBColumn.ColumnName)) { advanceItem.AmountTHB = (double)Math.Round(row.AmountTHB, 2, MidpointRounding.AwayFromZero); } advanceItem.Active = row.Active; advanceItem.CreBy = UserAccount.UserID; advanceItem.CreDate = DateTime.Now; advanceItem.UpdBy = UserAccount.UserID; advanceItem.UpdDate = DateTime.Now; advanceItem.UpdPgm = UserAccount.CurrentProgramCode; // if row.ScheduleID < 0 is new record that no data in database. if (row.AdvanceItemID < 0) { ScgeAccountingDaoProvider.AvAdvanceItemDao.Save(advanceItem); } } } }
public void ValidateRemittanceAdvance(Guid txID, long remittnceID) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); FnRemittanceDataset remittanceDs = (FnRemittanceDataset)TransactionService.GetDS(txID); DataRow[] rowAdvList = remittanceDs.FnRemittanceAdvance.Select(string.Format("RemittanceID = '{0}'", remittnceID)); FnRemittanceDataset.FnRemittanceRow remittanceRow = remittanceDs.FnRemittance.FindByRemittanceID(remittnceID); if (remittanceRow != null) { long companyId = remittanceRow.DocumentRow == null ? 0 : remittanceRow.DocumentRow.CompanyID; long requesterId = remittanceRow.DocumentRow == null ? 0 : remittanceRow.DocumentRow.RequesterID; foreach (FnRemittanceDataset.FnRemittanceAdvanceRow row in rowAdvList) { AvAdvanceDocument adv = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.FindByIdentity(row.AdvanceID); if (adv != null && adv.DocumentID != null && adv.DocumentID.CompanyID != null) { if (companyId != 0 && adv.DocumentID.CompanyID.CompanyID != companyId) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CanNotSaveRemittance_CompanyIsNotMatch", adv.DocumentID.DocumentNo)); // Company of ADV-xxxxxxx is not match } } if (adv != null && adv.DocumentID != null && adv.DocumentID.RequesterID != null) { if (requesterId != 0 && adv.DocumentID.RequesterID.Userid != requesterId) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CanNotAddAdvance_RequesterIsNotMatch")); // Requester of ADV-xxxxxxx is not match } } } } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } }
public void MultipleApproveVerify() { IList <long> workflowList = GetWorkflowIDForMultipleApprove(); ApproveVerifyStatus approveVerifyStatus = null; List <ApproveVerifyStatus> approveVerifyStatusList = new List <ApproveVerifyStatus>(); foreach (long workflowId in workflowList) { try { SS.Standard.WorkFlow.DTO.WorkFlow workFlow = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workflowId); SCGDocument document = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID); approveVerifyStatus = new ApproveVerifyStatus(); approveVerifyStatus.DocumentNo = document.DocumentNo; approveVerifyStatus.Subject = document.Subject; int workFlowStateEventID = ScgeAccountingQueryProvider.SCGDocumentQuery.GetWorkStateEvent(workFlow.CurrentState.WorkFlowStateID, WorkFlowEventNameConst.Approve); if (workFlow.WorkFlowType.WorkFlowTypeID == WorkFlowTypeID.AdvanceWorkFlowType) { AvAdvanceDocument advDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(workFlow.Document.DocumentID); approveVerifyStatus.Amount = advDocument.Amount; IList <WorkFlowStateEvent> workFlowState = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindWorkFlowStateEvent(WorkFlowEventNameConst.Approve, WorkFlowStatEventNameConst.WaitApproveVerify, WorkFlowTypeName.Advance); object eventData = new SubmitResponse(workFlowState[0].WorkFlowStateEventID); WorkFlowService.NotifyEvent(workflowId, WorkFlowEventNameConst.Approve, eventData); } else if (workFlow.WorkFlowType.WorkFlowTypeID == WorkFlowTypeID.ExpenseWorkFlow) { FnExpenseDocument expDocument = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(workFlow.Document.DocumentID); approveVerifyStatus.Amount = expDocument.DifferenceAmount; IList <WorkFlowStateEvent> workFlowState = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindWorkFlowStateEvent(WorkFlowEventNameConst.Approve, WorkFlowStatEventNameConst.WaitApproveVerify, WorkFlowTypeName.Expense); object eventData = new SubmitResponse(workFlowState[0].WorkFlowStateEventID); WorkFlowService.NotifyEvent(workflowId, WorkFlowEventNameConst.Approve, eventData); } else if (workFlow.WorkFlowType.WorkFlowTypeID == WorkFlowTypeID.RemittanceWorkFlow) { FnRemittance rmtDocument = ScgeAccountingQueryProvider.FnRemittanceQuery.GetFnRemittanceByDocumentID(workFlow.Document.DocumentID); approveVerifyStatus.Amount = rmtDocument.TotalAmount; IList <WorkFlowStateEvent> workFlowState = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindWorkFlowStateEvent(WorkFlowEventNameConst.Approve, WorkFlowStatEventNameConst.WaitApproveRemittance, WorkFlowTypeName.Remittance); object eventData = new SubmitResponse(workFlowState[0].WorkFlowStateEventID); WorkFlowService.NotifyEvent(workflowId, WorkFlowEventNameConst.Approve, eventData); } approveVerifyStatus.Status = "Success"; } catch (ServiceValidationException ex) { approveVerifyStatus.Status = "Error"; approveVerifyStatus.Reason = new List <string>(); foreach (Spring.Validation.ErrorMessage errorMsg in ex.ValidationErrors.GetErrors("WorkFlow.Error")) { approveVerifyStatus.Reason.Add(errorMsg.Id); } //ctlApproveStatusSummary.ValidationErrors.MergeErrors(ex.ValidationErrors); } approveVerifyStatusList.Add(approveVerifyStatus); } if (approveVerifyStatusList.Count > 0) { ctlApproveStatusSummary.DataList = approveVerifyStatusList.OrderBy(x => x.Status).ThenBy(x => x.DocumentNo).ToList(); ctlApproveStatusSummary.BindGridView(); ctlApproveResultSummaryModalPopupExtender.Show(); } }
public void SendSMS02(long workFlowID, string RequestID, IList <long> ReciverList, bool isAutoPayment) { double netAmount = 0; try { if (ParameterServices.EnableSMS) { Document document = WorkFlowQueryProvider.WorkFlowQuery.GetDocumentByWorkFlowID(workFlowID); SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(document.DocumentID); if (!isAutoPayment) // Cash { #region Cash if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.ExpenseDomesticDocument) || (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.ExpenseForeignDocument))) { FnExpenseDocument expense = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(scgDocument.DocumentID); if (expense != null) { netAmount = expense.DifferenceAmount; } } else if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.AdvanceDomesticDocument) || (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.AdvanceForeignDocument))) { AvAdvanceDocument advance = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(scgDocument.DocumentID); if (advance != null) { netAmount = advance.Amount; } } #endregion Cash foreach (long userID in ReciverList) { SuUser sendToUser = QueryProvider.SuUserQuery.FindByIdentity(userID); if (sendToUser.SMSReadyToReceive) { string ToPhoneNo = sendToUser.MobilePhoneNo.ToString(); SMSDTO smsDto = new SMSDTO(); string Mobile = "66" + ToPhoneNo.ToString().Remove(0, 1); smsDto.Requestor = RequestID; smsDto.DocumentNo = scgDocument.DocumentNo; smsDto.Amount = netAmount.ToString(); smsDto.To = Mobile; smsDto.UseProxy = true; smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS02, SMSBusinessCase.Cash); this.sendSMSStatus = SMSService.Send(smsDto); } } } else // Cheque { #region Cheque FnAutoPayment autoPayment = ScgeAccountingQueryProvider.FnAutoPaymentQuery.GetFnAutoPaymentByDocumentID(document.DocumentID); netAmount = autoPayment.Amount; #endregion Cheque foreach (long userID in ReciverList) { SuUser sendToUser = QueryProvider.SuUserQuery.FindByIdentity(userID); if (sendToUser.SMSReadyToReceive) { string ToPhoneNo = sendToUser.MobilePhoneNo.ToString(); SMSDTO smsDto = new SMSDTO(); string Mobile = "66" + ToPhoneNo.ToString().Remove(0, 1); smsDto.Requestor = RequestID; smsDto.DocumentNo = scgDocument.DocumentNo; smsDto.PaymentDate = autoPayment.PaymentDate.Value; smsDto.Amount = netAmount.ToString(); smsDto.To = Mobile; smsDto.UseProxy = true; smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS02, SMSBusinessCase.Cheque); this.sendSMSStatus = SMSService.Send(smsDto); } } } } } catch (Exception ex) { Utilities.WriteLogs("SendSMS02 : ==> " + ex.Message, "smslog", "Logs", "txt"); } }
public void SendSMS01(long workFlowID, long sendToUserID) { try { if (ParameterServices.EnableSMS) { string tokenSMSCode = SaveResponseTokenSMS(workFlowID, sendToUserID); SuUser sendToUser = QueryProvider.SuUserQuery.FindByIdentity(sendToUserID); if (sendToUser.SMSApproveOrReject) { IList <WorkFlowResponseToken> responseTokens = WorkFlowQueryProvider.WorkFlowResponseTokenQuery.FindByTokenCode(tokenSMSCode); Document document = WorkFlowQueryProvider.WorkFlowQuery.GetDocumentByWorkFlowID(workFlowID); SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(document.DocumentID); SuUser RequesterUser = QueryProvider.SuUserQuery.FindByIdentity(scgDocument.RequesterID.Userid); SMSDTO smsDto = new SMSDTO(); smsDto.From = SS.DB.Query.ParameterServices.SMSPhoneNumber; string Mobile = "66" + sendToUser.MobilePhoneNo.ToString().Remove(0, 1); smsDto.To = Mobile; smsDto.ReferenceID = tokenSMSCode; smsDto.Requestor = RequesterUser.UserName; smsDto.DocumentNo = scgDocument.DocumentNo; smsDto.UseProxy = true; if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.AdvanceDomesticDocument) || scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.AdvanceForeignDocument)) { AvAdvanceDocument avanceDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.GetAvAdvanceByDocumentID(scgDocument.DocumentID); if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.AdvanceForeignDocument)) { //ต่างประเทศจะต้องไป get Currency Symbol ออกมา if (avanceDocument != null) { smsDto.Amount = avanceDocument.Amount.ToString(); } else { smsDto.Amount = "0"; } IList <AvAdvanceItem> advanceItemList = ScgeAccountingQueryProvider.AvAdvanceItemQuery.FindByAvAdvanceItemAdvanceID(avanceDocument.AdvanceID); IList <SMSCurrencyDTO> advItemList = new List <SMSCurrencyDTO>(); foreach (AvAdvanceItem advanceItem in advanceItemList) { string dbStatus = ScgDbQueryProvider.SCGDbStatusLangQuery.GetStatusLang("PaymentTypeFRN", ParameterServices.DefaultLanguage, advanceItem.PaymentType); SMSCurrencyDTO advItem = new SMSCurrencyDTO(); advItem.PaymentType = dbStatus; if (advanceItem.CurrencyID != null) { advItem.Currency = advanceItem.CurrencyID.Symbol; } advItem.Amount = advanceItem.Amount.ToString(); advItemList.Add(advItem); } smsDto.CurrencyItemList = advItemList; smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS01, SMSBusinessCase.AdvanceForeignDocument); } else { //ในประเทศ Currency Symbol THB เท่านั้น if (avanceDocument != null) { smsDto.Amount = avanceDocument.Amount.ToString(); } else { smsDto.Amount = "0"; } smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS01, SMSBusinessCase.AdvanceDomesticDocument); } this.sendSMSStatus = SMSService.Send(smsDto); } else if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.ExpenseDomesticDocument) || scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.ExpenseForeignDocument)) { FnExpenseDocument expenseDocument = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(scgDocument.DocumentID); if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.ExpenseForeignDocument)) { FnExpenseDocument expense = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(scgDocument.DocumentID); //EmailValueObject expenseDoc = new EmailValueObject(); // expenseDoc.RequestID = expense.Document.DocumentNo; smsDto.Amount = expense.TotalExpense.ToString(); smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS01, SMSBusinessCase.ExpenseDomesticDocument); } else { if (expenseDocument != null) { smsDto.Amount = expenseDocument.TotalExpense.ToString(); } else { smsDto.Amount = "0"; } smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS01, SMSBusinessCase.ExpenseDomesticDocument); } this.sendSMSStatus = SMSService.Send(smsDto); } else if (scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.TADocumentDomestic) || scgDocument.DocumentType.DocumentTypeID.Equals(DocumentTypeID.TADocumentForeign)) { TADocument ta = ScgeAccountingQueryProvider.TADocumentQuery.GetTADocumentByDocumentID(scgDocument.DocumentID); IList <Advance> advanceList = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.FindAdvanceDocumentByTADocumentID(ta.TADocumentID); if (advanceList.Count > 0) { IList <AdvanceData> advanceDataList = new List <AdvanceData>(); foreach (Advance advance in advanceList) { AdvanceData advanceData = new AdvanceData(); AvAdvanceDocument advDocument = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.FindByIdentity(advance.AdvanceID); if (advDocument != null) { //advanceData.RequestID = advDocument.DocumentID.RequesterID; advanceData.Subject = advDocument.DocumentID.Subject; advanceData.RequestDateOfAdvance = advDocument.RequestDateOfAdvance; advanceData.Amount = advDocument.Amount; if (advDocument.AdvanceType.Equals("FR")) { IList <AvAdvanceItem> advItemList = ScgeAccountingQueryProvider.AvAdvanceItemQuery.FindByAvAdvanceItemAdvanceID(advDocument.AdvanceID); IList <SMSCurrencyDTO> advanceFrList = new List <SMSCurrencyDTO>(); foreach (AvAdvanceItem advItem in advItemList) { SMSCurrencyDTO advanceFR = new SMSCurrencyDTO(); advanceFR.Currency = advItem.CurrencyID.Symbol; advanceFR.Amount = advItem.Amount.ToString(); advanceFrList.Add(advanceFR); } smsDto.CurrencyItemList = advanceFrList; } advanceDataList.Add(advanceData); } } // html.SetAttribute("advList", advanceDataList); } // html.SetAttribute("ta", taDoc); smsDto.Content = BuildContentBody(smsDto, SMSContenFormat.SMS01, SMSBusinessCase.TADocumentDomestic); this.sendSMSStatus = SMSService.Send(smsDto); } } } } catch (Exception ex) { Utilities.WriteLogs("SendSMS01 : " + ex.Message, "smslog", "Logs", "txt"); } }