PwsContractLineItemDetail

Overview


This structure contains the complete set of information about a contract line item. The structure is used both to retrieve detailed contract line item information and to pass information about a contract line item back to the server to get updated.

Format


PwsContractLineItemDetail
  • PwsContractLineItemDetail
    • ContractLineItemCode: String (27)
    • ContractLineItemId: Int32
    • ContractLineItemUid: Int64
    • ContractLineItemName: String (255)
    • EngagementIdentity: PwsEngagementRef
    • CostContractTerms: String (1)
    • DeferredRevenueOpeningBalanceEngCurrency: Double
    • DeferredRevenueOpeningBalanceEngGLCurrency: Double
    • HoldbackAmount: Double
    • HoldbackPercent: Double
    • HoldbackType: String (1)
    • MaxCostContractAmount: Double
    • MaxTimeContractAmount: Double
    • MinCostContractAmount: Double
    • MinTimeContractAmount: Double
    • RevenueEarnedByDate: DateTime
    • RevenueRecognitionMethod: String (1)
    • RevenueSchedule: PwsRevenueScheduleItem[]
    • TimeContractTerms: String (1)
    • ContractTypeIdentity: PwsContractTypeRef
    • InheritPurchaseOrderNumberFlag: Boolean
    • ModelContractedHoursAndOveragesFlag: Boolean
    • OverageProjectIdentity: PwsProjectRef
    • PurchaseOrderNumber: String (50)
    • Timestamp: String

Elements


Element

Data Type

Required?

Default

Description

Sample Data

ContractLineItemCode

String (27)

One of ContractLineItemCode or ContractLineItemUid is required

Note: The ContractLineItemCode does not have to be supplied if the installation is configured to use manual contract line item numbering)


The contract line item code is a unique identifier for a contract line item

P001163-CL1


ContractLineItemId

Int32

No


The contract line item id is a unique identifier for a contract line item. For internal use only


ContractLineItemUid

Int64

On Insert: No

On Update: Yes (if ContractLineItemCode is not supplied)


A unique and immutable Id for a contract line item

1152921504607049238

ContractLineItemName

String (255)

On Insert: Yes

On Update: No


The contract line item name 

Contract 192810

EngagementIdentity

PwsEngagementRef

On Insert: No

On Update: No


The engagement associated with the contract line item


CostContractTerms

String (1)

On Insert: No

On Update: No


The cost contract terms associated with the contract line item:

"F" for Fixed Price

"T" for Time and Materials

"C" for Time and Materials with a cap (Not to Exceed NO Hard Cap)

"H" for Not To Exceed with Hard Cap

"N" for Non-chargeable

Null on update means leave as is 

T

DeferredRevenueOpeningBalanceEngCurrency

Double

On Insert: No

On Update: No

0

The deferred revenue opening balance associated with the contract line item (in the engagement currency) 

0

DeferredRevenueOpeningBalanceEngGLCurrency

Double

On Insert: No

On Update: No

0

The deferred revenue opening balance associated with the contract line item (in the general ledger currency) 

0

HoldbackAmount

Double

On Insert: No

On Update: No


The holdback amount associated with the contract line item. Applies only when holdback type is A; null otherwise. 


HoldbackPercent

Double

On Insert: No

On Update: No


The holdback percent associated with the contract line item. Applies only when holdback type is P; null otherwise.


HoldbackType

String

On Insert: No

On Update: No

N

The holdback type associated with the contract line item

"N" for none

"A" for Amount

"P" for Percent 

N

MaxCostContractAmount

Double

On Insert: No

On Update: No


The maximum cost contract amount associated with the contract line item

Must be specified for cost contract terms F or C, and null otherwise


MaxTimeContractAmount

Double

On Insert: No

On Update: No


The maximum time contract amount associated with the contract line item

Must be specified for time contract terms F or C, and null otherwise


MinCostContractAmount

Double

On Insert: No

On Update: No


The minimum cost contract amount associated with the contract line item

Must be specified for cost contract terms F or C, and null otherwise


MinTimeContractAmount

Double

On Insert: No

On Update: No


The minimum time contract amount associated with the contract line item

Must be specified for time contract terms F, and null otherwise


RevenueEarnedByDate

DateTime

On Insert: No

On Update: No


This is a date (in midnight UTC) by which the contract line item is expected to be complete.


RevenueRecognitionMethod

String (1)

On Insert: No

On Update: No

P

The revenue recognition method associated with the contract line item. The RevenueRecognitionMethod will be NULL unless it is a fixed price for time contract. Otherwise will be P or R.

"P" for percent complete

"R" for revenue schedule

P

RevenueSchedule

PwsRevenueScheduleItem[]

On Insert: No

On Update: No


The information associated with the revenue and/or contracted hours schedule associated with the contract line item. Applies only when the RevenueRecogntionMethod = 'R'.


TimeContractTerms

String (1)

On Insert: Yes (if ContractTypeIdentity is not supplied)

On Update: No

T

The time contract terms associated with the contract line item

"T" for Time & Materials

"F" for Fixed Price

"C" for Not to Exceed

T

ContractTypeIdentity

PwsContractTypeRef

On Insert: Yes (if TimeContractTerms is not supplied)

On Update: No


The contract type identity associated with the contract line item. For custom contract line items, this will be NULL.


InheritPurchaseOrderNumberFlag

Boolean

On Insert: No

On Update: No

true

If set to 'true', the purchase order number is inherited from the parent client (if any). Please see Inheritance for more information. 

true/false

ModelContractedHoursAndOveragesFlag

Boolean

On Insert: No

On Update: No

Dependent on ContractTypeIdentity, if a ContractTypeIdentity is not supplied the default is false

When set to 'true', the contract will be modeled to account for contracted hours and overages. This setting is typically used when setting up service contracts where a client purchases a fixed amount of hours for a specific time period. Time that exceeds the allottment is then billed at a different rate. This overage is handled by a separate project. Only available for Fixed Price time contracts using a revenue schedule. 

true/false

OverageProjectIdentity

PwsProjectRef

On Insert: No

On Update: No


For contract line items that are defined to model contracted hours and overages, this is the project to which hours that exceed a set number within a date range will be transferred.


PurchaseOrderNumber

String (50)

On Insert: No

On Update: No


The purchase order number associated with the contract line item


TimestampString

On Insert: No

On Update: No


This is an optimistic locking timestamp that, if provided on update request, will cause the request to fail when the timestamp stored in the database does not match the provided value.

Usage Example(s)


Simple Insert
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pws="http://projectorpsa.com/PwsProjectorServices/" xmlns:req="http://projectorpsa.com/DataContracts/Requests/" xmlns:sch="http://projectorpsa.com/DataContracts/Shared/Scheduling/" xmlns:com="http://projectorpsa.com/DataContracts/Shared/Common/">
   <soapenv:Header/>
   <soapenv:Body>
      <pws:PwsSaveContractLineItem>
         <pws:serviceRequest>
            <req:RequestId>1</req:RequestId>
            <req:SessionTicket>AQjGXNV/cmNJJg8Zok3S4Q==</req:SessionTicket>
            <sch:ContractLineItem>
               <com:ContractLineItemName>PD-2001D</com:ContractLineItemName>
               <com:EngagementIdentity>
                  <com:EngagementCode>01312024E001001</com:EngagementCode>
               </com:EngagementIdentity>
               <com:CostContractTerms>T</com:CostContractTerms>
               <com:TimeContractTerms>T</com:TimeContractTerms>
               <com:InheritPurchaseOrderNumberFlag>false</com:InheritPurchaseOrderNumberFlag>
               <com:ModelContractedHoursAndOveragesFlag>false</com:ModelContractedHoursAndOveragesFlag>
               <com:PurchaseOrderNumber>SOAP UI</com:PurchaseOrderNumber>
            </sch:ContractLineItem>
            <sch:EngagementCurrencyIdentity>
               <com:CurrencyCode>USD</com:CurrencyCode>
            </sch:EngagementCurrencyIdentity>
            <sch:StealLockFlag>false</sch:StealLockFlag>
            <sch:ContractTypeClearFlag>false</sch:ContractTypeClearFlag>
            <sch:OverageProjectClearFlag>false</sch:OverageProjectClearFlag>
            <sch:FullDetailFlag>true</sch:FullDetailFlag>
            <sch:RevalueAction>R</sch:RevalueAction>
            <sch:RevenueScheduleClearFlag>false</sch:RevenueScheduleClearFlag>
         </pws:serviceRequest>
      </pws:PwsSaveContractLineItem>
   </soapenv:Body>
</soapenv:Envelope>


Example 01 - CLI without a revenue schedule
                         <b:ContractLineItemDetail>
                           <b:ContractLineItemCode>P001163-CL1</b:ContractLineItemCode>
                           <b:ContractLineItemId i:nil="true"/>
                           <b:ContractLineItemUid>1152921504607049238</b:ContractLineItemUid>
                           <b:ContractLineItemName>Contract 192810</b:ContractLineItemName>
                           <b:EngagementIdentity>
                              <b:EngagementCode>P001163</b:EngagementCode>
                              <b:EngagementId i:nil="true"/>
                              <b:EngagementUid>1152921504607293498</b:EngagementUid>
                           </b:EngagementIdentity>
                           <b:CostContractTerms>T</b:CostContractTerms>
                           <b:DeferredRevenueOpeningBalanceEngCurrency>0</b:DeferredRevenueOpeningBalanceEngCurrency>
                           <b:DeferredRevenueOpeningBalanceEngGLCurrency>0</b:DeferredRevenueOpeningBalanceEngGLCurrency>
                           <b:HoldbackAmount i:nil="true"/>
                           <b:HoldbackPercent i:nil="true"/>
                           <b:HoldbackType>N</b:HoldbackType>
                           <b:MaxCostContractAmount i:nil="true"/>
                           <b:MaxTimeContractAmount i:nil="true"/>
                           <b:MinCostContractAmount i:nil="true"/>
                           <b:MinTimeContractAmount i:nil="true"/>
                           <b:RevenueEarnedByDate i:nil="true"/>
                           <b:RevenueRecognitionMethod>P</b:RevenueRecognitionMethod>
                           <b:RevenueSchedule/>
                           <b:TimeContractTerms>T</b:TimeContractTerms>
                           <b:ContractTypeIdentity i:nil="true"/>
                           <b:InheritPurchaseOrderNumberFlag>true</b:InheritPurchaseOrderNumberFlag>
                           <b:ModelContractedHoursAndOveragesFlag>false</b:ModelContractedHoursAndOveragesFlag>
                           <b:OverageProjectIdentity i:nil="true"/>
                           <b:PurchaseOrderNumber i:nil="true"/>
                        </b:ContractLineItemDetail>
Example 02 - CLI with a revenue schedule
                         <b:ContractLineItemDetail>
                           <b:ContractLineItemCode>P001320-CL1</b:ContractLineItemCode>
                           <b:ContractLineItemId i:nil="true"/>
                           <b:ContractLineItemUid>1152921504607083461</b:ContractLineItemUid>
                           <b:ContractLineItemName>Web Services Documentation</b:ContractLineItemName>
                           <b:EngagementIdentity>
                              <b:EngagementCode>P001320</b:EngagementCode>
                              <b:EngagementId i:nil="true"/>
                              <b:EngagementUid>1152921504607326368</b:EngagementUid>
                           </b:EngagementIdentity>
                           <b:CostContractTerms>T</b:CostContractTerms>
                           <b:DeferredRevenueOpeningBalanceEngCurrency>0</b:DeferredRevenueOpeningBalanceEngCurrency>
                           <b:DeferredRevenueOpeningBalanceEngGLCurrency>0</b:DeferredRevenueOpeningBalanceEngGLCurrency>
                           <b:HoldbackAmount i:nil="true"/>
                           <b:HoldbackPercent i:nil="true"/>
                           <b:HoldbackType>N</b:HoldbackType>
                           <b:MaxCostContractAmount i:nil="true"/>
                           <b:MaxTimeContractAmount>30000</b:MaxTimeContractAmount>
                           <b:MinCostContractAmount i:nil="true"/>
                           <b:MinTimeContractAmount>30000</b:MinTimeContractAmount>
                           <b:RevenueEarnedByDate i:nil="true"/>
                           <b:RevenueRecognitionMethod>R</b:RevenueRecognitionMethod>
                           <b:RevenueSchedule>
                              <b:PwsRevenueScheduleItem>
                                 <b:EndDate>2018-01-31T00:00:00Z</b:EndDate>
                                 <b:ScheduledRevenueAmount>10000</b:ScheduledRevenueAmount>
                                 <b:StartDate i:nil="true"/>
                                 <b:ContractedMinutes i:nil="true"/>
                                 <b:Notes>January Bucket</b:Notes>
                              </b:PwsRevenueScheduleItem>
                              <b:PwsRevenueScheduleItem>
                                 <b:EndDate>2018-02-28T00:00:00Z</b:EndDate>
                                 <b:ScheduledRevenueAmount>10000</b:ScheduledRevenueAmount>
                                 <b:StartDate>2018-02-01T00:00:00Z</b:StartDate>
                                 <b:ContractedMinutes i:nil="true"/>
                                 <b:Notes>February Bucket</b:Notes>
                              </b:PwsRevenueScheduleItem>
                              <b:PwsRevenueScheduleItem>
                                 <b:EndDate>2018-03-31T00:00:00Z</b:EndDate>
                                 <b:ScheduledRevenueAmount>10000</b:ScheduledRevenueAmount>
                                 <b:StartDate>2018-03-01T00:00:00Z</b:StartDate>
                                 <b:ContractedMinutes i:nil="true"/>
                                 <b:Notes>March Bucket</b:Notes>
                              </b:PwsRevenueScheduleItem>
                           </b:RevenueSchedule>
                           <b:TimeContractTerms>F</b:TimeContractTerms>
                           <b:ContractTypeIdentity i:nil="true"/>
                           <b:InheritPurchaseOrderNumberFlag>true</b:InheritPurchaseOrderNumberFlag>
                           <b:ModelContractedHoursAndOveragesFlag>false</b:ModelContractedHoursAndOveragesFlag>
                           <b:OverageProjectIdentity i:nil="true"/>
                           <b:PurchaseOrderNumber>P-001</b:PurchaseOrderNumber>
                        </b:ContractLineItemDetail>
Example 03 - CLI modeled with contracted hours and overage
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pws="http://projectorpsa.com/PwsProjectorServices/" xmlns:req="http://projectorpsa.com/DataContracts/Requests/" xmlns:sch="http://projectorpsa.com/DataContracts/Shared/Scheduling/" xmlns:com="http://projectorpsa.com/DataContracts/Shared/Common/">
   <soapenv:Header/>
   <soapenv:Body>
      <pws:PwsSaveContractLineItem>
         <pws:serviceRequest>
            <req:RequestId>1</req:RequestId>
            <req:SessionTicket>AdDMw48w49OxnEUPGUuMSw==</req:SessionTicket>
            <sch:ContractLineItem>
               <com:ContractLineItemName>Service Contract A</com:ContractLineItemName>
               <com:EngagementIdentity>
                  <com:EngagementCode>P001320</com:EngagementCode>
               </com:EngagementIdentity>
               <com:MaxTimeContractAmount>50000</com:MaxTimeContractAmount>
               <com:MinTimeContractAmount>50000</com:MinTimeContractAmount>
               <com:RevenueSchedule>
                  <com:PwsRevenueScheduleItem>
                     <com:EndDate>2018-01-31T00:00:00.000Z</com:EndDate>
                     <com:ScheduledRevenueAmount>25000</com:ScheduledRevenueAmount>
                     <com:ContractedMinutes>2400</com:ContractedMinutes>
                     <com:Notes>January Contract</com:Notes>
                  </com:PwsRevenueScheduleItem>
                  <com:PwsRevenueScheduleItem>
                     <com:EndDate>2018-02-28T00:00:00.000Z</com:EndDate>
                     <com:ScheduledRevenueAmount>25000</com:ScheduledRevenueAmount>
                     <com:StartDate>2018-02-01T00:00:00.000Z</com:StartDate>
                     <com:ContractedMinutes>2400</com:ContractedMinutes>
                     <com:Notes>February Contract</com:Notes>
                  </com:PwsRevenueScheduleItem>
               </com:RevenueSchedule>
               <com:ContractTypeIdentity>
                  <com:ContractTypeName>Contract Type - Revenue Schedule</com:ContractTypeName>
               </com:ContractTypeIdentity>
               <com:InheritPurchaseOrderNumberFlag>false</com:InheritPurchaseOrderNumberFlag>
               <com:ModelContractedHoursAndOveragesFlag>true</com:ModelContractedHoursAndOveragesFlag>
               <com:OverageProjectIdentity>
                  <com:ProjectCode>P001320-003</com:ProjectCode>
               </com:OverageProjectIdentity>
               <com:PurchaseOrderNumber>WS1320-SCA</com:PurchaseOrderNumber>
            </sch:ContractLineItem>
            <sch:EngagementCurrencyIdentity>
               <com:CurrencyCode>USD</com:CurrencyCode>
            </sch:EngagementCurrencyIdentity>
            <sch:StealLockFlag>true</sch:StealLockFlag>
            <sch:ContractTypeClearFlag>false</sch:ContractTypeClearFlag>
            <sch:OverageProjectClearFlag>false</sch:OverageProjectClearFlag>
         </pws:serviceRequest>
      </pws:PwsSaveContractLineItem>
   </soapenv:Body>
</soapenv:Envelope>