Transaction Types

BFS Version 2.X

Transaction types can be modified by system administrator users by navigating to System Data→Transaction Types.

The transaction types that can be created are used to create Business Transactions. A Business Transaction then has a transaction mapping that defines which account transactions that should be created. Business transactions represents the transaction object that is viewable by the end customer and advisor, the back office user can drill down in order to view account transactions.

To configure a new transaction type the following properties can be affected.

There are a number of default transaction types in BFS that are used for various functions and should only be modified with caution. 

PropertyDescription
KeyThis is the actual identifier of the transaction type which is used in the TransactionMappings. The transaction types should be named according to the following naming convention:

[BFSInstanceName/Default/SpecificModule]_[Trade/Transfer/Payment]_[Transaction dimension (Trade/Settle]_[Description]

If the transaction type belongs to the general framework the first part of the transaction will be named "Default". If the transaction type is customized for the BFS-instance the first part could be named "Custom".

BFS has a number of default transaction types which are named according to the following:

Default_Trade_Buy
Default_Transfer_Settle_Cash
Default_Transfer_Trade_Cash
etc... 
Status

The status of the transaction type defines which userlevels will be able to utilize the transaction type. The available settings are:

  • Closed
  • Open
  • Open (Admin) only open to admin users
  • Open (Partner) only open to advisor users and admin users
  • Pending viewable by admin users in the transaction type lists but not available for use
Sort orderDefines at which place in the drop down list of transaction types in the order ticket the transaction type should appear.
Manual ticketDefines if the transaction type should be available in manual order tickets or only available as automated transactions.
Reporting typeThe selection determines in which section the transaction will appear in Activity statements
Tax TypeThe selection determines how the transaction will be classified for taxation
Return calculation typeThere are three main divisors that are used to put the transaction types into various baskets and this is called Return Calculation Type. The return calculation type can be Trade, Transfer or Payment and determines how the transaction type will be used when calculating the return of an account. Trade represents a trade of an asset, Transfer represents a transfer of an asset to or from an account and Payment represents a cost that has been applied or an income that has been received by the account. If return calculation type is empty the default value will be Transfer
Custody Account Asset 1Obsolete
Custody Account Asset 2Obsolete
System AccountThis is always set to true since the transaction must be mapped to an account when it is created
Trade dateDefines if trade date should be defined in the creation of a transaction of the specified type.
Settlement dateDefines if settlement date should be defined in the creation of a transaction of the specified type.
Value dateDefines if value date should be defined in the creation of a transaction of the specified type.
Asset 1This determines what type and label that should be shown for the asset in the first leg of the transaction
Amount Asset 1Defines if an amount should be present for the first Leg and the sub property Label defines if Amount or Quantity should be used for the property.
Asset 2This determines what type and label that should be shown for the asset in the second leg of the transaction
Amount Asset 2Defines if an amount should be present for the second Leg and the sub property Label defines if Amount or Quantity should be used for the property.
PriceDefines if price should be defined in the transaction type creation.
Acquisition ValueDefines if an acquisition value in the acquired asset currency should be defined.
Acquisition Value Account CurrencyDefines if an acquisition value in the base currency of the acquiring account should be defined.
CommentDefines if a comment should be possible to input for the transaction type.

With each transaction type there should be a transaction mapping associated which defined what account transactions should occur. As an example, lets create a manual transaction where we select the transaction type called Default_Transfer_Trade_Cash, this should create a transaction in the trade dimension for the selected account. The business transaction ticket looks like this:

By clicking Preview Transactions we can see what account transactions the transaction mapping will create.

As we can see there is one account transaction that will be created in the Trade (T) dimension. If we had defined accounting transaction sin the transaction mapping it would have shown here as well. We can also select to Add more account transactions if we wish by clicking the add-button.

The XML for this simple transaction mapping looks like this:

<BusinessTransactionMappingRules xmlns="http://www.bricknode.com/TransactionMappingNew" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <!--
  The factor works in a way that it multiplies the Amount from the actual transaction and for a system account buy of a fund the AmountAsset1 reflecting the cash will be -1000 for example and then the factor should be -1 for
  a stock account which should get a positive transaction and the same is true for accounting accounts.
  -->
  <BusinessTransactionMappingRule transactionType="Default_Transfer_Trade_Cash">
    <!--Description:  -->
    
    <AccountTransactionItems>
      <!--System accounts-->
      <AccountTransaction dimension="T" amountType="AmountAsset1" assetType="Asset1" factor="1" transactionDate="TradeDate" xsi:type="DefaultSystemAccount" />      
    </AccountTransactionItems>
  </BusinessTransactionMappingRule>

</BusinessTransactionMappingRules>

A more complex transaction mapping with accounting in it and with a filter that makes the account transactions occur if the amount for asset 1 was more than 0 could look like below.

<BusinessTransactionMappingRule transactionType="MoneyTransfer">
    <Filter>
      <PropertyValue property="AmountAsset1" operator="GreaterThan" value="0"/>
    </Filter>
    <AccountTransactionItems>
      <AccountTransaction dimension="T" amountType="AmountAsset1" assetType="Asset1" factor="1" transactionDate="TradeDate" xsi:type="AccountDefault" />     

      <AccountTransaction dimension="A" amountType="AmountAsset1" assetType="Asset1" factor="-1" transactionDate="TradeDate" xsi:type="AccountSelection" accountTypeKey="AccountingAccount" accountNo="2451" />
      <AccountTransaction dimension="A" amountType="AmountAsset1" assetType="Asset1" factor="1" transactionDate="TradeDate" xsi:type="AccountSelection" accountTypeKey="AccountingAccount" accountNo="1650" />
     
    </AccountTransactionItems>
  </BusinessTransactionMappingRule>

The XSD-schema for the transaction mapping looks like below.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema
  xmlns:tns="http://www.bricknode.com/TransactionMapping"
  elementFormDefault="qualified"
  targetNamespace="http://www.bricknode.com/TransactionMapping"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="AllowedProperties">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Account.AccountNo" />
      <xs:enumeration value="Account.AccountType.Key" />
      <xs:enumeration value="AmountAsset1" />
      <xs:enumeration value="Amount2" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PropertyOperator">
    <xs:restriction base="xs:string">
      <xs:enumeration value="LessThan" />
      <xs:enumeration value="Equals" />
      <xs:enumeration value="GreaterThan" />
      <xs:enumeration value="NotEqual" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="OperatorSymbol">
    <xs:restriction base="xs:string">
      <xs:enumeration value="AND" />
      <xs:enumeration value="OR" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="BusinessTransactionMappingRules" nillable="true" type="tns:Rules" />
  <xs:complexType name="Rules">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="unbounded" name="BusinessTransactionMappingRule" nillable="true" type="tns:Rule" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Rule">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="Filter" type="tns:FilterRule" />
      <xs:element minOccurs="1" maxOccurs="1" name="AccountTransactionItems" type="tns:ArrayOfAccountTransactionItem" />
    </xs:sequence>
    <xs:attribute name="transactionType" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="FilterRule" >
    <xs:choice minOccurs="1" maxOccurs="1">
      <xs:element minOccurs="1" maxOccurs="1" name="PropertyValue" type="tns:PropertyValue" />
      <xs:element minOccurs="1" maxOccurs="1" name="Operator" type="tns:Operator" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="PropertyValue" >
    <xs:attribute name="property" type="tns:AllowedProperties" use="required" />
    <xs:attribute name="operator" type="tns:PropertyOperator" use="required" />
    <xs:attribute name="value" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="Operator">
    <xs:choice minOccurs="1" maxOccurs="unbounded">
      <xs:element minOccurs="1" maxOccurs="unbounded" name="PropertyValue" type="tns:PropertyValue" />
      <xs:element minOccurs="1" maxOccurs="unbounded" name="Operator" type="tns:Operator" />
    </xs:choice>
    <xs:attribute name="operator" type="tns:OperatorSymbol" use="required" />
  </xs:complexType>
  <xs:complexType name="ArrayOfAccountTransactionItem">
    <xs:sequence >
      <xs:element minOccurs="0" maxOccurs="unbounded" name="AccountTransaction" nillable="true" type="tns:AccountTransactionItemBase" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AccountTransactionItemBase" abstract="true">
          <xs:attribute name="amountType" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="AmountAsset1" />
                <xs:enumeration value="AmountAsset2" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="factor" type="xs:double" use="optional" default="1" />
          <xs:attribute name="assetType" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="Asset1" />
                <xs:enumeration value="Asset2" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
   
          <xs:attribute name="transactionDate" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="TradeDate" />
                <xs:enumeration value="SettlementDate" />
                <xs:enumeration value="ValueDate" />
                <xs:enumeration value="CurrentAccountingDate" />
                <xs:enumeration value="CurrentSystemDate" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
   
    <xs:attribute name="dimension" use ="required" >
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="T" />
          <xs:enumeration value="S" />
          <xs:enumeration value="A" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>

    <xs:attribute name="useAcquisitionValue" use ="optional" type="xs:boolean" default="false" />


  </xs:complexType>
    
  <xs:complexType name="AccountDefault">
    <xs:complexContent>
      <xs:extension base="tns:AccountTransactionItemBase">
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AccountSelection">
    <xs:complexContent>
      <xs:extension base="tns:AccountTransactionItemBase">
        <xs:attribute name="accountTypeKey" type="xs:string" use="required" />
        <xs:attribute name="accountNo" type="xs:string" use="required" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
</xs:schema>

© 2009 - 2023 Huddlestock Technologies AB All rights reserved | Huddlestock Terms of use | Support portal