Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Suggested answer

Update line item in salesOrder

(0) ShareShare
ReportReport
Posted on by 4
I want to update quantity line by using Software Development Kits ( SDk )  for Microsoft Dynamics GP 2018  
 
when update line that occured  an error :

 Error : Violation of PRIMARY KEY constraint 'PKAAG20000'. Cannot insert duplicate key in object 'dbo.AAG20000'. The duplicate key value is (357112).

why? and how fix error ??

used Code : 
 try
            {
                string connectionStringGP = @/Data Source=.;Initial Catalog=test ;persist security info=False;/;
                
                using (eConnectMethods eConnect = new eConnectMethods())
                {
                    
                    eConnectType eConnectTypeSalesTransaction = new eConnectType();
                    eConnectOut eConnectOut1 = new eConnectOut()
                    {
                        DOCTYPE = /Sales_Transaction/, // Specify the type of document you want to retrieve
                        OUTPUTTYPE = 2, // Specify output type: 2 for XML
                        INDEX1FROM =/CON/2300034/ , ///CON/2400006/  // Specify the start index
                        INDEX1TO =/CON/2300034/ ,// /CON/2400006/// Specify the end index
                        FORLIST = 1, // Specify 1 to retrieve a list
                    };
                    eConnectTypeSalesTransaction.RQeConnectOutType = new RQeConnectOutType[] { new RQeConnectOutType() { eConnectOut = eConnectOut1 } };
                    string xmlSopTransaction = SerializeObject(eConnectTypeSalesTransaction);
                    //Call the GetEntity method to retrieve data
                    string response = eConnect.GetEntity(connectionStringGP, xmlSopTransaction);
                    //Console.WriteLine($///r/Data retrieved First :/{response} //r/ ________________________________________________/);
                   
                    //  Deserialize the XML string into objects
                    Root root = DeserializeFromXml<Root>(response);
                    //  Update the object properties as needed
                 
                    #region Update Sales Transaction 
                    taSopHdrIvcInsert sopHdrIvc = new taSopHdrIvcInsert();
                    sopHdrIvc.SOPNUMBE = root.EConnect.SOTrans.SOPNUMBE;
                    sopHdrIvc.SOPTYPE = root.EConnect.SOTrans.SOPTYPE;
                    sopHdrIvc.DOCID = root.EConnect.SOTrans.DOCID;
                    sopHdrIvc.CUSTNMBR = root.EConnect.SOTrans.CUSTNMBR;
                    sopHdrIvc.DOCDATE = root.EConnect.SOTrans.DOCDATE;
                    sopHdrIvc.BACHNUMB = root.EConnect.SOTrans.BACHNUMB;
                    sopHdrIvc.UpdateExisting = 1;
                    taSopLineIvcInsert_ItemsTaSopLineIvcInsert sopLine = new taSopLineIvcInsert_ItemsTaSopLineIvcInsert();
                    sopLine.SOPTYPE = root.EConnect.SOTrans.Lines[0].SOPTYPE;
                    sopLine.CUSTNMBR = root.EConnect.SOTrans.CUSTNMBR;
                    sopLine.QUANTITY = 9; //9root.EConnect.SOTrans.Lines[0].QUANTITY;
                    sopLine.DOCDATE = root.EConnect.SOTrans.DOCDATE;
                    sopLine.ITEMNMBR = root.EConnect.SOTrans.Lines[0].ITEMNMBR;
                    sopLine.SOPNUMBE = root.EConnect.SOTrans.Lines[0].SOPNUMBE;
                    sopLine.LNITMSEQ = root.EConnect.SOTrans.Lines[0].LNITMSEQ;
                    sopLine.LOCNCODE = root.EConnect.SOTrans.Lines[0].LOCNCODE;
                    sopLine.UpdateExisting=1;
                   
                    taSopLineIvcInsert_ItemsTaSopLineIvcInsert[] sopLines = new taSopLineIvcInsert_ItemsTaSopLineIvcInsert[] { sopLine };
                    eConnectType updateSOPTransactionType = new eConnectType();
                    updateSOPTransactionType.SOPTransactionType = new SOPTransactionType[]
                    {
                        new SOPTransactionType()
                        {
                            taSopHdrIvcInsert = sopHdrIvc,
                            taSopLineIvcInsert_Items = sopLines,
                            
                            
                        }
                    };
                    var updatedXmlString = SerializeObject(updateSOPTransactionType);
                    #endregion
                    var updatedResponse = eConnect.UpdateTransactionEntity(connectionStringGP, updatedXmlString);
                    //var updatedResponse = eConnect.DeleteTransactionEntity(connectionStringGP, updatedXmlString);
                     string response2 = eConnect.GetEntity(connectionStringGP, xmlSopTransaction);
                    Console.WriteLine($///r/Data retrieved After :/{response2} //r/ _______________________________/);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(/Error: / + ex.Message);
            }
 

 
Categories:
  • Saleh Abdelrahem Profile Picture
    4 on at
    Update line item in salesOrder
    I know this to handle ,table by sql query update .

    but I want to handle this error by using SDK .
     
    how do this?
     
    help
  • Suggested answer
    Lisa at AonC.com Profile Picture
    698 on at
  • Saleh Abdelrahem Profile Picture
    4 on at
    Update line item in salesOrder
    why SDK try to insert in table 'dbo.AAG20000' but I want to update line in an sales order .
    sopLine.UpdateExisting=1;
     
    this flag that known that , 1 if exist line update it , 2 if not exist line insert it 
    by using this function , 'UpdateTransactionEntity',  
     
       var updatedResponse = eConnect.UpdateTransactionEntity(connectionStringGP, updatedXmlString);

    also when try delete a line item , occured the same error  : 
     
    Error : Violation of PRIMARY KEY constraint 'PKAAG20000'. Cannot insert duplicate key in object 'dbo.AAG20000'. The duplicate key value is (357112).

     
    I don't understand , how fix this error ?
  • Judy Profile Picture
    Microsoft Employee on at
    Update line item in salesOrder
    Hi, for the error message, you cannot enter a second PK that has the same value.
    You can debug the code to look at your values and how you insert them to the database.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

🌸 Community Spring Festival 2025 Challenge 🌸

WIN Power Platform Community Conference 2025 tickets!

Jonas ”Jones” Melgaard – Community Spotlight

We are honored to recognize Jonas "Jones" Melgaard as our April 2025…

Kudos to the March Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 294,261 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 233,013 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,158 Moderator

Leaderboard

Product updates

Dynamics 365 release plans