0

如果满足我的条件并引发自定义错误,我已经覆盖 Invoices screen Release 操作以限制 Invoice 释放,但即使引发错误并且在关闭该错误后,Invoice 仍然会被释放,但我想在错误时限制 Invoice 释放被抛出。

    [PXOverride]
    public virtual IEnumerable Release(PXAdapter adapter)
    {            
        if (Base.Document.Current != null)
        {
            var paymentSetup = PaySetup.SelectSingle(Base.Document.Current.PaymentMethodID);
            var paymentSettings = PaySettingDetails.SelectSingle(Base.Document.Current.PaymentMethodID);

            if (paymentSettings != null && paymentSetup != null && paymentSetup.IsActive == true)
            {
                if (this.PayCurrentInvoice.Current != null && this.PayCurrentInvoice.Current.PayStatus.ToUpper() != KNPIConstants.PAID)
                {
                    throw new PXException(KNPIMessages.NotPaid);
                }
            }                  
            else
            {
                return Base.release.Press(adapter);
            }
        }
        return null;
    }

如果抛出错误,则不应释放发票,但即使抛出错误,在关闭该错误后仍会释放发票。

4

1 回答 1

0

你的覆盖是错误的!

 public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
 [PXOverride]
 public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
  {
      var paymentSetup = PaySetup.SelectSingle(Base.Document.Current.PaymentMethodID);
      var paymentSettings = PaySettingDetails.SelectSingle(Base.Document.Current.PaymentMethodID);

      if (paymentSettings != null && paymentSetup != null && paymentSetup.IsActive == true)
      {
          if (this.PayCurrentInvoice.Current != null && this.PayCurrentInvoice.Current.PayStatus.ToUpper() != KNPIConstants.PAID)
          {
              throw new PXException(KNPIMessages.NotPaid);
          }
      }
      return baseMethod(adapter);
  }
于 2019-07-19T14:26:27.537 回答