modeling advice for table which may have 2 father tables
I would Simply add a receipt_id to the collection and payment table.

This is a better design (objectively normalised) that allows your model to grow should your requirements change

This would solve the problem for your document model also - activity, reciept, project would contain a document_id, and you could expand your model to include any number of tables containing a document_id.

If you need to differentiate between documents stored in the table itself, you could add a document_type to make that distinction.