1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Tax
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27: /**
28: * Tax Rule Model
29: *
30: * @method Mage_Tax_Model_Resource_Calculation_Rule _getResource()
31: * @method Mage_Tax_Model_Resource_Calculation_Rule getResource()
32: * @method string getCode()
33: * @method Mage_Tax_Model_Calculation_Rule setCode(string $value)
34: * @method int getPriority()
35: * @method Mage_Tax_Model_Calculation_Rule setPriority(int $value)
36: * @method int getPosition()
37: * @method Mage_Tax_Model_Calculation_Rule setPosition(int $value)
38: *
39: * @category Mage
40: * @package Mage_Tax
41: * @author Magento Core Team <core@magentocommerce.com>
42: */
43: class Mage_Tax_Model_Calculation_Rule extends Mage_Core_Model_Abstract
44: {
45: protected $_ctcs = null;
46: protected $_ptcs = null;
47: protected $_rates = null;
48:
49: protected $_ctcModel = null;
50: protected $_ptcModel = null;
51: protected $_rateModel = null;
52:
53: protected $_calculationModel = null;
54:
55: /**
56: * Varien model constructor
57: */
58: protected function _construct()
59: {
60: $this->_init('tax/calculation_rule');
61: }
62:
63: /**
64: * After save rule
65: * Redeclared for populate rate calculations
66: *
67: * @return Mage_Tax_Model_Calculation_Rule
68: */
69: protected function _afterSave()
70: {
71: parent::_afterSave();
72: $this->saveCalculationData();
73: Mage::dispatchEvent('tax_settings_change_after');
74: return $this;
75: }
76:
77: /**
78: * After rule delete
79: * redeclared for dispatch tax_settings_change_after event
80: *
81: * @return Mage_Tax_Model_Calculation_Rule
82: */
83: protected function _afterDelete()
84: {
85: Mage::dispatchEvent('tax_settings_change_after');
86: return parent::_afterDelete();
87: }
88:
89: public function saveCalculationData()
90: {
91: $ctc = $this->getData('tax_customer_class');
92: $ptc = $this->getData('tax_product_class');
93: $rates = $this->getData('tax_rate');
94:
95: Mage::getSingleton('tax/calculation')->deleteByRuleId($this->getId());
96: foreach ($ctc as $c) {
97: foreach ($ptc as $p) {
98: foreach ($rates as $r) {
99: $dataArray = array(
100: 'tax_calculation_rule_id' =>$this->getId(),
101: 'tax_calculation_rate_id' =>$r,
102: 'customer_tax_class_id' =>$c,
103: 'product_tax_class_id' =>$p,
104: );
105: Mage::getSingleton('tax/calculation')->setData($dataArray)->save();
106: }
107: }
108: }
109: }
110:
111: public function getCalculationModel()
112: {
113: if (is_null($this->_calculationModel)) {
114: $this->_calculationModel = Mage::getSingleton('tax/calculation');
115: }
116: return $this->_calculationModel;
117: }
118:
119: public function getRates()
120: {
121: return $this->getCalculationModel()->getRates($this->getId());
122: }
123:
124: public function getCustomerTaxClasses()
125: {
126: return $this->getCalculationModel()->getCustomerTaxClasses($this->getId());
127: }
128:
129: public function getProductTaxClasses()
130: {
131: return $this->getCalculationModel()->getProductTaxClasses($this->getId());
132: }
133: }
134:
135: