You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2024/05/24 19:45:44 UTC
(ofbiz-framework) branch trunk updated: fixed: PartyFinancialHistory throws an error (OFBIZ-13099)
This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 6b57e35dbc fixed: PartyFinancialHistory throws an error (OFBIZ-13099)
6b57e35dbc is described below
commit 6b57e35dbc25d32fdaff8b956fe8eb22a3ed5bf7
Author: Jacques Le Roux <ja...@les7arts.com>
AuthorDate: Fri May 24 20:33:36 2024 +0200
fixed: PartyFinancialHistory throws an error (OFBIZ-13099)
This is a rewrite for different reasons.
The queryIterators were called twice, for instance
while (invIterator.next()) {
invoice = nvIterator.next()
They are now called only once, else an instance would be lost
while (invoice = invIterator.next()) {
The expression above raises the CodeNarc rule AssignmentInConditional
So I had to locally bypass it using comments
I have added a warning in EntityListIterator::hasNext about that.
Also the queryIterators must be closed as documented in
EntityQuery::queryIterator:
NOTE: THAT THIS MUST BE CLOSED (preferably in a finally block) WHEN YOU ARE DONE
WITH IT, AND DON'T LEAVE IT OPEN TOO LONG BEACUSE IT WILL MAINTAIN A DATABASE
CONNECTION.
It could be possible to implements AutoCloseable in the call stack but not
evident... EntityListIterator implements it...
---
.../apache/ofbiz/party/party/PartyFinancialHistory.groovy | 13 +++++++++----
.../ofbiz/party/party/UnAppliedInvoicesForParty.groovy | 7 +++++--
.../ofbiz/party/party/UnAppliedPaymentsForParty.groovy | 6 ++++--
.../org/apache/ofbiz/entity/util/EntityListIterator.java | 6 ++++--
4 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyFinancialHistory.groovy b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyFinancialHistory.groovy
index a07be54e2d..278d1ee0b5 100644
--- a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyFinancialHistory.groovy
+++ b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyFinancialHistory.groovy
@@ -56,8 +56,9 @@ invExprs =
invIterator = from('InvoiceAndType').where(invExprs).cursorScrollInsensitive().distinct().queryIterator()
-while (invIterator.next()) {
- invoice = nvIterator.next()
+/* codenarc-disable */
+while (invoice = invIterator.next()) {
+/* codenarc-enable */
Boolean isPurchaseInvoice = EntityTypeUtil.hasParentType(delegator, 'InvoiceType', 'invoiceTypeId',
invoice.getString('invoiceTypeId'), 'parentTypeId', 'PURCHASE_INVOICE')
Boolean isSalesInvoice = EntityTypeUtil.hasParentType(delegator, 'InvoiceType', 'invoiceTypeId', (String) invoice.getString('invoiceTypeId'),
@@ -76,6 +77,8 @@ while (invIterator.next()) {
}
}
+invIterator.close()
+
//get total/unapplied/applied payment in/out total amount:
totalPayInApplied = BigDecimal.ZERO
totalPayInNotApplied = BigDecimal.ZERO
@@ -100,8 +103,9 @@ payExprs =
payIterator = from('PaymentAndType').where(payExprs).cursorScrollInsensitive().distinct().queryIterator()
-while (payIterator.next()) {
- payment = payIterator.next()
+/* codenarc-disable */
+while (payment = payIterator.next()) {
+/* codenarc-enable */
if (payment.parentTypeId == 'DISBURSEMENT' || payment.parentTypeId == 'TAX_PAYMENT') {
totalPayOutApplied += PaymentWorker.getPaymentApplied(payment, actualCurrency).setScale(2, RoundingMode.HALF_UP)
totalPayOutNotApplied += PaymentWorker.getPaymentNotApplied(payment, actualCurrency).setScale(2, RoundingMode.HALF_UP)
@@ -115,6 +119,7 @@ while (payIterator.next()) {
+ ' !!!! Should be either DISBURSEMENT, TAX_PAYMENT or RECEIPT')
}
}
+payIterator.close()
context.finanSummary = [:]
context.finanSummary.totalSalesInvoice = totalSalesInvoice = totalInvSaApplied.add(totalInvSaNotApplied)
diff --git a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedInvoicesForParty.groovy b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedInvoicesForParty.groovy
index 5173c693a4..f4c23c5f4e 100644
--- a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedInvoicesForParty.groovy
+++ b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedInvoicesForParty.groovy
@@ -48,8 +48,10 @@ invExprs =
invIterator = from('InvoiceAndType').where(invExprs).cursorScrollInsensitive().distinct().queryIterator()
invoiceList = []
-while (invIterator.next()) {
- invoice = invIterator.next()
+
+/* codenarc-disable */
+while (invoice = invIterator.next()) {
+/* codenarc-enable */
unAppliedAmount = InvoiceWorker.getInvoiceNotApplied(invoice, actualCurrency).setScale(2, RoundingMode.HALF_UP)
if (unAppliedAmount.signum() == 1) {
if (actualCurrency == true) {
@@ -66,5 +68,6 @@ while (invIterator.next()) {
invoiceParentTypeId: invoice.parentTypeId])
}
}
+invIterator.close()
context.ListUnAppliedInvoices = invoiceList
diff --git a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedPaymentsForParty.groovy b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedPaymentsForParty.groovy
index fb1773554b..51605bd171 100644
--- a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedPaymentsForParty.groovy
+++ b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/UnAppliedPaymentsForParty.groovy
@@ -50,8 +50,9 @@ payExprs =
paymentList = []
payIterator = from('PaymentAndType').where(payExprs).cursorScrollInsensitive().distinct().queryIterator()
-while (payIterator.next()) {
- payment = payIterator.next()
+/* codenarc-disable */
+while (payment = payIterator.next()) {
+/* codenarc-enable */
unAppliedAmount = PaymentWorker.getPaymentNotApplied(payment, actualCurrency).setScale(2, RoundingMode.HALF_UP)
if (unAppliedAmount.signum() == 1) {
if (actualCurrency == true && payment.actualCurrencyAmount && payment.actualCurrencyUomId) {
@@ -70,5 +71,6 @@ while (payIterator.next()) {
paymentParentTypeId: payment.parentTypeId])
}
}
+payIterator.close()
context.paymentList = paymentList
diff --git a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityListIterator.java b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityListIterator.java
index bebb3ef973..f79c4ebd07 100644
--- a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityListIterator.java
+++ b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityListIterator.java
@@ -273,8 +273,10 @@ public class EntityListIterator implements AutoCloseable, ListIterator<GenericVa
* It is much better to just use next() until it returns null
* For example, you could use the following to iterate through the results in an EntityListIterator:
* GenericValue nextValue = null;
- * while ((nextValue = (GenericValue)
- * this.next()) != null) { ... }
+ * while ((nextValue = (GenericValue) this.next()) != null) { ... }
+ * Remember to not use next 2 times, in a while loop for instance...
+ * For Groovy you can use something like while (instance = Iterator.next())
+ * but you need to surround it with codenarc disable/enable comments because of the AssignmentInConditional rule
*/
@Override
public boolean hasNext() {