...
1. Data Object Class
The entity's DO class must implement ICRMDOApprovalEntity interface and its twelve methods:
...
Ui expand |
---|
title | Approval Authorised Users |
---|
|
Code Block |
---|
language | java |
---|
title | CUSTOMCRMDORental |
---|
collapse | true |
---|
| ppublic class CUSTOMCRMDORental extends CRMDO implements ICRMDOApprovalEntity{
private CUSTOMCRMDORentalType type;
private CUSTOMRentalState state;
private CRMDOAccountReceivable accountReceivable;
private Date effectiveDate;
private Date expirationDate;
private Integer numberOfPendingAprovals;
private Integer isPendingAproval;
private Integer canBeApproved;
private Set<CRMDOUser> usersAuthorisedToRespond;
private Set<CRMDOApprovalRequest> approvalRequests;
private Set<CUSTOMCRMDORentalItem> items;
public CUSTOMRentalState getState() {
return state;
}
public void setState(CUSTOMRentalState state) {
setChange("state", this.state, state);
this.state = state;
}
public CRMDOAccountReceivable getAccountReceivable() {
return accountReceivable;
}
public void setAccountReceivable(CRMDOAccountReceivable accountReceivable) {
setChange("accountReceivable", this.accountReceivable, accountReceivable);
this.accountReceivable = accountReceivable;
}
public Date getEffectiveDate() {
return effectiveDate;
}
public void setEffectiveDate(Date effectiveDate) {
setChange("effectiveDate", this.effectiveDate, effectiveDate);
this.effectiveDate = effectiveDate;
}
public Date getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(Date expirationDate) {
setChange("expirationDate", this.expirationDate, expirationDate);
this.expirationDate = expirationDate;
}
public Set<CUSTOMCRMDORentalItem> getItems() {
return items;
}
public void setItems(Set<CUSTOMCRMDORentalItem> items) {
setChange("items", this.items, items);
this.items = items;
}
public CUSTOMCRMDORentalType getType() {
return type;
}
public void setType(CUSTOMCRMDORentalType type) {
setChange("type", this.type, type);
this.type = type;
}
@Override
public Integer getIsPendingAproval() {
return isPendingAproval;
}
@Override
public void setIsPendingAproval(Integer isPendingAproval) {
this.isPendingAproval = isPendingAproval;
}
@Override
public Boolean isPendingAproval() {
return ((this.isPendingAproval!=null && this.isPendingAproval.equals(new Integer(1))) ? true : false);
}
@Override
public Integer getCanBeApproved() {
return canBeApproved;
}
@Override
public void setCanBeApproved(Integer canBeApproved) {
this.canBeApproved = canBeApproved;
}
@Override
public Boolean canBeApproved() {
return ((this.canBeApproved!=null && this.canBeApproved.equals(new Integer(1))) ? true : false);
}
@Override
public Set<CRMDOUser> getUsersAuthorisedToRespond() {
return usersAuthorisedToRespond;
}
@Override
public void setUsersAuthorisedToRespond(Set<CRMDOUser> usersAuthorisedToRespond) {
this.usersAuthorisedToRespond = usersAuthorisedToRespond;
}
@Override
public Set<CRMDOApprovalRequest> getApprovalRequests() {
return approvalRequests;
}
@Override
public void setApprovalRequests(Set<CRMDOApprovalRequest> approvalRequests) {
this.approvalRequests=approvalRequests;
}
@Override
public Integer getNumberOfPendingAprovals() {
return numberOfPendingAprovals;
}
@Override
public void setNumberOfPendingAprovals(Integer numberOfPendingAprovals) {
setChange("numberOfPendingAprovals", this.numberOfPendingAprovals , numberOfPendingAprovals);
this.numberOfPendingAprovals = numberOfPendingAprovals;
}
}
|
Note that Assigned To User and Users Belonging to Assigned to Unit option options will only be available if the entity is an Assignable Entity (its DO class implements ICRMDOAssignableEntity interface). |
2. Entities Metadata File
In entities metadata file, <approvalincluded> tag's value must be set to true. Keep in mind that <approvalincluded> default value is false.
Ui expand |
---|
title | Audit Trail Approval Entities |
---|
|
Code Block |
---|
language | xml |
---|
title | entities.xml |
---|
collapse | true |
---|
| <entities>
<entity>
<id>CUSTOMRENTALS</id>
<name>key_rental</name>
<tablename>TRN_RENTALS</tablename>
<classname>com.crm.dataobject.rentals.CUSTOMCRMDORental</classname>
<moduleid>CUSTOM_RENTALS</moduleid>
<metadatafile>rentals</metadatafile>
<approvalincluded>true</approvalincluded>
</entity>
...
</entities> |
|
Note that approvals are triggered only through Workflow Rules, and therefore there is no point for an entity to be an Approval Entity without being a Workflow Rule Entity.