Skip to main content
Question

The multi-part identifier Error

  • February 26, 2026
  • 0 replies
  • 33 views

Jhon Reeve Penuela
Freshman I
Forum|alt.badge.img

Hi Everyone.

Currently I encounter error while. executing my custom button name “Create TP Number”.

 

and here my sample code.

public static void CreateTPNumber(PMQuoteMaint pMQuoteMaint)
{
using (var ts = new PXTransactionScope())
{
PXResultset<CROpportunityProducts> pXResultsetCROpportunityProducts = pMQuoteMaint.Products.Select();

PXResultset<PMQuoteTask> pXResultsetPMQuoteTask = pMQuoteMaint.Tasks.Select();

List<CROpportunityProducts> cROpportunityProductsDuplicate = pXResultsetCROpportunityProducts
.RowCast<CROpportunityProducts>()
.GroupBy(x => new { x.InventoryID, x.TaskCD }).Where(g => g.Count() > 1)
.SelectMany(g => g)
.ToList();

if (cROpportunityProductsDuplicate.Count() > 0)
{
foreach (CROpportunityProducts pMQuoteTask in cROpportunityProductsDuplicate)
{

InventoryItem pXResultInventoryItem = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID
.IsEqual<@P.AsInt>>.View.Select(pMQuoteMaint, pMQuoteTask.InventoryID).FirstOrDefault();

throw new PXException(Messages.TravelPackageErrorMessageDuplicate(pXResultInventoryItem.InventoryCD));
}
}

if (pXResultsetCROpportunityProducts.Count <= 0 && pXResultsetPMQuoteTask.Count <= 0) return;

foreach (CROpportunityProducts cROpportunityProduct in pXResultsetCROpportunityProducts)
{
CROpportunityProductsExtension cROpportunityProductsExtensions =
PXCache<CROpportunityProducts>.GetExtension<CROpportunityProductsExtension>(cROpportunityProduct);

if (cROpportunityProductsExtensions == null) return;

string status = cROpportunityProductsExtensions.UsrStatus ?? String.Empty;

if (status == Messages.openStatus
&& cROpportunityProduct.TaskCD == null)
{
InventoryItem inventoryItem = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID
.IsEqual<@P.AsInt>>.View.Select(pMQuoteMaint, cROpportunityProduct.InventoryID).FirstOrDefault();

if (inventoryItem == null) return;

for (int i = 0; i < cROpportunityProduct.Qty; i++)
{
PMQuoteTask pMQuoteTaskNew = new PMQuoteTask();

pMQuoteTaskNew.Description = inventoryItem.InventoryCD;

pMQuoteMaint.Tasks.Update(pMQuoteTaskNew);

pMQuoteMaint.Actions.PressSave();
}

pMQuoteMaint.Products.Delete(cROpportunityProduct);

foreach (PMQuoteTask pMQuoteTask in pMQuoteMaint.Tasks.Select().RowCast<PMQuoteTask>()
.Where(x => x.Description == inventoryItem.InventoryCD))
{
bool isTaskCD = pXResultsetCROpportunityProducts
.RowCast<CROpportunityProducts>().Where(x => x.TaskCD == pMQuoteTask.TaskCD).Any();

if (!isTaskCD)
{
CROpportunityProducts cROpportunityProductsNew = new CROpportunityProducts();

CROpportunityProductsExtension cROpportunityProductsExtension = PXCache<CROpportunityProducts>
.GetExtension<CROpportunityProductsExtension>(cROpportunityProduct);

CROpportunityProductsExtension cROpportunityProductsExtensionNew = PXCache<CROpportunityProducts>
.GetExtension<CROpportunityProductsExtension>(cROpportunityProductsNew);

cROpportunityProductsNew.InventoryID = inventoryItem.InventoryID;

cROpportunityProductsNew.Qty = 1;

cROpportunityProductsExtensionNew.UsrSuggestedMinimumBid = cROpportunityProductsExtension.UsrSuggestedMinimumBid;

cROpportunityProductsNew.TaskCD = pMQuoteTask.TaskCD;

pMQuoteMaint.Products.Update(cROpportunityProductsNew);
}
}
}
}

pMQuoteMaint.Actions.PressSave();

ts.Complete();
}
}
I hope you can help me. Thanks.