001/* Copyright (C) 2014 konik.io
002 *
003 * This file is part of the Konik library.
004 *
005 * The Konik library is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * The Konik library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>.
017 */
018package io.konik.zugferd.unece.codes;
019
020import javax.xml.bind.annotation.XmlEnum;
021import javax.xml.bind.annotation.XmlType;
022
023/**
024 * = Tax Code
025 * 
026 * Code specifying a type of duty, tax or fee.
027 * 
028 * 
029 * @see http://www.unece.org/trade/untdid/d13b/tred/tred5153.htm[UN/EDIFACT 5153 Duty or tax or fee type name code]
030 */
031@XmlType(name = "TaxTypeCodeType")
032@XmlEnum
033public enum TaxCode {
034
035   /**
036    * A tax levied on the volume of petroleum being
037    * transacted.
038    */
039   AAA("Petroleum tax"),
040   /**
041    * Countervailing duty paid in cash prior to a formal
042    * finding of subsidization by Customs.
043    */
044   AAB("Provisional countervailing duty cash"),
045   /**
046    * Countervailing duty paid by posting a bond during an
047    * investigation period prior to a formal decision on
048    * subsidization by Customs.
049    */
050   AAC("Provisional countervailing duty bond"),
051   /**
052    * A tax levied on tobacco products.
053    */
054   AAD("Tobacco tax"),
055   /**
056    * General fee or tax for the use of energy.
057    */
058   AAE("Energy fee"),
059   /**
060    * A tax levied specifically on coffee products.
061    */
062   AAF("Coffee tax"),
063   /**
064    * A harmonized sales tax consisting of a goods and service
065    * tax, a Canadian provincial sales tax and, as applicable,
066    * a Quebec sales tax which is recoverable.
067    */
068   AAG("Harmonised sales tax, Canadian"),
069   /**
070    * A sales tax charged within the Canadian province of
071    * Quebec which is recoverable.
072    */
073   AAH("Quebec sales tax"),
074   /**
075    * A sales tax charged within Canadian provinces which is
076    * non-recoverable.
077    */
078   AAI("Canadian provincial sales tax"),
079   /**
080    * A tax levied on a replacement part, where the original
081    * part is returned.
082    */
083   AAJ("Tax on replacement part"),
084   /**
085    * Tax that is levied specifically on products containing
086    * mineral oil.
087    */
088   AAK("Mineral oil tax"),
089   /**
090    * To indicate a special type of tax.
091    */
092   AAL("Special tax"),
093   /**
094    * Duty applied to goods ruled to have been dumped in an
095    * import market at a price lower than that in the
096    * exporter's domestic market.
097    */
098   ADD("Anti-dumping duty"),
099   /**
100    * Tax required in Italy, which may be fixed or graduated
101    * in various circumstances (e.g. VAT exempt documents or
102    * bank receipts).
103    */
104   BOL("Stamp duty (Imposta di Bollo)"),
105   /**
106    * Levy imposed on agricultural products where there is a
107    * difference between the selling price between trading
108    * countries.
109    */
110   CAP("Agricultural levy"),
111   /**
112    * A tax that is levied on the value of the automobile.
113    */
114   CAR("Car tax"),
115   /**
116    * Italian Paper consortium tax.
117    */
118   COC("Paper consortium tax (Italy)"),
119   /**
120    * Tax related to a specified commodity, e.g. illuminants,
121    * salts.
122    */
123   CST("Commodity specific tax"),
124   /**
125    * Duties laid down in the Customs tariff, to which goods
126    * are liable on entering or leaving the Customs territory
127    * (CCC).
128    */
129   CUD("Customs duty"),
130   /**
131    * A duty on imported goods applied for compensate for
132    * subsidies granted to those goods in the exporting
133    * country.
134    */
135   CVD("Countervailing duty"),
136   /**
137    * Tax assessed for funding or assuring environmental
138    * protection or clean-up.
139    */
140   ENV("Environmental tax"),
141   /**
142    * Customs or fiscal authorities code to identify a
143    * specific or ad valorem levy on a specific commodity,
144    * applied either domestically or at time of importation.
145    */
146   EXC("Excise duty"),
147   /**
148    * Monetary rebate given to the seller in certain
149    * circumstances when agricultural products are exported.
150    */
151   EXP("Agricultural export rebate"),
152   /**
153    * Tax levied by the federal government on the manufacture
154    * of specific items.
155    */
156   FET("Federal excise tax"),
157   /**
158    * No tax levied.
159    */
160   FRE("Free"),
161   /**
162    * General tax for construction.
163    */
164   GCN("General construction tax"),
165   /**
166    * Tax levied on the final consumption of goods and
167    * services throughout the production and distribution
168    * chain.
169    */
170   GST("Goods and services tax"),
171   /**
172    * Tax of illuminants.
173    */
174   ILL("Illuminants tax"),
175   /**
176    * Tax assessed on imports.
177    */
178   IMP("Import tax"),
179   /**
180    * A tax levied based on an individual's ability to pay.
181    */
182   IND("Individual tax"),
183   /**
184    * Government assessed charge for permit to do business.
185    */
186   LAC("Business license fee"),
187   /**
188    * Local tax for construction.
189    */
190   LCN("Local construction tax"),
191   /**
192    * Fee levied on a vessel to pay for port navigation
193    * lights.
194    */
195   LDP("Light dues payable"),
196   /**
197    * Assessment charges on sale of goods or services by city,
198    * borough country or other taxing authorities below state
199    * or provincial level.
200    */
201   LOC("Local sales tax"),
202   /**
203    * Tax imposed for clean-up of leaky underground storage
204    * tanks.
205    */
206   LST("Lust tax"),
207   /**
208    * Levy on Common Agricultural Policy (European Union)
209    * goods used to compensate for fluctuating currencies
210    * between member states.
211    */
212   MCA("Monetary compensatory amount"),
213   /**
214    * Duty paid and held on deposit, by Customs, during an
215    * investigation period prior to a final decision being
216    * made on any aspect related to imported goods (except
217    * valuation) by Customs.
218    */
219   MCD("Miscellaneous cash deposit"),
220   /**
221    * Unspecified, miscellaneous tax charges.
222    */
223   OTH("Other taxes"),
224   /**
225    * Anti-dumping duty paid by posting a bond during an
226    * investigation period prior to a formal decision on
227    * dumping by Customs.
228    */
229   PDB("Provisional duty bond"),
230   /**
231    * Anti-dumping duty paid in cash prior to a formal finding
232    * of dumping by Customs.
233    */
234   PDC("Provisional duty cash"),
235   /**
236    * Duties laid down in the Customs tariff, to which goods
237    * are liable on entering or leaving the Customs territory
238    * falling under a preferential regime such as Generalised
239    * System of Preferences (GSP).
240    */
241   PRF("Preference duty"),
242   /**
243    * Special tax for construction.
244    */
245   SCN("Special construction tax"),
246   /**
247    * Social securities share of the invoice amount to be paid
248    * directly to the social securities collector.
249    */
250   SSS("Shifted social securities"),
251   /**
252    * All applicable sale taxes by authorities at the state or
253    * provincial level, below national level.
254    */
255   STT("State/provincial sales tax"),
256   /**
257    * Duty suspended or deferred from payment.
258    */
259   SUP("Suspended duty"),
260   /**
261    * A tax or duty applied on and in addition to existing
262    * duties and taxes.
263    */
264   SUR("Surtax"),
265   /**
266    * Wage tax share of the invoice amount to be paid directly
267    * to the tax collector(s office).
268    */
269   SWT("Shifted wage tax"),
270   /**
271    * A tax levied based on the type of alcohol being
272    * obtained.
273    */
274   TAC("Alcohol mark tax"),
275   /**
276    * The summary amount of all taxes.
277    */
278   TOT("Total"),
279   /**
280    * Tax levied on the total sales/turnover of a corporation.
281    */
282   TOX("Turnover tax"),
283   /**
284    * Tax levied based on the vessel's net tonnage.
285    */
286   TTA("Tonnage taxes"),
287   /**
288    * Duty paid and held on deposit, by Customs, during an
289    * investigation period prior to a formal decision on
290    * valuation of the goods being made.
291    */
292   VAD("Valuation deposit"),
293   /**
294    * A tax on domestic or imported goods applied to the value
295    * added at each stage in the production/distribution
296    * cycle.
297    */
298   VAT("Value added tax"),
299
300   /** The zf insurance tax, which is temporary */
301   ZF_INSURANCE_TAX("Insurance Tax");
302
303   /** The description for the tax code */
304   private final String description;
305
306   private TaxCode(String description) {
307      this.description = description;
308   }
309
310   /**
311    * Gets the code.
312    *
313    * @return the code
314    */
315   public String getCode() {
316      return name();
317   }
318
319   /**
320    * Gets the description.
321    *
322    * @return the description
323    */
324   public String getDescription() {
325      return description;
326   }
327
328   /**
329    * Gets the type by code.
330    *
331    * @param description the enum code
332    * @return the type by code or {@link IllegalArgumentException}
333    */
334   public static TaxCode getByCode(String description) {
335      return valueOf(description);
336   }
337
338   @Override
339   public String toString() {
340      return new StringBuilder().append("[").append(getCode()).append("] ").append(description).toString();
341   }
342}