1 14 package org.compiere.wstore; 15 16 import java.util.*; 17 import java.sql.*; 18 import java.math.*; 19 20 import org.apache.log4j.Logger; 21 22 import org.compiere.model.*; 23 import org.compiere.util.DB; 24 import org.compiere.util.Env; 25 import org.compiere.www.*; 26 27 33 public class WebOrder 34 { 35 41 public WebOrder(WebUser wu, WebBasket wb, Properties ctx) 42 { 43 m_ctx = ctx; 44 createOrder (wu, wb); 45 } 47 48 public static final String NAME = "webOrder"; 49 50 private Logger log = Logger.getLogger(getClass()); 51 52 private MOrder m_order; 53 54 private Properties m_ctx; 55 56 57 63 private boolean createOrder (WebUser wu, WebBasket wb) 64 { 65 log.debug("createOrder"); 66 m_order = new MOrder (m_ctx, 0); 68 log.debug("createOrder - AD_Client_ID=" + m_order.getAD_Client_ID() 69 + ",AD_Org_ID=" + m_order.getAD_Org_ID() + " - " + m_ctx + " - " + m_order); 70 m_order.setC_DocTypeTarget_ID(MOrder.DocSubTypeSO_Prepay); 72 m_order.setPaymentRule(MOrder.PAYMENTRULE_CreditCard); 73 m_order.setDeliveryRule(MOrder.DELIVERYRULE_AfterReceipt); 74 m_order.setInvoiceRule(MOrder.INVOICERULE_Immediate); 75 m_order.setIsSelfService(true); 76 if (wb.getM_PriceList_ID() > 0) 77 m_order.setM_PriceList_ID(wb.getM_PriceList_ID()); 78 79 m_order.setC_BPartner_ID(wu.getC_BPartner_ID()); 81 m_order.setBillTo_ID(wu.getC_BPartner_Location_ID()); 82 m_order.setC_BPartner_Location_ID(wu.getC_BPartner_Location_ID()); 83 m_order.setAD_User_ID(wu.getAD_User_ID()); 84 m_order.setSendEMail(true); 86 m_order.setDocAction(MOrder.DOCACTION_Process); 87 m_order.save(); 88 log.debug ("createOrder - ID=" + m_order.getC_Order_ID() 89 + ", DocNo=" + m_order.getDocumentNo()); 90 91 ArrayList lines = wb.getLines(); 92 for (int i = 0; i < lines.size(); i++) 93 { 94 WebBasketLine wbl = (WebBasketLine)lines.get(i); 95 MOrderLine ol = new MOrderLine(m_order); 96 ol.setM_Product_ID(wbl.getM_Product_ID()); 97 ol.setQtyOrdered(wbl.getQuantity()); 98 ol.setPrice(); 99 ol.setPriceActual(wbl.getPrice()); 100 ol.setTax(); 101 ol.save(); 102 } boolean ok = m_order.process(MOrder.DOCACTION_Process); 104 105 if (!wu.isCustomer()) 107 { 108 wu.setIsCustomer(true); 110 wu.save(); 111 } 113 BigDecimal amt = m_order.getGrandTotal(); 114 log.info("createOrder " + amt); 115 return ok; 116 } 118 119 123 public String toString() 124 { 125 StringBuffer sb = new StringBuffer ("WebOrder["); 126 sb.append(m_order) 127 .append("]"); 128 return sb.toString(); 129 } 131 135 public boolean process() 136 { 137 if (m_order == null) 138 return false; 139 return m_order.process(MOrder.DOCACTION_Complete); 140 } 142 146 public boolean isProcessed() 147 { 148 if (m_order == null) 149 return false; 150 return m_order.isProcessed(); 151 } 153 157 public boolean isInProgress() 158 { 159 if (m_order == null) 160 return false; 161 return MOrder.DOCSTATUS_InProgress.equals(m_order.getDocStatus()); 162 } 164 165 166 167 171 public String getDocumentNo() 172 { 173 return m_order.getDocumentNo(); 174 } 175 176 public BigDecimal getTotalLines() 177 { 178 return m_order.getTotalLines(); 179 } 180 181 public BigDecimal getFreightAmt() 182 { 183 return m_order.getFreightAmt(); 184 } 185 186 public BigDecimal getTaxAmt() 187 { 188 return m_order.getGrandTotal() 189 .subtract(m_order.getTotalLines()) 190 .subtract(m_order.getFreightAmt()); 191 } 192 193 public BigDecimal getGrandTotal() 194 { 195 return m_order.getGrandTotal(); 196 } 197 198 protected MOrder getOrder() 199 { 200 return m_order; 201 } 202 203 204 205 private String m_invoiceInfo = null; 206 private int m_C_Invoice_ID = -1; 207 208 212 public String getInvoiceInfo() 213 { 214 if (m_invoiceInfo == null) 215 { 216 MInvoice[] invoices = m_order.getInvoices(); 217 int length = invoices.length; 218 if (length > 0) { 220 m_C_Invoice_ID = invoices[length-1].getC_Invoice_ID(); 221 m_invoiceInfo = invoices[length-1].getDocumentNo(); 222 } 223 } 224 return m_invoiceInfo; 225 } 226 227 231 public int getInvoice_ID() 232 { 233 if (m_C_Invoice_ID == -1) 234 getInvoiceInfo(); 235 return m_C_Invoice_ID; 236 } 238 242 public int getC_Currency_ID() 243 { 244 if (m_order == null) 245 return 0; 246 return m_order.getC_Currency_ID(); 247 } 249 253 public String getCurrencyISO() 254 { 255 if (m_order == null) 256 return ""; 257 return MCurrency.getISO_Code (m_ctx, m_order.getC_Currency_ID()); 258 } 260 } | Popular Tags |