import org.compiere.model.MTable
import org.compiere.util.DB
import org.compiere.util.Msg
import java.math.BigDecimal
import java.math.RoundingMode
import java.sql.PreparedStatement
import java.sql.ResultSet
// A_WindowNo A_Tab A_Field A_Value A_OldValue A_Ctx BOMQty
if (A_Value!=null) // A_OldValue!=A_Value)
{
Integer ID= (Integer)A_Value;
BigDecimal Rate = (BigDecimal)A_Tab.getValue("稅率");
if (Rate != null) Rate = Rate.divide(new BigDecimal(100));
BigDecimal Qty= (BigDecimal)A_Tab.getValue("訂單數量");
BigDecimal Price= (BigDecimal)A_Tab.getValue("單價");
BigDecimal Amt= (BigDecimal)A_Tab.getValue("訂單金額");
BigDecimal Amt1= new BigDecimal(0);
BigDecimal Tax= (BigDecimal)A_Tab.getValue("稅額");
BigDecimal Prepay= (BigDecimal)A_Tab.getValue("銷貨訂金");
BigDecimal Total= (BigDecimal)A_Tab.getValue("合計");
// Integer Tax_ID = (Integer)A_Tab.getValue("稅別_ID");
String sql = "SELECT 稅率, 編號 FROM 稅別 WHERE 稅別_ID=?";
PreparedStatement pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, ID.intValue());
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String type = rs.getString("編號"); // 02 -> 應稅 (內含)
Rate = rs.getBigDecimal("稅率");
A_Tab.setValue("稅率", Rate);
if (Rate != null) Rate = Rate.divide(new BigDecimal(100));
if (type.equals("02"))
{
Amt1= Qty.multiply(Price);//含稅金額
Amt = Amt1.divide(Rate.add(new BigDecimal(1) ) , 0, RoundingMode.CEILING );
Tax = Amt1.subtract(Amt);
Total = Amt1.subtract(Prepay);
} else {
Amt= Qty.multiply(Price).divide(new BigDecimal(1) , 0, RoundingMode.CEILING );
Tax = Amt.multiply(Rate);
Total = Amt.add(Tax).subtract(Prepay);
}
A_Tab.setValue("訂單金額", Amt);
A_Tab.setValue("稅額", Tax);
A_Tab.setValue("合計", Total);
}
}
result=""
沒有留言:
張貼留言