For hub installation, we need to represent relationships between Quandis clients ("Service Providers"), their clients ("Clients"), and their vendors ("Vendors"). For example:
Ultimately, these relationships are defined in the business world by legal contracts. Thus, QBO 3 introduces the Contract and ContractProduct tables to help map these real-world relationships.
A Contract row represents a relationship between two entities
Represents a product or service covered by a Contract.
The ContractProduct table is a child of the Contract table, and defines what products are covered by a Contract. For example, Service Provider A may offer these products:
However, when negotiating their contract with Chase, they may be unable to reach agreement on a price for Appraisals. Thus, Chase will be allowed to order BPO - Interior and BPO- Exterior, but not Appraisal. This is mapped by creating two ContractProduct rows, one each for BPO - Interior and BPO - Exterior.
These classes are part of the QBO 3 qbo.Process and qbo.ProcessWeb projects, but the data components (tables and foreign keys) are in source control under the QBO 2.0 qbo.Database.Process project.