We have a situation where we want to suport a marketplace where partners join and place products which other partners consume. This means a partner P1 puts a product PD1 and another partner P2 subscribes to it. This can happen in a m to n situation. A partner can provide multiple products and each products can be subscribed by multiple partners.
Now we want to create an invoice for a partner who subscribed to multple products provided by multiple different partners. We want to group the invoice items per providing partners.
Partner_A consumed ProductX which is provided by Partner_B
Partner_A consumed ProductY which is provided by Partner_B
PArtner_A consumed ProductZ which is provided by Partner_C
@MM this is an interesting idea and something we have been contemplating as well. We dont have partner to partner sales but we do have a marketplace category of products that are offered by various "Vendors" and can be sold to customers.
We have modeled this by having the products in Zuora with a custom field called 'Vendor ID' which has each vendors unique identifier. This allows us to group products by vendor if needed.
Now the part we have not done and the part that is a bit more complex is actually showing this on the Invoice. Since invoices cannot currently show custom fields from products you would need to write a small amount of external integration to make this work. Essentially the workflow you would need to follow is:
1. Invoice is created
2. A callout is made to your integration when an invoice is created
3. The code your callout hits, will look at the invoice items on the invoice and lookup the product and vendor information and copy those details to custom fields on the Invoice Item objects.
4. Your Invoice template would use the custom fields on the invoice item to separate and group the products by vendor.
This would also be a great use case to support an ehnahcement to the Invoice template format to allow nested lookups like we have in the Quotes template system. ( @nharlow is this still your area? ). Essentially in Quotes you can do things like QuoteSummary.Product__c.A_Product_Custom_Field. What would be equally nice is on an invoice being able to do InvoiceItem.Product.Product_Custom_Field__c which would allow you to group by product level attributes for a given invoice item.