如何通过 Acumatica 中的 Import Scenario 引入同时归类为 Customer 和 Vendor 的业务帐户?
问问题
257 次
2 回答
4
开箱即用的Extend To Vendor
操作不能在导入方案中使用,因为它会重定向到带有预填充数据的供应商屏幕,并且用户必须手动保存供应商。
在下面的代码片段中,我们正在创建一个新的隐藏操作,它调用基本的将客户扩展到供应商操作并保留供应商数据,而不是重定向到供应商屏幕。
using System;
using System.Collections;
using PX.Data;
using PX.Objects.AR;
namespace PXExtendCustomerToVendorExtPkg
{
public class CustomerMaintPXExt : PXGraphExtension<CustomerMaint>
{
public PXAction<Customer> extendToVendorPXExt;
[PXUIField(DisplayName = "Extend To Vendor Ext",
MapEnableRights = PXCacheRights.Select,
MapViewRights = PXCacheRights.Select,
Visible = false)]
[PXButton]
public virtual IEnumerable ExtendToVendorPXExt(PXAdapter adapter)
{
try
{
if (Base.extendToVendor.GetEnabled())
Base.extendToVendor.Press();
}
catch (Exception ex)
{
if (ex is PXRedirectRequiredException)
{
PXRedirectRequiredException rdEx = (PXRedirectRequiredException)ex;
rdEx.Graph.Actions.PressSave();
}
else
throw ex;
}
return adapter.Get();
}
}
}
发布自定义后,修改Import Scenario
( Customers
SM206025) 并Extend To Vendor Ext
在保存操作后添加新操作。
于 2017-11-07T01:01:11.493 回答
1
DChhapgar 非常好的解决方案。以下是在 Acumatica 21R1 中工作的修改版本,因为 Acumatica 进行了一些修改:各自ExtendToCustomer
和ExtendToVendor
PXGraphExtension(s) 是在以下条件下创建的:
App_Data\CodeRepository\PX.Objects\Extensions\ExtendBAccount
因此有必要先得到扩展var graphExt = Base.GetExtension<ExtendToCustomer>();
。下面的代码用于从 BusinessAccount 扩展到客户,这也在保存之前对客户进行了一些更改(在代码中注释)。扩展到供应商的概念是相同的。
using PX.Data;
using PX.Objects.AR;
using System;
using System.Collections;
using static PX.Objects.CR.BusinessAccountMaint;
namespace PX.Objects.CR
{
public class IBBusinessAccountMaintExt : PXGraphExtension<BusinessAccountMaint>
{
public PXAction<BAccount> extendToCustomerPXExt;
[PXUIField(DisplayName = "Extend As Customer Ext", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select, Visible = false)]
[PXButton]
public virtual IEnumerable ExtendToCustomerPXExt(PXAdapter adapter)
{
try {
var graphExt = Base.GetExtension<ExtendToCustomer>();
if (graphExt.extendToCustomer.GetEnabled()) { graphExt.extendToCustomer.Press(); }
} catch (Exception ex) {
if (ex is PXRedirectRequiredException) {
PXRedirectRequiredException rdEx = (PXRedirectRequiredException)ex;
// If there is a need to make changes in new Graph
CustomerMaint editCustomer = (CustomerMaint)rdEx.Graph;
//editCustomer.CurrentCustomer.SetValueExt<Customer.paymentsByLinesAllowed>(editCustomer.BAccount.Current, true);
rdEx.Graph.Actions.PressSave();
} else
throw ex;
}
return adapter.Get();
}
}
}
于 2021-08-26T18:29:07.253 回答