Despite how much I typed; this is really a very small patch.
This patch adds a new entity "SupplierRel" which is a sub-class of "PartyRelationship" (as well as a view-entity for convenience). It provides a new field "accountNumber" that can be used to store the long-term account number assigned to the relationship between the Company and its Supplier. The life of this account number is longer than any agreement between the two, so it has been put on this informal relationship. Moreover, it is possible to have an informal relationship between a company and a supplier with out an explicit binding agreement – this was discussed most recently in this thread:
ALSO – this patch fixes two problems that I encountered when attempting to create a party relationship.
a) It did not look right to have an empty dropdown for status – I created the standard "Created" status under the PARTY_REL_STATUS type so that we show the only applicable status. There does not appear to be any specific logic looking for party relationships with a blank status, so creating ones with this status should not cause any issues.
b) When creating the PartyRelationship the response in the controller was of type "view-last" which was a problem because the last controller request was typically the ajax one to "FindPartyName" which was used as part of the party lookup field in that form. The net result, was that on success it would render the PartyName instead of replaying the EditPartyRelationships. Changed form "view-last" to "view" to resolve this issue.