Hi @vannakheng,
Since the image appears after reloading the form, the upload and field binding are probably working. The missing step is refreshing the bound data view after the Pay action updates or attaches the image.
After saving the image and updating the record, try explicitly updating the cache and requesting a refresh:
var row = Base.Document.Current;
if (row != null)
{
// Set KHQRReport or attach the generated file here.
Base.Document.Update(row);
Base.Actions.PressSave();
Base.Document.View.RequestRefresh();
}
If the Pay action runs inside PXLongOperation, perform the database/file update inside the long operation using PXTransactionScope and complete that PXTransactionScope before request refresh after the operation. Refreshing before the long operation finishes will reload the previous value.
Also you can check if your Pay action has CommitChanges on it. That also may be helpful.
If RequestRefresh() alone does not repaint the uploader, could you share the Pay action code and the DAC attributes for KHQRReport? Those determine whether the field's updated value is returned to the Modern UI.