2017-10-13 108 views
0

我在SO发票屏幕(SO303000)上创建了一个自定义复选框字段,即使在发票已发布并且付款已全额付款后,也需要更新该字段。SO发票发布后关闭更新值并关闭

但是现在我无法像原来一样,一旦发票被发布并全额付款就会被禁用。

我试图用自动化步骤来做,但它不工作。我在“字段”选项卡上添加了自定义字段,以使其在SO发票的已关闭步骤上启用。

请建议。

回答

1

要启用的SO发票顶层形式和交易网自定义字段发票被释放和/或关闭后,你应该SOInvoiceEntry创建扩展和订阅ARInvoice_RowSelected和ARTran_RowSelected事件下面的示例如下:

public class SOInvoiceEntryExt : PXGraphExtension<SOInvoiceEntry> 
{ 
    private bool IsDisabled(ARInvoice doc) 
    { 
     return doc.Released == true 
      || doc.Voided == true 
      || doc.DocType == ARDocType.SmallCreditWO 
      || doc.PendingPPD == true 
      || doc.DocType == ARDocType.FinCharge 
      && !Base.IsProcessingMode 
      && Base.Document.Cache.GetStatus(doc) == PXEntryStatus.Inserted; 
    } 

    public void ARInvoice_RowSelected(PXCache sender, PXRowSelectedEventArgs e) 
    { 
     ARInvoice doc = e.Row as ARInvoice; 
     if (doc == null) return; 

     if (IsDisabled(doc)) 
     { 
      PXUIFieldAttribute.SetEnabled<ARInvoiceExt.usrCustomTextField>(
       sender, doc, true); 
      Base.Transactions.Cache.AllowUpdate = true; 
     } 
    } 

    public void ARTran_RowSelected(PXCache sender, PXRowSelectedEventArgs e) 
    { 
     var doc = Base.Document.Current; 
     ARTran row = e.Row as ARTran; 

     if (row != null && doc != null && IsDisabled(doc)) 
     { 
      PXUIFieldAttribute.SetEnabled(sender, row, false); 
      PXUIFieldAttribute.SetEnabled<ARTranExt.usrCustomTextField>(
       sender, row, true); 
     } 
    } 
} 

此外,还需要启用自定义字段添加到顶层的形式在关闭自动化步: enter image description here

这就是发票屏幕应该如何w ^扫你申请后,上述变化:

enter image description here

enter image description here

+0

谢谢鲁斯兰。我已经添加了自动化步骤,但没有添加扩展代码。谢谢你的帮助。 – Krunal