Currently it is possible to define multiple print formats per different business case for one doctype, but only one default print format can be set per doctype, ever time after user clicked print button from form view and system jumped to print preview screen, he/she need to manually select the print format from available print format dropdown list, which is tedious and not user friendly.
SAP uses multi mapping tables(selected key fields from document, mapped to the target print format) to auto assign the print out format per document content.
Proposed solution
Design
add 2 fields to print format doctype: condition(python code) and priority
I implemented this proposed feature in my own app for frappe/erpnext version 13. here I would like to know whether there is enough requirements from the community members.
based on the feedback from community I will create pull request accordingly.
ERPNext already has a similar functionality. For example, if you generate a POS Invoice from Sales Invoice doctype, the print format defaults to POS one. I believe it works by setting the value of Print Format field in the Print Setting section in Sales Invoice using a client script.