1 14 package org.compiere.model; 15 16 import java.util.*; 17 import java.sql.*; 18 import java.math.*; 19 import java.io.Serializable ; 20 21 import org.compiere.util.*; 22 23 38 public class MOrderLine extends X_C_OrderLine 39 { 40 45 public MOrderLine (Properties ctx, int C_OrderLine_ID) 46 { 47 super (ctx, C_OrderLine_ID); 48 } 50 54 public MOrderLine(MOrder order) 55 { 56 super (order.getCtx(), 0); 57 setC_Order_ID (order.getC_Order_ID()); setOrder(order); 59 setC_Tax_ID (0); 61 setLine (0); 62 setC_UOM_ID (0); 63 setDirectShip (false); 65 setIsDescription(false); 66 setPriceList (Env.ZERO); 68 setPriceActual (Env.ZERO); 69 setPriceLimit (Env.ZERO); 70 setLineNetAmt (Env.ZERO); 71 setQtyOrdered (Env.ZERO); 73 setQtyDelivered (Env.ZERO); 74 setQtyReserved (Env.ZERO); 75 setQtyInvoiced (Env.ZERO); 76 setFreightAmt (Env.ZERO); 78 setChargeAmt (Env.ZERO); 79 } 81 86 public MOrderLine (Properties ctx, ResultSet rs) 87 { 88 super (ctx, rs); 89 } 91 private int m_M_PriceList_ID = 0; 92 private boolean m_IsSOTrx = true; 93 private boolean m_priceSet = false; 94 95 100 public void setOrder (MOrder order) 101 { 102 setClientOrg(order.getAD_Client_ID(), order.getAD_Org_ID()); 103 setC_BPartner_ID(order.getC_BPartner_ID()); 104 setC_BPartner_Location_ID(order.getC_BPartner_Location_ID()); 105 setM_Warehouse_ID(order.getM_Warehouse_ID()); 106 setDateOrdered(order.getDateOrdered()); 107 setDatePromised(order.getDatePromised()); 108 m_M_PriceList_ID = order.getM_PriceList_ID(); 109 m_IsSOTrx = order.isSOTrx(); 110 setC_Currency_ID(order.getC_Currency_ID()); 111 } 113 116 public void setPrice() 117 { 118 if (getM_Product_ID() == 0) 119 return; 120 Log.trace(Log.l4_Data, "MOrderLine.setPrice - M_PriceList_ID=" + m_M_PriceList_ID); 122 MProductPricing pp = new MProductPricing (getM_Product_ID()); 123 pp.setM_PriceList_ID(m_M_PriceList_ID); 124 setPriceActual (pp.getPriceStd()); 125 setPriceList (pp.getPriceList()); 126 setPriceLimit (pp.getPriceLimit()); 127 setDiscount(pp.getDiscount()); 129 setC_UOM_ID(pp.getC_UOM_ID()); 131 m_priceSet = true; 133 } 135 138 public void setTax() 139 { 140 int ii = Tax.get(getCtx(), getM_Product_ID(), getC_Charge_ID(), getDateOrdered(), getDateOrdered(), 141 getAD_Org_ID(), getM_Warehouse_ID(), 142 getC_BPartner_Location_ID(), getC_BPartner_Location_ID(), m_IsSOTrx); 144 if (ii != 0) 145 setC_Tax_ID (ii); 146 else 147 log.error("MOrderLine.setTax - No Tax found"); 148 } 150 153 private void setDefaults() 154 { 155 if (getC_BPartner_ID() == 0 || getC_BPartner_Location_ID() == 0 157 || getM_Warehouse_ID() == 0) 158 { 159 MOrder o = new MOrder (getCtx(), getC_Order_ID()); 160 setOrder (o); 161 } 162 163 if (!m_priceSet && Env.ZERO.compareTo(getPriceActual()) == 0) 165 setPrice(); 166 167 if (getC_Tax_ID() == 0) 169 setTax(); 170 171 if (getLine() == 0) 173 { 174 String sql = "SELECT COALESCE(MAX(Line),0)+10 FROM C_OrderLine WHERE C_Order_ID=?"; 175 int ii = DB.getSQLValue (sql, getC_Order_ID()); 176 setLine (ii); 177 } 178 if (getC_UOM_ID() == 0) 180 setC_UOM_ID (Env.getContextAsInt(getCtx(), "#C_UOM_ID")); 181 182 setLineNetAmt(getPriceActual().multiply(getQtyOrdered())); 184 setDiscount(); 185 } 187 191 public boolean save () 192 { 193 Log.trace (Log.l4_Data, "MOrderLine.save"); 194 setDefaults(); 195 return super.save (); 196 } 198 202 public String toString () 203 { 204 StringBuffer sb = new StringBuffer ("MOrderLine[") 205 .append(getID()) 206 .append ("]"); 207 return sb.toString (); 208 } 209 210 214 public String getName() 215 { 216 String retValue = ""; 217 int M_Product_ID = getM_Product_ID(); 218 if (M_Product_ID == 0) 219 return retValue; 220 String sql = "SELECT Name FROM M_Product WHERE M_Product_ID=?"; 222 PreparedStatement pstmt = null; 223 try 224 { 225 pstmt = DB.prepareStatement(sql); 226 pstmt.setInt(1, M_Product_ID); 227 ResultSet rs = pstmt.executeQuery(); 228 if (rs.next()) 229 retValue = rs.getString(1); 230 rs.close(); 231 pstmt.close(); 232 pstmt = null; 233 } 234 catch (Exception e) 235 { 236 log.error("getName", e); 237 } 238 finally 239 { 240 try 241 { 242 if (pstmt != null) 243 pstmt.close (); 244 } 245 catch (Exception e) 246 {} 247 pstmt = null; 248 } 249 return retValue; 250 } 252 255 public void setDiscount () 256 { 257 BigDecimal list = getPriceList(); 258 if (Env.ZERO.compareTo(list) == 0) 260 return; 261 BigDecimal discount = list.subtract(getPriceActual()) 262 .multiply(new BigDecimal(100)) 263 .divide(list, 2, BigDecimal.ROUND_HALF_UP); 264 setDiscount(discount); 265 } 267 272 public void setC_UOM_ID (int C_UOM_ID) 273 { 274 super.setC_UOM_ID (C_UOM_ID); 275 } 277 } | Popular Tags |