/**
  * Copy Phases from Type
  *
  * @param type Project Type
  * @return count
  */
 public int copyPhasesFrom(MProjectType type) {
   //	create phases
   int count = 0;
   int taskCount = 0;
   MProjectTypePhase[] typePhases = type.getPhases();
   for (int i = 0; i < typePhases.length; i++) {
     MProjectPhase toPhase = new MProjectPhase(this, typePhases[i]);
     if (toPhase.save()) {
       count++;
       taskCount += toPhase.copyTasksFrom(typePhases[i]);
     }
   }
   log.fine("#" + count + "/" + taskCount + " - " + type);
   if (typePhases.length != count)
     log.log(Level.SEVERE, "Count difference - Type=" + typePhases.length + " <> Saved=" + count);
   return count;
 } //	copyPhasesFrom
  /**
   * Copy Phases/Tasks from other Project
   *
   * @param fromProject project
   * @return number of items copied
   */
  public int copyPhasesFrom(MProject fromProject) {
    if (isProcessed() || fromProject == null) return 0;
    int count = 0;
    int taskCount = 0;
    //	Get Phases
    MProjectPhase[] myPhases = getPhases();
    MProjectPhase[] fromPhases = fromProject.getPhases();
    //	Copy Phases
    for (int i = 0; i < fromPhases.length; i++) {
      //	Check if Phase already exists
      int C_Phase_ID = fromPhases[i].getC_Phase_ID();
      boolean exists = false;
      if (C_Phase_ID == 0) exists = false;
      else {
        for (int ii = 0; ii < myPhases.length; ii++) {
          if (myPhases[ii].getC_Phase_ID() == C_Phase_ID) {
            exists = true;
            break;
          }
        }
      }
      //	Phase exist
      if (exists) log.info("Phase already exists here, ignored - " + fromPhases[i]);
      else {
        MProjectPhase toPhase = new MProjectPhase(getCtx(), 0, get_TrxName());
        PO.copyValues(fromPhases[i], toPhase, getAD_Client_ID(), getAD_Org_ID());
        toPhase.setC_Project_ID(getC_Project_ID());
        toPhase.setC_Order_ID(0);
        toPhase.setIsComplete(false);
        if (toPhase.save()) {
          count++;
          taskCount += toPhase.copyTasksFrom(fromPhases[i]);
        }
      }
    }
    if (fromPhases.length != count)
      log.warning("Count difference - Project=" + fromPhases.length + " <> Saved=" + count);

    return count + taskCount;
  } //	copyPhasesFrom