| 1 package org.campware.cream.modules.actions; 2 3 42 43 import java.util.Date ; 44 import java.util.Enumeration ; 45 import java.math.BigDecimal ; 46 import org.apache.velocity.context.Context; 47 48 import org.apache.turbine.util.RunData; 49 import org.apache.turbine.util.parser.ParameterParser; 50 import org.apache.torque.util.Criteria; 51 import org.apache.torque.util.Transaction; 52 import java.sql.Connection ; 53 54 import org.campware.cream.om.Sorder; 55 import org.campware.cream.om.SorderPeer; 56 import org.campware.cream.om.SorderItem; 57 import org.campware.cream.om.SorderItemPeer; 58 59 63 public class OrderSQL extends CreamAction 64 { 65 protected void initScreen() 66 { 67 setModuleType(DOCUMENT); 68 setModuleName("SORDER"); 69 } 70 71 81 public void doInsert(RunData data, Context context) 82 throws Exception  83 { 84 Sorder entry = new Sorder(); 85 data.getParameters().setProperties(entry); 86 87 entry.setSorderCode(getTempCode()); 88 89 entry.setIssuedDate(parseDate(data.getParameters().getString("issueddate"))); 90 entry.setClosedDate(parseDate(data.getParameters().getString("closeddate"))); 91 entry.setCreatedBy(data.getUser().getName()); 92 entry.setCreated(new Date ()); 93 entry.setModifiedBy(data.getUser().getName()); 94 entry.setModified(new Date ()); 95 96 ParameterParser pp= data.getParameters(); 97 Enumeration paramKeys= pp.keys(); 98 BigDecimal currTotal = new BigDecimal (0); 99 int currId = entry.getCurrencyId(); 100 int custId = entry.getCustomerId(); 101 int recpId = entry.getRecipientId(); 102 int projId = entry.getProjectId(); 103 104 while(paramKeys.hasMoreElements()) { 105 String paramName = paramKeys.nextElement().toString(); 106 if(paramName.startsWith("productid")) { 107 String suffix=paramName.substring(9, paramName.length()); 108 SorderItem entryItem= new SorderItem(); 109 110 entryItem.setProductId(pp.getInt("productid" + suffix)); 111 entryItem.setDescription(pp.getString("description" + suffix)); 112 BigDecimal itmUnitPrice= pp.getBigDecimal("unitprice" + suffix); 113 int itmQuantity= pp.getInt("quantity" + suffix); 114 BigDecimal itmCurrTotal= itmUnitPrice.multiply(BigDecimal.valueOf(itmQuantity)); 115 entryItem.setUnitPrice(itmUnitPrice); 116 entryItem.setQuantity(itmQuantity); 117 entryItem.setItemCurrTotal(itmCurrTotal); 118 119 entryItem.setCurrencyId(currId); 120 entryItem.setCustomerId(custId); 121 entryItem.setRecipientId(recpId); 122 entryItem.setProjectId(projId); 123 124 currTotal= currTotal.add(itmCurrTotal); 125 entry.addSorderItem(entryItem); 126 } 127 } 128 129 entry.setCurrencyAmount(currTotal); 130 131 Connection conn = Transaction.begin(SorderPeer.DATABASE_NAME); 132 boolean success = false; 133 try { 134 entry.save(conn); 135 entry.setSorderCode(getRowCode("SO", entry.getSorderId())); 136 entry.save(conn); 137 Transaction.commit(conn); 138 success = true; 139 140 } finally { 141 if (!success) Transaction.safeRollback(conn); 142 } 143 144 } 145 146 154 public void doUpdate(RunData data, Context context) 155 throws Exception  156 { 157 Sorder entry = new Sorder(); 158 data.getParameters().setProperties(entry); 159 160 entry.setIssuedDate(parseDate(data.getParameters().getString("issueddate"))); 161 entry.setClosedDate(parseDate(data.getParameters().getString("closeddate"))); 162 entry.setCreated(parseDateTime(data.getParameters().getString("created"))); 163 entry.setModifiedBy(data.getUser().getName()); 164 entry.setModified(new Date ()); 165 166 ParameterParser pp= data.getParameters(); 167 Enumeration paramKeys= pp.keys(); 168 BigDecimal currTotal = new BigDecimal (0); 169 int currId = entry.getCurrencyId(); 170 int custId = entry.getCustomerId(); 171 int recpId = entry.getRecipientId(); 172 int projId = entry.getProjectId(); 173 174 while(paramKeys.hasMoreElements()) { 175 String paramName = paramKeys.nextElement().toString(); 176 if(paramName.startsWith("productid")) { 177 String suffix=paramName.substring(9, paramName.length()); 178 SorderItem entryItem= new SorderItem(); 179 180 entryItem.setProductId(pp.getInt("productid" + suffix)); 181 entryItem.setDescription(pp.getString("description" + suffix)); 182 BigDecimal itmUnitPrice= pp.getBigDecimal("unitprice" + suffix); 183 int itmQuantity= pp.getInt("quantity" + suffix); 184 BigDecimal itmCurrTotal= itmUnitPrice.multiply(BigDecimal.valueOf(itmQuantity)); 185 entryItem.setUnitPrice(itmUnitPrice); 186 entryItem.setQuantity(itmQuantity); 187 entryItem.setItemCurrTotal(itmCurrTotal); 188 189 entryItem.setCurrencyId(currId); 190 entryItem.setCustomerId(custId); 191 entryItem.setRecipientId(recpId); 192 entryItem.setProjectId(projId); 193 194 currTotal= currTotal.add(itmCurrTotal); 195 entry.addSorderItem(entryItem); 196 } 197 } 198 199 entry.setCurrencyAmount(currTotal); 200 201 entry.setModified(true); 202 entry.setNew(false); 203 204 Criteria crit = new Criteria(); 205 crit.add(SorderItemPeer.SORDER_ID, entry.getSorderId()); 206 207 Connection conn = Transaction.begin(SorderPeer.DATABASE_NAME); 208 boolean success = false; 209 try { 210 SorderItemPeer.doDelete(crit, conn); 211 entry.save(conn); 212 Transaction.commit(conn); 213 success = true; 214 215 } finally { 216 if (!success) Transaction.safeRollback(conn); 217 } 218 219 } 220 221 225 public void doDelete(RunData data, Context context) 226 throws Exception  227 { 228 Criteria criteria = new Criteria(); 229 criteria.add(SorderPeer.SORDER_ID, data.getParameters().getInt("sorderid")); 230 SorderPeer.doDelete(criteria); 231 } 232 233 237 public void doDeleteselected(RunData data, Context context) 238 throws Exception  239 { 240 int[] delIds= data.getParameters().getInts("rowid"); 241 Criteria criteria = new Criteria(); 242 criteria.addIn(SorderPeer.SORDER_ID, delIds); 243 SorderPeer.doDelete(criteria); 244 } 245 246 } 247 | Popular Tags |