照例,平安夜是要晚睡的。小家伙为了迎接圣诞老人的到来,布置了“迎宾台”。今年没有摆电池,换上了核桃,因为他说估计驯鹿在别人家胡萝卜和苹果都吃厌, 想吃点咸的。
我晚睡的原因是要破解一个困扰已久的问题。非Approval Routing类的Tranx如何从Rejected状态跳出。
首先,我们解释下什么是“非Approval Routing类的Tranx”。
在NetSuite中,Accounting Preference-Approval Routing下规定的几类Tranx是所谓的“Approval Routing”类的。
其特点是,一旦Check On后,会在UI上多出两个字段,Approval Status 和 Next Approver。其中Approval Status中有三个值:Pending Approval,Approved,Rejected,通过工作流改变这个Approval Status字段的值就可以进而影响Order Status的状态。
对于Approval Routing类的Tranx,你可以自由的通过工作流从Rejected跳转到Pending Approval状态。实现Resubmit,就像你在PO中做的那样。
那么问题来了,“非Approval Routing类的Tranx”怎么办?例如,Transfer Order,Sales Order。
你会发现在这类Tranx上,是没有Approval Status字段,而只有Order Status字段的。并且是没有Rejected状态的。
这就意味着,你没有办法通过工作流的Set Field Value来控制Rejected状态。如果硬来,就是系统报错。
想把Order Status设为Rejected(Cancelled)时,报错:
想把Order Status由Rejected改为Pending Approval时,报错:
这就带来一个问题,一旦这类Tranx被Reject后,是没有办法通过工作流来做Resubmit的。只能Make Copy产生一个新的,再次提交审批。这不合理。
尝试了很久,终于找到了一个诡异的方法Hack了从Rejected状态跳回到Pending Approval的问题。
很蠢但有效。
问题解决!圣诞快乐!
如果有任何关于NetSuite的问题,欢迎来谈。邮箱:service@truston.group