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
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= (BigDecimal)A_Tab.getValue("含稅金額");
BigDecimal Tax= (BigDecimal)A_Tab.getValue("稅額");
BigDecimal Prepay= (BigDecimal)A_Tab.getValue("採購訂金");
BigDecimal Total= (BigDecimal)A_Tab.getValue("合計");
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);
A_Tab.setValue("含稅金額", Amt1);
Amt = Amt1.divide(Rate.add(new BigDecimal(1) ) , 0, RoundingMode.CEILING );
A_Tab.setValue("採購金額", Amt );
Tax = Amt1.subtract(Amt);
A_Tab.setValue("稅額", Tax);
Total = Amt1.subtract(Prepay);
A_Tab.setValue("合計", Total);
} else {
Amt= Qty.multiply(Price).divide(new BigDecimal(1) , 0, RoundingMode.CEILING );
A_Tab.setValue("採購金額", Amt);
Tax = Amt.multiply(Rate);
A_Tab.setValue("稅額", Tax);
Total = Amt.add(Tax).subtract(Prepay);
A_Tab.setValue("合計", Total);
}
}
}
result=""
沒有留言:
張貼留言