BondedBoeLineEditDto.java
package com.tradecloud.domain.document.invoice.bonded;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class BondedBoeLineEditDto implements Serializable {
private final String rowKey = UUID.randomUUID().toString();
@Setter
private Long id;
@Setter
private Integer lineNumber;
@Setter
private Integer previousLineNumber;
@Setter
private String orderReference;
@Setter
private String itemReference;
@Setter
private String lrnNumber;
@Setter
private String mrnNumber;
@Setter
private String previousMrnNumber;
@Setter
private Date billOfEntryDate;
@Setter
private String cpcCode;
@Setter
private String itacPermit;
@Setter
private BigDecimal customsValue;
@Setter
private String customsValueCurrency;
@Setter
private BigDecimal statUnitQty;
@Setter
private String statUnitCode;
@Setter
private BigDecimal statUnit2Qty;
@Setter
private String statUnit2Code;
@Setter
private BigDecimal statUnit3Qty;
@Setter
private String statUnit3Code;
@Setter
private String dutyCountryOfOrigin;
@Setter
private String dutyTariffCode;
@Setter
private List<BondedBoeLineCostDto> costs = new ArrayList<>();
// fixed cost columns (for UI convenience)
@Setter
private BigDecimal customsVatAmount;
@Setter
private BigDecimal customsDutyAmount;
@Setter
private BigDecimal documentationFeeAmount;
public String getRowKey() {
return rowKey;
}
public Long getId() {
return id;
}
public Integer getLineNumber() {
return lineNumber;
}
public Integer getPreviousLineNumber() {
return previousLineNumber;
}
public String getOrderReference() {
return orderReference;
}
public String getItemReference() {
return itemReference;
}
public String getLrnNumber() {
return lrnNumber;
}
public String getMrnNumber() {
return mrnNumber;
}
public String getPreviousMrnNumber() {
return previousMrnNumber;
}
public Date getBillOfEntryDate() {
return billOfEntryDate;
}
public String getCpcCode() {
return cpcCode;
}
public String getItacPermit() {
return itacPermit;
}
public BigDecimal getCustomsValue() {
return customsValue;
}
public String getCustomsValueCurrency() {
return customsValueCurrency;
}
public BigDecimal getStatUnitQty() {
return statUnitQty;
}
public String getStatUnitCode() {
return statUnitCode;
}
public BigDecimal getStatUnit2Qty() {
return statUnit2Qty;
}
public String getStatUnit2Code() {
return statUnit2Code;
}
public BigDecimal getStatUnit3Qty() {
return statUnit3Qty;
}
public String getStatUnit3Code() {
return statUnit3Code;
}
public String getDutyCountryOfOrigin() {
return dutyCountryOfOrigin;
}
public String getDutyTariffCode() {
return dutyTariffCode;
}
public BigDecimal getCustomsVatAmount() {
return customsVatAmount;
}
public BigDecimal getCustomsDutyAmount() {
return customsDutyAmount;
}
public BigDecimal getDocumentationFeeAmount() {
return documentationFeeAmount;
}
public List<BondedBoeLineCostDto> getCosts() {
if (costs == null) {
costs = new ArrayList<>();
}
return costs;
}
/**
* Required by BondedServiceProviderInvoiceRepositoryImpl
* Populates the fixed columns from the costs list.
*/
public void populateFixedCostsFromCosts() {
customsVatAmount = null;
customsDutyAmount = null;
documentationFeeAmount = null;
if (costs == null || costs.isEmpty()) {
return;
}
for (BondedBoeLineCostDto c : costs) {
if (c == null) continue;
String costLine = c.getCostLine();
if (costLine == null) continue;
BigDecimal amt = c.getInvoiceAmount();
if (amt == null) continue;
String norm = costLine.trim().toUpperCase();
if ("DISBURSEMENTS.CUSTOMS VAT".equals(norm) || norm.endsWith("CUSTOMS VAT")) {
customsVatAmount = safeAdd(customsVatAmount, amt);
} else if ("DISBURSEMENTS.CUSTOMS DUTY".equals(norm) || norm.endsWith("CUSTOMS DUTY")) {
customsDutyAmount = safeAdd(customsDutyAmount, amt);
} else if ("CUSTOMSDOCUMENTATIONFEE".equals(norm)
|| norm.contains("DOCUMENTATIONFEE")
|| norm.contains("DOCUMENTATION FEE")) {
documentationFeeAmount = safeAdd(documentationFeeAmount, amt);
}
}
}
private static BigDecimal safeAdd(BigDecimal a, BigDecimal b) {
if (a == null) return b;
if (b == null) return a;
return a.add(b);
}
}