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