acumatica - 如何在 SOLine_RowUpdated 事件中跳过基本逻辑
问题描述
我在 SOLine_RowUpdated 事件中有一个自定义代码,我的代码工作正常,这就是我所需要的,但是当我最终在 SOLine.curyUnitPrice 字段上获得预期值时,基本事件或基本逻辑会更改该值。
我想知道如何跳过基本事件或基本逻辑,以便我的值不会改变。
这是我的 SOOrderEntry_Extension 图:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using PX.Common;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.AR;
using PX.Objects.CA;
using PX.Objects.CM;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.DR;
using PX.Objects.EP;
using PX.Objects.GL;
using PX.Objects.IN;
using PX.Objects.PM;
using PX.Objects.PO;
using PX.Objects.TX;
using POLine = PX.Objects.PO.POLine;
using POOrder = PX.Objects.PO.POOrder;
using System.Threading.Tasks;
using PX.CarrierService;
using CRLocation = PX.Objects.CR.Standalone.Location;
using PX.Objects.AR.CCPaymentProcessing;
using PX.Objects.AR.CCPaymentProcessing.Common;
using PX.Objects.AR.CCPaymentProcessing.Helpers;
using PX.Objects.AR.CCPaymentProcessing.Interfaces;
using ARRegisterAlias = PX.Objects.AR.Standalone.ARRegisterAlias;
using PX.Objects.AR.MigrationMode;
using PX.Objects.Common;
using PX.Objects.Common.Discount;
using PX.Objects.Common.Extensions;
using PX.Objects.IN.Overrides.INDocumentRelease;
using PX.CS.Contracts.Interfaces;
using Message = PX.CarrierService.Message;
using PX.TaxProvider;
using PX.Data.DependencyInjection;
using PX.LicensePolicy;
using PX.Objects.Extensions.PaymentTransaction;
using PX.Objects.SO.GraphExtensions.CarrierRates;
using PX.Objects.Common.Bql;
using PX.Objects;
using PX.Objects.SO;
namespace PX.Objects.SO
{
public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
{
#region Event Handlers
protected void SOLine_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e)
{
SOLine row = (SOLine)e.Row;
if (row == null)
{
return;
}
if (row.SubItemID == null)
{
row.CuryUnitPrice = (decimal?) 0.01;
return;
}
if (row.SubItemID != null)
{
if (row.SiteID == null)
{
row.CuryUnitPrice = (decimal?) 0.01;
return;
}
if (row.OrderQty > 0)
{
return;
}
else
{
string cadena = "MAIN";
Location location = PXSelect<Location,
Where<Location.bAccountID, Equal<Required<Location.bAccountID>>,
And<Location.locationCD, Equal<Required<Location.locationCD>>>
>>.Select(Base, row.CustomerID, cadena);
ARSalesPrice salesprice = PXSelect<ARSalesPrice,
Where<ARSalesPrice.custPriceClassID, Equal<Required<ARSalesPrice.custPriceClassID>>,
And<ARSalesPrice.inventoryID, Equal<Required<ARSalesPrice.inventoryID>>,
And<ARSalesPriceExt.usrSubItemID, Equal<Required<ARSalesPriceExt.usrSubItemID>>,
And<ARSalesPrice.breakQty, LessEqual<Required<ARSalesPrice.breakQty>>
>
>
>
>,
OrderBy<Desc<ARSalesPrice.breakQty>>
>.Select(Base, location.CPriceClassID, row.InventoryID, row.SubItemID, row.Qty);
if(salesprice == null)
{
ARSalesPrice salesprice2 = PXSelect<ARSalesPrice,
Where<ARSalesPrice.custPriceClassID, Equal<Required<ARSalesPrice.custPriceClassID>>,
And<ARSalesPrice.inventoryID, Equal<Required<ARSalesPrice.inventoryID>>,
And<ARSalesPriceExt.usrSubItemID, Equal<Required<ARSalesPriceExt.usrSubItemID>>
>
>
>,
OrderBy<Asc<ARSalesPrice.breakQty>>
>.Select(Base, location.CPriceClassID, row.InventoryID, row.SubItemID);
if (salesprice2 != null)
{
cache.SetValue<SOLine.curyUnitPrice>(row, salesprice2.SalesPrice);
}
else
{
row.CuryUnitPrice = (decimal?) 0.01;
}
}
else
{
cache.SetValue<SOLine.curyUnitPrice>(row, salesprice.SalesPrice);
}
}
}
}
#endregion
}
}
你能帮我解决这个问题吗?
解决方案
您添加了一个事件而不是覆盖它。您需要在覆盖基本事件时指定适当的委托。然后您可以调用该基本事件,或者在您的情况下,不是。
using PX.Data;
namespace PX.Objects.SO
{
public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
{
#region Event Handlers
protected void SOLine_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e, PXRowUpdated baseEvent)
{
baseEvent.Invoke(cache, e); // <- comment out to prevent calling the base event
// Insert my custom code here
}
#endregion
}
}
推荐阅读
- powershell - 带有 nrpe 的 powershell 参数
- powershell - 通过 Azure Active Directory 应用程序连接证书时如何启用“New-GlobalAddressList”命令?
- c - C99 嵌套数组未定义行为
- google-sheets - Importing landing page traffic data from Google Analytics to Google Sheets
- c++ - c++程序中map结构的内存使用情况
- dependency-injection - 如何在.net核心类库中注册服务
- php - 在 Laravel 中验证后保存选定的选项
- c - 在 C 编程中从多个文件中搜索字符串的程序
- javascript - 基于嵌套json对象的primeng表排序过滤
- mongodb - 如何从猫鼬中的文档中获取 Number Long 值