function __construct($object, $parameters = null)
 {
     if ($object instanceof Product) {
         $this->item = ShoppingCart::get_item_by_id($object->ID, null, $parameters);
         //provide a 0-quantity facade item if there is no such item in cart
         if (!$this->item) {
             $this->item = new Product_OrderItem($object, 0);
         }
         //TODO: perhaps we should just store the product itself, and do away with the facade, as it might be unnecessary complication
     } elseif ($object instanceof OrderItem) {
         $this->item = $object;
     }
     if (!$this->item) {
         user_error("EcomQuantityField: no item or product passed to constructor.");
     }
     $this->parameters = $parameters;
     //TODO: include javascript for easy update
 }
 function Item()
 {
     if ($item = ShoppingCart::get_item_by_id($this->ProductID, $this->ID)) {
         return $item;
     }
     return new ProductVariation_OrderItem($this, 0);
     //return dummy item so that we can still make use of Item
 }
 /**
  * Returns the order item which contains the product
  * Note : This function is usable in the Product context because a
  * Product_OrderItem only has a Product object in attribute
  */
 function Item()
 {
     $filter = null;
     $this->extend('updateItemFilter', $filter);
     $item = ShoppingCart::get_item_by_id($this->ID, null, $filter);
     //TODO: needs filter
     if (!$item) {
         $item = new Product_OrderItem($this, 0);
     }
     //return dummy item so that we can still make use of Item
     $this->extend('updateDummyItem', $item);
     return $item;
 }