Мне нужно создать лицензионную запись с именем лицензии, которое представляет собой автонумерацию, дату начала, дату окончания, связанную с объектом возможности.в случае возможности у меня есть дата начала лицензии и срок подписки (в месяцах), поэтому, когда я заполнил оба эти поля и возможность, имеющая список продуктов.На странице сведений о возможностях я создал кнопку «Создать лицензию», чтобы при нажатии на нее автоматически делались все возможные вычисления и генерировалась запись лицензии.Запомните лицензию, которую я пытаюсь создать не более чем на 1 год, поэтому, если возможность составляет 24 месяца, будут созданы две лицензии, а если она будет 18 месяцев, то также две лицензии.
Мой вопрос: как я могу получитьсписок возможностей продукт список возможностей на каждой странице сведений о лицензии, когда мы нажимаем кнопку «Создать лицензию»
Код Apex:
public class GetLicense {
private final Opportunity o;
public GetLicense(ApexPages.StandardController con){
this.o = (Opportunity)con.getRecord();
}
public static boolean Recursion=true;
public PageReference Licensedetail(){
Id theId = ApexPages.currentPage().getParameters().get('id');
System.debug('@@'+theId);
List<License__c> lics=new List<License__c>();
List<License_Line__c> llclist =new List<License_Line__c>();
List<Opportunity> oplist=[Select Id,Name,License_Start_Date__c,Subscription_Term_inmonths__c from Opportunity where Id =:theId];
List<OpportunityLineItem> olIlist=[SELECT Product2.Name FROM OpportunityLineItem WHERE OpportunityId =:theId];
for(Opportunity o:oplist){
//n is number of Licenses
Integer n=Math.ceil(o.Subscription_Term_inmonths__c/12).intValue();
Date date1=o.License_Start_Date__c;
for(Integer i=1;i<=n;i++){
if(theId != null && date1!=null ){
License__c li = new License__c();
License_Line__c llc =new License_Line__c();
li.Opportunity__c=o.Id;
li.Start_Date__c=date1;
//date1=date1-1;
li.End_Date__c= date1.addmonths(12)-1;
if(i==n){
li.End_Date__c=date1.addMonths(Math.ceil(o.Subscription_Term_inmonths__c-((n-1)*12)).intValue())-1;
}
date1=li.End_Date__c+1;
lics.add(li);
//
//ll.Product__c=o.Pricebook2Id;
//llclist.add(ll);
}
}
}
insert lics;
for(OpportunityLineItem objQ : olIlist){
License_Line__c ll =new License_Line__c();
License__c li = new License__c();
ll.License__c=li.Id;
ll.Product__c=objQ.Product2Id ;
llclist.add(ll);
}
if(!llclist.isEmpty()){
insert llclist;
}
// insert llclist;
Recursion = false;
// Redirect the user back to the original page
PageReference pageRef = new PageReference('/' + theId);
pageRef.setRedirect(true);
return pageRef;
}
}
Страница Visualforce:
<apex:page standardController="Opportunity" extensions="GetLicense" action="{!Licensedetail}" >
<apex:sectionHeader title="Auto-Running Apex Code"/>
<apex:outputPanel >
You tried calling Apex Code from a button. If you see this page,
something went wrong. You should have
been redirected back to the record you clicked the button from.
</apex:outputPanel>
</apex:page>