Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.63 KB | None | 0 0
  1. public class OpportunityBrandWinListEditController {
  2.  
  3. public List<OpportunityBrandWinWrapper> wrappers {get; set;}
  4.  
  5. public Integer addItemCount {get; set;}
  6.  
  7. public Integer keyToDelete {get; set;}
  8.  
  9. public Integer mainKey {get; set;}
  10.  
  11. private List<Opportunity> toDelete=new List<Opportunity>();
  12.  
  13. public String bwOppId = ApexPages.currentPage().getParameters().get('bwOppId');
  14.  
  15. public Opportunity bwOpp = [Select MRRPerUnit__c,
  16. ID,
  17. Account.Name,
  18. AccountId,
  19. Brand__c,
  20. Units__c
  21. From Opportunity
  22. Where ID =:bwOppId];
  23.  
  24. public Opportunity firstForecastOpp = [Select MRRPerUnit__c,
  25. ID,
  26. Account.Name,
  27. AccountId,
  28. Brand__c,
  29. OwnerId,
  30. Type,
  31. CloseDate,
  32. MatchonFlow__c,
  33. CreatedFromFlow__c
  34. From Opportunity
  35. Where RelatedDesignWin__c =:bwOppId
  36. Order by CloseDate ASC
  37. Limit 1];
  38.  
  39. public Double totalUnits = 0;
  40. public Double remainingUnits = 0;
  41.  
  42. public OpportunityBrandWinListEditController()
  43. {
  44. mainKey=1;
  45. addItemCount=1;
  46. wrappers=new List<OpportunityBrandWinWrapper>();
  47.  
  48. List<Opportunity> opps = [select id,
  49. CloseDate,
  50. OwnerId,
  51. Total_MRR__c,
  52. Units__c,
  53. Total_NRR__c,
  54. RelatedDesignWin__r.ForecastedUnits__c,
  55. RelatedDesignWin__r.MRRPerUnit__c,
  56. ForecastedUnits__c,
  57. CumulativeForecast__c,
  58. DiscreteExpectedUnits__c,
  59. DiscreteTotalUnits__c,
  60. Expected_Units__c,
  61. Name,
  62. Account.Name
  63. from Opportunity
  64. WHERE RelatedDesignWin__c =: bwOppId
  65. order by CloseDate ASC];
  66.  
  67. for (Opportunity opp : opps)
  68. {
  69. wrappers.add(new OpportunityBrandWinWrapper(mainKey++, opp));
  70. }
  71. }
  72.  
  73. public PageReference addItems()
  74. {
  75. if ( (addItemCount>0) && (addItemCount<10) )
  76. {
  77. for (Integer idx=0; idx<addItemCount; idx++)
  78. {
  79. wrappers.add(new OpportunityBrandWinWrapper(mainKey++, new Opportunity
  80. (DiscreteExpectedUnits__c = 0,
  81. DiscreteTotalUnits__c = 0,
  82. DiscreteTotalARR__c = 0,
  83. DiscreteExpectedARR__c = 0,
  84. CloseDate = firstForecastOpp.CloseDate.addMonths(((mainkey-1)*3)+1).toStartofMonth().addDays(-1),
  85. Name = 'Q' + firstForecastOpp.CloseDate.addMonths(((mainkey-1)*3)+1).toStartofMonth().addDays(-1).month()/3 + ' ' + firstForecastOpp.CloseDate.addMonths(((mainkey-1)*3)+1).toStartofMonth().addDays(-1).year())));
  86. }
  87. }
  88.  
  89. return null;
  90. }
  91.  
  92. public PageReference save()
  93. {
  94. PageReference result = null;
  95. Boolean error = false;
  96. List<Opportunity> toUpsert = new List<Opportunity>();
  97.  
  98. for (OpportunityBrandWinWrapper wrapper : wrappers)
  99. {
  100.  
  101. {
  102. if((wrapper.opp.ForecastedUnits__c - wrapper.opp.DiscreteExpectedUnits__c - remainingUnits) <= 0){
  103. wrapper.opp.Units__c = 0;
  104. wrapper.opp.Total_MRR__c = 0;
  105. remainingUnits = Math.abs(wrapper.opp.ForecastedUnits__c - wrapper.opp.DiscreteExpectedUnits__c - remainingUnits);
  106. }
  107. else {
  108. wrapper.opp.Units__c = (wrapper.opp.ForecastedUnits__c - wrapper.opp.DiscreteExpectedUnits__c - remainingUnits);
  109. wrapper.opp.Total_MRR__c = (wrapper.opp.ForecastedUnits__c - wrapper.opp.DiscreteExpectedUnits__c - remainingUnits) * bwOpp.MRRPerUnit__c;
  110. remainingUnits = 0;
  111. }
  112. wrapper.opp.RelatedDesignWin__c = bwOppId;
  113. wrapper.opp.StageName = 'Commitment';
  114. wrapper.opp.Probability = 1;
  115. wrapper.opp.Total_NRR__c = 0;
  116. wrapper.opp.AccountId = bwOpp.AccountId;
  117. wrapper.opp.Brand__c = bwOpp.Brand__c;
  118. wrapper.opp.CreatedFromFlow__c = firstForecastOpp.CreatedFromFlow__c;
  119. wrapper.opp.MatchonFlow__c = firstForecastOpp.MatchonFlow__c;
  120. wrapper.opp.Type = firstForecastOpp.Type;
  121. wrapper.opp.Description = String.ValueOf(wrapper.opp.Units__c);
  122. wrapper.opp.CloseDate = firstForecastOpp.CloseDate.addMonths(((wrapper.key-1)*3)+1).toStartofMonth().addDays(-1);
  123. totalUnits += wrapper.opp.ForecastedUnits__c;
  124. wrapper.opp.CumulativeForecast__c = totalUnits;
  125. wrapper.opp.OwnerId = firstForecastOpp.OwnerId;
  126. wrapper.opp.Name = bwOpp.Account.Name + ' > Q' + wrapper.opp.CloseDate.month()/3 + ' ' + wrapper.opp.CloseDate.year();
  127.  
  128. toUpsert.add(wrapper.opp);
  129. }
  130.  
  131. }
  132.  
  133. if (!error)
  134. {
  135. bwOpp.Units__c = totalUnits;
  136. bwOpp.Total_MRR__c = totalUnits * firstForecastOpp.MRRPerUnit__c;
  137. update bwOpp;
  138. upsert toUpsert;
  139.  
  140. result=new PageReference('/' + bwOppId);
  141. }
  142.  
  143. return result;
  144. }
  145. }
  146.  
  147. public class OpportunityBrandWinWrapper {
  148.  
  149. public Integer key {get; set;}
  150. public Opportunity opp {get; set;}
  151.  
  152. public OpportunityBrandWinWrapper(Integer inKey, Opportunity inOpp)
  153. {
  154. key=inKey;
  155. opp=inOpp;
  156.  
  157. }
  158.  
  159. }
  160.  
  161. @isTest private class testBWOppForecastJunction { static testMethod void myUnitTest()
  162. {
  163. Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator'];
  164. User u3 = new User(Alias = 'newUser', Email='newuser10345@testorg.com',
  165. EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
  166. LocaleSidKey='en_US', ProfileId = p.Id,
  167. TimeZoneSidKey='America/Los_Angeles', UserName='newuser10345@testorg.com');
  168.  
  169. System.runAs(u3){
  170.  
  171. List<sObject> accs = Test.loadData(Account.sobjectType, 'AccTestData');
  172. List<sObject> opps = Test.loadData(Opportunity.sobjectType, 'OppTestData');
  173.  
  174. Opportunity opp1 = (Opportunity)opps[0];
  175.  
  176. PageReference myVfPage = Page.vfOppBWForecast;
  177. System.Test.setCurrentPageReference(myVfPage);
  178. ApexPages.currentPage().getParameters().put('bwOppId',opp1.Id);
  179. String id = ApexPages.currentPage().getParameters().get('bwOppId');
  180. Test.setCurrentPageReference(myVFPage);
  181. system.assertEquals(true,id==opp1.Id);
  182.  
  183. OpportunityBrandWinListEditController bwOppTest = new OpportunityBrandWinListEditController(new ApexPages.StandardController(opp1));
  184. LIST<OpportunityBrandWinListEditController> lstAccLoc = bwOppTest.opps();
  185.  
  186. for(OpportunityBrandWinListEditController oppList : bwOppTest.wrappers )
  187. {
  188. oppList.key != null;
  189. }
  190.  
  191. bwOpp.createFR();
  192. bwOpp.insertRec();
  193.  
  194.  
  195. }
  196.  
  197. }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement