我们在SOOrderEntry屏幕上有一个自定义复选框,我们希望在有人输入订单项后使用它来更改销售订单的税收管辖范围。这样做的原因是,如果客户不在州内但要亲自到商店取货,他们将需要在商店所在地缴纳地方税,而不是州税。如果订单已发货,则税款将是客户所在地的税款。
我们遇到的问题是,当我们在输入订单项之前设置税区ID时,它可以正常工作并创建正确的税款。如果用户更改复选框的值,则税款仍将是原始税区中的税款,而不是当前在屏幕上反映的税款。
我们在SOOrderEntry图上发现了一些似乎用于重新计算税收的方法,但对于Avalara却使用了这些方法,因此,如果调用它们,则会出现异常,因为我们在此系统中仅使用Acumatica的内部税收引擎而不使用Avalara。
当税区的订单发生变化时,是否有办法让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);
答案 0 :(得分:1)
TaxAttrbibute将ZoneUpdated事件处理程序添加到销售订单的TaxZoneID_FieldUpdated事件中。 要触发此事件,您应该使用
cache.SetValueExt<SOOrder.taxZoneID>(order, branchLoc.VTaxZoneID);
与SetValue方法不同,设置字段值时,SetValueExt方法引发事件。