467 lines
25 KiB
OpenEdge ABL
467 lines
25 KiB
OpenEdge ABL
/**
|
|
* @description : Use for Generic Method
|
|
* @author : Satyam Mishra
|
|
* @group :
|
|
* @last modified on : 21-jan- 2025
|
|
* @last modified by : Satyam Mishra
|
|
**/
|
|
public class GenericAPIWebUtility {
|
|
public static integer i = 0;
|
|
|
|
public static String generateFieldMappingQuery(String ObjectMappingId){
|
|
|
|
// Select fields while respecting FLS
|
|
String query = '';
|
|
query = 'SELECT ' + CheckAccessibility.isAccessible('HIC_ShopifySync__SF_Field__c,HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Default_Value__c', 'HIC_ShopifySync__HIC_Field_Mapping__c') +
|
|
' FROM HIC_ShopifySync__HIC_Field_Mapping__c WHERE ' +
|
|
CheckAccessibility.isAccessible('HIC_ShopifySync__Object_Mapping__c', 'HIC_ShopifySync__HIC_Field_Mapping__c') + ' = \'' +ObjectMappingId+ '\' LIMIT 49999';
|
|
|
|
return query;
|
|
|
|
}
|
|
|
|
public static SObject processFieldTypeAndMapping(List<HIC_ShopifySync__HIC_Field_Mapping__c> fieldsMappingList, String ObjectName, Map<String, Object> objectMap, String companyTimeZone, String Store) {
|
|
|
|
// SObject sObjRecord = Schema.getGlobalDescribe().get(ObjectName).newSObject();
|
|
SObject sObjRecord = (SObject)Type.forName(ObjectName).newInstance();
|
|
|
|
|
|
// Schema.sObjectType objectDef = Schema.getGlobalDescribe().get(ObjectName).getDescribe().getSObjectType();
|
|
Schema.sObjectType objectDef = ((SObject)Type.forName(ObjectName).newInstance()).getSObjectType();
|
|
|
|
Map<String, Schema.SobjectField> ObjectFieldsMap = objectDef.getDescribe().fields.getMap();
|
|
|
|
// Check and set store
|
|
if (ObjectFieldsMap.containsKey('HIC_ShopifySync__Store__c')) {
|
|
sObjRecord.put('HIC_ShopifySync__Store__c', Store);
|
|
}
|
|
|
|
Integer i = 0;
|
|
for (HIC_ShopifySync__HIC_Field_Mapping__c fieldMappingObj : fieldsMappingList) {
|
|
|
|
i = i + 1;
|
|
|
|
Schema.SobjectField SfFileds = ObjectFieldsMap.get(fieldMappingObj.HIC_ShopifySync__SF_Field__c);
|
|
|
|
if (SfFileds == null) {
|
|
continue;
|
|
}
|
|
|
|
Schema.DescribeFieldResult fieldResult = SfFileds.getDescribe();
|
|
String fieldType = fieldResult.getType().name().toLowerCase();
|
|
|
|
if (fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c != null) {
|
|
|
|
if (fieldResult.isUpdateable() || fieldResult.isCreateable()) {
|
|
Object objectFieldValue;
|
|
String Shopify_Fields = fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c;
|
|
|
|
// Check nested objects
|
|
if (objectMap != null && !objectMap.isEmpty() && fieldMappingObj.HIC_ShopifySync__Nested__c != null && objectMap.get(fieldMappingObj.HIC_ShopifySync__Nested__c) != null && objectMap.get(fieldMappingObj.HIC_ShopifySync__Nested__c) != '') {
|
|
|
|
Map<String, Object> filterNestedJson = new Map<String, Object>();
|
|
|
|
// Handle list in nested map
|
|
if (objectMap.get(fieldMappingObj.HIC_ShopifySync__Nested__c) instanceof List<Object>) {
|
|
List<Object> ObjList = (List<Object>) objectMap.get(fieldMappingObj.HIC_ShopifySync__Nested__c);
|
|
for (Object obj : ObjList) {
|
|
filterNestedJson = (Map<String, Object>) obj;
|
|
}
|
|
} else {
|
|
filterNestedJson = (Map<String, Object>) objectMap.get(fieldMappingObj.HIC_ShopifySync__Nested__c);
|
|
}
|
|
|
|
// Process multiple Shopify fields
|
|
if (Shopify_Fields.contains(',')) {
|
|
objectFieldValue = mergeShopifyField(filterNestedJson, Shopify_Fields);
|
|
} else {
|
|
objectFieldValue = filterNestedJson.get(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c);
|
|
}
|
|
} else if(objectMap != null && !objectMap.isEmpty()){
|
|
if (Shopify_Fields.contains(',')) {
|
|
objectFieldValue = mergeShopifyField(objectMap, Shopify_Fields);
|
|
} else {
|
|
objectFieldValue = objectMap.get(Shopify_Fields);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Default value check
|
|
if (fieldMappingObj.HIC_ShopifySync__Default_Value__c == true) {
|
|
defaultFieldMapping(sObjRecord, fieldMappingObj, fieldType, companyTimeZone, fieldResult);
|
|
}
|
|
// Check for non-nillable fields
|
|
else if (!fieldResult.isNillable() && (objectFieldValue == null || objectFieldValue == '')) {
|
|
missingRequiedFieldMapping(sObjRecord, fieldMappingObj, fieldType, fieldResult);
|
|
}
|
|
// Additional value processing for SFID
|
|
else if (fieldMappingObj.HIC_ShopifySync__IsSFID__c) {
|
|
additionalValue(fieldMappingObj, sObjRecord, objectFieldValue, fieldType);
|
|
}
|
|
// General field processing
|
|
else {
|
|
processFieldMapping(sObjRecord, fieldResult, objectFieldValue, fieldType, fieldMappingObj);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Final check for Shopify ID in the record
|
|
if (sObjRecord.get('HIC_ShopifySync__Shopify_Id__c') != null && sObjRecord.get('HIC_ShopifySync__Shopify_Id__c') != '' && sObjRecord.get('HIC_ShopifySync__Shopify_Id__c') != 'null') {
|
|
return sObjRecord;
|
|
} else {
|
|
system.debug('Record does not contain a valid Shopify ID, returning null');
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
public static List<Object> processDataMapping(String nested, List<HIC_ShopifySync__Data_Mapping__c> dataMappings, Map<String, Object> bodyMap){
|
|
List<Object> nestedList = new List<Object>();
|
|
if(nested != null && nested != ''){
|
|
Object nestedValue = bodyMap.get(nested);
|
|
if (nestedValue instanceof List<Object>) {
|
|
nestedList.addAll((List<Object>)nestedValue);
|
|
}else{
|
|
nestedList.add(nestedValue);
|
|
}
|
|
|
|
}else{
|
|
nestedList.add(bodyMap);
|
|
}
|
|
if(!dataMappings.isEmpty()){
|
|
for(Object record : nestedList){
|
|
Map<String, Object> bodyRecord = (Map<String, Object>)record;
|
|
if(bodyRecord!=null && !bodyRecord.isEmpty()){
|
|
for(HIC_ShopifySync__Data_Mapping__c dataInfo : dataMappings){
|
|
if(dataInfo.Default__c){
|
|
bodyRecord.put(dataInfo.Key__c, dataInfo.HIC_ShopifySync__Value_Of__c);
|
|
}
|
|
else{
|
|
bodyRecord.put(dataInfo.Key__c, bodyMap.get(dataInfo.HIC_ShopifySync__Value_Of__c));
|
|
}
|
|
|
|
}
|
|
record = bodyRecord;
|
|
}
|
|
}
|
|
}
|
|
|
|
return nestedList;
|
|
}
|
|
|
|
public static Sobject additionalValue(HIC_ShopifySync__HIC_Field_Mapping__c fieldMappingObj, Sobject sObjRecord, object objectFieldValue, String fieldType){
|
|
|
|
if(objectFieldValue !=null){
|
|
|
|
if(fieldType == 'String'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,string.valueof(objectFieldValue)+'d');
|
|
}
|
|
}
|
|
return sObjRecord;
|
|
}
|
|
public static SObject processFieldMapping(SObject sObjRecord, Schema.DescribeFieldResult fieldResult, object objectFieldValue, String fieldType, HIC_ShopifySync__HIC_Field_Mapping__c fieldMappingObj){
|
|
|
|
if(fieldType == 'reference') {
|
|
|
|
// Get the relationship name (e.g., Account)
|
|
String relationshipName = fieldResult.getRelationshipName();
|
|
|
|
// Create the parent SObject (e.g., Account) dynamically
|
|
SObject parentObj = fieldResult.getReferenceTo()[0].newSObject();
|
|
if(objectFieldValue != null && objectFieldValue != '') {
|
|
|
|
// Set the Shopify ID in the parent SObject (e.g., Account)
|
|
parentObj.put('HIC_ShopifySync__Shopify_Id__c', String.valueOf(objectFieldValue));
|
|
sObjRecord.putSObject(relationshipName, parentObj);
|
|
|
|
} else if(fieldResult.isNillable()) {
|
|
|
|
// Handle case where the field is not nullable
|
|
parentObj.put('HIC_ShopifySync__Shopify_Id__c', 'null');
|
|
sObjRecord.putSObject(relationshipName, parentObj); // Using `null` directly instead of 'null'
|
|
}
|
|
}
|
|
|
|
// Final debug statement to see the full sObjRecord
|
|
else if(fieldType == 'String' || fieldType == 'url' || fieldType == 'textarea' || fieldType == 'picklist' || fieldType == 'phone' || fieldType == 'email'){
|
|
if(objectFieldValue != null && objectFieldValue != ''){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,string.valueof(objectFieldValue));
|
|
}else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,'REQ'+string.valueof(system.now().getTime()+ i+1));
|
|
}
|
|
}
|
|
else if(fieldType == 'currency' || fieldType == 'double' || fieldType == 'decimal' || fieldType == 'percent' ) {
|
|
if(objectFieldValue!=null && objectFieldValue!=''){
|
|
Double doublevalue = 0;
|
|
doublevalue = Double.valueof(objectFieldValue);
|
|
|
|
if(fieldType == 'percent' && doublevalue > 100){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, Double.valueof(100));
|
|
}else{
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, doublevalue);
|
|
}
|
|
}else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c , Double.valueof(1));
|
|
}
|
|
}else if(fieldType == 'integer') {
|
|
if(objectFieldValue!=null && objectFieldValue!=''){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, Integer.valueof(objectFieldValue));
|
|
}else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c , Integer.valueof(1));
|
|
}
|
|
|
|
} else if(fieldType == 'boolean') {
|
|
if(objectFieldValue!=null && objectFieldValue!=''){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, boolean.valueof(objectFieldValue));
|
|
}else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, false);
|
|
}
|
|
} else if(fieldType == 'date') {
|
|
if(objectFieldValue!=null && objectFieldValue!='')
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, Date.valueOf(String.valueOf(objectFieldValue)));
|
|
else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,System.today());
|
|
}
|
|
} else if(fieldType == 'datetime'){
|
|
if(objectFieldValue!=null && objectFieldValue!=''){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, DateTime.valueOf(String.valueOf(objectFieldValue).replace('T',' ')));
|
|
}else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,System.now());
|
|
}
|
|
}else {
|
|
if(objectFieldValue!=null && objectFieldValue!=''){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, string.valueof(objectFieldValue));
|
|
}else if(!fieldResult.isNillable()){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,'REQ'+string.valueof(system.now().getTime()+ i+1));
|
|
}
|
|
}
|
|
return sObjRecord;
|
|
}
|
|
public static SObject missingRequiedFieldMapping(Sobject sObjRecord, HIC_ShopifySync__HIC_Field_Mapping__c fieldMappingObj , String fieldType, Schema.DescribeFieldResult fieldResult ){
|
|
|
|
if(fieldType =='reference'){
|
|
|
|
try {
|
|
Id convertedId = Id.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c);
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, convertedId);
|
|
} catch (Exception e) {
|
|
}
|
|
//sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, Id.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}
|
|
else if(fieldType == 'currency' || fieldType == 'double' || fieldType == 'decimal' || fieldType == 'percent'){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c , Double.valueof(1));
|
|
}
|
|
else if(fieldType == 'integer'){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c , Integer.valueof(1));
|
|
}
|
|
else if(fieldType == 'String'){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,'REQ'+string.valueof(system.now().getTime()+ i+1));
|
|
}else if(fieldType == 'date'){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,System.today());
|
|
}else if(fieldType == 'datetime'){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,System.now());
|
|
}else if(fieldType == 'email'){
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c,'required@hic.com');
|
|
}
|
|
|
|
return sObjRecord;
|
|
}
|
|
public static SObject defaultFieldMapping(Sobject sObjRecord, HIC_ShopifySync__HIC_Field_Mapping__c fieldMappingObj , String fieldType, String companyTimeZone, Schema.DescribeFieldResult fieldResult ){
|
|
|
|
|
|
if(fieldType =='reference'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, Id.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}
|
|
if(fieldType == 'boolean'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, Boolean.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}else if(fieldType == 'string'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, String.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}else if(fieldType == 'picklist'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, String.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}else if(fieldType == 'textarea'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, String.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}else if(fieldType == 'currency' || fieldType == 'double' || fieldType == 'decimal' ){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, double.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}else if( fieldType == 'percent' ){
|
|
|
|
if(double.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c) > 100) {
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, double.valueOf(100));
|
|
|
|
}else{
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, double.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}
|
|
|
|
}else if(fieldType == 'integer'){
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, integer.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
}
|
|
|
|
else if(fieldType == 'date'){
|
|
if(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c != null && fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c != 'null'){
|
|
|
|
//sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, date.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
Date inputDate = date.today();
|
|
Date newDate=inputDate.addDays(Integer.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c));
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, newDate);
|
|
|
|
}
|
|
|
|
}else if(fieldType == 'datetime'){
|
|
|
|
Datetime dt = dateTime.valueOf(String.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c).replace('T',' '));
|
|
DateTime dtTimeTimeZone=new TimeZoneServiceNew().convertDateTimeToOtherTimeZone(dt, 'UTC',companyTimeZone);
|
|
//dtTimeTimeZone=new TimeZoneServiceNew().convertDateTimeToOtherTimeZone(dtTimeTimeZone, 'UTC',companyTimeZone);
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, dtTimeTimeZone);
|
|
|
|
} else{
|
|
|
|
sObjRecord.put(fieldMappingObj.HIC_ShopifySync__SF_Field__c, checkFieldLengthAndReturnValue(fieldResult,String.valueOf(fieldMappingObj.HIC_ShopifySync__Shopify_Fields__c)));
|
|
}
|
|
return sObjRecord;
|
|
}
|
|
|
|
public static object mergeShopifyField(Map<String , Object> jsonMap , String ShopifyFiled){
|
|
object objectFieldValue;
|
|
|
|
List<String> ListOfShopifyFiled = ShopifyFiled.split(',');
|
|
|
|
for(String str :ListOfShopifyFiled ){
|
|
if(objectFieldValue != null && objectFieldValue != '' && !jsonMap.isEmpty() && jsonMap.get(str) !=null && jsonMap.get(str) !=''){
|
|
|
|
objectFieldValue = (Object)(String.valueOf(objectFieldValue) + String.valueOf(jsonMap.get(str)));
|
|
}else if(!jsonMap.isEmpty() && jsonMap.get(str) !=null && jsonMap.get(str) !=''){
|
|
|
|
|
|
objectFieldValue = jsonMap.get(str);
|
|
}
|
|
}
|
|
return objectFieldValue;
|
|
|
|
}
|
|
public static String checkFieldLengthAndReturnValue(Schema.DescribeFieldResult fieldResult, String Jsonbody){
|
|
|
|
|
|
if(fieldResult.getLength() > 0 && Jsonbody != null && Jsonbody != ''&& fieldResult!=null){
|
|
if( Jsonbody.length() <= fieldResult.getLength()){
|
|
return Jsonbody;
|
|
}else{
|
|
return Jsonbody.subString(0,fieldResult.getLength());
|
|
}
|
|
}else{
|
|
return '';
|
|
}
|
|
}
|
|
|
|
|
|
public static void updateErrorMassage( List<Database.upsertResult> updateResult, String objectName, List<sObject> objectList, Schema.SobjectField externalIdField, boolean IsWebhook, String store){
|
|
|
|
String isbatch = 'F';
|
|
if(Iswebhook){
|
|
isbatch = 'T';
|
|
}
|
|
list<HIC_ShopifySync__Error_Mapping__c> listofErrormailfield = new List<HIC_ShopifySync__Error_Mapping__c>();
|
|
String ErrorfieldMappingquery = 'select ' +CheckAccessibility.isAccessible('name,HIC_ShopifySync__Shopify_Field__c','HIC_ShopifySync__Error_Mapping__c') +' from HIC_ShopifySync__Error_Mapping__c where '+ CheckAccessibility.isAccessible('name','HIC_ShopifySync__Error_Mapping__c') + ' = \''+ objectName +'\' limit 1';
|
|
ErrorfieldMappingquery =String.escapeSingleQuotes(ErrorfieldMappingquery).remove('\\');
|
|
listofErrormailfield = Database.query(ErrorfieldMappingquery);
|
|
|
|
|
|
// Schema.SObjectType ObjectType = Schema.getGlobalDescribe().get(objectName);
|
|
Schema.SObjectType ObjectType = ((SObject)Type.forName(objectName).newInstance()).getSObjectType();
|
|
|
|
Map<String,SObjectField> fieldMap = ObjectType.getDescribe().fields.getmap();
|
|
Schema.SobjectField theField = null;
|
|
|
|
//use for add in shopify External Id to make it unique
|
|
if(!listofErrormailfield.isEmpty()){
|
|
theField = fieldMap.get(String.ValueOf(listofErrormailfield[0].HIC_ShopifySync__Shopify_Field__c));
|
|
}
|
|
|
|
list<HIC_ShopifySync__Error_Message__c> listoferrors = new list<HIC_ShopifySync__Error_Message__c>(); //List of errors message
|
|
list<HIC_ShopifySync__Shopify_Log__c> listofsuccesslog = new list<HIC_ShopifySync__Shopify_Log__c>(); //List of Shopify logs
|
|
|
|
for(Integer index = 0 ; index < updateResult.size() ; index ++){
|
|
|
|
//If record successfully upsert
|
|
if( !updateResult[index].isSuccess() ){
|
|
if(Schema.sObjectType.HIC_ShopifySync__Error_Message__c.isAccessible() && (Schema.sObjectType.HIC_ShopifySync__Error_Message__c.isCreateable()||Schema.sObjectType.HIC_ShopifySync__Error_Message__c.isUpdateable()) ){
|
|
|
|
// Error Message Object
|
|
HIC_ShopifySync__Error_Message__c errorobj = new HIC_ShopifySync__Error_Message__c();
|
|
errorobj.HIC_ShopifySync__Store__c = store;
|
|
if(CheckAccessibility.isUpdateable('name','HIC_ShopifySync__Error_Message__c') && Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c').getDescribe().isCreateable()){
|
|
errorobj.name = objectName;
|
|
}
|
|
|
|
//Object Contact then modified Shopify's External ID
|
|
|
|
|
|
if(theField != null ){
|
|
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__Important_Field__c','HIC_ShopifySync__Error_Message__c'))
|
|
errorobj.HIC_ShopifySync__Important_Field__c = String.valueOf(objectList[index].get(theField));
|
|
}
|
|
|
|
if(CheckAccessibility.isUpdateable('HIC_ShopifySync__shopify_id__c','HIC_ShopifySync__Error_Message__c') && Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c').getDescribe().isCreateable()){
|
|
errorobj.HIC_ShopifySync__shopify_id__c = string.valueof(objectList[index].get(externalIdField)+isbatch);
|
|
}
|
|
|
|
if(CheckAccessibility.isUpdateable('HIC_ShopifySync__error_id__c','HIC_ShopifySync__Error_Message__c') && Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c').getDescribe().isCreateable()){
|
|
errorobj.HIC_ShopifySync__error_id__c = string.valueof(objectName+objectList[index].get(externalIdField)+isbatch);
|
|
}
|
|
|
|
|
|
if(CheckAccessibility.isUpdateable('HIC_ShopifySync__delivered__c','HIC_ShopifySync__Error_Message__c') && Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c').getDescribe().isCreateable()) {
|
|
errorobj.HIC_ShopifySync__delivered__c = false;
|
|
}
|
|
|
|
//Get Error message
|
|
string errorMsg = '';
|
|
for(Database.Error error : updateResult[index].getErrors()){
|
|
if(error.getFields() != null && !error.getFields().isEmpty()){
|
|
errorMsg += String.join(error.getFields(), ' ') + ' | ' + error.getMessage() + ',';
|
|
}else{
|
|
errorMsg += error.getMessage() + ',';
|
|
}
|
|
}
|
|
|
|
sObjectType schemaType = Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c') ;
|
|
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
|
|
if(CheckAccessibility.isUpdateable('HIC_ShopifySync__message__c','HIC_ShopifySync__Error_Message__c') && Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c').getDescribe().isCreateable()){
|
|
errorobj.HIC_ShopifySync__message__c = errorMsg.removeEnd(',');
|
|
}
|
|
errorobj.HIC_ShopifySync__Iswebhook__c = Iswebhook;
|
|
|
|
if(!errorobj.HIC_ShopifySync__message__c.containsIgnoreCase('duplicate value found: HIC_ShopifySync__Shopify_Id__c duplicates value on record with id') && !errorobj.HIC_ShopifySync__message__c.containsIgnoreCase('unable to obtain exclusive access to this record')){
|
|
listoferrors.add(errorobj);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Upsert Error Messagge records
|
|
if(!listoferrors.isEmpty()){
|
|
|
|
if(Schema.sObjectType.HIC_ShopifySync__Error_Message__c.isAccessible() && Schema.sObjectType.HIC_ShopifySync__Error_Message__c.isCreateable()){
|
|
Schema.SObjectType objectType1 = Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c');
|
|
Map<String, SObjectField> fieldMap1 = objectType1.getDescribe().fields.getMap();
|
|
Schema.SobjectField theField1 = fieldMap1.get('HIC_ShopifySync__Error_id__c');
|
|
|
|
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__Error_id__c','HIC_ShopifySync__Error_Message__c') && Schema.getGlobalDescribe().get('HIC_ShopifySync__Error_Message__c').getDescribe().isCreateable()){
|
|
database.upsert(listoferrors, theField1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |