Hello,

I assign it to don't forgot it, I'll try to look on it but I don't know when.

If you or someone else want to lead it feel-free :)

Nicolas

Le 04/07/2026 à 08:17, Arun Patidar a écrit :
Hi Tomek,

I found that you already created a Jira for this:
https://issues.apache.org/jira/browse/OFBIZ-13448

Also, Aditi suggested the same fixes on the ticket.


On Sat, Jul 4, 2026 at 11:42 AM Arun Patidar<[email protected]> wrote:

Hi Tomek,

Thank you for reporting this. I can confirm this is indeed a bug.

The availableToPromiseTotal field is defined as a fixed-point type in the
entity model, which translates to a BigDecimal at runtime. Comparing it
against the String "0" can lead to database parsing errors and type
mismatch exceptions.

Your proposed fix is correct, with a couple of minor adjustments for Java
syntax and imports:

- Use the capitalized constant BigDecimal.ZERO (instead of
BigDecimal.Zero).
- Add the import import java.math.BigDecimal; to the top of
FixedAssetMaintServices.java

Please create a ticket on Jira and attach the patch with your fix.

Regards,
Arun Patidar



On Fri, Jun 26, 2026 at 4:29 PM Tomek<[email protected]> wrote:

I have found a bug in the assetmaint plugin, specifically in the
following file:


assetmaint/src/main/java/org/apache/ofbiz/assetmaint/FixedAssetMaintServices.java

Problematic code fragment:

EntityConditionList<EntityExpr> ecl =
EntityCondition.makeCondition(UtilMisc.toList(
                      EntityCondition.makeCondition("productId",
EntityOperator.EQUALS, productId),
                      EntityCondition.makeCondition("facilityId",
EntityOperator.EQUALS, facilityId),
EntityCondition.makeCondition("availableToPromiseTotal",
EntityOperator.GREATER_THAN, "0")), // Here is the bug
                      EntityOperator.AND);

Proposed fix:

EntityConditionList<EntityExpr> ecl =
EntityCondition.makeCondition(UtilMisc.toList(
                      EntityCondition.makeCondition("productId",
EntityOperator.EQUALS, productId),
                      EntityCondition.makeCondition("facilityId",
EntityOperator.EQUALS, facilityId),
EntityCondition.makeCondition("availableToPromiseTotal",
EntityOperator.GREATER_THAN, BigDecimal.Zero)),
                      EntityOperator.AND);

Rationale:

The availableToPromiseTotal field represents a numerical value (defined
as a fixed-point number in the entity model), not a String. Passing the
string "0" causes a type mismatch exception or a database parsing
failure at runtime. Replacing it with BigDecimal.ZERO resolves the issue.

Best regards,
Tomek


Reply via email to