TreasuryConfig.java
package com.tradecloud.domain.configuration;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.model.deal.AutoLinkReversalDealOptions;
import com.tradecloud.domain.model.deal.ExtensionDealCreationTrigger;
import com.tradecloud.domain.treasury.*;
import org.joda.time.Period;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
@Entity
@Table(name = "treasuryconfig")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "TreasuryConfig")
public final class TreasuryConfig extends PersistenceBase {
public static final String REQUIRE_FEC_AUTH_PROPERTY = "treasury.requireFECAuthorization";
public static final String PREVENT_LINKED_DEAL_TO_BE_AUDITED = "treasury.preventLinkedDealToBeAudited";
public static final String EXPIRY_PERIOD = "treasury.dealExpiryPeriod";
public static final String EXPIRY_RATES_PERIOD = "treasury.dealRateExpiryPeriod";
public static final String NON_BUSINESS_DAYS_OF_WEEK = "treasury.nonBusinessDaysOfWeek";
public static final String NON_BUSINESS_DAYS_OF_MONTH = "treasury.nonBusinessDaysOfMonth";
public static final String NON_BUSINESS_DAYS_OF_YEAR = "treasury.nonBusinessDaysOfYear";
public static final String NON_BUSINESS_DAY_RECALCULATION_POLICY = "treasury.nonBusinessDayRecalculationPolicy";
public static final String ALLOW_DEAL_SETTLEMENT_BEFORE_INVOICE = "treasury.allowDealSettlementBeforeInvoice";
public static final String BULKING_POLICY = "treasury.bulkingPolicy";
public static final String BULKING_POLICY_DATE_RANGE = "treasury.bulkingPolicyDateRange";
public static final String BULKING_POLICY_DAY_OF_WEEK = "treasury.bulkingPolicyDayOfWeek";
public static final String BULKING_POLICY_DAY_OF_MONTH = "treasury.bulkingPolicyDayOfMonth";
public static final String WARN_OF_GROUP_DEAL_AMOUNT_AMENDMENTS = "treasury.warnOfGroupDealAmountAmendments";
public static final String GROUP_DEAL_AMOUNT_AMENDMENTS = "treasury.groupDealAmountAmendments";
public static final String MAINTAIN_ORIGINAL_DEAL_RATES = "treasury.maintainOriginalDealRates";
public static final String ALLOW_ZERO_LINKS = "treasury.allowedZeroLinks";
public static final String ENABLE_DIVISION_SELECTION_FOR_FEC = "treasury.enableDivisionSelectionForFEC";
public static final String AUTO_LINK_REVERSAL_DEALS = "treasury.autoLinkReversalDeals";
public static final String AUTO_LINK_CONFIG = "treasury.autoLinkConfig";
public static final String AUTO_LINK_STRATEGY = "treasury.autoLinkStrategy";
public static final String AUTO_LINK_ON_DEAL_STATUS = "treasury.autoLinkOnDealStatus";
public static final String SURRENDER_MATURED_FEC = "treasury.surrenderMaturedFEC";
public static final String REPORT_SHIPMENT_DATE_LABEL = "treasury.reportShipmentDateLabel";
public static final String CLIENT_NAME_MENU_LABEL = "treasury.clientNameMenuLabel";
public static final String LINK_DEAL_FEC_WITH_DIFF_ORG_UNIT = "treasury.linkDealToFecWithDiffOrgUnit";
public static final String DEAL_ORG_UNIT_TIER_CODE = "treasury.displayOrganisationUnitLabel";
public static final String ACCEPT_INTEGRATED_MATURITY_DATE = "treasury.acceptIntegratedMaturityDate";
public static final String REQUIRES_FEC_CONFIRM_SCREEN = "treasury.requiresFECConfirmScreen";
public static final String INTEGRATE_TTM_TRADECLOUD = "treasury.integrateTTMTradecloud";
public static final String MATURITY_TERM = "treasury.maturityTerm";
public static final String EXTENSION_DEAL_CREATION_TRIGGER = "treasury.extensionDealCreationTrigger";
public static final String ALLOW_QUOTED_DEALS_TO_LINK_TO_FEC = "treasury.allowQuotedDealsToLinkToFec";
public static final String ALLOW_PARTIAL_DEAL_LINK_TO_FEC = "treasury.allowPartialDealLinkToFec";
public static final String LINK_EXTENDED_FEC_AMOUNT = "treasury.linkExtendedFecAmount";
public static final String ALLOW_MORE_THAN_DEAL_AMOUNT_ALLOCATION = "treasury.allowMoreThanDealAmountAllocation";
public static final String FEC_ORG_UNIT_TIER_CODE = "treasury.FECOrgUnitTierCode";
public static final String DEAL_ORG_UNIT_LABEL = "treasury.DealOrgUnitLabel";
public static final String APPLY_FEC_COSTING_RATE = "treasury.applyFecCostingRate";
public static final String CONFIRM_MULTIPLE_FEC = "treasury.confirmMultipleFEC";
public static final String VALIDATE_SHIPMENT_INVOICE = "treasury.validateShipmentInvoice";
public static final String SETTLEMENT_DATE_LABEL = "treasury.SettlementDateLabel";
public static final String REPORT_PREFIX = "treasury.reportPrefix";
public static final String REPORT_FEC_LINKED_TO_ORDERS_BY_ORG = "treasury.fecLinkedToOrdersByOrg";
public static final String HEDGE_DOCUMENT_BY_CLIENT = "treasury.report.hedgeDocumentByClient";
public static final String INTEGRATE_PAYMENT = "treasury.payment.integrate";
public static final String DEAL_SEARCH_SORTBY = "treasury.deal.sortby";
private static String rateService = System.getenv("rateservice");
// map to the same property for now
public static final String EDIT_MATURED_FEC = "treasury.surrenderMaturedFEC";
@XmlTransient
private static String propertiesFileName = "treasuryConfig.properties";
private static Currency defaultLocalCurrency = Currency.getInstance("ZAR");
private static int maxSearchResultsPerPage = 10;
public static String divisionServiceRootRESTUrl;
public static String allDivisionsRESTUrl;
public static String ratesServicePath;
public static final String INTERNAL_DEALS_RATE = "internal-deals";
public static final String LINKED_FEC_RATE = "linked-FEC-rates";
public static final String LINKED_FEC_INTERNAL_DEALS_RATE = "linked_FEC_internal_deals_rates";
public static final String ESTIMATE_COSTING_CONFIG = "estimated_costing_config";
public static final String ACTUAL_COSTING_CONFIG = "actual_costing_config";
public static final String FOREX_GROUP_DUTIES = "forex_group_Duties";
public static final String FOREX_GROUP_MERCHANDISE = "forex_group_Merchandise";
//Below is the
private boolean surrenderMaturedFEC;
private boolean allowMoreThanDealAmountAllocation;
private boolean linkExtendedFecAmount;
private boolean allowPartialDealLinkToFec;
private boolean allowQuotedDealsToLinkToFec;
private boolean integrateTTMTradecloud;
private boolean acceptIntegratedMaturityDate;
private boolean linkDealToFecWithDiffOrgUnit;
private boolean autoLinkOnDealStatus;
//private boolean autoLinkReversalDeals;
@Enumerated(value = EnumType.STRING)
private AutoLinkReversalDealOptions autoLinkReversalDealOptions;
private boolean enableDivisionSelectionForFEC;
private boolean requiresFECConfirmScreen;
private boolean maintainOriginalDealRates;
private boolean warnOfGroupDealAmountAmendments;
private boolean groupDealAmountAmendments;
private boolean allowDealSettlementBeforeInvoice;
private boolean preventLinkedDealToBeAudited;
private boolean requireFECAuthorization;
private boolean allowedZeroLinks;
private int dealExpiryPeriodInHours;
@Enumerated(value = EnumType.STRING)
private ExtensionDealCreationTrigger extensionDealCreationTrigger;
@Enumerated(value = EnumType.STRING)
private AutoLinkConfig autoLinkConfig;
@Enumerated(value = EnumType.STRING)
private AutoLinkStrategy autoLinkStrategy;
//day of the month
private int bulkingPolicyDayOfMonth;
private int dealRateExpiryPeriodInHours;
private int maturityTerm;
@Enumerated(value = EnumType.STRING)
private BulkingPolicyDateRange bulkingPolicyDateRange;
//sat to fri just the first 3 letters.
private String bulkingPolicyDayOfWeek;
private String reportShipmentDateLabel;
@Enumerated(value = EnumType.STRING)
private BulkingPolicy bulkingPolicy;
//sat to fri just the first 3 letters.
@ElementCollection
@CollectionTable(name = "nonbusinessdaysofweek", joinColumns = @JoinColumn(name = "treasuryconfig_id"))
private List<String> nonBusinessDaysOfWeek;
//handled by P::ublicHolidayConfig.
//private List nonBusinessDaysOfMonth;
//obsolute is is not used
//private Set nonBusinessDaysOfYear;
;
//not sure if we need this.
// private RateSourceType rateSource;
private String displayOrganisationUnitLabel;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "treasuryconfig_currencies", joinColumns = {@JoinColumn(name = "treasuryconfig_id", unique = true)},
inverseJoinColumns = {@JoinColumn(name = "currencies_id", unique = true)})
private Set<com.tradecloud.domain.common.Currency> currencies = new HashSet<>();
@ManyToMany
@JoinTable(name = "treasuryconfig_banks", joinColumns = {@JoinColumn(name = "treasuryconfig_id", unique = true)},
inverseJoinColumns = {@JoinColumn(name = "banks_id", unique = false)})
private List<TreasuryBank> banks;
private String clientNameMenuLabel;
static {
Properties properties = retrieveProperties(propertiesFileName);
populateFrom(properties);
}
public static Properties retrieveProperties(String propertiesFileName) {
InputStream inputStream = TreasuryConfig.class.getResourceAsStream(propertiesFileName);
Properties properties = new Properties();
try {
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
public static void populateFrom(Properties properties) {
divisionServiceRootRESTUrl = properties.getProperty("divisionServiceRootRESTUrl");
allDivisionsRESTUrl = properties.getProperty("allDivisionsRESTUrl");
ratesServicePath = rateService != null ? rateService + properties.getProperty("ratesServiceEnvPath") :
properties.getProperty("ratesServicePath");
}
// Use GlobalClientConfig.getCurrency
@Deprecated
public static Currency getDefaultLocalCurrency() {
return defaultLocalCurrency;
}
public static int getMaxSearchResultsPerPage() {
return maxSearchResultsPerPage;
}
public static Period extractExpiryPeriod(String expiryPeriodStr) {
int expiryPeriodInt = Integer.parseInt(expiryPeriodStr.split(" ")[0].trim());
return Period.hours(expiryPeriodInt);
}
public boolean isSurrenderMaturedFEC() {
return surrenderMaturedFEC;
}
public void setSurrenderMaturedFEC(boolean surrenderMaturedFEC) {
this.surrenderMaturedFEC = surrenderMaturedFEC;
}
public boolean isAllowMoreThanDealAmountAllocation() {
return allowMoreThanDealAmountAllocation;
}
public void setAllowMoreThanDealAmountAllocation(boolean allowMoreThanDealAmountAllocation) {
this.allowMoreThanDealAmountAllocation = allowMoreThanDealAmountAllocation;
}
public boolean isLinkExtendedFecAmount() {
return linkExtendedFecAmount;
}
public void setLinkExtendedFecAmount(boolean linkExtendedFecAmount) {
this.linkExtendedFecAmount = linkExtendedFecAmount;
}
public boolean isAllowPartialDealLinkToFec() {
return allowPartialDealLinkToFec;
}
public void setAllowPartialDealLinkToFec(boolean allowPartialDealLinkToFec) {
this.allowPartialDealLinkToFec = allowPartialDealLinkToFec;
}
public boolean isAllowQuotedDealsToLinkToFec() {
return allowQuotedDealsToLinkToFec;
}
public void setAllowQuotedDealsToLinkToFec(boolean allowQuotedDealsToLinkToFec) {
this.allowQuotedDealsToLinkToFec = allowQuotedDealsToLinkToFec;
}
public boolean isIntegrateTTMTradecloud() {
return integrateTTMTradecloud;
}
public void setIntegrateTTMTradecloud(boolean integrateTTMTradecloud) {
this.integrateTTMTradecloud = integrateTTMTradecloud;
}
public boolean isAcceptIntegratedMaturityDate() {
return acceptIntegratedMaturityDate;
}
public void setAcceptIntegratedMaturityDate(boolean acceptIntegratedMaturityDate) {
this.acceptIntegratedMaturityDate = acceptIntegratedMaturityDate;
}
public boolean isLinkDealToFecWithDiffOrgUnit() {
return linkDealToFecWithDiffOrgUnit;
}
public void setLinkDealToFecWithDiffOrgUnit(boolean linkDealToFecWithDiffOrgUnit) {
this.linkDealToFecWithDiffOrgUnit = linkDealToFecWithDiffOrgUnit;
}
public boolean isAutoLinkOnDealStatus() {
return autoLinkOnDealStatus;
}
public void setAutoLinkOnDealStatus(boolean autoLinkOnDealStatus) {
this.autoLinkOnDealStatus = autoLinkOnDealStatus;
}
public AutoLinkReversalDealOptions getAutoLinkReversalDealOptions() {
return autoLinkReversalDealOptions;
}
public void setAutoLinkReversalDealOptions(AutoLinkReversalDealOptions autoLinkReversalDealOptions) {
this.autoLinkReversalDealOptions = autoLinkReversalDealOptions;
}
public boolean isEnableDivisionSelectionForFEC() {
return enableDivisionSelectionForFEC;
}
public void setEnableDivisionSelectionForFEC(boolean enableDivisionSelectionForFEC) {
this.enableDivisionSelectionForFEC = enableDivisionSelectionForFEC;
}
public boolean isRequiresFECConfirmScreen() {
return requiresFECConfirmScreen;
}
public void setRequiresFECConfirmScreen(boolean requiresFECConfirmScreen) {
this.requiresFECConfirmScreen = requiresFECConfirmScreen;
}
public boolean isMaintainOriginalDealRates() {
return maintainOriginalDealRates;
}
public void setMaintainOriginalDealRates(boolean maintainOriginalDealRates) {
this.maintainOriginalDealRates = maintainOriginalDealRates;
}
public boolean isWarnOfGroupDealAmountAmendments() {
return warnOfGroupDealAmountAmendments;
}
public void setWarnOfGroupDealAmountAmendments(boolean warnOfGroupDealAmountAmendments) {
this.warnOfGroupDealAmountAmendments = warnOfGroupDealAmountAmendments;
}
public boolean isGroupDealAmountAmendments() {
return groupDealAmountAmendments;
}
public void setGroupDealAmountAmendments(boolean groupDealAmountAmendments) {
this.groupDealAmountAmendments = groupDealAmountAmendments;
}
public boolean isAllowDealSettlementBeforeInvoice() {
return allowDealSettlementBeforeInvoice;
}
public void setAllowDealSettlementBeforeInvoice(boolean allowDealSettlementBeforeInvoice) {
this.allowDealSettlementBeforeInvoice = allowDealSettlementBeforeInvoice;
}
public boolean isPreventLinkedDealToBeAudited() {
return preventLinkedDealToBeAudited;
}
public void setPreventLinkedDealToBeAudited(boolean preventLinkedDealToBeAudited) {
this.preventLinkedDealToBeAudited = preventLinkedDealToBeAudited;
}
public boolean isRequireFECAuthorization() {
return requireFECAuthorization;
}
public void setRequireFECAuthorization(boolean requireFECAuthorization) {
this.requireFECAuthorization = requireFECAuthorization;
}
public boolean isAllowedZeroLinks() {
return allowedZeroLinks;
}
public void setAllowedZeroLinks(boolean allowedZeroLinks) {
this.allowedZeroLinks = allowedZeroLinks;
}
public int getDealExpiryPeriodInHours() {
return dealExpiryPeriodInHours;
}
public void setDealExpiryPeriodInHours(int dealExpiryPeriodInHours) {
this.dealExpiryPeriodInHours = dealExpiryPeriodInHours;
}
public ExtensionDealCreationTrigger getExtensionDealCreationTrigger() {
return extensionDealCreationTrigger;
}
public void setExtensionDealCreationTrigger(ExtensionDealCreationTrigger extensionDealCreationTrigger) {
this.extensionDealCreationTrigger = extensionDealCreationTrigger;
}
public AutoLinkConfig getAutoLinkConfig() {
return autoLinkConfig;
}
public void setAutoLinkConfig(AutoLinkConfig autoLinkConfig) {
this.autoLinkConfig = autoLinkConfig;
}
public AutoLinkStrategy getAutoLinkStrategy() {
return autoLinkStrategy;
}
public void setAutoLinkStrategy(AutoLinkStrategy autoLinkStrategy) {
this.autoLinkStrategy = autoLinkStrategy;
}
public int getBulkingPolicyDayOfMonth() {
return bulkingPolicyDayOfMonth;
}
public void setBulkingPolicyDayOfMonth(int bulkingPolicyDayOfMonth) {
this.bulkingPolicyDayOfMonth = bulkingPolicyDayOfMonth;
}
public int getDealRateExpiryPeriodInHours() {
return dealRateExpiryPeriodInHours;
}
public void setDealRateExpiryPeriodInHours(int dealRateExpiryPeriodInHours) {
this.dealRateExpiryPeriodInHours = dealRateExpiryPeriodInHours;
}
public int getMaturityTerm() {
return maturityTerm;
}
public void setMaturityTerm(int maturityTerm) {
this.maturityTerm = maturityTerm;
}
public BulkingPolicyDateRange getBulkingPolicyDateRange() {
return bulkingPolicyDateRange;
}
public void setBulkingPolicyDateRange(BulkingPolicyDateRange bulkingPolicyDateRange) {
this.bulkingPolicyDateRange = bulkingPolicyDateRange;
}
public String getBulkingPolicyDayOfWeek() {
return bulkingPolicyDayOfWeek;
}
public void setBulkingPolicyDayOfWeek(String bulkingPolicyDayOfWeek) {
this.bulkingPolicyDayOfWeek = bulkingPolicyDayOfWeek;
}
public String getReportShipmentDateLabel() {
return reportShipmentDateLabel;
}
public void setReportShipmentDateLabel(String reportShipmentDateLabel) {
this.reportShipmentDateLabel = reportShipmentDateLabel;
}
public BulkingPolicy getBulkingPolicy() {
return bulkingPolicy;
}
public void setBulkingPolicy(BulkingPolicy bulkingPolicy) {
this.bulkingPolicy = bulkingPolicy;
}
public List<String> getNonBusinessDaysOfWeek() {
return nonBusinessDaysOfWeek;
}
public void setNonBusinessDaysOfWeek(List<String> nonBusinessDaysOfWeek) {
this.nonBusinessDaysOfWeek = nonBusinessDaysOfWeek;
}
public String getDisplayOrganisationUnitLabel() {
return displayOrganisationUnitLabel;
}
public void setDisplayOrganisationUnitLabel(String displayOrganisationUnitLabel) {
this.displayOrganisationUnitLabel = displayOrganisationUnitLabel;
}
public Set<com.tradecloud.domain.common.Currency> getCurrencies() {
return currencies;
}
public void setCurrencies(Set<com.tradecloud.domain.common.Currency> currencies) {
this.currencies = currencies;
}
public List<TreasuryBank> getBanks() {
return banks;
}
public void setBanks(List<TreasuryBank> banks) {
this.banks = banks;
}
public String getClientNameMenuLabel() {
return clientNameMenuLabel;
}
public void setClientNameMenuLabel(String clientNameMenuLabel) {
this.clientNameMenuLabel = clientNameMenuLabel;
}
}