If you are facing this troubleshooting in ax 2012
You may face the below error while creating new Purchase order in AX 2012.
If This error is coming in only one company and you are not able to create PO in same company.
...
Cannot create a record in Purchase orders (PurchTable). Purchase order: COM-0000XX, COM-00XXXX.
The record already exists.
Hints:
1. Try changed number sequence format and also try another code to create PO check whether new code working or not. Check There isn't any duplicate record in tables.
2. It looks to me as a duplicate record error in PurchTable.
You do not specify if the application you are working with has got any code customizations.
One thing that could be wrong is that some code customization is doing something wrong.
Also you write that there are no duplicates in the table.
How about a purchTable record WITH NO (blank) PurchId ?
If such a record is present delete that, and then attempt to find the source of the record being created with no primary key value (PurchId).
3.Your need to examine the customizations in more detail. Unless the web services you mention are directly connected to the process of manually creating a PO as a user I do not think the error has anything to do with web services.
But obviously the error occurs when CIL-code is running so it is something that happens server side.
You may face the below error while creating new Purchase order in AX 2012.
If This error is coming in only one company and you are not able to create PO in same company.
...
Cannot create a record in Purchase orders (PurchTable). Purchase order: COM-0000XX, COM-00XXXX.
The record already exists.
Microsoft.Dynamics.Ax.Xpp.DuplicateKeyException: Exception of type 'Microsoft.Dynamics.Ax.Xpp.DuplicateKeyException' was thrown.
at Microsoft.Dynamics.Ax.MSIL.Interop.throwException(Int32 ExceptionValue)
at Microsoft.Dynamics.Ax.MSIL.cqlCursorIL.insert(IntPtr table)
at Microsoft.Dynamics.Ax.Xpp.Common.doInsert()
at Dynamics.Ax.Application.PurchTableType.Insert(Boolean _interCompanySilent, Date _accountingDate, Boolean , Boolean ) in PurchTableType.insert.xpp:line 21
at Dynamics.Ax.Application.PurchTable.Insert(Boolean _interCompanySilent, Date _accountingDate, Boolean , Boolean ) in PurchTable.insert.xpp:line 7
at Dynamics.Ax.Application.PurchTable.@Insert(Boolean _interCompanySilent, Boolean )
at Dynamics.Ax.Application.PurchTable.Insert(Boolean _interCompanySilent)
at Dynamics.Ax.Application.PurchCreateOrderForm.writeOnServer(Object[] _params) in PurchCreateOrderForm.writeOnServer.xpp:line 25
at PurchCreateOrderForm::writeOnServer(Object[] )
at Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeStaticCall(Type type, String MethodName, Object[] parameters)
at Dynamics.Ax.Application.SysDictClass.invokeStaticMethod(Object[] _params) in SysDictClass.invokeStaticMethod.xpp:line 26
at SysDictClass::invokeStaticMethod(Object[] )
at Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeStaticCall(Type type, String MethodName, Object[] parameters)
at Microsoft.Dynamics.Ax.Xpp.PredefinedFunctions.runAsInvoke(String className, String staticMethodName, Object[] parms, Object[]& exportInfolog)
Hints:
1. Try changed number sequence format and also try another code to create PO check whether new code working or not. Check There isn't any duplicate record in tables.
2. It looks to me as a duplicate record error in PurchTable.
You do not specify if the application you are working with has got any code customizations.
One thing that could be wrong is that some code customization is doing something wrong.
Also you write that there are no duplicates in the table.
How about a purchTable record WITH NO (blank) PurchId ?
If such a record is present delete that, and then attempt to find the source of the record being created with no primary key value (PurchId).
3.Your need to examine the customizations in more detail. Unless the web services you mention are directly connected to the process of manually creating a PO as a user I do not think the error has anything to do with web services.
But obviously the error occurs when CIL-code is running so it is something that happens server side.