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 /**
015 * ID for serialization.
016 */
017 private static final long serialVersionUID = -2036308093034056202L;
018
019 private CountingStock cs;
020 private String date;
021 private int nr;
022
023 /**
024 * @param date date of the order.
025 * @param nr order number, this parameter is necessary to distinguish between
026 * two or more orders placed on the same day.
027 * @param cs CountingStock with {@link CIArticle CIArticles} that are ordered.
028 */
029 public CIOpenPurchaseOrders(String date, int nr, CountingStock cs) {
030 super(date + " (" + new Integer(nr).toString() + ")");
031 this.date = date;
032 this.nr = nr;
033 this.cs = cs;
034 this.setValue(new IntegerValue(2 + new Double(4 * Math.random()).intValue()));
035 }
036
037 /**
038 * @return the date of the order.
039 */
040 public String getDate() {
041 return date;
042 }
043
044 /**
045 * @return the order number.
046 */
047 public int getOrderNumber() {
048 return nr;
049 }
050
051 /**
052 * @return the {@link CountingStock} with the orders.
053 */
054 public CountingStock getOrders() {
055 return cs;
056 }
057
058 /**
059 * @return the value of the orders.
060 */
061 public Double getOrdersValue() {
062 DoubleValue dv = new DoubleValue(0);
063 cs.sumStock(null, CatalogItemValue.EVALUATE_OFFER, dv);
064 return Conversions.valueToDouble(dv);
065 }
066
067 /**
068 * @return the number of days the market still has to wait for the delivery to arrive.
069 */
070 public int getDaysTillArrival() {
071 return new Integer(getValue().toString()).intValue();
072 }
073
074 /**
075 * Decreases the number of days the market has to wait for a delivery to arrive.
076 */
077 public void decreaseDaysTillArrival(int i) {
078 setValue(getValue().subtract(new IntegerValue(i)));
079 }
080
081 /**
082 * @return a clone of the given CatalogItemImpl.
083 */
084 protected CatalogItemImpl getShallowClone() {
085 return new CIOpenPurchaseOrders(date, nr, cs);
086 }
087 }