| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/a/w/e/awebpaca/boutiques/app/code/core/Mage/Sales/Model/Order/Invoice/Total/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_Sales_Model_Order_Invoice_Total_Tax extends Mage_Sales_Model_Order_Invoice_Total_Abstract
{
/**
* Collect invoice tax amount
*
* @param Mage_Sales_Model_Order_Invoice $invoice
*/
public function collect(Mage_Sales_Model_Order_Invoice $invoice)
{
$totalTax = 0;
$baseTotalTax = 0;
$totalHiddenTax = 0;
$baseTotalHiddenTax = 0;
$order = $invoice->getOrder();
foreach ($invoice->getAllItems() as $item) {
$orderItem = $item->getOrderItem();
$orderItemQty = $orderItem->getQtyOrdered();
if ($orderItem->getTaxAmount() && $orderItemQty) {
if ($item->getOrderItem()->isDummy()) {
continue;
}
/**
* Resolve rounding problems
*/
if ($item->isLast()) {
$tax = $orderItem->getTaxAmount() - $orderItem->getTaxInvoiced();
$baseTax = $orderItem->getBaseTaxAmount() - $orderItem->getBaseTaxInvoiced();
$hiddenTax = $orderItem->getHiddenTaxAmount() - $orderItem->getHiddenTaxInvoiced();
$baseHiddenTax = $orderItem->getBaseHiddenTaxAmount() - $orderItem->getBaseHiddenTaxInvoiced();
} else {
$tax = $orderItem->getTaxAmount()*$item->getQty()/$orderItemQty;
$baseTax = $orderItem->getBaseTaxAmount()*$item->getQty()/$orderItemQty;
$hiddenTax = $orderItem->getHiddenTaxAmount()*$item->getQty()/$orderItemQty;
$baseHiddenTax = $orderItem->getBaseHiddenTaxAmount()*$item->getQty()/$orderItemQty;
$tax = $invoice->getStore()->roundPrice($tax);
$baseTax = $invoice->getStore()->roundPrice($baseTax);
$hiddenTax = $invoice->getStore()->roundPrice($hiddenTax);
$baseHiddenTax = $invoice->getStore()->roundPrice($baseHiddenTax);
}
$item->setTaxAmount($tax);
$item->setBaseTaxAmount($baseTax);
$item->setHiddenTaxAmount($hiddenTax);
$item->setBaseHiddenTaxAmount($baseHiddenTax);
$totalTax += $tax;
$baseTotalTax += $baseTax;
$totalHiddenTax += $hiddenTax;
$baseTotalHiddenTax += $baseHiddenTax;
}
}
if ($this->_canIncludeShipping($invoice)) {
$totalTax += $order->getShippingTaxAmount();
$baseTotalTax += $order->getBaseShippingTaxAmount();
$totalHiddenTax += $order->getShippingHiddenTaxAmount();
$baseTotalHiddenTax += $order->getBaseShippingHiddenTaxAmount();
$invoice->setShippingTaxAmount($order->getShippingTaxAmount());
$invoice->setBaseShippingTaxAmount($order->getBaseShippingTaxAmount());
$invoice->setShippingHiddenTaxAmount($order->getShippingHiddenTaxAmount());
$invoice->setBaseShippingHiddenTaxAmount($order->getBaseShippingHiddenTaxAmount());
}
$allowedTax = $order->getTaxAmount() - $order->getTaxInvoiced();
$allowedBaseTax = $order->getBaseTaxAmount() - $order->getBaseTaxInvoiced();;
$allowedHiddenTax = $order->getHiddenTaxAmount() + $order->getShippingHiddenTaxAmount()
- $order->getHiddenTaxInvoiced() - $order->getShippingHiddenTaxInvoiced();
$allowedBaseHiddenTax = $order->getBaseHiddenTaxAmount() + $order->getBaseShippingHiddenTaxAmount()
- $order->getBaseHiddenTaxInvoiced() - $order->getBaseShippingHiddenTaxInvoiced();
if ($invoice->isLast()) {
$totalTax = $allowedTax;
$baseTotalTax = $allowedBaseTax;
$totalHiddenTax = $allowedHiddenTax;
$baseTotalHiddenTax = $allowedBaseHiddenTax;
} else {
$totalTax = min($allowedTax, $totalTax);
$baseTotalTax = min($allowedBaseTax, $baseTotalTax);
$totalHiddenTax = min($allowedHiddenTax, $totalHiddenTax);
$baseTotalHiddenTax = min($allowedBaseHiddenTax, $baseTotalHiddenTax);
}
$invoice->setTaxAmount($totalTax);
$invoice->setBaseTaxAmount($baseTotalTax);
$invoice->setHiddenTaxAmount($totalHiddenTax);
$invoice->setBaseHiddenTaxAmount($baseTotalHiddenTax);
$invoice->setGrandTotal($invoice->getGrandTotal() + $totalTax + $totalHiddenTax);
$invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $baseTotalTax + $baseTotalHiddenTax);
return $this;
}
/**
* Check if shipping tax calculation can be included to current invoice
* @param Mage_Sales_Model_Order_Invoice $invoice
*/
protected function _canIncludeShipping($invoice)
{
$includeShippingTax = true;
/**
* Check shipping amount in previus invoices
*/
foreach ($invoice->getOrder()->getInvoiceCollection() as $previusInvoice) {
if ($previusInvoice->getShippingAmount() && !$previusInvoice->isCanceled()) {
$includeShippingTax = false;
}
}
return $includeShippingTax;
}
}