Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The Sales Line already exists. Identification fields and values: Document Type='',Document No.='',Line No.=''

While creating a new sales order using dynamics NAV SOAP webservices, getting below error while attempting to create multiple line items. Order info with single line item being added successfully.

Error - The Sales Line already exists. Identification fields and values: Document Type='Order',Document No.='1111',Line No.='10000'

Here is my code that I have tried :

$client  = new SoapClient($soapWsdl, $options);
    
    // Create order header
    $create = new stdClass();
    $sq = new stdClass();  

    $sq->OrderType = "Order";
    $sq->OrderId = "1111";
     $create->SalesOrderWS = $sq;
    $result = $client->create($create);
    
    
    $key = $result->SalesOrderWS->Key;
    
    $update = new stdClass();
    $sq->Key = $key;
    $sq->CustomerID = "9999";
    
    
    $salesLineList = new stdClass();

     $salesLine = new stdClass();
    $salesLine->Order_Type = 'Order';
    $salesLine->OrderID = '1111';
    $salesLine->LineType = 'Item';
    $salesLine->OrderLineNo = '10000';
    $salesLineList->Sales_Order_Lines_WS[0] = $salesLine;
    $sq->SalesOrderLinesWS = $salesLineList;
    
    $salesLine = new stdClass();
    $salesLine->Order_Type = 'Order';
    $salesLine->OrderID = '1111';
    $salesLine->LineType = 'Item';
    $salesLine->OrderLineNo = '20000';
    $salesLineList->Sales_Order_Lines_WS[1] = $salesLine;
    $sq->SalesOrderLinesWS = $salesLineList;
    
    
    $update->SalesOrderWS = $sq;
    $result = $client->Update($update);

Certainly, something is missed here, but couldn't identify the problem.

Thanks.

like image 265
Newbie Avatar asked Oct 30 '25 14:10

Newbie


1 Answers

in NAV, the Sales Line table has a primary key that consists of 3 fields:

  • Document Type
  • Document No.
  • Line No.

The system will not accept duplicates and the above combinations must be unique. The line No. is an arbitrary integer that makes line numbers unique, and can contain any number. However, by convention, line numbers are usually given in 10000 increments, i.e. first line is 10000, second line is 20000 etc.

I'm not an expert on PHP (in fact I know next to nothing), but I cannot see in the above code you setting a line number when you are writing sales lines. So, the first line insertion would work, but the next lines will result in a duplicate. I would suggest that as part of writing a sales line, you include a unique Line No. for each line that you write, then it would work ok. edd

like image 180
Edd Avatar answered Nov 02 '25 05:11

Edd