コード例 #1
0
        private void HandleQuoteItem(int jobID, int estRevID, int quoteRevID, string sfQuoteID, enterprise.QueryResult result)
        {
            try
            {
                //create service client to call API endpoint
                using (enterprise.SoapClient queryClient = new enterprise.SoapClient("Soap", apiAddr))
                {
                    if (result == null || (result != null && result.size == 0))
                    {
                        return;
                    }

                    //cast query results
                    IEnumerable <enterprise.Item__c> itemList = result.records.Cast <enterprise.Item__c>();
                    List <string> items = new List <string>();
                    //show results
                    foreach (var il in itemList)
                    {
                        items.Add(il.Id);
                        int itemIDTemp = CommonMethods.GetMISID(TableName.Quote_Item, il.Id, sfQuoteID, salesForceProjectID);
                        if (itemIDTemp == 0)
                        {
                            var qt = new QuoteTitleGenerate(jobID, estRevID);
                            qt.MyID = quoteRevID;

                            int itemID = CommonMethods.GetEstimationItemID(estRevID, il.Item_Name__c);
                            if (itemID != 0)
                            {
                                int quoteItemID = qt.GenerateNewItems(itemID);
                                if (quoteItemID > 0)
                                {
                                    CommonMethods.InsertToMISSalesForceMapping(TableName.Quote_Item, il.Id, quoteItemID.ToString(), sfQuoteID, salesForceProjectID);
                                    itemIDTemp = quoteItemID;
                                }
                            }
                            else
                            {
                                QuoteItemBlank qib = new QuoteItemBlank(quoteRevID);
                                qib.CreateNew();
                                int quoteItemID = qib.NewID;
                                if (quoteItemID > 0)
                                {
                                    CommonMethods.InsertToMISSalesForceMapping(TableName.Quote_Item, il.Id, quoteItemID.ToString(), sfQuoteID, salesForceProjectID);
                                    itemIDTemp = quoteItemID;
                                }
                            }
                        }

                        if (itemIDTemp != 0)
                        {
                            UpdateQuoteItem(itemIDTemp, il.Item_Name__c, il.Requirement__c, il.Item_Description__c, il.Item_Cost__c, il.Quantity__c, il.Item_Order__c, il.Item_Option__c);
                        }
                    }

                    DeleteAllDeletedQuoteItems(items.ToArray(), sfQuoteID);
                    LogMethods.Log.Debug("HandleQuoteItem:Debug:" + "Done");
                }
            }
            catch (Exception e)
            {
                LogMethods.Log.Error("HandleQuoteItem:Error:" + e.Message);
            }
        }
コード例 #2
0
        public void GetAllQuotes(string sfProjectID, int jobID, int estRevID, int userEmployeeID)
        {
            try
            {
                //create service client to call API endpoint
                using (enterprise.SoapClient queryClient = new enterprise.SoapClient("Soap", apiAddr))
                {
                    //create SQL query statement
                    string query = "SELECT Id, Name, Status__c, Sub_Total__c, SubTotal_Discount__c, "
                                   + " Contract_Number__c, Contract_Amount__c, Contract_Issue_Date__c, Contract_Due_Date__c, Deposit__c, Terms__c, Version__c, Project_Name__r.Project_Coordinator__r.CommunityNickname, "
                                   + " Tax_Option__c, Tax_Rate__c, Project_Name__r.Currency__c, "
                                   + " (SELECT Id, Title__c, Content__c FROM Notes__r), "
                                   + " (SELECT Id, Item_Name__c, Item_Order__c, Requirement__c, Item_Description__c, Item_Cost__c, Quantity__c, Item_Option__c FROM Items__r), "
                                   + " (SELECT Id, Service_Name__r.Name, Service_Detail__c, Service_Cost__c,Note__c, Service_Name__r.MIS_Service_Number__c FROM Service_Costs__r) "
                                   + " FROM Quotation__c "
                                   + " WHERE Project_Name__c = '" + sfProjectID + "'";

                    enterprise.QueryResult result;
                    queryClient.query(
                        header, //sessionheader
                        null,   //queryoptions
                        null,   //mruheader
                        null,   //packageversion
                        query, out result);

                    /* if no any record, return */
                    if (result.size == 0)
                    {
                        return;
                    }

                    //cast query results
                    IEnumerable <enterprise.Quotation__c> quoteList = result.records.Cast <enterprise.Quotation__c>();

                    foreach (var ql in quoteList)
                    {
                        /* check if the quote exists */
                        int quoteID = CommonMethods.GetMISID(TableName.Sales_JobMasterList_quoteRev, ql.Id, salesForceProjectID);
                        if (quoteID == 0)
                        {
                            // not exist
                            // generate quote title
                            var qt = new QuoteTitleGenerate(jobID, estRevID);
                            qt.GenerateTitle();
                            int quoteRevID = qt.GetNewID();
                            if (quoteRevID > 0)
                            {
                                CommonMethods.InsertToMISSalesForceMapping(TableName.Sales_JobMasterList_quoteRev, ql.Id, quoteRevID.ToString(), salesForceProjectID);
                            }
                            quoteID = quoteRevID;
                        }

                        if (quoteID != 0)
                        {
                            UpdateQuote(quoteID, ql.Sub_Total__c, ql.SubTotal_Discount__c, ql.Version__c, ql.Tax_Option__c, ql.Tax_Rate__c, ql.Terms__c, ql.Project_Name__r.Currency__c, ql.Project_Name__r.Project_Coordinator__r);

                            // handle quote items
                            HandleQuoteItem(jobID, estRevID, quoteID, ql.Id, ql.Items__r);

                            // handle services
                            HandleQuoteService(jobID, estRevID, quoteID, ql.Id, ql.Service_Costs__r);

                            // handle notes
                            HandleNotes(jobID, estRevID, quoteID, ql.Notes__r, ql.Id);

                            if (ql.Status__c == "Accepted")
                            {
                                // update contract information
                                UpdateWINContract(quoteID, ql.Contract_Number__c, ql.Contract_Issue_Date__c, ql.Contract_Due_Date__c, ql.Contract_Amount__c, ql.Deposit__c, ql.Terms__c);
                            }
                            else if (ql.Status__c == "Denied")
                            {
                                UpdateLOSSNContract(quoteID);
                            }
                        }
                    }
                    LogMethods.Log.Debug("GetAllQuote:Debug:" + "Done");
                }
            }
            catch (Exception e)
            {
                LogMethods.Log.Error("GetAllQuote:Error:" + e.Message);
            }
        }