# Source code for fints.segments.debit

    from ..fields import CodeField, DataElementField, DataElementGroupField
    from ..formals import (
        KTI1, Amount1, QueryScheduledBatchDebitParameter1,
        QueryScheduledDebitParameter1, QueryScheduledDebitParameter2,
        ScheduledBatchDebitParameter1, ScheduledBatchDebitParameter2,
        ScheduledCOR1BatchDebitParameter1, ScheduledCOR1DebitParameter1,
        ScheduledDebitParameter1, ScheduledDebitParameter2, SEPACCode1,
        StatusSEPATask1, SupportedSEPAPainMessages1,
    )
    from .base import FinTS3Segment, ParameterSegment

    class BatchDebitBase(FinTS3Segment):
        account = DataElementGroupField(type=KTI1, _d="Kontoverbindung international")
        sum_amount = DataElementGroupField(type=Amount1, _d="Summenfeld")
        request_single_booking = DataElementField(type='jn', _d="Einzelbuchung gewünscht")
        sepa_descriptor = DataElementField(type='an', max_length=256, _d="SEPA Descriptor")
        sepa_pain_message = DataElementField(type='bin', _d="SEPA pain message")

    class DebitResponseBase(FinTS3Segment):
        task_id = DataElementField(type='an', max_length=99, required=False, _d="Auftragsidentifikation")

    class HKDSE1(FinTS3Segment):
        """Terminierte SEPA-Einzellastschrift einreichen, 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")

    class HIDSE1(DebitResponseBase):
        """Einreichung terminierter SEPA-Einzellastschrift bestätigen, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDSES1(ParameterSegment):
        """Terminierte SEPA-Einzellastschrift einreichen Parameter, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
        parameter = DataElementGroupField(type=ScheduledDebitParameter1, _d="Parameter terminierte SEPA-Sammellastschrift einreichen")

    class HKDSE2(FinTS3Segment):
        """Terminierte SEPA-Einzellastschrift einreichen, 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")

    class HIDSE2(DebitResponseBase):
        """Einreichung terminierter SEPA-Einzellastschrift bestätigen, version 2

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDSES2(ParameterSegment):
        """Terminierte SEPA-Einzellastschrift einreichen Parameter, version 2

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
        parameter = DataElementGroupField(type=ScheduledDebitParameter2, _d="Parameter terminierte SEPA-Sammellastschrift einreichen")

    class HKDME1(BatchDebitBase):
        """Einreichung terminierter SEPA-Sammellastschrift, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDME1(DebitResponseBase):
        """Einreichung terminierter SEPA-Sammellastschrift bestätigen, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDMES1(ParameterSegment):
        """Terminierte SEPA-Sammellastschrift einreichen Parameter, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
        parameter = DataElementGroupField(type=ScheduledBatchDebitParameter1, _d="Parameter terminierte SEPA-Sammellastschrift einreichen")

    class HKDME2(BatchDebitBase):
        """Einreichung terminierter SEPA-Sammellastschrift, version 2

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDME2(DebitResponseBase):
        """Einreichung terminierter SEPA-Sammellastschrift bestätigen, version 2

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDMES2(ParameterSegment):
        """Terminierte SEPA-Sammellastschrift einreichen Parameter, version 2

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
        parameter = DataElementGroupField(type=ScheduledBatchDebitParameter2, _d="Parameter terminierte SEPA-Sammellastschrift einreichen")

    class HKDSC1(FinTS3Segment):
        """Terminierte SEPA-COR1-Einzellastschrift einreichen, 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")

    class HIDSC1(DebitResponseBase):
        """Einreichung terminierter SEPA-COR1-Einzellastschrift bestätigen, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDSCS1(ParameterSegment):
        """Terminierte SEPA-COR1-Einzellastschrift Parameter, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """
        parameter = DataElementGroupField(type=ScheduledCOR1DebitParameter1, _d="Parameter terminierte SEPA-COR1-Einzellastschrift")

    class HKDMC1(BatchDebitBase):
        """Terminierte SEPA-COR1-Sammellastschrift einreichen, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDMC1(DebitResponseBase):
        """Einreichung terminierter SEPA-COR1-Sammellastschrift bestätigen, version 1

        Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Messages -- Multibankfähige Geschäftsvorfälle """

    class HIDMCS1(ParameterSegment):
        """Terminierte SEPA-COR1-Sammellastschrift Parameter, version 1

        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(FinTS3Segment):
        """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(FinTS3Segment):
        """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(FinTS3Segment):
        """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")