You need to sign in to do that
Don't have an account?
Need to add Line Number to this object when created. (cannot be one that already exists).
I need to add a number to the Contract_Line__c record that is created in the trigger below.
It cannot be the same number (cl.Line_No__c) as another Contract_Line__c record that is associated with the same Contract_Header__c record that this new one that is created is associated with.
It needs to start with 1 - and then go from there.
Example:
Each Contract_Line__c record created is also associated with a Contract_Header__c record - which is inherited from the Asset record.
If I create one Contract_Line__c record, and it has Contract_Line__c.Line_No__c = '1' - and it's associated with Contract_Header__c record 'XXX1'
The next Contract_Line__c record that is created (and associated with Contract_Header__c record 'XXX1') should then have a Contract_Line__c.Line_No__c = '2'
and so on...
Further:
When a Contract_Line__c record then has an End Date (Contract_Line__c.End_Date__c = Today or before), it should be removed from this sequence - and all other Contract_Line__c.Line_No__c should be updated with new numbers starting at the number 1.
Can I do that?
Does that make sense?
Thanks for any help.
trigger Asset on Asset (after update) { List <Contract_Line__c> contractLines = new List <Contract_Line__c> (); Map <Id, Asset> oldmap = new Map <Id, Asset>(); Map <Id, Asset> newmap = new Map <Id, Asset>(); //System.debug('Chris in trigger'); if(Constants.ASSET_FIRST_RUN == False){ }else for(Asset a: Trigger.new) { //System.debug('Chris in asset loop') if ((Trigger.oldMap.get(a.Id).Status != Trigger.newMap.get(a.Id).Status) && Trigger.newMap.get(a.Id).Status == 'Active') { //System.debug('Chris in status changed'); Contract_Line__c cl = new Contract_Line__c (); cl.Asset__c = a.Id; cl.Line_No__c = //need to add new number for the Line Number (cl.Line__c) on Contract Line //but make sure it's not the same number as one that was already existing for this Contract_Header__c //System.debug('Chris creating new contract line and adding to list'); contractLines.add(cl); } Constants.ASSET_FIRST_RUN = False; } if(contractLines.size()>0) { //System.debug('Chris has values to insert = '+ contractLines.size()); try { insert contractLines; } catch (System.Dmlexception e) { system.debug (e); } } }
Question: Why don't you make this field an Auto-Number field? Seems like Auto-Number would be better suited for this use case based on limited information below. This would auto-increment the field in a format you choose.
Have you looked at using Auto-Number Field?
I thought about that, but the only problem is that each Contract_Header__c record that these Contract_Line__c records are associated with are unique.
Each Contract Line needs to start with 1, instead of just becoming the next line in a sequence of Contract_Line__c records.
:)
Is there another way to do this with the AutoNumber field?