from .segments.auth import HKTAB4, HKTAB5, HKTAN3, HKTAN5
from .segments.depot import HKWPD5, HKWPD6
from .segments.dialog import HISYN4, HKSYN3
-from .segments.debit import HKDSE1, HKDSE2, HKDME1, HKDME2, HKDMC1
+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.transfer import HKCCM1, HKCCS1
logger.debug('No HIWPD response segment found - maybe account has no holdings?')
return holdings
+ def get_scheduled_debits(self, account: SEPAAccount, multiple=False):
+ with self._get_dialog() as dialog:
+ if multiple:
+ command_classes = (HKDMB1, )
+ response_type = "HIDMB"
+ else:
+ command_classes = (HKDBS1, HKDBS2)
+ response_type = "HKDBS"
+
+ hkdbs = self._find_highest_supported_command(*command_classes)
+
+ responses = self._fetch_with_touchdowns(
+ dialog,
+ lambda touchdown: hkdbs(
+ account=hkdbs._fields['account'].type.from_sepa_account(account),
+ touchdown_point=touchdown,
+ ),
+ response_type,
+ )
+
+ return responses
+
def get_communication_endpoints(self):
with self._get_dialog() as dialog:
hkkom = self._find_highest_supported_command(HKKOM4)
supported_sepa_formats = DataElementField(type='an', max_length=256, max_count=9, required=False, _d="Unterstützte SEPA-Datenformate")
+class SupportedSEPAPainMessages1(DataElementGroup):
+ """Unterstützte SEPA pain messages, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ sepa_descriptors = DataElementField(type='an', max_length=256, max_count=99, _d="SEPA Descriptor")
+
+class QueryScheduledDebitParameter1(DataElementGroup):
+ """Parameter Bestand terminierter SEPA-Einzellastschriften, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ date_range_allowed = DataElementField(type='jn', _d="Zeitraum möglich")
+
+class QueryScheduledDebitParameter2(DataElementGroup):
+ """Parameter Bestand terminierter SEPA-Einzellastschriften, version 2
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ max_number_responses_allowed = DataElementField(type='jn', _d="Eingabe Anzahl Einträge erlaubt")
+ date_range_allowed = DataElementField(type='jn', _d="Zeitraum möglich")
+ supported_sepa_formats = DataElementField(type='an', max_length=256, max_count=9, required=False, _d="Unterstützte SEPA-Datenformate")
+
+class QueryScheduledBatchDebitParameter1(DataElementGroup):
+ """Parameter Bestand terminierter SEPA-Sammellastschriften, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ 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
+ DELETE = '3' #: Delete
+
+class StatusSEPATask1(RepresentableEnum):
+ ## FIXME Enum names in english
+ PENDING = '1' #: In Terminierung
+ DECLINED = '2' #: Abgelehnt von erster Inkassostelle
+ IN_PROGRESS = '3' #: in Bearbeitung
+ PROCESSED = '4' #: Creditoren-seitig verarbeitet, Buchung veranlasst
+ REVOKED = '5' #: R-Transaktion wurde veranlasst
from . import FinTS3Segment
from ..models import SEPAAccount
-from ..fields import DataElementField, DataElementGroupField
-from ..formals import ScheduledCOR1BatchDebitParameter1, KTI1, Amount1, ScheduledBatchDebitParameter1, ScheduledBatchDebitParameter2, ScheduledDebitParameter1, ScheduledDebitParameter2
+from ..fields import DataElementField, DataElementGroupField, CodeField
+from ..formals import ScheduledCOR1BatchDebitParameter1, KTI1, Amount1, ScheduledBatchDebitParameter1, ScheduledBatchDebitParameter2, ScheduledDebitParameter1, ScheduledDebitParameter2, SupportedSEPAPainMessages1, QueryScheduledDebitParameter1, QueryScheduledDebitParameter2, SEPACCode1, StatusSEPATask1, QueryScheduledBatchDebitParameter1
from . import ParameterSegment
class BatchDebitBase(FinTS3Segment):
Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
parameter = DataElementGroupField(type=ScheduledCOR1BatchDebitParameter1, _d="Parameter terminierte SEPA-COR1-Sammellastschrift")
+
+
+
+class HKDBS1(FinTS3Segment):
+ """Bestand terminierter SEPA-Einzellastschriften anfordern, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
+ supported_sepa_pain_messages = DataElementGroupField(type=SupportedSEPAPainMessages1, _d="Unterstützte SEPA pain messages")
+ 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 HIDBS1(DebitResponseBase):
+ """Bestand terminierter SEPA-Einzellastschriften rückmelden, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
+ sepa_descriptor = DataElementField(type='an', max_length=256, _d="SEPA Descriptor")
+ sepa_pain_message = DataElementField(type='bin', _d="SEPA pain message")
+ task_id = DataElementField(type='an', max_length=99, required=False, _d="Auftragsidentifikation")
+ task_cancelable = DataElementField(type='jn', required=False, _d="Auftrag löschbar")
+ task_changeable = DataElementField(type='jn', required=False, _d="Auftrag änderbar")
+
+class HIDBSS1(ParameterSegment):
+ """Bestand terminierter SEPA-Einzellastschriften Parameter, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ parameter = DataElementGroupField(type=QueryScheduledDebitParameter1, _d="Parameter Bestand terminierter SEPA-Einzellastschriften")
+
+
+
+class HKDBS2(FinTS3Segment):
+ """Bestand terminierter SEPA-Einzellastschriften anfordern, version 2
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
+ supported_sepa_pain_messages = DataElementGroupField(type=SupportedSEPAPainMessages1, _d="Unterstützte SEPA pain messages")
+ 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 HIDBS2(DebitResponseBase):
+ """Bestand terminierter SEPA-Einzellastschriften rückmelden, version 2
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
+ sepa_descriptor = DataElementField(type='an', max_length=256, _d="SEPA Descriptor")
+ sepa_pain_message = DataElementField(type='bin', _d="SEPA pain message")
+ task_id = DataElementField(type='an', max_length=99, required=False, _d="Auftragsidentifikation")
+ sepa_c_code = CodeField(enum=SEPACCode1, _d="SEPA-C-Code")
+ task_changeable = DataElementField(type='jn', required=False, _d="Auftrag änderbar")
+ status_sepa_task = CodeField(enum=StatusSEPATask1, _d="Status SEPA-Auftrag")
+
+class HIDBSS2(ParameterSegment):
+ """Bestand terminierter SEPA-Einzellastschriften Parameter, version 2
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ parameter = DataElementGroupField(type=QueryScheduledDebitParameter2, _d="Parameter Bestand terminierter SEPA-Einzellastschriften")
+
+
+
+class HKDMB1(FinTS3Segment):
+ """Bestand terminierter SEPA-Sammellastschriften anfordern, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
+ 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 HIDMB1(DebitResponseBase):
+ """Bestand terminierter SEPA-Sammellastschriften rückmelden, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ task_id = DataElementField(type='an', max_length=99, required=False, _d="Auftragsidentifikation")
+ account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
+ date_entered = DataElementField(type='dat', required=False, _d="Einreichungsdatum")
+ date_booked = DataElementField(type='dat', required=False, _d="Ausführungsdatum")
+ debit_count = DataElementField(type='num', max_length=6, _d="Anzahl der Aufträge")
+ sum_amount = DataElementGroupField(type=Amount1, _d="Summe der Beträge")
+
+class HIDMBS1(ParameterSegment):
+ """Bestand terminierter SEPA-Sammellastschriften Parameter, version 1
+
+ Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
+ parameter = DataElementGroupField(type=QueryScheduledBatchDebitParameter1, _d="Parameter Bestand terminierter SEPA-Sammellastschriften")
+
+
+