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;
                }
            }
        }
Exemple #5
0
 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);
                    }
                }
            }
        }
Exemple #7
0
        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");
            }
        }