Part cannot be marked Inactive, open Purchase Order records exist

Hi all,

I got the following exception when trying to inactive a part but seems there are no suggestions , jobs nor POs. What I found was quote material. is this the reason why I cannot inactive the part?

Best regards,

Business Layer Exception

Part cannot be marked Inactive, open Purchase Order records exist.

Exception caught in: Epicor.ServiceModel

Error Detail

Description: Part cannot be marked Inactive, open Purchase Order records exist.
Program: Erp.Services.BO.Part.dll
Method: PartBeforeUpdate
Line Number: 9389
Column Number: 21
Table: InActive
Server Trace Stack: at Erp.Services.BO.PartSvc.PartBeforeUpdate() in c:_Releases\ERP\UD10.1.400.17\Source\Server\Services\BO\Part\Part.cs:line 9389
at Erp.Services.BO.PartSvc.OnRowEvent(DataTableEventType type, String tableName, IceRow row) in c:_Releases\ERP\UD10.1.400.17\Source\Server\Services\BO\Part\Part.Designer.cs:line 1441
at Ice.Services.Trace.TablesetProfilingCollector.DoRowEventTrace(String tableName, String methodName, Int32 rowCount, Action action) in c:_Releases\ICE\3.1.400.17\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.17\source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 1155 at Ice.TablesetBound3.WriteTable(IceDataContext dataContext, Int32 tableIndex, IIceTable table, TablesetProfilingCollector parentTraceCollector) in c:_Releases\ICE\3.1.400.17\source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 893
at Ice.TablesetBound3.InnerUpdate(IceDataContext dataContext, TFullTableset tableset) in c:\_Releases\ICE\3.1.400.17\source\Framework\Epicor.Ice\Services\TablesetBound.cs:line 796 at Erp.Services.BO.PartSvc.Update(PartTableset& ds) in c:\_Releases\ERP\UD10.1.400.17\Source\Server\Services\BO\Part\Part.Designer.cs:line 5583 at Epicor.Customization.Bpm.MethodCustomizationBase23.RunDirectives(TParam parameters) in c:_Releases\ICE\3.1.400.17\source\Server\Internal\Lib\Epicor.Customization.BPM\MethodCustomizationBase2.cs:line 218
at Epicor.Customization.Bpm.CustomizationBase23.Execute(TParam parameters) in c:\_Releases\ICE\3.1.400.17\source\Server\Internal\Lib\Epicor.Customization.BPM\CustomizationBase2.cs:line 77 at Epicor.Customization.Bpm.BOBFD5A4E3608E411A8E2CD99448EFF17A.PartSvcCustomization.Update(PartTableset& ds) at Erp.Services.BO.PartSvcFacade.Update(PartTableset& ds) in c:\_Releases\ERP\UD10.1.400.17\Source\Server\Services\BO\Part\PartSvcFacade.cs:line 549 at SyncInvokeUpdate(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func2 func) in c:_Releases\ICE\3.1.400.17\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.17\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.17\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.SecurityChannelListener1.ReceiveItemAndVerifySecurityAsyncResult`2.InnerTryReceiveCompletedCallback(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state)
at System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest)
at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result)
at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes)
at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(Object state)
at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

Client Stack Trace

at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet dataSets)
at Erp.Proxy.BO.PartImpl.Update(PartDataSet ds)
at Ice.Lib.Framework.EpiBaseAdapter.Update()
at Erp.UI.App.PartEntry.PartTransaction.AdapterUpdate()
at Erp.UI.App.PartEntry.PartTransaction.UpdateX()

I don’t think being a material on a quote is enough to prevent inactivation of the part master.
Sounds like you might be headed for a “fishing trip”.
I wonder if you have already tried turning on tracing - see any clues there?

The error message is fairly specific that there are open “Purchase Order Records” that exist… that would tell me that it would be either in PO Detail or PO Release. Also check the Part Warehouse or PartDtl or PartAlloc tables for stray entries.
OH and the POSuggestions table? How about the RFQPart table (which would tie back to the QuoteDtl).

A PO line or release can be reopened without having any outstanding quantity. I’d run a PODtl and PORel BAQ to check for any opens on that part if I were you.

Thanks yeah i checked purchase advisor , time phase and part tracker for any clues but nothing. i’ll try to search on sql for po releases.

Thanks,

Thanks guys it was because PO Detail was open but release was closed :smiley: