Mage_Weee_Model_Total_Quote_Weee Class Reference

Inheritance diagram for Mage_Weee_Model_Total_Quote_Weee:

Mage_Sales_Model_Quote_Address_Total_Tax Mage_Sales_Model_Quote_Address_Total_Abstract

List of all members.

Public Member Functions

 __construct ()
 collect (Mage_Sales_Model_Quote_Address $address)
 fetch (Mage_Sales_Model_Quote_Address $address)

Protected Member Functions

 _processItem (Mage_Sales_Model_Quote_Address $address, $item, $updateParent=false)
 _resetItemData ($item)


Detailed Description

Definition at line 28 of file Weee.php.


Constructor & Destructor Documentation

__construct (  ) 

Reimplemented from Mage_Sales_Model_Quote_Address_Total_Tax.

Definition at line 30 of file Weee.php.

00030                                  {
00031         $this->setCode('weee');
00032     }


Member Function Documentation

_processItem ( Mage_Sales_Model_Quote_Address address,
item,
updateParent = false 
) [protected]

Definition at line 72 of file Weee.php.

00073     {
00074         $custTaxClassId = $address->getQuote()->getCustomerTaxClassId();
00075         $store = $address->getQuote()->getStore();
00076 
00077         $taxCalculationModel = Mage::getSingleton('tax/calculation');
00078         /* @var $taxCalculationModel Mage_Tax_Model_Calculation */
00079         $request = $taxCalculationModel->getRateRequest($address, $address->getQuote()->getBillingAddress(), $custTaxClassId, $store);
00080         $defaultRateRequest = $taxCalculationModel->getRateRequest(false, false, false, $store);
00081 
00082         $attributes = Mage::helper('weee')->getProductWeeeAttributes(
00083             $item->getProduct(),
00084             $address,
00085             $address->getQuote()->getBillingAddress(),
00086             $store->getWebsiteId()
00087         );
00088 
00089         $applied = array();
00090         $productTaxes = array();
00091 
00092         foreach ($attributes as $k=>$attribute) {
00093             $baseValue = $attribute->getAmount();
00094             $value = $store->convertPrice($baseValue);
00095 
00096             $rowValue = $value*$item->getQty();
00097             $baseRowValue = $baseValue*$item->getQty();
00098 
00099             $title = $attribute->getName();
00100 
00101             if ($item->getDiscountPercent() && Mage::helper('weee')->isDiscounted($store)) {
00102                 $valueDiscount = $value/100*$item->getDiscountPercent();
00103                 $baseValueDiscount = $baseValue/100*$item->getDiscountPercent();
00104 
00105                 $rowValueDiscount = $rowValue/100*$item->getDiscountPercent();
00106                 $baseRowValueDiscount = $baseRowValue/100*$item->getDiscountPercent();
00107 
00108 
00109 //                $value        = $store->roundPrice($value-$valueDiscount);
00110 //                $baseValue    = $store->roundPrice($baseValue-$baseValueDiscount);
00111 //                $rowValue     = $store->roundPrice($rowValue-$rowValueDiscount);
00112 //                $baseRowValue = $store->roundPrice($baseRowValue-$baseRowValueDiscount);
00113 
00114 
00115                 $address->setDiscountAmount($address->getDiscountAmount()+$rowValueDiscount);
00116                 $address->setBaseDiscountAmount($address->getBaseDiscountAmount()+$baseRowValueDiscount);
00117                 
00118                 $address->setGrandTotal($address->getGrandTotal() - $rowValueDiscount);
00119                 $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseRowValueDiscount);
00120             }
00121 
00122             $oneDisposition = $baseOneDisposition = $disposition = $baseDisposition = 0;
00123 
00124             if (Mage::helper('weee')->isTaxable($store)) {
00125                 $currentPercent = $item->getTaxPercent();
00126                 $defaultPercent = $taxCalculationModel->getRate($defaultRateRequest->setProductClassId($item->getProduct()->getTaxClassId()));
00127 
00128                 $valueBeforeVAT = $rowValue;
00129                 $baseValueBeforeVAT = $baseRowValue;
00130 
00131                 $oneDisposition = $store->roundPrice($value/(100+$defaultPercent)*$currentPercent);
00132                 $baseOneDisposition = $store->roundPrice($baseValue/(100+$defaultPercent)*$currentPercent);
00133 
00134                 $disposition = $store->roundPrice($rowValue/(100+$defaultPercent)*$currentPercent);
00135                 $baseDisposition = $store->roundPrice($baseRowValue/(100+$defaultPercent)*$currentPercent);
00136 
00137                 //$totalWeeeTax += $disposition;
00138                 //$baseTotalWeeeTax += $baseDisposition;
00139 
00140                 $item->setBaseTaxAmount($item->getBaseTaxAmount()+$baseDisposition);
00141                 $item->setTaxAmount($item->getTaxAmount()+$disposition);
00142 
00143 
00144                 $value -= $oneDisposition;
00145                 $baseValue -= $baseOneDisposition;
00146 
00147                 $rowValue -= $baseDisposition;
00148                 $baseRowValue -= $disposition;
00149 
00150                 $item->setWeeeTaxDisposition($item->getWeeeTaxDisposition() + $oneDisposition);
00151                 $item->setBaseWeeeTaxDisposition($item->getBaseWeeeTaxDisposition() + $baseOneDisposition);
00152                 $item->setWeeeTaxRowDisposition($item->getWeeeTaxRowDisposition() + $disposition);
00153                 $item->setBaseWeeeTaxRowDisposition($item->getBaseWeeeTaxRowDisposition() + $baseDisposition);
00154 
00155                 $item->setTaxBeforeDiscount($item->getTaxBeforeDiscount() + $disposition);
00156                 $item->setBaseTaxBeforeDiscount($item->getBaseTaxBeforeDiscount() + $baseDisposition);
00157 
00158                 $address->setTaxAmount($address->getTaxAmount() + $disposition);
00159                 $address->setBaseTaxAmount($address->getBaseTaxAmount() + $baseDisposition);
00160 
00161                 $rate = $taxCalculationModel->getRate($request->setProductClassId($item->getProduct()->getTaxClassId()));
00162                 
00163                 $this->_saveAppliedTaxes(
00164                    $address,
00165                    $taxCalculationModel->getAppliedRates($request),
00166                    $store->roundPrice($valueBeforeVAT-$rowValue),
00167                    $store->roundPrice($baseValueBeforeVAT-$baseRowValue),
00168                    $rate
00169                 );
00170 
00171                 $address->setGrandTotal($address->getGrandTotal() + $store->roundPrice($valueBeforeVAT-$rowValue));
00172                 $address->setBaseGrandTotal($address->getBaseGrandTotal() + $store->roundPrice($baseValueBeforeVAT-$baseRowValue));
00173             }
00174 
00175             if (Mage::helper('weee')->includeInSubtotal($store)) {
00176                 $address->setSubtotal($address->getSubtotal() + $rowValue);
00177                 $address->setBaseSubtotal($address->getBaseSubtotal() + $baseRowValue);
00178 
00179                 $address->setSubtotalWithDiscount($address->getSubtotalWithDiscount() + $rowValue);
00180                 $address->setBaseSubtotalWithDiscount($address->getBaseSubtotalWithDiscount() + $baseRowValue);
00181             } else {
00182                 $address->setTaxAmount($address->getTaxAmount() + $rowValue);
00183                 $address->setBaseTaxAmount($address->getBaseTaxAmount() + $baseRowValue);
00184             }
00185 
00186 
00187             $productTaxes[] = array(
00188                 'title'=>$title,
00189                 'base_amount'=>$baseValue,
00190                 'amount'=>$value,
00191 
00192                 'row_amount'=>$rowValue,
00193                 'base_row_amount'=>$baseRowValue,
00194 
00195                 'base_amount_incl_tax'=>$baseValue+$baseOneDisposition,
00196                 'amount_incl_tax'=>$value+$oneDisposition,
00197 
00198                 'row_amount_incl_tax'=>$rowValue+$disposition,
00199                 'base_row_amount_incl_tax'=>$baseRowValue+$baseDisposition,
00200             );
00201 
00202             $applied[] = array(
00203                 'id'=>$attribute->getCode(),
00204                 'percent'=>null,
00205                 'hidden'=>Mage::helper('weee')->includeInSubtotal($store),
00206                 'rates' => array(array(
00207                     'amount'=>$rowValue,
00208                     'base_amount'=>$baseRowValue,
00209                     'base_real_amount'=>$baseRowValue,
00210                     'code'=>$attribute->getCode(),
00211                     'title'=>$title,
00212                     'percent'=>null,
00213                     'position'=>1,
00214                     'priority'=>-1000+$k,
00215                 ))
00216             );
00217 
00218             $item->setBaseWeeeTaxAppliedAmount($item->getBaseWeeeTaxAppliedAmount() + $baseValue);
00219             $item->setBaseWeeeTaxAppliedRowAmount($item->getBaseWeeeTaxAppliedRowAmount() + $baseRowValue);
00220 
00221             $item->setWeeeTaxAppliedAmount($item->getWeeeTaxAppliedAmount() + $value);
00222             $item->setWeeeTaxAppliedRowAmount($item->getWeeeTaxAppliedRowAmount() + $rowValue);
00223         }
00224 
00225         Mage::helper('weee')->setApplied($item, array_merge(Mage::helper('weee')->getApplied($item), $productTaxes));
00226 
00227         if ($updateParent) {
00228             $parent = $item->getParentItem();
00229 
00230             $parent->setBaseWeeeTaxDisposition($parent->getBaseWeeeTaxDisposition() + $item->getBaseWeeeTaxDisposition());
00231             $parent->setWeeeTaxDisposition($parent->getWeeeTaxDisposition() + $item->getWeeeTaxDisposition());
00232 
00233             $parent->setBaseWeeeTaxRowDisposition($parent->getBaseWeeeTaxRowDisposition() + $item->getBaseWeeeTaxRowDisposition());
00234             $parent->setWeeeTaxRowDisposition($parent->getWeeeTaxRowDisposition() + $item->getWeeeTaxRowDisposition());
00235 
00236             $parent->setBaseWeeeTaxAppliedAmount($parent->getBaseWeeeTaxAppliedAmount() + $item->getBaseWeeeTaxAppliedAmount());
00237             $parent->setBaseWeeeTaxAppliedRowAmount($parent->getBaseWeeeTaxAppliedRowAmount() + $item->getBaseWeeeTaxAppliedRowAmount());
00238 
00239             $parent->setWeeeTaxAppliedAmount($parent->getWeeeTaxAppliedAmount() + $item->getWeeeTaxAppliedAmount());
00240             $parent->setWeeeTaxAppliedRowAmount($parent->getWeeeTaxAppliedRowAmount() + $item->getWeeeTaxAppliedRowAmount());
00241         }
00242 
00243         if ($applied) {
00244             $this->_saveAppliedTaxes(
00245                $address,
00246                $applied,
00247                $item->getWeeeTaxAppliedAmount(),
00248                $item->getBaseWeeeTaxAppliedAmount(),
00249                null
00250             );
00251         }
00252     }

_resetItemData ( item  )  [protected]

Definition at line 254 of file Weee.php.

00255     {
00256         Mage::helper('weee')->setApplied($item, array());
00257 
00258         $item->setBaseWeeeTaxDisposition(0);
00259         $item->setWeeeTaxDisposition(0);
00260 
00261         $item->setBaseWeeeTaxRowDisposition(0);
00262         $item->setWeeeTaxRowDisposition(0);
00263 
00264         $item->setBaseWeeeTaxAppliedAmount(0);
00265         $item->setBaseWeeeTaxAppliedRowAmount(0);
00266 
00267         $item->setWeeeTaxAppliedAmount(0);
00268         $item->setWeeeTaxAppliedRowAmount(0);
00269     }

collect ( Mage_Sales_Model_Quote_Address address  ) 

Collect totals process

Parameters:
Mage_Sales_Model_Quote_Address $address
Returns:
Mage_Sales_Model_Quote_Address_Total_Abstract

Child item's tax we calculate for parent

We calculate parent tax amount as sum of children's tax amounts

Reimplemented from Mage_Sales_Model_Quote_Address_Total_Tax.

Definition at line 34 of file Weee.php.

00035     {
00036         $totalWeeeTax = 0;
00037         $baseTotalWeeeTax = 0;
00038 
00039         $items = $address->getAllItems();
00040         if (!count($items)) {
00041             return $this;
00042         }
00043 
00044         foreach ($items as $item) {
00045             if ($item->getParentItemId()) {
00046                 continue;
00047             }
00048 
00049             $this->_resetItemData($item);
00050 
00051             if ($item->getHasChildren() && $item->isChildrenCalculated()) {
00052                 foreach ($item->getChildren() as $child) {
00053                     $this->_resetItemData($child);
00054                     $this->_processItem($address, $child, true);
00055 
00056                     $totalWeeeTax += $child->getWeeeTaxAppliedRowAmount();
00057                     $baseTotalWeeeTax += $child->getBaseWeeeTaxAppliedRowAmount();
00058                 }
00059             } else {
00060                 $this->_processItem($address, $item);
00061 
00062                 $totalWeeeTax += $item->getWeeeTaxAppliedRowAmount();
00063                 $baseTotalWeeeTax += $item->getBaseWeeeTaxAppliedRowAmount();
00064             }
00065         }
00066 
00067         $address->setGrandTotal($address->getGrandTotal() + $totalWeeeTax);
00068         $address->setBaseGrandTotal($address->getBaseGrandTotal() + $baseTotalWeeeTax);
00069         return $this;
00070     }

fetch ( Mage_Sales_Model_Quote_Address address  ) 

Fetch (Retrieve data as array)

Parameters:
Mage_Sales_Model_Quote_Address $address
Returns:
array

Reimplemented from Mage_Sales_Model_Quote_Address_Total_Tax.

Definition at line 271 of file Weee.php.

00272     {
00273         return $this;
00274     }


The documentation for this class was generated from the following file:

Generated on Sat Jul 4 17:24:56 2009 for Magento by  doxygen 1.5.8