Skip to main content
Question

Details tab disappears when the popup opens

  • March 27, 2026
  • 1 reply
  • 27 views

When setting the OrderQty field to 0 on the SO Line, a popup is triggered as expected. However, once the popup appears, the Details tab disappears immediately. After closing the popup by clicking OK, the Details tab becomes visible again.

 

<template>
  <qp-tab id="tab-Dsco-SO301000" caption="Dsco Info" after="#tab-Addresses">
        <qp-template id="form-Dsco-SO301000" name="17-17-14">
            <div id="divColumnAB-Dsco-SO301000" slot="A">
                <qp-fieldset id="fsColumnA-Dsco" view.bind="CurrentDocument" caption="Dsco Information" wg-container="CurrentDocument_Dsco">
                    <field name="UsrBZStoreCode"></field>
                    <field name="UsrBZDscoPuNumber"></field>
                    <field name="UsrBZDscoOrderCancelAfterDate"></field>
                    <field name="UsrBZAknowledgeStatusInDsco"></field>
                    <field name="UsrBZShipmentStatus"></field>
                    <field name="UsrBZInvoiceStatus"></field>
                </qp-fieldset>
            </div>
        </qp-template>
    </qp-tab>

    <field after="#grid-Details" name="UsrBZSku"></field>
    <field after="#grid-Details" name="UsrBZUpc"></field>
    <field after="#grid-Details" name="UsrBZDscoItemId"></field>

    <qp-panel id="BZDscoFilter" caption="Dsco Cancel Order" auto-repaint="true">
        <qp-template id="tplCancelFilter" name="1-1">
            <qp-fieldset id="FormFilterSlotA" view.bind="BZDscoFilter" slot="A">
                <field name="CancelinganOrder"></field>
                <field name="DscoCancelCode"></field>
            </qp-fieldset>
        </qp-template>
        <footer>
            <qp-button id="btnPanelOK" caption="OK" dialog-result="OK"></qp-button>
            <qp-button id="btnPanelCancel" caption="Cancel" dialog-result="Cancel"></qp-button>
        </footer>
    </qp-panel>
    <qp-panel id="BZDscoCancelFilter" caption="Dsco Cancel Order Line" auto-repaint="true" auto-reload="true" close-button-locator="#btn1PanelCancel">
        <qp-template id="tplBZDscoCancelFilter" name="1-1">
            <qp-fieldset id="Form1FilterSlotA" view.bind="BZDscoCancelFilter" slot="A">
                <field name="CancelingaOrderLine"></field>
                <field name="DscoOrderCancelCode"></field>
            </qp-fieldset>
        </qp-template>
        <footer>
            <qp-button id="btn1PanelOK" caption="OK" dialog-result="OK"></qp-button>
            <qp-button id="btn1PanelCancel" caption="Cancel" dialog-result="Cancel"></qp-button>
        </footer>
    </qp-panel>
    <qp-panel id="BZUpdateSOOrderInfo" caption="Update Dsco Statuses" auto-repaint="true">
        <qp-template id="tpl1BZDscoCancelFilter" name="1-1">
            <qp-fieldset id="Form2FilterSlotA" view.bind="BZUpdateSOOrderInfo" slot="A">
                <field name="AknowledgeStatusInDsco"></field>
                <field name="ShipmentStatus"></field>
                <field name="InvoiceStatus"></field>
            </qp-fieldset>
        </qp-template>
        <footer>
            <qp-button id="btn2PanelOK" caption="OK" dialog-result="Yes"></qp-button>
            <qp-button id="btn2PanelCancel" caption="Cancel" dialog-result="Cancel"></qp-button>
        </footer>
    </qp-panel>
</template>


 

import { columnConfig, controlConfig, PXFieldState, PXFieldOptions, PXActionState, viewInfo, createSingle, PXView } from "client-controls";
import { SO301000, SOLine, SOOrder } from "src/screens/SO/SO301000/SO301000";

export interface SO301000_BZDSCOConnector extends SO301000 { }
export class SO301000_BZDSCOConnector {

    BZDscoFilter = createSingle(BZDscoOrderFilter);
    BZDscoCancelFilter = createSingle(BZDscoCancelOrderFilter);
    BZUpdateSOOrderInfo = createSingle(BZSOOrderInfoFilter);
    BZCancelDscoOrderLine: PXActionState;

}
export class BZSOOrderInfoFilter extends PXView {
    AknowledgeStatusInDsco: PXFieldState<PXFieldOptions.CommitChanges>;
    ShipmentStatus: PXFieldState<PXFieldOptions.CommitChanges>;
    InvoiceStatus: PXFieldState<PXFieldOptions.CommitChanges>;
}
export class BZDscoOrderFilter extends PXView {

    CancelinganOrder: PXFieldState<PXFieldOptions.CommitChanges>;
    DscoCancelCode: PXFieldState<PXFieldOptions.CommitChanges>;

}
export class BZDscoCancelOrderFilter extends PXView {
    DscoOrderCancelCode: PXFieldState<PXFieldOptions.CommitChanges>;
    CancelingaOrderLine: PXFieldState<PXFieldOptions.CommitChanges>;
    CancelinganOrder: PXFieldState<PXFieldOptions.CommitChanges>;
}

export interface SOOrder_BZDSCOConnector extends SOOrder { }
export class SOOrder_BZDSCOConnector {
    UsrBZStoreCode: PXFieldState<PXFieldOptions.Disabled>;
    @controlConfig({ allowEdit: true })
    UsrBZDscoPuNumber: PXFieldState<PXFieldOptions.Disabled>;
    UsrBZDscoOrderCancelAfterDate: PXFieldState<PXFieldOptions.Disabled>;
    UsrBZAknowledgeStatusInDsco: PXFieldState;
    UsrBZShipmentStatus: PXFieldState;
    UsrBZInvoiceStatus: PXFieldState;
}


export interface SOLine_BZDSCOConnector extends SOLine { }
export class SOLine_BZDSCOConnector {
    @columnConfig({ width: 180 }) UsrBZSku: PXFieldState;
    @columnConfig({ width: 180 }) UsrBZUpc: PXFieldState;
    @columnConfig({ width: 180 }) UsrBZDscoItemId: PXFieldState;
}

1 reply

Forum|alt.badge.img+2
  • Jr Varsity III
  • March 28, 2026

@Meri36 Hi,
Can you please try like this.
Response generated from AI.

Looking at your code, the issue is with the auto-repaint="true" and auto-reload="true" attributes on the BZDscoCancelFilter panel. When the popup triggers, Acumatica's repaint cycle is re-rendering the entire screen, which temporarily hides the Details tab.

Here are the likely causes and fixes:

Root Cause

The auto-repaint="true" on BZDscoCancelFilter causes the screen to repaint when the panel opens. This repaint can interfere with tab/grid visibility during the panel's display lifecycle — the Details tab loses its rendered state momentarily.
Fix 1: Remove auto-reload from the panel (least invasive)

<qp-panel id="BZDscoCancelFilter" caption="Dsco Cancel Order Line" 
    auto-repaint="true" 
    close-button-locator="#btn1PanelCancel">

Fix 2: Remove auto-repaint as well

 

<qp-panel id="BZDscoCancelFilter" caption="Dsco Cancel Order Line"
    close-button-locator="#btn1PanelCancel">

Fix 3: Check the C# RowUpdating/FieldUpdating event

On the backend, if your graph event that triggers the popup calls e.Cancel = true or manipulates CurrentDocument before the panel is shown, it can cause a partial re-render. Make sure your event looks something like:

protected void SOLine_OrderQty_FieldVerifying(PXCache cache, PXFieldVerifyingEventArgs e)
{
    SOLine row = (SOLine)e.Row;
    if ((decimal?)e.NewValue == 0)
    {
        // Do NOT modify cache or rows here before showing the panel
        if (BZDscoCancelFilter.AskExt() == WebDialogResult.OK)
        {
            // handle after dialog
        }
    }
}

Avoid calling cache.Update() or cache.SetValue() before AskExt() — that triggers a graph refresh which repaints the UI.