60 lines
1.2 KiB
PHP
60 lines
1.2 KiB
PHP
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
/**
|
|
* This class provides a tax information
|
|
*
|
|
* @package OSB
|
|
* @subpackage Tax
|
|
* @category Helpers
|
|
* @author Deon George
|
|
* @copyright (c) 2010 Deon George
|
|
* @license http://dev.leenooks.net/license.html
|
|
*/
|
|
class Tax {
|
|
/**
|
|
* Return array of taxes
|
|
*
|
|
* @param $cid
|
|
* @param $zone
|
|
* @param $value
|
|
* @return array Tax Information
|
|
*/
|
|
public static function detail($cid,$zone,$value=0) {
|
|
$tax = ORM::factory('Tax')
|
|
->where('country_id','=',$cid)
|
|
->and_where('zone','=',$zone)
|
|
->find_all();
|
|
|
|
$taxes = array();
|
|
foreach ($tax as $to) {
|
|
$total = array();
|
|
|
|
$total['id'] = $to->id;
|
|
$total['description'] = $to->description;
|
|
$total['amount'] = $to->rate*$value;
|
|
$total['rate'] = $to->rate;
|
|
|
|
array_push($taxes,$total);
|
|
}
|
|
|
|
return $taxes;
|
|
}
|
|
|
|
// Calculate the tax amount
|
|
public static function total($cid,$zone,$value) {
|
|
$total = 0;
|
|
|
|
foreach (static::detail($cid,$zone,$value) as $tax)
|
|
$total += $tax['amount'];
|
|
|
|
return $total;
|
|
}
|
|
|
|
public static function add($value) {
|
|
// @todo Tax details should come from session
|
|
// @todo Rounding should be a global config
|
|
return round($value+static::total(61,NULL,$value),2);
|
|
}
|
|
}
|
|
?>
|