I'd like to filter the available child record types a user can create based on the parent record type, any ideas?
One possible alternative is to override the new record creation of the child object with a Visualforce page, and use whatever logic you want to enforce the record type. I suppose the end user will be happy too.
Like the others mentioned a validation rule could work, but it may be a bit ugly from the end user perspective, since its not really the user's fault that he/she was allowed to choose that option.
As techtrekker mentioned, I'd suggest creating a validation rule. I'm not aware of a way to filter immediately and would be interested to know if there's a better solution.
As a quick test I created a validation rule on the child object, similar to the following:
Parent__r.RecordTypeId == '012E00000001lBA' && RecordTypeId != '012E00000001lB5'
In this example, if the child record type's Id is not equal to '012E00000001lB5' when the parent record type Id is '012E00000001lBA', the child record fails to save.
If you're going to be using this validation rule in multiple org's, a better way may be to create a formula field on both the parent and child objects that reference the record's RecordType.Name. Then you could adjust your validation rule to something like this:
Parent__r.RecordTypeName__c == 'Parent Record Type' && (RecordTypeName__c != 'Child Record Type Allowed A' || RecordTypeName__c != 'Child Record Type Allowed B')