from .segments.dialog import HISYN4, HKSYN3
from .segments.debit import HKDSE1, HKDSE2, HKDME1, HKDME2, HKDMC1, HKDBS1, HKDBS2, HKDMB1
from .segments.saldo import HKSAL5, HKSAL6, HKSAL7
-from .segments.statement import HKKAZ5, HKKAZ6, HKKAZ7
+from .segments.statement import HKKAZ5, HKKAZ6, HKKAZ7, DKKKU2
from .segments.transfer import HKCCM1, HKCCS1
from .segments.journal import HKPRO3, HKPRO4
from .types import SegmentSequence
return statement
+ def get_credit_card_statement(self, account: SEPAAccount, credit_card_number: str, start_date: datetime.date, end_date: datetime.date):
+ # FIXME Reverse engineered, probably wrong
+ with self._get_dialog() as dialog:
+ dkkku = self._find_highest_supported_command(DKKKU2)
+
+ responses = self._fetch_with_touchdowns(
+ dialog,
+ lambda touchdown: dkkku(
+ account=dkkku._fields['account'].type.from_sepa_account(account) if account else None,
+ credit_card_number=credit_card_number,
+ date_start=start_date,
+ date_end=end_date,
+ touchdown_point=touchdown,
+ ),
+ 'DIKKU'
+ )
+
+ return responses
+
def get_balance(self, account: SEPAAccount):
"""
Fetches an accounts current balance.
max_number_responses_allowed = DataElementField(type='jn', _d="Eingabe Anzahl Einträge erlaubt")
date_range_allowed = DataElementField(type='jn', _d="Zeitraum möglich")
+class QueryCreditCardStatements2(DataElementGroup):
+ """Parameter Kreditkartenumsätze anfordern, version 2
+
+ Source: reverse engineered"""
+ cutoff_days = DataElementField(type='num', max_length=4, _d="Maximale Vorhaltezeit der Umsätze")
+ max_number_responses_allowed = DataElementField(type='jn', _d="Eingabe Anzahl Einträge erlaubt")
+ date_range_allowed = DataElementField(type='jn', _d="Zeitraum möglich")
+
class SEPACCode1(RepresentableEnum):
REVERSAL = '1' #: Reversal
REVOCATION = '2' #: Revocation
from fints.fields import DataElementField, DataElementGroupField
from fints.formals import (
- KTI1, Account3, Account2
+ KTI1, Account3, Account2, QueryCreditCardStatements2
)
-from . import FinTS3Segment
+from . import FinTS3Segment, ParameterSegment
Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
statement_booked = DataElementField(type='bin', _d="Gebuchte Umsätze")
statement_pending = DataElementField(type='bin', required=False, _d="Nicht gebuchte Umsätze")
+
+
+class DKKKU2(FinTS3Segment):
+ """Kreditkartenumsätze anfordern, version 2
+
+ Source: Reverse engineered"""
+ account = DataElementGroupField(type=Account2, _d="Kontoverbindung Auftraggeber")
+ credit_card_number = DataElementField(type='an', _d="Kreditkartennummer")
+ subaccount = DataElementField(type='an', required=False, _d="Subaccount?")
+ date_start = DataElementField(type='dat', required=False, _d="Von Datum")
+ date_end = DataElementField(type='dat', required=False, _d="Bis Datum")
+ max_number_responses = DataElementField(type='num', max_length=4, required=False, _d="Maximale Anzahl Einträge")
+ touchdown_point = DataElementField(type='an', max_length=35, required=False, _d="Aufsetzpunkt")
+
+
+class DIKKU2(FinTS3Segment):
+ """Kreditkartenumsätze rückmelden, version 2
+
+ Source: Reverse engineered"""
+
+class DIKKUS2(ParameterSegment):
+ """Kreditkartenumsätze anfordern Parameter, version 2
+
+ Source: Reverse engineered"""
+ parameter = DataElementGroupField(type=QueryCreditCardStatements2, _d="Parameter Kreditkartenumsätze anfordern")