Trendsic Platform Service

<back to all web services

EstimateRevisionCompareRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
GET,OPTIONS/v1/Rfp/{RfpDocumentUID}/Estimate/Revisions/{RevisionA}/Compare/{RevisionB}

export class RevisionLineDelta
{
    public ItemNo: string;
    public Description: string;
    public Unit: string;
    public Change: string;
    public QuantityA?: number;
    public QuantityB?: number;
    public UnitPriceA?: number;
    public UnitPriceB?: number;
    public ExtensionA: number;
    public ExtensionB: number;
    public QuantityDelta: number;
    public UnitPriceDelta: number;
    public ExtensionDelta: number;

    public constructor(init?: Partial<RevisionLineDelta>) { (Object as any).assign(this, init); }
}

export class TaskDiff
{
    public TaskName: string;
    public PositionsAdded: string[] = [];
    public PositionsRemoved: string[] = [];
    public PositionsStaffed: string[] = [];
    public EquipmentAdded: number[] = [];
    public EquipmentRemoved: number[] = [];
    public MaterialsAdded: number[] = [];
    public MaterialsRemoved: number[] = [];
    public HasChanges: boolean;

    public constructor(init?: Partial<TaskDiff>) { (Object as any).assign(this, init); }
}

export class ProposalDiff
{
    public TasksAdded: string[] = [];
    public TasksRemoved: string[] = [];
    public Tasks: TaskDiff[] = [];
    public HasChanges: boolean;

    public constructor(init?: Partial<ProposalDiff>) { (Object as any).assign(this, init); }
}

export class EstimateRevisionCompareResult
{
    public RevisionA: number;
    public RevisionB: number;
    public LabelA: string;
    public LabelB: string;
    public TotalA: number;
    public TotalB: number;
    public TotalDelta: number;
    public BidTotalA: number;
    public BidTotalB: number;
    public Added: number;
    public Removed: number;
    public Changed: number;
    public Unchanged: number;
    public Lines: RevisionLineDelta[] = [];
    public Scope: ProposalDiff;
    public Summary: string;

    public constructor(init?: Partial<EstimateRevisionCompareResult>) { (Object as any).assign(this, init); }
}

export class EstimateRevisionCompareResponse
{
    public ResponseStatus: ResponseStatus;
    public Compare: EstimateRevisionCompareResult;

    public constructor(init?: Partial<EstimateRevisionCompareResponse>) { (Object as any).assign(this, init); }
}

export class EstimateRevisionCompareRequest
{
    public RfpDocumentUID: string;
    public RevisionA: number;
    public RevisionB: number;

    public constructor(init?: Partial<EstimateRevisionCompareRequest>) { (Object as any).assign(this, init); }
}

TypeScript EstimateRevisionCompareRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /v1/Rfp/{RfpDocumentUID}/Estimate/Revisions/{RevisionA}/Compare/{RevisionB} HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	},
	Compare: 
	{
		RevisionA: 0,
		RevisionB: 0,
		LabelA: String,
		LabelB: String,
		TotalA: 0,
		TotalB: 0,
		TotalDelta: 0,
		BidTotalA: 0,
		BidTotalB: 0,
		Added: 0,
		Removed: 0,
		Changed: 0,
		Unchanged: 0,
		Lines: 
		[
			{
				ItemNo: String,
				Description: String,
				Unit: String,
				Change: String,
				QuantityA: 0,
				QuantityB: 0,
				UnitPriceA: 0,
				UnitPriceB: 0,
				ExtensionA: 0,
				ExtensionB: 0,
				QuantityDelta: 0,
				UnitPriceDelta: 0,
				ExtensionDelta: 0
			}
		],
		Scope: 
		{
			TasksAdded: 
			[
				String
			],
			TasksRemoved: 
			[
				String
			],
			Tasks: 
			[
				{
					TaskName: String,
					PositionsAdded: 
					[
						String
					],
					PositionsRemoved: 
					[
						String
					],
					PositionsStaffed: 
					[
						String
					],
					EquipmentAdded: 
					[
						0
					],
					EquipmentRemoved: 
					[
						0
					],
					MaterialsAdded: 
					[
						0
					],
					MaterialsRemoved: 
					[
						0
					],
					HasChanges: True
				}
			],
			HasChanges: True
		},
		Summary: String
	}
}