/* Copyright (C) 2014 konik.io * * This file is part of the Konik library. * * The Konik library is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * The Konik library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with the Konik library. If not, see <http://www.gnu.org/licenses/>. */ package io.konik.zugferd.unece.codes; import javax.xml.bind.annotation.XmlType; /** * = The Tax Category Code. * * Based on 5305 Duty or tax or fee category code * * @see http://www.unece.org/trade/untdid/d13b/tred/tred5305.htm[UN/EDIFACT 5305 Duty or tax or fee category code^] * */ @XmlType(name = "TaxCategoryCodeType") public enum TaxCategory { /** * Mixed tax rate * * Code specifying that the rate is based on mixed tax. **/ A("Mixed tax rate", "Code specifying that the rate is based on mixed tax."), /** * Lower rate * * Tax rate is lower than standard rate. **/ AA("Lower rate", "Tax rate is lower than standard rate."), /** * Exempt for resale * * A tax category code indicating the item is tax exempt * when the item is bought for future resale. **/ AB("Exempt for resale", "A tax category code indicating the item is tax exempt when the item is bought for future resale."), /** * Value Added Tax (VAT) not now due for payment * * A code to indicate that the Value Added Tax (VAT) amount * which is due on the current invoice is to be paid on * receipt of a separate VAT payment request. **/ AC( "Value Added Tax (VAT) not now due for payment", " A code to indicate that the Value Added Tax (VAT) amount which is due on the current invoice is to be paid on receipt of a separate VAT payment request."), /** * Value Added Tax (VAT) due from a previous invoice * * A code to indicate that the Value Added Tax (VAT) amount * of a previous invoice is to be paid. **/ AD("Value Added Tax (VAT) due from a previous invoice", "A code to indicate that the Value Added Tax (VAT) amount of a previous invoice is to be paid."), /** * VAT Reverse Charge * * Code specifying that the standard VAT rate is levied * from the invoicee. **/ AE("VAT Reverse Charge", "Code specifying that the standard VAT rate is levied from the invoicee."), /** * Transferred (VAT) * * VAT not to be paid to the issuer of the invoice but * directly to relevant tax authority. **/ B("Transferred (VAT)", "VAT not to be paid to the issuer of the invoice but directly to relevant tax authority."), /** * Duty paid by supplier * * Duty associated with shipment of goods is paid by the * supplier; customer receives goods with duty paid. **/ C("Duty paid by supplier", "Duty associated with shipment of goods is paid by the supplier; customer receives goods with duty paid."), /** * Exempt from tax * * Code specifying that taxes are not applicable. **/ E("Exempt from tax", "Code specifying that taxes are not applicable."), /** * Free export item, tax not charged * * Code specifying that the item is free export and taxes * are not charged. **/ G("Free export item, tax not charged", "Code specifying that the item is free export and taxes are not charged."), /** * Higher rate * * Code specifying a higher rate of duty or tax or fee. **/ H("Higher rate", "Code specifying a higher rate of duty or tax or fee."), /** * Intra-Community Supply * * Code specifying that the VAT rate is levied from the invoicee for Intra-Community supplies. **/ IC("Intra-Community Supply", "Code specifying that the VAT rate is levied from the invoicee for Intra-Community supplies."), /** * Services outside scope of tax * * Code specifying that taxes are not applicable to the * services. **/ O("Services outside scope of tax", "Code specifying that taxes are not applicable to the services."), /** * Standard rate * * Code specifying the standard rate. **/ S("Standard rate", "Code specifying the standard rate."), /** * Zero rated goods * * Code specifying that the goods are at a zero rate. **/ Z("Zero rated goods", "Code specifying that the goods are at a zero rate."); private final String description; private final String detailedDescription; private TaxCategory(String description, String detailedDescription) { this.description = description; this.detailedDescription = detailedDescription; } /** * Gets the code. * * @return the code */ public String getCode() { return name(); } /** * Gets the description. * * @return the description */ public String getDescription() { return description; } /** * Gets the detailed description. * * @return the detailed description */ public String getDetailedDescription() { return detailedDescription; } /** * Retrieves a TaxCategoryCode the by the given code. * * @param code the code * @return the by code */ public static TaxCategory getByCode(String code) { return valueOf(code); } @Override public String toString() { return new StringBuilder().append("[").append(getCode()).append("] ").append(description).toString(); } }