我们在SOOrderEntry屏幕上有一个自定义复选框,我们想用它来在有人输入行项目后更改销售订单的税务管辖区。这样做的原因是,如果客户不在州内但将亲自在商店取货,他们将需要在商店位置支付地方税,而不是他们的州税。如果订单已发货,则税费将是客户所在地的税款。
我们遇到的问题是,当我们在输入行项目之前设置税区 ID 时,它会正常工作并创建正确的税费。如果用户更改复选框值,则税款仍将是原始纳税区的税款,而不是当前反映在屏幕上的税款。
我们在SOOrderEntry图上发现了一些方法,这些方法似乎是用于重新计算税款的,但它们用于Avalara,如果调用时是一个例外,因为我们没有在这个系统中使用Avalara,只有Acumatica的内部税收引擎。
有没有办法让 Acumatica 在订单上的税区发生变化时重新计算税款?
任何帮助将不胜感激,我们在帮助文档或试错方面没有取得太大进展。
它没有太多代码,但这是我们的几行:
// Customer Pickup, update sales tax on the order
Location branchLoc = PXSelectJoin<Location,
InnerJoin<Branch, On<Location.bAccountID, Equal<Branch.bAccountID>>>,
Where<Branch.branchID, Equal<Required<SOOrder.branchID>>>>
.Select(Base, order.BranchID);
cache.SetValue<SOOrder.overrideTaxZone>(order, true);
cache.SetValue<SOOrder.taxZoneID>(order, branchLoc.VTaxZoneID);
TaxAttrbibute 将 ZoneUpdated 事件处理程序添加到销售订单的TaxZoneID_FieldUpdated事件中。 若要触发此事件,应使用
cache.SetValueExt<SOOrder.taxZoneID>(order, branchLoc.VTaxZoneID);
与 SetValue 方法不同,SetValueExt 方法在设置字段值时引发事件。