# Golden snapshot of the payload contracts. Regenerate with
#   SPEC_SNAPSHOT=overwrite cargo test -p tlx-sdk spec_snapshot
# Rules appear in declaration order; that order is part of the snapshot
# because it decides the order violations are reported in.

=== shape ETDA_V2

  etdaDocument: 36 rule(s)
    req Arr         MinItems(1)            exchangedDocumentContext.guidelineSpecifiedDocumentContextParameter
    req Str         NonEmpty               exchangedDocumentContext.guidelineSpecifiedDocumentContextParameter[].id
    req Str         NonEmpty               exchangedDocument.id
    req Str         NonEmpty               exchangedDocument.typeCode
    req Str         -                      exchangedDocument.issueDateTime
    req Arr         -                      exchangedDocument.name
    req Arr         -                      exchangedDocument.purposeCode
    req Str         NonEmpty               supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.name
    req Arr         -                      supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.globalID
    req Arr         MinItems(1)            supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.specifiedTaxRegistration
    req Str         Digits(13)             supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.specifiedTaxRegistration[].id
    req Str         NonEmpty               supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.postalTradeAddress.countryID
    req Str         NonEmpty               supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.name
    req Arr         -                      supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.globalID
    req Arr         MinItems(1)            supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.specifiedTaxRegistration
    req Str         Digits(13)             supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.specifiedTaxRegistration[].id
    req Str         NonEmpty               supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.postalTradeAddress.countryID
    req Arr         MinItems(1)            supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax
    req Arr         MinItems(1)            supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax[].calculatedAmount
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax[].calculatedAmount[].amount
    req Str         NonEmpty               supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax[].typeCode.listAgencyID
    req Str         NonEmpty               supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax[].typeCode.code
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax[].calculatedRate.rate
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.applicableTradeTax[].basisAmount[].amount
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.lineTotalAmount[].amount
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.taxBasisTotalAmount[].amount
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.taxTotalAmount[].amount
    req NumericStr  Min(0)                 supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount[].amount
    req Arr         MinItems(1)            supplyChainTradeTransaction.includedSupplyChainTradeLineItem
    req Str         NonEmpty               supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].associatedDocumentLineDocument.lineID
    req Str         NonEmpty               supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].specifiedTradeProduct.id
    req Arr         -                      supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].specifiedTradeProduct.name
    req NumericStr  Min(0)                 supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].specifiedLineTradeAgreement.grossPriceProductTradePrice.chargeAmount[].amount
    req NumericStr  Gt(0)                  supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].specifiedLineTradeDelivery.billedQuantity.quantity
    req Str         NonEmpty               supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].specifiedLineTradeDelivery.billedQuantity.unitCode
    req NumericStr  Min(0)                 supplyChainTradeTransaction.includedSupplyChainTradeLineItem[].specifiedLineTradeSettlement.specifiedTradeSettlementLineMonetarySummation.netLineTotalAmount[].amount

  etdaCatalogueItem: 11 rule(s)
    req Arr         MinItems(1)            etdaCatalogueItem
    req Str         NonEmpty               etdaCatalogueItem[].documentIdentification.instanceIdentifier
    req Str         NonEmpty               etdaCatalogueItem[].documentIdentification.type
    req Str         -                      etdaCatalogueItem[].documentIdentification.creationDateAndTime
    req Str         NonEmpty               etdaCatalogueItem[].sender.gln
    req Str         NonEmpty               etdaCatalogueItem[].receiver.gln
    req Str         NonEmpty               etdaCatalogueItem[].tradeItem.identification.companyTradeItemId.value
    req Arr         MinItems(1)            etdaCatalogueItem[].tradeItem.description.tradeItemName
    req Str         NonEmpty               etdaCatalogueItem[].tradeItem.description.tradeItemName[?].value
    req Str         NonEmpty               etdaCatalogueItem[].tradeItem.market.targetMarketCountryCode
    opt NumericStr  Min(0)                 etdaCatalogueItem[].tradeItem.commercial.cataloguePrice.value

=== cross-checks (shape CII_V1)

  INVOICE: 4 pair(s)
    document number        documentId == crossIndustryInvoice.exchangedDocument.id
    seller tax ID          sellerTaxId == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    buyer tax ID           buyerTaxId == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    grand total            grandTotalAmount == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount

  DEBIT_NOTE: 2 pair(s)
    seller tax ID          sellerTaxId == paidConfirmNotice.receiver.id
    buyer tax ID           buyerTaxId == paidConfirmNotice.sender.id

  CREDIT_NOTE: 4 pair(s)
    document number        documentId == crossIndustryInvoice.exchangedDocument.id
    seller tax ID          sellerTaxId == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    buyer tax ID           buyerTaxId == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    grand total            grandTotalAmount == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount

  RECEIPT: 4 pair(s)
    document number        documentId == crossIndustryDespatchAdvice.exchangedDocument.id
    seller tax ID          sellerTaxId == crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    buyer tax ID           buyerTaxId == crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    grand total            grandTotalAmount == crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount

  QUOTATION_CONFIRM: 2 pair(s)
    seller tax ID          sellerTaxId == quotationConfirm.receiver.id
    buyer tax ID           buyerTaxId == quotationConfirm.sender.id

  SALES_ORDER: 4 pair(s)
    document number        documentId == crossIndustryPurchaseOrder.exchangedDocument.id
    seller tax ID          sellerTaxId == crossIndustryPurchaseOrder.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    buyer tax ID           buyerTaxId == crossIndustryPurchaseOrder.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    grand total            grandTotalAmount == crossIndustryPurchaseOrder.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount

  DELIVERY_ORDER: 4 pair(s)
    document number        documentId == crossIndustryDespatchAdvice.exchangedDocument.id
    seller tax ID          sellerTaxId == crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    buyer tax ID           buyerTaxId == crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    grand total            grandTotalAmount == crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount

  AR_BILL: 4 pair(s)
    document number        documentId == crossIndustryInvoice.exchangedDocument.id
    seller tax ID          sellerTaxId == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    buyer tax ID           buyerTaxId == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    grand total            headerGrandTotalAmount == crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount

  AP_BILL: 2 pair(s)
    seller tax ID          sellerTaxId == apBillConfirmNotice.receiver.id
    buyer tax ID           buyerTaxId == apBillConfirmNotice.sender.id

  PAID_CONFIRM: 2 pair(s)
    seller tax ID          sellerTaxId == paidConfirmNotice.receiver.id
    buyer tax ID           buyerTaxId == paidConfirmNotice.sender.id

=== shape FLAT_LEGACY

  INVOICE: 9 rule(s)
    req Str         -                      invoiceNo
    req Str         -                      poNumber
    req Str         -                      invoiceDate
    req Str         -                      dueDate
    req Str         Enum[ON_ISSUE]         invoiceStatus
    req Arr         -                      items
    req Num         -                      subtotal
    req Num         -                      vat
    req Num         -                      totalAmount

  DEBIT_NOTE: 5 rule(s)
    req Str         -                      debitNoteNo
    req Str         -                      billNo
    req Str         -                      issueDate
    req Num         -                      totalAmount
    req Str         -                      currency

  CREDIT_NOTE: 5 rule(s)
    req Str         -                      creditNoteNo
    req Str         -                      billNo
    req Str         -                      issueDate
    req Num         -                      totalAmount
    req Str         -                      currency

  RECEIPT: 6 rule(s)
    req Str         -                      receiptNo
    req Str         -                      doNumber
    req Str         -                      invoiceNo
    req Str         -                      receiveDate
    req Str         Enum[RECEIVED|PARTIALLY_RECEIVED|REJECTED] receiveStatus
    req Arr         -                      items

  PURCHASE_ORDER: 5 rule(s)
    req Str         -                      poNumber
    req Str         -                      poDate
    req Arr         -                      items
    req Num         -                      totalAmount
    req Str         -                      paymentTerms

  PRODUCT_CATALOG: 8 rule(s)
    req Str         -                      catalogId
    req Str         -                      catalogName
    req Arr         -                      items
    req Str         -                      items[].sku
    req Str         -                      items[].productName
    req Str         -                      items[].unit
    req Str         -                      items[].currency
    req Num         -                      items[].unitPrice

  QUOTATION: 5 rule(s)
    req Str         -                      quotationNo
    req Str         -                      quotationDate
    req Str         -                      validUntil
    req Arr         -                      items
    req Num         -                      totalAmount

  QUOTATION_REQUEST: 10 rule(s)
    req Str         -                      rfqNo
    req Str         -                      rfqDate
    req Str         Enum[TLX_PORTAL_RFQ|CUSTOMER_REQUEST] sourceDocType
    opt Str         Enum[Y|N]              vatInclFlag
    req Arr         MinItems(1)            products
    req Str         NonEmpty               products[].prodCode
    req Str         NonEmpty               products[].prodName
    req Str         NonEmpty               products[].uomCode
    req NumericStr  Gt(0)                  products[].qty
    req NumericStr  Min(0)                 products[].unitPrice

  QUOTATION_CONFIRM: 3 rule(s)
    req Str         -                      quotationNo
    req Str         -                      confirmDate
    req Str         Enum[ACCEPTED|REJECTED|COUNTER_OFFER] confirmStatus

  SALES_ORDER: 4 rule(s)
    req Str         -                      soNumber
    req Str         -                      poNumber
    req Str         -                      confirmDate
    req Str         Enum[CONFIRMED|PARTIALLY_CONFIRMED|REJECTED] status

  DELIVERY_ORDER: 5 rule(s)
    req Str         -                      doNumber
    req Str         -                      invoiceNo
    req Str         -                      shipDate
    req Str         -                      deliveryStatus
    req Arr         -                      items

  INVOICE_COMPLETE: 4 rule(s)
    req Str         -                      invoiceNo
    req Str         -                      completeDate
    req Str         Enum[COMPLETE]         invoiceStatus
    req Str         -                      approvedBy

  AR_BILL: 7 rule(s)
    req Str         -                      billNo
    req Str         -                      invoiceNo
    req Str         -                      billDate
    req Str         -                      dueDate
    req Num         -                      totalAmount
    req Obj         -                      bankAccount
    req Str         -                      paymentMethod

  AP_BILL: 7 rule(s)
    req Str         -                      billNo
    req Str         -                      apInvNo
    req Str         -                      billDate
    req Str         -                      dueDate
    req Num         -                      totalAmount
    req Obj         -                      bankAccount
    req Str         -                      paymentMethod

  PAID_CONFIRM: 6 rule(s)
    req Str         -                      confirmPaidNo
    req Str         -                      billNo
    req Str         -                      confirmDate
    req Num         -                      paidAmount
    req Str         -                      currency
    req Str         -                      paymentRef

=== shape ERP_FLAT

  INVOICE: no contract

  DEBIT_NOTE: no contract

  CREDIT_NOTE: no contract

  RECEIPT: no contract

  PURCHASE_ORDER: 18 rule(s)
    req Str         NonEmpty               poNo
    req Str         -                      poDate
    req NumericStr  Min(0)                 poAmt
    req Str         Enum[Y|N]              vatInclFlag
    opt Str         -                      supCfmPoNo
    opt Str         -                      reqDate
    opt NumericStr  Min(0)                 paymentTermIdx
    opt NumericStr  -                      paymentTypIdx
    opt Str         -                      remark
    req Arr         MinItems(1)            products
    req NumericStr  Gt(0)                  products[].itemNo
    req Str         NonEmpty               products[].prodCode
    req Str         -                      products[].prodName
    req Str         NonEmpty               products[].uomCode
    req NumericStr  Gt(0)                  products[].qty
    req NumericStr  Min(0)                 products[].unitPrice
    opt NumericStr  Min(0)                 products[].discPct1
    opt Str         Enum[Y|N]              products[].focFlag

  PRODUCT_CATALOG: no contract

  QUOTATION: 21 rule(s)
    req Str         NonEmpty               saleQuotNo
    req Str         -                      saleQuotDate
    req NumericStr  Min(0)                 saleQuotAmt
    opt Str         Enum[Y|N]              vatInclFlag
    opt Str         -                      saleQuotId
    opt NumericStr  -                      specificQuotTypIdx
    opt Str         -                      reqDate
    opt Str         -                      effectiveDate
    opt Str         -                      expireDate
    opt NumericStr  Min(0)                 paymentTermIdx
    opt NumericStr  -                      paymentTypIdx
    opt Str         -                      remark
    req Arr         MinItems(1)            products
    req NumericStr  Gt(0)                  products[].itemNo
    req Str         NonEmpty               products[].prodCode
    req Str         -                      products[].prodName
    req Str         NonEmpty               products[].uomCode
    req NumericStr  Gt(0)                  products[].qty
    req NumericStr  Min(0)                 products[].unitPrice
    opt NumericStr  Min(0)                 products[].discPct1
    opt Str         Enum[Y|N]              products[].focFlag

  QUOTATION_REQUEST: 10 rule(s)
    req Str         -                      rfqNo
    req Str         -                      rfqDate
    req Str         Enum[TLX_PORTAL_RFQ|CUSTOMER_REQUEST] sourceDocType
    opt Str         Enum[Y|N]              vatInclFlag
    req Arr         MinItems(1)            products
    req Str         NonEmpty               products[].prodCode
    req Str         NonEmpty               products[].prodName
    req Str         NonEmpty               products[].uomCode
    req NumericStr  Gt(0)                  products[].qty
    req NumericStr  Min(0)                 products[].unitPrice

  QUOTATION_CONFIRM: no contract

  SALES_ORDER: no contract

  DELIVERY_ORDER: no contract

  INVOICE_COMPLETE: no contract

  AR_BILL: no contract

  AP_BILL: no contract

  PAID_CONFIRM: no contract

=== shape CII_V1

  INVOICE: 23 rule(s)
    req Str         Enum[NDTP/ETDA/1.0]    crossIndustryInvoice.exchangedDocumentContext.guideline.id
    req Str         NonEmpty               crossIndustryInvoice.exchangedDocument.id
    req Str         -                      crossIndustryInvoice.exchangedDocument.issueDateTime
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.name
    req Str         Digits(13)             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    req Str         Enum[TXID]             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.schemeID
    opt Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.postalTradeAddress.countryCode
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.name
    req Str         Digits(13)             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    req Str         Enum[TXID]             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.schemeID
    opt Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.postalTradeAddress.countryCode
    req Arr         MinItems(1)            crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedTradeProduct.sellerAssignedId
    req Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedTradeProduct.name
    req NumericStr  Gt(0)                  crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.billedQuantity.value
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.billedQuantity.unitCode
    req NumericStr  Min(0)                 crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeSettlement.netPriceProductTradePrice.chargeAmount
    req NumericStr  Min(0)                 crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeSettlement.lineTotalAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 grandTotalAmount

  DEBIT_NOTE: 21 rule(s)
    req Str         NonEmpty               paidConfirmNotice.documentIdentification.instanceIdentifier
    req Str         Enum[PAID_CONFIRM]     paidConfirmNotice.documentIdentification.type
    req Str         -                      paidConfirmNotice.documentIdentification.creationDateAndTime
    req Str         Digits(13)             paidConfirmNotice.sender.id
    req Str         Digits(13)             paidConfirmNotice.receiver.id
    req Str         NonEmpty               paidConfirmNotice.payment.paidNo
    req Str         -                      paidConfirmNotice.payment.paidDate
    req NumericStr  Min(0)                 paidConfirmNotice.payment.paidAmount
    req Str         NonEmpty               paidConfirmNotice.payment.currencyID
    opt NumericStr  Min(0)                 paidConfirmNotice.payment.cashAmount
    opt NumericStr  Min(0)                 paidConfirmNotice.payment.bankAmount
    opt NumericStr  Min(0)                 paidConfirmNotice.payment.chequeAmount
    req Arr         -                      paidConfirmNotice.referencedDocuments
    req NumericStr  -                      paidConfirmNotice.referencedDocuments[].itemNo
    req Str         NonEmpty               paidConfirmNotice.referencedDocuments[].apInvoiceNo
    req NumericStr  Min(0)                 paidConfirmNotice.referencedDocuments[].paidAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 headerGrandTotalAmount

  CREDIT_NOTE: 23 rule(s)
    req Str         Enum[NDTP/ETDA/1.0]    crossIndustryInvoice.exchangedDocumentContext.guideline.id
    req Str         NonEmpty               crossIndustryInvoice.exchangedDocument.id
    req Str         -                      crossIndustryInvoice.exchangedDocument.issueDateTime
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.name
    req Str         Digits(13)             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    req Str         Enum[TXID]             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.schemeID
    opt Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.postalTradeAddress.countryCode
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.name
    req Str         Digits(13)             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    req Str         Enum[TXID]             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.schemeID
    opt Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.postalTradeAddress.countryCode
    req Arr         MinItems(1)            crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedTradeProduct.sellerAssignedId
    req Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedTradeProduct.name
    req NumericStr  Gt(0)                  crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.billedQuantity.value
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.billedQuantity.unitCode
    req NumericStr  Min(0)                 crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeSettlement.netPriceProductTradePrice.chargeAmount
    req NumericStr  Min(0)                 crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeSettlement.lineTotalAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 grandTotalAmount

  RECEIPT: 16 rule(s)
    req Str         Enum[NDTP/ETDA/1.0]    crossIndustryDespatchAdvice.exchangedDocumentContext.guideline.id
    req Str         NonEmpty               crossIndustryDespatchAdvice.exchangedDocument.id
    req Str         -                      crossIndustryDespatchAdvice.exchangedDocument.issueDateTime
    req Str         Digits(13)             crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    req Str         Digits(13)             crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    req Str         NonEmpty               crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerAssignedId
    req Arr         MinItems(1)            crossIndustryDespatchAdvice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems
    req Str         -                      crossIndustryDespatchAdvice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].associatedDocumentLineDocument.lineID
    req Str         NonEmpty               crossIndustryDespatchAdvice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedTradeProduct.sellerAssignedID
    req NumericStr  Gt(0)                  crossIndustryDespatchAdvice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.receivedQuantity.value
    req Str         NonEmpty               crossIndustryDespatchAdvice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.receivedQuantity.unitCode
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 grandTotalAmount

  PURCHASE_ORDER: no contract

  PRODUCT_CATALOG: 11 rule(s)
    req Arr         MinItems(1)            catalogueItems
    req Str         -                      syncedAt
    req Str         NonEmpty               catalogueItems[].catalogueItem.documentIdentification.instanceIdentifier
    req Str         Enum[PRODUCT_CATALOG]  catalogueItems[].catalogueItem.documentIdentification.type
    req Str         -                      catalogueItems[].catalogueItem.documentIdentification.creationDateAndTime
    req Str         NonEmpty               catalogueItems[].catalogueItem.sender.gln
    req Str         NonEmpty               catalogueItems[].catalogueItem.receiver.gln
    req Str         NonEmpty               catalogueItems[].catalogueItem.tradeItem.identification.companyTradeItemId
    req Str         NonEmpty               catalogueItems[].catalogueItem.tradeItem.description.tradeItemName
    req Str         -                      catalogueItems[].catalogueItem.tradeItem.hierarchy.unitDescriptorCode
    opt NumericStr  Min(0)                 catalogueItems[].catalogueItem.tradeItem.commercial.cataloguePrice

  QUOTATION: no contract

  QUOTATION_REQUEST: no contract

  QUOTATION_CONFIRM: 19 rule(s)
    req Str         NonEmpty               quotationConfirm.documentIdentification.instanceIdentifier
    req Str         Enum[QUOTATION_CONFIRM] quotationConfirm.documentIdentification.type
    req Str         -                      quotationConfirm.documentIdentification.creationDateAndTime
    req Str         Digits(13)             quotationConfirm.sender.id
    req Str         Enum[TXID]             quotationConfirm.sender.schemeID
    req Str         Digits(13)             quotationConfirm.receiver.id
    req Str         Enum[TXID]             quotationConfirm.receiver.schemeID
    req Str         NonEmpty               quotationConfirm.referencedQuotation.saleQuotNo
    req Str         -                      quotationConfirm.referencedQuotation.supplierQuotNo
    req Str         -                      quotationConfirm.referencedQuotation.quotationDate
    req NumericStr  Min(0)                 quotationConfirm.referencedQuotation.amount
    req Str         NonEmpty               quotationConfirm.referencedQuotation.currencyID
    req NumericStr  -                      quotationConfirm.confirmation.stateCode
    req Str         -                      quotationConfirm.confirmation.confirmedAt
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 grandTotalAmount

  SALES_ORDER: 18 rule(s)
    req NumericStr  Min(0)                 soAmt
    opt Str         Enum[Y|N]              vatInclFlag
    req Str         Enum[NDTP/ETDA/1.0]    crossIndustryPurchaseOrder.exchangedDocumentContext.guideline.id
    req Str         NonEmpty               crossIndustryPurchaseOrder.exchangedDocument.id
    req Str         -                      crossIndustryPurchaseOrder.exchangedDocument.issueDateTime
    req Str         Digits(13)             crossIndustryPurchaseOrder.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    req Str         Digits(13)             crossIndustryPurchaseOrder.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    req Arr         MinItems(1)            crossIndustryPurchaseOrder.supplyChainTradeTransaction.includedSupplyChainTradeLineItems
    req Str         -                      crossIndustryPurchaseOrder.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].associatedDocumentLineDocument.lineId
    req Str         NonEmpty               crossIndustryPurchaseOrder.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeProduct.sellerAssignedId
    req NumericStr  Gt(0)                  crossIndustryPurchaseOrder.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.billedQuantity.value
    req Str         NonEmpty               crossIndustryPurchaseOrder.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeDelivery.billedQuantity.unitCode
    req NumericStr  Min(0)                 crossIndustryPurchaseOrder.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeSettlement.lineTotalAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 grandTotalAmount

  DELIVERY_ORDER: 14 rule(s)
    req Str         Enum[NDTP/ETDA/1.0]    crossIndustryDespatchAdvice.exchangedDocumentContext.guideline.id
    req Str         NonEmpty               crossIndustryDespatchAdvice.exchangedDocument.id
    req Str         -                      crossIndustryDespatchAdvice.exchangedDocument.issueDateTime
    req Str         Digits(13)             crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    req Str         Digits(13)             crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    req Str         NonEmpty               crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerAssignedId
    req Str         -                      crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeDelivery.shipToTradeParty.name
    req Str         -                      crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeDelivery.shipFromTradeParty.name
    req Str         -                      crossIndustryDespatchAdvice.supplyChainTradeTransaction.applicableHeaderTradeDelivery.actualDeliverySupplyChainEvent.dateTime
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 grandTotalAmount

  INVOICE_COMPLETE: 18 rule(s)
    req Str         NonEmpty               invoiceCompleteNotice.documentIdentification.instanceIdentifier
    req Str         Enum[INVOICE_COMPLETE] invoiceCompleteNotice.documentIdentification.type
    req Str         -                      invoiceCompleteNotice.documentIdentification.creationDateAndTime
    req Str         Digits(13)             invoiceCompleteNotice.sender.id
    req Str         Digits(13)             invoiceCompleteNotice.receiver.id
    req Str         NonEmpty               invoiceCompleteNotice.referencedInvoice.arInvoiceNo
    req Str         -                      invoiceCompleteNotice.referencedInvoice.sellerInvoiceNo
    req Str         NonEmpty               invoiceCompleteNotice.referencedInvoice.apInvoiceNo
    req Str         -                      invoiceCompleteNotice.referencedInvoice.invoiceDate
    req NumericStr  Min(0)                 invoiceCompleteNotice.referencedInvoice.amount
    req Str         NonEmpty               invoiceCompleteNotice.referencedInvoice.currencyID
    req NumericStr  Gt(0)                  invoiceCompleteNotice.completion.stateCode
    req Str         -                      invoiceCompleteNotice.completion.completedAt
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 headerGrandTotalAmount

  AR_BILL: 15 rule(s)
    req Str         Enum[NDTP/ETDA/1.0]    crossIndustryInvoice.exchangedDocumentContext.guideline.id
    req Str         NonEmpty               crossIndustryInvoice.exchangedDocument.id
    req Str         -                      crossIndustryInvoice.exchangedDocument.issueDateTime
    req Str         Digits(13)             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.sellerTradeParty.id.value
    req Str         Digits(13)             crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeAgreement.buyerTradeParty.id.value
    req NumericStr  Min(0)                 crossIndustryInvoice.supplyChainTradeTransaction.applicableHeaderTradeSettlement.specifiedTradeSettlementHeaderMonetarySummation.grandTotalAmount
    req Arr         MinItems(1)            crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems
    req Str         -                      crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].associatedDocumentLineDocument.lineId
    req Str         NonEmpty               crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].referencedInvoice.issuerAssignedId
    req NumericStr  Min(0)                 crossIndustryInvoice.supplyChainTradeTransaction.includedSupplyChainTradeLineItems[].specifiedLineTradeSettlement.lineTotalAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 headerGrandTotalAmount

  AP_BILL: 23 rule(s)
    req Str         NonEmpty               apBillConfirmNotice.documentIdentification.instanceIdentifier
    req Str         Enum[AP_BILL]          apBillConfirmNotice.documentIdentification.type
    req Str         -                      apBillConfirmNotice.documentIdentification.creationDateAndTime
    req Str         Digits(13)             apBillConfirmNotice.sender.id
    req Str         Digits(13)             apBillConfirmNotice.receiver.id
    req Str         NonEmpty               apBillConfirmNotice.referencedBill.arBillNo
    req Str         NonEmpty               apBillConfirmNotice.referencedBill.apBillNo
    req Str         -                      apBillConfirmNotice.referencedBill.billDate
    req NumericStr  Min(0)                 apBillConfirmNotice.referencedBill.originalBillAmount
    req Str         NonEmpty               apBillConfirmNotice.referencedBill.currencyID
    req NumericStr  Gt(0)                  apBillConfirmNotice.confirmation.stateCode
    req NumericStr  Min(0)                 apBillConfirmNotice.confirmation.acceptedBillAmount
    req Str         -                      apBillConfirmNotice.confirmation.confirmedAt
    req Arr         -                      apBillConfirmNotice.lines
    req NumericStr  -                      apBillConfirmNotice.lines[].itemNo
    req Str         NonEmpty               apBillConfirmNotice.lines[].arInvoiceNo
    req NumericStr  Min(0)                 apBillConfirmNotice.lines[].originalAmount
    req NumericStr  Min(0)                 apBillConfirmNotice.lines[].acceptedAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 headerGrandTotalAmount

  PAID_CONFIRM: 21 rule(s)
    req Str         NonEmpty               paidConfirmNotice.documentIdentification.instanceIdentifier
    req Str         Enum[PAID_CONFIRM]     paidConfirmNotice.documentIdentification.type
    req Str         -                      paidConfirmNotice.documentIdentification.creationDateAndTime
    req Str         Digits(13)             paidConfirmNotice.sender.id
    req Str         Digits(13)             paidConfirmNotice.receiver.id
    req Str         NonEmpty               paidConfirmNotice.payment.paidNo
    req Str         -                      paidConfirmNotice.payment.paidDate
    req NumericStr  Min(0)                 paidConfirmNotice.payment.paidAmount
    req Str         NonEmpty               paidConfirmNotice.payment.currencyID
    opt NumericStr  Min(0)                 paidConfirmNotice.payment.cashAmount
    opt NumericStr  Min(0)                 paidConfirmNotice.payment.bankAmount
    opt NumericStr  Min(0)                 paidConfirmNotice.payment.chequeAmount
    req Arr         -                      paidConfirmNotice.referencedDocuments
    req NumericStr  -                      paidConfirmNotice.referencedDocuments[].itemNo
    req Str         NonEmpty               paidConfirmNotice.referencedDocuments[].apInvoiceNo
    req NumericStr  Min(0)                 paidConfirmNotice.referencedDocuments[].paidAmount
    opt Str         NonEmpty               guidelineId
    opt Str         NonEmpty               documentId
    opt Str         Digits(13)             sellerTaxId
    opt Str         Digits(13)             buyerTaxId
    opt NumericStr  Min(0)                 headerGrandTotalAmount

=== shape ETDA_FLAT

  INVOICE: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  DEBIT_NOTE: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  CREDIT_NOTE: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  RECEIPT: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  PURCHASE_ORDER: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  PRODUCT_CATALOG: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  QUOTATION: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  QUOTATION_REQUEST: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  QUOTATION_CONFIRM: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  SALES_ORDER: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  DELIVERY_ORDER: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  INVOICE_COMPLETE: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  AR_BILL: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  AP_BILL: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount

  PAID_CONFIRM: 37 rule(s)
    req Str         NonEmpty               guidelineId
    req Str         NonEmpty               documentId
    req Str         NonEmpty               typeCode
    req Str         -                      issueDateTime
    opt Str         -                      documentName
    opt Str         -                      purposeCode
    req Str         NonEmpty               sellerName
    req Str         Digits(13)             sellerTaxId
    req Str         NonEmpty               sellerCountryID
    opt Str         -                      sellerPostcodeCode
    req Str         NonEmpty               buyerName
    req Str         Digits(13)             buyerTaxId
    req Str         NonEmpty               buyerCountryID
    opt Str         -                      buyerPostcodeCode
    req Str         NonEmpty               invoiceCurrencyCode
    req NumericStr  Min(0)                 taxCalculatedAmount
    req Str         NonEmpty               taxTypeCode
    req NumericStr  Min(0)                 taxCalculatedRate
    req NumericStr  Min(0)                 taxBasisAmount
    req NumericStr  Min(0)                 lineTotalAmount
    req NumericStr  Min(0)                 taxBasisTotalAmount
    req NumericStr  Min(0)                 taxTotalAmount
    req NumericStr  Min(0)                 grandTotalAmount
    opt NumericStr  Min(0)                 allowanceTotalAmount
    opt NumericStr  Min(0)                 chargeTotalAmount
    req Arr         MinItems(1)            lineItems
    req Str         NonEmpty               lineItems[].lineID
    req Str         NonEmpty               lineItems[].productId
    req Str         -                      lineItems[].productName
    req NumericStr  Min(0)                 lineItems[].grossPriceChargeAmount
    req NumericStr  Gt(0)                  lineItems[].billedQuantity
    req Str         NonEmpty               lineItems[].billedQuantityUnitCode
    req Str         NonEmpty               lineItems[].lineTaxTypeCode
    req NumericStr  Min(0)                 lineItems[].lineTaxRate
    req NumericStr  Min(0)                 lineItems[].lineTaxBasisAmount
    req NumericStr  Min(0)                 lineItems[].netLineTotalAmount
    req NumericStr  Min(0)                 lineItems[].netIncludingTaxesLineTotalAmount
