I have a VF page that List account records that meet certain criteria. The user would select which accounts as well as fill out a couple notes fields (that do not exist in the Account object). Once they fill out the form and have selected the accounts, then i want it to write certain fields from the account record along with the two notes fields on the form to a new object.
Page:
<apex:page controller="wrapperClassController">
<script>
//This javascript method is to select/unselect all the check boxes if header level check box is selected.
function checkAll(selectAll) {
var inputElem = document.getElementsByTagName("input");
for(var i=0; i<inputElem.length; i++) {
if(inputElem[i].id.indexOf("selectedRecords")!=-1)
inputElem[i].checked = selectAll.checked;
}
}
</script>
<apex:form >
<apex:pageBlock title="New/Reactivated Accounts" mode="edit">
<apex:pageBlockSection title="Parent BPID" columns="2">
<apex:inputField value="{!nar.Parent_BPID__c}"/>
</apex:pageBlockSection>
<apex:pageBlockSection title="General Notes" columns="2">
<apex:inputTextarea id="newNote" value="{!nar.General_Notes__c}" cols="100"/>
</apex:pageBlockSection>
<apex:pageBlockSection title="Web Notes" columns="2">
<apex:inputTextarea id="webNote" value="{!nar.Web_Notes__c}" cols="100"/>
</apex:pageBlockSection>
<apex:pageBlockButtons >
<apex:commandButton value="Process Selected" action="{!processSelected}" rerender="table"/>
</apex:pageBlockButtons>
<apex:pageBlockSection title="Select Account(s)" columns="2">
<apex:pageBlockTable value="{!accounts}" var="a" id="table">
<apex:column >
<apex:facet name="header">
<input type="checkbox" id="headerCheck" onclick="checkAll(this);" />
</apex:facet>
<apex:inputCheckBox id="selectedRecords" value="{!a.selected}"/>
<apex:param value="{!a.acct.Id}" name="selectedRecord"/>
</apex:column>
<apex:column value="{!a.acct.Baan_BPID__c}"><apex:facet name="header">BPID</apex:facet></apex:column>
<apex:column value="{!a.acct.name}"><apex:facet name="header">Account</apex:facet></apex:column>
<apex:column value="{!a.acct.shippingstreet}"><apex:facet name="header">Address</apex:facet></apex:column>
<apex:column value="{!a.acct.shippingcity}"><apex:facet name="header">City</apex:facet></apex:column>
<apex:column value="{!a.acct.shippingstate}"><apex:facet name="header">State</apex:facet></apex:column>
<apex:column value="{!a.acct.shippingpostalcode}"><apex:facet name="header">Zip</apex:facet></apex:column>
<apex:column value="{!a.acct.OG_Baan_BP_Type__c}"><apex:facet name="header">Baan BP Type</apex:facet></apex:column>
<apex:column value="{!a.acct.DEA_License__c}"><apex:facet name="header">DEA #</apex:facet></apex:column>
<apex:column value="{!a.acct.ASD_SML__c}"><apex:facet name="header">SML #</apex:facet></apex:column>
<apex:column value="{!a.acct.OG_Channel_Code__c}"><apex:facet name="header">Channel Code</apex:facet></apex:column>
<apex:column value="{!a.acct.OG_Credit_Limit__c}"><apex:facet name="header">Credit Limit</apex:facet></apex:column>
<apex:column value="{!a.acct.OG_Payment_Terms__c}"><apex:facet name="header">Payment Terms</apex:facet></apex:column>
<apex:column value="{!a.acct.OG_Statement_Method__c}"><apex:facet name="header">Statement Method</apex:facet></apex:column>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
Class:
public class wrapperClassController {
public wrapperClassController() {
nar = new New_Account_Reactivation__c();
}
public New_Account_Reactivation__c nar {get;set;}
public List<cAccount> accountList {get; set;}
public List<cAccount> getAccounts() {
if(accountList == null) {
accountList = new List<cAccount>();
for(Account c: [SELECT
Id,
baan_bpid__c,
name,
shippingstreet,
shippingcity,
shippingstate,
shippingpostalcode,
og_baan_bp_type__c,
DEA_License__c,
ASD_SML__c,
OG_Channel_Code__c,
OG_Credit_Limit__c,
OG_Payment_Terms__c,
OG_Statement_Method__c
FROM Account
WHERE
baan_bpid__c <> '' AND
CreatedDate = LAST_N_DAYS:222
LIMIT 10]) {
accountList.add(new cAccount(c));
}
}
return accountList;
}
public PageReference processSelected() {
List<Account> selectedAccounts = new List<Account>();
for(cAccount cAcct: getAccounts()) {
if(cAcct.selected == true) {
selectedAccounts.add(cAcct.acct);
}
}
for(Account acct: selectedAccounts) {
nar.BPID__c = acct.Baan_BPID__c;
nar.Account__c = acct.Id;
nar.Address__c = acct.shippingStreet;
nar.State__c = acct.shippingState;
nar.City__c = acct.shippingCity;
nar.Zip__c = acct.shippingPostalCode;
nar.Baan_BP_Type__c = acct.og_baan_bp_type__c;
nar.DEA__c = acct.DEA_License__c;
nar.SML__c = acct.ASD_SML__c;
nar.Channel_Code__c = acct.OG_Channel_Code__c;
nar.Credit_Limit__c = acct.OG_Credit_Limit__c;
nar.Payment_Terms__c = acct.OG_Payment_Terms__c;
nar.Statement_Method__c = acct.OG_Statement_Method__c;
}
upsert nar;
accountList=null;
return null;
}
public class cAccount {
public Account acct {get; set;}
public Boolean selected {get; set;}
public cAccount(Account c) {
acct = c;
selected = false;
}
}
}
If I select 4 account records and fill in the two notes textarea boxes, it will only write the last account record i select to the New_Account_Reactivation__c object and will not write the data from the notes textarea boxes. I am a bit new to apex so please forgive my ignorance. If someone could help out...point in the right direction....point out what "all" i am doing wrong, I would very much appreciate it.
Thanks in advance.