Class FinOrderBuilder
Base class for concrete order builders. A concrete derived order builder class builds a specific FinOrder derived class.
Inheritance
Inherited Members
Namespace: Subsembly.FinTS
Assembly: Subsembly.FinTS.Core.dll
Syntax
public class FinOrderBuilder
Remarks
All actual FinOrder derived order classes can only be created through their corresponding FinOrderBuilder derived class. Thus, to create an order, the first step is to create the appropriate FinOrderBuilder derived class. For example: In order to create an account balance inquiry order, the first step is to create a FinAcctBalBuilder instance. Then its Build(FinAcct, Boolean) method must be called, which will return a new FinAcctBal instance, derived from FinOrder. An FinOrderBuilder derived class needs only be created once and can be used to create any number of orders.
The second task of all FinOrderBuilder derived classes is to provide convenient access to the bank parameter data associated with their type of order. Derived classes usually make bank parameter data available as simple objcet properties.
Classes that derive from FinOrderBuilder must call Init(FinOrderSegmentInfo[]) in order to initialise the order builder.
Constructors
FinOrderBuilder(FinContact)
Declaration
protected FinOrderBuilder(FinContact aContact)
Parameters
Type | Name | Description |
---|---|---|
FinContact | aContact |
FinOrderBuilder(FinContact, FinAcctTypeClass)
Declaration
protected FinOrderBuilder(FinContact aContact, FinAcctTypeClass nAcctTypeClass)
Parameters
Type | Name | Description |
---|---|---|
FinContact | aContact | The contact for which the order builder shall create orders. This is used to get
the FinTS version, the bank parameter data and the user parameter data that are
in effect. This parameter must not be |
FinAcctTypeClass | nAcctTypeClass | Must be set to the preferred account type class of the implementing order. |
Properties
BankParamSegment
The bank parameter segment that was chosen for the type of order that this class will build.
Declaration
public FinSegment BankParamSegment { get; }
Property Value
Type | Description |
---|---|
FinSegment |
Contact
Declaration
public FinContact Contact { get; }
Property Value
Type | Description |
---|---|
FinContact |
FinTSVersion
The FinTS version that the chosen order segment version was designed for.
Declaration
public int FinTSVersion { get; }
Property Value
Type | Description |
---|---|
System.Int32 |
Remarks
This is not necessarily the FinTS version that will be used as the protocol version for the online dialog. The purpose of this information is to control the correct handling of FinTS version dependent idioms such as the security level and the subaccount characteristic.
IsSupported
Indicates whether the order type is supported by checking whether the requested BPD segment is available.
Declaration
public virtual bool IsSupported { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
MaxOrders
Maximum number of orders of this type that can be sent in a single FinTS message.
Declaration
public int MaxOrders { get; }
Property Value
Type | Description |
---|---|
System.Int32 | This is in the range from 1 through 999. |
MinSignatures
Minimum number of signatures required when sending an order of the derived type.
Declaration
public int MinSignatures { get; }
Property Value
Type | Description |
---|---|
System.Int32 | Usually this is only zero (for orders that can be sent without any signature) or one (for orders that have to be signed). The FinTS defined range is from zero through three. |
OrderSegmentInfo
The order segment information that was chosen by this builder.
Declaration
public FinOrderSegmentInfo OrderSegmentInfo { get; }
Property Value
Type | Description |
---|---|
FinOrderSegmentInfo |
OrderSegmentType
The order segment type that was chosen by this order builder.
Declaration
public string OrderSegmentType { get; }
Property Value
Type | Description |
---|---|
System.String |
ParameterCount
Provides the number of parameter GDs that are given in the BPD segment for this order type.
Declaration
public int ParameterCount { get; }
Property Value
Type | Description |
---|---|
System.Int32 | This will be zero until initialised. |
ParameterDEG
Provides the DEG group position where the parameters can be found inside the BPD segment of this order type.
Declaration
public int ParameterDEG { get; }
Property Value
Type | Description |
---|---|
System.Int32 | This is usually 4 for all HBCI versions up to HBCI 2.2 and 5 for FinTS 3.0. It is zero until initialised. |
ParamSegmentType
The parameter segment type that was chosen by this order builder.
Declaration
public string ParamSegmentType { get; }
Property Value
Type | Description |
---|---|
System.String |
SecurityLevel
Required security level for sending an order of the derived type.
Declaration
public int SecurityLevel { get; }
Property Value
Type | Description |
---|---|
System.Int32 | The concept of security levels is currently only defined for FinTS 3.0. |
SegmentVersion
The segment version that was chosen by this order builder.
Declaration
public int SegmentVersion { get; }
Property Value
Type | Description |
---|---|
System.Int32 |
SepaDomesticAcctAllowed
Indicates whether the domestic account information is allowed in an international account data element group.
Declaration
protected bool SepaDomesticAcctAllowed { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Remarks
This is a conveniece for easy access of this.Contact.SepaAcctInfoBuilder.DomesticAcctAllowed.
SepaOrderCustAcct
Indicates whether this order builder needs a SEPA ordering account.
Declaration
public bool SepaOrderCustAcct { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
TanRequired
Indicates whether a TAN is required when sending an order of the derived type.
Declaration
public bool TanRequired { get; }
Property Value
Type | Description |
---|---|
System.Boolean | If this is , then a TAN is required, if this is
, then no TAN is required. In the latter case, there is still
a PIN required, unless MinSignatures is zero, too. |
TanSecuritySupported
Indicates whether an order of the derived type may be sent using PIN/TAN security.
Declaration
public bool TanSecuritySupported { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Methods
AugmentSubAcctCharacteristic(FinAcct)
If needed, then try to augment the sub-account-characteristic from the UPD.
Declaration
protected void AugmentSubAcctCharacteristic(FinAcct aAcct)
Parameters
Type | Name | Description |
---|---|---|
FinAcct | aAcct |
BuildOrderSegment()
Builds a completely uninitialised order segment of an appropriate type.
Declaration
protected FinSegment BuildOrderSegment()
Returns
Type | Description |
---|---|
FinSegment | Returns a new instance of an FinSegment. |
Remarks
This method is mainly of interest to derived classes and isn't usually called directly by application code.
BuildOrderSegment(FinAcct)
Builds an order segment of an appropriate type initialised with the given ordering account.
Declaration
protected virtual FinSegment BuildOrderSegment(FinAcct aOrderAcct)
Parameters
Type | Name | Description |
---|---|---|
FinAcct | aOrderAcct | Optional ordering customer account. If this is not |
Returns
Type | Description |
---|---|
FinSegment | Returns a new instance of an FinSegment. |
Remarks
This method is mainly of interest to derived classes and isn't usually called directly by application code.
Exceptions
Type | Condition |
---|---|
System.InvalidOperationException | This FinOrderBuilder instance was not initialised, or the order type is not supported. |
FindParameterSegment(FinOrderSegmentInfo)
Find an exactly matching parameter segment.
Declaration
protected FinSegment FindParameterSegment(FinOrderSegmentInfo aSegInfo)
Parameters
Type | Name | Description |
---|---|---|
FinOrderSegmentInfo | aSegInfo |
Returns
Type | Description |
---|---|
FinSegment |
GetAmountParameter(Int32)
Returns the amount MVE that starts at the given position inside the BPD segments parameter group.
Declaration
public SwiftAmt GetAmountParameter(int nGD)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | nGD |
Returns
Type | Description |
---|---|
SwiftAmt | If the MVE is empty, then this returned NullAmt. |
GetBoolParameter(Int32)
Returns the boolean element from the given position inside the BPD segments parameter group.
Declaration
public bool GetBoolParameter(int nGD)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | nGD |
Returns
Type | Description |
---|---|
System.Boolean |
GetIntegerParameter(Int32)
Returns the integer element from the given position inside the BPD segments parameter group.
Declaration
public int GetIntegerParameter(int nGD)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | nGD |
Returns
Type | Description |
---|---|
System.Int32 |
GetStringParameter(Int32)
Returns the string element from the given position inside the BPD segments parameter group.
Declaration
public string GetStringParameter(int nGD)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | nGD |
Returns
Type | Description |
---|---|
System.String |
Init(FinOrderSegmentInfo, FinSegment)
For internal use only.
Declaration
protected void Init(FinOrderSegmentInfo aOrderSegmentInfo, FinSegment aBankParamSegment)
Parameters
Type | Name | Description |
---|---|---|
FinOrderSegmentInfo | aOrderSegmentInfo | The chosen order segment info. |
FinSegment | aBankParamSegment | The choden bank parameter segment. |
Init(FinOrderSegmentInfo[])
Must be called by derived classes in order to initialise this base class.
Declaration
protected bool Init(FinOrderSegmentInfo[] vaSegmentInfos)
Parameters
Type | Name | Description |
---|---|---|
FinOrderSegmentInfo[] | vaSegmentInfos | An array with information about the order segment types that are supported by the
derived implementation. This array is matched against the bank parameter data in
order to find the best possible order segment type. This array should contain
order segment types in decreasing order of preference. This parameter must not be
|
Returns
Type | Description |
---|---|
System.Boolean | If a matching parameter segment was found, then |
Remarks
The FinTS version that is used by the dialog for which this order builder shall build suitable order segments is taken from the contact object. The order builder uses this FinTS version in order to find the optimal parameter segment version based on the bank parameter data.