使用 Acumatica 以编程方式重新计算税收
Programmatically recalculate taxes with Acumatica
我们在 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 方法在设置字段值时引发事件。
我们在 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 方法在设置字段值时引发事件。