pub static ORDER: &[(&str, &[&str])] = &[
(
"AdditionalReferencedDocument",
&[
"IssuerAssignedID",
"URIID",
"TypeCode",
"Name",
"AttachmentBinaryObject",
"ReferenceTypeCode",
],
),
(
"ApplicableHeaderTradeAgreement",
&[
"BuyerReference",
"SellerTradeParty",
"BuyerTradeParty",
"SellerTaxRepresentativeTradeParty",
"SellerOrderReferencedDocument",
"BuyerOrderReferencedDocument",
"ContractReferencedDocument",
"AdditionalReferencedDocument",
"SpecifiedProcuringProject",
],
),
(
"ApplicableHeaderTradeDelivery",
&[
"ShipToTradeParty",
"ActualDeliverySupplyChainEvent",
"DespatchAdviceReferencedDocument",
"ReceivingAdviceReferencedDocument",
],
),
(
"ApplicableHeaderTradeSettlement",
&[
"CreditorReferenceID",
"PaymentReference",
"TaxCurrencyCode",
"InvoiceCurrencyCode",
"PayeeTradeParty",
"SpecifiedTradeSettlementPaymentMeans",
"ApplicableTradeTax",
"BillingSpecifiedPeriod",
"SpecifiedTradeAllowanceCharge",
"SpecifiedTradePaymentTerms",
"SpecifiedTradeSettlementHeaderMonetarySummation",
"InvoiceReferencedDocument",
"ReceivableSpecifiedTradeAccountingAccount",
],
),
("ApplicableProductCharacteristic", &["Description", "Value"]),
(
"ApplicableTradeSettlementFinancialCard",
&["ID", "CardholderName"],
),
(
"ApplicableTradeTax",
&[
"CalculatedAmount",
"TypeCode",
"ExemptionReason",
"BasisAmount",
"CategoryCode",
"ExemptionReasonCode",
"DueDateTypeCode",
"TaxPointDate",
"RateApplicablePercent",
],
),
(
"AppliedTradeAllowanceCharge",
&["ChargeIndicator", "ActualAmount"],
),
(
"AssociatedDocumentLineDocument",
&["LineID", "IncludedNote", "ParentLineID"],
),
("BillingSpecifiedPeriod", &["StartDateTime", "EndDateTime"]),
(
"BuyerOrderReferencedDocument",
&["IssuerAssignedID", "LineID"],
),
(
"BuyerTradeParty",
&[
"GlobalID",
"ID",
"Name",
"SpecifiedLegalOrganization",
"DefinedTradeContact",
"PostalTradeAddress",
"URIUniversalCommunication",
"SpecifiedTaxRegistration",
],
),
(
"CategoryTradeTax",
&["TypeCode", "CategoryCode", "RateApplicablePercent"],
),
(
"CrossIndustryInvoice",
&[
"ExchangedDocumentContext",
"ExchangedDocument",
"SupplyChainTradeTransaction",
],
),
(
"DefinedTradeContact",
&[
"PersonName",
"DepartmentName",
"TelephoneUniversalCommunication",
"EmailURIUniversalCommunication",
],
),
(
"ExchangedDocument",
&["ID", "TypeCode", "IssueDateTime", "IncludedNote"],
),
(
"ExchangedDocumentContext",
&[
"BusinessProcessSpecifiedDocumentContextParameter",
"GuidelineSpecifiedDocumentContextParameter",
],
),
(
"GrossPriceProductTradePrice",
&[
"ChargeAmount",
"BasisQuantity",
"AppliedTradeAllowanceCharge",
],
),
("IncludedNote", &["Content", "SubjectCode"]),
(
"IncludedSupplyChainTradeLineItem",
&[
"AssociatedDocumentLineDocument",
"SpecifiedTradeProduct",
"SpecifiedLineTradeAgreement",
"SpecifiedLineTradeDelivery",
"SpecifiedLineTradeSettlement",
],
),
(
"InvoiceReferencedDocument",
&["IssuerAssignedID", "FormattedIssueDateTime"],
),
(
"NetPriceProductTradePrice",
&["ChargeAmount", "BasisQuantity"],
),
(
"PayeePartyCreditorFinancialAccount",
&["IBANID", "AccountName"],
),
(
"PayeeTradeParty",
&["GlobalID", "ID", "Name", "SpecifiedLegalOrganization"],
),
(
"PostalTradeAddress",
&[
"PostcodeCode",
"LineOne",
"LineTwo",
"LineThree",
"CityName",
"CountryID",
"CountrySubDivisionName",
],
),
(
"SellerTaxRepresentativeTradeParty",
&["Name", "PostalTradeAddress", "SpecifiedTaxRegistration"],
),
(
"SellerTradeParty",
&[
"GlobalID",
"ID",
"Name",
"Description",
"SpecifiedLegalOrganization",
"DefinedTradeContact",
"PostalTradeAddress",
"URIUniversalCommunication",
"SpecifiedTaxRegistration",
],
),
(
"ShipToTradeParty",
&["GlobalID", "ID", "Name", "PostalTradeAddress"],
),
("SpecifiedLegalOrganization", &["ID", "TradingBusinessName"]),
(
"SpecifiedLineTradeAgreement",
&[
"BuyerOrderReferencedDocument",
"GrossPriceProductTradePrice",
"NetPriceProductTradePrice",
],
),
(
"SpecifiedLineTradeSettlement",
&[
"ApplicableTradeTax",
"BillingSpecifiedPeriod",
"SpecifiedTradeAllowanceCharge",
"SpecifiedTradeSettlementLineMonetarySummation",
"AdditionalReferencedDocument",
"ReceivableSpecifiedTradeAccountingAccount",
],
),
("SpecifiedProcuringProject", &["ID", "Name"]),
(
"SpecifiedTradeAllowanceCharge",
&[
"ChargeIndicator",
"CalculationPercent",
"BasisAmount",
"ActualAmount",
"ReasonCode",
"Reason",
"CategoryTradeTax",
],
),
(
"SpecifiedTradePaymentTerms",
&["Description", "DueDateDateTime", "DirectDebitMandateID"],
),
(
"SpecifiedTradeProduct",
&[
"GlobalID",
"SellerAssignedID",
"BuyerAssignedID",
"Name",
"Description",
"ApplicableProductCharacteristic",
"DesignatedProductClassification",
"OriginTradeCountry",
],
),
(
"SpecifiedTradeSettlementHeaderMonetarySummation",
&[
"LineTotalAmount",
"ChargeTotalAmount",
"AllowanceTotalAmount",
"TaxBasisTotalAmount",
"TaxTotalAmount",
"RoundingAmount",
"GrandTotalAmount",
"TotalPrepaidAmount",
"DuePayableAmount",
],
),
(
"SpecifiedTradeSettlementPaymentMeans",
&[
"TypeCode",
"Information",
"ApplicableTradeSettlementFinancialCard",
"PayerPartyDebtorFinancialAccount",
"PayerSpecifiedDebtorFinancialInstitution",
"PayeePartyCreditorFinancialAccount",
"PayeeSpecifiedCreditorFinancialInstitution",
],
),
(
"SupplyChainTradeTransaction",
&[
"IncludedSupplyChainTradeLineItem",
"ApplicableHeaderTradeAgreement",
"ApplicableHeaderTradeDelivery",
"ApplicableHeaderTradeSettlement",
],
),
];
#[must_use]
pub fn children_of(parent: &str) -> Option<&'static [&'static str]> {
ORDER
.binary_search_by_key(&parent, |(p, _)| *p)
.ok()
.map(|i| ORDER[i].1)
}
#[must_use]
pub fn index_of(parent: &str, child: &str) -> Option<usize> {
children_of(parent)?.iter().position(|c| *c == child)
}