/** * NFM007.triggerから呼び出す */ public without sharing class NFM007Controller { //CHAN-BSV3GZ SAP返回状态值 start public static String status; // CHAN-BSV3GZ end //CHAN-BDPBVY 20190703 start public class Detail_element { public String DetailLine; public String ItemCode; public Double ItemQuantity; public Decimal ListPrice; public Decimal Discount; public Decimal SalesPrice; // LHJ 多年保修 20190627 Start public String GuaranteePeriod; // 保修年限 public Decimal GuaranteePrice; // 计提金额 public Decimal ServicePrice; // ServicePrice public Decimal MaintenancePrice; // 维修合同报价 public String GuaranteeType; // 保修类别 public String ProvistonPeriod; // 计提年限 // LHJ 多年保修 20190627 End //报价试算 合同申请时 所有明细行 全部替换 掉 start public String PROCODE; //促销方案代码 //报价试算 合同申请时 所有明细行 全部替换 掉 end } public class PresalesPerson_element { public String PresalesLine; public String PresalesPersonCode; public String PresalesPersonName; } public class Quotations_element { public NFMUtil.Monitoring Monitoring; public Quotation_element[] Quotation; } public class NFM007 { public Quotations_element Quotations; } public class Quotation_element { public String QuotationCode; public String SalesPoint; public String SalesPersonCode; public String SalesPersonName; public String Currency_x; public String EnduserCode; public String DepartmentCode; public String SalesChannel; public String CLBICCategory; public Decimal SalesPriceForAgent1; public Decimal SalesPriceForEnduser; public String Agent1Code; public String Agent2Code; public Decimal SalesPriceForAgent2; public String ProspectCategory; public String ContractType; public String FundSource; public String AuthorizationNo; public String ContractApplicationNo; public String DealerContractNo; public String InspectionCertificate; public String InspectionCertificateComment; public String PurposeOfAdvice; public Detail_element[] Detail; public PresalesPerson_element[] PresalesPerson; // LHJ 多年保修 20190627 Start public String ContractPeriod; // 合同保修期(年) // LHJ 多年保修 20190627 End public String Other1 ; } //CHAN-BDPBVY 20190703 end public static boolean isRunning = false; public static String debug_msg = ''; /** * NFM007の送信処理 * * @param iflog_Id ログテーブルのId * @param oppIds 送信対象商談(論理上1件のみです) * @param purposeOfAdviceMap 1:Delete 2:Add(Insert) 3:Change(Update) */ @future (callout=true) public static void callout(String iflog_Id, List oppIds, Map purposeOfAdviceMap) { if (oppIds == null || oppIds.size() == 0) { return; } //CHAN-BDPBVY 20190703 start // Nfm007Sync.HTTPS_Port stub = new Nfm007Sync.HTTPS_Port(); // stub.timeout_x = 100000; // timeout in milliseconds // stub.endpoint_x = NFMUtil.NFM007_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; // } //CHAN-BDPBVY 20190703 end // 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=' + oppIds.size() + '\n'; // Monitoringの設定 Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); //CHAN-BDPBVY 20190703 start // Nfm007Sync.Quotations_element quotations = new Nfm007Sync.Quotations_element(); Quotations_element quotations = new Quotations_element(); //CHAN-BDPBVY 20190703 end quotations.Monitoring = new NFMUtil.Monitoring(); quotations.Monitoring.Tag = 'MSGH'; quotations.Monitoring.Sender = '8402'; quotations.Monitoring.Receiver = '1330'; quotations.Monitoring.MessageType = 'NFM007'; quotations.Monitoring.MessageGroupNumber = iflog.Name; quotations.Monitoring.NumberOfRecord = '' + oppIds.size(); quotations.Monitoring.TransmissionDateTime = nowStr; quotations.Monitoring.Text = ''; BatchIF_Log__c rowData = null; // BatchIF転送表 から、コード変換のMapを作成 Map transferMap = new Map(); List transferList = [select Table__c, Column__c, External_value__c, Internal_value__c from BatchIF_Transfer__c where Dropped_Flag__c = false and Table__c = 'Opportunity']; for (BatchIF_Transfer__c t : transferList) { transferMap.put(t.Column__c + t.Internal_value__c, t.External_value__c); } try { // 転送データを取得、参照先のデータがあるので、ここで検索必要です。 List oppList = [select Id, Name, CurrencyIsoCode, Owner.Name, Owner.Employee_No__c, Opportunity_No__c, SalesPoint_Code__c, Hospital__c, Hospital__r.Management_Code__c, Account.Id, Account.Management_Code__c, Account.AgencyContract_Management_Code__c, Account.RecordType.DeveloperName, Account.Name, Account.ParentId, Account.Parent.Management_Code__c, Sales_Root__c, Opportunity_Category__c, OCM_Agent1_Price__c, Agency1__c, Agency1__r.Management_Code__c, Agency2__c, Agency2__r.Management_Code__c, Purchase_Type__c, Promise_Class__c, Fund_Basis__c, Authorized_DB_No__c, NotesApprovedNo__c, Sales_Contract_No__c, // Inspection_Certificate__c, Inspection_Certificate_Comment__c //LHJ CBPR Start Salesdepartment_Owner__c, Estimation_Id__c, // LHJ CBPR End // CHAN-B8U4TG 20190128 Start Trade__c, // CHAN-B8U4TG 20190128 End // LHJ 多年保修 20190627 Start Gurantee_Period__c,DecideQuoteDate__c, // LHJ 多年保修 20190627 End STMS_Package_Sale__c, Equipment_Order_Flg__c, //【是否需要价格申请】为是的场合,才要检查做没做过报价试算 thh 2021-11-03 start If_Need_PriceApply__c //【是否需要价格申请】为是的场合,才要检查做没做过报价试算 thh 2021-11-03 end from Opportunity where Id IN :oppIds]; System.debug(Logginglevel.DEBUG, 'NFM007_ oppList.size()=' + oppList.size()); // Quotationのデータの設定 //CHAN-BDPBVY 20190703 start // quotations.Quotation = new List(); quotations.Quotation = new List(); //CHAN-BDPBVY 20190703 end for (Opportunity opp : oppList) { // 20211101 gzw 报价试算 fix 获取试算行项目 start List promotionSalesProductsList= [select id, AgencyUnitPrice__c, Quantity__c, Product2__c, PromotionNo__c, latestProvistonPeriod__c, latestGuranteePrice__c, lastestGuaranteePeriod__c, Product2__r.ProductCode, // 20211101 gzw 报价试算 fix 查询产品新code相关 start Product2__r.Correspond_Code__c, Product2__r.Correspond_ProductCode__c, Product2__r.Correspond_Code__r.Intra_Trade_List_RMB__c, Product2__r.Correspond_Code__r.Foreign_Trade_List_US__c, // 20211101 gzw 报价试算 fix 查询产品新code end latestServicePrice__c,latestWarrantyType__c, LastestMaintenance_Price_Year__c, Product2__r.Intra_Trade_List_RMB__c, Product2__r.Foreign_Trade_List_US__c, recordTypeName__c from PromotionSalesProducts__c where QuantityId__c =:opp.Estimation_Id__c ]; // 20211101 gzw 报价试算 fix 获取试算行项目 end // 商談商品情報を取得 List oppLiList = [select Id, Quantity, PricebookEntry.ProductCode, // CHAN-BX66KN add by gzw start PricebookEntry.Product2.Estimation_Entry_Possibility__c, PricebookEntry.Product2.Correspond_ProductCode__c, PricebookEntry.Product2.Correspond_Code__c, // CHAN-BX66KN add by gzw end OpportunityId, Item_Order__c, ListPrice__c,UnitPrice__c, // CHAN-B8U4TG 20190128 Start PricebookEntry.Product2.Intra_Trade_List_RMB__c, // 内贸List价 PricebookEntry.Product2.Foreign_Trade_List_US__c, // 外贸List价 PricebookEntry.Product2.Correspond_Code__r.Foreign_Trade_List_US__c, PricebookEntry.Product2.Correspond_Code__r.Intra_Trade_List_RMB__c // CHAN-B8U4TG 20190128 End , AgencyUnitPrice__c //经销商单价 // // LHJ 多年保修 20190627 Start , LatestGuranteePrice__c, LatestServicePrice__c, LastestGuaranteePeriod__c, latestWarrantyType__c, LastestMaintenance_Price_Year__c, latestProvistonPeriod__c // LHJ 多年保修 20190627 End from OpportunityLineItem where Opportunity.Id = :opp.Id order by Item_Order__c]; // チームメンバー List oppTMList = [select Id, User.Employee_No__c, User.Name, OpportunityId from OpportunityTeamMember where OpportunityId = :opp.Id and TeamMemberRole = '副担当' order by CreatedDate desc]; system.debug('oppLiList111111' + oppLiList); // LHJ 多年保修 Start Boolean oldDate = false; if (opp.DecideQuoteDate__c == null || opp.DecideQuoteDate__c < Date.valueOf(Label.GuaranteeWin)) { oldDate = true; } else { oldDate = false; } // LHJ 多年保修 End //外贸多年保修 精琢技术 wql 2021/03/23 start //上线前decide的询价标识 Boolean oldDecideDateUSD = false; //已经decide 并且在上线前decide if(opp.DecideQuoteDate__c == null ||(opp.DecideQuoteDate__c!= null &&opp.DecideQuoteDate__c < Date.valueOf(Label.GuaranteeUSD)&&opp.Trade__c == '外貿')){ oldDecideDateUSD = true; }else{ oldDecideDateUSD = false; } //外贸多年保修 精琢技术 wql 2021/03/23 end //CHAN-BDPBVY 20190703 start // Nfm007Sync.Quotation_element quotation = new Nfm007Sync.Quotation_element(); Quotation_element quotation = new Quotation_element(); //CHAN-BDPBVY 20190703 end quotations.Quotation.add(quotation); quotation.QuotationCode = opp.Opportunity_No__c; quotation.SalesPoint = opp.SalesPoint_Code__c; quotation.SalesPersonCode = opp.Owner.Employee_No__c; quotation.SalesPersonName = opp.Owner.Name; quotation.Currency_x = opp.CurrencyIsoCode; System.debug(Logginglevel.ERROR, 'NFM007_Account RecordType:' + opp.Account.RecordType.DeveloperName); if (opp.Account.RecordType.DeveloperName == 'AgencyContract') { // 合同编码 quotation.EnduserCode = opp.Account.AgencyContract_Management_Code__c; quotation.DepartmentCode = opp.Account.AgencyContract_Management_Code__c; // quotation.EnduserCode = opp.Account.Parent.Management_Code__c; // quotation.DepartmentCode = opp.Account.Parent.Management_Code__c; System.debug(Logginglevel.ERROR, 'NFM007_AgencyContract EnduserCode:' + quotation.EnduserCode); System.debug(Logginglevel.ERROR, 'NFM007_AgencyContract DepartmentCode:' + quotation.DepartmentCode); } else { quotation.EnduserCode = opp.Hospital__r.Management_Code__c; quotation.DepartmentCode = opp.Account.Management_Code__c; System.debug(Logginglevel.ERROR, 'NFM007_Hospital EnduserCode:' + quotation.EnduserCode); System.debug(Logginglevel.ERROR, 'NFM007_Hospital DepartmentCode:' + quotation.DepartmentCode); } quotation.SalesChannel = NFMUtil.getMapValue(transferMap, 'Sales_Root__c', opp.Sales_Root__c, iflog); quotation.CLBICCategory = NFMUtil.getMapValue(transferMap, 'Opportunity_Category__c', opp.Opportunity_Category__c, iflog); quotation.SalesPriceForAgent1 = opp.OCM_Agent1_Price__c; quotation.SalesPriceForAgent2 = 0; quotation.SalesPriceForEnduser = 0; quotation.Agent1Code = opp.Agency1__r.Management_Code__c; quotation.Agent2Code = opp.Agency2__r.Management_Code__c; quotation.ProspectCategory = NFMUtil.getMapValue(transferMap, 'Purchase_Type__c', opp.Purchase_Type__c, iflog); quotation.ContractType = NFMUtil.getMapValue(transferMap, 'Promise_Class__c', opp.Promise_Class__c, iflog); quotation.FundSource = NFMUtil.getMapValue(transferMap, 'Fund_Basis__c', opp.Fund_Basis__c, iflog); quotation.AuthorizationNo = opp.Authorized_DB_No__c; quotation.ContractApplicationNo = opp.NotesApprovedNo__c; quotation.DealerContractNo = opp.Sales_Contract_No__c; // quotation.InspectionCertificate = opp.Inspection_Certificate__c ? '1' : '0'; // quotation.InspectionCertificateComment = opp.Inspection_Certificate_Comment__c; quotation.InspectionCertificate = opp.STMS_Package_Sale__c ? '1' : '0'; quotation.InspectionCertificateComment = opp.Equipment_Order_Flg__c ? '1' : '0'; quotation.PurposeOfAdvice = purposeOfAdviceMap.get(opp.Id); // LHJ 多年保修 20190627 Start //if (!oldDate) { if (opp.Gurantee_Period__c != null) { quotation.ContractPeriod = String.valueOf(opp.Gurantee_Period__c).leftPad(2,'0'); } else { quotation.ContractPeriod = null; } //} else { // quotation.ContractPeriod = null; //} // LHJ 多年保修 20190627 End // xinhonglu AddStart quotation.Other1 = NFMUtil.getMapValue(transferMap, 'Salesdepartment_Owner__c', opp.Salesdepartment_Owner__c, iflog); // xinhonglu AddEnd //CHAN-BDPBVY 20190703 start // quotation.Detail = new List(); quotation.Detail = new List(); //CHAN-BDPBVY 20190703 end // 20211101 gzw 报价试算 fix 试算行项目有值,发试算信息,否则发询价行项目 end //询价上的【是否需要价格申请】为是的场合,才要检查做没做过报价试算 thh 2021-11-03 if (opp.If_Need_PriceApply__c && promotionSalesProductsList != null && promotionSalesProductsList.size() > 0) { for(Integer i = 0; i < promotionSalesProductsList.size(); i++){ Detail_element detail = new Detail_element(); quotation.Detail.add(detail); detail.DetailLine = '' + (i + 1); // 20211101 gzw 报价试算 fix ItemCode start // detail.ItemCode = promotionSalesProductsList.get(i).Product2__r.ProductCode; detail.ItemCode = promotionSalesProductsList.get(i).Product2__r.Correspond_Code__c == null? promotionSalesProductsList.get(i).Product2__r.ProductCode : promotionSalesProductsList.get(i).Product2__r.Correspond_ProductCode__c; detail.ItemQuantity = promotionSalesProductsList.get(i).Quantity__c; if (opp.Trade__c == '外貿') { // detail.ListPrice = promotionSalesProductsList.get(i).Product2__r.Foreign_Trade_List_US__c; // 外贸List价 detail.ListPrice = promotionSalesProductsList.get(i).Product2__r.Correspond_Code__c == null? promotionSalesProductsList.get(i).Product2__r.Foreign_Trade_List_US__c : promotionSalesProductsList.get(i).Product2__r.Correspond_Code__r.Foreign_Trade_List_US__c; } else { // detail.ListPrice = promotionSalesProductsList.get(i).Product2__r.Intra_Trade_List_RMB__c; // 内贸List价 detail.ListPrice = promotionSalesProductsList.get(i).Product2__r.Correspond_Code__c == null? promotionSalesProductsList.get(i).Product2__r.Intra_Trade_List_RMB__c : promotionSalesProductsList.get(i).Product2__r.Correspond_Code__r.Intra_Trade_List_RMB__c; } // 20211101 gzw 报价试算 fix ItemCode end // if (opp.Estimation_Id__c.startsWith('a2K')) { // detail.SalesPrice = promotionSalesProductsList.get(i).UnitPrice__c; // 消耗品订单,销售价格 // } else { // detail.SalesPrice = promotionSalesProductsList.get(i).AgencyUnitPrice__c; // 一般询价,经销商销售价格 // } detail.SalesPrice = promotionSalesProductsList.get(i).AgencyUnitPrice__c; // 一般询价,经销商销售价格 if (promotionSalesProductsList.get(i).LastestGuaranteePeriod__c != null) { detail.GuaranteePeriod = String.valueOf(promotionSalesProductsList.get(i).LastestGuaranteePeriod__c).leftPad(2,'0'); } else { detail.GuaranteePeriod = null; } // detail.PROCODE = promotionSalesProductsList.get(i).PromotionNo__c; if(promotionSalesProductsList.get(i).recordTypeName__c=='Promotion'){ detail.PROCODE = promotionSalesProductsList.get(i).PromotionNo__c; }else if(promotionSalesProductsList.get(i).recordTypeName__c=='Authorizer'){ detail.PROCODE = '9999'; }else{ detail.PROCODE = '8888'; } system.debug(' detail.PROCODE=='+detail.PROCODE); //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy start if(opp.Trade__c == '外貿'){ detail.GuaranteeType = promotionSalesProductsList.get(i).latestWarrantyType__c+',';// 保修类别 }else{ Date nowDate = Date.today(); // Date baojidate = Date.valueOf('2022-4-1'); Date baojidate = Date.newInstance(2022,3,30); if(baojidate<=nowDate){ detail.GuaranteeType = promotionSalesProductsList.get(i).latestWarrantyType__c+',new'; }else{ detail.GuaranteeType = promotionSalesProductsList.get(i).latestWarrantyType__c+','; } } //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy end // detail.GuaranteeType = promotionSalesProductsList.get(i).latestWarrantyType__c; // 保修类别 if (!oldDate) { if (promotionSalesProductsList.get(i).latestProvistonPeriod__c != null) { detail.ProvistonPeriod = String.valueOf(promotionSalesProductsList.get(i).latestProvistonPeriod__c).leftPad(2,'0'); } else { detail.ProvistonPeriod = null; } if (promotionSalesProductsList.get(i).LastestGuaranteePeriod__c != null) { detail.GuaranteePeriod = String.valueOf(promotionSalesProductsList.get(i).LastestGuaranteePeriod__c).leftPad(2,'0'); } else { detail.GuaranteePeriod = null; } detail.GuaranteePrice = promotionSalesProductsList.get(i).latestGuranteePrice__c; detail.ServicePrice = promotionSalesProductsList.get(i).latestServicePrice__c; // detail.GuaranteeType = oppLiList.get(i).latestWarrantyType__c; // 保修类别 detail.MaintenancePrice = promotionSalesProductsList.get(i).LastestMaintenance_Price_Year__c; // 维修合同报价 detail.Discount = (detail.ListPrice == null ? 0 : detail.ListPrice) - (detail.SalesPrice == null ? 0 : detail.SalesPrice) + (detail.ServicePrice == null ? 0 : detail.ServicePrice); //折扣金额 } else { // detail.GuaranteePeriod = null; // detail.GuaranteeType = null; detail.ProvistonPeriod = null; detail.GuaranteePrice = null; detail.ServicePrice = null; detail.MaintenancePrice = null; detail.Discount = (detail.ListPrice == null ? 0 : detail.ListPrice) - (detail.SalesPrice == null ? 0 : detail.SalesPrice) + (detail.ServicePrice == null ? 0 : detail.ServicePrice); //折扣金额 } } }else{ for (Integer i = 0; i < oppLiList.size(); i++) { //CHAN-BDPBVY 20190703 start // Nfm007Sync.Detail_element detail = new Nfm007Sync.Detail_element(); Detail_element detail = new Detail_element(); //CHAN-BDPBVY 20190703 end quotation.Detail.add(detail); detail.DetailLine = '' + (i + 1); // CHAN-BX66KN add by gzw start // detail.ItemCode = oppLiList.get(i).PricebookEntry.ProductCode; detail.ItemCode = oppLiList.get(i).PricebookEntry.Product2.Correspond_Code__c == null ? oppLiList.get(i).PricebookEntry.ProductCode : oppLiList.get(i).PricebookEntry.Product2.Correspond_ProductCode__c; detail.ItemQuantity = oppLiList.get(i).Quantity; // CHAN-BX66KN add by gzw end // CHAN-B8U4TG 20190128 Start // detail.ListPrice = oppLiList.get(i).ListPrice__c; //产品折扣前清单价格 // CHAN-BX66KN update by gwy start if (opp.Trade__c == '外貿') { detail.ListPrice = oppLiList.get(i).PricebookEntry.Product2.Correspond_Code__c == null ? oppLiList.get(i).PricebookEntry.Product2.Foreign_Trade_List_US__c: oppLiList.get(i).PricebookEntry.Product2.Correspond_Code__r.Foreign_Trade_List_US__c; // 外贸List价 }else{ detail.ListPrice = oppLiList.get(i).PricebookEntry.Product2.Correspond_Code__c == null ? oppLiList.get(i).PricebookEntry.Product2.Intra_Trade_List_RMB__c: oppLiList.get(i).PricebookEntry.Product2.Correspond_Code__r.Intra_Trade_List_RMB__c; // 内贸List价 } // CHAN-BX66KN update by gwy end // CHAN-B8U4TG 20190128 End //detail.SalesPrice = oppLiList.get(i).UnitPrice__c; //产品折扣后销售价格 //detail.SalesPrice = oppLiList.get(i).AgencyUnitPrice__c; //产品折扣后销售价格 if (opp.Estimation_Id__c.startsWith('a2K')) { detail.SalesPrice = oppLiList.get(i).UnitPrice__c; // 消耗品订单,销售价格 } else { detail.SalesPrice = oppLiList.get(i).AgencyUnitPrice__c; // 一般询价,经销商销售价格 } // LHJ 多年保修 20190627 Start //detail.Discount = (detail.ListPrice == null ? 0 : detail.ListPrice) // - (detail.SalesPrice == null ? 0 : detail.SalesPrice) ; //折扣金额 // if (oppLiList.get(i).LastestGuaranteePeriod__c != null) { // detail.GuaranteePeriod = String.valueOf(oppLiList.get(i).LastestGuaranteePeriod__c).leftPad(2,'0'); // } else { // detail.GuaranteePeriod = null; // } //外贸多年保修 精琢技术 wql 2021/03/23 start //计提年限 外贸多年保修 字段中4.1切换 if (oppLiList.get(i).latestProvistonPeriod__c != null) { detail.ProvistonPeriod = String.valueOf(oppLiList.get(i).latestProvistonPeriod__c).leftPad(2,'0'); } else { detail.ProvistonPeriod = null; } //保修年限 外贸多年保修 字段中4.1切换 if (oppLiList.get(i).LastestGuaranteePeriod__c != null) { detail.GuaranteePeriod = String.valueOf(oppLiList.get(i).LastestGuaranteePeriod__c).leftPad(2,'0'); } else { detail.GuaranteePeriod = null; } // 20211101 gzw 报价试算 fix PROCODE start detail.PROCODE = null; // 20211101 gzw 报价试算 fix PROCODE end //oldDate 内贸多年保修切换 oldDecideDateUSD 外贸多年保修切换 //①decide在20191001之后 decide在20210401之后 if (!oldDate&&!oldDecideDateUSD) { //保修类别 if(oppLiList.get(i).latestWarrantyType__c != null){ //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy start if(opp.Trade__c == '外貿'){ detail.GuaranteeType = oppLiList.get(i).latestWarrantyType__c+',';// 保修类别 }else{ Date nowDate = Date.today(); // Date baojidate = Date.valueOf('2022-4-1'); Date baojidate = Date.newInstance(2022,3,30); if(baojidate<=nowDate){ detail.GuaranteeType = oppLiList.get(i).latestWarrantyType__c+',new'; }else{ detail.GuaranteeType = oppLiList.get(i).latestWarrantyType__c+','; } } //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy end // detail.GuaranteeType = oppLiList.get(i).latestWarrantyType__c; // 保修类别 }else{ //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy start if(opp.Trade__c == '外貿'){ detail.GuaranteeType = ','; }else{ Date nowDate = Date.today(); Date baojidate = Date.newInstance(2022,3,30); if(baojidate<=nowDate){ detail.GuaranteeType = ',new'; }else{ detail.GuaranteeType = ','; } } //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy end // detail.GuaranteeType = null; } //计提金额 detail.GuaranteePrice = oppLiList.get(i).latestGuranteePrice__c; //nodiscount detail.ServicePrice = oppLiList.get(i).latestServicePrice__c; // detail.GuaranteeType = oppLiList.get(i).latestWarrantyType__c; // 保修类别 //维修合同报价 detail.MaintenancePrice = oppLiList.get(i).LastestMaintenance_Price_Year__c; // 维修合同报价 detail.Discount = (detail.ListPrice == null ? 0 : detail.ListPrice) - (detail.SalesPrice == null ? 0 : detail.SalesPrice) + (detail.ServicePrice == null ? 0 : detail.ServicePrice); //折扣金额 } //①decide在20191001之后 外贸decide在20210401之前 else if(!oldDate&&oldDecideDateUSD){ // detail.GuaranteePeriod = null; // detail.GuaranteeType = null; //外贸多年保修未上线前 保修类别 传null //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy start if(opp.Trade__c == '外貿'){ detail.GuaranteeType = ','; }else{ Date nowDate = Date.today(); Date baojidate = Date.newInstance(2022,3,30); if(baojidate<=nowDate){ detail.GuaranteeType = ',new'; }else{ detail.GuaranteeType = ','; } } //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy end // detail.GuaranteeType = null; //外贸多年保修未上线前 计提金额 传0 detail.GuaranteePrice = 0; //外贸多年保修未上线前 nodiscount 传0 detail.ServicePrice = 0; //外贸多年保修未上线前 维修合同报价 传0 detail.MaintenancePrice = 0; detail.Discount = (detail.ListPrice == null ? 0 : detail.ListPrice) - (detail.SalesPrice == null ? 0 : detail.SalesPrice) + (detail.ServicePrice == null ? 0 : detail.ServicePrice); //折扣金额 } //③decide在20191001 之前 老数据 else if(oldDate){ detail.GuaranteePeriod = null; //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy start if(opp.Trade__c == '外貿'){ detail.GuaranteeType = ','; }else{ Date nowDate = Date.today(); Date baojidate = Date.newInstance(2022,3,30); if(baojidate<=nowDate){ detail.GuaranteeType = ',new'; }else{ detail.GuaranteeType = ','; } } //WLIG-CCT9UG 【委托】关于市场多年保计提金调整 fy end // detail.GuaranteeType = null; detail.ProvistonPeriod = null; detail.GuaranteePrice = null; detail.ServicePrice = null; detail.MaintenancePrice = null; detail.Discount = (detail.ListPrice == null ? 0 : detail.ListPrice) - (detail.SalesPrice == null ? 0 : detail.SalesPrice) + (detail.ServicePrice == null ? 0 : detail.ServicePrice); //折扣金额 } // LHJ 多年保修 20190627 End //外贸多年保修 精琢技术 wql 2021/03/23 start } } //CHAN-BDPBVY 20190703 start // quotation.PresalesPerson = new List(); quotation.PresalesPerson = new List(); //CHAN-BDPBVY 20190703 end for (Integer i = 0; i < oppTMList.size(); i++) { //CHAN-BDPBVY 20190703 start // Nfm007Sync.PresalesPerson_element person = new Nfm007Sync.PresalesPerson_element(); PresalesPerson_element person = new PresalesPerson_element(); //CHAN-BDPBVY 20190703 end quotation.PresalesPerson.add(person); person.PresalesLine = '' + (i + 1); person.PresalesPersonCode = oppTMList.get(i).User.Employee_No__c; person.PresalesPersonName = oppTMList.get(i).User.Name; } logstr += quotation.QuotationCode + '(' + quotation.PurposeOfAdvice + ')Detail[' + oppLiList.size() + ']PresalesPerson[' + oppTMList.size() + '] '; } if (quotations.Quotation.size() > 0) { //Nfm007Sync.Quotations_element[] pQuotations = new Nfm007Sync.Quotations_element[] { quotations }; logstr += '\ncallout count=' + quotations.Quotation.size(); //OlympusCoJpCommonMessage.LOG_element[] logs = stub.NFM007_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 = ''; //请求号码:CHAN-BDPBVY 新增start NFM007 mfn007 = new NFM007(); mfn007.Quotations = new Quotations_element(); mfn007.Quotations = quotations; //请求号码:CHAN-BDPBVY 新增end //请求号码:CHAN-BDPBVY 修改前rowData = NFMUtil.makeRowData(Monitoring, 'NFM007', quotations); rowData = NFMUtil.makeRowData(Monitoring, 'NFM007', mfn007); System.debug('+++++rowData+++++' + rowData); execute(rowData, iflog); } Set inquiryNoList = new Set(); Map oppUpsertMap = new Map(); // CHAN-BSV3GZ start // 保存 status 状态 logstr += '\nStatus:' + status; //CHAN-BSV3GZ end logstr += '\nend'; } catch(Exception ex) { // エラーが発生した場合 System.debug(Logginglevel.ERROR, 'NFM007_' + iflog.Name + ':' + ex.getMessage()); System.debug(Logginglevel.ERROR, 'NFM007_' + iflog.Name + ':' + ex.getStackTraceString()); logstr += ex.getMessage(); iflog.ErrorLog__c += ex.getMessage() + '\n'; iflog.ErrorLog__c += ex.getStackTraceString() + '\n'; } if (rowData != null) { System.debug('+++++rowData+++++insert:' + rowData); insert rowData; System.debug('+++++rowData+++++afterinsert:' + rowData.Id); } System.debug(Logginglevel.DEBUG, 'NFM007_' + 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); //CHAN-BDPBVY 20190703 start // Nfm007Sync.Quotations_element quotations = (Nfm007Sync.Quotations_element) JSON.deserialize(rowDataStr, Nfm007Sync.Quotations_element.class); NFM007 nfm007 = (NFM007) JSON.deserialize(rowDataStr, NFM007.class); //CHAN-BDPBVY 20190703 end String logstr = nfm007.Quotations.Monitoring.MessageGroupNumber + ' start\n'; Boolean needUpdateIflog = false; if (iflog == null) { needUpdateIflog = true; iflog = new BatchIF_Log__c(); iflog.Type__c = 'NFM007'; iflog.MessageGroupNumber__c = nfm007.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 //CHAN-BDPBVY 20190703 start // Nfm007Sync.HTTPS_Port stub = new Nfm007Sync.HTTPS_Port(); // stub.timeout_x = 100000; // timeout in milliseconds // stub.endpoint_x = NFMUtil.NFM007_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; // } // Nfm007Sync.Quotations_element[] pQuotations = new Nfm007Sync.Quotations_element[] { quotations }; // OlympusCoJpCommonMessage.LOG_element[] logs = stub.NFM007_Sync_BC2GPI(pQuotations); //CHAN-BDPBVY 20190703 end //CHAN-BDPBVY 20190703 start // NFMUtil.sendToSap(rowDataStr, NFMUtil.NFM007_ENDPOINT); // CHAN-BSV3GZ start // 接收 SAP返回状态 status = // CHAN-BSV3GZ end NFMUtil.sendToSapRet(rowDataStr, NFMUtil.NFM007_ENDPOINT); //CHAN-BDPBVY 20190703 end // CHAN-BSV3GZ start // 原代码 // rowData.retry_cnt__c=0; if (status == 'OK') { rowData.retry_cnt__c = 0; } else { if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0; if (rowData.retry_cnt__c < batch_retry_max_cnt) { rowData.retry_cnt__c++; LogAutoSendSchedule.assignOneMinute(); } if (rowData.retry_cnt__c >= batch_retry_max_cnt) { rowData.ErrorLog__c = 'status:' + status + ' 询价编码:' + nfm007.Quotations.Quotation.get(0).QuotationCode + '\n错误次数已经超过自动送信设定的最大次数,请手动送信'; } } // CHAN-BSV3GZ end }catch(Exception ex) { // TODO IOException // エラーが発生した場合 System.debug(Logginglevel.ERROR, 'NFM007_' + iflog.Name + ':' + ex.getMessage()); System.debug(Logginglevel.ERROR, 'NFM007_' + 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++; LogAutoSendSchedule.assignOneMinute(); } 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) { upsert iflog; update rowData; } } }