Procházet zdrojové kódy

Merge pull request #172 from andrewdwallo/development-3.x

Development 3.x
3.x
Andrew Wallo před 4 měsíci
rodič
revize
ef226ba9ad
Žádný účet není propojen s e-mailovou adresou tvůrce revize
1 změnil soubory, kde provedl 16 přidání a 8 odebrání
  1. 16
    8
      app/Models/Accounting/DocumentLineItem.php

+ 16
- 8
app/Models/Accounting/DocumentLineItem.php Zobrazit soubor

@@ -107,11 +107,15 @@ class DocumentLineItem extends Model
107 107
     public function calculateTaxTotal(): Money
108 108
     {
109 109
         $subtotal = money($this->subtotal, CurrencyAccessor::getDefaultCurrency());
110
+        $defaultCurrency = CurrencyAccessor::getDefaultCurrency();
110 111
 
111
-        return $this->taxes->reduce(
112
-            fn (Money $carry, Adjustment $tax) => $carry->add($subtotal->multiply($tax->rate / 100)),
113
-            money(0, CurrencyAccessor::getDefaultCurrency())
114
-        );
112
+        return $this->taxes->reduce(function (Money $carry, Adjustment $tax) use ($subtotal, $defaultCurrency) {
113
+            if ($tax->computation->isPercentage()) {
114
+                return $carry->add($subtotal->multiply($tax->rate / 100));
115
+            } else {
116
+                return $carry->add(money($tax->rate, $defaultCurrency));
117
+            }
118
+        }, money(0, $defaultCurrency));
115 119
     }
116 120
 
117 121
     public function calculateTaxTotalAmount(): int
@@ -132,11 +136,15 @@ class DocumentLineItem extends Model
132 136
     public function calculateDiscountTotal(): Money
133 137
     {
134 138
         $subtotal = money($this->subtotal, CurrencyAccessor::getDefaultCurrency());
139
+        $defaultCurrency = CurrencyAccessor::getDefaultCurrency();
135 140
 
136
-        return $this->discounts->reduce(
137
-            fn (Money $carry, Adjustment $discount) => $carry->add($subtotal->multiply($discount->rate / 100)),
138
-            money(0, CurrencyAccessor::getDefaultCurrency())
139
-        );
141
+        return $this->discounts->reduce(function (Money $carry, Adjustment $discount) use ($subtotal, $defaultCurrency) {
142
+            if ($discount->computation->isPercentage()) {
143
+                return $carry->add($subtotal->multiply($discount->rate / 100));
144
+            } else {
145
+                return $carry->add(money($discount->rate, $defaultCurrency));
146
+            }
147
+        }, money(0, $defaultCurrency));
140 148
     }
141 149
 
142 150
     public function calculateDiscountTotalAmount(): int

Načítá se…
Zrušit
Uložit