// 六个Apex方法,初始化,保存,取消,提交审批,追加品牌,追加型号 public with sharing class PCLLostReportController { public Product2 pro2 { get; set; } public string oppId { get; set; } public string lostReportId { get; set; } // 当前页面状态 Create,View and Edit, MarketEdit public string pageStatus { get; set; } // 失单,部分失单 public string lostType {get; set;} public Set deleteBrandIDSet = new Set(); public string submitFlag {get; set;} public LostReport LostReport {get; set;} public integer brandNo {get; set;} public integer RemoveBrandNo {get; set;} public integer setBrandNo {get; set;} public integer brandCount {get; set;} // add tcm 20211122 start public integer topNum {get; set;} public integer secondNum {get; set;} // add tcm 20211122 end public Decimal InclusionUltrasound {get; set;} //20230506 lt DB202304618804 包含超声 add // 竞争对手对照关系表,key是品牌名字,value是ID public map CompetitionMap; public PCLLostReportController(ApexPages.StandardController controller) { this(); } public PCLLostReportController(){ oppId = ApexPages.currentPage().getParameters().get('oppId') == null ? '' : ApexPages.currentPage().getParameters().get('oppId'); lostReportId = ApexPages.currentPage().getParameters().get('Id') == null ? '' : ApexPages.currentPage().getParameters().get('Id'); pageStatus = ApexPages.currentPage().getParameters().get('pageStatus') == null ? '' : ApexPages.currentPage().getParameters().get('pageStatus'); lostType = ApexPages.currentPage().getParameters().get('lostType') == null ? '' : ApexPages.currentPage().getParameters().get('lostType'); submitFlag = ApexPages.currentPage().getParameters().get('submitFlag') == null ? '' : ApexPages.currentPage().getParameters().get('submitFlag'); } // 初始化 public void init(){ if(string.isblank(pageStatus)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '页面出错,请刷新后重试!')); // 这里需要报错没有传参数 return; } else if(pageStatus.equals('Create')) { if(string.isBlank(oppId)) { // 这里报错创建时候必须有询价 ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '创建失单报告时,请重询价页面创建')); return; } list opplist = [select id,Name, Sales_assistant_ID__c, Sales_manager_departmentID__c,Sales_owner_buchangID__c from opportunity where id =: oppId limit 1]; if( opplist.size() == 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '您没有询价的查看权限,无法创建失单报告!')); pageStatus = null; return; } Schema.DescribeSObjectResult s = Lost_cancel_report__c.sObjectType.getDescribe(); if( !s.isCreateable()) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '您不能创建失单/部分失单报告!')); return; } Lost_cancel_report__c tempLostReport = new Lost_cancel_report__c(LostType__c= lostType, Opportunity__c = oppId, Sales_assistant__c = opplist[0].Sales_assistant_ID__c, Manager_sales__c = opplist[0].Sales_manager_departmentID__c, Buchang_sales__c = opplist[0].Sales_owner_buchangID__c, Submit_Day__c = date.today(), Report_Status__c = '草案'); LostReport = new LostReport(tempLostReport); brandCount = 1; } else if(pageStatus.equals('View') || pageStatus.equals('Edit')) { system.debug('edit1'); if(string.isBlank(lostReportId)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '您没有查看这个失单/部分失单报告的权限!')); pageStatus = null; return; } system.debug('edit2'); list lostReportList = [select id,of_lost_system_processor__c, Lost_reason_main__c, Lost_Reason_Sub__c,Lost_By_Company__c, LostTotalAmount__c,LostType__c, TotalAmountLost__c, //20230215 lt DB202302247719 InclusionUltrasound__c, //20230506 lt DB202304618804 包含超声 Report_Status__c,Sales_assistant__c, Opportunity__c, Opportunity__r.Sales_assistant_ID__c, Opportunity__r.Sales_manager_departmentID__c, Manager_sales__c,recordtypeid,recordtype.DeveloperName from Lost_cancel_report__c where id =: lostReportId limit 1]; if(lostReportList.size() == 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '您没有查看这个失单/部分失单报告的权限!')); pageStatus = null; return; } InclusionUltrasound = lostReportList[0].InclusionUltrasound__c; //20230506 lt DB202304618804 包含超声 lostReportList[0].Sales_assistant__c = lostReportList[0].Opportunity__r.Sales_assistant_ID__c; lostReportList[0].Manager_sales__c = lostReportList[0].Opportunity__r.Sales_manager_departmentID__c; if(lostReportList[0].recordtype.DeveloperName.equals('PCL_Lost_report')) { lostReportList[0].LostType__c ='失单'; }else if(lostReportList[0].recordtype.DeveloperName.equals('PCL_PartLost_report')) { lostReportList[0].LostType__c ='部分失单'; } // 权限,如果当前状态不是草案中,那么需要跳转到只读页面 if(!'草案'.equals(lostReportList[0].Report_Status__c) && userinfo.getProfileId() != (ID) '00e10000000Y3o5AAC') { pageStatus = 'View'; } oppId = lostReportList[0].Opportunity__c; system.debug('edit3'); list selectlostBrandList = [ select id, LostPrice__c, Lost_By_Company__c, LostPrices_ThousandY__c, //20230215 lt DB202302247719 Lost_reason_main__c,Lost_Reason_Sub__c,Name,Agency__c, AgencyMannual__c, // ProductCategory__c,ProductClass__c, Lost_cancel_report__c,Lost_By_Company_Mannual__c, ( select id,PCLLostBrand__c,LostProduct__c, LostProductMannual__c, //SWAG-C6P9PX lt 20210913 add ProductCategory__c,ProductClass__c, //add tcm 20211123 Quantity__c,Name, LostBrandName__c from PCLLostBrand__c.PCLLostBrandProduct__r) from PCLLostBrand__c where Lost_cancel_report__c =: lostReportId ]; if(selectlostBrandList.size() == 0 ) { LostReport = new LostReport(lostReportList[0]); brandCount = 1; }else{ system.debug('edit4:'+selectlostBrandList[0]); brandCount = 0; list LostBrandList = new list(); for(PCLLostBrand__c templostBrand : selectlostBrandList) { list tempProductList = new list(); integer productCount = 0; system.debug('check products:'+ (templostBrand.PCLLostBrandProduct__r != null) + '|' + (templostBrand.PCLLostBrandProduct__r.size() > 0)); if (templostBrand.PCLLostBrandProduct__r != null && templostBrand.PCLLostBrandProduct__r.size() > 0) { for( PCLLostProduct__c tempProduct: templostBrand.PCLLostBrandProduct__r) { tempProductList.add(new PCLLostProducts(productCount,tempProduct)); productCount++; } } else { PCLLostProducts newProduct = new PCLLostProducts(); if ('其他'.equals(templostBrand.Lost_By_Company__c) && templostBrand.Lost_By_Company_Mannual__c != null && !''.equals(templostBrand.Lost_By_Company_Mannual__c)) { newProduct.LostProductss.LostBrandName__c = templostBrand.Lost_By_Company_Mannual__c; } else { newProduct.LostProductss.LostBrandName__c = templostBrand.Lost_By_Company__c; } system.debug('aaa4+++'+templostBrand.Lost_By_Company_Mannual__c); tempProductList.add(newProduct); productCount++; } LostBrandList.add( new LostBrand(brandCount,tempProductList, templostBrand)); brandCount++; } LostReport = new LostReport(lostReportList[0],LostBrandList); system.debug('LostReport.LostBrands:'+LostReport.LostBrands); } } brandNo = 0; // 读取竞争对手品牌 // BrandmapSet(); if(string.isNotEmpty(submitFlag)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.CONFIRM, '提交成功!')); } } // 编辑 只有系统管理员或者草案中可以编辑 public PageReference edit2(){ if( userinfo.getProfileId() == (ID) '00e10000000Y3o5AAC' || '草案'.equals(LostReport.LostReport.Report_Status__c) ) { pageStatus = 'Edit'; init(); } else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '只有在草案中才能进行编辑!')); } return null; } // 设置品牌 public void setBrand(){ list LostBrandlist = LostReport.LostBrands; LostBrand tempBrand = LostBrandlist.get(setBrandNo); string brandName = tempBrand.lostBrand.Lost_By_Company__c; // fy SWAG-CCC6F6 start if(!'其他'.equals(tempBrand.lostBrand.Lost_By_Company_Mannual__c)){ tempBrand.lostBrand.Lost_By_Company_Mannual__c = null; } system.debug('aaa5+++'+tempBrand.lostBrand.Lost_By_Company_Mannual__c); // fy SWAG-CCC6F6 end // ID compID = CompetitionMap.get(brandName); for(PCLLostProducts tempLostProduct : tempBrand.LostProducts ) { // test // tempLostProduct.LostProductss.Competitor__c = compID; tempLostProduct.LostProductss.LostBrandName__c = brandName; tempLostProduct.LostProductss.LostProduct__c = null; tempLostProduct.LostProductss.LostProductMannual__c = null; tempLostProduct.LostProductss.Quantity__c = null; tempLostProduct.LostProductss.ProductClass__c = null; tempLostProduct.LostProductss.ProductCategory__c = null; tempLostProduct.bool=false; } } // 设置品牌 public void setbrandmannual(){ list LostBrandlist = LostReport.LostBrands; LostBrand tempBrand = LostBrandlist.get(setBrandNo); string brandName = tempBrand.lostBrand.Lost_By_Company__c; String brandNameMannual = tempBrand.lostBrand.Lost_By_Company_Mannual__c; // ID compID = CompetitionMap.get(brandName); for(PCLLostProducts tempLostProduct : tempBrand.LostProducts ) { // test // tempLostProduct.LostProductss.Competitor__c = compID; system.debug('aaaa3++'+brandNameMannual); if ('其他'.equals(brandName) && brandNameMannual != null && !''.equals(brandNameMannual)) { tempLostProduct.LostProductss.LostBrandName__c = brandNameMannual; // tempLostProduct.LostProductss.LostProduct__c = null; // tempLostProduct.LostProductss.LostProductMannual__c = null; // tempLostProduct.LostProductss.Quantity__c = null; // tempLostProduct.LostProductss.ProductClass__c = null; // tempLostProduct.LostProductss.ProductCategory__c = null; // tempLostProduct.bool=false; } } } // 保存 public PageReference save(){ if(!DataCheck()) { return null; } if(!dataEntry()) { return null; } brandCount = LostReport.LostBrands.size(); pageStatus = 'View'; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.CONFIRM, '保存成功!')); return null; } //读取并构建竞争对手品牌 // public void BrandmapSet(){ // CompetitionMap = new map(); // list competitionList // = [select id,name from Competition_Company__c]; // for(Competition_Company__c tempComp : competitionList ) { // CompetitionMap.put(tempComp.name, tempComp.id); // } // } // 数据检查 public boolean DataCheck(){ boolean dataCheck = true; if(string.isBlank(LostReport.LostReport.LostType__c)) { LostReport.LostReport.LostType__c.addError('必须填写失单类型!'); dataCheck = false; } for(LostBrand tempLostBrand : LostReport.LostBrands ) { system.debug('aaaa1++'+tempLostBrand.lostBrand.Lost_By_Company_Mannual__c); if(string.isblank(tempLostBrand.lostBrand.Lost_By_Company__c)) { tempLostBrand.lostBrand.Lost_By_Company__c.addError('请填写失单品牌!'); dataCheck = false; }// fy SWAG-CCC6F6 start else if('其他'.equals(tempLostBrand.lostBrand.Lost_By_Company__c)&&string.isblank(tempLostBrand.lostBrand.Lost_By_Company_Mannual__c)){ tempLostBrand.lostBrand.Lost_By_Company_Mannual__c.addError('请填写失单品牌(手动)!'); dataCheck = false; }// fy SWAG-CCC6F6 end system.debug('aaaa2++'+tempLostBrand.lostBrand.Lost_By_Company_Mannual__c); if(tempLostBrand.lostBrand.LostPrice__c == null) { tempLostBrand.lostBrand.LostPrice__c.addError('失单金额必填!'); dataCheck = false; } if(string.isblank(tempLostBrand.lostBrand.Lost_reason_main__c )) { tempLostBrand.lostBrand.Lost_reason_main__c.addError('失单理由(主)必填!'); dataCheck = false; } if(string.isblank(tempLostBrand.lostBrand.Agency__c )) { tempLostBrand.lostBrand.Agency__c.addError('中标经销商必填!'); dataCheck = false; } // 检查是否有超过1个有数的产品 integer productCount = 0; for( PCLLostProducts temlostProduct : tempLostBrand.LostProducts) { if (temlostProduct.LostProductss.LostProduct__c != null || temlostProduct.LostProductss.LostProductMannual__c != null) { System.debug('失单型号' + temlostProduct.LostProductss.LostProduct__c); System.debug('失单型号手动' + temlostProduct.LostProductss.LostProductMannual__c); productCount ++; } // update tcm 20211123 start if((temlostProduct.LostProductss.LostProduct__c!=null || temlostProduct.LostProductss.LostProductMannual__c!=null)&&(temlostProduct.LostProductss.Quantity__c==null || temlostProduct.LostProductss.Quantity__c ==0)) { temlostProduct.LostProductss.Quantity__c.addError('请填写失单数量!'); dataCheck = false; } if((temlostProduct.LostProductss.LostProduct__c!=null || temlostProduct.LostProductss.LostProductMannual__c!=null)&&temlostProduct.LostProductss.ProductCategory__c==null) { if (temlostProduct.LostProductss.ProductClass__c==null) { temlostProduct.LostProductss.ProductClass__c.addError('失单产品类别必填!'); temlostProduct.LostProductss.ProductCategory__c.addError('失单产品必填!'); }else { temlostProduct.LostProductss.ProductCategory__c.addError('失单产品必填!'); } dataCheck = false; } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 start if ((temlostProduct.LostProductss.LostProduct__c==null && temlostProduct.LostProductss.LostProductMannual__c==null)&&(temlostProduct.LostProductss.ProductCategory__c!=null||temlostProduct.LostProductss.Quantity__c!=null)) { if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){ temlostProduct.LostProductss.LostProduct__c.addError('失单对手型号或失单对手型号(手动)必填!'); } else{ temlostProduct.LostProductss.LostProductMannual__c.addError('失单对手型号或失单对手型号(手动)必填!'); } dataCheck = false; } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 end // update tcm 20211123 end // 20230418 ljh DB202304320022 start String LostBrandNameS = tempLostBrand.lostBrand.Lost_By_Company__c != '其他'?tempLostBrand.lostBrand.Lost_By_Company__c:tempLostBrand.lostBrand.Lost_By_Company_Mannual__c; String LostBrandName = temlostProduct.LostProductss.LostBrandName__c; if(LostBrandNameS != LostBrandName){ temlostProduct.LostProductss.LostBrandName__c.addError('失单品牌名不一致,请确认'); dataCheck = false; } // 20230418 ljh DB202304320022 end } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 start if (productCount == 0 && tempLostBrand.LostProducts != null && tempLostBrand.LostProducts.size() > 0) { if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){ tempLostBrand.LostProducts[0].LostProductss.LostProduct__c.addError('至少录入1条失单对手型号信息!'); }else{ tempLostBrand.LostProducts[0].LostProductss.LostProductMannual__c.addError('至少录入1条失单对手型号信息!'); } dataCheck = false; } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 end } return dataCheck; } public list brandcopy(){ list tempbrands = new list(); for(LostBrand tempbrand: LostReport.LostBrands) { LostBrand LostBrand = new LostBrand(tempbrand.lineNo,tempbrand.LostProducts ); LostBrand.lostBrand = tempbrand.lostBrand.clone(); LostBrand.lostBrand.id = tempbrand.lostBrand.id; tempbrands.add(LostBrand); } return tempbrands; } // 数据录入 public boolean dataEntry(){ system.debug('save---start:'); Savepoint sp = Database.setSavepoint(); Lost_cancel_report__c templostReport = LostReport.lostReport.clone(); templostReport.id = LostReport.lostReport.id; list tempBrands = brandcopy(); try{ // 待完成,这里需要把第一个品牌的信息赋值到这个失单报告上去,还有需要把各个品牌金额汇总加起来; //system.debug('LostReport.LostBrands:'+LostReport.LostBrands); // 设置记录类型 LostReport.lostReport.recordTypeID = LostReport.lostReport.LostType__c== '失单'?Schema.SObjectType.Lost_cancel_report__c.getRecordTypeInfosByDeveloperName().get('PCL_Lost_report').getRecordTypeId() : Schema.SObjectType.Lost_cancel_report__c.getRecordTypeInfosByDeveloperName().get('PCL_PartLost_report').getRecordTypeId(); LostReport.lostReport.LostTotalAmount__c = 0; LostReport.lostReport.TotalAmountLost__c = 0; //20230215 lt DB202302247719 LostReport.lostReport.of_lost_system_processor__c = 0; LostReport.lostReport.Lost_reason_main__c = null; LostReport.lostReport.Lost_Reason_Sub__c = null; LostReport.lostReport.Lost_By_Company__c = null; for(LostBrand tempLostBrand : LostReport.LostBrands) { if(string.isNotBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) { LostReport.lostReport.LostTotalAmount__c += tempLostBrand.lostBrand.LostPrice__c; //20230215 lt DB202302247719 start Decimal med = tempLostBrand.lostBrand.LostPrice__c/1.13/1000; Decimal med1 = med.setScale(2); // System.debug('---lt123不含税数值(人工)Decimal---'+med); // System.debug('---lt123不含税数值(人工)Decimal两位小数---'+med1); LostReport.lostReport.TotalAmountLost__c += med1; //LostReport.lostReport.TotalAmountLost__c += tempLostBrand.lostBrand.LostPrices_ThousandY__c; //20230215 lt DB202302247719 // LostReport.lostReport.TotalAmountLost__c += tempLostBrand.lostBrand.LostPrice__c/1.13/1000; //20230215 lt DB202302247719 //20230215 lt DB202302247719 en LostReport.lostReport.Lost_reason_main__c = LostReport.lostReport.Lost_reason_main__c == null ? tempLostBrand.lostBrand.Lost_reason_main__c : LostReport.lostReport.Lost_reason_main__c; LostReport.lostReport.Lost_Reason_Sub__c = LostReport.lostReport.Lost_Reason_Sub__c == null ? tempLostBrand.lostBrand.Lost_Reason_Sub__c : LostReport.lostReport.Lost_Reason_Sub__c; LostReport.lostReport.Lost_By_Company__c = LostReport.lostReport.Lost_By_Company__c == null ? tempLostBrand.lostBrand.Lost_By_Company__c : LostReport.lostReport.Lost_By_Company__c; for( PCLLostProducts tempLostProduct : tempLostBrand.LostProducts) { if(tempLostProduct.LostProductss.Quantity__c !=null && tempLostProduct.LostProductss.Quantity__c >0) { LostReport.lostReport.of_lost_system_processor__c += tempLostProduct.LostProductss.Quantity__c; } } } } upsert LostReport.lostReport; // 需要插入更新的失单品牌 map upsertLostBrandMap = new map(); // 需要删掉的失单品牌 map deleteLostBrandMap = new map(); // 需要插入更新的失单型号,key是品牌编号+型号编号,value是需要更新的失单型号 map upsertLostProductMap = new map(); // 需要删掉的失单品牌 list deleteLostProductList = new list(); for(LostBrand tempLostBrand : LostReport.LostBrands ) { // 如果有失单品牌,那么就要插入更新; system.debug('tempLostBrand.lostBrand.Lost_By_Company__c:'+tempLostBrand.lostBrand.Lost_By_Company__c); if(string.isNotBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) { upsertLostBrandMap.put(tempLostBrand.lineNo,tempLostBrand.lostBrand); tempLostBrand.lostBrand.Lost_cancel_report__c = LostReport.lostReport.id; tempLostBrand.lostBrand.Name = tempLostBrand.lostBrand.Lost_By_Company__c; integer tempNo = 0; for( PCLLostProducts tempLostProduct : tempLostBrand.LostProducts) { system.debug('Name:'+ tempLostProduct.LostProductss.Name ); if(tempLostProduct.LostProductss.Quantity__c !=null && tempLostProduct.LostProductss.Quantity__c >0) { tempLostProduct.LostProductss.Name = tempLostBrand.lostBrand.Name + tempLostProduct.LostProductss.Quantity__c; upsertLostProductMap.put(tempLostBrand.lineNo +':'+ tempNo,tempLostProduct.LostProductss); }else if(string.isNotBlank(tempLostProduct.LostProductss.id)) { deleteLostProductList.add(tempLostProduct.LostProductss); } tempNo++; } } // 如果没有品牌,但是有id, 这样数据需要删除 else if(string.isNotBlank(tempLostBrand.lostBrand.id)) { deleteLostBrandMap.put(tempLostBrand.lineNo,tempLostBrand.lostBrand); // 这里可能需要也判断一下失单型号有没有需要删掉 } } if(upsertLostBrandMap.size()>0) { upsert upsertLostBrandMap.values(); } for( string productNo :upsertLostProductMap.keyset()) { PCLLostProduct__c tempLostProduct = upsertLostProductMap.get(productNo); integer brandNo = integer.valueof(productNo.split(':')[0]); tempLostProduct.PCLLostBrand__c = upsertLostBrandMap.get(brandNo).id; } if(upsertLostProductMap.size()>0) { upsert upsertLostProductMap.values(); } if(deleteLostBrandMap.size()>0) { delete deleteLostBrandMap.values(); for(PCLLostBrand__c pcl: deleteLostBrandMap.values()) { pcl.id = null; } } if(deleteLostProductList.size()>0) { delete deleteLostProductList; for(PCLLostProduct__c pclp: deleteLostProductList) { pclp.id = null; } } if(deleteBrandIDSet.size() > 0) { list tempdeleteIDlist = new list(); tempdeleteIDlist.addall(deleteBrandIDSet); database.delete(tempdeleteIDlist); } for(integer brandNumber =0; brandNumber< LostReport.LostBrands.size(); brandNumber++) { LostBrand tempLostBrand = LostReport.LostBrands.get(brandNumber); if(tempLostBrand.lostBrand.Id == null) { LostReport.LostBrands.remove(brandNumber); brandNumber--; continue; } for(integer productNumber = 0; productNumber< tempLostBrand.LostProducts.size(); productNumber++) { PCLLostProducts tempLostProduct = tempLostBrand.LostProducts.get(productNumber); if(tempLostProduct.LostProductss.Id == null) { tempLostBrand.LostProducts.remove(productNumber); productNumber--; continue; } } } lostReportId = LostReport.lostReport.id; system.debug('save---end:'); }catch (Exception ex) { Database.rollback(sp); LostReport.lostReport = templostReport; LostReport.LostBrands = tempBrands; // 这里需要写一些报错信息 System.debug('---lt123---'+ex.getLineNumber()); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,ex.getMessage())); return false; } return true; } // 取消 public PageReference cancel(){ PageReference page = new PageReference('/'+oppId); page.setRedirect(true); return page; } // 提交 public PageReference submit(){ if(!'草案'.equals(LostReport.LostReport.Report_Status__c) ) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '只有在草案中才能提交申请!')); return null; } Savepoint sp = Database.setSavepoint(); try{ LostReport.lostReport.Report_Status__c = '提交'; update LostReport.lostReport; Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); psr.setObjectId(lostReportId); Approval.ProcessResult submitResult = Approval.process(psr); PageReference page = new PageReference('/apex/PCLLostReportPage'); page.getParameters().put('Id', lostReportId); page.getParameters().put('pageStatus', 'View'); page.getParameters().put('submitFlag', '1'); page.setRedirect(true); return page; }catch(exception ex) { Database.rollback(sp); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,ex.getMessage())); return null; } } // 添加品牌 public PageReference addBrand(){ LostReport.LostBrands.add(new LostBrand(LostReport.LostBrands.size())); brandCount = LostReport.LostBrands.size(); return null; } // 删除品牌 这个有参数brandNo,才知道是删除那个品牌 public PageReference Remove(){ system.debug('RemoveBrandNo:'+RemoveBrandNo); list tempLostBrands = new List(); Integer i = 0; for(integer j = 0; j< LostReport.LostBrands.size(); j++ ) { LostBrand templostBrand = LostReport.LostBrands.get(j); if(j != RemoveBrandNo) { templostBrand.lineNo = i; tempLostBrands.add(templostBrand); i++; }else if(!string.isBlank(templostBrand.lostBrand.id)) { deleteBrandIDSet.add(templostBrand.lostBrand.id); } } LostReport.LostBrands = tempLostBrands; brandCount = LostReport.LostBrands.size(); return null; } // 添加型号, 这个有参数brandNo,才知道是添加到那个品牌 // update tcm 20211125 添加型号时自动带出品牌 start public PageReference addProduct(){ system.debug('brandNo:'+brandNo); LostBrand tempLostBrand = LostReport.LostBrands.get(brandNo); // PCLLostProduct__c plp = new PCLLostProduct__c(Competitor__c=CompetitionMap.get(LostReport.LostBrands[brandNo].lostBrand.Lost_By_Company__c)); // 20230418 ljh DB202304320022 start // string brandName = tempLostBrand.lostBrand.Lost_By_Company__c; string brandName = tempLostBrand.lostBrand.Lost_By_Company__c != '其他'?tempLostBrand.lostBrand.Lost_By_Company__c:tempLostBrand.lostBrand.Lost_By_Company_Mannual__c; // 20230418 ljh DB202304320022 end PCLLostProduct__c plp = new PCLLostProduct__c(); plp.LostBrandName__c = brandName; tempLostBrand.LostProducts.add(new PCLLostProducts(tempLostBrand.LostProducts.size(),plp)); tempLostBrand.ProductSize = tempLostBrand.LostProducts.size(); return null; } // update tcm 20211125 添加型号时自动带出品牌 end // 页面的数据结构 public class LostReport { public Lost_cancel_report__c lostReport { get; set; } public list LostBrands { get; set; } public LostReport(){ lostReport = new Lost_cancel_report__c(); LostBrands = new list {new LostBrand(0)}; } public LostReport(Lost_cancel_report__c lostReport){ this.lostReport = lostReport; LostBrands = new list {new LostBrand(0)}; } public LostReport(Lost_cancel_report__c lostReport, list LostBrands){ this.lostReport = lostReport; this.LostBrands = LostBrands; } } public class LostBrand { public PCLLostBrand__c lostBrand { get; set; } public Integer lineNo { get; set; } public list LostProducts { get; set; } public Integer ProductSize {get; set;} public LostBrand( integer lineNo ){ lostBrand = new PCLLostBrand__c(); this.lineNo = lineNo; LostProducts = new list {new PCLLostProducts()}; ProductSize = 1; lostBrand = new PCLLostBrand__c(); } public LostBrand( integer lineNo, list LostProducts ){ lostBrand = new PCLLostBrand__c(); this.lineNo = lineNo; this.LostProducts = LostProducts; ProductSize = LostProducts.size(); } public LostBrand( integer lineNo, list LostProducts, PCLLostBrand__c lostBrand){ this.lostBrand = lostBrand; this.lineNo = lineNo; this.LostProducts = LostProducts; ProductSize = LostProducts.size(); } } // add tcm 20211119 start public class PCLLostProducts { public Integer lineNo2 { get; set; } public PCLLostProduct__c LostProductss { get; set; } public Boolean bool { get; set; } public PCLLostProducts() { this.lineNo2 = 0; this.LostProductss=new PCLLostProduct__c(); } public PCLLostProducts(Integer lineNo2) { this.lineNo2 = lineNo2; this.LostProductss=new PCLLostProduct__c(); } public PCLLostProducts(Integer lineNo2,PCLLostProduct__c LostProductss) { this.lineNo2 = lineNo2; this.LostProductss=LostProductss; if (LostProductss.LostProduct__c != null) { this.bool = true; } } } // add tcm 20211119 end // add tcm 20211118 start public void search() { if (LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.LostProduct__c==null) { LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=null; LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=null; LostReport.LostBrands[topNum].LostProducts[secondNum].bool=false; }else { Product2 prd = [select Id,ProductClass__c, ProductCategory__c from Product2 where Id =:LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.LostProduct__c]; if (prd.ProductCategory__c!=null) { LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=prd.ProductClass__c; LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=prd.ProductCategory__c; LostReport.LostBrands[topNum].LostProducts[secondNum].bool=true; }else { LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=null; LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=null; LostReport.LostBrands[topNum].LostProducts[secondNum].bool=false; } } } // add tcm 20211118 end }