วันอาทิตย์ที่ 9 สิงหาคม พ.ศ. 2552

Update isDelivered in C_Oder

ขณะนี้ Adempiere 3.5.3a ไม่สนับสนุนเรื่อง isDelivered เนื่องจาก เมื่อมีการนำสินค้ามาส่งแล้ว ยังไม่มีการมาอัพเดทสถานะของ isDelivered ใน C_Order เลย เราจึงทำการแก้ไขดังนี้ โดยเพิ่มฟังกซ์ ชั่นเข้าไปเช็คค่าใน C_OrderLine ว่าถ้า QtyDelivered == QtyOdered แล้ว ให้อัพเดทสถานะ isDelivered เป็น Y

/** * Update isDelivered
* @return true if header updated
*/
private boolean updateIsDelivered() {

String sql = "SELECT COALESCE(SUM(QtyDelivered),0) as QtyDelivered, COALESCE(SUM(QtyOrdered),0) as QtyOrdered " +
" FROM C_OrderLine il WHERE i.C_Order_ID=" + getC_Order_ID();

Boolean isDelivered = false;

try {
PreparedStatement pstmt = DB.prepareStatement(sql, null);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) { //
BigDecimal QtyDelivered = rs.getBigDecimal("QtyDelivered");
BigDecimal QtyOrdered = rs.getBigDecimal("QtyOrdered");
if (QtyDelivered.subtract(QtyOrdered) == Env.ZERO) {
isDelivered = true;
}
}
rs.close();
pstmt.close();
}
catch (SQLException e) {
log.log(Level.SEVERE, sql, e);
return false;
}

if (isDelivered) {
sql = "UPDATE C_Order SET isDelivered = 'Y' WHERE C_Order_ID = " +
getC_Order_ID();
int no = DB.executeUpdate(sql, get_TrxName());
}
return true;


}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น