Package no.ugland.utransprod.model

Source Code of no.ugland.utransprod.model.SalesmanGoal

package no.ugland.utransprod.model;

import java.math.BigDecimal;
import java.math.RoundingMode;

import no.ugland.utransprod.util.Periode;
import no.ugland.utransprod.util.report.ProbabilityEnum;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.CompareToBuilder;

public class SalesmanGoal implements Comparable<SalesmanGoal> {

  private String salesman;
  private ProductArea productArea;
  private BigDecimal offerSumOwnProduction;
  private BigDecimal orderSumOwnProduction;
  private BigDecimal confirmedOrderSumOwnProduction;
  private BigDecimal db;
  private BigDecimal offerSumOwnProductionLastYear;
  private BigDecimal dbAccumulated;
  private BigDecimal offerSumOwnProductionAccumulated;
  private BigDecimal offerSumOwnProductionAccumulatedLastYear;
  private BigDecimal orderSumOwnProductionLastYear;
  private BigDecimal orderSumOwnProductionAccumulated;
  private BigDecimal orderSumOwnProductionAccumulatedLastYear;
  private BigDecimal confirmedOrderSumOwnProductionAccumulated;
  private BigDecimal budgetValue;
  private BigDecimal budgetValueOffer;

  public void setSalesman(String aSalesman) {
    salesman = aSalesman;

  }

  public void setProductArea(ProductArea aProductArea) {
    productArea = aProductArea;

  }

  public void setValue(String propabilityType, BigDecimal value,
      PeriodeEnum periodeEnum) {
    ProbabilityType.valueOf(StringUtils.upperCase(propabilityType))
        .setValue(this, value, periodeEnum);

  }

  public void setOfferSumOwnProduction(BigDecimal value) {
    offerSumOwnProduction = value;

  }

  public void setOrderSumOwnProduction(BigDecimal value) {
    orderSumOwnProduction = value;

  }

  public void setConfirmedOrderSumOwnProduction(BigDecimal value) {
    confirmedOrderSumOwnProduction = value;

  }

  public ProductArea getProductArea() {
    return productArea;
  }

  public String getSalesman() {
    return salesman;
  }

  public BigDecimal getOfferSumOwnProduction() {
    return offerSumOwnProduction != null ? offerSumOwnProduction
        : BigDecimal.ZERO;
  }

  public BigDecimal getOrderSumOwnProduction() {
    return orderSumOwnProduction != null ? orderSumOwnProduction
        : BigDecimal.ZERO;
  }

  public BigDecimal getConfirmedOrderSumOwnProduction() {
    return confirmedOrderSumOwnProduction != null ? confirmedOrderSumOwnProduction
        : BigDecimal.ZERO;
  }

  public BigDecimal getProcentOrder() {
    return getOfferSumOwnProduction().intValue() > 0 ? getOrderSumOwnProduction()
        .divide(getOfferSumOwnProduction(), 2, RoundingMode.HALF_EVEN)
        .multiply(BigDecimal.valueOf(100)).setScale(0)
        : BigDecimal.ZERO;
  }

  public BigDecimal getDG() {
    return getOrderSumOwnProduction().intValue() != 0 ? getDB().divide(
        getOrderSumOwnProduction(), 2, RoundingMode.HALF_UP)
        : BigDecimal.ZERO;
  }

  public BigDecimal getDGAccumulated() {
    return getOrderSumOwnProductionAccumulated().intValue() != 0 ? getDBAccumulated()
        .divide(getOrderSumOwnProductionAccumulated(), 2,
            RoundingMode.HALF_UP)
        : BigDecimal.ZERO;
  }

  private BigDecimal getDBAccumulated() {
    return dbAccumulated != null ? dbAccumulated : BigDecimal.ZERO;
  }

  private BigDecimal getDB() {
    return db != null ? db : BigDecimal.ZERO;
  }

  public void setDbValue(String propabilityType, PeriodeEnum periodeEnum,
      BigDecimal dbValue) {
    ProbabilityType.valueOf(StringUtils.upperCase(propabilityType))
        .setDbValue(this, dbValue, periodeEnum);

  }

  public void setDb(BigDecimal dbValue) {
    db = dbValue;

  }

  public BigDecimal getOfferSumOwnProductionLastYear() {
    return offerSumOwnProductionLastYear != null ? offerSumOwnProductionLastYear
        : BigDecimal.ZERO;
  }

  public void setDbAccumulated(BigDecimal dbValue) {
    dbAccumulated = dbValue;

  }

  public BigDecimal getDbAccumulated() {
    return dbAccumulated != null ? dbAccumulated : BigDecimal.ZERO;

  }

  public void setOfferSumOwnProductionLastYear(BigDecimal value) {
    offerSumOwnProductionLastYear = value;

  }

  public void setOfferSumOwnProductionAccumulated(BigDecimal value) {
    offerSumOwnProductionAccumulated = value;

  }

  public void setOfferSumOwnProductionAccumulatedLastYear(BigDecimal value) {
    offerSumOwnProductionAccumulatedLastYear = value;

  }

  public void setOrderSumOwnProductionLastYear(BigDecimal value) {
    orderSumOwnProductionLastYear = value;

  }

  public void setOrderSumOwnProductionAccumulated(BigDecimal value) {
    orderSumOwnProductionAccumulated = value;

  }

  public void setOrderSumOwnProductionAccumulatedLastYear(BigDecimal value) {
    orderSumOwnProductionAccumulatedLastYear = value;

  }

  public void setConfirmedOrderSumOwnProductionAccumulated(BigDecimal value) {
    confirmedOrderSumOwnProductionAccumulated = value;

  }

  public BigDecimal getOrderSumOwnProductionLastYear() {
    return orderSumOwnProductionLastYear != null ? orderSumOwnProductionLastYear
        : BigDecimal.ZERO;
  }

  public BigDecimal getProcentOrderLastYear() {
    return getOfferSumOwnProductionLastYear().intValue() > 0 ? getOrderSumOwnProductionLastYear()
        .divide(getOfferSumOwnProductionLastYear(), 2,
            RoundingMode.HALF_EVEN).multiply(
            BigDecimal.valueOf(100)).setScale(0)
        : BigDecimal.ZERO;
  }

  public BigDecimal getOfferSumOwnProductionAccumulated() {
    return offerSumOwnProductionAccumulated != null ? offerSumOwnProductionAccumulated
        : BigDecimal.ZERO;
  }

  public BigDecimal getOrderSumOwnProductionAccumulated() {
    return orderSumOwnProductionAccumulated != null ? orderSumOwnProductionAccumulated
        : BigDecimal.ZERO;
  }

  public BigDecimal getConfirmedOrderSumOwnProductionAccumulated() {
    return confirmedOrderSumOwnProductionAccumulated != null ? confirmedOrderSumOwnProductionAccumulated
        : BigDecimal.ZERO;
  }

  public BigDecimal getProcentOrderAccumulated() {
    return getOfferSumOwnProductionAccumulated().intValue() > 0 ? getOrderSumOwnProductionAccumulated()
        .divide(getOfferSumOwnProductionAccumulated(), 2,
            RoundingMode.HALF_EVEN).multiply(
            BigDecimal.valueOf(100)).setScale(0)
        : BigDecimal.ZERO;
  }

  public BigDecimal getOfferSumOwnProductionAccumulatedLastYear() {
    return offerSumOwnProductionAccumulatedLastYear != null ? offerSumOwnProductionAccumulatedLastYear
        : BigDecimal.ZERO;
  }

  public BigDecimal getOrderSumOwnProductionAccumulatedLastYear() {
    return orderSumOwnProductionAccumulatedLastYear != null ? orderSumOwnProductionAccumulatedLastYear
        : BigDecimal.ZERO;
  }

  public BigDecimal getProcentOrderAccumulatedLastYear() {
    return getOfferSumOwnProductionAccumulatedLastYear().intValue() > 0 ? getOrderSumOwnProductionAccumulatedLastYear()
        .divide(getOfferSumOwnProductionAccumulatedLastYear(), 2,
            RoundingMode.HALF_EVEN).multiply(
            BigDecimal.valueOf(100)).setScale(0)
        : BigDecimal.ZERO;
  }

  public BigDecimal getBudgetValue() {
    return budgetValue != null ? budgetValue : BigDecimal.ZERO;
  }

  public void setBudgetValue(BigDecimal value) {
    budgetValue = value;

  }

  public void setBudgetValueOffer(BigDecimal value) {
    budgetValueOffer = value;

  }

  private enum ProbabilityType {
    TILBUD {
      @Override
      public void setValue(SalesmanGoal salesmanGoal, BigDecimal value,
          PeriodeEnum periodeEnum) {
        periodeEnum.setOfferSumValue(salesmanGoal, value);

      }

      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal value,
          PeriodeEnum periodeEnum) {

      }
    },
    ORDRE {
      @Override
      public void setValue(SalesmanGoal salesmanGoal, BigDecimal value,
          PeriodeEnum periodeEnum) {
        periodeEnum.setOrderSumValue(salesmanGoal, value);

      }

      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal value,
          PeriodeEnum periodeEnum) {
        periodeEnum.setDbValue(salesmanGoal, value);

      }
    },
    AVROP {
      @Override
      public void setValue(SalesmanGoal salesmanGoal, BigDecimal value,
          PeriodeEnum periodeEnum) {
        periodeEnum.setConfirmedOrderSumValue(salesmanGoal, value);

      }

      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal value,
          PeriodeEnum periodeEnum) {

      }
    };

    public abstract void setValue(SalesmanGoal salesmanGoal,
        BigDecimal value, PeriodeEnum periodeEnum);

    public abstract void setDbValue(SalesmanGoal salesmanGoal,
        BigDecimal value, PeriodeEnum periodeEnum);
  }

  public enum PeriodeEnum {
    UKE_I_AAR(false) {
      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal dbValue) {
        salesmanGoal.setDb(dbValue);
        salesmanGoal.setDbAccumulated(dbValue);
      }

      @Override
      public void setOfferSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal.setOfferSumOwnProduction(value);
        salesmanGoal.setOfferSumOwnProductionAccumulated(value);
      }

      @Override
      public void setOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal.setOrderSumOwnProduction(value);
        salesmanGoal.setOrderSumOwnProductionAccumulated(value);
      }

      @Override
      public void setConfirmedOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal.setConfirmedOrderSumOwnProduction(value);
        salesmanGoal
            .setConfirmedOrderSumOwnProductionAccumulated(value);
      }

      @Override
      public Periode convertPeriode(Periode periode) {
        return periode;
      }
    },
    UKE_I_FJOR(true) {
      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal dbValue) {
        // TODO Auto-generated method stub

      }

      @Override
      public void setOfferSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal.setOfferSumOwnProductionLastYear(value);
        salesmanGoal.setOfferSumOwnProductionAccumulatedLastYear(value);
      }

      @Override
      public void setOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal.setOrderSumOwnProductionLastYear(value);
        salesmanGoal.setOrderSumOwnProductionAccumulatedLastYear(value);
      }

      @Override
      public void setConfirmedOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        // TODO Auto-generated method stub

      }

      @Override
      public Periode convertPeriode(Periode periode) {
        return new Periode(periode.getYear() - 1, periode.getWeek(),
            periode.getToWeek());
      }
    },
    AKKUMULERT_I_AAR(true) {
      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal dbValue) {
        salesmanGoal.setDbAccumulated(dbValue != null ? dbValue
            .add(salesmanGoal.getDbAccumulated()) : salesmanGoal
            .getDbAccumulated());

      }

      @Override
      public void setOfferSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal
            .setOfferSumOwnProductionAccumulated(value != null ? value
                .add(salesmanGoal
                    .getOfferSumOwnProductionAccumulated())
                : salesmanGoal
                    .getOfferSumOwnProductionAccumulated());

      }

      @Override
      public void setOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal
            .setOrderSumOwnProductionAccumulated(value != null ? value
                .add(salesmanGoal
                    .getOrderSumOwnProductionAccumulated())
                : salesmanGoal
                    .getOrderSumOwnProductionAccumulated());

      }

      @Override
      public void setConfirmedOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal
            .setConfirmedOrderSumOwnProductionAccumulated(value != null ? value
                .add(salesmanGoal
                    .getConfirmedOrderSumOwnProductionAccumulated())
                : salesmanGoal
                    .getConfirmedOrderSumOwnProductionAccumulated());

      }

      @Override
      public Periode convertPeriode(Periode periode) {
        return new Periode(periode.getYear(), 1,
            periode.getToWeek() != 1 ? periode.getToWeek() - 1 : 0);
      }
    },
    AKKUMULERT_I_FJOR(true) {
      @Override
      public void setDbValue(SalesmanGoal salesmanGoal, BigDecimal dbValue) {
        // TODO Auto-generated method stub

      }

      @Override
      public void setOfferSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal
            .setOfferSumOwnProductionAccumulatedLastYear(value != null ? value
                .add(salesmanGoal
                    .getOfferSumOwnProductionAccumulatedLastYear())
                : salesmanGoal
                    .getOfferSumOwnProductionAccumulatedLastYear());

      }

      @Override
      public void setOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        salesmanGoal
            .setOrderSumOwnProductionAccumulatedLastYear(value != null ? value
                .add(salesmanGoal
                    .getOrderSumOwnProductionAccumulatedLastYear())
                : salesmanGoal
                    .getOrderSumOwnProductionAccumulatedLastYear());

      }

      @Override
      public void setConfirmedOrderSumValue(SalesmanGoal salesmanGoal,
          BigDecimal value) {
        // TODO Auto-generated method stub

      }

      @Override
      public Periode convertPeriode(Periode periode) {
        return new Periode(periode.getYear() - 1, 1, periode
            .getToWeek() != 1 ? periode.getToWeek() - 1 : 0);
      }
    };

    private boolean salesmanShouldExist = false;

    private PeriodeEnum(boolean shouldSalesmanExist) {
      salesmanShouldExist = shouldSalesmanExist;
    }

    public abstract void setDbValue(SalesmanGoal salesmanGoal,
        BigDecimal dbValue);

    public abstract void setConfirmedOrderSumValue(
        SalesmanGoal salesmanGoal, BigDecimal value);

    public abstract void setOrderSumValue(SalesmanGoal salesmanGoal,
        BigDecimal value);

    public abstract void setOfferSumValue(SalesmanGoal salesmanGoal,
        BigDecimal value);

    public boolean salesmanShouldExist() {
      return false;
    }

    public abstract Periode convertPeriode(Periode periode);
  }

  public int compareTo(final SalesmanGoal other) {
    return new CompareToBuilder().append(productArea.getSortNr(),
        other.productArea.getSortNr()).append(salesman, other.salesman)
        .toComparison();
  }

  public BigDecimal getBudgetValueOffer() {
    return budgetValueOffer != null ? budgetValueOffer : BigDecimal.ZERO;
  }

  public BigDecimal getBudgetOrderProcent() {
    return getBudgetValue().intValue() > 0 ? getBudgetValue().divide(
        getBudgetValueOffer(), 2, RoundingMode.HALF_EVEN).multiply(
        BigDecimal.valueOf(100)).setScale(0) : BigDecimal.ZERO;
  }

  public BigDecimal getDb() {
    return db != null ? db : BigDecimal.ZERO;
  }

  public BigDecimal getProcentOrderLastYearDiff() {
    return getProcentOrder().subtract(getProcentOrderLastYear());
  }

  public BigDecimal getOfferSumOwnProductionLastYearDiff() {
    return getOfferSumOwnProduction().subtract(
        getOfferSumOwnProductionLastYear());
  }

  public BigDecimal getOrderSumOwnProductionLastYearDiff() {
    return getOrderSumOwnProduction().subtract(
        getOrderSumOwnProductionLastYear());
  }

  public BigDecimal getProcentOrderAccumulatedLastYearDiff() {
    return getProcentOrderAccumulated().subtract(
        getProcentOrderAccumulatedLastYear());
  }

  public BigDecimal getOfferSumOwnProductionAccumulatedLastYearDiff() {
    return getOfferSumOwnProductionAccumulated().subtract(
        getOfferSumOwnProductionAccumulatedLastYear());
  }

  public BigDecimal getOrderSumOwnProductionAccumulatedLastYearDiff() {
    return getOrderSumOwnProductionAccumulated().subtract(
        getOrderSumOwnProductionAccumulatedLastYear());
  }

}
TOP

Related Classes of no.ugland.utransprod.model.SalesmanGoal

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.