Package no.ugland.utransprod.service.impl

Source Code of no.ugland.utransprod.service.impl.AdditionTruss

package no.ugland.utransprod.service.impl;

import java.math.BigDecimal;

import no.ugland.utransprod.gui.model.Transportable;
import no.ugland.utransprod.model.Colli;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.OrderLineAttribute;
import no.ugland.utransprod.model.TransportCostAddition;
import no.ugland.utransprod.util.Periode;

public class AdditionTruss extends AbstractAddition {

    public AdditionTruss(final TransportCostAddition addition, final String articlePath,
            final String info) {
        super(addition, articlePath, info);
    }

    public final BigDecimal calculateAddition(final BigDecimal basis,
            final Transportable transportable, final Periode period,
            final boolean ignoreSent) {
        OrderLine orderLine = transportable.getOrderLine(articlePath);
        BigDecimal addValue = BigDecimal.valueOf(0);
        if (orderLine != null) {
            Colli colli = orderLine.getColli();
            if (colli != null) {
                addValue = getAddValue(period, ignoreSent, orderLine, addValue,
                        colli, transportable);
            }
        }
        return addValue;
    }

    private BigDecimal getAddValue(final Periode period,
            final boolean ignoreSent, final OrderLine orderLine, final BigDecimal aAddValue,
            final Colli colli, final Transportable transportable) {
        BigDecimal addValue=aAddValue;
        if (!ignoreSent) {
            if (colli.getSent() != null) {
                addValue = addIfColliIsForTransportable(transportable, colli,
                        orderLine);
            }
        } else {
            addValue = checkAndGetAddValue(orderLine);
        }
        return addValue;
    }

    private BigDecimal addIfColliIsForTransportable(
            final Transportable transportable, final Colli colli, final OrderLine orderLine) {

        if (compareColliWithTransportable(transportable, colli) == 0) {
            return checkAndGetAddValue(orderLine);
        }
        return BigDecimal.valueOf(0);
    }

    private int compareColliWithTransportable(final Transportable transportable,
            final Colli colli) {
        if (transportable.getPostShipment() != null
                && colli.getPostShipment() == null) {
            return -1;
        } else if (transportable.getPostShipment() == null
                && colli.getPostShipment() != null) {
            return 1;
        } else if (transportable.getPostShipment() != null
                && colli.getPostShipment() != null) {
            return transportable.getPostShipment().getPostShipmentId()
                    .compareTo(colli.getPostShipment().getPostShipmentId());
        } else {
            return transportable.getOrder().getOrderId().compareTo(
                    colli.getOrder().getOrderId());
        }
    }

    private BigDecimal checkAndGetAddValue(final OrderLine orderLine) {
        OrderLineAttribute attribute = orderLine.getAttributeByName("Vinkel");
        BigDecimal addValue = BigDecimal.valueOf(0);
        String value = attribute.getAttributeNumberValue();
        if (Double.valueOf(value) >= Double.valueOf(transportCostAdditon
                .getBasis())) {
            addValue = transportCostAdditon.getAddition();
        }
        return addValue;
    }

}
TOP

Related Classes of no.ugland.utransprod.service.impl.AdditionTruss

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.