function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
carramrod81carramrod81 

building on leadDuplicatePreventer

    I'm using the leadDuplicatePreventer example in the cookbook to prevent a user from duplicating a product/serial number in assets. I've gotten it to work with only checking for unique serial number, but i'm stuck on getting it to check the Product2Id field as well. Could use a helping hand :)

trigger assetPreventDuplicateSerial on Asset (before insert, before update) {
    Map<String, Asset> assetMap = new Map< String, Asset>();
    for(Asset asset : System.Trigger.new){
    if((asset.SerialNumber != null) &&
        (System.Trigger.isInsert || (asset.SerialNumber != System.Trigger.oldMap.get(asset.id).SerialNumber))) {
            if (assetMap.containsKey(asset.SerialNumber) && assetMap.containsKey(asset.Product2ID)){
                asset.SerialNumber.addError('Another Asset has the same serial number');
            }
            else{
                assetMap.put(asset.SerialNumber,asset);
            }
        }
    }
   
    for(Asset asset : [SELECT SerialNumber FROM Asset
                        WHERE SerialNumber IN :assetMap.KeySet() AND
                        Asset.Product2Id IN :assetMap.KeySet()]) {
                            Asset newAsset = assetMap.get(asset.SerialNumber);
                            newAsset.SerialNumber.addError('An asset with this serial number already exists.');
                        }
       
   
}
XmikeXmike
Did you ever get a resolution for this? I do not know enough about the code to help debug, but would love to add the same functionality. If you happen to have working code, please post.