Skip to content
GitLab
Erkunden
Anmelden
Registrieren
Primärnavigation
Suchen oder aufrufen …
Projekt
erp
Verwalten
Aktivität
Mitglieder
Labels
Planen
Tickets
Ticketübersichten
Meilensteine
Wiki
Code
Merge Requests
Repository
Branch
Commits
Tags
Repository-Diagramm
Revisionen vergleichen
Build
Pipelines
Aufgaben
Pipeline-Zeitpläne
Artefakte
Bereitstellung
Releases
Modell-Registry
Betreiben
Umgebungen
Überwachen
Vorfälle
Service-Desk
Analysieren
Wertschöpfungskettenanalyse
Mitwirkenden-Analyse
CI/CD-Analyse
Repository-Analysen
Modellexperimente
Hilfe
Hilfe
Support
GitLab-Dokumentation
GitLab-Pläne vergleichen
Community-Forum
Zu GitLab beitragen
Feedback geben
Tastenkürzel
?
Code-Schnipsel
Gruppen
Projekte
Show more breadcrumbs
QUIQQER
erp
Commits
bf653b29
Commit
bf653b29
erstellt
3 years ago
von
Henning Leutz
Dateien durchsuchen
Optionen
Downloads
Patches
Einfaches Diff
fix: quiqqer/order#145
Übergeordneter
24f9c438
Keine zugehörigen Branchen gefunden
Branches enthält Commit
Keine zugehörigen Tags gefunden
Tags enthält Commit
1 Merge Request
!3
fix: quiqqer/order#145
Änderungen
1
Leerzeichenänderungen ausblenden
Inline
Nebeneinander
1 geänderte Datei
src/QUI/ERP/Accounting/Calc.php
+72
-68
72 Ergänzungen, 68 Löschungen
src/QUI/ERP/Accounting/Calc.php
wird angezeigt
mit
72 Ergänzungen
und
68 Löschungen
src/QUI/ERP/Accounting/Calc.php
+
72
−
68
Zeige Datei @
bf653b29
...
...
@@ -171,14 +171,14 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
$this
->
Currency
=
$List
->
getCurrency
();
$articles
=
$List
->
getArticles
();
$isNetto
=
QUI\ERP\Utils\User
::
isNettoUser
(
$this
->
getUser
());
$articles
=
$List
->
getArticles
();
$isNetto
=
QUI\ERP\Utils\User
::
isNettoUser
(
$this
->
getUser
());
$isEuVatUser
=
QUI\ERP\Tax\Utils
::
isUserEuVatUser
(
$this
->
getUser
());
$Currency
=
$this
->
getCurrency
();
$Currency
=
$this
->
getCurrency
();
$precision
=
$Currency
->
getPrecision
();
$subSum
=
0
;
$subSum
=
0
;
$nettoSum
=
0
;
$vatArray
=
[];
...
...
@@ -196,20 +196,20 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
$this
->
calcArticlePrice
(
$Article
);
$articleAttributes
=
$Article
->
toArray
();
$calculated
=
$articleAttributes
[
'calculated'
];
$calculated
=
$articleAttributes
[
'calculated'
];
$subSum
=
$subSum
+
$calculated
[
'sum'
];
$subSum
=
$subSum
+
$calculated
[
'sum'
];
$nettoSum
=
$nettoSum
+
$calculated
[
'nettoSum'
];
$articleVatArray
=
$calculated
[
'vatArray'
];
$vat
=
$articleAttributes
[
'vat'
];
$vat
=
$articleAttributes
[
'vat'
];
if
(
$articleVatArray
[
'text'
]
===
''
)
{
continue
;
}
if
(
!
isset
(
$vatArray
[
$vat
]))
{
$vatArray
[
$vat
]
=
$articleVatArray
;
$vatArray
[
$vat
]
=
$articleVatArray
;
$vatArray
[
$vat
][
'sum'
]
=
0
;
}
...
...
@@ -231,7 +231,7 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
/**
* Calc price factors
*/
$priceFactors
=
$List
->
getPriceFactors
();
$priceFactors
=
$List
->
getPriceFactors
();
$priceFactorSum
=
0
;
// nur wenn wir welche benötigen, für ERP Artikel ist dies im Moment nicht wirklich nötig
...
...
@@ -247,9 +247,9 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
// percent - Prozent Angabe
if
(
$PriceFactor
->
getCalculation
()
===
self
::
CALCULATION_PERCENTAGE
)
{
$calcBasis
=
$PriceFactor
->
getCalculationBasis
();
$calcBasis
=
$PriceFactor
->
getCalculationBasis
();
$priceFactorValue
=
$PriceFactor
->
getValue
();
$vatValue
=
$PriceFactor
->
getVat
();
$vatValue
=
$PriceFactor
->
getVat
();
if
(
$vatValue
===
null
)
{
$vatValue
=
QUI\ERP\Tax\Utils
::
getTaxByUser
(
$this
->
getUser
())
->
getValue
();
...
...
@@ -269,7 +269,7 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
case
self
::
CALCULATION_BASIS_VAT_BRUTTO
:
if
(
$isNetto
)
{
$bruttoSubSum
=
$subSum
*
(
$vatValue
/
100
+
1
);
$percentage
=
$priceFactorValue
/
100
*
$bruttoSubSum
;
$percentage
=
$priceFactorValue
/
100
*
$bruttoSubSum
;
}
else
{
$percentage
=
$priceFactorValue
/
100
*
$subSum
;
}
...
...
@@ -281,7 +281,7 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
}
$percentage
=
\round
(
$percentage
,
$precision
);
$vatSum
=
\round
(
$PriceFactor
->
getVatSum
(),
$precision
);
$vatSum
=
\round
(
$PriceFactor
->
getVatSum
(),
$precision
);
// set netto sum
$PriceFactor
->
setNettoSum
(
$percentage
);
...
...
@@ -300,14 +300,14 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
$PriceFactor
->
setSumFormatted
(
$Currency
->
format
(
$PriceFactor
->
getSum
()));
}
$nettoSum
=
$nettoSum
+
$PriceFactor
->
getNettoSum
();
$nettoSum
=
$nettoSum
+
$PriceFactor
->
getNettoSum
();
$priceFactorSum
=
$priceFactorSum
+
$PriceFactor
->
getNettoSum
();
if
(
$isEuVatUser
)
{
$PriceFactor
->
setEuVatStatus
(
true
);
}
$vat
=
$PriceFactor
->
getVat
();
$vat
=
$PriceFactor
->
getVat
();
$vatSum
=
\round
(
$PriceFactor
->
getVatSum
(),
$precision
);
if
(
!
isset
(
$vatArray
[
$vat
]))
{
...
...
@@ -328,17 +328,17 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
// vat text
$vatLists
=
[];
$vatText
=
[];
$vatText
=
[];
$nettoSum
=
\round
(
$nettoSum
,
$precision
);
$nettoSum
=
\round
(
$nettoSum
,
$precision
);
$nettoSubSum
=
\round
(
$nettoSubSum
,
$precision
);
$subSum
=
\round
(
$subSum
,
$precision
);
$bruttoSum
=
$nettoSum
;
$subSum
=
\round
(
$subSum
,
$precision
);
$bruttoSum
=
$nettoSum
;
foreach
(
$vatArray
as
$vatEntry
)
{
$vat
=
$vatEntry
[
'vat'
];
$vatLists
[
$vat
]
=
true
;
// liste für MWST texte
$vatLists
[
$vat
]
=
true
;
// liste für MWST texte
$vatArray
[
$vat
][
'sum'
]
=
\round
(
$vatEntry
[
'sum'
],
$precision
);
$bruttoSum
=
$bruttoSum
+
$vatArray
[
$vat
][
'sum'
];
...
...
@@ -388,7 +388,7 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
if
(
$Factor
instanceof
QUI\ERP\Products\Interfaces\PriceFactorWithVatInterface
)
{
$Factor
->
setSum
(
\round
(
$Factor
->
getSum
()
-
$diff
,
$precision
));
$bruttoSum
=
\round
(
$bruttoSum
,
$precision
);
$added
=
true
;
$added
=
true
;
break
;
}
}
...
...
@@ -402,12 +402,12 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
// counterbalance - gegenrechnung
// works only for one vat entry
if
(
\count
(
$vatArray
)
===
1
)
{
$vat
=
\key
(
$vatArray
);
$vat
=
\key
(
$vatArray
);
$netto
=
$bruttoSum
/
(
$vat
/
100
+
1
);
$vatSum
=
$bruttoSum
-
$netto
;
$vatSum
=
\round
(
$vatSum
,
$Currency
->
getPrecision
());
$diff
=
abs
(
$vatArray
[
$vat
][
'sum'
]
-
$vatSum
);
$diff
=
abs
(
$vatArray
[
$vat
][
'sum'
]
-
$vatSum
);
if
(
$diff
<=
0.019
)
{
$vatArray
[
$vat
][
'sum'
]
=
$vatSum
;
...
...
@@ -417,7 +417,7 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
if
(
$bruttoSum
===
0
||
$nettoSum
===
0
)
{
$bruttoSum
=
0
;
$nettoSum
=
0
;
$nettoSum
=
0
;
foreach
(
$vatArray
as
$vat
=>
$entry
)
{
$vatArray
[
$vat
][
'sum'
]
=
0
;
...
...
@@ -429,7 +429,7 @@ public function calcArticleList(ArticleList $List, $callback = false): ArticleLi
foreach
(
$priceFactors
as
$Factor
)
{
if
(
$Factor
->
getCalculationBasis
()
===
self
::
CALCULATION_GRAND_TOTAL
)
{
$value
=
$Factor
->
getValue
();
$value
=
$Factor
->
getValue
();
$bruttoSum
=
$bruttoSum
+
$value
;
if
(
$bruttoSum
<
0
)
{
...
...
@@ -470,45 +470,45 @@ public function calcArticlePrice(Article $Article, $callback = false)
return
$Article
->
getPrice
();
}
$isNetto
=
QUI\ERP\Utils\User
::
isNettoUser
(
$this
->
getUser
());
$isNetto
=
QUI\ERP\Utils\User
::
isNettoUser
(
$this
->
getUser
());
$isEuVatUser
=
QUI\ERP\Tax\Utils
::
isUserEuVatUser
(
$this
->
getUser
());
$Currency
=
$Article
->
getCurrency
();
$Currency
=
$Article
->
getCurrency
();
if
(
!
$Currency
)
{
$Currency
=
$this
->
getCurrency
();
}
$nettoPrice
=
$Article
->
getUnitPrice
()
->
value
();
$vat
=
$Article
->
getVat
();
$nettoPrice
=
$Article
->
getUnitPrice
()
->
value
();
$vat
=
$Article
->
getVat
();
$basisNettoPrice
=
$nettoPrice
;
$nettoSubSum
=
$this
->
round
(
$nettoPrice
*
$Article
->
getQuantity
());
$nettoSubSum
=
$this
->
round
(
$nettoPrice
*
$Article
->
getQuantity
());
if
(
$isEuVatUser
)
{
$vat
=
0
;
}
// discounts
$Discount
=
$Article
->
getDiscount
();
$Discount
=
$Article
->
getDiscount
();
$nettoPriceNotRounded
=
$Article
->
getUnitPriceUnRounded
()
->
getValue
();
if
(
$Discount
)
{
switch
(
$Discount
->
getCalculation
())
{
// einfache Zahl, Währung --- kein Prozent
case
Calc
::
CALCULATION_COMPLEMENT
:
$nettoPrice
=
$nettoPrice
-
(
$Discount
->
getValue
()
/
$Article
->
getQuantity
());
$nettoPrice
=
$nettoPrice
-
(
$Discount
->
getValue
()
/
$Article
->
getQuantity
());
$nettoPriceNotRounded
=
$nettoPriceNotRounded
-
(
$Discount
->
getValue
()
/
$Article
->
getQuantity
());
break
;
// Prozent Angabe
case
Calc
::
CALCULATION_PERCENTAGE
:
$percentage
=
$Discount
->
getValue
()
/
100
*
$nettoPrice
;
$nettoPrice
=
$nettoPrice
-
$percentage
;
$percentage
=
$Discount
->
getValue
()
/
100
*
$nettoPrice
;
$nettoPrice
=
$nettoPrice
-
$percentage
;
$nettoPriceNotRounded
=
$nettoPriceNotRounded
-
$percentage
;
break
;
}
}
$vatSum
=
$nettoPrice
*
(
$vat
/
100
);
$vatSum
=
$nettoPrice
*
(
$vat
/
100
);
$bruttoPrice
=
\round
(
$nettoPrice
+
$vatSum
,
$Currency
->
getPrecision
());
if
(
!
$isNetto
)
{
...
...
@@ -521,12 +521,12 @@ public function calcArticlePrice(Article $Article, $callback = false)
// sum
$nettoSum
=
$this
->
round
(
$nettoPrice
*
$Article
->
getQuantity
());
$vatSum
=
$nettoSum
*
(
$vat
/
100
);
$vatSum
=
$nettoSum
*
(
$vat
/
100
);
// korrektur rechnung / 1 cent problem
if
(
$checkBrutto
!==
$bruttoPrice
)
{
$bruttoPrice
=
$checkBrutto
;
$vatSum
=
$checkVat
;
$vatSum
=
$checkVat
;
}
// if the user is brutto
...
...
@@ -537,13 +537,13 @@ public function calcArticlePrice(Article $Article, $callback = false)
}
else
{
// sum
$nettoSum
=
$this
->
round
(
$nettoPrice
*
$Article
->
getQuantity
());
$vatSum
=
$nettoSum
*
(
$vat
/
100
);
$vatSum
=
$nettoSum
*
(
$vat
/
100
);
$bruttoSum
=
$this
->
round
(
$nettoSum
+
$vatSum
);
}
$price
=
$isNetto
?
$nettoPrice
:
$bruttoPrice
;
$sum
=
$isNetto
?
$nettoSum
:
$bruttoSum
;
$price
=
$isNetto
?
$nettoPrice
:
$bruttoPrice
;
$sum
=
$isNetto
?
$nettoSum
:
$bruttoSum
;
$basisPrice
=
$isNetto
?
$basisNettoPrice
:
$basisNettoPrice
+
(
$basisNettoPrice
*
$vat
/
100
);
$vatArray
=
[
...
...
@@ -553,7 +553,7 @@ public function calcArticlePrice(Article $Article, $callback = false)
];
QUI\ERP\Debug
::
getInstance
()
->
log
(
'Kalkulierter Artikel Preis '
.
$Article
->
getId
(),
'Kalkulierter Artikel Preis '
.
$Article
->
getId
(),
'quiqqer/erp'
);
...
...
@@ -589,9 +589,9 @@ public function calcArticlePrice(Article $Article, $callback = false)
*/
public
function
round
(
$value
):
float
{
$decimalSeparator
=
$this
->
getUser
()
->
getLocale
()
->
getDecimalSeparator
();
$decimalSeparator
=
$this
->
getUser
()
->
getLocale
()
->
getDecimalSeparator
();
$groupingSeparator
=
$this
->
getUser
()
->
getLocale
()
->
getGroupingSeparator
();
$precision
=
QUI\ERP\Defaults
::
getPrecision
();
$precision
=
QUI\ERP\Defaults
::
getPrecision
();
if
(
\strpos
(
$value
,
$decimalSeparator
)
&&
$decimalSeparator
!=
'.'
)
{
$value
=
\str_replace
(
$groupingSeparator
,
''
,
$value
);
...
...
@@ -704,7 +704,7 @@ public static function calculatePayments($ToCalculate): array
{
if
(
self
::
isAllowedForCalculation
(
$ToCalculate
)
===
false
)
{
QUI\ERP\Debug
::
getInstance
()
->
log
(
'Calc->calculatePayments(); Object is not allowed to calculate '
.
\get_class
(
$ToCalculate
)
'Calc->calculatePayments(); Object is not allowed to calculate '
.
\get_class
(
$ToCalculate
)
);
throw
new
QUI\ERP\Exception
(
'Object is not allowed to calculate'
);
...
...
@@ -717,7 +717,7 @@ public static function calculatePayments($ToCalculate): array
// if payment status is paid, take it immediately and do not query any transactions
if
(
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
PAYMENT_STATUS_PAID
)
{
$paidData
=
$ToCalculate
->
getAttribute
(
'paid_data'
);
$paid
=
0
;
$paid
=
0
;
if
(
!
\is_array
(
$paidData
))
{
$paidData
=
\json_decode
(
$paidData
,
true
);
...
...
@@ -765,16 +765,16 @@ public static function calculatePayments($ToCalculate): array
$paidData
=
[];
$paidDate
=
0
;
$sum
=
0
;
$total
=
$calculations
[
'sum'
];
$sum
=
0
;
$total
=
$calculations
[
'sum'
];
QUI\ERP\Debug
::
getInstance
()
->
log
(
'Calc->calculatePayments(); total: '
.
$total
'Calc->calculatePayments(); total: '
.
$total
);
$isValidTimeStamp
=
function
(
$timestamp
)
{
try
{
new
\DateTime
(
'@'
.
$timestamp
);
new
\DateTime
(
'@'
.
$timestamp
);
}
catch
(
\Exception
$e
)
{
return
false
;
}
...
...
@@ -827,7 +827,7 @@ public static function calculatePayments($ToCalculate): array
];
}
$paid
=
Price
::
validatePrice
(
$sum
);
$paid
=
Price
::
validatePrice
(
$sum
);
$toPay
=
Price
::
validatePrice
(
$calculations
[
'sum'
]);
// workaround fix
...
...
@@ -857,8 +857,8 @@ public static function calculatePayments($ToCalculate): array
&&
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
PAYMENT_STATUS_PLAN
)
{
// Leave everything as it is because a subscription plan order can never be set to "paid"
}
elseif
(
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
TYPE_INVOICE_REVERSAL
||
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
TYPE_INVOICE_CANCEL
||
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
PAYMENT_STATUS_DEBIT
||
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
TYPE_INVOICE_CANCEL
||
$ToCalculate
->
getAttribute
(
'paid_status'
)
===
QUI\ERP\Constants
::
PAYMENT_STATUS_DEBIT
)
{
// Leave everything as it is
}
elseif
((
float
)
$ToCalculate
->
getAttribute
(
'toPay'
)
==
0
)
{
...
...
@@ -866,7 +866,7 @@ public static function calculatePayments($ToCalculate): array
}
elseif
(
$ToCalculate
->
getAttribute
(
'paid'
)
==
0
)
{
$ToCalculate
->
setAttribute
(
'paid_status'
,
QUI\ERP\Constants
::
PAYMENT_STATUS_OPEN
);
}
elseif
(
$ToCalculate
->
getAttribute
(
'toPay'
)
&&
$calculations
[
'sum'
]
!=
$ToCalculate
->
getAttribute
(
'paid'
)
&&
$calculations
[
'sum'
]
!=
$ToCalculate
->
getAttribute
(
'paid'
)
)
{
$ToCalculate
->
setAttribute
(
'paid_status'
,
QUI\ERP\Constants
::
PAYMENT_STATUS_PART
);
}
...
...
@@ -962,13 +962,13 @@ public static function calculateTotal(array $invoiceList, $Currency = null): arr
}
$nettoTotal
=
0
;
$vatTotal
=
0
;
$vatTotal
=
0
;
$bruttoToPay
=
0
;
$bruttoPaid
=
0
;
$bruttoPaid
=
0
;
$bruttoTotal
=
0
;
$vatPaid
=
0
;
$nettoToPay
=
0
;
$vatPaid
=
0
;
$nettoToPay
=
0
;
foreach
(
$invoiceList
as
$invoice
)
{
// if (isset($invoice['type']) && (int)$invoice['type'] === Handler::TYPE_INVOICE_CANCEL ||
...
...
@@ -978,29 +978,33 @@ public static function calculateTotal(array $invoiceList, $Currency = null): arr
// }
// soll doch mit berechnet werden
$invBruttoSum
=
floatval
(
$invoice
[
'calculated_sum'
]);
$invVatSum
=
floatval
(
$invoice
[
'calculated_vatsum'
]);
$invPaid
=
floatval
(
$invoice
[
'calculated_paid'
]);
$invToPay
=
floatval
(
$invoice
[
'calculated_toPay'
]);
$invBruttoSum
=
floatval
(
$invoice
[
'calculated_sum'
]);
$invVatSum
=
floatval
(
$invoice
[
'calculated_vatsum'
]);
$invPaid
=
floatval
(
$invoice
[
'calculated_paid'
]);
$invToPay
=
floatval
(
$invoice
[
'calculated_toPay'
]);
$invNettoTotal
=
floatval
(
$invoice
[
'calculated_nettosum'
]);
$invVatSumPC
=
QUI\Utils\Math
::
percent
(
$invVatSum
,
$invBruttoSum
);
$invVatSumPC
=
QUI\Utils\Math
::
percent
(
$invVatSum
,
$invBruttoSum
);
if
(
$invVatSumPC
)
{
$invVatPaid
=
$invPaid
*
$invVatSumPC
/
100
;
if
(
$invToPay
===
0.0
)
{
$invVatPaid
=
$invVatSum
;
}
else
{
$invVatPaid
=
$invPaid
*
$invVatSumPC
/
100
;
}
}
else
{
$invVatPaid
=
0
;
}
$invNettoPaid
=
$invPaid
-
$invVatPaid
;
$invNettoPaid
=
$invPaid
-
$invVatPaid
;
$invNettoToPay
=
$invNettoTotal
-
$invNettoPaid
;
// complete + addition
$vatPaid
=
$vatPaid
+
$invVatPaid
;
$vatPaid
=
$vatPaid
+
$invVatPaid
;
$bruttoTotal
=
$bruttoTotal
+
$invBruttoSum
;
$bruttoPaid
=
$bruttoPaid
+
$invPaid
;
$bruttoPaid
=
$bruttoPaid
+
$invPaid
;
//$bruttoToPay = $bruttoToPay + $invToPay;
$nettoToPay
=
$nettoToPay
+
$invNettoToPay
;
$vatTotal
=
$vatTotal
+
$invVatSum
;
$vatTotal
=
$vatTotal
+
$invVatSum
;
$nettoTotal
=
$nettoTotal
+
$invNettoTotal
;
}
...
...
@@ -1010,7 +1014,7 @@ public static function calculateTotal(array $invoiceList, $Currency = null): arr
$nettoPaid
=
$bruttoPaid
-
$vatPaid
;
// vat calculation
$vatToPay
=
$vatTotal
-
$vatPaid
;
$vatToPay
=
$vatTotal
-
$vatPaid
;
$bruttoToPay
=
$bruttoTotal
-
$bruttoPaid
;
return
[
...
...
Dieser Diff ist reduziert.
Zum Erweitern klicken.
Vorschau
0%
Lade
Wiederholen
oder
Neue Datei anhängen
.
Abbrechen
You are about to add
0
people
to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Kommentar speichern
Abbrechen
Bitte
registrieren
oder
Anmelden
zum Kommentieren