소스 검색

fix bug fixed adjustment amounts

3.x
Andrew Wallo 4 달 전
부모
커밋
3eebc666ee
1개의 변경된 파일16개의 추가작업 그리고 8개의 파일을 삭제
  1. 16
    8
      app/Models/Accounting/DocumentLineItem.php

+ 16
- 8
app/Models/Accounting/DocumentLineItem.php 파일 보기

@@ -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

Loading…
취소
저장