Good Evening,
After building our complete dataset through a variety of other methods we finally call the TransOrderReceiptSvc.Custom Update method.
When running this we get an error stating: "Function not allowed"
at Erp.Services.BO.TransOrderReceiptSvc.TFShipDtlBeforeUpdate() in c:_Releases\ERP\UD10.1.400.16\Source\Server\Services\BO\TransOrderReceipt\TransOrderReceipt.cs:line 2503
at Ice.Services.Trace.TablesetProfilingCollector.DoRowEventTrace(String tableName, String methodName, Int32 rowCount, Action action) in c:_Releases\ICE\3.1.400.16\source\Framework\Epicor.Ice\Services\TablesetProfilingCollector.cs:line 146
at Ice.TablesetBound3.UpdateRow(IceDataContext dataContext, Int32 tableNum, IIceTable table, IceRow updatedRow, IceRow originalRow, TablesetProfilingCollector parentTraceCollector) in c:\_Releases\ICE\3.1.400.16\source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 1155 at Ice.TablesetBound
3.WriteTable(IceDataContext dataContext, Int32 tableIndex, IIceTable table, TablesetProfilingCollector parentTraceCollector) in c:_Releases\ICE\3.1.400.16\source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 893
at Ice.TablesetBound3.InnerUpdate(IceDataContext dataContext, TFullTableset tableset) in c:\_Releases\ICE\3.1.400.16\source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 796 at Erp.Services.BO.TransOrderReceiptSvc.Update(TransOrderReceiptTableset& ds) in c:\_Releases\ERP\UD10.1.400.16\Source\Server\Services\BO\TransOrderReceipt\TransOrderReceipt.Designer.cs:line 1534 at Erp.Services.BO.TransOrderReceiptSvc.CustomUpdate(TransOrderReceiptTableset& ds, String& opLegalNumberMessage) in c:\_Releases\ERP\UD10.1.400.16\Source\Server\Services\BO\TransOrderReceipt\TransOrderReceipt.cs:line 798 at Erp.Services.BO.TransOrderReceiptSvcFacade.CustomUpdate(TransOrderReceiptTableset& ds, String& opLegalNumberMessage) in c:\_Releases\ERP\UD10.1.400.16\Source\Server\Services\BO\TransOrderReceipt\TransOrderReceiptSvcFacade.cs:line 410 at SyncInvokeCustomUpdate(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func
2 func) in c:_Releases\ICE\3.1.400.16\source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59
at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func2 func) in c:\_Releases\ICE\3.1.400.16\source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 28 at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) in c:\_Releases\ICE\3.1.400.16\source\Framework\Epicor.System\Hosting\Wcf\EpiOperationInvoker.cs:line 23 at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result) at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.SecurityChannelListener
1.ReceiveItemAndVerifySecurityAsyncResult2.InnerTryReceiveCompletedCallback(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.Runtime.InputQueue
1.AsyncQueueReader.Set(Item item)
at System.Runtime.InputQueue1.EnqueueAndDispatch(Item item, Boolean canDispatchOnThisThread) at System.Runtime.InputQueue
1.EnqueueAndDispatch(T item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
at System.ServiceModel.Channels.SingletonChannelAcceptor`3.Enqueue(QueueItemType item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.CompleteParseAndEnqueue(IAsyncResult result)
at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.HandleParseIncomingMessage(IAsyncResult result)
at System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.HttpInput.ParseMessageAsyncResult.OnRead(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Web.Hosting.AsyncResultBase.Complete(Int32 hresult, Boolean synchronous)
at System.Web.Hosting.PipelineRuntime.AsyncCompletionHandler(IntPtr rootedObjectsPointer, Int32 bytesCompleted, Int32 hresult, IntPtr pAsyncCompletionContext)```
We wondered why the TFShipDtlBeforeUpdate() was being called. Upon further inspection (a good decomp of the transorderreceipt.dll) we found the following:
private void TFShipDtlBeforeUpdate()
{
((ContextBoundBase<ErpContext>) this).get_ExceptionManager().AddBLException(Strings.ThisFunctionIsNotAllowed, “TFShipDtl”);
}
Is this a bug? Why would this method be called in the main bo and not do anything except throw some generic error message?