Functions

A dynamic logic function is the most generic type of dynamic logic: it can have one or more input arguments and return different types of output. A dynamic logic function is used to extend default behavior in certain areas. Each usage of dynamic logic functions is described in a separate paragraph below.

Amount

On adjustment schedule lines and rate schedule lines a dynamic logic function can be specified to calculate the adjustment or rate amount.

Adjustment

The following signature applies:

In / Out Name Type Description

In

attribution

Attribution

The attribution that is being evaluated

In

adjustmentScheduleLine

AdjustmentScheduleLine

The adjustment schedule line that is selected

In

amount

Money

The input amount on which the adjustment is calculated

In

referenceDate

Date

The reference date of the contract calculation period

Out

n/a

Money

The adjustment amount and currency as outcome of the calculation

The input amount is the calculated amount up to the point in the process where the adjustment schedule line is applied. For example, if there is a dynamic field additionalPaymentPercentage on the person, consider the following function to clarify:

return (attribution.person.additionalPaymentPercentage/100) * amount

Rate

The following signature applies:

In / Out Name Type Description

In

attribution

Attribution

The attribution that is being evaluated

In

rateScheduleLine

RateScheduleLine

The rate schedule line that is selected

In

referenceDate

Date

The reference date of the contract calculation period

Out

n/a

Money

The rate amount and currency as outcome of the calculation

For example, if there is a dynamic field overridingRate on the provider, consider the following function to clarify:

return Money.create(attribution.provider.overridingRate, rateScheduleLine.rateSchedule.currency.code)

Calculation Period Reference Date

On a contract a dynamic logic function can be specified to determine the reference date of a contract calculation period (if the function is not specified it is defaulted to the start date of the calculation period). The following signature applies:

In / Out Name Type Description

In

contractCalculationPeriod

ContractCalculationPeriod

The contract calculation period that is being evaluated

Out

n/a

Date

The reference date of the calculation period

For example:

return contractCalculationPeriod.endDate

Change Event Rule

Modifications on a number of tables can lead (through configurable change event rules) to contract events. The date from which day onwards the modification should have effect, is configurable through a dynamic logic function. It depends on the entity which is modified. Often it will be the start date of a time valid entity, but it may be something else like the sysdate.

The following signature applies to change event rules to define the effective date of a contract event (and contract mutation):

In / Out Name Type Description

In

old[EntityName] i.e. entity name will be prefixed by "old"

Depends on the entity (old)

The old version of the entity that is being evaluated

In

new[EntityName] i.e. entity name will be prefixed by "new"

Depends on the entity (new)

The new version of the entity that is being evaluated

Out

n/a

Date

The date (without time aspect) from which on the mutation becomes effective

A straightforward example on assigned providers:

return newAssignedProvider.startDate

The reason for having both the old and the new version of the object being modified as an input parameter, is that when the start date of the object is being changed, it becomes possible to pick the earliest date. For example:

if (newAssignedProvider.startDate <= oldAssignedProvider.startDate)
  return newAssignedProvider.startDate
else
  return oldAssignedProvider.startDate

Code Generation

Person and organization codes can be produced by a dynamic function.

Organization Code Generation

The following signature applies for organizations:

In / Out Name Type Description

In

organization

Organization

The organization for which the code is to be generated

Out

n/a

Alphanumerical

The organization code

Example:

// Uses the id of the organization and prefixes it with ORG
return "ORG" + organization.id.toString()

Person Code Generation

The following signature applies for persons:

In / Out Name Type Description

In

person

Person

The person for which the code is to be generated

Out

n/a

Alphanumerical

The person code

Example:

// Uses the id of the person and prefixes it with MEM
return "MEM" + person.id.toString()

Country Format

This function is attached to a country and defines the format of addresses within that country. The following signature applies:

In / Out Name Type Description

In

address

Address

The address that is to be displayed

Out

n/a

String

The character string that represents the formatted address.

This function is executed whenever an address is displayed. There is no default as-of date.

Create Invoice

The transaction details are grouped into invoices within a Financial Message. Grouping of invoices is done on various attributes on Financial Transaction and Financial Transaction Detail (Process Data). Additional fields required for an invoice are added or generated in this dynamic logic function. Dynamic Logic of the signature Create Invoice holds the logic to create invoices based on the invoice grouping criteria. Because of the grouping functionality all attributes on a financial transaction detail that have to be included in an invoice element are the same. For this reason, the invoice element can be based on a single financial transaction detail as input for the dynamic logic function.

Create Invoice XML

Dynamic functions of this type fill the values of an invoice element for an invoice of selected transaction. They are executed once per invoice of the transactions being processed.

Parameters

In / Out Parameter Name Type Description

In

financialTransactionDetail

FinancialTransactionDetail

The financial transaction detail from which the invoice header attributes are derived to construct the XML.

In/Out

invoice

Invoice

XML <invoice> element that will be included in the financial message.

Input: empty invoice with only the attributes assigned by the fixed logic set

The dynamic logic needs to:

  • transfer all desired values from the input parameters and financial transaction(s) to the invoice header

In addition, logic needed to set details that only exist in an invoice header may be included (that is to set values that are derived as opposed to simply being transferred).

Create Invoice Flat File

This function is executed for each 'Invoice grouping' of financial transaction details. This function will allow creation of zero, one, or more flat file rows each time it is executed.

Parameters

Parameter Name Parameter Type Input / Output Description

financialMessage

FinancialMessage

Input

Financial Message Context*

financialTransactionDetail

FinancialTransactionDetail

Input

Financial Transaction Detail

invoice

Invoice

Input

Invoice Context*

fileRows

List<FileRow>**

Input / Output

FileRow consists of the file identifier and row content

Example

Map apInv = [:]
apInv.INVOICE_ID
apInv.OPERATING_UNIT = 'OHI BU'
apInv.SOURCE = 'EXTERNAL'
apInv.INVOICE_NUM
apInv.INVOICE_AMOUNT = invoice.invoiceAmount
apInv.INVOICE_DATE
apInv.VENDOR_NAME = ''
apInv.VENDOR_NUM
apInv.VENDOR_SITE_CODE
apInv.INVOICE_CURRENCY_CODE =
apInv.PAYMENT_CURRENCY_CODE
apInv.DESCRIPTION = 'Health Insurance Capitation Contract'
apInv.GROUP_ID = financialMessage.jobId
apInv.INVOICE_TYPE_LOOKUP_CODE
apInv.LEGAL_ENTITY_NAME = 'OHI Entity'
apInv.CUST_REGISTRATION_NUMBER = ''
apInv.CUST_REGISTRATION_CODE = ''
apInv.FIRST_PARTY_REGISTRATION_NUM = ''
apInv.THIRD_PARTY_REGISTRATION_NUM = ''
apInv.TERMS_NAME = 'Immediate'
apInv.TERMS_DATE
apInv.GOODS_RECEIVED_DATE = ''
apInv.INVOICE_RECEIVED_DATE
apInv.GL_DATE
apInv.PAYMENT_METHOD_CODE = 'EFT'
apInv.PAY_GROUP_LOOKUP_CODE
apInv.EXCLUSIVE_PAYMENT_FLAG = ''
apInv.AMOUNT_APPLICABLE_TO_DISCOUNT =''
apInv.PREPAY_NUM = ''
apInv.PREPAY_LINE_NUM = ''
apInv.PREPAY_APPLY_AMOUNT = ''
apInv.PREPAY_GL_DATE = ''
apInv.INVOICE_INCLUDES_PREPAY_FLAG = ''
apInv.EXCHANGE_RATE_TYPE = 'CORPORATE'
apInv.EXCHANGE_DATE
apInv.EXCHANGE_RATE ''
apInv.ACCTS_PAY_CODE_CONCATENATED = '010-22500-00000-00000-00000-00000-00000'
apInv.DOC_CATEGORY_CODE = ''
apInv.VOUCHER_NUM = ''
apInv.REQUESTER_FIRST_NAME = ''
apInv.REQUESTER_LAST_NAME = ''
apInv.REQUESTER_EMPLOYEE_NUM = ''
apInv.DELIVERY_CHANNEL_CODE = ''
apInv.BANK_CHARGE_BEARER = ''
apInv.REMIT_TO_SUPPLIER_NAME = ''
apInv.REMIT_TO_SUPPLIER_NUM= ''
apInv.REMIT_TO_ADDRESS_NAME = ''
apInv.PAYMENT_PRIORITY = '1'
apInv.SETTLEMENT_PRIORITY = 'NORMAL'
apInv.UNIQUE_REMITTANCE_IDENTIFIER = ''
apInv.URI_CHECK_DIGIT = ''
apInv.PAYMENT_REASON_CODE = ''
apInv.PAYMENT_REASON_COMMENTS = ''
apInv.REMITTANCE_MESSAGE1= ''
apInv.REMITTANCE_MESSAGE2 = ''
apInv.REMITTANCE_MESSAGE3 = ''
apInv.AWT_GROUP_NAME = ''
apInv.SHIP_TO_LOCATION = ''
apInv.TAXATION_COUNTRY = ''
apInv.DOCUMENT_SUB_TYPE = ''
apInv.TAX_INVOICE_INTERNAL_SEQ = ''
apInv.SUPPLIER_TAX_INVOICE_NUM = ''
apInv.TAX_INVOICE_RECORDING_DATE = ''
apInv.SUPPLIER_TAX_INVOICE_DATE = ''
apInv.SUPPLIER_TAX_EXCHANGE_RATE = ''
apInv.PORT_OF_ENTRY_CODE = ''
apInv.CORRECTION_YEAR = ''
apInv.CORRECTION_PERIOD = ''
apInv.IMPORT_DOCUMENT_NUMBER = ''
apInv.IMPORT_DOCUMENT_DATE = ''
apInv.CONTROL_AMOUNT = ''
apInv.CALC_TAX_DURING_IMPORT_FLAG = 'N'
apInv.ADD_TAX_TO_INV_AMOUNT_FLAG = 'N'
apInv.ATTRIBUTE_CATEGORY = 'OHI_DATA'
apInv.ATTRIBUTE1 = ''
apInv.ATTRIBUTE2 = ''
apInv.ATTRIBUTE3 = ''
apInv.ATTRIBUTE4 = ''
apInv.ATTRIBUTE5 = ''
apInv.ATTRIBUTE6 = ''
apInv.ATTRIBUTE7 = 'POL'
apInv.ATTRIBUTE8 = invoice.ohiInvoiceId
apInv.ATTRIBUTE9 = ''
apInv.ATTRIBUTE10 = ''
apInv.ATTRIBUTE11 = ''
apInv.ATTRIBUTE12 = ''
apInv.ATTRIBUTE13 = ''
apInv.ATTRIBUTE14 = ''
apInv.ATTRIBUTE15 = ''
apInv.ATTRIBUTE_NUMBER1 = ''
apInv.ATTRIBUTE_NUMBER2 = ''
apInv.ATTRIBUTE_NUMBER3 = ''
apInv.ATTRIBUTE_NUMBER4 = ''
apInv.ATTRIBUTE_NUMBER5 = ''
apInv.ATTRIBUTE_DATE1 = ''
apInv.ATTRIBUTE_DATE2 = ''
apInv.ATTRIBUTE_DATE3 = ''
apInv.ATTRIBUTE_DATE4 = ''
apInv.ATTRIBUTE_DATE5 = ''
apInv.GLOBAL_ATTRIBUTE_CATEGORY = ''
apInv.GLOBAL_ATTRIBUTE1 = ''
apInv.GLOBAL_ATTRIBUTE2 = ''
apInv.GLOBAL_ATTRIBUTE3 = ''
apInv.GLOBAL_ATTRIBUTE4 = ''
apInv.GLOBAL_ATTRIBUTE5 = ''
apInv.GLOBAL_ATTRIBUTE6 = ''
apInv.GLOBAL_ATTRIBUTE7 = ''
apInv.GLOBAL_ATTRIBUTE8 = ''
apInv.GLOBAL_ATTRIBUTE9 = ''
apInv.GLOBAL_ATTRIBUTE10 = ''
apInv.GLOBAL_ATTRIBUTE11 = ''
apInv.GLOBAL_ATTRIBUTE12 = ''
apInv.GLOBAL_ATTRIBUTE13 = ''
apInv.GLOBAL_ATTRIBUTE14 = ''
apInv.GLOBAL_ATTRIBUTE15 = ''
apInv.GLOBAL_ATTRIBUTE16 = ''
apInv.GLOBAL_ATTRIBUTE17 = ''
apInv.GLOBAL_ATTRIBUTE18 = ''
apInv.GLOBAL_ATTRIBUTE19 = ''
apInv.GLOBAL_ATTRIBUTE20 = ''
apInv.GLOBAL_ATTRIBUTE_NUMBER1 = ''
apInv.GLOBAL_ATTRIBUTE_NUMBER2 = ''
apInv.GLOBAL_ATTRIBUTE_NUMBER3 = ''
apInv.GLOBAL_ATTRIBUTE_NUMBER4 = ''
apInv.GLOBAL_ATTRIBUTE_NUMBER5 = ''
apInv.GLOBAL_ATTRIBUTE_DATE1 = ''
apInv.GLOBAL_ATTRIBUTE_DATE2 = ''
apInv.GLOBAL_ATTRIBUTE_DATE3 = ''
apInv.GLOBAL_ATTRIBUTE_DATE4 = ''
apInv.GLOBAL_ATTRIBUTE_DATE5 = ''

fileRows.add(new FileRow('AP_INVOICES_INTERFACE', apInv.values().join(',')))

Create Invoice Line

The transaction details are grouped into invoice lines within an Invoice in a Financial Message. Grouping of invoice lines is done on various attributes on Financial Transaction and Financial Transaction Detail (Process Data). Additional fields required for an invoice line are added or generated in this dynamic logic function. Dynamic Logic of the signature Create Invoice Line holds the logic to create invoice lines based on the invoice line grouping criteria.

Create Invoice Line XML

Dynamic functions of this type fill the values of an invoice line element for an amount that needs to be paid (or retracted). They are executed once for each generated Invoice Line by the Generate Financial Message activity. They are executed within the context of the invoice with the same payment receiver of the financial transaction detail process data.

Parameters

In / Out Parameter Type Description

In

financialTransactionDetail

F inancialTransactionDetail

The financial transaction detail from which the invoice line attributes are derived to contract the XML.

In / Out

invoiceLine

InvoiceLine

XML <invoiceLine> element that will be included in the financial message.

Input: empty invoice header with only invoiceId set

The dynamic logic needs to:

  • transfer all desired values from the financial detail to the invoice line.

In addition, logic needed to set details that only exist in an invoice line may be included (that is, to set values that are derived as opposed to simply being transferred).

Create Invoice Line Flat File

This function will be executed for each 'Invoice Line grouping' of financial transaction details. This function will allow creation of zero, one, or more flat file rows each time it is executed.

Parameters

Parameter Name Parameter Type Input / Output Description

financialMessage

FinancialMessage

Input

Financial Message Context*

financialTransactionDetail

FinancialTransactionDetail

Input

Financial Transaction Detail

invoice

Invoice

Input

Invoice Context*

invoiceLine

InvoiceLine

Input

Invoice Line Context*

fileRows

List<FileRow>

Input / Output

File row consists of the file identifier and row content

Example

Map apInvLn = [:]
apInvLn.INVOICE_ID =
apInvLn.LINE_NUMBER =
apInvLn.LINE_TYPE_LOOKUP_CODE = 'Item'
apInvLn.AMOUNT = invoiceLine.Amount
apInvLn.QUANTITY_INVOICED = ''
apInvLn.UNIT_PRICE = ''
apInvLn.UNIT_OF_MEAS_LOOKUP_CODE = ''
apInvLn.DESCRIPTION =
apInvLn.PO_NUMBER = ''
apInvLn.PO_LINE_NUMBER = ''
apInvLn.PO_SHIPMENT_NUM = ''
apInvLn.PO_DISTRIBUTION_NUM = ''
apInvLn.ITEM_DESCRIPTION = ''
apInvLn.RELEASE_NUMBER = ''
apInvLn.PURCHASING_CATEGORY = ''
apInvLn.RECEIPT_NUMBER = ''
apInvLn.RECEIPT_LINE_NUMBER = ''
apInvLn.CONSUMPTION_ADVICE_NUMBER = ''
apInvLn.CONSUMPTION_ADVICE_LINE_NUMBER = ''
apInvLn.PACKING_SLIP = ''
apInvLn.FINAL_MATCH_FLAG = ''
apInvLn.DIST_CODE_CONCATENATED = '010-44040-00000-00000-00000-00000-00000'
apInvLn.DISTRIBUTION_SET_NAME = ''
apInvLn.ACCOUNTING_DATE
apInvLn.ACCOUNT_SEGMENT = ''
apInvLn.BALANCING_SEGMENT = ''
apInvLn.COST_CENTER_SEGMENT = ''
apInvLn.TAX_CLASSIFICATION_CODE = ''
apInvLn.SHIP_TO_LOCATION_CODE = ''
apInvLn.SHIP_FROM_LOCATION_CODE = ''
apInvLn.FINAL_DISCHARGE_LOCATION_CODE = ''
apInvLn.TRX_BUSINESS_CATEGORY = ''
apInvLn.PRODUCT_FISC_CLASSIFICATION = ''
apInvLn.PRIMARY_INTENDED_USE = ''
apInvLn.USER_DEFINED_FISC_CLASS = ''
apInvLn.PRODUCT_TYPE = ''
apInvLn.ASSESSABLE_VALUE = ''
apInvLn.PRODUCT_CATEGORY = ''
apInvLn.CONTROL_AMOUNT = ''
apInvLn.TAX_REGIME_CODE = ''
apInvLn.TAX = ''
apInvLn.TAX_STATUS_CODE = ''
apInvLn.TAX_JURISDICTION_CODE = ''
apInvLn.TAX_RATE_CODE = ''
apInvLn.TAX_RATE = ''
apInvLn.AWT_GROUP_NAME = ''
apInvLn.TYPE_1099 = ''
apInvLn.INCOME_TAX_REGION = ''
apInvLn.PRORATE_ACROSS_FLAG = 'N'
apInvLn.LINE_GROUP_NUMBER = '1'
apInvLn.COST_FACTOR_NAME = ''
apInvLn.STAT_AMOUNT = ''
apInvLn.ASSET_TRACKING_FLAG = 'N'
apInvLn.ASSET_BOOK_TYPE_CODE = ''
apInvLn.ASSET_CATEGORY_ID = ''
apInvLn.SERIAL_NUMBER = ''
apInvLn.MANUFACTURER = ''
apInvLn.MODEL_NUMBER = ''
apInvLn.WARRANTY_NUMBER = ''
apInvLn.PRICE_CORRECTION_FLAG = 'N'
apInvLn.PRICE_CORRECT_INV_NUM = ''
apInvLn.PRICE_CORRECT_INV_LINE_NUM = ''
apInvLn.REQUESTER_FIRST_NAME = ''
apInvLn.REQUESTER_LAST_NAME = ''
apInvLn.REQUESTER_EMPLOYEE_NUM = ''
apInvLn.ATTRIBUTECATEGORY = ''
apInvLn.ATTRIBUTE1 = 'POL'
apInvLn.ATTRIBUTE2 = invoiceLine.ohiLineId
apInvLn.ATTRIBUTE3 = ''
apInvLn.ATTRIBUTE4 = ''
apInvLn.ATTRIBUTE5 = ''
apInvLn.ATTRIBUTE6 = ''
apInvLn.ATTRIBUTE7 = ''
apInvLn.ATTRIBUTE8 = ''
apInvLn.ATTRIBUTE9 = ''
apInvLn.ATTRIBUTE10 = ''
apInvLn.ATTRIBUTE11 = ''
apInvLn.ATTRIBUTE12 = ''
apInvLn.ATTRIBUTE13 = ''
apInvLn.ATTRIBUTE14 = ''
apInvLn.ATTRIBUTE15 = ''
apInvLn.ATTRIBUTE_NUMBER1 = ''
apInvLn.ATTRIBUTE_NUMBER2 = ''
apInvLn.ATTRIBUTE_NUMBER3 = ''
apInvLn.ATTRIBUTE_NUMBER4 = ''
apInvLn.ATTRIBUTE_NUMBER5 = ''
apInvLn.ATTRIBUTE_DATE1 = ''
apInvLn.ATTRIBUTE_DATE2 = ''
apInvLn.ATTRIBUTE_DATE3 = ''
apInvLn.ATTRIBUTE_DATE4 = ''
apInvLn.ATTRIBUTE_DATE5 = ''
apInvLn.GLOBAL_ATTRIBUTECATEGORY = ''
apInvLn.GLOBAL_ATTRIBUTE1 = ''
apInvLn.GLOBAL_ATTRIBUTE2 = ''
apInvLn.GLOBAL_ATTRIBUTE3 = ''
apInvLn.GLOBAL_ATTRIBUTE4 = ''
apInvLn.GLOBAL_ATTRIBUTE5 = ''
apInvLn.GLOBAL_ATTRIBUTE6 = ''
apInvLn.GLOBAL_ATTRIBUTE7 = ''
apInvLn.GLOBAL_ATTRIBUTE8 = ''
apInvLn.GLOBAL_ATTRIBUTE9 = ''
apInvLn.GLOBAL_ATTRIBUTE10 = ''
apInvLn.GLOBAL_ATTRIBUTE11 = ''
apInvLn.GLOBAL_ATTRIBUTE12 = ''
apInvLn.GLOBAL_ATTRIBUTE13 = ''
apInvLn.GLOBAL_ATTRIBUTE14 = ''
apInvLn.GLOBAL_ATTRIBUTE15 = ''
apInvLn.GLOBAL_ATTRIBUTE16 = ''
apInvLn.GLOBAL_ATTRIBUTE17 = ''
apInvLn.GLOBAL_ATTRIBUTE18 = ''
apInvLn.GLOBAL_ATTRIBUTE19 = ''
apInvLn.GLOBAL_ATTRIBUTE20 = ''
apInvLn.GLOBAL_ATTRIBUTE_NUMBER1 = ''
apInvLn.GLOBAL_ATTRIBUTE_NUMBER2 = ''
apInvLn.GLOBAL_ATTRIBUTE_NUMBER3 = ''
apInvLn.GLOBAL_ATTRIBUTE_NUMBER4 = ''
apInvLn.GLOBAL_ATTRIBUTE_NUMBER5 = ''
apInvLn.GLOBAL_ATTRIBUTE_DATE1 = ''
apInvLn.GLOBAL_ATTRIBUTE_DATE2 = ''
apInvLn.GLOBAL_ATTRIBUTE_DATE3 = ''
apInvLn.GLOBAL_ATTRIBUTE_DATE4 = ''
apInvLn.GLOBAL_ATTRIBUTE_DATE5 = ''
apInvLn.PJC_PROJECT_ID = ''
apInvLn.PJC_TASK_ID = ''
apInvLn.PJC_EXPENDITURE_TYPE_ID = ''
apInvLn.PJC_EXPENDITURE_ITEM_DATE = ''
apInvLn.PJC_EXPENDITURE_ORGANIZATION_ID = ''
apInvLn.PJC_PROJECT_NUMBER = ''
apInvLn.PJC_TASK_NUMBER = ''
apInvLn.PJC_EXPENDITURE_TYPE = ''
apInvLn.PJC_EXPENDITURE_ORGANIZATION = ''
apInvLn.PJC_FUNDING_SOURCE_ID = ''
apInvLn.PJC_RESERVED_ATTRIBUTE2 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE3 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE4 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE5 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE6 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE7 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE8 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE9 = ''
apInvLn.PJC_RESERVED_ATTRIBUTE10 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE1 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE2 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE3 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE4 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE5 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE6 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE7 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE8 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE9 = ''
apInvLn.PJC_USER_DEFINED_ATTRIBUTE10 = ''

fileRows.add(new FileRow('AP_INVOICE_LINES_INTERFACE', apInvLn.values().join(',')))

Create Accounting Details

Dynamic Logic of the signature Create Accounting Details holds the logic to create accounting details based on the accounting detail grouping criteria. These dynamic functions are executed once per accounting detail generated by the Generate Financial Message activity.

Create Accounting Detail XML

Parameters

In / Out Parameter Type Description

In

financialTransactionDetail

FinancialTransactionDetail

The financial transaction detail from which the invoice line attributes are derived to contract the XML.

In / Out

accountingDetail

AccountingDetail

XML <accountingDetail> element that will be included in the financial message.

The dynamic logic needs to:

  • transfer all desired values from the financial transaction detail and related objects to the accounting detail.

In addition, logic needed to set details that only exist in an accounting detail may be included (that is to set values that are derived as opposed to simply being transferred).

Create Accounting Detail Flat File

This function will be executed for each 'accounting detail grouping' of financial transaction details. This function will allow creation of zero, one, or more flat file rows each time it is executed.

Parameters

Parameter Name Parameter Type Input / Output Description

financialMessage

FinancialMessage

Input

Financial Message Context*

financialTransactionDetail

FinancialTransactionDetails

Input

Financial Transaction Detail

invoice

Invoice

Input

InvoiceContext

accountingDetail

AccountingDetail

Input

Accounting Detail Context*

fileRows

List<FileRow>

Input / Output

File row consists of the file identifier and row content

Example

Map glInt = [:]
glInt.STATUS          = 'NEW'
glInt.LEDGER_ID       = '300000004014096'
glInt.ACCOUNTING_DATE = accountingDetail.accountingDate
glInt.USER_JE_SOURCE_NAME = 'OHI'
glInt.USER_JE_CATEGORY_NAME = 'OHI'
glInt.CURRENCY_CODE =
glInt.DATE_CREATED =
glInt.ACTUAL_FLAG = 'A'
glInt.SEGMENT1 =
glInt.SEGMENT2 =
glInt.SEGMENT3 =
glInt.SEGMENT4 =
glInt.SEGMENT5 =
glInt.SEGMENT6 = ''
glInt.SEGMENT6 = ''
glInt.SEGMENT8 = ''
glInt.SEGMENT9 = ''
glInt.SEGMENT1O = ''
glInt.SEGMENT11 = ''
glInt.SEGMENT12 = ''
glInt.SEGMENT13 = ''
glInt.SEGMENT14 = ''
glInt.SEGMENT15 = ''
glInt.SEGMENT16 = ''
glInt.SEGMENT16 = ''
glInt.SEGMENT18 = ''
glInt.SEGMENT19 = ''
glInt.SEGMENT2O = ''
glInt.SEGMENT21 = ''
glInt.SEGMENT22 = ''
glInt.SEGMENT23 = ''
glInt.SEGMENT24 = ''
glInt.SEGMENT25 = ''
glInt.SEGMENT26 = ''
glInt.SEGMENT26 = ''
glInt.SEGMENT28 = ''
glInt.SEGMENT29 = ''
glInt.SEGMENT3O = ''
glInt.ENTERED_DR  = accountingDetail.amountDebit.toPlainString()
glInt.ENTERED_CR =  accountingDetail.amountCredit.toPlainString()
glInt.ACCOUNTED_DR  = ''
glInt.ACCOUNTED_CR = ''
glInt.REFERENCE1 = financialMessage.jobId
glInt.REFERENCE2 = ''
glInt.REFERENCE3 = ''
glInt.REFERENCE4 = ''
glInt.REFERENCE5 = ''
glInt.REFERENCE6 = ''
glInt.REFERENCE7 = ''
glInt.REFERENCE8 = ''
glInt.REFERENCE9 = ''
glInt.REFERENCE10 = ''
glInt.REFERENCE21 = ''
glInt.REFERENCE22 = ''
glInt.REFERENCE23 = ''
glInt.REFERENCE24 = ''
glInt.REFERENCE25 = ''
glInt.REFERENCE26 = ''
glInt.REFERENCE27 = ''
glInt.REFERENCE28 = ''
glInt.REFERENCE29 = ''
glInt.REFERENCE30 = ''
glInt.STAT_AMOUNT = ''
glInt.USER_CURRENCY CONVERSION TYPE = ''
glInt.CURRENCY CONVERSION DATE = ''
glInt.CURRENCY CONVERSION RATE = ''
glInt.GROUP_ID = financialMessage.jobId
glInt.ATTRIBUTE_CATEGORY = 'OHI_DATA'
glInt.ATTRIBUTE1 = ''
glInt.ATTRIBUTE2 = ''
glInt.ATTRIBUTE3 = ''
glInt.ATTRIBUTE4 = ''
glInt.ATTRIBUTE5 = ''
glInt.ATTRIBUTE6 = ''
glInt.ATTRIBUTE7 = 'POL'
glInt.ATTRIBUTE8 =  accountingDetail.ohiAccountingDetailId
glInt.ATTRIBUTE9 = ''
glInt.ATTRIBUTE10 = ''
glInt.ATTRIBUTE11 = ''
glInt.ATTRIBUTE12 = ''
glInt.ATTRIBUTE13 = ''
glInt.ATTRIBUTE14 = ''
glInt.ATTRIBUTE15 = ''
glInt.ATTRIBUTE16 = ''
glInt.ATTRIBUTE17 = ''
glInt.ATTRIBUTE18 = ''
glInt.ATTRIBUTE19 = ''
glInt.ATTRIBUTE20 = ''
glInt.ATTRIBUTE_CATEGORY_3 = ''
glInt.AVERAGE JOURNAL FLAG = ''
glInt.ORIGINATION_BAL_SEG_VALUE = ''
glInt.LEDGER NAME = ''
glInt.ENCUMBRANCE TYPE ID = ''
glInt.JGZZ_RECON_REF = ''

fileRows.add(new FileRow('GL_INTERFACE', glInt.values().join(',')))

Financial Transaction

This function species how the calculation results have to be mapped to the financial transaction header.

In / Out Name Type Description

In

calculationResult

CalculationResult

The calculation result for which the financial transaction is being created

In

financialTransaction

FinancialTransaction

The Financial Transaction that is the result of executing the fixed default transaction creation logic

Out

financialTransaction

FinancialTransaction

The Financial Transaction updated by the dynamic logic functionality

The dynamic logic can:

  • Add more Financial Transaction Details

  • Set attributes of new/existing Financial Transaction Detail and corresponding Financial Transaction Process Data elements

  • Set Financial Transaction Process Detail and Financial Transaction Detail Process Detail attributes

Note: The financialTransactionDetail.sequenceNumber of the input financial transaction is set to the corresponding calculation result line sequence. This sequence is later re-set by the system if new financial transaction details are added.

Name Format

Name formats are defined by a dynamic logic function. The dynamic logic function constructs a formatted name for a person or individual provider, using the available person or individual provider fields such as the first name, prefix and initials.

Name Format (Individual Provider)

The following signature for individual providers applies:

In / Out Name Type Description

In

individualProvider

IndividualProvider

The individual provider of which the name is to be displayed

Out

n/a

Alphanumerical

The string that contains the formatted name of the individual provider

Consider the following example for individual providers, where the formatted name consists of the provider’s titles, first name, middle name, (last) name and suffix respectively:

nf = ''
if (individualProvider.getTitles('B')) nf += individualProvider.getTitles('B') + ' '
if (individualProvider.firstName) nf += individualProvider.firstName + ' '
if (individualProvider.middleName) nf += individualProvider.middleName + ' '
if (individualProvider.name) nf += individualProvider.name + ' '
if (individualProvider.suffix) nf += individualProvider.suffix
return nf

Name Format (Person)

The following signature for persons applies:

In / Out Name Type Description

In

person

Person

The person of which the name is to be displayed

Out

n/a

Alphanumerical

The string that contains the formatted name of the person

This function is called whenever a formatted name is displayed. Consider the following example for persons, where the formatted name consists of the person’s initials, prefix, (last) name and suffix respectively:

nf = ''
if (person.initials) nf += person.initials + ' '
if (person.prefix) nf += person.prefix.displayCode + ' '
if (person.name) nf += person.name
if (person.suffix) nf += ' ' + person.suffix
return nf

Payment Receiver

On a contract payment receiver a dynamic logic function must be specified to determine the payment receiver (counterparty code). The following signature applies:

In / Out Name Type Description

In

attribution

Attribution

The attribution that is being evaluated

In

contractPaymentReceiver

ContractPaymentReceiver

The contract payment receiver in context

In

referenceDate

Date

The reference date of the contract calculation period

Out

n/a

Alphanumerical

The counterparty code that will be stored on the financial transaction detail process data

For example:

return attribution.provider.code

Reusable Code

This is a common signature, available in all the applications. This signature has no bindings. It allows for writing standalone methods/reusable classes code that can be shared across other scripts.

Extension

This is a common signature, available in all the applications. This signature has no bindings. It allows for writing extensions to the dynamic logic scripts that are delivered by the product.

URL Composition

A flex code field usage of a dynamic record definition can reference a dynamic logic function to build up the URL needed to access an external application. In this way it is possible to change e.g. a server location in a central way.

In / Out Name Type Description

In

dynamicRecord

DynamicRecord

The dynamic record

Out

n/a

Alphanumerical

The composed URL

Example:

return "http://financialsystem.oracle.com?p_check_number="+dynamicRecord.checkNumber