/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program is distributed in the hope * * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ package org.compiere.model; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Properties; import java.util.logging.Level; import org.compiere.util.Env; /** * Project Callouts * * @author Jorg Janke * @version $Id: CalloutProject.java,v 1.3 2006/07/30 00:51:04 jjanke Exp $ */ public class CalloutProject extends CalloutEngine { /** * Project Planned - Price + Qty. * - called from PlannedPrice, PlannedQty * - calculates PlannedAmt (same as Trigger) * @param ctx context * @param WindowNo current Window No * @param mTab Grid Tab * @param mField Grid Field * @param value New Value * @return null or error message */ public String planned (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value) { if (isCalloutActive() || value == null) return ""; BigDecimal PlannedQty, PlannedPrice; int StdPrecision = Env.getContextAsInt(ctx, WindowNo, "StdPrecision"); // get values PlannedQty = (BigDecimal)mTab.getValue("PlannedQty"); if (PlannedQty == null) PlannedQty = Env.ONE; PlannedPrice = ((BigDecimal)mTab.getValue("PlannedPrice")); if (PlannedPrice == null) PlannedPrice = Env.ZERO; // BigDecimal PlannedAmt = PlannedQty.multiply(PlannedPrice); if (PlannedAmt.scale() > StdPrecision) PlannedAmt = PlannedAmt.setScale(StdPrecision, RoundingMode.HALF_UP); // if (log.isLoggable(Level.FINE)) log.fine("PlannedQty=" + PlannedQty + " * PlannedPrice=" + PlannedPrice + " -> PlannedAmt=" + PlannedAmt + " (Precision=" + StdPrecision+ ")"); mTab.setValue("PlannedAmt", PlannedAmt); return ""; } // planned } // CalloutProject