public bool CanCancelComplete(long workFlowID)
        {
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            return(scgDocument.ApproverID.Userid == UserAccount.UserID);
        }
        public void InsertDocumentInitiator(Guid txID, long documentID)
        {
            DataSet     ds          = TransactionService.GetDS(txID);
            SCGDocument document    = ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(documentID);
            DataTable   insertTable = ds.Tables["DocumentInitiator"].GetChanges(DataRowState.Added);

            if (insertTable != null)
            {
                foreach (DataRow row in insertTable.Rows)
                {
                    if (Convert.ToInt64(row["InitiatorID"].ToString()) < 0)
                    {
                        DocumentInitiator documentInitiator = new DocumentInitiator();
                        documentInitiator.DocumentID    = document;
                        documentInitiator.Seq           = (short)row["InitiatorSeq"];
                        documentInitiator.UserID        = QueryProvider.SuUserQuery.FindProxyByIdentity((long)row["UserID"]);
                        documentInitiator.InitiatorType = row["InitiatorType"].ToString();
                        documentInitiator.DoApprove     = false;
                        documentInitiator.Active        = (bool)row["Active"];
                        documentInitiator.CreBy         = (long)row["CreBy"];
                        documentInitiator.CreDate       = DateTime.Parse(row["CreDate"].ToString());
                        documentInitiator.UpdBy         = (long)row["UpdBy"];
                        documentInitiator.UpdDate       = DateTime.Parse(row["UpdDate"].ToString());
                        documentInitiator.UpdPgm        = row["UpdPgm"].ToString();

                        ScgeAccountingDaoProvider.DocumentInitiatorDao.Save(documentInitiator);
                    }
                }
            }
        }
        public void SendSMS03(long workFlowID, string RequestID, IList <long> ReciverList)
        {
            try
            {
                if (ParameterServices.EnableSMS)
                {
                    Document      document    = WorkFlowQueryProvider.WorkFlowQuery.GetDocumentByWorkFlowID(workFlowID);
                    SCGDocument   scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(document.DocumentID);
                    FnAutoPayment autoPayment = ScgeAccountingQueryProvider.FnAutoPaymentQuery.GetFnAutoPaymentByDocumentID(document.DocumentID);

                    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.To          = Mobile;
                            smsDto.PaymentDate = autoPayment.PaymentDate.Value;
                            smsDto.Amount      = autoPayment.Amount.ToString();
                            smsDto.Requestor   = RequestID;
                            smsDto.DocumentNo  = scgDocument.DocumentNo;
                            smsDto.UseProxy    = true;
                            smsDto.Content     = BuildContentBody(smsDto, SMSContenFormat.SMS03, SMSBusinessCase.Cheque);
                            this.sendSMSStatus = SMSService.Send(smsDto);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utilities.WriteLogs("SendSMS03 : ==> " + ex.Message, "smslog", "Logs", "txt");
            }
        }
        public override string OnApproveWaitInitial(long workFlowID, object eventData)
        {
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();
            MPADocument  mpaDocument        = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(workFlow.Document.DocumentID);
            IList <long> advanceWorkflowIDs = new List <long>();

            if (!errors.IsEmpty)
            {
                throw new SS.Standard.Utilities.ServiceValidationException(errors);
            }

            string signal = base.OnApproveWaitInitial(workFlowID, eventData);

            // ====================== For Approve all advance that link to TA ======================
            // Use state WaitInitial to add into table WorkflowResponse
            string             eventName  = "Approve";
            WorkFlowStateEvent stateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.GetByWorkFlowStateID_EventName(AdvanceStateID.WaitInitial, eventName);

            //SubmitResponse submitResponse = eventData as SubmitResponse;

            return(signal);
        }
Example #5
0
        public void SendEmailToOverDueDate()
        {
            IList <VOAdvanceOverDueReport> voList = ScgeAccountingQueryProvider.SCGDocumentQuery.GetAdvanceOverdueList();

            foreach (VOAdvanceOverDueReport item in voList)
            {
                SCGDocument document = SCGDocumentService.FindByIdentity(item.DocumentID);
                SCGEmailService.SendEmailEM10(item.AdvanceID, document.RequesterID.Userid, document.ApproverID.Email, "This is e-mail for autoreminder advancedocument system.", true);
            }
        }
Example #6
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);
             }
         }
     }
 }
Example #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["dId"] != null)
            {
                long        documentID = UIHelper.ParseLong(Request["dId"].ToString());
                SCGDocument document   = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(documentID);

                if (Request["payin"] == null)
                {
                    ReportHelper.FlushReport(this.Page, new SCGDocumentService().GeneratePDF(documentID), ReportHelper.ReportType.PDF, document.DocumentNo);
                }
                else
                {
                    if (Request["payin"].ToString().Equals("true"))
                    {
                        ReportHelper.FlushReport(this.Page, new SCGDocumentService().GeneratePayIn(documentID), ReportHelper.ReportType.PDF, document.DocumentNo);
                    }
                }
            }
        }
        protected void ctlDocumentGrid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "ClickEmail")
            {
                int  rowIndex    = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
                long requesterID = UIHelper.ParseLong(ctlDocumentGrid.DataKeys[rowIndex].Values["RequesterID"].ToString());
                long documentID  = UIHelper.ParseLong(ctlDocumentGrid.DataKeys[rowIndex].Values["DocumentID"].ToString());
                long creatorID   = UIHelper.ParseLong(ctlDocumentGrid.DataKeys[rowIndex].Values["CreatorID"].ToString());
                ctlSendFollowUpEmail1.RequesterID = requesterID;
                ctlSendFollowUpEmail1.CreatorID   = creatorID;
                ctlSendFollowUpEmail1.DocumentID  = documentID;
                ctlSendFollowUpEmail1.Show();
            }
            else if (e.CommandName == "ClickSendtime")
            {
                int  rowIndex   = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
                long documentID = UIHelper.ParseLong(ctlDocumentGrid.DataKeys[rowIndex].Values["DocumentID"].ToString());
                ctlSendFollowUpEmail1.DocumentID = documentID;
                SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(documentID);
                if (scgDocument != null)
                {
                    string documentNo = scgDocument.DocumentNo;
                    ctlEmailLog.RequestNo         = documentNo;
                    ctlEmailLog.EmailType         = "EM09";
                    ctlEmailLog.isDisplayCriteria = false;
                    ctlEmailLog.Show();
                    ctlModalPopupExtender.Show();
                }
            }
            else if (e.CommandName == "ClickAdvanceNo")
            {
                int  rowIndex   = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
                long documentID = UIHelper.ParseLong(ctlDocumentGrid.DataKeys[rowIndex].Values["DocumentID"].ToString());

                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);
                }
            }
        }
        public void ReCalculatePermissionForCancelComplete(long workFlowID, int workFlowStateEventID)
        {
            //long permitUserID = GetAllowUserSendDraft(workFlowID);
            WorkFlow    workFlow     = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument  = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);
            long        permitUserID = scgDocument.ApproverID.Userid;

            WorkFlowStateEventPermission permission = new WorkFlowStateEventPermission();

            permission.WorkFlow           = WorkFlowQueryProvider.WorkFlowQuery.FindProxyByIdentity(workFlowID);
            permission.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindProxyByIdentity(workFlowStateEventID);
            permission.UserID             = permitUserID;
            permission.Active             = true;
            permission.CreBy   = UserAccount.UserID;
            permission.CreDate = DateTime.Now;
            permission.UpdBy   = UserAccount.UserID;
            permission.UpdDate = DateTime.Now;
            permission.UpdPgm  = UserAccount.CurrentProgramCode;

            WorkFlowStateEventPermissionService.Save(permission);
        }
Example #10
0
        public long SaveToDatabase()
        {
            // Save all table in dataset to database and clear transaction.
            long caDocumentID = CADocumentService.SaveCADocument(this.TransactionID, this.CADocumentID);
            // Get ta document
            CADocument caDocument = ScgeAccountingQueryProvider.CADocumentQuery.FindProxyByIdentity(caDocumentID);

            TransactionService.Commit(this.TransactionID);

            #region Work Flow
            long workFlowID = 0;

            // Save New WorkFlow.
            if ((caDocument != null) && (caDocument.DocumentID != null))
            {
                SCGDocument document = ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(caDocument.DocumentID.DocumentID);
                SS.Standard.WorkFlow.DTO.WorkFlow workFlow = new SS.Standard.WorkFlow.DTO.WorkFlow();
                // WorkFlow Type ID = 9 is CA Workflow Image. wait confirm where to store this data.
                workFlow.WorkFlowType = new SS.Standard.WorkFlow.DTO.WorkFlowType(WorkFlowTypeID.CAWorkFlow);
                // WorkFlow Type ID = 9 is CA Workflow Image. wait confirm where to store this data.
                workFlow.CurrentState = WorkFlowQueryProvider.WorkFlowStateQuery.FindWorkFlowStateIDByTypeIDAndStateName(WorkFlowTypeID.CAWorkFlow, WorkFlowStateFlag.Draft);
                workFlow.Description  = null;
                workFlow.Document     = document;
                workFlow.Active       = true;
                workFlow.CreBy        = document.CreBy;
                workFlow.CreDate      = document.CreDate;
                workFlow.UpdBy        = document.UpdBy;
                workFlow.UpdDate      = document.UpdDate;
                workFlow.UpdPgm       = document.UpdPgm;

                workFlowID = WorkFlowService.CheckExistAndAddNew(workFlow);
            }
            #endregion Work Flow

            return(workFlowID);
        }
Example #11
0
        public override void CreatePostData(long DocID, string DocKind)
        {
            Hashtable paramete = new Hashtable();

            paramete.Add("@DOCUMENT_ID", DocID.ToString());
            DataSet dstPosting         = new DBManage().ExecuteQuery("ADVANCE_POSTING", paramete);
            bool    repOffice          = false;
            string  mainCurrencySymbol = string.Empty;

            SCGDocument doc = SCG.eAccounting.Query.ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(DocID);

            DbSapInstance sap = SCG.DB.Query.ScgDbQueryProvider.DbCompanyQuery.GetSAPDocTypeForPosting(doc.CompanyID.CompanyCode);

            if (dstPosting.Tables[0].Rows.Count > 0)
            {
                if (!string.IsNullOrEmpty(dstPosting.Tables[0].Rows[0]["IsRepOffice"].ToString()))
                {
                    repOffice = bool.Parse(dstPosting.Tables[0].Rows[0]["IsRepOffice"].ToString());
                }

                // get main currency symbol
                if (repOffice)
                {
                    DbCurrency mainCurrency = SS.DB.Query.SsDbQueryProvider.DbCurrencyQuery.FindByIdentity(short.Parse(dstPosting.Tables[0].Rows[0]["MainCurrencyID"].ToString()));
                    if (mainCurrency != null)
                    {
                        mainCurrencySymbol = mainCurrency.Symbol;
                    }
                }

                if (dstPosting.Tables[0].Rows[0]["AdvanceType"].ToString() == ZoneTypeConst.Domestic)
                {
                    #region HEAD
                    Bapiache09 che09 = new Bapiache09();
                    che09.DocId       = DocID;
                    che09.DocSeq      = "M";
                    che09.DocKind     = DocKind;
                    che09.BusAct      = PostingConst.BusAct;
                    che09.Username    = sap.UserCPIC; //PostingConst.UserCPIC;
                    che09.CompCode    = dstPosting.Tables[0].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                    che09.DocDate     = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                    che09.DocKind     = DocKind;
                    che09.DocType     = sap.DocTypeAdvancePostingDM;//DocTypeConst.KR;
                    che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                    che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                    che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                    che09.DocStatus   = "N";

                    if (dstPosting.Tables[0].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                    {
                        che09.DocAppFlag = "A";
                    }
                    else
                    {
                        che09.DocAppFlag = "V";
                    }

                    che09.Active  = true;
                    che09.CreBy   = 1;
                    che09.CreDate = DateTime.Now;
                    che09.UpdBy   = 1;
                    che09.UpdDate = DateTime.Now;
                    che09.UpdPgm  = "AdvancePosting";
                    BapiServiceProvider.Bapiache09Service.Save(che09);
                    #endregion HEAD

                    #region Foolter
                    Bapiacextc cextc = new Bapiacextc();
                    cextc.DocId   = DocID;
                    cextc.DocSeq  = "M";
                    cextc.DocKind = DocKind;
                    cextc.Field1  = PostingConst.BRNCH;
                    cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                    cextc.Active  = true;
                    cextc.CreBy   = 1;
                    cextc.CreDate = DateTime.Now;
                    cextc.UpdBy   = 1;
                    cextc.UpdDate = DateTime.Now;
                    cextc.UpdPgm  = "AdvancePosting";
                    BapiServiceProvider.BapiacextcService.Save(cextc);

                    Bapiacextc cextc1 = new Bapiacextc();
                    cextc1.DocId   = DocID;
                    cextc1.DocSeq  = "M";
                    cextc1.DocKind = DocKind;
                    cextc1.Field1  = PostingConst.VAT;
                    cextc1.Field2  = TaxCodeConst.NV;

                    cextc1.Active  = true;
                    cextc1.CreBy   = 1;
                    cextc1.CreDate = DateTime.Now;
                    cextc1.UpdBy   = 1;
                    cextc1.UpdDate = DateTime.Now;
                    cextc1.UpdPgm  = "AdvancePosting";
                    BapiServiceProvider.BapiacextcService.Save(cextc1);
                    #endregion Foolter

                    #region Domestic
                    Bapiacap09 capItem1  = new Bapiacap09();
                    Bapiacap09 capItem2  = new Bapiacap09();
                    Bapiaccr09 accrItem1 = new Bapiaccr09();
                    Bapiaccr09 accrItem2 = new Bapiaccr09();

                    if (!repOffice)
                    {
                        if (dstPosting.Tables[0].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                        {
                            #region Cash

                            #region Credit
                            capItem1.DocId         = DocID;
                            capItem1.DocSeq        = "M";
                            capItem1.DocKind       = DocKind;
                            capItem1.ItemnoAcc     = "1";
                            capItem1.VendorNo      = dstPosting.Tables[0].Rows[0]["PBCode"].ToString();
                            capItem1.PmntBlock     = PostingConst.PmntBlock;
                            capItem1.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem1.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem1.AllocNmbr     = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString())).EmployeeName;
                            capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                            capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                            capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem1.TaxCode       = TaxCodeConst.NV;

                            if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                            {
                                capItem1.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                            }

                            capItem1.Active  = true;
                            capItem1.CreBy   = 1;
                            capItem1.CreDate = DateTime.Now;
                            capItem1.UpdBy   = 1;
                            capItem1.UpdDate = DateTime.Now;
                            capItem1.UpdPgm  = "AdvancePosting";

                            accrItem1.DocId     = DocID;
                            accrItem1.DocSeq    = "M";
                            accrItem1.DocKind   = DocKind;
                            accrItem1.ItemnoAcc = "1";

                            accrItem1.Currency  = PostingConst.Currency;
                            accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                            accrItem1.Active  = true;
                            accrItem1.CreBy   = 1;
                            accrItem1.CreDate = DateTime.Now;
                            accrItem1.UpdBy   = 1;
                            accrItem1.UpdDate = DateTime.Now;
                            accrItem1.UpdPgm  = "AdvancePosting";
                            #endregion Credit

                            #region Debit
                            capItem2.DocId         = DocID;
                            capItem2.DocSeq        = "M";
                            capItem2.DocKind       = DocKind;
                            capItem2.ItemnoAcc     = "2";
                            capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                            capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem2.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem2.PmntBlock     = PostingConst.PmntBlock;
                            capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                            capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                            capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem2.TaxCode       = TaxCodeConst.NV;
                            capItem2.SpGlInd       = SpGlIndConst.D;

                            if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                            {
                                capItem2.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                            }

                            capItem2.Active  = true;
                            capItem2.CreBy   = 1;
                            capItem2.CreDate = DateTime.Now;
                            capItem2.UpdBy   = 1;
                            capItem2.UpdDate = DateTime.Now;
                            capItem2.UpdPgm  = "AdvancePosting";

                            accrItem2.DocId     = DocID;
                            accrItem2.DocSeq    = "M";
                            accrItem2.DocKind   = DocKind;
                            accrItem2.ItemnoAcc = "2";

                            accrItem2.Currency  = PostingConst.Currency;
                            accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                            accrItem2.Active  = true;
                            accrItem2.CreBy   = 1;
                            accrItem2.CreDate = DateTime.Now;
                            accrItem2.UpdBy   = 1;
                            accrItem2.UpdDate = DateTime.Now;
                            accrItem2.UpdPgm  = "AdvancePosting";
                            #endregion Debit

                            #endregion Cash
                        }
                        else
                        {
                            #region Transfer หรือ Cheque

                            #region Credit
                            capItem1.DocId         = DocID;
                            capItem1.DocSeq        = "M";
                            capItem1.DocKind       = DocKind;
                            capItem1.ItemnoAcc     = "1";
                            capItem1.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString())).VendorCode;
                            capItem1.PmntBlock     = "";
                            capItem1.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem1.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem1.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                            capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                            capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem1.TaxCode       = TaxCodeConst.NV;

                            if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                            {
                                capItem1.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                            }

                            capItem1.Pmtmthsupl = dstPosting.Tables[0].Rows[0]["Supplementary"].ToString();

                            capItem1.Active  = true;
                            capItem1.CreBy   = 1;
                            capItem1.CreDate = DateTime.Now;
                            capItem1.UpdBy   = 1;
                            capItem1.UpdDate = DateTime.Now;
                            capItem1.UpdPgm  = "AdvancePosting";

                            accrItem1.DocId     = DocID;
                            accrItem1.DocSeq    = "M";
                            accrItem1.DocKind   = DocKind;
                            accrItem1.ItemnoAcc = "1";
                            accrItem1.Currency  = PostingConst.Currency;
                            accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                            accrItem1.Active  = true;
                            accrItem1.CreBy   = 1;
                            accrItem1.CreDate = DateTime.Now;
                            accrItem1.UpdBy   = 1;
                            accrItem1.UpdDate = DateTime.Now;
                            accrItem1.UpdPgm  = "AdvancePosting";
                            #endregion Credit

                            #region Debit
                            capItem2.DocId         = DocID;
                            capItem2.DocSeq        = "M";
                            capItem2.DocKind       = DocKind;
                            capItem2.ItemnoAcc     = "2";
                            capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                            capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem2.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem2.PmntBlock     = "";
                            capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                            capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                            capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem2.TaxCode       = TaxCodeConst.NV;
                            capItem2.SpGlInd       = SpGlIndConst.D;

                            if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                            {
                                capItem2.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                            }

                            capItem2.Pmtmthsupl = dstPosting.Tables[0].Rows[0]["Supplementary"].ToString();

                            capItem2.Active  = true;
                            capItem2.CreBy   = 1;
                            capItem2.CreDate = DateTime.Now;
                            capItem2.UpdBy   = 1;
                            capItem2.UpdDate = DateTime.Now;
                            capItem2.UpdPgm  = "AdvancePosting";

                            accrItem2.DocId     = DocID;
                            accrItem2.DocSeq    = "M";
                            accrItem2.DocKind   = DocKind;
                            accrItem2.ItemnoAcc = "2";
                            accrItem2.Currency  = PostingConst.Currency;
                            accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                            accrItem2.Active  = true;
                            accrItem2.CreBy   = 1;
                            accrItem2.CreDate = DateTime.Now;
                            accrItem2.UpdBy   = 1;
                            accrItem2.UpdDate = DateTime.Now;
                            accrItem2.UpdPgm  = "AdvancePosting";
                            #endregion Debit

                            #endregion Transfer หรือ Cheque
                        }
                    }
                    else  //for rep office
                    {
                        #region Credit
                        capItem1.DocId         = DocID;
                        capItem1.DocSeq        = "M";
                        capItem1.DocKind       = DocKind;
                        capItem1.ItemnoAcc     = "1";
                        capItem1.VendorNo      = dstPosting.Tables[0].Rows[0]["PBCode"].ToString();
                        capItem1.PmntBlock     = PostingConst.PmntBlock;
                        capItem1.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem1.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        capItem1.AllocNmbr     = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString())).EmployeeName;
                        capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                        capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                        capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem1.TaxCode       = TaxCodeConst.NV;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem1.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                        }

                        capItem1.Active  = true;
                        capItem1.CreBy   = 1;
                        capItem1.CreDate = DateTime.Now;
                        capItem1.UpdBy   = 1;
                        capItem1.UpdDate = DateTime.Now;
                        capItem1.UpdPgm  = "AdvancePosting";

                        accrItem1.DocId     = DocID;
                        accrItem1.DocSeq    = "M";
                        accrItem1.DocKind   = DocKind;
                        accrItem1.ItemnoAcc = "1";

                        accrItem1.Currency  = mainCurrencySymbol;
                        accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["MainCurrencyAmount"].ToString());
                        accrItem1.ExchRate  = decimal.Parse(dstPosting.Tables[0].Rows[0]["ExchangeRateMainToTHB"].ToString());

                        accrItem1.Active  = true;
                        accrItem1.CreBy   = 1;
                        accrItem1.CreDate = DateTime.Now;
                        accrItem1.UpdBy   = 1;
                        accrItem1.UpdDate = DateTime.Now;
                        accrItem1.UpdPgm  = "AdvancePosting";
                        #endregion Credit

                        #region Debit
                        capItem2.DocId         = DocID;
                        capItem2.DocSeq        = "M";
                        capItem2.DocKind       = DocKind;
                        capItem2.ItemnoAcc     = "2";
                        capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                        capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem2.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                        capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        capItem2.PmntBlock     = PostingConst.PmntBlock;
                        capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                        capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                        capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                        capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem2.TaxCode       = TaxCodeConst.NV;
                        capItem2.SpGlInd       = SpGlIndConst.D;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem2.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                        }

                        capItem2.Active  = true;
                        capItem2.CreBy   = 1;
                        capItem2.CreDate = DateTime.Now;
                        capItem2.UpdBy   = 1;
                        capItem2.UpdDate = DateTime.Now;
                        capItem2.UpdPgm  = "AdvancePosting";

                        accrItem2.DocId     = DocID;
                        accrItem2.DocSeq    = "M";
                        accrItem2.DocKind   = DocKind;
                        accrItem2.ItemnoAcc = "2";

                        accrItem2.Currency  = mainCurrencySymbol;
                        accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["MainCurrencyAmount"].ToString());
                        accrItem2.ExchRate  = decimal.Parse(dstPosting.Tables[0].Rows[0]["ExchangeRateMainToTHB"].ToString());

                        accrItem2.Active  = true;
                        accrItem2.CreBy   = 1;
                        accrItem2.CreDate = DateTime.Now;
                        accrItem2.UpdBy   = 1;
                        accrItem2.UpdDate = DateTime.Now;
                        accrItem2.UpdPgm  = "AdvancePosting";
                        #endregion Debit
                    }
                    BapiServiceProvider.Bapiacap09Service.Save(capItem1);
                    BapiServiceProvider.Bapiacap09Service.Save(capItem2);
                    BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                    BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                    #endregion Domestic
                }
                else if (dstPosting.Tables[0].Rows[0]["AdvanceType"].ToString() == ZoneTypeConst.Foreign)
                {
                    #region Foreign
                    if (!repOffice)
                    {
                        #region HEAD
                        Bapiache09 che09 = new Bapiache09();
                        che09.DocId       = DocID;
                        che09.DocSeq      = "M";
                        che09.DocKind     = DocKind;
                        che09.BusAct      = PostingConst.BusAct;
                        che09.Username    = sap.UserCPIC;//PostingConst.UserCPIC;
                        che09.CompCode    = dstPosting.Tables[0].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                        che09.DocDate     = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.DocKind     = DocKind;
                        che09.DocType     = sap.DocTypeAdvancePostingFR;//DocTypeConst.KZ;
                        che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                        che09.DocStatus   = "N";
                        che09.DocAppFlag  = "A";

                        che09.Active  = true;
                        che09.CreBy   = 1;
                        che09.CreDate = DateTime.Now;
                        che09.UpdBy   = 1;
                        che09.UpdDate = DateTime.Now;
                        che09.UpdPgm  = "AdvancePosting";
                        BapiServiceProvider.Bapiache09Service.Save(che09);
                        #endregion HEAD

                        #region Foolter
                        Bapiacextc cextc = new Bapiacextc();
                        cextc.DocId   = DocID;
                        cextc.DocSeq  = "M";
                        cextc.DocKind = DocKind;
                        cextc.Field1  = PostingConst.BRNCH;
                        cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                        cextc.Active  = true;
                        cextc.CreBy   = 1;
                        cextc.CreDate = DateTime.Now;
                        cextc.UpdBy   = 1;
                        cextc.UpdDate = DateTime.Now;
                        cextc.UpdPgm  = "AdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc);

                        Bapiacextc cextc1 = new Bapiacextc();
                        cextc1.DocId   = DocID;
                        cextc1.DocSeq  = "M";
                        cextc1.DocKind = DocKind;
                        cextc1.Field1  = PostingConst.VAT;
                        cextc1.Field2  = TaxCodeConst.NV;

                        cextc1.Active  = true;
                        cextc1.CreBy   = 1;
                        cextc1.CreDate = DateTime.Now;
                        cextc1.UpdBy   = 1;
                        cextc1.UpdDate = DateTime.Now;
                        cextc1.UpdPgm  = "AdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc1);
                        #endregion Foolter

                        Bapiacgl09 capItem1  = new Bapiacgl09();
                        Bapiacap09 capItem2  = new Bapiacap09();
                        Bapiaccr09 accrItem1 = new Bapiaccr09();
                        Bapiaccr09 accrItem2 = new Bapiaccr09();

                        #region Credit
                        capItem1.DocId     = DocID;
                        capItem1.DocSeq    = "M";
                        capItem1.DocKind   = DocKind;
                        capItem1.ItemnoAcc = "1";
                        capItem1.GlAccount = dstPosting.Tables[0].Rows[0]["BankAccount"].ToString();
                        capItem1.ValueDate = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        capItem1.AllocNmbr = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                        capItem1.AllocNmbr = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        capItem1.ItemText  = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem1.ItemText  = SAPUIHelper.SubString50(capItem1.ItemText);
                        //capItem1.BusArea        = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem1.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                        }

                        capItem1.Active  = true;
                        capItem1.CreBy   = 1;
                        capItem1.CreDate = DateTime.Now;
                        capItem1.UpdBy   = 1;
                        capItem1.UpdDate = DateTime.Now;
                        capItem1.UpdPgm  = "AdvancePosting";

                        accrItem1.DocId     = DocID;
                        accrItem1.DocSeq    = "M";
                        accrItem1.DocKind   = DocKind;
                        accrItem1.ItemnoAcc = "1";

                        accrItem1.Currency  = PostingConst.Currency;
                        accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                        accrItem1.Active  = true;
                        accrItem1.CreBy   = 1;
                        accrItem1.CreDate = DateTime.Now;
                        accrItem1.UpdBy   = 1;
                        accrItem1.UpdDate = DateTime.Now;
                        accrItem1.UpdPgm  = "AdvancePosting";
                        #endregion Credit

                        #region Debit
                        capItem2.DocId         = DocID;
                        capItem2.DocSeq        = "M";
                        capItem2.DocKind       = DocKind;
                        capItem2.ItemnoAcc     = "2";
                        capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                        capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                        capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                        capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                        capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem2.TaxCode       = TaxCodeConst.NV;
                        capItem2.SpGlInd       = SpGlIndConst.D;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem2.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                        }

                        capItem2.Active  = true;
                        capItem2.CreBy   = 1;
                        capItem2.CreDate = DateTime.Now;
                        capItem2.UpdBy   = 1;
                        capItem2.UpdDate = DateTime.Now;
                        capItem2.UpdPgm  = "AdvancePosting";

                        accrItem2.DocId     = DocID;
                        accrItem2.DocSeq    = "M";
                        accrItem2.DocKind   = DocKind;
                        accrItem2.ItemnoAcc = "2";

                        accrItem2.Currency  = PostingConst.Currency;
                        accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                        accrItem2.Active  = true;
                        accrItem2.CreBy   = 1;
                        accrItem2.CreDate = DateTime.Now;
                        accrItem2.UpdBy   = 1;
                        accrItem2.UpdDate = DateTime.Now;
                        accrItem2.UpdPgm  = "AdvancePosting";
                        #endregion Debit

                        BapiServiceProvider.Bapiacgl09Service.Save(capItem1);
                        BapiServiceProvider.Bapiacap09Service.Save(capItem2);
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                    }
                    else  // post ADF for rep office
                    {
                        #region HEAD
                        Bapiache09 che09 = new Bapiache09();
                        che09.DocId       = DocID;
                        che09.DocSeq      = "M";
                        che09.DocKind     = DocKind;
                        che09.BusAct      = PostingConst.BusAct;
                        che09.Username    = sap.UserCPIC;//PostingConst.UserCPIC;
                        che09.CompCode    = dstPosting.Tables[0].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                        che09.DocDate     = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.DocKind     = DocKind;
                        che09.DocType     = sap.DocTypeAdvancePostingFR;//DocTypeConst.KR;
                        che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                        che09.DocStatus   = "N";
                        che09.DocAppFlag  = "A";

                        che09.Active  = true;
                        che09.CreBy   = 1;
                        che09.CreDate = DateTime.Now;
                        che09.UpdBy   = 1;
                        che09.UpdDate = DateTime.Now;
                        che09.UpdPgm  = "AdvancePosting";
                        BapiServiceProvider.Bapiache09Service.Save(che09);
                        #endregion HEAD

                        #region Foolter
                        Bapiacextc cextc = new Bapiacextc();
                        cextc.DocId   = DocID;
                        cextc.DocSeq  = "M";
                        cextc.DocKind = DocKind;
                        cextc.Field1  = PostingConst.BRNCH;
                        cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                        cextc.Active  = true;
                        cextc.CreBy   = 1;
                        cextc.CreDate = DateTime.Now;
                        cextc.UpdBy   = 1;
                        cextc.UpdDate = DateTime.Now;
                        cextc.UpdPgm  = "AdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc);

                        Bapiacextc cextc1 = new Bapiacextc();
                        cextc1.DocId   = DocID;
                        cextc1.DocSeq  = "M";
                        cextc1.DocKind = DocKind;
                        cextc1.Field1  = PostingConst.VAT;
                        cextc1.Field2  = TaxCodeConst.NV;

                        cextc1.Active  = true;
                        cextc1.CreBy   = 1;
                        cextc1.CreDate = DateTime.Now;
                        cextc1.UpdBy   = 1;
                        cextc1.UpdDate = DateTime.Now;
                        cextc1.UpdPgm  = "AdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc1);
                        #endregion Foolter

                        Bapiacap09 capItem1  = new Bapiacap09();
                        Bapiacap09 capItem2  = new Bapiacap09();
                        Bapiaccr09 accrItem1 = new Bapiaccr09();
                        Bapiaccr09 accrItem2 = new Bapiaccr09();

                        #region Credit
                        capItem1.DocId         = DocID;
                        capItem1.DocSeq        = "M";
                        capItem1.DocKind       = DocKind;
                        capItem1.ItemnoAcc     = "1";
                        capItem1.VendorNo      = dstPosting.Tables[0].Rows[0]["PBCode"].ToString();
                        capItem1.PmntBlock     = PostingConst.PmntBlock;
                        capItem1.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem1.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        capItem1.AllocNmbr     = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString())).EmployeeName;
                        capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                        capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem1.TaxCode       = TaxCodeConst.NV;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem1.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                        }

                        capItem1.Active  = true;
                        capItem1.CreBy   = 1;
                        capItem1.CreDate = DateTime.Now;
                        capItem1.UpdBy   = 1;
                        capItem1.UpdDate = DateTime.Now;
                        capItem1.UpdPgm  = "AdvancePosting";

                        accrItem1.DocId     = DocID;
                        accrItem1.DocSeq    = "M";
                        accrItem1.DocKind   = DocKind;
                        accrItem1.ItemnoAcc = "1";

                        accrItem1.Currency  = mainCurrencySymbol;
                        accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["MainCurrencyAmount"].ToString());
                        accrItem1.ExchRate  = decimal.Parse(dstPosting.Tables[0].Rows[0]["ExchangeRateMainToTHB"].ToString());

                        accrItem1.Active  = true;
                        accrItem1.CreBy   = 1;
                        accrItem1.CreDate = DateTime.Now;
                        accrItem1.UpdBy   = 1;
                        accrItem1.UpdDate = DateTime.Now;
                        accrItem1.UpdPgm  = "AdvancePosting";
                        #endregion Credit

                        #region Debit
                        capItem2.DocId         = DocID;
                        capItem2.DocSeq        = "M";
                        capItem2.DocKind       = DocKind;
                        capItem2.ItemnoAcc     = "2";
                        capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                        capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        capItem2.PmntBlock     = PostingConst.PmntBlock;
                        capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                        capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                        capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                        capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem2.TaxCode       = TaxCodeConst.NV;
                        capItem2.SpGlInd       = SpGlIndConst.D;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem2.BusArea = dstPosting.Tables[0].Rows[0]["BusinessArea"].ToString();
                        }

                        capItem2.Active  = true;
                        capItem2.CreBy   = 1;
                        capItem2.CreDate = DateTime.Now;
                        capItem2.UpdBy   = 1;
                        capItem2.UpdDate = DateTime.Now;
                        capItem2.UpdPgm  = "AdvancePosting";

                        accrItem2.DocId     = DocID;
                        accrItem2.DocSeq    = "M";
                        accrItem2.DocKind   = DocKind;
                        accrItem2.ItemnoAcc = "2";

                        accrItem2.Currency  = mainCurrencySymbol;
                        accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["MainCurrencyAmount"].ToString());
                        accrItem2.ExchRate  = decimal.Parse(dstPosting.Tables[0].Rows[0]["ExchangeRateMainToTHB"].ToString());

                        accrItem2.Active  = true;
                        accrItem2.CreBy   = 1;
                        accrItem2.CreDate = DateTime.Now;
                        accrItem2.UpdBy   = 1;
                        accrItem2.UpdDate = DateTime.Now;
                        accrItem2.UpdPgm  = "AdvancePosting";
                        #endregion Debit

                        BapiServiceProvider.Bapiacap09Service.Save(capItem1);
                        BapiServiceProvider.Bapiacap09Service.Save(capItem2);
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                    }
                    #endregion Foreign
                }
            }
        }
        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 string OnCancelComplete(long workFlowID, object eventData)
        {
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            /*TODO validate , save event data to workflow*/
            WorkFlowResponse response = new WorkFlowResponse();

            try
            {
                SubmitResponse submitResponse = eventData as SubmitResponse;
                response.WorkFlow           = workFlow;
                response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(submitResponse.WorkFlowStateEventID);
                response.ResponseBy         = UserAccount.UserID;
                response.ResponseDate       = DateTime.Now;
                response.Active             = true;
                response.CreBy   = UserAccount.UserID;
                response.CreDate = DateTime.Now;
                response.UpdBy   = UserAccount.UserID;
                response.UpdDate = DateTime.Now;
                response.UpdPgm  = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                if (string.IsNullOrEmpty(scgDocument.DocumentNo))
                {
                    //TODO : Generate Document No and Save it

                    int year = DateTime.Now.Year;

                    scgDocument.DocumentNo   = DbDocumentRunningService.RetrieveNextDocumentRunningNo(year, scgDocument.DocumentType.DocumentTypeID, scgDocument.CompanyID.CompanyID);
                    scgDocument.DocumentDate = DateTime.Now;
                    ScgeAccountingDaoProvider.SCGDocumentDao.Update(scgDocument);
                }
            }
            catch (Exception)
            {
                throw;
            }

            /*  TODO generate signal string
             *  Case 1 : MPA Document has initiator => SendDraftToWaitInitator
             *  Case 2 : MPA Document has no initiator => SendDraftToWaitApprove
             */


            string signal = "";

            MPADocument mpaDocument = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(workFlow.Document.DocumentID);

            //IList<DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetNotResponseInitiatorByDocumentID(workFlow.Document.DocumentID);
            signal = "WithdrawCompleteToCancel";
            if (ParameterServices.EnableEmail02Creator || ParameterServices.EnableEmail02Requester || ParameterServices.EnableEmail02Initiator)
            {
                long         sendToUserID = 0;
                IList <long> ccList       = new List <long>();

                if (ParameterServices.EnableEmail02Creator)
                {
                    sendToUserID = scgDocument.CreatorID.Userid;
                }

                if (ParameterServices.EnableEmail02Requester)
                {
                    if (sendToUserID == 0)
                    {
                        sendToUserID = scgDocument.RequesterID.Userid;
                    }
                    else if (scgDocument.CreatorID.Userid != scgDocument.RequesterID.Userid)
                    {
                        ccList.Add(scgDocument.RequesterID.Userid);
                    }

                    //Send mail02 to all travellers that doesnot requester
                    IList <MPAItem> items = ScgeAccountingQueryProvider.MPAItemQuery.FindMPAItemByMPADocumentID(mpaDocument.MPADocumentID);
                    foreach (MPAItem item in items)
                    {
                        if (sendToUserID == 0)
                        {
                            sendToUserID = item.UserID.Userid;
                        }
                        else if (item.UserID.Userid != sendToUserID && !ccList.Contains(item.UserID.Userid))
                        {
                            ccList.Add(item.UserID.Userid);
                        }
                    }
                }
                if (ParameterServices.EnableEmail02Initiator)
                {
                    IList <DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetDocumentInitiatorByDocumentID(workFlow.Document.DocumentID);
                    foreach (DocumentInitiator initiator in initiators)
                    {
                        if (sendToUserID == 0)
                        {
                            sendToUserID = initiator.UserID.Userid;
                        }
                        else if (initiator.UserID.Userid != sendToUserID && !ccList.Contains(initiator.UserID.Userid))
                        {
                            ccList.Add(initiator.UserID.Userid);
                        }
                    }
                }

                SCGEmailService.SendEmailEM02(response.WorkFlowResponseID, sendToUserID, ccList);
            }
            return(signal);
        }
        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");
            }
        }
Example #15
0
 public void UpdateHeaderAndFooterToTransaction(Guid txid, SCGDocument document, FnRemittance remittance)
 {
     SCGDocumentService.UpdateTransactionDocument(txid, document, false, false);
     this.UpdateRemittanceDocumentTransaction(txid, remittance, true);
 }
        public override void CreatePostData(long DocID, string DocKind)
        {
            Hashtable paramete = new Hashtable();

            paramete.Add("@DOCUMENT_ID", DocID.ToString());
            DataSet dstPosting = new DBManage().ExecuteQuery("FIXEDADVANCE_POSTING", paramete);

            SCGDocument   doc = SCG.eAccounting.Query.ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(DocID);
            DbSapInstance sap = SCG.DB.Query.ScgDbQueryProvider.DbCompanyQuery.GetSAPDocTypeForPosting(doc.CompanyID.CompanyCode);

            if (dstPosting.Tables[1].Rows.Count > 0)
            {
                #region HEAD
                Bapiache09 che09 = new Bapiache09();
                che09.DocId    = DocID;
                che09.DocSeq   = "M";
                che09.DocKind  = DocKind;
                che09.BusAct   = PostingConst.BusAct;
                che09.Username = sap.UserCPIC;
                che09.CompCode = dstPosting.Tables[1].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                che09.DocDate  = dstPosting.Tables[1].Rows[0]["PostingDate"].ToString();
                che09.DocKind  = DocKind;
                /*N-edited */
                //che09.DocType = sap.DocTypeFixedAdvancePosting;
                che09.DocType     = sap.DocTypeFixedAdvanceReturnPosting;
                che09.PstngDate   = dstPosting.Tables[1].Rows[0]["PostingDate"].ToString();
                che09.ReverseDate = dstPosting.Tables[1].Rows[0]["PostingDate"].ToString();
                che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                che09.DocStatus   = "N";


                if (dstPosting.Tables[1].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                {
                    che09.DocAppFlag = "A";
                }
                else
                {
                    che09.DocAppFlag = "V";
                }

                che09.Active  = true;
                che09.CreBy   = 1;
                che09.CreDate = DateTime.Now;
                che09.UpdBy   = 1;
                che09.UpdDate = DateTime.Now;
                che09.UpdPgm  = "FixedAdvancePosting";
                BapiServiceProvider.Bapiache09Service.Save(che09);
                #endregion HEAD

                #region Foolter
                Bapiacextc cextc = new Bapiacextc();
                cextc.DocId   = DocID;
                cextc.DocSeq  = "M";
                cextc.DocKind = DocKind;
                cextc.Field1  = PostingConst.BRNCH;
                cextc.Field2  = dstPosting.Tables[1].Rows[0]["BranchCode"].ToString();

                cextc.Active  = true;
                cextc.CreBy   = 1;
                cextc.CreDate = DateTime.Now;
                cextc.UpdBy   = 1;
                cextc.UpdDate = DateTime.Now;
                cextc.UpdPgm  = "FixedAdvancePosting";
                BapiServiceProvider.BapiacextcService.Save(cextc);

                Bapiacextc cextc1 = new Bapiacextc();
                cextc1.DocId   = DocID;
                cextc1.DocSeq  = "M";
                cextc1.DocKind = DocKind;
                cextc1.Field1  = PostingConst.VAT;
                cextc1.Field2  = TaxCodeConst.NV;

                cextc1.Active  = true;
                cextc1.CreBy   = 1;
                cextc1.CreDate = DateTime.Now;
                cextc1.UpdBy   = 1;
                cextc1.UpdDate = DateTime.Now;
                cextc1.UpdPgm  = "FixedAdvancePosting";
                BapiServiceProvider.BapiacextcService.Save(cextc1);
                #endregion Foolter

                #region Domestic

                #region Credit
                Bapiacap09 capItem1 = new Bapiacap09();
                capItem1.DocId     = DocID;
                capItem1.DocSeq    = "M";
                capItem1.DocKind   = DocKind;
                capItem1.ItemnoAcc = "1";
                //capItem1.GlAccount = SAPUIHelper.GetFixedPostingAccountReturnCr(long.Parse(dstPosting.Tables[1].Rows[0]["RequesterID"].ToString()));
                capItem1.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                capItem1.AllocNmbr     = dstPosting.Tables[1].Rows[0]["FixedAdvanceNo"].ToString();
                capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                capItem1.ItemText      = dstPosting.Tables[1].Rows[0]["Description"].ToString();
                capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                capItem1.Businessplace = dstPosting.Tables[1].Rows[0]["BranchCode"].ToString();
                capItem1.TaxCode       = TaxCodeConst.NV;
                capItem1.SpGlInd       = SpGlIndConst.H;
                capItem1.Active        = true;
                capItem1.CreBy         = 1;
                capItem1.CreDate       = DateTime.Now;
                capItem1.UpdBy         = 1;
                capItem1.UpdDate       = DateTime.Now;
                capItem1.UpdPgm        = "FixedAdvanceReturnPosting";
                BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                Bapiaccr09 accrItem1 = new Bapiaccr09();
                accrItem1.DocId     = DocID;
                accrItem1.DocSeq    = "M";
                accrItem1.DocKind   = DocKind;
                accrItem1.ItemnoAcc = "1";
                accrItem1.Currency  = PostingConst.Currency;
                accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[1].Rows[0]["Amount"].ToString());
                accrItem1.Active    = true;
                accrItem1.CreBy     = 1;
                accrItem1.CreDate   = DateTime.Now;
                accrItem1.UpdBy     = 1;
                accrItem1.UpdDate   = DateTime.Now;
                accrItem1.UpdPgm    = "FixedAdvanceReturnPosting";
                BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                #endregion Credit

                #region Debit
                Bapiacgl09 cglItem2 = new Bapiacgl09();
                cglItem2.DocId     = DocID;
                cglItem2.DocSeq    = "M";
                cglItem2.DocKind   = DocKind;
                cglItem2.ItemnoAcc = "2";
                cglItem2.GlAccount = dstPosting.Tables[1].Rows[0]["BankAccount"].ToString();
                cglItem2.AllocNmbr = dstPosting.Tables[1].Rows[0]["FixedAdvanceNo"].ToString();
                cglItem2.AllocNmbr = SAPUIHelper.SubString18(cglItem2.AllocNmbr);
                cglItem2.ItemText  = dstPosting.Tables[1].Rows[0]["Description"].ToString();
                cglItem2.ItemText  = SAPUIHelper.SubString50(cglItem2.ItemText);

                cglItem2.Active  = true;
                cglItem2.CreBy   = 1;
                cglItem2.CreDate = DateTime.Now;
                cglItem2.UpdBy   = 1;
                cglItem2.UpdDate = DateTime.Now;
                cglItem2.UpdPgm  = "FixedAdvanceReturnPosting";

                /*N-edited valuedate = requestdate*/
                cglItem2.ValueDate = dstPosting.Tables[1].Rows[0]["ReturnRequestDate"].ToString(); /*DateFormat = YYYYMMDD*/

                BapiServiceProvider.Bapiacgl09Service.Save(cglItem2);

                Bapiaccr09 accrItem2 = new Bapiaccr09();
                accrItem2.DocId     = DocID;
                accrItem2.DocSeq    = "M";
                accrItem2.DocKind   = DocKind;
                accrItem2.ItemnoAcc = "2";

                accrItem2.Currency  = PostingConst.Currency;
                accrItem2.AmtDoccur = (decimal.Parse(dstPosting.Tables[1].Rows[0]["Amount"].ToString()));

                accrItem2.Active  = true;
                accrItem2.CreBy   = 1;
                accrItem2.CreDate = DateTime.Now;
                accrItem2.UpdBy   = 1;
                accrItem2.UpdDate = DateTime.Now;
                accrItem2.UpdPgm  = "FixedAdvanceReturnPosting";
                BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                #endregion Debit


                #endregion Domestic
            }
        }
        public override void CreatePostData(long DocID, string DocKind)
        {
            Hashtable paramete = new Hashtable();

            paramete.Add("@DOCUMENT_ID", DocID.ToString());

            DataSet dstPosting         = new DBManage().ExecuteQuery("REMITANCE_POSTING", paramete);
            bool    repOffice          = false;
            string  mainCurrencySymbol = string.Empty;

            SCGDocument doc = SCG.eAccounting.Query.ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(DocID);

            DbSapInstance sap = SCG.DB.Query.ScgDbQueryProvider.DbCompanyQuery.GetSAPDocTypeForPosting(doc.CompanyID.CompanyCode);

            if (dstPosting.Tables[0].Rows.Count >= 1)
            {
                if (!string.IsNullOrEmpty(dstPosting.Tables[0].Rows[0]["IsRepOffice"].ToString()))
                {
                    repOffice = bool.Parse(dstPosting.Tables[0].Rows[0]["IsRepOffice"].ToString());
                }

                // get main currency symbol
                if (repOffice)
                {
                    DbCurrency mainCurrency = SS.DB.Query.SsDbQueryProvider.DbCurrencyQuery.FindByIdentity(short.Parse(dstPosting.Tables[0].Rows[0]["MainCurrencyID"].ToString()));
                    if (mainCurrency != null)
                    {
                        mainCurrencySymbol = mainCurrency.Symbol;
                    }
                }

                #region HEAD
                Bapiache09 che09 = new Bapiache09();
                che09.DocId     = DocID;
                che09.DocSeq    = "M";
                che09.DocKind   = DocKind;
                che09.DocStatus = "N";

                che09.BusAct      = PostingConst.BusAct;
                che09.Username    = sap.UserCPIC;//PostingConst.UserCPIC;
                che09.CompCode    = dstPosting.Tables[0].Rows[0]["CompanyCode"].ToString();
                che09.DocDate     = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                che09.DocType     = sap.DocTypeRmtPosting;//DocTypeConst.SV;
                che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());

                che09.Active  = true;
                che09.CreBy   = 1;
                che09.CreDate = DateTime.Now;
                che09.UpdBy   = 1;
                che09.UpdDate = DateTime.Now;
                che09.UpdPgm  = "RemetancePosting";
                BapiServiceProvider.Bapiache09Service.Save(che09);
                #endregion HEAD

                #region Foolter
                Bapiacextc cextc = new Bapiacextc();
                cextc.DocId   = DocID;
                cextc.DocSeq  = "M";
                cextc.DocKind = DocKind;
                cextc.Field1  = PostingConst.BRNCH;
                cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                cextc.Active  = true;
                cextc.CreBy   = 1;
                cextc.CreDate = DateTime.Now;
                cextc.UpdBy   = 1;
                cextc.UpdDate = DateTime.Now;
                cextc.UpdPgm  = "RemetancePosting";
                BapiServiceProvider.BapiacextcService.Save(cextc);

                Bapiacextc cextc1 = new Bapiacextc();
                cextc1.DocId   = DocID;
                cextc1.DocSeq  = "M";
                cextc1.DocKind = DocKind;
                cextc1.Field1  = PostingConst.VAT;
                cextc1.Field2  = TaxCodeConst.NV;

                cextc1.Active  = true;
                cextc1.CreBy   = 1;
                cextc1.CreDate = DateTime.Now;
                cextc1.UpdBy   = 1;
                cextc1.UpdDate = DateTime.Now;
                cextc1.UpdPgm  = "RemetancePosting";
                BapiServiceProvider.BapiacextcService.Save(cextc1);
                #endregion Foolter

                #region คู่บัญชี


                int intSeq = 0;

                for (int i = 0; i < dstPosting.Tables[0].Rows.Count; i++)
                {
                    if (!repOffice)
                    {
                        #region Credit

                        intSeq++;

                        Bapiacap09 capItem1 = new Bapiacap09();
                        capItem1.DocId         = DocID;
                        capItem1.DocSeq        = "M";
                        capItem1.DocKind       = DocKind;
                        capItem1.ItemnoAcc     = intSeq.ToString();
                        capItem1.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[i]["RequesterID"].ToString())).VendorCode;
                        capItem1.AllocNmbr     = dstPosting.Tables[0].Rows[i]["AdvanceNo"].ToString();
                        capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        capItem1.ItemText      = dstPosting.Tables[0].Rows[i]["Description"].ToString();
                        capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                        capItem1.Businessplace = dstPosting.Tables[0].Rows[i]["BranchCode"].ToString();
                        capItem1.TaxCode       = TaxCodeConst.NV;
                        capItem1.SpGlInd       = SpGlIndConst.D;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem1.BusArea = dstPosting.Tables[0].Rows[i]["BusinessArea"].ToString();
                        }

                        capItem1.Active  = true;
                        capItem1.CreBy   = 1;
                        capItem1.CreDate = DateTime.Now;
                        capItem1.UpdBy   = 1;
                        capItem1.UpdDate = DateTime.Now;
                        capItem1.UpdPgm  = "RemetancePosting";
                        BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                        Bapiaccr09 accrItem1 = new Bapiaccr09();
                        accrItem1.DocId     = DocID;
                        accrItem1.DocSeq    = "M";
                        accrItem1.DocKind   = DocKind;
                        accrItem1.ItemnoAcc = intSeq.ToString();

                        accrItem1.Currency  = PostingConst.Currency;
                        accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[i]["RemittanceAmount"].ToString());

                        accrItem1.Active  = true;
                        accrItem1.CreBy   = 1;
                        accrItem1.CreDate = DateTime.Now;
                        accrItem1.UpdBy   = 1;
                        accrItem1.UpdDate = DateTime.Now;
                        accrItem1.UpdPgm  = "RemetancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);

                        #endregion Credit

                        #region Debit

                        intSeq++;

                        Bapiacgl09 cglItem2 = new Bapiacgl09();
                        cglItem2.DocId     = DocID;
                        cglItem2.DocSeq    = "M";
                        cglItem2.DocKind   = DocKind;
                        cglItem2.ItemnoAcc = intSeq.ToString();

                        cglItem2.GlAccount = PostingConst.GLAccount;

                        cglItem2.AllocNmbr = dstPosting.Tables[0].Rows[i]["AdvanceNo"].ToString();
                        cglItem2.AllocNmbr = SAPUIHelper.SubString18(cglItem2.AllocNmbr);
                        cglItem2.ItemText  = dstPosting.Tables[0].Rows[i]["Description"].ToString();
                        cglItem2.ItemText  = SAPUIHelper.SubString50(cglItem2.ItemText);

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            cglItem2.BusArea = dstPosting.Tables[0].Rows[i]["BusinessArea"].ToString();
                        }

                        cglItem2.Active  = true;
                        cglItem2.CreBy   = 1;
                        cglItem2.CreDate = DateTime.Now;
                        cglItem2.UpdBy   = 1;
                        cglItem2.UpdDate = DateTime.Now;
                        cglItem2.UpdPgm  = "RemetancePosting";
                        BapiServiceProvider.Bapiacgl09Service.Save(cglItem2);

                        Bapiaccr09 accrItem2 = new Bapiaccr09();
                        accrItem2.DocId     = DocID;
                        accrItem2.DocSeq    = "M";
                        accrItem2.DocKind   = DocKind;
                        accrItem2.ItemnoAcc = intSeq.ToString();

                        accrItem2.Currency  = PostingConst.Currency;
                        accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[i]["RemittanceAmount"].ToString());

                        accrItem2.Active  = true;
                        accrItem2.CreBy   = 1;
                        accrItem2.CreDate = DateTime.Now;
                        accrItem2.UpdBy   = 1;
                        accrItem2.UpdDate = DateTime.Now;
                        accrItem2.UpdPgm  = "RemetancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);

                        #endregion Debit
                    }
                    else //post RMT for rep office
                    {
                        #region Credit
                        intSeq++;
                        Bapiacap09 capItem1 = new Bapiacap09();
                        capItem1.DocId         = DocID;
                        capItem1.DocSeq        = "M";
                        capItem1.DocKind       = DocKind;
                        capItem1.ItemnoAcc     = intSeq.ToString();
                        capItem1.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[i]["RequesterID"].ToString())).VendorCode;
                        capItem1.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem1.BlineDate     = dstPosting.Tables[0].Rows[i]["BaseLineDate"].ToString();
                        capItem1.PmntBlock     = PostingConst.PmntBlock;
                        capItem1.AllocNmbr     = dstPosting.Tables[0].Rows[i]["AdvanceNo"].ToString();
                        capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        capItem1.ItemText      = dstPosting.Tables[0].Rows[i]["Description"].ToString();
                        capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                        capItem1.Businessplace = dstPosting.Tables[0].Rows[i]["BranchCode"].ToString();
                        capItem1.TaxCode       = TaxCodeConst.NV;
                        capItem1.SpGlInd       = SpGlIndConst.D;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem1.BusArea = dstPosting.Tables[0].Rows[i]["BusinessArea"].ToString();
                        }

                        capItem1.Active  = true;
                        capItem1.CreBy   = 1;
                        capItem1.CreDate = DateTime.Now;
                        capItem1.UpdBy   = 1;
                        capItem1.UpdDate = DateTime.Now;
                        capItem1.UpdPgm  = "RemittancePosting";
                        BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                        Bapiaccr09 accrItem1 = new Bapiaccr09();
                        accrItem1.DocId     = DocID;
                        accrItem1.DocSeq    = "M";
                        accrItem1.DocKind   = DocKind;
                        accrItem1.ItemnoAcc = intSeq.ToString();

                        accrItem1.Currency  = mainCurrencySymbol;
                        accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[i]["RemittanceAmountMainCurrency"].ToString());
                        accrItem1.ExchRate  = decimal.Parse(dstPosting.Tables[0].Rows[i]["ExchangeRateMainToTHB"].ToString());

                        accrItem1.Active  = true;
                        accrItem1.CreBy   = 1;
                        accrItem1.CreDate = DateTime.Now;
                        accrItem1.UpdBy   = 1;
                        accrItem1.UpdDate = DateTime.Now;
                        accrItem1.UpdPgm  = "RemittancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);

                        #endregion Credit

                        #region Debit

                        intSeq++;

                        Bapiacap09 capItem2 = new Bapiacap09();
                        capItem2.DocId         = DocID;
                        capItem2.DocSeq        = "M";
                        capItem2.DocKind       = DocKind;
                        capItem2.ItemnoAcc     = intSeq.ToString();
                        capItem2.VendorNo      = dstPosting.Tables[0].Rows[i]["PBCode"].ToString();
                        capItem2.PmntBlock     = PostingConst.PmntBlock;
                        capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem2.BlineDate     = dstPosting.Tables[0].Rows[i]["BaseLineDate"].ToString();
                        capItem2.AllocNmbr     = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[i]["RequesterID"].ToString())).EmployeeName;
                        capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        capItem2.ItemText      = dstPosting.Tables[0].Rows[i]["Description"].ToString();
                        capItem2.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                        capItem2.Businessplace = dstPosting.Tables[0].Rows[i]["BranchCode"].ToString();
                        capItem2.TaxCode       = TaxCodeConst.NV;

                        if (bool.Parse(dstPosting.Tables[0].Rows[0]["RequireBusinessArea"].ToString()))
                        {
                            capItem2.BusArea = dstPosting.Tables[0].Rows[i]["BusinessArea"].ToString();
                        }

                        capItem2.Active  = true;
                        capItem2.CreBy   = 1;
                        capItem2.CreDate = DateTime.Now;
                        capItem2.UpdBy   = 1;
                        capItem2.UpdDate = DateTime.Now;
                        capItem2.UpdPgm  = "RemittancePosting";
                        BapiServiceProvider.Bapiacap09Service.Save(capItem2);

                        Bapiaccr09 accrItem2 = new Bapiaccr09();
                        accrItem2.DocId     = DocID;
                        accrItem2.DocSeq    = "M";
                        accrItem2.DocKind   = DocKind;
                        accrItem2.ItemnoAcc = intSeq.ToString();

                        accrItem2.Currency  = mainCurrencySymbol;
                        accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[i]["RemittanceAmountMainCurrency"].ToString());
                        accrItem2.ExchRate  = decimal.Parse(dstPosting.Tables[0].Rows[i]["ExchangeRateMainToTHB"].ToString());

                        accrItem2.Active  = true;
                        accrItem2.CreBy   = 1;
                        accrItem2.CreDate = DateTime.Now;
                        accrItem2.UpdBy   = 1;
                        accrItem2.UpdDate = DateTime.Now;
                        accrItem2.UpdPgm  = "RemittancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                        #endregion Debit
                    }
                }


                #endregion คู่บัญชี
            }
        }
Example #18
0
        public override string OnSendDraft(long workFlowID, object eventData)
        {
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            /*TODO validate , save event data to workflow*/
            WorkFlowResponse response = new WorkFlowResponse();

            try
            {
                SubmitResponse submitResponse = eventData as SubmitResponse;
                response.WorkFlow           = workFlow;
                response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(submitResponse.WorkFlowStateEventID);
                response.ResponseBy         = UserAccount.UserID;
                response.ResponseDate       = DateTime.Now;
                response.Active             = true;
                response.CreBy   = UserAccount.UserID;
                response.CreDate = DateTime.Now;
                response.UpdBy   = UserAccount.UserID;
                response.UpdDate = DateTime.Now;
                response.UpdPgm  = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                if (string.IsNullOrEmpty(scgDocument.DocumentNo))
                {
                    //TODO : Generate Document No and Save it

                    int year = DateTime.Now.Year;

                    scgDocument.DocumentNo   = DbDocumentRunningService.RetrieveNextDocumentRunningNo(year, scgDocument.DocumentType.DocumentTypeID, scgDocument.CompanyID.CompanyID);
                    scgDocument.DocumentDate = DateTime.Now;
                    ScgeAccountingDaoProvider.SCGDocumentDao.Update(scgDocument);
                }
            }
            catch (Exception)
            {
                throw;
            }

            /*  TODO generate signal string
             *  Case 1 : CA Document has initiator => SendDraftToWaitInitator
             *  Case 2 : CA Document has no initiator => SendDraftToWaitApprove
             */


            string signal = "";

            //CADocument caDocument = ScgeAccountingQueryProvider.CADocumentQuery.GetCADocumentByDocumentID(workFlow.Document.DocumentID);

            IList <DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetNotResponseInitiatorByDocumentID(workFlow.Document.DocumentID);

            if (initiators.Count > 0)
            {
                signal = "SendDraftToWaitInitial";
            }
            else
            {
                signal = "SendDraftToWaitApprove";
            }

            if (ParameterServices.EnableEmail02Requester)
            {
                if (scgDocument.CreatorID.Userid != scgDocument.RequesterID.Userid)
                {
                    SCGEmailService.SendEmailEM02(response.WorkFlowResponseID, scgDocument.RequesterID.Userid, null);
                }
            }

            return(signal);
        }
        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;
            }
        }
Example #20
0
        public override void CreatePostData(long DocID, string DocKind)
        {
            Hashtable paramete = new Hashtable();

            paramete.Add("@DOCUMENT_ID", DocID.ToString());
            DataSet       dstPosting = new DBManage().ExecuteQuery("FIXEDADVANCE_POSTING", paramete);
            SCGDocument   doc        = SCG.eAccounting.Query.ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(DocID);
            DbSapInstance sap        = SCG.DB.Query.ScgDbQueryProvider.DbCompanyQuery.GetSAPDocTypeForPosting(doc.CompanyID.CompanyCode);

            if (dstPosting.Tables[0].Rows.Count > 0)
            {
                #region Domestic

                if (dstPosting.Tables[0].Rows[0]["FixedAdvanceType"].ToString() == "1")
                {
                    #region HEAD
                    Bapiache09 che09 = new Bapiache09();
                    che09.DocId    = DocID;
                    che09.DocSeq   = "M";
                    che09.DocKind  = DocKind;
                    che09.BusAct   = PostingConst.BusAct;
                    che09.Username = sap.UserCPIC; //PostingConst.UserCPIC;
                    che09.CompCode = dstPosting.Tables[0].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                    che09.DocDate  = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                    che09.DocKind  = DocKind;

                    /*N-edit*/
                    //che09.DocType = sap.DocTypeAdvancePostingDM;//DocTypeConst.KR;
                    che09.DocType = sap.DocTypeFixedAdvancePosting;//DocTypeConst.KR;

                    che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                    che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                    che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                    che09.DocStatus   = "N";

                    if (dstPosting.Tables[0].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                    {
                        che09.DocAppFlag = "A";
                    }
                    else
                    {
                        che09.DocAppFlag = "V";
                    }
                    che09.Active  = true;
                    che09.CreBy   = 1;
                    che09.CreDate = DateTime.Now;
                    che09.UpdBy   = 1;
                    che09.UpdDate = DateTime.Now;
                    che09.UpdPgm  = "FixedAdvancePosting";
                    BapiServiceProvider.Bapiache09Service.Save(che09);
                    #endregion HEAD

                    #region Foolter
                    Bapiacextc cextc = new Bapiacextc();
                    cextc.DocId   = DocID;
                    cextc.DocSeq  = "M";
                    cextc.DocKind = DocKind;
                    cextc.Field1  = PostingConst.BRNCH;
                    cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                    cextc.Active  = true;
                    cextc.CreBy   = 1;
                    cextc.CreDate = DateTime.Now;
                    cextc.UpdBy   = 1;
                    cextc.UpdDate = DateTime.Now;
                    cextc.UpdPgm  = "FixedAdvancePosting";
                    BapiServiceProvider.BapiacextcService.Save(cextc);

                    Bapiacextc cextc1 = new Bapiacextc();
                    cextc1.DocId   = DocID;
                    cextc1.DocSeq  = "M";
                    cextc1.DocKind = DocKind;
                    cextc1.Field1  = PostingConst.VAT;
                    cextc1.Field2  = TaxCodeConst.NV;

                    cextc1.Active  = true;
                    cextc1.CreBy   = 1;
                    cextc1.CreDate = DateTime.Now;
                    cextc1.UpdBy   = 1;
                    cextc1.UpdDate = DateTime.Now;
                    cextc1.UpdPgm  = "FixedAdvancePosting";
                    BapiServiceProvider.BapiacextcService.Save(cextc1);
                    #endregion Foolter

                    #region Transfer หรือ Cheque

                    #region Credit
                    Bapiacap09 capItem1 = new Bapiacap09();
                    capItem1.DocId     = DocID;
                    capItem1.DocSeq    = "M";
                    capItem1.DocKind   = DocKind;
                    capItem1.ItemnoAcc = "1";
                    capItem1.VendorNo  = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                    capItem1.PmntBlock = PostingConst.PmntBlock;
                    capItem1.Pmnttrms  = PostingConst.Pmnttrms;
                    capItem1.BlineDate = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                    //capItem1.AllocNmbr = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString())).EmployeeName;
                    //capItem1.AllocNmbr = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                    capItem1.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                    capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                    capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                    capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                    capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                    capItem1.TaxCode       = TaxCodeConst.NV;
                    capItem1.Active        = true;
                    capItem1.CreBy         = 1;
                    capItem1.CreDate       = DateTime.Now;
                    capItem1.UpdBy         = 1;
                    capItem1.UpdDate       = DateTime.Now;
                    capItem1.UpdPgm        = "FixedAdvancePosting";

                    capItem1.Pmtmthsupl = doc.Supplementary; //dstPosting.Tables[0].Rows[0]["Supplementary"].ToString();
                    BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                    Bapiaccr09 accrItem1 = new Bapiaccr09();
                    accrItem1.DocId     = DocID;
                    accrItem1.DocSeq    = "M";
                    accrItem1.DocKind   = DocKind;
                    accrItem1.ItemnoAcc = "1";
                    accrItem1.Currency  = PostingConst.Currency;
                    accrItem1.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                    accrItem1.Active  = true;
                    accrItem1.CreBy   = 1;
                    accrItem1.CreDate = DateTime.Now;
                    accrItem1.UpdBy   = 1;
                    accrItem1.UpdDate = DateTime.Now;
                    accrItem1.UpdPgm  = "FixedAdvancePosting";
                    BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                    #endregion Credit

                    #region Debit
                    Bapiacap09 capItem2 = new Bapiacap09();
                    capItem2.DocId     = DocID;
                    capItem2.DocSeq    = "M";
                    capItem2.DocKind   = DocKind;
                    capItem2.ItemnoAcc = "2";
                    //capItem2.GlAccount = SAPUIHelper.GetFixedPostingAccountDr(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString()));
                    capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                    capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                    capItem2.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                    capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                    capItem2.PmntBlock     = "";
                    capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                    capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                    capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                    capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                    capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                    capItem2.TaxCode       = TaxCodeConst.NV;
                    capItem2.SpGlInd       = SpGlIndConst.H;
                    capItem2.Pmtmthsupl    = doc.Supplementary; //dstPosting.Tables[0].Rows[0]["Supplementary"].ToString();

                    capItem2.Active  = true;
                    capItem2.CreBy   = 1;
                    capItem2.CreDate = DateTime.Now;
                    capItem2.UpdBy   = 1;
                    capItem2.UpdDate = DateTime.Now;
                    capItem2.UpdPgm  = "FixedAdvancePosting";
                    BapiServiceProvider.Bapiacap09Service.Save(capItem2);

                    Bapiaccr09 accrItem2 = new Bapiaccr09();
                    accrItem2.DocId     = DocID;
                    accrItem2.DocSeq    = "M";
                    accrItem2.DocKind   = DocKind;
                    accrItem2.ItemnoAcc = "2";
                    accrItem2.Currency  = PostingConst.Currency;
                    accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                    accrItem2.Active  = true;
                    accrItem2.CreBy   = 1;
                    accrItem2.CreDate = DateTime.Now;
                    accrItem2.UpdBy   = 1;
                    accrItem2.UpdDate = DateTime.Now;
                    accrItem2.UpdPgm  = "FixedAdvancePosting";
                    BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                    #endregion Debit

                    #endregion Transfer หรือ Cheque
                }
                else
                {
                    if (decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString()) > 0)
                    {
                        #region HEAD
                        Bapiache09 che09 = new Bapiache09();
                        che09.DocId    = DocID;
                        che09.DocSeq   = "M";
                        che09.DocKind  = DocKind;
                        che09.BusAct   = PostingConst.BusAct;
                        che09.Username = sap.UserCPIC; //PostingConst.UserCPIC;
                        che09.CompCode = dstPosting.Tables[0].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                        che09.DocDate  = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.DocKind  = DocKind;

                        /*N-edit*/
                        //che09.DocType = sap.DocTypeAdvancePostingDM;//DocTypeConst.KR;
                        che09.DocType = sap.DocTypeFixedAdvancePosting;//DocTypeConst.KR;

                        che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                        che09.DocStatus   = "N";

                        if (dstPosting.Tables[0].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                        {
                            che09.DocAppFlag = "A";
                        }
                        else
                        {
                            che09.DocAppFlag = "V";
                        }
                        che09.Active  = true;
                        che09.CreBy   = 1;
                        che09.CreDate = DateTime.Now;
                        che09.UpdBy   = 1;
                        che09.UpdDate = DateTime.Now;
                        che09.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiache09Service.Save(che09);
                        #endregion HEAD

                        #region Foolter
                        Bapiacextc cextc = new Bapiacextc();
                        cextc.DocId   = DocID;
                        cextc.DocSeq  = "M";
                        cextc.DocKind = DocKind;
                        cextc.Field1  = PostingConst.BRNCH;
                        cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                        cextc.Active  = true;
                        cextc.CreBy   = 1;
                        cextc.CreDate = DateTime.Now;
                        cextc.UpdBy   = 1;
                        cextc.UpdDate = DateTime.Now;
                        cextc.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc);

                        Bapiacextc cextc1 = new Bapiacextc();
                        cextc1.DocId   = DocID;
                        cextc1.DocSeq  = "M";
                        cextc1.DocKind = DocKind;
                        cextc1.Field1  = PostingConst.VAT;
                        cextc1.Field2  = TaxCodeConst.NV;

                        cextc1.Active  = true;
                        cextc1.CreBy   = 1;
                        cextc1.CreDate = DateTime.Now;
                        cextc1.UpdBy   = 1;
                        cextc1.UpdDate = DateTime.Now;
                        cextc1.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc1);
                        #endregion Foolter

                        if (dstPosting.Tables[0].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                        {
                            #region Cash

                            #region Credit
                            Bapiacap09 capItem1 = new Bapiacap09();
                            capItem1.DocId         = DocID;
                            capItem1.DocSeq        = "M";
                            capItem1.DocKind       = DocKind;
                            capItem1.ItemnoAcc     = "1";
                            capItem1.VendorNo      = dstPosting.Tables[0].Rows[0]["PBCode"].ToString();
                            capItem1.PmntBlock     = PostingConst.PmntBlock;
                            capItem1.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem1.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem1.AllocNmbr     = SAPUIHelper.GetFixedPostingAccountAdjustCr(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString()));
                            capItem1.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                            capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                            capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem1.TaxCode       = TaxCodeConst.NV;
                            capItem1.Pmtmthsupl    = doc.Supplementary; //dstPosting.Tables[0].Rows[0]["Supplementary"].ToString();

                            capItem1.Active  = true;
                            capItem1.CreBy   = 1;
                            capItem1.CreDate = DateTime.Now;
                            capItem1.UpdBy   = 1;
                            capItem1.UpdDate = DateTime.Now;
                            capItem1.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                            Bapiaccr09 accrItem1 = new Bapiaccr09();
                            accrItem1.DocId     = DocID;
                            accrItem1.DocSeq    = "M";
                            accrItem1.DocKind   = DocKind;
                            accrItem1.ItemnoAcc = "1";

                            accrItem1.Currency  = PostingConst.Currency;
                            accrItem1.AmtDoccur = 0 - (decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString()) - decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString()));

                            accrItem1.Active  = true;
                            accrItem1.CreBy   = 1;
                            accrItem1.CreDate = DateTime.Now;
                            accrItem1.UpdBy   = 1;
                            accrItem1.UpdDate = DateTime.Now;
                            accrItem1.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                            #endregion Credit

                            #region Debit
                            Bapiacap09 capItem2 = new Bapiacap09();
                            capItem2.DocId     = DocID;
                            capItem2.DocSeq    = "M";
                            capItem2.DocKind   = DocKind;
                            capItem2.ItemnoAcc = "2";
                            //capItem2.GlAccount = SAPUIHelper.GetFixedPostingAccountAdjustDr(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString()));
                            capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                            capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem2.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem2.PmntBlock     = PostingConst.PmntBlock;
                            capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                            capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                            capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem2.TaxCode       = TaxCodeConst.NV;
                            capItem2.SpGlInd       = SpGlIndConst.H;
                            capItem2.Active        = true;
                            capItem2.CreBy         = 1;
                            capItem2.CreDate       = DateTime.Now;
                            capItem2.UpdBy         = 1;
                            capItem2.UpdDate       = DateTime.Now;
                            capItem2.UpdPgm        = "FixedAdvancePosting";
                            capItem2.Pmtmthsupl    = doc.Supplementary; //dstPosting.Tables[0].Rows[0]["Supplementary"].ToString();

                            BapiServiceProvider.Bapiacap09Service.Save(capItem2);

                            Bapiaccr09 accrItem2 = new Bapiaccr09();
                            accrItem2.DocId     = DocID;
                            accrItem2.DocSeq    = "M";
                            accrItem2.DocKind   = DocKind;
                            accrItem2.ItemnoAcc = "2";

                            accrItem2.Currency  = PostingConst.Currency;
                            accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                            accrItem2.Active  = true;
                            accrItem2.CreBy   = 1;
                            accrItem2.CreDate = DateTime.Now;
                            accrItem2.UpdBy   = 1;
                            accrItem2.UpdDate = DateTime.Now;
                            accrItem2.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                            #endregion Debit

                            #region CreditDifferentAmount
                            Bapiacap09 capItem3 = new Bapiacap09();
                            capItem3.DocId         = DocID;
                            capItem3.DocSeq        = "M";
                            capItem3.DocKind       = DocKind;
                            capItem3.ItemnoAcc     = "3";
                            capItem3.VendorNo      = dstPosting.Tables[0].Rows[0]["PBCode"].ToString();
                            capItem3.PmntBlock     = PostingConst.PmntBlock;
                            capItem3.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem3.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem3.AllocNmbr     = SAPUIHelper.GetFixedPostingAccountCr(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString()));
                            capItem3.AllocNmbr     = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                            capItem3.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem3.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem3.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                            capItem3.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem3.TaxCode       = TaxCodeConst.NV;

                            capItem3.Active  = true;
                            capItem3.CreBy   = 1;
                            capItem3.CreDate = DateTime.Now;
                            capItem3.UpdBy   = 1;
                            capItem3.UpdDate = DateTime.Now;
                            capItem3.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiacap09Service.Save(capItem3);

                            Bapiaccr09 accrItem3 = new Bapiaccr09();
                            accrItem3.DocId     = DocID;
                            accrItem3.DocSeq    = "M";
                            accrItem3.DocKind   = DocKind;
                            accrItem3.ItemnoAcc = "3";

                            accrItem3.Currency  = PostingConst.Currency;
                            accrItem3.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString());

                            accrItem3.Active  = true;
                            accrItem3.CreBy   = 1;
                            accrItem3.CreDate = DateTime.Now;
                            accrItem3.UpdBy   = 1;
                            accrItem3.UpdDate = DateTime.Now;
                            accrItem3.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiaccr09Service.Save(accrItem3);
                            #endregion CreditDifferrent

                            #endregion Cash
                        }
                        else
                        {
                            #region Transfer หรือ Cheque

                            #region Credit
                            Bapiacap09 capItem1 = new Bapiacap09();
                            capItem1.DocId     = DocID;
                            capItem1.DocSeq    = "M";
                            capItem1.DocKind   = DocKind;
                            capItem1.ItemnoAcc = "1";
                            capItem1.VendorNo  = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                            capItem1.PmntBlock = "";
                            capItem1.Pmnttrms  = PostingConst.Pmnttrms;
                            capItem1.BlineDate = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            //FixedAdvanceDocument favDb = ScgeAccountingQueryProvider.FixedAdvanceDocumentQuery.GetFixedAdvanceByDocumentID(DocID);
                            //FixedAdvanceDocument fixAd = ScgeAccountingQueryProvider.FixedAdvanceDocumentQuery.GetFixedAdvanceByFixedAdvanceID((long)favDb.RefFixedAdvanceID);
                            //SCGDocument scgDoc = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(fixAd.DocumentID.DocumentID);
                            //capItem1.AllocNmbr = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            //capItem1.AllocNmbr = scgDoc.DocumentNo;
                            //capItem1.AllocNmbr = SAPUIHelper.SubString18(capItem1.AllocNmbr);

                            capItem1.AllocNmbr     = dstPosting.Tables[0].Rows[0]["RefFixedAdvanceID"].ToString();
                            capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                            capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem1.TaxCode       = TaxCodeConst.NV;
                            capItem1.SpGlInd       = SpGlIndConst.H;

                            capItem1.Active  = true;
                            capItem1.CreBy   = 1;
                            capItem1.CreDate = DateTime.Now;
                            capItem1.UpdBy   = 1;
                            capItem1.UpdDate = DateTime.Now;
                            capItem1.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                            Bapiaccr09 accrItem1 = new Bapiaccr09();
                            accrItem1.DocId     = DocID;
                            accrItem1.DocSeq    = "M";
                            accrItem1.DocKind   = DocKind;
                            accrItem1.ItemnoAcc = "1";
                            accrItem1.Currency  = PostingConst.Currency;
                            accrItem1.AmtDoccur = 0 - (decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString()) - decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString()));

                            accrItem1.Active  = true;
                            accrItem1.CreBy   = 1;
                            accrItem1.CreDate = DateTime.Now;
                            accrItem1.UpdBy   = 1;
                            accrItem1.UpdDate = DateTime.Now;
                            accrItem1.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                            #endregion Credit

                            #region Debit
                            Bapiacap09 capItem2 = new Bapiacap09();
                            capItem2.DocId     = DocID;
                            capItem2.DocSeq    = "M";
                            capItem2.DocKind   = DocKind;
                            capItem2.ItemnoAcc = "2";
                            capItem2.VendorNo  = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                            capItem2.Pmnttrms  = PostingConst.Pmnttrms;
                            capItem2.PymtMeth  = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem2.BlineDate = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem2.PmntBlock = "";
                            capItem2.AllocNmbr = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            //capItem2.AllocNmbr = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                            capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                            capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem2.TaxCode       = TaxCodeConst.NV;
                            capItem2.SpGlInd       = SpGlIndConst.H;

                            capItem2.Active  = true;
                            capItem2.CreBy   = 1;
                            capItem2.CreDate = DateTime.Now;
                            capItem2.UpdBy   = 1;
                            capItem2.UpdDate = DateTime.Now;
                            capItem2.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiacap09Service.Save(capItem2);

                            Bapiaccr09 accrItem2 = new Bapiaccr09();
                            accrItem2.DocId     = DocID;
                            accrItem2.DocSeq    = "M";
                            accrItem2.DocKind   = DocKind;
                            accrItem2.ItemnoAcc = "2";
                            accrItem2.Currency  = PostingConst.Currency;
                            accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                            accrItem2.Active  = true;
                            accrItem2.CreBy   = 1;
                            accrItem2.CreDate = DateTime.Now;
                            accrItem2.UpdBy   = 1;
                            accrItem2.UpdDate = DateTime.Now;
                            accrItem2.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                            #endregion Debit

                            #region CreditDifferrent
                            Bapiacap09 capItem3 = new Bapiacap09();
                            capItem3.DocId         = DocID;
                            capItem3.DocSeq        = "M";
                            capItem3.DocKind       = DocKind;
                            capItem3.ItemnoAcc     = "3";
                            capItem3.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                            capItem3.PmntBlock     = "";
                            capItem3.Pmnttrms      = PostingConst.Pmnttrms;
                            capItem3.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                            capItem3.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                            capItem3.AllocNmbr     = SAPUIHelper.SubString18(capItem3.AllocNmbr);
                            capItem3.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                            capItem3.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                            capItem3.ItemText      = SAPUIHelper.SubString50(capItem3.ItemText);
                            capItem3.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                            capItem3.TaxCode       = TaxCodeConst.NV;
                            //capItem3.SpGlInd = SpGlIndConst.H;

                            capItem3.Active  = true;
                            capItem3.CreBy   = 1;
                            capItem3.CreDate = DateTime.Now;
                            capItem3.UpdBy   = 1;
                            capItem3.UpdDate = DateTime.Now;
                            capItem3.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiacap09Service.Save(capItem3);

                            Bapiaccr09 accrItem3 = new Bapiaccr09();
                            accrItem3.DocId     = DocID;
                            accrItem3.DocSeq    = "M";
                            accrItem3.DocKind   = DocKind;
                            accrItem3.ItemnoAcc = "3";
                            accrItem3.Currency  = PostingConst.Currency;
                            accrItem3.AmtDoccur = 0 - decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString());

                            accrItem3.Active  = true;
                            accrItem3.CreBy   = 1;
                            accrItem3.CreDate = DateTime.Now;
                            accrItem3.UpdBy   = 1;
                            accrItem3.UpdDate = DateTime.Now;
                            accrItem3.UpdPgm  = "FixedAdvancePosting";
                            BapiServiceProvider.Bapiaccr09Service.Save(accrItem3);
                            #endregion CreditDifferrent

                            #endregion Transfer หรือ Cheque
                        }
                    }
                    else
                    {
                        /*PayBack Company*/
                        #region HEAD
                        Bapiache09 che09 = new Bapiache09();
                        che09.DocId    = DocID;
                        che09.DocSeq   = "M";
                        che09.DocKind  = DocKind;
                        che09.BusAct   = PostingConst.BusAct;
                        che09.Username = sap.UserCPIC; //PostingConst.UserCPIC;
                        che09.CompCode = dstPosting.Tables[0].Rows[0]["COMP_CODE"].ToString().Substring(0, 4);
                        che09.DocDate  = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.DocKind  = DocKind;

                        /*N-edit*/
                        //che09.DocType = sap.DocTypeAdvancePostingDM;//DocTypeConst.KR;
                        che09.DocType = sap.DocTypeFixedAdvanceReturnPosting;//DocTypeConst.KR;

                        che09.PstngDate   = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.ReverseDate = dstPosting.Tables[0].Rows[0]["PostingDate"].ToString();
                        che09.RefDocNo    = SAPUIHelper.SubString(16, dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString());
                        che09.DocStatus   = "N";

                        if (dstPosting.Tables[0].Rows[0]["PaymentType"].ToString() == PaymentTypeConst.DomesticCash)
                        {
                            che09.DocAppFlag = "A";
                        }
                        else
                        {
                            che09.DocAppFlag = "V";
                        }
                        che09.Active  = true;
                        che09.CreBy   = 1;
                        che09.CreDate = DateTime.Now;
                        che09.UpdBy   = 1;
                        che09.UpdDate = DateTime.Now;
                        che09.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiache09Service.Save(che09);
                        #endregion HEAD

                        #region Foolter
                        Bapiacextc cextc = new Bapiacextc();
                        cextc.DocId   = DocID;
                        cextc.DocSeq  = "M";
                        cextc.DocKind = DocKind;
                        cextc.Field1  = PostingConst.BRNCH;
                        cextc.Field2  = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();

                        cextc.Active  = true;
                        cextc.CreBy   = 1;
                        cextc.CreDate = DateTime.Now;
                        cextc.UpdBy   = 1;
                        cextc.UpdDate = DateTime.Now;
                        cextc.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc);

                        Bapiacextc cextc1 = new Bapiacextc();
                        cextc1.DocId   = DocID;
                        cextc1.DocSeq  = "M";
                        cextc1.DocKind = DocKind;
                        cextc1.Field1  = PostingConst.VAT;
                        cextc1.Field2  = TaxCodeConst.NV;

                        cextc1.Active  = true;
                        cextc1.CreBy   = 1;
                        cextc1.CreDate = DateTime.Now;
                        cextc1.UpdBy   = 1;
                        cextc1.UpdDate = DateTime.Now;
                        cextc1.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.BapiacextcService.Save(cextc1);
                        #endregion Foolter

                        #region Cash Or Tranfer

                        #region Credit
                        Bapiacap09 capItem1 = new Bapiacap09();
                        capItem1.DocId     = DocID;
                        capItem1.DocSeq    = "M";
                        capItem1.DocKind   = DocKind;
                        capItem1.ItemnoAcc = "1";
                        capItem1.VendorNo  = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                        capItem1.PmntBlock = PostingConst.PmntBlock;
                        capItem1.Pmnttrms  = PostingConst.Pmnttrms;
                        capItem1.BlineDate = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        //capItem1.AllocNmbr = SAPUIHelper.GetFixedPostingAccountAdjustCr(long.Parse(dstPosting.Tables[0].Rows[0]["ReceiverID"].ToString()));
                        //capItem1.AllocNmbr = SAPUIHelper.SubString18(capItem1.AllocNmbr);
                        /*N-Edited Ref FixedAdvanceID*/
                        capItem1.AllocNmbr = dstPosting.Tables[0].Rows[0]["RefFixedAdvanceID"].ToString();

                        capItem1.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                        capItem1.ItemText      = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem1.ItemText      = SAPUIHelper.SubString50(capItem1.ItemText);
                        capItem1.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem1.TaxCode       = TaxCodeConst.NV;
                        capItem1.SpGlInd       = SpGlIndConst.H;

                        capItem1.Active  = true;
                        capItem1.CreBy   = 1;
                        capItem1.CreDate = DateTime.Now;
                        capItem1.UpdBy   = 1;
                        capItem1.UpdDate = DateTime.Now;
                        capItem1.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiacap09Service.Save(capItem1);

                        Bapiaccr09 accrItem1 = new Bapiaccr09();
                        accrItem1.DocId     = DocID;
                        accrItem1.DocSeq    = "M";
                        accrItem1.DocKind   = DocKind;
                        accrItem1.ItemnoAcc = "1";

                        accrItem1.Currency  = PostingConst.Currency;
                        accrItem1.AmtDoccur = 0 - (decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString()) + (-1 * decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString())));

                        accrItem1.Active  = true;
                        accrItem1.CreBy   = 1;
                        accrItem1.CreDate = DateTime.Now;
                        accrItem1.UpdBy   = 1;
                        accrItem1.UpdDate = DateTime.Now;
                        accrItem1.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem1);
                        #endregion Credit

                        #region Debit
                        Bapiacap09 capItem2 = new Bapiacap09();
                        capItem2.DocId     = DocID;
                        capItem2.DocSeq    = "M";
                        capItem2.DocKind   = DocKind;
                        capItem2.ItemnoAcc = "2";
                        //capItem2.GlAccount = SAPUIHelper.GetFixedPostingAccountAdjustDr(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString()));
                        capItem2.VendorNo      = SAPUIHelper.GetEmployee(long.Parse(dstPosting.Tables[0].Rows[0]["RequesterID"].ToString())).VendorCode;
                        capItem2.Pmnttrms      = PostingConst.Pmnttrms;
                        capItem2.PymtMeth      = dstPosting.Tables[0].Rows[0]["PaymentMethod"].ToString();
                        capItem2.BlineDate     = dstPosting.Tables[0].Rows[0]["BaseLineDate"].ToString();
                        capItem2.PmntBlock     = PostingConst.PmntBlock;
                        capItem2.AllocNmbr     = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                        capItem2.AllocNmbr     = SAPUIHelper.SubString18(capItem2.AllocNmbr);
                        capItem2.ItemText      = dstPosting.Tables[0].Rows[0]["DueDate"].ToString() + "/" + dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        capItem2.ItemText      = SAPUIHelper.SubString50(capItem2.ItemText);
                        capItem2.Businessplace = dstPosting.Tables[0].Rows[0]["BranchCode"].ToString();
                        capItem2.TaxCode       = TaxCodeConst.NV;
                        capItem2.SpGlInd       = SpGlIndConst.H;
                        capItem2.Active        = true;
                        capItem2.CreBy         = 1;
                        capItem2.CreDate       = DateTime.Now;
                        capItem2.UpdBy         = 1;
                        capItem2.UpdDate       = DateTime.Now;
                        capItem2.UpdPgm        = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiacap09Service.Save(capItem2);

                        Bapiaccr09 accrItem2 = new Bapiaccr09();
                        accrItem2.DocId     = DocID;
                        accrItem2.DocSeq    = "M";
                        accrItem2.DocKind   = DocKind;
                        accrItem2.ItemnoAcc = "2";

                        accrItem2.Currency  = PostingConst.Currency;
                        accrItem2.AmtDoccur = decimal.Parse(dstPosting.Tables[0].Rows[0]["Amount"].ToString());

                        accrItem2.Active  = true;
                        accrItem2.CreBy   = 1;
                        accrItem2.CreDate = DateTime.Now;
                        accrItem2.UpdBy   = 1;
                        accrItem2.UpdDate = DateTime.Now;
                        accrItem2.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem2);
                        #endregion Debit

                        #region DebitDifferentAmount
                        Bapiacgl09 cglItem2 = new Bapiacgl09();
                        cglItem2.DocId     = DocID;
                        cglItem2.DocSeq    = "M";
                        cglItem2.DocKind   = DocKind;
                        cglItem2.ItemnoAcc = "3";
                        cglItem2.GlAccount = dstPosting.Tables[0].Rows[0]["BankAccount"].ToString();
                        cglItem2.AllocNmbr = dstPosting.Tables[0].Rows[0]["DocumentNo"].ToString();
                        cglItem2.AllocNmbr = SAPUIHelper.SubString18(cglItem2.AllocNmbr);
                        cglItem2.ItemText  = dstPosting.Tables[0].Rows[0]["Description"].ToString();
                        cglItem2.ItemText  = SAPUIHelper.SubString50(cglItem2.ItemText);

                        cglItem2.Active  = true;
                        cglItem2.CreBy   = 1;
                        cglItem2.CreDate = DateTime.Now;
                        cglItem2.UpdBy   = 1;
                        cglItem2.UpdDate = DateTime.Now;
                        cglItem2.UpdPgm  = "FixedAdvancePosting";

                        /*N-edited valuedate = requestdate*/
                        cglItem2.ValueDate = dstPosting.Tables[0].Rows[0]["RequestDate"].ToString(); /*DateFormat = YYYYMMDD*/
                        BapiServiceProvider.Bapiacgl09Service.Save(cglItem2);

                        Bapiaccr09 accrItem3 = new Bapiaccr09();
                        accrItem3.DocId     = DocID;
                        accrItem3.DocSeq    = "M";
                        accrItem3.DocKind   = DocKind;
                        accrItem3.ItemnoAcc = "3";

                        accrItem3.Currency  = PostingConst.Currency;
                        accrItem3.AmtDoccur = (-1 * decimal.Parse(dstPosting.Tables[0].Rows[0]["NetAmount"].ToString()));

                        accrItem3.Active  = true;
                        accrItem3.CreBy   = 1;
                        accrItem3.CreDate = DateTime.Now;
                        accrItem3.UpdBy   = 1;
                        accrItem3.UpdDate = DateTime.Now;
                        accrItem3.UpdPgm  = "FixedAdvancePosting";
                        BapiServiceProvider.Bapiaccr09Service.Save(accrItem3);
                        #endregion DebitDifferentAmount

                        #endregion Cash Or Tranfer
                    }
                }
                #endregion Domestic
            }
        }
Example #21
0
        public void InsertDocumentAttachment(Guid txID, long documentID)
        {
            DataSet     ds          = TransactionService.GetDS(txID);
            SCGDocument document    = ScgeAccountingQueryProvider.SCGDocumentQuery.FindProxyByIdentity(documentID);
            DataTable   insertTable = ds.Tables["DocumentAttachment"].GetChanges(DataRowState.Added);

            // ======================================================================
            // saveFilePath get from DbParameter.
            string saveFilePath = "~/ImageFiles/" + documentID.ToString();
            // ======================================================================
            string oldFilePath = string.Empty;
            string newFilePath = string.Empty;

            if (insertTable != null)
            {
                foreach (DataRow row in insertTable.Rows)
                {
                    if (Convert.ToInt64(row["AttachmentID"].ToString()) < 0)
                    {
                        DocumentAttachment attachment = new DocumentAttachment();
                        attachment.DocumentID     = document;
                        attachment.AttachFileName = row["AttachFileName"].ToString();
                        attachment.AttachFilePath = saveFilePath;
                        oldFilePath        = row["AttachFilePath"].ToString();
                        newFilePath        = row["AttachFilePath"].ToString().Replace(txID.ToString(), documentID.ToString());
                        attachment.Active  = (bool)row["Active"];
                        attachment.CreBy   = Convert.ToInt64(row["CreBy"].ToString());
                        attachment.CreDate = DateTime.Parse(row["CreDate"].ToString());
                        attachment.UpdBy   = Convert.ToInt64(row["UpdBy"].ToString());
                        attachment.UpdDate = DateTime.Parse(row["UpdDate"].ToString());
                        attachment.UpdPgm  = row["UpdPgm"].ToString();

                        ScgeAccountingDaoProvider.DocumentAttachmentDao.Save(attachment);
                    }
                }

                // Move file to new filepath.
                if (!string.IsNullOrEmpty(oldFilePath) &&
                    !string.IsNullOrEmpty(newFilePath) &&
                    !newFilePath.Equals(oldFilePath))
                {
                    if (Directory.Exists(oldFilePath))
                    {
                        if (Directory.Exists(newFilePath))
                        {
                            // if already have the new file path.
                            // then move only file to the new file path.
                            string[] files = Directory.GetFiles(oldFilePath);
                            foreach (string file in files)
                            {
                                string newFile = file.Replace(oldFilePath, newFilePath);
                                if (File.Exists(newFile))
                                {
                                    File.Delete(newFile);
                                }
                                File.Move(file, newFile);
                            }
                            Directory.Delete(oldFilePath);
                        }
                        else
                        {
                            // if no new file directory.
                            // then move the old file path to the new file path.
                            Directory.Move(oldFilePath, newFilePath);
                        }
                    }
                }
            }
        }
        public override string OnApproveWaitApprove(long workFlowID, object eventData)
        {
            /*TODO validate , save event data to workflow*/
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();
            MPADocument mpaDocument = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(workFlow.Document.DocumentID);

            if (!errors.IsEmpty)
            {
                throw new SS.Standard.Utilities.ServiceValidationException(errors);
            }

            try
            {
                ////SubmitResponse submitResponse = eventData as SubmitResponse;
                WorkFlowResponse response = new WorkFlowResponse();
                int workFlowStateEventId;
                response.WorkFlow = workFlow;

                response.ResponseBy   = UserAccount.UserID;
                response.ResponseDate = DateTime.Now;

                response.Active  = true;
                response.CreBy   = UserAccount.UserID;
                response.CreDate = DateTime.Now;
                response.UpdBy   = UserAccount.UserID;
                response.UpdDate = DateTime.Now;
                response.UpdPgm  = UserAccount.CurrentProgramCode;


                if (eventData is RejectDetailResponse)
                {
                    RejectDetailResponse rejectDetailResponse = eventData as RejectDetailResponse;
                    workFlowStateEventId = rejectDetailResponse.WorkFlowStateEventID;
                    WorkFlowRejectResponse rejectResponse = new WorkFlowRejectResponse();
                    rejectResponse.WorkFlowResponse = response;
                    if (rejectDetailResponse.ReasonID != 0)
                    {
                        rejectResponse.Reason = ScgDbQueryProvider.DbRejectReasonQuery.FindProxyByIdentity(rejectDetailResponse.ReasonID);
                    }
                    rejectResponse.Remark  = rejectDetailResponse.Remark;
                    rejectResponse.Active  = true;
                    rejectResponse.CreBy   = UserAccount.UserID;
                    rejectResponse.CreDate = DateTime.Now;
                    rejectResponse.UpdBy   = UserAccount.UserID;
                    rejectResponse.UpdDate = DateTime.Now;
                    rejectResponse.UpdPgm  = UserAccount.CurrentProgramCode;

                    if (rejectDetailResponse.ResponseMethod != null)
                    {
                        response.ResponseMethod = rejectDetailResponse.ResponseMethod.GetHashCode().ToString();
                    }
                    response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(workFlowStateEventId);
                    WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                    if (rejectDetailResponse.ReasonID != 0 || !string.IsNullOrEmpty(rejectDetailResponse.Remark))
                    {
                        WorkFlowDaoProvider.WorkFlowRejectResponseDao.Save(rejectResponse);
                    }
                }
                else
                {
                    SubmitResponse submitResponse = eventData as SubmitResponse;
                    workFlowStateEventId = submitResponse.WorkFlowStateEventID;
                    if (submitResponse.ResponseMethod != null)
                    {
                        response.ResponseMethod = submitResponse.ResponseMethod.GetHashCode().ToString();
                    }

                    response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(workFlowStateEventId);
                    WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);
                }
                scgDocument.ApproveDate = DateTime.Now;
                scgDocument.UpdBy       = UserAccount.UserID;
                scgDocument.UpdDate     = DateTime.Now;
                scgDocument.UpdPgm      = UserAccount.CurrentProgramCode;
                SCGDocumentService.SaveOrUpdate(scgDocument);

                if (ParameterServices.EnableEmail02Creator || ParameterServices.EnableEmail02Requester || ParameterServices.EnableEmail02Initiator)
                {
                    long         sendToUserID = 0;
                    IList <long> ccList       = new List <long>();

                    if (ParameterServices.EnableEmail02Creator)
                    {
                        sendToUserID = scgDocument.CreatorID.Userid;
                    }

                    if (ParameterServices.EnableEmail02Requester)
                    {
                        if (sendToUserID == 0)
                        {
                            sendToUserID = scgDocument.RequesterID.Userid;
                        }
                        else if (scgDocument.CreatorID.Userid != scgDocument.RequesterID.Userid)
                        {
                            ccList.Add(scgDocument.RequesterID.Userid);
                        }

                        //Send mail02 to all travellers that doesnot requester
                        IList <MPAItem> items = ScgeAccountingQueryProvider.MPAItemQuery.FindMPAItemByMPADocumentID(mpaDocument.MPADocumentID);
                        foreach (MPAItem item in items)
                        {
                            if (sendToUserID == 0)
                            {
                                sendToUserID = item.UserID.Userid;
                            }
                            else if (item.UserID.Userid != sendToUserID && !ccList.Contains(item.UserID.Userid))
                            {
                                ccList.Add(item.UserID.Userid);
                            }
                        }
                    }
                    if (ParameterServices.EnableEmail02Initiator)
                    {
                        IList <DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetDocumentInitiatorByDocumentID(workFlow.Document.DocumentID);
                        foreach (DocumentInitiator initiator in initiators)
                        {
                            if (sendToUserID == 0)
                            {
                                sendToUserID = initiator.UserID.Userid;
                            }
                            else if (initiator.UserID.Userid != sendToUserID && !ccList.Contains(initiator.UserID.Userid))
                            {
                                ccList.Add(initiator.UserID.Userid);
                            }
                        }
                    }

                    SCGEmailService.SendEmailEM02(response.WorkFlowResponseID, sendToUserID, ccList);
                }
            }
            catch (Exception)
            {
                throw;
            }


            // ====================== For Approve all advance that link to TA ======================
            // Use state WaitApprove to add into table WorkflowResponse
            string             eventName  = "Approve";
            WorkFlowStateEvent stateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.GetByWorkFlowStateID_EventName(AdvanceStateID.WaitApprove, eventName);

            return("ApproveWaitApproveToComplete");
        }
Example #23
0
        public long Save()
        {
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            CADocumentDataSet caDocumentDS = (CADocumentDataSet)TransactionService.GetDS(this.TransactionID);

            if (caDocumentDS == null)
            {
                OnDsNull();
            }
            CADocumentDataSet.CADocumentRow caDocumentRow = caDocumentDS.CADocument.FindByCADocumentID(this.CADocumentID);
            long tempDocumentID = caDocumentRow.DocumentID;

            #region SCGDocument
            SCGDocument scgDocument = new SCGDocument(tempDocumentID);
            if (!string.IsNullOrEmpty(ctlCompanyField.CompanyID))
            {
                scgDocument.CompanyID = new DbCompany(UIHelper.ParseLong(ctlCompanyField.CompanyID));
            }
            scgDocument.CreatorID = new SuUser(UIHelper.ParseLong(ctlCreatorData.UserID));
            if (!string.IsNullOrEmpty(ctlRequesterData.UserID))
            {
                scgDocument.RequesterID = new SuUser(UIHelper.ParseLong(ctlRequesterData.UserID));
            }
            scgDocument.Subject = ctlSubject.Text;
            if (!string.IsNullOrEmpty(ctlApproverData.UserID))
            {
                scgDocument.ApproverID = new SuUser(UIHelper.ParseLong(ctlApproverData.UserID));
            }

            scgDocument.DocumentType = new SS.Standard.WorkFlow.DTO.DocumentType(DocumentTypeID.CADocument);


            scgDocument.Memo   = ctlMemo.Text;
            scgDocument.Active = true;

            try
            {
                // Save SCG Document to Transaction.
                SCGDocumentService.UpdateTransactionDocument(this.TransactionID, scgDocument, false, true);
            }
            catch (ServiceValidationException ex)
            {
                errors.MergeErrors(ex.ValidationErrors);
            }
            #endregion SCGDocument

            #region CADocument
            CADocument caDocument = new CADocument(this.CADocumentID);

            caDocument.DocumentID = scgDocument;

            if (ctlSomeTime.Checked)
            {
                caDocument.IsTemporary = true;
                try
                {
                    if (ctlStartDateSumtime.Value != null)
                    {
                        caDocument.StartDate = ctlStartDateSumtime.Value.Value;
                    }

                    if (ctlEndDateSumtime.Value != null)
                    {
                        caDocument.EndDate = ctlEndDateSumtime.Value.Value;
                    }
                }
                catch (FormatException fex)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("Invalid_Date_Format"));
                    throw new ServiceValidationException(errors);
                }
            }
            else if (ctlRegular.Checked)
            {
                caDocument.IsTemporary = false;
                try
                {
                    if (ctlStartDate.Value != null)
                    {
                        caDocument.StartDate = ctlStartDate.Value.Value;
                    }

                    if (ctlEndDate.Value != null)
                    {
                        caDocument.EndDate = ctlEndDate.Value.Value;
                    }
                }
                catch (FormatException fex)
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("Invalid_Date_Format"));
                    throw new ServiceValidationException(errors);
                }
            }

            caDocument.CarLicenseNo = ctlCarLicenseNo.Text;
            caDocument.Brand        = ctlBrand.Text;
            caDocument.Model        = ctlModel.Text;

            switch (ctlDropDownListCategory.SelectedValue)
            {
            case "1":
                caDocument.OwnerType = OwnerMileage.Employee;
                break;

            case "2":
                caDocument.OwnerType = OwnerMileage.Company;
                break;

            default:
                break;
            }

            switch (ctlDropDownListType.SelectedValue)
            {
            case "1":
                caDocument.CarType = TypeOfCar.PrivateCar;
                break;

            case "2":
                caDocument.CarType = TypeOfCar.MotorCycle;
                break;

            case "3":
                caDocument.CarType = TypeOfCar.Pickup;
                break;

            default:
                break;
            }

            if (caDocument.IsTemporary)
            {
                if (ctlWorkInArea.Checked || ctlWorkOutOfArea.Checked)
                {
                    if (ctlWorkInArea.Checked)
                    {
                        caDocument.IsWorkArea = true;
                    }
                    else if (ctlWorkOutOfArea.Checked)
                    {
                        caDocument.IsWorkArea = false;
                        caDocument.Remark     = ctlWorkOutOfAreatxt.Text;
                    }
                }
                else
                {
                    errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("Please Select Work Area."));
                }
            }
            else
            {
                if (ctlWorkInArea.Checked)
                {
                    caDocument.IsWorkArea = true;
                }
                else if (ctlWorkOutOfArea.Checked)
                {
                    caDocument.IsWorkArea = false;
                    caDocument.Remark     = ctlWorkOutOfAreatxt.Text;
                }
            }

            caDocument.Active = true;

            try
            {
                // Get ta document information and save to transaction.
                CADocumentService.UpdateCADocumentTransaction(this.TransactionID, caDocument);
            }
            catch (ServiceValidationException ex)
            {
                errors.MergeErrors(ex.ValidationErrors);
            }

            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }

            #endregion CADocument

            try
            {
                ctlInitiator.Save();
                DocumentInitiatorService.ValidateDocumentInitiator(this.TransactionID, this.CADocumentID);
            }
            catch (ServiceValidationException ex)
            {
                errors.MergeErrors(ex.ValidationErrors);
            }

            if (!errors.IsEmpty)
            {
                // If have some validation error then return error.
                throw new ServiceValidationException(errors);
            }
            else
            {
                return(this.SaveToDatabase());
            }
        }
        public override string OnRejectWaitApprove(long workFlowID, object eventData)
        {
            /*TODO validate , save event data to workflow*/
            WorkFlow             workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument          scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);
            MPADocument          mpaDocument = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(scgDocument.DocumentID);
            RejectDetailResponse rejectDetailResponse;

            try
            {
                if (eventData is SubmitResponse)
                {
                    rejectDetailResponse = DefaultRejectDetailResponse((eventData as SubmitResponse).WorkFlowStateEventID, (eventData as SubmitResponse).ResponseMethod);
                }
                else
                {
                    rejectDetailResponse = eventData as RejectDetailResponse;
                }

                WorkFlowResponse response = new WorkFlowResponse();
                response.WorkFlow           = workFlow;
                response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(rejectDetailResponse.WorkFlowStateEventID);
                response.ResponseBy         = UserAccount.UserID;
                response.ResponseDate       = DateTime.Now;
                if (rejectDetailResponse.ResponseMethod != null)
                {
                    response.ResponseMethod = rejectDetailResponse.ResponseMethod.GetHashCode().ToString();
                }
                response.Active  = true;
                response.CreBy   = UserAccount.UserID;
                response.CreDate = DateTime.Now;
                response.UpdBy   = UserAccount.UserID;
                response.UpdDate = DateTime.Now;
                response.UpdPgm  = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                WorkFlowRejectResponse rejectResponse = new WorkFlowRejectResponse();
                rejectResponse.WorkFlowResponse = response;
                rejectResponse.Reason           = ScgDbQueryProvider.DbRejectReasonQuery.FindProxyByIdentity(rejectDetailResponse.ReasonID);
                rejectResponse.Remark           = rejectDetailResponse.Remark;
                rejectResponse.Active           = true;
                rejectResponse.CreBy            = UserAccount.UserID;
                rejectResponse.CreDate          = DateTime.Now;
                rejectResponse.UpdBy            = UserAccount.UserID;
                rejectResponse.UpdDate          = DateTime.Now;
                rejectResponse.UpdPgm           = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowRejectResponseDao.Save(rejectResponse);

                SCGEmailService.SendEmailEM04(response.WorkFlowResponseID, scgDocument.CreatorID.Userid);

                if (ParameterServices.EnableEmail02Requester || ParameterServices.EnableEmail02Initiator)
                {
                    long         sendToUserID = 0;
                    IList <long> ccList       = new List <long>();

                    if (ParameterServices.EnableEmail02Requester)
                    {
                        if (scgDocument.CreatorID.Userid != scgDocument.RequesterID.Userid)
                        {
                            sendToUserID = scgDocument.RequesterID.Userid;
                        }

                        IList <MPAItem> items = ScgeAccountingQueryProvider.MPAItemQuery.FindMPAItemByMPADocumentID(mpaDocument.MPADocumentID);
                        foreach (MPAItem item in items)
                        {
                            if (sendToUserID == 0)
                            {
                                sendToUserID = item.UserID.Userid;
                            }
                            else if (item.UserID.Userid != sendToUserID && !ccList.Contains(item.UserID.Userid))
                            {
                                ccList.Add(item.UserID.Userid);
                            }
                        }
                    }

                    if (ParameterServices.EnableEmail02Initiator)
                    {
                        IList <DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetDocumentInitiatorByDocumentID(scgDocument.DocumentID);
                        foreach (DocumentInitiator initiator in initiators)
                        {
                            if (sendToUserID == 0)
                            {
                                sendToUserID = initiator.UserID.Userid;
                            }
                            else if (initiator.UserID.Userid != sendToUserID && !ccList.Contains(initiator.UserID.Userid))
                            {
                                ccList.Add(initiator.UserID.Userid);
                            }
                        }
                    }

                    SCGEmailService.SendEmailEM02(response.WorkFlowResponseID, sendToUserID, ccList);
                }
            }
            catch (Exception)
            {
                throw;
            }

            // Use state WaitInitial to add into table WorkflowResponse
            string             eventName  = "Reject";
            WorkFlowStateEvent stateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.GetByWorkFlowStateID_EventName(AdvanceStateID.WaitApprove, eventName);

            rejectDetailResponse.WorkFlowStateEventID = stateEvent.WorkFlowStateEventID;
            /*TODO generate signal string*/
            return("RejectWaitApproveToDraft");
        }
Example #25
0
        public void Show()
        {
            //for show Email To:
            string strTo = string.Empty;

            //if (this.EmailType.Equals(SCG.eAccounting.BLL.EmailType.EM10))
            //{
            //    SuEMailLog suEmailLog = ScgeAccountingQueryProvider.EmailLogQuery.
            //}
            if (this.RequesterID != 0)
            {
                SuUser user = QueryProvider.SuUserQuery.FindProxyByIdentity(this.RequesterID);
                if (user != null)
                {
                    strTo = user.Email + ";";
                }
            }
            if (this.CreatorID != 0)
            {
                SuUser userCreator = QueryProvider.SuUserQuery.FindProxyByIdentity(this.CreatorID);
                if (userCreator != null)
                {
                    strTo += userCreator.Email;
                }
            }

            if (this.EmailType == "EM09")
            {
                SCGDocument document = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(this.DocumentID);
                IList <DocumentAttachment> documentAttachments = ScgeAccountingQueryProvider.DocumentAttachmentQuery.GetDocumentAttachmentByDocumentID(this.DocumentID);
                if (documentAttachments.Count > 0)
                {
                    SuUser receiver = QueryProvider.SuUserQuery.FindByIdentity(document.ReceiverID.Userid);
                    ctlCC.Text = receiver.Email;

                    SuUser approver = QueryProvider.SuUserQuery.FindByIdentity(document.ApproverID.Userid);
                    ctlCC.Text += ";" + approver.Email;
                }
            }

            if (this.EmailType == "EM10")
            {
                SCGDocument document = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(this.DocumentID);
                //IList<DocumentAttachment> documentAttachments = ScgeAccountingQueryProvider.DocumentAttachmentQuery.GetDocumentAttachmentByDocumentID(this.DocumentID);
                if (document != null)
                {
                    SuUser approver = QueryProvider.SuUserQuery.FindByIdentity(document.ApproverID.Userid);
                    ctlCC.Text += approver.Email;
                }
            }
            if (this.EmailType == "EM15")
            {
                SCGDocument document = ScgeAccountingQueryProvider.SCGDocumentQuery.FindByIdentity(this.DocumentID);
                //IList<DocumentAttachment> documentAttachments = ScgeAccountingQueryProvider.DocumentAttachmentQuery.GetDocumentAttachmentByDocumentID(this.DocumentID);
                if (document != null)
                {
                    SuUser approver = QueryProvider.SuUserQuery.FindByIdentity(document.ApproverID.Userid);
                    ctlCC.Text += approver.Email;
                }
            }
            ctlTo.Text = strTo;
            ctlUpdatePanelEmailLog.Update();
            this.ModalPopupExtender1.Show();
        }
        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");
            }
        }