After working on this for 4 full days, I am crying out for help. I’ve probably published 100 times. Since I cannot rebuild the pages using the command line (would be great if you could. Once published, the command line does nothing.) My project is HUGE and it takes 3 or so minutes to publish. 3 * 100 is a lot of minutes to wait!
I created Popup Panels for two screens. I am able to get the panels to open, and the custom actions for them are firing. BUT I cannot find any way to get the fields to show in the panels.
The code and panels work perfectly in Classic UI.
Strangely, in order to get the menu options to show on one screen I have to manually add the buttons using the @gridConfig({ topBarItems: { code to do it. Doing that makes some of the default buttons on the grid disappear, so I would like to not use that approach, but desperate times call for desperate measures.
In case you wonder, I am hiding the Add Items button and creating my own so that I can add new functionality.
I am going to paste LOT of code here. However, the TS and HTML MUI files are probably all that would need to be looked at. But I am providing everything in case it is needed.
SCREEN IN208900:
HTML
<template>
<qp-panel id="AddItemsByVendorFilter"
caption="Add By Preferred Vendor"
auto-repaint="true">
<qp-template id="fvICSAddItems_div0" name="1" qp-collapsible="">
<qp-fieldset id="ICSAddItemsView_lrICSAddItems_fs"
slot="A"
view.bind="AddItemsByVendorFilter"
wg-container="AddItemsView_fvICSAddItems">
<field name="UsrPreferredVendorID"></field>
<field name="UsrItemClassID"></field>
</qp-fieldset>
</qp-template>
<footer>
<qp-button id="btnICSAddItemsByVendorOK" caption="Ok" dialog-result="OK"></qp-button>
<qp-button id="btnICSAddItemsByVendorCancel" caption="Cancel" dialog-result="Cancel"></qp-button>
</footer>
</qp-panel>
</template>TS
import {
PXFieldState,
PXView,
viewInfo,
PXActionState,
createSingle
} from "client-controls";
import { IN208900, INPIClassItem, INPIClass, INPIClassLocation } from "src/screens/IN/IN208900/IN208900";
export interface IN204060_CummingsCombined_generated extends IN208900 { }
export class IN204060_CummingsCombined_generated {
@viewInfo({ containerName: "Add Items By Vendor" })
AddItemsByVendorFilter = createSingle(INPIClassItem_AddItemsByVendorID);
}
export interface INPIClassItem_AddItemsByVendorID extends INPIClassItem { }
export class INPIClassItem_AddItemsByVendorID extends PXView {
UsrPreferredVendorID: PXFieldState;
UsrItemClassID: PXFieldState;
AddItemsByVendorID: PXActionState;
ClearItemsPIClassItem: PXActionState;
}
export interface INPIClassLocation_ClearItems extends INPIClassLocation { }
export class INPIClassLocation_ClearItems extends PXView {
ClearItemsPIClass: PXActionState;
}VS Code
using Cummings;
using PX.Data;
using PX.Data.BQL;
using PX.Data.BQL.Fluent;
using PX.Objects.AP;
namespace PX.Objects.IN
{
public class INPIClassMaint_Extension : PXGraphExtension<PX.Objects.IN.INPIClassMaint>
{
public static bool IsActive() => true;
public PXFilter<AddItemsByVendorDAC> AddItemsByVendorFilter;
[PXImport(typeof(INPIClassItem))]
public
PXSelectJoin<INPIClassItem,
LeftJoin<InventoryItem, On<INPIClassItem.FK.InventoryItem>>,
Where<INPIClassItem.pIClassID, Equal<Current<INPIClass.pIClassID>>>>
Items;
[PXImport(typeof(INPIClassLocation))]
public
PXSelectJoin<INPIClassLocation,
LeftJoin<INLocation, On<INPIClassLocation.FK.Location>>,
Where<INPIClassLocation.pIClassID, Equal<Current<INPIClass.pIClassID>>>>
Locations;
//FIELDS USED FOR ADD ITEMS POPUP
[PXCacheName("Add by Vendor DAC")]
public sealed class AddItemsByVendorDAC : PXBqlTable, IBqlTable
{
#region UsrPreferredVendorID
[PXInt]
[PXUIField(DisplayName = "Vendor", Required = true)]
[PXSelector(typeof(Search<Vendor.bAccountID>),
typeof(Vendor.acctCD),
typeof(Vendor.acctName),
SubstituteKey = typeof(Vendor.bAccountID),
DescriptionField = typeof(Vendor.acctCD))]
public int? UsrPreferredVendorID { get; set; }
public abstract class usrPreferredVendorID : PX.Data.BQL.BqlInt.Field<usrPreferredVendorID> { }
#endregion
#region UsrItemClassID
[PXInt]
[PXUIField(DisplayName = "Item Class")]
[PXDimensionSelector(INItemClass.Dimension, typeof(Search<INItemClass.itemClassID>), typeof(INItemClass.itemClassCD), DescriptionField = typeof(INItemClass.descr), CacheGlobal = true)]
public int? UsrItemClassID { get; set; }
public abstract class usrItemClassID : BqlInt.Field<usrItemClassID> { }
#endregion
}
public PXAction<INPIClassItem> AddItemsByVendorID;
[PXUIField(DisplayName = "Add By Vendor", Enabled = true)]
[PXButton(CommitChanges = true)]
public void addItemsByVendorID()
{
var filter = AddItemsByVendorFilter.Current;
if (filter == null) return;
if (AddItemsByVendorFilter.AskExt() == WebDialogResult.OK)
{
Base.Actions.PressSave();
var Filter = AddItemsByVendorFilter.Current;
if (Filter == null || Filter.UsrPreferredVendorID == null) return;
INPIClass currentClass = Base.Classes.Current;
if (Filter.UsrItemClassID != null)
{
foreach (InventoryItemCurySettings inventory in SelectFrom<InventoryItemCurySettings>
.InnerJoin<InventoryItem>.On<InventoryItem.inventoryID.IsEqual<InventoryItemCurySettings.inventoryID>>
.Where<InventoryItemCurySettings.preferredVendorID.IsEqual<@P.AsInt>
.And<InventoryItem.itemType.IsEqual<@P.AsString>>
.And<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.markedForDeletion>>
.And<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.inactive>>
.And<InventoryItem.itemClassID.IsEqual<@P.AsInt>>>.View.Select(Base, Filter.UsrPreferredVendorID, "F", Filter.UsrItemClassID))
{
INPIClassItem testItem = SelectFrom<INPIClassItem>.Where<INPIClassItem.inventoryID.IsEqual<@P.AsInt>
.And<INPIClassItem.pIClassID.IsEqual<@P.AsString>>>.View.Select(Base, inventory.InventoryID, currentClass.PIClassID);
if (testItem == null)
{
INPIClassItem newItem = new INPIClassItem();
newItem.InventoryID = inventory.InventoryID;
newItem.PIClassID = currentClass.PIClassID;
Base.Items.Insert(newItem);
}
}
}
else
{
foreach (InventoryItemCurySettings inventory in SelectFrom<InventoryItemCurySettings>
.InnerJoin<InventoryItem>.On<InventoryItem.inventoryID.IsEqual<InventoryItemCurySettings.inventoryID>>
.Where<InventoryItemCurySettings.preferredVendorID.IsEqual<@P.AsInt>
.And<InventoryItem.itemType.IsEqual<@P.AsString>>
.And<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.markedForDeletion>>
.And<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.inactive>>>.View.Select(Base, Filter.UsrPreferredVendorID, "F"))
{
INPIClassItem testItem = SelectFrom<INPIClassItem>.Where<INPIClassItem.inventoryID.IsEqual<@P.AsInt>
.And<INPIClassItem.pIClassID.IsEqual<@P.AsString>>>.View.Select(Base, inventory.InventoryID, currentClass.PIClassID);
if (testItem == null)
{
INPIClassItem newItem = new INPIClassItem();
newItem.InventoryID = inventory.InventoryID;
newItem.PIClassID = currentClass.PIClassID;
Base.Items.Insert(newItem);
}
}
}
Base.Actions.PressSave();
}
}
public PXAction<INPIClass> ClearItemsPIClass;
[PXUIField(DisplayName = "Clear Items", Enabled = true)]
[PXButton(CommitChanges = true)]
public void clearItemsPIClass()
{
WebDialogResult result = Locations.Ask(ActionsMessages.Warning, ICSMessages.DeleteAllItems,
MessageButtons.OKCancel, MessageIcon.Warning, true);
if (result != WebDialogResult.OK) return;
foreach (INPIClassLocation item in this.Base.Locations.Select())
{
Base.Locations.Delete(item);
}
Base.Actions.PressSave();
}
public PXAction<INPIClassItem> ClearItemsPIClassItem;
[PXUIField(DisplayName = "Clear Items", Enabled = true)]
[PXButton(CommitChanges = true)]
public void clearItemsPIClassItem()
{
WebDialogResult result = Locations.Ask(ActionsMessages.Warning, ICSMessages.DeleteAllItems,
MessageButtons.OKCancel, MessageIcon.Warning, true);
if (result != WebDialogResult.OK) return;
foreach (INPIClassItem item in this.Base.Items.Select())
{
Base.Items.Delete(item);
}
Base.Actions.PressSave();
}
#region Event Handlers
#endregion
}
}
SCREEN IN204060:
HTML
<template>
<field name="CurrentCategory.UsrDisplayOnPortal" append="#fsColumnB-ItemCategory"></field>
<qp-panel id="AddItemsFilterView"
caption="Add Items"
auto-repaint="true">
<qp-template id="fvICSAddItems_div0" name="1" qp-collapsible="">
<qp-fieldset id="ICSAddItemsView_lrICSAddItems_fs"
slot="A"
view.bind="AddItemsFilterView"
wg-container="AddItemsView_fvICSAddItems">
<field name="AddItemsOptions"></field>
<field name="UsrItemPriceClassID"></field>
<field name="UsrItemVendor"></field>
<field name="UsrItemClassID"></field>
</qp-fieldset>
</qp-template>
<footer>
<qp-button id="btnICSAddItemsOK" caption="Ok" dialog-result="OK"></qp-button>
<qp-button id="btnICSAddItemsCancel" caption="Cancel" dialog-result="Cancel"></qp-button>
</footer>
</qp-panel>
</template>
TS
import {
PXFieldState,
PXFieldOptions,
PXView,
placeAfterProperty,
viewInfo,
gridConfig,
columnConfig,
TextAlign,
PXActionState,
createSingle
} from "client-controls";
import { IN204060, CurrentCategory, Members } from "src/screens/IN/IN204060/IN204060";
export interface IN204060_CummingsCombined_generated extends IN204060 { }
export class IN204060_CummingsCombined_generated {
@viewInfo({ containerName: "Add Items" })
AddItemsFilterView = createSingle(ICSAddItems_Me);
}
export interface CurrentCategory_CummingsCombined_generated extends CurrentCategory { }
export class CurrentCategory_CummingsCombined_generated {
UsrDisplayOnPortal: PXFieldState<PXFieldOptions.CommitChanges>;
}
//have to do this just to get the buttons on the menu
//WHY DO I HAVE TO USE THIS TO GET THE BUTTONS TO SHOW
export interface Members_CummingsCombined_generated extends Members { }
@gridConfig({
topBarItems: {
Button1: {
index: 0, config: { commandName: "ICSAddItems", text: "Add Items" }
},
Button2: {
index: 1, config: { commandName: "ClearItems", text: "Clear Items" },
}
}
})
export class Members_CummingsCombined_generated {
@placeAfterProperty("InventoryItem__ItemClassID")
@columnConfig({
width: 120,
})
InventoryItem__PriceClassID: PXFieldState;
@placeAfterProperty("InventoryItem__PriceClassID")
@columnConfig({
width: 180,
})
UsrItemVendor: PXFieldState;
@placeAfterProperty("InventoryItem__ItemStatus")
@columnConfig({
width: 60,
textAlign: TextAlign.Center,
})
UsrDisplayOnline: PXFieldState<PXFieldOptions.Readonly>
@placeAfterProperty("UsrDisplayOnline")
@columnConfig({
width: 280,
})
UsrProductName: PXFieldState;
@placeAfterProperty("UsrProductName")
@columnConfig({
width: 280,
})
UsrMarketingDesc: PXFieldState;
}
export interface ICSAddItems_Me extends Members { }
export class ICSAddItems_Me extends PXView {
AddItemsOptions: PXFieldState<PXFieldOptions.CommitChanges>;
UsrItemPriceClassID: PXFieldState;
UsrItemVendor: PXFieldState;
UsrItemClassID: PXFieldState;
//doesn't add items to the menu???? See TopBar code above used to get the buttons to show
//ICSAddItems: PXActionState;
//ClearItems: PXActionState;
}
VS Code
using Cummings;
using PX.Common;
using PX.Data;
using PX.Data.BQL;
using PX.Data.BQL.Fluent;
using PX.Objects.AP;
using PX.Objects.CS;
using System.Collections;
using System.Linq;
using static PX.Objects.IN.INCategoryMaint;
namespace PX.Objects.IN
{
// Acuminator disable once PX1016 ExtensionDoesNotDeclareIsActiveMethod extension should be constantly active
public class INCategoryMaint_Extension : PXGraphExtension<PX.Objects.IN.INCategoryMaint>
{
public PXFilter<AddItemsFilter> AddItemsFilterView;
public PXSelect<INCategory> CategoryView;
#region Event Actions
public PXAction<SelectedNode> ClearItems;
[PXButton(DisplayOnMainToolbar = false)]
[PXUIField(DisplayName = "Clear All Items", Enabled = true)]
public void clearItems()
{
int count = 0;
string warningMessage = string.Empty;
INCategory cat = Base.CurrentCategory.Current;
count = SelectFrom<INItemCategory>
.Where<INItemCategory.categoryID.IsEqual<@P.AsInt>>
.View.Select(Base, cat.CategoryID).Count();
if (count == 0) return;
warningMessage = string.Format(ICSMessages.SalesCatItemsToDelete, count.ToString());
WebDialogResult result = AddItemsFilterView.Ask(ActionsMessages.Warning, warningMessage,
MessageButtons.OKCancel, MessageIcon.Warning, true);
//checking answer
if (result != WebDialogResult.OK) return;
INCategory iNCategory = Base.CurrentCategory.Current;
if (iNCategory != null && iNCategory.ParentID != null && iNCategory.CategoryID != null)
{
foreach (INItemCategory item in Base.Members.Select())
{
if (item.CategoryID == iNCategory.CategoryID)
{
Base.Members.Delete(item);
}
}
}
Base.Actions.PressSave();
}
public PXAction<SelectedNode> ICSAddItems;
[PXButton(DisplayOnMainToolbar = false)]
[PXUIField(DisplayName = "Add Items", Enabled = true)]
internal IEnumerable icsAddItems(PXAdapter adapter)
{
var filter = AddItemsFilterView.Current;
if (filter == null) return adapter.Get();
if (AddItemsFilterView.AskExt() == WebDialogResult.OK)
{
int? count = 0;
string warningMessage = string.Empty;
// place all members into the cache, so that PXCache.Insert could work correctly
var membersView = new PXView(Base, false, Base.Members.View.BqlSelect);
var members = membersView.SelectMulti();
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddByVendorItems)
{
count = SelectFrom<ICSItemVendorView>
.InnerJoin<InventoryItem>
.On<InventoryItem.inventoryID.IsEqual<ICSItemVendorView.inventoryID>>
.Where<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.unknown>
.And<InventoryItem.isTemplate.IsEqual<False>
.And<ICSItemVendorView.usrItemVendor.IsEqual<@P.AsInt>>>>
.View.Select(Base, filter.UsrItemVendor).Count();
if (count != null && count == 0)
{
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, ICSMessages.NoItemsFound,
MessageButtons.OK, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.OK)
{
return adapter.Get();
}
}
else
{
warningMessage = string.Format(ICSMessages.SalesCatItemsToAdd, count.ToString());
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, warningMessage,
MessageButtons.YesNo, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.No)
{
return adapter.Get();
}
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddByItemPriceClass)
{
count = SelectFrom<InventoryItem>
.Where<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.unknown>
.And<InventoryItem.isTemplate.IsEqual<False>
.And<InventoryItem.priceClassID.IsEqual<@P.AsString>>>>
.View.Select(Base, filter.UsrItemPriceClassID).Count();
if (count != null && count == 0)
{
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, ICSMessages.NoItemsFound,
MessageButtons.OK, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.OK)
{
return adapter.Get();
}
}
else
{
warningMessage = string.Format(ICSMessages.SalesCatItemsToAdd, count.ToString());
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, warningMessage,
MessageButtons.YesNo, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.No)
{
return adapter.Get();
}
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddByItemClass)
{
count = SelectFrom<InventoryItem>
.Where<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.unknown>
.And<InventoryItem.isTemplate.IsEqual<False>
.And<InventoryItem.itemClassID.IsEqual<@P.AsInt>>>>
.View.Select(Base, filter.UsrItemClassID).Count();
if (count != null && count == 0)
{
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, ICSMessages.NoItemsFound,
MessageButtons.OK, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.OK)
{
return adapter.Get();
}
}
else
{
warningMessage = string.Format(ICSMessages.SalesCatItemsToAdd, count.ToString());
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, warningMessage,
MessageButtons.YesNo, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.No)
{
return adapter.Get();
}
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddAll)
{
count = SelectFrom<InventoryItem>
.Where<InventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.unknown>
.And<InventoryItem.isTemplate.IsEqual<False>>>
.View.Select(Base).Count();
if (count != null && count == 0)
{
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, ICSMessages.NoItemsFound,
MessageButtons.OK, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.OK)
{
return adapter.Get();
}
}
else
{
warningMessage = string.Format(ICSMessages.SalesCatItemsToAdd, count.ToString());
WebDialogResult result = Base.Members.Ask(ActionsMessages.Warning, warningMessage,
MessageButtons.YesNo, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.No)
{
return adapter.Get();
}
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddByVendorItems)
{
var selectItemsForAddingCmd = new
PXSelectReadonly2<InventoryItem,
InnerJoin<ICSItemVendorView, On<ICSItemVendorView.inventoryID, Equal<InventoryItem.inventoryID>>>,
Where<InventoryItem.itemStatus, NotEqual<InventoryItemStatus.unknown>,
And<InventoryItem.isTemplate, Equal<False>,
And<ICSItemVendorView.usrItemVendor, Equal<Required<ICSItemVendorView.usrItemVendor>>>>>>
(Base);
foreach (InventoryItem pxResult in selectItemsForAddingCmd.Select(AddItemsFilterView.Current.UsrItemVendor))
{
INItemCategory insertnode = (INItemCategory)Base.Members.Cache.CreateInstance();
insertnode.InventoryID = pxResult.InventoryID;
insertnode.CategorySelected = false;
var member = Base.Members.Insert(insertnode);
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddByItemPriceClass)
{
var selectItemsForAddingCmd = new
PXSelectReadonly<InventoryItem,
Where<
InventoryItem.itemStatus, NotEqual<InventoryItemStatus.unknown>,
And<InventoryItem.isTemplate, Equal<False>,
And<InventoryItem.priceClassID, Equal<Required<InventoryItem.priceClassID>>>>>>
(Base);
foreach (InventoryItem pxResult in selectItemsForAddingCmd.Select(AddItemsFilterView.Current.UsrItemPriceClassID))
{
INItemCategory insertnode = (INItemCategory)Base.Members.Cache.CreateInstance();
insertnode.InventoryID = pxResult.InventoryID;
insertnode.CategorySelected = false;
var member = Base.Members.Insert(insertnode);
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddByItemClass)
{
var selectItemsForAddingCmd = new
PXSelectReadonly<InventoryItem,
Where<
InventoryItem.itemStatus, NotEqual<InventoryItemStatus.unknown>,
And<InventoryItem.isTemplate, Equal<False>,
And<InventoryItem.itemClassID, Equal<Required<InventoryItem.itemClassID>>>>>>
(Base);
foreach (InventoryItem pxResult in selectItemsForAddingCmd.Select(AddItemsFilterView.Current.UsrItemClassID))
{
INItemCategory insertnode = (INItemCategory)Base.Members.Cache.CreateInstance();
insertnode.InventoryID = pxResult.InventoryID;
insertnode.CategorySelected = false;
var member = Base.Members.Insert(insertnode);
}
}
if (AddItemsFilterView.Current.AddItemsOptions == AddICSItemsTypesList.AddAll)
{
var selectItemsForAddingCmd = new
PXSelectReadonly<InventoryItem,
Where<
InventoryItem.itemStatus, NotEqual<InventoryItemStatus.unknown>,
And<InventoryItem.isTemplate, Equal<False>>>>
(Base);
foreach (InventoryItem pxResult in selectItemsForAddingCmd.Select())
{
INItemCategory insertnode = (INItemCategory)Base.Members.Cache.CreateInstance();
insertnode.InventoryID = pxResult.InventoryID;
insertnode.CategorySelected = false;
var member = Base.Members.Insert(insertnode);
}
}
}
Base.Actions.PressSave();
return adapter.Get();
}
#endregion
#region Event Handlers
protected virtual void INItemCategory_UsrMarketingDesc_FieldSelecting(PXCache cache, PXFieldSelectingEventArgs e)
{
var row = (INItemCategory)e.Row;
if (row != null)
{
InventoryItem inventory = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID.IsEqual<@P.AsInt>>
.View.Select(Base, row.InventoryID);
if (inventory != null)
{
CSAnswers answer = SelectFrom<CSAnswers>
.Where<CSAnswers.refNoteID.IsEqual<@P.AsGuid>
.And<CSAnswers.attributeID.IsEqual<@P.AsString>>>
.View.Select(Base, inventory.NoteID, "MARKETDESC");
if (answer != null)
{
e.ReturnValue = answer.Value;
}
}
}
}
protected virtual void INItemCategory_UsrProductName_FieldSelecting(PXCache cache, PXFieldSelectingEventArgs e)
{
var row = (INItemCategory)e.Row;
if (row != null)
{
InventoryItem inventory = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID.IsEqual<@P.AsInt>>
.View.Select(Base, row.InventoryID);
if (inventory != null)
{
CSAnswers answer = SelectFrom<CSAnswers>
.Where<CSAnswers.refNoteID.IsEqual<@P.AsGuid>
.And<CSAnswers.attributeID.IsEqual<@P.AsString>>>
.View.Select(Base, inventory.NoteID, "PRODUCTNAM");
if (answer != null)
{
e.ReturnValue = answer.Value;
}
}
}
}
protected virtual void INItemCategory_UsrDisplayOnline_FieldSelecting(PXCache cache, PXFieldSelectingEventArgs e)
{
var row = (INItemCategory)e.Row;
if (row != null)
{
InventoryItem inventory = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID.IsEqual<@P.AsInt>>
.View.Select(Base, row.InventoryID);
if (inventory != null)
{
CSAnswers answer = SelectFrom<CSAnswers>
.Where<CSAnswers.refNoteID.IsEqual<@P.AsGuid>
.And<CSAnswers.attributeID.IsEqual<@P.AsString>>>
.View.Select(Base, inventory.NoteID, "ONLINE");
if (answer != null)
{
if (answer.Value == "1" || answer.Value == "True")
{
e.ReturnValue = true;
}
else
{
e.ReturnValue = false;
}
}
}
}
}
protected virtual void INItemCategory_UsrItemVendor_FieldSelecting(PXCache cache, PXFieldSelectingEventArgs e)
{
var row = (INItemCategory)e.Row;
if (row != null)
{
ICSItemVendorView item = SelectFrom<ICSItemVendorView>
.Where<ICSItemVendorView.inventoryID.IsEqual<@P.AsInt>>
.View.Select(Base, row.InventoryID);
if (item != null)
{
e.ReturnValue = item.AcctName;
}
}
}
protected virtual void SelectedNode_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (SelectedNode)e.Row;
Base.Actions["AddItemsbyClass"].SetVisible(false);
}
protected virtual void AddItemsFilter_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
var row = (AddItemsFilter)e.Row;
if (row == null) return;
PXUIFieldAttribute.SetVisible< AddItemsFilter.usrItemVendor>(cache, null, false);
PXUIFieldAttribute.SetVisible<AddItemsFilter.usrItemPriceClassID>(cache, null, false);
PXUIFieldAttribute.SetVisible<AddItemsFilter.usrItemClassID>(cache, null, false);
if (row.AddItemsOptions == "V")
{
PXUIFieldAttribute.SetVisible<AddItemsFilter.usrItemVendor>(cache, null, true);
}
if (row.AddItemsOptions == "P")
{
PXUIFieldAttribute.SetVisible<AddItemsFilter.usrItemPriceClassID>(cache, null, true);
}
if (row.AddItemsOptions == "C")
{
PXUIFieldAttribute.SetVisible<AddItemsFilter.usrItemClassID>(cache, null, true);
}
}
protected virtual void INCategory_UsrDisplayOnPortal_FieldUpdating(PXCache cache, PXFieldUpdatingEventArgs e)
{
var row = (INCategory)e.Row;
if (row == null) return;
if (row.ParentID == 0)
{
WebDialogResult result = Base.CurrentCategory.Ask(ActionsMessages.Warning, ICSMessages.MarkUnmarkAll,
MessageButtons.YesNo, MessageIcon.Warning, false);
//checking answer
if (result == WebDialogResult.Yes)
{
foreach (INCategory category in SelectFrom<INCategory>
.Where<INCategory.parentID.IsEqual<@P.AsInt>>
.View.Select(Base, row.CategoryID))
{
CummingsINCategoryExt ext = category.GetExtension<CummingsINCategoryExt>();
if (ext == null) return;
ext.UsrDisplayOnPortal = (bool)e.NewValue;
CategoryView.Update(category);
}
}
}
}
protected virtual void INCategory_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
var row = (INCategory)e.Row;
ICSAddItems.SetEnabled(false);
if (row == null) return;
if (Base.Folders.Current != null)
{
ICSAddItems.SetEnabled(Base.Folders.Current.ParentID != null);
}
int? count = 0;
count = Base.Members.Select().Count();
if (count == 0)
{
ClearItems.SetEnabled(false);
}
PXCache pXCache = Base.Caches<INCategory>();
INCategory category = SelectFrom<INCategory>
.Where<INCategory.parentID.IsEqual<@P.AsInt>>
.View.Select(Base, row.CategoryID);
if (category != null)
{
CummingsINCategoryExt ext = category.GetExtension<CummingsINCategoryExt>();
if (ext != null)
{
if (row.Description == "Company")
{
PXUIFieldAttribute.SetEnabled<CummingsINCategoryExt.usrDisplayOnPortal>(pXCache, null, false);
}
else
{
PXUIFieldAttribute.SetEnabled<CummingsINCategoryExt.usrDisplayOnPortal>(pXCache, null, true);
}
}
}
}
protected virtual void INItemCategory_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
var row = (INItemCategory)e.Row;
PXUIFieldAttribute.SetEnabled<CummingsINItemCategoryExt.usrDisplayOnline>(cache, null, false);
ClearItems.SetEnabled(false);
if (row == null) return;
int count = 0;
string warningMessage = string.Empty;
INCategory cat = Base.CurrentCategory.Current;
if (cat != null)
{
count = SelectFrom<INItemCategory>
.Where<INItemCategory.categoryID.IsEqual<@P.AsInt>>
.View.Select(Base, cat.CategoryID).Count();
if (count > 0)
{
ClearItems.SetEnabled(true);
}
}
}
#endregion
// Acuminator disable once PX1069 MissingMandatoryDacFields [Justification]
[PXCacheName("Add Items Filter")]
public class AddItemsFilter : PXBqlTable, IBqlTable
{
#region AddItemsOptions
[PXString(1, IsFixed = true)]
[PXUIField(DisplayName = "Add By")]
[AddICSItemsTypesList.List()]
[PXDefault(AddICSItemsTypesList.AddByVendorItems, PersistingCheck = PXPersistingCheck.Nothing)]
public virtual string AddItemsOptions { get; set; }
public abstract class addItemsOptions : BqlString.Field<addItemsOptions> { }
#endregion
#region UsrItemVendor
[PXInt]
[PXUIField(DisplayName = "Item Vendor", Visibility = PXUIVisibility.SelectorVisible)]
[PXSelector(typeof(Search<Vendor.bAccountID>),
typeof(Vendor.acctCD),
typeof(Vendor.acctName),
SubstituteKey = typeof(Vendor.acctCD),
DescriptionField = typeof(Vendor.acctCD))]
public int? UsrItemVendor { get; set; }
public abstract class usrItemVendor : PX.Data.BQL.BqlInt.Field<usrItemVendor> { }
#endregion
#region UsrItemPriceClassID
[PXDBString(10, IsUnicode = true)]
[PXSelector(typeof(INPriceClass.priceClassID), DescriptionField = typeof(INPriceClass.description))]
[PXUIField(DisplayName = "Price Class", Visibility = PXUIVisibility.Visible)]
[PXDefault(SourceField = typeof(INItemClass.priceClassID), PersistingCheck = PXPersistingCheck.Nothing, CacheGlobal = true)]
public string UsrItemPriceClassID { get; set; }
public abstract class usrItemPriceClassID : BqlString.Field<usrItemPriceClassID> { }
#endregion
#region UsrItemClassID
[PXInt]
[PXUIField(DisplayName = "Item Class", Visibility = PXUIVisibility.SelectorVisible)]
[PXDimensionSelector(INItemClass.Dimension, typeof(INItemClass.itemClassID), typeof(INItemClass.itemClassCD), DescriptionField = typeof(INItemClass.descr), ValidComboRequired = true)]
public int? UsrItemClassID { get; set; }
public abstract class usrItemClassID : BqlInt.Field<usrItemClassID> { }
#endregion
}
public static class AddICSItemsTypesList
{ public class ListAttribute : PXStringListAttribute
{
public ListAttribute() : base(
new[]
{
Pair(AddByVendorItems, "By Vendor Item"),
Pair(AddByItemPriceClass, "By Price Class"),
Pair(AddByItemClass, "By Class"),
Pair(AddAll, "All Items"),
})
{ }
}
public const string AddByVendorItems = "V";
public const string AddByItemPriceClass = "P";
public const string AddByItemClass = "C";
public const string AddAll = "A";
}
}
}ANY HELP PLEASE!!! :-)