Skip to main content
Question

Dialog Panel not displaying in Modern UI (SO301000 customization)

  • January 14, 2026
  • 2 replies
  • 14 views

marcorojas82
Freshman I

I’m customizing the SO301000 screen in Modern UI.  
I created a Dialog Panel in the .html file and linked it to the TypeScript class with @viewInfo and createSingle/createCollection.  
However, the panel does not display when I open the screen.  

I’ve attached my .html and .ts files. Can anyone point out what I’m doing wrong or missing in the setup?
 

 

.html

import {

    GridPreset,

    PXActionState,

    PXFieldOptions,

    PXFieldState,

    PXView,

    controlConfig,

    createCollection,

    gridConfig,

    columnConfig,

    createSingle,

    viewInfo

} from "client-controls";

 

import { SO301000, SOOrderHeader, SOLine } from "src/screens/SO/SO301000/SO301000";

 

//export interface SO301000_SKModernUICST extends SO301000 { }

export class SO301000_SKModernUICST extends SO301000 {

   

    AddRBInvoiceOK: PXActionState;

 

    @viewInfo({containerName: "addRBinvoicefilter"})

    addRBinvoicefilter = createSingle(AddRBInvoiceFilter);

 

    @viewInfo({containerName: "RBinvoicesplits"})

    RBinvoicesplits = createCollection(RBInvoiceSplits);

}

 

export interface SOOrderHeader_SKModernUICST extends SOOrderHeader { }

export class SOOrderHeader_SKModernUICST {

 

    UsrScalRecord: PXFieldState<PXFieldOptions.CommitChanges>;

    UsrScalTickNbr: PXFieldState;

 

    //Change Service Number field to be Disabled and linked

    @controlConfig({allowEdit: true})

    UsrServiceNbr: PXFieldState<PXFieldOptions.Disabled>;

    UsrTaxable: PXFieldState<PXFieldOptions.CommitChanges>;

 

    //Conditional CSS fields (if OrderType = "MR")

    UsrEquipmentID: PXFieldState;

    UsrVIN: PXFieldState;

    UsrMileage: PXFieldState;

    UsrHours: PXFieldState;

    UsrTech1: PXFieldState;

    UsrTech2: PXFieldState;

}

 

export interface SOLine_SKModernUICST extends SOLine { }

export class SOLine_SKModernUICST {

    UsrSPriceIndex: PXFieldState;

    UsrQuoteUnitPrice: PXFieldState;

    UsrIndexAdj: PXFieldState;

 

    //Action on toolbar

    AddReBill: PXActionState;

}

 

export class AddRBInvoiceFilter extends PXView {

    DocType: PXFieldState<PXFieldOptions.CommitChanges>;

    RefNbr: PXFieldState<PXFieldOptions.CommitChanges>;

}

 

@gridConfig({

    preset: GridPreset.ReadOnly,

    syncPosition: true,

    adjustPageSize: true

})

export class RBInvoiceSplits extends PXView {

    @columnConfig({ allowCheckAll: true })

    Selected: PXFieldState<PXFieldOptions.CommitChanges>;

    InventoryID: PXFieldState;

    TranDesc: PXFieldState;

    SiteID: PXFieldState;

    LocationID: PXFieldState;

    Qty: PXFieldState;

    UOM: PXFieldState;

    OrderNbrSOLine: PXFieldState;

}

 

.ts

<template>

  <field

      after="#fsColumnB-Order FIELD[name='OrderDesc']"

      name="Document.UsrScalRecord"

      pinned

      config-allow-edit.bind="true"></field>

  <field after="#fsColumnB-Order FIELD[name='Document.UsrScalRecord']" name="Document.UsrScalTickNbr"></field>

 

  <field

      after="#fsColumnC-Order FIELD[name='CuryControlTotal']"

      name="Document.UsrTaxable"

      pinned

      config-allow-edit.bind="true"></field>

  <field after="#fsColumnC-Order FIELD[name='CuryControlTotal']" name="Document.UsrServiceNbr"></field>

 

  <qp-template id="formOrderLine2" after="#form-Order" name="1-1-1">

    <qp-fieldset id="formConditionalFieldsMR" slot="A" view.bind="Document" class="highlights-section">

      <field name="Document.UsrEquipmentID"></field>

      <field name="Document.UsrVIN"></field>

      <field name="Document.UsrMileage"></field>

      <field name="Document.UsrHours"></field>

      <field name="Document.UsrTech1"></field>

      <field name="Document.UsrTech2"></field>

    </qp-fieldset>

  </qp-template>

 

  <qp-panel id="RBinvoicesplits" caption="Add Re - Bill Invoice" auto-repaint="true">

    <qp-template id="formRebillInvoice" name="17-17-14" class="equal-height" wg-container>

      <qp-fieldset id="addRBinvoicefilter_CstPXLayoutRule3_fs0" slot="slotA" view.bind="addRBinvoicefilter" wg-container="addRBinvoicefilter_CstFormView2">

        <field name="DocType"></field>

        <field name="RefNbr"></field>

      </qp-fieldset>

    </qp-template>

 

    <qp-grid id="CstPXGrid17" view.bind="RBinvoicesplits" batchUpdate="True"></qp-grid>

    <footer>

      <qp-button id="CstButton13" state.bind="AddRBInvoiceOK" caption="Add"></qp-button>

      <qp-button id="CstButton11" dialog-result="OK" caption="Add & Close"></qp-button>

      <qp-button id="CstButton12" dialog-result="Cancel" caption="Cancel"></qp-button>

    </footer>

  </qp-panel>

</template>

 

 

 

2 replies

Forum|alt.badge.img+3

Hi ​@marcorojas82 
Why is this line commented out?
//export interface SO301000_SKModernUICST extends SO301000 { }
Is this a typo, or is it commented out in your environment as well? If so, try uncommenting it — it might be the issue.


Forum|alt.badge.img+8
  • Captain II
  • January 14, 2026

@aleksandrsechin reply jogged my mind.

 

I think you should have the export interface extending the base class, then the export class not extending anything.

 

I have encountered issues with mix-ins not applying when extending via the export class.

 

So something like this:

 

export interface SO301000_SKModernUICST extends SO301000 { }

export class SO301000_SKModernUICST {



AddRBInvoiceOK: PXActionState;



@viewInfo({containerName: "addRBinvoicefilter"})

addRBinvoicefilter = createSingle(AddRBInvoiceFilter);



@viewInfo({containerName: "RBinvoicesplits"})

RBinvoicesplits = createCollection(RBInvoiceSplits);

}