/** * Collect the order total * * @param object $address The address instance to collect from * * @return Sisow_Model_Quote_TaxTotal */ public function collect(Mage_Sales_Model_Quote_Address $address) { $quote = $address->getQuote(); if ($quote->getId() == null || $address->getAddressType() != "shipping") { return $this; } $payment = $quote->getPayment(); if (substr($payment->getMethod(), 0, 6) != 'sisow_' && (!count($quote->getPaymentsCollection()) || !$payment->hasMethodInstance())) { return $this; } $methodInstance = $payment->getMethodInstance(); if (substr($methodInstance->getCode(), 0, 6) != 'sisow_') { return $this; } $helper = Mage::helper('sisow/paymentfee'); $fee = $helper->getPaymentFeeArray($methodInstance->getCode(), $quote); if (!is_array($fee)) { return $this; } $address->setTaxAmount($address->getTaxAmount() + $fee['taxamount']); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $fee['base_taxamount']); $address->setInvoiceTaxAmount($fee['taxamount']); $address->setBaseInvoiceTaxAmount($fee['base_taxamount']); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $store = $address->getQuote()->getStore(); $address->setTaxAmount(0); $address->setBaseTaxAmount(0); $tax = Mage::getModel('tax/rate_data')->setCustomerClassId($address->getQuote()->getCustomerTaxClassId()); /* @var $tax Mage_Tax_Model_Rate_Data */ $taxAddress = $address; switch (Mage::getStoreConfig('sales/tax/based_on')) { case 'billing': $taxAddress = $address->getQuote()->getBillingAddress(); case 'shipping': $tax->setCountryId($taxAddress->getCountryId())->setRegionId($taxAddress->getRegionId())->setPostcode($taxAddress->getPostcode()); break; case 'origin': $tax->setCountryId(Mage::getStoreConfig('shipping/origin/country_id', $store))->setRegionId(Mage::getStoreConfig('shipping/origin/region_id', $store))->setPostcode(Mage::getStoreConfig('shipping/origin/postcode', $store)); break; } foreach ($address->getAllItems() as $item) { $tax->setProductClassId($item->getProduct()->getTaxClassId()); $rate = $tax->getRate(); $item->setTaxPercent($rate); $item->calcTaxAmount(); $address->setTaxAmount($address->getTaxAmount() + $item->getTaxAmount()); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $item->getBaseTaxAmount()); } $shippingTaxClass = Mage::getStoreConfig('sales/tax/shipping_tax_class', $store); if ($shippingTaxClass) { $tax->setProductClassId($shippingTaxClass); if ($rate = $tax->getRate()) { $shippingTax = $address->getShippingAmount() * $rate / 100; $shippingBaseTax = $address->getBaseShippingAmount() * $rate / 100; $shippingTax = $store->roundPrice($shippingTax); $shippingBaseTax = $store->roundPrice($shippingBaseTax); $address->setTaxAmount($address->getTaxAmount() + $shippingTax); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $shippingBaseTax); } } $address->setGrandTotal($address->getGrandTotal() + $address->getTaxAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBaseTaxAmount()); return $this; }
/** * Does nothing, calculates no taxes. * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Tax_Model_Sales_Total_Quote */ public function collect(Mage_Sales_Model_Quote_Address $address) { // parent::collect($address); $store = $address->getQuote()->getStore(); $address->setTaxAmount(0); $address->setBaseTaxAmount(0); //$address->setShippingTaxAmount(0); //$address->setBaseShippingTaxAmount(0); $address->setAppliedTaxes(array()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setPaymentCharge(0); $address->setBasePaymentCharge(0); $storeId = Mage::app()->getStore()->getId(); $items = $address->getAllItems(); if (!count($items)) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethod(); $quote = $address->getQuote(); if ($paymentMethod && substr($paymentMethod, 0, 11) == 'pay_payment') { $baseAmount = Mage::helper('pay_payment')->getPaymentCharge($paymentMethod, $address->getQuote()); $amount = Mage::helper('directory')->currencyConvert($baseAmount, Mage::app()->getWebsite()->getConfig('currency/options/default'), Mage::app()->getStore()->getCurrentCurrencyCode()); $address->setPaymentCharge($amount); $address->setBasePaymentCharge($baseAmount); $taxClass = Mage::helper('pay_payment')->getPaymentChargeTaxClass($paymentMethod); $taxCalculationModel = Mage::getSingleton('tax/calculation'); $request = $taxCalculationModel->getRateRequest($quote->getShippingAddress(), $quote->getBillingAddress(), null, $storeId); $request->setStore(Mage::app()->getStore()); $rate = $taxCalculationModel->getRate($request->setProductClassId($taxClass)); //$rate = 21; if ($rate > 0) { // $includesTax = Mage::getStoreConfig('tax/calculation/price_includes_tax'); $baseChargeTax = round($address->getBasePaymentCharge() / (1 + $rate / 100) * ($rate / 100), 2); $chargeTax = round($address->getPaymentCharge() / (1 + $rate / 100) * ($rate / 100), 2); } else { $baseChargeTax = 0; $chargeTax = 0; } $rates = array(); $applied = false; foreach ($address->getAppliedTaxes() as $arrRate) { // maximaal 1 keer de btw voor de extra kosten toevoegen if ($arrRate['percent'] == $rate && !$applied) { $applied = true; $arrRate['amount'] = $arrRate['amount'] + $chargeTax; $arrRate['base_amount'] = $arrRate['base_amount'] + $baseChargeTax; } $rates[] = $arrRate; } $address->setAppliedTaxes($rates); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $baseChargeTax); $address->setTaxAmount($address->getTaxAmount() + $chargeTax); $address->setGrandTotal($address->getGrandTotal() + $address->getPaymentCharge()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBasePaymentCharge()); } return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { if (!Mage::getSingleton('checkout/session')->getQuoteId()) { return $this; } $_helper = Mage::helper('msp_cashondelivery'); $_model = Mage::getModel('msp_cashondelivery/cashondelivery'); $_subtotal = $address->getSubtotal(); $quote = $address->getQuote(); $baseAmount = $_model->getBaseExtraFee($_subtotal); $amount = $_model->getExtraFee($_subtotal); $codTax = $_helper->getTaxAmount($amount); $codBaseTax = $_helper->getTaxAmount($baseAmount); if ($quote->getPayment()->getMethod() == $_model->getCode() && $address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) { $address->setTaxAmount($address->getTaxAmount() + $codTax); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $codBaseTax); $this->_saveAppliedTaxes($address, $_helper->getAppliedRates(), $codTax, $codBaseTax, $_helper->getRate()); $address->setGrandTotal($address->getGrandTotal() + $codTax); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $codBaseTax); } return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $store = $address->getQuote()->getStore(); $session = Mage::getSingleton('checkout/session'); $discount = $session->getData('webpos_admin_discount'); if (!$discount) { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $session->setData('webpos_admin_discount', $discount); $address->setWebposDiscountAmount($discount); $address->setData('webpos_discount_amount', $discount); /* Daniel - tax for discount */ $afterDiscount = Mage::getStoreConfig('tax/calculation/apply_after_discount'); if ($afterDiscount) { $country = Mage::getModel('checkout/session')->getQuote()->getShippingAddress()->getCountry(); $oldTax = $address->getTaxAmount(); $oldBaseTax = $address->getBaseTaxAmount(); if ($country) { $rateTax = Mage::getModel('tax/calculation_rate')->getCollection()->addFieldToFilter('tax_country_id', $country)->setOrder('rate', 'DESC')->getFirstItem(); $address->setTaxAmount(($address->getBaseSubtotal() - $discount + $address->getShippingAmount() + $address->getDiscountAmount()) * $rateTax->getRate() / 100)->setBaseTaxAmount(($address->getBaseSubtotal() - $discount + $address->getShippingAmount() + $address->getDiscountAmount()) * $rateTax->getRate() / 100); $taxCalculationModel = Mage::getSingleton('tax/calculation'); $request = Mage::getSingleton('tax/calculation')->getRateRequest($address, $address->getQuote()->getBillingAddress(), $address->getQuote()->getCustomerTaxClassId(), $store); $rate = Mage::getSingleton('tax/calculation')->getRate($request); $this->_saveAppliedTaxes($address, $taxCalculationModel->getAppliedRates($request), $address->getTaxAmount(), $address->getBaseTaxAmount(), $rate); } $address->setGrandTotal($address->getGrandTotal() - $address->getWebposDiscountAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getWebposDiscountAmount()); } else { $address->setGrandTotal($address->getGrandTotal() - $address->getWebposDiscountAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getWebposDiscountAmount()); } /* end */ return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $store = $address->getQuote()->getStore(); $address->setTaxAmount(0); $address->setBaseTaxAmount(0); //$address->setShippingTaxAmount(0); //$address->setBaseShippingTaxAmount(0); $address->setAppliedTaxes(array()); $items = $address->getAllItems(); if (!count($items)) { return $this; } $custTaxClassId = $address->getQuote()->getCustomerTaxClassId(); $taxCalculationModel = Mage::getSingleton('tax/calculation'); /* @var $taxCalculationModel Mage_Tax_Model_Calculation */ $request = $taxCalculationModel->getRateRequest($address, $address->getQuote()->getBillingAddress(), $custTaxClassId, $store); foreach ($items as $item) { /** * Child item's tax we calculate for parent */ if ($item->getParentItemId()) { continue; } /** * We calculate parent tax amount as sum of children's tax amounts */ if ($item->getHasChildren() && $item->isChildrenCalculated()) { foreach ($item->getChildren() as $child) { $discountBefore = $item->getDiscountAmount(); $baseDiscountBefore = $item->getBaseDiscountAmount(); $rate = $taxCalculationModel->getRate($request->setProductClassId($child->getProduct()->getTaxClassId())); $child->setTaxPercent($rate); $child->calcTaxAmount(); if ($discountBefore != $item->getDiscountAmount()) { $address->setDiscountAmount($address->getDiscountAmount() + ($item->getDiscountAmount() - $discountBefore)); $address->setBaseDiscountAmount($address->getBaseDiscountAmount() + ($item->getBaseDiscountAmount() - $baseDiscountBefore)); $address->setGrandTotal($address->getGrandTotal() - ($item->getDiscountAmount() - $discountBefore)); $address->setBaseGrandTotal($address->getBaseGrandTotal() - ($item->getBaseDiscountAmount() - $baseDiscountBefore)); } $this->_saveAppliedTaxes($address, $taxCalculationModel->getAppliedRates($request), $child->getTaxAmount(), $child->getBaseTaxAmount(), $rate); } $address->setTaxAmount($address->getTaxAmount() + $item->getTaxAmount()); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $item->getBaseTaxAmount()); } else { $discountBefore = $item->getDiscountAmount(); $baseDiscountBefore = $item->getBaseDiscountAmount(); $rate = $taxCalculationModel->getRate($request->setProductClassId($item->getProduct()->getTaxClassId())); $item->setTaxPercent($rate); $item->calcTaxAmount(); if ($discountBefore != $item->getDiscountAmount()) { $address->setDiscountAmount($address->getDiscountAmount() + ($item->getDiscountAmount() - $discountBefore)); $address->setBaseDiscountAmount($address->getBaseDiscountAmount() + ($item->getBaseDiscountAmount() - $baseDiscountBefore)); $address->setGrandTotal($address->getGrandTotal() - ($item->getDiscountAmount() - $discountBefore)); $address->setBaseGrandTotal($address->getBaseGrandTotal() - ($item->getBaseDiscountAmount() - $baseDiscountBefore)); } $address->setTaxAmount($address->getTaxAmount() + $item->getTaxAmount()); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $item->getBaseTaxAmount()); $applied = $taxCalculationModel->getAppliedRates($request); $this->_saveAppliedTaxes($address, $applied, $item->getTaxAmount(), $item->getBaseTaxAmount(), $rate); } } $shippingTaxClass = Mage::getStoreConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_SHIPPING_TAX_CLASS, $store); $shippingTax = 0; $shippingBaseTax = 0; if ($shippingTaxClass) { if ($rate = $taxCalculationModel->getRate($request->setProductClassId($shippingTaxClass))) { if (!Mage::helper('tax')->shippingPriceIncludesTax()) { $shippingTax = $address->getShippingAmount() * $rate / 100; $shippingBaseTax = $address->getBaseShippingAmount() * $rate / 100; } else { $shippingTax = $address->getShippingTaxAmount(); $shippingBaseTax = $address->getBaseShippingTaxAmount(); } $shippingTax = $store->roundPrice($shippingTax); $shippingBaseTax = $store->roundPrice($shippingBaseTax); $address->setTaxAmount($address->getTaxAmount() + $shippingTax); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $shippingBaseTax); $this->_saveAppliedTaxes($address, $taxCalculationModel->getAppliedRates($request), $shippingTax, $shippingBaseTax, $rate); } } if (!Mage::helper('tax')->shippingPriceIncludesTax()) { $address->setShippingTaxAmount($shippingTax); $address->setBaseShippingTaxAmount($shippingBaseTax); } $address->setGrandTotal($address->getGrandTotal() + $address->getTaxAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBaseTaxAmount()); return $this; }
/** * Reset address values * * @param \Mage_Sales_Model_Quote_Address $address * @return $this */ protected function _resetAddressValues(Mage_Sales_Model_Quote_Address $address) { $address->setTotalAmount($this->getCode(), 0); $address->setBaseTotalAmount($this->getCode(), 0); $address->setTaxAmount(0); $address->setBaseTaxAmount(0); $address->setShippingTaxAmount(0); $address->setBaseShippingTaxAmount(0); $address->setSubtotal(0); $address->setSubtotalInclTax(0); $address->setBaseSubtotalInclTax(0); $address->setTotalAmount('subtotal', 0); $address->setBaseTotalAmount('subtotal', 0); $address->setGwItemsTaxAmount(0); $address->setGwItemsBaseTaxAmount(0); $address->setGwBaseTaxAmount(0); $address->setGwTaxAmount(0); $address->setGwCardBaseTaxAmount(0); $address->setGwCardTaxAmount(0); return $this; }
/** * Convert totals from ROPE request to quote address * * @param Mage_Sales_Model_Quote_Address $address * @return void */ protected function _convertTotals($address) { $address->setTaxAmount((double) $this->_request->total_tax_amount); $address->setBaseTaxAmount((double) $this->_request->total_tax_amount); /** @var $taxConfig Mage_Tax_Model_Config */ $taxConfig = Mage::getSingleton('tax/config'); $taxConfig->setShippingPriceIncludeTax(true); $method = 'rakuten_tablerate'; $carrierTitle = 'Rakuten Checkout'; $methodTitle = 'Tablerate'; $rate = $this->_createShippingRate($method, $carrierTitle, $methodTitle)->setPrice((double) $this->_request->shipping); $address->addShippingRate($rate)->setShippingMethod($method)->setShippingAmountForDiscount(0); $address->setGrandTotal((double) $this->_request->total); $address->setBaseGrandTotal((double) $this->_request->total); }