app\models\Invoice::getTaxes PHP Method

getTaxes() public method

public getTaxes ( boolean $calculatePaid = false ) : array
$calculatePaid boolean
return array
    public function getTaxes($calculatePaid = false)
    {
        $taxes = [];
        $taxable = $this->getTaxable();
        $paidAmount = $this->getAmountPaid($calculatePaid);
        if ($this->tax_name1) {
            $invoiceTaxAmount = round($taxable * ($this->tax_rate1 / 100), 2);
            $invoicePaidAmount = floatVal($this->amount) && $invoiceTaxAmount ? $paidAmount / $this->amount * $invoiceTaxAmount : 0;
            $this->calculateTax($taxes, $this->tax_name1, $this->tax_rate1, $invoiceTaxAmount, $invoicePaidAmount);
        }
        if ($this->tax_name2) {
            $invoiceTaxAmount = round($taxable * ($this->tax_rate2 / 100), 2);
            $invoicePaidAmount = floatVal($this->amount) && $invoiceTaxAmount ? $paidAmount / $this->amount * $invoiceTaxAmount : 0;
            $this->calculateTax($taxes, $this->tax_name2, $this->tax_rate2, $invoiceTaxAmount, $invoicePaidAmount);
        }
        foreach ($this->invoice_items as $invoiceItem) {
            $itemTaxAmount = $this->getItemTaxable($invoiceItem, $taxable);
            if ($invoiceItem->tax_name1) {
                $itemTaxAmount = round($taxable * ($invoiceItem->tax_rate1 / 100), 2);
                $itemPaidAmount = floatVal($this->amount) && $itemTaxAmount ? $paidAmount / $this->amount * $itemTaxAmount : 0;
                $this->calculateTax($taxes, $invoiceItem->tax_name1, $invoiceItem->tax_rate1, $itemTaxAmount, $itemPaidAmount);
            }
            if ($invoiceItem->tax_name2) {
                $itemTaxAmount = round($taxable * ($invoiceItem->tax_rate2 / 100), 2);
                $itemPaidAmount = floatVal($this->amount) && $itemTaxAmount ? $paidAmount / $this->amount * $itemTaxAmount : 0;
                $this->calculateTax($taxes, $invoiceItem->tax_name2, $invoiceItem->tax_rate2, $itemTaxAmount, $itemPaidAmount);
            }
        }
        return $taxes;
    }