Ledger::Current() returns wrong values while running in batch.

When I am submitting workflow for Purchase Requisition, code Ledger::Current() executes in the batch mode and instead of returning ledger of the submitted company, It returns ledger of the batch process created the company.

(i.e) Workflow batch process is created in company USMF. If I create and submit purchase requisition workflow from the company GBSI, it checks the Budget Check Result for the active company (CurExt()). But since the code runs in batch mode, method CurExt() returns company “USMF” as the active company.

Please suggest me a way to fix the issue. Or If we have any hot fix to fix this issue?