Hi,
So we are trying to figure out how to update details in a job and we get an error when trying to get details. (We are in a test database so I can mess with stuff with no effect to production.) I get the error that it's looking for an effective date "less than or equal to", but no date to see what the issue is. I went into the revision under the part number, and messed with the effective date, moving it way back and way forward and I still get same error either way.
One of the things that I think might be screwing stuff up is that my company wants to record engineering time to a job. Obviously, before a part is engineered, you don't have a full routing and BOM. So what is happening in a template of operations is getting added to the top level part number before anything else is added, then engineers would record their working time to that template. Then, after the product is engineered, we want to go into the previously started job, and get details to add the BOM's and the operations the the job and the upper level part, with the template engineering operations still in there. When this happens, something is getting screwed up and it won't work. If we have a sub-job created (I have no idea if that's standard for Epicor users, or just something that we are doing here, I'll find that out this afternoon). Everything seems to work fine, but I suspect it's because the job didn't have extra operations added (with labor entries) to it before the final BOM and OPS are added in. It makes sense
why we want to do it this way, since we sell mostly engineer to order products, where the engineering work is part of the purchase price, I just don't know if E-10 is created to be able to handle this.
If we do to get details on the top level part number (with operations already in it) the system will add the operation for that part, and the sub-assemblies for the top level, but none of the operations and parts will come in for the sub-assemblies. Then if we try to update the sub-assembly in it's own, it spits out the effective date error and won't do anything.
Is this is known bug? Are we just trying to use the software in a too unorthodox fashion? Or is there a way to satisfy the effective date requirement so that we can update the sub-assemblies within a job that is already started.
My workaround is to create a dummy part for engineering work that would have operations but no materials. Then on a separate sub job, we would add parts and OPS like a normally functioning company with per-engineered product being sold repeatedly.
What do you guys think?
Brandon
Summary:
Part Revision for subassembly was not found. Request cancelled.
LookingForRevisionOfPart
WithAnEffecDateLessThanOrEqualTo
Part Revision for subassembly was not found. Request cancelled.
LookingForRevisionOfPart
WithAnEffecDateLessThanOrEqualTo
Details:
Business Layer Exception
Part Revision for subassembly was not found. Request cancelled.
LookingForRevisionOfPart
WithAnEffecDateLessThanOrEqualTo
Part Revision for subassembly was not found. Request cancelled.
LookingForRevisionOfPart
WithAnEffecDateLessThanOrEqualTo
Exception caught in: Epicor.ServiceModel
Error Detail
============
Message No.: 1
Description: Part Revision for subassembly was not found. Request cancelled.
LookingForRevisionOfPart
WithAnEffecDateLessThanOrEqualTo
Program: Erp.Internal.MR.CPMethod.dll
Method: Do_PartMtl
Server Trace Stack: at Erp.Internal.MR.CPMethod.Do_PartMtl(Decimal IIP_ProdQty, Int32 IIP_TargetAsm_, Int32 IIP_BOMLevel, String IIP_GeneratedRuleTag, Guid& iip_AsmRowid, String Source_AltMethod, Boolean Use_Source_AltMethod)
at Erp.Internal.MR.CPMethod.Do_Method(String IIP_PartNum, String IIP_RevisionNum, String IIP_AltMethod, Decimal IIP_ProdQty, Int32 IIP_TargetAsm_, Int32 IIP_BOMLevel, String IIP_ParPartNum, String IIP_GeneratedRuleTag, Guid iip_ASMRowid, String Source_AltMethod, Boolean Use_Source_AltMethod, Boolean& crossPlant, Int32& cfgPhantomCount, Boolean doRoughCutSched)
at Erp.Internal.MR.CPMethod.Copy_Method(Guid TargetAsm_Rowid, String Source_Part, String Source_Rev, String Source_AltMethod, Boolean Use_Source_AltMethod, Boolean fromCpMethod, Boolean doRoughCutSched, Boolean& crossPlant, Nullable`1& useDate, String& useJob, String& useRev, Int32& cfgPhantomCount, Int32 groupSeq)
at Erp.Internal.MR.CPMethod._CPMethod(Guid TargetAsm_Rowid, String Source_Part, String Source_Rev, String Source_AltMethod, Object hProcessInfo, Boolean msg_prompt, Boolean Use_Source_AltMethod, Boolean fromCpMethod, Boolean doRoughCutSched, Boolean& crossPlant, Nullable`1& useDate, String& useJob, String& useRev, Int32& cfgPhantomCount, List`1& opTgtJobRows, Int32 groupSeq)
at Erp.Services.BO.JobEntrySvc.copyMethod(Guid sourceRowid, Guid targetRowid, Boolean useSourceAltMethod)
at Erp.Services.BO.JobEntrySvc.GetDetails(String jobNum, Int32 targetAsm, String sourceFile, Int32 sourceQuote, Int32 sourceLine, String sourceJob, Int32 sourceAsm, String sourcePart, String sourceRev, String sourceAltMethod, Boolean resequence, Boolean useMethodForParts)
at Erp.Services.BO.JobEntrySvcFacade.GetDetails(String jobNum, Int32 targetAsm, String sourceFile, Int32 sourceQuote, Int32 sourceLine, String sourceJob, Int32 sourceAsm, String sourcePart, String sourceRev, String sourceAltMethod, Boolean resequence, Boolean useMethodForParts)
at SyncInvokeGetDetails(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func`2 func)
at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(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.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.SecurityChannelListener`1.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.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest)
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.ServiceModel.Channels.SocketConnection.OnReceiveAsync(Object sender, SocketAsyncEventArgs eventArgs)
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)
Message No.: 2
Description: Part Revision for subassembly was not found. Request cancelled.
LookingForRevisionOfPart
WithAnEffecDateLessThanOrEqualTo
Program: Erp.Internal.MR.CPMethod.dll
Method: Do_PartMtl
Original Exception Type: Exception
Server Trace Stack: at Erp.Internal.MR.CPMethod.Do_PartMtl(Decimal IIP_ProdQty, Int32 IIP_TargetAsm_, Int32 IIP_BOMLevel, String IIP_GeneratedRuleTag, Guid& iip_AsmRowid, String Source_AltMethod, Boolean Use_Source_AltMethod)
at Erp.Internal.MR.CPMethod.Do_Method(String IIP_PartNum, String IIP_RevisionNum, String IIP_AltMethod, Decimal IIP_ProdQty, Int32 IIP_TargetAsm_, Int32 IIP_BOMLevel, String IIP_ParPartNum, String IIP_GeneratedRuleTag, Guid iip_ASMRowid, String Source_AltMethod, Boolean Use_Source_AltMethod, Boolean& crossPlant, Int32& cfgPhantomCount, Boolean doRoughCutSched)
at Erp.Internal.MR.CPMethod.Copy_Method(Guid TargetAsm_Rowid, String Source_Part, String Source_Rev, String Source_AltMethod, Boolean Use_Source_AltMethod, Boolean fromCpMethod, Boolean doRoughCutSched, Boolean& crossPlant, Nullable`1& useDate, String& useJob, String& useRev, Int32& cfgPhantomCount, Int32 groupSeq)
Client Stack Trace
==================
at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)
at Erp.Proxy.BO.JobEntryImpl.GetDetails(String jobNum, Int32 targetAsm, String sourceFile, Int32 sourceQuote, Int32 sourceLine, String sourceJob, Int32 sourceAsm, String sourcePart, String sourceRev, String sourceAltMethod, Boolean resequence, Boolean useMethodForParts)
at Erp.Adapters.JobEntryAdapter.GetDetails(String jobNum, Int32 targetAsm, String sourceFile, Int32 sourceQuote, Int32 sourceLine, String sourceJob, Int32 sourceAsm, String sourcePart, String sourceRev, String sourceAltMethod, Boolean resequence, Boolean useMethodForParts