001 package market; 002 003 import data.CatalogItemValue; 004 import data.CountingStock; 005 import data.DoubleValue; 006 import data.IntegerValue; 007 import data.ooimpl.CatalogItemImpl; 008 009 /** 010 * A purchase order placed by the manager, which has not yet arrived. 011 */ 012 public class CIOpenPurchaseOrders extends CatalogItemImpl { 013 014 private CountingStock cs; 015 private String date; 016 private int nr; 017 018 /** 019 * @param date date of the order. 020 * @param nr order number, this parameter is necessary to distinguish between 021 * two or more orders placed on the same day. 022 * @param cs CountingStock with {@link CIArticle CIArticles} that are ordered. 023 */ 024 public CIOpenPurchaseOrders(String date, int nr, CountingStock cs) { 025 super(date + " (" + new Integer(nr).toString() + ")"); 026 this.date = date; 027 this.nr = nr; 028 this.cs = cs; 029 this.setValue(new IntegerValue(2 + new Double(4 * Math.random()).intValue())); 030 } 031 032 /** 033 * @return the date of the order. 034 */ 035 public String getDate() { 036 return date; 037 } 038 039 /** 040 * @return the order number. 041 */ 042 public int getOrderNumber() { 043 return nr; 044 } 045 046 /** 047 * @return the {@link CountingStock} with the orders. 048 */ 049 public CountingStock getOrders() { 050 return cs; 051 } 052 053 /** 054 * @return the value of the orders. 055 */ 056 public Double getOrdersValue() { 057 DoubleValue dv = new DoubleValue(0); 058 cs.sumStock(null, CatalogItemValue.EVALUATE_OFFER, dv); 059 return Conversions.valueToDouble(dv); 060 } 061 062 /** 063 * @return the number of days the market still has to wait for the delivery to arrive. 064 */ 065 public int getDaysTillArrival() { 066 return new Integer(getValue().toString()).intValue(); 067 } 068 069 /** 070 * Decreases the number of days the market has to wait for a delivery to arrive. 071 */ 072 public void decreaseDaysTillArrival(int i) { 073 setValue(getValue().subtract(new IntegerValue(i))); 074 } 075 076 /** 077 * @return a clone of the given CatalogItemImpl. 078 */ 079 protected CatalogItemImpl getShallowClone() { 080 return new CIOpenPurchaseOrders(date, nr, cs); 081 } 082 }