public without sharing class SBG027TriggerHandler{ public static Set SBG027_Ids = new Set(); public static void SBG027OrderTrigger(List newList, Map newMap, List oldList, Map oldMap){ if (!(Trigger.isBefore && Trigger.isUpdate)) { return; } System.debug('-----SBG027OrderTrigger start'); Map accIds = new Map(); /*for (Order newOrd : newList) { strlist.add(newOrd.id); }*/ for (Order newOrd : newList) { Order oldOrd = oldMap.get(newOrd.Id); if ((oldOrd.confirm__c ==false && newOrd.confirm__c == true) || newOrd.Is_batch__c == true){ newOrd.Is_batch__c = false; SBG027TriggerHandler.SBG027_Ids.add(newOrd.Id); BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog.Type__c = 'SBG027'; iflog.Log__c = 'callout start\n'; insert iflog; List strlist = new List(); strlist.add(newOrd.id); iflog = [Select Id, Name from BatchIF_Log__c where Id = :iflog.Id]; //SBG027TriggerHandler.callout(iflog.id,strlist, new Map()); SBG027Controller.callout(iflog.id,strlist, new Map()); } } } /** * SBG027の送信処理 * * @param iflog_Id ログテーブルのId * @param ordIds 送信対象商談(論理上1件のみです) * @param C1:Delete 2:Add(Insert) 3:Change(Update) */ // @future (callout=true) // public static void callout(String iflog_Id, List ordIds, Map purposeOfAdviceMap) { // if (ordIds == null || ordIds.size() == 0) { // return; // } // SBG027Sync.HTTPS_Port stub = new SBG027Sync.HTTPS_Port(); // stub.timeout_x = 100000; // timeout in milliseconds // stub.endpoint_x = NFMUtil.SBG027_ENDPOINT; // stub.inputHttpHeaders_x = new Map(); // stub.inputHttpHeaders_x.put('Authorization', NFMUtil.Authorization); // if (NFMUtil.CLIENT_CERT_NAME != null) { // stub.clientCertName_x = NFMUtil.CLIENT_CERT_NAME; // } // // MessageGroupNumber の取得 // List iflogList = [Select Id, Name, Log__c, ErrorLog__c from BatchIF_Log__c where Id = :iflog_Id]; // BatchIF_Log__c iflog = null; // if (iflogList.size() > 0) { // iflog = iflogList.get(0); // iflog.ErrorLog__c = ''; // } else { // // データ取れってないとは、rollbackされていることです // return; // } // String logstr = iflog.Log__c + ' ' + 'NumberOfRecord=' + ordIds.size() + '\n'; // // Monitoringの設定 // Datetime nowDT = Datetime.now(); // String nowStr = nowDT.format('yyyyMMddHHmm'); // SBG027Sync.GeDatas_element quotations = new SBG027Sync.GeDatas_element(); // quotations.Monitoring = new OlympusCoJpCommonMessage.Monitoring(); // quotations.Monitoring.Tag = 'MSGH'; // quotations.Monitoring.Sender = '8405'; // quotations.Monitoring.Receiver = '1330'; // quotations.Monitoring.MessageType = 'SBG027'; // quotations.Monitoring.MessageGroupNumber = iflog.Name; // quotations.Monitoring.NumberOfRecord = '' + ordIds.size(); // quotations.Monitoring.TransmissionDateTime = nowStr; // quotations.Monitoring.Text = ''; // BatchIF_Log__c rowData = null; // try { // // 転送データを取得、参照先のデータがあるので、ここで検索必要です。 // List ordList = [select Id,Name,Opportunity.Name, Opportunity.CurrencyIsoCode,OrderNumber,Opportunity.ForeignTradeCompany__r.ManagementCode_F__c,CustomerContractPriceD__c,SpecialCondition_text__c,SalesChannel__c, // Owner.Name,Opportunity.AccountId__c,Opportunity.InquiryNumber__c,Opportunity.SpecialDeliveryAddress__r.ManagementCode_F__c, ServiceFee_D__c,Opportunity.SpecialDeliveryAddress_D__c,Opportunity.SpecialDeliveryAddress_D__r.ManagementCode_F__c, // Opportunity.ProductSegment__c, Opportunity.TradeType__c,Opportunity.Dealer__r.ManagementCode_Ext__c,EndUserD__c,ExpDelDate__c,EndUserD__r.ManagementCode_F__c,Discount_D__c, // Opportunity.EndUser__c, Opportunity.Machine_Parts__c,Opportunity.Dealer__r.ManagementCode_F__c,Opportunity.Account.ManagementCode_F__c,Contract.Name,Shipment_Term_D__c,Shipment_Term2_D__c, // Opportunity.SalesChannel__c, Opportunity.ExpectedDeliveryDate__c, Opportunity.DealerId__c,Opportunity.DealerSalesStaffName__c,OlympusContractPricesD__c,SpecialDeliveryContact_D__c,Opportunity.SpecialDeliveryContact_D__r.ManagementCode_F__c, // Opportunity.ForeignTradeCompany__c, Opportunity.SpecialDeliveryAddress__c,PaymentTerms__c,SpecialDeliveryContact__c,PDF_Sp_Shipment_Term__c,PDF_Sp_ShippingTerms__c, // ForeignTradeCompany_D__r.ManagementCode_F__c, SpecialDeliveryAccount_D__r.ManagementCode_F__c, SpecialDeliveryContact2_D__r.ManagementCode_F__c,Opportunity.Dealer__r.DummyDealer__c,ContractPriceTotal__c // from order where Id IN :ordIds ]; //System.debug('111111 ordList='+ordList); // // Quotationのデータの設定 // List decideQuoteProductSetList = [ // select Id,Name,DecideProductSet__c,DecideProductSetCount__c, // DecideOpportunity__c,DecideProductSet__r.Code__c, // DecideQuote__c,DecideOrder__c,DecideProductSet__r.Name // from DecideQuoteProductSet__c // where DecideOrder__c In :ordIds // ]; // Map dqpsNameAndCountMap = new Map(); // String name ; String count; // String value; String bppMapGetValue; // for (DecideQuoteProductSet__c dqps :decideQuoteProductSetList) { // name = dqps.DecideProductSet__r.Code__c; // count = String.valueOf(dqps.DecideProductSetCount__c); // value = name +','+ count; // if (dqpsNameAndCountMap.containsKey(dqps.DecideOrder__c)) { // bppMapGetValue = dqpsNameAndCountMap.get(dqps.DecideOrder__c) +';'+ value ; // dqpsNameAndCountMap.put(dqps.DecideOrder__c, bppMapGetValue); // } else { // dqpsNameAndCountMap.put(dqps.DecideOrder__c, value); // } // } // //XHL-20190510-AddEnd // quotations.GeData = new List(); // for (Order ord : ordList) { // // 商談商品情報を取得 // List ordLiList = // [select Id, Quantity, PricebookEntry.ProductCode,QuoteLineItem.SingleProduct__c, // ODISingleProduct__c,Order.ProductSegment__c // from OrderItem where OrderId = :ord.Id // order by ODISingleProduct__c desc]; // SBG027Sync.GeData_element quotation = new SBG027Sync.GeData_element(); // if (ord.Opportunity.Dealer__r.DummyDealer__c == true){ // quotation.DealerCode = ord.Opportunity.Account.ManagementCode_F__c; // quotation.SalesAccountCode = ord.SpecialDeliveryAccount_D__r.ManagementCode_F__c; // } // else{ // quotation.DealerCode = ord.Opportunity.Dealer__r.ManagementCode_Ext__c; // quotation.SalesAccountCode = ord.Opportunity.Account.ManagementCode_F__c; // } // quotations.GeData.add(quotation); // quotation.OrderCode = ord.OrderNumber; // quotation.OpportunityCode = ord.Opportunity.InquiryNumber__c; //// quotation.SalesAccountCode = ord.Opportunity.Account.ManagementCode_F__c; // quotation.ProductSegment = ord.Opportunity.ProductSegment__c; // quotation.TradeType = ord.Opportunity.TradeType__c; // quotation.MachineParts = ord.Opportunity.Machine_Parts__c; // quotation.SalesChannel = ord.Opportunity.Machine_Parts__c == 'Parts' ? '40' : ord.Opportunity.SalesChannel__c == 'dealer' ? '41' : '42'; // quotation.DeliveryDate = NFMUtil.formatDate2Str(ord.Opportunity.ExpectedDeliveryDate__c); //// quotation.DealerCode = ord.Opportunity.Dealer__r.ManagementCode_Ext__c; // quotation.DealerSalesStaffName = ord.Opportunity.DealerSalesStaffName__c; // quotation.ForeignTradeCompany = ord.ForeignTradeCompany_D__r.ManagementCode_F__c; // quotation.PaymentCondition = ord.PaymentTerms__c; // quotation.EndUser = ord.EndUserD__r.ManagementCode_F__c; // quotation.DeliveryDate = NFMUtil.formatDate2Str(ord.ExpDelDate__c); // quotation.ServiceFee = ord.ServiceFee_D__c; // //2017/01/15追加 // if(ord.Opportunity.SalesChannel__c == 'direct' && ord.Opportunity.Machine_Parts__c == 'Parts'){ // quotation.Discount = 0; // quotation.OlympusContractPrices = ord.CustomerContractPriceD__c; // } // else{ // quotation.Discount = ord.Discount_D__c; // quotation.OlympusContractPrices = ord.ContractPriceTotal__c; // } // quotation.SpecialDeliveryAddress = ord.SpecialDeliveryAccount_D__r.ManagementCode_F__c + ',' + ord.SpecialDeliveryContact2_D__r.ManagementCode_F__c; // quotation.Other1 = ord.Name + ',' + ord.SalesChannel__c; // quotation.Other2 = ord.SpecialCondition_text__c; // quotation.Other3 = ord.Shipment_Term_D__c + ',' + ord.Shipment_Term2_D__c; // quotation.GeDataDetails = new List(); // //Detail_element // Integer m = 0; // for (Integer i = 0; i < ordLiList.size(); i++) { // if (ordLiList.get(i).Order.ProductSegment__c == 'BS') { // //XHL-20190510-AddStart // if (!ordLiList.get(i).ODISingleProduct__c) { // continue; // } // m++; // //XHL-20190510-AddEnd // SBG027Sync.GeDataDetails_element detail = new SBG027Sync.GeDataDetails_element(); // quotation.GeDataDetails.add(detail); // detail.DetailLine = (i + 1) * 10; // detail.ItemCode = ordLiList.get(i).PricebookEntry.ProductCode; // detail.ItemQuantity = Integer.valueOf(ordLiList.get(i).Quantity); // } else { // SBG027Sync.GeDataDetails_element detail = new SBG027Sync.GeDataDetails_element(); // quotation.GeDataDetails.add(detail); // detail.DetailLine = (i + 1) * 10; // detail.ItemCode = ordLiList.get(i).PricebookEntry.ProductCode; // detail.ItemQuantity = Integer.valueOf(ordLiList.get(i).Quantity); // } // } // //XHL-20190510-AddStart // if (dqpsNameAndCountMap.containsKey(ord.Id)) { // value = dqpsNameAndCountMap.get(ord.Id); // List nameCountList = new List(); // for (String str: value.split(';')){ // nameCountList.add(str); // } // if (nameCountList.size() > 0 ){ // for (String nameCount :nameCountList) { // SBG027Sync.GeDataDetails_element detail = new SBG027Sync.GeDataDetails_element(); // quotation.GeDataDetails.add(detail); // detail.DetailLine = (m + 1) * 10; // detail.ItemCode = nameCount.split(',')[0]; // detail.ItemQuantity = Integer.valueOf(nameCount.split(',')[1]); // m++; // } // } // } // //XHL-20190510-AddEnd // logstr += quotation.OrderCode + '\n'; // } // if (quotations.GeData.size() > 0) { // //SBG027Sync.Quotations_element[] pQuotations = new SBG027Sync.Quotations_element[] { quotations }; // logstr += '\ncallout count=' + quotations.GeData.size(); // //OlympusCoJpCommonMessage.LOG_element[] logs = stub.SBG027_Sync_BC2GPI(pQuotations); // // 原則非同期ですので、logsを確認する必要がないでしょう。 // NFMUtil.Monitoring Monitoring = new NFMUtil.Monitoring(); // Monitoring.Tag = quotations.Monitoring.Tag; // Monitoring.Sender = quotations.Monitoring.Sender; // Monitoring.Receiver = quotations.Monitoring.Receiver; // Monitoring.MessageType = quotations.Monitoring.MessageType; // Monitoring.MessageGroupNumber = quotations.Monitoring.MessageGroupNumber; // Monitoring.NumberOfRecord = quotations.Monitoring.NumberOfRecord; // Monitoring.TransmissionDateTime = quotations.Monitoring.TransmissionDateTime; // Monitoring.Text = ''; // rowData = NFMUtil.makeRowData(Monitoring, 'SBG027', quotations); // execute(rowData, iflog); // } // Set inquiryNoList = new Set(); // Map ordUpsertMap = new Map(); // logstr += '\nend'; // } catch(Exception ex) { // // エラーが発生した場合 // System.debug(Logginglevel.ERROR, 'SBG027_' + iflog.Name + ':' + ex.getMessage()); // System.debug(Logginglevel.ERROR, 'SBG027_' + iflog.Name + ':' + ex.getStackTraceString()); // logstr += ex.getMessage(); // iflog.ErrorLog__c += ex.getMessage() + '\n'; // iflog.ErrorLog__c += ex.getStackTraceString() + '\n'; // } // if (rowData != null) { // insert rowData; // } // System.debug(Logginglevel.DEBUG, 'SBG027_' + iflog.Name + ' end'); // iflog.Log__c = logstr; // update iflog; // } // public static void execute(BatchIF_Log__c rowData, BatchIF_Log__c iflog) { // //gaozw // Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt); // String rowDataStr = NFMUtil.getRowDataStr(rowData); // SBG027Sync.GeDatas_element quotations = (SBG027Sync.GeDatas_element) JSON.deserialize(rowDataStr, SBG027Sync.GeDatas_element.class); // String logstr = quotations.Monitoring.MessageGroupNumber + ' start\n'; // Boolean needUpdateIflog = false; // if (iflog == null) { // needUpdateIflog = true; // iflog = new BatchIF_Log__c(); // iflog.Type__c = 'SBG027'; // iflog.MessageGroupNumber__c = quotations.Monitoring.MessageGroupNumber; // iflog.Log__c = logstr; // iflog.ErrorLog__c = ''; // insert iflog; // iflog = [Select Id, Name, Log__c, ErrorLog__c from BatchIF_Log__c where Id = :iflog.Id]; // } else { // logstr = iflog.Log__c; // } // try{ // //gaozw // SBG027Sync.HTTPS_Port stub = new SBG027Sync.HTTPS_Port(); // stub.timeout_x = 100000; // timeout in milliseconds // stub.endpoint_x = NFMUtil.SBG027_ENDPOINT; // stub.inputHttpHeaders_x = new Map(); // stub.inputHttpHeaders_x.put('Authorization', NFMUtil.Authorization); // if (NFMUtil.CLIENT_CERT_NAME != null) { // stub.clientCertName_x = NFMUtil.CLIENT_CERT_NAME; // } // SBG027Sync.GeDatas_element[] pQuotations = new SBG027Sync.GeDatas_element[] { quotations }; // OlympusCoJpCommonMessage.LOG_element[] logs = stub.SBG027_Sync_BC2GPI(pQuotations); // rowData.retry_cnt__c=0; // }catch(Exception ex) { // // TODO IOException // // エラーが発生した場合 // System.debug(Logginglevel.ERROR, 'SBG027_' + iflog.Name + ':' + ex.getMessage()); // System.debug(Logginglevel.ERROR, 'SBG027_' + iflog.Name + ':' + ex.getStackTraceString()); // logstr += ex.getMessage(); // iflog.ErrorLog__c += ex.getMessage() + '\n'; // iflog.ErrorLog__c += ex.getStackTraceString() + '\n'; // //---xiongyl---add // if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0; // if (rowData.retry_cnt__c < batch_retry_max_cnt){ // rowData.retry_cnt__c++; // } // if (rowData.retry_cnt__c >= batch_retry_max_cnt){ // rowData.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + rowData.ErrorLog__c+'错误次数已经超过自动送信设定的最大次数,请手动送信'; // } // } // iflog.Log__c = logstr; // if (needUpdateIflog) { // update iflog; // update rowData; // } // } }