package ch.elexis.core.services;
import java.util.List;
import java.util.UUID;
import org.eclipse.core.runtime.IStatus;
import ch.elexis.core.model.IStock;
import ch.elexis.core.model.IStockEntry;
import ch.elexis.core.model.stock.ICommissioningSystemDriver;
public interface IStockCommissioningSystemService {
public List<UUID> listAllAvailableDrivers();
public String getInfoStringForDriver(UUID driverUuid, boolean extended);
public IStatus initializeStockCommissioningSystem(IStock stock);
public IStatus shutdownStockCommissioningSytem(IStock stock);
public IStatus initializeInstancesUsingDriver(UUID driver);
public IStatus shutdownInstancesUsingDriver(UUID driver);
public ICommissioningSystemDriver getDriverInstanceForStock(IStock stock);
/**
* Outlays the article by effectively ordering the respective the device to
* issue it.
*
* @param stockEntry
* @param quantity
* @param data
* @return
*/
public IStatus performArticleOutlay(IStockEntry stockEntry, int quantity, Object data);
/**
* Synchronize the given {@link IStock} with the state of the commissioning
* system.
*
* @param stock
* the stock to perform the synchronization on
* @param articleId
* if <code>null</code> synchronize all articles, else only those
* with ids contained in the list
* @param data
* @return
*/
public IStatus synchronizeInventory(IStock stock, List<String> articleIds, Object data);
}