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);
     }
 }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 7
0
        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;
            }
        }
Exemplo n.º 8
0
        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");
            }
        }
Exemplo n.º 9
0
        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();
        }