У меня есть переопределение графика для счетов-фактур
public class ARInvoiceEntry_Extension : PXGraphExtension<ARInvoiceEntry>
и в одном из обработчиков событий я обновляю TaxZoneID
, который отлично работает. Однако налоги не обновляются и не пересчитываются. Я пробовал подход, упомянутый здесь
cache.SetValueExt<SOOrder.taxZoneID>(order, branchLoc.VTaxZoneID);
, но это не работает для меня. Я пробовал это в событиях _FieldUpdating
, _FieldUpdated
и даже ARInvoice_RowPersisting(PXCache cache, PXRowPersistingEventArgs e, PXRowPersisting InvokeBaseHandler)
. Есть идеи, почему это не работает? TaxZone и ставки уже находятся в базе данных (мы не используем Avatax).
--- редактировать 1 ---
Вот код, в котором обновляется TaxZoneID
namespace PX.Objects.AR
{
public class ARInvoiceEntry_Extension : PXGraphExtension<ARInvoiceEntry>
{
#region Event Handlers
protected void ARShippingAddress_PostalCode_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e, PXFieldUpdated del)
{
// PXTrace.WriteInformation("ARShippingAddress_PostalCode_FieldUpdated");
ARShippingAddress row = e.Row as ARShippingAddress;
if (row != null) {
if (DoChangeTaxZone(row)) {
var invoice = Base.Document.Current;
if (invoice != null) {
invoice.TaxZoneID = GetTaxZoneId(row);
sender.SetValueExt<ARInvoice.taxZoneID>(invoice, invoice.TaxZoneID);
}
}
}
if (del != null)
{
del(sender, e);
}
}
#endregion
private bool DoChangeTaxZone(ARShippingAddress row)
{
// logic ...
return true;
}
private string GetTaxZoneId(ARShippingAddress row)
{
// logic ...
return "TAX-ZONE-ID";
}
}
}