Hi Experts,
Lately we are encountering the below issue while integration is trying to create approve PO in Maximo. We verified the PO limit of MXINTADM (Integration User) and that has been set to "NO LIMIT". All other limit and tolerances are also set to NOLIMIT and UNLIMITED. Our integration uses APIKEY to create POs in Maximo with PO lines through lean OSLC calls. Header has been set to x-method-override as SYNC and data is in JSON format. Object structure has PO and POLINE object in it.
ERROR: BMXAA3279E - Could not change PO EP362 status to APPR.\n\tBMXAA3289E - The order amount exceeds the purchasing limit.",
Our environment has been recently upgraded to 7613 recently and found that IBM has implemented an APAR IJ32670 as part of 7613. So We have requested IBM to let us know what changes they have added as part of this APAR and waiting for their response. Our BASE currency is AUD and exchange rate is 1.0 while calculating the Total cost.
Meantime, I have gone through the logs and found that the error is coming from the POSTATUSHANDLER.APPROVE() method (refer attached screenshot for the class). After further investigation, I found that Maximo is calculating the Total cost in Base price (by multiplying with the exchange rate) and comparing with the POLIMIT retrieved from the Security Profile of the user (MXINTADM) and also checking whether the retrieved POLIMT value is not equal to 1.79769313486e+308 (guessing this has been used for NOLIMIT).
So I tried to get the tolerance value from the security profile in an automation script (by using the same code and creating dummy launch Point on PO before Save to invoke it on integration call) and found that it returns 0.0 instead of 1.79769313486e+308 even if the PO limit has been set to "NO LIMIT" (null in UI) for MXINTADM. Then I have set the PO limit to some finite value (5000), still it returns 0.0.
Now I am confused where is this 0.0 value is getting initialized. I checked in DB, app designer and found nothing.
If anyone has any advise, please respond.
--> Used the below code to get and print the PO limit while calling the integration...
raise TypeError(mbo.getProfile().getTolerance("POLIMIT",mbo.getString("ORGID"))) -> [mbo is PO --> ProfileRemote.getProfile() --> MboServerRemote.getMboServer().getTolerance(attrName, string orgsite)
#Integrations------------------------------
Subhransu Sekhar Sahoo
Tata Consultancy Services
------------------------------