///|
pub fn application_identifier_count() -> Int {
known_ais().length()
}
///|
pub fn catalog_codes() -> Array[String] {
known_ais().map(fn(item) { item.code })
}
///|
pub fn catalog_variable_codes() -> Array[String] {
known_ais()
.filter(fn(item) { item.kind is Variable })
.map(fn(item) { item.code })
}
///|
fn extended_ais() -> Array[ApplicationIdentifier] {
[
ai("20", "Variant of a trade item", Some(2), 2, Fixed),
ai("22", "Information additional to product ID", None, 20, Variable),
ai("235", "Third party controlled serial number", None, 30, Variable),
ai("253", "Global document type identifier", None, 30, Variable),
ai("254", "GLN extension component", None, 20, Variable),
ai("255", "Global coupon number", None, 30, Variable),
ai("3900", "Amount payable, local currency", None, 15, Variable),
ai("3901", "Amount payable, local currency", None, 15, Variable),
ai("3902", "Amount payable, local currency", None, 15, Variable),
ai("3903", "Amount payable, local currency", None, 15, Variable),
ai("3904", "Amount payable, local currency", None, 15, Variable),
ai("3905", "Amount payable, local currency", None, 15, Variable),
ai("3906", "Amount payable, local currency", None, 15, Variable),
ai("3907", "Amount payable, local currency", None, 15, Variable),
ai("3908", "Amount payable, local currency", None, 15, Variable),
ai("3909", "Amount payable, local currency", None, 15, Variable),
ai("3910", "Amount payable, ISO currency", None, 18, Variable),
ai("3911", "Amount payable, ISO currency", None, 18, Variable),
ai("3912", "Amount payable, ISO currency", None, 18, Variable),
ai("3913", "Amount payable, ISO currency", None, 18, Variable),
ai("3914", "Amount payable, ISO currency", None, 18, Variable),
ai("3915", "Amount payable, ISO currency", None, 18, Variable),
ai("3916", "Amount payable, ISO currency", None, 18, Variable),
ai("3917", "Amount payable, ISO currency", None, 18, Variable),
ai("3918", "Amount payable, ISO currency", None, 18, Variable),
ai("3919", "Amount payable, ISO currency", None, 18, Variable),
ai("3920", "Price, local currency", None, 15, Variable),
ai("3921", "Price, local currency", None, 15, Variable),
ai("3922", "Price, local currency", None, 15, Variable),
ai("3923", "Price, local currency", None, 15, Variable),
ai("3924", "Price, local currency", None, 15, Variable),
ai("3925", "Price, local currency", None, 15, Variable),
ai("3926", "Price, local currency", None, 15, Variable),
ai("3927", "Price, local currency", None, 15, Variable),
ai("3928", "Price, local currency", None, 15, Variable),
ai("3929", "Price, local currency", None, 15, Variable),
ai("3930", "Price, ISO currency", None, 18, Variable),
ai("3931", "Price, ISO currency", None, 18, Variable),
ai("3932", "Price, ISO currency", None, 18, Variable),
ai("3933", "Price, ISO currency", None, 18, Variable),
ai("3934", "Price, ISO currency", None, 18, Variable),
ai("3935", "Price, ISO currency", None, 18, Variable),
ai("3936", "Price, ISO currency", None, 18, Variable),
ai("3937", "Price, ISO currency", None, 18, Variable),
ai("3938", "Price, ISO currency", None, 18, Variable),
ai("3939", "Price, ISO currency", None, 18, Variable),
ai("3940", "Percentage discount", Some(4), 4, Fixed),
ai("3941", "Percentage discount", Some(4), 4, Fixed),
ai("3942", "Percentage discount", Some(4), 4, Fixed),
ai("3943", "Percentage discount", Some(4), 4, Fixed),
ai("3950", "Price calculation, net amount", Some(6), 6, Fixed),
ai("3951", "Price calculation, net amount", Some(6), 6, Fixed),
ai("3952", "Price calculation, net amount", Some(6), 6, Fixed),
ai("3953", "Price calculation, net amount", Some(6), 6, Fixed),
ai("3960", "Amount payable, variable measure", None, 15, Variable),
ai("3961", "Amount payable, variable measure", None, 15, Variable),
ai("3962", "Amount payable, variable measure", None, 15, Variable),
ai("3963", "Amount payable, variable measure", None, 15, Variable),
ai("3964", "Amount payable, variable measure", None, 15, Variable),
ai("3965", "Amount payable, variable measure", None, 15, Variable),
ai("3966", "Amount payable, variable measure", None, 15, Variable),
ai("3967", "Amount payable, variable measure", None, 15, Variable),
ai("3968", "Amount payable, variable measure", None, 15, Variable),
ai("3969", "Amount payable, variable measure", None, 15, Variable),
ai("3970", "Amount payable, variable measure currency", None, 18, Variable),
ai("3971", "Amount payable, variable measure currency", None, 18, Variable),
ai("3972", "Amount payable, variable measure currency", None, 18, Variable),
ai("3973", "Amount payable, variable measure currency", None, 18, Variable),
ai("3974", "Amount payable, variable measure currency", None, 18, Variable),
ai("3975", "Amount payable, variable measure currency", None, 18, Variable),
ai("3976", "Amount payable, variable measure currency", None, 18, Variable),
ai("3977", "Amount payable, variable measure currency", None, 18, Variable),
ai("3978", "Amount payable, variable measure currency", None, 18, Variable),
ai("3979", "Amount payable, variable measure currency", None, 18, Variable),
ai("30", "Variable measure value", None, 8, Variable),
ai("31", "Variable measure value", None, 8, Variable),
ai("32", "Variable measure value", None, 8, Variable),
ai("33", "Variable measure value", None, 8, Variable),
ai("34", "Variable measure value", None, 8, Variable),
ai("35", "Variable measure value", None, 8, Variable),
ai("36", "Variable measure value", None, 8, Variable),
ai("37", "Variable measure value", None, 8, Variable),
ai("38", "Variable measure value", None, 8, Variable),
ai("39", "Variable measure value", None, 8, Variable),
ai("40", "Variable measure value", None, 8, Variable),
ai("41", "Variable measure value", None, 8, Variable),
ai("42", "Variable measure value", None, 8, Variable),
ai("43", "Variable measure value", None, 8, Variable),
ai("44", "Variable measure value", None, 8, Variable),
ai("45", "Variable measure value", None, 8, Variable),
ai("46", "Variable measure value", None, 8, Variable),
ai("47", "Variable measure value", None, 8, Variable),
ai("48", "Variable measure value", None, 8, Variable),
ai("49", "Variable measure value", None, 8, Variable),
ai("50", "Variable measure value", None, 8, Variable),
ai("51", "Variable measure value", None, 8, Variable),
ai("52", "Variable measure value", None, 8, Variable),
ai("53", "Variable measure value", None, 8, Variable),
ai("54", "Variable measure value", None, 8, Variable),
ai("55", "Variable measure value", None, 8, Variable),
ai("56", "Variable measure value", None, 8, Variable),
ai("57", "Variable measure value", None, 8, Variable),
ai("58", "Variable measure value", None, 8, Variable),
ai("59", "Variable measure value", None, 8, Variable),
ai("60", "Variable measure value", None, 8, Variable),
ai("61", "Variable measure value", None, 8, Variable),
ai("62", "Variable measure value", None, 8, Variable),
ai("63", "Variable measure value", None, 8, Variable),
ai("64", "Variable measure value", None, 8, Variable),
ai("65", "Variable measure value", None, 8, Variable),
ai("66", "Variable measure value", None, 8, Variable),
ai("67", "Variable measure value", None, 8, Variable),
ai("68", "Variable measure value", None, 8, Variable),
ai("69", "Variable measure value", None, 8, Variable),
ai("70", "Variable measure value", None, 8, Variable),
ai("71", "Variable measure value", None, 8, Variable),
ai("72", "Variable measure value", None, 8, Variable),
ai("73", "Variable measure value", None, 8, Variable),
ai("74", "Variable measure value", None, 8, Variable),
ai("75", "Variable measure value", None, 8, Variable),
ai("76", "Variable measure value", None, 8, Variable),
ai("77", "Variable measure value", None, 8, Variable),
ai("78", "Variable measure value", None, 8, Variable),
ai("79", "Variable measure value", None, 8, Variable),
ai("80", "Variable measure value", None, 8, Variable),
ai("81", "Variable measure value", None, 8, Variable),
ai("82", "Variable measure value", None, 8, Variable),
ai("83", "Variable measure value", None, 8, Variable),
ai("84", "Variable measure value", None, 8, Variable),
ai("85", "Variable measure value", None, 8, Variable),
ai("86", "Variable measure value", None, 8, Variable),
ai("87", "Variable measure value", None, 8, Variable),
ai("88", "Variable measure value", None, 8, Variable),
ai("89", "Variable measure value", None, 8, Variable),
ai("90", "Variable measure value", None, 8, Variable),
ai("91", "Variable measure value", None, 8, Variable),
ai("92", "Variable measure value", None, 8, Variable),
ai("93", "Variable measure value", None, 8, Variable),
ai("94", "Variable measure value", None, 8, Variable),
ai("95", "Variable measure value", None, 8, Variable),
ai("96", "Variable measure value", None, 8, Variable),
ai("97", "Variable measure value", None, 8, Variable),
ai("98", "Variable measure value", None, 8, Variable),
ai("99", "Variable measure value", None, 8, Variable),
ai("4033", "Routing code", None, 30, Variable),
ai("4034", "Routing code", None, 30, Variable),
ai("4035", "Routing code", None, 30, Variable),
ai("4036", "Routing code", None, 30, Variable),
ai("4037", "Routing code", None, 30, Variable),
ai("4038", "Routing code", None, 30, Variable),
ai("4039", "Routing code", None, 30, Variable),
ai("413", "Ship-to location alternate", Some(13), 13, Fixed),
ai("414", "Ship-to location alternate", Some(13), 13, Fixed),
ai("415", "Ship-to location alternate", Some(13), 13, Fixed),
ai("416", "Ship-to location alternate", Some(13), 13, Fixed),
ai("417", "Ship-to location alternate", Some(13), 13, Fixed),
ai("418", "Ship-to location alternate", Some(13), 13, Fixed),
ai("419", "Ship-to location alternate", Some(13), 13, Fixed),
ai("423", "Ship-to postal code alternate", None, 20, Variable),
ai("424", "Ship-to postal code alternate", None, 20, Variable),
ai("425", "Ship-to postal code alternate", None, 20, Variable),
ai("426", "Ship-to postal code alternate", None, 20, Variable),
ai("427", "Ship-to postal code alternate", None, 20, Variable),
ai("428", "Ship-to postal code alternate", None, 20, Variable),
ai("429", "Ship-to postal code alternate", None, 20, Variable),
ai("4300", "Ship-to company name", None, 35, Variable),
ai("4301", "Ship-to company name", None, 35, Variable),
ai("4302", "Ship-to company name", None, 35, Variable),
ai("4303", "Ship-to company name", None, 35, Variable),
ai("4304", "Ship-to company name", None, 35, Variable),
ai("4305", "Ship-to company name", None, 35, Variable),
ai("4306", "Ship-to company name", None, 35, Variable),
ai("4307", "Ship-to company name", None, 35, Variable),
ai("4308", "Ship-to company name", None, 35, Variable),
ai("4309", "Ship-to company name", None, 35, Variable),
ai("4310", "Ship-to street and number", None, 35, Variable),
ai("4311", "Ship-to street and number", None, 35, Variable),
ai("4312", "Ship-to street and number", None, 35, Variable),
ai("4313", "Ship-to street and number", None, 35, Variable),
ai("4314", "Ship-to street and number", None, 35, Variable),
ai("4315", "Ship-to street and number", None, 35, Variable),
ai("4316", "Ship-to street and number", None, 35, Variable),
ai("4317", "Ship-to street and number", None, 35, Variable),
ai("4318", "Ship-to street and number", None, 35, Variable),
ai("4319", "Ship-to street and number", None, 35, Variable),
ai("4320", "Ship-to city and region", None, 35, Variable),
ai("4321", "Ship-to city and region", None, 35, Variable),
ai("4322", "Ship-to city and region", None, 35, Variable),
ai("4323", "Ship-to city and region", None, 35, Variable),
ai("4324", "Ship-to city and region", None, 35, Variable),
ai("4325", "Ship-to city and region", None, 35, Variable),
ai("4326", "Ship-to city and region", None, 35, Variable),
ai("4327", "Ship-to city and region", None, 35, Variable),
ai("4328", "Ship-to city and region", None, 35, Variable),
ai("4329", "Ship-to city and region", None, 35, Variable),
ai("7001", "NATO stock number", Some(13), 13, Fixed),
ai("7002", "UNECE meat carcass number", None, 30, Variable),
ai("7003", "Expiration date and time", Some(10), 10, Fixed),
ai("7004", "Active potency", Some(4), 4, Fixed),
ai("7005", "Catch area", None, 12, Variable),
ai("7006", "First freeze date", Some(6), 6, Fixed),
ai("7007", "Harvest date", Some(6), 6, Fixed),
ai("7008", "Aquatic species", None, 30, Variable),
ai("7009", "Fishing gear type", None, 12, Variable),
ai("7010", "Production method", Some(2), 2, Fixed),
ai("7011", "Test by date", Some(3), 3, Fixed),
ai("7020", "Processor with product", None, 20, Variable),
ai("7021", "Processor with product", None, 20, Variable),
ai("7022", "Processor with product", None, 20, Variable),
ai("7023", "Processor with product", None, 20, Variable),
ai("7024", "Processor with product", None, 20, Variable),
ai("7025", "Processor with product", None, 20, Variable),
ai("7026", "Processor with product", None, 20, Variable),
ai("7027", "Processor with product", None, 20, Variable),
ai("7028", "Processor with product", None, 20, Variable),
ai("7029", "Processor with product", None, 20, Variable),
ai("7030", "Number of processor", None, 30, Variable),
ai("7040", "Processor with product extension", None, 30, Variable),
ai("7041", "Processor with product extension", None, 30, Variable),
ai("7042", "Processor with product extension", None, 30, Variable),
ai("7043", "Processor with product extension", None, 30, Variable),
ai("7044", "Processor with product extension", None, 30, Variable),
ai("7045", "Processor with product extension", None, 30, Variable),
ai("7046", "Processor with product extension", None, 30, Variable),
ai("7047", "Processor with product extension", None, 30, Variable),
ai("7048", "Processor with product extension", None, 30, Variable),
ai("7049", "Processor with product extension", None, 30, Variable),
ai("7100", "National healthcare reimbursement number", None, 20, Variable),
ai("7101", "National healthcare reimbursement number", None, 20, Variable),
ai("7102", "National healthcare reimbursement number", None, 20, Variable),
ai("7103", "National healthcare reimbursement number", None, 20, Variable),
ai("7104", "National healthcare reimbursement number", None, 20, Variable),
ai("7105", "National healthcare reimbursement number", None, 20, Variable),
ai("7106", "National healthcare reimbursement number", None, 20, Variable),
ai("7107", "National healthcare reimbursement number", None, 20, Variable),
ai("7108", "National healthcare reimbursement number", None, 20, Variable),
ai("7109", "National healthcare reimbursement number", None, 20, Variable),
ai("720", "Pharma product information", None, 20, Variable),
ai("721", "Pharma product information", None, 20, Variable),
ai("722", "Pharma product information", None, 20, Variable),
ai("723", "Pharma product information", None, 20, Variable),
ai("724", "Pharma product information", None, 20, Variable),
ai("725", "Pharma product information", None, 20, Variable),
ai("8001", "Roll products", Some(14), 14, Fixed),
ai("8002", "Cellular mobile telephone identifier", None, 20, Variable),
ai("8003", "Global returnable asset identifier", None, 30, Variable),
ai("8004", "Global individual asset identifier", None, 30, Variable),
ai("8005", "Price per unit of measure", Some(6), 6, Fixed),
ai("8006", "Identification of a component", None, 12, Variable),
ai("8007", "IBAN", None, 34, Variable),
ai("8008", "Date and time of production", Some(8), 8, Fixed),
ai("8009", "Time of production", None, 20, Variable),
ai("8010", "Component and part identifier", None, 30, Variable),
ai("8011", "Component serial number", Some(12), 12, Fixed),
ai("8012", "Software version", None, 20, Variable),
ai("8013", "Global model number", None, 25, Variable),
ai("8017", "Global service relation number", Some(18), 18, Fixed),
ai("8018", "Global service relation instance", Some(18), 18, Fixed),
ai("8020", "Payment slip reference number", None, 25, Variable),
ai("8100", "Coupon extended code", Some(6), 6, Fixed),
ai("8101", "Coupon code", Some(10), 10, Fixed),
ai("8102", "Coupon code supplemental", None, 10, Variable),
ai("8110", "Coupon serial reference", None, 70, Variable),
ai("8200", "Product variant", None, 70, Variable),
ai("90", "Internal company data", None, 30, Variable),
ai("91", "Internal company data", None, 30, Variable),
ai("92", "Internal company data", None, 30, Variable),
ai("93", "Internal company data", None, 30, Variable),
ai("94", "Internal company data", None, 30, Variable),
ai("95", "Internal company data", None, 30, Variable),
ai("96", "Internal company data", None, 30, Variable),
ai("97", "Internal company data", None, 30, Variable),
ai("98", "Internal company data", None, 30, Variable),
ai("99", "Internal company data", None, 30, Variable),
]
}
///|
pub fn catalog_has(code : String) -> Bool {
lookup_ai(code) is Some(_)
}
///|
pub fn catalog_title(code : String) -> String? {
match lookup_ai(code) {
Some(item) => Some(item.title)
None => None
}
}
///|
pub fn catalog_max_length(code : String) -> Int? {
match lookup_ai(code) {
Some(item) => Some(item.max_length)
None => None
}
}
///|
pub fn catalog_is_fixed(code : String) -> Bool? {
match lookup_ai(code) {
Some(item) => Some(item.kind is Fixed)
None => None
}
}
///|
pub fn catalog_required_length(code : String) -> Int? {
match lookup_ai(code) {
Some(item) => item.fixed_length
None => None
}
}
///|
pub fn catalog_validate_length(code : String, value : String) -> Bool {
match lookup_ai(code) {
Some(item) =>
match item.fixed_length {
Some(size) => value.length() == size
None => value.length() <= item.max_length && value.length() > 0
}
None => false
}
}