Billings Flow Intermediate Processing

After importing the input fields and augmenting them with the data from their lookup objects, the PS Cloud Analytics dataflow filters out non-relevant or repeated records.

You can use the dataflow editor in Analytics Studio to visualize the PS Cloud Analytics dataflow and its nodes. Alternatively, you can download the dataflow definition file which is a JSON file representing the dataflow and its logic. For more information on the dataflow editor and the dataflow definition file, see Configure the Dataflow in the Salesforce Help.

Warning: Modifying the PS Cloud Analytics dataflow might result in the loss of functionality. Contact your system administrator before using the data manager tool in Analytics Studio.

Dataflow Nodes

These are the main dataflow nodes in the Billings flow.

Dataflow Node

Description

timecard_FILTER Matches timecards that have the "Approved" status.
expense_FILTER Matches expenses that are included in financials.
eva_FILTER Matches estimates vs. actuals that have an assignment and a time period associated.
miscAdjustment_passThrough_FILTER Matches miscellaneous adjustments that are included in financials and that have a transaction category field "Pass-Through Ready-to-Bill Revenue".
misc_adjustment_ready_to_bill__FILTER Matches miscellaneous adjustments that are included in financials and that have a transaction category field "Ready-to-Bill Revenue".
milestone__FILTER

Categorizes the milestones by subtype. The filter logic is either:

  • (Actual) Matches a milestone if the actual date field has a value and the milestone is included in financials.
  • (Scheduled) Matches a milestone if the actual date field has no value and the milestone amount value is other than zero.
billing_first_level_project_FILTER

Ensures that only records associated with the top-level Project are included.

Note: Only data for top-level projects is displayed in the PS Cloud Analytics Billings dataset.
Budget_FILTER

Ensures that only budgets with the status "Approved" are included in the dataset. Budgets that have the "Draft", "Open", or "Rejected" status are discarded. The only budget types supported are:

  • Customer Purchase Order
  • Customer Purchase Order Change Request
  • Vendor Purchase Order
  • Vendor Purchase Order Change Request
  • Work Order
  • Work Order Change Request

The Type field from which these budget varieties are derived is renamed as "Subtype" in this filter node.

Calculated Fields

These are the fields calculated by the Billings flow.

Field API Name

Description

Type Identifies the base object that a billing has associated. The base object can be timecards, expenses, misc. adjustments, milestones, est vs. actuals, or budget.
Subtype Identifies if a billing is actual, scheduled or budget.
BillingDate

This is the billing date time. It varies in function of the record type:

  • For Expenses, Misc. Adjustments, Milestones, Timecards, and Budgets, this is the bill date field.
  • For Estimates Vs. Actuals, this is the end date field.
EndDate

Depending on the base object this field can be:

  • For Misc. Adjustments and Budgets, this is the effective date field.
  • For Timecards, this is the timecard split end date field.
  • For Expenses, this is the expense date field.
  • For Estimates Vs. Actuals, this is the end date field.
  • For Milestones, if the subtype is actual the end date is the actual date field. If the subtype is scheduled the end date is the target date field.
TimePeriodType Identifies the time period type of an estimates vs. actuals record.
ValueProjectExchangeRate

Depending on the base object this field can be:

  • For Expenses, Budgets, and Misc. Adjustments, this is the project currency exchange rate field of the transaction associated with the record.
  • For Timecards and Estimates Vs. Actuals, this is the project currency exchange rate field.
  • For Milestones, if the subtype is actual then this is the this is the project currency exchange rate field of the transaction associated with the record. If the subtype is scheduled then this is the project currency exchange rate field.
ValueAmount

Depending on the base object this field can be:

  • For Expenses, Misc. Adjustments, and Budgets, this is the amount field.
  • For Milestones. this is the milestone amount field.
  • For Timecards, this is the timecard split's total billable amount field.
  • For Estimates Vs. Actuals, when the scheduled bill rate is daily rate field is selected then this is the scheduled bill rate multiplied by estimated days field. Else this is the scheduled bill rate multiplied by estimated hours field.
ValueBillings

This is calculated as follows:

ValueAmount * CurrencyType.ConversionRate / ValueProjectExchangeRate

Note: To apply the currency conversion from PSA, we multiply the ValueAmount by the ConversionRate applied by Salesforce to reverse the amount to the original currency. After the ValueAmount is reverted to the original currency we convert it to the corporate currency using the PSA ValueProjectExchangeRate. This calculation is only applied to currency fields derived from the following objects: Est Vs Actuals, Timecards, Milestone, Miscellaneous Adjustments and Budget.
The following calculation is used to derive ValueBillings from Expenses:
'ValueAmount' / 'ValueProjectExchangeRate
ValueTotalDays

Depending on the base object this field can be:

  • For Budgets, Misc. Adjustments, and Expenses, this value is zero.
  • For Timecards, this is the total days worked field.
  • For Milestones, this is the billable days in financials field.
  • For Estimates Vs. Actuals, this is the estimated days field.
ValueTotalHours

Depending on the base object this field can be:

  • For Misc. Adjustments, and Expenses, this value is zero.
  • For Timecards, this is the total hours field.
  • For Milestones, this is the billable hours in financials field.
  • For Estimates Vs. Actuals, this is the estimated hours field.
  • For Budgets, the dataflow follows the lookup relation between the budget and the project record and takes the value of the project's planned hours field.
ValueTotalBillableDays

When the ValueBillings calculated field is greater than zero then this field takes the value of the ValueTotalDays. Else ValueTotalBillableDays is zero.

ValueTotalBillableHours

When the ValueBillings calculated field is greater than zero then this field takes the value of the ValueTotalHours. Else ValueTotalBillableHours is zero.

HasFirstLevelProject Identifies records with a top-level project associated.
ValueActualBillRateBillings For records with the type timecard, milestone, or miscellaneous adjustment. If the subtype is "Actual" then this field takes the value of the ValueBillings calculated field. Else, ValueActualBillRateBillings is zero.
ValueScheduledBillRateBillings For records with the type est vs. actuals or milestone. If the subtype is "Scheduled" then this field takes the value of the ValueBillings calculated field. Else, ValueScheduledBillRateBillings is zero.
ValueActualBillRateTotalHours For records with the type timecard. If the subtype is "Actual" then this field takes the value of the ValueTotalHours calculated field. Else, is zero.
ValueActualBillRateTotalDays For records with the type timecard. If the subtype is "Actual" then this field takes the value of the ValueTotalDays calculated field. Else, ValueActualBillRateTotalHours is zero.
ValueScheduledBillRateTotalHours For records with the type est vs. actuals. If the subtype is "Scheduled" then this field takes the value of the ValueTotalHours calculated field. Else, ValueScheduledBillRateTotalHours is zero.
ValueScheduledBillRateTotalDays For records with the type est vs. actuals. If the subtype is "Scheduled" then this field takes the value of the ValueTotalDays calculated field. Else, ValueScheduledBillRateTotalDays is zero.