วันศุกร์ที่ 28 สิงหาคม พ.ศ. 2552

เพิ่ม Void กับ Reverse ให้กับ Invoice Batch ของ BAN-PAN ERP

แก้ไขที่ไฟล์ DocumentEngine.java ที่ base\src\org\compiere\process\
บรรทัดที่ 963

/******************** * Invoice */
else if (AD_Table_ID == MInvoice.Table_ID AD_Table_ID == MInvBatch.Table_ID) {
if (docStatus.equals(DocumentEngine.STATUS_Completed)) {
options[index++] = DocumentEngine.ACTION_Void;
options[index++] = DocumentEngine.ACTION_Reverse_Correct;
}
}


ทำให้ข้อความที่แสดงข้างล่างของหน้า Order และ Invoice มีการแสดงค่าภาษี

To คุณเหมย เรื่อง : แก้ไข Source Code วันที่ 26/8/52
ปัญหาที่แก้ไข : ทำให้ข้อความที่แสดงข้างล่างของหน้า Order และ Invoice มีการแสดงค่าภาษี

วิธีการแก้:

1. แก้ไขไฟล์ Gridtab.java ใน org.compiere.model

2. ต้องแก้ Message ในระบบ Adempiere ด้วย เพื่อให้รับค่าไปแสดงได้ถูกต้อง โดยค้นหา Key ชื่อ "OrderSummary" แล้วแก้ MessageText เป็น{0} Line(s) - {1,number,#,##0.00} - Tax: {5,number,#,##0.00} - Total: {2,number,#,##0.00} {3} = {4,number,#,##0.00}

3. แก้ส่วนของ Tab "Translation" ภาษาไทยให้เหมือนกันด้วย{0} รายการ - {1,number,#,##0.00} - ภาษี: {5,number,#,##0.00} - ทั้งหมด: {2,number,#,##0.00} {3} = {4,number,#,##0.00}

เวท

ผู้ Contribute คือ คุณเวทค่ะ ขอขอบคุณค่ะ

วันอาทิตย์ที่ 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;


}