package ee.ut.math.tvt2008.salessystem.penalty;

import java.util.Date;

import ee.ut.math.tvt2008.salessystem.domain.data.Sale;


/**
 * Interface describind discount strategy.
 * 
 * @author Hannes Lehemets
 * 
 */
public interface Strategy {

	/**
	 * Calculate penalty.
	 * 
	 * @param sale sales basket
	 * @param clientId client identifyer
	 * @param payDate date of payment
	 * 
	 * @return penalty object containing penalty amount, payback amount and description.
	 */
	Penalty calculate(Sale sale, Long clientId, Date payDate);

}
