{
"generated_at": "2026-03-12T10:18:43Z",
"ahb_file": "INVOIC_AHB_2_5d_Fehlerkorrektur_20250623.xml",
"format_version": "FV2504",
"conditions": {
"946": {
"confidence": "high",
"reasoning": "Format: max 11 Nachkommastellen means at most 11 decimal places. Applied to QTY value element (elements[0][1]) following standard INVOIC QTY format validation pattern.",
"description_hash": "425779e5",
"is_external": false
},
"51": {
"confidence": "medium",
"reasoning": "DTM+156 in SG26 (Positionsbezogener Abrechnungszeitraum Ende) uses format 303 (CCYYMMDDHHMM). January 1, 2023 at 00:00 = \"202301010000\". Without SG26-scoped group navigation, message-wide search is used; qualifier 156 in the SG26 context is distinct from the message-level 156, but without group navigation this is the best available approximation.",
"description_hash": "d2f3560d",
"is_external": false
},
"71": {
"confidence": "medium",
"reasoning": "DTM+155 means elements[0][0]==\"155\". Value is at elements[0][1] in 303 format (YYYYMMDDhhmm). String comparison works for chronological ordering. Timezone nuance (German legal time) ignored — medium confidence.",
"description_hash": "5f8d5d31",
"is_external": false
},
"513": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing the calculation (MOA+25 * PCD+3). Always returns True.",
"description_hash": "4c166d4b",
"is_external": false
},
"902": {
"confidence": "medium",
"reasoning": "Format condition requiring value >= 0, applied to MOA amount (DE5004 at elements[0][1]). Medium confidence because exact segment/group context is inferred from INVOIC structure — the full AHB table row would clarify which specific MOA qualifier this applies to.",
"description_hash": "08daa39a",
"is_external": false
},
"70": {
"confidence": "high",
"reasoning": "IMD++Z45 means elements[0] is empty and elements[1][0]==\"Z45\". Absence check: return True when no such IMD exists.",
"description_hash": "52af55d5",
"is_external": false
},
"3": {
"confidence": "low",
"reasoning": "Whether a line item concerns a device purchase (Kauf) is a contract-type business context attribute, the mirror of condition [2]. Like [2], it depends on external contract type classification that cannot be reliably inferred from the EDIFACT message segments alone without authoritative product-type qualifiers.",
"description_hash": "5786b322",
"is_external": true
},
"66": {
"confidence": "high",
"reasoning": "IMD++KON means elements[1][0]=='KON'. has_qualifier checks this directly.",
"description_hash": "283866f7",
"is_external": false
},
"933": {
"confidence": "high",
"reasoning": "Format condition: HHMM = 2300 checks that the time portion of a DTM value equals 2300. Uses validate_hhmm_equals helper.",
"description_hash": "b5e9c81e",
"is_external": false
},
"521": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation documenting the origin of BGM DE1004. Always returns True.",
"description_hash": "0ce89b2d",
"is_external": false
},
"908": {
"confidence": "medium",
"reasoning": "Format condition requiring value in range 1..n (strictly positive). Applied to QTY quantity values in INVOIC (DE6060 at elements[0][1]). Medium confidence — the exact segment context depends on the full AHB table row.",
"description_hash": "f0e2a917",
"is_external": false
},
"523": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing the usage of the Steuerbare Ressource ID. Always returns True.",
"description_hash": "9dd0a791",
"is_external": false
},
"14": {
"confidence": "high",
"reasoning": "LIN segment DE7140 (Produkt-/Leistungsnummer) at elements[2][0]. LIN is the entry segment of SG26, so checking all LIN segments is equivalent to checking all SG26 instances. The specific value '9990001000748' identifies 'Mehrmenge'.",
"description_hash": "620d0a10",
"is_external": false
},
"19": {
"confidence": "high",
"reasoning": "IMD++WIM notation means elements[0] is empty, elements[1][0]='WIM'. has_qualifier checks presence.",
"description_hash": "614348d3",
"is_external": false
},
"937": {
"confidence": "high",
"reasoning": "Format: keine Nachkommastelle means no decimal places allowed (max 0). Applied to QTY value element (elements[0][1]) following standard INVOIC QTY format validation pattern.",
"description_hash": "e3f49bb8",
"is_external": false
},
"932": {
"confidence": "high",
"reasoning": "Format condition: HHMM = 2200 checks that the time portion of a DTM value equals 2200. Uses validate_hhmm_equals helper.",
"description_hash": "943b98c4",
"is_external": false
},
"4": {
"confidence": "medium",
"reasoning": "\"Wenn Steuerschuldnerschaft des Leistungsempfängers vorliegt\" is the reverse charge mechanism. In UN/EDIFACT INVOIC, TAX category code \"AE\" (VAT Reverse Charge) signals this. The TAX segment composite C241 component 3 holds the tax category code. Medium confidence because element indices are derived from standard UN/EDIFACT TAX structure without a specific MIG segment structure reference to confirm the exact index for this INVOIC variant.",
"description_hash": "7206c88b",
"is_external": false
},
"524": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation about cardinality constraint on DE3148. Always returns True.",
"description_hash": "b7cc061b",
"is_external": false
},
"2": {
"confidence": "low",
"reasoning": "Whether a line item concerns a device lease/rental (Nutzungsüberlassung/Pacht) is a contract-type business context attribute. While it might be encoded in product codes (PIA/IMD), the specific qualifiers distinguishing Pacht from other transaction types in INVOIC are not determinable without the segment structure reference and would depend on external contract classification.",
"description_hash": "3718fe38",
"is_external": true
},
"26": {
"confidence": "high",
"reasoning": "ALC+A+:Z04: elements[0][0]='A' (Abschlag qualifier), elements[1][1]='Z04' (C552 DE5189 code). Finds ALC segments with qualifier 'A' and checks C552 component index 1 for 'Z04'.",
"description_hash": "955e44b2",
"is_external": false
},
"76": {
"confidence": "medium",
"reasoning": "Whether the MP-ID in NAD+MR has the market role NB (Netzbetreiber) cannot be determined from the EDIFACT message alone — it requires a business registry lookup. The NAD+MR segment only provides the party identifier, not the assigned market role.",
"description_hash": "12bec70f",
"is_external": true
},
"11": {
"confidence": "medium",
"reasoning": "Whether a deposit/advance payment (Abschlag) applies is business context that cannot be determined from the EDIFACT message structure alone — it depends on the contract type and billing arrangement.",
"description_hash": "571394bc",
"is_external": true
},
"518": {
"confidence": "high",
"reasoning": "Hinweis: informational note explaining date semantics in various cancellation/blocking scenarios — always applies unconditionally",
"description_hash": "58711851",
"is_external": false
},
"12": {
"confidence": "high",
"reasoning": "QTY+136 (zeitliche Mengenangaben) presence check. QTY qualifier at elements[0][0]. Message-wide check is equivalent to SG26-scoped since QTY only appears in SG26.",
"description_hash": "e11f4176",
"is_external": false
},
"6": {
"confidence": "high",
"reasoning": "NAD+MR segment: qualifier at elements[0][0]='MR', DE3207 (Ländername) at elements[8][0]. Check if value equals 'DE'.",
"description_hash": "fdaa8c18",
"is_external": false
},
"504": {
"confidence": "high",
"reasoning": "Hinweis: informational annotation describing that a positive amount is a claim of the invoice recipient. Always applies unconditionally.",
"description_hash": "c7cceae1",
"is_external": false
},
"44": {
"confidence": "high",
"reasoning": "Negation of IMD++ABS: True when no IMD segment has elements[1][0]=\"ABS\" (DE7081 in C272).",
"description_hash": "9a22eb87",
"is_external": false
},
"54": {
"confidence": "high",
"reasoning": "IMD++ABR/JVR/ZVR means elements[1][0] is one of the three codes. Iterates all IMD segments and checks element 1 component 0.",
"description_hash": "8c9d8169",
"is_external": false
},
"84": {
"confidence": "high",
"reasoning": "ALC+C+:Z02/Z03/Z04 means elements[0][0]==\"C\" (DE5463 qualifier) and elements[1][1] (DE5189 code) in [Z02, Z03, Z04]. Group-scoped to SG39. any_group_has_qualified_value filters by qualifier 'C' at element 0 and checks element 1 component 1.",
"description_hash": "20fe51ca",
"is_external": false
},
"50": {
"confidence": "high",
"reasoning": "Negation of IMD++SOR check: True when no IMD segment has elements[1][0]=\"SOR\" (DE7081 in C272).",
"description_hash": "a6b84f4b",
"is_external": false
},
"939": {
"confidence": "high",
"reasoning": "Format: string must contain @ and . characters — standard email validation. Applied to COM segment elements[0][0] which holds the communication value.",
"description_hash": "05a09b9a",
"is_external": false
},
"67": {
"confidence": "low",
"reasoning": "References an external code list in 'Kapitel 2 Codeliste der Artikelnummer' — valid Artikelnummern per PID are defined in a specification document, not derivable from the EDIFACT message content. This requires external lookup against the allowlist for the current Prüfidentifikator.",
"description_hash": "3d841aee",
"is_external": true
},
"49": {
"confidence": "high",
"reasoning": "True when neither IMD++Z43 nor IMD++Z44 are present anywhere in the message. Both absence checks applied with logical AND.",
"description_hash": "75f9e09a",
"is_external": false
},
"88": {
"confidence": "high",
"reasoning": "DTM+155 is Abrechnungszeitraum Beginn. Per segment structure, elements[0][0]=qualifier, elements[0][1]=date value. Compare first 8 chars of the date value (CCYYMMDD) against 20260101.",
"description_hash": "ff135781",
"is_external": false
},
"82": {
"confidence": "medium",
"reasoning": "Same pattern as condition 78. 'GEI+Z05' refers to elements[1][0]==\"Z05\".",
"description_hash": "c69a0d8b",
"is_external": false
},
"940": {
"confidence": "high",
"reasoning": "Format: string must start with + followed only by digits — standard phone number validation. Applied to COM segment elements[0][0] which holds the communication value.",
"description_hash": "de8363bc",
"is_external": false
},
"960": {
"confidence": "high",
"reasoning": "Netzlokations-ID uses the same 11-digit Luhn check digit format as Marktlokations-ID. LOC+Z18 is the qualifier for Netzlokation.",
"description_hash": "0ce0bd80",
"is_external": false
},
"912": {
"confidence": "high",
"reasoning": "Max 6 decimal places format check. In INVOIC, energy quantities (QTY) commonly require up to 6 decimal places for precise kWh/MWh values. Uses validate_max_decimal_places helper directly.",
"description_hash": "8464aa40",
"is_external": false
},
"58": {
"confidence": "high",
"reasoning": "Checks if MOA+113 (Vorausbezahlter Betrag steuersatzbezogen) is present within the current SG52 group. MOA elements[0][0]=='113'.",
"description_hash": "575edf0a",
"is_external": false
},
"13": {
"confidence": "medium",
"reasoning": "Whether a prepaid amount (vorausbezahlter Betrag) is present is billing business context that cannot be derived solely from the EDIFACT segments in the message.",
"description_hash": "2e30256c",
"is_external": true
},
"86": {
"confidence": "medium",
"reasoning": "DE6411 is the unit of measure code in QTY segments at elements[0][2] (C186 component 2). 'In diesem Segment' means within the current QTY context. Check message-wide for QTY with MON or ANN unit code.",
"description_hash": "d3909c03",
"is_external": false
},
"5": {
"confidence": "high",
"reasoning": "NAD+MR segment: qualifier at elements[0][0]='MR', DE3207 (Ländername) at elements[8][0]. Check if value differs from 'DE'.",
"description_hash": "26bf9dc7",
"is_external": false
},
"10": {
"confidence": "medium",
"reasoning": "Both DTM+155 (Abrechnungszeitraum Beginn) and DTM+156 (Ende) must be absent in the SG26. Uses group navigator; both must be absent simultaneously for the condition to be True.",
"description_hash": "4c40aa9d",
"is_external": false
},
"17": {
"confidence": "high",
"reasoning": "Simple qualifier existence check: DTM segment with elements[0][0] == 'Z11' (Beginn Bilanzierung).",
"description_hash": "5ad7b867",
"is_external": false
},
"27": {
"confidence": "high",
"reasoning": "Simple qualifier check: ALC segment with elements[0][0] == 'C' (Zuschlag). The ALC reference confirms DE5463 qualifier 'C' for Zuschlag.",
"description_hash": "831db0d5",
"is_external": false
},
"56": {
"confidence": "medium",
"reasoning": "DTM+137 Nachrichtendatum >= 2023-01-01. Parses the date value (format 303 = YYYYMMDDHHmm) and compares the first 8 characters against '20230101'. String comparison is valid for ISO date format.",
"description_hash": "ac67fd9d",
"is_external": false
},
"509": {
"confidence": "high",
"reasoning": "Hinweis: informational annotation indicating this field contains the Marktlokation ID. Always applies unconditionally.",
"description_hash": "9727b89c",
"is_external": false
},
"510": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation about using the Messlokation ID. Always returns True.",
"description_hash": "d7954b75",
"is_external": false
},
"77": {
"confidence": "medium",
"reasoning": "SG26 DTM+156 means elements[0][0]==\"156\". Value at elements[0][1] in 303 format. Compare <= \"202401010000\" (Jan 1 2024 00:00). Medium confidence due to timezone nuance.",
"description_hash": "b3c72a0f",
"is_external": false
},
"512": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing how the amount value should be calculated. Always returns True.",
"description_hash": "9045f8f4",
"is_external": false
},
"45": {
"confidence": "medium",
"reasoning": "\"Nur MP-ID aus Sparte Strom\" means only market-participant IDs that belong to the electricity sector are allowed. Determining which IDs are registered for Sparte Strom requires an external code list or market master data lookup and cannot be inferred from the EDIFACT message content.",
"description_hash": "f3221dba",
"is_external": true
},
"9": {
"confidence": "medium",
"reasoning": "Checks whether any SG26 instance lacks DTM+203 (Ausführungsdatum). Uses group navigator when available, falling back to message-wide absence check. DTM qualifier at elements[0][0].",
"description_hash": "36e10c6e",
"is_external": false
},
"47": {
"confidence": "high",
"reasoning": "IMD++Z43 means elements[1][0]=\"Z43\" (DE7081 in C272 Produkt/Leistung). Iterate all IMD segments and check element[1][0].",
"description_hash": "770a1936",
"is_external": false
},
"930": {
"confidence": "high",
"reasoning": "Max 2 decimal places format check. Standard for monetary/price quantities in INVOIC. Direct use of validate_max_decimal_places helper as shown in Example 19.",
"description_hash": "30e8c861",
"is_external": false
},
"20": {
"confidence": "medium",
"reasoning": "MOA+9 is fälliger Betrag (due amount): elements[0][0]='9', elements[0][1]=amount. Parses the numeric value and checks >= 0.",
"description_hash": "036deaed",
"is_external": false
},
"31": {
"confidence": "high",
"reasoning": "Whether the NAD+MR party holds the MGV (Messstellenbetreiber Grundversorgung) role cannot be determined from the EDIFACT message alone — requires a market participant role registry lookup.",
"description_hash": "c1dfbcb6",
"is_external": true
},
"48": {
"confidence": "high",
"reasoning": "IMD++Z44 means elements[1][0]=\"Z44\" (DE7081 in C272 Produkt/Leistung). Iterate all IMD segments and check element[1][0].",
"description_hash": "85caeb66",
"is_external": false
},
"73": {
"confidence": "high",
"reasoning": "IMD++MSB means elements[1][0]==\"MSB\". Presence check across all IMD segments.",
"description_hash": "5207988e",
"is_external": false
},
"508": {
"confidence": "high",
"reasoning": "Hinweis: informational annotation indicating this field contains the document number of the QUOTES. Always applies unconditionally.",
"description_hash": "32ca2458",
"is_external": false
},
"491": {
"confidence": "high",
"reasoning": "Checks if the CCYYMMDD part of the DTM value falls within German winter time (MEZ, UTC+1) per Tabelle Kapitel 3.6. The is_mez_utc() helper implements exactly this — complement of MESZ period.",
"description_hash": "305e3493",
"is_external": false
},
"522": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing the usage of the Netzlokation ID. Always returns True.",
"description_hash": "9592f83e",
"is_external": false
},
"79": {
"confidence": "medium",
"reasoning": "Same pattern as condition 78. 'GEI+Z09' in AHB shorthand refers to elements[1][0]==\"Z09\".",
"description_hash": "d782362b",
"is_external": false
},
"525": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing the usage context for reduced network fees. Always returns True.",
"description_hash": "070cf83b",
"is_external": false
},
"950": {
"confidence": "high",
"reasoning": "Format: Marktlokations-ID — 11-digit ID with Luhn check digit. Applied to LOC+Z16 segment elements[1][0] which holds the location ID, matching the canonical example implementation.",
"description_hash": "a9ddfaec",
"is_external": false
},
"36": {
"confidence": "medium",
"reasoning": "DTM+156 (Abrechnungszeitraum Ende) uses format 303 (CCYYMMDDHHMM), so lexicographic string comparison is correct. German date 01.12.2019 = December 1, 2019 = \"201912010000\".",
"description_hash": "9c0662b6",
"is_external": false
},
"30": {
"confidence": "medium",
"reasoning": "'Wenn MP-ID in NAD+MR nicht in der Rolle MGV oder KN' requires knowledge of which market-participant IDs correspond to the MGV (Messstellenbetreiber Gasvertrieb) or KN (Kunde/Netz) roles. Role assignment is maintained in an external registry and cannot be determined from the NAD segment alone.",
"description_hash": "4d0e0eaf",
"is_external": true
},
"68": {
"confidence": "low",
"reasoning": "References an external code list in 'Kapitel 3 Codeliste der Gruppenartikel-ID und Artikel-ID' — only Artikel-IDs with 'X' in the INVOIC column are allowed. This requires external lookup against the specification code list document.",
"description_hash": "96d7b692",
"is_external": true
},
"961": {
"confidence": "high",
"reasoning": "SR-ID (SteuerbareRessource-ID) uses the same 11-digit Luhn check digit format as Marktlokations-ID. LOC+Z19 is the qualifier for SteuerbareRessource.",
"description_hash": "99d3e1d7",
"is_external": false
},
"501": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing that this field contains the document number of the ORDERS message. Not a boolean predicate; always applies unconditionally.",
"description_hash": "9c74b61f",
"is_external": false
},
"503": {
"confidence": "high",
"reasoning": "Hinweis: informational annotation describing that a positive amount is a claim of the invoice issuer. Always applies unconditionally.",
"description_hash": "bf3645c9",
"is_external": false
},
"515": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation about the BGM document number from the INVOIC message being cancelled. Always returns True.",
"description_hash": "338fc6af",
"is_external": false
},
"931": {
"confidence": "high",
"reasoning": "Format condition: ZZZ = +00 means the timezone suffix of a DTM value must be UTC (+00). Uses validate_timezone_utc helper.",
"description_hash": "825c510c",
"is_external": false
},
"74": {
"confidence": "high",
"reasoning": "COM segment: C076 composite at elements[0], where [0][0]=DE3148 (address) and [0][1]=DE3155 (channel qualifier). Check if any COM has DE3155==\"EM\".",
"description_hash": "eaf06e02",
"is_external": false
},
"934": {
"confidence": "high",
"reasoning": "Format condition: HHMM = 0400 checks that the time portion of a DTM value equals 0400. Uses validate_hhmm_equals helper.",
"description_hash": "d06a46c8",
"is_external": false
},
"34": {
"confidence": "medium",
"reasoning": "\"Wenn in Ursprungsrechnung vorhanden\" means the condition is met when the corresponding value was present in the referenced original invoice. That original document is not available inside the current EDIFACT message, so this is an external business-context check.",
"description_hash": "98f5aae7",
"is_external": true
},
"927": {
"confidence": "medium",
"reasoning": "Value must be exactly -1. Used for special indicator values (e.g., a reversal or placeholder quantity). validate_numeric with == operator handles exact match. Medium confidence due to segment assumption — the -1 constraint is unusual and the exact segment context (QTY vs MOA) depends on which AHB data element references this condition.",
"description_hash": "43d19cf7",
"is_external": false
},
"21": {
"confidence": "medium",
"reasoning": "MOA+9 is fälliger Betrag. Parses numeric value and checks < 0. Inverse of condition 20.",
"description_hash": "cd7aea7b",
"is_external": false
},
"25": {
"confidence": "low",
"reasoning": "Requires computing a date that is at most 10 Werktage (working days) after DTM+137 DE2380. Working-day calculation requires a German public-holiday calendar (which varies by Bundesland) and cannot be performed with the available API helpers. Marking as low confidence / null.",
"description_hash": "c8edcf61",
"is_external": false
},
"40": {
"confidence": "medium",
"reasoning": "Condition requires validating that the article number/ID appears in the external \"Codeliste der Artikelnummern und Artikel-ID\" for the given Prüfidentifikator. Code-list membership cannot be verified from the EDIFACT message structure alone; it is an external reference-data check.",
"description_hash": "861c8cfb",
"is_external": true
},
"514": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation about the document number of the Lieferschein-MSCONS. Always returns True.",
"description_hash": "7dc6dddf",
"is_external": false
},
"502": {
"confidence": "high",
"reasoning": "Hinweis condition — informational annotation describing that this field contains the document number of the Bilanzierungs-MSCONS message. Not a boolean predicate; always applies unconditionally.",
"description_hash": "c453e9ea",
"is_external": false
},
"7": {
"confidence": "low",
"reasoning": "'Großkundenpostleitzahl' (large-customer postal codes in Germany) are special 5-digit codes assigned to high-volume mail recipients. Determining whether a NAD postal code (C059/d3251) is in this category requires an external reference list or classification service — it cannot be determined from the EDIFACT message structure alone.",
"description_hash": "6cb26f7a",
"is_external": true
},
"16": {
"confidence": "medium",
"reasoning": "Whether network usage (Netznutzung) has occurred is business context that cannot be determined solely from the EDIFACT message content.",
"description_hash": "e13e2088",
"is_external": true
},
"64": {
"confidence": "medium",
"reasoning": "DTM+156 (Abrechnungszeitraum Ende) <= 2024-01-01 0:00. Same pattern as condition 57 but with threshold '20240101'.",
"description_hash": "c6f280a4",
"is_external": false
},
"15": {
"confidence": "medium",
"reasoning": "Whether a balancing (Bilanzierung) has occurred is operational/business context external to the EDIFACT message itself.",
"description_hash": "4ebc59b9",
"is_external": true
},
"61": {
"confidence": "high",
"reasoning": "DTM+203 where DE2379 (elements[0][2]) == '102'. has_qualified_value finds DTM with elements[0][0]=='203' then checks elements[0][2] for '102'.",
"description_hash": "c4ad47e4",
"is_external": false
},
"492": {
"confidence": "medium",
"reasoning": "Checks whether the NAD+MR (message recipient) MP-ID belongs to the electricity (Strom) sector. The NAD+MR element structure is known (elements[0]=MR, elements[1][0]=MP-ID), but sector membership cannot be determined from the EDIFACT message content alone — it requires an external market participant registry. Delegated to external provider.",
"description_hash": "7ef55690",
"is_external": true
},
"8": {
"confidence": "low",
"reasoning": "Whether prices are time-dependent (zeitabhängige Preise) is a pricing-arrangement attribute. While it might correlate with the presence of PRI validity-period DTM segments, the definitive classification of a price as time-dependent is a business/contract context decision that cannot be reliably derived from EDIFACT segment presence alone without the authoritative segment structure reference for INVOIC pricing groups.",
"description_hash": "fd4eefb1",
"is_external": true
},
"72": {
"confidence": "medium",
"reasoning": "Whether the MP-ID in NAD+MR has the market role LF (Lieferant) cannot be determined from the EDIFACT message alone — it requires a business registry lookup. The NAD+MR segment only provides the party identifier, not the assigned market role.",
"description_hash": "feeed1a1",
"is_external": true
},
"906": {
"confidence": "medium",
"reasoning": "Format condition requiring at most 3 decimal places. Most likely applies to MOA DE5004 (Geldbetrag) in INVOIC. Medium confidence — the exact MOA qualifier or group (SG27/SG42/SG50/SG52) depends on the AHB table row context not included in the condition description alone.",
"description_hash": "97bdb0c7",
"is_external": false
},
"32": {
"confidence": "high",
"reasoning": "ALC+A+:Z01 maps to elements[0]=\"A\" (DE5463 Qualifier) and elements[1][1]=\"Z01\" (DE5189 in C552 Zu-/Abschlagsinformation). has_qualified_value filters ALC segments by qualifier A then checks the DE5189 component.",
"description_hash": "a673e93a",
"is_external": false
},
"24": {
"confidence": "low",
"reasoning": "Condition requires calculating whether a date value is at least 10 Werktage (working days) after DTM+137 DE2380. Working-day arithmetic requires a German public holiday calendar, which is not available in the EvaluationContext API. Cannot implement accurately without external calendar data.",
"description_hash": "9d49bcae",
"is_external": false
},
"493": {
"confidence": "medium",
"reasoning": "Checks whether the NAD+MR (message recipient) MP-ID belongs to the gas (Gas) sector. Same reasoning as 492 — sector membership cannot be determined from the EDIFACT message alone; requires external market participant registry. Delegated to external provider.",
"description_hash": "4e00d72d",
"is_external": true
},
"80": {
"confidence": "medium",
"reasoning": "'GEI+Z01' refers to elements[1][0]==\"Z01\" (the specification code, not the fixed qualifier at elements[0]). Absence check.",
"description_hash": "7f9db965",
"is_external": false
},
"911": {
"confidence": "medium",
"reasoning": "Sequential numbering validation (1 to n, ascending) — only the >= 1 integer constraint can be checked on a single value. Full sequential ordering cannot be verified without stateful iteration across all instances. Applies to LIN line item numbers in INVOIC SG26. Medium confidence due to segment assumption and inability to verify sequential ordering in isolation.",
"description_hash": "d1f33af5",
"is_external": false
},
"951": {
"confidence": "high",
"reasoning": "Zählpunktbezeichnung (meter point ID) is a 33-character alphanumeric identifier. validate_zahlpunkt checks exactly this format.",
"description_hash": "f35fc481",
"is_external": false
},
"85": {
"confidence": "medium",
"reasoning": "DE6411 is the measurement unit code, appearing in QTY segments as C186 composite: elements[0][0]=DE6063 (qualifier), elements[0][1]=DE6060 (quantity), elements[0][2]=DE6411 (unit code). 'DAY' is the unit code for daily quantities. Medium confidence as the specific segment context ('in diesem Segment') may require group scoping.",
"description_hash": "7c165171",
"is_external": false
},
"526": {
"confidence": "high",
"reasoning": "Hinweis condition documenting cross-reference requirement between MOA+113 (Vorausbezahlter Betrag) and the corresponding MOA+77 in the predecessor invoice referenced via SG51 RFF+AFL. Purely informational, no boolean predicate.",
"description_hash": "79209a27",
"is_external": false
},
"520": {
"confidence": "high",
"reasoning": "Hinweis: informational note restricting article IDs to those from the price sheet — always applies unconditionally",
"description_hash": "4e248d7c",
"is_external": false
},
"910": {
"confidence": "medium",
"reasoning": "Format condition accepting any numeric value (< 0 OR >= 0 is universally true). This documents that the field accepts negative values (unlike condition 902 which restricts to >= 0). Validates the value is a parseable number. Medium confidence on the exact segment — likely a MOA that can be a credit/deduction amount.",
"description_hash": "063d57bb",
"is_external": false
},
"935": {
"confidence": "high",
"reasoning": "Format condition: HHMM = 0500 checks that the time portion of a DTM value equals 0500. Uses validate_hhmm_equals helper.",
"description_hash": "192bd97e",
"is_external": false
},
"29": {
"confidence": "medium",
"reasoning": "DTM+155 is Abrechnungszeitraum Beginn with format 303 (starts YYYYMMDD). 'nicht größer 31.12.2015' means <= 31.12.2015. Lexicographic comparison of 8-char ISO prefix is correct for this date format.",
"description_hash": "5dd951cc",
"is_external": false
},
"37": {
"confidence": "medium",
"reasoning": "\"Wenn Lieferschein zuvor ausgetauscht wurde\" depends on whether a delivery note (Lieferschein) was exchanged in a prior business transaction. This cannot be determined from the current EDIFACT message alone; it requires external business context.",
"description_hash": "5d7d44b3",
"is_external": true
},
"57": {
"confidence": "medium",
"reasoning": "DTM+156 (Abrechnungszeitraum Ende) <= 2023-01-01 0:00. Compares first 8 chars of date value against '20230101'. Returns True when the end date is on or before Jan 1 2023.",
"description_hash": "ed531486",
"is_external": false
},
"59": {
"confidence": "medium",
"reasoning": "SG26 DTM+155 (Positionsbezogener Abrechnungszeitraum Beginn) >= 2023-01-01 0:00. Finds DTM with qualifier 155 and compares first 8 chars of the date value against '20230101'.",
"description_hash": "8317e398",
"is_external": false
},
"22": {
"confidence": "high",
"reasoning": "'Wenn vorhanden' is a self-referential AHB condition meaning the rule applies whenever the annotated element is present. As an evaluator it is always True — the calling validator determines whether the element itself is present.",
"description_hash": "fae4710e",
"is_external": false
},
"516": {
"confidence": "high",
"reasoning": "Hinweis: informational note about delivery notes for invoices — always applies unconditionally",
"description_hash": "d85586dc",
"is_external": false
},
"69": {
"confidence": "low",
"reasoning": "References an external code list in 'Kapitel 3 Codeliste der Gruppenartikel-ID und Artikel-ID' — only Artikel-IDs with 'SOR' in the INVOIC column are allowed. This requires external lookup against the specification code list document.",
"description_hash": "7e037aad",
"is_external": true
},
"41": {
"confidence": "high",
"reasoning": "IMD++SOR means elements[0] is empty (Beschreibungsformat) and elements[1][0]=\"SOR\" (DE7081 in C272 Produkt/Leistung). Iterate all IMD segments and check element[1][0].",
"description_hash": "4ef0033a",
"is_external": false
},
"42": {
"confidence": "medium",
"reasoning": "DTM+155 (Abrechnungszeitraum Beginn) uses format 303 (CCYYMMDDHHMM). January 1, 2023 at 00:00 = \"202301010000\". Lexicographic comparison is correct for zero-padded CCYYMMDDHHMM.",
"description_hash": "92fa452f",
"is_external": false
},
"507": {
"confidence": "high",
"reasoning": "Hinweis: informational annotation indicating this field contains the document number of the SSQNOT. Always applies unconditionally.",
"description_hash": "07e90ff2",
"is_external": false
},
"81": {
"confidence": "medium",
"reasoning": "Same pattern as condition 78. 'GEI+Z04' refers to elements[1][0]==\"Z04\".",
"description_hash": "7dfe11c1",
"is_external": false
},
"914": {
"confidence": "high",
"reasoning": "Value must be strictly greater than 0. Straightforward numeric range check using validate_numeric helper. Applies to QTY quantities in INVOIC which must be positive values.",
"description_hash": "533e37f6",
"is_external": false
},
"23": {
"confidence": "medium",
"reasoning": "DE3124 resides in C058 at elements[2][0] for all NAD variants. 'Im selben NAD' means within the same NAD instance; evaluated message-wide as: any NAD where this component is absent or empty.",
"description_hash": "d0bec6ee",
"is_external": false
},
"53": {
"confidence": "high",
"reasoning": "IMD++Z45 means elements[0] is empty, elements[1][0] is the type code Z45. has_qualifier checks elements[1][0]=='Z45'.",
"description_hash": "f91215c4",
"is_external": false
},
"55": {
"confidence": "high",
"reasoning": "IMD++ABS means elements[1][0]=='ABS'. has_qualifier checks this directly.",
"description_hash": "b924e5b1",
"is_external": false
},
"60": {
"confidence": "high",
"reasoning": "DTM+203 where DE2379 (elements[0][2]) == '303'. has_qualified_value finds DTM with elements[0][0]=='203' then checks elements[0][2] for '303'.",
"description_hash": "d3e2721b",
"is_external": false
},
"78": {
"confidence": "medium",
"reasoning": "GEI schema shows elements[0] qualifier is always Z01, while the specification code is at elements[1][0] (DE7365) with codes Z01-Z06 +3 more. 'GEI+Z08' in AHB shorthand refers to elements[1][0]==\"Z08\". Absence check returns True when not found.",
"description_hash": "6e4f9538",
"is_external": false
},
"75": {
"confidence": "high",
"reasoning": "Same as condition 74 but checks DE3155 for codes TE, FX, AJ, or AL (telephone, fax, or electronic messaging channel types).",
"description_hash": "d9351e4d",
"is_external": false
},
"65": {
"confidence": "medium",
"reasoning": "SG26 DTM+155 (Positionsbezogener Abrechnungszeitraum Beginn) >= 2024-01-01 0:00. Same pattern as condition 59 but with threshold '20240101'.",
"description_hash": "cca1d5c7",
"is_external": false
},
"519": {
"confidence": "high",
"reasoning": "Hinweis: informational note stating cancelled advance invoices must not be listed — always applies unconditionally",
"description_hash": "7f163649",
"is_external": false
},
"28": {
"confidence": "medium",
"reasoning": "'Wenn Zuschlag anfällt' (if a surcharge applies) is a business-context determination that cannot be derived from EDIFACT segment content alone. It depends on contract terms or tariff configuration held outside the message.",
"description_hash": "3d3f61ca",
"is_external": true
},
"18": {
"confidence": "high",
"reasoning": "IMD++WIM notation means elements[0] is empty, elements[1][0]='WIM' (item characteristic code). lacks_qualifier checks for absence of any IMD with that value.",
"description_hash": "76ce13a0",
"is_external": false
},
"517": {
"confidence": "high",
"reasoning": "Hinweis: informational note describing the document number field — always applies unconditionally",
"description_hash": "d719ba07",
"is_external": false
},
"1": {
"confidence": "low",
"reasoning": "'Wenn in zu stornierender Rechnung gefüllt' means the condition depends on whether a specific field was populated in the original invoice being cancelled. This requires knowledge of the referenced original invoice's content, which is entirely external to the current EDIFACT message and cannot be determined from its segments alone.",
"description_hash": "a25cff5a",
"is_external": true
},
"490": {
"confidence": "high",
"reasoning": "Checks if the CCYYMMDD part of the DTM value falls within German summer time (MESZ, UTC+2) per Tabelle Kapitel 3.5. The is_mesz_utc() helper implements exactly this — EU DST rule from last Sunday of March 01:00 UTC to last Sunday of October 01:00 UTC.",
"description_hash": "b21c790d",
"is_external": false
}
}
}