OrderFieldCopyHelper.java
package com.tradecloud.domain.model.ordermanagement;
import com.tradecloud.common.base.HibernateUtils;
import com.tradecloud.domain.configuration.ItemsAndOrdersClientConfig;
import com.tradecloud.domain.supplier.OrganisationalUnitSupplier;
import org.apache.commons.lang3.ObjectUtils;
/**
* @author jon
*/
public class OrderFieldCopyHelper {
public static void copyFromClientConfig(Order order, ItemsAndOrdersClientConfig config) {
// only initialise values not overwrite them
if (order.getShippingInformation().getIncoterm() == null) {
order.getShippingInformation().setIncoterm(config.getIncoterm());
}
if (order.getUnitPricePerItem() == null) {
order.setUnitPricePerItem(config.getUnitPricePerItem());
}
if (order.getCurrency() == null) {
order.setCurrency(config.getPurchaseCurrency());
}
if (order.getShippingInformation().getShippingMode() == null) {
order.getShippingInformation().setShippingMode(config.getShippingMode());
}
if (order.getShippingInformation().getNamedPlace() == null) {
order.getShippingInformation().setNamedPlace(config.getNamedPlace());
}
if (order.getShippingInformation().getPlaceOfLoading() == null) {
order.getShippingInformation().setPlaceOfLoading(config.getPlaceOfLoading());
}
if (order.getShippingInformation().getPlaceOfDischarge() == null) {
order.getShippingInformation().setPlaceOfDischarge(config.getPlaceOfDischarge());
}
if (order.getShippingInformation().getFreightForwarder() == null) {
order.getShippingInformation().setFreightForwarder(config.getLsp());
}
if (order.getShippingInformation().getClearingAgent() == null) {
order.getShippingInformation().setClearingAgent(config.getClearingAgent());
}
if (order.getShippingInformation().getTransporter() == null) {
order.getShippingInformation().setTransporter(config.getTransporter());
}
if (order.getPaymentTerm() == null) {
order.setPaymentTerm(config.getPaymentTerm());
}
if (order.getLcToleranceAbove() == null) {
order.setLcToleranceAbove(config.getLcToleranceAbove());
}
if (order.getLcToleranceBelow() == null) {
order.setLcToleranceBelow(config.getLcToleranceBelow());
}
if (order.isPurchaseOrder()) {
copyFromClientConfigPurchaseOrder((PurchaseOrder) HibernateUtils.getNonProxyObject(order), config);
}
}
public static void copyFromSupplier(PurchaseOrder purchaseOrder, OrganisationalUnitSupplier supplier, ItemsAndOrdersClientConfig config) {
purchaseOrder.getShippingInformation().setIncoterm(supplier.getIncoterm());
purchaseOrder.setPaymentMethod(supplier.getPaymentMethod());
purchaseOrder.setCurrency(supplier.getCurrency());
purchaseOrder.setUnitPricePerItem(supplier.getUnitPricePerItem());
purchaseOrder.getShippingInformation().setFreightForwarder(supplier.getFreightForwarder());
purchaseOrder.getShippingInformation().setClearingAgent(supplier.getClearingAgent());
purchaseOrder.getShippingInformation().setTransporter(supplier.getTransporter());
purchaseOrder.getShippingInformation().setPartShipment(supplier.getAllowPartShipment());
purchaseOrder.getShippingInformation().setTransShipment(supplier.getAllowTransShipment());
purchaseOrder.setLcToleranceAbove(ObjectUtils.firstNonNull(supplier.getLcToleranceAbove(), config.getLcToleranceAbove()));
purchaseOrder.setLcToleranceBelow(ObjectUtils.firstNonNull(supplier.getLcToleranceBelow(), config.getLcToleranceBelow()));
purchaseOrder.setPaymentTerm(ObjectUtils.firstNonNull(supplier.getPaymentTerm(), config.getPaymentTerm()));
purchaseOrder.getShippingInformation().setNamedPlace(supplier.getNamedPlace());
}
public static void copyFromSupplierForIntegration(PurchaseOrder purchaseOrder,
OrganisationalUnitSupplier supplier, ItemsAndOrdersClientConfig config, boolean update) {
if ((!update && purchaseOrder.getShippingInformation().getIncoterm() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isIncoterm())) {
purchaseOrder.getShippingInformation().setIncoterm(supplier.getIncoterm());
}
if ((!update && purchaseOrder.getPaymentMethod() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isPaymentMethod())) {
purchaseOrder.setPaymentMethod(supplier.getPaymentMethod());
}
if ((!update && purchaseOrder.getCurrency() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isCurrency())) {
purchaseOrder.setCurrency(supplier.getCurrency());
}
if ((!update && purchaseOrder.getUnitPricePerItem() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isUnitPricePerItem())) {
purchaseOrder.setUnitPricePerItem(supplier.getUnitPricePerItem());
}
if ((!update && purchaseOrder.getShippingInformation().getFreightForwarder() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isFreightForwarder())) {
purchaseOrder.getShippingInformation().setFreightForwarder(supplier.getFreightForwarder());
}
if ((!update && purchaseOrder.getShippingInformation().getClearingAgent() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isClearingAgent())) {
purchaseOrder.getShippingInformation().setClearingAgent(supplier.getClearingAgent());
}
if ((!update && purchaseOrder.getShippingInformation().getTransporter() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isTransporter())) {
purchaseOrder.getShippingInformation().setTransporter(supplier.getTransporter());
}
if (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isAllowPartShipment()) {
purchaseOrder.getShippingInformation().setPartShipment(supplier.getAllowPartShipment());
}
if (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isAllowTransShipment()) {
purchaseOrder.getShippingInformation().setTransShipment(supplier.getAllowTransShipment());
}
if ((!update && purchaseOrder.getLcToleranceAbove() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isLcToleranceAbove())) {
if (supplier.getLcToleranceAbove() == null) {
purchaseOrder.setLcToleranceAbove(config.getLcToleranceAbove());
} else {
purchaseOrder.setLcToleranceAbove(supplier.getLcToleranceAbove());
}
}
if ((!update && purchaseOrder.getLcToleranceBelow() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isLcToleranceBelow())) {
if (supplier.getLcToleranceBelow() == null) {
purchaseOrder.setLcToleranceBelow(config.getLcToleranceBelow());
} else {
purchaseOrder.setLcToleranceBelow(supplier.getLcToleranceBelow());
}
}
if ((!update && purchaseOrder.getPaymentTerm() == null)
|| (update && config.getOrderIntegrationConfig().getPurchaseOrderIntegrationProperties().isPaymentTerm())) {
if (supplier.getPaymentTerm() == null) {
purchaseOrder.setPaymentTerm(config.getPaymentTerm());
} else {
purchaseOrder.setPaymentTerm(supplier.getPaymentTerm());
}
}
}
public static void copyFromClientConfigPurchaseOrder(PurchaseOrder order, ItemsAndOrdersClientConfig itemsAndOrdersClientConfig) {
if (order.getLocalCustomsAuthority() == null) {
order.setLocalCustomsAuthority(itemsAndOrdersClientConfig.getLocalCustomsAuthority());
}
if (order.getLocalPortAuthority() == null) {
order.setLocalPortAuthority(itemsAndOrdersClientConfig.getLocalPortAuthority());
}
}
}