diff --git a/src/main/java/io/xlate/edi/internal/schema/SchemaReaderBase.java b/src/main/java/io/xlate/edi/internal/schema/SchemaReaderBase.java index 39acaa65..6c29178d 100644 --- a/src/main/java/io/xlate/edi/internal/schema/SchemaReaderBase.java +++ b/src/main/java/io/xlate/edi/internal/schema/SchemaReaderBase.java @@ -362,8 +362,10 @@ StructureType readComplexType(XMLStreamReader reader, if (event == XMLStreamConstants.START_ELEMENT) { requireElementStart(qnSyntax, reader); - readSyntax(reader, rules); - event = reader.nextTag(); + do { + readSyntax(reader, rules); + event = reader.nextTag(); + } while (event == XMLStreamConstants.START_ELEMENT && qnSyntax.equals(reader.getName())); } if (event == XMLStreamConstants.END_ELEMENT) { diff --git a/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaFactoryTest.java b/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaFactoryTest.java index 9354c32e..a3c4bbbb 100644 --- a/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaFactoryTest.java +++ b/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaFactoryTest.java @@ -223,4 +223,34 @@ public void testDiscriminatorMissingEnumeration() { assertNotNull(cause); assertEquals("Discriminator element does not specify value enumeration: 2.2", cause.getMessage()); } + + @Test + public void testInvalidSyntaxTypeValue() { + SchemaFactory factory = SchemaFactory.newFactory(); + InputStream stream = getClass().getResourceAsStream("/EDIFACT/fragment-uci-invalid-syntax-type.xml"); + EDISchemaException thrown = assertThrows(EDISchemaException.class, () -> factory.createSchema(stream)); + Throwable cause = thrown.getCause(); + assertNotNull(cause); + assertEquals("Invalid syntax 'type': [conditional-junk]", cause.getMessage()); + } + + @Test + public void testInvalidMinOccursValue() { + SchemaFactory factory = SchemaFactory.newFactory(); + InputStream stream = getClass().getResourceAsStream("/EDIFACT/fragment-uci-invalid-min-occurs.xml"); + EDISchemaException thrown = assertThrows(EDISchemaException.class, () -> factory.createSchema(stream)); + Throwable cause = thrown.getCause(); + assertNotNull(cause); + assertEquals("Invalid minOccurs", cause.getMessage()); + } + + @Test + public void testDuplicateElementTypeNames() { + SchemaFactory factory = SchemaFactory.newFactory(); + InputStream stream = getClass().getResourceAsStream("/EDIFACT/fragment-uci-duplicate-element-names.xml"); + EDISchemaException thrown = assertThrows(EDISchemaException.class, () -> factory.createSchema(stream)); + Throwable cause = thrown.getCause(); + assertNotNull(cause); + assertEquals("duplicate name: DE0004", cause.getMessage()); + } } diff --git a/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaTest.java b/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaTest.java index ae3cfa71..2d58a8aa 100644 --- a/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaTest.java +++ b/src/test/java/io/xlate/edi/internal/schema/StaEDISchemaTest.java @@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test; +import io.xlate.edi.schema.EDIComplexType; import io.xlate.edi.schema.EDISchemaException; import io.xlate.edi.schema.EDIType; @@ -69,4 +70,19 @@ public void testRootTypeIsInterchangeV3() throws EDISchemaException, XMLStreamEx assertEquals(EDIType.Type.INTERCHANGE, schema.getType(INTERCHANGE_V3).getType()); } + + @Test + public void testLoadV3TransactionMultipleSyntaxElements_EDIFACT_CONTRL() throws EDISchemaException, XMLStreamException, FactoryConfigurationError { + StaEDISchema schema = new StaEDISchema(INTERCHANGE_V3, TRANSACTION_V3); + InputStream schemaStream = getClass().getResourceAsStream("/EDIFACT/CONTRL-v4r02.xml"); + XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(schemaStream); + reader.nextTag(); // Pass by element + Map types = new SchemaReaderV3(reader).readTypes(); + schema.setTypes(types); + + assertEquals(EDIType.Type.TRANSACTION, schema.getType(TRANSACTION_V3).getType()); + assertEquals(4, ((EDIComplexType) schema.getType("UCF")).getSyntaxRules().size()); + assertEquals(4, ((EDIComplexType) schema.getType("UCI")).getSyntaxRules().size()); + assertEquals(7, ((EDIComplexType) schema.getType("UCM")).getSyntaxRules().size()); + } } diff --git a/src/test/resources/EDIFACT/CONTRL-v4r02.xml b/src/test/resources/EDIFACT/CONTRL-v4r02.xml new file mode 100644 index 00000000..9f0142c7 --- /dev/null +++ b/src/test/resources/EDIFACT/CONTRL-v4r02.xml @@ -0,0 +1,723 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 4 + 5 + 8 + 9 + 12 + 14 + 18 + 22 + 30 + 31 + 33 + 34 + 51 + 52 + 53 + 54 + 55 + 57 + 58 + 59 + 61 + 63 + 65 + 80 + 82 + 84 + 85 + 86 + 87 + 89 + 90 + 91 + 92 + 103 + 128 + 129 + 144 + 145 + 146 + 147 + 148 + 500 + 501 + 502 + Z01 + ZZZ + + + + + + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + CC + CE + EC + ED + EE + EN + ER + EU + EW + EX + IA + KE + LI + OD + RI + RT + UN + + + + + 1 + 2 + 4 + D + S + 88 + 89 + 90 + + + + + 1 + 2 + 00A + 00B + 01A + 01B + 01C + 02A + 02B + 03A + 03B + 04A + 04B + 05A + 05B + 06A + 06B + 07A + 07B + 08A + 08B + 09A + 09B + 10A + 10B + 11A + 11B + 12A + 12B + 13A + 13B + 14A + 14B + 15A + 15B + 16A + 16B + 17A + 17B + 18A + 18B + 19A + 902 + 911 + 912 + 921 + 932 + 93A + 94A + 94B + 95A + 95B + 96A + 96B + 97A + 97B + 98A + 98B + 99A + 99B + + + + + + + APERAK + AUTACK + AUTHOR + AVLREQ + AVLRSP + BALANC + BANSTA + BAPLIE + BERMAN + BMISRM + BOPBNK + BOPCUS + BOPDIR + BOPINF + BUSCRD + CALINF + CASINT + CASRES + CHACCO + CLASET + CNTCND + COACSU + COARRI + CODECO + CODENO + COEDOR + COHAOR + COLREQ + COMDIS + CONAPW + CONDPV + CONDRA + CONDRO + CONEST + CONITT + CONPVA + CONQVA + CONRPW + CONTEN + CONTRL + CONWQD + COPARN + COPAYM + COPINO + COPRAR + COREOR + COSTCO + COSTOR + CREADV + CREEXT + CREMUL + CUSCAR + CUSDEC + CUSEXP + CUSPED + CUSREP + CUSRES + DAPLOS + DEBADV + DEBMUL + DEBREC + DELFOR + DELJIT + DESADV + DESTIM + DGRECA + DIRDEB + DIRDEF + DMRDEF + DMSTAT + DOCADV + DOCAMA + DOCAMI + DOCAMR + DOCAPP + DOCARE + DOCINF + ENTREC + FINCAN + FINPAY + FINSTA + GENRAL + GESMES + GOVCBR + HANMOV + ICASRP + ICSOLI + IFCSUM + IFTCCA + IFTDGN + IFTFCC + IFTICL + IFTMAN + IFTMBC + IFTMBF + IFTMBP + IFTMCA + IFTMCS + IFTMIN + IFTRIN + IFTSAI + IFTSTA + IFTSTQ + IHCEBI + IHCLME + IMPDEF + INFCON + INFENT + INSDES + INSPRE + INSREQ + INSRPT + INVOIC + INVRPT + IPPOAD + IPPOMO + ISENDS + ITRRPT + JAPRES + JINFDE + JOBAPP + JOBCON + JOBMOD + JOBOFF + JUPREQ + KEYMAN + LEDGER + LREACT + LRECLM + MEDPID + MEDPRE + MEDREQ + MEDRPT + MEDRUC + MEQPOS + MOVINS + MSCONS + ORDCHG + ORDERS + ORDRSP + OSTENQ + OSTRPT + PARTIN + PASREQ + PASRSP + PAXLST + PAYDUC + PAYEXT + PAYMUL + PAYORD + PRICAT + PRIHIS + PROCST + PRODAT + PRODEX + PROINQ + PROSRV + PROTAP + PRPAID + QALITY + QUOTES + RDRMES + REBORD + RECADV + RECALC + RECECO + RECLAM + RECORD + REGENT + RELIST + REMADV + REPREM + REQDOC + REQOTE + RESETT + RESMSG + RESREQ + RESRSP + RETACC + RETANN + RETINS + RPCALL + SAFHAZ + SANCRT + SKDREQ + SKDUPD + SLSFCT + SLSRPT + SOCADE + SSIMOD + SSRECH + SSREGW + STATAC + STLRPT + SUPCOT + SUPMAN + SUPRES + TANSTA + TAXCON + TIQREQ + TIQRSP + TPFREP + TSDUPD + TUPREQ + TUPRSP + UTILMD + UTILTS + VATDEC + VERMAS + VESDEP + WASDIS + WKGRDC + WKGRRE + + + + + 4 + 7 + 8 + + + + + 2 + 7 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 28 + 29 + 30 + 32 + 33 + 35 + 36 + 37 + 39 + 40 + 45 + 46 + 47 + 48 + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + AJ + AK + AL + AM + AN + AO + AP + AQ + AR + AS + SECACK + SECAUT + + + + + UCD + UCF + UCI + UCM + UCS + UGH + UGT + UIB + UIH + UIR + UIT + UIZ + UNB + UNE + UNG + UNH + UNO + UNP + UNS + UNT + UNZ + USA + USB + USC + USD + USE + USF + USH + USL + USR + UST + USU + USX + USY + + + + + + + + + + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + + + 7 + 6 + 5 + + + 8 + 6 + 5 + 9 + + + 9 + 8 + 6 + 5 + + + + + + + + + + + + + + + + 6 + 5 + + + 7 + 6 + 5 + + + 8 + 6 + 5 + 9 + + + 9 + 8 + 6 + 5 + + + + + + + + + + + + + + + + + 1 + 7 + + + 1 + 2 + + + 7 + 8 + + + 5 + 4 + + + 6 + 5 + 4 + + + 9 + 5 + 4 + 10 + + + 10 + 9 + 5 + 4 + + + + + + + + + diff --git a/src/test/resources/EDIFACT/fragment-uci-duplicate-element-names.xml b/src/test/resources/EDIFACT/fragment-uci-duplicate-element-names.xml new file mode 100644 index 00000000..a1f5e34f --- /dev/null +++ b/src/test/resources/EDIFACT/fragment-uci-duplicate-element-names.xml @@ -0,0 +1,609 @@ + + + + + + + + + + + 1 + 4 + 5 + 8 + 9 + 12 + 14 + 18 + 22 + 30 + 31 + 33 + 34 + 51 + 52 + 53 + 54 + 55 + 57 + 58 + 59 + 61 + 63 + 65 + 80 + 82 + 84 + 85 + 86 + 87 + 89 + 90 + 91 + 92 + 103 + 128 + 129 + 144 + 145 + 146 + 147 + 148 + 500 + 501 + 502 + Z01 + ZZZ + + + + + + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + CC + CE + EC + ED + EE + EN + ER + EU + EW + EX + IA + KE + LI + OD + RI + RT + UN + + + + + 1 + 2 + 4 + D + S + 88 + 89 + 90 + + + + + 1 + 2 + 00A + 00B + 01A + 01B + 01C + 02A + 02B + 03A + 03B + 04A + 04B + 05A + 05B + 06A + 06B + 07A + 07B + 08A + 08B + 09A + 09B + 10A + 10B + 11A + 11B + 12A + 12B + 13A + 13B + 14A + 14B + 15A + 15B + 16A + 16B + 17A + 17B + 18A + 18B + 19A + 902 + 911 + 912 + 921 + 932 + 93A + 94A + 94B + 95A + 95B + 96A + 96B + 97A + 97B + 98A + 98B + 99A + 99B + + + + + + + APERAK + AUTACK + AUTHOR + AVLREQ + AVLRSP + BALANC + BANSTA + BAPLIE + BERMAN + BMISRM + BOPBNK + BOPCUS + BOPDIR + BOPINF + BUSCRD + CALINF + CASINT + CASRES + CHACCO + CLASET + CNTCND + COACSU + COARRI + CODECO + CODENO + COEDOR + COHAOR + COLREQ + COMDIS + CONAPW + CONDPV + CONDRA + CONDRO + CONEST + CONITT + CONPVA + CONQVA + CONRPW + CONTEN + CONTRL + CONWQD + COPARN + COPAYM + COPINO + COPRAR + COREOR + COSTCO + COSTOR + CREADV + CREEXT + CREMUL + CUSCAR + CUSDEC + CUSEXP + CUSPED + CUSREP + CUSRES + DAPLOS + DEBADV + DEBMUL + DEBREC + DELFOR + DELJIT + DESADV + DESTIM + DGRECA + DIRDEB + DIRDEF + DMRDEF + DMSTAT + DOCADV + DOCAMA + DOCAMI + DOCAMR + DOCAPP + DOCARE + DOCINF + ENTREC + FINCAN + FINPAY + FINSTA + GENRAL + GESMES + GOVCBR + HANMOV + ICASRP + ICSOLI + IFCSUM + IFTCCA + IFTDGN + IFTFCC + IFTICL + IFTMAN + IFTMBC + IFTMBF + IFTMBP + IFTMCA + IFTMCS + IFTMIN + IFTRIN + IFTSAI + IFTSTA + IFTSTQ + IHCEBI + IHCLME + IMPDEF + INFCON + INFENT + INSDES + INSPRE + INSREQ + INSRPT + INVOIC + INVRPT + IPPOAD + IPPOMO + ISENDS + ITRRPT + JAPRES + JINFDE + JOBAPP + JOBCON + JOBMOD + JOBOFF + JUPREQ + KEYMAN + LEDGER + LREACT + LRECLM + MEDPID + MEDPRE + MEDREQ + MEDRPT + MEDRUC + MEQPOS + MOVINS + MSCONS + ORDCHG + ORDERS + ORDRSP + OSTENQ + OSTRPT + PARTIN + PASREQ + PASRSP + PAXLST + PAYDUC + PAYEXT + PAYMUL + PAYORD + PRICAT + PRIHIS + PROCST + PRODAT + PRODEX + PROINQ + PROSRV + PROTAP + PRPAID + QALITY + QUOTES + RDRMES + REBORD + RECADV + RECALC + RECECO + RECLAM + RECORD + REGENT + RELIST + REMADV + REPREM + REQDOC + REQOTE + RESETT + RESMSG + RESREQ + RESRSP + RETACC + RETANN + RETINS + RPCALL + SAFHAZ + SANCRT + SKDREQ + SKDUPD + SLSFCT + SLSRPT + SOCADE + SSIMOD + SSRECH + SSREGW + STATAC + STLRPT + SUPCOT + SUPMAN + SUPRES + TANSTA + TAXCON + TIQREQ + TIQRSP + TPFREP + TSDUPD + TUPREQ + TUPRSP + UTILMD + UTILTS + VATDEC + VERMAS + VESDEP + WASDIS + WKGRDC + WKGRRE + + + + + 4 + 7 + 8 + + + + + 2 + 7 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 28 + 29 + 30 + 32 + 33 + 35 + 36 + 37 + 39 + 40 + 45 + 46 + 47 + 48 + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + AJ + AK + AL + AM + AN + AO + AP + AQ + AR + AS + SECACK + SECAUT + + + + + UCD + UCF + UCI + UCM + UCS + UGH + UGT + UIB + UIH + UIR + UIT + UIZ + UNB + UNE + UNG + UNH + UNO + UNP + UNS + UNT + UNZ + USA + USB + USC + USD + USE + USF + USH + USL + USR + UST + USU + USX + USY + + + + + + + + + + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + + + 7 + 6 + 5 + + + 8 + 6 + 5 + 9 + + + 9 + 8 + 6 + 5 + + + diff --git a/src/test/resources/EDIFACT/fragment-uci-invalid-min-occurs.xml b/src/test/resources/EDIFACT/fragment-uci-invalid-min-occurs.xml new file mode 100644 index 00000000..8a449899 --- /dev/null +++ b/src/test/resources/EDIFACT/fragment-uci-invalid-min-occurs.xml @@ -0,0 +1,609 @@ + + + + + + + + + + + 1 + 4 + 5 + 8 + 9 + 12 + 14 + 18 + 22 + 30 + 31 + 33 + 34 + 51 + 52 + 53 + 54 + 55 + 57 + 58 + 59 + 61 + 63 + 65 + 80 + 82 + 84 + 85 + 86 + 87 + 89 + 90 + 91 + 92 + 103 + 128 + 129 + 144 + 145 + 146 + 147 + 148 + 500 + 501 + 502 + Z01 + ZZZ + + + + + + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + CC + CE + EC + ED + EE + EN + ER + EU + EW + EX + IA + KE + LI + OD + RI + RT + UN + + + + + 1 + 2 + 4 + D + S + 88 + 89 + 90 + + + + + 1 + 2 + 00A + 00B + 01A + 01B + 01C + 02A + 02B + 03A + 03B + 04A + 04B + 05A + 05B + 06A + 06B + 07A + 07B + 08A + 08B + 09A + 09B + 10A + 10B + 11A + 11B + 12A + 12B + 13A + 13B + 14A + 14B + 15A + 15B + 16A + 16B + 17A + 17B + 18A + 18B + 19A + 902 + 911 + 912 + 921 + 932 + 93A + 94A + 94B + 95A + 95B + 96A + 96B + 97A + 97B + 98A + 98B + 99A + 99B + + + + + + + APERAK + AUTACK + AUTHOR + AVLREQ + AVLRSP + BALANC + BANSTA + BAPLIE + BERMAN + BMISRM + BOPBNK + BOPCUS + BOPDIR + BOPINF + BUSCRD + CALINF + CASINT + CASRES + CHACCO + CLASET + CNTCND + COACSU + COARRI + CODECO + CODENO + COEDOR + COHAOR + COLREQ + COMDIS + CONAPW + CONDPV + CONDRA + CONDRO + CONEST + CONITT + CONPVA + CONQVA + CONRPW + CONTEN + CONTRL + CONWQD + COPARN + COPAYM + COPINO + COPRAR + COREOR + COSTCO + COSTOR + CREADV + CREEXT + CREMUL + CUSCAR + CUSDEC + CUSEXP + CUSPED + CUSREP + CUSRES + DAPLOS + DEBADV + DEBMUL + DEBREC + DELFOR + DELJIT + DESADV + DESTIM + DGRECA + DIRDEB + DIRDEF + DMRDEF + DMSTAT + DOCADV + DOCAMA + DOCAMI + DOCAMR + DOCAPP + DOCARE + DOCINF + ENTREC + FINCAN + FINPAY + FINSTA + GENRAL + GESMES + GOVCBR + HANMOV + ICASRP + ICSOLI + IFCSUM + IFTCCA + IFTDGN + IFTFCC + IFTICL + IFTMAN + IFTMBC + IFTMBF + IFTMBP + IFTMCA + IFTMCS + IFTMIN + IFTRIN + IFTSAI + IFTSTA + IFTSTQ + IHCEBI + IHCLME + IMPDEF + INFCON + INFENT + INSDES + INSPRE + INSREQ + INSRPT + INVOIC + INVRPT + IPPOAD + IPPOMO + ISENDS + ITRRPT + JAPRES + JINFDE + JOBAPP + JOBCON + JOBMOD + JOBOFF + JUPREQ + KEYMAN + LEDGER + LREACT + LRECLM + MEDPID + MEDPRE + MEDREQ + MEDRPT + MEDRUC + MEQPOS + MOVINS + MSCONS + ORDCHG + ORDERS + ORDRSP + OSTENQ + OSTRPT + PARTIN + PASREQ + PASRSP + PAXLST + PAYDUC + PAYEXT + PAYMUL + PAYORD + PRICAT + PRIHIS + PROCST + PRODAT + PRODEX + PROINQ + PROSRV + PROTAP + PRPAID + QALITY + QUOTES + RDRMES + REBORD + RECADV + RECALC + RECECO + RECLAM + RECORD + REGENT + RELIST + REMADV + REPREM + REQDOC + REQOTE + RESETT + RESMSG + RESREQ + RESRSP + RETACC + RETANN + RETINS + RPCALL + SAFHAZ + SANCRT + SKDREQ + SKDUPD + SLSFCT + SLSRPT + SOCADE + SSIMOD + SSRECH + SSREGW + STATAC + STLRPT + SUPCOT + SUPMAN + SUPRES + TANSTA + TAXCON + TIQREQ + TIQRSP + TPFREP + TSDUPD + TUPREQ + TUPRSP + UTILMD + UTILTS + VATDEC + VERMAS + VESDEP + WASDIS + WKGRDC + WKGRRE + + + + + 4 + 7 + 8 + + + + + 2 + 7 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 28 + 29 + 30 + 32 + 33 + 35 + 36 + 37 + 39 + 40 + 45 + 46 + 47 + 48 + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + AJ + AK + AL + AM + AN + AO + AP + AQ + AR + AS + SECACK + SECAUT + + + + + UCD + UCF + UCI + UCM + UCS + UGH + UGT + UIB + UIH + UIR + UIT + UIZ + UNB + UNE + UNG + UNH + UNO + UNP + UNS + UNT + UNZ + USA + USB + USC + USD + USE + USF + USH + USL + USR + UST + USU + USX + USY + + + + + + + + + + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + + + 7 + 6 + 5 + + + 8 + 6 + 5 + 9 + + + 9 + 8 + 6 + 5 + + + diff --git a/src/test/resources/EDIFACT/fragment-uci-invalid-syntax-type.xml b/src/test/resources/EDIFACT/fragment-uci-invalid-syntax-type.xml new file mode 100644 index 00000000..c10b7fd6 --- /dev/null +++ b/src/test/resources/EDIFACT/fragment-uci-invalid-syntax-type.xml @@ -0,0 +1,609 @@ + + + + + + + + + + + 1 + 4 + 5 + 8 + 9 + 12 + 14 + 18 + 22 + 30 + 31 + 33 + 34 + 51 + 52 + 53 + 54 + 55 + 57 + 58 + 59 + 61 + 63 + 65 + 80 + 82 + 84 + 85 + 86 + 87 + 89 + 90 + 91 + 92 + 103 + 128 + 129 + 144 + 145 + 146 + 147 + 148 + 500 + 501 + 502 + Z01 + ZZZ + + + + + + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + CC + CE + EC + ED + EE + EN + ER + EU + EW + EX + IA + KE + LI + OD + RI + RT + UN + + + + + 1 + 2 + 4 + D + S + 88 + 89 + 90 + + + + + 1 + 2 + 00A + 00B + 01A + 01B + 01C + 02A + 02B + 03A + 03B + 04A + 04B + 05A + 05B + 06A + 06B + 07A + 07B + 08A + 08B + 09A + 09B + 10A + 10B + 11A + 11B + 12A + 12B + 13A + 13B + 14A + 14B + 15A + 15B + 16A + 16B + 17A + 17B + 18A + 18B + 19A + 902 + 911 + 912 + 921 + 932 + 93A + 94A + 94B + 95A + 95B + 96A + 96B + 97A + 97B + 98A + 98B + 99A + 99B + + + + + + + APERAK + AUTACK + AUTHOR + AVLREQ + AVLRSP + BALANC + BANSTA + BAPLIE + BERMAN + BMISRM + BOPBNK + BOPCUS + BOPDIR + BOPINF + BUSCRD + CALINF + CASINT + CASRES + CHACCO + CLASET + CNTCND + COACSU + COARRI + CODECO + CODENO + COEDOR + COHAOR + COLREQ + COMDIS + CONAPW + CONDPV + CONDRA + CONDRO + CONEST + CONITT + CONPVA + CONQVA + CONRPW + CONTEN + CONTRL + CONWQD + COPARN + COPAYM + COPINO + COPRAR + COREOR + COSTCO + COSTOR + CREADV + CREEXT + CREMUL + CUSCAR + CUSDEC + CUSEXP + CUSPED + CUSREP + CUSRES + DAPLOS + DEBADV + DEBMUL + DEBREC + DELFOR + DELJIT + DESADV + DESTIM + DGRECA + DIRDEB + DIRDEF + DMRDEF + DMSTAT + DOCADV + DOCAMA + DOCAMI + DOCAMR + DOCAPP + DOCARE + DOCINF + ENTREC + FINCAN + FINPAY + FINSTA + GENRAL + GESMES + GOVCBR + HANMOV + ICASRP + ICSOLI + IFCSUM + IFTCCA + IFTDGN + IFTFCC + IFTICL + IFTMAN + IFTMBC + IFTMBF + IFTMBP + IFTMCA + IFTMCS + IFTMIN + IFTRIN + IFTSAI + IFTSTA + IFTSTQ + IHCEBI + IHCLME + IMPDEF + INFCON + INFENT + INSDES + INSPRE + INSREQ + INSRPT + INVOIC + INVRPT + IPPOAD + IPPOMO + ISENDS + ITRRPT + JAPRES + JINFDE + JOBAPP + JOBCON + JOBMOD + JOBOFF + JUPREQ + KEYMAN + LEDGER + LREACT + LRECLM + MEDPID + MEDPRE + MEDREQ + MEDRPT + MEDRUC + MEQPOS + MOVINS + MSCONS + ORDCHG + ORDERS + ORDRSP + OSTENQ + OSTRPT + PARTIN + PASREQ + PASRSP + PAXLST + PAYDUC + PAYEXT + PAYMUL + PAYORD + PRICAT + PRIHIS + PROCST + PRODAT + PRODEX + PROINQ + PROSRV + PROTAP + PRPAID + QALITY + QUOTES + RDRMES + REBORD + RECADV + RECALC + RECECO + RECLAM + RECORD + REGENT + RELIST + REMADV + REPREM + REQDOC + REQOTE + RESETT + RESMSG + RESREQ + RESRSP + RETACC + RETANN + RETINS + RPCALL + SAFHAZ + SANCRT + SKDREQ + SKDUPD + SLSFCT + SLSRPT + SOCADE + SSIMOD + SSRECH + SSREGW + STATAC + STLRPT + SUPCOT + SUPMAN + SUPRES + TANSTA + TAXCON + TIQREQ + TIQRSP + TPFREP + TSDUPD + TUPREQ + TUPRSP + UTILMD + UTILTS + VATDEC + VERMAS + VESDEP + WASDIS + WKGRDC + WKGRRE + + + + + 4 + 7 + 8 + + + + + 2 + 7 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 28 + 29 + 30 + 32 + 33 + 35 + 36 + 37 + 39 + 40 + 45 + 46 + 47 + 48 + + + + + + + + + AA + AB + AC + AD + AE + AF + AG + AH + AI + AJ + AK + AL + AM + AN + AO + AP + AQ + AR + AS + SECACK + SECAUT + + + + + UCD + UCF + UCI + UCM + UCS + UGH + UGT + UIB + UIH + UIR + UIT + UIZ + UNB + UNE + UNG + UNH + UNO + UNP + UNS + UNT + UNZ + USA + USB + USC + USD + USE + USF + USH + USL + USR + UST + USU + USX + USY + + + + + + + + + + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + + + 7 + 6 + 5 + + + 8 + 6 + 5 + 9 + + + 9 + 8 + 6 + 5 + + +