Compare commits

...

30 Commits

Author SHA1 Message Date
dankito 404b8f3871 Forgot to commit added dependencies 2024-12-13 05:56:13 +01:00
dankito 5860341149 Correct naming 2024-12-13 05:54:48 +01:00
dankito 3f6b975c44 Fixed mapping 2024-12-13 05:54:25 +01:00
dankito a69b4ed4d3 Renamed Unit to UnitOfMeasure to not interfere with Kotlin's Unit type 2024-12-13 05:52:41 +01:00
dankito 31b021bae7 Sorted units by code 2024-12-13 05:51:11 +01:00
dankito 6c369f6954 Added unit symbol from k-i18n Unit 2024-12-13 05:14:58 +01:00
dankito 4df26488e3 Extracted mergeUnitData(); removed redundant name initializer from Column for most calls 2024-12-13 04:37:45 +01:00
dankito f0c57cd3ee Also sorted Currency by English name 2024-12-13 00:40:52 +01:00
dankito 8f2d0da57d Added numericCode and numericCodeAsString to Country, using display name from i18n Region (if available) and sorting it by English name 2024-12-13 00:35:04 +01:00
dankito 2dfe338a8c Updated to new k-i18n data 2024-12-13 00:07:08 +01:00
dankito 33c0dc9d01 Added numericCode to Currency 2024-12-13 00:01:35 +01:00
dankito 92785af8f5 Fixed country name for the few countries not in k-i18n Region 2024-12-12 22:35:51 +01:00
dankito 428d4040e6 Using now region names from k-i18n as Country name 2024-12-12 22:35:01 +01:00
dankito d923dcb3f0 Fixed alpha-2 iso code of North Macedonia 2024-12-12 22:31:21 +01:00
dankito cef6565053 Fixing name for the few currencies not known to k-i18n Currency 2024-12-12 22:19:51 +01:00
dankito af7260db70 Using now currency names from k-i18n Currency 2024-12-12 22:13:27 +01:00
dankito adf2fce145 Marking frequently used codes 2024-12-12 14:24:30 +01:00
dankito 18f819d86c Extracted class Row 2024-12-12 12:35:41 +01:00
dankito 1b6e753f3c Implemented calculating TotalAmounts from invoice items 2024-12-12 09:50:02 +01:00
dankito abf63e4492 Added additional information about sources and generation process to Code Lists doc 2024-12-04 23:31:11 +01:00
dankito 806bdc6e4d Using now Country and Currency enum to signal allowed values 2024-12-04 23:07:41 +01:00
dankito df9e554d3e Implemented mapping Currency codes 2024-12-04 22:51:07 +01:00
dankito 0fee651114 Mapped Mime type names 2024-12-04 22:06:58 +01:00
dankito d4cfd38ae1 Moved englishName and schemeId properties to the end (so that enums start with their code property) 2024-12-04 21:57:58 +01:00
dankito 6d3ba9657f Implemented parsing Country codes 2024-12-04 21:47:14 +01:00
dankito 6874567875 Implemented mapping "Invoice"|"Credit Note" to InvoiceTypeUseFor 2024-12-04 13:18:20 +01:00
dankito 83963c436f Implemented generating Code Lists Enums from CEF genericode files and Zugferd .xslx 2024-12-04 12:43:00 +01:00
dankito 861035e968 Implemented ZugferdExcelCodeListsParser to parse Code Lists .xslx delivered with Zugferd specification 2024-12-04 12:14:05 +01:00
dankito 697b5615dd Manually added TimeReferenceCode 2024-12-04 06:21:52 +01:00
dankito b47ee96183 Implemented parsing CEF (EU) genericode Code Lists to Kotlin enum classes 2024-12-04 05:39:57 +01:00
41 changed files with 5697 additions and 18 deletions

View File

@ -22,6 +22,7 @@ allprojects {
repositories {
mavenCentral()
mavenLocal()
}
}

View File

@ -1,16 +1,23 @@
package net.codinux.invoicing.calculator
import net.codinux.invoicing.mapper.MustangMapper
import net.codinux.invoicing.model.Invoice
import net.codinux.invoicing.model.TotalAmounts
import net.codinux.invoicing.model.*
import org.mustangproject.ZUGFeRD.IExportableTransaction
import org.mustangproject.ZUGFeRD.TransactionCalculator
import java.math.BigDecimal
import java.time.LocalDate
open class AmountsCalculator {
protected open val mapper by lazy { MustangMapper() } // lazy to avoid circular dependency creation with MustangMapper
private val invoiceDetails by lazy { InvoiceDetails("", LocalDate.now()) }
private val party by lazy { Party("", "", null, null, "") }
open fun calculateTotalAmounts(items: List<InvoiceItem>) =
calculateTotalAmounts(Invoice(invoiceDetails, party, party, items))
open fun calculateTotalAmounts(invoice: Invoice) =
calculateTotalAmounts(mapper.mapToTransaction(invoice))

View File

@ -2,6 +2,9 @@ package net.codinux.invoicing.mapper
import net.codinux.invoicing.calculator.AmountsCalculator
import net.codinux.invoicing.model.*
import net.codinux.invoicing.model.codes.Country
import net.codinux.invoicing.model.codes.Currency
import net.codinux.invoicing.model.codes.UnitOfMeasure
import org.mustangproject.*
import org.mustangproject.BankDetails
import org.mustangproject.Invoice
@ -17,9 +20,20 @@ open class MustangMapper(
protected open val calculator: AmountsCalculator = AmountsCalculator()
) {
companion object {
val CountriesByIsoCode = Country.entries.associateBy { it.alpha2Code }
val CurrenciesByIsoCode = Currency.entries.associateBy { it.alpha3Code }
val UnitsByCode = UnitOfMeasure.entries.associateBy { it.code }
}
open fun mapToTransaction(invoice: net.codinux.invoicing.model.Invoice): IExportableTransaction = Invoice().apply {
this.number = invoice.details.invoiceNumber
this.issueDate = map(invoice.details.invoiceDate)
this.currency = invoice.details.currency.alpha3Code
this.sender = mapParty(invoice.supplier)
this.recipient = mapParty(invoice.customer)
@ -42,7 +56,7 @@ open class MustangMapper(
}
open fun mapParty(party: Party): TradeParty = TradeParty(
party.name, party.address, party.postalCode, party.city, party.countryIsoCode
party.name, party.address, party.postalCode, party.city, party.country.alpha2Code
).apply {
this.setAdditionalAddress(party.additionalAddressLine)
@ -64,7 +78,7 @@ open class MustangMapper(
open fun mapLineItem(item: InvoiceItem): IZUGFeRDExportableItem = Item(
// description has to be an empty string if not set
Product(item.name, item.description ?: "", item.unit, item.vatRate).apply {
Product(item.name, item.description ?: "", item.unit.code, item.vatRate).apply {
this.sellerAssignedID = item.articleNumber // TODO: what is the articleNumber? sellerAssignedId, globalId, ...?
},
item.unitPrice, item.quantity
@ -94,7 +108,8 @@ open class MustangMapper(
open fun mapToInvoice(invoice: Invoice) = net.codinux.invoicing.model.Invoice(
details = InvoiceDetails(invoice.number, map(invoice.issueDate), map(invoice.dueDate ?: invoice.paymentTerms?.dueDate), invoice.paymentTermDescription ?: invoice.paymentTerms?.description),
// TODO: what to do if currency code is unknown? Currently it throws an exception, but i don't like that mapping fails just due to an unknown currency code
details = InvoiceDetails(invoice.number, map(invoice.issueDate), mapCurrency(invoice.currency), map(invoice.dueDate ?: invoice.paymentTerms?.dueDate), invoice.paymentTermDescription ?: invoice.paymentTerms?.description),
supplier = mapParty(invoice.sender),
customer = mapParty(invoice.recipient),
@ -108,13 +123,15 @@ open class MustangMapper(
)
open fun mapParty(party: TradeParty) = Party(
party.name, party.street, party.additionalAddress, party.zip, party.location, party.country, party.vatID,
// TODO: what to do if country code is unknown? Currently it throws an exception, but i don't like that mapping fails just due to an unknown country code
party.name, party.street, party.additionalAddress, party.zip, party.location, mapCountry(party.country), party.vatID,
party.email ?: party.contact?.eMail, party.contact?.phone, party.contact?.fax, party.contact?.name,
party.bankDetails?.firstOrNull()?.let { net.codinux.invoicing.model.BankDetails(it.iban, it.bic, it.accountName) }
)
open fun mapLineItem(item: IZUGFeRDExportableItem) = InvoiceItem(
item.product.name, item.quantity, item.product.unit, item.price, item.product.vatPercent, item.product.sellerAssignedID, item.product.description.takeUnless { it.isBlank() }
// TODO: what to use as fallback if unit cannot be determined?
item.product.name, item.quantity, item.product.unit?.let { UnitsByCode[it] } ?: UnitOfMeasure.ASM, item.price, item.product.vatPercent, item.product.sellerAssignedID, item.product.description.takeUnless { it.isBlank() }
)
protected open fun mapAmountAdjustments(invoice: Invoice): AmountAdjustments? {
@ -135,6 +152,13 @@ open class MustangMapper(
}
private fun mapCountry(isoAlpha2CountryCode: String?): Country =
CountriesByIsoCode[isoAlpha2CountryCode]
?: throw IllegalArgumentException("Unknown ISO Alpha-2 country code '$isoAlpha2CountryCode', therefore cannot map ISO code to Country")
private fun mapCurrency(isoCurrencyCode: String?): Currency =
CurrenciesByIsoCode[isoCurrencyCode]
?: throw IllegalArgumentException("Unknown ISO currency code '$isoCurrencyCode', therefore cannot map ISO code to Currency")
@JvmName("mapNullable")
protected fun map(date: LocalDate?) =

View File

@ -1,11 +1,17 @@
package net.codinux.invoicing.model
import net.codinux.invoicing.model.codes.Currency
import java.time.LocalDate
class InvoiceDetails(
val invoiceNumber: String,
val invoiceDate: LocalDate,
val currency: Currency = Currency.Euro,
// val orderNumber: String? = null,
// val orderDate: LocalDate? = null,
val dueDate: LocalDate? = null,
val paymentDescription: String? = null,
) {

View File

@ -1,11 +1,12 @@
package net.codinux.invoicing.model
import net.codinux.invoicing.model.codes.UnitOfMeasure
import java.math.BigDecimal
class InvoiceItem(
val name: String,
val quantity: BigDecimal,
val unit: String,
val unit: UnitOfMeasure,
val unitPrice: BigDecimal,
val vatRate: BigDecimal,
val articleNumber: String? = null,

View File

@ -1,5 +1,7 @@
package net.codinux.invoicing.model
import net.codinux.invoicing.model.codes.Country
class Party(
val name: String,
@ -10,10 +12,7 @@ class Party(
val additionalAddressLine: String? = null,
var postalCode: String?,
val city: String,
/**
* Two letter country ISO code, e.g. "us" for USA, "fr" for France, ...
*/
val countryIsoCode: String? = null, // TODO: use the full country name here and map to ISO code in MustangMapper?
val country: Country = Country.Germany,
val vatId: String? = null,

View File

@ -0,0 +1,23 @@
package net.codinux.invoicing.model.codes
enum class AllowanceReasonCode(val code: String, val meaning: String, val description: String) {
_41("41", "Bonus for works ahead of schedule", "Bonus for completing work ahead of schedule."),
_42("42", "Other bonus", "Bonus earned for other reasons."),
_60("60", "Manufacturer's consumer discount", "A discount given by the manufacturer which should be passed on to the consumer."),
_62("62", "Due to military status", "Allowance granted because of the military status."),
_63("63", "Due to work accident", "Allowance granted to a victim of a work accident."),
_64("64", "Special agreement", "An allowance or charge as specified in a special agreement."),
_65("65", "Production error discount", "A discount given for the purchase of a product with a production error."),
_66("66", "New outlet discount", "A discount given at the occasion of the opening of a new outlet."),
_67("67", "Sample discount", "A discount given for the purchase of a sample of a product."),
_68("68", "End-of-range discount", "A discount given for the purchase of an end-of-range product."),
_70("70", "Incoterm discount", "A discount given for a specified Incoterm."),
_71("71", "Point of sales threshold allowance", "Allowance for reaching or exceeding an agreed sales threshold at the point of sales."),
_88("88", "Material surcharge/deduction", "Surcharge/deduction, calculated for higher/ lower material's consumption."),
_95("95", "Discount", "A reduction from a usual or list price."),
_100("100", "Special rebate", "A return of part of an amount paid for goods or services, serving as a reduction or discount."),
_102("102", "Fixed long term", "A fixed long term allowance or charge."),
_103("103", "Temporary", "A temporary allowance or charge."),
_104("104", "Standard", "The standard available allowance or charge."),
_105("105", "Yearly turnover", "An allowance or charge based on yearly turnover."),
}

View File

@ -0,0 +1,182 @@
package net.codinux.invoicing.model.codes
enum class ChargeReasonCode(val code: String, val meaning: String, val description: String, val isFrequentlyUsedValue: Boolean) {
AA("AA", "Advertising", "The service of providing advertising.", true),
AAA("AAA", "Telecommunication", "The service of providing telecommunication activities and/or faclities.", false),
AAC("AAC", "Technical modification", "The service of making technical modifications to a product.", false),
AAD("AAD", "Job-order production", "The service of producing to order.", false),
AAE("AAE", "Outlays", "The service of providing money for outlays on behalf of a trading partner.", false),
AAF("AAF", "Off-premises", "The service of providing services outside the premises of the provider.", false),
AAH("AAH", "Additional processing", "The service of providing additional processing.", false),
AAI("AAI", "Attesting", "The service of certifying validity.", false),
AAS("AAS", "Acceptance", "The service of accepting goods or services.", false),
AAT("AAT", "Rush delivery", "The service to provide a rush delivery.", false),
AAV("AAV", "Special construction", "The service of providing special construction.", false),
AAY("AAY", "Airport facilities", "The service of providing airport facilities.", false),
AAZ("AAZ", "Concession", "The service allowing a party to use another party's facilities.", false),
ABA("ABA", "Compulsory storage", "The service provided to hold a compulsory inventory.", false),
ABB("ABB", "Fuel removal", "Remove or off-load fuel from vehicle, vessel or craft.", false),
ABC("ABC", "Into plane", "Service of delivering goods to an aircraft from local storage.", false),
ABD("ABD", "Overtime", "The service of providing labour beyond the established limit of working hours.", false),
ABF("ABF", "Tooling", "The service of providing specific tooling.", false),
ABK("ABK", "Miscellaneous", "Miscellaneous services.", false),
ABL("ABL", "Additional packaging", "The service of providing additional packaging.", true),
ABN("ABN", "Dunnage", "The service of providing additional padding materials required to secure and protect a cargo within a shipping container.", false),
ABR("ABR", "Containerisation", "The service of packing items into a container.", false),
ABS("ABS", "Carton packing", "The service of packing items into a carton.", false),
ABT("ABT", "Hessian wrapped", "The service of hessian wrapping.", false),
ABU("ABU", "Polyethylene wrap packing", "The service of packing in polyethylene wrapping.", false),
ACF("ACF", "Miscellaneous treatment", "Miscellaneous treatment service.", false),
ACG("ACG", "Enamelling treatment", "The service of providing enamelling treatment.", false),
ACH("ACH", "Heat treatment", "The service of treating with heat.", false),
ACI("ACI", "Plating treatment", "The service of providing plating treatment.", false),
ACJ("ACJ", "Painting", "The service of painting.", false),
ACK("ACK", "Polishing", "The service of polishing.", false),
ACL("ACL", "Priming", "The service of priming.", false),
ACM("ACM", "Preservation treatment", "The service of preservation treatment.", false),
ACS("ACS", "Fitting", "Fitting service.", false),
ADC("ADC", "Consolidation", "The service of consolidating multiple consignments into one shipment.", false),
ADE("ADE", "Bill of lading", "The service of providing a bill of lading document.", false),
ADJ("ADJ", "Airbag", "The service of surrounding a product with an air bag.", false),
ADK("ADK", "Transfer", "The service of transferring.", false),
ADL("ADL", "Slipsheet", "The service of securing a stack of products on a slipsheet.", false),
ADM("ADM", "Binding", "Binding service.", false),
ADN("ADN", "Repair or replacement of broken returnable package", "The service of repairing or replacing a broken returnable package.", false),
ADO("ADO", "Efficient logistics", "A code indicating efficient logistics services.", false),
ADP("ADP", "Merchandising", "A code indicating that merchandising services are in operation.", false),
ADQ("ADQ", "Product mix", "A code indicating that product mixing services are in operation.", false),
ADR("ADR", "Other services", "A code indicating that other non-specific services are in operation.", true),
ADT("ADT", "Pick-up", "The service of picking up or collection of goods.", true),
ADW("ADW", "Chronic illness", "The special services provided due to chronic illness.", false),
ADY("ADY", "New product introduction", "A service provided by a buyer when introducing a new product from a suppliers range to the range traded by the buyer.", false),
ADZ("ADZ", "Direct delivery", "Direct delivery service.", false),
AEA("AEA", "Diversion", "The service of diverting deliverables.", false),
AEB("AEB", "Disconnect", "The service is a disconnection.", false),
AEC("AEC", "Distribution", "Distribution service.", false),
AED("AED", "Handling of hazardous cargo", "A service for handling hazardous cargo.", false),
AEF("AEF", "Rents and leases", "The service of renting and/or leasing.", false),
AEH("AEH", "Location differential", "Delivery to a different location than previously contracted.", false),
AEI("AEI", "Aircraft refueling", "Fuel being put into the aircraft.", false),
AEJ("AEJ", "Fuel shipped into storage", "Fuel being shipped into a storage system.", false),
AEK("AEK", "Cash on delivery", "The provision of a cash on delivery (COD) service.", false),
AEL("AEL", "Small order processing service", "A service related to the processing of small orders.", false),
AEM("AEM", "Clerical or administrative services", "The provision of clerical or administrative services.", false),
AEN("AEN", "Guarantee", "The service of providing a guarantee.", false),
AEO("AEO", "Collection and recycling", "The service of collection and recycling products.", false),
AEP("AEP", "Copyright fee collection", "The service of collecting copyright fees.", false),
AES("AES", "Veterinary inspection service", "The service of providing veterinary inspection.", false),
AET("AET", "Pensioner service", "Special service when the subject is a pensioner.", false),
AEU("AEU", "Medicine free pass holder", "Special service when the subject holds a medicine free pass.", false),
AEV("AEV", "Environmental protection service", "The provision of an environmental protection service.", false),
AEW("AEW", "Environmental clean-up service", "The provision of an environmental clean-up service.", false),
AEX("AEX", "National cheque processing service outside account area", "Service of processing a national cheque outside the ordering customer's bank trading area.", false),
AEY("AEY", "National payment service outside account area", "Service of processing a national payment to a beneficiary holding an account outside the trading area of the ordering customer's bank.", false),
AEZ("AEZ", "National payment service within account area", "Service of processing a national payment to a beneficiary holding an account within the trading area of the ordering customer's bank.", false),
AJ("AJ", "Adjustments", "The service of making adjustments.", false),
AU("AU", "Authentication", "The service of authenticating.", false),
CA("CA", "Cataloguing", "The provision of cataloguing services.", false),
CAB("CAB", "Cartage", "Movement of goods by heavy duty cart or vehicle.", false),
CAD("CAD", "Certification", "The service of certifying.", false),
CAE("CAE", "Certificate of conformance", "The service of providing a certificate of conformance.", false),
CAF("CAF", "Certificate of origin", "The service of providing a certificate of origin.", false),
CAI("CAI", "Cutting", "The service of cutting.", false),
CAJ("CAJ", "Consular service", "The service provided by consulates.", false),
CAK("CAK", "Customer collection", "The service of collecting goods by the customer.", false),
CAL("CAL", "Payroll payment service", "Provision of a payroll payment service.", false),
CAM("CAM", "Cash transportation", "Provision of a cash transportation service.", false),
CAN("CAN", "Home banking service", "Provision of a home banking service.", false),
CAO("CAO", "Bilateral agreement service", "Provision of a service as specified in a bilateral special agreement.", false),
CAP("CAP", "Insurance brokerage service", "Provision of an insurance brokerage service.", false),
CAQ("CAQ", "Cheque generation", "Provision of a cheque generation service.", false),
CAR("CAR", "Preferential merchandising location", "Service of assigning a preferential location for merchandising.", false),
CAS("CAS", "Crane", "The service of providing a crane.", false),
CAT("CAT", "Special colour service", "Providing a colour which is different from the default colour.", false),
CAU("CAU", "Sorting", "The provision of sorting services.", false),
CAV("CAV", "Battery collection and recycling", "The service of collecting and recycling batteries.", false),
CAW("CAW", "Product take back fee", "The fee the consumer must pay the manufacturer to take back the product.", false),
CAX("CAX", "Quality control released", "Informs the stockholder it is free to distribute the quality controlled passed goods.", false),
CAY("CAY", "Quality control held", "Instructs the stockholder to withhold distribution of the goods until the manufacturer has completed a quality control assessment.", false),
CAZ("CAZ", "Quality control embargo", "Instructs the stockholder to withhold distribution of goods which have failed quality control tests.", false),
CD("CD", "Car loading", "Car loading service.", false),
CG("CG", "Cleaning", "Cleaning service.", false),
CS("CS", "Cigarette stamping", "The service of providing cigarette stamping.", false),
CT("CT", "Count and recount", "The service of doing a count and recount.", false),
DAB("DAB", "Layout/design", "The service of providing layout/design.", false),
DAC("DAC", "Assortment allowance", "Allowance given when a specific part of a suppliers assortment is purchased by the buyer.", false),
DAD("DAD", "Driver assigned unloading", "The service of unloading by the driver.", false),
DAF("DAF", "Debtor bound", "A special allowance or charge applicable to a specific debtor.", false),
DAG("DAG", "Dealer allowance", "An allowance offered by a party dealing a certain brand or brands of products.", false),
DAH("DAH", "Allowance transferable to the consumer", "An allowance given by the manufacturer which should be transfered to the consumer.", false),
DAI("DAI", "Growth of business", "An allowance or charge related to the growth of business over a pre-determined period of time.", false),
DAJ("DAJ", "Introduction allowance", "An allowance related to the introduction of a new product to the range of products traded by a retailer.", false),
DAK("DAK", "Multi-buy promotion", "A code indicating special conditions related to a multi- buy promotion.", false),
DAL("DAL", "Partnership", "An allowance or charge related to the establishment and on-going maintenance of a partnership.", false),
DAM("DAM", "Return handling", "An allowance or change related to the handling of returns.", false),
DAN("DAN", "Minimum order not fulfilled charge", "Charge levied because the minimum order quantity could not be fulfilled.", false),
DAO("DAO", "Point of sales threshold allowance", "Allowance for reaching or exceeding an agreed sales threshold at the point of sales.", false),
DAP("DAP", "Wholesaling discount", "A special discount related to the purchase of products through a wholesaler.", false),
DAQ("DAQ", "Documentary credits transfer commission", "Fee for the transfer of transferable documentary credits.", false),
DL("DL", "Delivery", "The service of providing delivery.", false),
EG("EG", "Engraving", "The service of providing engraving.", false),
EP("EP", "Expediting", "The service of expediting.", false),
ER("ER", "Exchange rate guarantee", "The service of guaranteeing exchange rate.", false),
FAA("FAA", "Fabrication", "The service of providing fabrication.", false),
FAB("FAB", "Freight equalization", "The service of load balancing.", false),
FAC("FAC", "Freight extraordinary handling", "The service of providing freight's extraordinary handling.", false),
FC("FC", "Freight service", "The service of moving goods, by whatever means, from one place to another.", true),
FH("FH", "Filling/handling", "The service of providing filling/handling.", false),
FI("FI", "Financing", "The service of providing financing.", true),
GAA("GAA", "Grinding", "The service of grinding.", false),
HAA("HAA", "Hose", "The service of providing a hose.", false),
HD("HD", "Handling", "Handling service.", false),
HH("HH", "Hoisting and hauling", "The service of hoisting and hauling.", false),
IAA("IAA", "Installation", "The service of installing.", false),
IAB("IAB", "Installation and warranty", "The service of installing and providing warranty.", false),
ID("ID", "Inside delivery", "The service of providing delivery inside.", false),
IF("IF", "Inspection", "The service of inspection.", false),
IR("IR", "Installation and training", "The service of providing installation and training.", false),
IS("IS", "Invoicing", "The service of providing an invoice.", false),
KO("KO", "Koshering", "The service of preparing food in accordance with Jewish law.", false),
L1("L1", "Carrier count", "The service of counting by the carrier.", false),
LA("LA", "Labelling", "Labelling service.", true),
LAA("LAA", "Labour", "The service to provide required labour.", false),
LAB("LAB", "Repair and return", "The service of repairing and returning.", false),
LF("LF", "Legalisation", "The service of legalising.", false),
MAE("MAE", "Mounting", "The service of mounting.", false),
MI("MI", "Mail invoice", "The service of mailing an invoice.", false),
ML("ML", "Mail invoice to each location", "The service of mailing an invoice to each location.", false),
NAA("NAA", "Non-returnable containers", "The service of providing non-returnable containers.", false),
OA("OA", "Outside cable connectors", "The service of providing outside cable connectors.", false),
PA("PA", "Invoice with shipment", "The service of including the invoice with the shipment.", false),
PAA("PAA", "Phosphatizing (steel treatment)", "The service of phosphatizing the steel.", false),
PC("PC", "Packing", "The service of packing.", false),
PL("PL", "Palletizing", "The service of palletizing.", false),
PRV("PRV", "Price variation", "Price variation related to energy and or raw materials cost variation.", false),
RAB("RAB", "Repacking", "The service of repacking.", false),
RAC("RAC", "Repair", "The service of repairing.", false),
RAD("RAD", "Returnable container", "The service of providing returnable containers.", false),
RAF("RAF", "Restocking", "The service of restocking.", false),
RE("RE", "Re-delivery", "The service of re-delivering.", false),
RF("RF", "Refurbishing", "The service of refurbishing.", false),
RH("RH", "Rail wagon hire", "The service of providing rail wagons for hire.", false),
RV("RV", "Loading", "The service of loading goods.", false),
SA("SA", "Salvaging", "The service of salvaging.", false),
SAA("SAA", "Shipping and handling", "The service of shipping and handling.", false),
SAD("SAD", "Special packaging", "The service of special packaging.", false),
SAE("SAE", "Stamping", "The service of stamping.", false),
SAI("SAI", "Consignee unload", "The service of unloading by the consignee.", false),
SG("SG", "Shrink-wrap", "The service of shrink-wrapping.", false),
SH("SH", "Special handling", "The service of special handling.", false),
SM("SM", "Special finish", "The service of providing a special finish.", false),
SU("SU", "Set-up", "The service of setting-up.", false),
TAB("TAB", "Tank renting", "The service of providing tanks for hire.", false),
TAC("TAC", "Testing", "The service of testing.", false),
TT("TT", "Transportation - third party billing", "The service of providing third party billing for transportation.", false),
TV("TV", "Transportation by vendor", "The service of providing transportation by the vendor.", false),
V1("V1", "Drop yard", "The service of delivering goods at the yard.", false),
V2("V2", "Drop dock", "The service of delivering goods at the dock.", false),
WH("WH", "Warehousing", "The service of storing and handling of goods in a warehouse.", false),
XAA("XAA", "Combine all same day shipment", "The service of combining all shipments for the same day.", false),
YY("YY", "Split pick-up", "The service of providing split pick-up.", false),
ZZZ("ZZZ", "Mutually defined", "A code assigned within a code list to be used on an interim basis and as defined among trading partners until a precise code can be assigned to the code list.", false),
}

View File

@ -0,0 +1,98 @@
## Sources
Sources of Code Lists according to XRechnung specification p. 105, enhanced by information from [EN16931 code lists file](https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931)
| Name | Beschreibung | Version | XRepository Versionskennung und Link | Usage | Using in fields |
|--------------|----------------------------------------------------------------------------------------------------|---------|-----------------------------------------------|-----------|-------------------------------------------------------------------------|
| ISO 3166-1 | Country codes (kompatibel zu ISO 3166-1) | 2022 | urn:xoev-de:kosit:codeliste:country-codes_8 | extended | BT-40, BT-55, BT-69, BT-80, BT-159 |
| ISO 4217 | Currency codes (kompatibel zu ISO 4217) | 2021 | urn:xoev-de:kosit:codeliste:currency-codes_3 | full list | BT-5, BT-6 |
| ISO/IEC 6523 | ICD — Identifier scheme code (kompatibel zu ISO 6523) | 2023 | urn:xoev-de:kosit:codeliste:icd_5 | full list | BT-29-1, BT-30-1, BT-46-1, BT-47-1, BT-60-1, BT-61-1, BT-71-1, BT-157-1 |
| UNTDID 1001 | Document name coded | 21a | urn:xoev-de:kosit:codeliste:untdid.1001_4 | subset | BT-3 |
| UNTDID 1153 | Reference code qualifier | d20a | urn:xoev-de:kosit:codeliste:untdid.1153_3 | full list | BT-18-1, BT-128-1 |
| UNTDID 2005 | Date or time or period function code qualifier | d21a | urn:xoev-de:kosit:codeliste:untdid.2005_4 | subset | BT-8 |
| UNTDID 4451 | Text subject code qualifier | d21a | urn:xoev-de:kosit:codeliste:untdid.4451_4 | full list | BT-21 |
| UNTDID 4461 | Payment means coded | d20a | urn:xoev-de:xrechnung:codeliste:untdid.4461_3 | full list | BT-81 |
| UNTDID 5189 | Allowance or charge identification coded | d20a | urn:xoev-de:kosit:codeliste:untdid.5189_3 | subset | BT-98, BT-140 |
| UNTDID 5305 | Duty or tax or fee category coded | d20a | urn:xoev-de:kosit:codeliste:untdid.5305_3 | subset | BT-95, BT-102, BT-118, BT-151 |
| UNTDID 7143 | Item type identification coded | d21a | urn:xoev-de:kosit:codeliste:untdid.7143_4 | full list | BT-158-1 |
| UNTDID 7161 | Special service description coded | d20a | urn:xoev-de:kosit:codeliste:untdid.7161_3 | full list | BT-105, BT-145 |
| EAS | Electronic Address Scheme Code list | 9.0 | urn:xoev-de:kosit:codeliste:eas_5 | full list | BT-34-1, BT-49-1 |
| VATEX | VAT exemption reason code list | 4.0 | urn:xoev-de:kosit:codeliste:vatex_1 | full list | BT-121 |
| Rec 20 | UN/ECE Recommendation Nº20 Codes for Units of Measure Used in International Trade | Rev. 17 | urn:xoev-de:kosit:codeliste:rec20_3 | full list | BT-130, BT-150 |
| Rec 21 | UN/ECE Recommendation Nº21 Codes for Passengers, Types of Cargo, Packages and Packaging Materials | Rev. 12 | urn:xoev-de:kosit:codeliste:rec21_3 | full list | BT-130, BT-150 |
| VAT ID | VAT Identifier; has only code "VAT" for Value added tax; code list only in EN Excel file | | | subset | BT-31, BT-48, BT-63 |
| VAT Cat | VAT Category code; has only code "VAT" for Value added tax; code list only in EN Excel file | | | subset | BT-95, BT-102, BT-118, BT-151 |
| MIME | Mime type codes — Mime codes; code list only in EN Excel file | | | subset | BT-125-1 |
### Where to find
All **UNTDID code lists** can be found at https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tredXXXX.htm, where XXXX is the four-digit number from above's table, e.g.,
https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred1001.htm
The **UN/ECE Recommendation Nº20 and Nº21** can be found at:
https://unece.org/trade/uncefact/cl-recommendations
## Evaluation of sources
Usually it's not necessary to parse above's sources directly, there are already compilations of these, which also contain only the required values for EN16931:
### EN / CEF Genericode Code Lists
URL: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931
It Contains almost all of the above's code lists, even though some additional data is missing.
\+ good to parse
\- no descriptions
\- only English names
### Factur-X / ZUGFeRD Code Lists .xslx
Download .zip from: https://www.ferd-net.de/standards/zugferd-2.3.2/zugferd-2.3.2.html?acceptCookie=1
\+ all code lists in one file
\+ incl. English descriptions and invoice fields in which codes are used
\- difficult to parse
### UNTDID
URL e.g.: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred1001.htm
\+ incl. English descriptions
\- difficult to parse, plain text only (on a website!)
\- only English names and descriptions
\- partially more codes than XRechnung standard allows
### UNECE Rec. 20 & 21
Recommendation 20 Codes for Units of Measure Used in International Trade
Recommendation 21 Codes for Passengers, Types of Cargo, Packages and Packaging Materials (with Complementary Codes for Package Names)
URL: https://unece.org/trade/uncefact/cl-recommendations
\+ good to parse
\+ incl. English descriptions
\+ incl. unit symbols
\- only units, no other code lists
\- only English names and descriptions
## Generation
Most of the Code List enums in this folder are generated by [CodeGenerator](../../../../../../../../../e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/CodeGenerator.kt) in project `e-invoice-spec-parser`.
It uses the code lists provided by ZUGFerd and the EN / CEF Genericode Code Lists.

View File

@ -0,0 +1,255 @@
package net.codinux.invoicing.model.codes
enum class Country(val alpha2Code: String, val alpha3Code: String, val numericCode: Int?, val numericCodeAsString: String?, val englishName: String) {
Afghanistan("AF", "AFG", 4, "004", "Afghanistan"),
AlandIslands("AX", "ALA", 248, "248", "Åland Islands"),
Albania("AL", "ALB", 8, "008", "Albania"),
Algeria("DZ", "DZA", 12, "012", "Algeria"),
AmericanSamoa("AS", "ASM", 16, "016", "American Samoa"),
Andorra("AD", "AND", 20, "020", "Andorra"),
Angola("AO", "AGO", 24, "024", "Angola"),
Anguilla("AI", "AIA", 660, "660", "Anguilla"),
Antarctica("AQ", "ATA", 10, "010", "Antarctica"),
AntiguaAndBarbuda("AG", "ATG", 28, "028", "Antigua & Barbuda"),
Argentina("AR", "ARG", 32, "032", "Argentina"),
Armenia("AM", "ARM", 51, "051", "Armenia"),
Aruba("AW", "ABW", 533, "533", "Aruba"),
Australia("AU", "AUS", 36, "036", "Australia"),
Austria("AT", "AUT", 40, "040", "Austria"),
Azerbaijan("AZ", "AZE", 31, "031", "Azerbaijan"),
Bahamas("BS", "BHS", 44, "044", "Bahamas"),
Bahrain("BH", "BHR", 48, "048", "Bahrain"),
Bangladesh("BD", "BGD", 50, "050", "Bangladesh"),
Barbados("BB", "BRB", 52, "052", "Barbados"),
Belarus("BY", "BLR", 112, "112", "Belarus"),
Belgium("BE", "BEL", 56, "056", "Belgium"),
Belize("BZ", "BLZ", 84, "084", "Belize"),
Benin("BJ", "BEN", 204, "204", "Benin"),
Bermuda("BM", "BMU", 60, "060", "Bermuda"),
Bhutan("BT", "BTN", 64, "064", "Bhutan"),
Bolivia("BO", "BOL", 68, "068", "Bolivia"),
BosniaAndHerzegovina("BA", "BIH", 70, "070", "Bosnia & Herzegovina"),
Botswana("BW", "BWA", 72, "072", "Botswana"),
BouvetIsland("BV", "BVT", 74, "074", "Bouvet Island"),
Brazil("BR", "BRA", 76, "076", "Brazil"),
BritishIndianOceanTerritory("IO", "IOT", 86, "086", "British Indian Ocean Territory"),
BritishVirginIslands("VG", "VGB", 92, "092", "British Virgin Islands"),
Brunei("BN", "BRN", 96, "096", "Brunei"),
Bulgaria("BG", "BGR", 100, "100", "Bulgaria"),
BurkinaFaso("BF", "BFA", 854, "854", "Burkina Faso"),
Burundi("BI", "BDI", 108, "108", "Burundi"),
Cambodia("KH", "KHM", 116, "116", "Cambodia"),
Cameroon("CM", "CMR", 120, "120", "Cameroon"),
Canada("CA", "CAN", 124, "124", "Canada"),
CapeVerde("CV", "CPV", 132, "132", "Cape Verde"),
CaribbeanNetherlands("BQ", "BES", 535, "535", "Caribbean Netherlands"),
CaymanIslands("KY", "CYM", 136, "136", "Cayman Islands"),
CentralAfricanRepublic("CF", "CAF", 140, "140", "Central African Republic"),
Chad("TD", "TCD", 148, "148", "Chad"),
Chile("CL", "CHL", 152, "152", "Chile"),
China("CN", "CHN", 156, "156", "China"),
ChristmasIsland("CX", "CXR", 162, "162", "Christmas Island"),
CocosKeelingIslands("CC", "CCK", 166, "166", "Cocos (Keeling) Islands"),
Colombia("CO", "COL", 170, "170", "Colombia"),
Comoros("KM", "COM", 174, "174", "Comoros"),
Congo("CG", "COG", 178, "178", "Congo - Brazzaville"),
Congo_DemocraticRepublic("CD", "COD", 180, "180", "Congo - Kinshasa"),
CookIslands("CK", "COK", 184, "184", "Cook Islands"),
CostaRica("CR", "CRI", 188, "188", "Costa Rica"),
CoteDIvoire("CI", "CIV", 384, "384", "Côte dIvoire"),
Croatia("HR", "HRV", 191, "191", "Croatia"),
Cuba("CU", "CUB", 192, "192", "Cuba"),
Curacao("CW", "CUW", 531, "531", "Curaçao"),
Cyprus("CY", "CYP", 196, "196", "Cyprus"),
Czechia("CZ", "CZE", 203, "203", "Czechia"),
Denmark("DK", "DNK", 208, "208", "Denmark"),
Djibouti("DJ", "DJI", 262, "262", "Djibouti"),
Dominica("DM", "DMA", 212, "212", "Dominica"),
DominicanRepublic("DO", "DOM", 214, "214", "Dominican Republic"),
Ecuador("EC", "ECU", 218, "218", "Ecuador"),
Egypt("EG", "EGY", 818, "818", "Egypt"),
ElSalvador("SV", "SLV", 222, "222", "El Salvador"),
EquatorialGuinea("GQ", "GNQ", 226, "226", "Equatorial Guinea"),
Eritrea("ER", "ERI", 232, "232", "Eritrea"),
Estonia("EE", "EST", 233, "233", "Estonia"),
Eswatini("SZ", "SWZ", 748, "748", "Eswatini"),
Ethiopia("ET", "ETH", 231, "231", "Ethiopia"),
FalklandIslands("FK", "FLK", 238, "238", "Falkland Islands"),
FaroeIslands("FO", "FRO", 234, "234", "Faroe Islands"),
Fiji("FJ", "FJI", 242, "242", "Fiji"),
Finland("FI", "FIN", 246, "246", "Finland"),
France("FR", "FRA", 250, "250", "France"),
FrenchGuiana("GF", "GUF", 254, "254", "French Guiana"),
FrenchPolynesia("PF", "PYF", 258, "258", "French Polynesia"),
FrenchSouthernTerritories("TF", "ATF", 260, "260", "French Southern Territories"),
Gabon("GA", "GAB", 266, "266", "Gabon"),
Gambia("GM", "GMB", 270, "270", "Gambia"),
Georgia("GE", "GEO", 268, "268", "Georgia"),
Germany("DE", "DEU", 276, "276", "Germany"),
Ghana("GH", "GHA", 288, "288", "Ghana"),
Gibraltar("GI", "GIB", 292, "292", "Gibraltar"),
Greece("GR", "GRC", 300, "300", "Greece"),
Greenland("GL", "GRL", 304, "304", "Greenland"),
Grenada("GD", "GRD", 308, "308", "Grenada"),
Guadeloupe("GP", "GLP", 312, "312", "Guadeloupe"),
Guam("GU", "GUM", 316, "316", "Guam"),
Guatemala("GT", "GTM", 320, "320", "Guatemala"),
Guernsey("GG", "GGY", 831, "831", "Guernsey"),
Guinea("GN", "GIN", 324, "324", "Guinea"),
GuineaBissau("GW", "GNB", 624, "624", "Guinea-Bissau"),
Guyana("GY", "GUY", 328, "328", "Guyana"),
Haiti("HT", "HTI", 332, "332", "Haiti"),
HeardAndMcDonaldIslands("HM", "HMD", 334, "334", "Heard & McDonald Islands"),
Honduras("HN", "HND", 340, "340", "Honduras"),
HongKong("HK", "HKG", 344, "344", "Hong Kong SAR China"),
Hungary("HU", "HUN", 348, "348", "Hungary"),
Iceland("IS", "ISL", 352, "352", "Iceland"),
India("IN", "IND", 356, "356", "India"),
Indonesia("ID", "IDN", 360, "360", "Indonesia"),
Iran("IR", "IRN", 364, "364", "Iran"),
Iraq("IQ", "IRQ", 368, "368", "Iraq"),
Ireland("IE", "IRL", 372, "372", "Ireland"),
IsleOfMan("IM", "IMN", 833, "833", "Isle of Man"),
Israel("IL", "ISR", 376, "376", "Israel"),
Italy("IT", "ITA", 380, "380", "Italy"),
Jamaica("JM", "JAM", 388, "388", "Jamaica"),
Japan("JP", "JPN", 392, "392", "Japan"),
Jersey("JE", "JEY", 832, "832", "Jersey"),
Jordan("JO", "JOR", 400, "400", "Jordan"),
Kazakhstan("KZ", "KAZ", 398, "398", "Kazakhstan"),
Kenya("KE", "KEN", 404, "404", "Kenya"),
Kiribati("KI", "KIR", 296, "296", "Kiribati"),
Kosovo("1A", "1A", null, null, "Kosovo"),
Kuwait("KW", "KWT", 414, "414", "Kuwait"),
Kyrgyzstan("KG", "KGZ", 417, "417", "Kyrgyzstan"),
Laos("LA", "LAO", 418, "418", "Laos"),
Latvia("LV", "LVA", 428, "428", "Latvia"),
Lebanon("LB", "LBN", 422, "422", "Lebanon"),
Lesotho("LS", "LSO", 426, "426", "Lesotho"),
Liberia("LR", "LBR", 430, "430", "Liberia"),
Libya("LY", "LBY", 434, "434", "Libya"),
Liechtenstein("LI", "LIE", 438, "438", "Liechtenstein"),
Lithuania("LT", "LTU", 440, "440", "Lithuania"),
Luxembourg("LU", "LUX", 442, "442", "Luxembourg"),
Macao("MO", "MAC", 446, "446", "Macao SAR China"),
Madagascar("MG", "MDG", 450, "450", "Madagascar"),
Malawi("MW", "MWI", 454, "454", "Malawi"),
Malaysia("MY", "MYS", 458, "458", "Malaysia"),
Maldives("MV", "MDV", 462, "462", "Maldives"),
Mali("ML", "MLI", 466, "466", "Mali"),
Malta("MT", "MLT", 470, "470", "Malta"),
MarshallIslands("MH", "MHL", 584, "584", "Marshall Islands"),
Martinique("MQ", "MTQ", 474, "474", "Martinique"),
Mauritania("MR", "MRT", 478, "478", "Mauritania"),
Mauritius("MU", "MUS", 480, "480", "Mauritius"),
Mayotte("YT", "MYT", 175, "175", "Mayotte"),
Mexico("MX", "MEX", 484, "484", "Mexico"),
Micronesia("FM", "FSM", 583, "583", "Micronesia"),
Moldova("MD", "MDA", 498, "498", "Moldova"),
Monaco("MC", "MCO", 492, "492", "Monaco"),
Mongolia("MN", "MNG", 496, "496", "Mongolia"),
Montenegro("ME", "MNE", 499, "499", "Montenegro"),
Montserrat("MS", "MSR", 500, "500", "Montserrat"),
Morocco("MA", "MAR", 504, "504", "Morocco"),
Mozambique("MZ", "MOZ", 508, "508", "Mozambique"),
MyanmarBurma("MM", "MMR", 104, "104", "Myanmar (Burma)"),
Namibia("NA", "NAM", 516, "516", "Namibia"),
Nauru("NR", "NRU", 520, "520", "Nauru"),
Nepal("NP", "NPL", 524, "524", "Nepal"),
Netherlands("NL", "NLD", 528, "528", "Netherlands"),
NewCaledonia("NC", "NCL", 540, "540", "New Caledonia"),
NewZealand("NZ", "NZL", 554, "554", "New Zealand"),
Nicaragua("NI", "NIC", 558, "558", "Nicaragua"),
Niger("NE", "NER", 562, "562", "Niger"),
Nigeria("NG", "NGA", 566, "566", "Nigeria"),
Niue("NU", "NIU", 570, "570", "Niue"),
NorfolkIsland("NF", "NFK", 574, "574", "Norfolk Island"),
NorthKorea("KP", "PRK", 408, "408", "North Korea"),
NorthMacedonia("MK", "MKD", 807, "807", "North Macedonia"),
NorthernIreland("XI", "XI", null, null, "United Kingdom (Northern Ireland)"),
NorthernMarianaIslands("MP", "MNP", 580, "580", "Northern Mariana Islands"),
Norway("NO", "NOR", 578, "578", "Norway"),
Oman("OM", "OMN", 512, "512", "Oman"),
Pakistan("PK", "PAK", 586, "586", "Pakistan"),
Palau("PW", "PLW", 585, "585", "Palau"),
Palestine("PS", "PSE", 275, "275", "Palestinian Territories"),
Panama("PA", "PAN", 591, "591", "Panama"),
PapuaNewGuinea("PG", "PNG", 598, "598", "Papua New Guinea"),
Paraguay("PY", "PRY", 600, "600", "Paraguay"),
Peru("PE", "PER", 604, "604", "Peru"),
Philippines("PH", "PHL", 608, "608", "Philippines"),
PitcairnIslands("PN", "PCN", 612, "612", "Pitcairn Islands"),
Poland("PL", "POL", 616, "616", "Poland"),
Portugal("PT", "PRT", 620, "620", "Portugal"),
PuertoRico("PR", "PRI", 630, "630", "Puerto Rico"),
Qatar("QA", "QAT", 634, "634", "Qatar"),
Reunion("RE", "REU", 638, "638", "Réunion"),
Romania("RO", "ROU", 642, "642", "Romania"),
Russia("RU", "RUS", 643, "643", "Russia"),
Rwanda("RW", "RWA", 646, "646", "Rwanda"),
SaintBarthelemy("BL", "BLM", 652, "652", "St. Barthélemy"),
SaintHelena("SH", "SHN", 654, "654", "St. Helena"),
SaintKittsAndNevis("KN", "KNA", 659, "659", "St. Kitts & Nevis"),
SaintLucia("LC", "LCA", 662, "662", "St. Lucia"),
SaintMartin("MF", "MAF", 663, "663", "St. Martin"),
SaintPierreAndMiquelon("PM", "SPM", 666, "666", "St. Pierre & Miquelon"),
SaintVincentAndGrenadines("VC", "VCT", 670, "670", "St. Vincent & Grenadines"),
Samoa("WS", "WSM", 882, "882", "Samoa"),
SanMarino("SM", "SMR", 674, "674", "San Marino"),
SaoTomeAndPrincipe("ST", "STP", 678, "678", "São Tomé & Príncipe"),
SaudiArabia("SA", "SAU", 682, "682", "Saudi Arabia"),
Senegal("SN", "SEN", 686, "686", "Senegal"),
Serbia("RS", "SRB", 688, "688", "Serbia"),
Seychelles("SC", "SYC", 690, "690", "Seychelles"),
SierraLeone("SL", "SLE", 694, "694", "Sierra Leone"),
Singapore("SG", "SGP", 702, "702", "Singapore"),
SintMaarten("SX", "SXM", 534, "534", "Sint Maarten"),
Slovakia("SK", "SVK", 703, "703", "Slovakia"),
Slovenia("SI", "SVN", 705, "705", "Slovenia"),
SolomonIslands("SB", "SLB", 90, "090", "Solomon Islands"),
Somalia("SO", "SOM", 706, "706", "Somalia"),
SouthAfrica("ZA", "ZAF", 710, "710", "South Africa"),
SouthGeorgiaAndSouthSandwichIslands("GS", "SGS", 239, "239", "South Georgia & South Sandwich Islands"),
SouthKorea("KR", "KOR", 410, "410", "South Korea"),
SouthSudan("SS", "SSD", 728, "728", "South Sudan"),
Spain("ES", "ESP", 724, "724", "Spain"),
SriLanka("LK", "LKA", 144, "144", "Sri Lanka"),
Sudan("SD", "SDN", 729, "729", "Sudan"),
Suriname("SR", "SUR", 740, "740", "Suriname"),
SvalbardAndJanMayen("SJ", "SJM", 744, "744", "Svalbard & Jan Mayen"),
Sweden("SE", "SWE", 752, "752", "Sweden"),
Switzerland("CH", "CHE", 756, "756", "Switzerland"),
Syria("SY", "SYR", 760, "760", "Syria"),
Taiwan("TW", "TWN", 158, "158", "Taiwan"),
Tajikistan("TJ", "TJK", 762, "762", "Tajikistan"),
Tanzania("TZ", "TZA", 834, "834", "Tanzania"),
Thailand("TH", "THA", 764, "764", "Thailand"),
TimorLeste("TL", "TLS", 626, "626", "Timor-Leste"),
Togo("TG", "TGO", 768, "768", "Togo"),
Tokelau("TK", "TKL", 772, "772", "Tokelau"),
Tonga("TO", "TON", 776, "776", "Tonga"),
TrinidadAndTobago("TT", "TTO", 780, "780", "Trinidad & Tobago"),
Tunisia("TN", "TUN", 788, "788", "Tunisia"),
Turkiye("TR", "TUR", 792, "792", "Türkiye"),
Turkmenistan("TM", "TKM", 795, "795", "Turkmenistan"),
TurksAndCaicosIslands("TC", "TCA", 796, "796", "Turks & Caicos Islands"),
Tuvalu("TV", "TUV", 798, "798", "Tuvalu"),
USOutlyingIslands("UM", "UMI", 581, "581", "U.S. Outlying Islands"),
USVirginIslands("VI", "VIR", 850, "850", "U.S. Virgin Islands"),
Uganda("UG", "UGA", 800, "800", "Uganda"),
Ukraine("UA", "UKR", 804, "804", "Ukraine"),
UnitedArabEmirates("AE", "ARE", 784, "784", "United Arab Emirates"),
UnitedKingdom("GB", "GBR", 826, "826", "United Kingdom"),
UnitedStates("US", "USA", 840, "840", "United States"),
Uruguay("UY", "URY", 858, "858", "Uruguay"),
Uzbekistan("UZ", "UZB", 860, "860", "Uzbekistan"),
Vanuatu("VU", "VUT", 548, "548", "Vanuatu"),
VaticanCity("VA", "VAT", 336, "336", "Vatican City"),
Venezuela("VE", "VEN", 862, "862", "Venezuela"),
Vietnam("VN", "VNM", 704, "704", "Vietnam"),
WallisAndFutuna("WF", "WLF", 876, "876", "Wallis & Futuna"),
WesternSahara("EH", "ESH", 732, "732", "Western Sahara"),
Yemen("YE", "YEM", 887, "887", "Yemen"),
Zambia("ZM", "ZMB", 894, "894", "Zambia"),
Zimbabwe("ZW", "ZWE", 716, "716", "Zimbabwe"),
}

View File

@ -0,0 +1,184 @@
package net.codinux.invoicing.model.codes
enum class Currency(val alpha3Code: String, val numericCode: Int?, val currencySymbol: String?, val englishName: String, val countries: Set<String>, val isFrequentlyUsedValue: Boolean) {
ADBUnitOfAccount("XUA", 965, "XUA", "ADB Unit of Account", setOf("MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP"), false),
Afghani("AFN", 971, "AFN", "Afghani", setOf("AFGHANISTAN"), false),
AlgerianDinar("DZD", 12, "DZD", "Algerian Dinar", setOf("ALGERIA"), false),
ArgentinePeso("ARS", 32, "ARS", "Argentine Peso", setOf("ARGENTINA"), false),
ArmenianDram("AMD", 51, "AMD", "Armenian Dram", setOf("ARMENIA"), false),
ArubanFlorin("AWG", 533, "AWG", "Aruban Florin", setOf("ARUBA"), false),
AustralianDollar("AUD", 36, "A$", "Australian Dollar", setOf("AUSTRALIA", "CHRISTMAS ISLAND", "COCOS (KEELING) ISLANDS (THE)", "HEARD ISLAND AND McDONALD ISLANDS", "KIRIBATI", "NAURU", "NORFOLK ISLAND", "TUVALU"), false),
AzerbaijanManat("AZN", 944, "AZN", "Azerbaijan Manat", setOf("AZERBAIJAN"), false),
BahamianDollar("BSD", 44, "BSD", "Bahamian Dollar", setOf("BAHAMAS (THE)"), false),
BahrainiDinar("BHD", 48, "BHD", "Bahraini Dinar", setOf("BAHRAIN"), false),
Baht("THB", 764, "THB", "Baht", setOf("THAILAND"), false),
Balboa("PAB", 590, "PAB", "Balboa", setOf("PANAMA"), false),
BarbadosDollar("BBD", 52, "BBD", "Barbados Dollar", setOf("BARBADOS"), false),
BelarusianRuble("BYN", 933, "BYN", "Belarusian Ruble", setOf("BELARUS"), false),
BelizeDollar("BZD", 84, "BZD", "Belize Dollar", setOf("BELIZE"), false),
BermudianDollar("BMD", 60, "BMD", "Bermudian Dollar", setOf("BERMUDA"), false),
BolivarSoberano("VES", 928, "VES", "Bolívar Soberano", setOf("VENEZUELA (BOLIVARIAN REPUBLIC OF)"), false),
BolivarSoberano_NewValuation("VED", null, "VED", "Bolívar Soberano, new valuation", emptySet(), false),
Boliviano("BOB", 68, "BOB", "Boliviano", setOf("BOLIVIA (PLURINATIONAL STATE OF)"), false),
BondMarketsUnitEuropeanCompositeUnitEURCO("XBA", 955, "XBA", "Bond Markets Unit European Composite Unit (EURCO)", setOf("ZZ01_Bond Markets Unit European_EURCO"), false),
BondMarketsUnitEuropeanMonetaryUnitEMU6("XBB", 956, "XBB", "Bond Markets Unit European Monetary Unit (E.M.U.-6)", setOf("ZZ02_Bond Markets Unit European_EMU-6"), false),
BondMarketsUnitEuropeanUnitOfAccount17EUA17("XBD", 958, "XBD", "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)", setOf("ZZ04_Bond Markets Unit European_EUA-17"), false),
BondMarketsUnitEuropeanUnitOfAccount9EUA9("XBC", 957, "XBC", "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)", setOf("ZZ03_Bond Markets Unit European_EUA-9"), false),
BrazilianReal("BRL", 986, "R$", "Brazilian Real", setOf("BRAZIL"), false),
BruneiDollar("BND", 96, "BND", "Brunei Dollar", setOf("BRUNEI DARUSSALAM"), false),
BulgarianLev("BGN", 975, "BGN", "Bulgarian Lev", setOf("BULGARIA"), false),
BurundiFranc("BIF", 108, "BIF", "Burundi Franc", setOf("BURUNDI"), false),
CFAFrancBCEAO("XOF", 952, "FCFA", "CFA Franc BCEAO", setOf("BENIN", "BURKINA FASO", "CÔTE D'IVOIRE", "GUINEA-BISSAU", "MALI", "NIGER (THE)", "SENEGAL", "TOGO"), false),
CFAFrancBEAC("XAF", 950, "FCFA", "CFA Franc BEAC", setOf("CAMEROON", "CENTRAL AFRICAN REPUBLIC (THE)", "CHAD", "CONGO (THE)", "EQUATORIAL GUINEA", "GABON"), false),
CFPFranc("XPF", 953, "CFPF", "CFP Franc", setOf("FRENCH POLYNESIA", "NEW CALEDONIA", "WALLIS AND FUTUNA"), false),
CaboVerdeEscudo("CVE", 132, "CVE", "Cabo Verde Escudo", setOf("CABO VERDE"), false),
CanadianDollar("CAD", 124, "CA$", "Canadian Dollar", setOf("CANADA"), false),
CaymanIslandsDollar("KYD", 136, "KYD", "Cayman Islands Dollar", setOf("CAYMAN ISLANDS (THE)"), false),
ChileanPeso("CLP", 152, "CLP", "Chilean Peso", setOf("CHILE"), false),
CodesSpecificallyReservedForTestingPurposes("XTS", 963, "XTS", "Codes specifically reserved for testing purposes", setOf("ZZ06_Testing_Code"), false),
ColombianPeso("COP", 170, "COP", "Colombian Peso", setOf("COLOMBIA"), false),
ComorianFranc("KMF", 174, "KMF", "Comorian Franc", setOf("COMOROS (THE)"), false),
CongoleseFranc("CDF", 976, "CDF", "Congolese Franc", setOf("CONGO (THE DEMOCRATIC REPUBLIC OF THE)"), false),
ConvertibleMark("BAM", 977, "BAM", "Convertible Mark", setOf("BOSNIA AND HERZEGOVINA"), false),
CordobaOro("NIO", 558, "NIO", "Cordoba Oro", setOf("NICARAGUA"), false),
CostaRicanColon("CRC", 188, "CRC", "Costa Rican Colon", setOf("COSTA RICA"), false),
CubanPeso("CUP", 192, "CUP", "Cuban Peso", setOf("CUBA"), false),
CzechKoruna("CZK", 203, "CZK", "Czech Koruna", setOf("CZECHIA"), true),
Dalasi("GMD", 270, "GMD", "Dalasi", setOf("GAMBIA (THE)"), false),
DanishKrone("DKK", 208, "DKK", "Danish Krone", setOf("DENMARK", "FAROE ISLANDS (THE)", "GREENLAND"), true),
Denar("MKD", 807, "MKD", "Denar", setOf("MACEDONIA (THE FORMER YUGOSLAV REPUBLIC OF)"), false),
DjiboutiFranc("DJF", 262, "DJF", "Djibouti Franc", setOf("DJIBOUTI"), false),
Dobra("STN", 930, "STN", "Dobra", setOf("SAO TOME AND PRINCIPE"), false),
DominicanPeso("DOP", 214, "DOP", "Dominican Peso", setOf("DOMINICAN REPUBLIC (THE)"), false),
Dong("VND", 704, "", "Dong", setOf("VIET NAM"), false),
EastCaribbeanDollar("XCD", 951, "EC$", "East Caribbean Dollar", setOf("ANGUILLA", "ANTIGUA AND BARBUDA", "DOMINICA", "GRENADA", "MONTSERRAT", "SAINT KITTS AND NEVIS", "SAINT LUCIA", "SAINT VINCENT AND THE GRENADINES"), false),
EgyptianPound("EGP", 818, "EGP", "Egyptian Pound", setOf("EGYPT"), false),
ElSalvadorColon("SVC", 222, "SVC", "El Salvador Colon", setOf("EL SALVADOR"), false),
EthiopianBirr("ETB", 230, "ETB", "Ethiopian Birr", setOf("ETHIOPIA"), false),
Euro("EUR", 978, "", "Euro", setOf("ÅLAND ISLANDS", "ANDORRA", "AUSTRIA", "BELGIUM", "CYPRUS", "ESTONIA", "EUROPEAN UNION", "FINLAND", "FRANCE", "FRENCH GUIANA", "FRENCH SOUTHERN TERRITORIES (THE)", "GERMANY", "GREECE", "GUADELOUPE", "HOLY SEE (THE)", "IRELAND", "ITALY", "LATVIA", "LITHUANIA", "LUXEMBOURG", "MALTA", "MARTINIQUE", "MAYOTTE", "MONACO", "MONTENEGRO", "NETHERLANDS (THE)", "PORTUGAL", "RÉUNION", "SAINT BARTHÉLEMY", "SAINT MARTIN (FRENCH PART)", "SAINT PIERRE AND MIQUELON", "SAN MARINO", "SLOVAKIA", "SLOVENIA", "SPAIN"), true),
FalklandIslandsPound("FKP", 238, "FKP", "Falkland Islands Pound", setOf("FALKLAND ISLANDS (THE) [MALVINAS]"), false),
FijiDollar("FJD", 242, "FJD", "Fiji Dollar", setOf("FIJI"), false),
Forint("HUF", 348, "HUF", "Forint", setOf("HUNGARY"), false),
GhanaCedi("GHS", 936, "GHS", "Ghana Cedi", setOf("GHANA"), false),
GibraltarPound("GIP", 292, "GIP", "Gibraltar Pound", setOf("GIBRALTAR"), false),
Gold("XAU", 959, "XAU", "Gold", setOf("ZZ08_Gold"), false),
Gourde("HTG", 332, "HTG", "Gourde", setOf("HAITI"), false),
Guarani("PYG", 600, "PYG", "Guarani", setOf("PARAGUAY"), false),
GuineanFranc("GNF", 324, "GNF", "Guinean Franc", setOf("GUINEA"), false),
GuyanaDollar("GYD", 328, "GYD", "Guyana Dollar", setOf("GUYANA"), false),
HongKongDollar("HKD", 344, "HK$", "Hong Kong Dollar", setOf("HONG KONG"), false),
Hryvnia("UAH", 980, "UAH", "Hryvnia", setOf("UKRAINE"), false),
IcelandKrona("ISK", 352, "ISK", "Iceland Krona", setOf("ICELAND"), true),
IndianRupee("INR", 356, "", "Indian Rupee", setOf("BHUTAN", "INDIA"), false),
IranianRial("IRR", 364, "IRR", "Iranian Rial", setOf("IRAN (ISLAMIC REPUBLIC OF)"), false),
IraqiDinar("IQD", 368, "IQD", "Iraqi Dinar", setOf("IRAQ"), false),
JamaicanDollar("JMD", 388, "JMD", "Jamaican Dollar", setOf("JAMAICA"), false),
JordanianDinar("JOD", 400, "JOD", "Jordanian Dinar", setOf("JORDAN"), false),
KenyanShilling("KES", 404, "KES", "Kenyan Shilling", setOf("KENYA"), false),
Kina("PGK", 598, "PGK", "Kina", setOf("PAPUA NEW GUINEA"), false),
KuwaitiDinar("KWD", 414, "KWD", "Kuwaiti Dinar", setOf("KUWAIT"), false),
Kwanza("AOA", 973, "AOA", "Kwanza", setOf("ANGOLA"), false),
Kyat("MMK", 104, "MMK", "Kyat", setOf("MYANMAR"), false),
LaoKip("LAK", 418, "LAK", "Lao Kip", setOf("LAO PEOPLES DEMOCRATIC REPUBLIC (THE)"), false),
Lari("GEL", 981, "GEL", "Lari", setOf("GEORGIA"), false),
LebanesePound("LBP", 422, "LBP", "Lebanese Pound", setOf("LEBANON"), false),
Lek("ALL", 8, "ALL", "Lek", setOf("ALBANIA"), false),
Lempira("HNL", 340, "HNL", "Lempira", setOf("HONDURAS"), false),
Leone("SLE", 925, "SLE", "Sierra Leone (new valuation 2022)", setOf("SIERRA LEONE (new valuation 2022)"), false),
LiberianDollar("LRD", 430, "LRD", "Liberian Dollar", setOf("LIBERIA"), false),
LibyanDinar("LYD", 434, "LYD", "Libyan Dinar", setOf("LIBYA"), false),
Lilangeni("SZL", 748, "SZL", "Lilangeni", setOf("ESWATINI"), false),
Loti("LSL", 426, "LSL", "Loti", setOf("LESOTHO"), false),
MalagasyAriary("MGA", 969, "MGA", "Malagasy Ariary", setOf("MADAGASCAR"), false),
MalawiKwacha("MWK", 454, "MWK", "Malawi Kwacha", setOf("MALAWI"), false),
MalaysianRinggit("MYR", 458, "MYR", "Malaysian Ringgit", setOf("MALAYSIA"), false),
MauritiusRupee("MUR", 480, "MUR", "Mauritius Rupee", setOf("MAURITIUS"), false),
MexicanPeso("MXN", 484, "MX$", "Mexican Peso", setOf("MEXICO"), false),
MexicanUnidadDeInversionUDI("MXV", 979, "MXV", "Mexican Unidad de Inversion (UDI)", setOf("MEXICO"), false),
MoldovanLeu("MDL", 498, "MDL", "Moldovan Leu", setOf("MOLDOVA (THE REPUBLIC OF)"), false),
MoroccanDirham("MAD", 504, "MAD", "Moroccan Dirham", setOf("MOROCCO", "WESTERN SAHARA"), false),
MozambiqueMetical("MZN", 943, "MZN", "Mozambique Metical", setOf("MOZAMBIQUE"), false),
Mvdol("BOV", 984, "BOV", "Mvdol", setOf("BOLIVIA (PLURINATIONAL STATE OF)"), false),
Naira("NGN", 566, "NGN", "Naira", setOf("NIGERIA"), false),
Nakfa("ERN", 232, "ERN", "Nakfa", setOf("ERITREA"), false),
NamibiaDollar("NAD", 516, "NAD", "Namibia Dollar", setOf("NAMIBIA"), false),
NepaleseRupee("NPR", 524, "NPR", "Nepalese Rupee", setOf("NEPAL"), false),
NetherlandsAntilleanGuilder("ANG", 532, "ANG", "Netherlands Antillean Guilder", setOf("CURAÇAO", "SINT MAARTEN (DUTCH PART)"), false),
NewIsraeliSheqel("ILS", 376, "", "New Israeli Sheqel", setOf("ISRAEL"), false),
NewTaiwanDollar("TWD", 901, "NT$", "New Taiwan Dollar", setOf("TAIWAN (PROVINCE OF CHINA)"), false),
NewZealandDollar("NZD", 554, "NZ$", "New Zealand Dollar", setOf("COOK ISLANDS (THE)", "NEW ZEALAND", "NIUE", "PITCAIRN", "TOKELAU"), false),
Ngultrum("BTN", 64, "BTN", "Ngultrum", setOf("BHUTAN"), false),
NorthKoreanWon("KPW", 408, "KPW", "North Korean Won", setOf("KOREA (THE DEMOCRATIC PEOPLES REPUBLIC OF)"), false),
NorwegianKrone("NOK", 578, "NOK", "Norwegian Krone", setOf("BOUVET ISLAND", "NORWAY", "SVALBARD AND JAN MAYEN"), true),
Ouguiya("MRU", 929, "MRU", "Ouguiya", setOf("MAURITANIA"), false),
Paanga("TOP", 776, "TOP", "Paanga", setOf("TONGA"), false),
PakistanRupee("PKR", 586, "PKR", "Pakistan Rupee", setOf("PAKISTAN"), false),
Palladium("XPD", 964, "XPD", "Palladium", setOf("ZZ09_Palladium"), false),
Pataca("MOP", 446, "MOP", "Pataca", setOf("MACAO"), false),
PesoConvertible("CUC", 931, "CUC", "Peso Convertible", setOf("CUBA"), false),
PesoUruguayo("UYU", 858, "UYU", "Peso Uruguayo", setOf("URUGUAY"), false),
PhilippinePeso("PHP", 608, "", "Philippine Peso", setOf("PHILIPPINES (THE)"), false),
Platinum("XPT", 962, "XPT", "Platinum", setOf("ZZ10_Platinum"), false),
PoundSterling("GBP", 826, "£", "Pound Sterling", setOf("GUERNSEY", "ISLE OF MAN", "JERSEY", "UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)"), true),
Pula("BWP", 72, "BWP", "Pula", setOf("BOTSWANA"), false),
QatariRial("QAR", 634, "QAR", "Qatari Rial", setOf("QATAR"), false),
Quetzal("GTQ", 320, "GTQ", "Quetzal", setOf("GUATEMALA"), false),
Rand("ZAR", 710, "ZAR", "Rand", setOf("LESOTHO", "NAMIBIA", "SOUTH AFRICA"), false),
RialOmani("OMR", 512, "OMR", "Rial Omani", setOf("OMAN"), false),
Riel("KHR", 116, "KHR", "Riel", setOf("CAMBODIA"), false),
RomanianLeu("RON", 946, "RON", "Romanian Leu", setOf("ROMANIA"), false),
Rufiyaa("MVR", 462, "MVR", "Rufiyaa", setOf("MALDIVES"), false),
Rupiah("IDR", 360, "IDR", "Rupiah", setOf("INDONESIA"), false),
RussianRuble("RUB", 643, "RUB", "Russian Ruble", setOf("RUSSIAN FEDERATION (THE)"), false),
RwandaFranc("RWF", 646, "RWF", "Rwanda Franc", setOf("RWANDA"), false),
SDRSpecialDrawingRight("XDR", 960, "XDR", "SDR (Special Drawing Right)", setOf("INTERNATIONAL MONETARY FUND (IMF)"), false),
SaintHelenaPound("SHP", 654, "SHP", "Saint Helena Pound", setOf("SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA"), false),
SaudiRiyal("SAR", 682, "SAR", "Saudi Riyal", setOf("SAUDI ARABIA"), false),
SerbianDinar("RSD", 941, "RSD", "Serbian Dinar", setOf("SERBIA"), false),
SeychellesRupee("SCR", 690, "SCR", "Seychelles Rupee", setOf("SEYCHELLES"), false),
Silver("XAG", 961, "XAG", "Silver", setOf("ZZ11_Silver"), false),
SingaporeDollar("SGD", 702, "SGD", "Singapore Dollar", setOf("SINGAPORE"), false),
Sol("PEN", 604, "PEN", "Sol", setOf("PERU"), false),
SolomonIslandsDollar("SBD", 90, "SBD", "Solomon Islands Dollar", setOf("SOLOMON ISLANDS"), false),
Som("KGS", 417, "KGS", "Som", setOf("KYRGYZSTAN"), false),
SomaliShilling("SOS", 706, "SOS", "Somali Shilling", setOf("SOMALIA"), false),
Somoni("TJS", 972, "TJS", "Somoni", setOf("TAJIKISTAN"), false),
SouthSudanesePound("SSP", 728, "SSP", "South Sudanese Pound", setOf("SOUTH SUDAN"), false),
SriLankaRupee("LKR", 144, "LKR", "Sri Lanka Rupee", setOf("SRI LANKA"), false),
Sucre("XSU", 994, "XSU", "Sucre", setOf("SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS 'SUCRE'"), false),
SudanesePound("SDG", 938, "SDG", "Sudanese Pound", setOf("SUDAN (THE)"), false),
SurinamDollar("SRD", 968, "SRD", "Surinam Dollar", setOf("SURINAME"), false),
SwedishKrona("SEK", 752, "SEK", "Swedish Krona", setOf("SWEDEN"), true),
SwissFranc("CHF", 756, "CHF", "Swiss Franc", setOf("LIECHTENSTEIN", "SWITZERLAND"), true),
SyrianPound("SYP", 760, "SYP", "Syrian Pound", setOf("SYRIAN ARAB REPUBLIC"), false),
Taka("BDT", 50, "BDT", "Taka", setOf("BANGLADESH"), false),
Tala("WST", 882, "WST", "Tala", setOf("SAMOA"), false),
TanzanianShilling("TZS", 834, "TZS", "Tanzanian Shilling", setOf("TANZANIA, UNITED REPUBLIC OF"), false),
Tenge("KZT", 398, "KZT", "Tenge", setOf("KAZAKHSTAN"), false),
TheCodesAssignedForTransactionsWhereNoCurrencyIsInvolved("XXX", 999, "¤", "The codes assigned for transactions where no currency is involved", setOf("ZZ07_No_Currency"), false),
TrinidadAndTobagoDollar("TTD", 780, "TTD", "Trinidad and Tobago Dollar", setOf("TRINIDAD AND TOBAGO"), false),
Tugrik("MNT", 496, "MNT", "Tugrik", setOf("MONGOLIA"), false),
TunisianDinar("TND", 788, "TND", "Tunisian Dinar", setOf("TUNISIA"), false),
TurkishLira("TRY", 949, "TRY", "Turkish Lira", setOf("TURKEY"), false),
TurkmenistanNewManat("TMT", 934, "TMT", "Turkmenistan New Manat", setOf("TURKMENISTAN"), false),
UAEDirham("AED", 784, "AED", "UAE Dirham", setOf("UNITED ARAB EMIRATES (THE)"), false),
USDollar("USD", 840, "$", "US Dollar", setOf("AMERICAN SAMOA", "BONAIRE, SINT EUSTATIUS AND SABA", "BRITISH INDIAN OCEAN TERRITORY (THE)", "ECUADOR", "EL SALVADOR", "GUAM", "HAITI", "MARSHALL ISLANDS (THE)", "MICRONESIA (FEDERATED STATES OF)", "NORTHERN MARIANA ISLANDS (THE)", "PALAU", "PANAMA", "PUERTO RICO", "TIMOR-LESTE", "TURKS AND CAICOS ISLANDS (THE)", "UNITED STATES MINOR OUTLYING ISLANDS (THE)", "UNITED STATES OF AMERICA (THE)", "VIRGIN ISLANDS (BRITISH)", "VIRGIN ISLANDS (U.S.)"), true),
USDollarNextDay("USN", 997, "USN", "US Dollar (Next day)", setOf("UNITED STATES OF AMERICA (THE)"), false),
UgandaShilling("UGX", 800, "UGX", "Uganda Shilling", setOf("UGANDA"), false),
UnidadDeFomento("CLF", 990, "CLF", "Unidad de Fomento", setOf("CHILE"), false),
UnidadDeValorReal("COU", 970, "COU", "Unidad de Valor Real", setOf("COLOMBIA"), false),
UnidadPrevisional("UYW", 927, null, "Unidad Previsional", setOf("URUGUAY"), false),
UruguayPesoEnUnidadesIndexadasUI("UYI", 940, "UYI", "Uruguay Peso en Unidades Indexadas (UI)", setOf("URUGUAY"), false),
UzbekistanSum("UZS", 860, "UZS", "Uzbekistan Sum", setOf("UZBEKISTAN"), false),
Vatu("VUV", 548, "VUV", "Vatu", setOf("VANUATU"), false),
WIREuro("CHE", 947, "CHE", "WIR Euro", setOf("SWITZERLAND"), false),
WIRFranc("CHW", 948, "CHW", "WIR Franc", setOf("SWITZERLAND"), false),
Won("KRW", 410, "", "Won", setOf("KOREA (THE REPUBLIC OF)"), false),
YemeniRial("YER", 886, "YER", "Yemeni Rial", setOf("YEMEN"), false),
Yen("JPY", 392, "¥", "Yen", setOf("JAPAN"), false),
YuanRenminbi("CNY", 156, "CN¥", "Yuan Renminbi", setOf("CHINA"), false),
ZambianKwacha("ZMW", 967, "ZMW", "Zambian Kwacha", setOf("ZAMBIA"), false),
ZimbabweDollar("ZWL", null, "ZWL", "Zimbabwe Dollar", setOf("ZIMBABWE"), false),
ZimbabweGold("ZWG", 924, null, "Zimbabwe Gold", emptySet(), false),
Zloty("PLN", 985, "PLN", "Zloty", setOf("POLAND"), true),
}

View File

@ -0,0 +1,97 @@
package net.codinux.invoicing.model.codes
enum class ElectronicAddressSchemeIdentifier(val code: String, val meaning: String, val isFrequentlyUsedValue: Boolean) {
AN("AN", "O.F.T.P. (ODETTE File Transfer Protocol)", true),
AQ("AQ", "X.400 address for mail text", true),
AS("AS", "AS2 exchange", true),
AU("AU", "File Transfer Protocol", true),
EM("EM", "Electronic mail (SMPT)", true),
_0002("0002", "System Information et Repertoire des Entreprise et des Etablissements: SIRENE", false),
_0007("0007", "Organisationsnummer", false),
_0009("0009", "SIRET-CODE", false),
_0037("0037", "LY-tunnus", false),
_0060("0060", "Data Universal Numbering System (D-U-N-S Number)", false),
_0088("0088", "EAN Location Code", false),
_0096("0096", "DANISH CHAMBER OF COMMERCE Scheme (EDIRA compliant)", false),
_0097("0097", "FTI - Ediforum Italia, (EDIRA compliant)", false),
_0106("0106", "Vereniging van Kamers van Koophandel en Fabrieken in Nederland (Association ofChambers of Commerce and Industry in the Netherlands), Scheme (EDIRA compliant)", false),
_0130("0130", "Directorates of the European Commission", false),
_0135("0135", "SIA Object Identifiers", false),
_0142("0142", "SECETI Object Identifiers", false),
_0147("0147", "Standard Company Code", false),
_0151("0151", "Australian Business Number (ABN) Scheme", false),
_0170("0170", "Teikoku Company Code", false),
_0183("0183", "Numéro d'identification suisse des enterprises (IDE), Swiss Unique Business Identification Number (UIDB)", false),
_0184("0184", "DIGSTORG", false),
_0188("0188", "Corporate Number of The Social Security and Tax Number System", false),
_0190("0190", "Dutch Originator's Identification Number", false),
_0191("0191", "Centre of Registers and Information Systems of the Ministry of Justice", false),
_0192("0192", "Enhetsregisteret ved Bronnoysundregisterne", false),
_0193("0193", "UBL.BE party identifier", false),
_0194("0194", "KOIOS Open Technical Dictionary", false),
_0195("0195", "Singapore UEN identifier", false),
_0196("0196", "Kennitala - Iceland legal id for individuals and legal entities", false),
_0198("0198", "ERSTORG", false),
_0199("0199", "Global legal entity identifier (GLEIF)", false),
_0200("0200", "Legal entity code (Lithuania)", false),
_0201("0201", "Codice Univoco Unità Organizzativa iPA", false),
_0202("0202", "Indirizzo di Posta Elettronica Certificata", false),
_0203("0203", "eDelivery Network Participant identifier", false),
_0204("0204", "Leitweg-ID", false),
_0205("0205", "CODDEST", false),
_0208("0208", "Numero d'entreprise / ondernemingsnummer / Unternehmensnummer", false),
_0209("0209", "GS1 identification keys", false),
_0210("0210", "CODICE FISCALE", false),
_0211("0211", "PARTITA IVA", false),
_0212("0212", "Finnish Organization Identifier", false),
_0213("0213", "Finnish Organization Value Add Tax Identifier", false),
_0215("0215", "Net service ID", false),
_0216("0216", "OVTcode", false),
_0217("0217", "The Netherlands Chamber of Commerce and Industry establishment number", false),
_0218("0218", "Unified registration number (Latvia)", false),
_0221("0221", "The registered number of the qualified invoice issuer", false),
_0225("0225", "FRCTC ELECTRONIC ADDRESS", true),
_0230("0230", "National e-Invoicing Framework", false),
_9901("9901", "Danish Ministry of the Interior and Health", false),
_9910("9910", "Hungary VAT number", false),
_9913("9913", "Business Registers Network", false),
_9914("9914", "Österreichische Umsatzsteuer-Identifikationsnummer", false),
_9915("9915", "Österreichisches Verwaltungs bzw.Organisationskennzeichen", false),
_9918("9918", "SOCIETY FOR WORLDWIDE INTERBANK FINANCIAL, TELECOMMUNICATION S.W.I.F.T", false),
_9919("9919", "Kennziffer des Unternehmensregisters", false),
_9920("9920", "Agencia Española de Administración Tributaria", false),
_9922("9922", "Andorra VAT number", false),
_9923("9923", "Albania VAT number", false),
_9924("9924", "Bosnia and Herzegovina VAT number", false),
_9925("9925", "Belgium VAT number", false),
_9926("9926", "Bulgaria VAT number", false),
_9927("9927", "Switzerland VAT number", false),
_9928("9928", "Cyprus VAT number", false),
_9929("9929", "Czech Republic VAT number", false),
_9930("9930", "Germany VAT number", false),
_9931("9931", "Estonia VAT number", false),
_9932("9932", "United Kingdom VAT number", false),
_9933("9933", "Greece VAT number", false),
_9934("9934", "Croatia VAT number", false),
_9935("9935", "Ireland VAT number", false),
_9936("9936", "Liechtenstein VAT number", false),
_9937("9937", "Lithuania VAT number", false),
_9938("9938", "Luxemburg VAT number", false),
_9939("9939", "Latvia VAT number", false),
_9940("9940", "Monaco VAT number", false),
_9941("9941", "Montenegro VAT number", false),
_9942("9942", "Macedonia, the former Yugoslav Republic of VAT number", false),
_9943("9943", "Malta VAT number", false),
_9944("9944", "Netherlands VAT number", false),
_9945("9945", "Poland VAT number", false),
_9946("9946", "Portugal VAT number", false),
_9947("9947", "Romania VAT number", false),
_9948("9948", "Serbia VAT number", false),
_9949("9949", "Slovenia VAT number", false),
_9950("9950", "Slovakia VAT number", false),
_9951("9951", "San Marino VAT number", false),
_9952("9952", "Turkey VAT number", false),
_9953("9953", "Holy See (Vatican City State) VAT number", false),
_9957("9957", "French VAT number", false),
_9959("9959", "Employer Identification Number (EIN, USA)", false),
}

View File

@ -0,0 +1,387 @@
package net.codinux.invoicing.model.codes
enum class InvoiceNoteSubjectCode(val code: String, val meaning: String, val description: String, val isFrequentlyUsedValue: Boolean) {
AAA("AAA", "Goods item description", "[7002] Plain language description of the nature of a goods item sufficient to identify it for customs, statistical or transport purposes.", false),
AAB("AAB", "Payment term", "[4276] Free form description of the conditions of payment between the parties to a transaction.", false),
AAC("AAC", "Dangerous goods additional information", "[7488] Additional information concerning dangerous substances and/or article in a consignment.", false),
AAD("AAD", "Dangerous goods technical name", "[7254] Proper shipping name, supplemented as necessary with the correct technical name, by which a dangerous substance or article may be correctly identified, or which is sufficiently informative to permit identification by reference to generally available literature.", false),
AAE("AAE", "Acknowledgement description", "The content of an acknowledgement.", false),
AAF("AAF", "Rate additional information", "Specific details applying to rates.", false),
AAG("AAG", "Party instructions", "Indicates that the segment contains instructions to be passed on to the identified party.", false),
AAI("AAI", "General information", "The text contains general information.", true),
AAJ("AAJ", "Additional conditions of sale/purchase", "Additional conditions specific to this order or project.", false),
AAK("AAK", "Price conditions", "Information on the price conditions that are expected or given.", false),
AAL("AAL", "Goods dimensions in characters", "Expression of a number in characters as length of ten meters.", false),
AAM("AAM", "Equipment re-usage restrictions", "Technical or commercial reasons why a piece of equipment may not be re-used after the current transport terminates.", false),
AAN("AAN", "Handling restriction", "Restrictions in handling depending on the technical characteristics of the piece of equipment or on the nature of the goods.", false),
AAO("AAO", "Error description (free text)", "Error described by a free text.", false),
AAP("AAP", "Response (free text)", "Free text of the response to a communication.", false),
AAQ("AAQ", "Package content's description", "A description of the contents of a package.", false),
AAR("AAR", "Terms of delivery", "(4053) Free text of the non Incoterms terms of delivery. For Incoterms, use: 4053.", false),
AAS("AAS", "Bill of lading remarks", "The remarks printed or to be printed on a bill of lading.", false),
AAT("AAT", "Mode of settlement information", "Free text information on an IATA Air Waybill to indicate means by which account is to be settled.", false),
AAU("AAU", "Consignment invoice information", "Information pertaining to the invoice covering the consignment.", false),
AAV("AAV", "Clearance invoice information", "Information pertaining to the invoice covering clearance of the cargo.", false),
AAW("AAW", "Letter of credit information", "Information pertaining to the letter of credit.", false),
AAX("AAX", "License information", "Information pertaining to a license.", false),
AAY("AAY", "Certification statements", "The text contains certification statements.", false),
AAZ("AAZ", "Additional export information", "The text contains additional export information.", false),
ABA("ABA", "Tariff statements", "Description of parameters relating to a tariff.", false),
ABB("ABB", "Medical history", "Historical details of a patients medical events.", false),
ABC("ABC", "Conditions of sale or purchase", "(4490) (4372) Additional information regarding terms and conditions which apply to the transaction.", false),
ABD("ABD", "Contract document type", "[4422] Textual representation of the type of contract.", false),
ABE("ABE", "Additional terms and/or conditions (documentary credit)", "(4260) Additional terms and/or conditions to the documentary credit.", false),
ABF("ABF", "Instructions or information about standby documentary", "credit Instruction or information about a standby documentary credit.", false),
ABG("ABG", "Instructions or information about partial shipment(s)", "Instructions or information about partial shipment(s).", false),
ABH("ABH", "Instructions or information about transhipment(s)", "Instructions or information about transhipment(s).", false),
ABI("ABI", "Additional handling instructions documentary credit", "Additional handling instructions for a documentary credit.", false),
ABJ("ABJ", "Domestic routing information", "Information regarding the domestic routing.", false),
ABK("ABK", "Chargeable category of equipment", "Equipment types are coded by category for financial purposes.", false),
ABL("ABL", "Government information", "Information pertaining to government.", true),
ABM("ABM", "Onward routing information", "The text contains onward routing information.", false),
ABN("ABN", "Accounting information", "[4410] The text contains information related to accounting.", false),
ABO("ABO", "Discrepancy information", "Free text or coded information to indicate a specific discrepancy.", false),
ABP("ABP", "Confirmation instructions", "Documentary credit confirmation instructions.", false),
ABQ("ABQ", "Method of issuance", "Method of issuance of documentary credit.", false),
ABR("ABR", "Documents delivery instructions", "Delivery instructions for documents required under a documentary credit.", false),
ABS("ABS", "Additional conditions", "Additional conditions to the issuance of a documentary credit.", false),
ABT("ABT", "Information/instructions about additional amounts covered", "Additional amounts information/instruction.", false),
ABU("ABU", "Deferred payment termed additional", "Additional terms concerning deferred payment.", false),
ABV("ABV", "Acceptance terms additional", "Additional terms concerning acceptance.", false),
ABW("ABW", "Negotiation terms additional", "Additional terms concerning negotiation.", false),
ABX("ABX", "Document name and documentary requirements", "Document name and documentary requirements.", false),
ABZ("ABZ", "Instructions/information about revolving documentary credit", "Instructions/information about a revolving documentary credit.", false),
ACA("ACA", "Documentary requirements", "Specification of the documentary requirements.", false),
ACB("ACB", "Additional information", "(4270) The text contains additional information.", false),
ACC("ACC", "Factor assignment clause", "Assignment based on an agreement between seller and factor.", false),
ACD("ACD", "Reason", "Reason for a request or response.", false),
ACE("ACE", "Dispute", "A notice, usually from buyer to seller, that something was found wrong with goods delivered or the services rendered, or with the related invoice.", false),
ACF("ACF", "Additional attribute information", "The text refers to information about an additional attribute not otherwise specified.", false),
ACG("ACG", "Absence declaration", "A declaration on the reason of the absence.", false),
ACH("ACH", "Aggregation statement", "A statement on the way a specific variable or set of variables has been aggregated.", false),
ACI("ACI", "Compilation statement", "A statement on the compilation status of an array or other set of figures or calculations.", false),
ACJ("ACJ", "Definitional exception", "An exception to the agreed definition of a term, concept, formula or other object.", false),
ACK("ACK", "Privacy statement", "A statement on the privacy or confidential nature of an object.", false),
ACL("ACL", "Quality statement", "A statement on the quality of an object.", false),
ACM("ACM", "Statistical description", "The description of a statistical object such as a value list, concept, or structure definition.", false),
ACN("ACN", "Statistical definition", "The definition of a statistical object such as a value list, concept, or structure definition.", false),
ACO("ACO", "Statistical name", "The name of a statistical object such as a value list, concept or structure definition.", false),
ACP("ACP", "Statistical title", "The title of a statistical object such as a value list, concept, or structure definition.", false),
ACQ("ACQ", "Off-dimension information", "Information relating to differences between the actual transport dimensions and the normally applicable dimensions.", false),
ACR("ACR", "Unexpected stops information", "Information relating to unexpected stops during a conveyance.", false),
ACS("ACS", "Principles", "Text subject is principles section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ACT("ACT", "Terms and definition", "Text subject is terms and definition section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ACU("ACU", "Segment name", "Text subject is segment name.", false),
ACV("ACV", "Simple data element name", "Text subject is name of simple data element.", false),
ACW("ACW", "Scope", "Text subject is scope section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ACX("ACX", "Message type name", "Text subject is name of message type.", false),
ACY("ACY", "Introduction", "Text subject is introduction section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ACZ("ACZ", "Glossary", "Text subject is glossary section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ADA("ADA", "Functional definition", "Text subject is functional definition section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ADB("ADB", "Examples", "Text subject is examples as given in the example(s) section of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ADC("ADC", "Cover page", "Text subject is cover page of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ADD("ADD", "Dependency (syntax) notes", "Denotes that the associated text is a dependency (syntax) note.", false),
ADE("ADE", "Code value name", "Text subject is name of code value.", false),
ADF("ADF", "Code list name", "Text subject is name of code list.", false),
ADG("ADG", "Clarification of usage", "Text subject is an explanation of the intended usage of a segment or segment group.", false),
ADH("ADH", "Composite data element name", "Text subject is name of composite data element.", false),
ADI("ADI", "Field of application", "Text subject is field of application of the UN/EDIFACT rules for presentation of standardized message and directories documentation.", false),
ADJ("ADJ", "Type of assets and liabilities", "Information describing the type of assets and liabilities.", false),
ADK("ADK", "Promotion information", "The text contains information about a promotion.", false),
ADL("ADL", "Meter condition", "Description of the condition of a meter.", false),
ADM("ADM", "Meter reading information", "Information related to a particular reading of a meter.", false),
ADN("ADN", "Type of transaction reason", "Information describing the type of the reason of transaction.", false),
ADO("ADO", "Type of survey question", "Type of survey question.", false),
ADP("ADP", "Carrier's agent counter information", "Information for use at the counter of the carrier's agent.", false),
ADQ("ADQ", "Description of work item on equipment", "Description or code for the operation to be executed on the equipment.", false),
ADR("ADR", "Message definition", "Text subject is message definition.", false),
ADS("ADS", "Booked item information", "Information pertaining to a booked item.", false),
ADT("ADT", "Source of document", "Text subject is source of document.", false),
ADU("ADU", "Note", "Text subject is note.", false),
ADV("ADV", "Fixed part of segment clarification text", "Text subject is fixed part of segment clarification text.", false),
ADW("ADW", "Characteristics of goods", "Description of the characteristic of goods in addition to the description of the goods.", false),
ADX("ADX", "Additional discharge instructions", "Special discharge instructions concerning the goods.", false),
ADY("ADY", "Container stripping instructions", "Instructions regarding the stripping of container(s).", false),
ADZ("ADZ", "CSC (Container Safety Convention) plate information", "Information on the CSC (Container Safety Convention) plate that is attached to the container.", false),
AEA("AEA", "Cargo remarks", "Additional remarks concerning the cargo.", false),
AEB("AEB", "Temperature control instructions", "Instruction regarding the temperature control of the cargo.", false),
AEC("AEC", "Text refers to expected data", "Remarks refer to data that was expected.", false),
AED("AED", "Text refers to received data", "Remarks refer to data that was received.", false),
AEE("AEE", "Section clarification text", "Text subject is section clarification text.", false),
AEF("AEF", "Information to the beneficiary", "Information given to the beneficiary.", false),
AEG("AEG", "Information to the applicant", "Information given to the applicant.", false),
AEH("AEH", "Instructions to the beneficiary", "Instructions made to the beneficiary.", false),
AEI("AEI", "Instructions to the applicant", "Instructions given to the applicant.", false),
AEJ("AEJ", "Controlled atmosphere", "Information about the controlled atmosphere.", false),
AEK("AEK", "Take off annotation", "Additional information in plain text to support a take off annotation. Taking off is the process of assessing the quantity work from extracting the measurement from construction documentation.", false),
AEL("AEL", "Price variation narrative", "Additional information in plain language to support a price variation.", false),
AEM("AEM", "Documentary credit amendment instructions", "Documentary credit amendment instructions.", false),
AEN("AEN", "Standard method narrative", "Additional information in plain language to support a standard method.", false),
AEO("AEO", "Project narrative", "Additional information in plain language to support the project.", false),
AEP("AEP", "Radioactive goods, additional information", "Additional information related to radioactive goods.", false),
AEQ("AEQ", "Bank-to-bank information", "Information given from one bank to another.", false),
AER("AER", "Reimbursement instructions", "Instructions given for reimbursement purposes.", false),
AES("AES", "Reason for amending a message", "Identification of the reason for amending a message.", false),
AET("AET", "Instructions to the paying and/or accepting and/or", "negotiating bank Instructions to the paying and/or accepting and/or negotiating bank.", false),
AEU("AEU", "Interest instructions", "Instructions given about the interest.", false),
AEV("AEV", "Agent commission", "Instructions about agent commission.", false),
AEW("AEW", "Remitting bank instructions", "Instructions to the remitting bank.", false),
AEX("AEX", "Instructions to the collecting bank", "Instructions to the bank, other than the remitting bank, involved in processing the collection.", false),
AEY("AEY", "Collection amount instructions", "Instructions about the collection amount.", false),
AEZ("AEZ", "Internal auditing information", "Text relating to internal auditing information.", false),
AFA("AFA", "Constraint", "Denotes that the associated text is a constraint.", false),
AFB("AFB", "Comment", "Denotes that the associated text is a comment.", false),
AFC("AFC", "Semantic note", "Denotes that the associated text is a semantic note.", false),
AFD("AFD", "Help text", "Denotes that the associated text is an item of help text.", false),
AFE("AFE", "Legend", "Denotes that the associated text is a legend.", false),
AFF("AFF", "Batch code structure", "A description of the structure of a batch code.", false),
AFG("AFG", "Product application", "A general description of the application of a product.", false),
AFH("AFH", "Customer complaint", "Complaint of customer.", false),
AFI("AFI", "Probable cause of fault", "The probable cause of fault.", false),
AFJ("AFJ", "Defect description", "Description of the defect.", false),
AFK("AFK", "Repair description", "The description of the work performed during the repair.", false),
AFL("AFL", "Review comments", "Comments relevant to a review.", false),
AFM("AFM", "Title", "Denotes that the associated text is a title.", false),
AFN("AFN", "Description of amount", "An amount description in clear text.", false),
AFO("AFO", "Responsibilities", "Information describing the responsibilities.", false),
AFP("AFP", "Supplier", "Information concerning suppliers.", false),
AFQ("AFQ", "Purchase region", "Information concerning the region(s) where purchases are made.", false),
AFR("AFR", "Affiliation", "Information concerning an association of one party with another party(ies).", false),
AFS("AFS", "Borrower", "Information concerning the borrower.", false),
AFT("AFT", "Line of business", "Information concerning an entity's line of business.", false),
AFU("AFU", "Financial institution", "Description of financial institution(s) used by an entity.", false),
AFV("AFV", "Business founder", "Information about the business founder.", false),
AFW("AFW", "Business history", "Description of the business history.", false),
AFX("AFX", "Banking arrangements", "Information concerning the general banking arrangements.", false),
AFY("AFY", "Business origin", "Description of the business origin.", false),
AFZ("AFZ", "Brand names' description", "Description of the entity's brands.", false),
AGA("AGA", "Business financing details", "Details about the financing of the business.", false),
AGB("AGB", "Competition", "Information concerning an entity's competition.", false),
AGC("AGC", "Construction process details", "Details about the construction process.", false),
AGD("AGD", "Construction specialty", "Information concerning the line of business of a construction entity.", false),
AGE("AGE", "Contract information", "Details about contract(s).", false),
AGF("AGF", "Corporate filing", "Details about a corporate filing.", false),
AGG("AGG", "Customer information", "Description of customers.", false),
AGH("AGH", "Copyright notice", "Information concerning the copyright notice.", false),
AGI("AGI", "Contingent debt", "Details about the contingent debt.", false),
AGJ("AGJ", "Conviction details", "Details about the law or penal codes that resulted in conviction.", false),
AGK("AGK", "Equipment", "Description of equipment.", false),
AGL("AGL", "Workforce description", "Comments about the workforce.", false),
AGM("AGM", "Exemption", "Description about exemptions.", false),
AGN("AGN", "Future plans", "Information on future plans.", false),
AGO("AGO", "Interviewee conversation information", "Information concerning the interviewee conversation.", false),
AGP("AGP", "Intangible asset", "Description of intangible asset(s).", false),
AGQ("AGQ", "Inventory", "Description of the inventory.", false),
AGR("AGR", "Investment", "Description of the investments.", false),
AGS("AGS", "Intercompany relations information", "Description of the intercompany relations.", false),
AGT("AGT", "Joint venture", "Description of the joint venture.", false),
AGU("AGU", "Loan", "Description of a loan.", false),
AGV("AGV", "Long term debt", "Description of the long term debt.", false),
AGW("AGW", "Location", "Description of a location.", false),
AGX("AGX", "Current legal structure", "Details on the current legal structure.", false),
AGY("AGY", "Marital contract", "Details on a marital contract.", false),
AGZ("AGZ", "Marketing activities", "Information concerning marketing activities.", false),
AHA("AHA", "Merger", "Description of a merger.", false),
AHB("AHB", "Marketable securities", "Description of the marketable securities.", false),
AHC("AHC", "Business debt", "Description of the business debt(s).", false),
AHD("AHD", "Original legal structure", "Information concerning the original legal structure.", false),
AHE("AHE", "Employee sharing arrangements", "Information describing how a company uses employees from another company.", false),
AHF("AHF", "Organization details", "Description about the organization of a company.", false),
AHG("AHG", "Public record details", "Information concerning public records.", false),
AHH("AHH", "Price range", "Information concerning the price range of products made or sold.", false),
AHI("AHI", "Qualifications", "Information on the accomplishments fitting a party for a position.", false),
AHJ("AHJ", "Registered activity", "Information concerning the registered activity.", false),
AHK("AHK", "Criminal sentence", "Description of the sentence imposed in a criminal proceeding.", false),
AHL("AHL", "Sales method", "Description of the selling means.", false),
AHM("AHM", "Educational institution information", "Free form description relating to the school(s) attended.", false),
AHN("AHN", "Status details", "Describes the status details.", false),
AHO("AHO", "Sales", "Description of the sales.", false),
AHP("AHP", "Spouse information", "Information about the spouse.", false),
AHQ("AHQ", "Educational degree information", "Details about the educational degree received from a school.", false),
AHR("AHR", "Shareholding information", "General description of shareholding.", false),
AHS("AHS", "Sales territory", "Information on the sales territory.", false),
AHT("AHT", "Accountant's comments", "Comments made by an accountant regarding a financial statement.", false),
AHU("AHU", "Exemption law location", "Description of the exemption provided to a location by a law.", false),
AHV("AHV", "Share classifications", "Information about the classes or categories of shares.", false),
AHW("AHW", "Forecast", "Description of a prediction.", false),
AHX("AHX", "Event location", "Description of the location of an event.", false),
AHY("AHY", "Facility occupancy", "Information related to occupancy of a facility.", false),
AHZ("AHZ", "Import and export details", "Specific information provided about the importation and exportation of goods.", false),
AIA("AIA", "Additional facility information", "Additional information about a facility.", false),
AIB("AIB", "Inventory value", "Description of the value of inventory.", false),
AIC("AIC", "Education", "Description of the education of a person.", false),
AID("AID", "Event", "Description of a thing that happens or takes place.", false),
AIE("AIE", "Agent", "Information about agents the entity uses.", false),
AIF("AIF", "Domestically agreed financial statement details", "Details of domestically agreed financial statement.", false),
AIG("AIG", "Other current asset description", "Description of other current asset.", false),
AIH("AIH", "Other current liability description", "Description of other current liability.", false),
AII("AII", "Former business activity", "Description of the former line of business.", false),
AIJ("AIJ", "Trade name use", "Description of how a trading name is used.", false),
AIK("AIK", "Signing authority", "Description of the authorized signatory.", false),
AIL("AIL", "Guarantee", "[4376] Description of guarantee.", false),
AIM("AIM", "Holding company operation", "Description of the operation of a holding company.", false),
AIN("AIN", "Consignment routing", "Information on routing of the consignment.", false),
AIO("AIO", "Letter of protest", "A letter citing any condition in dispute.", false),
AIP("AIP", "Question", "A free text question.", false),
AIQ("AIQ", "Party information", "Free text information related to a party.", false),
AIR("AIR", "Area boundaries description", "Description of the boundaries of a geographical area.", false),
AIS("AIS", "Advertisement information", "The free text contains advertisement information.", false),
AIT("AIT", "Financial statement details", "Details regarding the financial statement in free text.", false),
AIU("AIU", "Access instructions", "Description of how to access an entity.", false),
AIV("AIV", "Liquidity", "Description of an entity's liquidity.", false),
AIW("AIW", "Credit line", "Description of the line of credit available to an entity.", false),
AIX("AIX", "Warranty terms", "Text describing the terms of warranty which apply to a product or service.", false),
AIY("AIY", "Division description", "Plain language description of a division of an entity.", false),
AIZ("AIZ", "Reporting instruction", "Instruction on how to report.", false),
AJA("AJA", "Examination result", "The result of an examination.", false),
AJB("AJB", "Laboratory result", "The result of a laboratory investigation.", false),
ALC("ALC", "Allowance/charge information", "Information referring to allowance/charge.", false),
ALD("ALD", "X-ray result", "The result of an X-ray examination.", false),
ALE("ALE", "Pathology result", "The result of a pathology investigation.", false),
ALF("ALF", "Intervention description", "Details of an intervention.", false),
ALG("ALG", "Summary of admittance", "Summary description of admittance.", false),
ALH("ALH", "Medical treatment course detail", "Details of a course of medical treatment.", false),
ALI("ALI", "Prognosis", "Details of a prognosis.", false),
ALJ("ALJ", "Instruction to patient", "Instruction given to a patient.", false),
ALK("ALK", "Instruction to physician", "Instruction given to a physician.", false),
ALL("ALL", "All documents", "The note implies to all documents.", false),
ALM("ALM", "Medicine treatment", "Details of medicine treatment.", false),
ALN("ALN", "Medicine dosage and administration", "Details of medicine dosage and method of administration.", false),
ALO("ALO", "Availability of patient", "Details of when and/or where the patient is available.", false),
ALP("ALP", "Reason for service request", "Details of the reason for a requested service.", false),
ALQ("ALQ", "Purpose of service", "Details of the purpose of a service.", false),
ARR("ARR", "Arrival conditions", "Conditions under which arrival takes place.", false),
ARS("ARS", "Service requester's comment", "Comment by the requester of a service.", false),
AUT("AUT", "Authentication", "(4130) (4136) (4426) Name, code, password etc. given for authentication purposes.", false),
AUU("AUU", "Requested location description", "The description of the location requested.", false),
AUV("AUV", "Medicine administration condition", "The event or condition that initiates the administration of a single dose of medicine or a period of treatment.", false),
AUW("AUW", "Patient information", "Information concerning a patient.", false),
AUX("AUX", "Precautionary measure", "Action to be taken to avert possible harmful affects.", false),
AUY("AUY", "Service characteristic", "Free text description is related to a service characteristic.", false),
AUZ("AUZ", "Planned event comment", "Comment about an event that is planned.", false),
AVA("AVA", "Expected delay comment", "Comment about the expected delay.", false),
AVB("AVB", "Transport requirements comment", "Comment about the requirements for transport.", false),
AVC("AVC", "Temporary approval condition", "The condition under which the approval is considered.", false),
AVD("AVD", "Customs Valuation Information", "Information provided in this category will be used by the trader to make certain declarations in relation to Customs Valuation.", false),
AVE("AVE", "Value Added Tax (VAT) margin scheme", "Description of the VAT margin scheme applied.", false),
AVF("AVF", "Maritime Declaration of Health", "Information about Maritime Declaration of Health.", false),
BAG("BAG", "Passenger baggage information", "Information related to baggage tendered by a passenger, such as odd size indication, tag.", false),
BAH("BAH", "Maritime Declaration of Health", "Information about Maritime Declaration of Health.", false),
BAI("BAI", "Additional product information address", "Address at which additional information on the product can be found.", false),
BAJ("BAJ", "Information to be printed on despatch advice", "Specification of free text information which is to be printed on a despatch advice.", false),
BAK("BAK", "Missing goods remarks", "Remarks concerning missing goods.", false),
BAL("BAL", "Non-acceptance information", "Information related to the non-acceptance of an order, goods or a consignment.", false),
BAM("BAM", "Returns information", "Information related to the return of items.", false),
BAN("BAN", "Sub-line item information", "Note contains information related to sub-line item data.", false),
BAO("BAO", "Test information", "Information related to a test.", false),
BAP("BAP", "External link", "The external link to a digital document (e.g.: URL).", false),
BAQ("BAQ", "VAT exemption reason", "Reason for Value Added Tax (VAT) exemption.", false),
BAR("BAR", "Processing Instructions", "Instructions for processing.", false),
BAS("BAS", "Relay Instructions", "Instructions for relaying.", false),
BLC("BLC", "Transport contract document clause", "[4180] Clause on a transport document regarding the cargo being consigned. Synonym: Bill of Lading clause.", false),
BLD("BLD", "Instruction to prepare the patient", "Instruction with the purpose of preparing the patient.", false),
BLE("BLE", "Medicine treatment comment", "Comment about treatment with medicine.", false),
BLF("BLF", "Examination result comment", "Comment about the result of an examination.", false),
BLG("BLG", "Service request comment", "Comment about the requested service.", false),
BLH("BLH", "Prescription reason", "Details of the reason for a prescription.", false),
BLI("BLI", "Prescription comment", "Comment concerning a specified prescription.", false),
BLJ("BLJ", "Clinical investigation comment", "Comment concerning a clinical investigation.", false),
BLK("BLK", "Medicinal specification comment", "Comment concerning the specification of a medicinal product.", false),
BLL("BLL", "Economic contribution comment", "Comment concerning economic contribution.", false),
BLM("BLM", "Status of a plan", "Comment about the status of a plan.", false),
BLN("BLN", "Random sample test information", "Information regarding a random sample test.", false),
BLO("BLO", "Period of time", "Text subject is a period of time.", false),
BLP("BLP", "Legislation", "Information about legislation.", false),
BLQ("BLQ", "Security measures requested", "Text describing security measures that are requested to be executed (e.g. access controls, supervision of ship's stores).", false),
BLR("BLR", "Transport contract document remark", "[4244] Remarks concerning the complete consignment to be printed on the transport document. Synonym: Bill of Lading remark.", false),
BLS("BLS", "Previous port of call security information", "Text describing the security information as applicable at the port facility in the previous port where a ship/port interface was conducted.", false),
BLT("BLT", "Security information", "Text describing security related information (e.g security measures currently in force on a vessel).", false),
BLU("BLU", "Waste information", "Text describing waste related information.", false),
BLV("BLV", "B2C marketing information, short description", "Consumer marketing information, short description.", false),
BLW("BLW", "B2B marketing information, long description", "Trading partner marketing information, long description.", false),
BLX("BLX", "B2C marketing information, long description", "Consumer marketing information, long description.", false),
BLY("BLY", "Product ingredients", "Information on the ingredient make up of the product.", false),
BLZ("BLZ", "Location short name", "Short name of a location e.g. for display or printing purposes.", false),
BMA("BMA", "Packaging material information", "The text contains a description of the material used for packaging.", false),
BMB("BMB", "Filler material information", "Text contains information on the material used for stuffing.", false),
BMC("BMC", "Ship-to-ship activity information", "Text contains information on ship-to-ship activities.", false),
BMD("BMD", "Package material description", "A description of the type of material for packaging beyond the level covered by standards such as UN Recommendation 21.", false),
BME("BME", "Consumer level package marking", "Textual representation of the markings on a consumer level package.", false),
CCI("CCI", "Customs clearance instructions", "Any coded or clear instruction agreed by customer and carrier regarding the declaration of the goods.", false),
CEX("CEX", "Customs clearance instructions export", "Any coded or clear instruction agreed by customer and carrier regarding the export declaration of the goods.", false),
CHG("CHG", "Change information", "Note contains change information.", false),
CIP("CIP", "Customs clearance instruction import", "Any coded or clear instruction agreed by customer and carrier regarding the import declaration of the goods.", false),
CLP("CLP", "Clearance place requested", "Name of the place where Customs clearance is asked to be executed as requested by the consignee/consignor.", false),
CLR("CLR", "Loading remarks", "Instructions concerning the loading of the container.", false),
COI("COI", "Order information", "Additional information related to an order.", false),
CUR("CUR", "Customer remarks", "Remarks from or for a supplier of goods or services.", false),
CUS("CUS", "Customs declaration information", "(4034) Note contains customs declaration information.", true),
DAR("DAR", "Damage remarks", "Remarks concerning damage on the cargo.", false),
DCL("DCL", "Document issuer declaration", "[4020] Text of a declaration made by the issuer of a document.", false),
DEL("DEL", "Delivery information", "Information about delivery.", false),
DIN("DIN", "Delivery instructions", "[4492] Instructions regarding the delivery of the cargo.", false),
DOC("DOC", "Documentation instructions", "Instructions pertaining to the documentation.", false),
DUT("DUT", "Duty declaration", "The text contains a statement constituting a duty declaration.", false),
EUR("EUR", "Effective used routing", "Physical route effectively used for the movement of the means of transport.", false),
FBC("FBC", "First block to be printed on the transport contract", "The first block of text to be printed on the transport contract.", false),
GBL("GBL", "Government bill of lading information", "Free text information on a transport document to indicate payment information by Government Bill of Lading.", false),
GEN("GEN", "Entire transaction set", "Note is general in nature, applies to entire transaction segment.", false),
GS7("GS7", "Further information concerning GGVS par. 7", "Special permission for road transport of certain goods in the German dangerous goods regulation for road transport.", false),
HAN("HAN", "Consignment handling instruction", "[4078] Free form description of a set of handling instructions. For example how specified goods, packages or transport equipment (container) should be handled.", false),
HAZ("HAZ", "Hazard information", "Information pertaining to a hazard.", false),
ICN("ICN", "Consignment information for consignee", "[4070] Any remarks given for the information of the consignee.", false),
IIN("IIN", "Insurance instructions", "(4112) Instructions regarding the cargo insurance.", false),
IMI("IMI", "Invoice mailing instructions", "Instructions as to which freight and charges components have to be mailed to whom.", false),
IND("IND", "Commercial invoice item description", "Free text describing goods on a commercial invoice line.", false),
INS("INS", "Insurance information", "Specific note contains insurance information.", false),
INV("INV", "Invoice instruction", "Note contains invoice instructions.", false),
IRP("IRP", "Information for railway purpose", "Data entered by railway stations when required, e.g. specified trains, additional sheets for freight calculations, special measures, etc.", false),
ITR("ITR", "Inland transport details", "Information concerning the pre-carriage to the port of discharge if by other means than a vessel.", false),
ITS("ITS", "Testing instructions", "Instructions regarding the testing that is required to be carried out on the items in the transaction.", false),
LAN("LAN", "Location Alias", "Alternative name for a location.", false),
LIN("LIN", "Line item", "Note contains line item information.", false),
LOI("LOI", "Loading instruction", "[4080] Instructions where specified packages or containers are to be loaded on a means of transport.", false),
MCO("MCO", "Miscellaneous charge order", "Free text accounting information on an IATA Air Waybill to indicate payment information by Miscellaneous charge order.", false),
MDH("MDH", "Maritime Declaration of Health", "Information about Maritime Declaration of Health.", false),
MKS("MKS", "Additional marks/numbers information", "Additional information regarding the marks and numbers.", false),
ORI("ORI", "Order instruction", "Free text contains order instructions.", false),
OSI("OSI", "Other service information", "General information created by the sender of general or specific value.", false),
PAC("PAC", "Packing/marking information", "Information regarding the packaging and/or marking of goods.", false),
PAI("PAI", "Payment instructions information", "The free text contains payment instructions information relevant to the message.", false),
PAY("PAY", "Payables information", "Note contains payables information.", false),
PKG("PKG", "Packaging information", "Note contains packaging information.", false),
PKT("PKT", "Packaging terms information", "The text contains packaging terms information.", false),
PMD("PMD", "Payment detail/remittance information", "The free text contains payment details.", true),
PMT("PMT", "Payment information", "(4438) Note contains payments information.", true),
PRD("PRD", "Product information", "The text contains product information.", false),
PRF("PRF", "Price calculation formula", "Additional information regarding the price formula used for calculating the item price.", false),
PRI("PRI", "Priority information", "(4218) Note contains priority information.", false),
PUR("PUR", "Purchasing information", "Note contains purchasing information.", false),
QIN("QIN", "Quarantine instructions", "Instructions regarding quarantine, i.e. the period during which an arriving vessel, including its equipment, cargo, crew or passengers, suspected to carry or carrying a contagious disease is detained in strict isolation to prevent the spread of such a disease.", false),
QQD("QQD", "Quality demands/requirements", "Specification of the quality/performance expectations or standards to which the items must conform.", false),
QUT("QUT", "Quotation instruction/information", "Note contains quotation information.", false),
RAH("RAH", "Risk and handling information", "Information concerning risks induced by the goods and/or handling instruction.", false),
REG("REG", "Regulatory information", "The free text contains information for regulatory authority.", true),
RET("RET", "Return to origin information", "Free text information on an IATA Air Waybill to indicate consignment returned because of non delivery.", false),
REV("REV", "Receivables", "The text contains receivables information.", false),
RQR("RQR", "Consignment route", "[3050] Description of a route to be used for the transport of goods.", false),
SAF("SAF", "Safety information", "The text contains safety information.", false),
SIC("SIC", "Consignment documentary instruction", "[4284] Instructions given and declarations made by the sender to the carrier concerning Customs, insurance, and other formalities.", false),
SIN("SIN", "Special instructions", "Special instructions like licence no, high value, handle with care, glass.", false),
SLR("SLR", "Ship line requested", "Shipping line requested to be used for traffic between European continent and U.K. for Ireland.", false),
SPA("SPA", "Special permission for transport, generally", "Statement that a special permission has been obtained for the transport (and/or routing) in general, and reference to such permission.", false),
SPG("SPG", "Special permission concerning the goods to be transported", "Statement that a special permission has been obtained for the transport (and/or routing) of the goods specified, and reference to such permission.", false),
SPH("SPH", "Special handling", "Note contains special handling information.", false),
SPP("SPP", "Special permission concerning package", "Statement that a special permission has been obtained for the packaging, and reference to such permission.", false),
SPT("SPT", "Special permission concerning transport means", "Statement that a special permission has been obtained for the use of the means transport, and reference to such permission.", false),
SRN("SRN", "Subsidiary risk number (IATA/DGR)", "Number(s) of subsidiary risks, induced by the goods, according to the valid classification.", false),
SSR("SSR", "Special service request", "Request for a special service concerning the transport of the goods.", false),
SUR("SUR", "Supplier remarks", "Remarks from or for a supplier of goods or services.", true),
TCA("TCA", "Consignment tariff", "[5430] Free text specification of tariff applied to a consignment.", false),
TDT("TDT", "Consignment transport", "[8012] Transport information for commercial purposes (generic term).", false),
TRA("TRA", "Transportation information", "General information regarding the transport of the cargo.", false),
TRR("TRR", "Requested tariff", "Stipulation of the tariffs to be applied showing, where applicable, special agreement numbers or references.", false),
TXD("TXD", "Tax declaration", "The text contains a statement constituting a tax declaration.", true),
WHI("WHI", "Warehouse instruction/information", "Note contains warehouse information.", false),
ZZZ("ZZZ", "Mutually defined", "Note contains information mutually defined by trading partners.", false),
}

View File

@ -0,0 +1,59 @@
package net.codinux.invoicing.model.codes
enum class InvoiceType(val code: String, val meaning: String, val useFor: InvoiceTypeUseFor, val isFrequentlyUsedValue: Boolean) {
_71("71", "Request for payment", InvoiceTypeUseFor.Invoice, false),
_80("80", "Debit note related to goods or services", InvoiceTypeUseFor.Invoice, false),
_81("81", "Credit note related to goods or services", InvoiceTypeUseFor.CreditNote, false),
_82("82", "Metered services invoice", InvoiceTypeUseFor.Invoice, false),
_83("83", "Credit note related to financial adjustments", InvoiceTypeUseFor.CreditNote, false),
_84("84", "Debit note related to financial adjustments", InvoiceTypeUseFor.Invoice, false),
_102("102", "Tax notification", InvoiceTypeUseFor.Invoice, false),
_130("130", "Invoicing data sheet", InvoiceTypeUseFor.Invoice, false),
_202("202", "Direct payment valuation", InvoiceTypeUseFor.Invoice, false),
_203("203", "Provisional payment valuation", InvoiceTypeUseFor.Invoice, false),
_204("204", "Payment valuation", InvoiceTypeUseFor.Invoice, false),
_211("211", "Interim application for payment", InvoiceTypeUseFor.Invoice, false),
_218("218", "Final payment request based on completion of work", InvoiceTypeUseFor.Invoice, false),
_219("219", "Payment request for completed units", InvoiceTypeUseFor.Invoice, false),
_261("261", "Self billed credit note", InvoiceTypeUseFor.CreditNote, true),
_262("262", "Consolidated credit note - goods and services", InvoiceTypeUseFor.CreditNote, true),
_295("295", "Price variation invoice", InvoiceTypeUseFor.Invoice, false),
_296("296", "Credit note for price variation", InvoiceTypeUseFor.CreditNote, false),
_308("308", "Delcredere credit note", InvoiceTypeUseFor.CreditNote, false),
_325("325", "Proforma invoice", InvoiceTypeUseFor.Invoice, false),
_326("326", "Partial invoice", InvoiceTypeUseFor.Invoice, false),
_331("331", "Commercial invoice which includes a packing list", InvoiceTypeUseFor.Invoice, false),
_380("380", "Commercial invoice", InvoiceTypeUseFor.Invoice, true),
_381("381", "Credit note", InvoiceTypeUseFor.CreditNote, true),
_382("382", "Commission note", InvoiceTypeUseFor.Invoice, false),
_383("383", "Debit note", InvoiceTypeUseFor.Invoice, false),
_384("384", "Corrected invoice", InvoiceTypeUseFor.Invoice, true),
_385("385", "Consolidated invoice", InvoiceTypeUseFor.Invoice, false),
_386("386", "Prepayment invoice", InvoiceTypeUseFor.Invoice, true),
_387("387", "Hire invoice", InvoiceTypeUseFor.Invoice, false),
_388("388", "Tax invoice", InvoiceTypeUseFor.Invoice, false),
_389("389", "Self-billed invoice", InvoiceTypeUseFor.Invoice, true),
_390("390", "Delcredere invoice", InvoiceTypeUseFor.Invoice, false),
_393("393", "Factored invoice", InvoiceTypeUseFor.Invoice, false),
_394("394", "Lease invoice", InvoiceTypeUseFor.Invoice, false),
_395("395", "Consignment invoice", InvoiceTypeUseFor.Invoice, false),
_396("396", "Factored credit note", InvoiceTypeUseFor.CreditNote, false),
_420("420", "Optical Character Reading (OCR) payment credit note", InvoiceTypeUseFor.CreditNote, false),
_456("456", "Debit advice", InvoiceTypeUseFor.Invoice, false),
_457("457", "Reversal of debit", InvoiceTypeUseFor.Invoice, false),
_458("458", "Reversal of credit", InvoiceTypeUseFor.CreditNote, false),
_527("527", "Self billed debit note", InvoiceTypeUseFor.Invoice, false),
_532("532", "Forwarder's credit note", InvoiceTypeUseFor.CreditNote, false),
_553("553", "Forwarder's invoice discrepancy report", InvoiceTypeUseFor.Invoice, false),
_575("575", "Insurer's invoice", InvoiceTypeUseFor.Invoice, false),
_623("623", "Forwarder's invoice", InvoiceTypeUseFor.Invoice, false),
_633("633", "Port charges documents", InvoiceTypeUseFor.Invoice, false),
_751("751", "Invoice information for accounting purposes", InvoiceTypeUseFor.Invoice, true),
_780("780", "Freight invoice", InvoiceTypeUseFor.Invoice, false),
_817("817", "Claim notification", InvoiceTypeUseFor.Invoice, false),
_870("870", "Consular invoice", InvoiceTypeUseFor.Invoice, false),
_875("875", "Partial construction invoice", InvoiceTypeUseFor.Invoice, false),
_876("876", "Partial final construction invoice", InvoiceTypeUseFor.Invoice, false),
_877("877", "Final construction invoice", InvoiceTypeUseFor.Invoice, false),
_935("935", "Customs invoice", InvoiceTypeUseFor.Invoice, false),
}

View File

@ -0,0 +1,7 @@
package net.codinux.invoicing.model.codes
enum class InvoiceTypeUseFor {
Invoice,
CreditNote
}

View File

@ -0,0 +1,188 @@
package net.codinux.invoicing.model.codes
enum class ItemTypeIdentificationCode(val code: String, val meaning: String, val description: String) {
AA("AA", "Product version number", "Number assigned by manufacturer or seller to identify the release of a product."),
AB("AB", "Assembly", "The item number is that of an assembly."),
AC("AC", "HIBC (Health Industry Bar Code)", "Article identifier used within health sector to indicate data used conforms to HIBC."),
AD("AD", "Cold roll number", "Number assigned to a cold roll."),
AE("AE", "Hot roll number", "Number assigned to a hot roll."),
AF("AF", "Slab number", "Number assigned to a slab, which is produced in a particular production step."),
AG("AG", "Software revision number", "A number assigned to indicate a revision of software."),
AH("AH", "UPC (Universal Product Code) Consumer package code (1-5-5)", "An 11-digit code that uniquely identifies consumer packaging of a product; does not have a check digit."),
AI("AI", "UPC (Universal Product Code) Consumer package code (1-5-5-", "1) A 12-digit code that uniquely identifies the consumer packaging of a product, including a check digit."),
AJ("AJ", "Sample number", "Number assigned to a sample."),
AK("AK", "Pack number", "Number assigned to a pack containing a stack of items put together (e.g. cold roll sheets (steel product))."),
AL("AL", "UPC (Universal Product Code) Shipping container code (1-2-", "5-5) A 13-digit code that uniquely identifies the manufacturer's shipping unit, including the packaging indicator."),
AM("AM", "UPC (Universal Product Code)/EAN (European article number)", "Shipping container code (1-2-5-5-1) A 14-digit code that uniquely identifies the manufacturer's shipping unit, including the packaging indicator and the check digit."),
AN("AN", "UPC (Universal Product Code) suffix", "A suffix used in conjunction with a higher level UPC (Universal product code) to define packing variations for a product."),
AO("AO", "State label code", "A code which specifies the codification of the state's labelling requirements."),
AP("AP", "Heat number", "Number assigned to the heat (also known as the iron charge) for the production of steel products."),
AQ("AQ", "Coupon number", "A number identifying a coupon."),
AR("AR", "Resource number", "A number to identify a resource."),
AS("AS", "Work task number", "A number to identify a work task."),
AT("AT", "Price look up number", "Identification number on a product allowing a quick electronic retrieval of price information for that product."),
AU("AU", "NSN (North Atlantic Treaty Organization Stock Number)", "Number assigned under the NATO (North Atlantic Treaty Organization) codification system to provide the identification of an approved item of supply."),
AV("AV", "Refined product code", "A code specifying the product refinement designation."),
AW("AW", "Exhibit", "A code indicating that the product is identified by an exhibit number."),
AX("AX", "End item", "A number specifying an end item."),
AY("AY", "Federal supply classification", "A code to specify a product's Federal supply classification."),
AZ("AZ", "Engineering data list", "A code specifying the product's engineering data list."),
BA("BA", "Milestone event number", "A number to identify a milestone event."),
BB("BB", "Lot number", "A number indicating the lot number of a product."),
BC("BC", "National drug code 4-4-2 format", "A code identifying the product in national drug format 4-4-2."),
BD("BD", "National drug code 5-3-2 format", "A code identifying the product in national drug format 5-3-2."),
BE("BE", "National drug code 5-4-1 format", "A code identifying the product in national drug format 5-4-1."),
BF("BF", "National drug code 5-4-2 format", "A code identifying the product in national drug format 5-4-2."),
BG("BG", "National drug code", "A code specifying the national drug classification."),
BH("BH", "Part number", "A number indicating the part."),
BI("BI", "Local Stock Number (LSN)", "A local number assigned to an item of stock."),
BJ("BJ", "Next higher assembly number", "A number specifying the next higher assembly or component into which the product is being incorporated."),
BK("BK", "Data category", "A code specifying a category of data."),
BL("BL", "Control number", "To specify the control number."),
BM("BM", "Special material identification code", "A number to identify the special material code."),
BN("BN", "Locally assigned control number", "A number assigned locally for control purposes."),
BO("BO", "Buyer's colour", "Colour assigned by buyer."),
BP("BP", "Buyer's part number", "Reference number assigned by the buyer to identify an article."),
BQ("BQ", "Variable measure product code", "A code assigned to identify a variable measure item."),
BR("BR", "Financial phase", "To specify as an item, the financial phase."),
BS("BS", "Contract breakdown", "To specify as an item, the contract breakdown."),
BT("BT", "Technical phase", "To specify as an item, the technical phase."),
BU("BU", "Dye lot number", "Number identifying a dye lot."),
BV("BV", "Daily statement of activities", "A statement listing activities of one day."),
BW("BW", "Periodical statement of activities within a bilaterally", "agreed time period Periodical statement listing activities within a bilaterally agreed time period."),
BX("BX", "Calendar week statement of activities", "A statement listing activities of a calendar week."),
BY("BY", "Calendar month statement of activities", "A statement listing activities of a calendar month."),
BZ("BZ", "Original equipment number", "Original equipment number allocated to spare parts by the manufacturer."),
CC("CC", "Industry commodity code", "The codes given to certain commodities by an industry."),
CG("CG", "Commodity grouping", "Code for a group of articles with common characteristics (e.g. used for statistical purposes)."),
CL("CL", "Colour number", "Code for the colour of an article."),
CR("CR", "Contract number", "Reference number identifying a contract."),
CV("CV", "Customs article number", "Code defined by Customs authorities to an article or a group of articles for Customs purposes."),
DR("DR", "Drawing revision number", "Reference number indicating that a change or revision has been applied to a drawing."),
DW("DW", "Drawing", "Reference number identifying a drawing of an article."),
EC("EC", "Engineering change level", "Reference number indicating that a change or revision has been applied to an article's specification."),
EMD("EMD", "EMDN (European Medical Device Nomenclature)", "Nomenclature system for identification of medical devices based on European Medical Device Nomenclature classification system."),
EF("EF", "Material code", "Code defining the material's type, surface, geometric form plus various classifying characteristics."),
EN("EN", "International Article Numbering Association (EAN)", "Number assigned to a manufacturer's product according to the International Article Numbering Association."),
FS("FS", "Fish species", "Identification of fish species."),
GB("GB", "Buyer's internal product group code", "Product group code used within a buyer's internal systems."),
GMN("GMN", "Global model number", "The GMN is the GS1-identification key used to identify a product model or product family based on attributes common to the model or family as defined by industry or regulation."),
GN("GN", "National product group code", "National product group code. Administered by a national agency."),
GS("GS", "General specification number", "The item number is a general specification number."),
HS("HS", "Harmonised system", "The item number is part of, or is generated in the context of the Harmonised Commodity Description and Coding System (Harmonised System), as developed and maintained by the World Customs Organization (WCO)."),
IB("IB", "ISBN (International Standard Book Number)", "A unique number identifying a book."),
IN("IN", "Buyer's item number", "The item number has been allocated by the buyer."),
IS("IS", "ISSN (International Standard Serial Number)", "A unique number identifying a serial publication."),
IT("IT", "Buyer's style number", "Number given by the buyer to a specific style or form of an article, especially used for garments."),
IZ("IZ", "Buyer's size code", "Code given by the buyer to designate the size of an article in textile and shoe industry."),
MA("MA", "Machine number", "The item number is a machine number."),
MF("MF", "Manufacturer's (producer's) article number", "The number given to an article by its manufacturer."),
MN("MN", "Model number", "Reference number assigned by the manufacturer to differentiate variations in similar products in a class or group."),
MP("MP", "Product/service identification number", "Reference number identifying a product or service."),
NB("NB", "Batch number", "The item number is a batch number."),
ON("ON", "Customer order number", "Reference number of a customer's order."),
PD("PD", "Part number description", "Reference number identifying a description associated with a number ultimately used to identify an article."),
PL("PL", "Purchaser's order line number", "Reference number identifying a line entry in a customer's order for goods or services."),
PO("PO", "Purchase order number", "Reference number identifying a customer's order."),
PV("PV", "Promotional variant number", "The item number is a promotional variant number."),
QS("QS", "Buyer's qualifier for size", "The item number qualifies the size of the buyer."),
RC("RC", "Returnable container number", "Reference number identifying a returnable container."),
RN("RN", "Release number", "Reference number identifying a release from a buyer's purchase order."),
RU("RU", "Run number", "The item number identifies the production or manufacturing run or sequence in which the item was manufactured, processed or assembled."),
RY("RY", "Record keeping of model year", "The item number relates to the year in which the particular model was kept."),
SA("SA", "Supplier's article number", "Number assigned to an article by the supplier of that article."),
SG("SG", "Standard group of products (mixed assortment)", "The item number relates to a standard group of other items (mixed) which are grouped together as a single item for identification purposes."),
SK("SK", "SKU (Stock keeping unit)", "Reference number of a stock keeping unit."),
SN("SN", "Serial number", "Identification number of an item which distinguishes this specific item out of a number of identical items."),
SRS("SRS", "RSK number", "Plumbing and heating."),
SRT("SRT", "IFLS (Institut Francais du Libre Service) 5 digit product", "classification code 5 digit code for product classification managed by the Institut Francais du Libre Service."),
SRU("SRU", "IFLS (Institut Francais du Libre Service) 9 digit product", "classification code 9 digit code for product classification managed by the Institut Francais du Libre Service."),
SRV("SRV", "GS1 Global Trade Item Number", "A unique number, up to 14-digits, assigned according to the numbering structure of the GS1 system."),
SRW("SRW", "EDIS (Energy Data Identification System)", "European system for identification of meter data."),
SRX("SRX", "Slaughter number", "Unique number given by a slaughterhouse to an animal or a group of animals of the same breed."),
SRY("SRY", "Official animal number", "Unique number given by a national authority to identify an animal individually."),
SRZ("SRZ", "Harmonized tariff schedule", "The international Harmonized Tariff Schedule (HTS) to classify the article for customs, statistical and other purposes."),
SS("SS", "Supplier's supplier article number", "Article number referring to a sales catalogue of supplier's supplier."),
SSA("SSA", "46 Level DOT Code", "A US Department of Transportation (DOT) code to identify hazardous (dangerous) goods, managed by the Customs and Border Protection (CBP) agency."),
SSB("SSB", "Airline Tariff 6D", "A US code agreed to by the airline industry to identify hazardous (dangerous) goods, managed by the Customs and Border Protection (CBP) agency."),
SSC("SSC", "Title 49 Code of Federal Regulations", "A US Customs and Border Protection (CBP) code used to identify hazardous (dangerous) goods."),
SSD("SSD", "International Civil Aviation Administration code", "A US Department of Transportation/Federal Aviation Administration code used to identify hazardous (dangerous) goods, managed by the Customs and Border Protection (CBP) agency."),
SSE("SSE", "Hazardous Materials ID DOT", "A US Department of Transportation (DOT) code used to identify hazardous (dangerous) goods, managed by the Customs and Border Protection (CBP) agency."),
SSF("SSF", "Endorsement", "A US Customs and Border Protection (CBP) code used to identify hazardous (dangerous) goods."),
SSG("SSG", "Air Force Regulation 71-4", "A department of Defense/Air Force code used to identify hazardous (dangerous) goods, managed by the Customs and Border Protection (CBP) agency."),
SSH("SSH", "Breed", "The breed of the item (e.g. plant or animal)."),
SSI("SSI", "Chemical Abstract Service (CAS) registry number", "A unique numerical identifier for for chemical compounds, polymers, biological sequences, mixtures and alloys."),
SSJ("SSJ", "Engine model designation", "A name or designation to identify an engine model."),
SSK("SSK", "Institutional Meat Purchase Specifications (IMPS) Number", "A number assigned by agricultural authorities to identify and track meat and meat products."),
SSL("SSL", "Price Look-Up code (PLU)", "Identification number affixed to produce in stores to retrieve price information."),
SSM("SSM", "International Maritime Organization (IMO) Code", "An International Maritime Organization (IMO) code used to identify hazardous (dangerous) goods."),
SSN("SSN", "Bureau of Explosives 600-A (rail)", "A Department of Transportation/Federal Railroad Administration code used to identify hazardous (dangerous) goods."),
SSO("SSO", "United Nations Dangerous Goods List", "A UN code used to classify and identify dangerous goods."),
SSP("SSP", "International Code of Botanical Nomenclature (ICBN)", "A code established by the International Code of Botanical Nomenclature (ICBN) used to classify and identify botanical articles and commodities."),
SSQ("SSQ", "International Code of Zoological Nomenclature (ICZN)", "A code established by the International Code of Zoological Nomenclature (ICZN) used to classify and identify animals."),
SSR("SSR", "International Code of Nomenclature for Cultivated Plants", "(ICNCP) A code established by the International Code of Nomenclature for Cultivated Plants (ICNCP) used to classify and identify animals."),
SSS("SSS", "Distributor's article identifier", "Identifier assigned to an article by the distributor of that article."),
SST("SST", "Norwegian Classification system ENVA", "Product classification system used in the Norwegian market."),
SSU("SSU", "Supplier assigned classification", "Product classification assigned by the supplier."),
SSV("SSV", "Mexican classification system AMECE", "Product classification system used in the Mexican market."),
SSW("SSW", "German classification system CCG", "Product classification system used in the German market."),
SSX("SSX", "Finnish classification system EANFIN", "Product classification system used in the Finnish market."),
SSY("SSY", "Canadian classification system ICC", "Product classification system used in the Canadian market."),
SSZ("SSZ", "French classification system IFLS5", "Product classification system used in the French market."),
ST("ST", "Style number", "Number given to a specific style or form of an article, especially used for garments."),
STA("STA", "Dutch classification system CBL", "Product classification system used in the Dutch market."),
STB("STB", "Japanese classification system JICFS", "Product classification system used in the Japanese market."),
STC("STC", "European Union dairy subsidy eligibility classification", "Category of product eligible for EU subsidy (applies for certain dairy products with specific level of fat content)."),
STD("STD", "GS1 Spain classification system", "Product classification system used in the Spanish market."),
STE("STE", "GS1 Poland classification system", "Product classification system used in the Polish market."),
STF("STF", "Federal Agency on Technical Regulating and Metrology of the", "Russian Federation A Russian government agency that serves as a national standardization body of the Russian Federation."),
STG("STG", "Efficient Consumer Response (ECR) Austria classification", "system Product classification system used in the Austrian market."),
STH("STH", "GS1 Italy classification system", "Product classification system used in the Italian market."),
STI("STI", "CPV (Common Procurement Vocabulary)", "Official classification system for public procurement in the European Union."),
STJ("STJ", "IFDA (International Foodservice Distributors Association)", "International Foodservice Distributors Association (IFDA)."),
STK("STK", "AHFS (American Hospital Formulary Service) pharmacologic -", "therapeutic classification Pharmacologic - therapeutic classification maintained by the American Hospital Formulary Service (AHFS)."),
STL("STL", "ATC (Anatomical Therapeutic Chemical) classification system", "Anatomical Therapeutic Chemical classification system maintained by the World Health Organisation (WHO)."),
STM("STM", "CLADIMED (Classification des Dispositifs Médicaux)", "A five level classification system for medical decvices maintained by the CLADIMED organisation used in the French market."),
STN("STN", "CMDR (Canadian Medical Device Regulations) classification", "system Classification system related to the Canadian Medical Device Regulations maintained by Health Canada."),
STO("STO", "CNDM (Classificazione Nazionale dei Dispositivi Medici)", "A classification system for medical devices used in the Italian market."),
STP("STP", "UK DM&D (Dictionary of Medicines & Devices) standard coding", "scheme A classification system for medicines and devices used in the UK market."),
STQ("STQ", "eCl@ss", "Standardized material and service classification and dictionary maintained by eClass e.V."),
STR("STR", "EDMA (European Diagnostic Manufacturers Association)", "Products Classification Classification for in vitro diagnostics medical devices maintained by the European Diagnostic Manufacturers Association."),
STS("STS", "EGAR (European Generic Article Register)", "A classification system for medical devices."),
STT("STT", "GMDN (Global Medical Devices Nomenclature)", "Nomenclature system for identification of medical devices officially apprroved by the European Union."),
STU("STU", "GPI (Generic Product Identifier)", "A drug classification system managed by Medi-Span."),
STV("STV", "HCPCS (Healthcare Common Procedure Coding System)", "A classification system used with US healthcare insurance programs."),
STW("STW", "ICPS (International Classification for Patient Safety)", "A patient safety taxonomy maintained by the World Health Organisation."),
STX("STX", "MedDRA (Medical Dictionary for Regulatory Activities)", "A medical dictionary maintained by the International Federation of Pharmaceutical Manufacturers and Associations (IFPMA)."),
STY("STY", "Medical Columbus", "Medical product classification system used in the German market."),
STZ("STZ", "NAPCS (North American Product Classification System)", "Product classification system used in the North American market."),
SUA("SUA", "NHS (National Health Services) eClass", "Product and Service classification system used in United Kingdom market."),
SUB("SUB", "US FDA (Food and Drug Administration) Product Code", "Classification Database US FDA Product Code Classification Database contains medical device names and associated information developed by the Center for Devices and Radiological Health (CDRH)."),
SUC("SUC", "SNOMED CT (Systematized Nomenclature of Medicine-Clinical", "Terms) A medical nomenclature system developed between the NHS and the College of American Pathologists."),
SUD("SUD", "UMDNS (Universal Medical Device Nomenclature System)", "A standard international nomenclature and computer coding system for medical devices maintained by the Emergency Care Research Institute (ECRI)."),
SUE("SUE", "GS1 Global Returnable Asset Identifier, non-serialised", "A unique, 13-digit number assigned according to the numbering structure of the GS1 system and used to identify a type of Reusable Transport Item (RTI)."),
SUF("SUF", "IMEI", "The International Mobile Station Equipment Identity (IMEI) is a unique number to identify mobile phones. It includes the origin, model and serial number of the device. The structure is specified in 3GPP TS 23.003."),
SUG("SUG", "Waste Type (EMSA)", "Classification of waste as defined by the European Maritime Safety Agency (EMSA)."),
SUH("SUH", "Ship's store classification type", "Classification of ship's stores."),
SUI("SUI", "Emergency fire code", "Classification for emergency response procedures related to fire."),
SUJ("SUJ", "Emergency spillage code", "Classification for emergency response procedures related to spillage."),
SUK("SUK", "IMDG packing group", "Packing group as defined in the International Marititme Dangerous Goods (IMDG) specification."),
SUL("SUL", "MARPOL Code IBC", "International Bulk Chemical (IBC) code defined by the International Convention for the Prevention of Pollution from Ships (MARPOL)."),
SUM("SUM", "IMDG subsidiary risk class", "Subsidiary risk class as defined in the International Maritime Dangerous Goods (IMDG) specification."),
TG("TG", "Transport group number", "(8012) Additional number to form article groups for packing and/or transportation purposes."),
TSN("TSN", "Taxonomic Serial Number", "A unique number assigned to a taxonomic entity, commonly to a species of plants or animals, providing information on their hierarchical classification, scientific name, taxonomic rank, associated synonyms and vernacular names where appropriate, data source information and data quality indicators."),
TSO("TSO", "IMDG main hazard class", "Main hazard class as defined in the International Maritime Dangerous Goods (IMDG) specification."),
TSP("TSP", "EU Combined Nomenclature", "The number is part of, or is generated in the context of the Combined Nomenclature classification, as developed and maintained by the European Union (EU)."),
TSQ("TSQ", "Therapeutic classification number", "A code to specify a product's therapeutic classification."),
TSR("TSR", "European Waste Catalogue", "Waste type number according to the European Waste Catalogue (EWC)."),
TSS("TSS", "Price grouping code", "Number assigned to identify a grouping of products based on price."),
TST("TST", "UNSPSC", "The UNSPSC commodity classification system."),
TSU("TSU", "EU RoHS Directive", "European Union Directive on the restriction of hazardous substances."),
UA("UA", "Ultimate customer's article number", "Number assigned by ultimate customer to identify relevant article."),
UP("UP", "UPC (Universal product code)", "Number assigned to a manufacturer's product by the Product Code Council."),
VN("VN", "Vendor item number", "Reference number assigned by a vendor/seller identifying a product/service/article."),
VP("VP", "Vendor's (seller's) part number", "Reference number assigned by a vendor/seller identifying an article."),
VS("VS", "Vendor's supplemental item number", "The item number is a specified by the vendor as a supplemental number for the vendor's purposes."),
VX("VX", "Vendor specification number", "The item number has been allocated by the vendor as a specification number."),
ZZZ("ZZZ", "Mutually defined", "Item type identification mutually agreed between interchanging parties."),
}

View File

@ -0,0 +1,10 @@
package net.codinux.invoicing.model.codes
enum class Mime(val code: String) {
PDF("application/pdf"),
PNG("image/png"),
JPEG("image/jpeg"),
CSV("text/csv"),
ExcelSpreadsheet("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
OpenDocumentSpreadsheet("application/vnd.oasis.opendocument.spreadsheet"),
}

View File

@ -0,0 +1,88 @@
package net.codinux.invoicing.model.codes
enum class PaymentMeansCode(val code: String, val meaning: String, val description: String, val isFrequentlyUsedValue: Boolean) {
_1("1", "Instrument not defined", "Not defined legally enforceable agreement between two or more parties (expressing a contractual right or a right to the payment of money).", false),
_2("2", "Automated clearing house credit", "A credit transaction made through the automated clearing house system.", false),
_3("3", "Automated clearing house debit", "A debit transaction made through the automated clearing house system.", false),
_4("4", "ACH demand debit reversal", "A request to reverse an ACH debit transaction to a demand deposit account.", false),
_5("5", "ACH demand credit reversal", "A request to reverse a credit transaction to a demand deposit account.", false),
_6("6", "ACH demand credit", "A credit transaction made through the ACH system to a demand deposit account.", false),
_7("7", "ACH demand debit", "A debit transaction made through the ACH system to a demand deposit account.", false),
_8("8", "Hold", "Indicates that the bank should hold the payment for collection by the beneficiary or other instructions.", false),
_9("9", "National or regional clearing", "Indicates that the payment should be made using the national or regional clearing.", false),
_10("10", "In cash", "Payment by currency (including bills and coins) in circulation, including checking account deposits.", true),
_11("11", "ACH savings credit reversal", "A request to reverse an ACH credit transaction to a savings account.", false),
_12("12", "ACH savings debit reversal", "A request to reverse an ACH debit transaction to a savings account.", false),
_13("13", "ACH savings credit", "A credit transaction made through the ACH system to a savings account.", false),
_14("14", "ACH savings debit", "A debit transaction made through the ACH system to a savings account.", false),
_15("15", "Bookentry credit", "A credit entry between two accounts at the same bank branch. Synonym: house credit.", false),
_16("16", "Bookentry debit", "A debit entry between two accounts at the same bank branch. Synonym: house debit.", false),
_17("17", "ACH demand cash concentration/disbursement (CCD) credit", "A credit transaction made through the ACH system to a demand deposit account using the CCD payment format.", false),
_18("18", "ACH demand cash concentration/disbursement (CCD) debit", "A debit transaction made through the ACH system to a demand deposit account using the CCD payment format.", false),
_19("19", "ACH demand corporate trade payment (CTP) credit", "A credit transaction made through the ACH system to a demand deposit account using the CTP payment format.", false),
_20("20", "Cheque", "Payment by a pre-printed form on which instructions are given to an account holder (a bank or building society) to pay a stated sum to a named recipient.", true),
_21("21", "Banker's draft", "Issue of a banker's draft in payment of the funds.", false),
_22("22", "Certified banker's draft", "Cheque drawn by a bank on itself or its agent. A person who owes money to another buys the draft from a bank for cash and hands it to the creditor who need have no fear that it might be dishonoured.", false),
_23("23", "Bank cheque (issued by a banking or similar establishment)", "Payment by a pre-printed form, which has been completed by a financial institution, on which instructions are given to an account holder (a bank or building society) to pay a stated sum to a named recipient.", false),
_24("24", "Bill of exchange awaiting acceptance", "Bill drawn by the creditor on the debtor but not yet accepted by the debtor.", false),
_25("25", "Certified cheque", "Payment by a pre-printed form stamped with the paying bank's certification on which instructions are given to an account holder (a bank or building society) to pay a stated sum to a named recipient .", false),
_26("26", "Local cheque", "Indicates that the cheque is given local to the recipient.", false),
_27("27", "ACH demand corporate trade payment (CTP) debit", "A debit transaction made through the ACH system to a demand deposit account using the CTP payment format.", false),
_28("28", "ACH demand corporate trade exchange (CTX) credit", "A credit transaction made through the ACH system to a demand deposit account using the CTX payment format.", false),
_29("29", "ACH demand corporate trade exchange (CTX) debit", "A debit transaction made through the ACH system to a demand account using the CTX payment format.", false),
_30("30", "Credit transfer", "Payment by credit movement of funds from one account to another.", true),
_31("31", "Debit transfer", "Payment by debit movement of funds from one account to another.", false),
_32("32", "ACH demand cash concentration/disbursement plus (CCD+)", "credit A credit transaction made through the ACH system to a demand deposit account using the CCD+ payment format.", false),
_33("33", "ACH demand cash concentration/disbursement plus (CCD+)", "debit A debit transaction made through the ACH system to a demand deposit account using the CCD+ payment format.", false),
_34("34", "ACH prearranged payment and deposit (PPD)", "A consumer credit transaction made through the ACH system to a demand deposit or savings account.", false),
_35("35", "ACH savings cash concentration/disbursement (CCD) credit", "A credit transaction made through the ACH system to a demand deposit or savings account.", false),
_36("36", "ACH savings cash concentration/disbursement (CCD) debit", "A debit transaction made through the ACH system to a savings account using the CCD payment format.", false),
_37("37", "ACH savings corporate trade payment (CTP) credit", "A credit transaction made through the ACH system to a savings account using the CTP payment format.", false),
_38("38", "ACH savings corporate trade payment (CTP) debit", "A debit transaction made through the ACH system to a savings account using the CTP payment format.", false),
_39("39", "ACH savings corporate trade exchange (CTX) credit", "A credit transaction made through the ACH system to a savings account using the CTX payment format.", false),
_40("40", "ACH savings corporate trade exchange (CTX) debit", "A debit transaction made through the ACH system to a savings account using the CTX payment format.", false),
_41("41", "ACH savings cash concentration/disbursement plus (CCD+)", "credit A credit transaction made through the ACH system to a savings account using the CCD+ payment format.", false),
_42("42", "Payment to bank account", "Payment by an arrangement for settling debts that is operated by the Post Office.", true),
_43("43", "ACH savings cash concentration/disbursement plus (CCD+)", "debit A debit transaction made through the ACH system to a savings account using the CCD+ payment format.", false),
_44("44", "Accepted bill of exchange", "Bill drawn by the creditor on the debtor and accepted by the debtor.", false),
_45("45", "Referenced home-banking credit transfer", "A referenced credit transfer initiated through home- banking.", false),
_46("46", "Interbank debit transfer", "A debit transfer via interbank means.", false),
_47("47", "Home-banking debit transfer", "A debit transfer initiated through home-banking.", false),
_48("48", "Bank card", "Payment by means of a card issued by a bank or other financial institution.", true),
_49("49", "Direct debit", "The amount is to be, or has been, directly debited to the customer's bank account.", true),
_50("50", "Payment by postgiro", "A method for the transmission of funds through the postal system rather than through the banking system.", false),
_51("51", "FR, norme 6 97-Telereglement CFONB (French Organisation for", "Banking Standards) - Option A A French standard procedure that allows a debtor to pay an amount due to a creditor. The creditor will forward it to its bank, which will collect the money on the bank account of the debtor.", false),
_52("52", "Urgent commercial payment", "Payment order which requires guaranteed processing by the most appropriate means to ensure it occurs on the requested execution date, provided that it is issued to the ordered bank before the agreed cut-off time.", false),
_53("53", "Urgent Treasury Payment", "Payment order or transfer which must be executed, by the most appropriate means, as urgently as possible and before urgent commercial payments.", false),
_54("54", "Credit card", "Payment made by means of credit card.", false),
_55("55", "Debit card", "Payment made by means of debit card.", false),
_56("56", "Bankgiro", "Payment will be, or has been, made by bankgiro.", false),
_57("57", "Standing agreement", "The payment means have been previously agreed between seller and buyer and thus are not stated again.", true),
_58("58", "SEPA credit transfer", "Credit transfer inside the Single Euro Payment Area (SEPA) system.", true),
_59("59", "SEPA direct debit", "Direct debit inside the Single Euro Payment Area (SEPA) system.", true),
_60("60", "Promissory note", "Payment by an unconditional promise in writing made by one person to another, signed by the maker, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_61("61", "Promissory note signed by the debtor", "Payment by an unconditional promise in writing made by the debtor to another person, signed by the debtor, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_62("62", "Promissory note signed by the debtor and endorsed by a bank", "Payment by an unconditional promise in writing made by the debtor to another person, signed by the debtor and endorsed by a bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_63("63", "Promissory note signed by the debtor and endorsed by a", "third party Payment by an unconditional promise in writing made by the debtor to another person, signed by the debtor and endorsed by a third party, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_64("64", "Promissory note signed by a bank", "Payment by an unconditional promise in writing made by the bank to another person, signed by the bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_65("65", "Promissory note signed by a bank and endorsed by another", "bank Payment by an unconditional promise in writing made by the bank to another person, signed by the bank and endorsed by another bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_66("66", "Promissory note signed by a third party", "Payment by an unconditional promise in writing made by a third party to another person, signed by the third party, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_67("67", "Promissory note signed by a third party and endorsed by a", "bank Payment by an unconditional promise in writing made by a third party to another person, signed by the third party and endorsed by a bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer.", false),
_68("68", "Online payment service", "Payment will be made or has been made by an online payment service.", false),
_69("69", "Transfer Advice", "Transfer of an amount of money in the books of the account servicer. An advice should be sent back to the account owner.", false),
_70("70", "Bill drawn by the creditor on the debtor", "Bill drawn by the creditor on the debtor.", false),
_74("74", "Bill drawn by the creditor on a bank", "Bill drawn by the creditor on a bank.", false),
_75("75", "Bill drawn by the creditor, endorsed by another bank", "Bill drawn by the creditor, endorsed by another bank.", false),
_76("76", "Bill drawn by the creditor on a bank and endorsed by a", "third party Bill drawn by the creditor on a bank and endorsed by a third party.", false),
_77("77", "Bill drawn by the creditor on a third party", "Bill drawn by the creditor on a third party.", false),
_78("78", "Bill drawn by creditor on third party, accepted and", "endorsed by bank Bill drawn by creditor on third party, accepted and endorsed by bank.", false),
_91("91", "Not transferable banker's draft", "Issue a bankers draft not endorsable.", false),
_92("92", "Not transferable local cheque", "Issue a cheque not endorsable in payment of the funds.", false),
_93("93", "Reference giro", "Ordering customer tells the bank to use the payment system 'Reference giro'. Used in the Finnish national banking system.", false),
_94("94", "Urgent giro", "Ordering customer tells the bank to use the bank service 'Urgent Giro' when transferring the payment. Used in Finnish national banking system.", false),
_95("95", "Free format giro", "Ordering customer tells the ordering bank to use the bank service 'Free Format Giro' when transferring the payment. Used in Finnish national banking system.", false),
_96("96", "Requested method for payment was not used", "If the requested method for payment was or could not be used, this code indicates that.", false),
_97("97", "Clearing between partners", "Amounts which two partners owe to each other to be compensated in order to avoid useless payments.", true),
_98("98", "JP, Electronically Recorded Monetary Claims", "An electronically recorded monetary claim is a claim that is separate from the underlying debt that gave rise to its accrual.Therefore, even if an electronically recorded monetary claim is accrued as a means of payment of the underlying debt, the underlying debt will not be extinguished as a matter of course.", false),
ZZZ("ZZZ", "Mutually defined", "A code assigned within a code list to be used on an interim basis and as defined among trading partners until a precise code can be assigned to the code list.", true),
}

View File

@ -0,0 +1,821 @@
package net.codinux.invoicing.model.codes
enum class ReferenceType(val code: String, val meaning: String, val description: String) {
AAA("AAA", "Order acknowledgement document identifier", "[1018] Reference number identifying the acknowledgement of an order."),
AAB("AAB", "Proforma invoice document identifier", "[1088] Reference number to identify a proforma invoice."),
AAC("AAC", "Documentary credit identifier", "[1172] Reference number to identify a documentary credit."),
AAD("AAD", "Contract document addendum identifier", "[1318] Reference number to identify an addendum to a contract."),
AAE("AAE", "Goods declaration number", "Reference number assigned to a goods declaration."),
AAF("AAF", "Debit card number", "A reference number identifying a debit card."),
AAG("AAG", "Offer number", "(1332) Reference number assigned by issuing party to an offer."),
AAH("AAH", "Bank's batch interbank transaction reference number", "Reference number allocated by the bank to a batch of different underlying interbank transactions."),
AAI("AAI", "Bank's individual interbank transaction reference number", "Reference number allocated by the bank to one specific interbank transaction."),
AAJ("AAJ", "Delivery order number", "Reference number assigned by issuer to a delivery order."),
AAK("AAK", "Despatch advice number", "[1035] Reference number assigned by issuing party to a despatch advice."),
AAL("AAL", "Drawing number", "Reference number identifying a specific product drawing."),
AAM("AAM", "Waybill number", "Reference number assigned to a waybill, see: 1001 = 700."),
AAN("AAN", "Delivery schedule number", "Reference number assigned by buyer to a delivery schedule."),
AAO("AAO", "Consignment identifier, consignee assigned", "[1362] Reference number assigned by the consignee to identify a particular consignment."),
AAP("AAP", "Partial shipment identifier", "[1310] Identifier of a shipment which is part of an order."),
AAQ("AAQ", "Transport equipment identifier", "[8260] To identify a piece if transport equipment e.g. container or unit load device."),
AAR("AAR", "Municipality assigned business registry number", "A reference number assigned by a municipality to identify a business."),
AAS("AAS", "Transport contract document identifier", "[1188] Reference number to identify a document evidencing a transport contract."),
AAT("AAT", "Master label number", "Identifies the master label number of any package type."),
AAU("AAU", "Despatch note document identifier", "[1128] Reference number to identify a Despatch Note."),
AAV("AAV", "Enquiry number", "Reference number assigned to an enquiry."),
AAW("AAW", "Docket number", "A reference number identifying the docket."),
AAX("AAX", "Civil action number", "A reference number identifying the civil action."),
AAY("AAY", "Carrier's agent reference number", "Reference number assigned by the carriers agent to a transaction."),
AAZ("AAZ", "Standard Carrier Alpha Code (SCAC) number", "For maritime shipments, this code qualifies a Standard Alpha Carrier Code (SCAC) as issued by the United Stated National Motor Traffic Association Inc."),
ABA("ABA", "Customs valuation decision number", "Reference by an importing party to a previous decision made by a Customs administration regarding the valuation of goods."),
ABB("ABB", "End use authorization number", "Reference issued by a Customs administration authorizing a preferential rate of duty if a product is used for a specified purpose, see: 1001 = 990."),
ABC("ABC", "Anti-dumping case number", "Reference issued by a Customs administration pertaining to a past or current investigation of goods 'dumped' at a price lower than the exporter's domestic market price."),
ABD("ABD", "Customs tariff number", "(7357) Code number of the goods in accordance with the tariff nomenclature system of classification in use where the Customs declaration is made."),
ABE("ABE", "Declarant's reference number", "Unique reference number assigned to a document or a message by the declarant for identification purposes."),
ABF("ABF", "Repair estimate number", "A number identifying a repair estimate."),
ABG("ABG", "Customs decision request number", "Reference issued by Customs pertaining to a pending tariff classification decision requested by an importer or agent."),
ABH("ABH", "Sub-house bill of lading number", "Reference assigned to a sub-house bill of lading."),
ABI("ABI", "Tax payment identifier", "[1168] Reference number identifying a payment of a duty or tax e.g. under a transit procedure."),
ABJ("ABJ", "Quota number", "Reference number allocated by a government authority to identify a quota."),
ABK("ABK", "Transit (onward carriage) guarantee (bond) number", "Reference number to identify the guarantee or security provided for Customs transit operation (CCC)."),
ABL("ABL", "Customs guarantee number", "Reference assigned to a Customs guarantee."),
ABM("ABM", "Replacing part number", "New part number which replaces the existing part number."),
ABN("ABN", "Seller's catalogue number", "Identification number assigned to a seller's catalogue."),
ABO("ABO", "Originator's reference", "A unique reference assigned by the originator."),
ABP("ABP", "Declarant's Customs identity number", "Reference to the party whose posted bond or security is being declared in order to accept responsibility for a goods declaration and the applicable duties and taxes."),
ABQ("ABQ", "Importer reference number", "Reference number assigned by the importer to identify a particular shipment for his own purposes."),
ABR("ABR", "Export clearance instruction reference number", "Reference number of the clearance instructions given by the consignor through different means."),
ABS("ABS", "Import clearance instruction reference number", "Reference number of the import clearance instructions given by the consignor/consignee through different means."),
ABT("ABT", "Goods declaration document identifier, Customs", "[1426] Reference number, assigned or accepted by Customs, to identify a goods declaration."),
ABU("ABU", "Article number", "A number that identifies an article."),
ABV("ABV", "Intra-plant routing", "To define routing within a plant."),
ABW("ABW", "Stock keeping unit number", "A number that identifies the stock keeping unit."),
ABX("ABX", "Text Element Identifier deletion reference", "The reference used within a given TEI (Text Element Identifier) which is to be deleted."),
ABY("ABY", "Allotment identification (Air)", "Reference assigned to guarantied capacity on one or more specific flights on specific date(s) to third parties as agents and other airlines."),
ABZ("ABZ", "Vehicle licence number", "Number of the licence issued for a vehicle by an agency of government."),
AC("AC", "Air cargo transfer manifest", "A number assigned to an air cargo list of goods to be transferred."),
ACA("ACA", "Cargo acceptance order reference number", "Reference assigned to the cargo acceptance order."),
ACB("ACB", "US government agency number", "A number that identifies a United States Government agency."),
ACC("ACC", "Shipping unit identification", "Identifying marks on the outermost unit that is used to transport merchandise."),
ACD("ACD", "Additional reference number", "[1010] Reference number provided in addition to another given reference."),
ACE("ACE", "Related document number", "Reference number identifying a related document."),
ACF("ACF", "Addressee reference", "A reference number of an addressee."),
ACG("ACG", "ATA carnet number", "Reference number assigned to an ATA carnet."),
ACH("ACH", "Packaging unit identification", "Identifying marks on packing units."),
ACI("ACI", "Outerpackaging unit identification", "Identifying marks on packing units contained within an outermost shipping unit."),
ACJ("ACJ", "Customer material specification number", "Number for a material specification given by customer."),
ACK("ACK", "Bank reference", "Cross reference issued by financial institution."),
ACL("ACL", "Principal reference number", "A number that identifies the principal reference."),
ACN("ACN", "Collection advice document identifier", "[1030] Reference number to identify a collection advice document."),
ACO("ACO", "Iron charge number", "Number attributed to the iron charge for the production of steel products."),
ACP("ACP", "Hot roll number", "Number attributed to a hot roll coil."),
ACQ("ACQ", "Cold roll number", "Number attributed to a cold roll coil."),
ACR("ACR", "Railway wagon number", "(8260) Registered identification initials and numbers of railway wagon. Synonym: Rail car number."),
ACT("ACT", "Unique claims reference number of the sender", "A number that identifies the unique claims reference of the sender."),
ACU("ACU", "Loss/event number", "To reference to the unique number that is assigned to each major loss hitting the reinsurance industry."),
ACV("ACV", "Estimate order reference number", "Reference number assigned by the ordering party of the estimate order."),
ACW("ACW", "Reference number to previous message", "Reference number assigned to the message which was previously issued (e.g. in the case of a cancellation, the primary reference of the message to be cancelled will be quoted in this element)."),
ACX("ACX", "Banker's acceptance", "Reference number for banker's acceptance issued by the accepting financial institution."),
ACY("ACY", "Duty memo number", "Reference number assigned by customs to a duty memo."),
ACZ("ACZ", "Equipment transport charge number", "Reference assigned to a specific equipment transportation charge."),
ADA("ADA", "Buyer's item number", "[7304] Reference number assigned by the buyer to an item."),
ADB("ADB", "Matured certificate of deposit", "Reference number for certificate of deposit allocated by issuing financial institution."),
ADC("ADC", "Loan", "Reference number for loan allocated by lending financial institution."),
ADD("ADD", "Analysis number/test number", "Number given to a specific analysis or test operation."),
ADE("ADE", "Account number", "Identification number of an account."),
ADF("ADF", "Treaty number", "A number that identifies a treaty."),
ADG("ADG", "Catastrophe number", "A number that identifies a catastrophe."),
ADI("ADI", "Bureau signing (statement reference)", "A statement reference that identifies a bureau signing."),
ADJ("ADJ", "Company / syndicate reference 1", "First reference of a company/syndicate."),
ADK("ADK", "Company / syndicate reference 2", "Second reference of a company/syndicate."),
ADL("ADL", "Ordering customer consignment reference number", "Reference number assigned to the consignment by the ordering customer."),
ADM("ADM", "Shipowner's authorization number", "Reference number assigned by the shipowner as an authorization number to transport certain goods (such as hazardous goods, cool or reefer goods)."),
ADN("ADN", "Inland transport order number", "Reference number assigned by the principal to the transport order for inland carriage."),
ADO("ADO", "Container work order reference number", "Reference number assigned by the principal to the work order for a (set of) container(s)."),
ADP("ADP", "Statement number", "A reference number identifying a statement."),
ADQ("ADQ", "Unique market reference", "A number that identifies a unique market."),
ADT("ADT", "Group accounting", "A number that identifies group accounting."),
ADU("ADU", "Broker reference 1", "First reference of a broker."),
ADV("ADV", "Broker reference 2", "Second reference of a broker."),
ADW("ADW", "Lloyd's claims office reference", "A number that identifies a Lloyd's claims office."),
ADX("ADX", "Secure delivery terms and conditions agreement reference", "A reference to a secure delivery terms and conditions agreement. A secured delivery agreement is an agreement containing terms and conditions to secure deliveries in case of failure in the production or logistics process of the supplier."),
ADY("ADY", "Report number", "Reference to a report to Customs by a carrier at the point of entry, encompassing both conveyance and consignment information."),
ADZ("ADZ", "Trader account number", "Number assigned by a Customs authority which uniquely identifies a trader (i.e. importer, exporter or declarant) for Customs purposes."),
AE("AE", "Authorization for expense (AFE) number", "A number that identifies an authorization for expense (AFE)."),
AEA("AEA", "Government agency reference number", "Coded reference number that pertains to the business of a government agency."),
AEB("AEB", "Assembly number", "A number that identifies an assembly."),
AEC("AEC", "Symbol number", "A number that identifies a symbol."),
AED("AED", "Commodity number", "A number that identifies a commodity."),
AEE("AEE", "Eur 1 certificate number", "Reference number assigned to a Eur 1 certificate."),
AEF("AEF", "Customer process specification number", "Retrieval number for a process specification defined by customer."),
AEG("AEG", "Customer specification number", "Retrieval number for a specification defined by customer."),
AEH("AEH", "Applicable instructions or standards", "Instructions or standards applicable for the whole message or a message line item. These instructions or standards may be published by a neutral organization or authority or another party concerned."),
AEI("AEI", "Registration number of previous Customs declaration", "Registration number of the Customs declaration lodged for the previous Customs procedure."),
AEJ("AEJ", "Post-entry reference", "Reference to a message related to a post-entry."),
AEK("AEK", "Payment order number", "A number that identifies a payment order."),
AEL("AEL", "Delivery number (transport)", "Reference number by which a haulier/carrier will announce himself at the container terminal or depot when delivering equipment."),
AEM("AEM", "Transport route", "A predefined and identified sequence of points where goods are collected, agreed between partners, e.g. the party in charge of organizing the transport and the parties where goods will be collected. The same collecting points may be included in different transport routes, but in a different sequence."),
AEN("AEN", "Customer's unit inventory number", "Number assigned by customer to a unique unit for inventory purposes."),
AEO("AEO", "Product reservation number", "Number assigned by seller to identify reservation of specified products."),
AEP("AEP", "Project number", "Reference number assigned to a project."),
AEQ("AEQ", "Drawing list number", "Reference number identifying a drawing list."),
AER("AER", "Project specification number", "Reference number identifying a project specification."),
AES("AES", "Primary reference", "A number that identifies the primary reference."),
AET("AET", "Request for cancellation number", "A number that identifies a request for cancellation."),
AEU("AEU", "Supplier's control number", "Reference to a file regarding a control of the supplier carried out on departure of the goods."),
AEV("AEV", "Shipping note number", "[1123] Reference number assigned to a shipping note."),
AEW("AEW", "Empty container bill number", "Reference number assigned to an empty container bill, see: 1001 = 708."),
AEX("AEX", "Non-negotiable maritime transport document number", "Reference number assigned to a sea waybill, see: 1001 = 712."),
AEY("AEY", "Substitute air waybill number", "Reference number assigned to a substitute air waybill, see: 1001 = 743."),
AEZ("AEZ", "Despatch note (post parcels) number", "(1128) Reference number assigned to a despatch note (post parcels), see: 1001 = 750."),
AF("AF", "Airlines flight identification number", "(8028) Identification of a commercial flight by carrier code and number as assigned by the airline (IATA)."),
AFA("AFA", "Through bill of lading number", "Reference number assigned to a through bill of lading, see: 1001 = 761."),
AFB("AFB", "Cargo manifest number", "[1037] Reference number assigned to a cargo manifest."),
AFC("AFC", "Bordereau number", "Reference number assigned to a bordereau, see: 1001 = 787."),
AFD("AFD", "Customs item number", "Number (1496 in CST) assigned by the declarant to an item."),
AFE("AFE", "Export Control Commodity number (ECCN)", "Reference number to relevant item within Commodity Control List covering actual products change functionality."),
AFF("AFF", "Marking/label reference", "Reference where marking/label information derives from."),
AFG("AFG", "Tariff number", "A number that identifies a tariff."),
AFH("AFH", "Replenishment purchase order number", "Purchase order number specified by the buyer for the assignment to vendor's replenishment orders in a vendor managed inventory program."),
AFI("AFI", "Immediate transportation no. for in bond movement", "A number that identifies immediate transportation for in bond movement."),
AFJ("AFJ", "Transportation exportation no. for in bond movement", "A number that identifies the transportation exportation number for an in bond movement."),
AFK("AFK", "Immediate exportation no. for in bond movement", "A number that identifies the immediate exportation number for an in bond movement."),
AFL("AFL", "Associated invoices", "A number that identifies associated invoices."),
AFM("AFM", "Secondary Customs reference", "A number that identifies the secondary customs reference."),
AFN("AFN", "Account party's reference", "Reference of the account party."),
AFO("AFO", "Beneficiary's reference", "Reference of the beneficiary."),
AFP("AFP", "Second beneficiary's reference", "Reference of the second beneficiary."),
AFQ("AFQ", "Applicant's bank reference", "Reference number of the applicant's bank."),
AFR("AFR", "Issuing bank's reference", "Reference number of the issuing bank."),
AFS("AFS", "Beneficiary's bank reference", "Reference number of the beneficiary's bank."),
AFT("AFT", "Direct payment valuation number", "Reference number assigned to a direct payment valuation."),
AFU("AFU", "Direct payment valuation request number", "Reference number assigned to a direct payment valuation request."),
AFV("AFV", "Quantity valuation number", "Reference number assigned to a quantity valuation."),
AFW("AFW", "Quantity valuation request number", "Reference number assigned to a quantity valuation request."),
AFX("AFX", "Bill of quantities number", "Reference number assigned to a bill of quantities."),
AFY("AFY", "Payment valuation number", "Reference number assigned to a payment valuation."),
AFZ("AFZ", "Situation number", "Common reference number given to documents concerning a determined period of works."),
AGA("AGA", "Agreement to pay number", "A number that identifies an agreement to pay."),
AGB("AGB", "Contract party reference number", "Reference number assigned to a party for a particular contract."),
AGC("AGC", "Account party's bank reference", "Reference number of the account party's bank."),
AGD("AGD", "Agent's bank reference", "Reference number issued by the agent's bank."),
AGE("AGE", "Agent's reference", "Reference number of the agent."),
AGF("AGF", "Applicant's reference", "Reference number of the applicant."),
AGG("AGG", "Dispute number", "Reference number to a dispute notice."),
AGH("AGH", "Credit rating agency's reference number", "Reference number assigned by a credit rating agency to a debtor."),
AGI("AGI", "Request number", "The reference number of a request."),
AGJ("AGJ", "Single transaction sequence number", "A number that identifies a single transaction sequence."),
AGK("AGK", "Application reference number", "A number that identifies an application reference."),
AGL("AGL", "Delivery verification certificate", "Formal identification of delivery verification certificate which is a formal document from Customs etc. confirming that physical goods have been delivered. It may be needed to support a tax reclaim based on an invoice."),
AGM("AGM", "Number of temporary importation document", "Number assigned by customs to identify consignment in transit."),
AGN("AGN", "Reference number quoted on statement", "Reference number quoted on the statement sent to the beneficiary for information purposes."),
AGO("AGO", "Sender's reference to the original message", "The reference provided by the sender of the original message."),
AGP("AGP", "Company issued equipment ID", "Owner/operator, non-government issued equipment reference number."),
AGQ("AGQ", "Domestic flight number", "Airline flight number assigned to a flight originating and terminating within the same country."),
AGR("AGR", "International flight number", "Airline flight number assigned to a flight originating and terminating across national borders."),
AGS("AGS", "Employer identification number of service bureau", "Reference number assigned by a service/processing bureau to an employer."),
AGT("AGT", "Service group identification number", "Identification used for a group of services."),
AGU("AGU", "Member number", "Reference number assigned to a person as a member of a group of persons or a service scheme."),
AGV("AGV", "Previous member number", "Reference number previously assigned to a member."),
AGW("AGW", "Scheme/plan number", "Reference number assigned to a service scheme or plan."),
AGX("AGX", "Previous scheme/plan number", "Reference number previously assigned to a service scheme or plan."),
AGY("AGY", "Receiving party's member identification", "Identification used by the receiving party for a member of a service scheme or group of persons."),
AGZ("AGZ", "Payroll number", "Reference number assigned to the payroll of an organisation."),
AHA("AHA", "Packaging specification number", "Reference number of documentation specifying the technical detail of packaging requirements."),
AHB("AHB", "Authority issued equipment identification", "Identification issued by an authority, e.g. government, airport authority."),
AHC("AHC", "Training flight number", "Non-revenue producing airline flight for training purposes."),
AHD("AHD", "Fund code number", "Reference number to identify appropriation and branch chargeable for item."),
AHE("AHE", "Signal code number", "Reference number to identify a signal."),
AHF("AHF", "Major force program number", "Reference number according to Major Force Program (US)."),
AHG("AHG", "Nomination number", "Reference number assigned by a shipper to a request/ commitment-to-ship on a pipeline system."),
AHH("AHH", "Laboratory registration number", "Reference number is the official registration number of the laboratory."),
AHI("AHI", "Transport contract reference number", "Reference number of a transport contract."),
AHJ("AHJ", "Payee's reference number", "Reference number of the party to be paid."),
AHK("AHK", "Payer's reference number", "Reference number of the party who pays."),
AHL("AHL", "Creditor's reference number", "Reference number of the party to whom a debt is owed."),
AHM("AHM", "Debtor's reference number", "Reference number of the party who owes an amount of money."),
AHN("AHN", "Joint venture reference number", "Reference number assigned to a joint venture agreement."),
AHO("AHO", "Chamber of Commerce registration number", "The registration number by which a company/organization is known to the Chamber of Commerce."),
AHP("AHP", "Tax registration number", "The registration number by which a company/organization is identified with the tax administration."),
AHQ("AHQ", "Wool identification number", "Shipping Identification Mark (SIM) allocated to a wool consignment by a shipping company."),
AHR("AHR", "Wool tax reference number", "Reference or indication of the payment of wool tax."),
AHS("AHS", "Meat processing establishment registration number", "Registration number allocated to a registered meat packing establishment by the local quarantine and inspection authority."),
AHT("AHT", "Quarantine/treatment status reference number", "Coded quarantine/treatment status of a container and its cargo and packing materials, generated by a shipping company based upon declarations presented by a shipper."),
AHU("AHU", "Request for quote number", "Reference number assigned by the requestor to a request for quote."),
AHV("AHV", "Manual processing authority number", "Number allocated to allow the manual processing of an entity."),
AHX("AHX", "Rate note number", "Reference assigned to a specific rate."),
AHY("AHY", "Freight Forwarder number", "An identification code of a Freight Forwarder."),
AHZ("AHZ", "Customs release code", "A code associated to a requirement that must be presented to gain the release of goods by Customs."),
AIA("AIA", "Compliance code number", "Number assigned to indicate regulatory compliance."),
AIB("AIB", "Department of transportation bond number", "Number of a bond assigned by the department of transportation."),
AIC("AIC", "Export establishment number", "Number to identify export establishment."),
AID("AID", "Certificate of conformity", "Certificate certifying the conformity to predefined definitions."),
AIE("AIE", "Ministerial certificate of homologation", "Certificate of approval for components which are subject to legal restrictions and must be approved by the government."),
AIF("AIF", "Previous delivery instruction number", "The identification of a previous delivery instruction."),
AIG("AIG", "Passport number", "Number assigned to a passport."),
AIH("AIH", "Common transaction reference number", "Reference number applicable to different underlying individual transactions."),
AII("AII", "Bank's common transaction reference number", "Bank's reference number allocated by the bank to different underlying individual transactions."),
AIJ("AIJ", "Customer's individual transaction reference number", "Customer's reference number allocated by the customer to one specific transaction."),
AIK("AIK", "Bank's individual transaction reference number", "Bank's reference number allocated by the bank to one specific transaction."),
AIL("AIL", "Customer's common transaction reference number", "Customer's reference number allocated by the customer to different underlying individual transactions."),
AIM("AIM", "Individual transaction reference number", "Reference number applying to one specific transaction."),
AIN("AIN", "Product sourcing agreement number", "Reference number assigned to a product sourcing agreement."),
AIO("AIO", "Customs transhipment number", "Approval number issued by Customs for cargo to be transhipped under Customs control."),
AIP("AIP", "Customs preference inquiry number", "The number assigned by Customs to a preference inquiry."),
AIQ("AIQ", "Packing plant number", "Number to identify packing establishment."),
AIR("AIR", "Original certificate number", "Number giving reference to an original certificate number."),
AIS("AIS", "Processing plant number", "Number to identify processing plant."),
AIT("AIT", "Slaughter plant number", "Number to identify slaughter plant."),
AIU("AIU", "Charge card account number", "Number to identify charge card account."),
AIV("AIV", "Event reference number", "[1007] Reference number identifying an event."),
AIW("AIW", "Transport section reference number", "A number identifying a transport section."),
AIX("AIX", "Referred product for mechanical analysis", "A product number identifying the product which is used for mechanical analysis considered valid for a group of products."),
AIY("AIY", "Referred product for chemical analysis", "A product number identifying the product which is used for chemical analysis considered valid for a group of products."),
AIZ("AIZ", "Consolidated invoice number", "Invoice number into which other invoices are consolidated."),
AJA("AJA", "Part reference indicator in a drawing", "To designate the number which provides a cross reference between parts contained in a drawing and a parts catalogue."),
AJB("AJB", "U.S. Code of Federal Regulations (CFR)", "A reference indicating a citation from the U.S. Code of Federal Regulations (CFR)."),
AJC("AJC", "Purchasing activity clause number", "A number indicating a clause applicable to a purchasing activity."),
AJD("AJD", "U.S. Defense Federal Acquisition Regulation Supplement", "A reference indicating a citation from the U.S. Defense Federal Acquisition Regulation Supplement."),
AJE("AJE", "Agency clause number", "A number indicating a clause applicable to a particular agency."),
AJF("AJF", "Circular publication number", "A number specifying a circular publication."),
AJG("AJG", "U.S. Federal Acquisition Regulation", "A reference indicating a citation from the U.S. Federal Acquisition Regulation."),
AJH("AJH", "U.S. General Services Administration Regulation", "A reference indicating a citation from U.S. General Services Administration Regulation."),
AJI("AJI", "U.S. Federal Information Resources Management Regulation", "A reference indicating a citation from U.S. Federal Information Resources Management Regulation."),
AJJ("AJJ", "Paragraph", "A reference indicating a paragraph cited as the source of information."),
AJK("AJK", "Special instructions number", "A number indicating a citation used for special instructions."),
AJL("AJL", "Site specific procedures, terms, and conditions number", "A number indicating a set of site specific procedures, terms and conditions."),
AJM("AJM", "Master solicitation procedures, terms, and conditions", "number A number indicating a master solicitation containing procedures, terms and conditions."),
AJN("AJN", "U.S. Department of Veterans Affairs Acquisition Regulation", "A reference indicating a citation from the U.S. Department of Veterans Affairs Acquisition Regulation."),
AJO("AJO", "Military Interdepartmental Purchase Request (MIPR) number", "A number indicating an interdepartmental purchase request used by the military."),
AJP("AJP", "Foreign military sales number", "A number specifying a sale to a foreign military."),
AJQ("AJQ", "Defense priorities allocation system priority rating", "A reference indicating a priority rating assigned to allocate resources for defense purchases."),
AJR("AJR", "Wage determination number", "A number specifying a wage determination."),
AJS("AJS", "Agreement number", "A number specifying an agreement between parties."),
AJT("AJT", "Standard Industry Classification (SIC) number", "A number specifying a standard industry classification."),
AJU("AJU", "End item number", "A number specifying the end item applicable to a subordinate item."),
AJV("AJV", "Federal supply schedule item number", "A number specifying an item listed in a federal supply schedule."),
AJW("AJW", "Technical document number", "A number specifying a technical document."),
AJX("AJX", "Technical order number", "A reference to an order that specifies a technical change."),
AJY("AJY", "Suffix", "A reference to specify a suffix added to the end of a basic identifier."),
AJZ("AJZ", "Transportation account number", "An account number to be charged or credited for transportation."),
AKA("AKA", "Container disposition order reference number", "Reference assigned to the empty container disposition order."),
AKB("AKB", "Container prefix", "The first part of the unique identification of a container formed by an alpha code identifying the owner of the container."),
AKC("AKC", "Transport equipment return reference", "Reference known at the address to return equipment to."),
AKD("AKD", "Transport equipment survey reference", "Reference number assigned by the ordering party to the transport equipment survey order."),
AKE("AKE", "Transport equipment survey report number", "Reference number used by a party to identify its transport equipment survey report."),
AKF("AKF", "Transport equipment stuffing order", "Reference number assigned to the order to stuff goods in transport equipment."),
AKG("AKG", "Vehicle Identification Number (VIN)", "The identification number which uniquely distinguishes one vehicle from another through the lifespan of the vehicle."),
AKH("AKH", "Government bill of lading", "Bill of lading as defined by the government."),
AKI("AKI", "Ordering customer's second reference number", "Ordering customer's second reference number."),
AKJ("AKJ", "Direct debit reference", "Reference number assigned to the direct debit operation."),
AKK("AKK", "Meter reading at the beginning of the delivery", "Meter reading at the beginning of the delivery."),
AKL("AKL", "Meter reading at the end of delivery", "Meter reading at the end of the delivery."),
AKM("AKM", "Replenishment purchase order range start number", "Starting number of a range of purchase order numbers assigned by the buyer to vendor's replenishment orders."),
AKN("AKN", "Third bank's reference", "Reference number of the third bank."),
AKO("AKO", "Action authorization number", "A reference number authorizing an action."),
AKP("AKP", "Appropriation number", "The number identifying a type of funding for a specific purpose (appropriation)."),
AKQ("AKQ", "Product change authority number", "Number which authorises a change in form, fit or function of a product."),
AKR("AKR", "General cargo consignment reference number", "Reference number identifying a particular general cargo (non-containerised or break bulk) consignment."),
AKS("AKS", "Catalogue sequence number", "A number which uniquely identifies an item within a catalogue according to a standard numbering system."),
AKT("AKT", "Forwarding order number", "Reference number assigned to the forwarding order by the ordering customer."),
AKU("AKU", "Transport equipment survey reference number", "Reference number known at the address where the transport equipment will be or has been surveyed."),
AKV("AKV", "Lease contract reference", "Reference number of the lease contract."),
AKW("AKW", "Transport costs reference number", "Reference number of the transport costs."),
AKX("AKX", "Transport equipment stripping order", "Reference number assigned to the order to strip goods from transport equipment."),
AKY("AKY", "Prior policy number", "The number of the prior policy."),
AKZ("AKZ", "Policy number", "Number assigned to a policy."),
ALA("ALA", "Procurement budget number", "A number which uniquely identifies a procurement budget against which commitments or invoices can be allocated."),
ALB("ALB", "Domestic inventory management code", "Code to identify the management of domestic inventory."),
ALC("ALC", "Customer reference number assigned to previous balance of", "payment information Identification number of the previous balance of payments information from customer message."),
ALD("ALD", "Previous credit advice reference number", "Reference number of the previous 'Credit advice' message."),
ALE("ALE", "Reporting form number", "Reference number assigned to the reporting form."),
ALF("ALF", "Authorization number for exception to dangerous goods", "regulations Reference number allocated by an authority. This number contains an approval concerning exceptions on the existing dangerous goods regulations."),
ALG("ALG", "Dangerous goods security number", "Reference number allocated by an authority in order to control the dangerous goods on board of a specific means of transport for dangerous goods security purposes."),
ALH("ALH", "Dangerous goods transport licence number", "Licence number allocated by an authority as to the permission of carrying dangerous goods by a specific means of transport."),
ALI("ALI", "Previous rental agreement number", "Number to identify the previous rental agreement number."),
ALJ("ALJ", "Next rental agreement reason number", "Number to identify the reason for the next rental agreement."),
ALK("ALK", "Consignee's invoice number", "The invoice number assigned by a consignee."),
ALL("ALL", "Message batch number", "A number identifying a batch of messages."),
ALM("ALM", "Previous delivery schedule number", "A reference number identifying a previous delivery schedule."),
ALN("ALN", "Physical inventory recount reference number", "A reference to a re-count of physically held inventory."),
ALO("ALO", "Receiving advice number", "A reference number to a receiving advice."),
ALP("ALP", "Returnable container reference number", "A reference number identifying a returnable container."),
ALQ("ALQ", "Returns notice number", "A reference number to a returns notice."),
ALR("ALR", "Sales forecast number", "A reference number identifying a sales forecast."),
ALS("ALS", "Sales report number", "A reference number identifying a sales report."),
ALT("ALT", "Previous tax control number", "A reference number identifying a previous tax control number."),
ALU("ALU", "AGERD (Aerospace Ground Equipment Requirement Data) number", "Identifies the equipment required to conduct maintenance."),
ALV("ALV", "Registered capital reference", "Registered capital reference of a company."),
ALW("ALW", "Standard number of inspection document", "Code identifying the standard number of the inspection document supplied."),
ALX("ALX", "Model", "(7242) A reference used to identify a model."),
ALY("ALY", "Financial management reference", "A financial management reference."),
ALZ("ALZ", "NOTIfication for COLlection number (NOTICOL)", "A reference assigned by a consignor to a notification document which indicates the availability of goods for collection."),
AMA("AMA", "Previous request for metered reading reference number", "Number to identify a previous request for a recording or reading of a measuring device."),
AMB("AMB", "Next rental agreement number", "Number to identify the next rental agreement."),
AMC("AMC", "Reference number of a request for metered reading", "Number to identify a request for a recording or reading of a measuring device to be taken."),
AMD("AMD", "Hastening number", "A number which uniquely identifies a request to hasten an action."),
AME("AME", "Repair data request number", "A number which uniquely identifies a request for data about repairs."),
AMF("AMF", "Consumption data request number", "A number which identifies a request for consumption data."),
AMG("AMG", "Profile number", "Reference number allocated to a discrete set of criteria."),
AMH("AMH", "Case number", "Number assigned to a case."),
AMI("AMI", "Government quality assurance and control level Number", "A number which identifies the level of quality assurance and control required by the government for an article."),
AMJ("AMJ", "Payment plan reference", "A number which uniquely identifies a payment plan."),
AMK("AMK", "Replaced meter unit number", "Number identifying the replaced meter unit."),
AML("AML", "Replenishment purchase order range end number", "Ending number of a range of purchase order numbers assigned by the buyer to vendor's replenishment orders."),
AMM("AMM", "Insurer assigned reference number", "A unique reference number assigned by the insurer."),
AMN("AMN", "Canadian excise entry number", "An excise entry number assigned by the Canadian Customs."),
AMO("AMO", "Premium rate table", "Identifies the premium rate table."),
AMP("AMP", "Advise through bank's reference", "Financial institution through which the advising bank is to advise the documentary credit."),
AMQ("AMQ", "US, Department of Transportation bond surety code", "A bond surety code assigned by the United States Department of Transportation (DOT)."),
AMR("AMR", "US, Food and Drug Administration establishment indicator", "An establishment indicator assigned by the United States Food and Drug Administration."),
AMS("AMS", "US, Federal Communications Commission (FCC) import", "condition number A number known as the United States Federal Communications Commission (FCC) import condition number applying to certain types of regulated communications equipment."),
AMT("AMT", "Goods and Services Tax identification number", "Identifier assigned to an entity by a tax authority for Goods and Services Tax (GST) related purposes."),
AMU("AMU", "Integrated logistic support cross reference number", "Provides the identification of the reference which allows cross referencing of items between different areas of integrated logistics support."),
AMV("AMV", "Department number", "Number assigned to a department within an organization."),
AMW("AMW", "Buyer's catalogue number", "Identification of a catalogue maintained by a buyer."),
AMX("AMX", "Financial settlement party's reference number", "Reference number of the party who is responsible for the financial settlement."),
AMY("AMY", "Standard's version number", "The version number assigned to a standard."),
AMZ("AMZ", "Pipeline number", "Number to identify a pipeline."),
ANA("ANA", "Account servicing bank's reference number", "Reference number of the account servicing bank."),
ANB("ANB", "Completed units payment request reference", "A reference to a payment request for completed units."),
ANC("ANC", "Payment in advance request reference", "A reference to a request for payment in advance."),
AND("AND", "Parent file", "Identifies the parent file in a structure of related files."),
ANE("ANE", "Sub file", "Identifies the sub file in a structure of related files."),
ANF("ANF", "CAD file layer convention", "Reference number identifying a layer convention for a file in a Computer Aided Design (CAD) environment."),
ANG("ANG", "Technical regulation", "Reference number identifying a technical regulation."),
ANH("ANH", "Plot file", "Reference number indicating that the file is a plot file."),
ANI("ANI", "File conversion journal", "Reference number identifying a journal recording details about conversion operations between file formats."),
ANJ("ANJ", "Authorization number", "A number which uniquely identifies an authorization."),
ANK("ANK", "Reference number assigned by third party", "Reference number assigned by a third party."),
ANL("ANL", "Deposit reference number", "A reference number identifying a deposit."),
ANM("ANM", "Named bank's reference", "Reference number of the named bank."),
ANN("ANN", "Drawee's reference", "Reference number of the drawee."),
ANO("ANO", "Case of need party's reference", "Reference number of the case of need party."),
ANP("ANP", "Collecting bank's reference", "Reference number of the collecting bank."),
ANQ("ANQ", "Remitting bank's reference", "Reference number of the remitting bank."),
ANR("ANR", "Principal's bank reference", "Reference number of the principal's bank."),
ANS("ANS", "Presenting bank's reference", "Reference number of the presenting bank."),
ANT("ANT", "Consignee's reference", "Reference number of the consignee."),
ANU("ANU", "Financial transaction reference number", "Reference number of the financial transaction."),
ANV("ANV", "Credit reference number", "The reference number of a credit instruction."),
ANW("ANW", "Receiving bank's authorization number", "Authorization number of the receiving bank."),
ANX("ANX", "Clearing reference", "Reference allocated by a clearing procedure."),
ANY("ANY", "Sending bank's reference number", "Reference number of the sending bank."),
AOA("AOA", "Documentary payment reference", "Reference of the documentary payment."),
AOD("AOD", "Accounting file reference", "Reference of an accounting file."),
AOE("AOE", "Sender's file reference number", "File reference number assigned by the sender."),
AOF("AOF", "Receiver's file reference number", "File reference number assigned by the receiver."),
AOG("AOG", "Source document internal reference", "Reference number assigned to a source document for internal usage."),
AOH("AOH", "Principal's reference", "Reference number of the principal."),
AOI("AOI", "Debit reference number", "The reference number of a debit instruction."),
AOJ("AOJ", "Calendar", "A calendar reference number."),
AOK("AOK", "Work shift", "A work shift reference number."),
AOL("AOL", "Work breakdown structure", "A structure reference that identifies the breakdown of work for a project."),
AOM("AOM", "Organisation breakdown structure", "A structure reference that identifies the breakdown of an organisation."),
AON("AON", "Work task charge number", "A reference assigned to a specific work task charge."),
AOO("AOO", "Functional work group", "A reference to identify a functional group performing work."),
AOP("AOP", "Work team", "A reference to identify a team performing work."),
AOQ("AOQ", "Department", "Section of an organisation."),
AOR("AOR", "Statement of work", "A reference number for a statement of work."),
AOS("AOS", "Work package", "A reference for a detailed package of work."),
AOT("AOT", "Planning package", "A reference for a planning package of work."),
AOU("AOU", "Cost account", "A cost control account reference."),
AOV("AOV", "Work order", "Reference number for an order to do work."),
AOW("AOW", "Transportation Control Number (TCN)", "A number assigned for transportation purposes."),
AOX("AOX", "Constraint notation", "Identifies a reference to a constraint notation."),
AOY("AOY", "ETERMS reference", "Identifies a reference to the ICC (International Chamber of Commerce) ETERMS(tm) repository of electronic commerce trading terms and conditions."),
AOZ("AOZ", "Implementation version number", "Identifies a version number of an implementation."),
AP("AP", "Accounts receivable number", "Reference number assigned by accounts receivable department to the account of a specific debtor."),
APA("APA", "Incorporated legal reference", "Identifies a legal reference which is deemed incorporated by reference."),
APB("APB", "Payment instalment reference number", "A reference number given to a payment instalment to identify a specific instance of payment of a debt which can be paid at specified intervals."),
APC("APC", "Equipment owner reference number", "Reference number issued by the owner of the equipment."),
APD("APD", "Cedent's claim number", "To identify the number assigned to the claim by the ceding company."),
APE("APE", "Reinsurer's claim number", "To identify the number assigned to the claim by the reinsurer."),
APF("APF", "Price/sales catalogue response reference number", "A reference number identifying a response to a price/sales catalogue."),
APG("APG", "General purpose message reference number", "A reference number identifying a general purpose message."),
APH("APH", "Invoicing data sheet reference number", "A reference number identifying an invoicing data sheet."),
API("API", "Inventory report reference number", "A reference number identifying an inventory report."),
APJ("APJ", "Ceiling formula reference number", "The reference number which identifies a formula for determining a ceiling."),
APK("APK", "Price variation formula reference number", "The reference number which identifies a price variation formula."),
APL("APL", "Reference to account servicing bank's message", "Reference to the account servicing bank's message."),
APM("APM", "Party sequence number", "Reference identifying a party sequence number."),
APN("APN", "Purchaser's request reference", "Reference identifying a request made by the purchaser."),
APO("APO", "Contractor request reference", "Reference identifying a request made by a contractor."),
APP("APP", "Accident reference number", "Reference number assigned to an accident."),
APQ("APQ", "Commercial account summary reference number", "A reference number identifying a commercial account summary."),
APR("APR", "Contract breakdown reference", "A reference which identifies a specific breakdown of a contract."),
APS("APS", "Contractor registration number", "A reference number used to identify a contractor."),
APT("APT", "Applicable coefficient identification number", "The identification number of the coefficient which is applicable."),
APU("APU", "Special budget account number", "The number of a special budget account."),
APV("APV", "Authorisation for repair reference", "Reference of the authorisation for repair."),
APW("APW", "Manufacturer defined repair rates reference", "Reference assigned by a manufacturer to their repair rates."),
APX("APX", "Original submitter log number", "A control number assigned by the original submitter."),
APY("APY", "Original submitter, parent Data Maintenance Request (DMR)", "log number A Data Maintenance Request (DMR) original submitter's reference log number for the parent DMR."),
APZ("APZ", "Original submitter, child Data Maintenance Request (DMR)", "log number A Data Maintenance Request (DMR) original submitter's reference log number for a child DMR."),
AQA("AQA", "Entry point assessment log number", "The reference log number assigned by an entry point assessment group for the DMR."),
AQB("AQB", "Entry point assessment log number, parent DMR", "The reference log number assigned by an entry point assessment group for the parent Data Maintenance Request (DMR)."),
AQC("AQC", "Entry point assessment log number, child DMR", "The reference log number assigned by an entry point assessment group for a child Data Maintenance Request (DMR)."),
AQD("AQD", "Data structure tag", "The tag assigned to a data structure."),
AQE("AQE", "Central secretariat log number", "The reference log number assigned by the central secretariat for the Data Maintenance Request (DMR)."),
AQF("AQF", "Central secretariat log number, parent Data Maintenance", "Request (DMR) The reference log number assigned by the central secretariat for the parent Data Maintenance Request (DMR)."),
AQG("AQG", "Central secretariat log number, child Data Maintenance", "Request (DMR) The reference log number assigned by the central secretariat for the child Data Maintenance Request (DMR)."),
AQH("AQH", "International assessment log number", "The reference log number assigned to a Data Maintenance Request (DMR) changed in international assessment."),
AQI("AQI", "International assessment log number, parent Data", "Maintenance Request (DMR) The reference log number assigned to a Data Maintenance Request (DMR) changed in international assessment that is a parent to the current DMR."),
AQJ("AQJ", "International assessment log number, child Data Maintenance", "Request (DMR) The reference log number assigned to a Data Maintenance Request (DMR) changed in international assessment that is a child to the current DMR."),
AQK("AQK", "Status report number", "(1125) The reference number for a status report."),
AQL("AQL", "Message design group number", "Reference number for a message design group."),
AQM("AQM", "US Customs Service (USCS) entry code", "An entry number assigned by the United States (US) customs service."),
AQN("AQN", "Beginning job sequence number", "The number designating the beginning of the job sequence."),
AQO("AQO", "Sender's clause number", "The number that identifies the sender's clause."),
AQP("AQP", "Dun and Bradstreet Canada's 8 digit Standard Industrial", "Classification (SIC) code Dun and Bradstreet Canada's 8 digit Standard Industrial Classification (SIC) code identifying activities of the company."),
AQQ("AQQ", "Activite Principale Exercee (APE) identifier", "The French industry code for the main activity of a company."),
AQR("AQR", "Dun and Bradstreet US 8 digit Standard Industrial", "Classification (SIC) code Dun and Bradstreet United States' 8 digit Standard Industrial Classification (SIC) code identifying activities of the company."),
AQS("AQS", "Nomenclature Activity Classification Economy (NACE)", "identifier A European industry classification code used to identify the activity of a company."),
AQT("AQT", "Norme Activite Francaise (NAF) identifier", "A French industry classification code assigned by the French government to identify the activity of a company."),
AQU("AQU", "Registered contractor activity type", "Reference number identifying the type of registered contractor activity."),
AQV("AQV", "Statistic Bundes Amt (SBA) identifier", "A German industry classification code issued by Statistic Bundes Amt (SBA) to identify the activity of a company."),
AQW("AQW", "State or province assigned entity identification", "Reference number of an entity assigned by a state or province."),
AQX("AQX", "Institute of Security and Future Market Development (ISFMD)", "serial number A number used to identify a public but not publicly traded company."),
AQY("AQY", "File identification number", "A number assigned to identify a file."),
AQZ("AQZ", "Bankruptcy procedure number", "A number identifying a bankruptcy procedure."),
ARA("ARA", "National government business identification number", "A business identification number which is assigned by a national government."),
ARB("ARB", "Prior Data Universal Number System (DUNS) number", "A previously assigned Data Universal Number System (DUNS) number."),
ARC("ARC", "Companies Registry Office (CRO) number", "Identifies the reference number assigned by the Companies Registry Office (CRO)."),
ARD("ARD", "Costa Rican judicial number", "A number assigned by the government to a business in Costa Rica."),
ARE("ARE", "Numero de Identificacion Tributaria (NIT)", "A number assigned by the government to a business in some Latin American countries."),
ARF("ARF", "Patron number", "A number assigned by the government to a business in some Latin American countries. Note that 'Patron' is a Spanish word, it is not a person who gives financial or other support."),
ARG("ARG", "Registro Informacion Fiscal (RIF) number", "A number assigned by the government to a business in some Latin American countries."),
ARH("ARH", "Registro Unico de Contribuyente (RUC) number", "A number assigned by the government to a business in some Latin American countries."),
ARI("ARI", "Tokyo SHOKO Research (TSR) business identifier", "A number assigned to a business by TSR."),
ARJ("ARJ", "Personal identity card number", "An identity card number assigned to a person."),
ARK("ARK", "Systeme Informatique pour le Repertoire des ENtreprises", "(SIREN) number An identification number known as a SIREN assigned to a business in France."),
ARL("ARL", "Systeme Informatique pour le Repertoire des ETablissements", "(SIRET) number An identification number known as a SIRET assigned to a business location in France."),
ARM("ARM", "Publication issue number", "A number assigned to identify a publication issue."),
ARN("ARN", "Original filing number", "A number assigned to the original filing."),
ARO("ARO", "Document page identifier", "[1212] To identify a page number."),
ARP("ARP", "Public filing registration number", "A number assigned at the time of registration of a public filing."),
ARQ("ARQ", "Regiristo Federal de Contribuyentes", "A federal tax identification number assigned by the Mexican tax authority."),
ARR("ARR", "Social security number", "An identification number assigned to an individual by the social security administration."),
ARS("ARS", "Document volume number", "The number of a document volume."),
ART("ART", "Book number", "A number assigned to identify a book."),
ARU("ARU", "Stock exchange company identifier", "A reference assigned by the stock exchange to a company."),
ARV("ARV", "Imputation account", "An account to which an amount is to be posted."),
ARW("ARW", "Financial phase reference", "A reference which identifies a specific financial phase."),
ARX("ARX", "Technical phase reference", "A reference which identifies a specific technical phase."),
ARY("ARY", "Prior contractor registration number", "A previous reference number used to identify a contractor."),
ARZ("ARZ", "Stock adjustment number", "A number identifying a stock adjustment."),
ASA("ASA", "Dispensation reference", "A reference number assigned to an official exemption from a law or obligation."),
ASB("ASB", "Investment reference number", "A reference to a specific investment."),
ASC("ASC", "Assuming company", "A number that identifies an assuming company."),
ASD("ASD", "Budget chapter", "A reference to the chapter in a budget."),
ASE("ASE", "Duty free products security number", "A security number allocated for duty free products."),
ASF("ASF", "Duty free products receipt authorisation number", "Authorisation number allocated for the receipt of duty free products."),
ASG("ASG", "Party information message reference", "Reference identifying a party information message."),
ASH("ASH", "Formal statement reference", "A reference to a formal statement."),
ASI("ASI", "Proof of delivery reference number", "A reference number identifying a proof of delivery which is generated by the goods recipient."),
ASJ("ASJ", "Supplier's credit claim reference number", "A reference number identifying a supplier's credit claim."),
ASK("ASK", "Picture of actual product", "Reference identifying the picture of an actual product."),
ASL("ASL", "Picture of a generic product", "Reference identifying a picture of a generic product."),
ASM("ASM", "Trading partner identification number", "Code specifying an identification assigned to an entity with whom one conducts trade."),
ASN("ASN", "Prior trading partner identification number", "Code specifying an identification number previously assigned to a trading partner."),
ASO("ASO", "Password", "Code used for authentication purposes."),
ASP("ASP", "Formal report number", "A number uniquely identifying a formal report."),
ASQ("ASQ", "Fund account number", "Account number of fund."),
ASR("ASR", "Safe custody number", "The number of a file or portfolio kept for safe custody on behalf of clients."),
ASS("ASS", "Master account number", "A reference number identifying a master account."),
AST("AST", "Group reference number", "The reference number identifying a group."),
ASU("ASU", "Accounting transmission number", "A number used to identify the transmission of an accounting book entry."),
ASV("ASV", "Product data file number", "The number of a product data file."),
ASW("ASW", "Cadastro Geral do Contribuinte (CGC)", "Brazilian taxpayer number."),
ASX("ASX", "Foreign resident identification number", "Number assigned by a government agency to identify a foreign resident."),
ASY("ASY", "CD-ROM", "Identity number of the Compact Disk Read Only Memory (CD-ROM)."),
ASZ("ASZ", "Physical medium", "Identifies the physical medium."),
ATA("ATA", "Financial cancellation reference number", "Reference number of a financial cancellation."),
ATB("ATB", "Purchase for export Customs agreement number", "A number assigned by a Customs authority allowing the purchase of goods free of tax because they are to be exported immediately after the purchase."),
ATC("ATC", "Judgment number", "A reference number identifying the legal decision."),
ATD("ATD", "Secretariat number", "A reference number identifying a secretariat."),
ATE("ATE", "Previous banking status message reference", "Message reference number of the previous banking status message being responded to."),
ATF("ATF", "Last received banking status message reference", "Reference number of the latest received banking status message."),
ATG("ATG", "Bank's documentary procedure reference", "Reference allocated by the bank to a documentary procedure."),
ATH("ATH", "Customer's documentary procedure reference", "Reference allocated by a customer to a documentary procedure."),
ATI("ATI", "Safe deposit box number", "Number of the safe deposit box."),
ATJ("ATJ", "Receiving Bankgiro number", "Number of the receiving Bankgiro."),
ATK("ATK", "Sending Bankgiro number", "Number of the sending Bankgiro."),
ATL("ATL", "Bankgiro reference", "Reference of the Bankgiro."),
ATM("ATM", "Guarantee number", "Number of a guarantee."),
ATN("ATN", "Collection instrument number", "To identify the number of an instrument used to remit funds to a beneficiary."),
ATO("ATO", "Converted Postgiro number", "To identify the reference number of a giro payment having been converted to a Postgiro account."),
ATP("ATP", "Cost centre alignment number", "Number used in the financial management process to align cost allocations."),
ATQ("ATQ", "Kamer Van Koophandel (KVK) number", "An identification number assigned by the Dutch Chamber of Commerce to a business in the Netherlands."),
ATR("ATR", "Institut Belgo-Luxembourgeois de Codification (IBLC) number", "An identification number assigned by the Luxembourg National Bank to a business in Luxembourg."),
ATS("ATS", "External object reference", "A reference identifying an external object."),
ATT("ATT", "Exceptional transport authorisation number", "Authorisation number for exceptional transport (using specific equipment, out of gauge, materials and/or specific routing)."),
ATU("ATU", "Clave Unica de Identificacion Tributaria (CUIT)", "Tax identification number in Argentina."),
ATV("ATV", "Registro Unico Tributario (RUT)", "Tax identification number in Chile."),
ATW("ATW", "Flat rack container bundle identification number", "Reference number assigned to a bundle of flat rack containers."),
ATX("ATX", "Transport equipment acceptance order reference", "Reference number assigned to an order to accept transport equipment that is to be delivered by an inland carrier to a specified facility."),
ATY("ATY", "Transport equipment release order reference", "Reference number assigned to an order to release transport equipment which is to be picked up by an inland carrier from a specified facility."),
ATZ("ATZ", "Ship's stay reference number", "(1099) Reference number assigned by a port authority to the stay of a vessel in the port."),
AU("AU", "Authorization to meet competition number", "A number assigned by a requestor to an offer incoming following request for quote."),
AUA("AUA", "Place of positioning reference", "Identifies the reference pertaining to the place of positioning."),
AUB("AUB", "Party reference", "The reference to a party."),
AUC("AUC", "Issued prescription identification", "The identification of the issued prescription."),
AUD("AUD", "Collection reference", "A reference identifying a collection."),
AUE("AUE", "Travel service", "Reference identifying a travel service."),
AUF("AUF", "Consignment stock contract", "Reference identifying a consignment stock contract."),
AUG("AUG", "Importer's letter of credit reference", "Letter of credit reference issued by importer."),
AUH("AUH", "Performed prescription identification", "The identification of the prescription that has been carried into effect."),
AUI("AUI", "Image reference", "A reference number identifying an image."),
AUJ("AUJ", "Proposed purchase order reference number", "A reference number assigned to a proposed purchase order."),
AUK("AUK", "Application for financial support reference number", "Reference number assigned to an application for financial support."),
AUL("AUL", "Manufacturing quality agreement number", "Reference number of a manufacturing quality agreement."),
AUM("AUM", "Software editor reference", "Reference identifying the software editor."),
AUN("AUN", "Software reference", "Reference identifying the software."),
AUO("AUO", "Software quality reference", "Reference allocated to the software by a quality assurance agency."),
AUP("AUP", "Consolidated orders' reference", "A reference number to identify orders which have been, or shall be consolidated."),
AUQ("AUQ", "Customs binding ruling number", "Binding ruling number issued by customs."),
AUR("AUR", "Customs non-binding ruling number", "Non-binding ruling number issued by customs."),
AUS("AUS", "Delivery route reference", "A reference to the route of the delivery."),
AUT("AUT", "Net area supplier reference", "A reference identifying a supplier within a net area."),
AUU("AUU", "Time series reference", "Reference to a time series."),
AUV("AUV", "Connecting point to central grid", "Reference to a connecting point to a central grid."),
AUW("AUW", "Marketing plan identification number (MPIN)", "Number identifying a marketing plan."),
AUX("AUX", "Entity reference number, previous", "The previous reference number assigned to an entity."),
AUY("AUY", "International Standard Industrial Classification (ISIC)", "code A code specifying an international standard industrial classification."),
AUZ("AUZ", "Customs pre-approval ruling number", "Pre-approval ruling number issued by Customs."),
AV("AV", "Account payable number", "Reference number assigned by accounts payable department to the account of a specific creditor."),
AVA("AVA", "First financial institution's transaction reference", "Identifies the reference given to the individual transaction by the financial institution that is the transaction's point of entry into the interbank transaction chain."),
AVB("AVB", "Product characteristics directory", "A reference to a product characteristics directory."),
AVC("AVC", "Supplier's customer reference number", "A number, assigned by a supplier, to reference a customer."),
AVD("AVD", "Inventory report request number", "Reference number assigned to a request for an inventory report."),
AVE("AVE", "Metering point", "Reference to a metering point."),
AVF("AVF", "Passenger reservation number", "Number assigned by the travel supplier to identify the passenger reservation."),
AVG("AVG", "Slaughterhouse approval number", "Veterinary licence number allocated by a national authority to a slaughterhouse."),
AVH("AVH", "Meat cutting plant approval number", "Veterinary licence number allocated by a national authority to a meat cutting plant."),
AVI("AVI", "Customer travel service identifier", "A reference identifying a travel service to a customer."),
AVJ("AVJ", "Export control classification number", "Number identifying the classification of goods covered by an export licence."),
AVK("AVK", "Broker reference 3", "Third reference of a broker."),
AVL("AVL", "Consignment information", "Code identifying that the reference number given applies to the consignment information segment group in the referred message ."),
AVM("AVM", "Goods item information", "Code identifying that the reference number given applies to the goods item information segment group in the referred message."),
AVN("AVN", "Dangerous Goods information", "Code identifying that the reference number given applies to the dangerous goods information segment group in the referred message."),
AVO("AVO", "Pilotage services exemption number", "Number identifying the permit to not use pilotage services."),
AVP("AVP", "Person registration number", "A number assigned to an individual."),
AVQ("AVQ", "Place of packing approval number", "Approval Number of the place where goods are packaged."),
AVR("AVR", "Original Mandate Reference", "Reference to a specific related original mandate given by the relevant party for underlying business or action in case of reference or mandate change."),
AVS("AVS", "Mandate Reference", "Reference to a specific mandate given by the relevant party for underlying business or action."),
AVT("AVT", "Reservation station indentifier", "Reference to the station where a reservation was made."),
AVU("AVU", "Unique goods shipment identifier", "Unique identifier assigned to a shipment of goods linking trade, tracking and transport information."),
AVV("AVV", "Framework Agreement Number", "A reference to an agreement between one or more contracting authorities and one or more economic operators, the purpose of which is to establish the terms governing contracts to be awarded during a given period, in particular with regard to price and, where appropriate, the quantity envisaged."),
AVW("AVW", "Hash value", "Contains the hash value of a related document."),
AVX("AVX", "Movement reference number", "Number assigned by customs referencing receipt of an Entry Summary Declaration."),
AVY("AVY", "Economic Operators Registration and Identification Number", "(EORI) Number assigned by an authority to an economic operator."),
AVZ("AVZ", "Local Reference Number", "Number assigned by a national customs authority to an Entry Summary Declaration."),
AWA("AWA", "Rate code number", "Number assigned by a buyer to rate a product."),
AWB("AWB", "Air waybill number", "Reference number assigned to an air waybill, see: 1001 = 740."),
AWC("AWC", "Documentary credit amendment number", "Number of the amendment of the documentary credit."),
AWD("AWD", "Advising bank's reference", "Reference number of the advising bank."),
AWE("AWE", "Cost centre", "A number identifying a cost centre."),
AWF("AWF", "Work item quantity determination", "A reference assigned to a work item quantity determination."),
AWG("AWG", "Internal data process number", "A number identifying an internal data process."),
AWH("AWH", "Category of work reference", "A reference identifying a category of work."),
AWI("AWI", "Policy form number", "Number assigned to a policy form."),
AWJ("AWJ", "Net area", "Reference to an area of a net."),
AWK("AWK", "Service provider", "Reference of the service provider."),
AWL("AWL", "Error position", "Reference to the position of an error in a message."),
AWM("AWM", "Service category reference", "Reference identifying the service category."),
AWN("AWN", "Connected location", "Reference of a connected location."),
AWO("AWO", "Related party", "Reference of a related party."),
AWP("AWP", "Latest accounting entry record reference", "Code identifying the reference of the latest accounting entry record."),
AWQ("AWQ", "Accounting entry", "Accounting entry to which this item is related."),
AWR("AWR", "Document reference, original", "The original reference of a document."),
AWS("AWS", "Hygienic Certificate number, national", "Nationally set Hygienic Certificate number, such as sanitary, epidemiologic."),
AWT("AWT", "Administrative Reference Code", "Reference number assigned by Customs to a <20>shipment of excise goods<64>."),
AWU("AWU", "Pick-up sheet number", "Reference number assigned to a pick-up sheet."),
AWV("AWV", "Phone number", "A sequence of digits used to call from one telephone line to another in a public telephone network."),
AWW("AWW", "Buyer's fund number", "A reference number indicating the fund number used by the buyer."),
AWX("AWX", "Company trading account number", "A reference number identifying a company trading account."),
AWY("AWY", "Reserved goods identifier", "A reference number identifying goods in stock which have been reserved for a party."),
AWZ("AWZ", "Handling and movement reference number", "A reference number identifying a previously transmitted cargo/goods handling and movement message."),
AXA("AXA", "Instruction to despatch reference number", "A reference number identifying a previously transmitted instruction to despatch message."),
AXB("AXB", "Instruction for returns number", "A reference number identifying a previously communicated instruction for return message."),
AXC("AXC", "Metered services consumption report number", "A reference number identifying a previously communicated metered services consumption report."),
AXD("AXD", "Order status enquiry number", "A reference number to a previously sent order status enquiry."),
AXE("AXE", "Firm booking reference number", "A reference number identifying a previous firm booking."),
AXF("AXF", "Product inquiry number", "A reference number identifying a previously communicated product inquiry."),
AXG("AXG", "Split delivery number", "A reference number identifying a split delivery."),
AXH("AXH", "Service relation number", "A reference number identifying the relationship between a service provider and a service client, e.g., treatment of a patient in a hospital, usage by a member of a library facility, etc."),
AXI("AXI", "Serial shipping container code", "Reference number identifying a logistic unit."),
AXJ("AXJ", "Test specification number", "A reference number identifying a test specification."),
AXK("AXK", "Transport status report number", "[1125] A reference number identifying a transport status report."),
AXL("AXL", "Tooling contract number", "A reference number of the tooling contract."),
AXM("AXM", "Formula reference number", "The reference number which identifies a formula."),
AXN("AXN", "Pre-agreement number", "A reference number identifying a pre-agreement."),
AXO("AXO", "Product certification number", "Number assigned by a governing body (or their agents) to a product which certifies compliance with a standard."),
AXP("AXP", "Consignment contract number", "Reference number identifying a consignment contract."),
AXQ("AXQ", "Product specification reference number", "Number assigned by the issuer to his product specification."),
AXR("AXR", "Payroll deduction advice reference", "A reference number identifying a payroll deduction advice."),
AXS("AXS", "TRACES party identification", "The party identification number used in the European Union's Trade Control and Expert System (TRACES)."),
BA("BA", "Beginning meter reading actual", "Meter reading at the beginning of an invoicing period."),
BC("BC", "Buyer's contract number", "Reference number assigned by buyer to a contract."),
BD("BD", "Bid number", "Number assigned by a submitter of a bid to his bid."),
BE("BE", "Beginning meter reading estimated", "Meter reading at the beginning of an invoicing period where an actual reading is not available."),
BH("BH", "House bill of lading number", "[1039] Reference number assigned to a house bill of lading."),
BM("BM", "Bill of lading number", "Reference number assigned to a bill of lading, see: 1001 = 705."),
BN("BN", "Consignment identifier, carrier assigned", "[1016] Reference number assigned by a carrier of its agent to identify a specific consignment such as a booking reference number when cargo space is reserved prior to loading."),
BO("BO", "Blanket order number", "Reference number assigned by the order issuer to a blanket order."),
BR("BR", "Broker or sales office number", "A number that identifies a broker or sales office."),
BT("BT", "Batch number/lot number", "[7338] Reference number assigned by manufacturer to a series of similar products or goods produced under similar conditions."),
BTP("BTP", "Battery and accumulator producer registration number", "Registration number of producer of batteries and accumulators."),
BW("BW", "Blended with number", "The batch/lot/package number a product is blended with."),
CAS("CAS", "IATA Cargo Agent CASS Address number", "Code issued by IATA to identify agent locations for CASS billing purposes."),
CAT("CAT", "Matching of entries, balanced", "Reference to a balanced matching of entries."),
CAU("CAU", "Entry flagging", "Reference to a flagging of entries."),
CAV("CAV", "Matching of entries, unbalanced", "Reference to an unbalanced matching of entries."),
CAW("CAW", "Document reference, internal", "Internal reference to a document."),
CAX("CAX", "European Value Added Tax identification", "Value Added Tax identification number according to European regulation."),
CAY("CAY", "Cost accounting document", "The reference to a cost accounting document."),
CAZ("CAZ", "Grid operator's customer reference number", "A number, assigned by a grid operator, to reference a customer."),
CBA("CBA", "Ticket control number", "Reference giving access to all the details associated with the ticket."),
CBB("CBB", "Order shipment grouping reference", "A reference number identifying the grouping of purchase orders into one shipment."),
CD("CD", "Credit note number", "[1113] Reference number assigned to a credit note."),
CEC("CEC", "Ceding company", "Company selling obligations to a third party."),
CED("CED", "Debit letter number", "Reference number identifying the letter of debit document."),
CFE("CFE", "Consignee's further order", "Reference of an order given by the consignee after departure of the means of transport."),
CFF("CFF", "Animal farm licence number", "Veterinary licence number allocated by a national authority to an animal farm."),
CFO("CFO", "Consignor's further order", "Reference of an order given by the consignor after departure of the means of transport."),
CG("CG", "Consignee's order number", "A number that identifies a consignee's order."),
CH("CH", "Customer catalogue number", "Number identifying a catalogue for customer's usage."),
CK("CK", "Cheque number", "Unique number assigned to one specific cheque."),
CKN("CKN", "Checking number", "Number assigned by checking party to one specific check action."),
CM("CM", "Credit memo number", "Reference number assigned by issuer to a credit memo."),
CMR("CMR", "Road consignment note number", "Reference number assigned to a road consignment note, see: 1001 = 730."),
CN("CN", "Carrier's reference number", "Reference number assigned by carrier to a consignment."),
CNO("CNO", "Charges note document attachment indicator", "[1070] Indication that a charges note has been established and attached to a transport contract document or not."),
COF("COF", "Call off order number", "A number that identifies a call off order."),
CP("CP", "Condition of purchase document number", "Reference number identifying the conditions of purchase relevant to a purchase."),
CR("CR", "Customer reference number", "Reference number assigned by the customer to a transaction."),
CRN("CRN", "Transport means journey identifier", "[8028] To identify a journey of a means of transport, for example voyage number, flight number, trip number."),
CS("CS", "Condition of sale document number", "Reference number identifying the conditions of sale relevant to a sale."),
CST("CST", "Team assignment number", "Team number assigned to a group that is responsible for working a particular transaction."),
CT("CT", "Contract number", "[1296] Reference number of a contract concluded between parties."),
CU("CU", "Consignment identifier, consignor assigned", "[1140] Reference number assigned by the consignor to identify a particular consignment."),
CV("CV", "Container operators reference number", "Reference number assigned by the party operating or controlling the transport container to a transaction or consignment."),
CW("CW", "Package number", "(7070) Reference number identifying a package or carton within a consignment."),
CZ("CZ", "Cooperation contract number", "Number issued by a party concerned given to a contract on cooperation of two or more parties."),
DA("DA", "Deferment approval number", "Number assigned by authorities to a party to approve deferment of payment of tax or duties."),
DAN("DAN", "Debit account number", "Reference number assigned by issuer to a debit account."),
DB("DB", "Buyer's debtor number", "Reference number assigned to a debtor."),
DI("DI", "Distributor invoice number", "Reference number assigned by issuer to a distributor invoice."),
DL("DL", "Debit note number", "[1117] Reference number assigned by issuer to a debit note."),
DM("DM", "Document identifier", "[1004] Reference number identifying a specific document."),
DQ("DQ", "Delivery note number", "[1033] Reference number assigned by the issuer to a delivery note."),
DR("DR", "Dock receipt number", "Number of the cargo receipt submitted when cargo is delivered to a marine terminal."),
EA("EA", "Ending meter reading actual", "Meter reading at the end of an invoicing period."),
EB("EB", "Embargo permit number", "Reference number assigned by issuer to an embargo permit."),
ED("ED", "Export declaration", "Number assigned by the exporter to his export declaration number submitted to an authority."),
EE("EE", "Ending meter reading estimated", "Meter reading at the end of an invoicing period where an actual reading is not available."),
EEP("EEP", "Electrical and electronic equipment producer registration number", "Registration number of producer of electrical and electronic equipment."),
EI("EI", "Employer's identification number", "Number issued by an authority to identify an employer."),
EN("EN", "Embargo number", "Number assigned to specific goods or a family of goods in a classification of embargo measures."),
EQ("EQ", "Equipment number", "Number assigned by the manufacturer to specific equipment."),
ER("ER", "Container/equipment receipt number", "Number of the Equipment Interchange Receipt issued for full or empty equipment received."),
ERN("ERN", "Exporter's reference number", "Reference to a party exporting goods."),
ET("ET", "Excess transportation number", "(1041) Number assigned to excess transport."),
EX("EX", "Export permit identifier", "[1208] Reference number to identify an export licence or permit."),
FC("FC", "Fiscal number", "Tax payer's number. Number assigned to individual persons as well as to corporates by a public institution; this number is different from the VAT registration number."),
FF("FF", "Consignment identifier, freight forwarder assigned", "[1460] Reference number assigned by the freight forwarder to identify a particular consignment."),
FI("FI", "File line identifier", "Number assigned by the file issuer or sender to identify a specific line."),
FLW("FLW", "Flow reference number", "Number given to a usual sender which has regular expeditions of the same goods, to the same destination, defining all general conditions of the transport."),
FN("FN", "Freight bill number", "Reference number assigned by issuing party to a freight bill."),
FO("FO", "Foreign exchange", "Exchange of two currencies at an agreed rate."),
FS("FS", "Final sequence number", "A number that identifies the final sequence."),
FT("FT", "Free zone identifier", "Identifier to specify the territory of a State where any goods introduced are generally regarded, insofar as import duties and taxes are concerned, as being outside the Customs territory and are not subject to usual Customs control (CCC)."),
FV("FV", "File version number", "Number given to a version of an identified file."),
FX("FX", "Foreign exchange contract number", "Reference number identifying a foreign exchange contract."),
GA("GA", "Standard's number", "Number to identify a standardization description (e.g. ISO 9375)."),
GC("GC", "Government contract number", "Number assigned to a specific government/public contract."),
GD("GD", "Standard's code number", "Number to identify a specific parameter within a standardization description (e.g. M5 for screws or DIN A4 for paper)."),
GDN("GDN", "General declaration number", "Number of the declaration of incoming goods out of a vessel."),
GN("GN", "Government reference number", "A number that identifies a government reference."),
HS("HS", "Harmonised system number", "Number specifying the goods classification under the Harmonised Commodity Description and Coding System of the Customs Co-operation Council (CCC)."),
HWB("HWB", "House waybill number", "Reference number assigned to a house waybill, see: 1001 = 703."),
IA("IA", "Internal vendor number", "Number identifying the company-internal vending department/unit."),
IB("IB", "In bond number", "Customs assigned number that is used to control the movement of imported cargo prior to its formal Customs clearing."),
ICA("ICA", "IATA cargo agent code number", "Code issued by IATA identify each IATA Cargo Agent whose name is entered on the Cargo Agency List."),
ICE("ICE", "Insurance certificate reference number", "A number that identifies an insurance certificate reference."),
ICO("ICO", "Insurance contract reference number", "A number that identifies an insurance contract reference."),
II("II", "Initial sample inspection report number", "Inspection report number given to the initial sample inspection."),
IL("IL", "Internal order number", "Number assigned to an order for internal handling/follow up."),
INB("INB", "Intermediary broker", "A number that identifies an intermediary broker."),
INN("INN", "Interchange number new", "Number assigned by the interchange sender to identify one specific interchange. This number points to the actual interchange."),
INO("INO", "Interchange number old", "Number assigned by the interchange sender to identify one specific interchange. This number points to the previous interchange."),
IP("IP", "Import permit identifier", "[1107] Reference number to identify an import licence or permit."),
IS("IS", "Invoice number suffix", "A number added at the end of an invoice number."),
IT("IT", "Internal customer number", "Number assigned by a seller, supplier etc. to identify a customer within his enterprise."),
IV("IV", "Invoice document identifier", "[1334] Reference number to identify an invoice."),
JB("JB", "Job number", "[1043] Identifies a piece of work."),
JE("JE", "Ending job sequence number", "A number that identifies the ending job sequence."),
LA("LA", "Shipping label serial number", "The serial number on a shipping label."),
LAN("LAN", "Loading authorisation identifier", "[4092] Identifier assigned to the loading authorisation granted by the forwarding location e.g. railway or airport, when the consignment is subject to traffic limitations."),
LAR("LAR", "Lower number in range", "Lower number in a range of numbers."),
LB("LB", "Lockbox", "Type of cash management system offered by financial institutions to provide for collection of customers 'receivables'."),
LC("LC", "Letter of credit number", "Reference number identifying the letter of credit document."),
LI("LI", "Document line identifier", "[1156] To identify a line of a document."),
LO("LO", "Load planning number", "The reference that identifies the load planning number."),
LRC("LRC", "Reservation office identifier", "Reference to the office where a reservation was made."),
LS("LS", "Bar coded label serial number", "The serial number on a bar code label."),
MA("MA", "Ship notice/manifest number", "The number assigned to a ship notice or manifest."),
MB("MB", "Master bill of lading number", "Reference number assigned to a master bill of lading, see: 1001 = 704."),
MF("MF", "Manufacturer's part number", "Reference number assigned by the manufacturer to his product or part."),
MG("MG", "Meter unit number", "Number identifying a unique meter unit."),
MH("MH", "Manufacturing order number", "Reference number assigned by manufacturer for a given production quantity of products."),
MR("MR", "Message recipient", "A number that identifies the message recipient."),
MRN("MRN", "Mailing reference number", "Identifies the party designated by the importer to receive certain customs correspondence in lieu of its being mailed directly to the importer."),
MS("MS", "Message sender", "A number that identifies the message sender."),
MSS("MSS", "Manufacturer's material safety data sheet number", "A number that identifies a manufacturer's material safety data sheet."),
MWB("MWB", "Master air waybill number", "Reference number assigned to a master air waybill, see: 1001 = 741."),
NA("NA", "North American hazardous goods classification number", "Reference to materials designated as hazardous for purposes of transportation in North American commerce."),
NF("NF", "Nota Fiscal", "Nota Fiscal is a registration number for shipments / deliveries within Brazil, issued by the local tax authorities and mandated for each shipment."),
OH("OH", "Current invoice number", "Reference number identifying the current invoice."),
OI("OI", "Previous invoice number", "Reference number identifying a previously issued invoice."),
ON("ON", "Order document identifier, buyer assigned", "[1022] Identifier assigned by the buyer to an order."),
OP("OP", "Original purchase order", "Reference to the order previously sent."),
OR("OR", "General order number", "Customs number assigned to imported merchandise that has been left unclaimed and subsequently moved to a Customs bonded warehouse for storage."),
PB("PB", "Payer's financial institution account number", "Originated company account number (ACH transfer), check, draft or wire."),
PC("PC", "Production code", "Number assigned by the manufacturer to a specified article or batch to identify the manufacturing date etc. for subsequent reference."),
PD("PD", "Promotion deal number", "Number assigned by a vendor to a special promotion activity."),
PE("PE", "Plant number", "A number that identifies a plant."),
PF("PF", "Prime contractor contract number", "Reference number assigned by the client to the contract of the prime contractor."),
PI("PI", "Price list version number", "A number that identifies the version of a price list."),
PK("PK", "Packing list number", "[1014] Reference number assigned to a packing list."),
PL("PL", "Price list number", "Reference number assigned to a price list."),
POR("POR", "Purchase order response number", "Reference number assigned by the seller to an order response."),
PP("PP", "Purchase order change number", "Reference number assigned by a buyer for a revision of a purchase order."),
PQ("PQ", "Payment reference", "Reference number assigned to a payment."),
PR("PR", "Price quote number", "Reference number assigned by the seller to a quote."),
PS("PS", "Purchase order number suffix", "A number added at the end of a purchase order number."),
PW("PW", "Prior purchase order number", "Reference number of a purchase order previously sent to the supplier."),
PY("PY", "Payee's financial institution account number", "Receiving company account number (ACH transfer), check, draft or wire."),
RA("RA", "Remittance advice number", "A number that identifies a remittance advice."),
RC("RC", "Rail/road routing code", "International Western and Eastern European route code used in all rail organizations and specified in the international tariffs (rail tariffs) known by the customers."),
RCN("RCN", "Railway consignment note number", "Reference number assigned to a rail consignment note, see: 1001 = 720."),
RE("RE", "Release number", "Reference number assigned to identify a release of a set of rules, conventions, conditions, etc."),
REN("REN", "Consignment receipt identifier", "[1150] Reference number assigned to identify a consignment upon its arrival at its destination."),
RF("RF", "Export reference number", "Reference number given to an export shipment."),
RR("RR", "Payer's financial institution transit routing No.(ACH", "transfers) ODFI (ACH transfer)."),
RT("RT", "Payee's financial institution transit routing No.", "RDFI Transit routing number (ACH transfer)."),
SA("SA", "Sales person number", "Identification number of a sales person."),
SB("SB", "Sales region number", "A number that identifies a sales region."),
SD("SD", "Sales department number", "A number that identifies a sales department."),
SE("SE", "Serial number", "Identification number of an item which distinguishes this specific item out of an number of identical items."),
SEA("SEA", "Allocated seat", "Reference to a seat allocated to a passenger."),
SF("SF", "Ship from", "A number that identifies a ship from location."),
SH("SH", "Previous highest schedule number", "Number of the latest schedule of a previous period (ODETTE DELINS)."),
SI("SI", "SID (Shipper's identifying number for shipment)", "A number that identifies the SID (shipper's identification) number for a shipment."),
SM("SM", "Sales office number", "A number that identifies a sales office."),
SN("SN", "Transport equipment seal identifier", "[9308] The identification number of a seal affixed to a piece of transport equipment."),
SP("SP", "Scan line", "A number that identifies a scan line."),
SQ("SQ", "Equipment sequence number", "(1492) A temporary reference number identifying a particular piece of equipment within a series of pieces of equipment."),
SRN("SRN", "Shipment reference number", "[1065] Reference number assigned to a shipment."),
SS("SS", "Sellers reference number", "Reference number assigned to a transaction by the seller."),
STA("STA", "Station reference number", "International UIC code assigned to every European rail station (CIM convention)."),
SW("SW", "Swap order number", "Number assigned by the seller to a swap order (see definition of DE 1001, code 229)."),
SZ("SZ", "Specification number", "Number assigned by the issuer to his specification."),
TB("TB", "Trucker's bill of lading", "A cargo list/description issued by a motor carrier of freight."),
TCR("TCR", "Terminal operator's consignment reference", "Reference assigned to a consignment by the terminal operator."),
TE("TE", "Telex message number", "Reference number identifying a telex message."),
TF("TF", "Transfer number", "An extra number assigned to goods or a container which functions as a reference number or as an authorization number to get the goods or container released from a certain party."),
TI("TI", "TIR carnet number", "Reference number assigned to a TIR carnet."),
TIN("TIN", "Transport instruction number", "Reference number identifying a transport instruction."),
TL("TL", "Tax exemption licence number", "Number assigned by the tax authorities to a party indicating its tax exemption authorization. This number could relate to a specified business type, a specified local area or a class of products."),
TN("TN", "Transaction reference number", "Reference applied to a transaction between two or more parties over a defined life cycle; e.g. number applied by importer or broker to obtain release from Customs, may then used to control declaration through final accounting (synonyms: declaration, entry number)."),
TP("TP", "Test report number", "Reference number identifying a test report document relevant to the product."),
UAR("UAR", "Upper number of range", "Upper number in a range of numbers."),
UC("UC", "Ultimate customer's reference number", "The originator's reference number as forwarded in a sequence of parties involved."),
UCN("UCN", "Unique consignment reference number", "[1202] Unique reference identifying a particular consignment of goods. Synonym: UCR, UCRN."),
UN("UN", "United Nations Dangerous Goods identifier", "[7124] United Nations Dangerous Goods Identifier (UNDG) is the unique serial number assigned within the United Nations to substances and articles contained in a list of the dangerous goods most commonly carried."),
UO("UO", "Ultimate customer's order number", "The originator's order number as forwarded in a sequence of parties involved."),
URI("URI", "Uniform Resource Identifier", "A string of characters used to identify a name of a resource on the worldwide web."),
VA("VA", "VAT registration number", "Unique number assigned by the relevant tax authority to identify a party for use in relation to Value Added Tax (VAT)."),
VC("VC", "Vendor contract number", "Number assigned by the vendor to a contract."),
VGR("VGR", "Transport equipment gross mass verification reference", "number Reference number identifying the documentation of a transport equipment gross mass (weight) verification."),
VM("VM", "Vessel identifier", "(8123) Reference identifying a vessel."),
VN("VN", "Order number (vendor)", "Reference number assigned by supplier to a buyer's purchase order."),
VON("VON", "Voyage number", "(8028) Reference number assigned to the voyage of the vessel."),
VOR("VOR", "Transport equipment gross mass verification order reference", "Reference number identifying the order for obtaining a Verified Gross Mass (weight) of a packed transport equipment as per SOLAS Chapter VI, Regulation 2, paragraphs 4-6."),
VP("VP", "Vendor product number", "Number assigned by vendor to another manufacturer's product."),
VR("VR", "Vendor ID number", "A number that identifies a vendor's identification."),
VS("VS", "Vendor order number suffix", "The suffix for a vendor order number."),
VT("VT", "Motor vehicle identification number", "(8213) Reference identifying a motor vehicle used for transport. Normally is the vehicle registration number."),
VV("VV", "Voucher number", "Reference number identifying a voucher."),
WE("WE", "Warehouse entry number", "Entry number under which imported merchandise was placed in a Customs bonded warehouse."),
WM("WM", "Weight agreement number", "A number identifying a weight agreement."),
WN("WN", "Well number", "A number assigned to a shaft sunk into the ground."),
WR("WR", "Warehouse receipt number", "A number identifying a warehouse receipt."),
WS("WS", "Warehouse storage location number", "A number identifying a warehouse storage location."),
WY("WY", "Rail waybill number", "The number on a rail waybill."),
XA("XA", "Company/place registration number", "Company registration and place as legally required."),
XC("XC", "Cargo control number", "Reference used to identify and control a carrier and consignment from initial entry into a country until release of the cargo by Customs."),
XP("XP", "Previous cargo control number", "Where a consignment is deconsolidated and/or transferred to the control of another carrier or freight forwarder (e.g. housebill, abstract) this references the previous (e.g. master) cargo control number."),
ZZZ("ZZZ", "Mutually defined reference number", "Number based on party agreement."),
}

View File

@ -0,0 +1,229 @@
package net.codinux.invoicing.model.codes
enum class SchemeIdentifier(val code: String, val issuingOrganization: String, val structureOfCode: String?, val schemeID: String?, val isFrequentlyUsedValue: Boolean) {
_0002("0002", "System Information et Repertoire des Entreprise et des Etablissements: SIRENE", "1) Number of characters: 9 characters ('SIREN') 14 ' 9+5 ('SIRET'), The 9 character number designates an organization, The 14 character number designates a specific establishment of the organization designated by the first 9 characters. 2) Check digits: 9th & 14th character respectively", "FR:SIRENE", true),
_0060("0060", "Data Universal Numbering System (D-U-N-S Number)", "1) Eight identification digits and a check digit. A two digit prefix will be added in the future but it will not be used to calculate the check digit. 2) The Organization name is not part of the D-U-N-S number.", "DUNS", true),
_0088("0088", "EAN Location Code", "1) 13 digits including check digits, 2) None", "GLN", true),
_0177("0177", "Odette International Limited", "ICD 4 digits", "ODETTE", true),
_0003("0003", "Codification Numerique des Etablissments Financiers En Belgique", "1) 3 numeric digits, 2) None Display Requirements : In one group of three Character Repertoire :", null, false),
_0004("0004", "NBS/OSI NETWORK", "1) 0004 OSINET Open System Interconnection Network, 2) No check digits are needed as the whole message has a checking mechanism.", null, false),
_0005("0005", "USA FED GOV OSI NETWORK", "1) 0005 GOSNET United States Federal Government Open System Interconnection Network, 2) No check digits are needed as the whole message has a checking mechanism.", null, false),
_0006("0006", "USA DOD OSI NETWORK", "1) 0006 DODNET Open System Interconnection Network for the Department of Defense USA, 2) No check digits are needed as the whole message has a checking mechanism.", null, false),
_0007("0007", "Organisationsnummer", "1) 10 digits. 1st digit = Group number, 2nd - 9th digit = Ordinalnumber1st digit, = Group number, 10th digit = Check digit, 2) Last digit.", "SE:ORGNR", false),
_0008("0008", "LE NUMERO NATIONAL", "1) 13 characters, 2) 8th & 9th characters", null, false),
_0009("0009", "SIRET-CODE", "1) 14 digits, 2) None", "FR:SIRET", true),
_0010("0010", "Organizational Identifiers for Structured Names under ISO 9541 Part 2", "1) Between 1 - 14 characters (letters, digits and hyphens only). 2) None", null, false),
_0011("0011", "International Code Designator for the Identification of OSI-based, Amateur Radio Organizations, Network Objects and Application Services.", null, null, false),
_0012("0012", "European Computer Manufacturers Association: ECMA", "1) Three fields, First field = ICD, Second field = Organization Code, four-digit number, 1000-9989, Third field = Organization Name, upto 250 characters, 2) None", null, false),
_0013("0013", "VSA FTP CODE (FTP = File Transfer Protocol)", "1) Four fields, First field = four digit, ICD code, Second field = six characters, Third field = eight characters, identification of organization. Fourth field = six characters, special identification (e.g. sub-address), if required. 2) None", null, false),
_0014("0014", "NIST/OSI Implememts' Workshop", "1) 0014 OWI NIST Workshop for Implementors of OSI, 2) No check digits are needed as the whole message has checking mechanism", null, false),
_0015("0015", "Electronic Data Interchange: EDI", "1) details not received yet, 2) Display Requirements : Details not received yet Character Repertoire :", null, false),
_0016("0016", "EWOS Object Identifiers", "1) Digit ICD code = 0016, Organization Code = 4 characters, Organization Name = 34 characters, 2) None", null, false),
_0017("0017", "COMMON LANGUAGE", "1) Two fields, a. Place Code = four characters, derived from location name. b.", null, false),
_0018("0018", "SNA/OSI Network", "1) xxx SNA-OSI NET Open Systems Interconnection Network, 2) None, as the whole message has a checking mechanism.", null, false),
_0019("0019", "Air Transport Industry Services Communications Network", "1) ICD IATA International Air Transport Association, 2) No check digits are needed as the whole message has a checking mechanism.", null, false),
_0020("0020", "European Laboratory for Particle Physics: CERN", "1) 4 Digit ICD code. Organization code upto 14 characters. Organization name upto 250 characters. 2) No check digits needed.", null, false),
_0021("0021", "SOCIETY FOR WORLDWIDE INTERBANK FINANCIAL, TELECOMMUNICATION S.W.I.F.T.", null, "SWIFT", false),
_0022("0022", "OSF Distributed Computing Object Identification", "1) Organization code: full 4- character code without spaces or hyphens.", null, false),
_0023("0023", "Nordic University and Research Network: NORDUnet", "1) ICD Code - 4 digits, Organisation code - upto 14 characters, Organisation Name - upto 250 characters, 2) No check digits needed.", null, false),
_0024("0024", "Digital Equipment Corporation: DEC", "1) Four digit ICD code, Organisation code upto 14 characters, Organisation name upto 250 characters, 2) None", null, false),
_0025("0025", "OSI ASIA-OCEANIA WORKSHOP", "1) Number of the characters and their significance as defined in clause 3 of ISO 6523, ICD = 4 characters, Organization code = upto 14 characters, Organization name = upto 250 characters, 2) No identification of check digits", null, false),
_0026("0026", "NATO ISO 6523 ICDE coding scheme", "1) ICD Code - 4 digits, Organisation code up to 14 characters, Organisation name up to 250 characters, 2) No check digits", null, false),
_0027("0027", "Aeronautical Telecommunications Network (ATN)", "1) /XXXX/ICAO/International Civil Aviation Organization, 2) No check digits", null, false),
_0028("0028", "International Standard ISO 6523", "1) 14 characters identifying STYRIA FEDERN GmbH, 2) no check digits", null, false),
_0029("0029", "The All-Union Classifier of Enterprises and Organisations", "1) 8 character in digits, The first 7 digits indicate the ordinal number of an organization, 2) From 0 to 9 including one check digit", null, false),
_0030("0030", "AT&T/OSI Network", "1) ICD, 2) Organization Code, 1-14 characters, 3) Organization Name, upto 250 characters", null, false),
_0031("0031", "EDI Partner Identification Code", "1) ICD Code...N4, District Number of Chamber of Commerce...N2, Company number according to Chamber of Commerce...N12, Sub-address...AN 6 (if required)", null, false),
_0032("0032", "Telecom Australia", "1) Delimiter between ICD and Organisation code to be 3 spaces, 2) Delimiter between Organisation name and Organisation code to be 2 spaces, 3) Delimiter between names within the Organisation name to be 2 spaces, 4) No check digits", null, false),
_0033("0033", "S G W OSI Internetwork", "1) S G W OSI, 2) S G Warburg Group Management Ltd", null, false),
_0034("0034", "Reuter Open Address Standard", "1) According to ISO 8348 Addendum 2, 2) There are no check digits", null, false),
_0035("0035", "ISO 6523 - ICD", "1), 2) Display Requirements : None Character Repertoire :", null, false),
_0036("0036", "TeleTrust Object Identifiers", "1) Organization code: TeleTrust, 2) Organization name: TeleTrust-Deutschland-e.V.", null, false),
_0037("0037", "LY-tunnus", "1) 8 digits, 1st-7th digit = number, 8th digit = check number, 2) digit", "FI:OVT", false),
_0038("0038", "The Australian GOSIP Network", "1) NSAP address: maximum length: 20 codes including the ICD code, 2) No check digit", null, false),
_0039("0039", "The OZ DOD OSI Network", "1) 0039/OZDOD DEFNET/Australian Department of Defence OSI Network, 2) No check digits needed as the whole message has a checking mechanism", null, false),
_0040("0040", "Unilever Group Companies", "1) 4 digits 0-9, 2) No check digits", null, false),
_0041("0041", "Citicorp Global Information Network", "1) ICD CGIN Citicorp Global Information Network, 2) None", null, false),
_0042("0042", "DBP Telekom Object Identifiers", "1) Organisation code: four numeric digits (ICD), 2) Organisation name: Deutsche Bundespost Telekom", null, false),
_0043("0043", "HydroNETT", "1) ICD code: 4 digit, Organization code: (up to 14 characters). Organization name: (up to 250 characters). 2) No check digits needed.", null, false),
_0044("0044", "Thai Industrial Standards Institute (TISI)", "1) Four Fields, First field = four digits, ICD code, Second field = three characters to represent organization group, Third field = between 1-11 characters, Fourth field = Organization Name, up to 250, characters, 2) None", null, false),
_0045("0045", "ICI Company Identification System", "1) ICD org, Code, 1 4 5 8 9 n, xxxx/xxxx/organisation name//, 2) None", null, false),
_0046("0046", "FUNLOC", "1) 6 Decimal digits,the first 3 denoting the country in a proprietary coding system. 2) None", null, false),
_0047("0047", "BULL ODI/DSA/UNIX Network", "1) Four numeric digits, 2) None", null, false),
_0048("0048", "OSINZ", "1) 8 Digits (1-4 organisation), (5-8 Subnet ID), 2) None", null, false),
_0049("0049", "Auckland Area Health", "1) 8 Digits (1-4 organisation), (5-8 Subnet ID), 2) None", null, false),
_0050("0050", "Firmenich", "1) XXXX/XXX XXXXXXX/FIRMENICH//, 2) XXXX/XXXXXXXXXX//", null, false),
_0051("0051", "AGFA-DIS", "1) XXXX/AGFA-DIS/AGFA-DIS//, 2) None", null, false),
_0052("0052", "Society of Motion Picture and Television Engineers (SMPTE)", "1) Three fields, First field = ICD, Second field = SMPTE, Third field = Society of Motion Picture and Television Engineers, 2) None, except that all fields are left", null, false),
_0053("0053", "Migros_Network M_NETOPZ", "1) MIGROS, MGB, 2) None", null, false),
_0054("0054", "ISO6523 - ICDPCR", "1) As per Addendum 2 ISO 8348, 2) None", null, false),
_0055("0055", "Energy Net", "1) AFI, ICD, country code, routing domain, Area, ID, SEL, 2) None", null, false),
_0056("0056", "Nokia Object Identifiers (NOI)", "1) ICD (fixed length 4 digits), Organization code (variable length up to 14 characters), Organization name (variable length up to 250 characters), 2) None", null, false),
_0057("0057", "Saint Gobain", "1) ICD 4 digits, (AFI 47 followed by a 4 digit ICD), 2) None", null, false),
_0058("0058", "Siemens Corporate Network", "1) cccc(ICD) SCN (Siemens Corporate Network), 2) No check digits as in general the whole message has a checking mechanism.", null, false),
_0059("0059", "DANZNET", "1) Between 1 - 4 characters (letters, digits and hyphens only). 2) Between 1 - 12 characters (letters, digits and hyphens only).", null, false),
_0061("0061", "SOFFEX OSI", "1) 4 numeric digits, 2) None", null, false),
_0062("0062", "KPN OVN", "1) ICD 4 digits, 2) None", null, false),
_0063("0063", "ascomOSINet", "1) ICD 4 digits, 2) None Display Requirements : All fields are left justified Character Repertoire :", null, false),
_0064("0064", "UTC: Uniforme Transport Code", "1) ICD Code: 4 digits, Organization code: minimum 1, maximum 8 digits, Sequence number: minimum 1, maximum 8 digits, 2) None", null, false),
_0065("0065", "SOLVAY OSI CODING", "1) Two octets, fixed length. The particular values of 00-00 (all zeros) and FF-FF (allones) will be reserved, so that addresses are able to comply with ECMA-117, where the ISO 6523 organization code is mapped to ECMA-117 subnetwork. This structure also permits compliance with GOSIP (FIPS PUB 146), 2) No check digits will be used", null, false),
_0066("0066", "Roche Corporate Network", "As per Addendum 2 ISO 8348", null, false),
_0067("0067", "ZellwegerOSINet", "1) ICD 4 digits, 2) None Display Requirements : All fields are left justified Character Repertoire :", null, false),
_0068("0068", "Intel Corporation OSI", "1) 4 Numeric digits, 2) None", null, false),
_0069("0069", "SITA Object Identifier Tree", "1) ISO(1), identified organization(3), sita(00xx), 2) None", null, false),
_0070("0070", "DaimlerChrysler Corporate Network", "1) cccc (ICD) DCCN (DaimlerChrysler Corporate Network), 2) No check digits as in general the whole message has a checking mechanism", null, false),
_0071("0071", "LEGO /OSI NETWORK", "1) Three fields: First field = ICD, Second field = Organization Code, Third field = Organization Name, 2) None", null, false),
_0072("0072", "NAVISTAR/OSI Network", "1) Three fields: First field = ICD, Second field = NAVISTAR, Third field = International Truck and Engine Corporation, 2) None", null, false),
_0073("0073", "ICD Formatted ATM address", "1) Format: /XXXX/xxxxxxx/Organization Name//, Example: /XXXX/000000/Newbridge Network Corporation//, The xxxxxx field is a 6-digit BCD encoded number. 2) There are no check digits", null, false),
_0074("0074", "ARINC", "1) ISO (1), identified organization (3), arinc (00xx), 2) None", null, false),
_0075("0075", "Alcanet/Alcatel-Alsthom Corporate Network", "1) cccc (ICD) Alcanet, 2) No check digits as in general the whole message has a checking mechanism", null, false),
_0076("0076", "Sistema Italiano di Identificazione di ogetti gestito da UNINFO", "1) Six digits. Organization name: variable length up to 250 characters, 2) No check digits", null, false),
_0077("0077", "Sistema Italiano di Indirizzamento di Reti OSI Gestito da UNINFO", "1) To be defined, 2) Display Requirements : To be defined Character Repertoire :", null, false),
_0078("0078", "Mitel terminal or switching equipment", "1) XXX/MITEL/Mitel Corporation//, 2) None", null, false),
_0079("0079", "ATM Forum", "1) Format includes 2 fields, First field = ICD, Second field = Domains Specific Part,", null, false),
_0080("0080", "UK National Health Service Scheme, (EDIRA compliant)", null, null, false),
_0081("0081", "International NSAP", "1) NSAP address (detailed document on structure can be supplied on request, 2) No check digit", null, false),
_0082("0082", "Norwegian Telecommunications Authority's, NTA'S, EDI, identifier scheme (EDIRA compliant)", null, null, false),
_0083("0083", "Advanced Telecommunications Modules Limited, Corporate Network", "1) Format includes 2 fields : First field = ICD, Second field = Domain specific part, 2) None", null, false),
_0084("0084", "Athens Chamber of Commerce & Industry Scheme (EDIRA compliant)", null, null, false),
_0085("0085", "Swiss Chambers of Commerce Scheme (EDIRA) compliant", "999-999999-999999-9-99; useage of 100999999-999999-9-99 is prohibited, 1)18 numerical characters, organization ID (mandatory): 9 characters (first 3 char. may, indicate a registration office), organization part, OPI (optional): 6 char. OPI source indicator, OPIS (optional): 1 char. 2) Check digits (optional): last 2 char. Calculated mod 97 on used characters", null, false),
_0086("0086", "United States Council for International Business (USCIB) Scheme, (EDIRA compliant)", null, null, false),
_0087("0087", "National Federation of Chambers of Commerce & Industry of Belgium, Scheme (EDIRA compliant)", null, null, false),
_0089("0089", "The Association of British Chambers of Commerce Ltd. Scheme, (EDIRA compliant)", null, null, false),
_0090("0090", "Internet IP addressing - ISO 6523 ICD encoding", "1) ICD, Organization Code, 1-14 characters, Organization name, up to 250 characters, 2) None, as the whole message has a checking mechanism", null, false),
_0091("0091", "Cisco Sysytems / OSI Network", "1) Three fields, First field = ICD, Second field = Organization Code, 1-14 characters, Third field = Organization Name, up to 150 characters, 2)", null, false),
_0093("0093", "Revenue Canada Business Number Registration (EDIRA compliant)", null, null, false),
_0094("0094", "DEUTSCHER INDUSTRIE- UND HANDELSTAG (DIHT) Scheme (EDIRA compliant)", null, null, false),
_0095("0095", "Hewlett - Packard Company Internal AM Network", "1) Format includes 2 fields: First field = ICD, 2) Second field = Domain specific part", null, false),
_0096("0096", "DANISH CHAMBER OF COMMERCE Scheme (EDIRA compliant)", null, "DK:P", false),
_0097("0097", "FTI - Ediforum Italia, (EDIRA compliant)", null, "IT:FTI", false),
_0098("0098", "CHAMBER OF COMMERCE TEL AVIV-JAFFA Scheme (EDIRA compliant)", null, null, false),
_0099("0099", "Siemens Supervisory Systems Network", "1) cccc (ICD), 2) No check digits as in general the whole message has a checking mechanism", null, false),
_0100("0100", "PNG_ICD Scheme", null, null, false),
_0101("0101", "South African Code Allocation", null, null, false),
_0102("0102", "HEAG", "1) cccc(ICD), 2) no check digits", null, false),
_0104("0104", "BT - ICD Coding System", "1) Format includes 2 fields: First field = ICD (4 decimal digits), Second field = Domain specific part, 2) None", null, false),
_0105("0105", "Portuguese Chamber of Commerce and Industry Scheme (EDIRA compliant)", null, null, false),
_0106("0106", "Vereniging van Kamers van Koophandel en Fabrieken in Nederland (Association of Chambers of Commerce and Industry in the Netherlands), Scheme (EDIRA compliant)", null, "NL:KVK", false),
_0107("0107", "Association of Swedish Chambers of Commerce and Industry Scheme (EDIRA compliant)", null, null, false),
_0108("0108", "Australian Chambers of Commerce and Industry Scheme (EDIRA compliant)", null, null, false),
_0109("0109", "BellSouth ICD AESA (ATM End System Address)", "Field, #bytes, Name, Notes: 1, 1, Authority and Format Identifier, =0x47; 2, 2, ICD; 3, 10, Higher Order Domain Specific Part, BellSouth administered; 4, 6, End System Identifier, End user field; 5, 1, Selector, End user field; This structure conforms to the ICD AESA specified in User-Network (UNI), Specification Version 3.1 and ATM User-Network Interface (UNI) Signalling, Specification Version 4.0 (af-sig-0061.000). Both by the ATM Forum.", null, false),
_0110("0110", "Bell Atlantic", "Format includes 2 fields : First field = ICD, Second field = Domain Specific Part", null, false),
_0111("0111", "Object Identifiers", "SMPTE 298M Universal Labels for Unique Identification, of Digital Data an ISO/ITU based identifier hierarchy registration system.", null, false),
_0112("0112", "ISO register for Standards producing Organizations", "1) Numeric sequential, 2)", null, false),
_0113("0113", "OriginNet", "Format includes 2 fields, First field: ICD, Second field: Domain Specific Part", null, false),
_0114("0114", "Check Point Software Technologies", "1) Format includes 3 fields: First field: ICD, 4 decimal digits, Second field: Organization Code, 1-14 characters, Third field: Organization Name, up to 150 characters, 2) No check digits", null, false),
_0115("0115", "Pacific Bell Data Communications Network", "An OSI network address, which consists of the IDP, with subfields AFI and ICD, followed by the Domain Specific Part. No check digits are used.", null, false),
_0116("0116", "PSS Object Identifiers", "1) As defined in ISO 6523, clause 3.1, 2) Check digits, none", null, false),
_0117("0117", "STENTOR-ICD CODING SYSTEM", "1) Format includes 2 fields. First field - ICD (4 decimal digital), Second field - Domain Specific Part, 2) None", null, false),
_0118("0118", "ATM-Network ZN'96", "ICD Format, (4 characters)", null, false),
_0119("0119", "MCI / OSI Network", "1) Three fields, First Field = ICD, Second Field = Organization Code, 1-14 digits, Third Field = Organization Name, up to 250 digits", null, false),
_0120("0120", "Advantis", "The format includes three fields: First field: ICD, 4 digits, Second field: Organization code, 1-14 digits, Third field: Organizational name up to 250 digits", null, false),
_0121("0121", "Affable Software Data Interchange Codes", "1) format: XXXX/AFC, example: 0000/AFC, 2) none", null, false),
_0122("0122", "BB-DATA GmbH", "cccc(ICD) Display Requirements : None Character Repertoire :", null, false),
_0123("0123", "BASF Company ATM-Network", "1) ICD (International Code Designator), 2) Organization code, comprising 4 fields with a total of, 10 characters", null, false),
_0124("0124", "IOTA Identifiers for Organizations for Telecommunications Addressing using the ICD system format defined in ISO/IEC 8348", null, null, false),
_0125("0125", "Henkel Corporate Network (H-Net)", "1) ICD (4 characters), 2) Organization code, comprising 4 fields with a total of 10 characters, No check digits are used in the code", null, false),
_0126("0126", "GTE/OSI Network", "1) ICD, 2) Organization Code, 1-14 characters, 3) Organization name, up to 250 characters", null, false),
_0127("0127", "Dresdner Bank Corporate Network", "ICD (4 characters)", null, false),
_0128("0128", "BCNR (Swiss Clearing Bank Number)", "1) n..6, 2) Minimum of 4 numeric characters", null, false),
_0129("0129", "BPI (Swiss Business Partner Identification) code", "1) an..6, 2) None", null, false),
_0130("0130", "Directorates of the European Commission", "1) ICD 4 digits, 2) None", null, false),
_0131("0131", "Code for the Identification of National Organizations", "1) ICD (International Code Designator), 2) Organization Code, comprising 2 fields with a total of 9 characters. 8 number or character body code and 1 number or character check code.", null, false),
_0132("0132", "Certicom Object Identifiers", "Two fields : First field - ICD, Second field - Sequence of digits", null, false),
_0133("0133", "TC68 OID", "1) Three fields, First field = ICD, Second field = Member Country Code, 1-14 characters, Third field = Number of Standard", null, false),
_0134("0134", "Infonet Services Corporation", "1) ICD Code- 4 digits, Organization code - up to 14 characters, Organization name - up to 250 characters, 2) No check digits needed", null, false),
_0135("0135", "SIA Object Identifiers", "First field: ICD: 4 digits, Second field: sequence of digits", "IT:SIA", false),
_0136("0136", "Cable & Wireless Global ATM End-System Address Plan", "1) ICD 4 digits, 2)", null, false),
_0137("0137", "Global AESA scheme", "1) Field, 1 Authority and Format Identifier, 2 ICD, 3 Higher Order Domain Specific Part Assigned by Global One", null, false),
_0138("0138", "France Telecom ATM End System Address Plan", "Field, #bytes, Name; 1, 1, Authority and Format Identifier (0x47); 2, 2, ICD; 3, 10, Higher Order Domain Specific Part (administered by France Telecom; 4, 6, End System Identifier (End user field); 5, 1, Selector (End user field)", null, false),
_0139("0139", "Savvis Communications AESA:.", "First Field = ICD (0x47), Second Field = Domain Specific Part (0x124), Third Field = Organisation ID (3 bytes), Fourth Field = Domain Specific Part (7 bytes), The Domain Specific will be used to for assigning ATM, Addresses according to ATM Forum UNI3.1/4.0 and PNNI 1.0, Specifications", null, false),
_0140("0140", "Toshiba Organizations, Partners, And Suppliers' (TOPAS) Code", "1. ICD 4 digits, Organization Identifier, Organization Part Identifier, 4. OPIS -----1", null, false),
_0141("0141", "NATO Commercial and Government Entity system", "1) This code consists of: Three alpha and/or numeric characters prefixed and suffixed by a numeral, for Canada and the United States, or: Three alpha and/or numeric characters either prefixed by one significant alpha character and suffixed by one numeral or suffixed by one significant alpha character and prefixed by one numeral for the other user countries/organizations. 2) None", null, false),
_0142("0142", "SECETI Object Identifiers", "1) First field: ICD: 4 digits, Second field: sequence of digits", "IT:SECETI", false),
_0143("0143", "EINESTEINet AG", "2 digit authority and format identifier X'47', 2 digit authority and format identifier, 4 digit international code designator (ICD), 20 digit domain definition based upon geographic location, No check characters", null, false),
_0144("0144", "DoDAAC (Department of Defense Activity Address Code)", "1) 6 alphanumeric character string. No significance is applied to any character in the string, 2) None", null, false),
_0145("0145", "DGCP (Direction Générale de la Comptabilité Publique)administrative accounting identification scheme", "1) 10 characters, first 4 characters are 'DCGP' following by 6 digits to identify an administrative accounting unit, 2) None", null, false),
_0146("0146", "DGI (Direction Générale des Impots) code", "Various structures, 1) Dependant on structure, 2) None", null, false),
_0147("0147", "Standard Company Code", "1) 12 characters (fixed length), First 6 characters identify an organization, Last 6 characters identify an organization part, 2) None", null, false),
_0148("0148", "ITU (International Telecommunications Union)Data Network Identification Codes (DNIC)", "1) 4 numeric digits, First three digits represent the country, Fourth digit represents the actual data network within the Country (for countries with many public networks multiple country codes exist). Up to 10 additional characters can be appended by the individual data networks to specify a network address within their network. 2)", null, false),
_0149("0149", "Global Business Identifier", "9999-9999-9999, 1) 12 Characters; no significance, 2) There are no check characters", null, false),
_0150("0150", "Madge Networks Ltd- ICD ATM Addressing Scheme", "40 digit ATM NSAP address, 1) Field Digits Purpose, 1 2 AFI (= 47), 2 4 ICD, 3 20", null, false),
_0151("0151", "Australian Business Number (ABN) Scheme", null, null, false),
_0152("0152", "Edira Scheme Identifier Code", "99999; greater than 10000, 5 characters; no significance, no check characters", null, false),
_0153("0153", "Concert Global Network Services ICD AESA", "Field, Name; 1, Authority and Format Identifier; 2, ICD; 3, Higher order domain specific part as assigned by Concert. This structure conforms to the ICD AESA specified in the User- Network (UNI) specification Version 3.1 and ATM User Network (UNI) Signalling Specification 4.0. It also conforms with PNNI 1.0 standard. All", null, false),
_0154("0154", "Identification number of economic subjects: (ICO)", "Form of representation: nnnnnnn.n, nnnnnnn - serial number, - - - - - - - n code", null, false),
_0155("0155", "Global Crossing AESA (ATM End System Address)", "1) AFI -Authority and Format Identifier, 2) ICD - International Code Designator, 3) HODSP - Higher Order Domain Specific Part. Structure conforms to ATM Forum UNI Signalling Specifications 3.1/4.0", null, false),
_0156("0156", "AUNA", "1) CCCC (ICD), 2) Organization Code", null, false),
_0157("0157", "ATM interconnection with the Dutch KPN Telecom", "1) ICD Code- 4 digits, 2) None", null, false),
_0158("0158", "Identification number of economic subject (ICO) Act on State Statistics of 29 November 2'001, § 27", "1) 8 characters (fixed length), 2) Check character: 8th digit", null, false),
_0159("0159", "ACTALIS Object Identifiers", "First field: ICD: 4 digits, Second field: sequence of digits", null, false),
_0160("0160", "GTIN - Global Trade Item Number", "THE GTIN has four different formats of respectively 8, 12, 13 and 14 digits. When stored in a computer file, right justified with leading zeroes, GTIN's are unique against each other, Up to 14 digits, Last digit = modulo 10 check digit", null, false),
_0161("0161", "ECCMA Open Technical Directory", "9.999999", null, false),
_0162("0162", "CEN/ISSS Object Identifier Scheme", "First field: ICD: 4 digitsSecond field: sequence of digits", null, false),
_0163("0163", "US-EPA Facility Identifier", "Alphanumeric (12)", null, false),
_0164("0164", "TELUS Corporation", "All 10 characters of HODSP required", null, false),
_0165("0165", "FIEIE Object identifiers", "The identifier consists of a sequence of digits", null, false),
_0166("0166", "Swissguide Identifier Scheme", "999999", null, false),
_0167("0167", "Priority Telecom ATM End System Address Plan", "Field 1 = AFI = 47 (1 byte)", null, false),
_0168("0168", "Vodafone Ireland OSI Addressing", "1) AFI-Authority and Format Identifier", null, false),
_0169("0169", "Swiss Federal Business Identification Number. Central Business names Index (zefix) Identification Number", "CH-RRR.X.XXX.XXX-P", null, false),
_0170("0170", "Teikoku Company Code", "1) Eight identification digits and a check digit", null, false),
_0171("0171", "Luxembourg CP & CPS (Certification Policy and Certification Practice Statement) Index", "xxx.yyy.zzz.nnnn", null, false),
_0172("0172", "Project Group “Lists of Properties” (PROLIST®)", "1. ICD 4 digits, 2. Organisation Identifier. No check character required. 3. Organisation Part Identifier. 4. OPIS", null, false),
_0173("0173", "eCI@ss", "1) ICD 4 digits, 2) Organization identifier, 3) Organization Part identifier, 4) OPISNo check character required", null, false),
_0174("0174", "StepNexus", null, null, false),
_0175("0175", "Siemens AG", "1. ICD 4 digits, 2. Organisation Identifier, 3. Organisation Part Identifier, 4. OPISNo check character required", null, false),
_0176("0176", "Paradine GmbH", "1. ICD 4 digits, 2. Organisation Identifier, 3. Organisation Part Identifier, 4. OPISNo check character required", null, false),
_0178("0178", "Route1 MobiNET", "6 Fields:", null, false),
_0179("0179", "Penango Object Identifiers", "The OID structure and the inclusion therein of the ICD is as follows: Level 1: iso(1) Level 2: identified-organization (3) Level 3: Penango(xxxx) Level 4 and higher: Defined by Penango", null, false),
_0180("0180", "Lithuanian military PKI", "3 fields: 1) PKI code; 2) CP/CPS code; 3) doc-code", null, false),
_0183("0183", "Numéro d'identification suisse des enterprises (IDE), Swiss Unique Business Identification Number (UIDB)", "CHEXXXXXXXXP, UID number, is composed by 9 digits and is random generated and has no internal means. 1) 12 characters CHE: Swiss Country Code following ISO 3166-1. XXXXXXXX: 8 digits for the number itselfP: check digit 2) CHEXXXXXXXXP, the last digit", null, false),
_0184("0184", "DIGSTORG", "8 or 10 digits", "DK:DIGST", false),
_0185("0185", "Perceval Object Code", "The code is primarily intended for the registration of object identifiers in the International Object Identifier tree in accordance with ISO/IEC 8824 under the top arcs iso(1) identified- organization(3) perceval(International Code Designator value). The lower levels are defined by Perceval. Variable length encoding using dotted notation. No check characters.", null, false),
_0186("0186", "TrustPoint Object Identifiers", "1) ICD, 2) Object class, 3) Object number(s) Number of characters and their significance: Object class 1 or 2 digits, Object number(s) multiple levels of 1 or more digits", null, false),
_0187("0187", "Amazon Unique Identification Scheme", "Each identifier may have a textual description assigned to describe the identifier. The identifier shall not begin with a zero nor shall the character immediately after a full stop character be a zero unless the zero is the last character in the identifier. 1) Between one and 35 characters each of which is a digit (0 to 9) or a full stop character (.) 2) There is no check character.", null, false),
_0188("0188", "Corporate Number of The Social Security and Tax Number System", "12-digit fundamental numbers, and a one-digit check numeral put ahead of them. 1) Figure of 13 digits. 2) Figures from 1 to 9 (Formula to calculate the test number) Formula 9- ((n = 1 (Sigma)12( Pn * Qn )) remainder obtained by dividing the 9) Pn : the numeral of the n-th digit of a fundamental number, when counted from the bottom digit. Qn : one when the 'n' is an odd number, two when the 'n' is an even one", null, false),
_0189("0189", "European Business Identifier (EBID)", "XXXXXXXXXXXXC 1) XXXXXXXXXXXX: Twelve identification digits C: Check digit 2) 13th digit", null, false),
_0190("0190", "Organisatie Indentificatie Nummer (OIN)", null, "NL:OINO", false),
_0191("0191", "Company Code (Estonia)", "Always 8-digit number", "EE:CC", false),
_0192("0192", "Organisasjonsnummer", "9 digits, The organization number consists of 9 digits where the last digit is a control digit calculated with standard weights, modulus 11. After this, weights 3, 2, 7, 6, 5, 4, 3 and 2 are calculated from the first digit.", "NO:ORG", false),
_0193("0193", "UBL.BE Party Identifier", "Maximum 50 characters, 4 Characters fixed length identifying the type , Maximum 46 characters for the identifier itself", "UBLBE", false),
_0194("0194", "KOIOS Open Technical Dictionary", null, null, false),
_0195("0195", "Singapore Nationwide E-lnvoice Framework", null, null, false),
_0196("0196", "Icelandic identifier - Íslensk kennitala", null, null, false),
_0197("0197", "APPLiA Pl Standard", null, null, false),
_0198("0198", "ERSTORG", null, null, false),
_0199("0199", "Legal Entity Identifier (LEI)", null, null, false),
_0200("0200", "Legal entity code (Lithuania)", null, null, false),
_0201("0201", "Codice Univoco Unità Organizzativa iPA", null, null, false),
_0202("0202", "Indirizzo di Posta Elettronica Certificata", null, null, false),
_0203("0203", "eDelivery Network Participant identifier", null, null, false),
_0204("0204", "Leitweg-ID", null, null, false),
_0205("0205", "CODDEST", null, null, false),
_0206("0206", "Registre du Commerce et de lIndustrie : RCI", null, null, false),
_0207("0207", "PiLog Ontology Codification Identifier (POCI)", null, null, false),
_0208("0208", "Numero d'entreprise / ondernemingsnummer / Unternehmensnummer", null, null, false),
_0209("0209", "GS1 identification keys", null, null, false),
_0210("0210", "CODICE FISCALE", null, null, false),
_0211("0211", "PARTITA IVA", null, null, false),
_0212("0212", "Finnish Organization Identifier", null, null, false),
_0213("0213", "Finnish Organization Value Add Tax Identifier", null, null, false),
_0214("0214", "Tradeplace TradePI Standard", null, null, false),
_0215("0215", "Net service ID", null, null, false),
_0216("0216", "OVTcode", null, null, false),
_0217("0217", "The Netherlands Chamber of Commerce and Industry establishment number", null, null, false),
_0218("0218", "Unified registration number (Latvia)", null, null, false),
_0219("0219", "Taxpayer registration code (Latvia)", null, null, false),
_0220("0220", "The Register of Natural Persons (Latvia)", null, null, false),
_0221("0221", "The registered number of the qualified invoice issuer", null, null, false),
_0222("0222", "Metadata Registry Support", null, null, false),
_0223("0223", "EU based company", "EU Based Company Intracommunity VAT ID up to 18 characters maximum, used in order to identify EU based company in e-invoices", null, true),
_0224("0224", "FTCTC CODE ROUTAGE", "The identifier is alphanumeric with 50 characters maximumA-Z, a-z, 0-9 and special characters '-', '_', '/', '@'", null, true),
_0225("0225", "FRCTC ELECTRONIC ADDRESS", "The identifier is alphanumeric with 50 characters maximumA-Z, a-z, 0-9 and special characters '-', '_', '/', '@'", null, true),
_0226("0226", "FRCTC Particulier", "The identifier is alphanumeric with 80 characters maximum- 10 digits (the NIR) composed with- 1 digit = 1 or 2- 2 digits (0-9)- a 2-digit number between 01 and 12- 5 digits (0-9)- 70 characters maximum with + the first 35 characters of the last name + the first 35 characters of the first name (special characters allowed: '-', ''', ',', '.', '&')", null, true),
_0227("0227", "NON - EU based company", "Non EU Based Company up to 18 characters maximum, used in order to identify a non EU based company in e-invoicesThis identifier is alphanumeric and composed with 18 characters maximum :- It starts with 2 characters which must be the Country code of country where the company is registered- Followed with the first 16 Characters of the company registered name (special characters allowed: '-', ''', ',', '.', '&')", null, true),
_0228("0228", "Répertoire des Entreprises et des Etablissements (RIDET)", "This identifier is numeric, with 10 digits- 7 digits for the RID (company ID number)- 3 digits for establishment level", null, true),
_0229("0229", "T.A.H.I.T.I (traitement automatique hiérarchisé des institutions de Tahiti et des îles)", "This identifier is alpha numeric with 9 charactersA-Z and 0-9 for 6 characters completed with 3 digits 0-9 (special characters allowed: '-', ''', ',', '.', '&')", null, true),
_0230("0230", "National e-Invoicing Framework", "Identifier for organizations. Issuing agency: Malaysia Digital Economy Corporation Sdn Bhd (MDEC)", null, false),
}

View File

@ -0,0 +1,25 @@
package net.codinux.invoicing.model.codes
/**
* Subset of UNTDID 2005/ UNTDID 2475 Event time code for field BT-8.
*/
enum class TimeReferenceCode(val code: Int, val description: String, val germanDescription: String) {
// UNTDID 2005
InvoiceDocumentIssueDate(3, "Invoice document issue date time", "Ausstellungsdatum des Rechnungsdokuments"),
DeliveryDate(35, "Delivery date/time, actual", "tatsächliches Lieferdatum"),
PaidToDate(432, "Paid to date", "Datum der Zahlung"),
// the specification tricks me here: While XRechnung only mentions the values from UNTDID 2005,
// ZUGFeRD mixes in his spec above values with these from UNTDID 2475:
// DateOfInvoice(5, "Date of invoice"),
//
// DateOfDelivery(29, "Date of delivery of goods to establishments/domicile/site"),
//
// PaymentDate(72, "Payment date"),
}

View File

@ -0,0 +1,13 @@
package net.codinux.invoicing.model.codes
enum class VatCategoryCode(val code: String, val meaning: String, val optionalRemarkForTheUsageOfTheCode: String) {
S("S", "Standard rate", "Standard rate"),
Z("Z", "Zero rated goods", "Zero rated goods"),
E("E", "Exempt from tax", "Exempt from tax"),
AE("AE", "VAT Reverse charge", "VAT reverse charge"),
K("K", "VAT exempt for EEA intra-community supply of goods and services", "VAT exempt for intra community supply of goods"),
G("G", "Free export item, tax not charged", "Free export item, tax not charged"),
O("O", "Service outside scope of tax", "Services outside scope of tax"),
L("L", "Canary Islands general indirect tax", "Canary Islands General Indirect Tax"),
M("M", "Tax for production, services and importation in Ceuta and Melilla", "Liable for IPSI"),
}

View File

@ -0,0 +1,63 @@
package net.codinux.invoicing.model.codes
enum class VatExemptionReasonCode(val code: String, val codeName: String, val contextOfExemption: String, val remark: String?) {
VATEX_EU_79_C("VATEX-EU-79-C", "Exempt based on article 79, point c of Council Directive 2006/112/EC", "Exemptions relating to repayment of expenditures.", null),
VATEX_EU_132("VATEX-EU-132", "Exempt based on article 132 of Council Directive 2006/112/EC", "Exemptions for certain activities in public interest.", null),
VATEX_EU_132_1A("VATEX-EU-132-1A", "Exempt based on article 132, section 1 (a) of Council Directive 2006/112/EC", "The supply by the public postal services of services other than passenger transport and telecommunications services, and the supply of goods incidental thereto.", null),
VATEX_EU_132_1B("VATEX-EU-132-1B", "Exempt based on article 132, section 1 (b) of Council Directive 2006/112/EC", "Hospital and medical care and closely related activities undertaken by bodies governed by public law or, under social conditions comparable with those applicable to bodies governed by public law, by hospitals, centres for medical treatment or diagnosis and other duly recognised establishments of a similar nature", null),
VATEX_EU_132_1C("VATEX-EU-132-1C", "Exempt based on article 132, section 1 (c) of Council Directive 2006/112/EC", "The provision of medical care in the exercise of the medical and paramedical professions as defined by the Member State concerned.", null),
VATEX_EU_132_1D("VATEX-EU-132-1D", "Exempt based on article 132, section 1 (d) of Council Directive 2006/112/EC", "The supply of human organs, blood and milk.", null),
VATEX_EU_132_1E("VATEX-EU-132-1E", "Exempt based on article 132, section 1 (e) of Council Directive 2006/112/EC", "The supply of services by dental technicians in their professional capacity and the supply of dental prostheses by dentists and dental technicians.", null),
VATEX_EU_132_1F("VATEX-EU-132-1F", "Exempt based on article 132, section 1 (f) of Council Directive 2006/112/EC", "The supply of services by independent groups of persons, who are carrying on an activity which is exempt from VAT or in relation to which they are not taxable persons, for the purpose of rendering their members the services directly necessary for the exercise of that activity, where those groups merely claim from their members exact reimbursement of their share of the joint expenses, provided that such exemption is not likely to cause distortion of competition.", null),
VATEX_EU_132_1G("VATEX-EU-132-1G", "Exempt based on article 132, section 1 (g) of Council Directive 2006/112/EC", "The supply of services and of goods closely linked to welfare and social security work, including those supplied by old people's homes, by bodies governed by public law or by other bodies recognised by the Member State concerned as being devoted to social wellbeing.", null),
VATEX_EU_132_1H("VATEX-EU-132-1H", "Exempt based on article 132, section 1 (h) of Council Directive 2006/112/EC", "The supply of services and of goods closely linked to the protection of children and young persons by bodies governed by public law or by other organisations recognised by the Member State concerned as being devoted to social wellbeing;", null),
VATEX_EU_132_1I("VATEX-EU-132-1I", "Exempt based on article 132, section 1 (i) of Council Directive 2006/112/EC", "The provision of children's or young people's education, school or university education, vocational training or retraining, including the supply of services and of goods closely related thereto, by bodiesgoverned by public law having such as their aim or by other organisations recognised by the Member State concerned as having similar objects.", null),
VATEX_EU_132_1J("VATEX-EU-132-1J", "Exempt based on article 132, section 1 (j) of Council Directive 2006/112/EC", "Tuition given privately by teachers and covering school or university education.", null),
VATEX_EU_132_1K("VATEX-EU-132-1K", "Exempt based on article 132, section 1 (k) of Council Directive 2006/112/EC", "The supply of staff by religious or philosophical institutions for the purpose of the activities referred to in points (b), (g), (h) and (i) and with a view to spiritual welfare.", null),
VATEX_EU_132_1L("VATEX-EU-132-1L", "Exempt based on article 132, section 1 (l) of Council Directive 2006/112/EC", "The supply of services, and the supply of goods closely linked thereto, to their members in their common interest in return for a subscription fixed in accordance with their rules by non-profitmaking organisations with aims of a political, trade-union, religious, patriotic, philosophical, philanthropic or civic nature, provided that this exemption is not likely to cause distortion of competition.", null),
VATEX_EU_132_1M("VATEX-EU-132-1M", "Exempt based on article 132, section 1 (m) of Council Directive 2006/112/EC", "The supply of certain services closely linked to sport or physical education by non-profit-making organisations to persons taking part in sport or physical education.", null),
VATEX_EU_132_1N("VATEX-EU-132-1N", "Exempt based on article 132, section 1 (n) of Council Directive 2006/112/EC", "The supply of certain cultural services, and the supply of goods closely linked thereto, by bodies governed by public law or by other cultural bodies recognised by the Member State concerned.", null),
VATEX_EU_132_1O("VATEX-EU-132-1O", "Exempt based on article 132, section 1 (o) of Council Directive 2006/112/EC", "The supply of services and goods, by organisations whose activities are exempt pursuant to points (b), (g), (h), (i), (l), (m) and (n), in connection with fund-raising events organised exclusively for theirown benefit, provided that exemption is not likely to cause distortion of competition.", null),
VATEX_EU_132_1P("VATEX-EU-132-1P", "Exempt based on article 132, section 1 (p) of Council Directive 2006/112/EC", "The supply of transport services for sick or injured persons in vehicles specially designed for the purpose, by duly authorised bodies.", null),
VATEX_EU_132_1Q("VATEX-EU-132-1Q", "Exempt based on article 132, section 1 (q) of Council Directive 2006/112/EC", "The activities, other than those of a commercial nature, carried out by public radio and television bodies.", null),
VATEX_EU_143("VATEX-EU-143", "Exempt based on article 143 of Council Directive 2006/112/EC", "Exemptions on importation.", null),
VATEX_EU_143_1A("VATEX-EU-143-1A", "Exempt based on article 143, section 1 (a) of Council Directive 2006/112/EC", "The final importation of goods of which the supply by a taxable person would in all circumstances be exempt within their respective territory.", null),
VATEX_EU_143_1B("VATEX-EU-143-1B", "Exempt based on article 143, section 1 (b) of Council Directive 2006/112/EC", "The final importation of goods governed by Council Directives 69/169/EEC (1), 83/181/EEC (2) and 2006/79/EC (3).", null),
VATEX_EU_143_1C("VATEX-EU-143-1C", "Exempt based on article 143, section 1 (c) of Council Directive 2006/112/EC", "The final importation of goods, in free circulation from a third territory forming part of the Community customs territory, which would be entitled to exemption under point (b) if they had been imported within the meaning of the first paragraph of Article 30", null),
VATEX_EU_143_1D("VATEX-EU-143-1D", "Exempt based on article 143, section 1 (d) of Council Directive 2006/112/EC", "The importation of goods dispatched or transported from a third territory or a third country into a Member State other than that in which the dispatch or transport of the goods ends, where the supply of such goods by the importer designated or recognised under Article 201 as liable for payment of VAT is exempt under Article 138.", null),
VATEX_EU_143_1E("VATEX-EU-143-1E", "Exempt based on article 143, section 1 (e) of Council Directive 2006/112/EC", "The reimportation, by the person who exported them, of goods in the state in which they were exported, where those goods are exempt from customs duties.", null),
VATEX_EU_143_1F("VATEX-EU-143-1F", "Exempt based on article 143, section 1 (f) of Council Directive 2006/112/EC", "The importation, under diplomatic and consular arrangements, of goods which are exempt from customs duties.", null),
VATEX_EU_143_1FA("VATEX-EU-143-1FA", "Exempt based on article 143, section 1 (fa) of Council Directive 2006/112/EC", "The importation of goods by the European Community, the European Atomic Energy Community, the European Central Bank or the European Investment Bank, or by the bodies set up by the Communities to which the Protocol of 8 April 1965 on the privileges and immunities of the European Communities applies, within the limits and under the conditions of that Protocol and the agreements for its implementation or the headquarters agreements, in so far as it does not lead to distortion of competition;", null),
VATEX_EU_143_1G("VATEX-EU-143-1G", "Exempt based on article 143, section 1 (g) of Council Directive 2006/112/EC", "The importation of goods by international bodies, other than those referred to in point (fa), recognised as such by the public authorities of the host Member State, or by members of such bodies, within the limits and under the conditions laid down by the international conventions establishing the bodies or by headquarters agreements;", null),
VATEX_EU_143_1H("VATEX-EU-143-1H", "Exempt based on article 143, section 1 (h) of Council Directive 2006/112/EC", "The importation of goods, into Member States party to the North Atlantic Treaty, by the armed forces of other States party to that Treaty for the use of those forces or the civilian staff accompanying them or for supplying their messes or canteens where such forces take part in the common defence effort.", null),
VATEX_EU_143_1I("VATEX-EU-143-1I", "Exempt based on article 143, section 1 (i) of Council Directive 2006/112/EC", "The importation of goods by the armed forces of the United Kingdom stationed in the island of Cyprus pursuant to the Treaty of Establishment concerning the Republic of Cyprus, dated 16 August 1960, which are for the use of those forces or the civilian staff accompanying them or for supplying their messes or canteens.", null),
VATEX_EU_143_1J("VATEX-EU-143-1J", "Exempt based on article 143, section 1 (j) of Council Directive 2006/112/EC", "The importation into ports, by sea fishing undertakings, of their catches, unprocessed or after undergoing preservation for marketing but before being supplied.", null),
VATEX_EU_143_1K("VATEX-EU-143-1K", "Exempt based on article 143, section 1 (k) of Council Directive 2006/112/EC", "The importation of gold by central banks.", null),
VATEX_EU_143_1L("VATEX-EU-143-1L", "Exempt based on article 143, section 1 (l) of Council Directive 2006/112/EC", "The importation of gas through a natural gas system or any network connected to such a system or fed in from a vessel transporting gas into a natural gas system or any upstream pipeline network, of electricity or of heat or cooling energy through heating or cooling networks.", null),
VATEX_EU_148("VATEX-EU-148", "Exempt based on article 148 of Council Directive 2006/112/EC", "Exemptions related to international transport.", null),
VATEX_EU_148_A("VATEX-EU-148-A", "Exempt based on article 148, section (a) of Council Directive 2006/112/EC", "Fuel supplies for commercial international transport vessels", null),
VATEX_EU_148_B("VATEX-EU-148-B", "Exempt based on article 148, section (b) of Council Directive 2006/112/EC", "Fuel supplies for fighting ships in international transport.", null),
VATEX_EU_148_C("VATEX-EU-148-C", "Exempt based on article 148, section (c) of Council Directive 2006/112/EC", "Maintenance, modification, chartering and hiring of international transport vessels.", null),
VATEX_EU_148_D("VATEX-EU-148-D", "Exempt based on article 148, section (d) of Council Directive 2006/112/EC", "Supply to of other services to commercial international transport vessels.", null),
VATEX_EU_148_E("VATEX-EU-148-E", "Exempt based on article 148, section (e) of Council Directive 2006/112/EC", "Fuel supplies for aircraft on international routes.", null),
VATEX_EU_148_F("VATEX-EU-148-F", "Exempt based on article 148, section (f) of Council Directive 2006/112/EC", "Maintenance, modification, chartering and hiring of aircraft on international routes.", null),
VATEX_EU_148_G("VATEX-EU-148-G", "Exempt based on article 148, section (g) of Council Directive 2006/112/EC", "Supply to of other services to aircraft on international routes.", null),
VATEX_EU_151("VATEX-EU-151", "Exempt based on article 151 of Council Directive 2006/112/EC", "Exemptions relating to certain Transactions treated as exports.", null),
VATEX_EU_151_1A("VATEX-EU-151-1A", "Exempt based on article 151, section 1 (a) of Council Directive 2006/112/EC", "The supply of goods or services under diplomatic and consular arrangements.", null),
VATEX_EU_151_1AA("VATEX-EU-151-1AA", "Exempt based on article 151, section 1 (aa) of Council Directive 2006/112/EC", "The supply of goods or services to the European Community, the European Atomic Energy Community, the European Central Bank or the European Investment Bank, or to the bodies set up by the Communities to which the Protocol of 8 April 1965 on the privileges and immunities of the European Communities applies, within the limits and under the conditions of that Protocol and the agreements for its implementation or the headquarters agreements, in so far as it does not lead to distortion of competition.", null),
VATEX_EU_151_1B("VATEX-EU-151-1B", "Exempt based on article 151, section 1 (b) of Council Directive 2006/112/EC", "The supply of goods or services to international bodies, other than those referred to in point (aa), recognised as such by the public authorities of the host Member States, and to members of such bodies, within the limits and under the conditions laid down by the international conventions establishing the bodies or by headquarters agreements.", null),
VATEX_EU_151_1C("VATEX-EU-151-1C", "Exempt based on article 151, section 1 (c) of Council Directive 2006/112/EC", "The supply of goods or services within a Member State which is a party to the North Atlantic Treaty, intended either for the armed forces of other States party to that Treaty for the use of those forces, or of the civilian staff accompanying them, or for supplying their messes or canteens when such forces take part in the common defence effort.", null),
VATEX_EU_151_1D("VATEX-EU-151-1D", "Exempt based on article 151, section 1 (d) of Council Directive 2006/112/EC", "The supply of goods or services to another Member State, intended for the armed forces of any State which is a party to the North Atlantic Treaty, other than the Member State of destination itself, for the use of those forces, or of the civilian staff accompanying them, or for supplying their messes or canteens when such forces take part in the common defence effort.", null),
VATEX_EU_151_1E("VATEX-EU-151-1E", "Exempt based on article 151, section 1 (e) of Council Directive 2006/112/EC", "The supply of goods or services to the armed forces of the United Kingdom stationed in the island of Cyprus pursuant to the Treaty of Establishment concerning the Republic of Cyprus, dated 16 August 1960, which are for the use of those forces, or of the civilian staff accompanying them, or for supplying their messes or canteens.", null),
VATEX_EU_309("VATEX-EU-309", "Exempt based on article 309 of Council Directive 2006/112/EC", "Travel agents performed outside of EU.", null),
VATEX_EU_AE("VATEX-EU-AE", "Reverse charge", "Supports EN 16931-1 rule BR-AE-10", "Only use with VAT category code AE"),
VATEX_EU_D("VATEX-EU-D", "Intra-Community acquisition from second hand means of transport", "Second-hand means of transport - Indication that VAT has been paid according to the relevant transitional arrangements", "Only use with VAT category code E"),
VATEX_EU_F("VATEX-EU-F", "Intra-Community acquisition of second hand goods", "Second-hand goods - Indication that the VAT margin scheme for second-hand goods has been applied.", "Only use with VAT category code E"),
VATEX_EU_G("VATEX-EU-G", "Export outside the EU", "Supports EN 16931-1 rule BR-G-10", "Only use with VAT category code G"),
VATEX_EU_I("VATEX-EU-I", "Intra-Community acquisition of works of art", "Works of art - Indication that the VAT margin scheme for works of art has been applied.", "Only use with VAT category code E"),
VATEX_EU_IC("VATEX-EU-IC", "Intra-Community supply", "Supports EN 16931-1 rule BR-IC-10", "Only use with VAT category code K"),
VATEX_EU_J("VATEX-EU-J", "Intra-Community acquisition of collectors items and antiques", "Collectors' items and antiques - Indication that the VAT margin scheme for collectors items and antiques has been applied.", "Only use with VAT category code E"),
VATEX_EU_O("VATEX-EU-O", "Not subject to VAT", "Supports EN 16931-1 rule BR-O-10", "Only use with VAT category code O"),
VATEX_FR_FRANCHISE("VATEX-FR-FRANCHISE", "France domestic VAT franchise in base", "VAT exemption for Micro companies when Revenue is lower than a threashold", null),
VATEX_FR_CNWVAT("VATEX-FR-CNWVAT", "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for discount", "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for discount", null),
}

View File

@ -0,0 +1,38 @@
package net.codinux.invoicing.calculator
import assertk.assertThat
import assertk.assertions.isEqualByComparingTo
import assertk.assertions.isEqualTo
import net.codinux.invoicing.model.InvoiceItem
import java.math.BigDecimal
import java.math.RoundingMode
import kotlin.test.Test
class AmountsCalculatorTest {
private val underTest = AmountsCalculator()
@Test
fun calculateTotalAmounts() {
val items = listOf(
InvoiceItem("", BigDecimal(7), "", BigDecimal(5), BigDecimal(19)),
InvoiceItem("", BigDecimal(20), "", BigDecimal(5), BigDecimal(7)),
)
val result = underTest.calculateTotalAmounts(items)
val expectedNetAmount = BigDecimal(7 * 5 + 20 * 5).setScale(2)
val expectedVatAmount = BigDecimal(7 * 5 * 0.19 + 20 * 5 * 0.07).setScale(2, RoundingMode.DOWN)
val expectedTotalAmount = expectedNetAmount + expectedVatAmount
assertThat(result.lineTotalAmount).isEqualByComparingTo(expectedNetAmount)
assertThat(result.taxBasisTotalAmount).isEqualByComparingTo(expectedNetAmount)
assertThat(result.taxTotalAmount).isEqualTo(expectedVatAmount)
assertThat(result.grandTotalAmount).isEqualTo(expectedTotalAmount)
assertThat(result.duePayableAmount).isEqualTo(expectedTotalAmount)
}
}

View File

@ -2,6 +2,8 @@ package net.codinux.invoicing.test
import net.codinux.invoicing.calculator.AmountsCalculator
import net.codinux.invoicing.model.*
import net.codinux.invoicing.model.codes.Country
import net.codinux.invoicing.model.codes.Currency
import java.math.BigDecimal
import java.time.LocalDate
import java.time.format.DateTimeFormatter
@ -17,7 +19,7 @@ object DataGenerator {
val SupplierAdditionalAddressLine: String? = null
const val SupplierPostalCode = "12345"
const val SupplierCity = "Glückstadt"
const val SupplierCountry = "DE"
val SupplierCountry = Country.DE
const val SupplierVatId = "DE123456789"
const val SupplierEmail = "working-class-hero@rock.me"
const val SupplierPhone = "+4917012345678"
@ -29,7 +31,7 @@ object DataGenerator {
val CustomerAdditionalAddressLine: String? = null
const val CustomerPostalCode = SupplierPostalCode
const val CustomerCity = SupplierCity
const val CustomerCountry = "DE"
val CustomerCountry = SupplierCountry
const val CustomerVatId = "DE987654321"
const val CustomerEmail = "exploiter@your.boss"
const val CustomerPhone = "+491234567890"
@ -53,9 +55,10 @@ object DataGenerator {
customer: Party = createParty(CustomerName, CustomerAddress, CustomerAdditionalAddressLine, CustomerPostalCode, CustomerCity, CustomerCountry,
CustomerVatId, CustomerEmail, CustomerPhone, CustomerFax, bankDetails = CustomerBankDetails),
items: List<InvoiceItem> = listOf(createItem()),
currency: Currency = Currency.EUR,
dueDate: LocalDate? = DueDate,
paymentDescription: String? = dueDate?.let { "Zahlbar ohne Abzug bis ${DateTimeFormatter.ofPattern("dd.MM.yyyy").format(dueDate)}" },
) = Invoice(InvoiceDetails(invoiceNumber, invoiceDate, dueDate, paymentDescription), supplier, customer, items).apply {
) = Invoice(InvoiceDetails(invoiceNumber, invoiceDate, currency, dueDate, paymentDescription), supplier, customer, items).apply {
this.totals = AmountsCalculator().calculateTotalAmounts(this)
}
@ -65,7 +68,7 @@ object DataGenerator {
additionalAddressLine: String? = SupplierAdditionalAddressLine,
postalCode: String = SupplierPostalCode,
city: String = SupplierCity,
country: String? = SupplierCountry,
country: Country = SupplierCountry,
vatId: String? = SupplierVatId,
email: String? = SupplierEmail,
phone: String? = SupplierPhone,

View File

@ -6,6 +6,7 @@ import net.codinux.invoicing.model.BankDetails
import net.codinux.invoicing.model.Invoice
import net.codinux.invoicing.model.InvoiceItem
import net.codinux.invoicing.model.Party
import net.codinux.invoicing.model.codes.Country
import java.math.BigDecimal
object InvoiceAsserter {
@ -70,13 +71,13 @@ object InvoiceAsserter {
assertLineItem(invoice.items.first(), DataGenerator.ItemName, DataGenerator.ItemQuantity, DataGenerator.ItemUnit, DataGenerator.ItemUnitPrice, DataGenerator.ItemVatRate, DataGenerator.ItemDescription)
}
private fun assertParty(party: Party, name: String, address: String, postalCode: String, city: String, country: String?, vatId: String, email: String, phone: String, bankDetails: BankDetails?) {
private fun assertParty(party: Party, name: String, address: String, postalCode: String, city: String, country: Country, vatId: String, email: String, phone: String, bankDetails: BankDetails?) {
assertThat(party.name).isEqualTo(name)
assertThat(party.address).isEqualTo(address)
assertThat(party.postalCode).isEqualTo(postalCode)
assertThat(party.city).isEqualTo(city)
assertThat(party.countryIsoCode).isEqualTo(country)
assertThat(party.country).isEqualTo(country)
assertThat(party.vatId).isEqualTo(vatId)

View File

@ -0,0 +1,43 @@
plugins {
kotlin("jvm")
}
kotlin {
jvmToolchain(11)
}
val phGenericodeVersion: String by project
val apachePoiVersion: String by project
val kI18nVersion: String by project
val klfVersion: String by project
val assertKVersion: String by project
val logbackVersion: String by project
dependencies {
implementation(project(":e-invoice-domain"))
implementation("com.helger:ph-genericode:$phGenericodeVersion")
implementation("org.apache.poi:poi-ooxml:$apachePoiVersion")
implementation("net.codinux.i18n:k-i18n:$kI18nVersion")
implementation("net.codinux.log:klf:$klfVersion")
testImplementation(kotlin("test"))
testImplementation("com.willowtreeapps.assertk:assertk:$assertKVersion")
testImplementation("ch.qos.logback:logback-classic:$logbackVersion")
}
tasks.test {
useJUnitPlatform()
}

View File

@ -0,0 +1,30 @@
package net.codinux.invoicing.app
import net.codinux.invoicing.parser.CodeGenerator
import net.codinux.invoicing.parser.excel.ZugferdExcelCodeListsParser
import net.codinux.invoicing.parser.genericode.CefGenericodeCodelistsParser
import java.io.File
fun main() {
CodeListsGeneratorApp().generateCodeLists()
}
class CodeListsGeneratorApp {
fun generateCodeLists() {
val zipFile = File(javaClass.classLoader.getResource("codeLists/cef-genericodes-2024-11-15.zip")!!.toURI())
val cefCodeLists = CefGenericodeCodelistsParser().parse(zipFile)
val xslxFile = File(javaClass.classLoader.getResource("codeLists/3. FACTUR-X 1.0.07 FR-EN.xlsx")!!.toURI())
val zugferdCodeLists = ZugferdExcelCodeListsParser().parse(xslxFile)
var outputDirectoryBasePath = zipFile.parentFile.parentFile.absolutePath.replace("e-invoice-spec-parser", "e-invoice-domain")
if (outputDirectoryBasePath.contains("/build/resources/main")) {
outputDirectoryBasePath = outputDirectoryBasePath.replace("/build/resources/main", "/src/main")
}
val outputDirectory = File(outputDirectoryBasePath, "kotlin/net/codinux/invoicing/model/codes").also { it.mkdirs() }
CodeGenerator().generateCodeFiles(cefCodeLists, zugferdCodeLists, outputDirectory)
}
}

View File

@ -0,0 +1,280 @@
package net.codinux.invoicing.parser
import net.codinux.i18n.Region
import net.codinux.i18n.UnitAll
import net.codinux.invoicing.model.codes.InvoiceTypeUseFor
import net.codinux.invoicing.parser.genericode.CodeList
import net.codinux.invoicing.parser.model.CodeListType
import net.codinux.invoicing.parser.model.Column
import net.codinux.invoicing.parser.model.Row
import java.io.File
import java.util.Currency
class CodeGenerator {
companion object {
private val i18nRegionsByCode = Region.entries.associateBy { it.code }
private val i18nCurrenciesByCode = net.codinux.i18n.Currency.entries.associateBy { it.alpha3Code }
private val i18nUnitsByCode = UnitAll.entries.associateBy { it.code }
}
fun generateCodeFiles(cefCodeLists: List<CodeList>, zugferdCodeLists: List<net.codinux.invoicing.parser.excel.CodeList>, outputDirectory: File) {
val zugferdCodeListsByType = zugferdCodeLists.associateBy { it.type }
val matchedCodeLists = cefCodeLists.associateBy { it.type }.mapValues { it.value to zugferdCodeListsByType[it.key] }
matchedCodeLists.forEach { (type, codeLists) ->
val (columns, rows) = (if (type == CodeListType.IsoCountryCodes) mergeCountryData(codeLists.first, codeLists.second!!)
else if (type == CodeListType.IsoCurrencyCodes) mergeCurrencyData(codeLists.first, codeLists.second!!)
else if (type == CodeListType.Units) mergeUnitData(codeLists.first, codeLists.second!!)
else {
addFrequentlyUsedColumn(reorder(map(filter(
// Factur-X (= codeLists.second) has the better column names and often also a Description column
if (codeLists.second != null) codeLists.second!!.columns to codeLists.second!!.rows
else codeLists.first.columns to codeLists.first.rows
))))
})
File(outputDirectory, type.className + ".kt").bufferedWriter().use { writer ->
writer.appendLine("package net.codinux.invoicing.model.codes")
writer.newLine()
writer.appendLine("enum class ${type.className}(${columns.joinToString(", ") { "val ${getPropertyName(it)}: ${getDataType(it, columns, rows)}" } }) {")
rows.forEach { row ->
writer.appendLine("\t${getEnumName(type, columns, row)}(${row.values.joinToString(", ") { getPropertyValue(it, type !in listOf(CodeListType.IsoCountryCodes, CodeListType.IsoCurrencyCodes)) } }),")
}
writer.append("}")
}
}
}
// SchemeIdentifier: ignore Comment
// dito SchemeIdentifierFacturX
// ElectronicAddressScheme: ignore Source
// Unit: ignore Source
// PaymentMeansCodeFacturX: ignore Sens
private fun filter(columnsAndRows: Pair<List<Column>, List<Row>>): Pair<List<Column>, List<Row>> {
val (columns, rows) = columnsAndRows
val columnToIgnore = columns.firstOrNull { it.name == "Source" || it.name == "Comment" || it.name == "Sens" || it.name == "French Name" }
if (columnToIgnore == null) {
return columnsAndRows
}
val indexToIgnore = columns.indexOf(columnToIgnore)
return columns.filterIndexed { index, _ -> index != indexToIgnore } to rows.onEach { it.removeValueAtIndex(indexToIgnore) }
}
private fun map(columnsAndRows: Pair<List<Column>, List<Row>>): Pair<List<Column>, List<Row>> {
val (columns, rows) = columnsAndRows
val useForColumn = columns.firstOrNull { it.name == "EN16931 interpretation" }
if (useForColumn != null) {
val index = columns.indexOf(useForColumn)
val modifiedColumns = columns.toMutableList().apply {
removeAt(index)
add(Column(columns.last().index + 1, "UseFor", "InvoiceTypeUseFor"))
}
val modifiedRows = rows.onEach {
val useFor = it.removeValueAtIndex(index)?.toString()
it.addValue(if (useFor == "Credit Note") InvoiceTypeUseFor.CreditNote else InvoiceTypeUseFor.Invoice)
}
return modifiedColumns to modifiedRows
}
return columnsAndRows
}
/**
* For SchemeIdentifier move the schemeId column, which in most cases is null, to the end, so that the code is the first column.
*/
private fun reorder(columnsAndRows: Pair<List<Column>, List<Row>>): Pair<List<Column>, List<Row>> {
val (columns, rows) = columnsAndRows
val reorderFirstColumn = columns.first().name in listOf("Scheme ID")
if (reorderFirstColumn) {
val reorderedColumns = columns.toMutableList().apply {
val reorderedColumn = this.removeAt(0)
this.add(reorderedColumn)
}
val reorderedRows = rows.onEach {
val reorderedRow = it.removeValueAtIndex(0)
it.addValue(reorderedRow)
}
return reorderedColumns to reorderedRows
}
return columnsAndRows
}
private fun mergeCountryData(cefCodeList: CodeList, zugferdCodeList: net.codinux.invoicing.parser.excel.CodeList): Pair<List<Column>, List<Row>> {
val columns = listOf(
Column(0, "alpha2Code", "String"),
Column(1, "alpha3Code", "String"),
Column(2, "numericCode", "Int"),
Column(3, "numericCodeAsString", "String"),
Column(4, "englishName", "String"),
)
val cefByIsoCode = cefCodeList.rows.associateBy { it.values[0] }
val zugferdByIsoCode = zugferdCodeList.rows.groupBy { it.values[2] }
val rows = cefByIsoCode.map { (isoCode, cefRow) ->
val values = zugferdByIsoCode[isoCode]!!.first().values
val i18nRegion = i18nRegionsByCode[isoCode]
Row(listOf(isoCode, i18nRegion?.alpha3Code ?: values[2], i18nRegion?.numericCode, i18nRegion?.numericCodeAsString, i18nRegion?.englishName ?: values[0]), false, fixCountryName(i18nRegion?.name ?: values[0]))
}
return columns to rows.sortedBy { it.enumName!! } // sort by englishName
}
private fun mergeCurrencyData(cefCodeList: CodeList, zugferdCodeList: net.codinux.invoicing.parser.excel.CodeList): Pair<List<Column>, List<Row>> {
val columns = listOf(
Column(0, "alpha3Code", "String"),
Column(1, "numericCode", "Int"),
Column(2, "currencySymbol", "String"),
Column(3, "englishName", "String"),
Column(4, "countries", "Set<String>"),
Column(Int.MAX_VALUE, "isFrequentlyUsedValue", "Boolean")
)
val cefByIsoCode = cefCodeList.rows.associateBy { it.values[0] }
val zugferdByIsoCode = zugferdCodeList.rows.groupBy { it.values[2] }
val availableCurrencies = Currency.getAvailableCurrencies().associateBy { it.currencyCode } // TODO: there are 52 currencies in availableCurrencies that are not in CEF and Zugferd list
val rows = cefByIsoCode.map { (isoCode, cefRow) ->
val zugferdRows = zugferdByIsoCode[isoCode] ?: emptyList()
val i18nCurrency = i18nCurrenciesByCode[isoCode]
// as Zugferd list only lists current currencies, there's currently no use for i18n.Currency.isCurrentCurrency and .withdrawalDate
val isFrequentlyUsedValue = zugferdRows.any { it.isFrequentlyUsedValue }
Row(listOf(isoCode, i18nCurrency?.numericCode, availableCurrencies[isoCode]?.symbol, cefRow.values[1], zugferdRows.map { it.values[0] }.toSet(), isFrequentlyUsedValue), isFrequentlyUsedValue, fixCurrencyName(i18nCurrency?.name ?: cefRow.values[1]))
}
return columns to rows.sortedBy { it.enumName!! } // sort by English name
}
private fun mergeUnitData(cefCodeList: CodeList, zugferdCodeList: net.codinux.invoicing.parser.excel.CodeList): Pair<List<Column>, List<Row>> {
val columns = listOf(
Column(0, "code", "String"),
Column(1, "englishName", "String"),
Column(2, "symbol", "String"),
Column(3, "isFrequentlyUsedValue", "Boolean"),
)
val cefByIsoCode = cefCodeList.rows.associateBy { it.values[0] }
val zugferdByIsoCode = zugferdCodeList.rows.groupBy { it.values[0] }
val rows = cefByIsoCode.map { (code, cefRow) ->
val row = zugferdByIsoCode[code]!!.first()
val values = row.values
val i18nUnit = i18nUnitsByCode[code]
Row(listOf(code, values[1], i18nUnit?.symbol, row.isFrequentlyUsedValue), row.isFrequentlyUsedValue)
}
return columns to rows.sortedBy { it.values[0].toString() } // sort by code
}
private fun addFrequentlyUsedColumn(columnsToRows: Pair<List<Column>, List<Row>>): Pair<List<Column>, List<Row>> {
val hasFrequentlyUsedValue = columnsToRows.second.any { it.isFrequentlyUsedValue }
return if (hasFrequentlyUsedValue) {
(columnsToRows.first + Column(Int.MAX_VALUE, "isFrequentlyUsedValue", "Boolean")) to
columnsToRows.second.onEach { it.addIsFrequentlyUsedValueCell() }
} else {
columnsToRows
}
}
private fun getPropertyName(column: Column): String = when (column.name) {
"Unique code" -> "code"
"Meaning of the code" -> "meaning"
"Optional remark for the usage of this code" -> "optionalRemarkForTheUsageOfTheCode"
"Alpha-2 code" -> "alpha2Code"
"Alpha-3 code" -> "alpha3Code"
"Code name (english)" -> "codeName"
"Context of exemption (for definition refer to legislation)" -> "contextOfExemption"
"ICD value" -> "code"
"Structure of code" -> "structureOfCode"
"Name" -> "meaning" // cannot use 'name' as property name in an Enum
else -> column.name.replace(" ", "").let { it[0].lowercase() + it.substring(1) }
}
private fun getPropertyValue(value: Any?, writeNumbersAsString: Boolean = true): CharSequence {
if (value == null) {
return "null"
}
if (value is Boolean) {
return "$value"
}
if (value is Number && writeNumbersAsString == false) {
return "$value"
}
if (value is InvoiceTypeUseFor) {
return "InvoiceTypeUseFor.$value"
}
if (value is Set<*>) {
return if (value.isEmpty()) "emptySet()" else "setOf(${value.joinToString(", ") { getPropertyValue(it) } })"
}
return "\"${value.toString().replace("\n", "").replace('"', '\'')}\""
}
private fun getDataType(column: Column, columns: List<Column>, rows: List<Row>): String {
val index = columns.indexOf(column)
val containsNullValues = rows.any { it.values[index] == null }
return when (column.dataType) {
"string" -> "String" + (if (containsNullValues) "?" else "")
else -> column.dataType[0].uppercase() + column.dataType.substring(1).replace(" ", "") + (if (containsNullValues) "?" else "")
}
}
private fun getEnumName(type: CodeListType, columns: List<Column>, row: Row): String {
val values = row.values
val firstColumn = values[0]
// Mime types
if (firstColumn == "application/pdf") return "PDF"
else if (firstColumn == "image/png") return "PNG"
else if (firstColumn == "image/jpeg") return "JPEG"
else if (firstColumn == "text/csv") return "CSV"
else if (firstColumn == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") return "ExcelSpreadsheet"
else if (firstColumn == "application/vnd.oasis.opendocument.spreadsheet") return "OpenDocumentSpreadsheet"
val column = if (row.enumName != null) row.enumName
else if (columns.first().name == "Scheme ID") values[1] // ISO 6523 Scheme Identifier codes
else firstColumn // default case: the code is in the first column
val name = (column?.toString() ?: "").replace(' ', '_').replace('/', '_').replace('.', '_').replace(',', '_')
.replace('-', '_').replace('(', '_').replace(')', '_').replace('[', '_').replace(']', '_')
.replace('\'', '_').replace('', '_').replace(Typography.nbsp, '_')
return if (name.isEmpty()) "_"
else if (name[0].isDigit()) "_" + name
else name
}
private fun fixCountryName(countryName: Any?): String = when (countryName) {
"United Kingdom (Northern Ireland)" -> "NorthernIreland"
else -> countryName.toString()
}
private fun fixCurrencyName(currencyName: Any?): String = when (currencyName) {
"Bolívar Soberano, new valuation" -> "BolivarSoberano_NewValuation"
else -> currencyName.toString().replace(" ", "")
}
}

View File

@ -0,0 +1,17 @@
package net.codinux.invoicing.parser.excel
import net.codinux.invoicing.parser.model.CodeListType
import net.codinux.invoicing.parser.model.Column
import net.codinux.invoicing.parser.model.Row
data class CodeList(
val type: CodeListType,
val name: String,
val url: String?,
val usedInInvoiceFields: String?,
val additionalUsedInInvoiceFields: String?,
val columns: List<Column>,
val rows: List<Row>
) {
override fun toString() = "$name${usedInInvoiceFields?.let { ", $it" } ?: ""}"
}

View File

@ -0,0 +1,142 @@
package net.codinux.invoicing.parser.excel
import net.codinux.invoicing.parser.model.CodeListType
import net.codinux.invoicing.parser.model.Column
import net.codinux.log.logger
import org.apache.poi.ss.usermodel.Cell
import org.apache.poi.ss.usermodel.CellType
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.xssf.usermodel.XSSFColor
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import java.io.File
class ZugferdExcelCodeListsParser {
companion object {
private val TableStartColumns = listOf("Code", "English Name", "Country", "Scheme ID")
private val CodeListsWithDescription = listOf(CodeListType.UN_5189_AllowanceIdentificationCode, CodeListType.UN_7161_SpecialServiceDescriptionCodes,
CodeListType.UN_4451_TextSubjectCodeQualifier, CodeListType.UN_7143_ItemTypeIdentificationCode, CodeListType.UN_4461_PaymentCodes, CodeListType.UN_1153_ReferenceCode)
}
private val log by logger()
fun parse(zugferdXslxCodeListsFile: File): List<CodeList> {
val workbook = XSSFWorkbook(zugferdXslxCodeListsFile)
val sheets = workbook.sheetIterator().toList()
val codeListsSheet = sheets.firstOrNull { it.sheetName == "Codelists" }
if (codeListsSheet == null) {
log.warn { "Could not find 'Codelists' sheet in ZUGFeRD .xslx file $zugferdXslxCodeListsFile. Available sheets: ${sheets.joinToString { it.sheetName }}" }
return emptyList()
}
val rows = codeListsSheet.rowIterator().toList()
val links = rows.get(0).toList()
val secondRow = rows.get(1).toList()
val codeListNames = rows.get(2).toList()
val forthRow = rows.get(3).toList()
val headerNames = rows.get(4).toList()
val tableStartCells = headerNames.filter { it.stringCellValue in TableStartColumns }
return tableStartCells.mapNotNull { mapCodeList(it, rows, links, secondRow, codeListNames, forthRow, headerNames) }
}
private fun mapCodeList(tableStartCell: Cell, allRows: List<Row>, links: List<Cell>, secondRow: List<Cell>, codeListNames: List<Cell>, forthRow: List<Cell>, headerNames: List<Cell>): CodeList? {
try {
val startColumn = tableStartCell.columnIndex
val url = links.firstOrNull { it.columnIndex == startColumn }?.stringCellValue?.takeUnless { it.isBlank() }
val name = codeListNames.firstOrNull { it.columnIndex == startColumn }?.stringCellValue?.takeUnless { it.isBlank() }
?: secondRow.firstOrNull { it.columnIndex == startColumn }?.stringCellValue?.takeUnless { it.isBlank() } // for EAS and VATEX the name is in second row
?: codeListNames.firstOrNull { it.columnIndex == startColumn + 1 }?.stringCellValue?.takeUnless { it.isBlank() } // for the country codes the name is in next column
val usedInInvoiceFields = codeListNames.firstOrNull { it.columnIndex == startColumn + 1 }?.stringCellValue?.takeUnless { it.isBlank() }
?: codeListNames.firstOrNull { it.columnIndex == startColumn + 2 }?.stringCellValue?.takeUnless { it.isBlank() }
val additionalUsedInInvoiceFields = forthRow.firstOrNull { it.columnIndex == startColumn + 1 }?.stringCellValue?.takeUnless { it.isBlank() }
if (name == null) { // ISO currency codes table ends with a column called "Code" (columnIndex 30), actually below warning will be logged one time
log.warn { "Could not find name for Code List table with start column index $startColumn" }
return null
}
val type = getType(name)
// very clever, the description is given in an extra column, now it's stated in the next row - which is empty otherwise. So we have to do a lot of special handling to the the description
val isTypeWithDescription = type in CodeListsWithDescription
// != 30: for currency Code - part of TableStartColumns - is the last column and has columnIndex 30, so don't stop here
val indexOfNextEmptyCell = (headerNames.firstOrNull { it.columnIndex > startColumn && it.columnIndex != 30 && (it.stringCellValue.let { it.isBlank() || it in TableStartColumns || it == "Source" }) }
?: headerNames.firstOrNull { it.columnIndex == 53 })?.columnIndex // for last table we won't find the end otherwise
val sourceColumn = headerNames.firstOrNull { it.columnIndex == startColumn - 1 && it.stringCellValue == "Source" }
val columns = IntRange(startColumn, indexOfNextEmptyCell?.let { it - 1 } ?: startColumn).map { index -> headerNames.firstOrNull { it.columnIndex == index } }
.mapNotNull { mapColumn(it) }.toMutableList().apply {
mapColumn(sourceColumn)?.let { add(it) }
}
val columnIndices = columns.map { it.index }
val descriptionColumnIndex = columns.firstOrNull { it.name == "Meaning" }?.index ?: columnIndices.last()
// if this Code List has a description, ignore every second row, as in the second row is the description
val rows = allRows.drop(5).filterIndexed { index, _ -> isTypeWithDescription == false || index % 2 == 0 }.map { row ->
val cells = columnIndices.map { row.getCell(it) }
// if the cell is filled with color "FF4BACC6" (but not gray) that means this value is frequently used
val isFrequentlyUsedValue = cells.all { (it?.cellStyle?.fillForegroundColorColor as? XSSFColor)?.argbHex == "FF4BACC6"
|| it?.columnIndex == sourceColumn?.columnIndex } // only the source column never has a background color
val values = cells.map { getCellValue(it, type) } +
( if (isTypeWithDescription) listOf(getCellValue(allRows.get(row.rowNum + 1).getCell(descriptionColumnIndex))) else emptyList())
net.codinux.invoicing.parser.model.Row(values, isFrequentlyUsedValue)
}.filterNot { it.values.all { it == null } } // filter out empty rows
if (isTypeWithDescription) {
columns.add(Column(indexOfNextEmptyCell!! - 1, "Description", "String"))
}
return CodeList(type, name, url, usedInInvoiceFields, additionalUsedInInvoiceFields, columns, rows)
} catch (e: Throwable) {
log.error(e) { "Code not map Code List for start cell index ${tableStartCell.columnIndex}" }
return null
}
}
private fun getType(name: String): CodeListType = when (name) {
"ISO 3166" -> CodeListType.IsoCountryCodes
"ISO 4217" -> CodeListType.IsoCurrencyCodes
"ISO 6523" -> CodeListType.Iso_6523_IdentificationSchemeIdentifier
"UNTDID 1001" -> CodeListType.UN_1001_InvoiceType
"UNTDID 1153" -> CodeListType.UN_1153_ReferenceCode
"UNTDID 4451" -> CodeListType.UN_4451_TextSubjectCodeQualifier
"UNTDID 4461" -> CodeListType.UN_4461_PaymentCodes
"UNTDID 5189" -> CodeListType.UN_5189_AllowanceIdentificationCode
"UNTDID 7143" -> CodeListType.UN_7143_ItemTypeIdentificationCode
"UNTDID7161" -> CodeListType.UN_7161_SpecialServiceDescriptionCodes
"Unit of Measure" -> CodeListType.Units
"EAS : Electronice Address Scheme" -> CodeListType.EAS
"CEF VATEX — VAT exemption reason code" -> CodeListType.VATEX
else -> throw IllegalArgumentException("No known Code List of name '$name' found")
}
private fun mapColumn(cell: Cell?): Column? = cell?.let {
val name = cell.stringCellValue ?: ""
return Column(cell.columnIndex, name, "String")
}
private fun getCellValue(cell: Cell?, type: CodeListType? = null) = when (cell?.cellType) {
CellType.STRING -> cell.stringCellValue.trim().takeUnless { it.isBlank() }?.let { sanitize(it, type) }
CellType.NUMERIC -> cell.numericCellValue.toInt()
CellType.BLANK -> null
else -> null
}
private fun sanitize(value: String, type: CodeListType?): String =
if (type == CodeListType.IsoCountryCodes && value == "c") "MK" // bug in Zugferd list, country code of NorthMacedonia is stated as "c" instead of "MK"
else value
private fun <T> Iterator<T>.toList(): List<T> =
this.asSequence().toList()
}

View File

@ -0,0 +1,75 @@
package net.codinux.invoicing.parser.genericode
import com.helger.genericode.Genericode10CodeListMarshaller
import com.helger.xml.serialize.read.DOMReader
import net.codinux.invoicing.parser.model.CodeListType
import net.codinux.invoicing.parser.model.Column
import net.codinux.invoicing.parser.model.Row
import net.codinux.log.logger
import java.io.File
import java.io.InputStream
import java.util.zip.ZipFile
class CefGenericodeCodelistsParser {
private val log by logger()
fun parse(zipFile: File): List<CodeList> =
ZipFile(zipFile).use { zip ->
zip.entries().toList().filter { it.isDirectory == false && it.name.endsWith(".gc", true) }
.mapNotNull { parse(zip.getInputStream(it), it.name) }
}
private fun parse(genericodeInputStream: InputStream, filename: String): CodeList? {
val doc = DOMReader.readXMLDOM(genericodeInputStream)
val marshaller = Genericode10CodeListMarshaller()
if (doc == null) {
log.info { "Could not read XML document from file $filename" }
return null
}
val codeListDoc = marshaller.read(doc)
if (codeListDoc == null) {
log.info { "Could not read Code List from file $filename" }
return null
}
val columnSet = codeListDoc.columnSet
val identification = codeListDoc.identification
val simpleCodeList = codeListDoc.simpleCodeList
val name = File(filename).nameWithoutExtension
val (version, canonicalUri, canonicalVersionUri) = Triple(identification?.version, identification?.canonicalUri, identification?.canonicalVersionUri)
val columns = columnSet?.columnChoice.orEmpty().filterIsInstance<com.helger.genericode.v10.Column>().mapIndexed { index, col -> Column(index, col.id!!, col.data?.type!!, col.shortNameValue!!) }
val rows = simpleCodeList?.row.orEmpty().map { row -> columns.map { column -> row.value.firstOrNull { (it.columnRef as? com.helger.genericode.v10.Column)?.id == column.id }?.simpleValueValue } }
return CodeList(getType(name), name, version, canonicalUri, canonicalVersionUri, columns, rows.map { Row(it) })
}
private fun getType(name: String): CodeListType = when (name) {
"Country" -> CodeListType.IsoCountryCodes
"Currency" -> CodeListType.IsoCurrencyCodes
"ICD" -> CodeListType.Iso_6523_IdentificationSchemeIdentifier
"1001" -> CodeListType.UN_1001_InvoiceType
"1153" -> CodeListType.UN_1153_ReferenceCode
"Text" -> CodeListType.UN_4451_TextSubjectCodeQualifier
"Payment" -> CodeListType.UN_4461_PaymentCodes
"5305" -> CodeListType.UN_5305_DutyOrTaxOrFeeCategory
"Allowance" -> CodeListType.UN_5189_AllowanceIdentificationCode
"Item" -> CodeListType.UN_7143_ItemTypeIdentificationCode
"Charge" -> CodeListType.UN_7161_SpecialServiceDescriptionCodes
"Unit" -> CodeListType.Units
"EAS" -> CodeListType.EAS
"VATEX" -> CodeListType.VATEX
"MIME" -> CodeListType.Mime
else -> throw IllegalArgumentException("No known Code List of name '$name' found")
}
}

View File

@ -0,0 +1,17 @@
package net.codinux.invoicing.parser.genericode
import net.codinux.invoicing.parser.model.CodeListType
import net.codinux.invoicing.parser.model.Column
import net.codinux.invoicing.parser.model.Row
class CodeList(
val type: CodeListType,
val name: String,
val version: String?,
val canonicalUri: String?,
val canonicalVersionUri: String?,
val columns: List<Column>,
val rows: List<Row>
) {
override fun toString() = "$name ${columns.joinToString { it.name }}, ${rows.size} rows"
}

View File

@ -0,0 +1,27 @@
package net.codinux.invoicing.parser.model
enum class CodeListType(val className: String, val usesFullList: Boolean, val usedInFields: List<String>) {
IsoCountryCodes("Country", true, listOf("BT-40", "BT-48", "BT-55", "BT-63", "BT-69", "BT-80", "BT-159")), // actually it's not only the full list, it's "extended"
IsoCurrencyCodes("Currency", true, listOf("BT-5", "BT-6")),
Iso_6523_IdentificationSchemeIdentifier("SchemeIdentifier", true, listOf("BT-29-1", "BT-30-1", "BT-46-1", "BT-47-1", "BT-60-1", "BT-61-1", "BT-71-1", "BT-157-1")), // = ICD
UN_1001_InvoiceType("InvoiceType", false, listOf("BT-3")), // original name: Document type, but in specification mostly called Invoice type
UN_1153_ReferenceCode("ReferenceType", true, listOf("BT-18-1", "BT-128-1")), // ReferenceCode, ReferenceCodeQualifier, ReferenceTypeCode, ReferenceCodeType
UN_2005_2475_EventTimeCode("TimeReferenceCode", false, listOf("BT-8")), // code list only in EN Excel file
UN_4451_TextSubjectCodeQualifier("InvoiceNoteSubjectCode", true, listOf("BT-21")), // tab Text
UN_4461_PaymentCodes("PaymentMeansCode", true, listOf("BT-81")), // tab Payment
UN_5189_AllowanceIdentificationCode("AllowanceReasonCode", false, listOf("BT-98", "BT-140")), // tab Allowance
UN_5305_DutyOrTaxOrFeeCategory("VatCategoryCode", false, listOf("BT-95", "BT-102", "BT-118", "BT-151")),
UN_7143_ItemTypeIdentificationCode("ItemTypeIdentificationCode", true, listOf("BT-158-1")), // tab Item
UN_7161_SpecialServiceDescriptionCodes("ChargeReasonCode", true, listOf("BT-105", "BT-145")), // tab Charge
Units("UnitOfMeasure", true, listOf("BT-130", "BT-150")), // UN/ECE Recommendation N°20 and UN/ECE Recommendation N°21 — Unit codes
EAS("ElectronicAddressSchemeIdentifier", true, listOf("BT-34-1", "BT-49-1")),
VATEX("VatExemptionReasonCode", true, listOf("BT-121")),
VatIdentifier("VatIdentifier", false, listOf("BT-31", "BT-48", "BT-63")), // code list only in EN Excel file
VatCategoryCode("VatCategoryCode", false, listOf("BT-95", "BT-102", "BT-118", "BT-151")), // code list only in EN Excel file
Mime("Mime", false, listOf("BT-125-1")),
}

View File

@ -0,0 +1,10 @@
package net.codinux.invoicing.parser.model
data class Column(
val index: Int,
val id: String,
val dataType: String,
val name: String = id,
) {
override fun toString() = "$dataType $name ($id)"
}

View File

@ -0,0 +1,24 @@
package net.codinux.invoicing.parser.model
class Row(
values: List<Any?>,
val isFrequentlyUsedValue: Boolean = false,
var enumName: String? = null
) {
val values: List<Any?> = values.toMutableList()
fun addValue(value: Any?) {
(values as? MutableList<Any?>)?.add(value)
}
fun addIsFrequentlyUsedValueCell() {
addValue(isFrequentlyUsedValue)
}
fun removeValueAtIndex(index: Int): Any? =
(values as? MutableList<Any?>)?.removeAt(index)
override fun toString() = values.joinToString()
}

View File

@ -0,0 +1,32 @@
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<!-- Insert the current time formatted as "yyyyMMdd'T'HHmmss" under
the key "bySecond" into the logger context. This value will be
available to all subsequent configuration elements. -->
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
<root level="ALL">
<appender-ref ref="STDOUT"/>
</root>
<!-- Apache FOP will flood otherwise the log so that test run crashes -->
<logger name="org.apache.fop" level="INFO">
<appender-ref ref="STDOUT"/>
</logger>
<logger name="org.apache.xmlgraphics.image.loader.spi.ImageImplRegistry" level="INFO">
<appender-ref ref="STDOUT"/>
</logger>
</configuration>

View File

@ -23,9 +23,14 @@ pdfboxTextExtractor=0.6.1
angusMailVersion=2.0.3
apachePoiVersion=5.3.0
kI18nVersion=0.5.0-SNAPSHOT
openHtmlToPdfVersion=1.1.22
jsoupVersion=1.18.1
phGenericodeVersion=7.1.3
klfVersion=1.6.2
lokiLogAppenderVersion=0.5.5
# only used for tests

View File

@ -30,4 +30,6 @@ include("e-invoice-domain")
include("invoice-creator")
include("e-invoice-spec-parser")
include("e-invoice-api")