Package no.ugland.utransprod.gui.model

Source Code of no.ugland.utransprod.gui.model.TakstolProductionApplyList

package no.ugland.utransprod.gui.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.ArticlePackageViewFactory;
import no.ugland.utransprod.gui.ArticleProductionPackageView;
import no.ugland.utransprod.gui.Login;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.handlers.ArticlePackageViewHandler.PackProduction;
import no.ugland.utransprod.model.Order;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.Produceable;
import no.ugland.utransprod.service.ManagerRepository;
import no.ugland.utransprod.service.TakstolProductionVManager;
import no.ugland.utransprod.util.Util;

import com.google.inject.Inject;
import com.google.inject.name.Named;

public class TakstolProductionApplyList extends ProductionApplyList {
  private ArticleProductionPackageView articlePackageView;
  private String mainArticleName;

  @Inject
  public TakstolProductionApplyList(
      @Named(value = "takstolColliName") final String colliName,
      final Login login,
      @Named(value = "takstol_article") final String aMainArticleName,
      final ManagerRepository managerRepository,
      final ArticlePackageViewFactory aArticlePackageViewFactory) {
    super(login, managerRepository.getTakstolProductionVManager(),
        colliName, "Takstol", null, managerRepository);
    mainArticleName = aMainArticleName;
    articlePackageView = aArticlePackageViewFactory.create(
        managerRepository.getArticleTypeManager().findByName(
            "Takstoler"), this, colliName);
  }

  public void setStarted(final Produceable object, final boolean started) {
    if (object != null) {
      List<Applyable> relatedArticles = object.getRelatedArticles();
      List<Applyable> objects = new ArrayList<Applyable>();
      Date startedDate = started ? Util.getCurrentDate() : null;

      if (object.getOrderLineId() != null) {
        objects.add(object);
      }
      if (relatedArticles != null && relatedArticles.size() != 0) {
        objects.addAll(relatedArticles);
      }

      setStartedDate(objects, startedDate);
    }
  }

  public void settStartetKapping(final Produceable produceable,
      Date startetKappingDato) {
    OrderLine orderLine = managerRepository.getOrderLineManager()
        .findByOrderLineId(produceable.getOrderLineId());
    if (orderLine != null) {
      orderLine.setCuttingStarted(startetKappingDato);
      managerRepository.getOrderLineManager().saveOrderLine(orderLine);
      applyListManager.refresh(produceable);
    }
  }

  public void settKappingFerdig(final Produceable produceable,
      Date kappingFerdigDato) {
    OrderLine orderLine = managerRepository.getOrderLineManager()
        .findByOrderLineId(produceable.getOrderLineId());
    if (orderLine != null) {
      orderLine.setCuttingDone(kappingFerdigDato);
      managerRepository.getOrderLineManager().saveOrderLine(orderLine);
      applyListManager.refresh(produceable);
    }
  }

  private void setStartedDate(List<Applyable> objects, Date startedDate) {
    for (Applyable object : objects) {
      OrderLine orderLine = managerRepository.getOrderLineManager()
          .findByOrderLineId(object.getOrderLineId());
      if (orderLine != null) {
        orderLine.setActionStarted(startedDate);
        managerRepository.getOrderLineManager()
            .saveOrderLine(orderLine);
        applyListManager.refresh((Produceable) object);
      }
    }

  }

  public void setApplied(Produceable object, boolean applied,
      WindowInterface window) {
    try {
      if (object != null) {
        List<Applyable> relatedArticles = object.getRelatedArticles();
        List<Applyable> objects = new ArrayList<Applyable>();
        object.setProduced(getProducedDate(object, applied));
        if (object.getOrderLineId() != null) {
          objects.add(object);
        }
        if (relatedArticles != null && relatedArticles.size() != 0) {
          objects.addAll(relatedArticles);
          for (Applyable item : objects) {
            item.setProduced(getProducedDate(item, applied));
          }

        }
        applyAllObjects(applied, window, objects);
        if (applied) {
          articlePackageView.setArticles(objects,
              PackProduction.PRODUCTION);
          Util.showEditViewable(articlePackageView, window);
        }
        applyAllObjects(applied, window, objects);

        setOrderReady(object);
        checkCompleteness(object.getColli(), applied);
      }
    } catch (ProTransException e) {
      Util.showErrorDialog(window, "Feil", e.getMessage());
      e.printStackTrace();
    }

  }

  private void applyAllObjects(boolean applied, WindowInterface window,
      List<Applyable> objects) {
    boolean relatedNotPacked = false;
    for (Applyable item : objects) {
      item.setColli(applied ? item.getColli() : null);
      relatedNotPacked = relatedNotPacked ? relatedNotPacked : item
          .getColli() == null;
      applyObject((Produceable) item, item.getProduced() != null, window);
    }
  }

  private void setOrderReady(Produceable object) throws ProTransException {
    if (object.getProductAreaGroupName().equalsIgnoreCase("Takstol")) {
      Order order = managerRepository.getOrderManager().findByOrderNr(
          object.getOrderNr());
      if (isAllProduced(object)) {
        order.setOrderReady(Util.getCurrentDate());
      } else {
        order.setOrderReady(null);
      }
      managerRepository.getOrderManager().saveOrder(order);
    }
  }

  private boolean isAllProduced(Produceable object) {
    if (object.getProduced() != null) {
      return object.isRelatedArticlesComplete();
    }
    return false;
  }

  private void applyObject(Produceable object, boolean applied,
      WindowInterface window) {
    object.setProduced(getProducedDate(object, applied));

    OrderLine orderLine = managerRepository.getOrderLineManager()
        .findByOrderLineId(object.getOrderLineId());
    if (orderLine != null) {
      String aColliName = Util.getColliName(object.getArticleName());
      handleApply(object, applied, window, aColliName);
    }
  }

  private Date getProducedDate(Applyable applyable, boolean applied) {
    if (applied) {
      return applyable.getProduced() == null ? Util.getCurrentDate()
          : applyable.getProduced();
    }
    return null;
  }

  public Produceable getApplyObject(final Transportable transportable,
      final WindowInterface window) {
    List<Produceable> list = ((TakstolProductionVManager) applyListManager)
        .findApplyableByOrderNrAndArticleName(transportable.getOrder()
            .getOrderNr(), mainArticleName);

    return list == null || list.size() == 0 ? null : list != null
        && list.size() == 1 ? list.get(0) : selectApplyObject(list,
        window);
  }

  private Produceable selectApplyObject(final List<Produceable> list,
      final WindowInterface window) {
    return (Produceable) Util.showOptionsDialogCombo(window, list,
        "Velg artikkel", true, null);
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.model.TakstolProductionApplyList

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.