Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 27 additions & 6 deletions force-app/main/default/classes/SObjectController2.cls
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,9 @@ public with sharing class SObjectController2 {
Map<String, Map<String,String>> picklistFieldMap; // Field API Name, <Picklist Value, Picklist Label>
List<String> percentFieldList;
List<String> noEditFieldList;
list<String> timeFieldList;
list<String> picklistFieldList;
List<String> timeFieldList;
List<String> picklistFieldList;
List<String> currencyFieldList;
String objectName;
String objectLinkField;
String timezoneOffset;
Expand All @@ -81,14 +82,15 @@ public with sharing class SObjectController2 {
curRR.noEditFieldList = emptyList;
curRR.timeFieldList = emptyList;
curRR.picklistFieldList = emptyList;
curRR.currencyFieldList = emptyList;
curRR.rowData = records;
curRR.objectName = 'EmptyCollection';
curRR.objectLinkField = '';
} else {
String objName = records[0].getSObjectType().getDescribe().getName();
curRR = getColumnData(curRR, fieldNames, objName);
curRR = getLookupData(curRR, records, curRR.lookupFieldList, objName);
curRR = getRowData(curRR, records, curRR.dataMap, curRR.objNameFieldMap, curRR.lookupFieldList, curRR.percentFieldList, objName, curRR.noEditFieldList);
curRR = getRowData(curRR, records, curRR.dataMap, curRR.objNameFieldMap, curRR.lookupFieldList, curRR.percentFieldList, objName, curRR.noEditFieldList, curRR.currencyFieldList);
curRR.objectName = objName;
}
curRR.timezoneOffset = getTimezoneOffset().format();
Expand All @@ -114,6 +116,7 @@ public with sharing class SObjectController2 {
List<String> noEditFields = new List<String>();
List<String> timeFields = new List<String>();
List<String> picklistFields = new List<String>();
List<String> currencyFields = new List<String>();
Map<String, Map<String, String>> picklistFieldLabels = new Map<String, Map<String, String>>();
String objectLinkField = getNameUniqueField(objName); // Name (link) Field for the Datatable SObject
System.debug('*** OBJ/LINK' + objname + '/' + objectLinkField);
Expand Down Expand Up @@ -161,7 +164,10 @@ public with sharing class SObjectController2 {
noEditFields.add(fieldName);
}
}
when 'CURRENCY', 'DECIMAL', 'DOUBLE', 'INTEGER', 'LONG' {
when 'CURRENCY' {
currencyFields.add(fieldName);
}
when 'DECIMAL', 'DOUBLE', 'INTEGER', 'LONG' {
// *** create scale attrib in datatableColumnFieldDescriptor and pass the getScale() values in that way. ***
}
when 'TIME' {
Expand Down Expand Up @@ -193,6 +199,7 @@ public with sharing class SObjectController2 {
curRR.picklistFieldList = picklistFields;
curRR.picklistFieldMap = picklistFieldLabels;
curRR.objectLinkField = objectLinkField;
curRR.currencyFieldList = currencyFields;
return curRR;
}

Expand Down Expand Up @@ -236,13 +243,27 @@ public with sharing class SObjectController2 {
}

@AuraEnabled
public static ReturnResults getRowData(ReturnResults curRR, List<SObject> records, Map<String, Map<Id, SObject>> dataMap, Map<String, String> objNameFieldMap, List<String> lookupFields, List<String> percentFields, String objName, List<String> noEditFields) {
public static ReturnResults getRowData(ReturnResults curRR, List<SObject> records, Map<String, Map<Id, SObject>> dataMap, Map<String, String> objNameFieldMap, List<String> lookupFields, List<String> percentFields, String objName, List<String> noEditFields, List<String> currencyFields) {
// Update object to include values for the "Name" field referenced by Lookup fields
String lookupFieldData = '';
Map<String,Boolean> firstRecord = new Map<String,Boolean>();
for(String lf : lookupFields) {
firstRecord.put(lf,true);
}

String objectName = records[0].getSObjectType().getDescribe().getName();
String currencyFieldsQuery = 'SELECT Id';
for (String currField : currencyFields) {
currencyFieldsQuery += ', convertCurrency(' + currField + ')';
}
currencyFieldsQuery += ' FROM ' + objectName + ' WHERE Id IN :records';
Map<Id, SObject> sobjCurrencyFields = new Map<Id, SObject>(Database.query(currencyFieldsQuery));
for (SObject so : records) {
SObject converted = sobjCurrencyFields.get(so.Id);
for (String currField : currencyFields) {
so.put(currField, converted.get(currField));
}
}

for(SObject so : records) {

Expand Down Expand Up @@ -393,4 +414,4 @@ public with sharing class SObjectController2 {
return UserInfo.getTimezone().getOffset(dtNow);
}

}
}