HOW TO EITHER Correct OR Cancel a Credit Memo - best practices search

This is what we should use to effectively cancel a CM that we need to delete off of one customer, correct?

AR Invoice Entry – Correction Invoices
To correct an invoice or credit memo, create a correction invoice: Click the Actions menu and select Create Correction Invoice. The Create Correction Invoice window displays. Enter or find and select the Legal Number to specify the invoice for correction. The legal number is the unique number assigned to identify this transaction. If legal numbers are not implemented, the application selects the invoice number entered in this field. If necessary, use the Invoice Date field to set the date on the correction invoice. In the Document Type field, use the drop-down list to select the correction invoice document type (for example, Accounts Receivable Invoice, or Credit Memo). Click OK. Click Yes to the confirmation message. Parent topic: AR Invoice Entry Email Feedback - Epicor ERP 10.2 - Epicor Software Corporation © 2017 All rights reserved.

Here’s what is happening when we try it:

AR Invoice entry, open group, then actions and select create correction invoice

So far so good at this point, then we get an error and here’s what the detail of the error reads:

Business Layer Exception

Invalid Invoice number specified.

Exception caught in: Epicor.ServiceModel

Error Detail

============

Description: Invalid Invoice number specified.

Program: Erp.Services.BO.ARInvoice.dll

Method: createCorrectionInvoice

Line Number: 6315

Column Number: 17

Table: InvcHead

Field: InvoiceNum

Server Trace Stack: at Erp.Services.BO.ARInvoiceSvc.createCorrectionInvoice(String groupID, Int32 sourceInvoiceNum, Nullable1 newInvoiceDate, Nullable1 newApplyDate, String newDocType, String newCMReason, Boolean recalculateTaxes, Int32& opNewInvoiceNum, Boolean createOnlyCorrectionInvoice) in C:_Releases\ERP\UD10.2.100.12\Source\Server\Services\BO\ARInvoice\ARInvoice.cs:line 6315

at Erp.Services.BO.ARInvoiceSvc.CreateCorrectionInvoice(String groupID, Int32 sourceInvoiceNum, Nullable`1 newInvoiceDate, String newDocType, Boolean recalculateTaxes, Int32& opNewInvoiceNum) in C:_Releases\ERP\UD10.2.100.12\Source\Server\Services\BO\ARInvoice\ARInvoice.cs:line 6586

at Erp.Services.BO.ARInvoiceSvcFacade.CreateCorrectionInvoice(String groupID, Int32 sourceInvoiceNum, Nullable`1 newInvoiceDate, String newDocType, Boolean recalculateTaxes, Int32& opNewInvoiceNum) in C:_Releases\ERP\UD10.2.100.12\Source\Server\Services\BO\ARInvoice\ARInvoiceSvcFacade.cs:line 590

at SyncInvokeCreateCorrectionInvoice(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\ICE3.2.100.12\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59

at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func`2 func) in C:_Releases\ICE\ICE3.2.100.12\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\ICE3.2.100.12\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.ReceiveItemAndVerifySecurityAsyncResult2.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.ARInvoiceImpl.CreateCorrectionInvoice(String groupID, Int32 sourceInvoiceNum, Nullable`1 newInvoiceDate, String newDocType, Boolean recalculateTaxes, Int32& opNewInvoiceNum)

at Erp.Adapters.ARInvoiceAdapter.CreateCorrectionInvoice(String groupID, Int32 sourceInvoiceNum, Nullable`1 newInvoiceDate, String newDocType, Boolean recalculateTaxes, Int32& opNewInvoiceNum)

Sounds like the “Correction” invoice only wants to correct an invoice and not a CM.

Have you tried the Cancellation process on a CM?

Yes, it pops up message which reads: Cannot refer to another Credit Memo.

So, that’s why I can’t figure out how to zero it or get rid of one…feel like I am stuck in a loop and I don’t actually want to apply it.

We cannot use national accounts based on different discounts, etc. for natural national accounts in the Epicor world. However, these customers are national accounts and apply credit memos from one “customer” to another “customer” which to them are the same, but not to us.

So to start over …

  1. There was an AR invoice created and posted.
  2. A CM was created against the above invoice to change it.
  3. The CM was posted

and now you want to completely “undo” the CM? Or just alter it such that its a different amount?

You can adjust the credit memo to zero

preferably undo the CM.

and how do you adjust it to zero?

Was it posted?

yes :frowning:

Was the CM for the full amount of the original invoice (the one the CM was crediting)?

And was that original invoice a MISC, SHIP, ADV, or anything else special?

I’ve got a nightmare going on with this customer.
We shipped the order, but there was supposed to be embroidered logos on the garments.

First invoice went out ship on 1/11 for the items. I did an RMA (we don’t have Quality module). Items were “returned to inventory” then we had them logo’d as required and reshipped them on 2/16.

First I did a correction invoice and that create a new invoice number with no charge or credit.
Then created a cancellation invoice which created a CM.
Then reshipped them without freight charges and have one invoice that is right.
BUT that correction invoice also reinvoiced – ugh! and that was at the same amount including the original freight.
I then did another cancellation invoice and got another CM but it wants to create a new invoice again.

I feel trapped in a loop!

See the attached image of the customer statement which may clarify this disaster…

A cancellation invoice actually “undoes” the GL trans that the original invoice did - by creating the oppostite GL Trans.

A CM creates new GL trans - which may not be the exact opposite of the original GL trans.

While you can’t make a CM against another CM, You can create another CM against the original, and enter a discount amount equal to double the amount of the CM your trying to undo.

Here’s an example:

  1. The amount that CM #1 was for
  2. Double the amount of CM #1
  3. The net change is negative. ( A negative CM adds to the original invoice)

EDIT

Or just make a CM without referencing the SO line, and put a negative qty in, like:
(no need to double it as you’re not adding to it)

OK, so to clarify you created a new CM from AR Invoice Entry and did not do either cancellation or correction, right?

correct. Just another CM (referencing the original Invoice).

If all the other GL trans are correct (AR Clearing moved to COS, etc…) then go with the second mentioned above ( A CM not referencing a SO line)

Thank you I will mark this closed but the use of Correction, Cancellation or CM is NOT very clear in the user application help and certainly didn’t make it clear that it would go from shipped to ready to invoice again…

1 Like