3 * An interface for all customers
5 * @author Roland Haeder <roland __NOSPAM__ [at] __REMOVE_ME__ mxchange [dot] org>
8 interface Customer extends FrameworkInterface {
10 * Adds a contract to the customer's list
12 * @param $contractInstance A valid instance to WorksContract
15 function addNewWorksContract (SignableContract $contractInstance);
18 * Signs a works contract.
20 * @param $contractInstance A valid instance to WorksContract
21 * @param $partnerInstance An instance the other
24 * @throws NullPointerException If an instance variable
26 * @throws NoObjectException If an instance variable
28 * @throws MissingMethodException If a required method was
29 * not found in $contractInstance
30 * @throws InvalidContractPartnerException If the in $contractInstance
31 * set contract partner is
34 function signContract (SignableContract $contractInstance, ContractPartner $partnerInstance);
37 * Withdraw from a signed contract
39 * @param $contractInstance A valid instance to WorksContract
42 function withdrawFromContract (SignableContract $contractInstance);