/**
   * fill MPPProductPlanning using I_ProductPlanning's values
   *
   * @param pp MPPProductPlanning
   * @param ipp I_ProductPlanning
   */
  private void fillValue(MPPProductPlanning pp, X_I_ProductPlanning ipp) {

    for (MColumn col : getProductPlanningColumns()) {
      // if(!col.isUpdateable())
      // continue;

      if (MPPProductPlanning.COLUMNNAME_IsRequiredDRP.equals(col.getColumnName())
          || MPPProductPlanning.COLUMNNAME_IsRequiredMRP.equals(col.getColumnName())
          || MPPProductPlanning.COLUMNNAME_PP_Product_Planning_ID.equals(col.getColumnName())
          || MPPProductPlanning.COLUMNNAME_Updated.equals(col.getColumnName())
          || col.getAD_Reference_ID() == DisplayType.ID) continue;

      if (ipp.get_Value(col.getColumnName()) != null
          && pp.get_Value(col.getColumnName()).equals(ipp.get_Value(col.getColumnName()))) {
        continue;
      }

      pp.set_ValueOfColumn(col.getColumnName(), ipp.get_Value(col.getColumnName()));
    }
    pp.setIsRequiredDRP(false);
    pp.setIsRequiredMRP(false);
    String error = null;
    try {
      pp.saveEx();
      ipp.setPP_Product_Planning_ID(pp.getPP_Product_Planning_ID());
      ipp.saveEx();
    } catch (Exception e) {
      error = e.getMessage();
      ipp.setI_ErrorMsg(error);
      isImported = false;
      return;
    }

    isImported = true;
  }
  /**
   * get MPPProductPlanning unique instance based on X_I_ProductPlanning data
   *
   * @param ipp X_I_ProductPlanning
   * @return unique instance of MPPProductPlanning
   */
  private MPPProductPlanning getProductPlanning(X_I_ProductPlanning ipp) {

    final StringBuffer whereClause = new StringBuffer();
    ArrayList<Object> parameters = new ArrayList();

    MColumn[] cols = getProductPlanningColumns();

    int count = 0;

    for (MColumn col : cols) {
      // column primary key for MPPProductPlanning
      if (MPPProductPlanning.COLUMNNAME_AD_Org_ID.equals(col.getColumnName())
          || MPPProductPlanning.COLUMNNAME_S_Resource_ID.equals(col.getColumnName())
          || MPPProductPlanning.COLUMNNAME_M_Warehouse_ID.equals(col.getColumnName())
          || MPPProductPlanning.COLUMNNAME_M_Product_ID.equals(col.getColumnName())) {
        whereClause.append(col.getColumnName()).append("=?");
        parameters.add(ipp.get_Value(col.getColumnName()));
        if (count < 3) {
          whereClause.append(" AND ");
          count++;
        }
      }
    }

    return new Query(getCtx(), MPPProductPlanning.Table_Name, whereClause.toString(), get_TrxName())
        .setClient_ID()
        .setParameters(parameters)
        .firstOnly();
  }