/** * Import record using X_I_ProductPlanning table * * @param ipp X_I_ProductPlanning */ private void importPurchaseProductPlanning(X_I_ProductPlanning ipp) { MProduct product = MProduct.get(getCtx(), ipp.getM_Product_ID()); if (product.isPurchased()) { final StringBuffer whereClause = new StringBuffer(); whereClause.append(MProductPO.COLUMNNAME_M_Product_ID).append("=? AND "); whereClause.append(MProductPO.COLUMNNAME_C_BPartner_ID).append("=?"); MProductPO productPO = new Query(getCtx(), MProductPO.Table_Name, whereClause.toString(), get_TrxName()) .setClient_ID() .setParameters(new Object[] {ipp.getM_Product_ID(), ipp.getC_BPartner_ID()}) .first(); if (productPO == null) { productPO = new MProductPO(getCtx(), 0, get_TrxName()); } productPO.setAD_Org_ID(ipp.getAD_Org_ID()); productPO.setM_Product_ID(ipp.getM_Product_ID()); productPO.setC_BPartner_ID(ipp.getC_BPartner_ID()); productPO.setOrder_Min(ipp.getOrder_Min()); productPO.setOrder_Pack(ipp.getOrder_Pack()); productPO.setDeliveryTime_Promised(ipp.getDeliveryTime_Promised().intValue()); productPO.setVendorProductNo(ipp.getVendorProductNo()); productPO.saveEx(); } }
/** delete all imported records */ private void deleteImportedRecords() { if (p_DeleteOldImported) { for (X_I_ProductPlanning ipp : getRecords(false, p_IsImportOnlyNoErrors)) { ipp.deleteEx(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(); }
/** * import record using X_I_ProductPlanning table * * @param ipp X_I_ProductPlanning */ private void importProductPlanning(X_I_ProductPlanning ipp) { MPPProductPlanning pp = null; if (ipp.getPP_Product_Planning_ID() > 0) { pp = new MPPProductPlanning(getCtx(), ipp.getPP_Product_Planning_ID(), get_TrxName()); } else { pp = getProductPlanning(ipp); } if (pp == null) { pp = new MPPProductPlanning(getCtx(), 0, get_TrxName()); } fillValue(pp, ipp); if (ipp.getC_BPartner_ID() > 0 && ipp.getVendorProductNo() != null) { importPurchaseProductPlanning(ipp); } }
/** * 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; }
/** import record using X_I_ProductPlanning table */ private void importRecords() { for (X_I_ProductPlanning ipp : getRecords(false, p_IsImportOnlyNoErrors)) { if (ipp.getM_Product_ID() > 0 && ipp.getS_Resource_ID() > 0 && ipp.getM_Warehouse_ID() > 0) { importProductPlanning(ipp); } else if (ipp.getForecastValue() == null || ipp.getM_Forecast_ID() == 0) { String error = ""; if (ipp.getM_Product_ID() == 0) { error = error + " @M_Product_ID@ @NotFound@ ,"; } if (ipp.getS_Resource_ID() == 0) { error = error + " @S_Resource_ID@ @NotFound@ ,"; } if (ipp.getM_Warehouse_ID() == 0) { error = error + " @M_Waehouse_ID@ @NotFound@"; } ipp.setI_ErrorMsg(Msg.parseTranslation(getCtx(), error)); isImported = false; ipp.saveEx(); return; } if (ipp.getForecastValue() == null) { isImported = true; } else if (ipp.getM_Forecast_ID() > 0 && ipp.getM_Warehouse_ID() > 0 && ipp.getM_Product_ID() > 0 && ipp.getQty().signum() > 0) { importForecast(ipp); } else { String error = ""; if (ipp.getM_Forecast_ID() == 0) { error = error + " @M_Forecast_ID@ @NotFound@ ,"; } if (ipp.getM_Warehouse_ID() == 0) { error = error + " @M_Warehouse_ID@ @NotFound@ ,"; } if (ipp.getQty().signum() <= 0) { error = error + " @Qty@ @Error@"; } ipp.setI_ErrorMsg(Msg.parseTranslation(getCtx(), error)); isImported = false; ipp.saveEx(); return; } if (isImported) { ipp.setI_IsImported(true); ipp.setProcessed(true); ipp.saveEx(); } } }
/** fill IDs values based on Search Key */ private void fillIDValues() { for (X_I_ProductPlanning ppi : getRecords(false, p_IsImportOnlyNoErrors)) { if (ppi.getC_BPartner_ID() == 0) ppi.setC_BPartner_ID( getID( I_C_BPartner.Table_Name, I_C_BPartner.COLUMNNAME_Value + "=?", new Object[] {ppi.getBPartner_Value()})); if (ppi.getM_Product_ID() == 0) ppi.setM_Product_ID( getID( I_M_Product.Table_Name, I_M_Product.COLUMNNAME_Value + "=?", new Object[] {ppi.getProductValue()})); if (ppi.getM_Warehouse_ID() == 0) ppi.setM_Warehouse_ID( getID( I_M_Warehouse.Table_Name, I_M_Warehouse.COLUMNNAME_Value + "=?", new Object[] {ppi.getWarehouseValue()})); if (ppi.getAD_Org_ID() == 0) ppi.setAD_Org_ID( getID( I_AD_Org.Table_Name, I_AD_Org.COLUMNNAME_Value + "=?", new Object[] {ppi.getOrgValue()})); if (ppi.getDD_NetworkDistribution_ID() == 0) ppi.setDD_NetworkDistribution_ID( getID( I_DD_NetworkDistribution.Table_Name, I_DD_NetworkDistribution.COLUMNNAME_Value + "=?", new Object[] {ppi.getNetworkDistributionValue()})); if (ppi.getPP_Product_BOM_ID() == 0) ppi.setPP_Product_BOM_ID( getID( I_PP_Product_BOM.Table_Name, I_PP_Product_BOM.COLUMNNAME_Value + "=?", new Object[] {ppi.getProduct_BOM_Value()})); if (ppi.getM_Forecast_ID() == 0) ppi.setM_Forecast_ID( getID( I_M_Forecast.Table_Name, I_M_Forecast.COLUMNNAME_Name + "=?", new Object[] {ppi.getForecastValue()})); if (ppi.getS_Resource_ID() == 0) ppi.setS_Resource_ID( getID( I_S_Resource.Table_Name, I_S_Resource.COLUMNNAME_Value + "=? AND " + I_S_Resource.COLUMNNAME_ManufacturingResourceType + "=?", new Object[] {ppi.getResourceValue(), "PT"})); ppi.saveEx(); } }
/** * Import Forecast Record using X_I_ProductPlanning table * * @param ipp X_I_ProductPlanning */ private void importForecast(X_I_ProductPlanning ipp) { if (ipp.getForecastValue() == null && ipp.getM_Forecast_ID() == 0) { ipp.setI_ErrorMsg(Msg.getMsg(getCtx(), "@M_Forecast_ID@ @NotFound@")); ipp.saveEx(); isImported = false; return; } MForecast forecast = new MForecast(getCtx(), ipp.getM_Forecast_ID(), get_TrxName()); final StringBuffer whereClause = new StringBuffer(); whereClause .append(X_M_ForecastLine.COLUMNNAME_M_Forecast_ID) .append("=? AND ") .append(X_M_ForecastLine.COLUMNNAME_M_Product_ID) .append("=? AND ") .append(X_M_ForecastLine.COLUMNNAME_M_Warehouse_ID) .append("=? AND ") .append(X_M_ForecastLine.COLUMNNAME_DatePromised) .append("=? AND ") .append(X_M_ForecastLine.COLUMNNAME_SalesRep_ID) .append("=?"); X_M_ForecastLine forecastLine = null; if (ipp.getM_ForecastLine_ID() > 0) { forecastLine = new X_M_ForecastLine(getCtx(), ipp.getM_ForecastLine_ID(), get_TrxName()); } else { forecastLine = new Query(getCtx(), X_M_ForecastLine.Table_Name, whereClause.toString(), get_TrxName()) .setClient_ID() .setParameters( new Object[] { ipp.getM_Forecast_ID(), ipp.getM_Product_ID(), ipp.getM_Warehouse_ID(), ipp.getDatePromised(), ipp.getSalesRep_ID() }) .first(); } if (forecastLine == null) { forecastLine = new X_M_ForecastLine(getCtx(), 0, get_TrxName()); } forecastLine.setM_Forecast_ID(ipp.getM_Forecast_ID()); forecastLine.setAD_Org_ID(ipp.getAD_Org_ID()); forecastLine.setM_Product_ID(ipp.getM_Product_ID()); forecastLine.setM_Warehouse_ID(ipp.getM_Warehouse_ID()); forecastLine.setC_Period_ID( MPeriod.getC_Period_ID(getCtx(), ipp.getDatePromised(), ipp.getAD_Org_ID())); forecastLine.setDatePromised(ipp.getDatePromised()); forecastLine.setSalesRep_ID(ipp.getSalesRep_ID()); forecastLine.setQty(ipp.getQty()); forecastLine.saveEx(); ipp.setM_ForecastLine_ID(forecastLine.getM_ForecastLine_ID()); ipp.saveEx(); isImported = true; }