2014年10月13日 星期一

iDempiere Callout ERP 規則引擎實作 groovy:重量kg單重g=數量pcs

import org.compiere.model.MTable
import org.compiere.util.DB
import org.compiere.util.Msg
import java.math.BigDecimal
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.math.RoundingMode

// A_WindowNo    A_Tab    A_Field    A_Value    A_OldValue    A_Ctx   BOMQty
if (A_Value!=null)   // A_OldValue!=A_Value)
{      
        BigDecimal Tw = new BigDecimal (0);
        BigDecimal Uw = new BigDecimal (0);
        BigDecimal Qty = new BigDecimal (0);
        String fname = A_Field.getColumnName();

        if (fname.equals("重量kg")) {

              if (A_Value == null) Tw = null;
              else Tw = (BigDecimal) A_Value;

             if (A_Tab.getValue("單重g") == null) Uw = null;
             else Uw = (BigDecimal)A_Tab.getValue("單重g");

         }else if (fname.equals("單重g")) {

              if (A_Value == null) Uw = null;
              else Uw = (BigDecimal) A_Value;

              if (A_Tab.getValue("重量kg") == null) Tw = null;
              else Tw = (BigDecimal)A_Tab.getValue("重量Kg");
         }
         BigDecimal  Qty1 = new BigDecimal (1);
         if (Tw==null) Tw = new BigDecimal (0);
         if (Uw==null) Uw = new BigDecimal (0);
         if (Uw.equals(new BigDecimal (0)))
                  Qty = new BigDecimal (0);
        else Qty =  Tw.multiply(1000).divide(Uw,0,RoundingMode.DOWN );  //小數點全捨 FLOOR  DOWN  CEILING
       
        if (Qty.compareTo(new BigDecimal (0)) < 0)  Qty1= Qty1.negate();
        A_Tab.setValue("桶數", Qty1);
        A_Tab.setValue("數量pcs", Qty );
}
result=""

沒有留言:

張貼留言