<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class provides checkout capabilities.
 *
 * @package    Checkout
 * @category   Models
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Model_Checkout extends ORM_OSB {
	protected $_has_many = array(
		'account'=>array('through'=>'account_billing','foreign_key'=>'checkout_id'),
		'payment'=>array(),
	);

	protected $_sorting = array('name'=>'ASC');
	protected $_form = array('id'=>'id','value'=>'name');

	/**
	 * Calcuale the fee for this checkout method
	 *
	 * @param $amt The amount the fee will be based on
	 */
	public function fee($amt) {
		if (! $this->fee_passon)
			return 0;

		$net = $amt;

		if (! is_null($this->fee_fixed))
			$net += $this->fee_fixed;

		if (! is_null($this->fee_variable))
			$net /= (1-$this->fee_variable);

		return Currency::round($net-$amt);
	}

	/**
	 * Return the object of the checkout plugin
	 */
	public function plugin($type='') {
		$c = Kohana::classname('Checkout_Plugin_'.$this->plugin);

		if (! $this->plugin OR ! class_exists($c))
			return NULL;

		$o = new $c($this);

		return $type ? $o->$type : $o;
	}
}
?>
