/* *****************************************************************************
* JFire - it's hot - Free ERP System - http://jfire.org *
* Copyright (C) 2004-2005 NightLabs - http://NightLabs.org *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2.1 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this library; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin St, Fifth Floor, *
* Boston, MA 02110-1301 USA *
* *
* Or get it online : *
* http://opensource.org/licenses/lgpl-license.php *
* *
* *
******************************************************************************/
package org.nightlabs.jfire.trade.ui.transfer.wizard;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.nightlabs.base.ui.wizard.IDynamicPathWizard;
import org.nightlabs.jfire.store.ProductType;
import org.nightlabs.jfire.store.id.DeliveryNoteID;
import org.nightlabs.jfire.store.id.ProductTypeID;
import org.nightlabs.jfire.trade.Article;
import org.nightlabs.jfire.trade.ArticleContainer;
import org.nightlabs.jfire.trade.id.CustomerGroupID;
/**
* @author Marco Schulze - marco at nightlabs dot de
*/
public interface DeliveryWizard
extends IDynamicPathWizard, TransferWizard
{
// public static final String SIDE_VENDOR = "vendor";
// public static final String SIDE_CUSTOMER = "customer";
//
// /**
// * This wizard can be either used on the vendor or on the customer side. If it is used
// * on the vendor side, it means that the local organisation is the vendor. The customer side
// * specifies that the local organisation is the customer. This is e.g. the case when the
// * local organisation has received an invoice and wants to book the payment (or even
// * DO the payment via electronic money transfer).
// *
// * @return Returns either {@link #SIDE_VENDOR} or {@link #SIDE_CUSTOMER}.
// */
// String getSide();
//
// /**
// * @return Returns an <tt>AnchorID</tt> which references a {@link org.nightlabs.jfire.trade.ui.LegalEntity}.
// */
// AnchorID getPartnerID();
/**
* Hint: Delegate to {@link TransferWizardUtil#getProductTypeIDs(Collection)}.
*
* @return Returns a <tt>Collection</tt> of
* {@link org.nightlabs.jfire.store.id.ProductTypeID}.
*/
Collection<ProductTypeID> getProductTypeIDs();
/**
* Hint: Delegate to {@link TransferWizardUtil#getArticles(Collection, Set, boolean)}.
*
* @param productTypeIDs Instances of {@link org.nightlabs.jfire.store.ProductType}.
* @param reversing This method returns only those {@link Article}s where <code>reversing == </code>{@link Article#isReversing()}.
* @return Returns instances of {@link org.nightlabs.jfire.trade.ui.Article} or <code>null</code>.
*/
List<Article> getArticles(Set<? extends ProductTypeID> productTypeIDs, boolean reversing);
// /**
// * Hint: Delegate to {@link TransferWizardUtil#getProductIDs(Collection, Set)}.
// *
// * @param productTypeIDs Instances of
// * {@link org.nightlabs.jfire.store.id.ProductTypeID}.
// *
// * @return Returns all {@link org.nightlabs.jfire.store.id.ProductID}s that match
// * one of the given {@link org.nightlabs.jfire.store.id.ProductTypeID}s
// * exactly (no inheritance).
// */
// Collection getProductIDs(Set productTypeIDs);
/**
* Hint: Delegate to {@link TransferWizardUtil#getProductTypeByIDMap(Collection)}.
*
* @param articleContainers A <tt>Collection</tt> of {@link ArticleContainer}.
* @return A <tt>Map</tt> of {@link org.nightlabs.jfire.store.id.ProductTypeID} as key
* and {@link org.nightlabs.jfire.store.ProductType} as value.
*/
Map<ProductTypeID, ProductType> getProductTypeByIDMap();
/**
* @return Returns instances of {@link org.nightlabs.jfire.accounting.id.CustomerGroupID}
*/
Collection<CustomerGroupID> getCustomerGroupIDs();
/**
* @return Returns instances of {@link DeliveryEntryPage}.
*/
List<DeliveryEntryPage> getDeliveryEntryPages();
Collection<DeliveryNoteID> getDeliveryNoteIDs();
// Delivery createDelivery();
//
// /**
// * @return Returns instances of {@link Delivery} which have been previously created
// * by {@link #createDelivery()}.
// */
// List getDeliveries();
//
// /**
// * This method adds a newly created {@link DeliveryData} and stores it to a previously created
// * {@link Delivery} object.
// *
// * @see #createDelivery()
// */
// void addDeliveryData(DeliveryData deliveryData);
//
// DeliveryData getDeliveryData(Delivery delivery);
// /**
// * @return Returns instances of {@link org.nightlabs.jfire.store.id.DeliveryNoteID}.
// */
// Collection getDeliveryNoteIDs();
boolean isDeliveryEnabled();
}