public void Save() { FnExpenseDocument expenseDocument = new FnExpenseDocument(this.ExpDocumentID); if (ctlBusinessChk.Checked) { expenseDocument.IsBusinessPurpose = true; } if (ctlTrainingChk.Checked) { expenseDocument.IsTrainningPurpose = true; } if (ctlOtherChk.Checked) { expenseDocument.IsOtherPurpose = true; expenseDocument.OtherPurposeDescription = ctlOther.Text; } if (!string.IsNullOrEmpty(ctlFromDateCal.DateValue)) { expenseDocument.FromDate = UIHelper.ParseDate(ctlFromDateCal.DateValue); } if (!string.IsNullOrEmpty(ctlToDateCal.DateValue)) { expenseDocument.ToDate = UIHelper.ParseDate(ctlToDateCal.DateValue); } expenseDocument.Country = ctlCountry.Text; //expenseDocument.PersonalLevel = ctlPersonLevel.Text; //expenseDocument.ExchangeRateForUSDAdvance = UIHelper.ParseDouble(ctlExchangeRateForPerdiem.Text); //expenseDocument.ExchangeRateForUSD = UIHelper.ParseDouble(ctlExchangeRateDeparture.Text); FnExpenseDocumentService.UpdateExpenseDocumentAdvanceToTransaction(expenseDocument, this.TransactionId); BindControl(true); }
public void UpdatePostingStatusFnDocument(long DocumentID, string Status) { FnExpenseDocument docExpense = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(DocumentID); if (docExpense != null) { docExpense.RemittancePostingStatus = Status; ScgeAccountingDaoProvider.FnExpenseDocumentDao.SaveOrUpdate(docExpense); } }
public void ValidateRemittanceRecievedMethod(long wfid) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); SS.Standard.WorkFlow.DTO.WorkFlow wf = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(wfid); if (wf != null && wf.CurrentState != null && wf.CurrentState.Name != null) { if (wf.CurrentState.Name.Equals(WorkFlowStateFlag.WaitRemittance)) { FnExpenseDocument expDoc = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(wf.Document.DocumentID); if (string.IsNullOrEmpty(expDoc.ReceivedMethod)) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ReceiveIsRequired")); } } } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } }
public void Initialize(Guid txID, long documentID, string initFlag) { this.TransactionId = txID; this.DocumentID = documentID; this.InitialFlag = initFlag; int messageCode = 0; string message = string.Empty; bool boolVerify = false; bool boolVerifyAndApproveVerify = false; bool boolApprove = false; bool boolApproveDocument = false; bool showWarningChangeAmount = false; long workFlowID = long.Parse(Request.QueryString["wfid"] == null ? "0" : Request.QueryString["wfid"].Trim()); if (workFlowID > 0) { SS.Standard.WorkFlow.DTO.WorkFlow workflow = SS.Standard.WorkFlow.Query.WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID); SS.Standard.WorkFlow.DTO.Document document = SS.Standard.WorkFlow.Query.WorkFlowQueryProvider.WorkFlowQuery.GetDocumentByWorkFlowID(workFlowID); if (document.DocumentType.DocumentTypeID == 1) //AdvanceDomesticDocument { boolVerify = AdvanceWorkFlowService.CanVerifyWaitVerify(workFlowID); boolVerifyAndApproveVerify = AdvanceWorkFlowService.CanVerifyAndApproveVerifyWaitVerify(workFlowID); boolApprove = AdvanceWorkFlowService.CanApproveWaitApproveVerify(workFlowID); boolApproveDocument = AdvanceWorkFlowService.CanApproveWaitApprove(workFlowID); } else if (document.DocumentType.DocumentTypeID == 5) //AdvanceForeignDocument { boolVerify = AdvanceForeignWorkFlowService.CanVerifyWaitVerify(workFlowID); boolVerifyAndApproveVerify = AdvanceForeignWorkFlowService.CanVerifyAndApproveVerifyWaitVerify(workFlowID); boolApprove = AdvanceForeignWorkFlowService.CanApproveWaitApproveVerify(workFlowID); boolApproveDocument = AdvanceForeignWorkFlowService.CanApproveWaitApprove(workFlowID); } else if (document.DocumentType.DocumentTypeID == 3 || document.DocumentType.DocumentTypeID == 7) //ExpenseDomesticDocument, ExpenseForeignDocument { boolVerify = ExpenseWorkFlowService.CanVerifyWaitVerify(workFlowID); boolVerifyAndApproveVerify = ExpenseWorkFlowService.CanVerifyAndApproveVerifyWaitVerify(workFlowID); boolApprove = ExpenseWorkFlowService.CanApproveWaitApproveVerify(workFlowID); boolApproveDocument = ExpenseWorkFlowService.CanApproveWaitApprove(workFlowID); if (workflow != null) { showWarningChangeAmount = workflow.CurrentState.Ordinal >= 6 && boolApprove; } } } isSeeHistory = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.isSeeHistoryReject(this.DocumentID); ctlSeeHistory.Visible = isSeeHistory; #region Warning message Requester and Approver is the same person if ((boolVerify || boolVerifyAndApproveVerify || boolApprove) && ((UserAccount.IsApproveVerifyDocument || UserAccount.IsVerifyDocument) || (UserAccount.IsApproveVerifyPayment || UserAccount.IsVerifyPayment))) { isSeeMessage = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.isSeeMessage(this.DocumentID); if (isSeeMessage) { ctlSeeMessage.Visible = isSeeMessage; messageCode = ScgeAccountingQueryProvider.AvAdvanceDocumentQuery.isMessage(this.DocumentID); if (UserAccount.CurrentLanguageID == 1) { if (messageCode == 1) { message = "และผู้เบิกค่าใช้จ่าย"; } else if (messageCode == 2) { message = "และผู้รับเงิน"; } else if (messageCode == 3) { message = ", ผู้เบิกค่าใช้จ่าย และผู้รับเงิน"; } } else if (UserAccount.CurrentLanguageID == 2) { if (messageCode == 1) { message = "and Requester"; } else if (messageCode == 2) { message = "and Receiver"; } else if (messageCode == 3) { message = ", Requester and Receiver"; } } this.ctlSeeMessage.Text = string.Format(this.GetProgramMessage("$SeeMessage$"), message); } } else { ctlSeeMessage.Visible = false; } #endregion ctlWarning.Visible = false; SCG.eAccounting.DTO.SCGDocument doc = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(DocumentID); if ((boolVerify || boolVerifyAndApproveVerify || boolApprove || boolApproveDocument) && ((UserAccount.UserID == doc.ApproverID.Userid || UserAccount.IsApproveVerifyDocument || UserAccount.IsVerifyDocument) || (UserAccount.IsApproveVerifyPayment || UserAccount.IsVerifyPayment))) { if (doc.RequesterID.Userid != doc.ReceiverID.Userid) { ctlWarning.Visible = true; ctlWarning.Text = this.GetMessage("RequesterAndReceiverShouldBeTheSamePerson"); } } ctlWarningChangeAmount.Visible = false; if (ParameterServices.EnableShowWarningMsgAmountHasBeenCorrected) { if (showWarningChangeAmount && UserAccount.IsApproveVerifyDocument) { FnExpenseDocument expenseDocument = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(doc.DocumentID); if (expenseDocument.AmountApproved != null && expenseDocument.TotalExpense != expenseDocument.AmountApproved) { ctlWarningChangeAmount.Visible = true; ctlWarningChangeAmount.Text = this.GetMessage("AmountHasBeenCorrected"); } } } }
public void Save(FnExpenseDocument exp) { exp.PaymentType = ctlDdlPaymentType.SelectedValue; //exp.ServiceTeam = new DbServiceTeam(); }
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 bool ApprovePosting(long DocID, DocumentKind DocKind) { try { bool isSuccess = true; bool ChangeState = false; SCGDocument doc = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(DocID); if (doc == null) { } else if (!CanApprove(DocID, DocKind.ToString())) { } else if (this.GetPostingService(DocKind.ToString()).GetDocumentStatus(DocID, DocKind.ToString()) == "A") { } else { #region Approve IList <BAPIApproveReturn> bapiReturn = this.GetPostingService(DocKind.ToString()).BAPIApprove(DocID, DocKind.ToString(), this.UserAccount.UserID); if (DocKind.ToString() == DocumentKind.ExpenseRemittance.ToString()) { FnExpenseDocument docExpense = ScgeAccountingQueryProvider.FnExpenseDocumentQuery.GetExpenseDocumentByDocumentID(DocID); if (GetPostingService(DocKind.ToString()).GetDocumentStatus(DocID, DocKind.ToString()) == "A") { docExpense.RemittancePostingStatus = "C"; FnExpenseDocumentService.SaveOrUpdate(docExpense); } else if (GetPostingService(DocKind.ToString()).GetDocumentStatus(DocID, DocKind.ToString()) == "PP") { docExpense.RemittancePostingStatus = "PP"; FnExpenseDocumentService.SaveOrUpdate(docExpense); } } else { if (this.GetPostingService(DocKind.ToString()).GetDocumentStatus(DocID, DocKind.ToString()) == "A") { doc.PostingStatus = "C"; SCGDocumentService.SaveOrUpdate(doc); } else if (this.GetPostingService(DocKind.ToString()).GetDocumentStatus(DocID, DocKind.ToString()) == "PP") { doc.PostingStatus = "PP"; SCGDocumentService.SaveOrUpdate(doc); } } #endregion Approve #region Call WorkFlow for (int i = 0; i < bapiReturn.Count; i++) { if (bapiReturn[i].ApproveStatus != "S") { isSuccess = false; break; } } if (isSuccess) { ChangeState = true; WorkFlowApprove(DocKind.ToString()); } #endregion Call WorkFlow if (ChangeState) { string wfid = System.Web.HttpContext.Current.Request.QueryString["wfid"].ToString(); System.Web.HttpContext.Current.Response.Redirect("SubmitResult.aspx?wfid=" + wfid); } } return(isSuccess); } catch (Exception ex) { throw ex; } }
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"); } }
public void UpdateInvoiceItemByInvoiceID(Guid txID, long invoiceId, FnExpenseDocument expenseDocument) { ExpenseDataSet expDS = (ExpenseDataSet)TransactionService.GetDS(txID); ExpenseDataSet.FnExpenseInvoiceRow invoiceRow = expDS.FnExpenseInvoice.FindByInvoiceID(invoiceId); ExpenseDataSet.FnExpenseInvoiceItemRow[] itemRows = (ExpenseDataSet.FnExpenseInvoiceItemRow[])expDS.FnExpenseInvoiceItem.Select(); DbAccount account = new DbAccount(); foreach (ExpenseDataSet.FnExpenseInvoiceItemRow row in itemRows) { account = ScgDbQueryProvider.DbAccountQuery.FindByIdentity(row.AccountID); } string filter = String.Format("InvoiceID = {0}", invoiceId); DataRow[] rows = expDS.FnExpenseInvoiceItem.Select(filter); Dbpb pb = null; double totalLocalCurrencyAmount = 0; double totalMainCurrencyAmount = 0; double totalAmountTHB = 0; bool isRepOffice = expenseDocument.IsRepOffice.HasValue ? expenseDocument.IsRepOffice.Value : false; if (expenseDocument.PB != null) { pb = ScgDbQueryProvider.DbPBQuery.FindByIdentity(expenseDocument.PB.Pbid); } foreach (DataRow row in rows) { FnExpenseInvoiceItem item = new FnExpenseInvoiceItem(); item.LoadFromDataRow(row); item.Invoice.Expense = expenseDocument; if (account.SaveAsVendor) { if (invoiceRow.isVAT) { if (!invoiceRow.IsVendorIDNull()) { item.VendorCodeAP = invoiceRow.VendorCode; } } } if (isRepOffice) { if (expenseDocument.MainCurrencyID.HasValue) { item.MainCurrencyID = expenseDocument.MainCurrencyID.Value; } if (expenseDocument.ExchangeRateForLocalCurrency.HasValue && expenseDocument.ExchangeRateForLocalCurrency.Value != 0) { if (item.LocalCurrencyAmount.HasValue) { if (expenseDocument.MainCurrencyID == expenseDocument.LocalCurrencyID) { item.MainCurrencyAmount = item.LocalCurrencyAmount; } else { item.MainCurrencyAmount = (double)Math.Round((decimal)(item.LocalCurrencyAmount.Value / expenseDocument.ExchangeRateForLocalCurrency.Value), 2, MidpointRounding.AwayFromZero); } totalMainCurrencyAmount += item.MainCurrencyAmount.Value; totalLocalCurrencyAmount += item.LocalCurrencyAmount.Value; } } if (expenseDocument.ExchangeRateMainToTHBCurrency.HasValue) { if (item.MainCurrencyAmount.HasValue) { item.Amount = (double)Math.Round((decimal)(item.MainCurrencyAmount * expenseDocument.ExchangeRateMainToTHBCurrency), 2, MidpointRounding.AwayFromZero); totalAmountTHB += item.Amount.Value; } } } else { if (expenseDocument.ExpenseType == ZoneType.Foreign) { //item.ExchangeRate = (double)Math.Round(Convert.ToDecimal(expenseDocument.ExchangeRateForUSDAdvance), 4, MidpointRounding.AwayFromZero); item.Amount = (double)Math.Round(Convert.ToDecimal(item.CurrencyAmount * item.ExchangeRate), 2, MidpointRounding.AwayFromZero); } totalAmountTHB += item.Amount.Value; } UpdateInvoiceItemOnTransaction(item, txID, expenseDocument.ExpenseType); } invoiceRow.BeginEdit(); if (isRepOffice) { invoiceRow.TotalAmountLocalCurrency = invoiceRow.TotalBaseAmountLocalCurrency = invoiceRow.NetAmountLocalCurrency = (decimal)totalLocalCurrencyAmount; } invoiceRow.TotalAmount = (decimal)totalAmountTHB; invoiceRow.EndEdit(); }