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.
in NAV, the Sales Line table has a primary key that consists of 3 fields:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With