ItemInterface.java

package com.tradecloud.domain.item;

import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.common.ProductProperty;
import com.tradecloud.domain.configuration.clearing.za.PenaltyType;
import com.tradecloud.domain.configuration.clearing.za.TypeOfGoods;
import com.tradecloud.domain.duties.*;
import com.tradecloud.domain.model.ordermanagement.ProductState;
import com.tradecloud.domain.model.organisationalunit.Brand;
import com.tradecloud.domain.place.Country;
import com.tradecloud.domain.place.NamedPlace;
import com.tradecloud.domain.sabs.SABSTariff;
import com.tradecloud.domain.supplier.OrganisationalUnitSupplier;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Set;

public interface ItemInterface {

    void setSchedule1Part1A(Schedule1Part1A schedule1Part1A);

    Schedule1Part2A getSchedule1Part2A();

    void setSchedule1Part2A(Schedule1Part2A schedule1Part2A);

    Schedule1Part2B getSchedule1Part2B();

    void setSchedule1Part2B(Schedule1Part2B schedule1Part2B);

    Schedule2Part1 getSchedule2Part1();

    void setSchedule2Part1(Schedule2Part1 schedule2Part1);

    Schedule2Part2 getSchedule2Part2();

    void setSchedule2Part2(Schedule2Part2 schedule2Part2);

    Schedule1Part3E getSchedule1Part3E();

    void setSchedule1Part3E(Schedule1Part3E schedule1Part3E);

    Schedule1Part1A getSchedule1Part1A();

    Schedule1Part7 getSchedule1Part7();

    void setSchedule1Part7(Schedule1Part7 schedule1Part7);

    Schedule4Part1 getSchedule4Part1();

    void setSchedule4Part1(Schedule4Part1 schedule4Part1);

    void setSchedule3Part1(Schedule3Part1 schedule3Part1);

    Schedule3Part1 getSchedule3Part1();

    WeightUnitOfMeasure getWeightUOM();

    void setWeightUOM(WeightUnitOfMeasure weightUOM);

    BigDecimal getUnitWeight();

    void setSarsTariffUpdateReason(String sarsTariffUpdateReason);

    String getSarsTariffUpdateReason();

    boolean isIntegrated();

    void setState(ProductState productState);

    BigDecimal getUnitVolume();

    VolumeUnitOfMeasure getVolumeUOM();

    void setVolumeUOM(VolumeUnitOfMeasure volumeUOM);

    boolean isLineItem();

    BigDecimal getUnitQuantity();

    BigDecimal getPackageWeight();

    Country getCountryOfOrigin();

    void setCountryOfOrigin(Country country);

    BigDecimal getUnitLength();

    BigDecimal getUnitHeight();

    BigDecimal getUnitWidth();

    BigDecimal getUnitsPerPackage();

    BigDecimal getPackageLength();

    BigDecimal getPackageWidth();

    BigDecimal getPackageHeight();

    BigDecimal getPackageVolume();

    void setUnitWeight(BigDecimal unitWeight);

    void setPackageWeight(BigDecimal packageWeight);

    void setUnitVolume(BigDecimal unitVolume);

    void setPackageVolume(BigDecimal packageVolume);

    void setPackageLength(BigDecimal packageLength);

    void setPackageWidth(BigDecimal packageWidth);

    void setPackageHeight(BigDecimal packageHeight);

    void setUnitLength(BigDecimal unitLength);

    void setUnitWidth(BigDecimal unitWidth);

    void setUnitHeight(BigDecimal unitHeight);

    void setBarcode(String barcode);

    String getBarcode();

    void setUnitPrice(BigDecimal unitPrice);

    BigDecimal getUnitPrice();

    Currency getCurrency();

    Date getAddedToOrderDate();

    String getOrganisationalUnitCode();

    String getCode();

    void setCode(String code);

    void setValueDeterminationNumber(ValueDeterminationNumber valueDeterminationNumber);

    ValueDeterminationNumber getValueDeterminationNumber();

    default ItemType getItemType() {
        return null;
    }

    String getDescription();

    default void setItemType(ItemType itemType) {

    }

    OrganisationalUnitSupplier getSupplier();

    String getSupplierReference();

    UnitType getUnitType();

    SABSTariff getSabsTariff();

    PackageType getPackageType();

    void setItacPermit(ItacPermit itacPermit);

    ItacPermit getItacPermit();

    boolean applyItacPermit();

    Set<ProductProperty> getProperties();

    BigDecimal getPenaltyAmount();

    void setPenaltyAmount(BigDecimal penaltyAmount);

    void setTypeOfGoods(TypeOfGoods typeOfGoods);

    TypeOfGoods getTypeOfGoods();

    PenaltyType getPenaltyType();

    void setPenaltyType(PenaltyType penaltyType);

    Long getTemplateId();

    void setTemplateId(Long templateId);

    boolean inTariffiedState();

    boolean isElc();

    Long getId();

    NamedPlace getFactory();

    void setBrand(Brand brand);

    Brand getBrand();

    String getImplementationType();
}