【发布时间】:2022-12-03 03:26:14
【问题描述】:
能帮帮我吗,我正在适配修改税区代码,但是税种没有更新,我漏掉了什么或者改税区的时候怎么修改相关的税种?
这是我的代码,通过我正在做的这个事件。
protected void POLine_SiteID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
var row = (POLine)e.Row;
var head = Base.Document.Current;
if (head == null) return;
if (row != null && row.OrderType == POOrderType.RegularOrder)
{
POLine line = PXSelect<POLine, Where<POLine.orderType,
Equal<Required<POLine.orderType>>,
And<POLine.orderNbr, Equal<Required<POLine.orderNbr>>>>>.Select(Base, row.OrderType, row.OrderNbr);
bool? xchange = false;
if (line != null)
{
INSite site = PXSelect<INSite, Where<INSite.siteID,
Equal<Required<INSite.siteID>>>>.Select(Base, line.SiteID);
if (site != null && line.SiteID == site.SiteID)
{
var ext = site.GetExtension<INSiteExt>();
if (ext != null)
{
head.TaxZoneID = ext.UsrTaxZone;
xchange = true;
}
}
if (xchange == true)
{
foreach (PEMclTaxZone zone in PXSelect<PEMclTaxZone,
Where<PEMclTaxZone.taxZoneID, Equal<Required<PEMclTaxZone.taxZoneID>>,
And<PEMclTaxZone.taxCategoryID, Equal<Required<PEMclTaxZone.taxCategoryID>>>>>.Select(Base, head.TaxZoneID, line.TaxCategoryID))
{
if (zone != null)
{
foreach (POTaxTran potax in PXSelect<POTaxTran,
Where<POTaxTran.orderType, Equal<Required<POTaxTran.orderType>>,
And<POTaxTran.orderNbr, Equal<Required<POTaxTran.orderNbr>>>>>.Select(Base, head.OrderType, head.OrderNbr))
{
if (potax != null)
{
potax.TaxID = zone.Taxid;
potax.TaxZoneID = zone.TaxZoneID;
Base.Taxes.Cache.Update(potax);
}
}
}
}
}
}
}
}
当我手动选择税收区域时,两个元素在税收网格中注册,如果我按事件执行它只更新最后一个,我按照代码跟踪它并且我看到如果它更新,但是,它不会反映在税网。
在这里,我用图像展示证据。 此步骤与不起作用的事件有关。
第2步:
第 3 步:
手动选择税区,从同一选项卡中选择。 步骤1:
第2步:
这就是它应该进行的方式,这就是我希望活动要做的事情。
请告诉我我在活动中失败了什么,我希望我已经清楚了,谢谢。
【问题讨论】:
-
我认为文档的大部分税收逻辑都在税收延期中。看看您是否可以找到一个采购订单并扩展它并在那里进行更改。
-
你不会有一个小例子,它会对我有很大帮助,感谢你回答我的问题。
标签: acumatica acumatica-kb acumos